@sankhyalabs/sankhyablocks 9.2.0-dev.2 → 9.2.0-dev.21

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 (236) hide show
  1. package/dist/cjs/{ConfigStorage-1931defc.js → ConfigStorage-8b6def32.js} +2 -2
  2. package/dist/cjs/{DataFetcher-ad9fb3bb.js → DataFetcher-2c37b6a1.js} +52 -1
  3. package/dist/cjs/{ISave-18ffb73e.js → ISave-b22b3cf0.js} +1 -1
  4. package/dist/cjs/{SnkFormConfigManager-65e5288e.js → SnkFormConfigManager-477a27de.js} +2 -2
  5. package/dist/cjs/{ClientSideExporterProvider-994f6e26.js → SnkMultiSelectionListDataSource-b7ab26ba.js} +82 -79
  6. package/dist/cjs/{auth-fetcher-afbe69ab.js → auth-fetcher-78a90b36.js} +1 -1
  7. package/dist/cjs/{dataunit-fetcher-c7253b02.js → dataunit-fetcher-877944a9.js} +1 -1
  8. package/dist/cjs/filter-validate-6993f6f2.js +30 -0
  9. package/dist/cjs/{form-config-fetcher-f6e66d64.js → form-config-fetcher-dee08eb4.js} +1 -1
  10. package/dist/cjs/{index-0ad2baeb.js → index-13d05f03.js} +21 -5
  11. package/dist/cjs/index-1cf293c1.js +8 -8
  12. package/dist/cjs/loader.cjs.js +1 -1
  13. package/dist/cjs/pesquisa-grid_2.cjs.entry.js +4 -4
  14. package/dist/cjs/sankhyablocks.cjs.js +1 -1
  15. package/dist/cjs/snk-actions-button_8.cjs.entry.js +5 -5
  16. package/dist/cjs/snk-application.cjs.entry.js +6 -9
  17. package/dist/cjs/snk-attach.cjs.entry.js +7 -7
  18. package/dist/cjs/snk-crud.cjs.entry.js +7 -7
  19. package/dist/cjs/snk-data-exporter.cjs.entry.js +5 -5
  20. package/dist/cjs/{snk-data-unit-448fce74.js → snk-data-unit-0cfa7622.js} +14 -4
  21. package/dist/cjs/snk-data-unit.cjs.entry.js +3 -3
  22. package/dist/cjs/snk-detail-view.cjs.entry.js +9 -9
  23. package/dist/cjs/snk-entity-list.cjs.entry.js +10 -3
  24. package/dist/cjs/snk-expression-group_2.cjs.entry.js +1 -1
  25. package/dist/cjs/snk-filter-bar_4.cjs.entry.js +189 -115
  26. package/dist/cjs/snk-filter-binary-select.cjs.entry.js +23 -2
  27. package/dist/cjs/snk-filter-checkbox-list.cjs.entry.js +20 -2
  28. package/dist/cjs/snk-filter-detail.cjs.entry.js +25 -8
  29. package/dist/cjs/snk-filter-modal-item.cjs.entry.js +9 -14
  30. package/dist/cjs/snk-filter-multi-select.cjs.entry.js +16 -3
  31. package/dist/cjs/snk-filter-number.cjs.entry.js +34 -3
  32. package/dist/cjs/snk-filter-period.cjs.entry.js +59 -14
  33. package/dist/cjs/snk-filter-search.cjs.entry.js +14 -3
  34. package/dist/cjs/snk-filter-text.cjs.entry.js +18 -1
  35. package/dist/cjs/snk-form_2.cjs.entry.js +31 -5
  36. package/dist/cjs/snk-grid.cjs.entry.js +158 -66
  37. package/dist/cjs/{snk-guides-viewer-c23ed218.js → snk-guides-viewer-38277265.js} +6 -6
  38. package/dist/cjs/snk-guides-viewer.cjs.entry.js +9 -9
  39. package/dist/cjs/snk-personalized-filter.cjs.entry.js +14 -6
  40. package/dist/cjs/snk-pesquisa.cjs.entry.js +4 -4
  41. package/dist/cjs/snk-simple-bar.cjs.entry.js +5 -5
  42. package/dist/cjs/snk-simple-crud.cjs.entry.js +60 -23
  43. package/dist/cjs/snk-taskbar.cjs.entry.js +2 -2
  44. package/dist/cjs/{taskbar-elements-3b74cd21.js → taskbar-elements-fb5d1e08.js} +1 -1
  45. package/dist/collection/components/snk-application/snk-application.js +0 -2
  46. package/dist/collection/components/snk-data-exporter/providers/ClientSideExporterProvider.js +4 -1
  47. package/dist/collection/components/snk-data-unit/snk-data-unit.js +174 -29
  48. package/dist/collection/components/snk-entity-list/snk-entity-list.js +28 -4
  49. package/dist/collection/components/snk-filter-bar/filter-item/editors/snk-filter-binary-select.js +72 -2
  50. package/dist/collection/components/snk-filter-bar/filter-item/editors/snk-filter-checkbox-list.js +73 -2
  51. package/dist/collection/components/snk-filter-bar/filter-item/editors/snk-filter-multi-select.js +51 -5
  52. package/dist/collection/components/snk-filter-bar/filter-item/editors/snk-filter-number.js +83 -3
  53. package/dist/collection/components/snk-filter-bar/filter-item/editors/snk-filter-period.js +118 -27
  54. package/dist/collection/components/snk-filter-bar/filter-item/editors/snk-filter-search.js +49 -5
  55. package/dist/collection/components/snk-filter-bar/filter-item/editors/snk-filter-text.js +71 -1
  56. package/dist/collection/components/snk-filter-bar/filter-item/snk-filter-detail.js +62 -11
  57. package/dist/collection/components/snk-filter-bar/filter-item/snk-filter-item.js +70 -8
  58. package/dist/collection/components/snk-filter-bar/filter-modal/snk-filter-modal.css +0 -4
  59. package/dist/collection/components/snk-filter-bar/filter-modal/snk-filter-modal.js +112 -16
  60. package/dist/collection/components/snk-filter-bar/filter-modal/subcomponents/snk-filter-modal-item.js +8 -16
  61. package/dist/collection/components/snk-filter-bar/snk-filter-bar.js +315 -114
  62. package/dist/collection/components/snk-filter-bar/utils/SnkFilterModalFactory.js +3 -1
  63. package/dist/collection/components/snk-filter-bar/utils/filter-validate.js +24 -0
  64. package/dist/collection/components/snk-form/snk-form.js +133 -22
  65. package/dist/collection/components/snk-grid/snk-grid.js +488 -133
  66. package/dist/collection/components/snk-personalized-filter/snk-personalized-filter.js +83 -21
  67. package/dist/collection/components/snk-pesquisa/snk-pesquisa.js +80 -14
  68. package/dist/collection/components/snk-simple-bar/snk-simple-bar.js +9 -9
  69. package/dist/collection/components/snk-simple-crud/snk-simple-crud.js +414 -119
  70. package/dist/collection/components/snk-taskbar/snk-taskbar.js +102 -36
  71. package/dist/collection/lib/http/data-fetcher/DataFetcher.js +1 -0
  72. package/dist/collection/lib/http/data-fetcher/custom-xhr-override.js +39 -0
  73. package/dist/collection/lib/message/resources/en-us/snk-filter-bar.msg.js +1 -0
  74. package/dist/collection/lib/message/resources/en-us/snk-grid.msg.js +4 -0
  75. package/dist/collection/lib/message/resources/es-es/snk-filter-bar.msg.js +1 -0
  76. package/dist/collection/lib/message/resources/es-es/snk-grid.msg.js +4 -0
  77. package/dist/collection/lib/message/resources/pt-br/snk-filter-bar.msg.js +1 -0
  78. package/dist/collection/lib/message/resources/pt-br/snk-grid.msg.js +4 -0
  79. package/dist/components/ContinuousInsertUtils.js +4 -1
  80. package/dist/components/DataFetcher.js +52 -1
  81. package/dist/components/index2.js +21 -5
  82. package/dist/components/snk-application2.js +0 -3
  83. package/dist/components/snk-crud.js +62 -44
  84. package/dist/components/snk-data-unit2.js +12 -2
  85. package/dist/components/snk-detail-view2.js +89 -56
  86. package/dist/components/snk-entity-list.js +11 -3
  87. package/dist/components/snk-filter-bar2.js +103 -108
  88. package/dist/components/snk-filter-binary-select.js +27 -3
  89. package/dist/components/snk-filter-checkbox-list.js +24 -3
  90. package/dist/components/snk-filter-detail2.js +28 -9
  91. package/dist/components/snk-filter-item2.js +70 -8
  92. package/dist/components/snk-filter-modal-item2.js +7 -12
  93. package/dist/components/snk-filter-modal.js +1 -325
  94. package/dist/components/snk-filter-modal2.js +391 -0
  95. package/dist/components/snk-filter-multi-select.js +19 -4
  96. package/dist/components/snk-filter-number.js +38 -4
  97. package/dist/components/snk-filter-period.js +64 -16
  98. package/dist/components/snk-filter-search.js +17 -4
  99. package/dist/components/snk-filter-text.js +22 -2
  100. package/dist/components/snk-form.js +29 -2
  101. package/dist/components/snk-grid2.js +188 -75
  102. package/dist/components/snk-personalized-filter2.js +10 -2
  103. package/dist/components/snk-simple-bar2.js +5 -5
  104. package/dist/components/snk-simple-crud2.js +45 -8
  105. package/dist/esm/{ConfigStorage-b5a1dba3.js → ConfigStorage-22eace3a.js} +2 -2
  106. package/dist/esm/{DataFetcher-6f6de657.js → DataFetcher-f6b2961a.js} +52 -1
  107. package/dist/esm/{ISave-7ecdca20.js → ISave-6b7b0423.js} +1 -1
  108. package/dist/esm/{SnkFormConfigManager-34fc1dc7.js → SnkFormConfigManager-968b97e7.js} +2 -2
  109. package/dist/esm/{ClientSideExporterProvider-7c2781f4.js → SnkMultiSelectionListDataSource-1136c4e7.js} +87 -84
  110. package/dist/esm/{auth-fetcher-7332a9a9.js → auth-fetcher-cf39e42b.js} +1 -1
  111. package/dist/esm/{dataunit-fetcher-f21cbad0.js → dataunit-fetcher-6314b19d.js} +1 -1
  112. package/dist/esm/filter-validate-d765d450.js +27 -0
  113. package/dist/esm/{form-config-fetcher-6ab4e805.js → form-config-fetcher-bc6f0f1f.js} +1 -1
  114. package/dist/esm/{index-b72af127.js → index-446f9341.js} +21 -5
  115. package/dist/esm/index-479e1293.js +8 -8
  116. package/dist/esm/loader.js +1 -1
  117. package/dist/esm/pesquisa-grid_2.entry.js +4 -4
  118. package/dist/esm/sankhyablocks.js +1 -1
  119. package/dist/esm/snk-actions-button_8.entry.js +5 -5
  120. package/dist/esm/snk-application.entry.js +6 -9
  121. package/dist/esm/snk-attach.entry.js +7 -7
  122. package/dist/esm/snk-crud.entry.js +7 -7
  123. package/dist/esm/snk-data-exporter.entry.js +5 -5
  124. package/dist/esm/{snk-data-unit-b7e6e7a6.js → snk-data-unit-4acf4781.js} +14 -4
  125. package/dist/esm/snk-data-unit.entry.js +3 -3
  126. package/dist/esm/snk-detail-view.entry.js +9 -9
  127. package/dist/esm/snk-entity-list.entry.js +10 -3
  128. package/dist/esm/snk-expression-group_2.entry.js +1 -1
  129. package/dist/esm/snk-filter-bar_4.entry.js +190 -116
  130. package/dist/esm/snk-filter-binary-select.entry.js +23 -2
  131. package/dist/esm/snk-filter-checkbox-list.entry.js +20 -2
  132. package/dist/esm/snk-filter-detail.entry.js +25 -8
  133. package/dist/esm/snk-filter-modal-item.entry.js +9 -14
  134. package/dist/esm/snk-filter-multi-select.entry.js +16 -3
  135. package/dist/esm/snk-filter-number.entry.js +34 -3
  136. package/dist/esm/snk-filter-period.entry.js +59 -14
  137. package/dist/esm/snk-filter-search.entry.js +14 -3
  138. package/dist/esm/snk-filter-text.entry.js +18 -1
  139. package/dist/esm/snk-form_2.entry.js +31 -5
  140. package/dist/esm/snk-grid.entry.js +152 -60
  141. package/dist/esm/{snk-guides-viewer-fbfece85.js → snk-guides-viewer-19cb7f1f.js} +6 -6
  142. package/dist/esm/snk-guides-viewer.entry.js +9 -9
  143. package/dist/esm/snk-personalized-filter.entry.js +14 -6
  144. package/dist/esm/snk-pesquisa.entry.js +4 -4
  145. package/dist/esm/snk-simple-bar.entry.js +5 -5
  146. package/dist/esm/snk-simple-crud.entry.js +55 -18
  147. package/dist/esm/snk-taskbar.entry.js +2 -2
  148. package/dist/esm/{taskbar-elements-171476d4.js → taskbar-elements-faaf5d8f.js} +1 -1
  149. package/dist/sankhyablocks/p-093f58fa.entry.js +1 -0
  150. package/dist/sankhyablocks/{p-0e495575.js → p-0a317e81.js} +1 -1
  151. package/dist/sankhyablocks/{p-ad2ae575.entry.js → p-0e1f0344.entry.js} +1 -1
  152. package/dist/sankhyablocks/{p-8d1508aa.entry.js → p-16c1c209.entry.js} +1 -1
  153. package/dist/sankhyablocks/p-29cacaf3.entry.js +1 -0
  154. package/dist/sankhyablocks/{p-eb0616d3.entry.js → p-32450ea2.entry.js} +1 -1
  155. package/dist/sankhyablocks/{p-b49281be.entry.js → p-3c29939c.entry.js} +1 -1
  156. package/dist/sankhyablocks/p-3ed04f0d.entry.js +1 -0
  157. package/dist/sankhyablocks/{p-4872dc3a.entry.js → p-44c5ec49.entry.js} +1 -1
  158. package/dist/sankhyablocks/p-49ddc27a.entry.js +1 -0
  159. package/dist/sankhyablocks/p-4c763b10.entry.js +1 -0
  160. package/dist/sankhyablocks/p-4eeb06fc.js +1 -0
  161. package/dist/sankhyablocks/p-505172c8.entry.js +1 -0
  162. package/dist/sankhyablocks/p-55798617.js +1 -0
  163. package/dist/sankhyablocks/p-658f67a5.js +1 -0
  164. package/dist/sankhyablocks/{p-158adf33.entry.js → p-701b024c.entry.js} +1 -1
  165. package/dist/sankhyablocks/p-72a9285d.entry.js +1 -0
  166. package/dist/sankhyablocks/p-7f7fe6c4.entry.js +1 -0
  167. package/dist/sankhyablocks/p-88b7bc09.js +1 -0
  168. package/dist/sankhyablocks/{p-c6331595.js → p-8d256def.js} +1 -1
  169. package/dist/sankhyablocks/p-8f37b75b.entry.js +1 -0
  170. package/dist/sankhyablocks/{p-b35574b5.js → p-9062d640.js} +1 -1
  171. package/dist/sankhyablocks/{p-72c8c847.entry.js → p-95c71f5e.entry.js} +1 -1
  172. package/dist/sankhyablocks/p-96d45943.entry.js +1 -0
  173. package/dist/sankhyablocks/{p-eacff4b7.entry.js → p-b2d7f4cd.entry.js} +1 -1
  174. package/dist/sankhyablocks/{p-6a015ba2.js → p-b7f5caf6.js} +1 -1
  175. package/dist/sankhyablocks/p-b9200e77.entry.js +11 -0
  176. package/dist/sankhyablocks/{p-7de79adf.js → p-b987e15d.js} +1 -1
  177. package/dist/sankhyablocks/{p-ba4979b4.js → p-bf017a1f.js} +1 -1
  178. package/dist/sankhyablocks/{p-735a1175.entry.js → p-c3dbf441.entry.js} +1 -1
  179. package/dist/sankhyablocks/{p-3dba3468.js → p-c71dcb2d.js} +1 -1
  180. package/dist/sankhyablocks/{p-5e282b33.entry.js → p-c95f20d9.entry.js} +1 -1
  181. package/dist/sankhyablocks/p-c98e2085.js +1 -0
  182. package/dist/sankhyablocks/p-cb4343c4.entry.js +1 -0
  183. package/dist/sankhyablocks/p-d03ae54e.entry.js +1 -0
  184. package/dist/sankhyablocks/p-d235314c.entry.js +1 -0
  185. package/dist/sankhyablocks/p-d75a732c.js +1 -0
  186. package/dist/sankhyablocks/{p-f39b0ebe.entry.js → p-df7979fd.entry.js} +1 -1
  187. package/dist/sankhyablocks/p-e258de96.entry.js +1 -0
  188. package/dist/sankhyablocks/{p-d377aa7a.entry.js → p-f8e87cf1.entry.js} +1 -1
  189. package/dist/sankhyablocks/sankhyablocks.esm.js +1 -1
  190. package/dist/types/components/snk-data-unit/snk-data-unit.d.ts +46 -3
  191. package/dist/types/components/snk-entity-list/snk-entity-list.d.ts +8 -4
  192. package/dist/types/components/snk-filter-bar/filter-item/editors/snk-filter-binary-select.d.ts +12 -0
  193. package/dist/types/components/snk-filter-bar/filter-item/editors/snk-filter-checkbox-list.d.ts +12 -0
  194. package/dist/types/components/snk-filter-bar/filter-item/editors/snk-filter-multi-select.d.ts +12 -4
  195. package/dist/types/components/snk-filter-bar/filter-item/editors/snk-filter-number.d.ts +16 -4
  196. package/dist/types/components/snk-filter-bar/filter-item/editors/snk-filter-period.d.ts +17 -3
  197. package/dist/types/components/snk-filter-bar/filter-item/editors/snk-filter-search.d.ts +10 -2
  198. package/dist/types/components/snk-filter-bar/filter-item/editors/snk-filter-text.d.ts +12 -0
  199. package/dist/types/components/snk-filter-bar/filter-item/snk-filter-detail.d.ts +8 -3
  200. package/dist/types/components/snk-filter-bar/filter-item/snk-filter-item.d.ts +27 -4
  201. package/dist/types/components/snk-filter-bar/filter-modal/snk-filter-modal.d.ts +17 -3
  202. package/dist/types/components/snk-filter-bar/filter-modal/subcomponents/snk-filter-modal-item.d.ts +2 -3
  203. package/dist/types/components/snk-filter-bar/snk-filter-bar.d.ts +60 -30
  204. package/dist/types/components/snk-filter-bar/utils/SnkFilterModalFactory.d.ts +4 -2
  205. package/dist/types/components/snk-filter-bar/utils/filter-validate.d.ts +11 -0
  206. package/dist/types/components/snk-form/snk-form.d.ts +29 -4
  207. package/dist/types/components/snk-grid/snk-grid.d.ts +132 -58
  208. package/dist/types/components/snk-personalized-filter/snk-personalized-filter.d.ts +53 -5
  209. package/dist/types/components/snk-pesquisa/snk-pesquisa.d.ts +44 -6
  210. package/dist/types/components/snk-simple-bar/snk-simple-bar.d.ts +15 -15
  211. package/dist/types/components/snk-simple-crud/snk-simple-crud.d.ts +100 -43
  212. package/dist/types/components/snk-taskbar/snk-taskbar.d.ts +23 -21
  213. package/dist/types/components.d.ts +771 -255
  214. package/dist/types/lib/http/data-fetcher/DataFetcher.d.ts +1 -0
  215. package/package.json +4 -3
  216. package/dist/collection/lib/licenses/sankhyalicense.module.js +0 -1
  217. package/dist/sankhyablocks/p-012208e0.entry.js +0 -1
  218. package/dist/sankhyablocks/p-07b14811.entry.js +0 -1
  219. package/dist/sankhyablocks/p-0dac8fef.js +0 -1
  220. package/dist/sankhyablocks/p-1210500e.js +0 -1
  221. package/dist/sankhyablocks/p-16fc4acd.js +0 -1
  222. package/dist/sankhyablocks/p-25209340.entry.js +0 -1
  223. package/dist/sankhyablocks/p-295b83ae.entry.js +0 -1
  224. package/dist/sankhyablocks/p-398cdd67.entry.js +0 -1
  225. package/dist/sankhyablocks/p-4e63ffed.entry.js +0 -1
  226. package/dist/sankhyablocks/p-5bab470d.entry.js +0 -1
  227. package/dist/sankhyablocks/p-5c7af8a9.entry.js +0 -1
  228. package/dist/sankhyablocks/p-81769310.entry.js +0 -11
  229. package/dist/sankhyablocks/p-9fd87bfd.entry.js +0 -1
  230. package/dist/sankhyablocks/p-a349689a.js +0 -1
  231. package/dist/sankhyablocks/p-a76e6d51.entry.js +0 -1
  232. package/dist/sankhyablocks/p-a86eee47.entry.js +0 -1
  233. package/dist/sankhyablocks/p-c6a8a8bc.entry.js +0 -1
  234. package/dist/sankhyablocks/p-c9e6d720.js +0 -1
  235. package/dist/sankhyablocks/p-dff65083.entry.js +0 -1
  236. package/dist/sankhyablocks/p-fa18530e.entry.js +0 -1
