summaryrefslogtreecommitdiff
path: root/node_modules/autoprefixer/lib/hacks/align-self.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/autoprefixer/lib/hacks/align-self.js')
-rw-r--r--node_modules/autoprefixer/lib/hacks/align-self.js56
1 files changed, 56 insertions, 0 deletions
diff --git a/node_modules/autoprefixer/lib/hacks/align-self.js b/node_modules/autoprefixer/lib/hacks/align-self.js
new file mode 100644
index 0000000..a22b166
--- /dev/null
+++ b/node_modules/autoprefixer/lib/hacks/align-self.js
@@ -0,0 +1,56 @@
+let flexSpec = require('./flex-spec')
+let Declaration = require('../declaration')
+
+class AlignSelf extends Declaration {
+ check(decl) {
+ return (
+ decl.parent &&
+ !decl.parent.some(i => {
+ return i.prop && i.prop.startsWith('grid-')
+ })
+ )
+ }
+
+ /**
+ * Return property name by final spec
+ */
+ normalize() {
+ return 'align-self'
+ }
+
+ /**
+ * Change property name for 2012 specs
+ */
+ prefixed(prop, prefix) {
+ let spec
+ ;[spec, prefix] = flexSpec(prefix)
+ if (spec === 2012) {
+ return prefix + 'flex-item-align'
+ }
+ return super.prefixed(prop, prefix)
+ }
+
+ /**
+ * Change value for 2012 spec and ignore prefix for 2009
+ */
+ set(decl, prefix) {
+ let spec = flexSpec(prefix)[0]
+ if (spec === 2012) {
+ decl.value = AlignSelf.oldValues[decl.value] || decl.value
+ return super.set(decl, prefix)
+ }
+ if (spec === 'final') {
+ return super.set(decl, prefix)
+ }
+ return undefined
+ }
+}
+
+AlignSelf.names = ['align-self', 'flex-item-align']
+
+AlignSelf.oldValues = {
+ 'flex-end': 'end',
+ 'flex-start': 'start'
+}
+
+module.exports = AlignSelf