@sankhyalabs/ezui 5.22.0-dev.109 → 5.22.0-dev.110

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 (248) hide show
  1. package/dist/cjs/{DataBinder-e92314c2.js → DataBinder-c2060474.js} +3 -2
  2. package/dist/cjs/{constants-2714478b.js → constants-569271bc.js} +4 -0
  3. package/dist/cjs/ez-actions-button.cjs.entry.js +2 -2
  4. package/dist/cjs/ez-alert-list.cjs.entry.js +1 -1
  5. package/dist/cjs/ez-alert.cjs.entry.js +1 -1
  6. package/dist/cjs/ez-application.cjs.entry.js +1 -1
  7. package/dist/cjs/ez-badge.cjs.entry.js +1 -1
  8. package/dist/cjs/ez-breadcrumb.cjs.entry.js +1 -1
  9. package/dist/cjs/ez-button.cjs.entry.js +1 -1
  10. package/dist/cjs/ez-calendar.cjs.entry.js +1 -1
  11. package/dist/cjs/ez-card-item_2.cjs.entry.js +4 -1218
  12. package/dist/cjs/ez-chart.cjs.entry.js +1 -1
  13. package/dist/cjs/ez-check.cjs.entry.js +1 -1
  14. package/dist/cjs/ez-chip.cjs.entry.js +1 -1
  15. package/dist/cjs/ez-collapsible-box.cjs.entry.js +2 -2
  16. package/dist/cjs/ez-combo-box-list_3.cjs.entry.js +4 -4
  17. package/dist/cjs/ez-combo-box.cjs.entry.js +2 -8
  18. package/dist/cjs/ez-date-input.cjs.entry.js +1 -1
  19. package/dist/cjs/ez-date-time-input.cjs.entry.js +1 -1
  20. package/dist/cjs/ez-dialog.cjs.entry.js +1 -1
  21. package/dist/cjs/ez-double-list.cjs.entry.js +1 -1
  22. package/dist/cjs/ez-dropdown_2.cjs.entry.js +1 -1
  23. package/dist/cjs/ez-file-item.cjs.entry.js +1 -1
  24. package/dist/cjs/ez-filter-input.cjs.entry.js +1 -1
  25. package/dist/cjs/ez-form-view.cjs.entry.js +15 -8
  26. package/dist/cjs/ez-form.cjs.entry.js +2 -2
  27. package/dist/cjs/ez-grid.cjs.entry.js +161 -21
  28. package/dist/cjs/ez-guide-navigator.cjs.entry.js +1 -1
  29. package/dist/cjs/ez-icon.cjs.entry.js +1 -1
  30. package/dist/cjs/ez-list.cjs.entry.js +1 -1
  31. package/dist/cjs/ez-loading-bar.cjs.entry.js +1 -1
  32. package/dist/cjs/ez-modal-container.cjs.entry.js +1 -1
  33. package/dist/cjs/ez-modal.cjs.entry.js +1 -1
  34. package/dist/cjs/ez-multi-selection-list.cjs.entry.js +1 -1
  35. package/dist/cjs/ez-number-input.cjs.entry.js +1 -1
  36. package/dist/cjs/ez-popover-plus_3.cjs.entry.js +1 -1
  37. package/dist/cjs/ez-popover.cjs.entry.js +1 -1
  38. package/dist/cjs/ez-popup.cjs.entry.js +1 -1
  39. package/dist/cjs/ez-radio-button.cjs.entry.js +1 -1
  40. package/dist/cjs/ez-scroller_2.cjs.entry.js +1 -1
  41. package/dist/cjs/ez-search-plus.cjs.entry.js +369 -0
  42. package/dist/cjs/ez-search-result-list.cjs.entry.js +98 -0
  43. package/dist/cjs/ez-search.cjs.entry.js +3 -3
  44. package/dist/cjs/ez-sidebar-navigator.cjs.entry.js +1 -1
  45. package/dist/cjs/ez-split-button.cjs.entry.js +1 -1
  46. package/dist/cjs/ez-split-item.cjs.entry.js +2 -2
  47. package/dist/cjs/ez-split-panel.cjs.entry.js +1 -1
  48. package/dist/cjs/ez-tabselector.cjs.entry.js +1 -1
  49. package/dist/cjs/ez-text-area.cjs.entry.js +1 -1
  50. package/dist/cjs/ez-text-input.cjs.entry.js +21 -88
  51. package/dist/cjs/ez-time-input.cjs.entry.js +1 -1
  52. package/dist/cjs/ez-toast.cjs.entry.js +1 -1
  53. package/dist/cjs/ez-tooltip.cjs.entry.js +105 -30
  54. package/dist/cjs/ez-tree.cjs.entry.js +1 -1
  55. package/dist/cjs/ez-upload.cjs.entry.js +1 -1
  56. package/dist/cjs/ez-view-stack.cjs.entry.js +1 -1
  57. package/dist/cjs/ezui.cjs.js +2 -2
  58. package/dist/cjs/filter-column.cjs.entry.js +1 -1
  59. package/dist/cjs/floating-ui.dom.esm-017acce4.js +1404 -0
  60. package/dist/cjs/{index-9e5554cb.js → index-a7b0c73d.js} +8 -3
  61. package/dist/cjs/loader.cjs.js +2 -2
  62. package/dist/cjs/{ICustomRender-6fafffce.js → types-6a5df0c7.js} +8 -0
  63. package/dist/collection/collection-manifest.json +12 -0
  64. package/dist/collection/components/ez-combo-box/ez-combo-box.js +1 -8
  65. package/dist/collection/components/ez-form-view/fieldbuilder/FieldBuilder.js +3 -1
  66. package/dist/collection/components/ez-form-view/fieldbuilder/templates/SearchInputPlus.tpl.js +6 -0
  67. package/dist/collection/components/ez-grid/controller/ag-grid/AgGridController.js +92 -8
  68. package/dist/collection/components/ez-grid/controller/ag-grid/DataSource.js +21 -4
  69. package/dist/collection/components/ez-grid/controller/ag-grid/GridEditionManager.js +31 -7
  70. package/dist/collection/components/ez-grid/controller/ag-grid/editor/EzCellEditor.js +2 -0
  71. package/dist/collection/components/ez-grid/controller/ag-grid/editor/templates/SearchPlus.tpl.js +15 -0
  72. package/dist/collection/components/ez-search-plus/ez-search-plus.css +373 -0
  73. package/dist/collection/components/ez-search-plus/ez-search-plus.js +952 -0
  74. package/dist/collection/components/ez-search-plus/subcomponent/ez-search-result-list/ez-search-result-list.css +227 -0
  75. package/dist/collection/components/ez-search-plus/subcomponent/ez-search-result-list/ez-search-result-list.js +279 -0
  76. package/dist/collection/components/ez-text-input/ez-text-input.css +18 -2
  77. package/dist/collection/components/ez-text-input/ez-text-input.js +39 -60
  78. package/dist/collection/components/ez-tooltip/ez-tooltip.css +52 -12
  79. package/dist/collection/components/ez-tooltip/ez-tooltip.js +217 -46
  80. package/dist/collection/utils/constants.js +2 -0
  81. package/dist/collection/utils/form/DataBinder.js +3 -2
  82. package/dist/collection/utils/index.js +1 -0
  83. package/dist/collection/utils/search/types.js +7 -0
  84. package/dist/custom-elements/index.d.ts +12 -0
  85. package/dist/custom-elements/index.js +942 -148
  86. package/dist/esm/{DataBinder-9c877244.js → DataBinder-89946126.js} +3 -2
  87. package/dist/esm/constants-b036528f.js +7 -0
  88. package/dist/esm/ez-actions-button.entry.js +2 -2
  89. package/dist/esm/ez-alert-list.entry.js +1 -1
  90. package/dist/esm/ez-alert.entry.js +1 -1
  91. package/dist/esm/ez-application.entry.js +1 -1
  92. package/dist/esm/ez-badge.entry.js +1 -1
  93. package/dist/esm/ez-breadcrumb.entry.js +1 -1
  94. package/dist/esm/ez-button.entry.js +1 -1
  95. package/dist/esm/ez-calendar.entry.js +1 -1
  96. package/dist/esm/ez-card-item_2.entry.js +2 -1216
  97. package/dist/esm/ez-chart.entry.js +1 -1
  98. package/dist/esm/ez-check.entry.js +1 -1
  99. package/dist/esm/ez-chip.entry.js +1 -1
  100. package/dist/esm/ez-collapsible-box.entry.js +2 -2
  101. package/dist/esm/ez-combo-box-list_3.entry.js +3 -3
  102. package/dist/esm/ez-combo-box.entry.js +2 -8
  103. package/dist/esm/ez-date-input.entry.js +1 -1
  104. package/dist/esm/ez-date-time-input.entry.js +1 -1
  105. package/dist/esm/ez-dialog.entry.js +1 -1
  106. package/dist/esm/ez-double-list.entry.js +1 -1
  107. package/dist/esm/ez-dropdown_2.entry.js +1 -1
  108. package/dist/esm/ez-file-item.entry.js +1 -1
  109. package/dist/esm/ez-filter-input.entry.js +1 -1
  110. package/dist/esm/ez-form-view.entry.js +16 -9
  111. package/dist/esm/ez-form.entry.js +2 -2
  112. package/dist/esm/ez-grid.entry.js +160 -20
  113. package/dist/esm/ez-guide-navigator.entry.js +1 -1
  114. package/dist/esm/ez-icon.entry.js +1 -1
  115. package/dist/esm/ez-list.entry.js +1 -1
  116. package/dist/esm/ez-loading-bar.entry.js +1 -1
  117. package/dist/esm/ez-modal-container.entry.js +1 -1
  118. package/dist/esm/ez-modal.entry.js +1 -1
  119. package/dist/esm/ez-multi-selection-list.entry.js +1 -1
  120. package/dist/esm/ez-number-input.entry.js +1 -1
  121. package/dist/esm/ez-popover-plus_3.entry.js +1 -1
  122. package/dist/esm/ez-popover.entry.js +1 -1
  123. package/dist/esm/ez-popup.entry.js +1 -1
  124. package/dist/esm/ez-radio-button.entry.js +1 -1
  125. package/dist/esm/ez-scroller_2.entry.js +1 -1
  126. package/dist/esm/ez-search-plus.entry.js +365 -0
  127. package/dist/esm/ez-search-result-list.entry.js +94 -0
  128. package/dist/esm/ez-search.entry.js +3 -3
  129. package/dist/esm/ez-sidebar-navigator.entry.js +1 -1
  130. package/dist/esm/ez-split-button.entry.js +1 -1
  131. package/dist/esm/ez-split-item.entry.js +2 -2
  132. package/dist/esm/ez-split-panel.entry.js +1 -1
  133. package/dist/esm/ez-tabselector.entry.js +1 -1
  134. package/dist/esm/ez-text-area.entry.js +1 -1
  135. package/dist/esm/ez-text-input.entry.js +21 -88
  136. package/dist/esm/ez-time-input.entry.js +1 -1
  137. package/dist/esm/ez-toast.entry.js +1 -1
  138. package/dist/esm/ez-tooltip.entry.js +105 -30
  139. package/dist/esm/ez-tree.entry.js +1 -1
  140. package/dist/esm/ez-upload.entry.js +1 -1
  141. package/dist/esm/ez-view-stack.entry.js +1 -1
  142. package/dist/esm/ezui.js +3 -3
  143. package/dist/esm/filter-column.entry.js +1 -1
  144. package/dist/esm/floating-ui.dom.esm-5d3da819.js +1398 -0
  145. package/dist/esm/{index-5a720e56.js → index-baa5e267.js} +9 -3
  146. package/dist/esm/loader.js +3 -3
  147. package/dist/esm/{ICustomRender-875b5a40.js → types-6f6b2650.js} +9 -1
  148. package/dist/ezui/ezui.esm.js +1 -1
  149. package/dist/ezui/{p-e6b38ade.entry.js → p-0306dff7.entry.js} +1 -1
  150. package/dist/ezui/{p-91ccae0c.entry.js → p-09de35a2.entry.js} +1 -1
  151. package/dist/ezui/{p-1f7241cd.entry.js → p-0bffeffc.entry.js} +1 -1
  152. package/dist/ezui/{p-88c615f0.entry.js → p-0fa52b0f.entry.js} +1 -1
  153. package/dist/ezui/{p-c96fbbef.entry.js → p-17de16e5.entry.js} +1 -1
  154. package/dist/ezui/p-1a060042.entry.js +1 -0
  155. package/dist/ezui/{p-81461d2f.entry.js → p-1e7a8633.entry.js} +1 -1
  156. package/dist/ezui/{p-a8c7473b.entry.js → p-1ec8bdd2.entry.js} +46 -46
  157. package/dist/ezui/{p-6b51c9cc.entry.js → p-1f50fa05.entry.js} +1 -1
  158. package/dist/ezui/{p-cf33bc48.entry.js → p-20c024f7.entry.js} +1 -1
  159. package/dist/ezui/{p-e4c7eb39.js → p-23a36bb6.js} +2 -2
  160. package/dist/ezui/{p-a537a117.entry.js → p-248d4f54.entry.js} +1 -1
  161. package/dist/ezui/{p-8f49705f.entry.js → p-2872fd16.entry.js} +1 -1
  162. package/dist/ezui/{p-06f1b8e4.entry.js → p-288631d1.entry.js} +1 -1
  163. package/dist/ezui/{p-ca8936df.entry.js → p-2f45506d.entry.js} +1 -1
  164. package/dist/ezui/p-3176a6ef.entry.js +1 -0
  165. package/dist/ezui/{p-23dab72f.entry.js → p-31b71e50.entry.js} +1 -1
  166. package/dist/ezui/{p-0378416a.entry.js → p-44caad9a.entry.js} +1 -1
  167. package/dist/ezui/{p-b8b5e643.entry.js → p-4e0628a7.entry.js} +1 -1
  168. package/dist/ezui/{p-7567ccdd.entry.js → p-555c9018.entry.js} +1 -1
  169. package/dist/ezui/{p-9066b0b0.entry.js → p-56fe5341.entry.js} +1 -1
  170. package/dist/ezui/p-5895e687.js +1 -0
  171. package/dist/ezui/p-5a14f506.entry.js +1 -0
  172. package/dist/ezui/{p-044d46d5.entry.js → p-5b205c80.entry.js} +1 -1
  173. package/dist/ezui/{p-33b720aa.entry.js → p-5ec0ae79.entry.js} +1 -1
  174. package/dist/ezui/{p-6fc26622.entry.js → p-5ed81457.entry.js} +1 -1
  175. package/dist/ezui/p-5eea9886.js +1 -0
  176. package/dist/ezui/{p-fc194825.entry.js → p-6e429cff.entry.js} +1 -1
  177. package/dist/ezui/{p-11bfeca3.entry.js → p-77a4bd35.entry.js} +1 -1
  178. package/dist/ezui/{p-2069c78a.entry.js → p-7e677b7b.entry.js} +1 -1
  179. package/dist/ezui/{p-e18d9e6a.entry.js → p-7fdd479f.entry.js} +1 -1
  180. package/dist/ezui/p-81145609.entry.js +1 -0
  181. package/dist/ezui/{p-e6ebc6a9.entry.js → p-84b1c99e.entry.js} +1 -1
  182. package/dist/ezui/{p-22ea800a.entry.js → p-8ac8093c.entry.js} +1 -1
  183. package/dist/ezui/{p-82fa4b09.entry.js → p-8df1ca33.entry.js} +1 -1
  184. package/dist/ezui/p-9142b27a.entry.js +1 -0
  185. package/dist/ezui/p-9567b31a.entry.js +1 -0
  186. package/dist/ezui/{p-017aafe1.entry.js → p-9f22e1dc.entry.js} +1 -1
  187. package/dist/ezui/{p-c2b20f78.entry.js → p-9f5fa3f9.entry.js} +1 -1
  188. package/dist/ezui/{p-0cfbbe82.entry.js → p-a4cee65d.entry.js} +1 -1
  189. package/dist/ezui/{p-acddfb2e.js → p-a64cfcfc.js} +1 -1
  190. package/dist/ezui/{p-dfca5946.entry.js → p-a80b1287.entry.js} +1 -1
  191. package/dist/ezui/p-bc2f844e.entry.js +1 -0
  192. package/dist/ezui/p-bf9dec89.entry.js +1 -0
  193. package/dist/ezui/{p-92748142.entry.js → p-c0d9c4f8.entry.js} +1 -1
  194. package/dist/ezui/{p-4818b8ce.entry.js → p-c1527804.entry.js} +1 -1
  195. package/dist/ezui/p-c5df78be.entry.js +1 -0
  196. package/dist/ezui/{p-a79f3789.entry.js → p-cd07f8be.entry.js} +1 -1
  197. package/dist/ezui/{p-708b196e.entry.js → p-da1b4a38.entry.js} +1 -1
  198. package/dist/ezui/{p-c7035d65.entry.js → p-dc73e1fe.entry.js} +1 -1
  199. package/dist/ezui/{p-2f351332.entry.js → p-e06a9886.entry.js} +1 -1
  200. package/dist/ezui/p-e07e4671.js +1 -0
  201. package/dist/ezui/{p-1bb62d6b.entry.js → p-e3544d23.entry.js} +1 -1
  202. package/dist/ezui/{p-9e95bfeb.entry.js → p-e6a9041d.entry.js} +1 -1
  203. package/dist/ezui/{p-000159dc.entry.js → p-e75c7a23.entry.js} +1 -1
  204. package/dist/ezui/{p-68b2e579.entry.js → p-ea54d056.entry.js} +1 -1
  205. package/dist/ezui/{p-ba25a351.entry.js → p-ecaac11f.entry.js} +1 -1
  206. package/dist/ezui/{p-9e45446f.entry.js → p-f4861c6a.entry.js} +1 -1
  207. package/dist/ezui/{p-3eaa0f67.entry.js → p-f5a30e35.entry.js} +1 -1
  208. package/dist/ezui/{p-44b39e81.entry.js → p-fa6732f2.entry.js} +1 -1
  209. package/dist/types/components/ez-combo-box/ez-combo-box.d.ts +0 -2
  210. package/dist/types/components/ez-form-view/fieldbuilder/templates/SearchInputPlus.tpl.d.ts +2 -0
  211. package/dist/types/components/ez-grid/controller/EzGridController.d.ts +4 -0
  212. package/dist/types/components/ez-grid/controller/ag-grid/AgGridController.d.ts +5 -0
  213. package/dist/types/components/ez-grid/controller/ag-grid/DataSource.d.ts +1 -0
  214. package/dist/types/components/ez-grid/controller/ag-grid/GridEditionManager.d.ts +1 -0
  215. package/dist/types/components/ez-grid/controller/ag-grid/editor/templates/SearchPlus.tpl.d.ts +3 -0
  216. package/dist/types/components/ez-search-plus/ez-search-plus.d.ts +184 -0
  217. package/dist/types/components/ez-search-plus/subcomponent/ez-search-result-list/ez-search-result-list.d.ts +26 -0
  218. package/dist/types/components/ez-text-input/ez-text-input.d.ts +6 -9
  219. package/dist/types/components/ez-tooltip/ez-tooltip.d.ts +37 -5
  220. package/dist/types/components.d.ts +330 -12
  221. package/dist/types/utils/constants.d.ts +2 -0
  222. package/dist/types/utils/index.d.ts +1 -0
  223. package/dist/types/utils/search/types.d.ts +12 -0
  224. package/package.json +2 -2
  225. package/react/components.d.ts +62 -60
  226. package/react/components.js +2 -0
  227. package/react/components.js.map +1 -1
  228. package/react/react-component-lib/createComponent.d.ts +1 -1
  229. package/react/react-component-lib/createComponent.js.map +1 -1
  230. package/react/react-component-lib/createOverlayComponent.js.map +1 -1
  231. package/react/react-component-lib/interfaces.js +1 -0
  232. package/react/react-component-lib/utils/attachProps.d.ts +1 -1
  233. package/react/react-component-lib/utils/attachProps.js.map +1 -1
  234. package/react/react-component-lib/utils/dev.js.map +1 -1
  235. package/react/react-component-lib/utils/index.d.ts +2 -2
  236. package/react/react-component-lib/utils/index.js.map +1 -1
  237. package/dist/collection/utils/ResponsiveInputUtils.js +0 -26
  238. package/dist/esm/constants-4e0d35b7.js +0 -5
  239. package/dist/ezui/p-05e1f4e7.js +0 -1
  240. package/dist/ezui/p-0cd9d4ec.entry.js +0 -1
  241. package/dist/ezui/p-37c840e8.entry.js +0 -1
  242. package/dist/ezui/p-4607fb89.js +0 -1
  243. package/dist/ezui/p-6d8b3298.entry.js +0 -1
  244. package/dist/ezui/p-6ec40dec.entry.js +0 -1
  245. package/dist/ezui/p-7ebbee50.entry.js +0 -1
  246. package/dist/ezui/p-e3f8660b.entry.js +0 -1
  247. package/dist/ezui/p-ede42942.entry.js +0 -1
  248. package/dist/types/utils/ResponsiveInputUtils.d.ts +0 -6
