-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathactindo-tree.html
117 lines (109 loc) · 3.75 KB
/
actindo-tree.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
<link rel="import" href="../polymer/polymer.html">
<link rel="import" href="../paper-spinner/paper-spinner-lite.html">
<link rel="import" href="actindo-tree-node.html">
<link rel="import" href="actindo-tree-icons.html">
<link rel="import" href="actindo-tree-behavior.html">
<link rel="import" href="actindo-loadable.html">
<!--
`<paper-tree>` display a browsable tree of nodes (`<paper-tree-node>`) with expandable/collapsible capabilities and actions menu for each node.
Example:
<paper-tree></paper-tree>
@demo
-->
<dom-module id="actindo-tree">
<template>
<style>
:host {
display: block;
}
</style>
<actindo-loadable loading="[[_loading]]">
<template is="dom-repeat" items="{{items}}" as="item">
<actindo-tree-node
on-select="_setSelectNode"
id="root"
item="[[item]]"
value-field="[[valueField]]"
display-field="[[displayField]]"
show-default-icon="[[showDefaultIcon]]"
selected-items="[[selectedItems]]"
leaves-selectable-only="[[leavesSelectableOnly]]"
flatten-items="[[flattenItems]]"
selected-nodes="{{selectedNodes}}"
allow-deselect="[[allowDeselect]]"
disabled="[[disabled]]"
>
</actindo-tree-node>
</template>
</actindo-loadable>
</template>
<script>
class ActindoTree extends ActindoTreeMixin(Polymer.Element) {
static get is()
{
return 'actindo-tree';
}
static get properties()
{
return Object.assign({}, super.properties, {
/**
* if selectionMode=single, this property contains the selected item if one is selected
*/
selectedItem: {
type: Object,
computed: '_getSelSelectedItem(selectedItems.*)',
notify: true
},
selectedNode: {
type: Node,
computed: '_getSelSelectedNode(selectedNodes.*)'
},
allowDeselect: {
type: Boolean,
value: false
},
/**
* The name of this element.
*/
name: {
type: String
}
});
}
static get observers()
{
return [
'_init(items)'
]
}
_getSelSelectedItem(selectedItems)
{
selectedItems = selectedItems.base;
if (selectedItems && selectedItems.length)
{
return selectedItems[0];
}
return null;
}
_getSelSelectedNode(selectedNodes)
{
selectedNodes = selectedNodes.base;
if (selectedNodes && selectedNodes.length)
{
return selectedNodes[0];
}
return null;
}
/**
* Called when the `select` event is fired from an internal node.
*
* @param {object} e An event object.
*/
_setSelectNode(e)
{
this._updateTreeValue(this.selectedNodes);
}
}
window.customElements.define(ActindoTree.is, ActindoTree);
</script>
</dom-module>