Skip to content

Commit 26a4862

Browse files
author
Loz Jackson
authored
Submenu: add support for disabled attr (#11)
* update sub-menu component * update css * update changelog
1 parent 3fac8d1 commit 26a4862

File tree

5 files changed

+61
-8
lines changed

5 files changed

+61
-8
lines changed

CHANGELOG.md

+2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
# Change Log
22

3+
* [#11](https://github.com/lozjackson/ember-ui-components/pull/11) [BUGFIX] The `SubMenuComponent` now supports the `disabled` attribute.
4+
35
* [#10](https://github.com/lozjackson/ember-ui-components/pull/10) [FEATURE] Add `TabsComponent`.
46

57
### v0.9.2 2016-11-06

addon/components/uic-sub-menu.js

+18-1
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,21 @@ export default Ember.Component.extend( {
3535
*/
3636
classNames: ['uic-sub-menu'],
3737

38+
/**
39+
@property attributeBindings
40+
@type {Array}
41+
@private
42+
@default `['disabled']`
43+
*/
44+
attributeBindings: ['disabled'],
45+
46+
/**
47+
@property disabled
48+
@type {Boolean}
49+
@default `false`
50+
*/
51+
disabled: false,
52+
3853
/**
3954
@property showMenu
4055
@type {Boolean}
@@ -67,7 +82,9 @@ export default Ember.Component.extend( {
6782
*/
6883
mouseEnter() {
6984
run.cancel(this.get('_event'));
70-
this.set('showMenu', true);
85+
if (!this.get('disabled')) {
86+
this.set('showMenu', true);
87+
}
7188
},
7289

7390
/**

addon/styles/ember-ui-components.css

+7
Original file line numberDiff line numberDiff line change
@@ -1110,6 +1110,13 @@ li.uic-sub-menu:hover > div > svg.svg-triangle polygon {
11101110
stroke:#ffffff;
11111111
stroke-width:1;
11121112
}
1113+
menuitem[disabled].uic-sub-menu > div > svg.svg-triangle polygon,
1114+
li[disabled].uic-sub-menu > div > svg.svg-triangle polygon,
1115+
menuitem[disabled].uic-sub-menu:hover > div > svg.svg-triangle polygon,
1116+
li[disabled].uic-sub-menu:hover > div > svg.svg-triangle polygon {
1117+
fill: #ccc !important;
1118+
stroke:#ccc !important;
1119+
}
11131120
.uic-context-menu-container menuitem[disabled],
11141121
.uic-context-menu-container li[disabled],
11151122
.uic-context-menu-container li.context-menu-disabled,

tests/integration/components/uic-sub-menu-test.js

+8-7
Original file line numberDiff line numberDiff line change
@@ -6,24 +6,25 @@ moduleForComponent('uic-sub-menu', 'Integration | Component | uic sub menu', {
66
});
77

88
test('it renders', function(assert) {
9-
// Set any properties with this.set('myProperty', 'value');
10-
// Handle any actions with this.on('myAction', function(val) { ... });"
11-
129
this.render(hbs`{{uic-sub-menu}}`);
13-
1410
assert.equal(this.$().text().trim(), '');
15-
16-
// Template block usage:"
1711
this.render(hbs`
1812
{{#uic-sub-menu showMenu=true}}
1913
sub menu...
2014
{{/uic-sub-menu}}
2115
`);
22-
2316
assert.equal(this.$().text().trim(), 'sub menu...');
2417
});
2518

2619
test('has correct tag and class', function(assert) {
2720
this.render(hbs`{{uic-sub-menu}}`);
2821
assert.equal(this.$('menuitem.uic-sub-menu').length, 1);
2922
});
23+
24+
test('disabled', function(assert) {
25+
this.set('disabled', true);
26+
this.render(hbs`{{uic-sub-menu disabled=disabled}}`);
27+
assert.equal(this.$('menuitem[disabled].uic-sub-menu').length, 1);
28+
this.set('disabled', false);
29+
assert.equal(this.$('menuitem[disabled].uic-sub-menu').length, 0);
30+
});

tests/unit/components/uic-sub-menu-test.js

+26
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,20 @@ test('classNames', function(assert) {
3535
assert.equal(component.get('classNames')[1], 'uic-sub-menu');
3636
});
3737

38+
test('attributeBindings', function(assert) {
39+
assert.expect(1);
40+
let component = this.subject();
41+
this.render();
42+
assert.deepEqual(component.get('attributeBindings'), ['disabled']);
43+
});
44+
45+
test('disabled should be false', function(assert) {
46+
assert.expect(1);
47+
let component = this.subject();
48+
this.render();
49+
assert.equal(component.get('disabled'), false);
50+
});
51+
3852
test('showMenu', function(assert) {
3953
assert.expect(1);
4054
var component = this.subject();
@@ -58,6 +72,18 @@ test('mouseEnter', function(assert) {
5872
assert.equal(component.get('showMenu'), true);
5973
});
6074

75+
test('mouseEnter - disabled', function(assert) {
76+
assert.expect(1);
77+
var component = this.subject();
78+
component.setProperties({
79+
showMenu: false,
80+
disabled: true
81+
});
82+
this.render();
83+
run(() => component.mouseEnter());
84+
assert.equal(component.get('showMenu'), false);
85+
});
86+
6187
test('mouseLeave', function(assert) {
6288
assert.expect(1);
6389
var component = this.subject();

0 commit comments

Comments
 (0)