diff --git a/scripts/gen-css/index.js b/scripts/gen-css/index.js index 576079b..b0ad1b6 100644 --- a/scripts/gen-css/index.js +++ b/scripts/gen-css/index.js @@ -10,6 +10,7 @@ const {genJustifyContentCss} = require('./justify-content'), {genAlignItemsCss} = require('./align-items'), {genGridCss} = require('./grid'), + {genPositionCss} = require('./position'), {genSpacingCss} = require('./spacing'); (async () => Promise.all([ @@ -18,6 +19,7 @@ const genDisplayCss(), genGridCss(), genJustifyContentCss(), + genPositionCss(), genSpacingCss(), ]).catch(console.error) )(); diff --git a/scripts/gen-css/position.js b/scripts/gen-css/position.js new file mode 100644 index 0000000..2a586b6 --- /dev/null +++ b/scripts/gen-css/position.js @@ -0,0 +1,35 @@ +/** + * position.js + * + * Generates `position` property classes (`.x-position-absolute` etc.). + */ +const fs = require('fs'), + path = require('path'), + {log, error} = console, + + genPositionCss = () => { + const fileName = 'position.css', + outputFilePath = path.join(__dirname, `../../src/css/modules/${fileName}`); + const out = [ + 'static', + 'relative', + 'absolute', + 'sticky', + 'fixed', + ].map(k => `.x-position-${k} { + position: ${k}; +}`); + + const content = + `/** + * ${fileName} + */ +${out.join('\n\n')}\n`; + return fs.promises.writeFile(outputFilePath, content) + .then( + () => log(`file ${fileName} written successfully`), + error + ); + }; + +module.exports = {genPositionCss}; diff --git a/scripts/utils/genCssPropClasses.js b/scripts/utils/genCssPropClasses.js new file mode 100644 index 0000000..18c9b1f --- /dev/null +++ b/scripts/utils/genCssPropClasses.js @@ -0,0 +1,34 @@ +/** + * justify-content.js + * + * Generates `justify-content` property classes (`.x-justify-space-between, .x-jc-space-between` etc.). + */ +const fs = require('fs'), + path = require('path'), + {log, error} = console; + +/** + * Writes property values as css classes, for given `propName` - + * Resulting content is written to given filePath + */ +const genCssPropClasses = (propName, values, outputFilePath) => { + const out = values.reduce((agg, k) => agg + `.x-${propName}-${k} { + ${propName}: ${k}; +}\n`, ''); + const content = + `/** + * ${outputFilePath} + */ + +${out.join('\n\n')}\n` + ; + return fs.promises.writeFile(outputFilePath, content) + .then( + () => log(`file ${outputFilePath} written successfully`), + error + ); +}; + +module.exports = { + genCssPropClasses +}