@@ -1,18 +1,19 @@
1
1
  import { r as registerInstance, c as createEvent, h, H as Host, g as getElement } from './index-479e1293.js';
2
- import { DataType, StringUtils, ObjectUtils, ElementIDUtils, ErrorException, ApplicationContext, LockManager, LockManagerOperation, DateUtils, MaskFormatter, FloatingManager, ArrayUtils } from '@sankhyalabs/core';
2
+ import { DataType, StringUtils, ObjectUtils, ElementIDUtils, ErrorException, ApplicationContext, LockManager, LockManagerOperation, DateUtils, MaskFormatter, KeyboardManager, FloatingManager, ArrayUtils } from '@sankhyalabs/core';
3
3
  import { EzScrollDirection } from '@sankhyalabs/ezui/dist/collection/components/ez-scroller/EzScrollDirection';
4
- import { C as ConfigStorage } from './ConfigStorage-b5a1dba3.js';
4
+ import { C as ConfigStorage } from './ConfigStorage-22eace3a.js';
5
+ import { P as PersonalizedFilterUtils } from './PersonalizedFilterUtils-2db38ff2.js';
5
6
  import { toString } from '@sankhyalabs/core/dist/dataunit/metadata/DataType';
6
7
  import { F as FilterItemType } from './filter-item-type.enum-d45e026f.js';
