Skip to content

Commit dac15bb

Browse files
committed
fix: handle outline style/width
1 parent 0e42fb2 commit dac15bb

File tree

6 files changed

+64
-2
lines changed

6 files changed

+64
-2
lines changed

lib/CSSStyleDeclaration.test.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,10 @@ describe('CSSStyleDeclaration', () => {
102102
expect(style.borderTopWidth).toEqual('0px');
103103
expect(style.borderLeftStyle).toEqual('solid');
104104
expect(style.borderBottomColor).toEqual('black');
105+
style.outline = 'black solid 0';
106+
expect(style.outlineWidth).toEqual('0px');
107+
expect(style.outlineStyle).toEqual('solid');
108+
expect(style.outlineColor).toEqual('black');
105109
style.font = '12em monospace';
106110
expect(style.fontSize).toEqual('12em');
107111
expect(style.fontFamily).toEqual('monospace');

lib/properties/borderWidth.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ var parser = function(v) {
3232
}
3333
return undefined;
3434
};
35+
module.exports.parse = parser;
3536

3637
module.exports.definition = {
3738
set: implicitSetter('border', 'width', isValid, parser),

lib/properties/outline.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
'use strict';
2+
3+
var shorthandSetter = require('../parsers').shorthandSetter;
4+
var shorthandGetter = require('../parsers').shorthandGetter;
5+
6+
var shorthand_for = {
7+
'outline-color': require('./outlineColor'),
8+
'outline-style': require('./outlineStyle'),
9+
'outline-width': require('./outlineWidth'),
10+
};
11+
12+
module.exports.definition = {
13+
set: shorthandSetter('outline', shorthand_for),
14+
get: shorthandGetter('outline', shorthand_for),
15+
enumerable: true,
16+
configurable: true,
17+
};

lib/properties/outlineColor.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
'use strict';
22

3-
var parseColor = require('../parsers').parseColor;
3+
var isValid = (module.exports.isValid = require('./borderColor').isValid);
44

55
module.exports.definition = {
66
set: function(v) {
7-
this._setProperty('outline-color', parseColor(v));
7+
if (isValid(v)) {
8+
this._setProperty('outline-color', v);
9+
}
810
},
911
get: function() {
1012
return this.getPropertyValue('outline-color');

lib/properties/outlineStyle.js

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
'use strict';
2+
3+
var isValid = (module.exports.isValid = require('./borderStyle').isValid);
4+
5+
module.exports.definition = {
6+
set: function(v) {
7+
if (isValid(v)) {
8+
if (v.toLowerCase() === 'none') {
9+
v = '';
10+
this.removeProperty('outline-style');
11+
}
12+
this._setProperty('outline-style', v);
13+
}
14+
},
15+
get: function() {
16+
return this.getPropertyValue('outline-style');
17+
},
18+
enumerable: true,
19+
configurable: true,
20+
};

lib/properties/outlineWidth.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
'use strict';
2+
3+
var borderWidth = require('./borderWidth');
4+
var isValid = (module.exports.isValid = borderWidth.isValid);
5+
var parse = borderWidth.parse;
6+
7+
module.exports.definition = {
8+
set: function(v) {
9+
if (isValid(v)) {
10+
this._setProperty('outline-width', parse(v));
11+
}
12+
},
13+
get: function() {
14+
return this.getPropertyValue('outline-width');
15+
},
16+
enumerable: true,
17+
configurable: true,
18+
};

0 commit comments

Comments
 (0)