@sankhyalabs/sankhyablocks 0.0.0-bugfix-dev-KB-131882.2 → 0.0.0-bugfix-dev-KB-174860.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (443) hide show
  1. package/LICENSE +4 -1
  2. package/dist/cjs/{ConfigStorage-d9d24844.js → ConfigStorage-156bfcac.js} +19 -2
  3. package/dist/cjs/ContinuousInsertUtils-1ae0c6ac.js +41 -0
  4. package/dist/cjs/{DataFetcher-3a8ea521.js → DataFetcher-d13b4637.js} +2803 -2
  5. package/dist/cjs/FormConfigHelper-c5f5473a.js +342 -0
  6. package/dist/cjs/{ISave-a66bb65e.js → ISave-55d9dcc3.js} +1 -1
  7. package/dist/cjs/{ImageUtils-5e3f406b.js → ImageUtils-d6139911.js} +5 -3
  8. package/dist/cjs/{PersonalizedFilterUtils-eccb267a.js → PersonalizedFilterUtils-263e4d24.js} +52 -5
  9. package/dist/cjs/{SnkFormConfigManager-c88cf1e9.js → SnkFormConfigManager-5cb9a39c.js} +2 -2
  10. package/dist/cjs/{SnkMultiSelectionListDataSource-f53b60c4.js → SnkMultiSelectionListDataSource-5c5badfc.js} +146 -74
  11. package/dist/cjs/{auth-fetcher-faa61f64.js → auth-fetcher-d1715459.js} +1 -1
  12. package/dist/cjs/{dataunit-fetcher-6febd6c4.js → dataunit-fetcher-fae710c5.js} +68 -110
  13. package/dist/cjs/fields-layout.cjs.entry.js +1 -1
  14. package/dist/cjs/fields-selector.cjs.entry.js +1 -1
  15. package/dist/cjs/{filter-type.enum-2bb46d2a.js → filter-type.enum-b3b388af.js} +7 -0
  16. package/dist/cjs/{form-config-fetcher-72cf0e3d.js → form-config-fetcher-bbebdcb8.js} +41 -5
  17. package/dist/cjs/guides-configurator.cjs.entry.js +2 -2
  18. package/dist/cjs/index-1894343a.js +28 -40
  19. package/dist/cjs/{index-e3e39724.js → index-bc950921.js} +6 -0
  20. package/dist/cjs/loader.cjs.js +1 -1
  21. package/dist/cjs/pesquisa-grid_2.cjs.entry.js +5 -6
  22. package/dist/cjs/sankhyablocks.cjs.js +1 -1
  23. package/dist/cjs/{snk-actions-button_8.cjs.entry.js → snk-actions-button_9.cjs.entry.js} +151 -63
  24. package/dist/cjs/snk-application.cjs.entry.js +8 -9
  25. package/dist/cjs/snk-attach_11.cjs.entry.js +2958 -0
  26. package/dist/cjs/snk-configurator.cjs.entry.js +2 -0
  27. package/dist/cjs/snk-crud.cjs.entry.js +140 -99
  28. package/dist/cjs/snk-data-exporter.cjs.entry.js +61 -16
  29. package/dist/cjs/{snk-data-unit-94757628.js → snk-data-unit-32237a2d.js} +11 -11
  30. package/dist/cjs/snk-data-unit.cjs.entry.js +3 -4
  31. package/dist/cjs/snk-detail-view.cjs.entry.js +28 -20
  32. package/dist/cjs/snk-dynaform-config-header_5.cjs.entry.js +739 -0
  33. package/dist/cjs/snk-dynaform-detail-view_2.cjs.entry.js +961 -0
  34. package/dist/cjs/snk-dynaform-field-config_2.cjs.entry.js +327 -0
  35. package/dist/cjs/snk-dynaform-guides-view-2c7c6ce4.js +1094 -0
  36. package/dist/cjs/snk-dynaform-guides-view.cjs.entry.js +23 -0
  37. package/dist/cjs/snk-dynaform.cjs.entry.js +679 -0
  38. package/dist/cjs/snk-entity-search.cjs.entry.js +211 -0
  39. package/dist/cjs/snk-exporter-email-sender.cjs.entry.js +1 -1
  40. package/dist/cjs/{snk-expression-group_2.cjs.entry.js → snk-expression-group_4.cjs.entry.js} +421 -18
  41. package/dist/cjs/snk-filter-bar_4.cjs.entry.js +137 -121
  42. package/dist/cjs/snk-filter-search.cjs.entry.js +10 -0
  43. package/dist/cjs/snk-form-view.cjs.entry.js +1 -4
  44. package/dist/cjs/snk-form_2.cjs.entry.js +4 -5
  45. package/dist/cjs/snk-grid.cjs.entry.js +53 -21
  46. package/dist/cjs/{snk-guides-viewer-315f8580.js → snk-guides-viewer-67b9cca9.js} +38 -161
  47. package/dist/cjs/snk-guides-viewer.cjs.entry.js +8 -17
  48. package/dist/cjs/snk-layout-form-config.cjs.entry.js +5 -6
  49. package/dist/cjs/snk-pesquisa.cjs.entry.js +5 -6
  50. package/dist/cjs/snk-taskbar.cjs.entry.js +182 -125
  51. package/dist/cjs/{sortable.esm-9a110bb7.js → sortable.esm-b87669ab.js} +76 -90
  52. package/dist/cjs/taskbar-elements-25f800b3.js +152 -0
  53. package/dist/cjs/taskbarUtils-99aaa01f.js +236 -0
  54. package/dist/collection/collection-manifest.json +19 -0
  55. package/dist/collection/components/snk-actions-button/actions/executor/launch-screen.executor.js +6 -3
  56. package/dist/collection/components/snk-actions-button/snk-actions-button.js +30 -6
  57. package/dist/collection/components/snk-attach/snk-attach.css +29 -7
  58. package/dist/collection/components/snk-attach/snk-attach.js +93 -18
  59. package/dist/collection/components/snk-configurator/snk-configurator.js +2 -0
  60. package/dist/collection/components/snk-crud/snk-crud.css +55 -0
  61. package/dist/collection/components/snk-crud/snk-crud.js +147 -94
  62. package/dist/collection/components/snk-crud/subcomponents/snk-detail-view/snk-detail-view.css +4 -1
  63. package/dist/collection/components/snk-crud/subcomponents/snk-detail-view/snk-detail-view.js +18 -7
  64. package/dist/collection/components/snk-crud/subcomponents/snk-entity-search.css +17 -0
  65. package/dist/collection/components/snk-crud/subcomponents/snk-entity-search.js +330 -0
  66. package/dist/collection/components/snk-crud/subcomponents/snk-form-view.js +0 -3
  67. package/dist/collection/components/snk-crud/subcomponents/snk-guides-viewer.css +22 -8
  68. package/dist/collection/components/snk-crud/subcomponents/snk-guides-viewer.js +36 -152
  69. package/dist/collection/components/snk-crud/utils/taskbarUtils.js +163 -0
  70. package/dist/collection/components/snk-data-exporter/exporter-email-sender/snk-exporter-email-sender.js +1 -1
  71. package/dist/collection/components/snk-data-exporter/exporter-strategy/ClientSideExporterStrategy.js +2 -2
  72. package/dist/collection/components/snk-data-exporter/interfaces/IExporterProvider.js +78 -23
  73. package/dist/collection/components/snk-data-exporter/snk-data-exporter.js +28 -5
  74. package/dist/collection/components/snk-data-exporter/structure/ItemBuilder.js +43 -2
  75. package/dist/collection/components/snk-dynaform/interfaces/PropsCustomEditor.js +1 -0
  76. package/dist/collection/components/snk-dynaform/interfaces/PropsCustomRender.js +1 -0
  77. package/dist/collection/components/snk-dynaform/snk-dynaform.css +69 -0
  78. package/dist/collection/components/snk-dynaform/snk-dynaform.js +1661 -0
  79. package/dist/collection/components/snk-dynaform/subcomponents/CardFormResizeObserver.js +26 -0
  80. package/dist/collection/components/snk-dynaform/subcomponents/GuideBuilder.js +51 -0
  81. package/dist/collection/components/snk-dynaform/subcomponents/snk-dynaform-detail-view/snk-dynaform-detail-view.css +182 -0
  82. package/dist/collection/components/snk-dynaform/subcomponents/snk-dynaform-detail-view/snk-dynaform-detail-view.js +1015 -0
  83. package/dist/collection/components/snk-dynaform/subcomponents/snk-dynaform-form-view/snk-dynaform-form-view.css +98 -0
  84. package/dist/collection/components/snk-dynaform/subcomponents/snk-dynaform-form-view/snk-dynaform-form-view.js +590 -0
  85. package/dist/collection/components/snk-dynaform/subcomponents/snk-dynaform-guides-view/snk-dynaform-guides-view.css +321 -0
  86. package/dist/collection/components/snk-dynaform/subcomponents/snk-dynaform-guides-view/snk-dynaform-guides-view.js +1587 -0
  87. package/dist/collection/components/snk-dynaform-form-config/FormConfigHelper.js +325 -0
  88. package/dist/collection/components/snk-dynaform-form-config/SnkFormConfigManager.js +219 -0
  89. package/dist/collection/components/snk-dynaform-form-config/snk-dynaform-config-header/snk-dynaform-config-header.css +17 -0
  90. package/dist/collection/components/snk-dynaform-form-config/snk-dynaform-config-header/snk-dynaform-config-header.js +236 -0
  91. package/dist/collection/components/snk-dynaform-form-config/snk-dynaform-config-header/snk-dynaform-configs-button/snk-dynaform-configs-button.css +41 -0
  92. package/dist/collection/components/snk-dynaform-form-config/snk-dynaform-config-header/snk-dynaform-configs-button/snk-dynaform-configs-button.js +170 -0
  93. package/dist/collection/components/snk-dynaform-form-config/snk-dynaform-field-item/snk-dynaform-field-config/snk-dynaform-field-config.css +22 -0
  94. package/dist/collection/components/snk-dynaform-form-config/snk-dynaform-field-item/snk-dynaform-field-config/snk-dynaform-field-config.js +408 -0
  95. package/dist/collection/components/snk-dynaform-form-config/snk-dynaform-field-item/snk-dynaform-field-item.css +88 -0
  96. package/dist/collection/components/snk-dynaform-form-config/snk-dynaform-field-item/snk-dynaform-field-item.js +209 -0
  97. package/dist/collection/components/snk-dynaform-form-config/snk-dynaform-fields-layout/snk-dynaform-fields-layout.css +167 -0
  98. package/dist/collection/components/snk-dynaform-form-config/snk-dynaform-fields-layout/snk-dynaform-fields-layout.js +655 -0
  99. package/dist/collection/components/snk-dynaform-form-config/snk-dynaform-fields-selector/snk-dynaform-fields-selector.css +42 -0
  100. package/dist/collection/components/snk-dynaform-form-config/snk-dynaform-fields-selector/snk-dynaform-fields-selector.js +171 -0
  101. package/dist/collection/components/snk-dynaform-form-config/snk-dynaform-form-config.css +66 -0
  102. package/dist/collection/components/snk-dynaform-form-config/snk-dynaform-form-config.js +557 -0
  103. package/dist/collection/components/snk-dynaform-form-config/snk-dynaform-guides-configurator/snk-dynaform-guides-configurator.css +80 -0
  104. package/dist/collection/components/snk-dynaform-form-config/snk-dynaform-guides-configurator/snk-dynaform-guides-configurator.js +326 -0
  105. package/dist/collection/components/snk-filter-bar/filter-item/editors/snk-filter-search.js +30 -0
  106. package/dist/collection/components/snk-filter-bar/filter-item/snk-filter-detail.js +9 -3
  107. package/dist/collection/components/snk-filter-bar/filter-item/snk-filter-item.css +2 -2
  108. package/dist/collection/components/snk-filter-bar/filter-item/snk-filter-item.js +24 -4
  109. package/dist/collection/components/snk-filter-bar/filter-modal/snk-filter-modal.css +6 -1
  110. package/dist/collection/components/snk-filter-bar/filter-modal/snk-filter-modal.js +8 -5
  111. package/dist/collection/components/snk-filter-bar/snk-filter-bar.css +1 -6
  112. package/dist/collection/components/snk-filter-bar/snk-filter-bar.js +148 -77
  113. package/dist/collection/components/snk-form-config/guides-configurator/guides-configurator.css +0 -1
  114. package/dist/collection/components/snk-grid/snk-grid.css +21 -5
  115. package/dist/collection/components/snk-grid/snk-grid.js +161 -7
  116. package/dist/collection/components/snk-grid-config/snk-grid-config.js +111 -44
  117. package/dist/collection/components/snk-image-input/snk-image-input.js +15 -3
  118. package/dist/collection/components/snk-image-input/utils/ImageUtils.js +5 -3
  119. package/dist/collection/components/snk-personalized-filter/snk-personalized-filter.js +1 -1
  120. package/dist/collection/components/snk-taskbar/elements/taskbar-actions-button/taskbar-actions-button.css +8 -0
  121. package/dist/collection/components/snk-taskbar/elements/taskbar-actions-button/taskbar-actions-button.js +38 -2
  122. package/dist/collection/components/snk-taskbar/elements/taskbar-elements.js +51 -35
  123. package/dist/collection/components/snk-taskbar/elements/taskbar-split-button/taskbar-split-button.js +27 -1
  124. package/dist/collection/components/snk-taskbar/processor/simple-taskbar-processor.js +55 -0
  125. package/dist/collection/components/snk-taskbar/snk-taskbar.css +44 -1
  126. package/dist/collection/components/snk-taskbar/snk-taskbar.js +248 -132
  127. package/dist/collection/components/snk-taskbar/subcomponents/snk-taskbar-skeleton.css +12 -0
  128. package/dist/collection/components/snk-taskbar/subcomponents/snk-taskbar-skeleton.js +19 -0
  129. package/dist/collection/lib/@types/index.js +6 -0
  130. package/dist/collection/lib/configs/ConfigStorage.js +5 -0
  131. package/dist/collection/lib/http/data-fetcher/fetchers/data-unit/DataUnitDataLoader.js +1 -1
  132. package/dist/collection/lib/http/data-fetcher/fetchers/data-unit/cache/PreloadManager.js +51 -4
  133. package/dist/collection/lib/http/data-fetcher/fetchers/data-unit/helpers/DataUnitDataLoaderHelper.js +15 -104
  134. package/dist/collection/lib/http/data-fetcher/fetchers/form-config-fetcher.js +22 -4
  135. package/dist/collection/lib/http/data-fetcher/fetchers/grid-config-fetcher.js +12 -0
  136. package/dist/collection/lib/http/data-fetcher/fetchers/resource-fetcher.js +18 -0
  137. package/dist/collection/lib/message/resources/en-us/dataUnitDataLoaderHelper.msg.js +0 -13
  138. package/dist/collection/lib/message/resources/en-us/snk-crud.msg.js +12 -0
  139. package/dist/collection/lib/message/resources/es-es/dataUnitDataLoaderHelper.msg.js +0 -13
  140. package/dist/collection/lib/message/resources/es-es/snk-crud.msg.js +12 -0
  141. package/dist/collection/lib/message/resources/pt-br/dataUnitDataLoaderHelper.msg.js +0 -13
  142. package/dist/collection/lib/message/resources/pt-br/snk-crud.msg.js +12 -0
  143. package/dist/collection/lib/utils/CrudUtils.js +7 -4
  144. package/dist/components/ConfigStorage.js +17 -0
  145. package/dist/components/ContinuousInsertUtils.js +86 -28
  146. package/dist/components/ISave.js +6 -0
  147. package/dist/components/SnkMessageBuilder.js +36 -39
  148. package/dist/components/dataunit-fetcher.js +67 -109
  149. package/dist/components/form-config-fetcher.js +40 -4
  150. package/dist/components/guides-configurator2.js +1 -1
  151. package/dist/components/index.d.ts +14 -0
  152. package/dist/components/index.js +14 -0
  153. package/dist/components/snk-actions-button2.js +15 -9
  154. package/dist/components/snk-attach2.js +67 -26
  155. package/dist/components/snk-configurator2.js +2 -0
  156. package/dist/components/snk-crud.js +229 -175
  157. package/dist/components/snk-data-exporter2.js +56 -9
  158. package/dist/components/snk-detail-view2.js +174 -267
  159. package/dist/components/snk-dynaform-config-header.d.ts +11 -0
  160. package/dist/components/snk-dynaform-config-header.js +6 -0
  161. package/dist/components/snk-dynaform-config-header2.js +103 -0
  162. package/dist/components/snk-dynaform-configs-button.d.ts +11 -0
  163. package/dist/components/snk-dynaform-configs-button.js +6 -0
  164. package/dist/components/snk-dynaform-configs-button2.js +76 -0
  165. package/dist/components/snk-dynaform-detail-view.d.ts +11 -0
  166. package/dist/components/snk-dynaform-detail-view.js +6 -0
  167. package/dist/components/snk-dynaform-detail-view2.js +2213 -0
  168. package/dist/components/snk-dynaform-field-config.d.ts +11 -0
  169. package/dist/components/snk-dynaform-field-config.js +6 -0
  170. package/dist/components/snk-dynaform-field-config2.js +605 -0
  171. package/dist/components/snk-dynaform-field-item.d.ts +11 -0
  172. package/dist/components/snk-dynaform-field-item.js +6 -0
  173. package/dist/components/snk-dynaform-field-item2.js +96 -0
  174. package/dist/components/snk-dynaform-fields-layout.d.ts +11 -0
  175. package/dist/components/snk-dynaform-fields-layout.js +6 -0
  176. package/dist/components/snk-dynaform-fields-layout2.js +428 -0
  177. package/dist/components/snk-dynaform-fields-selector.d.ts +11 -0
  178. package/dist/components/snk-dynaform-fields-selector.js +6 -0
  179. package/dist/components/snk-dynaform-fields-selector2.js +104 -0
  180. package/dist/components/snk-dynaform-form-config.d.ts +11 -0
  181. package/dist/components/snk-dynaform-form-config.js +6 -0
  182. package/dist/components/snk-dynaform-form-config2.js +430 -0
  183. package/dist/components/snk-dynaform-form-view.d.ts +11 -0
  184. package/dist/components/snk-dynaform-form-view.js +6 -0
  185. package/dist/components/snk-dynaform-form-view2.js +272 -0
  186. package/dist/components/snk-dynaform-guides-configurator.d.ts +11 -0
  187. package/dist/components/snk-dynaform-guides-configurator.js +6 -0
  188. package/dist/components/snk-dynaform-guides-configurator2.js +173 -0
  189. package/dist/components/snk-dynaform-guides-view.d.ts +11 -0
  190. package/dist/components/snk-dynaform-guides-view.js +6 -0
  191. package/dist/components/snk-dynaform.d.ts +11 -0
  192. package/dist/components/snk-dynaform.js +1007 -0
  193. package/dist/components/snk-entity-search.d.ts +11 -0
  194. package/dist/components/snk-entity-search.js +6 -0
  195. package/dist/components/snk-entity-search2.js +231 -0
  196. package/dist/components/snk-exporter-email-sender2.js +1 -1
  197. package/dist/components/snk-filter-bar2.js +98 -79
  198. package/dist/components/snk-filter-detail2.js +9 -3
  199. package/dist/components/snk-filter-item2.js +5 -5
  200. package/dist/components/snk-filter-modal2.js +8 -5
  201. package/dist/components/snk-filter-search.js +12 -1
  202. package/dist/components/snk-form-view2.js +0 -3
  203. package/dist/components/snk-grid-config2.js +92 -44
  204. package/dist/components/snk-grid2.js +95 -50
  205. package/dist/components/snk-image-input2.js +20 -6
  206. package/dist/components/snk-personalized-filter2.js +1 -1
  207. package/dist/components/snk-simple-crud2.js +29 -23
  208. package/dist/components/snk-taskbar-skeleton.d.ts +11 -0
  209. package/dist/components/snk-taskbar-skeleton.js +6 -0
  210. package/dist/components/snk-taskbar-skeleton2.js +29 -0
  211. package/dist/components/snk-taskbar2.js +253 -174
  212. package/dist/components/sortable.esm.js +76 -90
  213. package/dist/components/taskbar-actions-button2.js +21 -2
  214. package/dist/components/taskbar-split-button2.js +10 -1
  215. package/dist/components/taskbarUtils.js +229 -0
  216. package/dist/esm/{ConfigStorage-d15d2014.js → ConfigStorage-0d1c0695.js} +19 -2
  217. package/dist/esm/ContinuousInsertUtils-bce77dc1.js +39 -0
  218. package/dist/esm/{DataFetcher-1dd7e8c0.js → DataFetcher-70de9419.js} +2803 -3
  219. package/dist/esm/FormConfigHelper-efc29480.js +328 -0
  220. package/dist/esm/{ISave-498c4831.js → ISave-f5704813.js} +1 -1
  221. package/dist/esm/{ImageUtils-8fc8d905.js → ImageUtils-efbea0e4.js} +5 -3
  222. package/dist/esm/{PersonalizedFilterUtils-d2439a9a.js → PersonalizedFilterUtils-45b5803c.js} +49 -2
  223. package/dist/esm/{SnkFormConfigManager-86befa68.js → SnkFormConfigManager-e7f05f79.js} +2 -2
  224. package/dist/esm/{SnkMultiSelectionListDataSource-6e9496f0.js → SnkMultiSelectionListDataSource-6ac291a9.js} +141 -69
  225. package/dist/esm/{auth-fetcher-69cbda8d.js → auth-fetcher-e34880e5.js} +1 -1
  226. package/dist/esm/{dataunit-fetcher-21c43ec7.js → dataunit-fetcher-d26e4a08.js} +68 -110
  227. package/dist/esm/fields-layout.entry.js +1 -1
  228. package/dist/esm/fields-selector.entry.js +1 -1
  229. package/dist/esm/{filter-type.enum-f6a8fe23.js → filter-type.enum-62b7fe88.js} +8 -1
  230. package/dist/esm/{form-config-fetcher-fcc7b62f.js → form-config-fetcher-98c42169.js} +41 -5
  231. package/dist/esm/guides-configurator.entry.js +2 -2
  232. package/dist/esm/index-04f73a26.js +28 -40
  233. package/dist/esm/{index-b40568ff.js → index-c6721886.js} +6 -0
  234. package/dist/esm/loader.js +1 -1
  235. package/dist/esm/pesquisa-grid_2.entry.js +5 -6
  236. package/dist/esm/sankhyablocks.js +1 -1
  237. package/dist/esm/{snk-actions-button_8.entry.js → snk-actions-button_9.entry.js} +152 -65
  238. package/dist/esm/snk-application.entry.js +7 -8
  239. package/dist/esm/snk-attach_11.entry.js +2944 -0
  240. package/dist/esm/snk-configurator.entry.js +2 -0
  241. package/dist/esm/snk-crud.entry.js +140 -99
  242. package/dist/esm/snk-data-exporter.entry.js +61 -16
  243. package/dist/esm/{snk-data-unit-3b06a0f3.js → snk-data-unit-ff57ac90.js} +2 -2
  244. package/dist/esm/snk-data-unit.entry.js +3 -4
  245. package/dist/esm/snk-detail-view.entry.js +26 -18
  246. package/dist/esm/snk-dynaform-config-header_5.entry.js +731 -0
  247. package/dist/esm/snk-dynaform-detail-view_2.entry.js +956 -0
  248. package/dist/esm/snk-dynaform-field-config_2.entry.js +322 -0
  249. package/dist/esm/snk-dynaform-guides-view-0dfbefc1.js +1091 -0
  250. package/dist/esm/snk-dynaform-guides-view.entry.js +15 -0
  251. package/dist/esm/snk-dynaform.entry.js +675 -0
  252. package/dist/esm/snk-entity-search.entry.js +207 -0
  253. package/dist/esm/snk-exporter-email-sender.entry.js +1 -1
  254. package/dist/esm/{snk-expression-group_2.entry.js → snk-expression-group_4.entry.js} +405 -4
  255. package/dist/esm/snk-filter-bar_4.entry.js +112 -96
  256. package/dist/esm/snk-filter-search.entry.js +10 -0
  257. package/dist/esm/snk-form-view.entry.js +1 -4
  258. package/dist/esm/snk-form_2.entry.js +4 -5
  259. package/dist/esm/snk-grid.entry.js +50 -18
  260. package/dist/esm/{snk-guides-viewer-a4e31f63.js → snk-guides-viewer-31a0a23d.js} +39 -162
  261. package/dist/esm/snk-guides-viewer.entry.js +8 -17
  262. package/dist/esm/snk-layout-form-config.entry.js +5 -6
  263. package/dist/esm/snk-pesquisa.entry.js +5 -6
  264. package/dist/esm/snk-taskbar.entry.js +183 -126
  265. package/dist/esm/{sortable.esm-842f85a3.js → sortable.esm-bc277c12.js} +76 -90
  266. package/dist/esm/taskbar-elements-ba9d6889.js +149 -0
  267. package/dist/esm/taskbarUtils-cb9db0d9.js +230 -0
  268. package/dist/sankhyablocks/{p-32ad76cc.js → p-097d75b3.js} +2 -2
  269. package/dist/sankhyablocks/p-0dbd53d9.js +1 -0
  270. package/dist/sankhyablocks/p-12579574.entry.js +1 -0
  271. package/dist/sankhyablocks/p-1d31aec3.entry.js +1 -0
  272. package/dist/sankhyablocks/{p-2cc2526e.entry.js → p-1d7d5814.entry.js} +1 -1
  273. package/dist/sankhyablocks/p-24b059ee.entry.js +1 -0
  274. package/dist/sankhyablocks/p-250b273e.entry.js +1 -0
  275. package/dist/sankhyablocks/p-26f1919e.entry.js +1 -0
  276. package/dist/sankhyablocks/p-2a83f20e.entry.js +1 -0
  277. package/dist/sankhyablocks/p-2c4f7fdd.entry.js +1 -0
  278. package/dist/sankhyablocks/p-2ec98523.js +1 -0
  279. package/dist/sankhyablocks/p-449dfe55.entry.js +1 -0
  280. package/dist/sankhyablocks/p-46d7e2de.js +1 -0
  281. package/dist/sankhyablocks/p-4dd574d6.js +1 -0
  282. package/dist/sankhyablocks/p-541c72ec.entry.js +1 -0
  283. package/dist/sankhyablocks/p-58709cf9.js +1 -0
  284. package/dist/sankhyablocks/p-5aeae67f.js +1 -0
  285. package/dist/sankhyablocks/p-5d50f59a.entry.js +1 -0
  286. package/dist/sankhyablocks/p-5ef0e9a8.entry.js +1 -0
  287. package/dist/sankhyablocks/p-6d3bcabf.entry.js +1 -0
  288. package/dist/sankhyablocks/p-6f60df43.js +1 -0
  289. package/dist/sankhyablocks/p-846d8f79.entry.js +1 -0
  290. package/dist/sankhyablocks/{p-e30acdca.entry.js → p-855ccf64.entry.js} +1 -1
  291. package/dist/sankhyablocks/p-885262ce.entry.js +1 -0
  292. package/dist/sankhyablocks/p-8d1ef77a.js +60 -0
  293. package/dist/sankhyablocks/{p-9114e869.js → p-8d81c8d3.js} +2 -2
  294. package/dist/sankhyablocks/p-8f5dd87d.entry.js +1 -0
  295. package/dist/sankhyablocks/p-90037547.js +1 -0
  296. package/dist/sankhyablocks/{p-7150eacf.entry.js → p-9742ea0e.entry.js} +1 -1
  297. package/dist/sankhyablocks/p-9e02a785.js +1 -0
  298. package/dist/sankhyablocks/{p-6564180d.entry.js → p-9e7dc97d.entry.js} +1 -1
  299. package/dist/sankhyablocks/p-a25ab2ff.entry.js +1 -0
  300. package/dist/sankhyablocks/p-a696bbcd.entry.js +1 -0
  301. package/dist/sankhyablocks/{p-88b0797e.entry.js → p-a9012341.entry.js} +2 -2
  302. package/dist/sankhyablocks/p-abcb646d.js +1 -0
  303. package/dist/sankhyablocks/{p-4ff3b494.js → p-af673291.js} +1 -1
  304. package/dist/sankhyablocks/p-bd2a845c.js +1 -0
  305. package/dist/sankhyablocks/p-c4b34e2b.entry.js +1 -0
  306. package/dist/sankhyablocks/{p-7e9f8fa4.js → p-c9440c8a.js} +1 -1
  307. package/dist/sankhyablocks/p-ca3728c0.entry.js +1 -0
  308. package/dist/sankhyablocks/p-cbb8e351.js +7 -0
  309. package/dist/sankhyablocks/p-cd153f71.entry.js +1 -0
  310. package/dist/sankhyablocks/p-ce8ccd72.entry.js +1 -0
  311. package/dist/sankhyablocks/p-ddb160eb.entry.js +1 -0
  312. package/dist/sankhyablocks/p-e5a3711f.js +1 -0
  313. package/dist/sankhyablocks/{p-2b882835.entry.js → p-e737fd5a.entry.js} +1 -1
  314. package/dist/sankhyablocks/{p-362e6e8c.js → p-eac48627.js} +1 -1
  315. package/dist/sankhyablocks/p-ec7c87bb.js +28 -0
  316. package/dist/sankhyablocks/p-fb6e3c65.entry.js +1 -0
  317. package/dist/sankhyablocks/sankhyablocks.esm.js +1 -1
  318. package/dist/types/components/snk-actions-button/snk-actions-button.d.ts +4 -0
  319. package/dist/types/components/snk-attach/snk-attach.d.ts +22 -4
  320. package/dist/types/components/snk-crud/snk-crud.d.ts +28 -10
  321. package/dist/types/components/snk-crud/subcomponents/snk-detail-view/snk-detail-view.d.ts +3 -2
  322. package/dist/types/components/snk-crud/subcomponents/snk-entity-search.d.ts +62 -0
  323. package/dist/types/components/snk-crud/subcomponents/snk-guides-viewer.d.ts +4 -18
  324. package/dist/types/components/snk-crud/utils/taskbarUtils.d.ts +13 -0
  325. package/dist/types/components/snk-data-exporter/interfaces/IExporterProvider.d.ts +8 -0
  326. package/dist/types/components/snk-data-exporter/snk-data-exporter.d.ts +4 -0
  327. package/dist/types/components/snk-data-exporter/structure/ItemBuilder.d.ts +16 -0
  328. package/dist/types/components/snk-dynaform/interfaces/PropsCustomEditor.d.ts +4 -0
  329. package/dist/types/components/snk-dynaform/interfaces/PropsCustomRender.d.ts +4 -0
  330. package/dist/types/components/snk-dynaform/subcomponents/CardFormResizeObserver.d.ts +1 -0
  331. package/dist/types/components/snk-dynaform/subcomponents/GuideBuilder.d.ts +14 -0
  332. package/dist/types/components/snk-dynaform/subcomponents/snk-dynaform-detail-view/snk-dynaform-detail-view.d.ts +169 -0
  333. package/dist/types/components/snk-dynaform/subcomponents/snk-dynaform-form-view/snk-dynaform-form-view.d.ts +108 -0
  334. package/dist/types/components/snk-dynaform-form-config/FormConfigHelper.d.ts +36 -0
  335. package/dist/types/components/snk-dynaform-form-config/SnkFormConfigManager.d.ts +35 -0
  336. package/dist/types/components/snk-dynaform-form-config/snk-dynaform-config-header/snk-dynaform-config-header.d.ts +23 -0
  337. package/dist/types/components/snk-dynaform-form-config/snk-dynaform-config-header/snk-dynaform-configs-button/snk-dynaform-configs-button.d.ts +19 -0
  338. package/dist/types/components/snk-dynaform-form-config/snk-dynaform-field-item/snk-dynaform-field-config/snk-dynaform-field-config.d.ts +56 -0
  339. package/dist/types/components/snk-dynaform-form-config/snk-dynaform-fields-layout/snk-dynaform-fields-layout.d.ts +74 -0
  340. package/dist/types/components/snk-dynaform-form-config/snk-dynaform-fields-selector/snk-dynaform-fields-selector.d.ts +21 -0
  341. package/dist/types/components/snk-dynaform-form-config/snk-dynaform-form-config.d.ts +95 -0
  342. package/dist/types/components/snk-dynaform-form-config/snk-dynaform-guides-configurator/snk-dynaform-guides-configurator.d.ts +35 -0
  343. package/dist/types/components/snk-filter-bar/filter-item/editors/snk-filter-search.d.ts +1 -0
  344. package/dist/types/components/snk-filter-bar/filter-item/snk-filter-detail.d.ts +1 -1
  345. package/dist/types/components/snk-filter-bar/filter-item/snk-filter-item.d.ts +5 -1
  346. package/dist/types/components/snk-filter-bar/snk-filter-bar.d.ts +33 -16
  347. package/dist/types/components/snk-grid/snk-grid.d.ts +29 -1
  348. package/dist/types/components/snk-grid-config/snk-grid-config.d.ts +7 -0
  349. package/dist/types/components/snk-image-input/snk-image-input.d.ts +1 -0
  350. package/dist/types/components/snk-image-input/utils/ImageUtils.d.ts +1 -1
  351. package/dist/types/components/snk-taskbar/elements/taskbar-actions-button/taskbar-actions-button.d.ts +6 -0
  352. package/dist/types/components/snk-taskbar/elements/taskbar-elements.d.ts +29 -2
  353. package/dist/types/components/snk-taskbar/elements/taskbar-split-button/taskbar-split-button.d.ts +5 -0
  354. package/dist/types/components/snk-taskbar/processor/simple-taskbar-processor.d.ts +31 -0
  355. package/dist/types/components/snk-taskbar/snk-taskbar.d.ts +32 -21
  356. package/dist/types/components/snk-taskbar/subcomponents/snk-taskbar-skeleton.d.ts +3 -0
  357. package/dist/types/components.d.ts +2503 -1188
  358. package/dist/types/lib/@types/index.d.ts +6 -0
  359. package/dist/types/lib/configs/ConfigStorage.d.ts +1 -0
  360. package/dist/types/lib/http/data-fetcher/fetchers/data-unit/cache/PreloadManager.d.ts +1 -0
  361. package/dist/types/lib/http/data-fetcher/fetchers/data-unit/helpers/DataUnitDataLoaderHelper.d.ts +3 -1
  362. package/dist/types/lib/http/data-fetcher/fetchers/fetchDataExporter/interfaces/IFetchDataExporterParams.d.ts +2 -0
  363. package/dist/types/lib/http/data-fetcher/fetchers/form-config-fetcher.d.ts +1 -0
  364. package/dist/types/lib/http/data-fetcher/fetchers/grid-config-fetcher.d.ts +1 -0
  365. package/dist/types/lib/http/data-fetcher/fetchers/resource-fetcher.d.ts +1 -0
  366. package/package.json +11 -8
  367. package/react/components.d.ts +14 -0
  368. package/react/components.js +14 -0
  369. package/react/components.js.map +1 -1
  370. package/dist/cjs/SnkMessageBuilder-d9558dba.js +0 -2809
  371. package/dist/cjs/default-filters-a09bf82b.js +0 -8
  372. package/dist/cjs/index-62760a9c.js +0 -49
  373. package/dist/cjs/index-8d94b7e0.js +0 -7
  374. package/dist/cjs/snk-attach.cjs.entry.js +0 -911
  375. package/dist/cjs/snk-default-filter.cjs.entry.js +0 -77
  376. package/dist/cjs/snk-filter-advanced-mode_2.cjs.entry.js +0 -61
  377. package/dist/cjs/snk-filter-detail.cjs.entry.js +0 -198
  378. package/dist/cjs/snk-filter-field-search_2.cjs.entry.js +0 -408
  379. package/dist/cjs/snk-filter-modal-item.cjs.entry.js +0 -109
  380. package/dist/cjs/snk-image-input.cjs.entry.js +0 -148
  381. package/dist/cjs/snk-personalized-filter.cjs.entry.js +0 -358
  382. package/dist/cjs/snk-simple-bar.cjs.entry.js +0 -45
  383. package/dist/cjs/snk-simple-crud.cjs.entry.js +0 -865
  384. package/dist/cjs/taskbar-elements-a94d4318.js +0 -133
  385. package/dist/cjs/taskbar-processor-2fba34a8.js +0 -53
  386. package/dist/esm/SnkMessageBuilder-c0bc4424.js +0 -2807
  387. package/dist/esm/default-filters-50105e43.js +0 -8
  388. package/dist/esm/index-620ac460.js +0 -7
  389. package/dist/esm/index-8acbae97.js +0 -49
  390. package/dist/esm/snk-attach.entry.js +0 -907
  391. package/dist/esm/snk-default-filter.entry.js +0 -73
  392. package/dist/esm/snk-filter-advanced-mode_2.entry.js +0 -56
  393. package/dist/esm/snk-filter-detail.entry.js +0 -194
  394. package/dist/esm/snk-filter-field-search_2.entry.js +0 -403
  395. package/dist/esm/snk-filter-modal-item.entry.js +0 -105
  396. package/dist/esm/snk-image-input.entry.js +0 -144
  397. package/dist/esm/snk-personalized-filter.entry.js +0 -354
  398. package/dist/esm/snk-simple-bar.entry.js +0 -41
  399. package/dist/esm/snk-simple-crud.entry.js +0 -861
  400. package/dist/esm/taskbar-elements-97541bdd.js +0 -130
  401. package/dist/esm/taskbar-processor-3436124c.js +0 -51
  402. package/dist/sankhyablocks/p-07619e85.entry.js +0 -1
  403. package/dist/sankhyablocks/p-0d15b109.entry.js +0 -1
  404. package/dist/sankhyablocks/p-0f3698af.js +0 -1
  405. package/dist/sankhyablocks/p-10cad767.entry.js +0 -1
  406. package/dist/sankhyablocks/p-17653b22.entry.js +0 -1
  407. package/dist/sankhyablocks/p-1a0caadb.js +0 -1
  408. package/dist/sankhyablocks/p-25540da8.js +0 -1
  409. package/dist/sankhyablocks/p-27d6590e.js +0 -1
  410. package/dist/sankhyablocks/p-27e0cd68.entry.js +0 -1
  411. package/dist/sankhyablocks/p-2a356340.entry.js +0 -1
  412. package/dist/sankhyablocks/p-438a225f.entry.js +0 -1
  413. package/dist/sankhyablocks/p-45a830d9.js +0 -1
  414. package/dist/sankhyablocks/p-48c580b9.entry.js +0 -1
  415. package/dist/sankhyablocks/p-4a8d0917.entry.js +0 -1
  416. package/dist/sankhyablocks/p-4cdfa0e4.entry.js +0 -1
  417. package/dist/sankhyablocks/p-4fe8380b.entry.js +0 -1
  418. package/dist/sankhyablocks/p-51833248.js +0 -7
  419. package/dist/sankhyablocks/p-68c1a093.js +0 -1
  420. package/dist/sankhyablocks/p-6a4b21dd.js +0 -1
  421. package/dist/sankhyablocks/p-72d62f22.js +0 -1
  422. package/dist/sankhyablocks/p-73b455e1.entry.js +0 -1
  423. package/dist/sankhyablocks/p-84345e7a.js +0 -1
  424. package/dist/sankhyablocks/p-8bb4e86b.entry.js +0 -1
  425. package/dist/sankhyablocks/p-9c1ff75e.entry.js +0 -1
  426. package/dist/sankhyablocks/p-a9839628.js +0 -26
  427. package/dist/sankhyablocks/p-b25777fa.entry.js +0 -1
  428. package/dist/sankhyablocks/p-b568c1d4.js +0 -1
  429. package/dist/sankhyablocks/p-b9970342.js +0 -60
  430. package/dist/sankhyablocks/p-bdf0077f.js +0 -1
  431. package/dist/sankhyablocks/p-c8043a53.entry.js +0 -1
  432. package/dist/sankhyablocks/p-c860552e.entry.js +0 -1
  433. package/dist/sankhyablocks/p-cc64239c.entry.js +0 -1
  434. package/dist/sankhyablocks/p-cd00a3d1.entry.js +0 -1
  435. package/dist/sankhyablocks/p-e0a6818c.js +0 -1
  436. package/dist/sankhyablocks/p-e0e3914e.entry.js +0 -1
  437. package/dist/sankhyablocks/p-ebce5394.entry.js +0 -1
  438. package/dist/sankhyablocks/p-ef9343c3.entry.js +0 -1
  439. package/dist/sankhyablocks/p-f1110b78.entry.js +0 -1
  440. package/dist/sankhyablocks/p-f1bf7248.entry.js +0 -1
  441. package/dist/sankhyablocks/p-f1d541e9.entry.js +0 -1
  442. package/dist/sankhyablocks/p-f2472d12.entry.js +0 -1
  443. package/dist/sankhyablocks/p-f4184ce7.js +0 -1
