@sankhyalabs/sankhyablocks 8.2.0-rc.1 → 8.2.0-rc.2

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 (252) hide show
  1. package/dist/cjs/{ConfigStorage-e9d7fa82.js → ConfigStorage-349cf0fd.js} +163 -51
  2. package/dist/cjs/{DataFetcher-39b63a1e.js → DataFetcher-7ba52c1d.js} +79 -235
  3. package/dist/cjs/ISave-d68ce3cd.js +8 -0
  4. package/dist/cjs/PrintUtils-bcaeb82f.js +215 -0
  5. package/dist/cjs/ResourceIDUtils-5ff86aa7.js +12 -0
  6. package/dist/cjs/{SnkFormConfigManager-2f8eccd9.js → SnkFormConfigManager-9083c12f.js} +19 -21
  7. package/dist/cjs/{auth-fetcher-d407c31c.js → auth-fetcher-718ca8b4.js} +2 -2
  8. package/dist/cjs/{dataunit-fetcher-15a7cc88.js → dataunit-fetcher-076fcbf7.js} +1 -1
  9. package/dist/cjs/{form-config-fetcher-ab3ce222.js → form-config-fetcher-c7ec4ff9.js} +66 -3
  10. package/dist/cjs/index-f9e81701.js +4 -0
  11. package/dist/cjs/loader.cjs.js +1 -1
  12. package/dist/cjs/{pesquisa-fetcher-96c042aa.js → pesquisa-fetcher-a9c5a2f5.js} +1 -1
  13. package/dist/cjs/sankhyablocks.cjs.js +1 -1
  14. package/dist/cjs/snk-actions-button.cjs.entry.js +19 -11
  15. package/dist/cjs/snk-application.cjs.entry.js +60 -44
  16. package/dist/cjs/snk-attach.cjs.entry.js +9 -14
  17. package/dist/cjs/snk-configurator.cjs.entry.js +2 -1
  18. package/dist/cjs/snk-crud.cjs.entry.js +28 -11
  19. package/dist/cjs/snk-data-exporter.cjs.entry.js +3 -2
  20. package/dist/cjs/{snk-data-unit-e89e07bd.js → snk-data-unit-7cc1846d.js} +5 -5
  21. package/dist/cjs/snk-data-unit.cjs.entry.js +1 -1
  22. package/dist/cjs/snk-detail-view.cjs.entry.js +17 -13
  23. package/dist/cjs/snk-entity-list.cjs.entry.js +0 -4
  24. package/dist/cjs/snk-filter-bar.cjs.entry.js +15 -17
  25. package/dist/cjs/snk-filter-detail.cjs.entry.js +7 -16
  26. package/dist/cjs/snk-filter-modal-item.cjs.entry.js +6 -19
  27. package/dist/cjs/snk-form-config.cjs.entry.js +7 -17
  28. package/dist/cjs/snk-form-view.cjs.entry.js +6 -1
  29. package/dist/cjs/snk-form.cjs.entry.js +13 -8
  30. package/dist/cjs/snk-grid-config.cjs.entry.js +6 -6
  31. package/dist/cjs/snk-grid.cjs.entry.js +23 -22
  32. package/dist/cjs/{snk-guides-viewer-8518c61b.js → snk-guides-viewer-18e9666c.js} +19 -8
  33. package/dist/cjs/snk-guides-viewer.cjs.entry.js +10 -9
  34. package/dist/cjs/snk-personalized-filter.cjs.entry.js +14 -16
  35. package/dist/cjs/snk-print-selector.cjs.entry.js +2 -4
  36. package/dist/cjs/snk-simple-crud.cjs.entry.js +43 -85
  37. package/dist/cjs/snk-taskbar-custom-elements.cjs.entry.js +20 -0
  38. package/dist/cjs/snk-taskbar.cjs.entry.js +71 -5
  39. package/dist/cjs/{taskbar-elements-b98dd6e9.js → taskbar-elements-39949c7a.js} +4 -4
  40. package/dist/collection/collection-manifest.json +1 -0
  41. package/dist/collection/components/snk-actions-button/actions/index.js +3 -4
  42. package/dist/collection/components/snk-actions-button/snk-actions-button.js +8 -4
  43. package/dist/collection/components/snk-application/snk-application.js +120 -65
  44. package/dist/collection/components/snk-configurator/snk-configurator.js +19 -1
  45. package/dist/collection/components/snk-crud/snk-crud.js +44 -8
  46. package/dist/collection/components/snk-crud/subcomponents/snk-detail-view/snk-detail-view.js +60 -2
  47. package/dist/collection/components/snk-crud/subcomponents/snk-form-view.js +27 -1
  48. package/dist/collection/components/snk-crud/subcomponents/snk-guides-viewer.js +65 -28
  49. package/dist/collection/components/snk-data-unit/snk-data-unit.js +22 -6
  50. package/dist/collection/components/snk-entity-list/snk-entity-list.js +0 -23
  51. package/dist/collection/components/snk-filter-bar/filter-item/snk-filter-detail.js +8 -13
  52. package/dist/collection/components/snk-filter-bar/filter-modal/snk-filter-modal.js +1 -1
  53. package/dist/collection/components/snk-filter-bar/filter-modal/subcomponents/snk-filter-modal-item.js +21 -16
  54. package/dist/collection/components/snk-filter-bar/snk-filter-bar.js +28 -12
  55. package/dist/collection/components/snk-form/SnkFormConfigManager.js +17 -19
  56. package/dist/collection/components/snk-form/snk-form.js +46 -2
  57. package/dist/collection/components/snk-form/subcomponents/snk-form-config/snk-form-config.js +5 -15
  58. package/dist/collection/components/snk-grid/snk-grid.js +108 -16
  59. package/dist/collection/components/snk-grid/subcomponents/snk-grid-config/snk-grid-config.js +19 -1
  60. package/dist/collection/components/snk-personalized-filter/snk-personalized-filter.js +28 -12
  61. package/dist/collection/components/snk-simple-crud/snk-simple-crud.js +23 -1
  62. package/dist/collection/components/snk-taskbar/elements/taskbar-elements.js +4 -4
  63. package/dist/collection/components/snk-taskbar/snk-taskbar-custom-elements.js +43 -0
  64. package/dist/collection/components/snk-taskbar/snk-taskbar.css +4 -0
  65. package/dist/collection/components/snk-taskbar/snk-taskbar.js +126 -5
  66. package/dist/collection/lib/configs/ConfigStorage.js +33 -44
  67. package/dist/collection/lib/dataUnit/InMemoryLoader.js +23 -71
  68. package/dist/collection/lib/http/data-fetcher/DataFetcher.js +48 -33
  69. package/dist/collection/lib/http/data-fetcher/fetchers/filter-bar-config-fetcher.js +0 -24
  70. package/dist/collection/lib/index.js +10 -0
  71. package/dist/collection/lib/resourceid/ResourceIDUtils.js +7 -0
  72. package/dist/collection/lib/utils/PrintUtils.js +18 -9
  73. package/dist/collection/lib/utils/urlutils.js +29 -0
  74. package/dist/components/ConfigStorage.js +161 -48
  75. package/dist/components/DataFetcher.js +80 -235
  76. package/dist/components/PrintUtils.js +213 -0
  77. package/dist/components/ResourceIDUtils.js +10 -0
  78. package/dist/components/SnkFormConfigManager.js +17 -19
  79. package/dist/components/auth-fetcher.js +1 -1
  80. package/dist/components/form-config-fetcher.js +64 -2
  81. package/dist/components/index.d.ts +1 -0
  82. package/dist/components/index.js +1 -0
  83. package/dist/components/snk-actions-button2.js +23 -9
  84. package/dist/components/snk-application2.js +145 -129
  85. package/dist/components/snk-attach2.js +1 -8
  86. package/dist/components/snk-configurator2.js +3 -1
  87. package/dist/components/snk-crud.js +27 -8
  88. package/dist/components/snk-data-unit2.js +6 -5
  89. package/dist/components/snk-detail-view2.js +26 -10
  90. package/dist/components/snk-entity-list.js +0 -4
  91. package/dist/components/snk-filter-bar2.js +12 -12
  92. package/dist/components/snk-filter-detail2.js +8 -13
  93. package/dist/components/snk-filter-modal-item2.js +5 -16
  94. package/dist/components/snk-form-config2.js +5 -15
  95. package/dist/components/snk-form-view2.js +6 -1
  96. package/dist/components/snk-form.js +9 -2
  97. package/dist/components/snk-grid-config2.js +4 -2
  98. package/dist/components/snk-grid2.js +24 -17
  99. package/dist/components/snk-personalized-filter2.js +11 -11
  100. package/dist/components/snk-print-selector.js +1 -1
  101. package/dist/components/snk-simple-crud2.js +30 -73
  102. package/dist/components/snk-taskbar-custom-elements.d.ts +11 -0
  103. package/dist/components/snk-taskbar-custom-elements.js +35 -0
  104. package/dist/components/snk-taskbar2.js +81 -9
  105. package/dist/esm/{ConfigStorage-1090289a.js → ConfigStorage-8d420626.js} +162 -49
  106. package/dist/esm/{DataFetcher-a4ed43e7.js → DataFetcher-e97b3942.js} +80 -235
  107. package/dist/esm/ISave-4412b20c.js +8 -0
  108. package/dist/esm/PrintUtils-3e4ff0f5.js +213 -0
  109. package/dist/esm/ResourceIDUtils-a114189a.js +10 -0
  110. package/dist/esm/{SnkFormConfigManager-de537eca.js → SnkFormConfigManager-4c6a5b41.js} +19 -21
  111. package/dist/esm/{auth-fetcher-c53e0d6c.js → auth-fetcher-55e5cbce.js} +1 -1
  112. package/dist/esm/{dataunit-fetcher-8d0bfa4a.js → dataunit-fetcher-716a99ca.js} +1 -1
  113. package/dist/esm/{form-config-fetcher-4065db9a.js → form-config-fetcher-b69da2f1.js} +65 -3
  114. package/dist/esm/index-a7d3d3f1.js +4 -0
  115. package/dist/esm/loader.js +1 -1
  116. package/dist/esm/{pesquisa-fetcher-7460b876.js → pesquisa-fetcher-c9a53822.js} +1 -1
  117. package/dist/esm/sankhyablocks.js +1 -1
  118. package/dist/esm/snk-actions-button.entry.js +19 -11
  119. package/dist/esm/snk-application.entry.js +60 -44
  120. package/dist/esm/snk-attach.entry.js +5 -10
  121. package/dist/esm/snk-configurator.entry.js +2 -1
  122. package/dist/esm/snk-crud.entry.js +30 -13
  123. package/dist/esm/snk-data-exporter.entry.js +3 -2
  124. package/dist/esm/{snk-data-unit-8c4d944d.js → snk-data-unit-1715d2f1.js} +5 -5
  125. package/dist/esm/snk-data-unit.entry.js +1 -1
  126. package/dist/esm/snk-detail-view.entry.js +17 -13
  127. package/dist/esm/snk-entity-list.entry.js +0 -4
  128. package/dist/esm/snk-filter-bar.entry.js +15 -17
  129. package/dist/esm/snk-filter-detail.entry.js +8 -17
  130. package/dist/esm/snk-filter-modal-item.entry.js +7 -20
  131. package/dist/esm/snk-form-config.entry.js +8 -18
  132. package/dist/esm/snk-form-view.entry.js +6 -1
  133. package/dist/esm/snk-form.entry.js +13 -8
  134. package/dist/esm/snk-grid-config.entry.js +6 -6
  135. package/dist/esm/snk-grid.entry.js +23 -22
  136. package/dist/esm/{snk-guides-viewer-cdecff6e.js → snk-guides-viewer-2e97c0c3.js} +19 -8
  137. package/dist/esm/snk-guides-viewer.entry.js +10 -9
  138. package/dist/esm/snk-personalized-filter.entry.js +14 -16
  139. package/dist/esm/snk-print-selector.entry.js +1 -3
  140. package/dist/esm/snk-simple-crud.entry.js +34 -76
  141. package/dist/esm/snk-taskbar-custom-elements.entry.js +16 -0
  142. package/dist/esm/snk-taskbar.entry.js +71 -5
  143. package/dist/esm/{taskbar-elements-2c761819.js → taskbar-elements-0a6b8b95.js} +4 -4
  144. package/dist/sankhyablocks/p-0b19beb9.entry.js +1 -0
  145. package/dist/sankhyablocks/p-110136be.entry.js +1 -0
  146. package/dist/sankhyablocks/p-12e48665.entry.js +1 -0
  147. package/dist/sankhyablocks/p-236cd346.js +1 -0
  148. package/dist/sankhyablocks/p-324ce41e.entry.js +1 -0
  149. package/dist/sankhyablocks/p-34604220.entry.js +1 -0
  150. package/dist/sankhyablocks/p-41f81c72.js +1 -0
  151. package/dist/sankhyablocks/{p-b04fb9d4.js → p-4e701fa7.js} +1 -1
  152. package/dist/sankhyablocks/p-615874db.js +56 -0
  153. package/dist/sankhyablocks/p-648a7c72.entry.js +1 -0
  154. package/dist/sankhyablocks/p-688dcb4c.js +1 -0
  155. package/dist/sankhyablocks/p-72fc257b.entry.js +1 -0
  156. package/dist/sankhyablocks/p-7453735e.entry.js +1 -0
  157. package/dist/sankhyablocks/p-776514a8.entry.js +11 -0
  158. package/dist/sankhyablocks/p-81392ced.js +26 -0
  159. package/dist/sankhyablocks/p-8d884fab.js +1 -0
  160. package/dist/sankhyablocks/p-989937ee.entry.js +1 -0
  161. package/dist/sankhyablocks/p-9a270401.entry.js +1 -0
  162. package/dist/sankhyablocks/p-9e7d65a4.js +1 -0
  163. package/dist/sankhyablocks/p-a2854b5a.entry.js +1 -0
  164. package/dist/sankhyablocks/p-c149dca8.entry.js +1 -0
  165. package/dist/sankhyablocks/p-c303d74f.entry.js +1 -0
  166. package/dist/sankhyablocks/p-c51a4f28.entry.js +1 -0
  167. package/dist/sankhyablocks/p-c555075c.entry.js +1 -0
  168. package/dist/sankhyablocks/{p-a2493d11.js → p-c9841939.js} +1 -1
  169. package/dist/sankhyablocks/p-ce6d7e3f.js +1 -0
  170. package/dist/sankhyablocks/p-cee68227.entry.js +1 -0
  171. package/dist/sankhyablocks/p-d4f9ee17.entry.js +1 -0
  172. package/dist/sankhyablocks/p-e1cb1f0b.js +1 -0
  173. package/dist/sankhyablocks/{p-b978da60.js → p-e696a8f6.js} +1 -1
  174. package/dist/sankhyablocks/p-e6c00493.entry.js +1 -0
  175. package/dist/sankhyablocks/p-ecbb878e.entry.js +1 -0
  176. package/dist/sankhyablocks/{p-9d18017a.js → p-f390386d.js} +1 -1
  177. package/dist/sankhyablocks/p-fbb4597a.entry.js +1 -0
  178. package/dist/sankhyablocks/p-ff2f2152.entry.js +1 -0
  179. package/dist/sankhyablocks/p-ff8778e6.entry.js +1 -0
  180. package/dist/sankhyablocks/sankhyablocks.esm.js +1 -1
  181. package/dist/types/components/snk-actions-button/actions/index.d.ts +2 -1
  182. package/dist/types/components/snk-application/snk-application.d.ts +9 -22
  183. package/dist/types/components/snk-configurator/snk-configurator.d.ts +4 -0
  184. package/dist/types/components/snk-crud/snk-crud.d.ts +6 -0
  185. package/dist/types/components/snk-crud/subcomponents/snk-detail-view/snk-detail-view.d.ts +12 -0
  186. package/dist/types/components/snk-crud/subcomponents/snk-form-view.d.ts +5 -0
  187. package/dist/types/components/snk-crud/subcomponents/snk-guides-viewer.d.ts +13 -2
  188. package/dist/types/components/snk-data-unit/snk-data-unit.d.ts +4 -0
  189. package/dist/types/components/snk-entity-list/snk-entity-list.d.ts +0 -4
  190. package/dist/types/components/snk-filter-bar/filter-item/snk-filter-detail.d.ts +0 -3
  191. package/dist/types/components/snk-filter-bar/filter-modal/snk-filter-modal.d.ts +1 -1
  192. package/dist/types/components/snk-filter-bar/filter-modal/subcomponents/snk-filter-modal-item.d.ts +5 -4
  193. package/dist/types/components/snk-filter-bar/snk-filter-bar.d.ts +4 -0
  194. package/dist/types/components/snk-form/SnkFormConfigManager.d.ts +5 -4
  195. package/dist/types/components/snk-form/snk-form.d.ts +9 -1
  196. package/dist/types/components/snk-form/subcomponents/snk-form-config/snk-form-config.d.ts +0 -2
  197. package/dist/types/components/snk-grid/snk-grid.d.ts +17 -1
  198. package/dist/types/components/snk-grid/subcomponents/snk-grid-config/snk-grid-config.d.ts +4 -0
  199. package/dist/types/components/snk-personalized-filter/snk-personalized-filter.d.ts +5 -1
  200. package/dist/types/components/snk-simple-crud/snk-simple-crud.d.ts +4 -0
  201. package/dist/types/components/snk-taskbar/processor/taskbar-processor.d.ts +2 -2
  202. package/dist/types/components/snk-taskbar/snk-taskbar-custom-elements.d.ts +7 -0
  203. package/dist/types/components/snk-taskbar/snk-taskbar.d.ts +27 -0
  204. package/dist/types/components.d.ts +203 -22
  205. package/dist/types/lib/configs/ConfigStorage.d.ts +11 -13
  206. package/dist/types/lib/dataUnit/InMemoryLoader.d.ts +2 -8
  207. package/dist/types/lib/http/data-fetcher/DataFetcher.d.ts +1 -1
  208. package/dist/types/lib/http/data-fetcher/fetchers/filter-bar-config-fetcher.d.ts +0 -1
  209. package/dist/types/lib/index.d.ts +11 -0
  210. package/dist/types/lib/resourceid/ResourceIDUtils.d.ts +3 -0
  211. package/dist/types/lib/utils/PrintUtils.d.ts +1 -0
  212. package/dist/types/lib/utils/urlutils.d.ts +14 -0
  213. package/package.json +2 -2
  214. package/react/components.d.ts +1 -0
  215. package/react/components.js +1 -0
  216. package/react/components.js.map +1 -1
  217. package/dist/cjs/filter-bar-config-fetcher-24548cec.js +0 -155
  218. package/dist/cjs/resource-fetcher-64102551.js +0 -68
  219. package/dist/components/filter-bar-config-fetcher.js +0 -153
  220. package/dist/components/resource-fetcher.js +0 -66
  221. package/dist/esm/filter-bar-config-fetcher-2417b8cf.js +0 -153
  222. package/dist/esm/resource-fetcher-45a70066.js +0 -66
  223. package/dist/sankhyablocks/p-0848ee4d.entry.js +0 -1
  224. package/dist/sankhyablocks/p-0bd9c412.js +0 -1
  225. package/dist/sankhyablocks/p-0fb83448.js +0 -1
  226. package/dist/sankhyablocks/p-10b2aedc.entry.js +0 -1
  227. package/dist/sankhyablocks/p-1f63dcd4.entry.js +0 -1
  228. package/dist/sankhyablocks/p-216b2102.entry.js +0 -1
  229. package/dist/sankhyablocks/p-216f081a.entry.js +0 -1
  230. package/dist/sankhyablocks/p-44e66c8d.js +0 -1
  231. package/dist/sankhyablocks/p-4514fc6a.entry.js +0 -1
  232. package/dist/sankhyablocks/p-50c13cc8.entry.js +0 -1
  233. package/dist/sankhyablocks/p-52c6b2e7.js +0 -1
  234. package/dist/sankhyablocks/p-564efc43.js +0 -1
  235. package/dist/sankhyablocks/p-5994af77.js +0 -56
  236. package/dist/sankhyablocks/p-6bb904bb.entry.js +0 -1
  237. package/dist/sankhyablocks/p-6e06175e.entry.js +0 -1
  238. package/dist/sankhyablocks/p-6f0795c8.entry.js +0 -1
  239. package/dist/sankhyablocks/p-7588f006.entry.js +0 -1
  240. package/dist/sankhyablocks/p-847e6c20.js +0 -17
  241. package/dist/sankhyablocks/p-8f3652bf.entry.js +0 -11
  242. package/dist/sankhyablocks/p-9471cbc9.entry.js +0 -1
  243. package/dist/sankhyablocks/p-a42dd503.entry.js +0 -1
  244. package/dist/sankhyablocks/p-befbc9ee.entry.js +0 -1
  245. package/dist/sankhyablocks/p-c32b9d7c.entry.js +0 -1
  246. package/dist/sankhyablocks/p-c6380ea2.entry.js +0 -1
  247. package/dist/sankhyablocks/p-c6feb995.entry.js +0 -1
  248. package/dist/sankhyablocks/p-d7c7a289.entry.js +0 -1
  249. package/dist/sankhyablocks/p-de69b4b0.entry.js +0 -1
  250. package/dist/sankhyablocks/p-f3b7b69e.js +0 -10
  251. package/dist/sankhyablocks/p-f7eded3a.entry.js +0 -1
  252. package/dist/sankhyablocks/p-ff7383b0.entry.js +0 -1
