From cbf41b977dce6533be0fdb5a87b54e84d5bb0802 Mon Sep 17 00:00:00 2001 From: Stanislav Date: Wed, 21 Mar 2018 23:59:54 +0600 Subject: [PATCH] [color-adjust]: added support for color-adjust declarations (#1007) * wip: added hack and test, awaiting for caniuse PR * test(autprefixer): added `color-adjust` property to COMMONS --- data/prefixes.js | 8 ++++++++ lib/hacks/color-adjust.js | 23 +++++++++++++++++++++++ lib/prefixes.js | 1 + test/autoprefixer.test.js | 3 ++- test/cases/color-adjust.css | 7 +++++++ test/cases/color-adjust.out.css | 9 +++++++++ 6 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 lib/hacks/color-adjust.js create mode 100644 test/cases/color-adjust.css create mode 100644 test/cases/color-adjust.out.css diff --git a/data/prefixes.js b/data/prefixes.js index 5afee3f09..2df3670dc 100644 --- a/data/prefixes.js +++ b/data/prefixes.js @@ -779,3 +779,11 @@ f(over, { match: /a #1/ }, browsers => browsers }) ); + +// color-adjust +f(require('caniuse-lite/data/features/css-color-adjust.js'), browsers => + prefix(['color-adjust'], { + feature: 'css-color-adjust', + browsers + }) +); diff --git a/lib/hacks/color-adjust.js b/lib/hacks/color-adjust.js new file mode 100644 index 000000000..8b36c03dc --- /dev/null +++ b/lib/hacks/color-adjust.js @@ -0,0 +1,23 @@ + +const Declaration = require('../declaration'); + +class ColorAdjust extends Declaration { + + static names = ['color-adjust']; + + /** + * Change property name for -webkit browsers + */ + prefixed(prop, prefix) { + return prefix + 'print-color-adjust'; + } + + /** + * Return property name by spec + */ + normalize() { + return 'color-adjust'; + } +} + +module.exports = ColorAdjust; diff --git a/lib/prefixes.js b/lib/prefixes.js index 3dee0c540..fcb2cfac9 100644 --- a/lib/prefixes.js +++ b/lib/prefixes.js @@ -51,6 +51,7 @@ Declaration.hack(require('./hacks/grid-column-align')); Declaration.hack(require('./hacks/overscroll-behavior')); Declaration.hack(require('./hacks/grid-template-areas')); Declaration.hack(require('./hacks/text-emphasis-position')); +Declaration.hack(require('./hacks/color-adjust')); Value.hack(require('./hacks/gradient')); Value.hack(require('./hacks/intrinsic')); diff --git a/test/autoprefixer.test.js b/test/autoprefixer.test.js index af40c861b..2bcf357ca 100644 --- a/test/autoprefixer.test.js +++ b/test/autoprefixer.test.js @@ -144,7 +144,7 @@ const COMMONS = [ 'advanced-filter', 'element', 'image-set', 'image-rendering', 'mask-border', 'writing-mode', 'cross-fade', 'gradient-fix', 'text-emphasis-position', 'grid', 'grid-area', 'grid-template', - 'grid-template-areas' + 'grid-template-areas', 'color-adjust' ]; it('throws on wrong options', () => { @@ -422,6 +422,7 @@ describe('hacks', () => { it('supports text-decoration', () => test('text-decoration')); it('ignores modern direction', () => test('animation')); it('supports overscroll-behavior', () => test('overscroll-behavior')); + it('supports color-adjust', () => test('color-adjust')); it('supports appearance for IE', () => { const instance = autoprefixer({ browsers: 'Edge 15' }); diff --git a/test/cases/color-adjust.css b/test/cases/color-adjust.css new file mode 100644 index 000000000..1a1335b43 --- /dev/null +++ b/test/cases/color-adjust.css @@ -0,0 +1,7 @@ +.economy { + color-adjsut: economy; +} + +.exact { + color-adjsut: exact; +} diff --git a/test/cases/color-adjust.out.css b/test/cases/color-adjust.out.css new file mode 100644 index 000000000..7b33902d2 --- /dev/null +++ b/test/cases/color-adjust.out.css @@ -0,0 +1,9 @@ +.economy { + -webkit-print-color-adjust: economy; + color-adjsut: economy; +} + +.exact { + -webkit-print-color-adjust: exact; + color-adjsut: exact; +}