@@ -0,0 +1,152 @@
1
+ 'use strict';
2
+
3
+ const index = require('./index-1894343a.js');
4
+ const index$2 = require('./index-bc950921.js');
5
+ const index$1 = require('./index-f0fe7e6e.js');
6
+
7
+ exports.TaskbarElement = void 0;
8
+ (function (TaskbarElement) {
9
+ TaskbarElement["PREVIOUS"] = "PREVIOUS";
10
+ TaskbarElement["NEXT"] = "NEXT";
11
+ TaskbarElement["REFRESH"] = "REFRESH";
12
+ TaskbarElement["UPDATE"] = "UPDATE";
13
+ TaskbarElement["CLONE"] = "CLONE";
14
+ TaskbarElement["REMOVE"] = "REMOVE";
15
+ TaskbarElement["INSERT"] = "INSERT";
16
+ TaskbarElement["CANCEL"] = "CANCEL";
17
+ TaskbarElement["SAVE"] = "SAVE";
18
+ TaskbarElement["GRID_MODE"] = "GRID_MODE";
19
+ TaskbarElement["FORM_MODE"] = "FORM_MODE";
20
+ TaskbarElement["MORE_OPTIONS"] = "MORE_OPTIONS";
21
+ TaskbarElement["DIVIDER"] = "DIVIDER";
22
+ TaskbarElement["SPACER"] = "SPACER";
23
+ TaskbarElement["CONFIGURATOR"] = "CONFIGURATOR";
24
+ TaskbarElement["DATA_EXPORTER"] = "DATA_EXPORTER";
25
+ TaskbarElement["ATTACH"] = "ATTACH";
26
+ TaskbarElement["ACTIONS_BUTTON"] = "ACTIONS_BUTTON";
27
+ TaskbarElement["UPDATE_MULTIPLE"] = "UPDATE_MULTIPLE";
28
+ })(exports.TaskbarElement || (exports.TaskbarElement = {}));
29
+ exports.AuthorizationElements = void 0;
30
+ (function (AuthorizationElements) {
31
+ AuthorizationElements["UPDATE"] = "UPDATE";
32
+ AuthorizationElements["CLONE"] = "CLONE";
33
+ AuthorizationElements["REMOVE"] = "REMOVE";
34
+ AuthorizationElements["INSERT"] = "INSERT";
35
+ AuthorizationElements["CONFIGURATOR"] = "CONFIGURATOR";
36
+ })(exports.AuthorizationElements || (exports.AuthorizationElements = {}));
37
+ exports.VisibleWhenForbidden = void 0;
38
+ (function (VisibleWhenForbidden) {
39
+ VisibleWhenForbidden["CONFIGURATOR"] = "CONFIGURATOR";
40
+ })(exports.VisibleWhenForbidden || (exports.VisibleWhenForbidden = {}));
41
+ const buildCustomButton = ({ def, className, dataElementId, action, isEnabled, size }) => {
42
+ const { hint, text, iconName } = def;
43
+ if (iconName) {
44
+ if (text) {
45
+ return iconTextButton({ iconName, element: def.name, className, dataElementId, title: hint, action, isEnabled, size });
46
+ }
47
+ else {
48
+ return iconButton({ iconName, element: def.name, className, dataElementId, title: hint, action, isEnabled, size });
49
+ }
50
+ }
51
+ else {
52
+ return textButton({ element: def.name, className, dataElementId, title: hint, action, isEnabled, size });
53
+ }
54
+ };
55
+ const buildElem = ({ element, className, dataElementId, getTitle, action, isEnabled, actions, dataExporterStoreKey, presentationMode, variant, size }) => {
56
+ var _a, _b;
57
+ const title = getTitle(element);
58
+ const propertiesItem = {
59
+ element, className, dataElementId, title, action, isEnabled, actions, variant, size
60
+ };
61
+ switch (element) {
62
+ case exports.TaskbarElement.PREVIOUS:
63
+ return iconButton(Object.assign({ iconName: "chevron-left" }, propertiesItem));
64
+ case exports.TaskbarElement.NEXT:
65
+ return iconButton(Object.assign({ iconName: "chevron-right" }, propertiesItem));
66
+ case exports.TaskbarElement.REFRESH:
67
+ return iconButton(Object.assign({ iconName: "sync" }, propertiesItem));
68
+ case exports.TaskbarElement.UPDATE:
69
+ return iconButton(Object.assign({ iconName: "edit" }, propertiesItem));
70
+ case exports.TaskbarElement.UPDATE_MULTIPLE:
71
+ return iconButton(Object.assign({ iconName: "edit-table" }, propertiesItem));
72
+ case exports.TaskbarElement.CLONE:
73
+ return iconButton(Object.assign({ iconName: "copy" }, propertiesItem));
74
+ case exports.TaskbarElement.REMOVE:
75
+ return iconButton(Object.assign({ iconName: "delete" }, propertiesItem));
76
+ case exports.TaskbarElement.INSERT:
77
+ if (presentationMode === index$2.PresentationMode.PRIMARY) {
78
+ return textButton(Object.assign({}, propertiesItem));
79
+ }
80
+ else {
81
+ return iconButton(Object.assign({ iconName: "plus" }, propertiesItem));
82
+ }
83
+ case exports.TaskbarElement.CANCEL:
84
+ return textButton(Object.assign({}, propertiesItem));
85
+ case exports.TaskbarElement.SAVE:
86
+ if (presentationMode === index$2.PresentationMode.PRIMARY) {
87
+ return iconTextButton(Object.assign(Object.assign({ iconName: "save" }, propertiesItem), { variant: "primary" }));
88
+ }
89
+ else {
90
+ return iconButton(Object.assign(Object.assign({ iconName: "save" }, propertiesItem), { variant: "primary" }));
91
+ }
92
+ case exports.TaskbarElement.GRID_MODE:
93
+ return iconButton(Object.assign({ iconName: "table" }, propertiesItem));
94
+ case exports.TaskbarElement.FORM_MODE:
95
+ return iconButton(Object.assign({ iconName: "list" }, propertiesItem));
96
+ case exports.TaskbarElement.CONFIGURATOR:
97
+ if ((actions === null || actions === void 0 ? void 0 : actions.length) > 0) {
98
+ return splitButton(Object.assign({ iconName: "settings-inverted" }, propertiesItem));
99
+ }
100
+ return iconButton(Object.assign({ iconName: "settings-inverted" }, propertiesItem));
101
+ case exports.TaskbarElement.MORE_OPTIONS:
102
+ const definedActions = (_a = actions === null || actions === void 0 ? void 0 : actions.filter(a => a !== undefined)) !== null && _a !== void 0 ? _a : [];
103
+ return actionButton(Object.assign(Object.assign({}, propertiesItem), { actions: definedActions }));
104
+ case exports.TaskbarElement.DIVIDER:
105
+ return index.h("hr", { class: "ez-divider-vertical ez-divider--dark ez-margin--none ez-margin-left--medium", "data-taskbar-divider": true });
106
+ case exports.TaskbarElement.DATA_EXPORTER:
107
+ const provider = (_b = index$1.store.get("exporterProviders")) === null || _b === void 0 ? void 0 : _b[dataExporterStoreKey];
108
+ return index.h("snk-data-exporter", { class: className, provider: provider, "data-element-id": dataElementId, "data-taskbar-element": element, size: size });
109
+ case exports.TaskbarElement.ATTACH:
110
+ return iconButton(Object.assign({ iconName: "anexo" }, propertiesItem));
111
+ case exports.TaskbarElement.ACTIONS_BUTTON:
112
+ return index.h("snk-actions-button", { "data-element-id": dataElementId, "data-taskbar-element": element, class: className, size: size });
113
+ }
114
+ };
115
+ function textButton({ action, className, dataElementId, title, element, isEnabled, variant, size }) {
116
+ return (index.h("ez-tooltip", { key: dataElementId, message: title, class: className },
117
+ index.h("ez-button", { label: title, "data-taskbar-label": title, "data-taskbar-element": element, "data-element-id": dataElementId, isDisabled: !isEnabled(element), onClick: () => action(element), variant: variant, size: size })));
118
+ }
119
+ function concatClass(className) {
120
+ if (typeof className === "string") {
121
+ return className;
122
+ }
123
+ else {
124
+ return Object.keys(className).filter(key => className[key]).join(" ");
125
+ }
126
+ }
127
+ function iconButton({ iconName, element, className, dataElementId, title, action, isEnabled, variant, size }) {
128
+ return (index.h("ez-tooltip", { key: dataElementId, message: title, class: {
129
+ [concatClass(className)]: true,
130
+ [`icon-button--${size}`]: true
131
+ } },
132
+ index.h("ez-button", { mode: "icon", "data-taskbar-label": title, "data-taskbar-element": element, "data-taskbar-icon": iconName, "data-element-id": dataElementId, iconName: iconName, isDisabled: !isEnabled(element), onClick: () => action(element), variant: variant, size: size })));
133
+ }
134
+ function iconTextButton({ iconName, element, className, dataElementId, title, action, isEnabled, variant, size }) {
135
+ return (index.h("ez-tooltip", { key: dataElementId, message: title, class: className },
136
+ index.h("ez-button", { label: title, "data-taskbar-label": title, "data-taskbar-icon": iconName, "data-taskbar-element": element, "data-element-id": dataElementId, isDisabled: !isEnabled(element), onClick: () => action(element), variant: variant, size: size },
137
+ index.h("ez-icon", { class: "ez-padding-right--small", slot: "leftIcon", iconName: iconName }))));
138
+ }
139
+ function splitButton({ iconName, element, className, title, dataElementId, isEnabled, actions, action, size }) {
140
+ return actions && actions.length > 0
141
+ ?
142
+ index.h("taskbar-split-button", { key: dataElementId, class: className, iconName: iconName, "data-taskbar-icon": iconName, "data-taskbar-label": title, title: title, "data-taskbar-element": element, "data-element-id": dataElementId, enabled: isEnabled(element), actions: actions, action: () => action(element), size: size })
143
+ : undefined;
144
+ }
145
+ function actionButton({ element, className, dataElementId, title, isEnabled, actions, action, size }) {
146
+ return actions && actions.length > 0
147
+ ? index.h("taskbar-actions-button", { class: className, key: dataElementId, title: title, "data-taskbar-element": element, "data-element-id": dataElementId, enabled: isEnabled(element), actions: actions, onTaskbarActionSelected: (evt) => action(evt.detail.value), size: size })
148
+ : undefined;
149
+ }
150
+
151
+ exports.buildCustomButton = buildCustomButton;
152
+ exports.buildElem = buildElem;
@@ -0,0 +1,236 @@
1
+ 'use strict';
2
+
3
+ require('./DataFetcher-d13b4637.js');
4
+ require('./ISave-55d9dcc3.js');
5
+ require('@sankhyalabs/core');
6
+ const index = require('./index-bc950921.js');
7
+ require('@sankhyalabs/ezui/dist/collection/utils/constants');
8
+ require('@sankhyalabs/core/dist/dataunit/metadata/UnitMetadata');
9
+ require('./dataunit-fetcher-fae710c5.js');
10
+ require('./filter-item-type.enum-a7ffdaa6.js');
11
+ require('./form-config-fetcher-bbebdcb8.js');
12
+ const constants = require('./constants-6d82e405.js');
13
+ const taskbarElements = require('./taskbar-elements-25f800b3.js');
14
+
15
+ class SimpleTaskbarProcessor {
16
+ /**
17
+ * Cria uma nova instância do processador de taskbar.
18
+ * @param defaultButtons - Array com os botões padrão a serem exibidos
19
+ */
20
+ constructor(defaultButtons) {
21
+ this._defaultButtons = [];
22
+ this._defaultButtons = [...defaultButtons];
23
+ }
24
+ /**
25
+ * Processa a taskbar aplicando regras de visibilidade e habilitação.
26
+ * @param taskbarID - Identificador único da taskbar
27
+ * @param taskbarManager - Gerenciador de taskbar com regras customizadas
28
+ * @param dataState - Estado atual dos dados
29
+ * @param disabledButtons - Array de botões desabilitados
30
+ * @param invisibleButtons - Array de botões invisíveis
31
+ */
32
+ process(taskbarID, taskbarManager, dataState, disabledButtons = [], invisibleButtons = []) {
33
+ var _a;
34
+ this.taskbarID = taskbarID;
35
+ this.customButtons = new Map();
36
+ this.buttonsArray = [];
37
+ this.disabledButtons = [...disabledButtons];
38
+ (_a = this.getButtonsArray(taskbarManager, dataState)) === null || _a === void 0 ? void 0 : _a.forEach((btnDef) => {
39
+ let buttonName;
40
+ if (typeof btnDef === "string") {
41
+ buttonName = btnDef;
42
+ }
43
+ else {
44
+ this.customButtons.set(btnDef.name, btnDef);
45
+ buttonName = btnDef.name;
46
+ }
47
+ if (!invisibleButtons.includes(buttonName)) {
48
+ if (!this.isEnabled(taskbarManager, buttonName, dataState, disabledButtons)) {
49
+ this.disabledButtons.push(buttonName);
50
+ }
51
+ this.buttonsArray.push(buttonName);
52
+ }
53
+ });
54
+ this.buttons = this.buttonsArray.join(",");
55
+ }
56
+ getButtonsArray(taskbarManager, dataState) {
57
+ if (taskbarManager) {
58
+ return taskbarManager.getButtons(this.taskbarID, dataState, [...this._defaultButtons]);
59
+ }
60
+ return this._defaultButtons;
61
+ }
62
+ isEnabled(taskbarManager, buttonName, dataState, disabled) {
63
+ const originalValue = !disabled.includes(buttonName);
64
+ if (taskbarManager && taskbarManager.isEnabled) {
65
+ return taskbarManager.isEnabled(this.taskbarID, dataState, buttonName, originalValue);
66
+ }
67
+ return originalValue;
68
+ }
69
+ }
70
+
71
+ const DEFAULT_TASKBAR_BUTTONS = [
72
+ taskbarElements.TaskbarElement.FORM_MODE,
73
+ taskbarElements.TaskbarElement.PREVIOUS,
74
+ taskbarElements.TaskbarElement.NEXT,
75
+ taskbarElements.TaskbarElement.REFRESH,
76
+ taskbarElements.TaskbarElement.SPACER,
77
+ taskbarElements.TaskbarElement.ACTIONS_BUTTON,
78
+ taskbarElements.TaskbarElement.DATA_EXPORTER,
79
+ taskbarElements.TaskbarElement.ATTACH,
80
+ taskbarElements.TaskbarElement.CLONE,
81
+ taskbarElements.TaskbarElement.UPDATE,
82
+ taskbarElements.TaskbarElement.REMOVE,
83
+ taskbarElements.TaskbarElement.INSERT,
84
+ taskbarElements.TaskbarElement.CONFIGURATOR,
85
+ taskbarElements.TaskbarElement.MORE_OPTIONS,
86
+ ];
87
+ exports.CustomTaskbarButton = void 0;
88
+ (function (CustomTaskbarButton) {
89
+ CustomTaskbarButton["FILTER"] = "FILTER";
90
+ CustomTaskbarButton["ENTITY_SEARCH"] = "ENTITY_SEARCH";
91
+ })(exports.CustomTaskbarButton || (exports.CustomTaskbarButton = {}));
92
+ /**
93
+ * Insere os botões customizados à esquerda do elemento SPACER na lista de botões.
94
+ * Caso o SPACER não seja encontrado, os botões são inseridos no início da lista.
95
+ */
96
+ function insertCustomButtonsBeforeSpacer(buttons, customButtons) {
97
+ const spacerIndex = buttons.findIndex(btn => btn === taskbarElements.TaskbarElement.SPACER || (typeof btn === 'string' && btn === 'SPACER'));
98
+ if (spacerIndex > -1) {
99
+ return [
100
+ ...buttons.slice(0, spacerIndex),
101
+ ...customButtons,
102
+ ...buttons.slice(spacerIndex),
103
+ ];
104
+ }
105
+ return [...customButtons, ...buttons];
106
+ }
107
+ function buildNavigationDisabledBtns(dataState) {
108
+ const navigationDisabled = [];
109
+ if (!(dataState === null || dataState === void 0 ? void 0 : dataState.hasPrevious)) {
110
+ navigationDisabled.push(taskbarElements.TaskbarElement.PREVIOUS);
111
+ }
112
+ if (!(dataState === null || dataState === void 0 ? void 0 : dataState.hasNext)) {
113
+ navigationDisabled.push(taskbarElements.TaskbarElement.NEXT);
114
+ }
115
+ return navigationDisabled;
116
+ }
117
+ function buildNativeTaskbarManager(currentViewMode, mergeTaskbarManager, messagesBuilder) {
118
+ var _a, _b;
119
+ const CUSTOM_BUTTONS = [
120
+ {
121
+ name: exports.CustomTaskbarButton.FILTER,
122
+ hint: (_a = messagesBuilder === null || messagesBuilder === void 0 ? void 0 : messagesBuilder.getMessage("snkCrud.customButtons.filter")) !== null && _a !== void 0 ? _a : "Abre o painel de filtros",
123
+ iconName: "filter",
124
+ },
125
+ {
126
+ name: exports.CustomTaskbarButton.ENTITY_SEARCH,
127
+ hint: (_b = messagesBuilder === null || messagesBuilder === void 0 ? void 0 : messagesBuilder.getMessage("snkCrud.customButtons.entitySearch")) !== null && _b !== void 0 ? _b : "Busca na entidade",
128
+ iconName: "search",
129
+ },
130
+ ];
131
+ const EDITION_MODE_BUTTONS = [
132
+ taskbarElements.TaskbarElement.CANCEL,
133
+ taskbarElements.TaskbarElement.SAVE,
134
+ ];
135
+ return {
136
+ getButtons: (taskbarID, dataState, defaultButtons) => {
137
+ var _a, _b;
138
+ if (!taskbarID) {
139
+ console.warn('taskbarID não fornecido');
140
+ return [];
141
+ }
142
+ const isInEditionMode = (dataState === null || dataState === void 0 ? void 0 : dataState.insertionMode) || (dataState === null || dataState === void 0 ? void 0 : dataState.isDirty);
143
+ if (isInEditionMode) {
144
+ return EDITION_MODE_BUTTONS;
145
+ }
146
+ if (currentViewMode === constants.VIEW_MODE.FORM) {
147
+ const indexFormMode = defaultButtons.indexOf(taskbarElements.TaskbarElement.FORM_MODE);
148
+ if (indexFormMode > -1) {
149
+ defaultButtons = [
150
+ ...defaultButtons.slice(0, indexFormMode),
151
+ taskbarElements.TaskbarElement.GRID_MODE,
152
+ ...defaultButtons.slice(indexFormMode + 1)
153
+ ];
154
+ }
155
+ }
156
+ if (((_b = (_a = dataState === null || dataState === void 0 ? void 0 : dataState.selectionInfo) === null || _a === void 0 ? void 0 : _a.records) === null || _b === void 0 ? void 0 : _b.length) > 1) {
157
+ const indexUpdate = defaultButtons.indexOf(taskbarElements.TaskbarElement.UPDATE);
158
+ if (indexUpdate > -1) {
159
+ defaultButtons = [
160
+ ...defaultButtons.slice(0, indexUpdate),
161
+ taskbarElements.TaskbarElement.UPDATE_MULTIPLE,
162
+ ...defaultButtons.slice(indexUpdate + 1)
163
+ ];
164
+ }
165
+ }
166
+ const defaultsWithCustomButtons = insertCustomButtonsBeforeSpacer(defaultButtons, CUSTOM_BUTTONS);
167
+ if (mergeTaskbarManager === null || mergeTaskbarManager === void 0 ? void 0 : mergeTaskbarManager.getButtons) {
168
+ return mergeTaskbarManager.getButtons(taskbarID, dataState, defaultsWithCustomButtons);
169
+ }
170
+ return defaultsWithCustomButtons;
171
+ },
172
+ isEnabled: (_, dataState, buttonName, originalValue) => {
173
+ var _a;
174
+ // Filtro só faz sentido no modo grade; a filter-bar fica oculta no
175
+ // form-view, então desabilita o botão que abre o painel de filtros.
176
+ if (currentViewMode === constants.VIEW_MODE.FORM && buttonName === exports.CustomTaskbarButton.FILTER) {
177
+ return false;
178
+ }
179
+ if (!dataState) {
180
+ return originalValue;
181
+ }
182
+ const hasSelectedRecord = dataState.selectedRecord !== undefined;
183
+ const buttonsRequiringSelection = [
184
+ taskbarElements.TaskbarElement.UPDATE,
185
+ taskbarElements.TaskbarElement.REMOVE,
186
+ taskbarElements.TaskbarElement.ATTACH,
187
+ taskbarElements.TaskbarElement.CLONE,
188
+ ];
189
+ if (!hasSelectedRecord && buttonsRequiringSelection.includes(buttonName)) {
190
+ return false;
191
+ }
192
+ const navigationDisabled = buildNavigationDisabledBtns(dataState);
193
+ if (navigationDisabled.includes(buttonName)) {
194
+ return false;
195
+ }
196
+ return (_a = mergeTaskbarManager === null || mergeTaskbarManager === void 0 ? void 0 : mergeTaskbarManager.isEnabled(_, dataState, buttonName, originalValue)) !== null && _a !== void 0 ? _a : originalValue;
197
+ },
198
+ getMoreOptions(taskbarId, configName, dataState, currentActions) {
199
+ var _a;
200
+ return (_a = mergeTaskbarManager === null || mergeTaskbarManager === void 0 ? void 0 : mergeTaskbarManager.getMoreOptions) === null || _a === void 0 ? void 0 : _a.call(mergeTaskbarManager, taskbarId, configName, dataState, currentActions);
201
+ },
202
+ };
203
+ }
204
+ function getHeaderTaskbarId(dataState, presentationMode) {
205
+ var _a;
206
+ const hasSelectedRecord = dataState && !!((_a = dataState.selectionInfo) === null || _a === void 0 ? void 0 : _a.length);
207
+ const taskbarIdPrefixLookup = {
208
+ primary: "snkGridHeaderTaskbar",
209
+ secondary: "snkGridHeaderTaskbar",
210
+ singleTaskbar: "snkGridHeaderTaskbar.singleTaskbar",
211
+ };
212
+ const taskbarIdPrefix = taskbarIdPrefixLookup[presentationMode];
213
+ let headerTaskbarId = hasSelectedRecord ? `${taskbarIdPrefix}.selected` : `${taskbarIdPrefix}.unselected`;
214
+ if ((dataState === null || dataState === void 0 ? void 0 : dataState.isDirty) && presentationMode === index.PresentationMode.SINGLE_TASKBAR) {
215
+ headerTaskbarId = "snkGridHeaderTaskbar.singleTaskbar.finish_edition";
216
+ }
217
+ return headerTaskbarId;
218
+ }
219
+ function getTopTaskBarId(dataState, presentationMode) {
220
+ const suffixLookup = {
221
+ primary: '',
222
+ secondary: '.secondary',
223
+ singleTaskbar: '.singleTaskbar',
224
+ };
225
+ const sufix = suffixLookup[presentationMode];
226
+ if (dataState === null || dataState === void 0 ? void 0 : dataState.isDirty) {
227
+ return `snkGridTopTaskbar.finish_edition${sufix}`;
228
+ }
229
+ return `snkGridTopTaskbar.regular${sufix}`;
230
+ }
231
+
232
+ exports.DEFAULT_TASKBAR_BUTTONS = DEFAULT_TASKBAR_BUTTONS;
233
+ exports.SimpleTaskbarProcessor = SimpleTaskbarProcessor;
234
+ exports.buildNativeTaskbarManager = buildNativeTaskbarManager;
235
+ exports.getHeaderTaskbarId = getHeaderTaskbarId;
236
+ exports.getTopTaskBarId = getTopTaskBarId;
@@ -13,6 +13,7 @@
13
13
  "./components/snk-configurator/snk-configurator.js",
