@sankhyalabs/ezui 0.0.0-bugfix-dev-KB-79210.0 → 0.0.0-bugfix-dev-KB-76625.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.
Files changed (55) hide show
  1. package/dist/cjs/ez-card-item_2.cjs.entry.js +1415 -7
  2. package/dist/cjs/ez-grid.cjs.entry.js +1 -4
  3. package/dist/cjs/ez-multi-selection-list.cjs.entry.js +186 -0
  4. package/dist/cjs/ez-popover-plus_3.cjs.entry.js +184 -0
  5. package/dist/cjs/ez-search.cjs.entry.js +28 -158
  6. package/dist/cjs/ezui.cjs.js +1 -1
  7. package/dist/cjs/index-a7b0c73d.js +8 -4
  8. package/dist/cjs/loader.cjs.js +1 -1
  9. package/dist/cjs/searchFormatters-b7e1ed1e.js +23 -0
  10. package/dist/collection/collection-manifest.json +3 -1
  11. package/dist/collection/components/ez-card-item/ez-card-item.css +1 -3
  12. package/dist/collection/components/ez-grid/controller/ag-grid/AgGridController.js +0 -3
  13. package/dist/collection/components/ez-grid/ez-grid.css +6 -0
  14. package/dist/collection/components/ez-popover-plus/ez-popover-plus.css +0 -64
  15. package/dist/collection/components/ez-popover-plus/ez-popover-plus.js +56 -130
  16. package/dist/collection/components/ez-popover-plus/subcomponent/ez-popover-core.css +67 -0
  17. package/dist/collection/components/ez-popover-plus/subcomponent/ez-popover-core.js +527 -0
  18. package/dist/collection/components/ez-search/ez-search.css +0 -219
  19. package/dist/collection/components/ez-search/ez-search.js +28 -167
  20. package/dist/collection/components/ez-search/subcomponent/search-list/search-list.css +227 -0
  21. package/dist/collection/components/ez-search/subcomponent/search-list/search-list.js +289 -0
  22. package/dist/collection/components/ez-search/utils/searchFormatters.js +18 -0
  23. package/dist/custom-elements/index.d.ts +12 -0
  24. package/dist/custom-elements/index.js +262 -185
  25. package/dist/esm/ez-card-item_2.entry.js +1415 -7
  26. package/dist/esm/ez-grid.entry.js +1 -4
  27. package/dist/esm/ez-multi-selection-list.entry.js +182 -0
  28. package/dist/esm/ez-popover-plus_3.entry.js +178 -0
  29. package/dist/esm/ez-search.entry.js +29 -159
  30. package/dist/esm/ezui.js +1 -1
  31. package/dist/esm/index-baa5e267.js +8 -4
  32. package/dist/esm/loader.js +1 -1
  33. package/dist/esm/searchFormatters-8229207e.js +20 -0
  34. package/dist/ezui/ezui.esm.js +1 -1
  35. package/dist/ezui/p-31da1b57.entry.js +1 -0
  36. package/dist/ezui/p-37201156.entry.js +1 -0
  37. package/dist/ezui/p-40a60148.js +1 -0
  38. package/dist/ezui/{p-e80d3452.entry.js → p-a5950a0d.entry.js} +1 -1
  39. package/dist/ezui/p-b7706b43.entry.js +1 -0
  40. package/dist/ezui/p-dc73e1fe.entry.js +1 -0
  41. package/dist/types/components/ez-popover-plus/ez-popover-plus.d.ts +8 -20
  42. package/dist/types/components/ez-popover-plus/subcomponent/ez-popover-core.d.ts +91 -0
  43. package/dist/types/components/ez-search/ez-search.d.ts +3 -13
  44. package/dist/types/components/ez-search/subcomponent/search-list/search-list.d.ts +23 -0
  45. package/dist/types/components/ez-search/utils/searchFormatters.d.ts +2 -0
  46. package/dist/types/components.d.ts +157 -3
  47. package/package.json +1 -1
  48. package/react/components.d.ts +2 -0
  49. package/react/components.js +2 -0
  50. package/react/components.js.map +1 -1
  51. package/dist/cjs/ez-multi-selection-list_2.cjs.entry.js +0 -1584
  52. package/dist/esm/ez-multi-selection-list_2.entry.js +0 -1579
  53. package/dist/ezui/p-58783dcf.entry.js +0 -1
  54. package/dist/ezui/p-65f471bc.entry.js +0 -1
  55. package/dist/ezui/p-b555cb24.entry.js +0 -1
