Skip to content

Commit

Permalink
fix: merging of un-supported pseudo classes
Browse files Browse the repository at this point in the history
  • Loading branch information
anikethsaha committed Jun 9, 2020
1 parent f326b7f commit 448455a
Show file tree
Hide file tree
Showing 12 changed files with 32 additions and 17 deletions.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

17 changes: 14 additions & 3 deletions packages/postcss-merge-rules/src/__tests__/index.js
Expand Up @@ -251,9 +251,20 @@ test(

test(
'should merge vendor prefixed selectors when vendors are the same',
processCSS(
'code ::-moz-selection{background:red}code::-moz-selection{background:red}',
'code ::-moz-selection,code::-moz-selection{background:red}'
passthroughCSS(
'code ::-moz-selection{background:red}code::-moz-selection{background:red}'
)
);

test(
'should not merge pseudo which are not supported by the browsers ::selection',
passthroughCSS('::selection{background:red} ::selection{background:red}')
);

test(
'should not merge pseudo which are not supported by the browsers - code ::selection',
passthroughCSS(
'code ::selection{background:red} code ::selection{background:red}'
)
);

Expand Down
8 changes: 6 additions & 2 deletions packages/postcss-merge-rules/src/lib/ensureCompatibility.js
@@ -1,3 +1,4 @@
import postcss from 'postcss';
import { isSupported } from 'caniuse-api';
import selectorParser from 'postcss-selector-parser';

Expand Down Expand Up @@ -55,6 +56,7 @@ export const pseudoElements = {
'::marker': 'css-marker-pseudo',
'::placeholder': 'css-placeholder',
'::selection': 'css-selection',
':visited': cssSel3,
};

function isCssMixin(selector) {
Expand Down Expand Up @@ -97,8 +99,10 @@ export default function ensureCompatibility(
ast.walk((node) => {
const { type, value } = node;
if (type === 'pseudo') {
const entry = pseudoElements[value];
if (entry && compatible) {
const entry = pseudoElements[postcss.vendor.unprefixed(value)];
if (!entry) {
compatible = false;
} else if (compatible) {
compatible = isSupportedCached(entry, browsers);
}
}
Expand Down

0 comments on commit 448455a

Please sign in to comment.