Skip to content

Commit 2a0cee0

Browse files
committed
fix: handle outline style/width
1 parent b527ed7 commit 2a0cee0

File tree

6 files changed

+64
-2
lines changed

6 files changed

+64
-2
lines changed

lib/CSSStyleDeclaration.test.js

+4
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,10 @@ describe('CSSStyleDeclaration', () => {
101101
expect(style.borderTopWidth).toEqual('0px');
102102
expect(style.borderLeftStyle).toEqual('solid');
103103
expect(style.borderBottomColor).toEqual('black');
104+
style.outline = 'black solid 0';
105+
expect(style.outlineWidth).toEqual('0px');
106+
expect(style.outlineStyle).toEqual('solid');
107+
expect(style.outlineColor).toEqual('black');
104108
style.font = '12em monospace';
105109
expect(style.fontSize).toEqual('12em');
106110
expect(style.fontFamily).toEqual('monospace');

lib/properties/borderWidth.js

+1
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ var parser = function(v) {
3535
}
3636
return undefined;
3737
};
38+
module.exports.parse = parser;
3839

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

lib/properties/outline.js

+17
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

+4-2
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

+20
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-width');
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

+18
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)