Skip to content

Commit

Permalink
Hack for :placeholder-shown (#1312)
Browse files Browse the repository at this point in the history
  • Loading branch information
tkrotoff committed May 17, 2020
1 parent 9c4c7d8 commit d2ce094
Show file tree
Hide file tree
Showing 8 changed files with 44 additions and 7 deletions.
9 changes: 9 additions & 0 deletions data/prefixes.js
Original file line number Diff line number Diff line change
Expand Up @@ -362,6 +362,15 @@ f(require('caniuse-lite/data/features/css-placeholder'), browsers => {
})
})

// Placeholder-shown selector
f(require('caniuse-lite/data/features/css-placeholder-shown'), browsers => {
prefix([':placeholder-shown'], {
selector: true,
feature: 'css-placeholder-shown',
browsers
})
})

// Hyphenation
f(require('caniuse-lite/data/features/css-hyphens'), browsers =>
prefix(['hyphens'], {
Expand Down
17 changes: 17 additions & 0 deletions lib/hacks/placeholder-shown.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
let Selector = require('../selector')

class PlaceholderShown extends Selector {
static names = [':placeholder-shown']

/**
* Return different selectors depend on prefix
*/
prefixed (prefix) {
if (prefix === '-ms-') {
return ':-ms-input-placeholder'
}
return `:${ prefix }placeholder-shown`
}
}

module.exports = PlaceholderShown
1 change: 1 addition & 0 deletions lib/prefixes.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ let Value = require('./value')
let utils = require('./utils')
Selector.hack(require('./hacks/fullscreen'))
Selector.hack(require('./hacks/placeholder'))
Selector.hack(require('./hacks/placeholder-shown'))
Declaration.hack(require('./hacks/flex'))
Declaration.hack(require('./hacks/order'))
Declaration.hack(require('./hacks/filter'))
Expand Down
9 changes: 8 additions & 1 deletion test/autoprefixer.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,9 @@ let ffgradienter = autoprefixer({
let selectorer = autoprefixer({
overrideBrowserslist: ['Chrome 25', 'Firefox > 17', 'IE 10', 'Edge 12']
})
let placeholderShowner = autoprefixer({
overrideBrowserslist: ['IE >= 10']
})
let transitionSpec = autoprefixer({
overrideBrowserslist: ['Chrome > 19', 'Firefox 14', 'IE 10', 'Opera 12']
})
Expand Down Expand Up @@ -118,6 +121,8 @@ function prefixer (name) {
return intrinsicer
} else if (name === 'selectors' || name === 'placeholder') {
return selectorer
} else if (name === 'placeholder-shown') {
return placeholderShowner
} else if (name === 'backdrop-filter' || name === 'overscroll-behavior') {
return overscroller
} else if (name === 'background-clip' || name === 'user-select') {
Expand Down Expand Up @@ -175,7 +180,8 @@ function check (from, instance = prefixer(from)) {
const COMMONS = [
'transition', 'values', 'keyframes', 'gradient', 'flex-rewrite',
'flexbox', 'filter', 'border-image', 'border-radius', 'notes', 'selectors',
'placeholder', 'fullscreen', 'intrinsic', 'mistakes', 'custom-prefix',
'placeholder', 'placeholder-shown', 'fullscreen',
'intrinsic', 'mistakes', 'custom-prefix',
'cascade', 'double', 'multicolumn', '3d-transform', 'background-size',
'supports', 'viewport', 'resolution', 'logical', 'appearance',
'advanced-filter', 'element', 'image-set', 'image-rendering',
Expand Down Expand Up @@ -575,6 +581,7 @@ describe('hacks', () => {
it('supports logical properties', () => check('logical'))
it('supports appearance', () => check('appearance'))
it('supports all placeholders', () => check('placeholder'))
it('supports placeholder-shown', () => check('placeholder-shown'))
it('supports image-rendering', () => check('image-rendering'))
it('supports border-box mask', () => check('mask-border'))
it('supports mask-composite', () => check('mask-composite'))
Expand Down
3 changes: 3 additions & 0 deletions test/cases/placeholder-shown.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
:placeholder-shown {
background: #eee
}
6 changes: 6 additions & 0 deletions test/cases/placeholder-shown.out.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
:-ms-input-placeholder {
background: #eee
}
:placeholder-shown {
background: #eee
}
3 changes: 0 additions & 3 deletions test/cases/placeholder.css
Original file line number Diff line number Diff line change
@@ -1,6 +1,3 @@
::placeholder {
color: #999
}
:placeholder-shown {
background: #eee
}
3 changes: 0 additions & 3 deletions test/cases/placeholder.out.css
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,3 @@
::placeholder {
color: #999
}
:placeholder-shown {
background: #eee
}

0 comments on commit d2ce094

Please sign in to comment.