@sankhyalabs/sankhyablocks 1.3.34 → 1.4.0-beta.10

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 (285) hide show
  1. package/dist/cjs/SnkMessageBuilder-6c2f7bcd.js +302 -0
  2. package/dist/cjs/_commonjsHelpers-537d719a.js +20 -0
  3. package/dist/cjs/configurableElementsStorage-93459c72.js +20 -0
  4. package/dist/cjs/constants-9056ca9e.js +84 -0
  5. package/dist/cjs/draggable.bundle-82a25c06.js +6886 -0
  6. package/dist/cjs/filter-item-type.enum-3daf58d3.js +16 -0
  7. package/dist/cjs/form-config-fetcher-2de7c16a.js +6895 -0
  8. package/dist/cjs/{index-1133bc2a.js → index-20e8b68a.js} +964 -209
  9. package/dist/cjs/loader.cjs.js +3 -3
  10. package/dist/cjs/sankhyablocks.cjs.js +3 -3
  11. package/dist/cjs/snk-application.cjs.entry.js +680 -6994
  12. package/dist/cjs/snk-config-modal.cjs.entry.js +62 -0
  13. package/dist/cjs/snk-config-options.cjs.entry.js +230 -0
  14. package/dist/cjs/snk-configurator_6.cjs.entry.js +1156 -0
  15. package/dist/cjs/snk-crud.cjs.entry.js +78 -0
  16. package/dist/cjs/snk-data-unit.cjs.entry.js +272 -0
  17. package/dist/cjs/snk-field-config_2.cjs.entry.js +135 -0
  18. package/dist/cjs/snk-filter-binary-select.cjs.entry.js +50 -0
  19. package/dist/cjs/snk-filter-detail.cjs.entry.js +106 -0
  20. package/dist/cjs/snk-filter-multi-select.cjs.entry.js +26 -0
  21. package/dist/cjs/snk-filter-number.cjs.entry.js +27 -0
  22. package/dist/cjs/snk-filter-period.cjs.entry.js +40 -0
  23. package/dist/cjs/snk-filter-personalized.cjs.entry.js +89 -0
  24. package/dist/cjs/snk-filter-search.cjs.entry.js +38 -0
  25. package/dist/cjs/snk-filter-text.cjs.entry.js +22 -0
  26. package/dist/cjs/snk-form-config.cjs.entry.js +957 -0
  27. package/dist/cjs/snk-form.cjs.entry.js +146 -0
  28. package/dist/cjs/snk-pesquisa.cjs.entry.js +1 -1
  29. package/dist/cjs/snk-tab-config.cjs.entry.js +321 -0
  30. package/dist/cjs/taskbar-elements-9a4b1e19.js +97 -0
  31. package/dist/cjs/taskbar-processor-6bd0d35c.js +47 -0
  32. package/dist/cjs/teste-pesquisa.cjs.entry.js +1 -1
  33. package/dist/collection/collection-manifest.json +45 -2
  34. package/dist/collection/components/snk-application/errorhandler/snk-error-handler.js +9 -2
  35. package/dist/collection/components/snk-application/snk-application.js +1346 -642
  36. package/dist/collection/components/snk-configurator/snk-configurator.js +261 -0
  37. package/dist/collection/components/snk-configurator/subcomponents/configModalProvider/configurableElementsStorage.js +16 -0
  38. package/dist/collection/components/snk-configurator/subcomponents/snk-config-modal/snk-config-modal.css +122 -0
  39. package/dist/collection/components/snk-configurator/subcomponents/snk-config-modal/snk-config-modal.js +137 -0
  40. package/dist/collection/components/snk-crud/snk-crud.css +6 -0
  41. package/dist/collection/components/snk-crud/snk-crud.js +232 -0
  42. package/dist/collection/components/snk-data-unit/snk-data-unit.css +6 -0
  43. package/dist/collection/components/snk-data-unit/snk-data-unit.js +517 -0
  44. package/dist/collection/components/snk-filter-bar/filter-item/dataunitfilter/data-unit-filter-builder.js +100 -0
  45. package/dist/collection/components/snk-filter-bar/filter-item/editors/snk-filter-binary-select.js +111 -0
  46. package/dist/collection/components/snk-filter-bar/filter-item/editors/snk-filter-multi-select.js +87 -0
  47. package/dist/collection/components/snk-filter-bar/filter-item/editors/snk-filter-number.js +88 -0
  48. package/dist/collection/components/snk-filter-bar/filter-item/editors/snk-filter-period.js +101 -0
  49. package/dist/collection/components/snk-filter-bar/filter-item/editors/snk-filter-personalized.js +180 -0
  50. package/dist/collection/components/snk-filter-bar/filter-item/editors/snk-filter-search.js +102 -0
  51. package/dist/collection/components/snk-filter-bar/filter-item/editors/snk-filter-text.js +63 -0
  52. package/dist/collection/components/snk-filter-bar/filter-item/filter-item-type.enum.js +12 -0
  53. package/dist/collection/components/snk-filter-bar/filter-item/snk-filter-detail.js +178 -0
  54. package/dist/collection/components/snk-filter-bar/filter-item/snk-filter-item.js +289 -0
  55. package/dist/collection/components/snk-filter-bar/filter-list/snk-filter-list.js +299 -0
  56. package/dist/collection/components/snk-filter-bar/filter-modal/snk-filter-modal.js +222 -0
  57. package/dist/collection/components/snk-filter-bar/snk-filter-bar.css +149 -0
  58. package/dist/collection/components/snk-filter-bar/snk-filter-bar.js +462 -0
  59. package/dist/collection/components/snk-form/snk-form.css +38 -0
  60. package/dist/collection/components/snk-form/snk-form.js +336 -0
  61. package/dist/collection/components/snk-form/subcomponents/snk-config-options/snk-config-options.css +9 -0
  62. package/dist/collection/components/snk-form/subcomponents/snk-config-options/snk-config-options.js +315 -0
  63. package/dist/collection/components/snk-form/subcomponents/snk-field-config/snk-field-config.css +164 -0
  64. package/dist/collection/components/snk-form/subcomponents/snk-field-config/snk-field-config.js +140 -0
  65. package/dist/collection/components/snk-form/subcomponents/snk-form-config/snk-form-config.css +185 -0
  66. package/dist/collection/components/snk-form/subcomponents/snk-form-config/snk-form-config.js +1062 -0
  67. package/dist/collection/components/snk-form/subcomponents/snk-tab-config/snk-tab-config.css +272 -0
  68. package/dist/collection/components/snk-form/subcomponents/snk-tab-config/snk-tab-config.js +476 -0
  69. package/dist/collection/components/snk-grid/snk-grid.css +18 -0
  70. package/dist/collection/components/snk-grid/snk-grid.js +273 -0
  71. package/dist/collection/components/snk-pesquisa/snk-pesquisa.js +80 -79
  72. package/dist/collection/components/snk-taskbar/elements/taskbar-elements.js +90 -0
  73. package/dist/collection/components/snk-taskbar/processor/taskbar-processor.js +43 -0
  74. package/dist/collection/components/snk-taskbar/snk-taskbar.css +3 -0
  75. package/dist/collection/components/snk-taskbar/snk-taskbar.js +339 -0
  76. package/dist/collection/components/teste-pesquisa/teste-pesquisa.js +12 -9
  77. package/dist/collection/lib/http/data-fetcher/DataFetcher.js +39 -14
  78. package/dist/collection/lib/http/data-fetcher/fetchers/dataunit-fetcher.js +87 -21
  79. package/dist/collection/lib/http/data-fetcher/fetchers/filter-bar-config-fetcher.js +62 -0
  80. package/dist/collection/lib/http/data-fetcher/fetchers/form-config-fetcher.js +106 -3
  81. package/dist/collection/lib/http/data-fetcher/fetchers/grid-config-fetcher.js +4 -3
  82. package/dist/collection/lib/http/data-fetcher/fetchers/parameters-fecher.js +15 -15
  83. package/dist/collection/lib/http/data-fetcher/fetchers/resource-fetcher.js +9 -1
  84. package/dist/collection/lib/http/data-fetcher/fetchers/totals-fetcher.js +47 -0
  85. package/dist/collection/lib/index.js +2 -0
  86. package/dist/collection/lib/message/SnkMessageBuilder.js +130 -0
  87. package/dist/collection/lib/message/resources/crud-utils.msg.js +4 -0
  88. package/dist/collection/lib/message/resources/snk-configurator.msg.js +11 -0
  89. package/dist/collection/lib/message/resources/snk-data-unit.msg.js +23 -0
  90. package/dist/collection/lib/message/resources/snk-filter-bar.msg.js +30 -0
  91. package/dist/collection/lib/message/resources/snk-form.msg.js +67 -0
  92. package/dist/collection/lib/message/resources/snk-taskbar.msg.js +17 -0
  93. package/dist/collection/lib/utils/CrudUtils.js +73 -0
  94. package/dist/collection/lib/utils/constants.js +72 -0
  95. package/dist/components/SnkMessageBuilder.js +280 -0
  96. package/dist/components/_commonjsHelpers.js +17 -0
  97. package/dist/components/constants.js +74 -0
  98. package/dist/components/filter-item-type.enum.js +14 -0
  99. package/dist/components/form-config-fetcher.js +6889 -0
  100. package/dist/components/index.d.ts +26 -5
  101. package/dist/components/index.js +26 -0
  102. package/dist/components/snk-application2.js +681 -6980
  103. package/dist/components/snk-config-modal.d.ts +11 -0
  104. package/dist/components/snk-config-modal.js +6 -0
  105. package/dist/components/snk-config-modal2.js +91 -0
  106. package/dist/components/snk-config-options.d.ts +11 -0
  107. package/dist/components/snk-config-options.js +6 -0
  108. package/dist/components/snk-config-options2.js +245 -0
  109. package/dist/components/snk-configurator.d.ts +11 -0
  110. package/dist/components/snk-configurator.js +6 -0
  111. package/dist/components/snk-configurator2.js +212 -0
  112. package/dist/components/snk-crud.d.ts +11 -0
  113. package/dist/components/snk-crud.js +183 -0
  114. package/dist/components/snk-data-unit.d.ts +11 -0
  115. package/dist/components/snk-data-unit.js +294 -0
  116. package/dist/components/snk-field-config.d.ts +11 -0
  117. package/dist/components/snk-field-config.js +6 -0
  118. package/dist/components/snk-field-config2.js +70 -0
  119. package/dist/components/snk-filter-bar.d.ts +11 -0
  120. package/dist/components/snk-filter-bar.js +6 -0
  121. package/dist/components/snk-filter-bar2.js +516 -0
  122. package/dist/components/snk-filter-binary-select.d.ts +11 -0
  123. package/dist/components/snk-filter-binary-select.js +67 -0
  124. package/dist/components/snk-filter-detail.d.ts +11 -0
  125. package/dist/components/snk-filter-detail.js +6 -0
  126. package/dist/components/snk-filter-detail2.js +120 -0
  127. package/dist/components/snk-filter-item.d.ts +11 -0
  128. package/dist/components/snk-filter-item.js +6 -0
  129. package/dist/components/snk-filter-item2.js +194 -0
  130. package/dist/components/snk-filter-list.d.ts +11 -0
  131. package/dist/components/snk-filter-list.js +6 -0
  132. package/dist/components/snk-filter-list2.js +149 -0
  133. package/dist/components/snk-filter-modal.d.ts +11 -0
  134. package/dist/components/snk-filter-modal.js +6 -0
  135. package/dist/components/snk-filter-modal2.js +84 -0
  136. package/dist/components/snk-filter-multi-select.d.ts +11 -0
  137. package/dist/components/snk-filter-multi-select.js +43 -0
  138. package/dist/components/snk-filter-number.d.ts +11 -0
  139. package/dist/components/snk-filter-number.js +44 -0
  140. package/dist/components/snk-filter-period.d.ts +11 -0
  141. package/dist/components/snk-filter-period.js +57 -0
  142. package/dist/components/snk-filter-personalized.d.ts +11 -0
  143. package/dist/components/snk-filter-personalized.js +108 -0
  144. package/dist/components/snk-filter-search.d.ts +11 -0
  145. package/dist/components/snk-filter-search.js +55 -0
  146. package/dist/components/snk-filter-text.d.ts +11 -0
  147. package/dist/components/snk-filter-text.js +38 -0
  148. package/dist/components/snk-form-config.d.ts +11 -0
  149. package/dist/components/snk-form-config.js +6 -0
  150. package/dist/components/snk-form-config2.js +996 -0
  151. package/dist/components/snk-form.d.ts +11 -0
  152. package/dist/components/snk-form.js +6 -0
  153. package/dist/components/snk-form2.js +209 -0
  154. package/dist/components/snk-grid.d.ts +11 -0
  155. package/dist/components/snk-grid.js +6 -0
  156. package/dist/components/snk-grid2.js +152 -0
  157. package/dist/components/snk-tab-config.d.ts +11 -0
  158. package/dist/components/snk-tab-config.js +6 -0
  159. package/dist/components/snk-tab-config2.js +7220 -0
  160. package/dist/components/snk-taskbar.d.ts +11 -0
  161. package/dist/components/snk-taskbar.js +6 -0
  162. package/dist/components/snk-taskbar2.js +282 -0
  163. package/dist/components/taskbar-processor.js +45 -0
  164. package/dist/esm/SnkMessageBuilder-5792c260.js +280 -0
  165. package/dist/esm/_commonjsHelpers-9943807e.js +17 -0
  166. package/dist/esm/configurableElementsStorage-cdc144b5.js +18 -0
  167. package/dist/esm/constants-c6039d3d.js +74 -0
  168. package/dist/esm/draggable.bundle-41d56f06.js +6884 -0
  169. package/dist/esm/filter-item-type.enum-a79b2fa8.js +14 -0
  170. package/dist/esm/form-config-fetcher-96c6c2dc.js +6889 -0
  171. package/dist/esm/{index-ffda6382.js → index-e4121713.js} +963 -210
  172. package/dist/esm/loader.js +3 -3
  173. package/dist/esm/polyfills/css-shim.js +1 -1
  174. package/dist/esm/sankhyablocks.js +3 -3
  175. package/dist/esm/snk-application.entry.js +667 -6981
  176. package/dist/esm/snk-config-modal.entry.js +58 -0
  177. package/dist/esm/snk-config-options.entry.js +226 -0
  178. package/dist/esm/snk-configurator_6.entry.js +1147 -0
  179. package/dist/esm/snk-crud.entry.js +74 -0
  180. package/dist/esm/snk-data-unit.entry.js +268 -0
  181. package/dist/esm/snk-field-config_2.entry.js +130 -0
  182. package/dist/esm/snk-filter-binary-select.entry.js +46 -0
  183. package/dist/esm/snk-filter-detail.entry.js +102 -0
  184. package/dist/esm/snk-filter-multi-select.entry.js +22 -0
  185. package/dist/esm/snk-filter-number.entry.js +23 -0
  186. package/dist/esm/snk-filter-period.entry.js +36 -0
  187. package/dist/esm/snk-filter-personalized.entry.js +85 -0
  188. package/dist/esm/snk-filter-search.entry.js +34 -0
  189. package/dist/esm/snk-filter-text.entry.js +18 -0
  190. package/dist/esm/snk-form-config.entry.js +953 -0
  191. package/dist/esm/snk-form.entry.js +142 -0
  192. package/dist/esm/snk-pesquisa.entry.js +1 -1
  193. package/dist/esm/snk-tab-config.entry.js +317 -0
  194. package/dist/esm/taskbar-elements-e2ed0536.js +94 -0
  195. package/dist/esm/taskbar-processor-aa6772c9.js +45 -0
  196. package/dist/esm/teste-pesquisa.entry.js +1 -1
  197. package/dist/sankhyablocks/p-029ae4e4.entry.js +1 -0
  198. package/dist/sankhyablocks/p-03f9c407.js +1 -0
  199. package/dist/sankhyablocks/p-112455b1.js +1 -0
  200. package/dist/sankhyablocks/p-12ad2a19.entry.js +1 -0
  201. package/dist/sankhyablocks/p-1feabfc7.entry.js +1 -0
  202. package/dist/sankhyablocks/p-21c8929b.js +1 -0
  203. package/dist/sankhyablocks/p-2284c850.entry.js +1 -0
  204. package/dist/sankhyablocks/p-2b891c4a.entry.js +1 -0
  205. package/dist/sankhyablocks/p-2dc76d79.entry.js +1 -0
  206. package/dist/sankhyablocks/p-361299e8.js +26 -0
  207. package/dist/sankhyablocks/p-3a276f3d.entry.js +1 -0
  208. package/dist/sankhyablocks/p-400cc777.entry.js +1 -0
  209. package/dist/sankhyablocks/{p-2a7b4cb3.entry.js → p-44ce5b90.entry.js} +1 -1
  210. package/dist/sankhyablocks/p-521c96f0.entry.js +1 -0
  211. package/dist/sankhyablocks/{p-9520d78a.entry.js → p-6988f4a6.entry.js} +1 -1
  212. package/dist/sankhyablocks/p-776ff4d1.entry.js +1 -0
  213. package/dist/sankhyablocks/p-7b4a4a50.entry.js +1 -0
  214. package/dist/sankhyablocks/p-9ba3df4c.js +2 -0
  215. package/dist/sankhyablocks/p-9dc4426d.entry.js +1 -0
  216. package/dist/sankhyablocks/p-9dd2b8cb.js +1 -0
  217. package/dist/sankhyablocks/p-a17a4fca.entry.js +1 -0
  218. package/dist/sankhyablocks/p-a5b26df2.js +1 -0
  219. package/dist/sankhyablocks/p-b6d6b172.js +1 -0
  220. package/dist/sankhyablocks/p-cc4bef9f.entry.js +1 -0
  221. package/dist/sankhyablocks/p-d50651a3.js +1 -0
  222. package/dist/sankhyablocks/p-d690b6b5.entry.js +75 -0
  223. package/dist/sankhyablocks/p-d9fbb26f.js +1 -0
  224. package/dist/sankhyablocks/p-deb1f523.entry.js +1 -0
  225. package/dist/sankhyablocks/p-e871aa92.entry.js +1 -0
  226. package/dist/sankhyablocks/p-e9beab79.entry.js +1 -0
  227. package/dist/sankhyablocks/sankhyablocks.esm.js +1 -1
  228. package/dist/types/components/snk-application/errorhandler/snk-error-handler.d.ts +1 -0
  229. package/dist/types/components/snk-application/snk-application.d.ts +178 -26
  230. package/dist/types/components/snk-configurator/snk-configurator.d.ts +46 -0
  231. package/dist/types/components/snk-configurator/subcomponents/configModalProvider/configurableElementsStorage.d.ts +8 -0
  232. package/dist/types/components/snk-configurator/subcomponents/snk-config-modal/snk-config-modal.d.ts +38 -0
  233. package/dist/types/components/snk-crud/snk-crud.d.ts +50 -0
  234. package/dist/types/components/snk-data-unit/snk-data-unit.d.ts +92 -0
  235. package/dist/types/components/snk-filter-bar/filter-item/dataunitfilter/data-unit-filter-builder.d.ts +4 -0
  236. package/dist/types/components/snk-filter-bar/filter-item/editors/snk-filter-binary-select.d.ts +13 -0
  237. package/dist/types/components/snk-filter-bar/filter-item/editors/snk-filter-multi-select.d.ts +9 -0
  238. package/dist/types/components/snk-filter-bar/filter-item/editors/snk-filter-number.d.ts +9 -0
  239. package/dist/types/components/snk-filter-bar/filter-item/editors/snk-filter-period.d.ts +15 -0
  240. package/dist/types/components/snk-filter-bar/filter-item/editors/snk-filter-personalized.d.ts +24 -0
  241. package/dist/types/components/snk-filter-bar/filter-item/editors/snk-filter-search.d.ts +11 -0
  242. package/dist/types/components/snk-filter-bar/filter-item/editors/snk-filter-text.d.ts +8 -0
  243. package/dist/types/components/snk-filter-bar/filter-item/filter-item-type.enum.d.ts +11 -0
  244. package/dist/types/components/snk-filter-bar/filter-item/snk-filter-detail.d.ts +20 -0
  245. package/dist/types/components/snk-filter-bar/filter-item/snk-filter-item.d.ts +40 -0
  246. package/dist/types/components/snk-filter-bar/filter-list/snk-filter-list.d.ts +45 -0
  247. package/dist/types/components/snk-filter-bar/filter-modal/snk-filter-modal.d.ts +26 -0
  248. package/dist/types/components/snk-filter-bar/snk-filter-bar.d.ts +65 -0
  249. package/dist/types/components/snk-form/snk-form.d.ts +71 -0
  250. package/dist/types/components/snk-form/subcomponents/snk-config-options/snk-config-options.d.ts +51 -0
  251. package/dist/types/components/snk-form/subcomponents/snk-field-config/snk-field-config.d.ts +32 -0
  252. package/dist/types/components/snk-form/subcomponents/snk-form-config/snk-form-config.d.ts +139 -0
  253. package/dist/types/components/snk-form/subcomponents/snk-tab-config/snk-tab-config.d.ts +97 -0
  254. package/dist/types/components/snk-grid/snk-grid.d.ts +59 -0
  255. package/dist/types/components/snk-taskbar/elements/taskbar-elements.d.ts +30 -0
  256. package/dist/types/components/snk-taskbar/processor/taskbar-processor.d.ts +12 -0
  257. package/dist/types/components/snk-taskbar/snk-taskbar.d.ts +92 -0
  258. package/dist/types/components.d.ts +1100 -12
  259. package/dist/types/lib/http/data-fetcher/DataFetcher.d.ts +7 -6
  260. package/dist/types/lib/http/data-fetcher/fetchers/dataunit-fetcher.d.ts +3 -0
  261. package/dist/types/lib/http/data-fetcher/fetchers/filter-bar-config-fetcher.d.ts +6 -0
  262. package/dist/types/lib/http/data-fetcher/fetchers/form-config-fetcher.d.ts +21 -3
  263. package/dist/types/lib/http/data-fetcher/fetchers/grid-config-fetcher.d.ts +1 -1
  264. package/dist/types/lib/http/data-fetcher/fetchers/parameters-fecher.d.ts +7 -7
  265. package/dist/types/lib/http/data-fetcher/fetchers/resource-fetcher.d.ts +1 -0
  266. package/dist/types/lib/http/data-fetcher/fetchers/totals-fetcher.d.ts +8 -0
  267. package/dist/types/lib/index.d.ts +2 -0
  268. package/dist/types/lib/message/SnkMessageBuilder.d.ts +42 -0
  269. package/dist/types/lib/message/resources/crud-utils.msg.d.ts +2 -0
  270. package/dist/types/lib/message/resources/snk-configurator.msg.d.ts +2 -0
  271. package/dist/types/lib/message/resources/snk-data-unit.msg.d.ts +2 -0
  272. package/dist/types/lib/message/resources/snk-filter-bar.msg.d.ts +2 -0
  273. package/dist/types/lib/message/resources/snk-form.msg.d.ts +5 -0
  274. package/dist/types/lib/message/resources/snk-taskbar.msg.d.ts +2 -0
  275. package/dist/types/lib/utils/CrudUtils.d.ts +6 -0
  276. package/dist/types/lib/utils/constants.d.ts +76 -0
  277. package/dist/types/lib/utils/pesquisa.d.ts +2 -1
  278. package/dist/types/stencil-public-runtime.d.ts +15 -4
  279. package/loader/package.json +1 -0
  280. package/package.json +6 -5
  281. package/react/components.d.ts +23 -0
  282. package/react/components.js +23 -0
  283. package/react/components.js.map +1 -1
  284. package/dist/sankhyablocks/p-98e8490d.entry.js +0 -69
  285. package/dist/sankhyablocks/p-edcb9d8e.js +0 -2