@@ -65829,9 +65829,6 @@ class AgGridController {
65829
65829
  if (cfgColumn.customWidth != undefined) {
65830
65830
  return cfgColumn.customWidth;
65831
65831
  }
65832
- if (cfgColumn.width != undefined) {
65833
- return cfgColumn.width;
65834
- }
65835
65832
  const field = (_a = this._dataUnit) === null || _a === void 0 ? void 0 : _a.getField(cfgColumn.name);
65836
65833
  if ((field === null || field === void 0 ? void 0 : field.userInterface) === UserInterface.SEARCH) {
65837
65834
  return this.DEFAULT_MAX_SIZE;
@@ -66046,7 +66043,7 @@ class InMemoryFilterColumnDataSource {
66046
66043
  }
66047
66044
  }
66048
66045
 
66049
- const ezGridCss = ".sc-ez-grid-h{display:grid;grid-template-rows:auto 1fr auto;height:100%;width:100%;--ez-grid__header--background-color:var(--background--xlight, #FFF);--ez-grid__selection-counter--z-index:var(--visible, 1);--ez-grid__container--shadow:var(--shadow);--ez-grid--min-height:300px;--ez-grid__container--shadow--outline:var(--shadow--outline) var(--color--strokes);--ez-grid__header--shadow:var(--shadow--xsmall);--ez-grid__header--shadow--outline:var(--shadow--outline) var(--color--strokes);--ez-grid__header--outline:none;--ez-grid__header--border:none;min-height:var(--ez-grid--min-height)}.grid-header.sc-ez-grid{display:grid;justify-content:space-between;align-items:center;grid-row-start:1;grid-template-columns:1fr;background-color:var(--ez-grid__header--background-color, #FFF)}.grid-header.shadow-mode.sc-ez-grid{box-shadow:var(--ez-grid__header--shadow);border:var(--ez-grid__header--border);outline:var(--ez-grid__header--outline)}.grid-header.outline-mode.sc-ez-grid{box-shadow:var(--ez-grid__header--shadow--outline);border:var(--ez-grid__header--border);outline:var(--ez-grid__header--outline)}.header-overlay.sc-ez-grid{padding-top:15px;margin-top:-12px}.grid__container.sc-ez-grid{outline:none;box-shadow:var(--ez-grid__container--shadow);background-color:var(--ez-grid__header--background-color);border:var(--border--small) var(--color--strokes);border-radius:var(--border--radius-small)}.grid__container.outline-mode.sc-ez-grid{box-shadow:var(--ez-grid__container--shadow--outline);border:none;outline:none}.grid-header__popover.sc-ez-grid{position:relative;top:var(--space--sm, 16px)}.grid-header__container.sc-ez-grid{display:flex;align-items:center}.grid-header__position.sc-ez-grid{display:flex;align-items:center;justify-content:space-between}.grid__selection-counter.sc-ez-grid{position:fixed;white-space:nowrap;transform:translate(-50%, 0px);left:50%;opacity:0;bottom:-100%;transition:opacity 0.1s, bottom 0.5s}.grid__selection-counter--opened.sc-ez-grid{opacity:1;bottom:0px}.grid__btn-close.sc-ez-grid{display:flex;align-items:center;justify-content:center;padding:0;outline:none;width:20px;height:20px;border:none;background-color:unset;cursor:pointer}.grid__btn-clear.sc-ez-grid{--ez-button--link-color:var(--color--alert-warning-900, #8C6B00);--ez-button--link--hover-color:var(--color--alert-warning-900, #8C6B00)}[no-header].sc-ez-grid-h .grid-header.sc-ez-grid{height:0;padding:0}.grid-header__pagination.sc-ez-grid{justify-content:flex-end;flex-wrap:nowrap}.grid-header__pagination-label.sc-ez-grid{width:100%;white-space:nowrap}.overflowed.sc-ez-grid{display:none}.pagination-contracted.sc-ez-grid{width:100px}.pagination-expanded.sc-ez-grid{min-width:150px}.left__header-contracted.sc-ez-grid{width:calc(100% - 100px)}.left__header-expanded.sc-ez-grid{flex-grow:1}.cancel-pagination.sc-ez-grid{display:flex;flex-direction:row;align-items:center;justify-content:space-between;gap:4px;padding:8px;width:180px}.cancel-pagination-btn.sc-ez-grid{color:var(--color--error);font-size:var(--text--medium);font-weight:var(--text-weight--large);font-family:var(--font-pattern, Roboto);text-wrap:nowrap;cursor:pointer}.spin.sc-ez-grid{animation-name:spin;animation-duration:5000ms;animation-iteration-count:infinite;animation-timing-function:linear}@keyframes spin{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}";
66046
+ const ezGridCss = ".sc-ez-grid-h{display:grid;grid-template-rows:auto 1fr auto;height:100%;width:100%;--ez-grid__header--background-color:var(--background--xlight, #FFF);--ez-grid__selection-counter--z-index:var(--visible, 1);--ez-grid__container--shadow:var(--shadow);--ez-grid--min-height:300px;--ez-grid__container--shadow--outline:var(--shadow--outline) var(--color--strokes);--ez-grid__header--shadow:var(--shadow--xsmall);--ez-grid__header--shadow--outline:var(--shadow--outline) var(--color--strokes);--ez-grid__header--outline:none;--ez-grid__header--border:none;min-height:var(--ez-grid--min-height)}.grid-header.sc-ez-grid{display:grid;justify-content:space-between;align-items:center;grid-row-start:1;grid-template-columns:1fr;background-color:var(--ez-grid__header--background-color, #FFF)}.grid-header.shadow-mode.sc-ez-grid{box-shadow:var(--ez-grid__header--shadow);border:var(--ez-grid__header--border);outline:var(--ez-grid__header--outline)}.grid-header.outline-mode.sc-ez-grid{box-shadow:var(--ez-grid__header--shadow--outline);border:var(--ez-grid__header--border);outline:var(--ez-grid__header--outline)}.header-overlay.sc-ez-grid{padding-top:15px;margin-top:-12px}.grid__container.sc-ez-grid{outline:none;box-shadow:var(--ez-grid__container--shadow);background-color:var(--ez-grid__header--background-color);border:var(--border--small) var(--color--strokes);border-radius:var(--border--radius-small)}.grid__container.outline-mode.sc-ez-grid{box-shadow:var(--ez-grid__container--shadow--outline);border:none;outline:none}.grid-header__popover.sc-ez-grid{position:relative;top:var(--space--sm, 16px)}.grid-header__container.sc-ez-grid{display:flex;align-items:center}.grid-header__position.sc-ez-grid{display:flex;align-items:center;justify-content:space-between}.grid__selection-counter.sc-ez-grid{position:fixed;white-space:nowrap;transform:translate(-50%, 0px);left:50%;opacity:0;bottom:-100%;transition:opacity 0.1s, bottom 0.5s}.grid__selection-counter--opened.sc-ez-grid{opacity:1;bottom:0px}.grid__btn-close.sc-ez-grid{display:flex;align-items:center;justify-content:center;padding:0;outline:none;width:20px;height:20px;border:none;background-color:unset;cursor:pointer}.grid__btn-clear.sc-ez-grid{--ez-button--link-color:var(--color--alert-warning-900, #8C6B00);--ez-button--link--hover-color:var(--color--alert-warning-900, #8C6B00)}[no-header].sc-ez-grid-h .grid-header.sc-ez-grid{height:0;padding:0}.grid-header__pagination.sc-ez-grid{justify-content:flex-end;flex-wrap:nowrap}.grid-header__pagination-label.sc-ez-grid{width:100%;white-space:nowrap}.overflowed.sc-ez-grid{display:none}.pagination-contracted.sc-ez-grid{width:100px}.pagination-expanded.sc-ez-grid{min-width:150px}.left__header-contracted.sc-ez-grid{width:calc(100% - 100px)}.left__header-expanded.sc-ez-grid{flex-grow:1}.grid__footer.sc-ez-grid{background-color:var(--background--xlight, #FFF);border-radius:0 0 var(--border--radius-medium) var(--border--radius-medium);box-shadow:var(--shadow--small)}.cancel-pagination.sc-ez-grid{display:flex;flex-direction:row;align-items:center;justify-content:space-between;gap:4px;padding:8px;width:180px}.cancel-pagination-btn.sc-ez-grid{color:var(--color--error);font-size:var(--text--medium);font-weight:var(--text-weight--large);font-family:var(--font-pattern, Roboto);text-wrap:nowrap;cursor:pointer}.spin.sc-ez-grid{animation-name:spin;animation-duration:5000ms;animation-iteration-count:infinite;animation-timing-function:linear}@keyframes spin{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}";
66050
66047
 
66051
66048
  const windowInstace = window;
66052
66049
  const matches = (text, filter) => {
@@ -0,0 +1,182 @@
1
+ import { r as registerInstance, c as createEvent, h, F as Fragment, H as Host } from './index-baa5e267.js';
2
+ import { ArrayUtils } from '@sankhyalabs/core';
3
+
4
+ const ezMultiSelectionListCss = ".sc-ez-multi-selection-list-h{--ez-check--outter-gap:0px;--ez-multi-selection-default-height:322px;display:block;width:304px;height:var(--ez-multi-selection-default-height);min-height:fit-content;max-height:calc(100vh - 350px)}.multi-selection__input.sc-ez-multi-selection-list{margin-bottom:var(--space--2xs, 8px)}.multi-selection__content-options.sc-ez-multi-selection-list{position:relative;left:-4px}.multi-selection__select-all.sc-ez-multi-selection-list{height:var(--space--xl);margin:0 var(--space--small, 6px)}.multi-selection__list.sc-ez-multi-selection-list{max-height:calc(100vh - 435px);overflow-y:auto;overflow-x:clip}.multi-selection__list.sc-ez-multi-selection-list::-webkit-scrollbar{width:var(--space--small);min-width:var(--space--small);max-width:var(--space--small)}";
5
+
6
+ var ViewScenarios;
7
+ (function (ViewScenarios) {
8
+ ViewScenarios["DATASOURCE_RESULTS"] = "DATASOURCE_RESULTS";
9
+ ViewScenarios["DATASOURCE_RESULTS_EMPTY"] = "DATASOURCE_RESULTS_EMPTY";
10
+ ViewScenarios["DATASOURCE_INIT"] = "DATASOURCE_INIT";
11
+ ViewScenarios["OPTIONS_EMPTY"] = "OPTIONS_EMPTY";
12
+ ViewScenarios["OPTIONS"] = "OPTIONS";
13
+ })(ViewScenarios || (ViewScenarios = {}));
14
+ const EzMuiltiSelectionList = class {
15
+ constructor(hostRef) {
16
+ registerInstance(this, hostRef);
17
+ this.changeFilteredOptions = createEvent(this, "changeFilteredOptions", 7);
18
+ this.columnName = undefined;
19
+ this.dataSource = undefined;
20
+ this.useOptions = false;
21
+ this.options = undefined;
22
+ this.isTextSearch = false;
23
+ this.filteredOptions = undefined;
24
+ this.displayOptions = undefined;
25
+ this.viewScenario = undefined;
26
+ this.displayOptionToCheckAllItems = true;
27
+ }
28
+ async clearFilteredOptions() {
29
+ this.setInitialScenario();
30
+ this.filteredOptions = [];
31
+ if (this.searchInput) {
32
+ this.searchInput.value = '';
33
+ }
34
+ if (this.filterInput) {
35
+ this.filterInput.value = '';
36
+ }
37
+ }
38
+ onChangeUseOptions() {
39
+ this.setInitialScenario();
40
+ }
41
+ onChangeOptions() {
42
+ if (this.options) {
43
+ this.filteredOptions = this.ordenationByCheckStateAndAlphabetically(this.options);
44
+ }
45
+ this.checkInput && this.changeCheckAllValeuFromFilteredOptions();
46
+ this.setInitialScenario();
47
+ }
48
+ onChangeFilteredOptions(optionsListUpdated) {
49
+ this.displayOptions = this.filteredOptions;
50
+ this.displayOptionToCheckAllItems = this.filteredOptions.length > 1;
51
+ this.checkInput && this.changeCheckAllValeuFromFilteredOptions();
52
+ this.changeFilteredOptions.emit(optionsListUpdated);
53
+ }
54
+ componentDidRender() {
55
+ this.changeCheckAllValeuFromFilteredOptions();
56
+ }
57
+ ordenationByCheckStateAndAlphabetically(filteredOptions) {
58
+ const listWithSelectChecked = [];
59
+ const listWithNotSelectChecked = [];
60
+ let emptyElement;
61
+ filteredOptions.forEach(item => {
62
+ if (item.value == undefined || item.label === "") {
63
+ emptyElement = Object.assign(Object.assign({}, item), { label: "(Vazio)" });
64
+ }
65
+ else {
66
+ (item.check ? listWithSelectChecked.push(item) : listWithNotSelectChecked.push(item));
67
+ }
68
+ });
69
+ return (emptyElement == undefined ? [] : [emptyElement])
70
+ .concat(this.dataSource == undefined ? ArrayUtils.sortAlphabetically(listWithSelectChecked) : this.dataSource.sortItems(this.columnName, listWithSelectChecked))
71
+ .concat(this.dataSource == undefined ? ArrayUtils.sortAlphabetically(listWithNotSelectChecked) : this.dataSource.sortItems(this.columnName, listWithNotSelectChecked));
72
+ }
73
+ changeCheckAllValeuFromFilteredOptions() {
74
+ var _a, _b, _c, _d;
75
+ const selectAll = (_a = this.filteredOptions) === null || _a === void 0 ? void 0 : _a.every(item => item.check === true);
76
+ const notSelectAll = (_b = this.filteredOptions) === null || _b === void 0 ? void 0 : _b.every(item => item.check === false);
77
+ const selectIndeterminated = ((_c = this.filteredOptions) === null || _c === void 0 ? void 0 : _c.some(item => item.check === false)) && ((_d = this.filteredOptions) === null || _d === void 0 ? void 0 : _d.some(item => item.check === true)) && (!selectAll || !notSelectAll);
78
+ if (this.checkInput && selectAll) {
79
+ this.checkInput.indeterminate = false;
80
+ this.checkInput.value = true;
81
+ return;
82
+ }
83
+ if (this.checkInput && selectIndeterminated) {
84
+ this.checkInput.indeterminate = true;
85
+ this.checkInput.value = false;
86
+ return;
87
+ }
88
+ if (this.checkInput && notSelectAll) {
89
+ this.checkInput.indeterminate = false;
90
+ this.checkInput.value = false;
91
+ return;
92
+ }
93
+ }
94
+ setInitialScenario() {
95
+ if (this.useOptions) {
96
+ this.viewScenario = ViewScenarios.OPTIONS;
97
+ this.changeCheckAllValeuFromFilteredOptions();
98
+ return;
99
+ }
100
+ this.viewScenario = this.options && this.options.length > 0 ? ViewScenarios.DATASOURCE_RESULTS : ViewScenarios.DATASOURCE_INIT;
101
+ }
102
+ async searchWithDataSource(searchArgument, fieldName) {
103
+ const { argument, mode } = searchArgument;
104
+ if (mode !== 'PRELOAD' && fieldName) {
105
+ return this.dataSource.fetchData(argument, fieldName);
106
+ }
107
+ }
108
+ handleSearchOnDataSource(event) {
109
+ var _a;
110
+ const optionsToSort = (_a = this.filteredOptions) !== null && _a !== void 0 ? _a : [];
111
+ if (event.detail && !optionsToSort.some(item => item.value == event.detail.value)) {
112
+ this.filteredOptions = this.ordenationByCheckStateAndAlphabetically([...optionsToSort, event.detail]);
113
+ }
114
+ this.viewScenario = ViewScenarios.DATASOURCE_RESULTS;
115
+ this.searchInput.value = "";
116
+ }
117
+ handleRemoveItemFromOptions(item) {
118
+ this.filteredOptions = this.ordenationByCheckStateAndAlphabetically(this.filteredOptions.filter(i => i.value !== item.value));
119
+ if (this.filteredOptions.length === 0) {
120
+ this.viewScenario = ViewScenarios.DATASOURCE_INIT;
121
+ }
122
+ if (this.searchInput) {
123
+ this.searchInput.value = '';
124
+ }
125
+ }
126
+ handleSearchOnOption(event) {
127
+ if (event.detail) {
128
+ this.displayOptions = ArrayUtils.applyStringFilter(event.detail, this.filteredOptions, true);
129
+ this.viewScenario = this.displayOptions.length === 0 ? ViewScenarios.OPTIONS_EMPTY : ViewScenarios.OPTIONS;
130
+ return;
131
+ }
132
+ this.displayOptions = this.filteredOptions;
133
+ this.viewScenario = ViewScenarios.OPTIONS;
134
+ }
135
+ handleChangeSelectAllItems(event) {
136
+ this.filteredOptions = this.ordenationByCheckStateAndAlphabetically([
137
+ ...this.filteredOptions.map(item => {
138
+ item.check = !!event.detail;
139
+ return item;
140
+ }),
141
+ ]);
142
+ }
143
+ handleChangeSelectedItem(event) {
144
+ const { detail: itemCheckSelected } = event;
145
+ const itemSelected = this.filteredOptions.find(item => item.label === itemCheckSelected.label);
146
+ itemSelected.check = itemCheckSelected.check;
147
+ }
148
+ buildViewList(hasDelete) {
149
+ return (h(Fragment, null, this.displayOptionToCheckAllItems && (h("ez-check", { ref: (element) => (this.checkInput = element), label: "Selecionar todos", class: "multi-selection__select-all", onEzChange: this.handleChangeSelectAllItems.bind(this) })), h("ez-list", { class: "multi-selection__list", dataSource: this.displayOptions, listMode: "check", hoverFeedback: true, onEzCheckChange: this.handleChangeSelectedItem.bind(this), itemSlotBuilder: hasDelete ? this.buildDeleteIconSlot.bind(this) : null })));
150
+ }
151
+ buildDeleteIconSlot(item) {
152
+ return h("ez-icon", { style: { cursor: 'pointer' }, iconName: "delete", onClick: () => this.handleRemoveItemFromOptions(item) });
153
+ }
154
+ buildInitViewWithDataSource() {
155
+ return h("multi-selection-box-message", { message: "Selecione os valores a serem filtrados atrav\u00E9s do campo de busca." });
156
+ }
157
+ buildViewEmptyResults() {
158
+ return h("multi-selection-box-message", { message: "Nenhum resultado encontrado." });
159
+ }
160
+ scenarioToDisplay(view) {
161
+ const scenarios = {
162
+ [ViewScenarios.DATASOURCE_INIT]: () => this.buildInitViewWithDataSource(),
163
+ [ViewScenarios.DATASOURCE_RESULTS]: () => this.buildViewList(true),
164
+ [ViewScenarios.DATASOURCE_RESULTS_EMPTY]: () => this.buildViewEmptyResults(),
165
+ [ViewScenarios.OPTIONS_EMPTY]: () => this.buildViewEmptyResults(),
166
+ [ViewScenarios.OPTIONS]: () => this.buildViewList(false),
167
+ };
168
+ const scenarioBuilder = scenarios[view];
169
+ return scenarioBuilder ? scenarioBuilder() : undefined;
170
+ }
171
+ render() {
172
+ return (h(Host, null, h("div", { class: "multi-selection" }, this.useOptions ? (h("ez-filter-input", { ref: (element) => (this.filterInput = element), label: `Buscar..`, onEzChange: this.handleSearchOnOption.bind(this) })) : (h("ez-search", { class: "multi-selection__input", label: `Buscar...`, ref: (element) => (this.searchInput = element), suppressEmptyOption: true, showOptionValue: false, showSelectedValue: false, optionLoader: (search) => this.searchWithDataSource(search, this.columnName), onEzChange: this.handleSearchOnDataSource.bind(this), isTextSearch: this.isTextSearch })), h("ez-scroll", { class: "multi-selection__content-options" }, this.scenarioToDisplay(this.viewScenario)))));
173
+ }
174
+ static get watchers() { return {
175
+ "useOptions": ["onChangeUseOptions"],
176
+ "options": ["onChangeOptions"],
177
+ "filteredOptions": ["onChangeFilteredOptions"]
178
+ }; }
179
+ };
180
+ EzMuiltiSelectionList.style = ezMultiSelectionListCss;
181
+
182
+ export { EzMuiltiSelectionList as ez_multi_selection_list };
@@ -0,0 +1,178 @@
1
+ import { r as registerInstance, c as createEvent, h, H as Host, g as getElement } from './index-baa5e267.js';
2
+ import { StringUtils } from '@sankhyalabs/core';
3
+ import { a as replaceHighlight, r as replaceQuotes } from './searchFormatters-8229207e.js';
4
+
5
+ const ezPopoverPlusCss = ":host{display:none}";
6
+
7
+ const EzPopoverPlus = class {
8
+ constructor(hostRef) {
9
+ registerInstance(this, hostRef);
10
+ this.ezVisibilityChange = createEvent(this, "ezVisibilityChange", 7);
11
+ this.autoClose = true;
12
+ this.boxWidth = "fit-content";
13
+ this.opened = false;
14
+ this.overlayType = "light";
15
+ this.anchorElement = undefined;
16
+ this.options = { horizontalGap: 0, verticalGap: 0, fromRight: false };
17
+ this.useAnchorSize = false;
18
+ }
19
+ async observeOpened(newValue) {
20
+ if (newValue && !this._popOverCore) {
21
+ this.renderPopoverCore();
22
+ }
23
+ this._popOverCore.opened = newValue;
24
+ }
25
+ /**
26
+ * Atualiza a posição do popover.
27
+ */
28
+ async updatePosition(top, left) {
29
+ await this._popOverCore.updatePosition(top, left);
30
+ }
31
+ /**
32
+ * Exibe o ez-popover.
33
+ */
34
+ async show(top, left) {
35
+ if (!this._popOverCore) {
36
+ this.renderPopoverCore();
37
+ }
38
+ await this._popOverCore.show(top, left);
39
+ }
40
+ /**
41
+ * Ancora a exibição do popOver a um elemento HTML.
42
+ */
43
+ async showUnder(element, options) {
44
+ if (!this._popOverCore) {
45
+ this.renderPopoverCore();
46
+ }
47
+ await this._popOverCore.showUnder(element, options);
48
+ }
49
+ /**
50
+ * Oculta o ez-popover.
51
+ */
52
+ async hide() {
53
+ var _a;
54
+ await ((_a = this._popOverCore) === null || _a === void 0 ? void 0 : _a.hide());
55
+ }
56
+ /**
57
+ * Altera as opções.
58
+ */
59
+ async setOptions(options) {
60
+ await this._popOverCore.setOptions(options);
61
+ }
62
+ /**
63
+ * Altera o elemento de ancoragem.
64
+ */
65
+ async setAnchorElement(anchor) {
66
+ await this._popOverCore.setAnchorElement(anchor);
67
+ }
68
+ renderPopoverCore() {
69
+ this._popOverCore = document.createElement('ez-popover-core');
70
+ this._popOverCore.opened = this.opened;
71
+ this._popOverCore.anchorElement = this.anchorElement;
72
+ this._popOverCore.autoClose = this.autoClose;
73
+ this._popOverCore.boxWidth = this.boxWidth;
74
+ this._popOverCore.overlayType = this.overlayType;
75
+ this._popOverCore.options = this.options;
76
+ this._popOverCore.useAnchorSize = this.useAnchorSize;
77
+ this._popOverCore.addEventListener('ezVisibilityChange', ({ detail }) => {
78
+ this.ezVisibilityChange.emit(detail);
79
+ this.opened = detail;
80
+ });
81
+ this._popOverCore.appendChild(this._host.children.item(0));
82
+ document.body.appendChild(this._popOverCore);
83
+ }
84
+ render() {
85
+ return (h(Host, null, h("slot", null)));
86
+ }
87
+ get _host() { return getElement(this); }
88
+ static get watchers() { return {
89
+ "opened": ["observeOpened"]
90
+ }; }
91
+ };
92
+ EzPopoverPlus.style = ezPopoverPlusCss;
93
+
94
+ const multiSelectionBoxMessageCss = ".multi-selection__message{display:flex;flex-direction:row;align-items:center;justify-content:center;width:100%;min-height:320px;text-align:center}.multi-selection__text-message{margin-top:-30px;font-family:var(--font-pattern);font-size:var(--text--meduim);padding:var(--space-xs);color:var(--text--primary)}";
95
+
96
+ const MultiSelectionBoxMessage = class {
97
+ constructor(hostRef) {
98
+ registerInstance(this, hostRef);
99
+ this.message = undefined;
100
+ }
101
+ render() {
102
+ return (h("div", { class: "multi-selection__message" }, h("span", { class: "multi-selection__text-message" }, this.message)));
103
+ }
104
+ };
105
+ MultiSelectionBoxMessage.style = multiSelectionBoxMessageCss;
106
+
107
+ const searchListCss = ":host{--ez-search__list-title--primary:var(--title--primary, #2B3A54);--ez-search__list-text--primary:var(--text--primary, #626e82);--ez-search__list-height:calc(var(--ez-search--font-size) + var(--ez-search--space--medium) + 4px);--ez-search__list-min-width:64px;--ez-search__scrollbar--color-default:var(--scrollbar--default, #626e82);--ez-search__scrollbar--color-background:var(--scrollbar--background, #E5EAF0);--ez-search__scrollbar--color-hover:var(--scrollbar--hover, #2B3A54);--ez-search__scrollbar--color-clicked:var(--scrollbar--clicked, #a2abb9);--ez-search__scrollbar--border-radius:var(--border--radius-small, 6px);--ez-search__scrollbar--width:var(--space--small, 6px);--ez-search--border-radius-small:var(--border--radius-small, 6px);--ez-search--font-size:var(--text--medium, 14px);--ez-search--font-family:var(--font-pattern, Arial);--ez-search--font-weight--large:var(--text-weight--large, 500);--ez-search--font-weight--medium:var(--text-weight--medium, 400);--ez-search--background-medium:var(--background--medium, #f0f3f7);--ez-search--line-height:calc(var(--text--medium, 14px) + 4px)}.list-options{position:relative;z-index:var(--more-visible, 2);margin:var(--space--small) 0px;padding:0px;padding-inline-start:0px;box-sizing:border-box;width:100%;height:100%;max-height:350px;min-width:150px;display:flex;flex-direction:column;scroll-behavior:smooth;overflow-y:auto;overflow-x:hidden;scrollbar-width:thin;scrollbar-color:var(--ez-search__scrollbar--color-clicked) var(--ez-search__scrollbar--color-background)}.list-options::-webkit-scrollbar{background-color:var(--scrollbar--background);width:var(--space--small);max-width:var(--space--small);min-width:var(--space--small);height:var(--space--small);max-height:var(--space--small);min-height:var(--space--small)}.list-options::-webkit-scrollbar-track{background-color:var(--ez-search__scrollbar--color-background);border-radius:var(--ez-search__scrollbar--border-radius)}.list-options::-webkit-scrollbar-thumb{background-color:var(--ez-search__scrollbar--color-default);border-radius:var(--ez-search__scrollbar--border-radius)}.list-options::-webkit-scrollbar-thumb:vertical:hover,.list-options::-webkit-scrollbar-thumb:horizontal:hover{background-color:var(--ez-search__scrollbar--color-hover)}.list-options::-webkit-scrollbar-thumb:vertical:active,.list-options::-webkit-scrollbar-thumb:horizontal:active{background-color:var(--ez-search__scrollbar--color-clicked)}.message{text-align:center;display:flex;justify-content:center;align-items:center;list-style-type:none;margin:var(--space--medium) 0px;min-height:var(--ez-search__list-height)}.message__no-result{color:var(--ez-search__list-title--primary);font-family:var(--ez-search--font-family);font-size:var(--ez-search--font-size)}.message__loading{border-radius:50%;width:14px;height:14px;-webkit-animation:spin 1s linear infinite;animation:spin 1s linear infinite;border:3px solid var(--ez-search__list-title--primary);border-top:3px solid transparent}.item__value,.item__label{flex-basis:auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--ez-search__list-title--primary);font-family:var(--ez-search--font-family);font-size:var(--ez-search--font-size);line-height:var(--ez-search--line-height)}.item__label{font-weight:var(--ez-search--font-weight--medium)}.item__label--bold{font-weight:var(--ez-search--font-weight--large)}.item__value{text-align:center;color:var(--ez-search__list-text--primary);font-weight:var(--ez-search--font-weight--large)}.item__value--hidden{visibility:hidden;position:absolute;white-space:nowrap;z-index:-1;top:0;left:0}.item__label{text-align:left}.item__list>li:hover{background-color:var(--ez-search--background-medium)}.item{display:flex;align-items:center;width:100%;box-sizing:border-box;list-style-type:none;cursor:pointer;border-radius:var(--ez-search--border-radius-small);gap:var(--space--small, 6px)}.preselected{background-color:var(--background--medium)}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg)}}@keyframes spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}@supports not (scrollbar-width: thin){.item{padding-right:8px}}";
108
+
109
+ const SearchList = class {
110
+ constructor(hostRef) {
111
+ registerInstance(this, hostRef);
112
+ this.changeValue = createEvent(this, "changeValue", 7);
113
+ this.changePreSelection = createEvent(this, "changePreSelection", 7);
114
+ this._startHighlightTag = "<span class='card-item__highlight'>";
115
+ this._endHighlightTag = "</span>";
116
+ this.showLoading = undefined;
117
+ this.visibleOptions = [];
118
+ this.textEmptyList = undefined;
119
+ this.canShowListOptions = undefined;
120
+ this.value = undefined;
121
+ this.showOptionValue = true;
122
+ this.preSelection = undefined;
123
+ }
124
+ async nextOption() {
125
+ const newPreSelection = this.preSelection === undefined ? 0 : Math.min(this.preSelection + 1, this.visibleOptions.length - 1);
126
+ this.changePreSelection.emit(newPreSelection);
127
+ this.scrollToOption(this.visibleOptions[newPreSelection]);
128
+ }
129
+ async previousOption() {
130
+ const newPreSelection = this.preSelection === undefined ? 0 : Math.max(this.preSelection - 1, 0);
131
+ this.changePreSelection.emit(newPreSelection);
132
+ this.scrollToOption(this.visibleOptions[newPreSelection]);
133
+ }
134
+ selectOption(newOption) {
135
+ const newOptionsReplaced = Object.assign(Object.assign({}, newOption), { value: replaceHighlight(newOption === null || newOption === void 0 ? void 0 : newOption.value), label: replaceHighlight(newOption === null || newOption === void 0 ? void 0 : newOption.label) });
136
+ const newOptionsFormatted = Object.assign(Object.assign({}, newOptionsReplaced), { value: replaceQuotes(newOptionsReplaced === null || newOptionsReplaced === void 0 ? void 0 : newOptionsReplaced.value), label: replaceQuotes(newOptionsReplaced === null || newOptionsReplaced === void 0 ? void 0 : newOptionsReplaced.label) });
137
+ this.changeValue.emit(newOptionsFormatted);
138
+ }
139
+ createOption(detail) {
140
+ let { key, title } = detail;
141
+ const startHighlight = new RegExp(this._startHighlightTag, 'g');
142
+ const endHighlight = new RegExp(this._endHighlightTag, 'g');
143
+ title = StringUtils.decodeHtmlEntities(title);
144
+ const option = {
145
+ value: key === null || key === void 0 ? void 0 : key.replace(startHighlight, '').replace(endHighlight, ''),
146
+ label: title === null || title === void 0 ? void 0 : title.replace(startHighlight, '').replace(endHighlight, '')
147
+ };
148
+ this.selectOption(option);
149
+ }
150
+ scrollToOption(opt) {
151
+ window.requestAnimationFrame(() => {
152
+ const liElem = (opt === null || opt === void 0 ? void 0 : opt.value)
153
+ ? this._optionsList.querySelector(`div#item_${opt.value.replace(/([ #;&,.+*~':"!^$[\]()=<>|/\\])/g, '\\$1')}`)
154
+ : undefined;
155
+ if (liElem) {
156
+ liElem.scrollIntoView({ behavior: "smooth", block: "nearest" });
157
+ }
158
+ });
159
+ }
160
+ buildItem(opt, index) {
161
+ opt.label = opt.label || opt.value;
162
+ const card = {
163
+ key: opt.value,
164
+ title: opt.label,
165
+ details: opt.details
166
+ };
167
+ return h("div", { style: { "height": "100%" }, class: index === this.preSelection ? "item preselected" : "item", id: `item_${opt.value}`, onMouseDown: () => this.createOption(card), onMouseOver: () => this.changePreSelection.emit(index) }, h("ez-card-item", { item: card, compacted: true, enableKey: this.showOptionValue }));
168
+ }
169
+ render() {
170
+ return (h(Host, null, h("ul", { class: "list-options", ref: elem => this._optionsList = elem }, !this.showLoading
171
+ && this.visibleOptions.length === 0
172
+ && h("div", { class: "message" }, h("span", { class: "message__no-result" }, this.textEmptyList)), this.showLoading
173
+ && h("div", { class: "message" }, h("div", { class: "message__loading" })), this.canShowListOptions && this.visibleOptions.map((opt, index) => this.buildItem(opt, index)))));
174
+ }
175
+ };
176
+ SearchList.style = searchListCss;
177
+
178
+ export { EzPopoverPlus as ez_popover_plus, MultiSelectionBoxMessage as multi_selection_box_message, SearchList as search_list };