14
14
  "./components/snk-crud/subcomponents/snk-guides-viewer.js",
15
15
  "./components/snk-crud/snk-crud.js",
16
+ "./components/snk-crud/subcomponents/snk-entity-search.js",
16
17
  "./components/snk-crud/subcomponents/snk-form-summary.js",
17
18
  "./components/snk-crud/subcomponents/snk-form-view.js",
18
19
  "./components/snk-crud/subcomponents/snk-detail-view/snk-detail-view.js",
@@ -20,6 +21,18 @@
20
21
  "./components/snk-custom-slot-guide/snk-custom-slot-guide.js",
21
22
  "./components/snk-data-exporter/snk-data-exporter.js",
22
23
  "./components/snk-data-exporter/exporter-email-sender/snk-exporter-email-sender.js",
24
+ "./components/snk-dynaform/snk-dynaform.js",
25
+ "./components/snk-dynaform/subcomponents/snk-dynaform-guides-view/snk-dynaform-guides-view.js",
26
+ "./components/snk-dynaform/subcomponents/snk-dynaform-detail-view/snk-dynaform-detail-view.js",
27
+ "./components/snk-dynaform/subcomponents/snk-dynaform-form-view/snk-dynaform-form-view.js",
28
+ "./components/snk-dynaform-form-config/snk-dynaform-form-config.js",
29
+ "./components/snk-dynaform-form-config/snk-dynaform-config-header/snk-dynaform-config-header.js",
30
+ "./components/snk-dynaform-form-config/snk-dynaform-config-header/snk-dynaform-configs-button/snk-dynaform-configs-button.js",
31
+ "./components/snk-dynaform-form-config/snk-dynaform-field-item/snk-dynaform-field-item.js",
32
+ "./components/snk-dynaform-form-config/snk-dynaform-field-item/snk-dynaform-field-config/snk-dynaform-field-config.js",
33
+ "./components/snk-dynaform-form-config/snk-dynaform-fields-layout/snk-dynaform-fields-layout.js",
34
+ "./components/snk-dynaform-form-config/snk-dynaform-fields-selector/snk-dynaform-fields-selector.js",
35
+ "./components/snk-dynaform-form-config/snk-dynaform-guides-configurator/snk-dynaform-guides-configurator.js",
23
36
  "./components/snk-entity-list/snk-entity-list.js",