7
8
  import { F as FilterOperand, D as DefaultFilter } from './index-8acbae97.js';
8
9
  import { F as FilterNumberVariation } from './filterNumberVariation-8cee02ea.js';
9
- import { ApplicationUtils } from '@sankhyalabs/ezui/dist/collection/utils';
10
- import { P as PersonalizedFilterUtils } from './PersonalizedFilterUtils-2db38ff2.js';
11
10
  import { ModalAction } from '@sankhyalabs/ezui/dist/collection/components/ez-modal-container';
12
- import { F as FilterType } from './filter-type.enum-f6a8fe23.js';
11
+ import { ApplicationUtils } from '@sankhyalabs/ezui/dist/collection/utils';
13
12
  import { A as ActionDefaultFilter } from './default-filters-50105e43.js';
14
- import './form-config-fetcher-6ab4e805.js';
15
- import './DataFetcher-6f6de657.js';
13
+ import { F as FilterType } from './filter-type.enum-f6a8fe23.js';
14
+ import { g as getInvalidFilters } from './filter-validate-d765d450.js';
15
+ import './form-config-fetcher-bc6f0f1f.js';
16
+ import './DataFetcher-f6b2961a.js';
16
17
  import './PrintUtils-3e4ff0f5.js';
17
18
  import '@sankhyalabs/core/dist/dataunit/metadata/UnitMetadata';
18
19
 
@@ -206,51 +207,6 @@ function buildPersonalized(item) {
206
207
  return { name: id, expression, params };
207
208
  }
208
209
 
