diff --git a/index.js b/index.js index 344762b..2b3dd11 100755 --- a/index.js +++ b/index.js @@ -18,7 +18,7 @@ var defaults = { }; module.exports = postcss.plugin('postcss-px-to-viewport', function (options) { - + var opts = objectAssign({}, defaults, options); var pxReplace = createPxReplace(opts.viewportWidth, opts.minPixelValue, opts.unitPrecision, opts.viewportUnit); diff --git a/spec/px-to-viewport.spec.js b/spec/px-to-viewport.spec.js index 4b3f26e..eaaa21c 100644 --- a/spec/px-to-viewport.spec.js +++ b/spec/px-to-viewport.spec.js @@ -184,6 +184,38 @@ describe('mediaQuery', function () { }); }); +describe('propList', function () { + it('should only replace properties in the prop list', function () { + var css = '.rule { font-size: 16px; margin: 16px; margin-left: 5px; padding: 5px; padding-right: 16px }'; + var expected = '.rule { font-size: 5vw; margin: 5vw; margin-left: 5px; padding: 5px; padding-right: 5vw }'; + var options = { + propList: ['*font*', 'margin*', '!margin-left', '*-right', 'pad'] + }; + var processed = postcss(pxToViewport(options)).process(css).css; + + expect(processed).toBe(expected); + }); + + it('should only replace properties in the prop list with wildcard', function () { + var css = '.rule { font-size: 16px; margin: 16px; margin-left: 5px; padding: 5px; padding-right: 16px }'; + var expected = '.rule { font-size: 16px; margin: 5vw; margin-left: 5px; padding: 5px; padding-right: 16px }'; + var options = { + propList: ['*', '!margin-left', '!*padding*', '!font*'] + }; + var processed = postcss(pxToViewport(options)).process(css).css; + + expect(processed).toBe(expected); + }); + + it('should replace all properties when prop list is not given', function () { + var rules = '.rule { margin: 16px; font-size: 15px }'; + var expected = '.rule { margin: 5vw; font-size: 4.6875vw }'; + var processed = postcss(pxToViewport()).process(rules).css; + + expect(processed).toBe(expected); + }); +}); + describe('minPixelValue', function () { it('should not replace values below minPixelValue', function () { var options = {