24
37
  "./components/snk-filter-bar/snk-filter-bar.js",
25
38
  "./components/snk-filter-bar/filter-item/editors/snk-personalized-filter-editor/snk-personalized-filter-editor.js",
@@ -65,6 +78,7 @@
65
78
  "./components/snk-simple-form-config/snk-simple-form-config.js",
66
79
  "./components/snk-taskbar/elements/taskbar-actions-button/taskbar-actions-button.js",
67
80
  "./components/snk-taskbar/elements/taskbar-split-button/taskbar-split-button.js",
81
+ "./components/snk-taskbar/subcomponents/snk-taskbar-skeleton.js",
68
82
  "./components/teste-pesquisa/teste-pesquisa.js"
69
83
  ],
70
84
  "compiler": {
@@ -89,6 +103,11 @@
89
103
  "snk-crud"
90
104
  ]
91
105
  },
106
+ {
107
+ "components": [
108
+ "snk-dynaform"
109
+ ]
110
+ },
92
111
  {
93
112
  "components": [
94
113
  "snk-detail-view"
@@ -25,11 +25,14 @@ export default class LaunchScreenExecutor {
25
25
  localFieldLabel = StringUtils.isEmpty(dataUnit.getField(localField).label) ? localField : localFieldLabel;
26
26
  throw new ErrorException(this._application.messagesBuilder.getMessage("snkActionsButton.title.error", undefined), this._application.messagesBuilder.getMessage("snkActionsButton.launchScreen.emptyField", { description: action.description, localFieldLabel: localFieldLabel }));
27
27
  }
28
- value = StringUtils.isEmpty(value.toString()) ? undefined : value.toString();
29
- launchObject[param.targetField] = value;
28
+ if (value !== null && typeof value === 'object' && 'value' in value) {
29
+ value = value.value;
30
+ }
31
+ const finalValue = StringUtils.isEmpty(value === null || value === void 0 ? void 0 : value.toString()) ? undefined : value.toString();
32
+ launchObject[param.targetField] = finalValue;
30
33
  processedParams.push({
31
34
  fieldName: param.targetField,
32
- value: value
35
+ value: finalValue
33
36
  });
34
37
  });