209
- class SnkFilterModalFactory {
210
- constructor({ filterConfig, configName, onComplete, getMessage, disablePersonalizedFilter, onAddPersonalizedFilter, onEditPersonalizedFilter, onDeletePersonalizedFilter }) {
211
- this._filterConfig = filterConfig;
212
- this._configName = configName;
213
- this._onComplete = onComplete;
214
- this._getMessage = getMessage;
215
- this._disablePersonalizedFilter = disablePersonalizedFilter;
216
- this._addPersonalizedFilterFn = onAddPersonalizedFilter;
217
- this._editPersonalizedFilterFn = onEditPersonalizedFilter;
218
- this._onDeletePersonalizedFilter = onDeletePersonalizedFilter;
219
- }
220
- applyFilters(newFilterConfig) {
221
- this._onComplete(newFilterConfig);
222
- this._closeModal();
223
- }
224
- buildFilterModal() {
225
- const filterModal = document.createElement("snk-filter-modal");
226
- filterModal.className = "ez-size-height--full";
227
- filterModal.filters = this._filterConfig;
228
- filterModal.configName = this._configName;
229
- filterModal.disablePersonalizedFilter = this._disablePersonalizedFilter;
230
- filterModal.getMessage = this._getMessage.bind(this);
231
- filterModal.applyFilters = this.applyFilters.bind(this);
232
- filterModal.closeModal = () => this._closeModal();
233
- filterModal.addPersonalizedFilter = (isDefault) => this._addPersonalizedFilterFn(isDefault);
234
- filterModal.editPersonalizedFilter = (id, isDefault) => this._editPersonalizedFilterFn(id, isDefault);
235
- filterModal.deletePersonalizedFilter = (filter, configName, isDefault) => this._onDeletePersonalizedFilter(filter, configName, isDefault);
236
- return filterModal;
237
- }
238
- async showModal() {
239
- const filterModal = this.buildFilterModal();
240
- const modalProps = {
241
- content: filterModal,
242
- position: 'right',
243
- heightMode: 'full',
244
- closeOutsideClick: false,
245
- useScrimLight: true
246
- };
247
- this._closeModal = await ApplicationUtils.showModal(modalProps);
248
- }
249
- async closeModal() {
250
- this._closeModal();
251
- }
252
- }
253
-
254
210
  const snkFilterBarCss = ".sc-snk-filter-bar-h{display:grid;grid-template-columns:1fr minmax(100px, 100%) 1fr 1fr;--snk-personalized-filter--z-index:var(--elevation--20, 20);--snk-personalized-filter--background-color:var(--background--xlight, #fff)}.snk-filter-bar__title.sc-snk-filter-bar{max-width:260px;display:inline-block;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;font-size:16px;font-family:var(--font-pattern, Arial);font-weight:var(--text-weight--large, 600);color:var(--color--title-primary, #2B3A54);margin-top:12px}[data-mode=\"hidden\"].sc-snk-filter-bar-h{width:0px;height:0px}[data-mode=\"button\"].sc-snk-filter-bar-h{grid-template-columns:1fr;width:fit-content}.snk-filter__popover-container.sc-snk-filter-bar{display:flex;cursor:auto}.filter-bar__personalized-filter.sc-snk-filter-bar{display:flex;flex-direction:column;position:fixed;top:0;left:0;width:100%;height:100%;overflow:auto;z-index:var(--snk-personalized-filter--z-index);background-color:var(--snk-personalized-filter--background-color)}.snk-filter__popover.sc-snk-filter-bar{display:flex;flex-direction:column;position:absolute;width:fit-content;height:fit-content;min-width:265px;background-color:var(--background--xlight, #fff);border-radius:var(--border--radius-medium, 12px);box-shadow:var(--shadow, 0px 0px 16px 0px #000)}.snk-filter-item__editor-header.sc-snk-filter-bar{flex-grow:1;font-weight:var(--text-weight--medium, 400);color:var(--color--title-primary, #2B3A54)}.snk-filter__popover-rule.sc-snk-filter-bar{border-style:solid;border-color:var(--color--disable-secondary, #F2F5F8);border-radius:1px;border-width:1px;width:100%}.editor__ez-check.sc-snk-filter-bar{--ez-check__label--padding-left:0}.snk-filter-item__editor-header-button.sc-snk-filter-bar{cursor:pointer;background-color:transparent;border:none;padding:3px;outline-color:var(--color--primary)}.snk-filter-bar__divider.sc-snk-filter-bar{margin-bottom:var(--space--small);height:80%}.snk-filter-bar__filter-item-container.sc-snk-filter-bar{display:flex;align-items:start;margin:var(--space--2, 2px) 0}.snk-filter-bar__scroller.sc-snk-filter-bar .sc-snk-filter-bar:first-child{margin-left:var(--space-extra-small, 3px)}.snk-filter-bar__filter-list-items-container.sc-snk-filter-bar{overflow-y:auto;max-height:360px;margin-top:var(--space--small, 6px)}.snk-filter-bar__filter-list-item.sc-snk-filter-bar{cursor:pointer;border-radius:var(--border--radius-small, 6px);border:none;background-color:transparent}.snk-filter-bar__filter-list-item__label.sc-snk-filter-bar{color:var(--title--primary)}.snk-filter-bar__filter-list-item__label--secondary.sc-snk-filter-bar{color:var(--text--primary)}.snk-filter-bar__filter-list-item__icon.sc-snk-filter-bar{--ez-icon--color:var(--title--primary)}.snk-filter-bar__filter-list-item__icon--secondary.sc-snk-filter-bar{--ez-icon--color:var(--text--secondary)}.snk-filter-bar__filter-list-item.sc-snk-filter-bar:focus-visible{outline:none;background-color:var(--background--medium)}.snk-filter-bar__filter-list-item.sc-snk-filter-bar:hover{background-color:var(--background--medium)}.snk-filter-bar__filter-list-items-container--empty.sc-snk-filter-bar{width:100%;height:100px;display:flex;justify-content:center;align-self:center;align-items:center}.snk-filter-bar__filter-list-items-button--active.sc-snk-filter-bar{position:relative}.snk-filter-bar__filter-list-items-button--active.sc-snk-filter-bar::after{display:flex;position:absolute;content:\"\";width:8px;height:8px;top:7px;left:17px;background-color:var(--icon--alert--color, #008561);border-radius:50%}.snk-filter-bar__filter-modal-item.sc-snk-filter-bar{--modal-item-border-width:2px;display:flex;flex-direction:row;margin-left:var(--modal-item-border-width);border-radius:var(--border--radius-medium, 12px);background-color:var(--background--medium, #f0f3f7);border:none;width:100%}.snk-filter-bar__filter-modal-item.sc-snk-filter-bar:focus-visible{outline:var(--color--primary) solid var(--modal-item-border-width)}.snk-filter-bar__filter-modal-item__check.sc-snk-filter-bar{width:auto}.snk-filter-bar__filter-modal-item__label.sc-snk-filter-bar{font-weight:var(--text-weight--medium)}.snk-filter-bar__filter-modal-content.sc-snk-filter-bar{display:grid;grid-template-rows:auto auto 1fr auto;width:99%;height:100%}";
255
211
 