@@ -817,8 +817,9 @@ class DataBinder {
817
817
  }
818
818
  }
819
819
  bindSearchOptionsLoader(fieldName, field) {
820
- if (field.nodeName === "EZ-SEARCH" && field["optionLoader"] == undefined) {
821
- const loader = ApplicationContext.getContextValue("__EZUI__SEARCH__OPTION__LOADER__");
820
+ if ((field.nodeName === "EZ-SEARCH" || field.nodeName === "EZ-SEARCH-PLUS") && field["optionLoader"] == undefined) {
821
+ const isSearchPlus = field.nodeName === "EZ-SEARCH-PLUS";
822
+ const loader = isSearchPlus ? ApplicationContext.getContextValue("__EZUI__SEARCH__PLUS__OPTION__LOADER__") : ApplicationContext.getContextValue("__EZUI__SEARCH__OPTION__LOADER__");
822
823
  if (loader) {
823
824
  field["optionLoader"] = (arg, ctxOptions) => {
824
825
  return loader(arg, fieldName, this._dataUnit, ctxOptions);
@@ -937,6 +938,14 @@ var CustomRenderSource;
937
938
  CustomRenderSource["FORM"] = "FORM";
938
939
  })(CustomRenderSource || (CustomRenderSource = {}));
939
940
 
941
+ var SearchMode$2;
942
+ (function (SearchMode) {
943
+ SearchMode["ADVANCED"] = "ADVANCED";
944
+ SearchMode["PREDICTIVE"] = "PREDICTIVE";
945
+ SearchMode["LOAD_DESCRIPTION"] = "LOAD_DESCRIPTION";
946
+ SearchMode["PRELOAD"] = "PRELOAD";
947
+ })(SearchMode$2 || (SearchMode$2 = {}));
948
+
940
949
  var FormLayout;
941
950
  (function (FormLayout) {
942
951
  FormLayout[FormLayout["CASCADE"] = 0] = "CASCADE";
@@ -2929,7 +2938,6 @@ const EzComboBox$1 = class extends HTMLElement$1 {
2929
2938
  this._startLoading = false;
2930
2939
  this._showLoading = true;
2931
2940
  this._criteria = undefined;
2932
- this._textInputReady = undefined;
2933
2941
  this.limitCharsToSearch = 3;
2934
2942
  this.value = undefined;
2935
2943
  this.label = undefined;
@@ -3209,11 +3217,6 @@ const EzComboBox$1 = class extends HTMLElement$1 {
3209
3217
  //---------------------------------------------
3210
3218
  // Lifecycle web component
3211
3219
  //---------------------------------------------
3212
- componentDidRender() {
3213
- if (this._textInput) {
3214
- this._textInputReady = true;
3215
- }
3216
- }
3217
3220
  componentWillLoad() {
3218
3221
  if (this.options === undefined) {
3219
3222
  this.options = [];
@@ -5952,6 +5955,8 @@ const EzForm$1 = class extends HTMLElement$1 {
5952
5955
  const REQUIRED_INFO = " (obrigatório) *";
5953
5956
  const DISTINCT_FILTER_NAME_PREFIX = 'FILTRO_COLUNA_';
5954
5957
  const EZ_GRID_LOADING_SOURCE = "EZ_GRID_LOADING_SOURCE";
5958
+ const PRESENTATION_COL_ID_PROP_NAME = "gridDescriptionColID";
5959
+ const PRESENTATION_FROM_COL_PROP_NAME = "presentationFieldFrom";
5955
5960
 
5956
5961
  const buildSwitch$1 = (field) => {
5957
5962
  return buildField(field.name, field.label, field.readOnly, field.contextName, true);
@@ -6023,12 +6028,6 @@ function buildNumeric$1(fieldName, fieldLabel, readOnly, precision, prettyPrecis
6023
6028
  h("ez-number-input", { class: "ez-input__no-margin", enabled: !readOnly, label: fieldLabel, precision: precision, prettyPrecision: prettyPrecision, "data-field-name": fieldName, "data-context-name": contextName, key: fieldName, canShowError: canShowError })));
6024
6029
  }
6025
6030
 
6026
- const buildSearch$1 = ({ name, label, readOnly, required, contextName, canShowError, optionLoader, props }) => {
6027
- var _a;
6028
- return (h("div", { class: "ez-col ez-col--sd-12" },
6029
- h("ez-search", { class: "ez-input__no-margin", enabled: !readOnly, suppressEmptyOption: required, label: label, "data-field-name": name, "data-context-name": contextName, key: name, canShowError: canShowError, optionLoader: optionLoader, ignoreLimitCharsToSearch: (_a = props === null || props === void 0 ? void 0 : props.ignoreLimitCharsToSearch) !== null && _a !== void 0 ? _a : false })));
6030
- };
6031
-
6032
6031
  const buildTextArea = ({ name, label, readOnly, contextName, rows, canShowError }) => {
6033
6032
  return (h("div", { class: "ez-col ez-col--sd-12", key: name },
6034
6033
  h("ez-text-area", { enabled: !readOnly, label: label, "data-field-name": name, "data-context-name": contextName, rows: rows, canShowError: canShowError })));
@@ -6039,6 +6038,18 @@ const buildTextInput$1 = ({ name, label, readOnly, contextName, canShowError, pr
6039
6038
  h("ez-text-input", { class: "ez-input__no-margin", label: label, "data-field-name": name, "data-context-name": contextName, key: name, enabled: !readOnly, canShowError: canShowError, mask: props === null || props === void 0 ? void 0 : props.mask, "clean-value-mask": props === null || props === void 0 ? void 0 : props.cleanValueMask })));
6040
6039
  };
6041
6040
 
6041
+ const buildSearchPlus$1 = ({ name, label, readOnly, contextName, canShowError, optionLoader, props }) => {
6042
+ const hasDescriptionField = !StringUtils$1.isEmpty(props === null || props === void 0 ? void 0 : props.DESCRIPTIONFIELD);
6043
+ return (h("div", { class: "ez-col ez-col--sd-12" },
6044
+ h("ez-search-plus", { class: "ez-input__no-margin", enabled: !readOnly, label: label, "data-field-name": name, "data-context-name": contextName, key: name, canShowError: canShowError, optionLoader: optionLoader, hideDescriptionInput: !hasDescriptionField })));
6045
+ };
6046
+
6047
+ const buildSearch$1 = ({ name, label, readOnly, required, contextName, canShowError, optionLoader, props }) => {
6048
+ var _a;
6049
+ return (h("div", { class: "ez-col ez-col--sd-12" },
6050
+ h("ez-search", { class: "ez-input__no-margin", enabled: !readOnly, suppressEmptyOption: required, label: label, "data-field-name": name, "data-context-name": contextName, key: name, canShowError: canShowError, optionLoader: optionLoader, ignoreLimitCharsToSearch: (_a = props === null || props === void 0 ? void 0 : props.ignoreLimitCharsToSearch) !== null && _a !== void 0 ? _a : false })));
6051
+ };
6052
+
6042
6053
  const uiBuilders$1 = new Map();
6043
6054
  uiBuilders$1.set(UserInterface.CHECKBOX, buildCheckBox);
6044
6055
  uiBuilders$1.set(UserInterface.SWITCH, buildSwitch$1);
@@ -6051,6 +6062,7 @@ uiBuilders$1.set(UserInterface.FILE, buildFile);
6051
6062
  uiBuilders$1.set(UserInterface.DECIMALNUMBER, buildDecimal$1);
6052
6063
  uiBuilders$1.set(UserInterface.INTEGERNUMBER, buildInteger$1);
6053
6064
  uiBuilders$1.set(UserInterface.SEARCH, buildSearch$1);
6065
+ uiBuilders$1.set(UserInterface.SEARCHPLUS, buildSearchPlus$1);
6054
6066
  uiBuilders$1.set(UserInterface.LONGTEXT, buildTextArea);
6055
6067
  const fieldBuilder = (field) => {
6056
6068
  const builder = uiBuilders$1.get(field.userInterface) || buildTextInput$1;
@@ -56435,14 +56447,20 @@ class DataSource {
56435
56447
  return indexA - indexB;
56436
56448
  });
56437
56449
  this._dataUnit.metadata.fields.forEach(f => {
56438
- var _a;
56450
+ var _a, _b;
56439
56451
  if (f.visible !== false && f.name !== this.RECORD_ARCHIVE) {
56440
56452
  const props = new Map();
56441
56453
  const properties = this._dataUnit.getField(f.name).properties;
56442
56454
  for (const value in properties) {
56443
56455
  props.set(value, properties[value]);
56444
56456
  }
56445
- columnDefs.push({ label: f.label, name: f.name, userInterface: f.userInterface, options: (_a = this._dataUnit.getField(f.name).properties) === null || _a === void 0 ? void 0 : _a.options, props });
56457
+ const col = { label: f.label, name: f.name, userInterface: f.userInterface, options: (_a = this._dataUnit.getField(f.name).properties) === null || _a === void 0 ? void 0 : _a.options, props };
56458
+ columnDefs.push(col);
56459
+ if (f.userInterface === UserInterface.SEARCHPLUS && ((_b = f.properties) === null || _b === void 0 ? void 0 : _b.DESCRIPTIONFIELD)) {
56460
+ const descriptionCol = this.buildDescriptionColumn(f);
56461
+ columnDefs.push(descriptionCol);
56462
+ f.properties[PRESENTATION_COL_ID_PROP_NAME] = descriptionCol.name;
56463
+ }
56446
56464
  }
56447
56465
  });
56448
56466
  }
@@ -56452,6 +56470,17 @@ class DataSource {
56452
56470
  console.warn(error);
56453
56471
  }
56454
56472
  }
56473
+ buildDescriptionColumn(field) {
56474
+ var _a, _b, _c, _d;
56475
+ const props = new Map();
56476
+ props.set(PRESENTATION_FROM_COL_PROP_NAME, field.name);
56477
+ return {
56478
+ label: `${(_a = field.properties) === null || _a === void 0 ? void 0 : _a.DESCRIPTIONFIELDLABEL} (${(_b = field.properties) === null || _b === void 0 ? void 0 : _b.DESCRIPTIONENTITY})`,
56479
+ name: `${(_c = field.properties) === null || _c === void 0 ? void 0 : _c.ENTITYNAME}.${(_d = field.properties) === null || _d === void 0 ? void 0 : _d.DESCRIPTIONFIELD}`,
56480
+ userInterface: UserInterface.SHORTTEXT,
56481
+ props
56482
+ };
56483
+ }
56455
56484
  }
56456
56485
 
56457
56486
  class EzGridCustomHeader {
@@ -56862,6 +56891,21 @@ const buildSwitch = (fieldMetadata) => {
56862
56891
  return combo;
56863
56892
  };
56864
56893
 
56894
+ const buildSearchPlus = ({ name, required, readOnly, dataUnit }) => {
56895
+ const ezSearch = HTMLBuilder.parseElement(`<ez-search-plus
56896
+ class="ez-grid grid_editor"
56897
+ mode="slim"
56898
+ suppress-empty-option=${required}
56899
+ enabled=${!readOnly}
56900
+ hide-description-input=${true}
56901
+ />`);
56902
+ const loader = ApplicationContext.getContextValue("__EZUI__SEARCH__PLUS__OPTION__LOADER__");
56903
+ ezSearch.optionLoader = (argument) => loader(argument, name, dataUnit);
56904
+ ezSearch.autoFocus = true;
56905
+ ezSearch.valueGetter = () => ezSearch.getValueAsync();
56906
+ return ezSearch;
56907
+ };
56908
+
56865
56909
  const buildSearch = ({ name, required, readOnly, eGridCell, dataUnit }) => {
56866
56910
  var _a;
56867
56911
  const ezSearch = HTMLBuilder.parseElement(`<ez-search
@@ -56894,6 +56938,7 @@ uiBuilders.set(UserInterface.CHECKBOX, buildSwitch);
56894
56938
  uiBuilders.set(UserInterface.OPTIONSELECTOR, buildComboBox);
56895
56939
  uiBuilders.set(UserInterface.LONGTEXT, buildTextAreaInput);
56896
56940
  uiBuilders.set(UserInterface.SEARCH, buildSearch);
56941
+ uiBuilders.set(UserInterface.SEARCHPLUS, buildSearchPlus);
56897
56942
  class EzCellEditor {
56898
56943
  init(params) {
56899
56944
  this._rowData = params.data;
@@ -57092,6 +57137,7 @@ class EzGridCustomCellRender extends EzCellRender {
57092
57137
 
57093
57138
  class GridEditionManager {
57094
57139
  constructor(dataUnit, useEnterLikeTab, recordsValidator, editionIsDisabled, customEditors, customRenders, enableContinuousInsert, enableGridInsert, lockerId) {
57140
+ this._inProgressChanges = [];
57095
57141
  this._dataUnit = dataUnit;
57096
57142
  this._recordValidationProcessor = new RecordValidationProcessor(this._dataUnit, {
57097
57143
  getRequiredFields: () => this.getRequiredFields(),
@@ -57191,6 +57237,12 @@ class GridEditionManager {
57191
57237
  return this._enableContinuousInsert && (this._dataUnit.records.length - 1) === ((_a = this._lastCellEdited) === null || _a === void 0 ? void 0 : _a.rowIndex);
57192
57238
  }
57193
57239
  async proceedAutoSave() {
57240
+ var _a;
57241
+ //Aguarda outras promises entrarem na fila
57242
+ await new Promise(resolve => setTimeout(resolve, 100));
57243
+ if (this._inProgressChanges.length) {
57244
+ await Promise.all((_a = this._inProgressChanges) === null || _a === void 0 ? void 0 : _a.map(({ promise }) => promise));
57245
+ }
57194
57246
  if (!this._dataUnit.isDirty()) {
57195
57247
  this.saveSuccess();
57196
57248
  return true;
@@ -57261,7 +57313,9 @@ class GridEditionManager {
57261
57313
  }
57262
57314
  configureColumn(col) {
57263
57315
  col.cellEditor = 'ezCellEditor';
57264
- col.editable = params => this.canEdit(params);
57316
+ if (col.editable != false) {
57317
+ col.editable = params => this.canEdit(params);
57318
+ }
57265
57319
  col.suppressKeyboardEvent = (params) => {
57266
57320
  if (params.event.key === KeyCode.ESCAPE && params.editing) {
57267
57321
  return this._dataUnit.isDirty();
@@ -57445,6 +57499,14 @@ class GridEditionManager {
57445
57499
  return;
57446
57500
  }
57447
57501
  if (value instanceof Promise) {
57502
+ const progressChange = {
57503
+ promise: undefined,
57504
+ resolve: () => { }
57505
+ };
57506
+ progressChange.promise = new Promise((resolve) => {
57507
+ progressChange.resolve = resolve;
57508
+ });
57509
+ this._inProgressChanges.push(progressChange);
57448
57510
  this.handlePromiseValue(event, value);
57449
57511
  return;
57450
57512
  }
@@ -57458,16 +57520,22 @@ class GridEditionManager {
57458
57520
  const resolved = await value;
57459
57521
  return this.updateCellValue(event, resolved);
57460
57522
  }
57461
- updateCellValue(event, newValue) {
57462
- var _a;
57523
+ async updateCellValue(event, newValue) {
57524
+ var _a, _b, _c, _d;
57463
57525
  const fieldName = event.colDef.field;
57464
- event.node.setData(Object.assign(Object.assign({}, event.data), { [fieldName]: newValue }));
57465
- (_a = this._currentEditLock) === null || _a === void 0 ? void 0 : _a.call(this);
57526
+ const newData = { [fieldName]: newValue };
57527
+ const descriptionColName = (_b = (_a = this._dataUnit.getField(fieldName)) === null || _a === void 0 ? void 0 : _a.properties) === null || _b === void 0 ? void 0 : _b[PRESENTATION_COL_ID_PROP_NAME];
57528
+ if (!StringUtils$1.isEmpty(descriptionColName)) {
57529
+ newData[descriptionColName] = newValue === null || newValue === void 0 ? void 0 : newValue.label;
57530
+ }
57531
+ event.node.setData(Object.assign(Object.assign({}, event.data), { newData }));
57532
+ (_c = this._currentEditLock) === null || _c === void 0 ? void 0 : _c.call(this);
57466
57533
  if (event.oldValue !== newValue) {
57467
57534
  this._isGridEdition = true;
57468
- this._dataUnit.setFieldValue(fieldName, newValue, [event.data.__record__id__], { suppressCreateNewRecord: true });
57535
+ await this._dataUnit.setFieldValue(fieldName, newValue, [event.data.__record__id__], { suppressCreateNewRecord: true });
57469
57536
  this._lastCellEdited = { rowIndex: event.rowIndex, column: event.column, rowPinned: undefined };
57470
57537
  }
57538
+ (_d = this._inProgressChanges) === null || _d === void 0 ? void 0 : _d.forEach(({ resolve }) => resolve(newValue));
57471
57539
  }
57472
57540
  setCellEditors(customEditors) {
57473
57541
  var _a;
@@ -70964,6 +71032,7 @@ class AgGridController {
70964
71032
  this._customFormatters = new Map();
70965
71033
  this._gridShowDom = false;
70966
71034
  this.peddingExecutionsOnGridShow = [];
71035
+ this._lastColsConfig = undefined;
70967
71036
  ModuleRegistry.registerModules([
70968
71037
  EnterpriseCoreModule,
70969
71038
  RangeSelectionModule,
@@ -71606,8 +71675,39 @@ class AgGridController {
71606
71675
  });
71607
71676
  this._colDefs = newColDefs;
71608
71677
  if (this._gridOptions && this._gridOptions.api) {
71678
+ this.setColsDefsWithStateIfNeeded(this._colDefs);
71679
+ }
71680
+ }
71681
+ setColsDefsWithStateIfNeeded(colDefs) {
71682
+ if (!this._lastColsConfig) {
71609
71683
  this._gridOptions.api.setColumnDefs(this._colDefs);
71610
71684
  }
71685
+ /*
71686
+ Caso a definição de colunas esteja sendo atualizada,
71687
+ e existe uma config aplicada, temos que considerar essa
71688
+ config ao adicionar nova definição de colunas.
71689
+ PS: Poderia apenas chamar o setColumnsState, porém,
71690
+ isso impactaria em performance, e o usuário ia perceber
71691
+ a mudança das colunas visualmente na grade, o que traria
71692
+ uma experiencia ruim.
71693
+ */
71694
+ const colDefsWithConfigs = this.getColsDefWithConfigApplied(colDefs, this._lastColsConfig);
71695
+ this._gridOptions.api.setColumnDefs(colDefsWithConfigs);
71696
+ }
71697
+ getColsDefWithConfigApplied(colDefs, colsConfig) {
71698
+ //Cria map de colunas existentes na config e seu índice
71699
+ const orderMap = colsConfig.reduce((map, col, index) => {
71700
+ map[col.name] = index;
71701
+ return map;
71702
+ }, {});
71703
+ //Remove colunas que não existem na config
71704
+ const filteredColsDefs = colDefs.filter((col) => !orderMap.hasOwnProperty(col.colId));
71705
+ //Ordena colunas baseada na config aplicada
71706
+ const sortedColumnDefs = filteredColsDefs.sort((a, b) => {
71707
+ var _a, _b;
71708
+ return ((_a = orderMap[a.field]) !== null && _a !== void 0 ? _a : Number.MAX_VALUE) - ((_b = orderMap[b.field]) !== null && _b !== void 0 ? _b : Number.MAX_VALUE);
71709
+ });
71710
+ return sortedColumnDefs;
71611
71711
  }
71612
71712
  hideSelectionColumn() {
71613
71713
  var _a, _b;
@@ -71641,6 +71741,7 @@ class AgGridController {
71641
71741
  if (this._grid === undefined) {
71642
71742
  throw new Error('Erro interno: Grid ainda não inicializado.');
71643
71743
  }
71744
+ this._lastColsConfig = state;
71644
71745
  const colDef = this._gridOptions.columnApi.getColumns();
71645
71746
  let columns = this.getColumnsDef();
71646
71747
  let visibleColumns = [];
@@ -71649,14 +71750,39 @@ class AgGridController {
71649
71750
  const columnsOffset = colDef.length - columns.length;
71650
71751
  this._gridConfig = state;
71651
71752
  let sort = [];
71652
- state.forEach((cfgColumn, index) => {
71753
+ let currentIndex = 0;
71754
+ state.forEach((cfgColumn) => {
71755
+ var _a, _b;
71653
71756
  const colWidth = this.getColumnWidth(cfgColumn);
71654
- this._gridOptions.columnApi.moveColumn(cfgColumn.name, index + columnsOffset);
71757
+ this._gridOptions.columnApi.moveColumn(cfgColumn.name, currentIndex + columnsOffset);
71655
71758
  this._gridOptions.columnApi.setColumnWidth(cfgColumn.name, colWidth);
71656
71759
  visibleColumns.push(cfgColumn.name);
71657
71760
  if (cfgColumn.ascending !== undefined) {
71658
71761
  sort.push({ colId: cfgColumn.name, sort: cfgColumn.ascending !== true ? 'desc' : 'asc', sortIndex: cfgColumn.orderIndex });
71659
71762
  }
71763
+ currentIndex++;
71764
+ const fieldMD = (_a = this._dataUnit) === null || _a === void 0 ? void 0 : _a.getField(cfgColumn.name);
71765
+ /*
71766
+ Migração para o SEARCHPLUS, caso de uso:
71767
+ - Agora existe uma coluna para o campo de descrição do relaciona
71768
+ - Essa col, não existe na config da grade que já foi salva pelo DS
71769
+ - Nesse caso, precisamos inserir a coluna de descrição automaticamente para que
71770
+ os usuários não percam a apresentação do campo de descrição.
71771
+ PS: Caso esteja herdando do HTML5, devemos manter a config como está la
71772
+ */
71773
+ if (this.needToAddDescriptionColumn(cfgColumn, fieldMD, state)) {
71774
+ const descriptionColID = (_b = fieldMD === null || fieldMD === void 0 ? void 0 : fieldMD.properties) === null || _b === void 0 ? void 0 : _b[PRESENTATION_COL_ID_PROP_NAME];
71775
+ if (!descriptionColID)
71776
+ return;
71777
+ const descriptionCol = this._gridOptions.columnApi.getColumn(descriptionColID);
71778
+ const descriptionColDef = descriptionCol === null || descriptionCol === void 0 ? void 0 : descriptionCol.getColDef();
71779
+ const descriptionHeaderName = descriptionColDef === null || descriptionColDef === void 0 ? void 0 : descriptionColDef.headerName;
71780
+ const descriptionColSize = this.getColumnWidthByLabel(descriptionHeaderName);
71781
+ this._gridOptions.columnApi.moveColumn(descriptionColID, currentIndex + columnsOffset);
71782
+ this._gridOptions.columnApi.setColumnWidth(descriptionColID, descriptionColSize);
71783
+ visibleColumns.push(descriptionColID);
71784
+ currentIndex++;
71785
+ }
71660
71786
  });
71661
71787
  let invisibleColumns = columns.filter(column => !visibleColumns.includes(column.name)).map(column => column.name);
71662
71788
  this._gridOptions.columnApi.setColumnsVisible(visibleColumns, true);
@@ -71666,6 +71792,16 @@ class AgGridController {
71666
71792
  defaultState: { sort: null },
71667
71793
  });
71668
71794
  }
71795
+ needToAddDescriptionColumn(cfgColumn, fieldMD, stateConfig) {
71796
+ var _a, _b;
71797
+ if (!fieldMD) {
71798
+ return false;
71799
+ }
71800
+ const configVersion = ((_a = cfgColumn.configVersion) !== null && _a !== void 0 ? _a : 0);
71801
+ const isSearchPlus = (fieldMD === null || fieldMD === void 0 ? void 0 : fieldMD.userInterface) == UserInterface.SEARCHPLUS;
71802
+ const descriptionColID = (_b = fieldMD === null || fieldMD === void 0 ? void 0 : fieldMD.properties) === null || _b === void 0 ? void 0 : _b[PRESENTATION_COL_ID_PROP_NAME];
71803
+ return isSearchPlus && configVersion < 1 && stateConfig.find(col => col.name === descriptionColID) != undefined;
71804
+ }
71669
71805
  getColumnsState() {
71670
71806
  if (this._grid === undefined) {
71671
71807
  throw new Error('Erro interno: Grid ainda não inicializado.');
@@ -71725,7 +71861,7 @@ class AgGridController {
71725
71861
  return filterOptions.map(item => item.check).includes(true);
71726
71862
  }
71727
71863
  buildColDef(source) {
71728
- var _a, _b, _c;
71864
+ var _a, _b, _c, _d;
71729
71865
  let tooltip = undefined;
71730
71866
  const propSortable = StringUtils$1.getBooleanValue((_a = source.props) === null || _a === void 0 ? void 0 : _a.get('gridSortable'), true);
71731
71867
  if ((_b = source.props) === null || _b === void 0 ? void 0 : _b.get('gridHeaderTooltip')) {
@@ -71747,6 +71883,11 @@ class AgGridController {
71747
71883
  showColumnFilter: (leftPosition) => this.showFilterColumn({ columnName: source.name, columnLabel: source.label, leftPosition, filteredOptions: this._filteredColumns.get(source.name), fromIcon: true }),
71748
71884
  },
71749
71885
  valueFormatter: params => {
71886
+ var _a, _b, _c, _d;
71887
+ const presentationFrom = (_a = source === null || source === void 0 ? void 0 : source.props) === null || _a === void 0 ? void 0 : _a.get(PRESENTATION_FROM_COL_PROP_NAME);
71888
+ if (presentationFrom) {
71889
+ return (_d = (_c = (_b = params === null || params === void 0 ? void 0 : params.data) === null || _b === void 0 ? void 0 : _b[presentationFrom]) === null || _c === void 0 ? void 0 : _c.label) !== null && _d !== void 0 ? _d : "";
71890
+ }
71750
71891
  if (params.value === undefined || params.value === null) {
71751
71892
  return "";
71752
71893
  }
@@ -71766,6 +71907,7 @@ class AgGridController {
71766
71907
  return this.getFormatterByColumn(params, source);
71767
71908
  },
71768
71909
  cellStyle: this.getStyleByColumn(source),
71910
+ editable: !((_d = source.props) === null || _d === void 0 ? void 0 : _d.has(PRESENTATION_FROM_COL_PROP_NAME))
71769
71911
  });
71770
71912
  }
71771
71913
  setCustomFormatters(customFormatters) {
@@ -71781,8 +71923,11 @@ class AgGridController {
71781
71923
  };
71782
71924
  }
71783
71925
  getStyleByColumn(source) {
71926
+ var _a;
71784
71927
  let cellStyle = this.getInitCellStyle();
71785
- switch (source === null || source === void 0 ? void 0 : source.userInterface) {
71928
+ const primitiveUIType = (_a = source === null || source === void 0 ? void 0 : source.props) === null || _a === void 0 ? void 0 : _a.get("PRIMITIVETUIYPE");
71929
+ const uitype = source === null || source === void 0 ? void 0 : source.userInterface;
71930
+ switch (primitiveUIType !== null && primitiveUIType !== void 0 ? primitiveUIType : uitype) {
71786
71931
  case UserInterface.DECIMALNUMBER:
71787
71932
  case UserInterface.INTEGERNUMBER:
71788
71933
  cellStyle['text-align'] = 'right';
@@ -71798,7 +71943,7 @@ class AgGridController {
71798
71943
  return cellStyle;
71799
71944
  }
71800
71945
  getFormatterByColumn(params, source) {
71801
- var _a;
71946
+ var _a, _b, _c, _d;
71802
71947
  if ((source === null || source === void 0 ? void 0 : source.userInterface) === 'OPTIONSELECTOR' && source.options) {
71803
71948
  const prop = source === null || source === void 0 ? void 0 : source.options;
71804
71949
  let options;
@@ -71835,6 +71980,9 @@ class AgGridController {
71835
71980
  return params === null || params === void 0 ? void 0 : params.value;
71836
71981
  }
71837
71982
  }
71983
+ if ((source === null || source === void 0 ? void 0 : source.userInterface) === UserInterface.SEARCHPLUS) {
71984
+ return (_d = (_c = (_b = params === null || params === void 0 ? void 0 : params.value) === null || _b === void 0 ? void 0 : _b.value) !== null && _c !== void 0 ? _c : params === null || params === void 0 ? void 0 : params.value) !== null && _d !== void 0 ? _d : "";
71985
+ }
71838
71986
  if ((source === null || source === void 0 ? void 0 : source.userInterface) === UserInterface.DECIMALNUMBER) {
71839
71987
  if (params.value != undefined) {
71840
71988
  const precision = Number(source.props.get('precision')) || 2;
@@ -72008,7 +72156,7 @@ class AgGridController {
72008
72156
  this._gridOptions.api.stopEditing();
72009
72157
  }
72010
72158
  getColumnWidth(cfgColumn) {
72011
- var _a, _b;
72159
+ var _a, _b, _c, _d, _e, _f;
72012
72160
  if (cfgColumn == undefined) {
72013
72161
  return;
72014
72162
  }
@@ -72020,10 +72168,14 @@ class AgGridController {
72020
72168
  return parseInt(cfgColumn.width) + this.DEFAULT_FONT_SIZE_HTML5;
72021
72169
  }
72022
72170
  const field = (_a = this._dataUnit) === null || _a === void 0 ? void 0 : _a.getField(cfgColumn.name);
72171
+ const label = (_b = field === null || field === void 0 ? void 0 : field.label) !== null && _b !== void 0 ? _b : (_f = (_e = (_d = (_c = this._gridOptions) === null || _c === void 0 ? void 0 : _c.columnApi) === null || _d === void 0 ? void 0 : _d.getColumn(cfgColumn.name)) === null || _e === void 0 ? void 0 : _e.getColDef()) === null || _f === void 0 ? void 0 : _f.headerName;
72023
72172
  if ((field === null || field === void 0 ? void 0 : field.userInterface) === UserInterface.SEARCH) {
72024
72173
  return this.DEFAULT_MAX_SIZE;
72025
72174
  }
72026
- const labelSize = (((_b = field === null || field === void 0 ? void 0 : field.label) === null || _b === void 0 ? void 0 : _b.length) || 0) * this.DEFAULT_FONT_SIZE + this.DEFAULT_ICON_SIZE;
72175
+ return this.getColumnWidthByLabel(label);
72176
+ }
72177
+ getColumnWidthByLabel(label) {
72178
+ const labelSize = ((label === null || label === void 0 ? void 0 : label.length) || 0) * this.DEFAULT_FONT_SIZE + this.DEFAULT_ICON_SIZE;
72027
72179
  return labelSize > this.DEFAULT_MAX_SIZE ? this.DEFAULT_MAX_SIZE : labelSize;
72028
72180
  }
72029
72181
  }
@@ -74627,6 +74779,88 @@ async function detectOverflow(state, options) {
74627
74779
  };
74628
74780
  }
74629
74781
 
74782
+ /**
74783
+ * Provides data to position an inner element of the floating element so that it
74784
+ * appears centered to the reference element.
74785
+ * @see https://floating-ui.com/docs/arrow
74786
+ */
74787
+ const arrow$1 = options => ({
74788
+ name: 'arrow',
74789
+ options,
74790
+ async fn(state) {
74791
+ const {
74792
+ x,
74793
+ y,
74794
+ placement,
74795
+ rects,
74796
+ platform,
74797
+ elements,
74798
+ middlewareData
74799
+ } = state;
74800
+ // Since `element` is required, we don't Partial<> the type.
74801
+ const {
74802
+ element,
74803
+ padding = 0
74804
+ } = evaluate(options, state) || {};
74805
+ if (element == null) {
74806
+ return {};
74807
+ }
74808
+ const paddingObject = getPaddingObject(padding);
74809
+ const coords = {
74810
+ x,
74811
+ y
74812
+ };
74813
+ const axis = getAlignmentAxis(placement);
74814
+ const length = getAxisLength(axis);
74815
+ const arrowDimensions = await platform.getDimensions(element);
74816
+ const isYAxis = axis === 'y';
74817
+ const minProp = isYAxis ? 'top' : 'left';
74818
+ const maxProp = isYAxis ? 'bottom' : 'right';
74819
+ const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';
74820
+ const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];
74821
+ const startDiff = coords[axis] - rects.reference[axis];
74822
+ const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));
74823
+ let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;
74824
+
74825
+ // DOM platform can return `window` as the `offsetParent`.
74826
+ if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {
74827
+ clientSize = elements.floating[clientProp] || rects.floating[length];
74828
+ }
74829
+ const centerToReference = endDiff / 2 - startDiff / 2;
74830
+
74831
+ // If the padding is large enough that it causes the arrow to no longer be
74832
+ // centered, modify the padding so that it is centered.
74833
+ const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;
74834
+ const minPadding = min(paddingObject[minProp], largestPossiblePadding);
74835
+ const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);
74836
+
74837
+ // Make sure the arrow doesn't overflow the floating element if the center
74838
+ // point is outside the floating element's bounds.
74839
+ const min$1 = minPadding;
74840
+ const max = clientSize - arrowDimensions[length] - maxPadding;
74841
+ const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;
74842
+ const offset = clamp(min$1, center, max);
74843
+
74844
+ // If the reference is small enough that the arrow's padding causes it to
74845
+ // to point to nothing for an aligned placement, adjust the offset of the
74846
+ // floating element itself. To ensure `shift()` continues to take action,
74847
+ // a single reset is performed when this is true.
74848
+ const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;
74849
+ const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;
74850
+ return {
74851
+ [axis]: coords[axis] + alignmentOffset,
74852
+ data: {
74853
+ [axis]: offset,
74854
+ centerOffset: center - offset - alignmentOffset,
74855
+ ...(shouldAddOffset && {
74856
+ alignmentOffset
74857
+ })
74858
+ },
74859
+ reset: shouldAddOffset
74860
+ };
74861
+ }
74862
+ });
74863
+
74630
74864
  /**
74631
74865
  * Optimizes the visibility of the floating element by flipping the `placement`
74632
74866
  * in order to keep it in view when the preferred placement(s) will overflow the
@@ -74753,6 +74987,90 @@ const flip$1 = function (options) {
74753
74987
  };
74754
74988
  };
74755
74989
 
74990
+ // For type backwards-compatibility, the `OffsetOptions` type was also
74991
+ // Derivable.
74992
+
74993
+ async function convertValueToCoords(state, options) {
74994
+ const {
74995
+ placement,
74996
+ platform,
74997
+ elements
74998
+ } = state;
74999
+ const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));
75000
+ const side = getSide(placement);
75001
+ const alignment = getAlignment(placement);
75002
+ const isVertical = getSideAxis(placement) === 'y';
75003
+ const mainAxisMulti = ['left', 'top'].includes(side) ? -1 : 1;
75004
+ const crossAxisMulti = rtl && isVertical ? -1 : 1;
75005
+ const rawValue = evaluate(options, state);
75006
+
75007
+ // eslint-disable-next-line prefer-const
75008
+ let {
75009
+ mainAxis,
75010
+ crossAxis,
75011
+ alignmentAxis
75012
+ } = typeof rawValue === 'number' ? {
75013
+ mainAxis: rawValue,
75014
+ crossAxis: 0,
75015
+ alignmentAxis: null
75016
+ } : {
75017
+ mainAxis: rawValue.mainAxis || 0,
75018
+ crossAxis: rawValue.crossAxis || 0,
75019
+ alignmentAxis: rawValue.alignmentAxis
75020
+ };
75021
+ if (alignment && typeof alignmentAxis === 'number') {
75022
+ crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;
75023
+ }
75024
+ return isVertical ? {
75025
+ x: crossAxis * crossAxisMulti,
75026
+ y: mainAxis * mainAxisMulti
75027
+ } : {
75028
+ x: mainAxis * mainAxisMulti,
75029
+ y: crossAxis * crossAxisMulti
75030
+ };
75031
+ }
75032
+
75033
+ /**
75034
+ * Modifies the placement by translating the floating element along the
75035
+ * specified axes.
75036
+ * A number (shorthand for `mainAxis` or distance), or an axes configuration
75037
+ * object may be passed.
75038
+ * @see https://floating-ui.com/docs/offset
75039
+ */
75040
+ const offset$1 = function (options) {
75041
+ if (options === void 0) {
75042
+ options = 0;
75043
+ }
75044
+ return {
75045
+ name: 'offset',
75046
+ options,
75047
+ async fn(state) {
75048
+ var _middlewareData$offse, _middlewareData$arrow;
75049
+ const {
75050
+ x,
75051
+ y,
75052
+ placement,
75053
+ middlewareData
75054
+ } = state;
75055
+ const diffCoords = await convertValueToCoords(state, options);
75056
+
75057
+ // If the placement is the same and the arrow caused an alignment offset
75058
+ // then we don't need to change the positioning coordinates.
75059
+ if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {
75060
+ return {};
75061
+ }
75062
+ return {
75063
+ x: x + diffCoords.x,
75064
+ y: y + diffCoords.y,
75065
+ data: {
75066
+ ...diffCoords,
75067
+ placement
75068
+ }
75069
+ };
75070
+ }
75071
+ };
75072
+ };
75073
+
74756
75074
  /**
74757
75075
  * Optimizes the visibility of the floating element by shifting it in order to
74758
75076
  * keep it in view when it will overflow the clipping boundary.
@@ -75460,6 +75778,15 @@ const platform = {
75460
75778
  isRTL
75461
75779
  };
75462
75780
 
75781
+ /**
75782
+ * Modifies the placement by translating the floating element along the
75783
+ * specified axes.
75784
+ * A number (shorthand for `mainAxis` or distance), or an axes configuration
75785
+ * object may be passed.
75786
+ * @see https://floating-ui.com/docs/offset
75787
+ */
75788
+ const offset = offset$1;
75789
+
75463
75790
  /**
75464
75791
  * Optimizes the visibility of the floating element by shifting it in order to
75465
75792
  * keep it in view when it will overflow the clipping boundary.
@@ -75475,6 +75802,13 @@ const shift = shift$1;
75475
75802
  */
75476
75803
  const flip = flip$1;
75477
75804
 
75805
+ /**
75806
+ * Provides data to position an inner element of the floating element so that it
75807
+ * appears centered to the reference element.
75808
+ * @see https://floating-ui.com/docs/arrow
75809
+ */
75810
+ const arrow = arrow$1;
75811
+
75478
75812
  /**
75479
75813
  * Computes the `x` and `y` coordinates that will place the floating element
75480
75814
  * next to a given reference element.
@@ -76786,6 +77120,455 @@ var SearchMode;
76786
77120
  SearchMode["PREDICTIVE"] = "PREDICTIVE";
76787
77121
  })(SearchMode || (SearchMode = {}));
76788
77122
 
77123
+ const ezSearchPlusCss = ":host{--ez-search--height:42px;--ez-search--width:100%;--ez-search__icon--width:48px;--ez-search--border-radius:var(--border--radius-medium, 12px);--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-color--xlight:var(--background--xlight, #fff);--ez-search--background-medium:var(--background--medium, #f0f3f7);--ez-search--line-height:calc(var(--text--medium, 14px) + 4px);--ez-search__input--background-color:var(--background--medium, #e0e0e0);--ez-search__input--border:var(--border--medium, 2px solid);--ez-search__input--border-color:var(--ez-search__input--background-color);--ez-search__input--focus--border-color:var(--color--primary, #008561);--ez-search__input--disabled--background-color:var(--color--disable-secondary, #F2F5F8);--ez-search__input--disabled--color:var(--text--disable, #AFB6C0);--ez-search__input--error--border-color:#CC2936;--ez-search__btn--color:var(--title--primary, #2B3A54);--ez-search__btn-disabled--color:var(--text--disable, #AFB6C0);--ez-search__btn-hover--color:var(--color--primary, #4e4e4e);--ez-search__label--color:var(--title--primary, #2B3A54);--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--space--medium:var(--space--medium, 12px);--ez-search--space--small:var(--space--small, 6px);--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--medium, 12px);display:flex;flex-wrap:wrap;position:relative;width:var(--ez-search--width)}ez-icon{--ez-icon--color:inherit;font-weight:var(--text-weight--large, 600)}.suppressed-search-input{--ez-text-input__input--border-color:var(--color--strokes, #dce0e8);--ez-text-input__input--disabled--background-color:var(--background--xlight, #fff);--ez-text-input__input--disabled--color:var(--title--primary, #2B3A54)}.list-container{min-width:var(--ez-search__list-min-width);overflow:auto;position:relative;width:100%}.list-wrapper{display:flex;flex-direction:column;box-sizing:border-box;width:0;z-index:var(--more-visible, 2);max-height:350px;min-width:150px;background-color:var(--ez-search--background-color--xlight);border-radius:var(--ez-search--border-radius);box-shadow:var(--shadow, 0px 0px 16px 0px #000)}.list-options{margin-top:0px;box-sizing:border-box;width:100%;height:100%;padding:0;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)}.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)}.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}.message{text-align:center;display:flex;justify-content:center;align-items:center;list-style-type:none;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__list>li:hover{background-color:var(--ez-search--background-medium)}.preselected{background-color:var(--background--medium)}.btn{outline:none;border:none;background:none;cursor:pointer;color:var(--ez-search__btn--color)}.btn:disabled{cursor:not-allowed;color:var(--ez-search__btn-disabled--color)}.btn:disabled:hover{cursor:not-allowed;color:var(--ez-search__btn-disabled--color)}.btn:hover{color:var(--ez-search__btn-hover--color)}.btn__close{visibility:hidden}ez-text-input:hover .btn__close,ez-text-input:focus .btn__close{visibility:visible}@-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}}.ez-search-plus__container{display:flex;flex-grow:1;gap:3px}.ez-search-plus__text-input{--ez-text-input--border-top-left-radius:0px;--ez-text-input--border-bottom-left-radius:0px}.ez-search-plus__code-input-no-border{--ez-text-input--border-top-right-radius:0px;--ez-text-input--border-bottom-right-radius:0px}.ez-search-plus__code-input{width:107px}.ez-search-plus__code-input-full{width:100%}.description-input-container{width:100%}";
77124
+
77125
+ const EzSearchPlus$1 = class extends HTMLElement$1 {
77126
+ constructor() {
77127
+ super();
77128
+ this.__registerHost();
77129
+ this.__attachShadow();
77130
+ this.ezChange = createEvent(this, "ezChange", 7);
77131
+ this.SEARCH_DESCRIPTION_TIMEOUT = 300;
77132
+ this.INTERVAL_TO_RETRY_ASYNC_VALUE = 100;
77133
+ this.value = undefined;
77134
+ this.enabled = true;
77135
+ this.disableCodeInput = false;
77136
+ this.disableDescriptionInput = false;
77137
+ this.label = undefined;
77138
+ this.codLabel = undefined;
77139
+ this.hideDescriptionInput = false;
77140
+ this.canShowError = true;
77141
+ this.errorMessage = undefined;
77142
+ this.mode = "regular";
77143
+ this.contextProperties = undefined;
77144
+ this.optionLoader = undefined;
77145
+ this.showOptionValue = true;
77146
+ this.stopPropagateEnterKeyEvent = false;
77147
+ this.autoFocus = false;
77148
+ this.showSelectedValue = true;
77149
+ this.suppressEmptyOption = false;
77150
+ this.hideErrorOnFocusOut = true;
77151
+ this.listOptionsPosition = undefined;
77152
+ this.isTextSearch = false;
77153
+ this.ignoreLimitCharsToSearch = false;
77154
+ this.suppressSearch = false;
77155
+ this.suppressPreLoad = true;
77156
+ this.ensureClearButtonVisible = false;
77157
+ this.descriptionValue = "";
77158
+ this.codeValue = "";
77159
+ this.isLoadingDescription = false;
77160
+ this.searchDescriptionIsOpen = false;
77161
+ this.visibleOptions = undefined;
77162
+ this.showLoading = true;
77163
+ }
77164
+ async observeValue(newValue, oldValue) {
77165
+ const newNormalizedValue = this.normalizeValueToCodeValue(newValue);
77166
+ const oldNormalizedValue = this.normalizeValueToCodeValue(oldValue);
77167
+ if (newNormalizedValue == oldNormalizedValue)
77168
+ return;
77169
+ if (newNormalizedValue == undefined) {
77170
+ this.codeValue = undefined;
77171
+ this.descriptionValue = undefined;
77172
+ this.ezChange.emit(undefined);
77173
+ return;
77174
+ }
77175
+ this.codeValue = newNormalizedValue;
77176
+ try {
77177
+ this.descriptionValue = await this.normalizeCodeToDescriptionValue(newValue);
77178
+ }
77179
+ catch (err) {
77180
+ this.value = undefined;
77181
+ console.warn("[EzSearchPlus] Erro ao obter descrição do registro.", err);
77182
+ throw err;
77183
+ }
77184
+ this.ezChange.emit(this.buildCurrentValue());
77185
+ }
77186
+ canShowLoadSpinDescription() {
77187
+ return this.isLoadingDescription;
77188
+ }
77189
+ /**
77190
+ * Aplica o foco no campo.
77191
+ */
77192
+ async setFocus(options) {
77193
+ var _a;
77194
+ if (this.disableCodeInput) {
77195
+ (_a = this._textInputDescriptionValue) === null || _a === void 0 ? void 0 : _a.setFocus(options);
77196
+ return;
77197
+ }
77198
+ if (this._latestFocusedInputElement) {
77199
+ this._latestFocusedInputElement.setFocus(options);
77200
+ return;
77201
+ }
77202
+ this._textInputCodeValue.setFocus(options);
77203
+ }
77204
+ /**
77205
+ * Obtém o valor do componente só após a compo de apresentação
77206
+ * ter sido resolvido pelo option loader quando necessário
77207
+ */
77208
+ async getValueAsync() {
77209
+ if (!this.isLoadingDescription) {
77210
+ const currentOpt = this.buildCurrentValue();
77211
+ return new Promise(resolve => resolve(currentOpt));
77212
+ }
77213
+ return new Promise(resolve => {
77214
+ let id = setInterval(() => {
77215
+ if (!this.isLoadingDescription) {
77216
+ clearInterval(id);
77217
+ const currentOpt = this.buildCurrentValue();
77218
+ resolve(currentOpt);
77219
+ }
77220
+ }, this.INTERVAL_TO_RETRY_ASYNC_VALUE);
77221
+ });
77222
+ }
77223
+ /**
77224
+ * Limpa o valor do campo de pesquisa
77225
+ */
77226
+ async clearValue() {
77227
+ this.clearSearch();
77228
+ }
77229
+ /**
77230
+ * Remove o foco do campo.
77231
+ */
77232
+ async setBlur() {
77233
+ var _a, _b;
77234
+ (_a = this._textInputCodeValue) === null || _a === void 0 ? void 0 : _a.setBlur();
77235
+ (_b = this._textInputDescriptionValue) === null || _b === void 0 ? void 0 : _b.setBlur();
77236
+ }
77237
+ /**
77238
+ * Retorna se o conteúdo é inválido.
77239
+ */
77240
+ async isInvalid() {
77241
+ return typeof this.errorMessage === "string" && this.errorMessage.trim() !== "";
77242
+ }
77243
+ componentWillLoad() {
77244
+ if (this.value && StringUtils$1.isEmpty(this.codeValue)) {
77245
+ this.observeValue(this.value, undefined);
77246
+ }
77247
+ }
77248
+ componentDidLoad() {
77249
+ CSSVarsUtils.applyVarsTextInput(this.el, this._textInputCodeValue);
77250
+ CSSVarsUtils.applyVarsTextInput(this.el, this._textInputDescriptionValue);
77251
+ this.initKeyboardManager();
77252
+ if (this.autoFocus) {
77253
+ requestAnimationFrame(() => {
77254
+ this.setFocus({ selectText: true });
77255
+ });
77256
+ }
77257
+ }
77258
+ clearSearch() {
77259
+ this.value = null;
77260
+ }
77261
+ getCodLabel() {
77262
+ var _a;
77263
+ if (this.hideDescriptionInput) {
77264
+ return this.label;
77265
+ }
77266
+ return (_a = this.codLabel) !== null && _a !== void 0 ? _a : "Cód.";
77267
+ }
77268
+ async normalizeCodeToDescriptionValue(valueToNormalize) {
77269
+ if (!valueToNormalize) {
77270
+ return "";
77271
+ }
77272
+ if (typeof valueToNormalize == 'string') {
77273
+ try {
77274
+ valueToNormalize = JSON.parse(valueToNormalize);
77275
+ if ((valueToNormalize === null || valueToNormalize === void 0 ? void 0 : valueToNormalize.value) && !(valueToNormalize === null || valueToNormalize === void 0 ? void 0 : valueToNormalize.label)) {
77276
+ return await this.loadDescriptionValueByCode(valueToNormalize === null || valueToNormalize === void 0 ? void 0 : valueToNormalize.value);
77277
+ }
77278
+ }
77279
+ catch (e) {
77280
+ return await this.loadDescriptionValueByCode(valueToNormalize);
77281
+ }
77282
+ }
77283
+ //Se é diferente de objeto, temos que resolver a descrição
77284
+ if (typeof valueToNormalize != 'object') {
77285
+ return await this.loadDescriptionValueByCode(valueToNormalize);
77286
+ }
77287
+ return valueToNormalize === null || valueToNormalize === void 0 ? void 0 : valueToNormalize.label;
77288
+ }
77289
+ normalizeValueToCodeValue(valueToNormalize) {
77290
+ if (!valueToNormalize) {
77291
+ return undefined;
77292
+ }
77293
+ if (typeof valueToNormalize == 'string') {
77294
+ try {
77295
+ valueToNormalize = JSON.parse(valueToNormalize);
77296
+ }
77297
+ catch (e) {
77298
+ return valueToNormalize;
77299
+ }
77300
+ }
77301
+ if (typeof valueToNormalize != 'object') {
77302
+ return valueToNormalize;
77303
+ }
77304
+ return valueToNormalize === null || valueToNormalize === void 0 ? void 0 : valueToNormalize.value;
77305
+ }
77306
+ async loadDescriptionValueByCode(codeValue) {
77307
+ if (!this.optionLoader) {
77308
+ console.warn("optionLoader não definido");
77309
+ return "";
77310
+ }
77311
+ try {
77312
+ this.isLoadingDescription = true;
77313
+ const searchArgument = { mode: SearchMode$2.LOAD_DESCRIPTION, argument: codeValue };
77314
+ const loadedOption = await this.optionLoader(searchArgument);
77315
+ if (!loadedOption) {
77316
+ return "";
77317
+ }
77318
+ return loadedOption.label;
77319
+ }
77320
+ finally {
77321
+ this.isLoadingDescription = false;
77322
+ }
77323
+ }
77324
+ handleCodeInputFocusOut() {
77325
+ this.cancelSelection();
77326
+ if (this.codeValue == this._textInputCodeValue.value)
77327
+ return;
77328
+ this.value = this._textInputCodeValue.value;
77329
+ }
77330
+ handleSearchClick() {
77331
+ this.loadAdvancedSearch();
77332
+ }
77333
+ async loadAdvancedSearch() {
77334
+ if (!this.optionLoader) {
77335
+ console.warn("optionLoader não definido");
77336
+ return;
77337
+ }
77338
+ const searchArgument = { mode: SearchMode$2.ADVANCED, argument: "" };
77339
+ let selectedItem = undefined;
77340
+ try {
77341
+ selectedItem = await this.optionLoader(searchArgument, this.contextProperties);
77342
+ }
77343
+ catch (ignore) { }
77344
+ if (!selectedItem)
77345
+ return;
77346
+ this.value = selectedItem;
77347
+ }
77348
+ buildCurrentValue() {
77349
+ if (StringUtils$1.isEmpty(this.codeValue)) {
77350
+ return undefined;
77351
+ }
77352
+ return {
77353
+ value: this.codeValue,
77354
+ label: this.descriptionValue
77355
+ };
77356
+ }
77357
+ async handleTextInputChangeHandler(event) {
77358
+ if (!this.searchDescriptionIsOpen) {
77359
+ this._popover.show();
77360
+ }
77361
+ const argument = event.target.value;
77362
+ await this.debounceLoaderOptions(argument);
77363
+ }
77364
+ async debounceLoaderOptions(argument) {
77365
+ if (this._debounceSearch)
77366
+ clearTimeout(this._debounceSearch);
77367
+ return new Promise((resolve) => {
77368
+ this._debounceSearch = setTimeout(async () => {
77369
+ await this.processOptionsLoader(argument);
77370
+ resolve();
77371
+ }, this.SEARCH_DESCRIPTION_TIMEOUT);
77372
+ });
77373
+ }
77374
+ async processOptionsLoader(argument) {
77375
+ try {
77376
+ this.showLoading = true;
77377
+ const searchArgument = { mode: SearchMode$2.PREDICTIVE, argument };
77378
+ this.visibleOptions = await this.optionLoader(searchArgument);
77379
+ }
77380
+ finally {
77381
+ this.showLoading = false;
77382
+ }
77383
+ }
77384
+ handleSelectItem(evt) {
77385
+ const currentOpt = evt.detail;
77386
+ this.value = currentOpt;
77387
+ this._popover.hide();
77388
+ window.requestAnimationFrame(() => {
77389
+ var _a;
77390
+ (_a = this._textInputDescriptionValue) === null || _a === void 0 ? void 0 : _a.setFocus({ selectText: true });
77391
+ });
77392
+ }
77393
+ async handleArrowUp() {
77394
+ if (!this.isOptionsVisible()) {
77395
+ return;
77396
+ }
77397
+ await this._searchList.previousOption();
77398
+ }
77399
+ async handleArrowDown() {
77400
+ if (!this.isOptionsVisible()) {
77401
+ return;
77402
+ }
77403
+ await this._searchList.nextOption();
77404
+ }
77405
+ async selectCurrentItem() {
77406
+ var _a;
77407
+ await ((_a = this._searchList) === null || _a === void 0 ? void 0 : _a.selectCurrentItem());
77408
+ }
77409
+ async cancelSelection() {
77410
+ var _a, _b, _c, _d;
77411
+ if (this._textInputDescriptionValue && this._textInputDescriptionValue.value != ((_a = this.value) === null || _a === void 0 ? void 0 : _a.label)) {
77412
+ this._textInputDescriptionValue.value = (_b = this.value) === null || _b === void 0 ? void 0 : _b.label;
77413
+ }
77414
+ await ((_c = this._searchList) === null || _c === void 0 ? void 0 : _c.cancelSelection());
77415
+ (_d = this._popover) === null || _d === void 0 ? void 0 : _d.hide();
77416
+ }
77417
+ async handleInputTab() {
77418
+ await this.cancelSelection();
77419
+ }
77420
+ async handleInputEsc() {
77421
+ var _a;
77422
+ await this.cancelSelection();
77423
+ await ((_a = this._latestFocusedInputElement) === null || _a === void 0 ? void 0 : _a.setFocus({ selectText: true }));
77424
+ }
77425
+ async initKeyboardManager() {
77426
+ this._keyboardManager = new KeyboardManager();
77427
+ const opts = { element: this.el, propagate: true };
77428
+ this._keyboardManager
77429
+ .bind("ArrowUp", () => this.handleArrowUp(), opts)
77430
+ .bind("ArrowDown", () => this.handleArrowDown(), opts)
77431
+ .bind("Enter", () => this.selectCurrentItem(), opts)
77432
+ .bind("Tab", () => this.handleInputTab(), opts)
77433
+ .bind("Escape", () => this.handleInputEsc(), opts);
77434
+ }
77435
+ disconnectedCallback() {
77436
+ this._keyboardManager
77437
+ .unbind("ArrowUp")
77438
+ .unbind("ArrowDown")
77439
+ .unbind("Enter")
77440
+ .unbind("Tab")
77441
+ .unbind("Escape");
77442
+ }
77443
+ isOptionsVisible() {
77444
+ return this._popover.opened;
77445
+ }
77446
+ setLatestFocusedInputElement(el) {
77447
+ this._latestFocusedInputElement = el;
77448
+ }
77449
+ handleCodeInputFocus() {
77450
+ this.setLatestFocusedInputElement(this._textInputCodeValue);
77451
+ }
77452
+ handleDescriptionInputFocus() {
77453
+ this.setLatestFocusedInputElement(this._textInputDescriptionValue);
77454
+ }
77455
+ getRightIconElement() {
77456
+ var _a, _b;
77457
+ if (!this.ensureClearButtonVisible && (!this.value && !((_a = this._textInputCodeValue) === null || _a === void 0 ? void 0 : _a.value) && !((_b = this._textInputDescriptionValue) === null || _b === void 0 ? void 0 : _b.value))) {
77458
+ return null;
77459
+ }
77460
+ return h("button", { class: "btn btn__close", slot: "rightIcon", disabled: !this.enabled, tabindex: -1, onClick: () => this.clearSearch() }, h("ez-icon", { iconName: "close" }));
77461
+ }
77462
+ getLeftIconElement() {
77463
+ return h("button", { class: "btn", slot: "leftIcon", disabled: !this.enabled, tabindex: -1, onClick: () => this.handleSearchClick() }, this.canShowLoadSpinDescription() ? h("div", { class: "message__loading" }) : h("ez-icon", { iconName: "search" }));
77464
+ }
77465
+ render() {
77466
+ ElementIDUtils.addIDInfoIfNotExists(this.el, 'input');
77467
+ return (h(Host, null, h("div", { class: "ez-search-plus__container" }, h("ez-text-input", { ref: elem => this._textInputCodeValue = elem, class: {
77468
+ "ez-search-plus__code-input": true,
77469
+ "ez-search-plus__code-input-no-border": !this.hideDescriptionInput,
77470
+ "ez-search-plus__code-input-full": this.hideDescriptionInput
77471
+ }, "data-element-id": ElementIDUtils.getInternalIDInfo("codeInput"), "data-slave-mode": "true", enabled: !this.disableCodeInput && this.enabled, mode: this.mode, label: this.getCodLabel(), hasInvalid: !StringUtils$1.isEmpty(this.errorMessage), errorMessage: this.hideDescriptionInput ? this.errorMessage : "", value: this.codeValue, onFocusout: () => this.handleCodeInputFocusOut(), onFocus: () => this.handleCodeInputFocus() }, this.getLeftIconElement()), !this.hideDescriptionInput && h("div", { class: "description-input-container" }, h("ez-text-input", { ref: elem => this._textInputDescriptionValue = elem, tabIndex: -1, class: "ez-search-plus__text-input", "data-element-id": ElementIDUtils.getInternalIDInfo("textInput"), "data-slave-mode": "true", enabled: !this.disableDescriptionInput && this.enabled, label: this.label, canShowError: this.canShowError, errorMessage: this.errorMessage, mode: this.mode, value: this.descriptionValue, onInput: event => this.handleTextInputChangeHandler(event), onFocus: () => this.handleDescriptionInputFocus() }, this.getRightIconElement()), h("ez-popover-plus", { ref: elem => this._popover = elem, anchorElement: this._textInputDescriptionValue, autoClose: true, boxWidth: 'fit-content', overlayType: 'none', useAnchorSize: true, onEzVisibilityChange: event => this.searchDescriptionIsOpen = event.detail }, h("ez-search-result-list", { ref: (ref) => this._searchList = ref, showLoading: this.showLoading, visibleOptions: this.visibleOptions, value: this.value, showOptionValue: this.showOptionValue, onChangeValue: (evt) => this.handleSelectItem(evt) }))))));
77472
+ }
77473
+ get el() { return this; }
77474
+ static get watchers() { return {
77475
+ "value": ["observeValue"]
77476
+ }; }
77477
+ static get style() { return ezSearchPlusCss; }
77478
+ };
77479
+
77480
+ const ezSearchResultListCss = ":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}}";
77481
+
77482
+ const EzSearchResultList$1 = class extends HTMLElement$1 {
77483
+ constructor() {
77484
+ super();
77485
+ this.__registerHost();
77486
+ this.__attachShadow();
77487
+ this.changeValue = createEvent(this, "changeValue", 7);
77488
+ this._textEmptyList = "Nenhum resultado encontrado";
77489
+ this._startHighlightTag = "<span class='card-item__highlight'>";
77490
+ this._endHighlightTag = "</span>";
77491
+ this.showLoading = undefined;
77492
+ this.visibleOptions = [];
77493
+ this.value = undefined;
77494
+ this.showOptionValue = true;
77495
+ this._preSelection = undefined;
77496
+ }
77497
+ async nextOption() {
77498
+ const newPreSelection = this._preSelection === undefined ? 0 : Math.min(this._preSelection + 1, this.visibleOptions.length - 1);
77499
+ this.preSelectItemByIndex(newPreSelection);
77500
+ }
77501
+ async previousOption() {
77502
+ const newPreSelection = this._preSelection === undefined ? 0 : Math.max(this._preSelection - 1, 0);
77503
+ this.preSelectItemByIndex(newPreSelection);
77504
+ }
77505
+ preSelectItemByIndex(newIndex) {
77506
+ this._preSelection = newIndex;
77507
+ const option = this.visibleOptions[newIndex];
77508
+ this.scrollToOption(option);
77509
+ }
77510
+ selectOption(newOption) {
77511
+ const newOptionsReplaced = Object.assign(Object.assign({}, newOption), { value: newOption === null || newOption === void 0 ? void 0 : newOption.value, label: newOption === null || newOption === void 0 ? void 0 : newOption.label });
77512
+ const newOptionsFormatted = Object.assign(Object.assign({}, newOptionsReplaced), { value: newOptionsReplaced === null || newOptionsReplaced === void 0 ? void 0 : newOptionsReplaced.value, label: newOptionsReplaced === null || newOptionsReplaced === void 0 ? void 0 : newOptionsReplaced.label });
77513
+ this.changeValue.emit(newOptionsFormatted);
77514
+ }
77515
+ createAndSelectOption(detail) {
77516
+ let { key, title } = detail;
77517
+ key = String(key !== null && key !== void 0 ? key : "");
77518
+ const startHighlight = new RegExp(this._startHighlightTag, 'g');
77519
+ const endHighlight = new RegExp(this._endHighlightTag, 'g');
77520
+ title = StringUtils$1.decodeHtmlEntities(title);
77521
+ const option = {
77522
+ value: key === null || key === void 0 ? void 0 : key.replace(startHighlight, '').replace(endHighlight, ''),
77523
+ label: title === null || title === void 0 ? void 0 : title.replace(startHighlight, '').replace(endHighlight, '')
77524
+ };
77525
+ this.selectOption(option);
77526
+ }
77527
+ scrollToOption(opt) {
77528
+ if (!(opt === null || opt === void 0 ? void 0 : opt.value) || !this._optionsList)
77529
+ return;
77530
+ window.requestAnimationFrame(() => {
77531
+ var _a;
77532
+ const currentValue = String((_a = opt === null || opt === void 0 ? void 0 : opt.value) !== null && _a !== void 0 ? _a : "");
77533
+ const liElem = currentValue
77534
+ ? this._optionsList.querySelector(`div#item_${currentValue.replace(/([ #;&,.+*~':"!^$[\]()=<>|/\\])/g, '\\$1')}`)
77535
+ : undefined;
77536
+ if (liElem) {
77537
+ liElem.scrollIntoView({ behavior: "smooth", block: "nearest" });
77538
+ }
77539
+ });
77540
+ }
77541
+ buildItem(opt, index) {
77542
+ var _a;
77543
+ opt.label = opt.label || opt.value;
77544
+ const card = {
77545
+ key: String((_a = opt.presentationValue) !== null && _a !== void 0 ? _a : ""),
77546
+ title: opt.presentationLabel,
77547
+ details: opt.details
77548
+ };
77549
+ return h("div", { style: { "height": "100%" }, class: index === this._preSelection ? "item preselected" : "item", id: `item_${opt.value}`, onMouseDown: () => this.createAndSelectOption(card), onMouseOver: () => { this._preSelection = index; } }, h("ez-card-item", { item: card, compacted: true, enableKey: this.showOptionValue }));
77550
+ }
77551
+ async selectCurrentItem() {
77552
+ this.selectOption(this.visibleOptions[this._preSelection]);
77553
+ }
77554
+ async cancelSelection() {
77555
+ this.cancelPreselection();
77556
+ }
77557
+ cancelPreselection() {
77558
+ this._preSelection = undefined;
77559
+ }
77560
+ canShowListOptions() {
77561
+ return !this.showLoading && this.visibleOptions.length > 0;
77562
+ }
77563
+ render() {
77564
+ return (h(Host, null, h("ul", { class: "list-options", ref: elem => this._optionsList = elem }, !this.showLoading
77565
+ && this.visibleOptions.length === 0
77566
+ && h("div", { class: "message" }, h("span", { class: "message__no-result" }, this._textEmptyList)), this.showLoading
77567
+ && h("div", { class: "message" }, h("div", { class: "message__loading" })), this.canShowListOptions() && this.visibleOptions.map((opt, index) => this.buildItem(opt, index)))));
77568
+ }
77569
+ static get style() { return ezSearchResultListCss; }
77570
+ };
77571
+
76789
77572
  const ezSidebarButtonCss = ":host{position:relative;--ez-sidebar-button--width:6px;--ez-sidebar-button--hover--width:12px;--ez-sidebar-button--height:96px;--ez-sidebar-navigator-button--z-index:var(--elevation--20, 20);--ez-sidebar-button--background-color--xlight:var(--background--xlight, #fff);--ez-sidebar-button--background-color--primary:var(--color--primary);--ez-sidebar-button--space--small:var(--space--small, 6px);--ez-sidebar-button--space--medium:var(--space--medium, 12px);--ez-sidebar-button--box-shadow:var(--shadow--small, 0px 0px 16px rgba(0, 38, 111, 0.07));--ez-sidebar-button--hover--box-shadow:var(--shadow--hard, 0px 0px 16px rgba(43, 58, 84, 0.24));--ez-sidebar-button--border--radius-small:var(--border--radius-small);--ez-sidebar-button--border--radius-medium:var(--border--radius-medium)}button{z-index:var(--ez-sidebar-navigator-button--z-index);position:absolute;display:flex;background:var(--ez-sidebar-button--background-color--xlight);border:0;border-radius:0 var(--ez-sidebar-button--border--radius-medium) var(--ez-sidebar-button--border--radius-medium) 0;box-shadow:var(--ez-sidebar-button--box-shadow);padding:0;cursor:pointer;align-items:center}span{width:var(--ez-sidebar-button--width);height:var(--ez-sidebar-button--height);margin:var(--ez-sidebar-button--space--medium) 0 var(--ez-sidebar-button--space--medium) 0;background:var(--ez-sidebar-button--background-color--primary);border-radius:0 var(--ez-sidebar-button--border--radius-small) var(--ez-sidebar-button--border--radius-small) 0}ez-icon{--ez-icon--color:var(--ez-sidebar-button--background-color--primary)}button:hover{box-shadow:var(--ez-sidebar-button--hover--box-shadow)}button:hover span{width:var(--ez-sidebar-button--hover--width);margin:var(--ez-sidebar-button--space--medium) 0 var(--ez-sidebar-button--space--medium) 0}";
76790
77573
 
76791
77574
  const EzSidebarButton$1 = class extends HTMLElement$1 {
@@ -78597,34 +79380,7 @@ const EzTextEdit$1 = class extends HTMLElement$1 {
78597
79380
  static get style() { return ezTextEditCss; }
78598
79381
  };
78599
79382
 
78600
- /**
78601
- * Aplica comportamento de elipses a um input caso o texto ultrapasse o tamanho disponível.
78602
- *
78603
- * @param inputElement A referência ao elemento input (HTMLInputElement).
78604
- */
78605
- const applyEllipsisToInput = (inputElement) => {
78606
- if (!inputElement || !inputElement.style) {
78607
- console.error('[applyEllipsisToInput] Referência ao elemento input é inválida.');
78608
- return;
78609
- }
78610
- inputElement.style.textOverflow = 'ellipsis';
78611
- inputElement.style.overflow = 'hidden';
78612
- inputElement.style.whiteSpace = 'nowrap';
78613
- const adjustEllipsis = () => {
78614
- const value = inputElement.value || '';
78615
- const isOverflowing = inputElement.scrollWidth > inputElement.clientWidth;
78616
- if (isOverflowing) {
78617
- inputElement.setAttribute('title', value);
78618
- }
78619
- else {
78620
- inputElement.removeAttribute('title');
78621
- }
78622
- };
78623
- inputElement.addEventListener('input', adjustEllipsis);
78624
- adjustEllipsis();
78625
- };
78626
-
78627
- const ezTextInputCss = ":host{--ez-text-input--height:42px;--ez-text-input--width:100%;--ez-text-input__icon--width:48px;--ez-text-input--height--slim:32px;--ez-text-input__min-width:0px;--ez-text-input__max-width:100%;--ez-text-input--border-radius:var(--border--radius-medium, 12px);--ez-text-input--font-size:var(--text--medium, 14px);--ez-text-input--font-family:var(--font-pattern, Arial);--ez-text-input--font-weight:var(--text-weight--medium, 400);--ez-text-input--color:var(--title--primary, #2B3A54);--ez-text-input__margin-bottom:var(--space--small);--ez-text-input__input--background-color:var(--background--light, #ffffff);--ez-text-input__input--border:var(--border--small, 1px solid);--ez-text-input__input--border-color:var(--color--strokes,#DCE0E8);--ez-text-input__input--focus--border-color:var(--color--primary, #008561);--ez-text-input__input--disabled--background-color:var(--background--medium, #F0F3F7);--ez-text-input__input--disabled--color:var(--text--primary, #626E82);--ez-text-input__input--error--border-color:var(--color-alert--error-800,#BD0025);--ez-text-input__input--noborder-color:white;--ez-text-input__input--padding:var(--space--medium, 6px);--ez-text-input__placeholder--color:var(--text--secondary, #a2abb9);--ez-text-input__tooltip_icon--error--color:var(--color-alert--error-800,#BD0025);--ez-text-input__label--floating--top:6px;--ez-text-input__label--padding-top:12px;--ez-text-input__label--padding-left:14px;--ez-text-input__label--padding-right:12px;--ez-text-input__input--focus--icon-color:var(--title--primary, #2B3A54);--ez-text-input__input--disabled--focus--icon-color:var(--text--primary, #626E82);--ez-text-input__tooltip-icon--spacing:var(--space--large);--ez-text-input__tooltip-icon---width:var(--space--large);--ez-text-input__tooltip-icon---horizontal-margin:var(--space--medium, 12px);--ez-text-input__tooltip-icon---vertical-margin:10px;display:flex;flex-wrap:wrap;position:relative;width:var(--ez-text-input--width);min-width:var(--ez-text-input__min-width);max-width:var(--ez-text-input__max-width)}:host(.grid_editor){--ez-text-input--height--slim:25px}input{width:100%;box-sizing:border-box;height:var(--ez-text-input--height);border-radius:var(--ez-text-input--border-radius);font-family:var(--ez-text-input--font-family);font-size:var(--ez-text-input--font-size);border:var(--ez-text-input__input--border);border-color:var(--ez-text-input__input--border-color);background-color:var(--ez-text-input__input--background-color);color:var(--ez-text-input--color);font-weight:var(--ez-text-input--font-weight);padding:var(--ez-text-input__input--padding);margin-bottom:var(--ez-text-input__margin-bottom)}input.no--margin{--ez-text-input__margin-bottom:0}input:disabled{background-color:var(--ez-text-input__input--disabled--background-color);color:var(--ez-text-input__input--disabled--color);cursor:not-allowed}input:focus{outline:none;border-color:var(--ez-text-input__input--focus--border-color)}input.icon--left{padding-left:var(--ez-text-input__icon--width)}input.icon--left.hasError{padding-right:var(--ez-text-input__icon--width)}input.icon--right{padding-right:var(--ez-text-input__icon--width)}input.icon--right.hasError{padding-right:calc(var(--ez-text-input__icon--width) + var(--ez-text-input__tooltip-icon--spacing))}input.hasError{color:var(--ez-text-input--color);border-color:var(--ez-text-input__input--error--border-color);padding-right:calc(var(--ez-text-input__tooltip-icon---width) + (2*var(--ez-text-input__tooltip-icon---horizontal-margin)))}input:disabled.hasError{color:var(--ez-text-input__input--disabled--color)}input.text--right{text-align:right}input:disabled,input:read-only{cursor:not-allowed}.hasError{color:var(--ez-text-input__tooltip_icon--error--color)}.input__label{box-sizing:border-box;position:absolute;z-index:var(--visible);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;-webkit-transition:font-size .05s, top .05s;transition:font-size .05s, top .05s;width:calc(100% - var(--ez-text-input__label--padding-right));left:var(--ez-text-input--space--medium);font-family:var(--ez-text-input--font-family);font-size:var(--ez-text-input--font-size);font-weight:var(--ez-text-input--font-weight);color:var(--ez-text-input--color);top:var(--ez-text-input__label--padding-top);left:var(--ez-text-input__label--padding-left);padding-right:var(--ez-text-input__label--padding-right)}.input__label.hasError{width:calc(100% - 2*(var(--ez-text-input__tooltip-icon--spacing)))}.input__label--floated{font-family:var(--ez-text-input--font-family);font-size:var(--text--extra-small);color:var(--text--primary);top:var(--ez-text-input__label--floating--top)}.input__label--disabled{color:var(--ez-text-input__input--disabled--color);cursor:not-allowed}.input__label--left{text-align:left;left:calc(var(--ez-text-input__icon--width) + 2px);width:calc(100% - var(--ez-text-input__icon--width))}.input__label--left.hasError{width:calc(100% - var(--ez-text-input__icon--width) - var(--ez-text-input__tooltip-icon--spacing))}.input__label--right{right:var(--ez-text-input__icon--width);width:calc(100% - var(--ez-text-input__icon--width))}.input__label--right.hasError{width:calc(100% - var(--ez-text-input__icon--width) - var(--ez-text-input__tooltip-icon--spacing))}.input__label--left.input__label--right{left:calc(var(--ez-text-input__icon--width) + 2px);width:calc(100% - var(--ez-text-input__icon--width) * 2)}.input--with--label{padding-bottom:0}.input--slim{padding-top:var(--space--small, 3px);padding-bottom:var(--space--small, 3px);height:var(--ez-text-input--height--slim)}.input__slim--title{font-size:16px;font-weight:bold}.input--slim::-webkit-input-placeholder,.input--slim:-moz-placeholder,.input--slim::-moz-placeholder,.input--slim:-ms-input-placeholder,.input--slim::placeholder{font-family:var(--ez-text-input--font-family);font-size:var(--ez-text-input--font-size);font-weight:var(--ez-text-input--font-weight);color:var(--ez-text-input__placeholder--color)}.input--slim:disabled::-webkit-input-placeholder,.input--slim:disabled:-moz-placeholder,.input--slim:disabled::-moz-placeholder,.input--slim:disabled:-ms-input-placeholder,.input--slim:disabled::placeholder{color:var(--ez-text-input__input--disabled--color)}input.input__slim--noborder{box-shadow:0 0 0 0;border:0 none;outline:0;background:var(--ez-text-input__input--noborder-color)}ez-icon.tooltip-icon{position:absolute;display:flex;align-items:center;justify-content:center;overflow:hidden;width:var(--ez-text-input__tooltip-icon---width);height:22px;margin:var(--ez-text-input__tooltip-icon---vertical-margin) var(--ez-text-input__tooltip-icon---horizontal-margin);top:0;right:0;z-index:var(--elevation--4);border-radius:var(--ez-text-input--border-radius)}ez-icon.tooltip-icon.rightIconSlot{right:var(--ez-text-input__tooltip-icon--spacing)}ez-icon.tooltip-icon.hasError{--ez-icon--color:var(--ez-text-input__tooltip_icon--error--color)}";
79383
+ const ezTextInputCss = ":host{--ez-text-input--height:42px;--ez-text-input--width:100%;--ez-text-input__icon--width:30px;--ez-text-input--height--slim:32px;--ez-text-input__min-width:0px;--ez-text-input__max-width:100%;--ez-text-input--border-radius:var(--border--radius-medium, 12px);--ez-text-input--border-top-left-radius:var(--ez-text-input--border-radius);--ez-text-input--border-bottom-left-radius:var(--ez-text-input--border-radius);--ez-text-input--border-top-right-radius:var(--ez-text-input--border-radius);--ez-text-input--border-bottom-right-radius:var(--ez-text-input--border-radius);--ez-text-input--font-size:var(--text--medium, 14px);--ez-text-input--font-family:var(--font-pattern, Arial);--ez-text-input--font-weight:var(--text-weight--medium, 400);--ez-text-input--color:var(--title--primary, #2B3A54);--ez-text-input__margin-bottom:var(--space--small);--ez-text-input__input--background-color:var(--background--light, #ffffff);--ez-text-input__input--border:var(--border--small, 1px solid);--ez-text-input__input--border-color:var(--color--strokes,#DCE0E8);--ez-text-input__input--focus--border-color:var(--color--primary, #008561);--ez-text-input__input--disabled--background-color:var(--background--medium, #F0F3F7);--ez-text-input__input--disabled--color:var(--text--primary, #626E82);--ez-text-input__input--error--border-color:var(--color-alert--error-800,#BD0025);--ez-text-input__input--noborder-color:white;--ez-text-input__input--padding:var(--space--medium, 6px);--ez-text-input__placeholder--color:var(--text--secondary, #a2abb9);--ez-text-input__tooltip_icon--error--color:var(--color-alert--error-800,#BD0025);--ez-text-input__label--floating--top:6px;--ez-text-input__label--padding-top:12px;--ez-text-input__label--padding-left:14px;--ez-text-input__label--padding-right:12px;--ez-text-input__input--focus--icon-color:var(--title--primary, #2B3A54);--ez-text-input__input--disabled--focus--icon-color:var(--text--primary, #626E82);--ez-text-input__tooltip-icon--spacing:var(--space--large);--ez-text-input__tooltip-icon---width:var(--space--large);--ez-text-input__tooltip-icon---horizontal-margin:var(--space--medium, 12px);--ez-text-input__tooltip-icon---vertical-margin:10px;display:flex;flex-wrap:wrap;position:relative;width:var(--ez-text-input--width);min-width:var(--ez-text-input__min-width);max-width:var(--ez-text-input__max-width)}:host(.grid_editor){--ez-text-input--height--slim:25px}input{width:100%;box-sizing:border-box;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;height:var(--ez-text-input--height);border-top-left-radius:var(--ez-text-input--border-top-left-radius);border-bottom-left-radius:var(--ez-text-input--border-bottom-left-radius);border-top-right-radius:var(--ez-text-input--border-top-right-radius);border-bottom-right-radius:var(--ez-text-input--border-bottom-right-radius);font-family:var(--ez-text-input--font-family);font-size:var(--ez-text-input--font-size);border:var(--ez-text-input__input--border);border-color:var(--ez-text-input__input--border-color);background-color:var(--ez-text-input__input--background-color);color:var(--ez-text-input--color);font-weight:var(--ez-text-input--font-weight);padding:var(--ez-text-input__input--padding);margin-bottom:var(--ez-text-input__margin-bottom)}input.no--margin{--ez-text-input__margin-bottom:0}input:disabled{background-color:var(--ez-text-input__input--disabled--background-color);color:var(--ez-text-input__input--disabled--color);cursor:not-allowed}input:focus{outline:none;border-color:var(--ez-text-input__input--focus--border-color)}input.icon--left{padding-left:var(--ez-text-input__icon--width)}input.icon--left.hasError{padding-right:var(--ez-text-input__icon--width)}input.icon--right{padding-right:var(--ez-text-input__icon--width)}input.icon--right.hasError{padding-right:calc(var(--ez-text-input__icon--width) + var(--ez-text-input__tooltip-icon--spacing))}input.hasError{color:var(--ez-text-input--color);border-color:var(--ez-text-input__input--error--border-color);padding-right:calc(var(--ez-text-input__tooltip-icon---width) + (2*var(--ez-text-input__tooltip-icon---horizontal-margin)))}input:disabled.hasError{color:var(--ez-text-input__input--disabled--color)}input.text--right{text-align:right}input:disabled,input:read-only{cursor:not-allowed}.hasError{color:var(--ez-text-input__tooltip_icon--error--color)}.input__label{box-sizing:border-box;position:absolute;z-index:var(--visible);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;-webkit-transition:font-size .05s, top .05s;transition:font-size .05s, top .05s;width:calc(100% - var(--ez-text-input__label--padding-right));left:var(--ez-text-input--space--medium);font-family:var(--ez-text-input--font-family);font-size:var(--ez-text-input--font-size);font-weight:var(--ez-text-input--font-weight);color:var(--ez-text-input--color);top:var(--ez-text-input__label--padding-top);left:var(--ez-text-input__label--padding-left);padding-right:var(--ez-text-input__label--padding-right)}.input__label.hasError{width:calc(100% - 2*(var(--ez-text-input__tooltip-icon--spacing)))}.input__label--floated{font-family:var(--ez-text-input--font-family);font-size:var(--text--extra-small);color:var(--text--primary);top:var(--ez-text-input__label--floating--top)}.input__label--disabled{color:var(--ez-text-input__input--disabled--color);cursor:not-allowed}.input__label--left{text-align:left;left:calc(var(--ez-text-input__icon--width) + 2px);width:calc(100% - var(--ez-text-input__icon--width))}.input__label--left.hasError{width:calc(100% - var(--ez-text-input__icon--width) - var(--ez-text-input__tooltip-icon--spacing))}.input__label--right{right:var(--ez-text-input__icon--width);width:calc(100% - var(--ez-text-input__icon--width))}.input__label--right.hasError{width:calc(100% - var(--ez-text-input__icon--width) - var(--ez-text-input__tooltip-icon--spacing))}.input__label--left.input__label--right{left:calc(var(--ez-text-input__icon--width) + 2px);width:calc(100% - var(--ez-text-input__icon--width) * 2)}.input--with--label{padding-bottom:0}.input--slim{padding-top:var(--space--small, 3px);padding-bottom:var(--space--small, 3px);height:var(--ez-text-input--height--slim)}.input__slim--title{font-size:16px;font-weight:bold}.input--slim::-webkit-input-placeholder,.input--slim:-moz-placeholder,.input--slim::-moz-placeholder,.input--slim:-ms-input-placeholder,.input--slim::placeholder{font-family:var(--ez-text-input--font-family);font-size:var(--ez-text-input--font-size);font-weight:var(--ez-text-input--font-weight);color:var(--ez-text-input__placeholder--color)}.input--slim:disabled::-webkit-input-placeholder,.input--slim:disabled:-moz-placeholder,.input--slim:disabled::-moz-placeholder,.input--slim:disabled:-ms-input-placeholder,.input--slim:disabled::placeholder{color:var(--ez-text-input__input--disabled--color)}input.input__slim--noborder{box-shadow:0 0 0 0;border:0 none;outline:0;background:var(--ez-text-input__input--noborder-color)}ez-icon.tooltip-icon{position:absolute;display:flex;align-items:center;justify-content:center;overflow:hidden;width:var(--ez-text-input__tooltip-icon---width);height:22px;margin:var(--ez-text-input__tooltip-icon---vertical-margin) var(--ez-text-input__tooltip-icon---horizontal-margin);top:0;right:0;z-index:var(--elevation--4);border-radius:var(--ez-text-input--border-radius)}ez-icon.tooltip-icon.rightIconSlot{right:var(--ez-text-input__tooltip-icon--spacing)}ez-icon.tooltip-icon.hasError{--ez-icon--color:var(--ez-text-input__tooltip_icon--error--color)}";
78628
79384
 
78629
79385
  const EzTextInput$1 = class extends HTMLElement$1 {
78630
79386
  constructor() {
@@ -78636,6 +79392,7 @@ const EzTextInput$1 = class extends HTMLElement$1 {
78636
79392
  this.value = undefined;
78637
79393
  this.enabled = true;
78638
79394
  this.errorMessage = undefined;
79395
+ this.hasInvalid = false;
78639
79396
  this.mask = undefined;
78640
79397
  this.cleanValueMask = false;
78641
79398
  this.canShowError = true;
@@ -78646,17 +79403,26 @@ const EzTextInput$1 = class extends HTMLElement$1 {
78646
79403
  this.autoFocus = false;
78647
79404
  this.hasRightSlotContent = false;
78648
79405
  }
79406
+ observeHasInvalid() {
79407
+ if (!this._inputElem)
79408
+ return;
79409
+ if (this.hasInvalid) {
79410
+ this._inputElem.classList.add("hasError");
79411
+ }
79412
+ else {
79413
+ this._inputElem.classList.remove("hasError");
79414
+ }
79415
+ }
78649
79416
  observeErrorMessage() {
78650
79417
  if (this._inputElem) {
78651
79418
  this.isInvalid().then((hasError) => {
78652
- var _a;
78653
79419
  if (hasError) {
78654
79420
  this._inputElem.classList.add("hasError");
78655
- (_a = this._tooltipPositioningObserver) === null || _a === void 0 ? void 0 : _a.observe(this._inputElem);
79421
+ // this._tooltipPositioningObserver?.observe(this._inputElem);
78656
79422
  }
78657
79423
  else {
78658
79424
  this._inputElem.classList.remove("hasError");
78659
- this.removeGlobalTooltip();
79425
+ // this.removeGlobalTooltip();
78660
79426
  }
78661
79427
  });
78662
79428
  }
@@ -78864,35 +79630,8 @@ const EzTextInput$1 = class extends HTMLElement$1 {
78864
79630
  }
78865
79631
  this.adjustColorContentSlot("var(--ez-text-input__input--focus--icon-color)");
78866
79632
  }
78867
- renderGlobalTooltip() {
78868
- const tooltip = document.createElement('ez-tooltip');
78869
- tooltip.errorMessage = this.errorMessage;
78870
- tooltip.anchoringElement = this._tooltipIconElem;
78871
- document.body.appendChild(tooltip);
78872
- this._tooltipElem = tooltip;
78873
- }
78874
- removeGlobalTooltip() {
78875
- var _a;
78876
- if (!this._tooltipElem)
78877
- return;
78878
- this._tooltipElem.remove();
78879
- this._tooltipElem = undefined;
78880
- (_a = this._tooltipPositioningObserver) === null || _a === void 0 ? void 0 : _a.unobserve(this._inputElem);
78881
- }
78882
- createTooltipPositioningObserver() {
78883
- const observer = new ResizeObserver(() => {
78884
- if (!this._tooltipElem)
78885
- return;
78886
- if (!this._tooltipIconElem)
78887
- return;
78888
- clearTimeout(this._observerDebounceTimeout);
78889
- this._observerDebounceTimeout = setTimeout(async () => {
78890
- if (this._tooltipElem) {
78891
- await this._tooltipElem.positionTooltip();
78892
- }
78893
- }, 200);
78894
- });
78895
- this._tooltipPositioningObserver = observer;
79633
+ getValue() {
79634
+ return this.mask && this.cleanValueMask ? this.applyMask(this.value) : this.value;
78896
79635
  }
78897
79636
  //---------------------------------------------
78898
79637
  // Lifecycle web component
@@ -78920,7 +79659,7 @@ const EzTextInput$1 = class extends HTMLElement$1 {
78920
79659
  }
78921
79660
  }
78922
79661
  componentDidLoad() {
78923
- var _a, _b;
79662
+ var _a;
78924
79663
  this.observeErrorMessage();
78925
79664
  this.observeMask();
78926
79665
  this.adjustFloatingLabel();
@@ -78934,40 +79673,17 @@ const EzTextInput$1 = class extends HTMLElement$1 {
78934
79673
  var _a;
78935
79674
  this._inputElem.setSelectionRange(0, (_a = this._inputElem) === null || _a === void 0 ? void 0 : _a.value.length);
78936
79675
  });
78937
- this.createTooltipPositioningObserver();
78938
- if (this._inputElem) {
78939
- (_b = this._tooltipPositioningObserver) === null || _b === void 0 ? void 0 : _b.observe(this._inputElem);
78940
- applyEllipsisToInput(this._inputElem);
78941
- }
78942
- }
78943
- componentDidRender() {
78944
- if (this._tooltipIconElem && !this._tooltipElem) {
78945
- this.renderGlobalTooltip();
78946
- }
78947
- }
78948
- componentDidUpdate() {
78949
- if (this._tooltipIconElem && this._tooltipElem) {
78950
- this._tooltipElem.positionTooltip();
78951
- }
78952
- }
78953
- disconnectedCallback() {
78954
- if (this._tooltipPositioningObserver) {
78955
- this._tooltipPositioningObserver.disconnect();
78956
- }
78957
- if (this._observerDebounceTimeout) {
78958
- clearTimeout(this._observerDebounceTimeout);
78959
- }
78960
- this.removeGlobalTooltip();
78961
79676
  }
78962
79677
  render() {
78963
79678
  ElementIDUtils.addIDInfoIfNotExists(this._hostElement, 'input');
78964
79679
  return (h(Host, { style: this._hostElement.classList.contains("grid_editor") ? { "height": "100%" } : null }, h("slot", { name: "leftIcon", onSlotchange: (ev) => { this.handleSlotChange(ev); } }), this.label && this.mode != "slim" ?
78965
79680
  h("label", { ref: (el) => this._labelElem = el, class: `${this.enabled ? "input__label" : "input__label input__label--disabled"} ${this.errorMessage ? "hasError" : ""}`, onClick: () => this._inputElem.focus(), title: this.label }, this.label)
78966
- : null, h("input", { "data-element-id": ElementIDUtils.getInternalIDInfo("input"), onFocus: () => this.doFocus(), ref: (el) => this._inputElem = el, type: this.password ? "password" : "text", class: `${this.mode === "slim" ? "input--slim" : ""}`, placeholder: this.mode === "slim" && this.label ? this.label : "", value: this.mask && this.cleanValueMask ? this.applyMask(this.value) : this.value, disabled: !this.enabled, onInput: () => { this.handleChange(); }, onFocusout: () => { this.handleFocusout(); } }), this.canShowError && this.mode != "slim" && this.errorMessage &&
78967
- h("ez-icon", { class: `tooltip-icon ${this.errorMessage ? "hasError" : ""} ${this.hasRightSlotContent ? "rightIconSlot" : ""}`, "data-element-id": ElementIDUtils.getInternalIDInfo("tooltip-icon"), ref: (el) => this._tooltipIconElem = el, iconName: "alert-circle" }), h("slot", { name: "rightIcon", onSlotchange: (ev) => { this.handleSlotChange(ev); } }, " ")));
79681
+ : null, h("input", { "data-element-id": ElementIDUtils.getInternalIDInfo("input"), onFocus: () => this.doFocus(), ref: (el) => this._inputElem = el, type: this.password ? "password" : "text", class: `${this.mode === "slim" ? "input--slim" : ""}`, placeholder: this.mode === "slim" && this.label ? this.label : "", value: this.getValue(), disabled: !this.enabled, onInput: () => { this.handleChange(); }, onFocusout: () => { this.handleFocusout(); } }), h("ez-tooltip", { anchoringElement: this._hostElement, message: this.getValue(), minWidth: 30 }), this.canShowError && this.mode != "slim" && this.errorMessage &&
79682
+ h("ez-tooltip", { type: "error", message: this.errorMessage }, h("ez-icon", { class: `tooltip-icon ${this.errorMessage ? "hasError" : ""} ${this.hasRightSlotContent ? "rightIconSlot" : ""}`, "data-element-id": ElementIDUtils.getInternalIDInfo("tooltip-icon"), ref: (el) => this._tooltipIconElem = el, iconName: "alert-circle" })), h("slot", { name: "rightIcon", onSlotchange: (ev) => { this.handleSlotChange(ev); } }, " ")));
78968
79683
  }
78969
79684
  get _hostElement() { return this; }
78970
79685
  static get watchers() { return {
79686
+ "hasInvalid": ["observeHasInvalid"],
78971
79687
  "errorMessage": ["observeErrorMessage"],
78972
79688
  "mask": ["observeMask"],
78973
79689
  "value": ["observeValue"]
@@ -79237,52 +79953,126 @@ const EzToast$1 = class extends HTMLElement$1 {
79237
79953
  static get style() { return ezToastCss; }
79238
79954
  };
79239
79955
 
79240
- const ezTooltipCss = ":host{position:absolute;z-index:var(--elevation--24);background:var(--color-alert--error-800, #BD0025);padding:var(--space--extra-small, 3px) var(--space--small, 6px);color:var(--color--inverted);border-radius:var(--border--radius-small);display:none;transform:translateX(calc(-50% + 12px)) translateY(8px)}.tooltip::after{--triangle-size:8px;content:'';right:50%;border:var(--triangle-size) solid transparent;border-bottom-color:var(--color-alert--error-800, #BD0025);position:absolute;transform:translateX(calc(50%)) translateY(-100%)}";
79956
+ const ezTooltipCss = ":host{--triangle-size:8px}.tooltip{position:absolute;z-index:var(--elevation--24);padding:var(--space--extra-small, 3px) var(--space--small, 6px);border-radius:var(--border--radius-small);box-sizing:border-box;font-family:var(--font-pattern\t, 'Roboto', sans-serif);font-size:var(--text--small, 12px);font-weight:var(--text-weight--medium, 400);text-align:center;display:none}.arrow{position:absolute;width:var(--triangle-size);height:var(--triangle-size);transform:rotate(45deg)}.default-tooltip{background:var(--title--primary, #2b3a54);color:var(--color--inverted)}.default-tooltip .arrow{background:var(--title--primary, #2b3a54)}.error-tooltip{background:var(--color-alert--error-800, #BD0025);color:var(--color--error-200, #F7E0E5)}.error-tooltip .arrow{background:var(--color-alert--error-800, #BD0025)}.success-tooltip{background:var(--color--success, #00cb94);color:var(--color--success-200, #EBFFFA)}.success-tooltip .arrow{background:var(--color--success, #00cb94)}.warning-tooltip{background:var(--color--warning, #f2d410);color:var(--color--warning-200, #FDF8D8)}.warning-tooltip .arrow{background:var(--color--warning, #f2d410)}";
79241
79957
 
79242
79958
  const EzTooltip$1 = class extends HTMLElement$1 {
79243
79959
  constructor() {
79244
79960
  super();
79245
79961
  this.__registerHost();
79246
79962
  this.__attachShadow();
79247
- this.errorMessage = undefined;
79963
+ this._opened = false;
79964
+ this.message = undefined;
79248
79965
  this.anchoringElement = undefined;
79966
+ this.placement = 'bottom';
79967
+ this.gapOptions = { horizontalGap: 0, verticalGap: 0 };
79968
+ this.type = 'default';
79969
+ this.debouncingTime = 500;
79970
+ this.active = true;
79971
+ this.minWidth = 150;
79249
79972
  }
79250
- /**
79251
- * TODO: Implementar a possibilidade de definir a posição do tooltip.
79252
- */
79253
- // @Prop() tooltipSide: 'left' | 'right' | 'top' | 'bottom' = 'bottom';
79254
- /**
79255
- * Reposiciona o tooltip de acordo com a posição do elemento de ancoragem.
79256
- */
79257
- async positionTooltip() {
79258
- const anchorRect = this.anchoringElement.getBoundingClientRect();
79259
- const top = (anchorRect.bottom + window.scrollY);
79260
- const left = (anchorRect.left + window.scrollX);
79261
- this._element.style.top = `${top}px`;
79262
- this._element.style.left = `${left}px`;
79973
+ watchAnchoringElement(newValue, oldValue) {
79974
+ if (newValue) {
79975
+ this.setEvents(newValue);
79976
+ this.removeEvents(oldValue);
79977
+ }
79263
79978
  }
79264
- setEvents() {
79265
- window.addEventListener('scroll', () => {
79266
- this.positionTooltip();
79267
- }, { capture: true });
79268
- window.addEventListener('resize', () => {
79269
- this.positionTooltip();
79270
- }, { capture: true });
79271
- this.anchoringElement.addEventListener('mouseover', () => {
79272
- this._element.style.display = 'block';
79979
+ watchMessage(newValue) {
79980
+ if (!newValue) {
79981
+ this.closeTooltip();
79982
+ return;
79983
+ }
79984
+ this.updatePosition();
79985
+ }
79986
+ openTooltip() {
79987
+ if (this.message && this.active) {
79988
+ if (this._debouncingTimeout) {
79989
+ clearTimeout(this._debouncingTimeout);
79990
+ }
79991
+ this._debouncingTimeout = setTimeout(() => {
79992
+ this._opened = true;
79993
+ this._tooltipElement.style.display = 'block';
79994
+ this.updatePosition();
79995
+ }, this.debouncingTime);
79996
+ }
79997
+ }
79998
+ closeTooltip() {
79999
+ clearTimeout(this._debouncingTimeout);
80000
+ this._tooltipElement.style.display = 'none';
80001
+ this._opened = false;
80002
+ }
80003
+ async updatePosition(element = this.anchoringElement) {
80004
+ if (!element || !this._opened) {
80005
+ return;
80006
+ }
80007
+ await computePosition(element, this._tooltipElement, {
80008
+ placement: this.placement,
80009
+ middleware: [
80010
+ offset(5),
80011
+ flip(),
80012
+ shift(),
80013
+ arrow({ element: this._arrowElement })
80014
+ ],
80015
+ }).then(({ x, y, placement, middlewareData }) => {
80016
+ const newTop = placement.includes("bottom") ? y + this.gapOptions.verticalGap : y - this.gapOptions.verticalGap;
80017
+ const newLeft = placement.includes("start") ? x + this.gapOptions.horizontalGap : x - this.gapOptions.horizontalGap;
80018
+ Object.assign(this._tooltipElement.style, {
80019
+ top: `${newTop}px`,
80020
+ left: `${newLeft}px`,
80021
+ });
80022
+ if (middlewareData.arrow) {
80023
+ const { x } = middlewareData.arrow;
80024
+ const onBottom = placement.includes("bottom");
80025
+ Object.assign(this._arrowElement.style, {
80026
+ left: `${x}px`,
80027
+ top: onBottom ? `${-this._arrowElement.offsetHeight / 2}px` : '',
80028
+ bottom: !onBottom ? `${-this._arrowElement.offsetHeight / 2}px` : '',
80029
+ });
80030
+ }
79273
80031
  });
79274
- this.anchoringElement.addEventListener('mouseout', () => {
79275
- this._element.style.display = 'none';
80032
+ }
80033
+ handleSlotChange(ev) {
80034
+ const slot = ev.target;
80035
+ const content = slot.assignedElements()[0];
80036
+ this.anchoringElement = content;
80037
+ }
80038
+ setEvents(element = this.anchoringElement) {
80039
+ if (!element) {
80040
+ return;
80041
+ }
80042
+ element.addEventListener('mouseenter', () => {
80043
+ this.openTooltip();
80044
+ });
80045
+ element.addEventListener('mouseleave', () => {
80046
+ this.closeTooltip();
80047
+ });
80048
+ }
80049
+ removeEvents(element = this.anchoringElement) {
80050
+ if (!element) {
80051
+ return;
80052
+ }
80053
+ element.removeEventListener('mouseenter', () => {
80054
+ this.openTooltip();
80055
+ });
80056
+ element.removeEventListener('mouseleave', () => {
80057
+ this.closeTooltip();
79276
80058
  });
79277
80059
  }
79278
80060
  componentDidLoad() {
79279
- this.positionTooltip();
79280
80061
  this.setEvents();
79281
80062
  }
79282
80063
  render() {
79283
- return (h("div", { inert: true, class: "tooltip", role: "tooltip", "data-element-id": ElementIDUtils.getInternalIDInfo("tooltip") }, this.errorMessage));
80064
+ return (h(Fragment, null, h("div", Object.assign({ ref: ref => this._tooltipElement = ref }, { inert: true }, { class: {
80065
+ "tooltip": true,
80066
+ [`${this.type}-tooltip`]: true,
80067
+ }, style: {
80068
+ minWidth: `${this.minWidth}px`
80069
+ }, role: "tooltip", "data-element-id": ElementIDUtils.getInternalIDInfo("tooltip") }), this.message, h("div", { ref: ref => this._arrowElement = ref, class: "arrow" })), h("slot", { onSlotchange: (ev) => { this.handleSlotChange(ev); } })));
79284
80070
  }
79285
80071
  get _element() { return this; }
80072
+ static get watchers() { return {
80073
+ "anchoringElement": ["watchAnchoringElement"],
80074
+ "message": ["watchMessage"]
80075
+ }; }
79286
80076
  static get style() { return ezTooltipCss; }
79287
80077
  };
79288
80078
 
@@ -80570,7 +81360,7 @@ const EzChart = /*@__PURE__*/proxyCustomElement(EzChart$1, [1,"ez-chart",{"type"
80570
81360
  const EzCheck = /*@__PURE__*/proxyCustomElement(EzCheck$1, [1,"ez-check",{"label":[513],"value":[1540],"enabled":[1540],"indeterminate":[1540],"mode":[513],"compact":[4]}]);
80571
81361
  const EzChip = /*@__PURE__*/proxyCustomElement(EzChip$1, [1,"ez-chip",{"label":[513],"enabled":[516],"removePosition":[513,"remove-position"],"mode":[513],"value":[1540],"showNativeTooltip":[4,"show-native-tooltip"]}]);
80572
81362
  const EzCollapsibleBox = /*@__PURE__*/proxyCustomElement(EzCollapsibleBox$1, [1,"ez-collapsible-box",{"value":[1540],"boxBordered":[4,"box-bordered"],"label":[513],"subtitle":[513],"headerSize":[513,"header-size"],"iconPlacement":[513,"icon-placement"],"headerAlign":[513,"header-align"],"removable":[516],"editable":[516],"conditionalSave":[16],"_activeEditText":[32]}]);
80573
- const EzComboBox = /*@__PURE__*/proxyCustomElement(EzComboBox$1, [1,"ez-combo-box",{"limitCharsToSearch":[2,"limit-chars-to-search"],"value":[1537],"label":[513],"enabled":[516],"options":[1040],"errorMessage":[1537,"error-message"],"showSelectedValue":[4,"show-selected-value"],"showOptionValue":[4,"show-option-value"],"suppressSearch":[4,"suppress-search"],"optionLoader":[16],"suppressEmptyOption":[4,"suppress-empty-option"],"stopPropagateEnterKeyEvent":[4,"stop-propagate-enter-key-event"],"canShowError":[516,"can-show-error"],"mode":[513],"hideErrorOnFocusOut":[4,"hide-error-on-focus-out"],"listOptionsPosition":[16],"isTextSearch":[4,"is-text-search"],"autoFocus":[4,"auto-focus"],"isOpen":[32],"_preSelection":[32],"_visibleOptions":[32],"_startLoading":[32],"_showLoading":[32],"_criteria":[32],"_textInputReady":[32]}]);
81363
+ const EzComboBox = /*@__PURE__*/proxyCustomElement(EzComboBox$1, [1,"ez-combo-box",{"limitCharsToSearch":[2,"limit-chars-to-search"],"value":[1537],"label":[513],"enabled":[516],"options":[1040],"errorMessage":[1537,"error-message"],"showSelectedValue":[4,"show-selected-value"],"showOptionValue":[4,"show-option-value"],"suppressSearch":[4,"suppress-search"],"optionLoader":[16],"suppressEmptyOption":[4,"suppress-empty-option"],"stopPropagateEnterKeyEvent":[4,"stop-propagate-enter-key-event"],"canShowError":[516,"can-show-error"],"mode":[513],"hideErrorOnFocusOut":[4,"hide-error-on-focus-out"],"listOptionsPosition":[16],"isTextSearch":[4,"is-text-search"],"autoFocus":[4,"auto-focus"],"isOpen":[32],"_preSelection":[32],"_visibleOptions":[32],"_startLoading":[32],"_showLoading":[32],"_criteria":[32]}]);
80574
81364
  const EzComboBoxList = /*@__PURE__*/proxyCustomElement(EzComboBoxList$1, [1,"ez-combo-box-list",{"showLoading":[4,"show-loading"],"visibleOptions":[16],"textEmptyList":[1,"text-empty-list"],"showOptionValue":[4,"show-option-value"],"preSelection":[2,"pre-selection"],"maxWidth":[2,"max-width"],"width":[2],"onOptionSelect":[16],"onOptionHover":[16]},[[0,"keydown","handleKeyDown"]]]);
80575
81365
  const EzCustomFormInput = /*@__PURE__*/proxyCustomElement(EzCustomFormInput$1, [2,"ez-custom-form-input",{"customEditor":[16],"formViewField":[16],"value":[1032],"detailContext":[1,"detail-context"],"builderFallback":[16],"selectedRecord":[16],"gui":[32]}]);
80576
81366
  const EzDateInput = /*@__PURE__*/proxyCustomElement(EzDateInput$1, [1,"ez-date-input",{"label":[513],"value":[1040],"enabled":[516],"errorMessage":[1537,"error-message"],"mode":[513],"canShowError":[516,"can-show-error"],"autoFocus":[4,"auto-focus"]}]);
@@ -80598,6 +81388,8 @@ const EzPopup = /*@__PURE__*/proxyCustomElement(EzPopup$1, [1,"ez-popup",{"size"
80598
81388
  const EzRadioButton = /*@__PURE__*/proxyCustomElement(EzRadioButton$1, [1,"ez-radio-button",{"value":[1544],"options":[1040],"enabled":[516],"label":[513],"direction":[1537]}]);
80599
81389
  const EzScroller = /*@__PURE__*/proxyCustomElement(EzScroller$1, [1,"ez-scroller",{"direction":[1],"locked":[4],"activeShadow":[4,"active-shadow"],"isActive":[32]},[[2,"click","clickListener"],[1,"mousedown","mouseDownHandler"],[1,"mouseup","mouseUpHandler"],[1,"mousemove","mouseMoveHandler"]]]);
80600
81390
  const EzSearch = /*@__PURE__*/proxyCustomElement(EzSearch$1, [1,"ez-search",{"value":[1537],"label":[1537],"enabled":[1540],"errorMessage":[1537,"error-message"],"optionLoader":[16],"contextProperties":[8,"context-properties"],"showSelectedValue":[4,"show-selected-value"],"showOptionValue":[4,"show-option-value"],"suppressEmptyOption":[4,"suppress-empty-option"],"stopPropagateEnterKeyEvent":[4,"stop-propagate-enter-key-event"],"mode":[513],"canShowError":[516,"can-show-error"],"hideErrorOnFocusOut":[4,"hide-error-on-focus-out"],"listOptionsPosition":[16],"isTextSearch":[4,"is-text-search"],"ignoreLimitCharsToSearch":[4,"ignore-limit-chars-to-search"],"options":[1040],"suppressSearch":[4,"suppress-search"],"ensureClearButtonVisible":[4,"ensure-clear-button-visible"],"suppressPreLoad":[4,"suppress-pre-load"],"autoFocus":[4,"auto-focus"],"_preSelection":[32],"_visibleOptions":[32],"_startLoading":[32],"_showLoading":[32],"_showLoadingDescription":[32],"_criteria":[32]}]);
81391
+ const EzSearchPlus = /*@__PURE__*/proxyCustomElement(EzSearchPlus$1, [1,"ez-search-plus",{"value":[1544],"enabled":[1540],"disableCodeInput":[1540,"disable-code-input"],"disableDescriptionInput":[1540,"disable-description-input"],"label":[1537],"codLabel":[1537,"cod-label"],"hideDescriptionInput":[1540,"hide-description-input"],"canShowError":[516,"can-show-error"],"errorMessage":[1537,"error-message"],"mode":[513],"contextProperties":[8,"context-properties"],"optionLoader":[16],"showOptionValue":[4,"show-option-value"],"stopPropagateEnterKeyEvent":[4,"stop-propagate-enter-key-event"],"autoFocus":[4,"auto-focus"],"showSelectedValue":[4,"show-selected-value"],"suppressEmptyOption":[4,"suppress-empty-option"],"hideErrorOnFocusOut":[4,"hide-error-on-focus-out"],"listOptionsPosition":[16],"isTextSearch":[4,"is-text-search"],"ignoreLimitCharsToSearch":[4,"ignore-limit-chars-to-search"],"suppressSearch":[4,"suppress-search"],"suppressPreLoad":[4,"suppress-pre-load"],"ensureClearButtonVisible":[4,"ensure-clear-button-visible"],"descriptionValue":[32],"codeValue":[32],"isLoadingDescription":[32],"searchDescriptionIsOpen":[32],"visibleOptions":[32],"showLoading":[32]}]);
81392
+ const EzSearchResultList = /*@__PURE__*/proxyCustomElement(EzSearchResultList$1, [1,"ez-search-result-list",{"showLoading":[4,"show-loading"],"visibleOptions":[16],"value":[1],"showOptionValue":[4,"show-option-value"],"_preSelection":[32]}]);
80601
81393
  const EzSidebarButton = /*@__PURE__*/proxyCustomElement(EzSidebarButton$1, [1,"ez-sidebar-button"]);
80602
81394
  const EzSidebarNavigator = /*@__PURE__*/proxyCustomElement(EzSidebarNavigator$1, [1,"ez-sidebar-navigator",{"type":[1],"mode":[1025],"size":[1],"isResponsive":[4,"is-responsive"],"titleMenu":[1,"title-menu"],"showCollapseMenu":[4,"show-collapse-menu"],"showFixedButton":[4,"show-fixed-button"],"open":[32]}]);
80603
81395
  const EzSkeleton = /*@__PURE__*/proxyCustomElement(EzSkeleton$1, [0,"ez-skeleton",{"count":[2],"variant":[1],"width":[1],"height":[1],"marginBottom":[1,"margin-bottom"],"animation":[1]}]);
@@ -80607,10 +81399,10 @@ const EzSplitPanel = /*@__PURE__*/proxyCustomElement(SplitPanel, [0,"ez-split-pa
80607
81399
  const EzTabselector = /*@__PURE__*/proxyCustomElement(EzTabselector$1, [1,"ez-tabselector",{"selectedIndex":[1538,"selected-index"],"selectedTab":[1537,"selected-tab"],"tabs":[1],"_processedTabs":[32]}]);
80608
81400
  const EzTextArea = /*@__PURE__*/proxyCustomElement(EzTextArea$1, [1,"ez-text-area",{"label":[513],"value":[1537],"enabled":[516],"errorMessage":[1537,"error-message"],"rows":[1538],"canShowError":[516,"can-show-error"],"mode":[513],"enableResize":[516,"enable-resize"],"autoRows":[516,"auto-rows"],"autoFocus":[4,"auto-focus"]}]);
80609
81401
  const EzTextEdit = /*@__PURE__*/proxyCustomElement(EzTextEdit$1, [1,"ez-text-edit",{"value":[1],"styled":[16],"_newValue":[32]}]);
80610
- const EzTextInput = /*@__PURE__*/proxyCustomElement(EzTextInput$1, [1,"ez-text-input",{"label":[513],"value":[1537],"enabled":[516],"errorMessage":[1537,"error-message"],"mask":[1],"cleanValueMask":[4,"clean-value-mask"],"canShowError":[516,"can-show-error"],"restrict":[1],"mode":[513],"noBorder":[516,"no-border"],"password":[4],"autoFocus":[4,"auto-focus"],"hasRightSlotContent":[32]}]);
81402
+ const EzTextInput = /*@__PURE__*/proxyCustomElement(EzTextInput$1, [1,"ez-text-input",{"label":[513],"value":[1537],"enabled":[516],"errorMessage":[1537,"error-message"],"hasInvalid":[1540,"has-invalid"],"mask":[1],"cleanValueMask":[4,"clean-value-mask"],"canShowError":[516,"can-show-error"],"restrict":[1],"mode":[513],"noBorder":[516,"no-border"],"password":[4],"autoFocus":[4,"auto-focus"],"hasRightSlotContent":[32]}]);
80611
81403
  const EzTimeInput = /*@__PURE__*/proxyCustomElement(EzTimeInput$1, [1,"ez-time-input",{"label":[513],"value":[1026],"enabled":[516],"errorMessage":[1537,"error-message"],"showSeconds":[516,"show-seconds"],"mode":[513],"canShowError":[516,"can-show-error"],"autoFocus":[4,"auto-focus"]}]);
80612
81404
  const EzToast = /*@__PURE__*/proxyCustomElement(EzToast$1, [1,"ez-toast",{"message":[1025],"fadeTime":[1026,"fade-time"],"useIcon":[1028,"use-icon"],"canClose":[1028,"can-close"]}]);
80613
- const EzTooltip = /*@__PURE__*/proxyCustomElement(EzTooltip$1, [1,"ez-tooltip",{"errorMessage":[1,"error-message"],"anchoringElement":[16]}]);
81405
+ const EzTooltip = /*@__PURE__*/proxyCustomElement(EzTooltip$1, [1,"ez-tooltip",{"message":[1],"anchoringElement":[16],"placement":[1],"gapOptions":[16],"type":[1],"debouncingTime":[2,"debouncing-time"],"active":[4],"minWidth":[2,"min-width"]}]);
80614
81406
  const EzTree = /*@__PURE__*/proxyCustomElement(EzTree$1, [1,"ez-tree",{"items":[1040],"value":[1040],"selectedId":[1537,"selected-id"],"iconResolver":[16],"tooltipResolver":[16],"_tree":[32],"_waintingForLoad":[32]},[[2,"keydown","onKeyDownListener"]]]);
80615
81407
  const EzUpload = /*@__PURE__*/proxyCustomElement(EzUpload$1, [1,"ez-upload",{"label":[1],"subtitle":[1],"enabled":[4],"maxFileSize":[2,"max-file-size"],"maxFiles":[2,"max-files"],"requestHeaders":[8,"request-headers"],"urlUpload":[1,"url-upload"],"urlDelete":[1,"url-delete"],"value":[1040]}]);
80616
81408
  const EzViewStack = /*@__PURE__*/proxyCustomElement(EzViewStack$1, [0,"ez-view-stack"]);
@@ -80661,6 +81453,8 @@ const defineCustomElements = (opts) => {
80661
81453
  EzRadioButton,
80662
81454
  EzScroller,
80663
81455
  EzSearch,
81456
+ EzSearchPlus,
81457
+ EzSearchResultList,
80664
81458
  EzSidebarButton,
80665
81459
  EzSidebarNavigator,
80666
81460
  EzSkeleton,
@@ -80688,4 +81482,4 @@ const defineCustomElements = (opts) => {
80688
81482
  }
80689
81483
  };
80690
81484
 
80691
- export { EzActionsButton, EzAlert, EzAlertList, EzApplication, EzBadge, EzBreadcrumb, EzButton, EzCalendar, EzCardItem, EzChart, EzCheck, EzChip, EzCollapsibleBox, EzComboBox, EzComboBoxList, EzCustomFormInput, EzDateInput, EzDateTimeInput, EzDialog, EzDoubleList, EzDropdown, EzFileItem, EzFilterInput, EzForm, EzFormView, EzGrid, EzGuideNavigator, EzIcon, EzList, EzLoadingBar, EzModal, EzModalContainer, EzMultiSelectionList, EzNumberInput, EzPopover, EzPopoverCore, EzPopoverPlus, EzPopup, EzRadioButton, EzScroller, EzSearch, EzSidebarButton, EzSidebarNavigator, EzSkeleton, EzSplitButton, EzSplitItem, EzSplitPanel, EzTabselector, EzTextArea, EzTextEdit, EzTextInput, EzTimeInput, EzToast, EzTooltip, EzTree, EzUpload, EzViewStack, FilterColumn, MultiSelectionBoxMessage, SearchList, defineCustomElements };
81485
+ export { EzActionsButton, EzAlert, EzAlertList, EzApplication, EzBadge, EzBreadcrumb, EzButton, EzCalendar, EzCardItem, EzChart, EzCheck, EzChip, EzCollapsibleBox, EzComboBox, EzComboBoxList, EzCustomFormInput, EzDateInput, EzDateTimeInput, EzDialog, EzDoubleList, EzDropdown, EzFileItem, EzFilterInput, EzForm, EzFormView, EzGrid, EzGuideNavigator, EzIcon, EzList, EzLoadingBar, EzModal, EzModalContainer, EzMultiSelectionList, EzNumberInput, EzPopover, EzPopoverCore, EzPopoverPlus, EzPopup, EzRadioButton, EzScroller, EzSearch, EzSearchPlus, EzSearchResultList, EzSidebarButton, EzSidebarNavigator, EzSkeleton, EzSplitButton, EzSplitItem, EzSplitPanel, EzTabselector, EzTextArea, EzTextEdit, EzTextInput, EzTimeInput, EzToast, EzTooltip, EzTree, EzUpload, EzViewStack, FilterColumn, MultiSelectionBoxMessage, SearchList, defineCustomElements };