@sankhyalabs/ezui 2.7.6 → 2.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/ez-breadcrumb.cjs.entry.js +35 -0
- package/dist/cjs/ez-tree.cjs.entry.js +375 -0
- package/dist/cjs/ezui.cjs.js +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/collection/collection-manifest.json +2 -0
- package/dist/collection/components/ez-breadcrumb/ez-breadcrumb.css +53 -0
- package/dist/collection/components/ez-breadcrumb/ez-breadcrumb.js +80 -0
- package/dist/collection/components/ez-tree/ez-tree.css +154 -0
- package/dist/collection/components/ez-tree/ez-tree.js +428 -0
- package/dist/collection/components/ez-tree/interfaces/ITree.js +1 -0
- package/dist/collection/components/ez-tree/interfaces/ITreeItem.js +1 -0
- package/dist/collection/components/ez-tree/subcomponents/DefaultIconResolver.js +8 -0
- package/dist/collection/components/ez-tree/subcomponents/TreeItem.js +25 -0
- package/dist/collection/components/ez-tree/subcomponents/index.js +1 -0
- package/dist/collection/components/ez-tree/types/Node.js +72 -0
- package/dist/collection/components/ez-tree/types/Tree.js +70 -0
- package/dist/custom-elements/index.d.ts +12 -0
- package/dist/custom-elements/index.js +413 -11
- package/dist/esm/ez-breadcrumb.entry.js +31 -0
- package/dist/esm/ez-tree.entry.js +371 -0
- package/dist/esm/ezui.js +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/ezui/ezui.esm.js +1 -1
- package/dist/ezui/p-171c3236.entry.js +1 -0
- package/dist/ezui/p-79e409c6.entry.js +1 -0
- package/dist/types/components/ez-breadcrumb/ez-breadcrumb.d.ts +20 -0
- package/dist/types/components/ez-tree/ez-tree.d.ts +66 -0
- package/dist/types/components/ez-tree/interfaces/ITree.d.ts +5 -0
- package/dist/types/components/ez-tree/interfaces/ITreeItem.d.ts +10 -0
- package/dist/types/components/ez-tree/subcomponents/DefaultIconResolver.d.ts +2 -0
- package/dist/types/components/ez-tree/subcomponents/TreeItem.d.ts +13 -0
- package/dist/types/components/ez-tree/subcomponents/index.d.ts +1 -0
- package/dist/types/components/ez-tree/types/Node.d.ts +20 -0
- package/dist/types/components/ez-tree/types/Tree.d.ts +16 -0
- package/dist/types/components.d.ts +92 -0
- package/package.json +1 -1
- package/react/components.d.ts +2 -0
- package/react/components.js +2 -0
- package/react/components.js.map +1 -1
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { Component, h, Prop, Event, Element } from '@stencil/core';
|
|
2
|
+
import { ElementIDUtils } from '@sankhyalabs/core';
|
|
3
|
+
export class EzBreadcrumb {
|
|
4
|
+
constructor() {
|
|
5
|
+
/**
|
|
6
|
+
* Lista de itens do breadcrumb.
|
|
7
|
+
*/
|
|
8
|
+
this.items = [];
|
|
9
|
+
}
|
|
10
|
+
componentDidLoad() {
|
|
11
|
+
ElementIDUtils.addIDInfo(this._element);
|
|
12
|
+
}
|
|
13
|
+
handleItemClick(itemSelected) {
|
|
14
|
+
this.ezClick.emit(itemSelected);
|
|
15
|
+
}
|
|
16
|
+
render() {
|
|
17
|
+
return (h("nav", { class: "breadcrumb" },
|
|
18
|
+
h("ol", { class: "breadcrumb__list" }, this.items.map((item, index) => {
|
|
19
|
+
const isLastItem = index === (this.items.length - 1);
|
|
20
|
+
return (h("li", Object.assign({ class: "breadcrumb__item", id: item.id }, { [ElementIDUtils.DATA_ELEMENT_ID_ATTRIBUTE_NAME]: ElementIDUtils.getInternalIDInfo(`ezBreadcrumbItem_${item.id}`) }),
|
|
21
|
+
item.iconName && h("ez-icon", Object.assign({ class: `breadcrumb__item--icon ${isLastItem ? 'active-icon' : ''}`, size: "small", iconName: item.iconName }, { [ElementIDUtils.DATA_ELEMENT_ID_ATTRIBUTE_NAME]: `${ElementIDUtils.getInternalIDInfo(`iconItem${item.id}`)}` })),
|
|
22
|
+
h("p", { class: `breadcrumb__item--label ${isLastItem ? 'active' : ''}`, onClick: !isLastItem ? () => this.handleItemClick(item) : undefined }, item.label),
|
|
23
|
+
!isLastItem && h("ez-icon", Object.assign({ class: "breadcrumb__item--chevron", size: "small", iconName: "chevron-right" }, { [ElementIDUtils.DATA_ELEMENT_ID_ATTRIBUTE_NAME]: `${ElementIDUtils.getInternalIDInfo(`iconPath${item.id}`)}` }))));
|
|
24
|
+
}))));
|
|
25
|
+
}
|
|
26
|
+
static get is() { return "ez-breadcrumb"; }
|
|
27
|
+
static get encapsulation() { return "shadow"; }
|
|
28
|
+
static get originalStyleUrls() { return {
|
|
29
|
+
"$": ["ez-breadcrumb.css"]
|
|
30
|
+
}; }
|
|
31
|
+
static get styleUrls() { return {
|
|
32
|
+
"$": ["ez-breadcrumb.css"]
|
|
33
|
+
}; }
|
|
34
|
+
static get properties() { return {
|
|
35
|
+
"items": {
|
|
36
|
+
"type": "unknown",
|
|
37
|
+
"mutable": true,
|
|
38
|
+
"complexType": {
|
|
39
|
+
"original": "Array<IBreadcrumbItem>",
|
|
40
|
+
"resolved": "IBreadcrumbItem[]",
|
|
41
|
+
"references": {
|
|
42
|
+
"Array": {
|
|
43
|
+
"location": "global"
|
|
44
|
+
},
|
|
45
|
+
"IBreadcrumbItem": {
|
|
46
|
+
"location": "local"
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
"required": false,
|
|
51
|
+
"optional": false,
|
|
52
|
+
"docs": {
|
|
53
|
+
"tags": [],
|
|
54
|
+
"text": "Lista de itens do breadcrumb."
|
|
55
|
+
},
|
|
56
|
+
"defaultValue": "[]"
|
|
57
|
+
}
|
|
58
|
+
}; }
|
|
59
|
+
static get events() { return [{
|
|
60
|
+
"method": "ezClick",
|
|
61
|
+
"name": "ezClick",
|
|
62
|
+
"bubbles": true,
|
|
63
|
+
"cancelable": true,
|
|
64
|
+
"composed": true,
|
|
65
|
+
"docs": {
|
|
66
|
+
"tags": [],
|
|
67
|
+
"text": "Emitido quando um item do breadcrumb \u00E9 selecionado."
|
|
68
|
+
},
|
|
69
|
+
"complexType": {
|
|
70
|
+
"original": "IBreadcrumbItem",
|
|
71
|
+
"resolved": "IBreadcrumbItem",
|
|
72
|
+
"references": {
|
|
73
|
+
"IBreadcrumbItem": {
|
|
74
|
+
"location": "local"
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}]; }
|
|
79
|
+
static get elementRef() { return "_element"; }
|
|
80
|
+
}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
:host {
|
|
2
|
+
/* Geral */
|
|
3
|
+
/*@doc Define o arredondamento dos retangulos.*/
|
|
4
|
+
--ez-tree--border-radius: var(--border--radius-small, 8px);
|
|
5
|
+
/*@doc Define a largura da identação de cada nível.*/
|
|
6
|
+
--ez-tree--padding-inline-start: 20px;
|
|
7
|
+
/*@doc Define a margem do componente.*/
|
|
8
|
+
--ez-tree--margin: var(--space--extra-small, 3px);
|
|
9
|
+
|
|
10
|
+
/* Fontes e cor de ícones*/
|
|
11
|
+
/*@doc Define a família da fonte.*/
|
|
12
|
+
--ez-tree--font-family: var(--font-pattern, Arial);
|
|
13
|
+
/*@doc Define o tamanho da fonte.*/
|
|
14
|
+
--ez-tree--font-size: var(--text--medium, 14px);
|
|
15
|
+
/*@doc Define o peso da fonte.*/
|
|
16
|
+
--ez-tree--selected--font-weight: var(--text-weight--large, 600);
|
|
17
|
+
/*@doc Define o peso da fonte.*/
|
|
18
|
+
--ez-tree--font-weight: var(--text-weight--small, 400);
|
|
19
|
+
/*@doc Define a cor da fonte e do ícone.*/
|
|
20
|
+
--ez-tree--color: var(--title--primary, #2B3A54);
|
|
21
|
+
/*@doc Define a cor da fonte e do ícone quando selecionado.*/
|
|
22
|
+
--ez-tree--selected--color: var(--color--primary, #008561);
|
|
23
|
+
/*@doc Define a cor da fonte e do ícone quando desabilitado.*/
|
|
24
|
+
--ez-tree--disabled--color: var(--text--disable, #AFB6C0);
|
|
25
|
+
|
|
26
|
+
/* Item */
|
|
27
|
+
/*@doc Define a altura de cada item.*/
|
|
28
|
+
--ez-tree__tree-item--height: var(--size-medium, 18px);
|
|
29
|
+
/*@doc Define o espaçamento interno do item.*/
|
|
30
|
+
--ez-tree__tree-item--padding: var(--space--small, 6px);
|
|
31
|
+
/*@doc Define a cor de background.*/
|
|
32
|
+
--ez-tree__tree-item--background-color: var(--background--xlight, #FFFFFF);
|
|
33
|
+
/*@doc Define a cor de background quando selecionado.*/
|
|
34
|
+
--ez-tree__tree-item--selected--background-color: var(--color--primary-300, #E2F4EF);
|
|
35
|
+
/*@doc Define a cor de background com o mouse sobre o item.*/
|
|
36
|
+
--ez-tree__tree-item--hover--background-color: var(--background--medium, #F0F3F7);
|
|
37
|
+
/*@doc Define a cor de background quando deabilitado.*/
|
|
38
|
+
--ez-tree__tree-item--disabled--background-color: var(--ez-tree__tree-Item--background-color);
|
|
39
|
+
|
|
40
|
+
/* Box do ícone */
|
|
41
|
+
/*@doc Define a altura do box do ícone.*/
|
|
42
|
+
--ez-tree__item-icon-box--height: var(--ez-tree__tree-item--height);
|
|
43
|
+
/*@doc Define a largura do box do ícone.*/
|
|
44
|
+
--ez-tree__item-icon-box--width: var(--size-medium, 18px);
|
|
45
|
+
/*@doc Define o espaçamento interno do ícone.*/
|
|
46
|
+
--ez-tree__item-icon-box--padding: var(--ez-tree__tree-item--padding);
|
|
47
|
+
|
|
48
|
+
/*private*/
|
|
49
|
+
display: flex;
|
|
50
|
+
flex-direction: column;
|
|
51
|
+
|
|
52
|
+
/*public*/
|
|
53
|
+
margin: 0 var(--ez-tree--margin) var(--ez-tree--margin) var(--ez-tree--margin);
|
|
54
|
+
outline: none;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
ul {
|
|
58
|
+
/*private*/
|
|
59
|
+
list-style-type: none;
|
|
60
|
+
margin: 0;
|
|
61
|
+
|
|
62
|
+
/*public*/
|
|
63
|
+
padding-inline-start: var(--ez-tree--padding-inline-start);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
ul.first-level {
|
|
67
|
+
/*private*/
|
|
68
|
+
padding-inline-start: 0;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
.tree-item {
|
|
72
|
+
/*private*/
|
|
73
|
+
display: flex;
|
|
74
|
+
align-items: center;
|
|
75
|
+
|
|
76
|
+
/*public*/
|
|
77
|
+
margin-top: var(--ez-tree--margin);
|
|
78
|
+
border-radius: var(--ez-tree--border-radius);
|
|
79
|
+
height: var(--ez-tree__tree-item--height);
|
|
80
|
+
padding: var(--ez-tree__tree-item--padding);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
.tree-item[selected] {
|
|
84
|
+
/*public*/
|
|
85
|
+
background-color: var(--ez-tree__tree-item--selected--background-color);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
.tree-item:hover {
|
|
89
|
+
/*private*/
|
|
90
|
+
cursor: pointer;
|
|
91
|
+
|
|
92
|
+
/*public*/
|
|
93
|
+
background-color: var(--ez-tree__tree-item--hover--background-color);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
.tree-item[disabled], .tree-item[disabled]:hover {
|
|
97
|
+
/*private*/
|
|
98
|
+
cursor: unset;
|
|
99
|
+
|
|
100
|
+
/*public*/
|
|
101
|
+
background-color: var(--ez-tree__tree-item--disabled--background-color);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
.item-icon-box {
|
|
105
|
+
/*private*/
|
|
106
|
+
display: flex;
|
|
107
|
+
align-items: center;
|
|
108
|
+
justify-content: center;
|
|
109
|
+
|
|
110
|
+
/*public*/
|
|
111
|
+
width: var(--ez-tree__item-icon-box--width);
|
|
112
|
+
height: var(--ez-tree__item-icon-box--height);
|
|
113
|
+
padding: var(--ez-tree__item-icon-box--padding) var(--ez-tree__item-icon-box--padding) var(--ez-tree__item-icon-box--padding) 0;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
.item-icon {
|
|
117
|
+
/*public*/
|
|
118
|
+
--ez-icon--color: var(--ez-tree--color);
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
.tree-item[selected] .item-icon {
|
|
122
|
+
/*public*/
|
|
123
|
+
--ez-icon--color: var(--ez-tree--selected--color);
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
.tree-item[disabled] .item-icon {
|
|
127
|
+
/*public*/
|
|
128
|
+
--ez-icon--color: var(--ez-tree--disabled--color);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
.item-label {
|
|
132
|
+
/*private*/
|
|
133
|
+
cursor: inherit;
|
|
134
|
+
text-overflow: ellipsis;
|
|
135
|
+
overflow: hidden;
|
|
136
|
+
white-space: nowrap;
|
|
137
|
+
|
|
138
|
+
/*public*/
|
|
139
|
+
font-family: var(--ez-tree--font-family);
|
|
140
|
+
font-size: var(--ez-tree--font-size);
|
|
141
|
+
font-weight: var(--ez-tree--font-weight);
|
|
142
|
+
color: var(--ez-tree--color);
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
.tree-item[selected] .item-label {
|
|
146
|
+
/*public*/
|
|
147
|
+
color: var(--ez-tree--selected--color);
|
|
148
|
+
font-weight: var(--ez-tree--selected--font-weight);
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
.tree-item[disabled] .item-label {
|
|
152
|
+
/*public*/
|
|
153
|
+
color: var(--ez-tree--disabled--color);
|
|
154
|
+
}
|
|
@@ -0,0 +1,428 @@
|
|
|
1
|
+
import { ElementIDUtils } from '@sankhyalabs/core';
|
|
2
|
+
import { Component, Element, Event, forceUpdate, h, Host, Listen, Method, Prop, State, Watch } from '@stencil/core';
|
|
3
|
+
import { defaultIconResolver } from './subcomponents';
|
|
4
|
+
import { TreeItem } from './subcomponents/TreeItem';
|
|
5
|
+
import { Tree } from './types/Tree';
|
|
6
|
+
export class EzTree {
|
|
7
|
+
constructor() {
|
|
8
|
+
this._tree = new Tree(() => forceUpdate(this));
|
|
9
|
+
this._onItemClick = (item) => {
|
|
10
|
+
this.openClose(item);
|
|
11
|
+
this.value = item;
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Define os itens apresentados na árvore.
|
|
15
|
+
*/
|
|
16
|
+
this.items = [];
|
|
17
|
+
/**
|
|
18
|
+
* Define uma função que vai resolver o ícone daquele item. Retorna o nome do ícone da lib de icones do DS.
|
|
19
|
+
*/
|
|
20
|
+
this.iconResolver = defaultIconResolver;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Efetua a seleção de um item.
|
|
24
|
+
*/
|
|
25
|
+
async selectItem(id) {
|
|
26
|
+
const node = this._tree.getNode(id);
|
|
27
|
+
if (node) {
|
|
28
|
+
this.value = node.item;
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
this.value = undefined;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Realiza a abertura de um item, incluindo a hieraquia acima.
|
|
36
|
+
* Observação para carga dinâmica (Lazyload): O item solicitado já deve
|
|
37
|
+
* estar carregado na lista. Nos casos onde o item ainda não esteja
|
|
38
|
+
* carregado o id pode ser uma string no formato "id1>>id2>>id3",
|
|
39
|
+
* tornando possível a carga a partir de um ponto já carregado.
|
|
40
|
+
*/
|
|
41
|
+
async openItem(id) {
|
|
42
|
+
this._waintingForLoad = true;
|
|
43
|
+
await this._tree.open(id);
|
|
44
|
+
this._waintingForLoad = false;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Desabilita um ou mais itens.
|
|
48
|
+
*/
|
|
49
|
+
async disableItem(id) {
|
|
50
|
+
[].concat(id).forEach(item => this._tree.setDisabled(item, true));
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Habilita um ou mais itens.
|
|
54
|
+
*/
|
|
55
|
+
async enableItem(id) {
|
|
56
|
+
[].concat(id).forEach(item => this._tree.setDisabled(item, false));
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Adiciona um ou mais itens. Opcionalmente pode-se determinar a qual
|
|
60
|
+
* item da árvore será anexado o item. Caso não informado parentId,
|
|
61
|
+
* adiciona no item selecionado.
|
|
62
|
+
* Observação para carga dinâmica (Lazyload): O parentId deve ser
|
|
63
|
+
* um item carregado atualmente na árvore.
|
|
64
|
+
*/
|
|
65
|
+
async addChild(item, parentId) {
|
|
66
|
+
var _a;
|
|
67
|
+
if (parentId == undefined) {
|
|
68
|
+
parentId = (_a = this.value) === null || _a === void 0 ? void 0 : _a.id;
|
|
69
|
+
}
|
|
70
|
+
this._tree.addChildAt(parentId, item);
|
|
71
|
+
const node = this._tree.getNode(parentId);
|
|
72
|
+
if (node) {
|
|
73
|
+
node.item.expanded = true;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
observeItems() {
|
|
77
|
+
this._tree.load(this.items);
|
|
78
|
+
}
|
|
79
|
+
observeValue() {
|
|
80
|
+
this.ezChange.emit(this.value);
|
|
81
|
+
}
|
|
82
|
+
onKeyDownListener(event) {
|
|
83
|
+
if (!this.value) {
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
let stop = false;
|
|
87
|
+
switch (event.key) {
|
|
88
|
+
case "ArrowUp":
|
|
89
|
+
this.previousItem();
|
|
90
|
+
stop = true;
|
|
91
|
+
break;
|
|
92
|
+
case "ArrowDown":
|
|
93
|
+
this.nextItem();
|
|
94
|
+
stop = true;
|
|
95
|
+
break;
|
|
96
|
+
case "ArrowLeft":
|
|
97
|
+
this.previousLevel();
|
|
98
|
+
stop = true;
|
|
99
|
+
break;
|
|
100
|
+
case "ArrowRight":
|
|
101
|
+
this.nextLevel();
|
|
102
|
+
stop = true;
|
|
103
|
+
break;
|
|
104
|
+
case " ":
|
|
105
|
+
this.openClose(this.value);
|
|
106
|
+
stop = true;
|
|
107
|
+
break;
|
|
108
|
+
}
|
|
109
|
+
if (stop) {
|
|
110
|
+
event.stopPropagation();
|
|
111
|
+
event.preventDefault();
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
openClose(item) {
|
|
115
|
+
if (item == undefined) {
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
const expanded = !item.expanded;
|
|
119
|
+
item.expanded = expanded;
|
|
120
|
+
if (expanded) {
|
|
121
|
+
this.ezOpenItem.emit(item);
|
|
122
|
+
}
|
|
123
|
+
forceUpdate(this);
|
|
124
|
+
}
|
|
125
|
+
previousLevel() {
|
|
126
|
+
var _a;
|
|
127
|
+
if (!this.value) {
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
if (this.value.expanded) {
|
|
131
|
+
this.value.expanded = false;
|
|
132
|
+
forceUpdate(this);
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
const node = this._tree.getNode(this.value.id);
|
|
136
|
+
const parentItem = (_a = node.parent) === null || _a === void 0 ? void 0 : _a.item;
|
|
137
|
+
if (parentItem) {
|
|
138
|
+
this.value = parentItem;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
nextLevel() {
|
|
143
|
+
if (!this.value) {
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
const node = this._tree.getNode(this.value.id);
|
|
147
|
+
if (!node.isExpandable()) {
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
if (this.value.expanded) {
|
|
151
|
+
this.nextItem();
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
this.value.expanded = true;
|
|
155
|
+
forceUpdate(this);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
nextItem() {
|
|
159
|
+
const nextIndex = this._visibleItems.indexOf(this.value) + 1;
|
|
160
|
+
if (nextIndex < this._visibleItems.length) {
|
|
161
|
+
this.value = this._visibleItems[nextIndex];
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
previousItem() {
|
|
165
|
+
const nextIndex = this._visibleItems.indexOf(this.value) - 1;
|
|
166
|
+
if (nextIndex > -1) {
|
|
167
|
+
this.value = this._visibleItems[nextIndex];
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
render() {
|
|
171
|
+
ElementIDUtils.addIDInfoIfNotExists(this._element, 'ezTree');
|
|
172
|
+
if (this.items == undefined) {
|
|
173
|
+
return;
|
|
174
|
+
}
|
|
175
|
+
this._visibleItems = [];
|
|
176
|
+
return (h(Host, { tabindex: "-1" }, this._waintingForLoad ?
|
|
177
|
+
h("label", null, "Carregando...")
|
|
178
|
+
:
|
|
179
|
+
this._tree.getChildren().map(node => {
|
|
180
|
+
var _a;
|
|
181
|
+
return h(TreeItem, { selectedId: (_a = this.value) === null || _a === void 0 ? void 0 : _a.id, node: node, itemClick: this._onItemClick, iconResolver: this.iconResolver, itemsList: this._visibleItems });
|
|
182
|
+
})));
|
|
183
|
+
}
|
|
184
|
+
static get is() { return "ez-tree"; }
|
|
185
|
+
static get encapsulation() { return "shadow"; }
|
|
186
|
+
static get originalStyleUrls() { return {
|
|
187
|
+
"$": ["ez-tree.css"]
|
|
188
|
+
}; }
|
|
189
|
+
static get styleUrls() { return {
|
|
190
|
+
"$": ["ez-tree.css"]
|
|
191
|
+
}; }
|
|
192
|
+
static get properties() { return {
|
|
193
|
+
"items": {
|
|
194
|
+
"type": "unknown",
|
|
195
|
+
"mutable": false,
|
|
196
|
+
"complexType": {
|
|
197
|
+
"original": "Array<ITreeItem>",
|
|
198
|
+
"resolved": "ITreeItem[]",
|
|
199
|
+
"references": {
|
|
200
|
+
"Array": {
|
|
201
|
+
"location": "global"
|
|
202
|
+
},
|
|
203
|
+
"ITreeItem": {
|
|
204
|
+
"location": "import",
|
|
205
|
+
"path": "./interfaces/ITreeItem"
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
},
|
|
209
|
+
"required": false,
|
|
210
|
+
"optional": false,
|
|
211
|
+
"docs": {
|
|
212
|
+
"tags": [],
|
|
213
|
+
"text": "Define os itens apresentados na \u00E1rvore."
|
|
214
|
+
},
|
|
215
|
+
"defaultValue": "[]"
|
|
216
|
+
},
|
|
217
|
+
"value": {
|
|
218
|
+
"type": "unknown",
|
|
219
|
+
"mutable": true,
|
|
220
|
+
"complexType": {
|
|
221
|
+
"original": "ITreeItem",
|
|
222
|
+
"resolved": "ITreeItem",
|
|
223
|
+
"references": {
|
|
224
|
+
"ITreeItem": {
|
|
225
|
+
"location": "import",
|
|
226
|
+
"path": "./interfaces/ITreeItem"
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
},
|
|
230
|
+
"required": false,
|
|
231
|
+
"optional": false,
|
|
232
|
+
"docs": {
|
|
233
|
+
"tags": [],
|
|
234
|
+
"text": "Define o item selecionado na \u00E1rvore."
|
|
235
|
+
}
|
|
236
|
+
},
|
|
237
|
+
"iconResolver": {
|
|
238
|
+
"type": "unknown",
|
|
239
|
+
"mutable": false,
|
|
240
|
+
"complexType": {
|
|
241
|
+
"original": "(item: ITreeItem, expanded: boolean, level: number) => string",
|
|
242
|
+
"resolved": "(item: ITreeItem, expanded: boolean, level: number) => string",
|
|
243
|
+
"references": {
|
|
244
|
+
"ITreeItem": {
|
|
245
|
+
"location": "import",
|
|
246
|
+
"path": "./interfaces/ITreeItem"
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
},
|
|
250
|
+
"required": false,
|
|
251
|
+
"optional": false,
|
|
252
|
+
"docs": {
|
|
253
|
+
"tags": [],
|
|
254
|
+
"text": "Define uma fun\u00E7\u00E3o que vai resolver o \u00EDcone daquele item. Retorna o nome do \u00EDcone da lib de icones do DS."
|
|
255
|
+
},
|
|
256
|
+
"defaultValue": "defaultIconResolver"
|
|
257
|
+
}
|
|
258
|
+
}; }
|
|
259
|
+
static get states() { return {
|
|
260
|
+
"_waintingForLoad": {}
|
|
261
|
+
}; }
|
|
262
|
+
static get events() { return [{
|
|
263
|
+
"method": "ezChange",
|
|
264
|
+
"name": "ezChange",
|
|
265
|
+
"bubbles": true,
|
|
266
|
+
"cancelable": true,
|
|
267
|
+
"composed": true,
|
|
268
|
+
"docs": {
|
|
269
|
+
"tags": [],
|
|
270
|
+
"text": "Emitido quando um item \u00E9 selecionado na \u00E1rvore."
|
|
271
|
+
},
|
|
272
|
+
"complexType": {
|
|
273
|
+
"original": "ITreeItem",
|
|
274
|
+
"resolved": "ITreeItem",
|
|
275
|
+
"references": {
|
|
276
|
+
"ITreeItem": {
|
|
277
|
+
"location": "import",
|
|
278
|
+
"path": "./interfaces/ITreeItem"
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
}, {
|
|
283
|
+
"method": "ezOpenItem",
|
|
284
|
+
"name": "ezOpenItem",
|
|
285
|
+
"bubbles": true,
|
|
286
|
+
"cancelable": true,
|
|
287
|
+
"composed": true,
|
|
288
|
+
"docs": {
|
|
289
|
+
"tags": [],
|
|
290
|
+
"text": "Emitido quando um item \u00E9 aberto na \u00E1rvore."
|
|
291
|
+
},
|
|
292
|
+
"complexType": {
|
|
293
|
+
"original": "ITreeItem",
|
|
294
|
+
"resolved": "ITreeItem",
|
|
295
|
+
"references": {
|
|
296
|
+
"ITreeItem": {
|
|
297
|
+
"location": "import",
|
|
298
|
+
"path": "./interfaces/ITreeItem"
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
}]; }
|
|
303
|
+
static get methods() { return {
|
|
304
|
+
"selectItem": {
|
|
305
|
+
"complexType": {
|
|
306
|
+
"signature": "(id: string) => Promise<void>",
|
|
307
|
+
"parameters": [{
|
|
308
|
+
"tags": [],
|
|
309
|
+
"text": ""
|
|
310
|
+
}],
|
|
311
|
+
"references": {
|
|
312
|
+
"Promise": {
|
|
313
|
+
"location": "global"
|
|
314
|
+
}
|
|
315
|
+
},
|
|
316
|
+
"return": "Promise<void>"
|
|
317
|
+
},
|
|
318
|
+
"docs": {
|
|
319
|
+
"text": "Efetua a sele\u00E7\u00E3o de um item.",
|
|
320
|
+
"tags": []
|
|
321
|
+
}
|
|
322
|
+
},
|
|
323
|
+
"openItem": {
|
|
324
|
+
"complexType": {
|
|
325
|
+
"signature": "(id: string) => Promise<void>",
|
|
326
|
+
"parameters": [{
|
|
327
|
+
"tags": [],
|
|
328
|
+
"text": ""
|
|
329
|
+
}],
|
|
330
|
+
"references": {
|
|
331
|
+
"Promise": {
|
|
332
|
+
"location": "global"
|
|
333
|
+
}
|
|
334
|
+
},
|
|
335
|
+
"return": "Promise<void>"
|
|
336
|
+
},
|
|
337
|
+
"docs": {
|
|
338
|
+
"text": "Realiza a abertura de um item, incluindo a hieraquia acima.\nObserva\u00E7\u00E3o para carga din\u00E2mica (Lazyload): O item solicitado j\u00E1 deve\nestar carregado na lista. Nos casos onde o item ainda n\u00E3o esteja \ncarregado o id pode ser uma string no formato \"id1>>id2>>id3\",\ntornando poss\u00EDvel a carga a partir de um ponto j\u00E1 carregado.",
|
|
339
|
+
"tags": []
|
|
340
|
+
}
|
|
341
|
+
},
|
|
342
|
+
"disableItem": {
|
|
343
|
+
"complexType": {
|
|
344
|
+
"signature": "(id: string | Array<string>) => Promise<void>",
|
|
345
|
+
"parameters": [{
|
|
346
|
+
"tags": [],
|
|
347
|
+
"text": ""
|
|
348
|
+
}],
|
|
349
|
+
"references": {
|
|
350
|
+
"Promise": {
|
|
351
|
+
"location": "global"
|
|
352
|
+
},
|
|
353
|
+
"Array": {
|
|
354
|
+
"location": "global"
|
|
355
|
+
}
|
|
356
|
+
},
|
|
357
|
+
"return": "Promise<void>"
|
|
358
|
+
},
|
|
359
|
+
"docs": {
|
|
360
|
+
"text": "Desabilita um ou mais itens.",
|
|
361
|
+
"tags": []
|
|
362
|
+
}
|
|
363
|
+
},
|
|
364
|
+
"enableItem": {
|
|
365
|
+
"complexType": {
|
|
366
|
+
"signature": "(id: string | Array<string>) => Promise<void>",
|
|
367
|
+
"parameters": [{
|
|
368
|
+
"tags": [],
|
|
369
|
+
"text": ""
|
|
370
|
+
}],
|
|
371
|
+
"references": {
|
|
372
|
+
"Promise": {
|
|
373
|
+
"location": "global"
|
|
374
|
+
},
|
|
375
|
+
"Array": {
|
|
376
|
+
"location": "global"
|
|
377
|
+
}
|
|
378
|
+
},
|
|
379
|
+
"return": "Promise<void>"
|
|
380
|
+
},
|
|
381
|
+
"docs": {
|
|
382
|
+
"text": "Habilita um ou mais itens.",
|
|
383
|
+
"tags": []
|
|
384
|
+
}
|
|
385
|
+
},
|
|
386
|
+
"addChild": {
|
|
387
|
+
"complexType": {
|
|
388
|
+
"signature": "(item: ITreeItem, parentId?: string) => Promise<void>",
|
|
389
|
+
"parameters": [{
|
|
390
|
+
"tags": [],
|
|
391
|
+
"text": ""
|
|
392
|
+
}, {
|
|
393
|
+
"tags": [],
|
|
394
|
+
"text": ""
|
|
395
|
+
}],
|
|
396
|
+
"references": {
|
|
397
|
+
"Promise": {
|
|
398
|
+
"location": "global"
|
|
399
|
+
},
|
|
400
|
+
"ITreeItem": {
|
|
401
|
+
"location": "import",
|
|
402
|
+
"path": "./interfaces/ITreeItem"
|
|
403
|
+
}
|
|
404
|
+
},
|
|
405
|
+
"return": "Promise<void>"
|
|
406
|
+
},
|
|
407
|
+
"docs": {
|
|
408
|
+
"text": "Adiciona um ou mais itens. Opcionalmente pode-se determinar a qual\nitem da \u00E1rvore ser\u00E1 anexado o item. Caso n\u00E3o informado parentId,\nadiciona no item selecionado.\nObserva\u00E7\u00E3o para carga din\u00E2mica (Lazyload): O parentId deve ser\num item carregado atualmente na \u00E1rvore.",
|
|
409
|
+
"tags": []
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
}; }
|
|
413
|
+
static get elementRef() { return "_element"; }
|
|
414
|
+
static get watchers() { return [{
|
|
415
|
+
"propName": "items",
|
|
416
|
+
"methodName": "observeItems"
|
|
417
|
+
}, {
|
|
418
|
+
"propName": "value",
|
|
419
|
+
"methodName": "observeValue"
|
|
420
|
+
}]; }
|
|
421
|
+
static get listeners() { return [{
|
|
422
|
+
"name": "keydown",
|
|
423
|
+
"method": "onKeyDownListener",
|
|
424
|
+
"target": undefined,
|
|
425
|
+
"capture": true,
|
|
426
|
+
"passive": false
|
|
427
|
+
}]; }
|
|
428
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { ElementIDUtils } from "@sankhyalabs/core";
|
|
2
|
+
import { h } from "@stencil/core";
|
|
3
|
+
export const TreeItem = (props) => {
|
|
4
|
+
const { node, selectedId, itemClick, iconResolver, itemsList } = props;
|
|
5
|
+
const treeItem = node.item;
|
|
6
|
+
const level = props.level || 1;
|
|
7
|
+
const disabled = node.isDisabled();
|
|
8
|
+
const expanded = !disabled && treeItem.expanded;
|
|
9
|
+
const expandable = node.isExpandable();
|
|
10
|
+
const available = !disabled && !node.isPlaceHolder;
|
|
11
|
+
if (available) {
|
|
12
|
+
itemsList.push(treeItem);
|
|
13
|
+
}
|
|
14
|
+
return (h("ul", { title: treeItem.label, class: level === 1 ? "first-level" : undefined },
|
|
15
|
+
h("li", Object.assign({ class: "tree-item", onClick: () => available && itemClick(treeItem) }, {
|
|
16
|
+
disabled,
|
|
17
|
+
selected: treeItem.id === selectedId,
|
|
18
|
+
[ElementIDUtils.DATA_ELEMENT_ID_ATTRIBUTE_NAME]: ElementIDUtils.getInternalIDInfo(`ezTreeItem_${treeItem.id}`)
|
|
19
|
+
}),
|
|
20
|
+
h("div", { class: "item-icon-box" }, expandable &&
|
|
21
|
+
h("ez-icon", { id: treeItem.id, class: "item-icon", size: "small", iconName: iconResolver(treeItem, expanded, level) })),
|
|
22
|
+
h("label", { class: "item-label" }, treeItem.label)),
|
|
23
|
+
expanded
|
|
24
|
+
&& node.getChildren().map(child => h(TreeItem, { selectedId: selectedId, node: child, itemClick: itemClick, level: level + 1, iconResolver: iconResolver, itemsList: itemsList }))));
|
|
25
|
+
};
|