35
38
  launchObject.ACTION_PARAMETERS = processedParams;
@@ -16,6 +16,7 @@ export class SnkActionsButton {
16
16
  action.execute(Object.assign({}, selectedAction));
17
17
  this._showDropdown = false;
18
18
  };
19
+ this.size = 'medium';
19
20
  this._items = [];
20
21
  this._showDropdown = false;
21
22
  }
@@ -65,12 +66,13 @@ export class SnkActionsButton {
65
66
  document.addEventListener("scroll", this.positionDropdown.bind(this));
66
67
  }
67
68
  async componentWillLoad() {
69
+ var _a, _b;
68
70
  this._application = ApplicationContext.getContextValue("__SNK__APPLICATION__");
69
71
  await this.loadParameters();
70
- const snkDataUnit = this._element.parentElement;
71
- this._dataUnit = snkDataUnit === null || snkDataUnit === void 0 ? void 0 : snkDataUnit.dataUnit;
72
- this._resourceID = snkDataUnit === null || snkDataUnit === void 0 ? void 0 : snkDataUnit.resourceID;
73
- this._entityName = this._dataUnit.name.split('/')[2];
72
+ const snkTaskbar = this._element.closest('snk-taskbar');
73
+ this._dataUnit = snkTaskbar === null || snkTaskbar === void 0 ? void 0 : snkTaskbar.dataUnit;
74
+ this._resourceID = snkTaskbar === null || snkTaskbar === void 0 ? void 0 : snkTaskbar.resourceID;
75
+ this._entityName = (_b = (_a = this._dataUnit) === null || _a === void 0 ? void 0 : _a.name) === null || _b === void 0 ? void 0 : _b.split('/')[2];
74
76
  if (this._resourceID == undefined) {
75
77
  this._resourceID = await ResourceIDUtils.getResourceID();
76
78
  }
@@ -110,9 +112,9 @@ export class SnkActionsButton {
110
112
  }
111
113
  render() {
112
114
  return (h(Host, null, (this._actions && this._actions.length > 0) &&
113
- (h("div", { class: `ez-padding-left--medium snk-actions-button
115
+ (h("div", { class: `snk-actions-button
114
116
  ${this.canShowDropdown() ? " ez-elevation--16" : ""}
115
- ` }, h("ez-button", Object.assign({ ref: (ref) => this._ezButton = ref, iconName: "acao", size: "small", mode: "icon", title: this._application.messagesBuilder.getMessage("snkActionsButton.title.actions", undefined), onClick: () => this.controlDropdown() }, this.getElementID("button"))), h("div", Object.assign({ ref: (ref) => this._dropdownParent = ref, class: `${this.canShowDropdown() ?
117
+ ` }, h("ez-tooltip", { message: this._application.messagesBuilder.getMessage("snkActionsButton.title.actions", undefined) }, h("ez-button", Object.assign({ ref: (ref) => this._ezButton = ref, iconName: "acao", mode: "icon", onClick: () => this.controlDropdown(), size: this.size }, this.getElementID("button")))), h("div", Object.assign({ ref: (ref) => this._dropdownParent = ref, class: `${this.canShowDropdown() ?
116
118
  "snk-actions-button__dropdown--show" :
117
119
  "snk-actions-button__dropdown"}
118
120
  ` }, this.getElementID("dropdown")), (this.canShowDropdown()) &&
@@ -131,6 +133,28 @@ export class SnkActionsButton {
131
133
  "$": ["snk-actions-button.css"]
132
134
  };
133
135
  }
136
+ static get properties() {
137
+ return {
138
+ "size": {
139
+ "type": "string",
140
+ "mutable": false,
141
+ "complexType": {
142
+ "original": "'small' | 'medium' | 'large'",
143
+ "resolved": "\"large\" | \"medium\" | \"small\"",
144
+ "references": {}
145
+ },
146
+ "required": false,
147
+ "optional": false,
148
+ "docs": {
149
+ "tags": [],
150
+ "text": "Define o tamanho do bot\u00E3o, podendo ser 'small', 'medium' ou 'large'."
151
+ },
152
+ "attribute": "size",
153
+ "reflect": false,
154
+ "defaultValue": "'medium'"
155
+ }
156
+ };
157
+ }
134
158
  static get states() {
135
159
  return {
136
160
  "_items": {},
@@ -1,14 +1,36 @@
1
- .snk-attach__header, .snk-attach__crud-section {
2
- padding: 0 var(--space--lg);
1
+ .snk-attach__header {
2
+ display: flex;
3
+ justify-content: space-between;
4
+ align-items: center;
5
+ margin-bottom: var(--space--6, 6px);
6
+ }
7
+
8
+ .snk-attach__header > section {
9
+ display: flex;
10
+ align-items: center;
3
11
  }
4
12
 
5
13
  .snk-attach__file-info {
6
- padding: var(--space--small);
7
- max-width: 50%;
14
+ display: flex;
15
+ flex-direction: column;
16
+ justify-content: center;
17
+ gap: var(--space--8, 8px);
8
18
  }
9
- .snk-attach__main{
10
- height: 85%;
19
+
20
+ .snk-attach__main {
21
+ display: flex;
22
+ flex-direction: column;
23
+ height: 100%;
11
24
  }
12
- .ez-box__container{
25
+
26
+ .ez-box__container {
13
27
  height: 100%;
14
28
  }
29
+
30
+ .snk-attach__crud-section {
31
+ padding: 1px;
32
+ display: flex;
33
+ flex-direction: column;
34
+ height: 100%;
35
+ width: 100%;
36
+ }