@@ -4,7 +4,7 @@ import { UserInterface } from '@sankhyalabs/core/dist/dataunit/metadata/UnitMeta
4
4
  import { d as defineCustomElement$1, T as TaskbarElement } from './snk-taskbar2.js';
5
5
  import { C as ConfigStorage } from './ConfigStorage.js';
6
6
  import { P as PresentationMode } from './index2.js';
7
- import { S as SnkMultiSelectionListDataSource, T as TaskbarProcessor } from './SnkMultiSelectionListDataSource.js';
7
+ import { T as TaskbarProcessor, S as SnkMultiSelectionListDataSource } from './SnkMultiSelectionListDataSource.js';
8
8
  import { s as store } from './index3.js';
9
9
  import { SelectionMode } from '@sankhyalabs/core/dist/dataunit/DataUnit';
10
10
  import { d as defineCustomElement$h } from './snk-actions-button2.js';
@@ -32,7 +32,6 @@ const SnkGrid = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
32
32
  this.__registerHost();
33
33
  this.actionClick = createEvent(this, "actionClick", 7);
34
34
  this.gridDoubleClick = createEvent(this, "gridDoubleClick", 7);
35
- this._multiSelectionListDataSource = new SnkMultiSelectionListDataSource();
36
35
  this._topTaskbarProcessor = new TaskbarProcessor({
37
36
  "snkGridTopTaskbar.regular": ["FORM_MODE", "CONFIGURATOR", "INSERT"],
38
37
  "snkGridTopTaskbar.regular.secondary": ["FORM_MODE", "CONFIGURATOR", "INSERT"],
@@ -49,7 +48,9 @@ const SnkGrid = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
49
48
  this._dataState = undefined;
50
49
  this._gridConfig = undefined;
51
50
  this._popUpGridConfig = false;
51
+ this.columnFilterDataSource = new SnkMultiSelectionListDataSource();
52
52
  this.configName = undefined;
53
+ this.resourceID = undefined;
53
54
  this.selectionToastConfig = undefined;
54
55
  this.actionsList = undefined;
55
56
  this.isDetail = undefined;
@@ -61,6 +62,9 @@ const SnkGrid = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
61
62
  this.useEnterLikeTab = false;
62
63
  this.recordsValidator = undefined;
63
64
  this.canEdit = true;
65
+ this.taskbarCustomContainerId = undefined;
66
+ this.gridHeaderCustomSlotId = 'GRID_HEADER_CUSTOM_ELEMENTS';
67
+ this.topTaskbarCustomSlotId = 'GRID_TASKBAR_CUSTOM_ELEMENTS';
64
68
  }
65
69
  /**
66
70
  * Exibe a janela de configurações da grade.
@@ -108,20 +112,17 @@ const SnkGrid = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
108
112
  this._gridConfig = config;
109
113
  }
110
114
  loadConfig() {
111
- ConfigStorage.get()
112
- .then((instance) => {
113
- instance.loadGridConfig(this.configName)
114
- .then((config) => {
115
- this.setGridConfig(config);
116
- })
117
- .catch((error) => {
118
- console.warn(error);
119
- });
115
+ ConfigStorage.loadGridConfig(this.configName, this.resourceID)
116
+ .then((config) => {
117
+ this.setGridConfig(config);
118
+ })
119
+ .catch((error) => {
120
+ console.warn(error);
120
121
  });
121
122
  }
122
123
  gridConfigChangeHandler(evt) {
123
124
  const config = evt.detail;
124
- ConfigStorage.saveGridConfig(config, this.configName);
125
+ ConfigStorage.saveGridConfig(config, this.configName, this.resourceID);
125
126
  evt.stopPropagation();
126
127
  }
127
128
  modalConfigChangeHandler(evt) {
@@ -234,10 +235,11 @@ const SnkGrid = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
234
235
  ElementIDUtils.addIDInfo(this._element, null, dataInfo);
235
236
  }
236
237
  finshLoading() {
238
+ var _a, _b;
237
239
  this._dataUnitLoadLockerResolver = this._dataUnit.addLoadingLocker();
238
240
  this.addElementID();
239
- this._multiSelectionListDataSource.setApplication(this._application);
240
- this._multiSelectionListDataSource.setDataUnit(this._dataUnit);
241
+ (_a = this.columnFilterDataSource) === null || _a === void 0 ? void 0 : _a.setApplication(this._application);
242
+ (_b = this.columnFilterDataSource) === null || _b === void 0 ? void 0 : _b.setDataUnit(this._dataUnit);
241
243
  }
242
244
  componentWillLoad() {
243
245
  this._application = ApplicationContext.getContextValue("__SNK__APPLICATION__");
@@ -290,7 +292,7 @@ const SnkGrid = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
290
292
  if (!this._dataUnit || this._dataUnit.records.length === 0)
291
293
  invisibleButtons.push("DATA_EXPORTER");
292
294
  if (this._dataState && this._dataState.selectionInfo.mode === SelectionMode.ALL_RECORDS)
293
- invisibleButtons.push("ACTIONS_BUTTON");
295
+ invisibleButtons.push("ACTIONS_BUTTON", TaskbarElement.UPDATE);
294
296
  return invisibleButtons;
295
297
  }
296
298
  componentWillRender() {
@@ -328,13 +330,15 @@ const SnkGrid = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
328
330
  if (!this._dataUnit) {
329
331
  return undefined;
330
332
  }
331
- return (h("div", { class: "snk-grid__container ez-flex ez-flex--column ez-flex-item--auto ez-padding--large" }, h("div", { class: "snk-grid__header ez-margin-bottom--medium" }, h("snk-filter-bar", { ref: (ref) => this._snkFilterBar = ref, dataUnit: this._dataUnit, "data-element-id": "gridFilter", class: "snk-grid__filter-bar ez-align--top", configName: this.configName, messagesBuilder: this.messagesBuilder }), ((_b = (_a = this._snkFilterBar) === null || _a === void 0 ? void 0 : _a.filterConfig) === null || _b === void 0 ? void 0 : _b.length) > 0 &&
332
- h("hr", { class: "ez-divider-vertical ez-divider--dark ez-margin-left--medium snk-grid__header-divider" }), h("snk-taskbar", { class: "ez-padding-left--medium", "data-element-id": "grid_top", key: "topTaskbar", configName: this.configName, dataUnit: this._dataUnit, messagesBuilder: this.messagesBuilder, buttons: this._topTaskbarProcessor.buttons, disabledButtons: this._topTaskbarProcessor.disabledButtons, customButtons: this._topTaskbarProcessor.customButtons, primaryButton: this.getPrimaryButton() })), h("ez-grid", { ref: ref => this._grid = ref, class: (this.presentationMode === PresentationMode.SECONDARY ? "snk-grid-container__without-shadow " : "") + "snk-grid__table", "data-element-id": "embedded", dataUnit: this._dataUnit, key: "grid-" + this._snkDataUnit.entityName, config: this._gridConfig, onConfigChange: (evt) => { this.gridConfigChangeHandler(evt); }, onEzDoubleClick: () => this.gridDoubleClick.emit(), statusResolver: this.statusResolver, multipleSelection: this.multipleSelection, onComponentReady: () => this.onEzGridReady(), columnfilterDataSource: this._multiSelectionListDataSource, selectionToastConfig: this.selectionToastConfig, useEnterLikeTab: this.useEnterLikeTab, recordsValidator: this.recordsValidator, canEdit: this.canEdit }, h("snk-taskbar", { dataUnit: this._dataUnit, configName: this.configName, messagesBuilder: this.messagesBuilder, "data-element-id": "grid_left", buttons: this._headerTaskbarProcessor.buttons, disabledButtons: this._headerTaskbarProcessor.disabledButtons, customButtons: this._headerTaskbarProcessor.customButtons, slot: "leftButtons", actionsList: this.actionsList })), h("div", { class: "ez-col ez-col--sd-12" }, h("slot", { name: "SnkGridFooter" })), h("ez-modal", { modalSize: "small", closeEsc: false, closeOutsideClick: false, opened: this._popUpGridConfig, onEzCloseModal: () => this.closeGridConfig() }, h("snk-grid-config", { ref: ref => this._snkGridConfig = ref, config: this._gridConfig, "data-element-id": this._element.getAttribute(ElementIDUtils.DATA_ELEMENT_ID_ATTRIBUTE_NAME), application: this._application, selectedIndex: 0, configName: this.configName, onConfigChange: (evt) => this.modalConfigChangeHandler(evt), onConfigCancel: () => this.closeGridConfig() }))));
333
+ return (h("div", { class: "snk-grid__container ez-flex ez-flex--column ez-flex-item--auto ez-padding--large" }, h("div", { class: "snk-grid__header ez-margin-bottom--medium" }, h("snk-filter-bar", { ref: (ref) => this._snkFilterBar = ref, dataUnit: this._dataUnit, "data-element-id": "gridFilter", class: "snk-grid__filter-bar ez-align--top", configName: this.configName, messagesBuilder: this.messagesBuilder, resourceID: this.resourceID }), ((_b = (_a = this._snkFilterBar) === null || _a === void 0 ? void 0 : _a.filterConfig) === null || _b === void 0 ? void 0 : _b.length) > 0 &&
334
+ h("hr", { class: "ez-divider-vertical ez-divider--dark ez-margin-left--medium snk-grid__header-divider" }), h("snk-taskbar", { class: "ez-padding-left--medium", "data-element-id": "grid_top", key: "topTaskbar", configName: this.configName, dataUnit: this._dataUnit, messagesBuilder: this.messagesBuilder, buttons: this._topTaskbarProcessor.buttons, disabledButtons: this._topTaskbarProcessor.disabledButtons, customButtons: this._topTaskbarProcessor.customButtons, primaryButton: this.getPrimaryButton(), resourceID: this.resourceID, customContainerId: this.taskbarCustomContainerId, customSlotId: this.topTaskbarCustomSlotId }, h("slot", { name: this.topTaskbarCustomSlotId }))), h("ez-grid", { ref: ref => this._grid = ref, class: (this.presentationMode === PresentationMode.SECONDARY ? "snk-grid-container__without-shadow " : "") + "snk-grid__table", "data-element-id": "embedded", dataUnit: this._dataUnit, key: "grid-" + this._snkDataUnit.entityName, config: this._gridConfig, onConfigChange: (evt) => { this.gridConfigChangeHandler(evt); }, onEzDoubleClick: () => this.gridDoubleClick.emit(), statusResolver: this.statusResolver, multipleSelection: this.multipleSelection, onComponentReady: () => this.onEzGridReady(), columnfilterDataSource: this.columnFilterDataSource, selectionToastConfig: this.selectionToastConfig, useEnterLikeTab: this.useEnterLikeTab, recordsValidator: this.recordsValidator, canEdit: this.canEdit }, h("snk-taskbar", { dataUnit: this._dataUnit, configName: this.configName, messagesBuilder: this.messagesBuilder, "data-element-id": "grid_left", buttons: this._headerTaskbarProcessor.buttons, disabledButtons: this._headerTaskbarProcessor.disabledButtons, customButtons: this._headerTaskbarProcessor.customButtons, slot: "leftButtons", actionsList: this.actionsList, resourceID: this.resourceID, customContainerId: this.taskbarCustomContainerId, customSlotId: this.gridHeaderCustomSlotId }, h("slot", { name: this.gridHeaderCustomSlotId }))), h("div", { class: "ez-col ez-col--sd-12" }, h("slot", { name: "SnkGridFooter" })), h("ez-modal", { modalSize: "small", closeEsc: false, closeOutsideClick: false, opened: this._popUpGridConfig, onEzCloseModal: () => this.closeGridConfig() }, h("snk-grid-config", { ref: ref => this._snkGridConfig = ref, config: this._gridConfig, "data-element-id": this._element.getAttribute(ElementIDUtils.DATA_ELEMENT_ID_ATTRIBUTE_NAME), application: this._application, selectedIndex: 0, configName: this.configName, onConfigChange: (evt) => this.modalConfigChangeHandler(evt), onConfigCancel: () => this.closeGridConfig(), resourceID: this.resourceID }))));
333
335
  }
334
336
  get _element() { return this; }
335
337
  static get style() { return snkGridCss; }
336
338
  }, [6, "snk-grid", {
339
+ "columnFilterDataSource": [1040],
337
340
  "configName": [1, "config-name"],
341
+ "resourceID": [1, "resource-i-d"],
338
342
  "selectionToastConfig": [16],
339
343
  "actionsList": [16],
340
344
  "isDetail": [4, "is-detail"],
@@ -346,6 +350,9 @@ const SnkGrid = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
346
350
  "useEnterLikeTab": [4, "use-enter-like-tab"],
347
351
  "recordsValidator": [16],
348
352
  "canEdit": [4, "can-edit"],
353
+ "taskbarCustomContainerId": [1, "taskbar-custom-container-id"],
354
+ "gridHeaderCustomSlotId": [1, "grid-header-custom-slot-id"],
355
+ "topTaskbarCustomSlotId": [1, "top-taskbar-custom-slot-id"],
349
356
  "_dataUnit": [32],
350
357
  "_dataState": [32],
351
358
  "_gridConfig": [32],
@@ -41,6 +41,7 @@ const SnkPersonalizedFilter = /*@__PURE__*/ proxyCustomElement(class extends HTM
41
41
  this.entityUri = undefined;
42
42
  this.filterId = undefined;
43
43
  this.configName = undefined;
44
+ this.resourceID = undefined;
44
45
  }
45
46
  /*
46
47
  * Cria um novo filtro se não houver nenhum filtro existente
@@ -77,17 +78,15 @@ const SnkPersonalizedFilter = /*@__PURE__*/ proxyCustomElement(class extends HTM
77
78
  this._filterAssistent = ObjectUtils.copy(newPersonalizedFilter);
78
79
  }
79
80
  loadFilter(newValue, oldValue) {
80
- if (newValue == null || oldValue == newValue) {
81
+ if (newValue == null || oldValue == newValue || this.resourceID == undefined) {
81
82
  return;
82
83
  }
83
- ConfigStorage.get().then((_instance) => {
84
- ConfigStorage.loadPersonalizedFilter(newValue, this.configName)
85
- .then((resp) => {
86
- const personalizedFilter = this.addLabelToItems(resp);
87
- this._filterAssistent = personalizedFilter;
88
- this._originalFilterAssistent = ObjectUtils.copy(personalizedFilter);
89
- this._filterAssistentMode = this._filterAssistent.hasOwnProperty("assistent") && this._filterAssistent.assistent != undefined;
90
- });
84
+ ConfigStorage.loadPersonalizedFilter(newValue, this.resourceID, this.configName)
85
+ .then((resp) => {
86
+ const personalizedFilter = this.addLabelToItems(resp);
87
+ this._filterAssistent = personalizedFilter;
88
+ this._originalFilterAssistent = ObjectUtils.copy(personalizedFilter);
89
+ this._filterAssistentMode = this._filterAssistent.hasOwnProperty("assistent") && this._filterAssistent.assistent != undefined;
91
90
  });
92
91
  }
93
92
  componentWillLoad() {
@@ -112,7 +111,7 @@ const SnkPersonalizedFilter = /*@__PURE__*/ proxyCustomElement(class extends HTM
112
111
  return this._application.messagesBuilder.getMessage(key, params);
113
112
  }
114
113
  saveFilter() {
115
- ConfigStorage.savePersonalizedFilter(this._filterAssistent, this.configName).then((personalizedFilter) => {
114
+ ConfigStorage.savePersonalizedFilter(this._filterAssistent, this.resourceID, this.configName).then((personalizedFilter) => {
116
115
  this._elButtonSave.enabled = false;
117
116
  const messageToken = !!this._filterAssistent.id ? 'confirmEdit' : 'confirmSave';
118
117
  ApplicationUtils.info(this.getMessage(`snkPersonalizedFilter.${messageToken}.title`), { iconName: "check" });
@@ -123,7 +122,7 @@ const SnkPersonalizedFilter = /*@__PURE__*/ proxyCustomElement(class extends HTM
123
122
  });
124
123
  }
125
124
  removeFilter() {
126
- ConfigStorage.removePersonalizedFilter(this._filterAssistent, this.configName);
125
+ ConfigStorage.removePersonalizedFilter(this._filterAssistent, this.resourceID, this.configName);
127
126
  }
128
127
  hasChangesToSave() {
129
128
  return JSON.stringify(this._filterAssistent) === JSON.stringify(this._originalFilterAssistent);
@@ -301,6 +300,7 @@ const SnkPersonalizedFilter = /*@__PURE__*/ proxyCustomElement(class extends HTM
301
300
  "entityUri": [1025, "entity-uri"],
302
301
  "filterId": [1025, "filter-id"],
303
302
  "configName": [1025, "config-name"],
303
+ "resourceID": [1, "resource-i-d"],
304
304
  "_filterAssistentMode": [32],
305
305
  "_filterAssistent": [32],
306
306
  "createPersonalizedFilter": [64]
@@ -1,5 +1,5 @@
1
1
  import { proxyCustomElement, HTMLElement, h, Host } from '@stencil/core/internal/client';
2
- import { P as PrintUtils } from './DataFetcher.js';
2
+ import { P as PrintUtils } from './PrintUtils.js';
3
3
  import { ApplicationUtils } from '@sankhyalabs/ezui/dist/collection/utils';
4
4
  import { ElementIDUtils, ApplicationContext } from '@sankhyalabs/core';
5
5
  import ModalButtonStatus from '@sankhyalabs/ezui/dist/collection/components/ez-modal-container/modal-button-status';
@@ -1,43 +1,60 @@
1
1
  import { proxyCustomElement, HTMLElement, createEvent, h } from '@stencil/core/internal/client';
2
- import { DataUnit, StringUtils, SortMode, DataType, ChangeOperation, ObjectUtils, ApplicationContext, UserInterface } from '@sankhyalabs/core';
2
+ import { DataUnit, defaultDataLoader, StringUtils, ChangeOperation, ObjectUtils, ApplicationContext, DataType, UserInterface } from '@sankhyalabs/core';
3
3
  import { V as VIEW_MODE, S as SIMPLE_CRUD_MODE } from './constants.js';
4
4
  import { T as TaskbarElement, d as defineCustomElement$1 } from './snk-taskbar2.js';
5
5
  import './DataFetcher.js';
6
6
  import './pesquisa-fetcher.js';
7
7
  import { P as PresentationMode } from './index2.js';
8
- import { S as SnkMultiSelectionListDataSource, T as TaskbarProcessor } from './SnkMultiSelectionListDataSource.js';
9
- import { DISTINCT_FILTER_NAME_PREFIX } from '@sankhyalabs/ezui/dist/collection/utils/constants';
10
8
  import { d as defineCustomElement$5 } from './snk-actions-button2.js';
9
+ import '@sankhyalabs/ezui/dist/collection/utils/constants';
10
+ import '@sankhyalabs/core/dist/dataunit/metadata/UnitMetadata';
11
+ import './filter-item-type.enum.js';
12
+ import './form-config-fetcher.js';
13
+ import { S as SnkMultiSelectionListDataSource, T as TaskbarProcessor } from './SnkMultiSelectionListDataSource.js';
11
14
  import { d as defineCustomElement$4 } from './snk-data-exporter2.js';
12
15
  import { d as defineCustomElement$3 } from './snk-data-unit2.js';
13
16
  import { d as defineCustomElement$2 } from './snk-exporter-email-sender2.js';
14
17
 
15
18
  class InMemoryLoader {
16
19
  constructor(metadata, records) {
17
- this.records = records || [];
20
+ this.records = records;
18
21
  this.metadata = metadata;
19
22
  this._dataUnit = new DataUnit(InMemoryLoader.IN_MEMORY_DATA_UNIT_NAME);
20
23
  this._dataUnit.metadataLoader = () => this.metadaLoader();
21
- this._dataUnit.dataLoader = (dataUnit, request) => this.dataLoader(dataUnit, request);
24
+ this._dataUnit.dataLoader = (dataUnit, request) => defaultDataLoader(dataUnit, request, this.getRecordsToLoad());
22
25
  this._dataUnit.saveLoader = (_dataUnit, changes) => this.saveLoader(_dataUnit, changes);
23
26
  this._dataUnit.removeLoader = (_dataUnit, recordIds) => this.removeLoader(_dataUnit, recordIds);
24
27
  this.dataUnit.loadMetadata().then(() => this.dataUnit.loadData());
25
28
  }
29
+ getRecordsToLoad() {
30
+ if (this._initialRecords) {
31
+ try {
32
+ return this._initialRecords;
33
+ }
34
+ finally {
35
+ this._initialRecords = undefined;
36
+ }
37
+ }
38
+ return this.dataUnit.records;
39
+ }
26
40
  get dataUnit() {
27
41
  return this._dataUnit;
28
42
  }
29
43
  get records() {
30
- return this._records;
44
+ return this.dataUnit.records;
31
45
  }
32
46
  set records(records) {
33
- this._records = records === null || records === void 0 ? void 0 : records.map(record => {
47
+ const newRecords = records === null || records === void 0 ? void 0 : records.map(record => {
34
48
  if (!record["__record__id__"]) {
35
49
  record["__record__id__"] = this.generateUniqueId();
36
50
  }
37
51
  return record;
38
52
  });
39
53
  if (this._dataUnit) {
40
- this._dataUnit.records = [...this._records];
54
+ this._dataUnit.records = newRecords;
55
+ }
56
+ else {
57
+ this._initialRecords = newRecords;
41
58
  }
42
59
  }
43
60
  get metadata() {
@@ -55,76 +72,16 @@ class InMemoryLoader {
55
72
  metadaLoader() {
56
73
  return Promise.resolve(this._metadata);
57
74
  }
58
- dataLoader(dataUnit, request) {
59
- const filters = this.getColumnFilters(dataUnit);
60
- let records = this.applyFilters(filters);
61
- if (request.sort) {
62
- request.sort.forEach(sort => {
63
- records = records.sort((recordA, recordB) => {
64
- const fieldA = recordA[sort.field];
65
- const fieldB = recordB[sort.field];
66
- const sortFn = this.getSortFn(sort.dataType);
67
- return sortFn(fieldA, fieldB) * (sort.mode == SortMode.ASC ? 1 : -1);
68
- });
69
- });
70
- }
71
- return Promise.resolve({ records: records });
72
- }
73
- applyFilters(filters) {
74
- let records = [...this._records];
75
- filters.forEach(filter => {
76
- records = records.filter(record => { var _a; return filter.values.includes((_a = record[filter.column]) === null || _a === void 0 ? void 0 : _a.toString()); });
77
- });
78
- return records;
79
- }
80
- getColumnFilters(dataUnit) {
81
- var _a, _b;
82
- const allFilters = (_a = dataUnit.getFilters()) !== null && _a !== void 0 ? _a : [];
83
- const columnFilters = (_b = allFilters.filter(filter => { var _a; return (_a = filter.name) === null || _a === void 0 ? void 0 : _a.includes(DISTINCT_FILTER_NAME_PREFIX); })) !== null && _b !== void 0 ? _b : [];
84
- return columnFilters.map(filter => {
85
- var _a, _b;
86
- return {
87
- column: (_b = (_a = filter.name) === null || _a === void 0 ? void 0 : _a.replace(DISTINCT_FILTER_NAME_PREFIX, "")) !== null && _b !== void 0 ? _b : "",
88
- values: filter.params.map(param => param.value),
89
- };
90
- });
91
- }
92
- getSortFn(type) {
93
- switch (type) {
94
- case DataType.NUMBER:
95
- return this.sortNumber;
96
- case DataType.DATE:
97
- return this.sortDate;
98
- case DataType.OBJECT:
99
- return this.sortObject;
100
- default:
101
- return StringUtils.compare;
102
- }
103
- }
104
- sortObject(a, b) {
105
- return StringUtils.compare(a === null || a === void 0 ? void 0 : a["label"], b === null || b === void 0 ? void 0 : b["label"]);
106
- }
107
- sortNumber(a, b) {
108
- return a - b;
109
- }
110
- sortDate(a, b) {
111
- let timeA = a.getTime(), timeB = b.getTime();
112
- return timeA === timeB ? 0 : (timeA < timeB ? -1 : 1);
113
- }
114
75
  saveLoader(_dataUnit, changes) {
115
76
  return new Promise((resolve) => {
116
77
  let dataUnitRecords = [];
117
78
  changes.forEach(change => {
118
79
  let { record, updatingFields, operation } = change;
119
- let isAdd = false;
80
+ const changedRecord = Object.assign(Object.assign({}, record), updatingFields);
120
81
  if (operation === ChangeOperation.INSERT ||
121
82
  operation === ChangeOperation.COPY) {
122
- record["__old__id__"] = record["__record__id__"];
123
- record["__record__id__"] = this.generateUniqueId();
124
- isAdd = true;
125
- }
126
- const changedRecord = Object.assign(Object.assign({}, record), updatingFields);
127
- if (isAdd) {
83
+ changedRecord["__old__id__"] = record["__record__id__"];
84
+ changedRecord["__record__id__"] = this.generateUniqueId();
128
85
  this.records.push(changedRecord);
129
86
  }
130
87
  else {
@@ -138,7 +95,6 @@ class InMemoryLoader {
138
95
  }
139
96
  removeLoader(_dataUnit, recordIds) {
140
97
  return new Promise((resolve) => {
141
- this._records = this._records.filter(record => !recordIds.includes(record["__record__id__"]));
142
98
  resolve(recordIds);
143
99
  });
144
100
  }
@@ -154,6 +110,7 @@ const SnkSimpleCrud = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement
154
110
  this.dataStateChange = createEvent(this, "dataStateChange", 3);
155
111
  this.dataUnitReady = createEvent(this, "dataUnitReady", 3);
156
112
  this.actionClick = createEvent(this, "actionClick", 7);
113
+ this.formItemsReady = createEvent(this, "formItemsReady", 7);
157
114
  this.REGULAR_DEFAULT_BTNS = ["INSERT", "REFRESH", "PREVIOUS", "NEXT", "DIVIDER"];
158
115
  this.REGULAR_SELECTED_BTNS = ["INSERT", "REFRESH", "PREVIOUS", "NEXT", "DIVIDER", "CLONE", "REMOVE", "DIVIDER"];
159
116
  this._multiSelectionListDataSource = new SnkMultiSelectionListDataSource();
@@ -320,7 +277,7 @@ const SnkSimpleCrud = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement
320
277
  }
321
278
  render() {
322
279
  var _a;
323
- return (h("snk-data-unit", { class: "simple-crud__container", dataUnit: this.dataUnit, useCancelConfirm: this.useCancelConfirm, onDataStateChange: evt => this.onDataStateChange(evt), onCancelEdition: this.handleCancelEdit.bind(this), onInsertionMode: () => this.goToView(VIEW_MODE.FORM), onDataUnitReady: (evt) => this.dataUnitReady.emit(evt.detail), ignoreSaveMessage: this._currentViewMode === VIEW_MODE.GRID, onMessagesBuilderUpdated: evt => this.messagesBuilder = evt.detail }, h("header", null, h("slot", { name: "snkSimpleCrudHeader" })), h("section", { class: "ez-flex ez-box ez-box--shadow" }, h("snk-taskbar", { class: "ez-box ez-box--shadow ez-padding--medium ez-margin-bottom--large", dataUnit: this.dataUnit, primaryButton: ((_a = this.dataState) === null || _a === void 0 ? void 0 : _a.isDirty) ? "SAVE" : "INSERT", "data-element-id": "grid_left", messagesBuilder: this.messagesBuilder, buttons: this._taskbarProcessor.buttons, disabledButtons: this._taskbarProcessor.disabledButtons, customButtons: this._taskbarProcessor.customButtons, slot: "leftButtons", presentationMode: PresentationMode.SECONDARY }), h("ez-view-stack", { class: "ez-flex ez-flex--column", ref: (ref) => this._viewStack = ref, "data-element-id": "simple-crud" }, h("stack-item", null, h("ez-grid", { dataUnit: this.dataUnit, config: this.gridConfig, "no-header": true, multipleSelection: this.multipleSelection, onEzDoubleClick: () => this.goToView(VIEW_MODE.FORM), columnfilterDataSource: this.dataUnit.name.includes(InMemoryLoader.IN_MEMORY_DATA_UNIT_NAME)
280
+ return (h("snk-data-unit", { class: "simple-crud__container", dataUnit: this.dataUnit, useCancelConfirm: this.useCancelConfirm, onDataStateChange: evt => this.onDataStateChange(evt), onCancelEdition: this.handleCancelEdit.bind(this), onInsertionMode: () => this.goToView(VIEW_MODE.FORM), onDataUnitReady: (evt) => this.dataUnitReady.emit(evt.detail), ignoreSaveMessage: this._currentViewMode === VIEW_MODE.GRID, onMessagesBuilderUpdated: evt => this.messagesBuilder = evt.detail }, h("header", null, h("slot", { name: "snkSimpleCrudHeader" })), h("section", { class: "ez-flex ez-box ez-box--shadow" }, h("snk-taskbar", { class: "ez-box ez-box--shadow ez-padding--medium ez-margin-bottom--large", dataUnit: this.dataUnit, primaryButton: ((_a = this.dataState) === null || _a === void 0 ? void 0 : _a.isDirty) ? "SAVE" : "INSERT", "data-element-id": "grid_left", messagesBuilder: this.messagesBuilder, buttons: this._taskbarProcessor.buttons, disabledButtons: this._taskbarProcessor.disabledButtons, customButtons: this._taskbarProcessor.customButtons, slot: "leftButtons", presentationMode: PresentationMode.SECONDARY }, h("slot", { name: "TASKBAR_CUSTOM_ELEMENTS" })), h("ez-view-stack", { class: "ez-flex ez-flex--column", ref: (ref) => this._viewStack = ref, "data-element-id": "simple-crud" }, h("stack-item", null, h("ez-grid", { dataUnit: this.dataUnit, config: this.gridConfig, "no-header": true, multipleSelection: this.multipleSelection, onEzDoubleClick: () => this.goToView(VIEW_MODE.FORM), columnfilterDataSource: this.dataUnit.name.includes(InMemoryLoader.IN_MEMORY_DATA_UNIT_NAME)
324
281
  ? undefined
325
282
  : this._multiSelectionListDataSource, useEnterLikeTab: this.useEnterLikeTab }, h("div", { slot: "footer" }, h("slot", { name: "snkSimpleCrudFooter" })))), h("stack-item", null, h("ez-form", { dataUnit: this.dataUnit, config: this.formConfig }))))));
326
283
  }
@@ -0,0 +1,11 @@
1
+ import type { Components, JSX } from "../types/components";
2
+
3
+ interface SnkTaskbarCustomElements extends Components.SnkTaskbarCustomElements, HTMLElement {}
4
+ export const SnkTaskbarCustomElements: {
5
+ prototype: SnkTaskbarCustomElements;
6
+ new (): SnkTaskbarCustomElements;
7
+ };
8
+ /**
9
+ * Used to define this component and all nested components recursively.
10
+ */
11
+ export const defineCustomElement: () => void;
@@ -0,0 +1,35 @@
1
+ import { proxyCustomElement, HTMLElement, h, Host } from '@stencil/core/internal/client';
2
+
3
+ const snkTaskbarCss = ".sc-snk-taskbar-custom-elements-h{display:flex}.taskbar-custom-elements-container.sc-snk-taskbar-custom-elements{display:none}";
4
+
5
+ const SnkTaskbarCustomElements$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
6
+ constructor() {
7
+ super();
8
+ this.__registerHost();
9
+ this.slot = 'TASKBAR_CUSTOM_ELEMENTS';
10
+ }
11
+ render() {
12
+ return (h(Host, { slot: this.slot }, h("div", { id: this.slot, class: "taskbar-custom-elements-container" }, h("slot", null))));
13
+ }
14
+ static get style() { return snkTaskbarCss; }
15
+ }, [6, "snk-taskbar-custom-elements", {
16
+ "slot": [1]
17
+ }]);
18
+ function defineCustomElement$1() {
19
+ if (typeof customElements === "undefined") {
20
+ return;
21
+ }
22
+ const components = ["snk-taskbar-custom-elements"];
23
+ components.forEach(tagName => { switch (tagName) {
24
+ case "snk-taskbar-custom-elements":
25
+ if (!customElements.get(tagName)) {
26
+ customElements.define(tagName, SnkTaskbarCustomElements$1);
27
+ }
28
+ break;
29
+ } });
30
+ }
31
+
32
+ const SnkTaskbarCustomElements = SnkTaskbarCustomElements$1;
33
+ const defineCustomElement = defineCustomElement$1;
34
+
35
+ export { SnkTaskbarCustomElements, defineCustomElement };
@@ -105,28 +105,29 @@ const buildElem = (element, className, dataElementId, getTitle, action, isEnable
105
105
  }
106
106
  };
107
107
  function textButton(name, className, dataElementId, text, title, action, isEnabled) {
108
- return h("ez-button", { title: title, label: text, size: "small", class: className, "data-element-id": dataElementId, enabled: isEnabled(name), onClick: () => action(name) });
108
+ return h("ez-button", { key: dataElementId, title: title, label: text, size: "small", class: className, "data-element-id": dataElementId, enabled: isEnabled(name), onClick: () => action(name) });
109
109
  }
110
110
  function iconButton(iconName, name, className, dataElementId, title, action, isEnabled) {
111
- return h("ez-button", { title: title, mode: "icon", size: "small", class: className, "data-element-id": dataElementId, iconName: iconName, enabled: isEnabled(name), onClick: () => action(name) });
111
+ return h("ez-button", { key: dataElementId, title: title, mode: "icon", size: "small", class: className, "data-element-id": dataElementId, iconName: iconName, enabled: isEnabled(name), onClick: () => action(name) });
112
112
  }
113
113
  function iconTextButton(iconName, name, className, dataElementId, text, title, action, isEnabled) {
114
- return h("ez-button", { title: title, label: text, size: "small", class: className, "data-element-id": dataElementId, enabled: isEnabled(name), onClick: () => action(name) },
114
+ return h("ez-button", { key: dataElementId, title: title, label: text, size: "small", class: className, "data-element-id": dataElementId, enabled: isEnabled(name), onClick: () => action(name) },
115
115
  h("ez-icon", { class: "ez-padding-right--small", slot: "leftIcon", iconName: iconName }));
116
116
  }
117
117
  function actionButton(element, className, dataElementId, title, action, isEnabled, actions) {
118
118
  return actions && actions.length > 0
119
- ? h("ez-actions-button", { title: title, size: "small", "data-element-id": dataElementId, arrowActive: true, class: className, enabled: isEnabled(element), onEzAction: (evt) => action(evt.detail.value), actions: actions })
119
+ ? h("ez-actions-button", { key: dataElementId, title: title, size: "small", "data-element-id": dataElementId, arrowActive: true, class: className, enabled: isEnabled(element), onEzAction: (evt) => action(evt.detail.value), actions: actions })
120
120
  : undefined;
121
121
  }
122
122
 
123
- const snkTaskbarCss = ".sc-snk-taskbar-h{display:flex}";
123
+ const snkTaskbarCss = ".sc-snk-taskbar-h{display:flex}.taskbar-custom-elements-container.sc-snk-taskbar{display:none}";
124
124
 
125
125
  const SnkTaskbar = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
126
126
  constructor() {
127
127
  super();
128
128
  this.__registerHost();
129
129
  this.actionClick = createEvent(this, "actionClick", 7);
130
+ this.TASKBAR_ITEM_ID_PREFIX = 'TASKBAR_ITEM_';
130
131
  this._titleKeyByElement = {
131
132
  [TaskbarElement.UPDATE]: "snkTaskbar.titleUpdate",
132
133
  [TaskbarElement.PREVIOUS]: "snkTaskbar.titlePrevious",
@@ -144,7 +145,13 @@ const SnkTaskbar = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
144
145
  [TaskbarElement.ATTACH]: "snkTaskbar.titleAttach",
145
146
  };
146
147
  this._permissions = undefined;
148
+ this._customElements = undefined;
149
+ this._customElementsId = undefined;
150
+ this._slotContainer = undefined;
151
+ this.customSlotId = "TASKBAR_CUSTOM_ELEMENTS";
152
+ this.customContainerId = undefined;
147
153
  this.configName = undefined;
154
+ this.resourceID = undefined;
148
155
  this.buttons = undefined;
149
156
  this.customButtons = undefined;
150
157
  this.actionsList = undefined;
@@ -283,14 +290,52 @@ const SnkTaskbar = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
283
290
  return true;
284
291
  });
285
292
  }
293
+ appendCustomElementsInTaskbar() {
294
+ this._customElementsId.forEach(id => {
295
+ const elementId = id.replace(this.TASKBAR_ITEM_ID_PREFIX, '');
296
+ const customElement = this._customElements.get(elementId);
297
+ const container = this._element.querySelector(`#${id}`);
298
+ if (container) {
299
+ container === null || container === void 0 ? void 0 : container.appendChild(customElement);
300
+ }
301
+ else {
302
+ this.unlinkCustomElementFromTaskbar(customElement);
303
+ }
304
+ });
305
+ }
306
+ addCustomElementContainer(elem) {
307
+ const elementId = `${this.TASKBAR_ITEM_ID_PREFIX}${elem}`;
308
+ if (!this._customElementsId.includes(elementId)) {
309
+ this._customElementsId.push(elementId);
310
+ }
311
+ return h("span", { key: elementId, id: elementId });
312
+ }
313
+ getCustomElements() {
314
+ var _a, _b;
315
+ this._customElementsId = [];
316
+ this._customElements = new Map();
317
+ this._slotContainer = this.buildSlotContainer();
318
+ const customElementsArray = Array.from((_b = (_a = this._slotContainer) === null || _a === void 0 ? void 0 : _a.children) !== null && _b !== void 0 ? _b : []);
319
+ customElementsArray.forEach(item => this._customElements.set(item.id, item));
320
+ }
321
+ buildSlotContainer() {
322
+ if (this.customContainerId) {
323
+ const container = document.querySelector(`#${this.customContainerId}`);
324
+ return container === null || container === void 0 ? void 0 : container.querySelector(`#${this.customSlotId}`);
325
+ }
326
+ else {
327
+ return this._element.querySelector(`#${this.customSlotId}`);
328
+ }
329
+ }
286
330
  componentWillLoad() {
287
331
  this._application = ApplicationContext.getContextValue("__SNK__APPLICATION__");
288
332
  if (this._application) {
289
- this._application.getAllAccess().then(access => this._permissions = access);
333
+ this._application.getAllAccess(this.resourceID).then(access => this._permissions = access);
290
334
  }
291
335
  else {
292
336
  this._permissions = {};
293
337
  }
338
+ this.getCustomElements();
294
339
  }
295
340
  componentWillRender() {
296
341
  if (this._definitions == undefined && this._permissions) {
@@ -302,12 +347,30 @@ const SnkTaskbar = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
302
347
  const dataInfo = { dataUnit: this.dataUnit };
303
348
  ElementIDUtils.addIDInfo(this._element, null, dataInfo);
304
349
  }
350
+ componentDidRender() {
351
+ this.appendCustomElementsInTaskbar();
352
+ }
353
+ disconnectedCallback() {
354
+ this.unlinkAllCustomElements();
355
+ }
356
+ unlinkAllCustomElements() {
357
+ var _a;
358
+ (_a = this._customElementsId) === null || _a === void 0 ? void 0 : _a.forEach(id => {
359
+ const elementId = id.replace(this.TASKBAR_ITEM_ID_PREFIX, '');
360
+ const customElement = this._customElements.get(elementId);
361
+ this.unlinkCustomElementFromTaskbar(customElement);
362
+ });
363
+ }
364
+ unlinkCustomElementFromTaskbar(customElement) {
365
+ this._slotContainer.appendChild(customElement);
366
+ }
305
367
  render() {
306
368
  if (this._definitions === undefined) {
307
369
  return undefined;
308
370
  }
309
371
  let index = 0;
310
372
  return (h(Host, null, this.removeEmpty(this._definitions.map((elem) => {
373
+ var _a;
311
374
  if (elem === TaskbarElement.DIVIDER) {
312
375
  index = 0;
313
376
  }
@@ -317,11 +380,14 @@ const SnkTaskbar = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
317
380
  if (TaskbarElement[elem]) {
318
381
  return this.getElement(index, TaskbarElement[elem]);
319
382
  }
320
- if (this.customButtons.has(elem)) {
383
+ if ((_a = this.customButtons) === null || _a === void 0 ? void 0 : _a.has(elem)) {
321
384
  return this.getElement(index, this.customButtons.get(elem));
322
385
  }
386
+ if (this._customElements.has(elem)) {
387
+ return this.addCustomElementContainer(elem);
388
+ }
323
389
  return h("slot", { name: elem });
324
- }))));
390
+ })), h("div", { class: "taskbar-custom-elements-container" }, h("slot", { name: this.customSlotId }))));
325
391
  }
326
392
  get _element() { return this; }
327
393
  static get watchers() { return {
@@ -329,7 +395,10 @@ const SnkTaskbar = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
329
395
  }; }
330
396
  static get style() { return snkTaskbarCss; }
331
397
  }, [6, "snk-taskbar", {
398
+ "customSlotId": [1, "custom-slot-id"],
399
+ "customContainerId": [1, "custom-container-id"],
332
400
  "configName": [1, "config-name"],
401
+ "resourceID": [1, "resource-i-d"],
333
402
  "buttons": [1],
334
403
  "customButtons": [16],
335
404
  "actionsList": [16],
@@ -338,7 +407,10 @@ const SnkTaskbar = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
338
407
  "dataUnit": [16],
339
408
  "presentationMode": [1537, "presentation-mode"],
340
409
  "messagesBuilder": [1040],
341
- "_permissions": [32]
410
+ "_permissions": [32],
411
+ "_customElements": [32],
412
+ "_customElementsId": [32],
413
+ "_slotContainer": [32]
342
414
  }]);
343
415
  function defineCustomElement() {
344
416
  if (typeof customElements === "undefined") {