Skip to content

Commit ada6804

Browse files
authored
Merge pull request btecu#23 from johanrd/master
Add support for `contextMenu` event
2 parents dd36d06 + 70e92db commit ada6804

File tree

6 files changed

+40
-1
lines changed

6 files changed

+40
-1
lines changed

README.md

+10
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,16 @@ Fired when a node is selected.
8383
{{x-tree model=tree onSelect=(action 'onSelect')}}
8484
```
8585

86+
#### onContextMenu
87+
88+
Returns: `node`
89+
90+
Fired on contextMenu event.
91+
92+
```handlebars
93+
{{x-tree model=tree onContextMenu=(action 'onContextMenu')}}
94+
```
95+
8696
### Available options
8797

8898
#### checkable

addon/components/x-tree-node.js

+7
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,13 @@ export default Component.extend({
1717
return get(this, 'model.id') === this.chosenId;
1818
}),
1919

20+
contextMenu(e) {
21+
if (this.onContextMenu) {
22+
e.preventDefault();
23+
this.onContextMenu(this.model)
24+
}
25+
},
26+
2027
click() {
2128
if (this.onSelect && !get(this, 'model.isDisabled')) {
2229
let wasChecked = get(this, 'model.isChecked');

addon/templates/components/x-tree-branch.hbs

+2
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
chosenId=chosenId
99
onCheck=onCheck
1010
onSelect=onSelect
11+
onContextMenu=onContextMenu
1112
onHover=onHover
1213
onHoverOut=onHoverOut
1314
model=child
@@ -26,6 +27,7 @@
2627
chosenId=chosenId
2728
onCheck=onCheck
2829
onSelect=onSelect
30+
onContextMenu=onContextMenu
2931
onHover=onHover
3032
onHoverOut=onHoverOut
3133
expandedIcon=expandedIcon

addon/templates/components/x-tree-children.hbs

+4
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
chosenId=chosenId
77
onCheck=onCheck
88
onSelect=onSelect
9+
onContextMenu=onContextMenu
910
onHover=onHover
1011
onHoverOut=onHoverOut
1112
model=model
@@ -24,6 +25,7 @@
2425
chosenId=chosenId
2526
onCheck=onCheck
2627
onSelect=onSelect
28+
onContextMenu=onContextMenu
2729
onHover=onHover
2830
onHoverOut=onHoverOut
2931
model=model.children
@@ -43,6 +45,7 @@
4345
chosenId=chosenId
4446
onCheck=onCheck
4547
onSelect=onSelect
48+
onContextMenu=onContextMenu
4649
onHover=onHover
4750
onHoverOut=onHoverOut
4851
expandedIcon=expandedIcon
@@ -57,6 +60,7 @@
5760
chosenId=chosenId
5861
onCheck=onCheck
5962
onSelect=onSelect
63+
onContextMenu=onContextMenu
6064
onHover=onHover
6165
onHoverOut=onHoverOut
6266
expandedIcon=expandedIcon

addon/templates/components/x-tree.hbs

+2
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
chosenId=chosenId
66
onCheck=onCheck
77
onSelect=onSelect
8+
onContextMenu=onContextMenu
89
onHover=onHover
910
onHoverOut=onHoverOut
1011
model=model
@@ -22,6 +23,7 @@
2223
chosenId=chosenId
2324
onCheck=onCheck
2425
onSelect=onSelect
26+
onContextMenu=onContextMenu
2527
onHover=onHover
2628
onHoverOut=onHoverOut
2729
expandedIcon=expandedIcon

tests/integration/components/x-tree-test.js

+15-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { module, test } from 'qunit';
22
import { set } from '@ember/object';
33
import { setupRenderingTest } from 'ember-qunit';
4-
import { render, find, findAll, click } from '@ember/test-helpers';
4+
import { render, find, findAll, click, triggerEvent } from '@ember/test-helpers';
55
import hbs from 'htmlbars-inline-precompile';
66
import Component from '@ember/component';
77

@@ -241,4 +241,18 @@ module('Integration | Component | x-tree', function(hooks) {
241241
await click('.tree-node span');
242242
assert.equal(this.selected, false, 're-enabled tree nodes can be selected again');
243243
});
244+
245+
test('contextmenu event', async function(assert) {
246+
this.set('onContextMenu', (item) => {
247+
this.name = item.name;
248+
});
249+
this.set('tree', standardTree);
250+
251+
await render(hbs`{{x-tree model=tree onContextMenu=onContextMenu}}`);
252+
await triggerEvent('.tree-node span', 'contextmenu')
253+
254+
assert.equal(this.name, 'Root', 'item from contextmenu event is returned as expected');
255+
256+
});
257+
244258
});

0 commit comments

Comments
 (0)