@@ -0,0 +1,1156 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ const index = require('./index-20e8b68a.js');
6
+ const core = require('@sankhyalabs/core');
7
+ const utils = require('@sankhyalabs/ezui/dist/collection/utils');
8
+ const constants = require('./constants-9056ca9e.js');
9
+ const configurableElementsStorage = require('./configurableElementsStorage-93459c72.js');
10
+ const filterItemType_enum = require('./filter-item-type.enum-3daf58d3.js');
11
+ const ezModalContainer = require('@sankhyalabs/ezui/dist/collection/components/ez-modal-container');
12
+ const DataType = require('@sankhyalabs/core/dist/dataunit/metadata/DataType');
13
+ const taskbarElements = require('./taskbar-elements-9a4b1e19.js');
14
+
15
+ const GRID_MODE = constants.VIEW_MODE.grid;
16
+ const FORM_MODE = constants.VIEW_MODE.form;
17
+ const SnkConfigurator = class {
18
+ constructor(hostRef) {
19
+ index.registerInstance(this, hostRef);
20
+ this.changeViewMode = index.createEvent(this, "changeViewMode", 7);
21
+ /**
22
+ * Nome do componente que será vinculado ao `data-configurator-parent` para controlar o modal de configurações.
23
+ */
24
+ this.name = "snkConfigurator";
25
+ /**
26
+ * Define se o campo está habilitado.
27
+ */
28
+ this.enabled = true;
29
+ }
30
+ /**
31
+ * Conforme mecanismo de mensagens, é possível customizar as mensagens dos blocos de construção
32
+ * através de um pequeno modulo na estrutura da aplicação:
33
+ * - Criar um arquivo no seguinte caminho: /messages/appmessages.msg.js.
34
+ * Para conhecer os detalhes do módulo, vide o arquivo neste projeto "/src/lib/message/resources/snk-configurator.msg.ts"
35
+ */
36
+ getMessage(key) {
37
+ return this._application.messagesBuilder.getMessage(key, {});
38
+ }
39
+ controlConfigModal(opened) {
40
+ var _a;
41
+ if (this._modal != undefined) {
42
+ this._modal.opened = opened;
43
+ if (this._configModal != undefined) {
44
+ this._configModal.gridMode = ((_a = this._grid) === null || _a === void 0 ? void 0 : _a.offsetParent) != undefined;
45
+ }
46
+ }
47
+ }
48
+ changeConfigModal(evt) {
49
+ const data = evt === null || evt === void 0 ? void 0 : evt.detail;
50
+ if (data === null || data === void 0 ? void 0 : data.openConfig) {
51
+ this.controlConfigModal(false);
52
+ this.callShowConfig(data === null || data === void 0 ? void 0 : data.viewMode);
53
+ }
54
+ else if ((data === null || data === void 0 ? void 0 : data.viewMode) === GRID_MODE.index) {
55
+ this.changeViewMode.emit(GRID_MODE.name);
56
+ }
57
+ else if ((data === null || data === void 0 ? void 0 : data.viewMode) === FORM_MODE.index) {
58
+ this.changeViewMode.emit(FORM_MODE.name);
59
+ }
60
+ }
61
+ callShowConfig(viewMode) {
62
+ if (viewMode === GRID_MODE.index) {
63
+ if (this._grid == undefined) {
64
+ this.findGrid();
65
+ }
66
+ if (this._grid != undefined) {
67
+ this._grid.setShowGridConfig(true);
68
+ }
69
+ }
70
+ else if (viewMode === FORM_MODE.index) {
71
+ if (this._form == undefined) {
72
+ this.findForm();
73
+ }
74
+ if (this._form != undefined) {
75
+ this._form.setShowFormConfig(true);
76
+ }
77
+ }
78
+ }
79
+ getConfigModal() {
80
+ const modalContainer = document.createElement("ez-modal");
81
+ modalContainer.modalSize = "small";
82
+ modalContainer.opened = false;
83
+ modalContainer.closeEsc = false;
84
+ modalContainer.closeOutsideClick = false;
85
+ modalContainer.dataset.configuratorModal = this.name;
86
+ modalContainer.addEventListener(constants.CONFIG_EVENTS.closeModal, () => {
87
+ this.controlConfigModal(false);
88
+ });
89
+ const modalContent = document.createElement("snk-config-modal");
90
+ modalContent.addEventListener(constants.CONFIG_EVENTS.cancelConfig, () => {
91
+ this.controlConfigModal(false);
92
+ });
93
+ modalContent.addEventListener(constants.CONFIG_EVENTS.changeConfig, (evt) => {
94
+ this.changeConfigModal(evt);
95
+ });
96
+ modalContent.configName = this.configName;
97
+ modalContainer.append(modalContent);
98
+ return modalContainer;
99
+ }
100
+ findConfigModal() {
101
+ let modalContainer = document.body.querySelector(`[data-configurator-modal="${this.name}"]`);
102
+ if (modalContainer == undefined) {
103
+ modalContainer = this.getConfigModal();
104
+ document.body.appendChild(modalContainer);
105
+ }
106
+ this._modal = modalContainer;
107
+ this._configModal = modalContainer.querySelector("snk-config-modal");
108
+ }
109
+ findGrid() {
110
+ if (this._grid != undefined) {
111
+ return;
112
+ }
113
+ this._grid = configurableElementsStorage.ConfigurableElementsStorage.getGrid(this.configName);
114
+ if (this._grid != undefined && this._grid.dataset.eventConfigChanged == undefined) {
115
+ this._grid.dataset.eventConfigChanged = "true";
116
+ this._grid.addEventListener(constants.CONFIG_EVENTS.configChanged, (evt) => {
117
+ this.saveConfig(evt);
118
+ });
119
+ }
120
+ }
121
+ findForm() {
122
+ if (this._form != undefined) {
123
+ return;
124
+ }
125
+ this._form = configurableElementsStorage.ConfigurableElementsStorage.getForm(this.configName);
126
+ if (this._form != undefined && this._form.dataset.eventConfigChanged == undefined) {
127
+ this._form.dataset.eventConfigChanged = "true";
128
+ this._form.addEventListener(constants.CONFIG_EVENTS.configChanged, (evt) => {
129
+ this.saveConfig(evt);
130
+ });
131
+ }
132
+ }
133
+ saveConfig(evt) {
134
+ const config = evt === null || evt === void 0 ? void 0 : evt.detail;
135
+ if (this._application != undefined && config != undefined) {
136
+ if ((config === null || config === void 0 ? void 0 : config.fields) != undefined) {
137
+ this._application.saveFormConfig(config, this.configName)
138
+ .then((response) => {
139
+ if ((response === null || response === void 0 ? void 0 : response.resource) != undefined) {
140
+ this.loadFormConfig(true);
141
+ }
142
+ });
143
+ }
144
+ else if ((config === null || config === void 0 ? void 0 : config.columns) != undefined) {
145
+ this._application.saveGridConfig(config)
146
+ .then((response) => {
147
+ if ((response === null || response === void 0 ? void 0 : response.resource) != undefined) {
148
+ this.setGridConfig(response.resource);
149
+ }
150
+ });
151
+ }
152
+ }
153
+ }
154
+ setGridConfig(strConfig) {
155
+ if (this._grid != undefined) {
156
+ const config = core.ObjectUtils.stringToObject(strConfig);
157
+ this._grid.setConfig(config).then(() => {
158
+ utils.ApplicationUtils.info(this.getMessage("snkConfigurator.msgSaveSuccessfully"), { iconName: "check" });
159
+ });
160
+ }
161
+ }
162
+ loadGridConfig() {
163
+ if (this._application != undefined && this.configName != undefined && this._grid != undefined) {
164
+ this._application.loadGridConfig(this.configName).then((config) => {
165
+ this._grid.setConfig(config);
166
+ });
167
+ }
168
+ }
169
+ loadFormConfig(showInfoSuccess = false) {
170
+ if (this._application != undefined && this.configName != undefined && this._form != undefined) {
171
+ this._application.loadFormConfig(this.configName).then((config) => {
172
+ this._form.setConfig(config).then(() => {
173
+ if (showInfoSuccess) {
174
+ utils.ApplicationUtils.info(this.getMessage("snkConfigurator.msgSaveSuccessfully"), { iconName: "check" });
175
+ }
176
+ });
177
+ });
178
+ }
179
+ }
180
+ loadConfig() {
181
+ this._application = core.ApplicationContext.getContextValue("__SNK__APPLICATION__");
182
+ this.loadGridConfig();
183
+ this.loadFormConfig();
184
+ }
185
+ componentDidLoad() {
186
+ this.findConfigModal();
187
+ this.findGrid();
188
+ this.findForm();
189
+ this.loadConfig();
190
+ }
191
+ render() {
192
+ return (index.h("ez-button", { mode: "icon", iconName: "settings-inverted", size: "small", enabled: this.enabled, onClick: () => this.controlConfigModal(true) }));
193
+ }
194
+ get _element() { return index.getElement(this); }
195
+ };
196
+
197
+ const buildFilter = (item) => {
198
+ switch (item.type) {
199
+ case filterItemType_enum.FilterItemType.DEFAULT_FILTER:
200
+ return buildDefault(item);
201
+ case filterItemType_enum.FilterItemType.BINARY_SELECT:
202
+ return buildBinary(item);
203
+ case filterItemType_enum.FilterItemType.MULTI_SELECT:
204
+ return buildMultSelect(item);
205
+ case filterItemType_enum.FilterItemType.PERIOD:
206
+ return buildPeriod(item);
207
+ case filterItemType_enum.FilterItemType.SEARCH:
208
+ return buildSearch(item);
209
+ case filterItemType_enum.FilterItemType.TEXT:
210
+ return buildText(item);
211
+ case filterItemType_enum.FilterItemType.NUMBER:
212
+ return buildNumber(item);
213
+ case filterItemType_enum.FilterItemType.PERSONALIZED:
214
+ return buildPersonalized(item);
215
+ default:
216
+ return undefined;
217
+ }
218
+ };
219
+ function buildDefault(item) {
220
+ return { name: item.id, expression: item.props.expression, params: [] };
221
+ }
222
+ function buildBinary(item) {
223
+ const { id, value, props } = item;
224
+ const options = props.options;
225
+ const selectedOption = options.find(opt => opt.name === value);
226
+ return { name: id, expression: selectedOption.expression, params: [] };
227
+ }
228
+ function buildMultSelect(item) {
229
+ const { id, value, props } = item;
230
+ return { name: id, expression: props.expression, params: [{ name: id, dataType: core.DataType.TEXT, value }] };
231
+ }
232
+ function buildPeriod(item) {
233
+ const { id, value, props } = item;
234
+ let { end, start } = value;
235
+ if (typeof end === "string") {
236
+ end = new Date(end);
237
+ }
238
+ if (typeof start === "string") {
239
+ start = new Date(start);
240
+ }
241
+ const params = [];
242
+ let expression;
243
+ if (end && start) {
244
+ expression = props.expression.fullfill;
245
+ params.push({ name: `${id}.START`, dataType: core.DataType.DATE, value: DataType.toString(core.DataType.DATE, start) }, { name: `${id}.END`, dataType: core.DataType.DATE, value: DataType.toString(core.DataType.DATE, end) });
246
+ }
247
+ else {
248
+ if (start) {
249
+ expression = props.expression.onlystart;
250
+ params.push({ name: id, dataType: core.DataType.DATE, value: DataType.toString(core.DataType.DATE, start) });
251
+ }
252
+ else {
253
+ expression = props.expression.onlyend;
254
+ params.push({ name: id, dataType: core.DataType.DATE, value: DataType.toString(core.DataType.DATE, end) });
255
+ }
256
+ }
257
+ return { name: id, expression, params };
258
+ }
259
+ function buildSearch(item) {
260
+ const { id, value, props } = item;
261
+ const expression = props.expression;
262
+ return { name: id, expression, params: [{ name: id, dataType: core.DataType.TEXT, value: DataType.toString(core.DataType.TEXT, value.value) }] };
263
+ }
264
+ function buildText(item) {
265
+ const { id, value, props } = item;
266
+ const expression = props.expression;
267
+ return { name: id, expression, params: [{ name: id, dataType: core.DataType.TEXT, value: DataType.toString(core.DataType.TEXT, value) }] };
268
+ }
269
+ function buildNumber(item) {
270
+ const { id, value, props } = item;
271
+ const expression = props.expression;
272
+ return { name: id, expression, params: [{ name: id, dataType: core.DataType.NUMBER, value: DataType.toString(core.DataType.NUMBER, value) }] };
273
+ }
274
+ function buildPersonalized(item) {
275
+ var _a;
276
+ const { id, value, props } = item;
277
+ const expression = props.expression;
278
+ return {
279
+ name: id, expression, params: (((_a = props.personalizedFilter) === null || _a === void 0 ? void 0 : _a.parameters) || []).map((param, index) => {
280
+ const valuesArray = Array.from(value);
281
+ const dataType = param.dataType;
282
+ let paramValue = (index >= 0 && index < valuesArray.length ? valuesArray[index] : null);
283
+ if (paramValue != undefined && typeof paramValue === "object" && "value" in paramValue) {
284
+ paramValue = paramValue["value"];
285
+ }
286
+ if (paramValue == undefined && dataType === core.DataType.BOOLEAN) {
287
+ paramValue = false;
288
+ }
289
+ return { name: param.name, dataType, value: typeof paramValue === "string" ? paramValue : DataType.toString(dataType, paramValue) };
290
+ })
291
+ };
292
+ }
293
+
294
+ const snkFilterBarCss = ".sc-snk-filter-bar-h{display:grid;grid-template-columns:minmax(100px, 100%) 1fr 1fr}.snk-filter__popover-container.sc-snk-filter-bar{display:flex;cursor:auto}.snk-filter__popover.sc-snk-filter-bar{display:flex;flex-direction:column;position:absolute;width:fit-content;height:fit-content;min-width:265px;z-index:var(--more-visible, 2);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)}.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:100%;height:100%}";
295
+
296
+ const PERSONALIZED_FILTER = "PERSONALIZED_FILTER";
297
+ const DEFAULT_FILTER = "DEFAULT_FILTER";
298
+ const CLEAR_ALL_FILTERS = "CLEAR_ALL_FILTERS";
299
+ const ADD_FILTER = "ADD_FILTER";
300
+ const APPLIED_FILTERS = "APPLIED_FILTERS";
301
+ const SnkFilterBar = class {
302
+ constructor(hostRef) {
303
+ index.registerInstance(this, hostRef);
304
+ this._updateSequence = [];
305
+ this._loadingPending = false;
306
+ this._configUpdated = false;
307
+ this._pendingFilters = [];
308
+ this._calculateSortIndex = (item) => {
309
+ let index = item.hardFixed ? 1000000 : 0;
310
+ //campos Hard Fixed não variam a ordem
311
+ if (!item.hardFixed) {
312
+ index += item.fixed ? 100000 : 0;
313
+ index += item.value == undefined ? 0 : 10000;
314
+ index += this._updateSequence.lastIndexOf(item.id) + 1;
315
+ }
316
+ return index;
317
+ };
318
+ this._filtersComparator = (a, b) => {
319
+ return this._calculateSortIndex(b) - this._calculateSortIndex(a);
320
+ };
321
+ }
322
+ observeFilterConfig(newValue, oldValue) {
323
+ if (oldValue != undefined && newValue == undefined) {
324
+ this._loadingPending = true;
325
+ this._configUpdated = true;
326
+ }
327
+ else {
328
+ const oldItems = new Map(oldValue ? oldValue.map(item => [item.id, item]) : undefined);
329
+ newValue.forEach(newItem => {
330
+ const oldItem = oldItems.get(newItem.id);
331
+ if (oldItem != undefined) {
332
+ this._configUpdated = this._configUpdated || core.ObjectUtils.objectToString(oldItem) != core.ObjectUtils.objectToString(newItem);
333
+ this._loadingPending = this._loadingPending || core.ObjectUtils.objectToString(oldItem.value) !== core.ObjectUtils.objectToString(newItem.value);
334
+ }
335
+ else {
336
+ this._configUpdated = true;
337
+ this._loadingPending = this._loadingPending || newItem.value != undefined;
338
+ }
339
+ });
340
+ }
341
+ this.processAfterUpdateConfig();
342
+ }
343
+ processPendingFilter() {
344
+ if (this._pendingFilters.length > 0 && this._currentPendingFilter == undefined) {
345
+ this._currentPendingFilter = this._element.querySelector("#filter-" + this._pendingFilters.pop());
346
+ if (this._currentPendingFilter) {
347
+ this._currentPendingFilter.showUp(true).then(() => {
348
+ this._currentPendingFilter = undefined;
349
+ this.processPendingFilter();
350
+ });
351
+ }
352
+ }
353
+ if (this._currentPendingFilter == undefined) {
354
+ this.processAfterUpdateConfig();
355
+ }
356
+ }
357
+ processAfterUpdateConfig() {
358
+ if (this._pendingFilters.length > 0) {
359
+ return;
360
+ }
361
+ if (this._loadingPending) {
362
+ this._loadingPending = false;
363
+ this.dataUnit.loadData();
364
+ }
365
+ if (this._configUpdated) {
366
+ this._configUpdated = false;
367
+ this._application.saveFilterBarConfig(this.filterConfig, this.configName);
368
+ }
369
+ }
370
+ /**
371
+ * Conforme mecanismo de mensagens, é possível customizar as mensagens dos blocos de construção
372
+ * através de um pequeno modulo na estrutura da aplicação:
373
+ * - Criar um arquivo no seguinte caminho: /messages/appmessages.msg.js.
374
+ * Para conhecer os detalhes do módulo, vide o arquivo neste projeto "/src/lib/message/resources/snk-filter-bar.msg.ts"
375
+ */
376
+ getMessage(key, params) {
377
+ return this._application.messagesBuilder.getMessage(key, params);
378
+ }
379
+ getFilter(_dataUnit) {
380
+ var _a;
381
+ const filters = [];
382
+ (_a = this.filterConfig) === null || _a === void 0 ? void 0 : _a.filter(item => this.isActiveFilter(item)).forEach(item => {
383
+ const filter = buildFilter(item);
384
+ if (filter) {
385
+ filters.push(filter);
386
+ }
387
+ });
388
+ return filters;
389
+ }
390
+ isActiveFilter(item) {
391
+ return (item.visible && item.value != undefined) || item.type === filterItemType_enum.FilterItemType.DEFAULT_FILTER;
392
+ }
393
+ registryFilterProvider() {
394
+ this.dataUnit.addFilterProvider(this);
395
+ if (this.filterConfig) {
396
+ this.dataUnit.loadData();
397
+ }
398
+ }
399
+ itemFocused(selectedItem) {
400
+ this._element.querySelectorAll("snk-filter-item,snk-filter-list").forEach(item => {
401
+ if (item.id === selectedItem) {
402
+ if (item.tagName.toLowerCase() === "snk-filter-item" && item.getClientRects()[0].x < 0) {
403
+ item.scrollIntoView({ behavior: "auto", inline: 'nearest' });
404
+ }
405
+ }
406
+ else {
407
+ item["hideDetail"]();
408
+ }
409
+ });
410
+ }
411
+ getFilterItems() {
412
+ const pinnedItems = [];
413
+ const unpinnedItems = [];
414
+ this.filterConfig
415
+ .filter(item => item.visible)
416
+ .forEach((item, index$1) => {
417
+ const itemId = `filter-${item.id}`;
418
+ const filterItem = (index.h("snk-filter-item", { onFocusin: () => this.itemFocused(itemId), id: itemId, config: item, class: index$1 > 0 ? "ez-padding-left--medium" : "", getMessage: (key, props) => this.getMessage(key, props), key: item.id }));
419
+ if (item.fixed || item.hardFixed) {
420
+ pinnedItems.push(filterItem);
421
+ }
422
+ else {
423
+ unpinnedItems.push(filterItem);
424
+ }
425
+ return filterItem;
426
+ });
427
+ const elements = [];
428
+ elements.push(...pinnedItems);
429
+ if (pinnedItems.length > 0 && unpinnedItems.length > 0) {
430
+ elements.push(index.h("hr", { class: "ez-divider-vertical ez-divider--dark ez-margin-left--medium snk-filter-bar__divider" }));
431
+ }
432
+ elements.push(...unpinnedItems);
433
+ return elements;
434
+ }
435
+ calculateUpdateSequence(item) {
436
+ if (item) {
437
+ this._updateSequence = this._updateSequence.filter(itemId => item.id !== itemId);
438
+ this._updateSequence.push(item.id);
439
+ }
440
+ }
441
+ normalizeItem(item) {
442
+ const normalized = Object.assign({}, item);
443
+ const optionals = ["props", "value", "hardFixed", "fixed"];
444
+ optionals.forEach(prop => {
445
+ if (normalized[prop] == undefined) {
446
+ delete normalized[prop];
447
+ }
448
+ });
449
+ if (item.value === "") {
450
+ delete item.value;
451
+ }
452
+ return normalized;
453
+ }
454
+ updateFilter(newItem) {
455
+ this.filterConfig = this.filterConfig.map(item => {
456
+ newItem = this.normalizeItem(newItem);
457
+ if (item.id === newItem.id) {
458
+ if (core.ObjectUtils.objectToString(item) != core.ObjectUtils.objectToString(newItem)) {
459
+ this.calculateUpdateSequence(newItem);
460
+ }
461
+ return newItem;
462
+ }
463
+ return item;
464
+ }).sort((a, b) => this._filtersComparator(a, b));
465
+ }
466
+ getAddListItems() {
467
+ const hiddenItems = this.filterConfig
468
+ .filter(item => !item.visible && this.isListable(item));
469
+ const footerItems = [{ name: PERSONALIZED_FILTER, label: this.getMessage("snkFilterBar.customFilter"), iconName: "tune", kind: "FOOTER" }];
470
+ if (this.allowDefault) {
471
+ footerItems.push({ name: DEFAULT_FILTER, label: this.getMessage("snkFilterBar.defaultFilter"), iconName: "configuration", kind: "FOOTER" });
472
+ }
473
+ return hiddenItems.map(filter => { return { name: filter.id, label: filter.label, kind: "FILTER", iconName: null }; })
474
+ .concat(footerItems);
475
+ }
476
+ getActiveClass() {
477
+ const filterApplied = this.filterConfig.filter(item => item.value != undefined).length > 0;
478
+ return filterApplied ? "sc-snk-filter-bar snk-filter-bar__filter-list-items-button--active" : "";
479
+ }
480
+ isListable(item, allowPersonalized = false) {
481
+ return item.type !== filterItemType_enum.FilterItemType.DEFAULT_FILTER && (allowPersonalized || item.type !== filterItemType_enum.FilterItemType.PERSONALIZED);
482
+ }
483
+ getAppliedListItems() {
484
+ const appliedItems = this.filterConfig
485
+ .filter(item => this.isActiveFilter(item) && this.isListable(item, true));
486
+ return appliedItems.map(filter => {
487
+ return { name: filter.id, label: filter.label, kind: "FILTER", iconName: null };
488
+ }).concat([
489
+ { name: CLEAR_ALL_FILTERS, label: this.getMessage("snkFilterBar.clearAllFilters"), iconName: "cleaning", kind: "FOOTER" }
490
+ ]);
491
+ }
492
+ addPersonalizedFilters(personalizedItems) {
493
+ const activeFilters = {};
494
+ personalizedItems.forEach(item => {
495
+ if (item.active) {
496
+ activeFilters[item.id] = true;
497
+ }
498
+ });
499
+ this.filterConfig = this.filterConfig.map(item => {
500
+ var _a, _b;
501
+ if (item.type === filterItemType_enum.FilterItemType.PERSONALIZED) {
502
+ const visible = activeFilters[item.id];
503
+ if (!item.visible && visible) {
504
+ this.calculateUpdateSequence(item);
505
+ if (((_b = (_a = item.props) === null || _a === void 0 ? void 0 : _a.personalizedFilter) === null || _b === void 0 ? void 0 : _b.parameters) != undefined) {
506
+ this._pendingFilters.push(item.id);
507
+ }
508
+ }
509
+ return this.normalizeItem(visible ? Object.assign(Object.assign({}, item), { visible }) : Object.assign(Object.assign({}, item), { visible, value: undefined, fixed: undefined }));
510
+ }
511
+ return item;
512
+ }).sort((a, b) => this._filtersComparator(a, b));
513
+ }
514
+ openDefaultFilterModal() {
515
+ const filterModal = document.createElement("snk-filter-modal");
516
+ const defaultFilter = this.filterConfig.filter(item => item.type === filterItemType_enum.FilterItemType.DEFAULT_FILTER);
517
+ filterModal.getMessage = (key, props) => this.getMessage(key, props);
518
+ filterModal.modalTitle = this.getMessage("snkFilterBar.modalDefaultFilterTitle");
519
+ filterModal.infoText = this.getMessage(defaultFilter.length == 0 ? "snkFilterBar.modalInfoTextCreateDefault" : "snkFilterBar.modalInfoTextEditDefault");
520
+ filterModal.items = defaultFilter.map(item => {
521
+ return { id: item.id, active: true, enabled: false, label: item.label };
522
+ });
523
+ filterModal.processModalAction = (_action) => {
524
+ this._application.closeModal();
525
+ };
526
+ this._application.showModal(filterModal);
527
+ }
528
+ openPersonalizedModal() {
529
+ const filterModal = document.createElement("snk-filter-modal");
530
+ const personalizedFilter = this.filterConfig
531
+ .filter(item => item.type === filterItemType_enum.FilterItemType.PERSONALIZED)
532
+ .sort((itemA, itemB) => core.StringUtils.compare(itemA.label, itemB.label));
533
+ filterModal.getMessage = (key, props) => this.getMessage(key, props);
534
+ filterModal.modalTitle = this.getMessage("snkFilterBar.modalPersonalizedFilterTitle");
535
+ filterModal.modalSubTitle = this.getMessage("snkFilterBar.modalPersonalizedFilterSubTitle");
536
+ filterModal.okButtonLabel = this.getMessage("snkFilterBar.modalOkButtonLabel");
537
+ filterModal.cancelButtonLabel = this.getMessage("snkFilterBar.modalCancelButtonLabel");
538
+ filterModal.infoText = this.getMessage("snkFilterBar.modalInfoTextCreateEditPersonalized");
539
+ filterModal.useSearch = true;
540
+ filterModal.items = personalizedFilter.map(item => {
541
+ return { id: item.id, active: item.visible, enabled: true, label: item.label };
542
+ });
543
+ filterModal.processModalAction = (action) => {
544
+ if (action === ezModalContainer.ModalAction.CANCEL) {
545
+ // O Botão de cancelar, tem efeito específico:
546
+ // - Desmarcar todos os filtros personalizados.
547
+ filterModal.items = filterModal.items.map(item => {
548
+ return Object.assign(Object.assign({}, item), { active: false });
549
+ });
550
+ }
551
+ else {
552
+ if (action === ezModalContainer.ModalAction.OK) {
553
+ this.addPersonalizedFilters(filterModal.items);
554
+ }
555
+ this._application.closeModal();
556
+ }
557
+ };
558
+ this._application.showModal(filterModal);
559
+ }
560
+ clearFilters() {
561
+ let changed = false;
562
+ this.filterConfig = this.filterConfig.map(item => {
563
+ if (item.value != undefined) {
564
+ changed = true;
565
+ }
566
+ return Object.assign(Object.assign({}, item), { value: undefined });
567
+ }).sort((a, b) => this._filtersComparator(a, b));
568
+ return changed;
569
+ }
570
+ loadPermitions() {
571
+ this._application.isUserSup().then(value => this.allowDefault = value);
572
+ }
573
+ loadConfigFromApplication() {
574
+ this._application.getFilterBarConfig(this.configName)
575
+ .then((filters) => {
576
+ this.filterConfig = filters.map(item => this.normalizeItem(item));
577
+ if (this.dataUnit) {
578
+ this.dataUnit.loadData();
579
+ }
580
+ })
581
+ .catch(reason => {
582
+ throw new core.ErrorException(this.getMessage("snkFilterBar.failToLoadConfig"), reason);
583
+ });
584
+ }
585
+ attachDataUnit() {
586
+ if (this.dataUnit == undefined) {
587
+ let parent = this._element.parentElement;
588
+ while (parent) {
589
+ if (parent.tagName.toUpperCase() === "SNK-DATA-UNIT") {
590
+ const snkDataUnit = parent;
591
+ this.dataUnit = snkDataUnit.dataUnit;
592
+ if (this.dataUnit) {
593
+ this.registryFilterProvider();
594
+ }
595
+ else {
596
+ snkDataUnit.addEventListener("dataUnitReady", (evt) => {
597
+ this.dataUnit = evt.detail;
598
+ this.registryFilterProvider();
599
+ });
600
+ }
601
+ break;
602
+ }
603
+ }
604
+ parent = parent.parentElement;
605
+ }
606
+ else {
607
+ this.registryFilterProvider();
608
+ }
609
+ }
610
+ filterChangeListener(evt) {
611
+ this.updateFilter(evt.detail);
612
+ }
613
+ addFilterHandler(itemName) {
614
+ const filterItem = this.filterConfig.find(currentFilter => currentFilter.id === itemName);
615
+ if (itemName === PERSONALIZED_FILTER) {
616
+ this.openPersonalizedModal();
617
+ }
618
+ else if (itemName === DEFAULT_FILTER) {
619
+ this.openDefaultFilterModal();
620
+ }
621
+ else if (filterItem) {
622
+ this._pendingFilters.push(itemName);
623
+ this.updateFilter(Object.assign(Object.assign({}, filterItem), { visible: true }));
624
+ }
625
+ }
626
+ appliedFilterHandler(itemName) {
627
+ if (itemName === CLEAR_ALL_FILTERS) {
628
+ if (this.clearFilters()) {
629
+ this._application.info(this.getMessage("snkFilterBar.successfullyCleaned"), { iconName: "check" });
630
+ }
631
+ }
632
+ else {
633
+ const filterItemElement = this._element.querySelector("#filter-" + itemName);
634
+ if (filterItemElement) {
635
+ filterItemElement.showUp(true);
636
+ }
637
+ }
638
+ }
639
+ componentWillLoad() {
640
+ this._application = core.ApplicationContext.getContextValue("__SNK__APPLICATION__");
641
+ if (this._application) {
642
+ this.loadPermitions();
643
+ this.loadConfigFromApplication();
644
+ }
645
+ this.attachDataUnit();
646
+ }
647
+ componentDidRender() {
648
+ this.processPendingFilter();
649
+ }
650
+ render() {
651
+ if (!this.dataUnit || !this.filterConfig || this.filterConfig.length === 0) {
652
+ return undefined;
653
+ }
654
+ return (index.h(index.Host, null, index.h("ez-scroller", { direction: "horizontal" }, this.getFilterItems()), index.h("snk-filter-list", { id: APPLIED_FILTERS, onFocusin: () => this.itemFocused(APPLIED_FILTERS), items: this.getAppliedListItems(), getMessage: (key, params) => this.getMessage(key, params), emptyText: this.getMessage("snkFilterBar.emptyAppliedFiltersList"), findFilterText: this.getMessage("snkFilterBar.findFilter"), iconName: "filter", class: "ez-padding-left--medium", buttonClass: this.getActiveClass(), onSnkItemSelected: evt => this.appliedFilterHandler(evt.detail) }), index.h("snk-filter-list", { id: ADD_FILTER, onFocusin: () => this.itemFocused(ADD_FILTER), items: this.getAddListItems(), label: this.getMessage("snkFilterBar.addFilter"), getMessage: (key, params) => this.getMessage(key, params), emptyText: this.getMessage("snkFilterBar.emptyFiltersList"), findFilterText: this.getMessage("snkFilterBar.findField"), class: "ez-padding-left--medium", onSnkItemSelected: evt => this.addFilterHandler(evt.detail) }, index.h("ez-icon", { slot: "leftIcon", class: "ez-padding-right--small", iconName: "plus" }))));
655
+ }
656
+ get _element() { return index.getElement(this); }
657
+ static get watchers() { return {
658
+ "filterConfig": ["observeFilterConfig"]
659
+ }; }
660
+ };
661
+ SnkFilterBar.style = snkFilterBarCss;
662
+
663
+ const SnkFilterItem = class {
664
+ constructor(hostRef) {
665
+ index.registerInstance(this, hostRef);
666
+ this.filterChange = index.createEvent(this, "filterChange", 7);
667
+ this.innerClickCheck = (_floatingContainer, node) => {
668
+ if (node.id != core.FloatingManager.MODAL_ELEMENT_ID) {
669
+ return true;
670
+ }
671
+ this.detailIsVisible = false;
672
+ return false;
673
+ };
674
+ }
675
+ async showUp(open = false) {
676
+ return new Promise(resolve => {
677
+ this._filterItemElement.scrollIntoView({ behavior: "auto", block: "nearest", inline: "nearest" });
678
+ if (open) {
679
+ this._closeCallback = resolve;
680
+ window.requestAnimationFrame(() => {
681
+ this._floatingID = core.FloatingManager.float(this._popover, this._popoverContainer, {
682
+ autoClose: true,
683
+ innerClickTest: this.innerClickCheck,
684
+ backClickListener: () => this.onDetailCloseCallback(),
685
+ left: this.getScrollOffset(),
686
+ useOverlay: true
687
+ });
688
+ this._popover.show();
689
+ this.detailIsVisible = true;
690
+ });
691
+ }
692
+ });
693
+ }
694
+ getScrollOffset() {
695
+ const padding = getComputedStyle(this._filterItemElement).getPropertyValue("padding-left");
696
+ const rect = this._filterItemElement.getBoundingClientRect();
697
+ return `calc(${rect.left}px + ${padding})`;
698
+ }
699
+ async hideDetail() {
700
+ if (this.detailIsVisible) {
701
+ if (this._floatingID != undefined) {
702
+ core.FloatingManager.close(this._floatingID);
703
+ }
704
+ }
705
+ }
706
+ onDetailCloseCallback() {
707
+ this._floatingID = undefined;
708
+ this.detailIsVisible = false;
709
+ if (this._closeCallback) {
710
+ this._closeCallback();
711
+ this._closeCallback = undefined;
712
+ }
713
+ }
714
+ //---------------------------------------------
715
+ // Event handlers
716
+ //---------------------------------------------
717
+ clickListener(evt) {
718
+ if ([this._chipElement, this._leftIconElement, this._rightIconElement].includes(evt.target)) {
719
+ if (evt.target === this._rightIconElement && this.config.value != undefined) {
720
+ this.filterChange.emit(Object.assign(Object.assign({}, this.config), { value: undefined }));
721
+ }
722
+ else {
723
+ if (this.detailIsVisible) {
724
+ this.hideDetail();
725
+ }
726
+ else {
727
+ this.showUp(true);
728
+ }
729
+ }
730
+ evt.preventDefault();
731
+ evt.stopImmediatePropagation();
732
+ evt.stopPropagation();
733
+ }
734
+ }
735
+ mouseDownListener(evt) {
736
+ if (this.detailIsVisible && [this._chipElement, this._leftIconElement, this._rightIconElement].includes(evt.target)) {
737
+ evt.preventDefault();
738
+ evt.stopImmediatePropagation();
739
+ evt.stopPropagation();
740
+ }
741
+ }
742
+ getLabel() {
743
+ const { type, value, label, props } = this.config;
744
+ if (value) {
745
+ if (type === filterItemType_enum.FilterItemType.BINARY_SELECT) {
746
+ const [optOne, optTwo] = props.options;
747
+ if (optOne.name === value) {
748
+ return optOne.label;
749
+ }
750
+ if (optTwo.name === value) {
751
+ return optTwo.label;
752
+ }
753
+ }
754
+ if (type === filterItemType_enum.FilterItemType.MULTI_SELECT) {
755
+ const opt = props.options.find(opt => opt.value === value);
756
+ return `${label}: ${opt.label}`;
757
+ }
758
+ if (type === filterItemType_enum.FilterItemType.PERIOD) {
759
+ let { end, start } = value;
760
+ if (typeof end === "string") {
761
+ end = new Date(end);
762
+ end.setMinutes(end.getMinutes() + end.getTimezoneOffset());
763
+ }
764
+ if (typeof start === "string") {
765
+ start = new Date(start);
766
+ start.setMinutes(start.getMinutes() + start.getTimezoneOffset());
767
+ }
768
+ const dateFormater = new Intl.DateTimeFormat("pt-BR");
769
+ if (end && start) {
770
+ return `${label}: ${dateFormater.format(start)} a ${dateFormater.format(end)}`;
771
+ }
772
+ else {
773
+ if (start) {
774
+ return `${label}: A partir de ${dateFormater.format(start)}`;
775
+ }
776
+ else if (end) {
777
+ return `${label}: Até ${dateFormater.format(end)}`;
778
+ }
779
+ else {
780
+ return label;
781
+ }
782
+ }
783
+ }
784
+ if (type === filterItemType_enum.FilterItemType.SEARCH) {
785
+ return `${label}: ${value.value} - ${value.label}`;
786
+ }
787
+ if (type === filterItemType_enum.FilterItemType.PERSONALIZED) {
788
+ return label;
789
+ }
790
+ return `${label}: ${value}`;
791
+ }
792
+ return label;
793
+ }
794
+ componentDidRender() {
795
+ if (this._floatingID == undefined) {
796
+ if (this._popover) {
797
+ this._popover.remove();
798
+ }
799
+ }
800
+ }
801
+ filterChangeListener() {
802
+ this.hideDetail();
803
+ }
804
+ getRightIconName() {
805
+ if (this.config.value != undefined) {
806
+ return "close";
807
+ }
808
+ return this.detailIsVisible ? "chevron-up" : "chevron-down";
809
+ }
810
+ getLeftIconName() {
811
+ switch (this.config.type) {
812
+ case filterItemType_enum.FilterItemType.PERIOD:
813
+ return "calendar";
814
+ case filterItemType_enum.FilterItemType.PERSONALIZED:
815
+ return "tune";
816
+ }
817
+ return undefined;
818
+ }
819
+ render() {
820
+ const leftIcon = this.getLeftIconName();
821
+ return (index.h(index.Host, null, index.h("ez-chip", { ref: ref => this._chipElement = ref, label: this.getLabel(), value: this.config.value != undefined }, leftIcon ? index.h("ez-icon", { ref: ref => this._leftIconElement = ref, iconName: leftIcon, class: "ez-padding-right--small", slot: "leftIcon" }) : undefined, index.h("ez-icon", { ref: ref => this._rightIconElement = ref, iconName: this.getRightIconName(), class: "ez-padding-left--small", slot: "rightIcon" })), index.h("section", { class: "ez-margin-top--small sc-snk-filter-bar snk-filter__popover-container", ref: elem => this._popoverContainer = elem }, index.h("snk-filter-detail", { config: this.config, getMessage: this.getMessage, class: "sc-snk-filter-bar snk-filter__popover ez-padding--small", ref: elem => this._popover = elem, key: this.config.id }))));
822
+ }
823
+ get _filterItemElement() { return index.getElement(this); }
824
+ };
825
+
826
+ const SHOW_MORE_ITEM_NAME = "__SHOWMORE__";
827
+ const MAX_FILTERS = 5;
828
+ const SnkFilterList = class {
829
+ constructor(hostRef) {
830
+ index.registerInstance(this, hostRef);
831
+ this.snkItemSelected = index.createEvent(this, "snkItemSelected", 7);
832
+ this._preselection = -1;
833
+ this.innerClickCheck = (_floatingContainer, node) => {
834
+ if (node.id != core.FloatingManager.MODAL_ELEMENT_ID) {
835
+ return true;
836
+ }
837
+ this._detailIsVisible = false;
838
+ return false;
839
+ };
840
+ }
841
+ showDetail() {
842
+ this._preselection = -1;
843
+ this._floatingID = core.FloatingManager.float(this._popover, this._popoverContainer, {
844
+ autoClose: true,
845
+ innerClickTest: this.innerClickCheck,
846
+ backClickListener: () => this.onListCloseCallback(),
847
+ useOverlay: true
848
+ });
849
+ this._detailIsVisible = true;
850
+ this._showAll = false;
851
+ this._filterArgument = "";
852
+ this._filterInput.setFocus();
853
+ }
854
+ async hideDetail() {
855
+ if (this._floatingID != undefined) {
856
+ core.FloatingManager.close(this._floatingID);
857
+ }
858
+ }
859
+ onListCloseCallback() {
860
+ this._floatingID = undefined;
861
+ this._detailIsVisible = false;
862
+ }
863
+ buttonClick() {
864
+ if (this._detailIsVisible) {
865
+ this.hideDetail();
866
+ }
867
+ else {
868
+ this.showDetail();
869
+ }
870
+ }
871
+ componentDidRender() {
872
+ if (this._floatingID == undefined) {
873
+ if (this._popover) {
874
+ this._popover.remove();
875
+ }
876
+ }
877
+ }
878
+ buildItemElement(item) {
879
+ const itemId = ++this._selectableItemsCount;
880
+ return (index.h("button", { id: `filter-item${itemId}`, onFocusin: () => this._preselection = itemId, class: `ez-col ez-col--sd-12 ez-align--middle ez-padding--small sc-snk-filter-bar snk-filter-bar__filter-list-item`, onClick: () => this.itemSelected(item.name) }, item.iconName ? index.h("ez-icon", { iconName: item.iconName, size: "small", class: `ez-padding-right--extra-small sc-snk-filter-bar snk-filter-bar__filter-list-item__icon ${item.iconClass || ""}` }) : undefined, index.h("div", { class: `ez-text ez-text--medium ez-text--primary ez-padding--extra-small sc-snk-filter-bar snk-filter-bar__filter-list-item__label ${item.labelClass || ""}` }, item.label)));
881
+ }
882
+ itemSelected(itemName) {
883
+ if (itemName === SHOW_MORE_ITEM_NAME) {
884
+ this._showAll = true;
885
+ }
886
+ else {
887
+ this.hideDetail();
888
+ this.snkItemSelected.emit(itemName);
889
+ }
890
+ }
891
+ getFilterItems() {
892
+ const items = this.items ? core.ArrayUtils.applyStringFilter(this._filterArgument, this.items.filter(item => item.kind === "FILTER")) : [];
893
+ if (items.length === 0) {
894
+ return index.h("div", { class: "ez-text ez-text--medium ez-text--primary ez-padding--extra-small sc-snk-filter-bar snk-filter-bar__filter-list-items-container--empty" }, this.emptyText);
895
+ }
896
+ const hideItems = !this._filterArgument && !this._showAll && (items.length > MAX_FILTERS + 1);
897
+ if (hideItems) {
898
+ items.splice(MAX_FILTERS);
899
+ items.push({ kind: "INTERNAL", label: "Mostrar mais", iconName: "dots-horizontal", name: SHOW_MORE_ITEM_NAME, iconClass: "snk-filter-bar__filter-list-item__icon--secondary", labelClass: "snk-filter-bar__filter-list-item__label--secondary" });
900
+ }
901
+ this._selectableItemsCount = 0;
902
+ return index.h("div", { class: "sc-snk-filter-bar snk-filter-bar__filter-list-items-container" }, items.map(item => this.buildItemElement(item)));
903
+ }
904
+ getFooterItems() {
905
+ return this.items.filter(item => item.kind === "FOOTER");
906
+ }
907
+ keyDownHandler(event) {
908
+ switch (event.key) {
909
+ case "ArrowDown":
910
+ this.changePreselection(this._preselection + 1);
911
+ //Paramos a propagação do evento para evitar scroll indesejado
912
+ event.stopImmediatePropagation();
913
+ event.stopPropagation();
914
+ event.preventDefault();
915
+ break;
916
+ case "ArrowUp":
917
+ this.changePreselection(this._preselection - 1);
918
+ //Paramos a propagação do evento para evitar scroll indesejado
919
+ event.stopImmediatePropagation();
920
+ event.stopPropagation();
921
+ event.preventDefault();
922
+ break;
923
+ }
924
+ }
925
+ changePreselection(newSelection) {
926
+ if (newSelection < 0) {
927
+ newSelection = this._selectableItemsCount;
928
+ }
929
+ this._preselection = newSelection > this._selectableItemsCount ? 0 : newSelection;
930
+ if (this._preselection === 0) {
931
+ this._filterInput.setFocus();
932
+ }
933
+ else {
934
+ const item = this._element.querySelector(`#filter-item${this._preselection}`);
935
+ if (item) {
936
+ item.focus();
937
+ }
938
+ }
939
+ }
940
+ render() {
941
+ return (index.h(index.Host, { class: "ez-flex ez-flex--column" }, index.h("ez-button", { class: this.buttonClass, label: this.label, onClick: () => this.buttonClick(), mode: this.iconName ? "icon" : undefined, iconName: this.iconName, size: "small" }, index.h("slot", { name: "leftIcon" })), index.h("section", { class: "ez-margin-top--small sc-snk-filter-bar snk-filter__popover-container", ref: elem => this._popoverContainer = elem }, index.h("div", { class: "sc-snk-filter-bar snk-filter__popover ez-padding--small", ref: elem => this._popover = elem }, index.h("ez-filter-input", { ref: ref => this._filterInput = ref, mode: "slim", label: this.findFilterText, value: this._filterArgument, onEzChange: (evt) => this._filterArgument = evt.detail, onFocus: () => this._preselection = 0 }), this.getFilterItems(), index.h("hr", { class: "sc-snk-filter-bar snk-filter__popover-rule" }), this.items ? this.getFooterItems().map(item => this.buildItemElement(item)) : undefined))));
942
+ }
943
+ get _element() { return index.getElement(this); }
944
+ };
945
+
946
+ const SnkFilterModal = class {
947
+ constructor(hostRef) {
948
+ index.registerInstance(this, hostRef);
949
+ }
950
+ updateValue(id, value = undefined) {
951
+ this.items = this.items.map(item => {
952
+ if (item.id === id && item.enabled) {
953
+ if (value == undefined) {
954
+ value = !item.active;
955
+ }
956
+ return Object.assign(Object.assign({}, item), { active: value });
957
+ }
958
+ return item;
959
+ });
960
+ }
961
+ getActiveFiltersMsg() {
962
+ const activeFilters = this.items.filter(item => item.active).length;
963
+ if (activeFilters === 0) {
964
+ return this.getMessage("snkFilterBar.noActiveFilters");
965
+ }
966
+ return this.getMessage(activeFilters > 1 ? "snkFilterBar.activeFilters" : "snkFilterBar.activeFilter", { ACTIVE_FILTERS: activeFilters });
967
+ }
968
+ buildItems(list) {
969
+ return list.map(item => {
970
+ return (index.h("button", { onClick: () => this.updateValue(item.id), class: "ez-padding--medium sc-snk-filter-bar snk-filter-bar__filter-modal-item ez-align--middle ez-margin-bottom--small" }, index.h("ez-check", { id: `checkbox_${item.id}`, tabIndex: "-1", class: "sc-snk-filter-bar snk-filter-bar__filter-modal-item__check", onEzChange: evt => this.updateValue(item.id, evt.detail), enabled: item.enabled, value: item.active, mode: utils.CheckMode.SWITCH }), index.h("div", { class: "ez-text ez-title--primary ez-text--medium ez-margin-left--medium sc-snk-filter-bar snk-filter-bar__filter-modal-item__label" }, item.label)));
971
+ });
972
+ }
973
+ itemKeyBoardSelect(event, item) {
974
+ if (event.key === "Enter" || event.key === " ") {
975
+ this.updateValue(item.id);
976
+ }
977
+ }
978
+ modalActionListener(evt) {
979
+ const modalAction = evt.detail;
980
+ if (modalAction === ezModalContainer.ModalAction.LOAD) {
981
+ if (this._filterInput) {
982
+ this._filterInput.setFocus();
983
+ }
984
+ }
985
+ else {
986
+ this.processModalAction(modalAction);
987
+ }
988
+ }
989
+ render() {
990
+ const allowCancel = this.items.filter(item => item.active).length > 0;
991
+ const items = (this.items ? core.ArrayUtils.applyStringFilter(this._filterArgument, this.items) : []);
992
+ return (index.h("ez-modal-container", { modalTitle: this.modalTitle, modalSubTitle: this.modalSubTitle, cancelButtonLabel: this.cancelButtonLabel, okButtonLabel: this.okButtonLabel, onEzModalAction: evt => this.modalActionListener(evt), cancelButtonStatus: allowCancel ? ezModalContainer.ModalButtonStatus.ENABLED : ezModalContainer.ModalButtonStatus.DISABLED }, index.h("div", { class: "sc-snk-filter-bar snk-filter-bar__filter-modal-content" }, index.h("div", null, this.useSearch ?
993
+ index.h("ez-filter-input", { ref: ref => this._filterInput = ref, label: this.getMessage("snkFilterBar.modalFindFilter"), onEzChange: (evt) => this._filterArgument = evt.detail })
994
+ :
995
+ undefined), items.length > 0 ? index.h("div", { class: "ez-text ez-text--medium ez-text--primary ez-padding-bottom--small" }, this.getActiveFiltersMsg()) : undefined, index.h("div", null, this.buildItems(items)), index.h("div", { class: "ez-text ez-text--large ez-align--middle ez-text--secondary ez-text--center ez-padding-bottom--large" }, this.infoText))));
996
+ }
997
+ };
998
+
999
+ const snkTaskbarCss = ".sc-snk-taskbar-h{display:flex}";
1000
+
1001
+ const SnkTaskbar = class {
1002
+ constructor(hostRef) {
1003
+ index.registerInstance(this, hostRef);
1004
+ this.actionClick = index.createEvent(this, "actionClick", 7);
1005
+ this.actionChange = index.createEvent(this, "actionChange", 7);
1006
+ this._titleKeyByElement = {
1007
+ [taskbarElements.TaskbarElement.UPDATE]: "snkTaskbar.titleUpdate",
1008
+ [taskbarElements.TaskbarElement.PREVIOUS]: "snkTaskbar.titlePrevious",
1009
+ [taskbarElements.TaskbarElement.NEXT]: "snkTaskbar.titleNext",
1010
+ [taskbarElements.TaskbarElement.REFRESH]: "snkTaskbar.titleRefresh",
1011
+ [taskbarElements.TaskbarElement.CLONE]: "snkTaskbar.titleClone",
1012
+ [taskbarElements.TaskbarElement.REMOVE]: "snkTaskbar.titleRemove",
1013
+ [taskbarElements.TaskbarElement.MORE_OPTIONS]: "snkTaskbar.titleMoreOptions",
1014
+ [taskbarElements.TaskbarElement.INSERT]: "snkTaskbar.titleInsert",
1015
+ [taskbarElements.TaskbarElement.CANCEL]: "snkTaskbar.titleCancel",
1016
+ [taskbarElements.TaskbarElement.SAVE]: "snkTaskbar.titleSave",
1017
+ [taskbarElements.TaskbarElement.GRID_MODE]: "snkTaskbar.titleGridMode",
1018
+ [taskbarElements.TaskbarElement.FORM_MODE]: "snkTaskbar.titleFormMode",
1019
+ [taskbarElements.TaskbarElement.CONFIGURATOR]: "snkTaskbar.titleConfigurator"
1020
+ };
1021
+ }
1022
+ observeButtons() {
1023
+ this._definitions = undefined;
1024
+ }
1025
+ // Internal methods
1026
+ elementsFromString(strButtons) {
1027
+ const elements = [];
1028
+ if (strButtons) {
1029
+ strButtons.split(",").forEach(buttonName => {
1030
+ buttonName = buttonName.trim();
1031
+ if (taskbarElements.VisibleWhenForbidden[buttonName] || this.isAllowed(buttonName)) {
1032
+ elements.push(buttonName.trim());
1033
+ }
1034
+ });
1035
+ }
1036
+ return elements;
1037
+ }
1038
+ isAllowed(buttonName) {
1039
+ if (taskbarElements.AuthorizationElements[buttonName]) {
1040
+ return this._permissions ? this._permissions.isSup || this._permissions[buttonName] : false;
1041
+ }
1042
+ return true;
1043
+ }
1044
+ /**
1045
+ * Conforme mecanismo de mensagens, é possível customizar as mensagens dos blocos de construção
1046
+ * através de um pequeno modulo na estrutura da aplicação:
1047
+ * - Criar um arquivo no seguinte caminho: /messages/appmessages.msg.js.
1048
+ * Para conhecer os detalhes do módulo, vide o arquivo neste projeto "/src/lib/message/resources/snk-taskbar.msg.ts"
1049
+ */
1050
+ getTitle(element) {
1051
+ let key;
1052
+ if (this.isAllowed(element)) {
1053
+ key = this._titleKeyByElement[element];
1054
+ }
1055
+ else {
1056
+ key = "snkTaskbar.forbidden";
1057
+ }
1058
+ return key ? this._application.messagesBuilder.getMessage(key, {}) : "";
1059
+ }
1060
+ elementClick(elem) {
1061
+ if (this.dataUnit) {
1062
+ switch (elem) {
1063
+ case taskbarElements.TaskbarElement.PREVIOUS:
1064
+ this.dataUnit.previousRecord();
1065
+ break;
1066
+ case taskbarElements.TaskbarElement.NEXT:
1067
+ this.dataUnit.nextRecord();
1068
+ break;
1069
+ case taskbarElements.TaskbarElement.REFRESH:
1070
+ this.dataUnit.loadData();
1071
+ break;
1072
+ case taskbarElements.TaskbarElement.CLONE:
1073
+ this.dataUnit.copySelected();
1074
+ break;
1075
+ case taskbarElements.TaskbarElement.REMOVE:
1076
+ this.dataUnit.removeSelectedRecords();
1077
+ break;
1078
+ case taskbarElements.TaskbarElement.INSERT:
1079
+ this.dataUnit.addRecord();
1080
+ break;
1081
+ case taskbarElements.TaskbarElement.CANCEL:
1082
+ this.dataUnit.cancelEdition();
1083
+ break;
1084
+ case taskbarElements.TaskbarElement.SAVE:
1085
+ this.dataUnit.saveData();
1086
+ break;
1087
+ }
1088
+ }
1089
+ this.actionClick.emit(elem);
1090
+ }
1091
+ isEnabled(elem) {
1092
+ if (!this.isAllowed(elem)) {
1093
+ return false;
1094
+ }
1095
+ return !(this.disabledButtons && this.disabledButtons.includes(elem));
1096
+ }
1097
+ getElement(index, def) {
1098
+ let className = def === this.primaryButton ? "ez-button--primary " : "";
1099
+ if (index > 1) {
1100
+ className += "ez-padding-left--medium";
1101
+ }
1102
+ if (taskbarElements.TaskbarElement[def.toString()]) {
1103
+ return taskbarElements.buildElem(def, className, elem => this.getTitle(elem), elem => this.elementClick(elem), elem => this.isEnabled(elem), this.actionsList, this.configName);
1104
+ }
1105
+ else {
1106
+ return taskbarElements.buildCustomButton(def, className, elem => this.elementClick(elem), elem => this.isEnabled(elem));
1107
+ }
1108
+ }
1109
+ // Lifecycle
1110
+ componentWillLoad() {
1111
+ this._application = core.ApplicationContext.getContextValue("__SNK__APPLICATION__");
1112
+ if (this._application) {
1113
+ this._application.getAllAccess().then(access => this._permissions = access);
1114
+ }
1115
+ else {
1116
+ this._permissions = {};
1117
+ }
1118
+ }
1119
+ componentWillRender() {
1120
+ if (this._definitions == undefined && this._permissions) {
1121
+ this._definitions = this.elementsFromString(this.buttons);
1122
+ }
1123
+ }
1124
+ render() {
1125
+ if (this._definitions === undefined) {
1126
+ return undefined;
1127
+ }
1128
+ let index$1 = 0;
1129
+ return (index.h(index.Host, null, this._definitions.map((elem) => {
1130
+ if (elem === taskbarElements.TaskbarElement.DIVIDER) {
1131
+ index$1 = 0;
1132
+ }
1133
+ else {
1134
+ index$1++;
1135
+ }
1136
+ if (taskbarElements.TaskbarElement[elem]) {
1137
+ return this.getElement(index$1, taskbarElements.TaskbarElement[elem]);
1138
+ }
1139
+ if (this.customButtons.has(elem)) {
1140
+ return this.getElement(index$1, this.customButtons.get(elem));
1141
+ }
1142
+ return index.h("slot", { name: elem });
1143
+ })));
1144
+ }
1145
+ static get watchers() { return {
1146
+ "buttons": ["observeButtons"]
1147
+ }; }
1148
+ };
1149
+ SnkTaskbar.style = snkTaskbarCss;
1150
+
1151
+ exports.snk_configurator = SnkConfigurator;
1152
+ exports.snk_filter_bar = SnkFilterBar;
1153
+ exports.snk_filter_item = SnkFilterItem;
1154
+ exports.snk_filter_list = SnkFilterList;
1155
+ exports.snk_filter_modal = SnkFilterModal;
1156
+ exports.snk_taskbar = SnkTaskbar;