@sankhyalabs/sankhyablocks 0.0.0-bugfix-dev-KB-76362.0 → 0.0.0-bugfix-dev-KB-74224.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 (185) hide show
  1. package/dist/cjs/{ConfigStorage-f079f5fd.js → ConfigStorage-ecc0ed20.js} +2 -2
  2. package/dist/cjs/{ContinuousInsertUtils-64e47516.js → ContinuousInsertUtils-29b65619.js} +20 -29
  3. package/dist/cjs/{DataFetcher-e059eb72.js → DataFetcher-cadeef8e.js} +5 -7
  4. package/dist/cjs/{SnkFormConfigManager-63369164.js → SnkFormConfigManager-f1c92f79.js} +2 -2
  5. package/dist/cjs/{SnkMessageBuilder-7691a2c1.js → SnkMessageBuilder-bae64d0d.js} +0 -10
  6. package/dist/cjs/{auth-fetcher-4f853233.js → auth-fetcher-d68841bc.js} +1 -1
  7. package/dist/cjs/{dataunit-fetcher-228016f4.js → dataunit-fetcher-f89461c1.js} +3 -3
  8. package/dist/cjs/{form-config-fetcher-39397ac5.js → form-config-fetcher-ed497282.js} +1 -1
  9. package/dist/cjs/index-f9e81701.js +28 -16
  10. package/dist/cjs/loader.cjs.js +1 -1
  11. package/dist/cjs/{pesquisa-fetcher-a9bfeb22.js → pesquisa-fetcher-ca89181c.js} +2 -7
  12. package/dist/cjs/sankhyablocks.cjs.js +1 -1
  13. package/dist/cjs/snk-actions-button_4.cjs.entry.js +30 -27
  14. package/dist/cjs/snk-application.cjs.entry.js +60 -102
  15. package/dist/cjs/snk-attach.cjs.entry.js +5 -5
  16. package/dist/cjs/snk-config-options.cjs.entry.js +239 -0
  17. package/dist/cjs/snk-crud.cjs.entry.js +5 -5
  18. package/dist/cjs/snk-data-exporter.cjs.entry.js +6 -6
  19. package/dist/cjs/{snk-data-unit-7dbdad0e.js → snk-data-unit-668dc5e8.js} +2 -2
  20. package/dist/cjs/snk-data-unit.cjs.entry.js +4 -4
  21. package/dist/cjs/snk-detail-view.cjs.entry.js +8 -8
  22. package/dist/cjs/{snk-filter-bar_4.cjs.entry.js → snk-filter-bar.cjs.entry.js} +3 -688
  23. package/dist/cjs/snk-filter-item.cjs.entry.js +312 -0
  24. package/dist/cjs/snk-filter-list.cjs.entry.js +152 -0
  25. package/dist/cjs/snk-filter-modal-item.cjs.entry.js +3 -3
  26. package/dist/cjs/snk-filter-modal.cjs.entry.js +249 -0
  27. package/dist/cjs/{snk-config-options_3.cjs.entry.js → snk-form-config.cjs.entry.js} +3 -365
  28. package/dist/cjs/snk-form.cjs.entry.js +144 -0
  29. package/dist/cjs/snk-grid.cjs.entry.js +6 -6
  30. package/dist/cjs/{snk-guides-viewer-eee43c8b.js → snk-guides-viewer-4236cb9d.js} +5 -8
  31. package/dist/cjs/snk-guides-viewer.cjs.entry.js +7 -7
  32. package/dist/cjs/snk-personalized-filter.cjs.entry.js +3 -3
  33. package/dist/cjs/snk-simple-crud.cjs.entry.js +14 -14
  34. package/dist/collection/collection-manifest.json +31 -14
  35. package/dist/collection/components/snk-actions-button/snk-actions-button.js +27 -26
  36. package/dist/collection/components/snk-application/snk-application.js +53 -3
  37. package/dist/collection/components/snk-crud/subcomponents/snk-guides-viewer.js +0 -3
  38. package/dist/collection/components/snk-simple-crud/snk-simple-crud.js +7 -7
  39. package/dist/collection/lib/http/data-fetcher/DataFetcher.js +6 -8
  40. package/dist/collection/lib/http/data-fetcher/fetchers/data-unit/DataUnitDataLoader.js +2 -2
  41. package/dist/collection/lib/http/data-fetcher/fetchers/pesquisa-fetcher.js +1 -6
  42. package/dist/collection/lib/message/SnkMessageBuilder.js +0 -2
  43. package/dist/collection/lib/utils/CrudUtils.js +16 -25
  44. package/dist/components/ContinuousInsertUtils.js +16 -25
  45. package/dist/components/DataFetcher.js +5 -7
  46. package/dist/components/SnkMessageBuilder.js +0 -10
  47. package/dist/components/dataunit-fetcher.js +2 -2
  48. package/dist/components/index.d.ts +0 -3
  49. package/dist/components/index.js +0 -3
  50. package/dist/components/pesquisa-fetcher.js +1 -6
  51. package/dist/components/snk-actions-button2.js +27 -26
  52. package/dist/components/snk-application2.js +53 -95
  53. package/dist/components/snk-detail-view2.js +0 -3
  54. package/dist/components/snk-simple-crud2.js +7 -7
  55. package/dist/esm/{ConfigStorage-6514d66e.js → ConfigStorage-7b36d041.js} +2 -2
  56. package/dist/esm/{ContinuousInsertUtils-b62906f9.js → ContinuousInsertUtils-30caa626.js} +20 -29
  57. package/dist/esm/{DataFetcher-5034df59.js → DataFetcher-a9c598f2.js} +5 -7
  58. package/dist/esm/{SnkFormConfigManager-b409c745.js → SnkFormConfigManager-139f09fa.js} +3 -3
  59. package/dist/esm/{SnkMessageBuilder-7ace6803.js → SnkMessageBuilder-6fff4a4c.js} +0 -10
  60. package/dist/esm/{auth-fetcher-ca5d3a49.js → auth-fetcher-749d880f.js} +1 -1
  61. package/dist/esm/{constants-7302ee87.js → constants-8457af36.js} +1 -1
  62. package/dist/esm/{dataunit-fetcher-56cb648b.js → dataunit-fetcher-c24c76c6.js} +3 -3
  63. package/dist/esm/{form-config-fetcher-a7d3e277.js → form-config-fetcher-adbe5d34.js} +1 -1
  64. package/dist/esm/index-a7d3d3f1.js +28 -16
  65. package/dist/esm/loader.js +1 -1
  66. package/dist/esm/{pesquisa-fetcher-6bc2e41a.js → pesquisa-fetcher-8edaa8cd.js} +2 -7
  67. package/dist/esm/sankhyablocks.js +1 -1
  68. package/dist/esm/snk-actions-button_4.entry.js +32 -29
  69. package/dist/esm/snk-application.entry.js +60 -102
  70. package/dist/esm/snk-attach.entry.js +6 -6
  71. package/dist/esm/snk-config-options.entry.js +235 -0
  72. package/dist/esm/snk-configurator.entry.js +1 -1
  73. package/dist/esm/snk-crud.entry.js +6 -6
  74. package/dist/esm/snk-data-exporter.entry.js +7 -7
  75. package/dist/esm/{snk-data-unit-7a579dbd.js → snk-data-unit-0fdfb6c2.js} +2 -2
  76. package/dist/esm/snk-data-unit.entry.js +4 -4
  77. package/dist/esm/snk-detail-view.entry.js +9 -9
  78. package/dist/esm/snk-field-config.entry.js +1 -1
  79. package/dist/esm/{snk-filter-bar_4.entry.js → snk-filter-bar.entry.js} +5 -687
  80. package/dist/esm/snk-filter-item.entry.js +308 -0
  81. package/dist/esm/snk-filter-list.entry.js +148 -0
  82. package/dist/esm/snk-filter-modal-item.entry.js +3 -3
  83. package/dist/esm/snk-filter-modal.entry.js +245 -0
  84. package/dist/esm/{snk-config-options_3.entry.js → snk-form-config.entry.js} +6 -366
  85. package/dist/esm/snk-form.entry.js +140 -0
  86. package/dist/esm/snk-grid.entry.js +6 -6
  87. package/dist/esm/{snk-guides-viewer-e8ca764a.js → snk-guides-viewer-8934c537.js} +6 -9
  88. package/dist/esm/snk-guides-viewer.entry.js +8 -8
  89. package/dist/esm/snk-personalized-filter.entry.js +3 -3
  90. package/dist/esm/snk-simple-crud.entry.js +15 -15
  91. package/dist/esm/snk-tab-config.entry.js +1 -1
  92. package/dist/sankhyablocks/p-01086ff7.entry.js +1 -0
  93. package/dist/sankhyablocks/{p-126c58ea.js → p-06421fdb.js} +1 -1
  94. package/dist/sankhyablocks/{p-e3a285a2.js → p-16869f77.js} +1 -1
  95. package/dist/sankhyablocks/p-17425c72.js +1 -0
  96. package/dist/sankhyablocks/{p-341465ce.js → p-1bf06cd3.js} +2 -2
  97. package/dist/sankhyablocks/{p-aa003d4e.entry.js → p-212213d9.entry.js} +1 -1
  98. package/dist/sankhyablocks/p-2923c1b5.js +1 -0
  99. package/dist/sankhyablocks/p-3b60db06.entry.js +1 -0
  100. package/dist/sankhyablocks/{p-00f9fe5c.entry.js → p-430e4d3c.entry.js} +1 -1
  101. package/dist/sankhyablocks/{p-9ffd9fc7.js → p-4d9549cf.js} +1 -1
  102. package/dist/sankhyablocks/p-4f35399c.entry.js +1 -0
  103. package/dist/sankhyablocks/{p-c75fae8e.js → p-5dd8cf4f.js} +1 -1
  104. package/dist/sankhyablocks/p-60b29483.entry.js +1 -0
  105. package/dist/sankhyablocks/p-70a4af56.entry.js +1 -0
  106. package/dist/sankhyablocks/{p-41793e17.entry.js → p-7663f597.entry.js} +1 -1
  107. package/dist/sankhyablocks/{p-47d24ac8.js → p-7ac7932c.js} +2 -2
  108. package/dist/sankhyablocks/{p-2d3f9482.entry.js → p-8eb67fa4.entry.js} +1 -1
  109. package/dist/sankhyablocks/{p-f0aaad2b.entry.js → p-92eadb1c.entry.js} +1 -1
  110. package/dist/sankhyablocks/{p-8b4fc28f.entry.js → p-95df461f.entry.js} +1 -1
  111. package/dist/sankhyablocks/p-a42e7a1e.entry.js +11 -0
  112. package/dist/sankhyablocks/p-a724e798.entry.js +1 -0
  113. package/dist/sankhyablocks/{p-1dbd5c18.entry.js → p-a75d242d.entry.js} +1 -1
  114. package/dist/sankhyablocks/{p-0e206e62.js → p-afbb070d.js} +1 -1
  115. package/dist/sankhyablocks/{p-95ce311a.js → p-b0ef4383.js} +1 -1
  116. package/dist/sankhyablocks/p-b9679243.entry.js +1 -0
  117. package/dist/sankhyablocks/{p-f4e221b2.entry.js → p-b9c67e45.entry.js} +1 -1
  118. package/dist/sankhyablocks/{p-b389ed49.entry.js → p-be5d8fcb.entry.js} +1 -1
  119. package/dist/sankhyablocks/p-ca5ec380.js +1 -0
  120. package/dist/sankhyablocks/p-d3f53df2.entry.js +1 -0
  121. package/dist/sankhyablocks/{p-a2c790ac.entry.js → p-dcead955.entry.js} +1 -1
  122. package/dist/sankhyablocks/p-e8763234.entry.js +1 -0
  123. package/dist/sankhyablocks/{p-00278e07.js → p-f3434fc4.js} +1 -1
  124. package/dist/sankhyablocks/{p-fca0e5cc.entry.js → p-fb34e0cf.entry.js} +1 -1
  125. package/dist/sankhyablocks/p-feba9d4b.entry.js +1 -0
  126. package/dist/sankhyablocks/sankhyablocks.esm.js +1 -1
  127. package/dist/types/components/snk-actions-button/interfaces/index.d.ts +3 -0
  128. package/dist/types/components/snk-actions-button/snk-actions-button.d.ts +3 -2
  129. package/dist/types/components/snk-application/snk-application.d.ts +12 -3
  130. package/dist/types/components/snk-simple-crud/snk-simple-crud.d.ts +1 -0
  131. package/dist/types/components.d.ts +1 -393
  132. package/dist/types/lib/http/data-fetcher/DataFetcher.d.ts +0 -1
  133. package/dist/types/lib/utils/CrudUtils.d.ts +0 -1
  134. package/package.json +2 -3
  135. package/react/components.d.ts +0 -3
  136. package/react/components.js +0 -3
  137. package/react/components.js.map +1 -1
  138. package/dist/cjs/input-distinct-search_2.cjs.entry.js +0 -471
  139. package/dist/cjs/snk-distinct-search.cjs.entry.js +0 -123
  140. package/dist/collection/components/snk-application/request-listener/DebouncedRequestListener.js +0 -28
  141. package/dist/collection/components/snk-application/request-listener/RequestListenerFactory.js +0 -16
  142. package/dist/collection/components/snk-application/request-listener/RequestListenerLoadingBar.js +0 -52
  143. package/dist/collection/components/snk-distinct-search/snk-distinct-search.css +0 -4
  144. package/dist/collection/components/snk-distinct-search/snk-distinct-search.js +0 -372
  145. package/dist/collection/components/snk-distinct-search/subcomponents/input-distinct-search/input-distinct-search.css +0 -110
  146. package/dist/collection/components/snk-distinct-search/subcomponents/input-distinct-search/input-distinct-search.js +0 -544
  147. package/dist/collection/components/snk-distinct-search/subcomponents/search-modal/search-modal.css +0 -28
  148. package/dist/collection/components/snk-distinct-search/subcomponents/search-modal/search-modal.js +0 -593
  149. package/dist/collection/components/snk-distinct-search/utils/filter-distinct-search.js +0 -15
  150. package/dist/collection/lib/http/data-fetcher/fetchers/distinct-search-fetcher.js +0 -25
  151. package/dist/collection/lib/message/resources/snk-distinct-search.msg.js +0 -9
  152. package/dist/collection/sw.js +0 -46
  153. package/dist/components/filter-distinct-search.js +0 -17
  154. package/dist/components/input-distinct-search.d.ts +0 -11
  155. package/dist/components/input-distinct-search.js +0 -6
  156. package/dist/components/input-distinct-search2.js +0 -264
  157. package/dist/components/search-modal.d.ts +0 -11
  158. package/dist/components/search-modal.js +0 -6
  159. package/dist/components/search-modal2.js +0 -264
  160. package/dist/components/snk-distinct-search.d.ts +0 -11
  161. package/dist/components/snk-distinct-search.js +0 -163
  162. package/dist/esm/input-distinct-search_2.entry.js +0 -466
  163. package/dist/esm/snk-distinct-search.entry.js +0 -119
  164. package/dist/sankhyablocks/p-0e250436.entry.js +0 -1
  165. package/dist/sankhyablocks/p-154aa2a6.entry.js +0 -11
  166. package/dist/sankhyablocks/p-18cb1acb.entry.js +0 -1
  167. package/dist/sankhyablocks/p-30ebcbe0.entry.js +0 -1
  168. package/dist/sankhyablocks/p-3755b46f.entry.js +0 -1
  169. package/dist/sankhyablocks/p-3858a2e4.entry.js +0 -1
  170. package/dist/sankhyablocks/p-42130213.entry.js +0 -1
  171. package/dist/sankhyablocks/p-563b7c28.entry.js +0 -1
  172. package/dist/sankhyablocks/p-aaf94476.js +0 -1
  173. package/dist/sankhyablocks/p-d8665750.js +0 -1
  174. package/dist/sankhyablocks/p-e4391e16.js +0 -1
  175. package/dist/types/components/snk-application/request-listener/DebouncedRequestListener.d.ts +0 -11
  176. package/dist/types/components/snk-application/request-listener/RequestListenerFactory.d.ts +0 -12
  177. package/dist/types/components/snk-application/request-listener/RequestListenerLoadingBar.d.ts +0 -13
  178. package/dist/types/components/snk-distinct-search/snk-distinct-search.d.ts +0 -83
  179. package/dist/types/components/snk-distinct-search/subcomponents/input-distinct-search/input-distinct-search.d.ts +0 -105
  180. package/dist/types/components/snk-distinct-search/subcomponents/search-modal/search-modal.d.ts +0 -127
  181. package/dist/types/components/snk-distinct-search/types/index.d.ts +0 -12
  182. package/dist/types/components/snk-distinct-search/utils/filter-distinct-search.d.ts +0 -4
  183. package/dist/types/lib/http/data-fetcher/fetchers/distinct-search-fetcher.d.ts +0 -6
  184. package/dist/types/lib/message/resources/snk-distinct-search.msg.d.ts +0 -2
  185. /package/dist/collection/components/{snk-distinct-search/types → snk-actions-button/interfaces}/index.js +0 -0