256
212
  const SnkFilterBar = class {
@@ -291,10 +247,13 @@ const SnkFilterBar = class {
291
247
  this.filterBarLegacyConfigName = undefined;
292
248
  this.autoLoad = undefined;
293
249
  this.afterApplyConfig = undefined;
250
+ this.filterCustomConfig = undefined;
251
+ this.filterCustomConfigInterceptor = undefined;
294
252
  this.allowDefault = undefined;
295
253
  this.scrollerLocked = false;
296
254
  this.showPersonalizedFilter = false;
297
255
  this.personalizedFilterId = undefined;
256
+ this.isFilterModalOpen = false;
298
257
  }
299
258
  hasValidValue(item) {
300
259
  if (item.value === undefined || item.value === null)
@@ -343,22 +302,28 @@ const SnkFilterBar = class {
343
302
  this.processAfterUpdateConfig();
344
303
  }
345
304
  /**
346
- * Faz o recarregamento da filterbar buscando o state no servidor.
305
+ * @description Faz o recarregamento da barra de filtros buscando o state no servidor.
306
+ * @async
307
+ * @return {Promise<void>} Retorna uma Promise que resolve quando o recarregamento for concluído.
347
308
  */
348
309
  async reload() {
349
310
  this.loadConfigFromStorage(true);
350
311
  }
351
312
  /**
352
- * Retorna um item de filtro pelo ID.
313
+ * @description Retorna um item de filtro pelo ID.
314
+ * @async
315
+ * @param {string} id - ID do item de filtro.
316
+ * @returns {Promise<SnkFilterItemConfig | undefined>} O item de filtro correspondente ou undefined se não for encontrado.
353
317
  */
354
318
  async getFilterItem(id) {
355
319
  const item = this.filterConfig.find(item => item.id === id);
356
320
  return Promise.resolve(ObjectUtils.copy(item));
357
321
  }
358
322
  /**
359
- * Atualiza um item do filtro.
360
- *
361
- * @param filterItem - Item com as informações atualizadas, caso o item não seja encontrado no array ele mão será modificado
323
+ * @description Atualiza um item do filtro.
324
+ * @async
325
+ * @param {SnkFilterItemConfig} newFilterItem - Item com as informações atualizadas, caso o item não seja encontrado no array, ele não será modificado.
326
+ * @return {Promise<void>} Retorna uma Promise que resolve quando a atualização for concluída.
362
327
  */
363
328
  async updateFilterItem(newFilterItem) {
364
329
  const itemIndex = this.filterConfig.findIndex(item => item.id === newFilterItem.id);
@@ -371,9 +336,10 @@ const SnkFilterBar = class {
371
336
  return Promise.resolve();
372
337
  }
373
338
  /**
374
- * Adiciona um item de filtro.
375
- *
376
- * @param filterItem - Item a ser adicionado, caso o item já exista com o ID ele não será adicionado novamente
339
+ * @description Adiciona um item de filtro.
340
+ * @async
341
+ * @param {SnkFilterItemConfig} filterItem - Item a ser adicionado, caso o item já exista com o ID, ele não será adicionado novamente.
342
+ * @return {Promise<void>} Retorna uma Promise que resolve quando o item for adicionado.
377
343
  */
378
344
  async addFilterItem(filterItem) {
379
345
  const itemIndex = this.filterConfig.findIndex(item => item.id === filterItem.id);
@@ -387,11 +353,10 @@ const SnkFilterBar = class {
387
353
  return Promise.resolve();
388
354
  }
389
355
  /**
390
- * Remove um item de filtro.
391
- *
392
- * @param filterID - ID do a ser adicionado
393
- *
394
- * @returns {Promise<SnkFilterItemConfig|undefined>} - Retorna o item de filtro removido, ou undefined caso não encontrado.
356
+ * @description Remove um item de filtro.
357
+ * @async
358
+ * @param {string} filterID - ID do item a ser removido.
359
+ * @returns {Promise<SnkFilterItemConfig|undefined>} Retorna o item de filtro removido, ou undefined caso não seja encontrado.
395
360
  */
396
361
  async removeFilterItem(filterID) {
397
362
  const itemIndex = this.filterConfig.findIndex(item => item.id === filterID);
@@ -436,7 +401,7 @@ const SnkFilterBar = class {
436
401
  return;
437
402
  }
438
403
  this._loadingPending = false;
439
- this.doLoadData(this.dataUnit.getLastLoadRequest() != undefined);
404
+ this.doLoadData();
440
405
  }
441
406
  if (this._configUpdated) {
442
407
  this._configUpdated = false;
@@ -463,7 +428,7 @@ const SnkFilterBar = class {
463
428
  }
464
429
  /**
465
430
  * Conforme mecanismo de mensagens, é possível customizar as mensagens dos blocos de construção
466
- * através de um pequeno modulo na estrutura da aplicação:
431
+ * através de um pequeno módulo na estrutura da aplicação:
467
432
  * - Criar um arquivo no seguinte caminho: /messages/appmessages.msg.js.
468
433
  * Para conhecer os detalhes do módulo, vide o arquivo neste projeto "/src/lib/message/resources/snk-filter-bar.msg.ts"
469
434
  */
@@ -474,6 +439,9 @@ const SnkFilterBar = class {
474
439
  }
475
440
  return ((_a = this.messagesBuilder) === null || _a === void 0 ? void 0 : _a.getMessage(key, params)) || defaultValue;
476
441
  }
442
+ async getFilters() {
443
+ return this.getFilter(null);
444
+ }
477
445
  getFilter(_dataUnit) {
478
446
  var _a;
479
447
  const filters = [];
@@ -532,11 +500,11 @@ const SnkFilterBar = class {
532
500
  const unpinnedItems = [];
533
501
  this.filterConfig.sort((a, b) => this._filtersComparator(a, b))
534
502
  .filter(this.filterActiveFilter)
535
- .forEach((item, index) => {
503
+ .forEach((item) => {
536
504
  item = ObjectUtils.copy(item);
537
505
  const itemId = `filter-${item.id}`;
538
- const filterItem = (h("snk-filter-item", { onVisibleChanged: (evt) => this.scrollerLocked = evt.detail, onFilterChange: (event) => this.updateFilter(event.detail), onFocusin: () => this.itemFocused(itemId), id: itemId, config: item, class: index > 0 ? "ez-padding-left--medium" : "", getMessage: (key, props) => this.getMessage(key, props), key: item.id }));
539
- if (item.fixed || item.hardFixed) {
506
+ const filterItem = (h("snk-filter-item", { onVisibleChanged: (evt) => this.scrollerLocked = evt.detail, onFilterChange: (event) => this.updateFilter(event.detail), onFocusin: () => this.itemFocused(itemId), id: itemId, config: item, class: "ez-margin-horizontal--extra-small", getMessage: (key, props) => this.getMessage(key, props), key: item.id }));
507
+ if (item.fixed || item.hardFixed || item.required) {
540
508
  pinnedItems.push(filterItem);
541
509
  }
542
510
  else {
@@ -545,9 +513,9 @@ const SnkFilterBar = class {
545
513
  return filterItem;
546
514
  });
547
515
  const elements = [];
548
- elements.push(...pinnedItems);
516
+ elements.push(...pinnedItems.reverse());
549
517
  if (pinnedItems.length > 0 && unpinnedItems.length > 0) {
550
- elements.push(h("hr", { class: "ez-divider-vertical ez-divider--dark ez-margin-left--medium snk-filter-bar__divider" }));
518
+ elements.push(h("hr", { class: "ez-margin-horizontal--small ez-margin-vertical--auto ez-divider-vertical ez-divider--dark snk-filter-bar__divider" }));
551
519
  }
552
520
  elements.push(...unpinnedItems);
553
521
  return elements;
@@ -572,7 +540,7 @@ const SnkFilterBar = class {
572
540
  return normalized;
573
541
  }
574
542
  updateFilter(newItem) {
575
- this.filterConfig = this.filterConfig.map(item => {
543
+ let config = this.filterConfig.map(item => {
576
544
  newItem = this.normalizeItem(newItem);
577
545
  if (item.id === newItem.id) {
578
546
  if (ObjectUtils.objectToString(item) != ObjectUtils.objectToString(newItem)) {
@@ -582,6 +550,10 @@ const SnkFilterBar = class {
582
550
  }
583
551
  return item;
584
552
  }).sort((a, b) => this._filtersComparator(a, b));
553
+ if (this.filterCustomConfigInterceptor) {
554
+ config = this.filterCustomConfigInterceptor(config);
555
+ }
556
+ this.filterConfig = config;
585
557
  }
586
558
  loadPermitions() {
587
559
  this._application.isUserSup().then(value => this.allowDefault = value);
@@ -603,6 +575,12 @@ const SnkFilterBar = class {
603
575
  else {
604
576
  config = await ConfigStorage.loadFilterBarConfig(this.configName, this.resourceID, { contextURI: this.dataUnit.name });
605
577
  }
578
+ if (this.filterCustomConfig) {
579
+ config = [...this.filterCustomConfig, ...config];
580
+ }
581
+ if (this.filterCustomConfigInterceptor) {
582
+ config = this.filterCustomConfigInterceptor(config);
583
+ }
606
584
  this.filterConfig = config.map(item => this.normalizeItem(item));
607
585
  this.filterConfig.sort((a, b) => this._filtersComparator(a, b));
608
586
  }
@@ -642,33 +620,17 @@ const SnkFilterBar = class {
642
620
  this.updateFilter(evt.detail);
643
621
  }
644
622
  /**
645
- * Abre o modal de filtros
623
+ * @description Abre o modal de filtros.
624
+ * @async
646
625
  */
647
626
  async showFilterModal() {
648
- const callbackOnApplyFilter = (filters) => {
649
- var _a;
650
- this.filterConfig = filters.map(this.normalizeItem).sort((a, b) => this._filtersComparator(a, b));
651
- (_a = this.afterApplyConfig) === null || _a === void 0 ? void 0 : _a.call(this);
652
- };
653
- let filtersConfigCopy = ObjectUtils.copy(this.filterConfig);
654
- filtersConfigCopy = filtersConfigCopy.sort((itemA, itemB) => {
655
- return itemA.originOrder - itemB.originOrder;
656
- });
657
- const factoryParams = {
658
- filterConfig: filtersConfigCopy,
659
- configName: this.configName,
660
- onComplete: callbackOnApplyFilter,
661
- disablePersonalizedFilter: this.disablePersonalizedFilter,
662
- getMessage: (key, props) => this.getMessage(key, props),
663
- onAddPersonalizedFilter: (isDefault) => this.addPersonalizedFilter(isDefault),
664
- onEditPersonalizedFilter: (id, isDefault) => this.editPersonalizedFilter(id, isDefault),
665
- onDeletePersonalizedFilter: (filter, configName, isDefault) => this.deletePersonalizedFilter(filter, FilterItemType.PERSONALIZED, configName, isDefault),
666
- };
667
- this._filterModalFactory = new SnkFilterModalFactory(factoryParams);
668
- await this._filterModalFactory.showModal();
627
+ if (this.isFilterModalOpen) {
628
+ return; // Evita abrir múltiplos modais
629
+ }
630
+ this.isFilterModalOpen = true;
669
631
  }
670
632
  addPersonalizedFilter(isDefault = false) {
671
- this._filterModalFactory.closeModal();
633
+ this.isFilterModalOpen = false;
672
634
  this._isDefaultFilter = isDefault;
673
635
  this.personalizedFilterId = undefined;
674
636
  this.showPersonalizedFilter = true;
@@ -677,7 +639,7 @@ const SnkFilterBar = class {
677
639
  });
678
640
  }
679
641
  editPersonalizedFilter(id, isDefault = false) {
680
- this._filterModalFactory.closeModal();
642
+ this.isFilterModalOpen = false;
681
643
  this._isDefaultFilter = isDefault;
682
644
  this.showPersonalizedFilter = true;
683
645
  this.personalizedFilterId = id;
@@ -692,6 +654,15 @@ const SnkFilterBar = class {
692
654
  ConfigStorage.removePersonalizedFilter(filter, this.resourceID, configName);
693
655
  }
694
656
  }
657
+ closeFilterModal() {
658
+ this.isFilterModalOpen = false;
659
+ }
660
+ applyFiltersFromModal(filters) {
661
+ var _a;
662
+ this.filterConfig = filters.map(this.normalizeItem).sort((a, b) => this._filtersComparator(a, b));
663
+ (_a = this.afterApplyConfig) === null || _a === void 0 ? void 0 : _a.call(this);
664
+ this.isFilterModalOpen = false;
665
+ }
695
666
  handleHidePersonalizedFilter(reloadFilterBar) {
696
667
  if (reloadFilterBar) {
697
668
  this.loadConfigFromStorage().then(() => {
@@ -738,10 +709,14 @@ const SnkFilterBar = class {
738
709
  if (this.showPersonalizedFilter) {
739
710
  return h("snk-personalized-filter", { class: "filter-bar__personalized-filter", filterId: this.personalizedFilterId, ref: (el) => this._elPersonalizedFilter = el, isDefaultFilter: this._isDefaultFilter, onEzCancel: () => this.handleHidePersonalizedFilter(false), onEzAfterSave: () => this.handleHidePersonalizedFilter(true), entityUri: this.dataUnit.name, configName: this.configName, resourceID: this.resourceID });
740
711
  }
712
+ let filtersConfigCopy = ObjectUtils.copy(this.filterConfig);
713
+ filtersConfigCopy = filtersConfigCopy.sort((itemA, itemB) => {
714
+ return itemA.originOrder - itemB.originOrder;
715
+ });
741
716
  if (this.mode !== "regular") {
742
- return (h(Host, { "data-mode": this.mode }, this.getPersonalizedFilterVariableItems(), this.mode === 'button' && (h("ez-button", { class: "ez-margin-left--medium", size: "small", label: this.getMessage('snkFilterBar.filters', undefined, this.getMessage("snkFilterBar.filters")), onClick: this.showFilterModal.bind(this) }))));
717
+ return (h(Host, { "data-mode": this.mode }, this.getPersonalizedFilterVariableItems(), this.mode === 'button' && (h("ez-button", { class: "ez-margin-left--medium", size: "small", label: this.getMessage('snkFilterBar.filters', undefined, this.getMessage("snkFilterBar.filters")), onClick: this.showFilterModal.bind(this) })), h("snk-filter-modal", { opened: this.isFilterModalOpen, filterConfig: this.filterConfig, configName: this.configName, disablePersonalizedFilter: this.disablePersonalizedFilter, getMessage: (key, props) => this.getMessage(key, props), applyFilters: (filters) => this.applyFiltersFromModal(filters), closeModal: () => this.closeFilterModal(), addPersonalizedFilter: (isDefault) => this.addPersonalizedFilter(isDefault), editPersonalizedFilter: (id, isDefault) => this.editPersonalizedFilter(id, isDefault), deletePersonalizedFilter: (filter, configName, isDefault) => this.deletePersonalizedFilter(filter, FilterItemType.PERSONALIZED, configName, isDefault), filterCustomConfigInterceptor: this.filterCustomConfigInterceptor })));
743
718
  }
744
- return (h(Host, null, h("div", null, h("span", { class: "snk-filter-bar__title", title: this.title, "data-tooltip": this.title, "data-flow": "bottom" }, this.title)), h("ez-scroller", { class: "snk-filter-bar__scroller", direction: EzScrollDirection.HORIZONTAL, activeShadow: true, locked: this.scrollerLocked }, h("section", { class: "snk-filter-bar__filter-item-container" }, this.getFilterItems())), h("ez-button", { class: "ez-padding-left--medium ez-margin-top--extra-small", size: "small", label: this.getMessage('snkFilterBar.filters', undefined, this.getMessage("snkFilterBar.filters")), onClick: this.showFilterModal.bind(this) }, h("ez-icon", { slot: "leftIcon", iconName: "plus", class: "ez-padding-right--small" }))));
719
+ return (h(Host, null, h("div", null, h("span", { class: "snk-filter-bar__title", title: this.title, "data-tooltip": this.title, "data-flow": "bottom" }, this.title)), h("ez-scroller", { class: "snk-filter-bar__scroller", direction: EzScrollDirection.HORIZONTAL, activeShadow: true, locked: this.scrollerLocked }, h("section", { class: "snk-filter-bar__filter-item-container" }, this.getFilterItems())), h("ez-button", { class: "ez-padding-left--medium ez-margin-top--extra-small", size: "small", label: this.getMessage('snkFilterBar.filters', undefined, this.getMessage("snkFilterBar.filters")), onClick: this.showFilterModal.bind(this) }, h("ez-icon", { slot: "leftIcon", iconName: "plus", class: "ez-padding-right--small" })), h("snk-filter-modal", { opened: this.isFilterModalOpen, filterConfig: this.filterConfig, configName: this.configName, disablePersonalizedFilter: this.disablePersonalizedFilter, getMessage: (key, props) => this.getMessage(key, props), applyFilters: (filters) => this.applyFiltersFromModal(filters), closeModal: () => this.closeFilterModal(), addPersonalizedFilter: (isDefault) => this.addPersonalizedFilter(isDefault), editPersonalizedFilter: (id, isDefault) => this.editPersonalizedFilter(id, isDefault), deletePersonalizedFilter: (filter, configName, isDefault) => this.deletePersonalizedFilter(filter, FilterItemType.PERSONALIZED, configName, isDefault), filterCustomConfigInterceptor: this.filterCustomConfigInterceptor })));
745
720
  }
746
721
  get _element() { return getElement(this); }
747
722
  static get watchers() { return {
@@ -757,6 +732,7 @@ const SnkFilterItem = class {
757
732
  registerInstance(this, hostRef);
758
733
  this.visibleChanged = createEvent(this, "visibleChanged", 7);
759
734
  this.filterChange = createEvent(this, "filterChange", 3);
735
+ this._keyboardManager = undefined;
760
736
  this.detailIsVisible = undefined;
761
737
  this.config = undefined;
762
738
  this.getMessage = undefined;
@@ -780,13 +756,15 @@ const SnkFilterItem = class {
780
756
  if (open) {
781
757
  await ((_a = this._chipElement) === null || _a === void 0 ? void 0 : _a.setBlur());
782
758
  await this._popover.showUnder(this._chipElement);
759
+ await this._filterDetail.setFocusField();
783
760
  }
784
761
  }
785
762
  /**
786
763
  * Oculta os detalhes de um item da lista.
787
764
  */
788
765
  async hideDetail() {
789
- await this._popover.hide();
766
+ var _a;
767
+ await ((_a = this._popover) === null || _a === void 0 ? void 0 : _a.hide());
790
768
  }
791
769
  getConfigChanges() {
792
770
  var _a;
@@ -806,12 +784,15 @@ const SnkFilterItem = class {
806
784
  this.filterChange.emit(configChanged);
807
785
  }
808
786
  else {
809
- this.togglePopover();
787
+ this.togglePopover(event);
810
788
  }
811
789
  }
812
790
  async togglePopover(event) {
813
791
  event === null || event === void 0 ? void 0 : event.preventDefault();
814
792
  event === null || event === void 0 ? void 0 : event.stopPropagation();
793
+ if (this.config.enabled === false) {
794
+ return;
795
+ }
815
796
  if (this.detailIsVisible) {
816
797
  await this.hideDetail();
817
798
  }
@@ -960,8 +941,9 @@ const SnkFilterItem = class {
960
941
  return undefined;
961
942
  }
962
943
  hasActiveElements(value) {
963
- var _a, _b, _c;
964
- return ((_c = (_b = ((_a = value === null || value === void 0 ? void 0 : value.elements) !== null && _a !== void 0 ? _a : value)) === null || _b === void 0 ? void 0 : _b.filter(val => val === null || val === void 0 ? void 0 : val.check)) === null || _c === void 0 ? void 0 : _c.length) > 0;
944
+ var _a;
945
+ const list = Array.isArray(value) ? value : value === null || value === void 0 ? void 0 : value.elements;
946
+ return ((_a = list === null || list === void 0 ? void 0 : list.filter((val) => val === null || val === void 0 ? void 0 : val.check)) === null || _a === void 0 ? void 0 : _a.length) > 0;
965
947
  }
966
948
  hasActiveValue(config) {
967
949
  return (config.type !== FilterItemType.MULTI_LIST && config.value !== undefined) || this.hasActiveElements(config.value);
@@ -976,12 +958,67 @@ const SnkFilterItem = class {
976
958
  }
977
959
  return this.hasActiveValue(this.config);
978
960
  }
979
- handleVisibilityPopover(event) {
961
+ async handleVisibilityPopover(event) {
980
962
  this.detailIsVisible = event.detail;
963
+ if (!this.detailIsVisible) {
964
+ await this._filterDetail.clearValue();
965
+ }
966
+ }
967
+ getCustomMessage(key, params) {
968
+ var _a;
969
+ return (_a = this.getMessage) === null || _a === void 0 ? void 0 : _a.call(this, `snkFilterBar.filterModal.${key}`, params);
970
+ }
971
+ hasValue() {
972
+ if (this.config.type === FilterItemType.MULTI_LIST) {
973
+ return this.hasActiveElements(this.config.value);
974
+ }
975
+ return this.config.value !== undefined && this.config.value !== null;
976
+ }
977
+ getTooltipMessage() {
978
+ var _a, _b;
979
+ if (this.config.required && !this.hasValue()) {
980
+ return {
981
+ message: (_a = this.config.requiredMessage) !== null && _a !== void 0 ? _a : this.getCustomMessage('validations.requiredFilter'),
982
+ type: 'error'
983
+ };
984
+ }
985
+ if (this.config.enabled === false && this.config.disabledMessage) {
986
+ return { message: this.config.disabledMessage, type: 'warning' };
987
+ }
988
+ return {
989
+ message: (_b = this.config.defaultMessage) !== null && _b !== void 0 ? _b : this.getLabel(true),
990
+ type: 'default'
991
+ };
992
+ }
993
+ getTypeChip(type) {
994
+ switch (type) {
995
+ case 'default':
996
+ return 'secondary';
997
+ case 'warning':
998
+ return 'warning-light';
999
+ case 'error':
1000
+ return 'error-light';
1001
+ case 'success':
1002
+ return 'success-light';
1003
+ default:
1004
+ return type;
1005
+ }
1006
+ }
1007
+ initKeyboardManager() {
1008
+ this._keyboardManager = new KeyboardManager({ element: this._filterItemElement, propagate: true });
1009
+ this._keyboardManager
1010
+ .bind("Escape", () => this.hideDetail());
1011
+ }
1012
+ connectedCallback() {
1013
+ this.initKeyboardManager();
1014
+ }
1015
+ disconnectedCallback() {
1016
+ this._keyboardManager.unbindAllShortcutKeys();
981
1017
  }
982
1018
  render() {
983
1019
  const leftIcon = this.getLeftIconName();
984
- return (h(Host, null, this.showChips && (h("ez-chip", { id: this.config.id, ref: ref => this._chipElement = ref, label: this.getLabel(), value: this.getEnabledChip(), onClick: (event) => this.togglePopover(event), disableAutoUpdateValue: true, type: "secondary" }, leftIcon && (h("ez-icon", { ref: ref => this._leftIconElement = ref, iconName: leftIcon, slot: "leftIcon" })), h("ez-icon", { ref: ref => this._rightIconElement = ref, iconName: this.getRightIconName(), slot: "rightIcon", id: "removeFilter", onClick: (event) => this.clearFilter(event) }))), h("ez-popover-core", { ref: elem => this._popover = elem, onEzVisibilityChange: (event) => this.handleVisibilityPopover(event) }, h("snk-filter-detail", { key: this.config.id, config: this.config, getMessage: this.getMessage, class: "sc-snk-filter-bar snk-filter__popover ez-padding--small ez-elevation--16", "data-element-id": this._idSnkFilterDetail, showHardFixed: this.showChips }))));
1020
+ const { type, message } = this.getTooltipMessage();
1021
+ return (h(Host, null, this.showChips && (h("ez-tooltip", { id: this.config.id, message: message, type: type, active: !this.detailIsVisible, strategy: "fixed" }, h("ez-chip", { id: this.config.id, ref: ref => this._chipElement = ref, label: this.getLabel(), value: this.getEnabledChip(), onClick: (event) => this.togglePopover(event), disableAutoUpdateValue: true, type: this.getTypeChip(type), enabled: this.config.enabled }, leftIcon && (h("ez-icon", { ref: ref => this._leftIconElement = ref, iconName: leftIcon, slot: "leftIcon" })), h("ez-icon", { ref: ref => this._rightIconElement = ref, iconName: this.getRightIconName(), slot: "rightIcon", id: "removeFilter", onClick: (event) => this.clearFilter(event) })))), h("ez-popover-core", { ref: elem => this._popover = elem, onEzVisibilityChange: (event) => this.handleVisibilityPopover(event) }, h("snk-filter-detail", { ref: ref => this._filterDetail = ref, key: this.config.id, config: this.config, getMessage: this.getMessage, class: "sc-snk-filter-bar snk-filter__popover ez-padding--small ez-elevation--16", "data-element-id": this._idSnkFilterDetail, showHardFixed: this.showChips && !this.config.required, removalBlocked: this.config.required }))));
985
1022
  }
986
1023
  get _filterItemElement() { return getElement(this); }
987
1024
  static get watchers() { return {
@@ -1134,14 +1171,17 @@ const SnkFilterList = class {
1134
1171
  get _element() { return getElement(this); }
1135
1172
  };
1136
1173
 
1137
- const snkFilterModalCss = "ez-modal{--ez-modal-content-padding:24px 12px}.snk-filter-modal__container{width:344px;max-width:344px;min-width:344px;overflow:hidden}.snk-filter-modal__content{display:flex;flex-direction:column;gap:var(--space--medium, 12px);padding-right:var(--space--3xs, 4px)}.snk-filter-modal__collapsible-box{border:var(--border--small, 1px solid) var(--color--strokes, #DCE0E8);border-radius:var(--border--radius-medium);padding:var(--space--medium, 12px) var(--space--small, 6px)}.snk-filter-modal__rendered-items{max-height:760px;overflow-x:hidden;overflow-y:auto}.snk-filter-modal__rendered-items::-webkit-scrollbar{width:var(--space--small);min-width:var(--space--small);max-width:var(--space--small)}";
1174
+ const snkFilterModalCss = "ez-modal{--ez-modal-content-padding:24px 12px}.snk-filter-modal__container{min-width:344px;overflow:hidden}.snk-filter-modal__content{display:flex;flex-direction:column;gap:var(--space--medium, 12px);padding-right:var(--space--3xs, 4px)}.snk-filter-modal__collapsible-box{border:var(--border--small, 1px solid) var(--color--strokes, #DCE0E8);border-radius:var(--border--radius-medium);padding:var(--space--medium, 12px) var(--space--small, 6px)}.snk-filter-modal__rendered-items{max-height:760px}.snk-filter-modal__rendered-items::-webkit-scrollbar{width:var(--space--small);min-width:var(--space--small);max-width:var(--space--small)}";
1138
1175
 
1139
1176
  const SnkFilterModal = class {
1140
1177
  constructor(hostRef) {
1141
1178
  registerInstance(this, hostRef);
1179
+ this.filters = [];
1180
+ this.filtersWithError = [];
1142
1181
  this.getMessage = undefined;
1143
1182
  this.configName = undefined;
1144
- this.filters = undefined;
1183
+ this.filterConfig = undefined;
1184
+ this.opened = false;
1145
1185
  this.applyFilters = undefined;
1146
1186
  this.closeModal = undefined;
1147
1187
  this.addPersonalizedFilter = undefined;
@@ -1150,6 +1190,11 @@ const SnkFilterModal = class {
1150
1190
  this.filtersToDelete = [];
1151
1191
  this.filterDefaultToDelete = undefined;
1152
1192
  this.disablePersonalizedFilter = undefined;
1193
+ this.filterCustomConfigInterceptor = undefined;
1194
+ }
1195
+ filterConfigChangeHandler(newValue) {
1196
+ this.filters = ObjectUtils.copy(newValue);
1197
+ this.validateFilters();
1153
1198
  }
1154
1199
  /**
1155
1200
  * Emitido quando um filtro personalizado é deletado.
@@ -1208,7 +1253,7 @@ const SnkFilterModal = class {
1208
1253
  });
1209
1254
  }
1210
1255
  hasChangeToSave() {
1211
- const hasChangesPersonalizedFilters = ObjectUtils.objectToString(this.filters) !== ObjectUtils.objectToString(this._originalFilterConfig);
1256
+ const hasChangesPersonalizedFilters = ObjectUtils.objectToString(this.filters) !== ObjectUtils.objectToString(this.filters);
1212
1257
  return hasChangesPersonalizedFilters;
1213
1258
  }
1214
1259
  handleClose() {
@@ -1223,6 +1268,9 @@ const SnkFilterModal = class {
1223
1268
  });
1224
1269
  }
1225
1270
  handleApplyFilters() {
1271
+ if (!this.validateFilters()) {
1272
+ return;
1273
+ }
1226
1274
  const filterPersonalized = this.filters.find(filter => filter.filterType === FilterType.CUSTOM_FILTER || filter.filterType === FilterType.DEFAULT_FILTER);
1227
1275
  if (this.isValidCustomFilter(filterPersonalized)) {
1228
1276
  this.applyFilters(this.filters);
@@ -1261,8 +1309,14 @@ const SnkFilterModal = class {
1261
1309
  break;
1262
1310
  }
1263
1311
  }
1264
- handleFilterChange(filterConfig) {
1265
- this.filters = this.filters.map(filter => filter.id === filterConfig.id ? filterConfig : filter);
1312
+ handleFilterChange(event) {
1313
+ event.stopPropagation();
1314
+ const filterConfig = event.detail;
1315
+ let config = this.filters.map(filter => filter.id === filterConfig.id ? filterConfig : filter);
1316
+ if (this.filterCustomConfigInterceptor) {
1317
+ config = this.filterCustomConfigInterceptor(config);
1318
+ }
1319
+ this.filters = ObjectUtils.copy(config);
1266
1320
  }
1267
1321
  handleClearFilterList(filterList) {
1268
1322
  this.filters = this.filters.map(filter => filterList.includes(filter) ? (Object.assign(Object.assign({}, filter), { value: undefined })) : filter);
@@ -1295,8 +1349,22 @@ const SnkFilterModal = class {
1295
1349
  });
1296
1350
  return valueList;
1297
1351
  }
1352
+ validateFilters() {
1353
+ const notValidFilters = getInvalidFilters(this.filters);
1354
+ this.filtersWithError = notValidFilters.map(item => item.id);
1355
+ if (notValidFilters.length === 0) {
1356
+ return true;
1357
+ }
1358
+ notValidFilters.forEach(item => {
1359
+ const filterItem = this._element.querySelector(`#filter-item-${item.id}`);
1360
+ if (filterItem) {
1361
+ filterItem["errorMessage"] = item.requiredMessage || this.getCustomMessage('validations.requiredFilter');
1362
+ }
1363
+ });
1364
+ return false;
1365
+ }
1298
1366
  renderFilterItem(filterItem, fullRow) {
1299
- return (h("snk-filter-modal-item", { class: fullRow ? 'ez-col ez-col--sd-12' : 'ez-col ez-col--sd-6 ez-padding--small', filterItem: filterItem, configName: this.configName, onFilterChange: (event) => this.handleFilterChange(event.detail), onEditPersonalizedFilter: evt => this.editPersonalizedFilter(evt.detail), onAddPersonalizedFilter: () => this.addPersonalizedFilter() }));
1367
+ return (h("snk-filter-modal-item", { key: `modal-item-${filterItem.id}`, class: fullRow ? 'ez-col ez-col--sd-12' : 'ez-col ez-col--sd-6 ez-padding--small', filterItem: filterItem, configName: this.configName, onFilterChange: (event) => this.handleFilterChange(event), onEditPersonalizedFilter: evt => this.editPersonalizedFilter(evt.detail), onAddPersonalizedFilter: () => this.addPersonalizedFilter() }));
1300
1368
  }
1301
1369
  isDefaultFilterNumberVariation(filter) {
1302
1370
  var _a;
@@ -1333,8 +1401,9 @@ const SnkFilterModal = class {
1333
1401
  }
1334
1402
  getIformedFiltersCount(listItems) {
1335
1403
  let countInformedItens = 0;
1336
- listItems.forEach(item => {
1404
+ listItems.forEach(localItem => {
1337
1405
  var _a, _b, _c, _d, _e, _f;
1406
+ const item = this.filterConfig.find(filter => filter.id === localItem.id);
1338
1407
  if (FilterItemType.MULTI_LIST === item.type) {
1339
1408
  countInformedItens += (_e = (_d = (_c = ((_b = (_a = item.value) === null || _a === void 0 ? void 0 : _a.elements) !== null && _b !== void 0 ? _b : item.value)) === null || _c === void 0 ? void 0 : _c.filter(value => value === null || value === void 0 ? void 0 : value.check)) === null || _d === void 0 ? void 0 : _d.length) !== null && _e !== void 0 ? _e : 0;
1340
1409
  return;
@@ -1360,7 +1429,8 @@ const SnkFilterModal = class {
1360
1429
  return null;
1361
1430
  const appliedFilters = this.getIformedFiltersCount(listItems);
1362
1431
  const lines = this.mountFiltersLines(listItems);
1363
- return (h("ez-collapsible-box", { class: "snk-filter-modal__collapsible-box", headerSize: "medium", value: true, label: label }, !!appliedFilters && (h("ez-badge", { class: "ez-badge--primary-subtle", slot: "rightSlot", label: appliedFilters === null || appliedFilters === void 0 ? void 0 : appliedFilters.toString() })), h("div", { class: "ez-row snk-filter-modal__rendered-items" }, lines.map(this.renderFilterLine.bind(this))), shouldRenderFooter && (h("div", { class: "ez-flex ez-flex--justify-end grow" }, h("ez-button", { class: "ez-button--tertiary", size: "medium", label: this.getCustomMessage("clearModal"), onClick: () => isSingleItem ? this.handleClearSigleFilter(listItems[0]) : this.handleClearFilterList(listItems) })))));
1432
+ const countFiltersWithError = this.filtersWithError.filter(item => listItems.some(filter => filter.id === item)).length;
1433
+ return (h("ez-collapsible-box", { class: "snk-filter-modal__collapsible-box", headerSize: "medium", value: true, label: label }, h("div", { class: "ez-flex ez-flex--justify-end grow", slot: "rightSlot" }, !!appliedFilters && (h("ez-badge", { class: "ez-badge--primary-subtle", label: appliedFilters === null || appliedFilters === void 0 ? void 0 : appliedFilters.toString() })), !!countFiltersWithError && (h("ez-badge", { class: "ez-badge--error-subtle", label: countFiltersWithError === null || countFiltersWithError === void 0 ? void 0 : countFiltersWithError.toString() }))), h("div", { class: "ez-row snk-filter-modal__rendered-items" }, lines.map(this.renderFilterLine.bind(this))), shouldRenderFooter && (h("div", { class: "ez-flex ez-flex--justify-end grow" }, h("ez-button", { class: "ez-button--tertiary", size: "medium", label: this.getCustomMessage("clearModal"), onClick: () => isSingleItem ? this.handleClearSigleFilter(listItems[0]) : this.handleClearFilterList(listItems) })))));
1364
1434
  }
1365
1435
  handleDeleteFilter() {
1366
1436
  this._application.confirm(this.getMessage('snkPersonalizedFilter.deleteConfirm.title'), this.getMessage('snkPersonalizedFilter.info.deleteDefaultFilterConfirm'), "alert-circle-inverted", "critical").then((actionConfirmed) => {
@@ -1394,6 +1464,7 @@ const SnkFilterModal = class {
1394
1464
  }
1395
1465
  componentWillLoad() {
1396
1466
  this._application = ApplicationContext.getContextValue('__SNK__APPLICATION__');
1467
+ this.filters = ObjectUtils.copy(this.filterConfig);
1397
1468
  }
1398
1469
  componentWillRender() {
1399
1470
  this._modalTitle = this.getCustomMessage('title');
@@ -1401,16 +1472,19 @@ const SnkFilterModal = class {
1401
1472
  this._cancelButtonLabel = this.getCustomMessage('cancelButtonLabel');
1402
1473
  }
1403
1474
  componentDidLoad() {
1404
- if (!this._originalFilterConfig)
1405
- this._originalFilterConfig = this.filters;
1475
+ this.validateFilters();
1406
1476
  }
1407
1477
  render() {
1408
1478
  this._defaultFilter = this.getDefaultFilter(this.filters);
1409
1479
  const customFilters = this.getCustomFilter(this.filters);
1410
1480
  const quickFilters = this.filters.filter(filter => filter.filterType === FilterType.QUICK_FILTER);
1411
1481
  const otherFilters = this.filters.filter(filter => filter.filterType === FilterType.OTHER_FILTERS);
1412
- return (h("ez-modal-container", { class: "snk-filter-modal__container", modalTitle: this._modalTitle, cancelButtonLabel: this._cancelButtonLabel, okButtonLabel: this._okButtonLabel, onEzModalAction: this.modalActionListener.bind(this) }, h("div", { class: "snk-filter-modal__content ez-col--sd-12" }, h("snk-default-filter", { getMessage: this.getCustomMessage.bind(this), hasDefaultFilter: !!this._defaultFilter, onActionSelected: this.handleActionSelectedDefaultFilter.bind(this) }), !this.disablePersonalizedFilter && this.renderCollapsibleFilterBox(this.getCustomMessage('customFilters'), customFilters, false, false), this.renderCollapsibleFilterBox(this.getCustomMessage('quickFilters'), quickFilters, false), otherFilters.map(filter => this.renderCollapsibleFilterBox(filter.label, [filter], true)))));
1482
+ return (h("ez-modal", { opened: this.opened, modalSize: "col--sd-3", align: "right", heightMode: "full", closeEsc: true }, h("ez-modal-container", { class: "snk-filter-modal__container", modalTitle: this._modalTitle, cancelButtonLabel: this._cancelButtonLabel, okButtonLabel: this._okButtonLabel, onEzModalAction: this.modalActionListener.bind(this) }, h("div", { class: "snk-filter-modal__content ez-col--sd-12" }, h("snk-default-filter", { getMessage: this.getCustomMessage.bind(this), hasDefaultFilter: !!this._defaultFilter, onActionSelected: this.handleActionSelectedDefaultFilter.bind(this) }), !this.disablePersonalizedFilter && this.renderCollapsibleFilterBox(this.getCustomMessage('customFilters'), customFilters, false, false), this.renderCollapsibleFilterBox(this.getCustomMessage('quickFilters'), quickFilters, false), otherFilters.map(filter => this.renderCollapsibleFilterBox(filter.label, [filter], true))))));
1413
1483
  }
1484
+ get _element() { return getElement(this); }
1485
+ static get watchers() { return {
1486
+ "filterConfig": ["filterConfigChangeHandler"]
1487
+ }; }
1414
1488
  };
1415
1489
  SnkFilterModal.style = snkFilterModalCss;
1416
1490