@sankhyalabs/ezui 2.10.0 → 2.11.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-actions-button.cjs.entry.js +1 -1
- package/dist/cjs/ez-alert.cjs.entry.js +1 -1
- package/dist/cjs/ez-application.cjs.entry.js +1 -1
- package/dist/cjs/ez-breadcrumb.cjs.entry.js +1 -1
- package/dist/cjs/ez-button.cjs.entry.js +1 -1
- package/dist/cjs/ez-calendar.cjs.entry.js +1 -1
- package/dist/cjs/ez-card-item.cjs.entry.js +1 -1
- package/dist/cjs/ez-check.cjs.entry.js +1 -1
- package/dist/cjs/ez-chip.cjs.entry.js +1 -1
- package/dist/cjs/ez-collapsible-box.cjs.entry.js +1 -1
- package/dist/cjs/ez-combo-box.cjs.entry.js +1 -1
- package/dist/cjs/ez-date-input.cjs.entry.js +1 -1
- package/dist/cjs/ez-date-time-input.cjs.entry.js +1 -1
- package/dist/cjs/ez-dialog.cjs.entry.js +1 -1
- package/dist/cjs/ez-dropdown.cjs.entry.js +503 -0
- package/dist/cjs/ez-file-item.cjs.entry.js +1 -1
- package/dist/cjs/ez-filter-input.cjs.entry.js +1 -1
- package/dist/cjs/ez-form.cjs.entry.js +1 -1
- package/dist/cjs/ez-grid.cjs.entry.js +1 -1
- package/dist/cjs/ez-icon.cjs.entry.js +1 -1
- package/dist/cjs/ez-list.cjs.entry.js +1 -1
- package/dist/cjs/ez-loading-bar.cjs.entry.js +1 -1
- package/dist/cjs/ez-modal-container.cjs.entry.js +1 -1
- package/dist/cjs/ez-modal.cjs.entry.js +1 -1
- package/dist/cjs/ez-number-input.cjs.entry.js +1 -1
- package/dist/cjs/ez-popover.cjs.entry.js +1 -1
- package/dist/cjs/ez-popup.cjs.entry.js +1 -1
- package/dist/cjs/ez-radio-button.cjs.entry.js +1 -1
- package/dist/cjs/ez-scroller.cjs.entry.js +1 -1
- package/dist/cjs/ez-search.cjs.entry.js +1 -1
- package/dist/cjs/ez-sidebar-button.cjs.entry.js +1 -1
- package/dist/cjs/ez-tabselector.cjs.entry.js +1 -1
- package/dist/cjs/ez-text-area.cjs.entry.js +1 -1
- package/dist/cjs/ez-text-edit.cjs.entry.js +1 -1
- package/dist/cjs/ez-text-input.cjs.entry.js +1 -1
- package/dist/cjs/ez-time-input.cjs.entry.js +1 -1
- package/dist/cjs/ez-toast.cjs.entry.js +1 -1
- package/dist/cjs/ez-tree.cjs.entry.js +1 -1
- package/dist/cjs/ez-upload.cjs.entry.js +1 -1
- package/dist/cjs/ez-view-stack.cjs.entry.js +1 -1
- package/dist/cjs/ezui.cjs.js +2 -2
- package/dist/cjs/{index-8646c40d.js → index-fb179d74.js} +3 -0
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/collection/collection-manifest.json +1 -0
- package/dist/collection/components/ez-dropdown/ez-dropdown.css +349 -0
- package/dist/collection/components/ez-dropdown/ez-dropdown.js +339 -0
- package/dist/collection/components/ez-dropdown/structure/DropdownItem.js +33 -0
- package/dist/collection/components/ez-dropdown/structure/SubmenuControl.js +241 -0
- package/dist/custom-elements/index.d.ts +6 -0
- package/dist/custom-elements/index.js +501 -2
- package/dist/esm/ez-actions-button.entry.js +1 -1
- package/dist/esm/ez-alert.entry.js +1 -1
- package/dist/esm/ez-application.entry.js +1 -1
- package/dist/esm/ez-breadcrumb.entry.js +1 -1
- package/dist/esm/ez-button.entry.js +1 -1
- package/dist/esm/ez-calendar.entry.js +1 -1
- package/dist/esm/ez-card-item.entry.js +1 -1
- package/dist/esm/ez-check.entry.js +1 -1
- package/dist/esm/ez-chip.entry.js +1 -1
- package/dist/esm/ez-collapsible-box.entry.js +1 -1
- package/dist/esm/ez-combo-box.entry.js +1 -1
- package/dist/esm/ez-date-input.entry.js +1 -1
- package/dist/esm/ez-date-time-input.entry.js +1 -1
- package/dist/esm/ez-dialog.entry.js +1 -1
- package/dist/esm/ez-dropdown.entry.js +499 -0
- package/dist/esm/ez-file-item.entry.js +1 -1
- package/dist/esm/ez-filter-input.entry.js +1 -1
- package/dist/esm/ez-form.entry.js +1 -1
- package/dist/esm/ez-grid.entry.js +1 -1
- package/dist/esm/ez-icon.entry.js +1 -1
- package/dist/esm/ez-list.entry.js +1 -1
- package/dist/esm/ez-loading-bar.entry.js +1 -1
- package/dist/esm/ez-modal-container.entry.js +1 -1
- package/dist/esm/ez-modal.entry.js +1 -1
- package/dist/esm/ez-number-input.entry.js +1 -1
- package/dist/esm/ez-popover.entry.js +1 -1
- package/dist/esm/ez-popup.entry.js +1 -1
- package/dist/esm/ez-radio-button.entry.js +1 -1
- package/dist/esm/ez-scroller.entry.js +1 -1
- package/dist/esm/ez-search.entry.js +1 -1
- package/dist/esm/ez-sidebar-button.entry.js +1 -1
- package/dist/esm/ez-tabselector.entry.js +1 -1
- package/dist/esm/ez-text-area.entry.js +1 -1
- package/dist/esm/ez-text-edit.entry.js +1 -1
- package/dist/esm/ez-text-input.entry.js +1 -1
- package/dist/esm/ez-time-input.entry.js +1 -1
- package/dist/esm/ez-toast.entry.js +1 -1
- package/dist/esm/ez-tree.entry.js +1 -1
- package/dist/esm/ez-upload.entry.js +1 -1
- package/dist/esm/ez-view-stack.entry.js +1 -1
- package/dist/esm/ezui.js +2 -2
- package/dist/esm/{index-7bc778b3.js → index-b77dcd0d.js} +3 -0
- package/dist/esm/loader.js +2 -2
- package/dist/ezui/ezui.esm.js +1 -1
- package/dist/ezui/{p-cfcc23e6.entry.js → p-07d07b75.entry.js} +1 -1
- package/dist/ezui/{p-7c227b86.entry.js → p-21782390.entry.js} +1 -1
- package/dist/ezui/{p-739d60d1.entry.js → p-22f06920.entry.js} +1 -1
- package/dist/ezui/{p-f6111077.entry.js → p-2686fa5b.entry.js} +1 -1
- package/dist/ezui/{p-b60fbad2.entry.js → p-297d4378.entry.js} +1 -1
- package/dist/ezui/p-42376b77.entry.js +1 -0
- package/dist/ezui/{p-f18f16e0.entry.js → p-42f85e36.entry.js} +1 -1
- package/dist/ezui/{p-171c3236.entry.js → p-46c3cd8e.entry.js} +1 -1
- package/dist/ezui/{p-32f9f83a.entry.js → p-4b93860c.entry.js} +1 -1
- package/dist/ezui/{p-7e496975.entry.js → p-52a18a6c.entry.js} +1 -1
- package/dist/ezui/{p-5dc3af60.entry.js → p-5d19cd0d.entry.js} +1 -1
- package/dist/ezui/{p-9def6fd0.entry.js → p-5e3079cb.entry.js} +1 -1
- package/dist/ezui/{p-ea877274.entry.js → p-620e71e2.entry.js} +1 -1
- package/dist/ezui/{p-04fab1e9.entry.js → p-6a53943d.entry.js} +1 -1
- package/dist/ezui/{p-1634c851.entry.js → p-6c43b275.entry.js} +1 -1
- package/dist/ezui/{p-3c7ea91b.js → p-6ccf5720.js} +1 -1
- package/dist/ezui/{p-123a2bd5.entry.js → p-6cdfe0db.entry.js} +1 -1
- package/dist/ezui/p-74a3f9d8.entry.js +1 -0
- package/dist/ezui/{p-a2e55b33.entry.js → p-7d8e693d.entry.js} +1 -1
- package/dist/ezui/{p-93bcc628.entry.js → p-7e9ab877.entry.js} +1 -1
- package/dist/ezui/{p-5c9ce8a7.entry.js → p-87dd65ba.entry.js} +1 -1
- package/dist/ezui/{p-f2627de5.entry.js → p-8c273b22.entry.js} +1 -1
- package/dist/ezui/{p-04a3b457.entry.js → p-9171043f.entry.js} +1 -1
- package/dist/ezui/{p-941e9792.entry.js → p-98c78c29.entry.js} +1 -1
- package/dist/ezui/{p-ddb1c350.entry.js → p-99e07a6b.entry.js} +1 -1
- package/dist/ezui/{p-6fd5e142.entry.js → p-a4405e80.entry.js} +1 -1
- package/dist/ezui/{p-f2c4e811.entry.js → p-a7380524.entry.js} +1 -1
- package/dist/ezui/{p-79e409c6.entry.js → p-a928ea8d.entry.js} +1 -1
- package/dist/ezui/{p-25e83e46.entry.js → p-b5efd273.entry.js} +1 -1
- package/dist/ezui/{p-9404f22b.entry.js → p-b7a8708e.entry.js} +1 -1
- package/dist/ezui/{p-46113d5a.entry.js → p-b9d91679.entry.js} +1 -1
- package/dist/ezui/{p-1a89d3ff.entry.js → p-ba7b2b8f.entry.js} +1 -1
- package/dist/ezui/{p-14a04845.entry.js → p-bdb5e325.entry.js} +1 -1
- package/dist/ezui/{p-50ae478a.entry.js → p-d04f3bb1.entry.js} +1 -1
- package/dist/ezui/{p-e613d9bf.entry.js → p-e3743d12.entry.js} +1 -1
- package/dist/ezui/{p-37335c51.entry.js → p-e628c8bd.entry.js} +1 -1
- package/dist/ezui/{p-ad5fe50b.entry.js → p-e881ec6d.entry.js} +1 -1
- package/dist/ezui/{p-3cfefc57.entry.js → p-e9b4b3bd.entry.js} +1 -1
- package/dist/ezui/{p-74c7f960.entry.js → p-f58201e8.entry.js} +1 -1
- package/dist/ezui/{p-a86d00b3.entry.js → p-f8f87959.entry.js} +1 -1
- package/dist/ezui/{p-9334a724.entry.js → p-fe1f0c92.entry.js} +1 -1
- package/dist/types/components/ez-dropdown/ez-dropdown.d.ts +58 -0
- package/dist/types/components/ez-dropdown/structure/DropdownItem.d.ts +28 -0
- package/dist/types/components/ez-dropdown/structure/SubmenuControl.d.ts +78 -0
- package/dist/types/components.d.ts +46 -0
- package/package.json +2 -2
- package/react/components.d.ts +1 -0
- package/react/components.js +1 -0
- package/react/components.js.map +1 -1
- package/dist/ezui/p-1cc11468.entry.js +0 -1
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { ElementIDUtils } from "@sankhyalabs/core";
|
|
2
|
+
import { h } from "@stencil/core";
|
|
3
|
+
export const DropdownItem = ({ item, hasIcon, hasChildren, isLockedLevels, onSubActionClick }) => {
|
|
4
|
+
return (h("div", { class: "ez-dropdown__item-wrapper", title: item.label },
|
|
5
|
+
getContentLeft(item, hasIcon),
|
|
6
|
+
h("span", { class: "ez-dropdown__item-label" }, item.label),
|
|
7
|
+
getContentRight(item, hasChildren, isLockedLevels, onSubActionClick)));
|
|
8
|
+
};
|
|
9
|
+
const getContentLeft = (item, hasIcon) => {
|
|
10
|
+
if (item == undefined || !hasIcon) {
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
if (item.iconName) {
|
|
14
|
+
return (h("ez-icon", Object.assign({ class: "ez-dropdown__icon-left", iconName: item.iconName, size: "medium" }, { [ElementIDUtils.DATA_ELEMENT_ID_ATTRIBUTE_NAME]: `${item.id}_ezDropdownItemIcon` })));
|
|
15
|
+
}
|
|
16
|
+
return (h("ez-icon", { class: "ez-dropdown__icon-left ez-dropdown__hidden", size: "medium" }));
|
|
17
|
+
};
|
|
18
|
+
const getContentRight = (item, hasChildren, isLockedLevels, onClick) => {
|
|
19
|
+
var _a, _b;
|
|
20
|
+
if (item == undefined) {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
if (!((_a = item.children) === null || _a === void 0 ? void 0 : _a.length) && item.subAction != undefined && Object.keys(item.subAction).length > 0) {
|
|
24
|
+
return (h("span", Object.assign({ onClick: () => onClick(item), title: item.subAction.label, class: `ez-dropdown__link ez-dropdown__link--${item.subAction.type || "primary"}` }, { [ElementIDUtils.DATA_ELEMENT_ID_ATTRIBUTE_NAME]: `${item.subAction.id}_ezDropdownItemSubAction` }), item.subAction.label));
|
|
25
|
+
}
|
|
26
|
+
if (isLockedLevels || !hasChildren) {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
if (((_b = item.children) === null || _b === void 0 ? void 0 : _b.length) > 0) {
|
|
30
|
+
return (h("ez-icon", Object.assign({ class: "ez-dropdown__icon-right", iconName: "chevron-right", size: "medium" }, { [ElementIDUtils.DATA_ELEMENT_ID_ATTRIBUTE_NAME]: `${item.id}_ezDropdownIconOpenChildren` })));
|
|
31
|
+
}
|
|
32
|
+
return (h("ez-icon", { class: "ez-dropdown__icon-right ez-dropdown__hidden", size: "medium" }));
|
|
33
|
+
};
|
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
export class SubmenuControl {
|
|
2
|
+
constructor() { }
|
|
3
|
+
//---------------------------------------------
|
|
4
|
+
// Public methods
|
|
5
|
+
//---------------------------------------------
|
|
6
|
+
/**
|
|
7
|
+
* Método responsável por fechar submenus abertos e abrir o submenu desejado.
|
|
8
|
+
* @param menu - Item de menu selecionado para abrir o submenu.
|
|
9
|
+
*/
|
|
10
|
+
show(menu) {
|
|
11
|
+
const submenu = menu === null || menu === void 0 ? void 0 : menu.querySelector(".ez-dropdown__submenu");
|
|
12
|
+
if (menu == undefined || submenu == undefined) {
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
submenu.classList.remove("ez-dropdown__submenu--hide");
|
|
16
|
+
this.setPosition(menu);
|
|
17
|
+
this.setScrollContainer(menu);
|
|
18
|
+
this.setMaxHeight(submenu);
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Método responsável por fechar um determinado submenu aberto.
|
|
22
|
+
* @param menu - Item de menu selecionado com o submenu aberto.
|
|
23
|
+
*/
|
|
24
|
+
hide(menu) {
|
|
25
|
+
if (menu == undefined) {
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
const submenuSelector = ".ez-dropdown__submenu:not(.ez-dropdown__submenu--hide)";
|
|
29
|
+
const submenuElement = menu.querySelector(submenuSelector);
|
|
30
|
+
this.reset(submenuElement);
|
|
31
|
+
this.hideChild(submenuElement);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Método responsável por fechar todos os submenus filhos de um determinado submenu.
|
|
35
|
+
* @param submenu - Elemento HTML do submenu pai.
|
|
36
|
+
*/
|
|
37
|
+
hideChild(submenu) {
|
|
38
|
+
if (submenu == undefined) {
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
submenu.querySelectorAll(".ez-dropdown__submenu")
|
|
42
|
+
.forEach((child) => {
|
|
43
|
+
this.reset(child);
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Método responsável por posicionar o submenu na tela.
|
|
48
|
+
* @param menu - Item da lista selecionado para abrir o submenu.
|
|
49
|
+
*/
|
|
50
|
+
setPosition(menu) {
|
|
51
|
+
const submenu = menu === null || menu === void 0 ? void 0 : menu.querySelector(".ez-dropdown__submenu");
|
|
52
|
+
const dropdown = menu === null || menu === void 0 ? void 0 : menu.closest(".ez-dropdown");
|
|
53
|
+
if (submenu == undefined || dropdown == undefined) {
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
submenu.style.top = this.getPositionTop(menu);
|
|
57
|
+
submenu.style.left = this.getPositionRight(dropdown);
|
|
58
|
+
const bounding = submenu === null || submenu === void 0 ? void 0 : submenu.getBoundingClientRect();
|
|
59
|
+
const docWidth = document.body.clientWidth;
|
|
60
|
+
if ((bounding === null || bounding === void 0 ? void 0 : bounding.right) > docWidth) {
|
|
61
|
+
this.updatePosition(dropdown, submenu);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Método responsável por controlar a altura máxima do dropdown.
|
|
66
|
+
* @param element - Elemento HTML pai do dropdown que será renderizado.
|
|
67
|
+
*/
|
|
68
|
+
setMaxHeight(element) {
|
|
69
|
+
var _a;
|
|
70
|
+
const parentElement = (element === null || element === void 0 ? void 0 : element.shadowRoot) || element;
|
|
71
|
+
const dropdown = parentElement === null || parentElement === void 0 ? void 0 : parentElement.querySelector(".ez-dropdown");
|
|
72
|
+
const docHeight = document.body.clientHeight;
|
|
73
|
+
let submenu;
|
|
74
|
+
let bounding;
|
|
75
|
+
if ((parentElement === null || parentElement === void 0 ? void 0 : parentElement["tagName"]) != undefined) {
|
|
76
|
+
submenu = parentElement;
|
|
77
|
+
bounding = submenu === null || submenu === void 0 ? void 0 : submenu.getBoundingClientRect();
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
bounding = dropdown === null || dropdown === void 0 ? void 0 : dropdown.getBoundingClientRect();
|
|
81
|
+
}
|
|
82
|
+
if (dropdown == undefined || bounding == undefined) {
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Menu aberto irá ultrapassar a altura da página?
|
|
87
|
+
*/
|
|
88
|
+
if ((bounding.y + bounding.height) > docHeight) {
|
|
89
|
+
/**
|
|
90
|
+
* Menu aberto é um submenu?
|
|
91
|
+
* Sim: realiza o calculo com base na altura do menu pai
|
|
92
|
+
* Não: recalcula a altura do menu para atualizar a barra de rolagem
|
|
93
|
+
*/
|
|
94
|
+
if (submenu != undefined) {
|
|
95
|
+
const dropdownParent = submenu.closest(".ez-dropdown");
|
|
96
|
+
const boundingParent = dropdownParent === null || dropdownParent === void 0 ? void 0 : dropdownParent.getBoundingClientRect();
|
|
97
|
+
const marginTop = parseFloat(((_a = getComputedStyle(submenu)) === null || _a === void 0 ? void 0 : _a.marginTop) || "0");
|
|
98
|
+
if (dropdownParent == undefined || boundingParent == undefined) {
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Submenu aberto ao ser reposicionado ficará acima da altura do menu pai?
|
|
103
|
+
* Sim: posiciona o submenu na altura do menu pai e recalcula a sua altura para atualizar a barra de rolagem
|
|
104
|
+
* Não: posiciona o submenu entre a altura do menu pai e o rodapé da página
|
|
105
|
+
*/
|
|
106
|
+
if ((boundingParent.y + bounding.height) > docHeight) {
|
|
107
|
+
submenu.style.top = (boundingParent.y - marginTop) + "px";
|
|
108
|
+
dropdown.style.maxHeight = (docHeight - boundingParent.y) + "px";
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
submenu.style.top = (docHeight - bounding.height - marginTop) + "px";
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
let maxHeight = docHeight - bounding.y;
|
|
116
|
+
if (maxHeight < 0) {
|
|
117
|
+
maxHeight = bounding.height - docHeight;
|
|
118
|
+
}
|
|
119
|
+
dropdown.style.maxHeight = maxHeight + "px";
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
this.setSpacerContainer(dropdown);
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Método responsável por atribuir a classe de espaçamento entre o conteúdo e o scroll.
|
|
126
|
+
* @param dropdown - Elemento HTML pai do container que receberá a classe.
|
|
127
|
+
*/
|
|
128
|
+
setSpacerContainer(dropdown) {
|
|
129
|
+
const container = dropdown === null || dropdown === void 0 ? void 0 : dropdown.querySelector(".ez-dropdown__container");
|
|
130
|
+
if (container == undefined) {
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
if (container.scrollHeight > container.clientHeight) {
|
|
134
|
+
container.classList.add("ez-dropdown__container--spacer");
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
container.classList.remove("ez-dropdown__container--spacer");
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Método responsável por resetar um determinado submenu aberto.
|
|
142
|
+
* @param submenu - Elemento HTML do submenu que será resetado.
|
|
143
|
+
*/
|
|
144
|
+
reset(submenu) {
|
|
145
|
+
if (submenu == undefined) {
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
submenu.classList.add("ez-dropdown__submenu--hide");
|
|
149
|
+
submenu.style.left = "";
|
|
150
|
+
submenu.style.top = "";
|
|
151
|
+
const dropdown = submenu.querySelector(".ez-dropdown");
|
|
152
|
+
this.resetDropdown(dropdown);
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Método responsável por resetar um determinado dropdown renderizado.
|
|
156
|
+
* @param dropdown - Elemento HTML do dropdown que será resetado.
|
|
157
|
+
*/
|
|
158
|
+
resetDropdown(dropdown) {
|
|
159
|
+
if (dropdown == undefined) {
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
dropdown.style.maxHeight = "";
|
|
163
|
+
this.setSpacerContainer(dropdown);
|
|
164
|
+
}
|
|
165
|
+
//---------------------------------------------
|
|
166
|
+
// Private methods
|
|
167
|
+
//---------------------------------------------
|
|
168
|
+
/**
|
|
169
|
+
* Método responsável por controlar o scroll do container do submenu aberto.
|
|
170
|
+
* @param menu - Item da lista selecionado para abrir o submenu.
|
|
171
|
+
*/
|
|
172
|
+
setScrollContainer(menu) {
|
|
173
|
+
const container = menu === null || menu === void 0 ? void 0 : menu.closest(".ez-dropdown__container");
|
|
174
|
+
if (container == undefined) {
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
container.onscroll = this.onScrollContainer.bind(this);
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Método responsável por fechar os submenus filhos ao movimentar o scroll.
|
|
181
|
+
* @param event - Evento de scroll disparado pelo Elemento HTML pai.
|
|
182
|
+
*/
|
|
183
|
+
onScrollContainer(event) {
|
|
184
|
+
const target = event === null || event === void 0 ? void 0 : event.target;
|
|
185
|
+
this.hideChild(target);
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Método responsável por retornar a posição superior (top) de um elemento HTML na tela.
|
|
189
|
+
* @param hostElement - Elemento HTML que será capturado o valor de sua posição superior (top) na tela.
|
|
190
|
+
* @returns Valor da posição superior (top) de um determinado elemento HTML.
|
|
191
|
+
*/
|
|
192
|
+
getPositionTop(hostElement) {
|
|
193
|
+
const boundingHost = hostElement === null || hostElement === void 0 ? void 0 : hostElement.getBoundingClientRect();
|
|
194
|
+
if (boundingHost == undefined) {
|
|
195
|
+
return;
|
|
196
|
+
}
|
|
197
|
+
return boundingHost.y + "px";
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Método responsável por retornar a posição direita (right) de um elemento HTML na tela.
|
|
201
|
+
* @param hostElement - Elemento HTML que será capturado o valor de sua posição direita (right) na tela.
|
|
202
|
+
* @returns Valor da posição direita (right) de um determinado elemento HTML.
|
|
203
|
+
*/
|
|
204
|
+
getPositionRight(hostElement) {
|
|
205
|
+
const boundingHost = hostElement === null || hostElement === void 0 ? void 0 : hostElement.getBoundingClientRect();
|
|
206
|
+
if (boundingHost == undefined) {
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
209
|
+
return (boundingHost.x + boundingHost.width) + "px";
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Método responsável por retornar a posição esquerda (left) de um elemento HTML desconsiderando a largura de outro elemento HTML.
|
|
213
|
+
* @param hostElement - Elemento HTML que será capturado o valor de sua posição esquerda (left) na tela.
|
|
214
|
+
* @param targetElement - Elemento HTML que será capturado o valor de sua largura (width).
|
|
215
|
+
* @returns Valor da posição esquerda (left) de um determinado elemento HTML desconsiderando a largura de outro elemento HTML.
|
|
216
|
+
*/
|
|
217
|
+
getPositionLeft(hostElement, targetElement) {
|
|
218
|
+
const boundingHost = hostElement === null || hostElement === void 0 ? void 0 : hostElement.getBoundingClientRect();
|
|
219
|
+
const boundingTarget = targetElement === null || targetElement === void 0 ? void 0 : targetElement.getBoundingClientRect();
|
|
220
|
+
if (boundingHost == undefined || boundingTarget == undefined) {
|
|
221
|
+
return;
|
|
222
|
+
}
|
|
223
|
+
return (boundingHost.x - boundingTarget.width) + "px";
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Método responsável por atualizar a posição de um elemento HTML que renderizou fora da tela.
|
|
227
|
+
* @param hostElement - Elemento HTML que será a referência de posição dentro da tela.
|
|
228
|
+
* @param targetElement - Elemento HTML que será reposicionado na tela.
|
|
229
|
+
*/
|
|
230
|
+
updatePosition(hostElement, targetElement) {
|
|
231
|
+
const boundingHost = hostElement === null || hostElement === void 0 ? void 0 : hostElement.getBoundingClientRect();
|
|
232
|
+
const boundingTarget = targetElement === null || targetElement === void 0 ? void 0 : targetElement.getBoundingClientRect();
|
|
233
|
+
if (boundingHost == undefined || boundingTarget == undefined) {
|
|
234
|
+
return;
|
|
235
|
+
}
|
|
236
|
+
if (boundingHost.x < boundingTarget.right) {
|
|
237
|
+
targetElement.style.left = this.getPositionLeft(hostElement, targetElement);
|
|
238
|
+
this.updatePosition(hostElement, targetElement);
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
}
|
|
@@ -86,6 +86,12 @@ export const EzDialog: {
|
|
|
86
86
|
new (): EzDialog;
|
|
87
87
|
};
|
|
88
88
|
|
|
89
|
+
interface EzDropdown extends Components.EzDropdown, HTMLElement {}
|
|
90
|
+
export const EzDropdown: {
|
|
91
|
+
prototype: EzDropdown;
|
|
92
|
+
new (): EzDropdown;
|
|
93
|
+
};
|
|
94
|
+
|
|
89
95
|
interface EzFileItem extends Components.EzFileItem, HTMLElement {}
|
|
90
96
|
export const EzFileItem: {
|
|
91
97
|
prototype: EzFileItem;
|