@@ -1,163 +0,0 @@
1
- import { proxyCustomElement, HTMLElement, createEvent, h, Host } from '@stencil/core/internal/client';
2
- import { D as DataFetcher } from './DataFetcher.js';
3
- import { ApplicationContext } from '@sankhyalabs/core';
4
- import { d as defineCustomElement$3 } from './input-distinct-search2.js';
5
- import { d as defineCustomElement$2 } from './search-modal2.js';
6
-
7
- class DistinctSearchFetcher {
8
- constructor() {
9
- this.SERVICE = 'mge@Pesquisa.getSelectDistinct';
10
- }
11
- buildRequestBody(coluna, instancia) {
12
- return {
13
- selectDistinct: {
14
- instancia,
15
- coluna,
16
- }
17
- };
18
- }
19
- parseResponseBody(response) {
20
- var _a, _b, _c;
21
- const ocorrencias = (_c = (_b = (_a = response === null || response === void 0 ? void 0 : response.ocorrencias) === null || _a === void 0 ? void 0 : _a.ocorrencia) === null || _b === void 0 ? void 0 : _b.map(({ $ }) => $)) !== null && _c !== void 0 ? _c : [];
22
- return ocorrencias;
23
- }
24
- async fetchItens(coluna, instancia) {
25
- const requestBody = this.buildRequestBody(coluna, instancia);
26
- const response = await DataFetcher.get().callServiceBroker(this.SERVICE, requestBody);
27
- const parsedResponse = this.parseResponseBody(response);
28
- return parsedResponse;
29
- }
30
- }
31
-
32
- const snkDistinctSearchCss = ".sc-snk-distinct-search-h{display:block;width:100%}";
33
-
34
- const SnkDistinctSearch$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
35
- constructor() {
36
- super();
37
- this.__registerHost();
38
- this.changeValue = createEvent(this, "changeValue", 7);
39
- this.onIconClick = () => {
40
- this._searchModalElement.value = this.value || "";
41
- this._searchModalElement.openModal();
42
- };
43
- this.distinctItems = undefined;
44
- this.value = "";
45
- this.label = "";
46
- this.configSearch = undefined;
47
- this.maxItems = 100;
48
- this.debounceTime = 300;
49
- this.canShowError = false;
50
- this.mode = 'regular';
51
- this.restrict = undefined;
52
- this.errorMessage = undefined;
53
- }
54
- /**
55
- * Método para limpa o campo de entrada de pesquisa
56
- */
57
- clearInput() {
58
- this._inputDistinctSearch.clearInput();
59
- }
60
- /**
61
- * Retorna se o conteúdo é inválido.
62
- */
63
- isInvalid() {
64
- return this._inputDistinctSearch.isInvalid();
65
- }
66
- /**
67
- * Remove o foco do campo
68
- */
69
- setBlur() {
70
- this._inputDistinctSearch.setBlur();
71
- }
72
- /**
73
- * Aplica o foco do campo
74
- */
75
- setFocus() {
76
- this._inputDistinctSearch.setFocus();
77
- }
78
- /**
79
- * Método para fechar o modal
80
- */
81
- closeModal() {
82
- this._searchModalElement.closeModal();
83
- }
84
- /**
85
- * Método para abrir o modal
86
- */
87
- openModal() {
88
- this._searchModalElement.openModal();
89
- }
90
- async componentWillLoad() {
91
- await this.fetchDistinctItems();
92
- this._application = ApplicationContext.getContextValue("__SNK__APPLICATION__");
93
- }
94
- async fetchDistinctItems() {
95
- const distinctFetcher = new DistinctSearchFetcher();
96
- const response = await distinctFetcher.fetchItens(this.configSearch.column, this.configSearch.instance);
97
- this.distinctItems = [...response];
98
- }
99
- onChange(event) {
100
- event.stopPropagation();
101
- this.value = event.detail.value;
102
- this._inputDistinctSearch.selectValue(event.detail.value, event.detail.isNewItem);
103
- this.changeValue.emit(event.detail);
104
- }
105
- onPopupClose() {
106
- this._inputDistinctSearch.setFocus();
107
- }
108
- getMessage(key) {
109
- return this._application.messagesBuilder.getMessage(key, null);
110
- }
111
- renderEmptyMessage() {
112
- return (h("span", { innerHTML: this.getMessage("snkDistinctSearch.emptyResult") }));
113
- }
114
- render() {
115
- return (h(Host, null, h("input-distinct-search", { ref: (ref) => this._inputDistinctSearch = ref, application: this._application, label: this.label, distinctItems: this.distinctItems, onChangeValue: this.onChange.bind(this), debounceTime: this.debounceTime, value: this.value, onIconClick: this.onIconClick, maxItems: this.maxItems, canShowError: this.canShowError, mode: this.mode, restrict: this.restrict, errorMessage: this.errorMessage }), h("search-modal", { ref: (ref) => this._searchModalElement = ref, application: this._application, listItens: this.distinctItems, onChangeValue: this.onChange.bind(this), restrict: this.restrict, value: this.value, label: this.label, emptyMessage: this.renderEmptyMessage(), maxItens: this.maxItems, debounceTime: this.debounceTime, canShowError: this.canShowError, mode: this.mode, errorMessage: this.errorMessage, onPopupClose: this.onPopupClose.bind(this) })));
116
- }
117
- static get style() { return snkDistinctSearchCss; }
118
- }, [2, "snk-distinct-search", {
119
- "value": [1025],
120
- "label": [1],
121
- "configSearch": [16],
122
- "maxItems": [2, "max-items"],
123
- "debounceTime": [2, "debounce-time"],
124
- "canShowError": [4, "can-show-error"],
125
- "mode": [1],
126
- "restrict": [1],
127
- "errorMessage": [1, "error-message"],
128
- "distinctItems": [32],
129
- "clearInput": [64],
130
- "isInvalid": [64],
131
- "setBlur": [64],
132
- "setFocus": [64],
133
- "closeModal": [64],
134
- "openModal": [64]
135
- }]);
136
- function defineCustomElement$1() {
137
- if (typeof customElements === "undefined") {
138
- return;
139
- }
140
- const components = ["snk-distinct-search", "input-distinct-search", "search-modal"];
141
- components.forEach(tagName => { switch (tagName) {
142
- case "snk-distinct-search":
143
- if (!customElements.get(tagName)) {
144
- customElements.define(tagName, SnkDistinctSearch$1);
145
- }
146
- break;
147
- case "input-distinct-search":
148
- if (!customElements.get(tagName)) {
149
- defineCustomElement$3();
150
- }
151
- break;
152
- case "search-modal":
153
- if (!customElements.get(tagName)) {
154
- defineCustomElement$2();
155
- }
156
- break;
157
- } });
158
- }
159
-
160
- const SnkDistinctSearch = SnkDistinctSearch$1;
161
- const defineCustomElement = defineCustomElement$1;
162
-
163
- export { SnkDistinctSearch, defineCustomElement };
@@ -1,466 +0,0 @@
1
- import { r as registerInstance, c as createEvent, h, F as Fragment, H as Host, g as getElement } from './index-a7d3d3f1.js';
2
- import { KeyboardManager } from '@sankhyalabs/core';
3
- import { EzScrollDirection } from '@sankhyalabs/ezui/dist/collection/components/ez-scroller/EzScrollDirection';
4
-
5
- function normalizeString(text = "") {
6
- return text.normalize('NFD').replace(/[\u0300-\u036f/\s'"&.-]/g, "").toUpperCase();
7
- }
8
- function filterItems(searchArgument, distinctItems, maxItems) {
9
- const normalizedSearch = normalizeString(searchArgument);
10
- const filteredDistincts = distinctItems.filter((item) => normalizeString(item).includes(normalizedSearch));
11
- const isLimited = filteredDistincts.length > maxItems;
12
- const items = filteredDistincts.slice(0, maxItems);
13
- return { items, isLimited };
14
- }
15
- function getMatchOption(value, distinctItems) {
16
- const normalizedSearch = normalizeString(value);
17
- const item = distinctItems.find((item) => normalizeString(item) === normalizedSearch);
18
- return item;
19
- }
20
-
21
- const inputDistinctSearchCss = ":host{--max-height-popover:180px;--scrollbar--color-default:var(--scrollbar--default, #626e82);--scrollbar--color-background:var(--scrollbar--background, #E5EAF0);--scrollbar--color-hover:var(--scrollbar--hover, #2B3A54);--scrollbar--color-clicked:var(--scrollbar--clicked, #a2abb9);--scrollbar--border-radius:var(--border--radius-small, 6px);--scrollbar--width:var(--space--medium, 12px)}.divider{margin:var(--space--extra-small, 3px) 0;border:var(--border--small, 1px solid) var(--color--disable-secondary, #F2F5F8)}.new-value{color:var(--text--primary, #626e82);padding:var(--space--2xs, 8px) var(--space--3xs, 4px);font-size:var(--text--medium, 14px);font-family:var(--font-pattern, Roboto);cursor:pointer;border-radius:var(--border--radius-small, 6px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border:none;background:none;width:100%;display:flex;min-height:max-content}.new-value-selected{background-color:var(--color--primary-300, #E2F4EF)}.new-value:hover{background-color:var(--background--medium, #e0e0e0)}.popover-content{margin:var(--space--small, 6px);max-height:calc(var(--max-height-popover) - (2 * var(--space--small, 6px)));display:flex;flex-direction:column}.list-container{overflow:auto;scrollbar-width:thin;scrollbar-color:var(--scrollbar--color-clicked) var(--scrollbar--color-background);padding-right:var(--space--small, 6px)}.list-container::-webkit-scrollbar{background-color:var(--scrollbar--color-background);width:var(--scrollbar--width);max-width:var(--scrollbar--width);min-width:var(--scrollbar--width)}.list-container::-webkit-scrollbar-track{background-color:var(--scrollbar--color-background);border-radius:var(--scrollbar--border-radius)}.list-container::-webkit-scrollbar-thumb{background-color:var(--scrollbar--color-default);border-radius:var(--scrollbar--border-radius)}.list-container::-webkit-scrollbar-thumb:vertical:hover,.list-container::-webkit-scrollbar-thumb:horizontal:hover{background-color:var(--scrollbar--color-hover)}.list-container::-webkit-scrollbar-thumb:vertical:active,.list-container::-webkit-scrollbar-thumb:horizontal:active{background-color:var(--scrollbar--color-clicked)}ez-popover{--ez-popover__box--z-index:15}.space-error{--ez-popover__margin:-19px 0 0 0}ez-list{--ez-list__item--margin:0}ez-text-input{--ez-text-input__icon--margin:var(--space--xs, 12px)}.badge-primary{--ez-badge--background-color:var(--color--primary-300);--ez-badge--color:var(--color--primary)}";
22
-
23
- const InputDistinctSearch = class {
24
- constructor(hostRef) {
25
- registerInstance(this, hostRef);
26
- this.changeValue = createEvent(this, "changeValue", 7);
27
- this.iconClick = createEvent(this, "iconClick", 7);
28
- this.textValue = "";
29
- this.isNewItem = false;
30
- this.filteredItems = [];
31
- this.isNewItemSelected = false;
32
- this.application = undefined;
33
- this.distinctItems = [];
34
- this.label = "";
35
- this.value = "";
36
- this.maxItems = 100;
37
- this.debounceTime = 300;
38
- this.canShowError = false;
39
- this.mode = 'regular';
40
- this.restrict = undefined;
41
- this.errorMessage = undefined;
42
- }
43
- async observerValue(newValue) {
44
- await this.selectedNewItem(newValue, true);
45
- }
46
- /**
47
- * Seleciona um item
48
- */
49
- async selectValue(value, isNewItem = false) {
50
- this.isNewItem = isNewItem;
51
- this.textValue = value;
52
- await this._refFilterInput.setValue(value);
53
- }
54
- /**
55
- * Método para limpa o campo de entrada de pesquisa
56
- */
57
- clearInput() {
58
- this._refFilterInput.setValue("");
59
- }
60
- /**
61
- * Retorna se o conteúdo é inválido.
62
- */
63
- isInvalid() {
64
- return this._refFilterInput.isInvalid();
65
- }
66
- /**
67
- * Remove o foco do campo
68
- */
69
- setBlur() {
70
- this._refFilterInput.setBlur();
71
- }
72
- /**
73
- * Aplica o foco do campo
74
- */
75
- setFocus() {
76
- this._refFilterInput.setFocus();
77
- }
78
- getMessage(key) {
79
- return this.application.messagesBuilder.getMessage(key, null);
80
- }
81
- async optionLoader(searchArgument) {
82
- return new Promise((resolve) => {
83
- if (this._debounceTimeout) {
84
- clearTimeout(this._debounceTimeout);
85
- }
86
- this._debounceTimeout = setTimeout(() => {
87
- const { items } = filterItems(searchArgument, this.distinctItems, this.maxItems);
88
- this.filteredItems = items;
89
- resolve();
90
- }, this.debounceTime);
91
- });
92
- }
93
- async openPopOver() {
94
- var _a;
95
- await ((_a = this._refPopOver) === null || _a === void 0 ? void 0 : _a.showUnder(this._refFilterInput));
96
- }
97
- async closePopOver() {
98
- var _a;
99
- this.isNewItemSelected = false;
100
- await ((_a = this._refPopOver) === null || _a === void 0 ? void 0 : _a.hide());
101
- await this._refList.removeSelection();
102
- }
103
- async onTextChange(event) {
104
- this.textValue = event.detail;
105
- await this.optionLoader(event.detail);
106
- await this.selectFirstItem();
107
- }
108
- onIconClick() {
109
- this.iconClick.emit();
110
- }
111
- buidItems() {
112
- var _a;
113
- const items = (_a = this.filteredItems) === null || _a === void 0 ? void 0 : _a.map((item) => ({
114
- label: item,
115
- id: normalizeString(item),
116
- }));
117
- return items;
118
- }
119
- async setValue(value, isNewItem = false, preventEventEmit = false) {
120
- this.isNewItem = isNewItem;
121
- this.textValue = value;
122
- await this._refFilterInput.setValue(value);
123
- await this.closePopOver();
124
- if (!preventEventEmit) {
125
- this.changeValue.emit({
126
- value,
127
- isNewItem,
128
- });
129
- }
130
- }
131
- async selectedNewItem(value, preventEventEmit = false) {
132
- if (!this.textValue && !value) {
133
- await this.setValue("", false, preventEventEmit);
134
- return;
135
- }
136
- const item = getMatchOption(value !== null && value !== void 0 ? value : this.textValue, this.distinctItems);
137
- if (item) {
138
- await this.setValue(item, false, preventEventEmit);
139
- return;
140
- }
141
- await this.setValue(this.textValue || value, true, preventEventEmit);
142
- }
143
- async setSelectedValue() {
144
- const selectedValue = await this._refList.getSelection();
145
- await this.selectedNewItem((selectedValue === null || selectedValue === void 0 ? void 0 : selectedValue.label) || this.textValue, true);
146
- await this._refFilterInput.setBlur();
147
- this._element.focus();
148
- }
149
- async selectNextItem() {
150
- if (this.isNewItemSelected) {
151
- return;
152
- }
153
- const itemSelected = await this._refList.getSelection();
154
- const itemsAmount = this.filteredItems.length;
155
- const indexSelected = this.filteredItems.findIndex((item) => item === (itemSelected === null || itemSelected === void 0 ? void 0 : itemSelected.label));
156
- const isLastItemSelected = indexSelected === (itemsAmount - 1);
157
- const optionNewItemIsAvailable = !!this.textValue;
158
- if (!isLastItemSelected || !optionNewItemIsAvailable) {
159
- this.isNewItemSelected = false;
160
- await this._refList.selectNextItem();
161
- return;
162
- }
163
- this.isNewItemSelected = true;
164
- await this._refList.removeSelection();
165
- }
166
- async selectPreviousItem() {
167
- const itemsAmount = this.filteredItems.length;
168
- const lastItem = this.filteredItems[itemsAmount - 1];
169
- if (this.isNewItemSelected && lastItem) {
170
- this.isNewItemSelected = false;
171
- await this._refList.setSelection({
172
- id: normalizeString(lastItem),
173
- label: lastItem
174
- });
175
- return;
176
- }
177
- await this._refList.selectPreviousItem();
178
- }
179
- bindKeyboardManager() {
180
- this._keyboardManager = new KeyboardManager({ propagate: false, element: this._element });
181
- this._keyboardManager
182
- .bind("ArrowDown", () => { this.selectNextItem(); })
183
- .bind("ArrowUp", () => { this.selectPreviousItem(); })
184
- .bind("Enter", () => { this.setSelectedValue(); })
185
- .bind("Tab", () => { this.setSelectedValue(); });
186
- }
187
- unbindKeyboardManager() {
188
- this._keyboardManager
189
- .unbind("ArrowDown")
190
- .unbind("ArrowUp")
191
- .unbind("Enter")
192
- .unbind("Tab");
193
- }
194
- async selectFirstItem() {
195
- if (!this.filteredItems.length) {
196
- await this._refList.removeSelection();
197
- this.isNewItemSelected = true;
198
- return;
199
- }
200
- const firstItem = this.filteredItems[0];
201
- this.isNewItemSelected = false;
202
- await this._refList.setSelection({
203
- id: normalizeString(firstItem),
204
- label: firstItem,
205
- });
206
- }
207
- initializeComponent() {
208
- const { items } = filterItems("", this.distinctItems, this.maxItems);
209
- this.filteredItems = items;
210
- }
211
- componentWillLoad() {
212
- this.initializeComponent();
213
- }
214
- async componentDidLoad() {
215
- this.bindKeyboardManager();
216
- this.selectFirstItem();
217
- await this.selectedNewItem(this.value, true);
218
- }
219
- disconnectedCallback() {
220
- this.unbindKeyboardManager();
221
- }
222
- buildNewItemOption() {
223
- if (!this.textValue) {
224
- return;
225
- }
226
- return (h(Fragment, null, !!this.filteredItems.length &&
227
- h("hr", { class: "divider" }), h("button", { slot: "bottomSlot", class: {
228
- "new-value": true,
229
- "new-value-selected": this.isNewItemSelected,
230
- }, title: `${this.getMessage("snkDistinctSearch.titleAdd")} '${this.textValue}'`, onClick: () => this.selectedNewItem.bind(this)(undefined, true) }, this.getMessage("snkDistinctSearch.titleAdd"), " '", this.textValue, "'")));
231
- }
232
- render() {
233
- return (h(Host, { onBlur: () => this.selectedNewItem.bind(this)() }, h("ez-filter-input", { ref: (ref) => this._refFilterInput = ref, label: this.label, value: this.textValue, onEzChange: this.onTextChange.bind(this), onEzIconClick: this.onIconClick.bind(this), onEzFocusIn: this.openPopOver.bind(this), canShowError: this.canShowError, mode: this.mode, restrict: this.restrict, errorMessage: this.errorMessage, enabledIconClick: true }, this.isNewItem &&
234
- h("ez-badge", { slot: "right", label: this.getMessage("snkDistinctSearch.titleBadgeNew"), size: "small-medium", class: "badge-primary" })), h("ez-popover", { ref: (ref) => this._refPopOver = ref, boxWidth: "full-width", autoClose: false, overlayType: "none", class: {
235
- 'space-error': this.canShowError,
236
- } }, h("div", { class: "popover-content" }, h("section", { class: "list-container" }, h("ez-list", { ref: (ref) => this._refList = ref, dataSource: this.buidItems(), onEzClickItem: ({ detail }) => this.setValue.bind(this)(detail.label, false, true), ezSelectable: true, hoverFeedback: true, disableShortcuts: true })), this.buildNewItemOption()))));
237
- }
238
- get _element() { return getElement(this); }
239
- static get watchers() { return {
240
- "value": ["observerValue"]
241
- }; }
242
- };
243
- InputDistinctSearch.style = inputDistinctSearchCss;
244
-
245
- const searchModalCss = ".sc-search-modal-h{display:block}ez-popup.sc-search-modal{--ez-popup__title--font-size:var(--title--large, 20px);--ez-popup__container--height:380px}.search-modal-scroller.sc-search-modal{height:174px}.search-modal-text.sc-search-modal{font-family:var(--font-pattern);color:var(--text--primary);font-size:var(--text--medium)}ez-filter-input.sc-search-modal>input.sc-search-modal{text-overflow:ellipsis}.ez-content.sc-search-modal{height:190px;display:flex;align-items:center;justify-content:center}";
246
-
247
- const SearchModal = class {
248
- constructor(hostRef) {
249
- registerInstance(this, hostRef);
250
- this.popupClose = createEvent(this, "popupClose", 7);
251
- this.changeValue = createEvent(this, "changeValue", 7);
252
- this.debounceTimeout = null;
253
- this.filteredItems = [];
254
- this.searchFocus = false;
255
- this.isLimited = false;
256
- this.application = undefined;
257
- this.listItens = [];
258
- this.opened = false;
259
- this.value = undefined;
260
- this.canShowError = false;
261
- this.emptyMessage = undefined;
262
- this.debounceTime = 300;
263
- this.maxItens = 100;
264
- this.label = 'Pesquisar';
265
- this.mode = 'regular';
266
- this.restrict = undefined;
267
- this.errorMessage = undefined;
268
- }
269
- /**
270
- * Método para adicionar a nova palavra e chamar o método closeModal() para fechar o modal
271
- */
272
- addNewItem() {
273
- this.closeModal();
274
- this.changeValue.emit({ isNewItem: true, value: this.value });
275
- }
276
- /**
277
- * Método para limpa o campo de entrada de pesquisa
278
- */
279
- clearInput() {
280
- this._refFilterInput.setValue("");
281
- }
282
- /**
283
- * Método para fechar o modal
284
- */
285
- closeModal() {
286
- this._popupElement.opened = false;
287
- this.popupClose.emit(false);
288
- }
289
- /**
290
- * Método para abrir o modal
291
- */
292
- openModal() {
293
- this._popupElement.opened = true;
294
- setTimeout(() => this.setFocus(), 100);
295
- }
296
- /**
297
- * Retorna se o conteúdo é inválido.
298
- */
299
- isInvalid() {
300
- this._refFilterInput.isInvalid();
301
- }
302
- /**
303
- * Remove o foco do campo
304
- */
305
- setBlur() {
306
- this._refFilterInput.setBlur();
307
- this.searchFocus = false;
308
- }
309
- /**
310
- * Aplica o foco do campo
311
- */
312
- setFocus() {
313
- this._refFilterInput.setFocus();
314
- this.searchFocus = true;
315
- }
316
- /**
317
- * Método para tratar a mensagem de erro
318
- */
319
- watchPropErrorMessage() {
320
- this._refFilterInput.errorMessage = this.errorMessage;
321
- }
322
- /**
323
- * Método para tratar o value do input
324
- */
325
- watchPropValue() {
326
- this._refFilterInput.value = this.value;
327
- }
328
- /**
329
- * Atualiza a lista de itens à medida que o usuário digita no campo de pesquisa.
330
- */
331
- async handleInput(event) {
332
- if (this.debounceTimeout) {
333
- clearTimeout(this.debounceTimeout);
334
- }
335
- this.value = event.detail;
336
- this.debounceTimeout = setTimeout(async () => {
337
- var _a;
338
- const { isLimited, items } = filterItems(event.detail, this.listItens, this.maxItens);
339
- this.filteredItems = items;
340
- this.isLimited = isLimited;
341
- await ((_a = this._refList) === null || _a === void 0 ? void 0 : _a.removeSelection());
342
- }, this.debounceTime);
343
- }
344
- initializeComponent() {
345
- this.filteredItems = this.listItens;
346
- }
347
- getMessage(key) {
348
- return this.application.messagesBuilder.getMessage(key, null);
349
- }
350
- componentWillLoad() {
351
- this.initializeComponent();
352
- }
353
- componentDidLoad() {
354
- this.bindKeyboardManager();
355
- this._refFilterInput.value = this.value;
356
- const { isLimited, items } = filterItems(this.value, this.listItens, this.maxItens);
357
- this.filteredItems = items;
358
- this.isLimited = isLimited;
359
- }
360
- disconnectedCallback() {
361
- this.unbindKeyboardManager();
362
- }
363
- buildItems() {
364
- var _a;
365
- const items = (_a = this.filteredItems) === null || _a === void 0 ? void 0 : _a.map((item) => ({
366
- label: item,
367
- id: normalizeString(item),
368
- }));
369
- return items;
370
- }
371
- async tabSelect() {
372
- var _a;
373
- const selectedValue = await ((_a = this._refList) === null || _a === void 0 ? void 0 : _a.getSelection());
374
- if (this.searchFocus && this._refList) {
375
- this.searchFocus = false;
376
- this._refList.focus();
377
- await this.selectFirstItem();
378
- }
379
- else if (selectedValue) {
380
- await this._refList.removeSelection();
381
- await this._refButton.setFocus();
382
- }
383
- else {
384
- await this._refButton.setBlur();
385
- this.setFocus();
386
- }
387
- }
388
- bindKeyboardManager() {
389
- this._keyboardManager = new KeyboardManager({ propagate: false, element: this._element });
390
- this._keyboardManager
391
- .bind("ArrowDown", () => { this.selectNextItem(); })
392
- .bind("ArrowUp", () => { this.selectPreviousItem(); })
393
- .bind("Enter", () => { this.setSelectedValue(); })
394
- .bind("Tab", () => { this.tabSelect(); });
395
- }
396
- unbindKeyboardManager() {
397
- this._keyboardManager
398
- .unbind("ArrowDown")
399
- .unbind("ArrowUp")
400
- .unbind("Enter")
401
- .unbind("Tab");
402
- }
403
- async setSelectedValue() {
404
- var _a;
405
- const selectedValue = await ((_a = this._refList) === null || _a === void 0 ? void 0 : _a.getSelection());
406
- if (selectedValue) {
407
- this.changeValue.emit({ isNewItem: false, value: selectedValue.label });
408
- this.closeModal();
409
- }
410
- else if (this.searchFocus && this.enabledButtonNewItem()) {
411
- this.addNewItem();
412
- }
413
- }
414
- async selectNextItem() {
415
- var _a;
416
- const itemSelected = await ((_a = this._refList) === null || _a === void 0 ? void 0 : _a.getSelection());
417
- if (this.searchFocus && !itemSelected) {
418
- this.setBlur();
419
- await this.selectFirstItem();
420
- return;
421
- }
422
- await this._refList.selectNextItem();
423
- }
424
- async selectPreviousItem() {
425
- const itemSelected = await this._refList.getSelection();
426
- if (itemSelected === undefined)
427
- return;
428
- await this._refList.selectPreviousItem();
429
- }
430
- async selectFirstItem() {
431
- if (!this.filteredItems.length) {
432
- await this._refList.removeSelection();
433
- return;
434
- }
435
- const firstItem = this.filteredItems[0];
436
- await this._refList.setSelection({
437
- id: normalizeString(firstItem),
438
- label: firstItem,
439
- });
440
- }
441
- enabledButtonNewItem() {
442
- if (this.value === undefined)
443
- return false;
444
- if (getMatchOption(this.value, this.listItens))
445
- return false;
446
- return this.value.trim().length === 0 ? false : true;
447
- }
448
- buildMessage() {
449
- if (this.isLimited) {
450
- return this.getMessage("snkDistinctSearch.limitResult");
451
- }
452
- return `${this.filteredItems.length} ${this.filteredItems.length > 1 ? this.getMessage("snkDistinctSearch.availableResults") : this.getMessage("snkDistinctSearch.availableResult")}`;
453
- }
454
- render() {
455
- var _a;
456
- return (h(Host, null, h("ez-popup", { ref: (ref) => this._popupElement = ref, size: "400px", "ez-title": this.label, onEzClosePopup: () => this.popupClose.emit(false), "height-mode": "full" }, h("div", null, h("ez-filter-input", { ref: (ref) => this._refFilterInput = ref, label: "Pesquisar", onEzChange: this.handleInput.bind(this), onBlur: () => this.searchFocus = false, onEzFocusIn: () => this.searchFocus = true, errorMessage: this.errorMessage, canShowError: this.canShowError, mode: this.mode, value: this.value, restrict: this.restrict }), this.filteredItems.length === 0 ? (h("div", { class: "ez-content" }, h("div", { class: "ez-text--center search-modal-text" }, this.emptyMessage))) : (h("div", null, h("div", { class: "search-modal-text ez-padding-vertical--medium" }, this.buildMessage()), h("ez-scroller", { class: "search-modal-scroller", direction: EzScrollDirection.VERTICAL }, h("ez-list", { ref: (ref) => this._refList = ref, dataSource: this.buildItems(), onEzClickItem: ({ label }) => this.setSelectedValue.bind(this)(label), ezSelectable: true, hoverFeedback: true, disableShortcuts: true })))), h("div", { class: "ez-flex ez-flex--justify-end" }, h("ez-button", { ref: (ref) => this._refButton = ref, class: "ez-button--tertiary", enabled: this.enabledButtonNewItem(), label: `${this.getMessage("snkDistinctSearch.titleAdd")} ${(_a = this.label) === null || _a === void 0 ? void 0 : _a.toLocaleLowerCase()}`, onClick: () => this.addNewItem() }))))));
457
- }
458
- get _element() { return getElement(this); }
459
- static get watchers() { return {
460
- "errorMessage": ["watchPropErrorMessage"],
461
- "value": ["watchPropValue"]
462
- }; }
463
- };
464
- SearchModal.style = searchModalCss;
465
-
466
- export { InputDistinctSearch as input_distinct_search, SearchModal as search_modal };