@sankhyalabs/sankhyablocks 10.1.0-dev.57 → 10.1.0-dev.59

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 (150) hide show
  1. package/dist/cjs/{ConfigStorage-a28eceb2.js → ConfigStorage-156bfcac.js} +2 -2
  2. package/dist/cjs/{DataFetcher-98d95e8f.js → DataFetcher-d13b4637.js} +12 -0
  3. package/dist/cjs/{ISave-a9815bb3.js → ISave-55d9dcc3.js} +1 -1
  4. package/dist/cjs/{SnkFormConfigManager-af47ba2f.js → SnkFormConfigManager-5cb9a39c.js} +2 -2
  5. package/dist/cjs/{SnkMultiSelectionListDataSource-13774e5f.js → SnkMultiSelectionListDataSource-5c5badfc.js} +5 -5
  6. package/dist/cjs/{auth-fetcher-9c257a1f.js → auth-fetcher-d1715459.js} +1 -1
  7. package/dist/cjs/{dataunit-fetcher-afc246d8.js → dataunit-fetcher-fae710c5.js} +1 -1
  8. package/dist/cjs/{form-config-fetcher-1ce4125c.js → form-config-fetcher-bbebdcb8.js} +1 -1
  9. package/dist/cjs/{index-e3e39724.js → index-bc950921.js} +6 -0
  10. package/dist/cjs/loader.cjs.js +1 -1
  11. package/dist/cjs/pesquisa-grid_2.cjs.entry.js +5 -5
  12. package/dist/cjs/sankhyablocks.cjs.js +1 -1
  13. package/dist/cjs/snk-actions-button_9.cjs.entry.js +9 -9
  14. package/dist/cjs/snk-application.cjs.entry.js +7 -7
  15. package/dist/cjs/snk-attach_11.cjs.entry.js +14 -12
  16. package/dist/cjs/snk-crud.cjs.entry.js +14 -10
  17. package/dist/cjs/snk-data-exporter.cjs.entry.js +59 -14
  18. package/dist/cjs/{snk-data-unit-ab570f87.js → snk-data-unit-32237a2d.js} +2 -2
  19. package/dist/cjs/snk-data-unit.cjs.entry.js +3 -3
  20. package/dist/cjs/snk-detail-view.cjs.entry.js +9 -9
  21. package/dist/cjs/snk-dynaform-detail-view_2.cjs.entry.js +33 -10
  22. package/dist/cjs/{snk-dynaform-guides-view-30ce5a8c.js → snk-dynaform-guides-view-2c7c6ce4.js} +389 -42
  23. package/dist/cjs/snk-dynaform-guides-view.cjs.entry.js +6 -6
  24. package/dist/cjs/snk-dynaform.cjs.entry.js +14 -10
  25. package/dist/cjs/snk-filter-bar_4.cjs.entry.js +4 -4
  26. package/dist/cjs/snk-form_2.cjs.entry.js +4 -4
  27. package/dist/cjs/snk-grid.cjs.entry.js +8 -8
  28. package/dist/cjs/{snk-guides-viewer-2a55fa3a.js → snk-guides-viewer-67b9cca9.js} +2 -2
  29. package/dist/cjs/snk-guides-viewer.cjs.entry.js +7 -7
  30. package/dist/cjs/snk-layout-form-config.cjs.entry.js +5 -5
  31. package/dist/cjs/snk-pesquisa.cjs.entry.js +5 -5
  32. package/dist/cjs/snk-taskbar.cjs.entry.js +2 -2
  33. package/dist/cjs/{taskbar-elements-80eddec8.js → taskbar-elements-25f800b3.js} +1 -1
  34. package/dist/cjs/{taskbarUtils-4ca4235e.js → taskbarUtils-99aaa01f.js} +11 -6
  35. package/dist/collection/components/snk-actions-button/snk-actions-button.js +3 -3
  36. package/dist/collection/components/snk-crud/snk-crud.css +9 -4
  37. package/dist/collection/components/snk-crud/snk-crud.js +5 -1
  38. package/dist/collection/components/snk-crud/utils/taskbarUtils.js +5 -0
  39. package/dist/collection/components/snk-data-exporter/exporter-strategy/ClientSideExporterStrategy.js +2 -2
  40. package/dist/collection/components/snk-data-exporter/snk-data-exporter.js +8 -4
  41. package/dist/collection/components/snk-data-exporter/structure/ItemBuilder.js +43 -2
  42. package/dist/collection/components/snk-dynaform/snk-dynaform.css +9 -4
  43. package/dist/collection/components/snk-dynaform/snk-dynaform.js +5 -1
  44. package/dist/collection/components/snk-dynaform/subcomponents/snk-dynaform-detail-view/snk-dynaform-detail-view.css +71 -1
  45. package/dist/collection/components/snk-dynaform/subcomponents/snk-dynaform-detail-view/snk-dynaform-detail-view.js +23 -0
  46. package/dist/collection/components/snk-dynaform/subcomponents/snk-dynaform-form-view/snk-dynaform-form-view.css +35 -1
  47. package/dist/collection/components/snk-dynaform/subcomponents/snk-dynaform-form-view/snk-dynaform-form-view.js +3 -1
  48. package/dist/collection/components/snk-dynaform/subcomponents/snk-dynaform-guides-view/snk-dynaform-guides-view.css +229 -6
  49. package/dist/collection/components/snk-dynaform/subcomponents/snk-dynaform-guides-view/snk-dynaform-guides-view.js +458 -38
  50. package/dist/collection/components/snk-dynaform-form-config/SnkFormConfigManager.js +8 -1
  51. package/dist/collection/components/snk-filter-bar/snk-filter-bar.js +1 -1
  52. package/dist/collection/lib/@types/index.js +6 -0
  53. package/dist/collection/lib/message/resources/en-us/snk-crud.msg.js +4 -0
  54. package/dist/collection/lib/message/resources/es-es/snk-crud.msg.js +4 -0
  55. package/dist/collection/lib/message/resources/pt-br/snk-crud.msg.js +4 -0
  56. package/dist/components/ISave.js +6 -0
  57. package/dist/components/SnkMessageBuilder.js +12 -0
  58. package/dist/components/snk-actions-button2.js +3 -3
  59. package/dist/components/snk-crud.js +6 -2
  60. package/dist/components/snk-data-exporter2.js +53 -8
  61. package/dist/components/snk-dynaform-detail-view2.js +419 -41
  62. package/dist/components/snk-dynaform-form-view2.js +4 -2
  63. package/dist/components/snk-dynaform.js +6 -2
  64. package/dist/components/snk-filter-bar2.js +1 -1
  65. package/dist/components/taskbarUtils.js +5 -0
  66. package/dist/esm/{ConfigStorage-346d781d.js → ConfigStorage-0d1c0695.js} +2 -2
  67. package/dist/esm/{DataFetcher-7d8df5a2.js → DataFetcher-70de9419.js} +12 -0
  68. package/dist/esm/{ISave-2117075a.js → ISave-f5704813.js} +1 -1
  69. package/dist/esm/{SnkFormConfigManager-066d370b.js → SnkFormConfigManager-e7f05f79.js} +2 -2
  70. package/dist/esm/{SnkMultiSelectionListDataSource-7c5ffcd4.js → SnkMultiSelectionListDataSource-6ac291a9.js} +5 -5
  71. package/dist/esm/{auth-fetcher-5891e22c.js → auth-fetcher-e34880e5.js} +1 -1
  72. package/dist/esm/{dataunit-fetcher-5dcb0e89.js → dataunit-fetcher-d26e4a08.js} +1 -1
  73. package/dist/esm/{form-config-fetcher-8e2082f3.js → form-config-fetcher-98c42169.js} +1 -1
  74. package/dist/esm/{index-b40568ff.js → index-c6721886.js} +6 -0
  75. package/dist/esm/loader.js +1 -1
  76. package/dist/esm/pesquisa-grid_2.entry.js +5 -5
  77. package/dist/esm/sankhyablocks.js +1 -1
  78. package/dist/esm/snk-actions-button_9.entry.js +9 -9
  79. package/dist/esm/snk-application.entry.js +7 -7
  80. package/dist/esm/snk-attach_11.entry.js +14 -12
  81. package/dist/esm/snk-crud.entry.js +14 -10
  82. package/dist/esm/snk-data-exporter.entry.js +59 -14
  83. package/dist/esm/{snk-data-unit-f697345b.js → snk-data-unit-ff57ac90.js} +2 -2
  84. package/dist/esm/snk-data-unit.entry.js +3 -3
  85. package/dist/esm/snk-detail-view.entry.js +9 -9
  86. package/dist/esm/snk-dynaform-detail-view_2.entry.js +33 -10
  87. package/dist/esm/{snk-dynaform-guides-view-6aae38f7.js → snk-dynaform-guides-view-0dfbefc1.js} +390 -43
  88. package/dist/esm/snk-dynaform-guides-view.entry.js +6 -6
  89. package/dist/esm/snk-dynaform.entry.js +14 -10
  90. package/dist/esm/snk-filter-bar_4.entry.js +4 -4
  91. package/dist/esm/snk-form_2.entry.js +4 -4
  92. package/dist/esm/snk-grid.entry.js +8 -8
  93. package/dist/esm/{snk-guides-viewer-3ea7e312.js → snk-guides-viewer-31a0a23d.js} +2 -2
  94. package/dist/esm/snk-guides-viewer.entry.js +7 -7
  95. package/dist/esm/snk-layout-form-config.entry.js +5 -5
  96. package/dist/esm/snk-pesquisa.entry.js +5 -5
  97. package/dist/esm/snk-taskbar.entry.js +2 -2
  98. package/dist/esm/{taskbar-elements-63651ca7.js → taskbar-elements-ba9d6889.js} +1 -1
  99. package/dist/esm/{taskbarUtils-a43e4bba.js → taskbarUtils-cb9db0d9.js} +11 -6
  100. package/dist/sankhyablocks/{p-3190ac29.js → p-097d75b3.js} +2 -2
  101. package/dist/sankhyablocks/{p-aa9d61fa.entry.js → p-12579574.entry.js} +1 -1
  102. package/dist/sankhyablocks/{p-741f1ad0.entry.js → p-1d31aec3.entry.js} +1 -1
  103. package/dist/sankhyablocks/{p-6f2de911.entry.js → p-250b273e.entry.js} +1 -1
  104. package/dist/sankhyablocks/p-2a83f20e.entry.js +1 -0
  105. package/dist/sankhyablocks/p-2c4f7fdd.entry.js +1 -0
  106. package/dist/sankhyablocks/{p-3072136e.js → p-2ec98523.js} +1 -1
  107. package/dist/sankhyablocks/{p-10d883b0.js → p-4dd574d6.js} +1 -1
  108. package/dist/sankhyablocks/{p-7827871d.entry.js → p-541c72ec.entry.js} +1 -1
  109. package/dist/sankhyablocks/p-5aeae67f.js +1 -0
  110. package/dist/sankhyablocks/p-5ef0e9a8.entry.js +1 -0
  111. package/dist/sankhyablocks/{p-9e97fabb.entry.js → p-6d3bcabf.entry.js} +1 -1
  112. package/dist/sankhyablocks/p-6f60df43.js +1 -0
  113. package/dist/sankhyablocks/{p-58e0f14b.entry.js → p-846d8f79.entry.js} +1 -1
  114. package/dist/sankhyablocks/{p-77f608bc.entry.js → p-885262ce.entry.js} +1 -1
  115. package/dist/sankhyablocks/{p-c1e168a2.js → p-8d1ef77a.js} +1 -1
  116. package/dist/sankhyablocks/{p-13f91e7e.js → p-8d81c8d3.js} +1 -1
  117. package/dist/sankhyablocks/{p-ee192f06.entry.js → p-8f5dd87d.entry.js} +1 -1
  118. package/dist/sankhyablocks/{p-c5889dae.js → p-90037547.js} +1 -1
  119. package/dist/sankhyablocks/p-9e02a785.js +1 -0
  120. package/dist/sankhyablocks/{p-5a8390f9.entry.js → p-a25ab2ff.entry.js} +1 -1
  121. package/dist/sankhyablocks/p-a696bbcd.entry.js +1 -0
  122. package/dist/sankhyablocks/{p-b3762105.entry.js → p-a9012341.entry.js} +1 -1
  123. package/dist/sankhyablocks/p-abcb646d.js +1 -0
  124. package/dist/sankhyablocks/{p-733eba69.js → p-bd2a845c.js} +1 -1
  125. package/dist/sankhyablocks/p-bfce617e.entry.js +1 -0
  126. package/dist/sankhyablocks/{p-3630a5ae.entry.js → p-c4b34e2b.entry.js} +1 -1
  127. package/dist/sankhyablocks/{p-8d513b64.js → p-c9440c8a.js} +1 -1
  128. package/dist/sankhyablocks/p-cd153f71.entry.js +1 -0
  129. package/dist/sankhyablocks/{p-e91bd00e.js → p-eac48627.js} +1 -1
  130. package/dist/sankhyablocks/{p-d7657667.js → p-ec7c87bb.js} +1 -1
  131. package/dist/sankhyablocks/p-fb6e3c65.entry.js +1 -0
  132. package/dist/sankhyablocks/sankhyablocks.esm.js +1 -1
  133. package/dist/types/components/snk-data-exporter/structure/ItemBuilder.d.ts +16 -0
  134. package/dist/types/components/snk-dynaform/subcomponents/snk-dynaform-detail-view/snk-dynaform-detail-view.d.ts +11 -0
  135. package/dist/types/components/snk-dynaform/subcomponents/snk-dynaform-form-view/snk-dynaform-form-view.d.ts +1 -0
  136. package/dist/types/components.d.ts +32 -0
  137. package/dist/types/lib/@types/index.d.ts +6 -0
  138. package/dist/types/lib/http/data-fetcher/fetchers/fetchDataExporter/interfaces/IFetchDataExporterParams.d.ts +2 -0
  139. package/package.json +1 -1
  140. package/dist/sankhyablocks/p-0f3698af.js +0 -1
  141. package/dist/sankhyablocks/p-1bc6849e.js +0 -1
  142. package/dist/sankhyablocks/p-2c65dc01.entry.js +0 -1
  143. package/dist/sankhyablocks/p-3cc67d50.entry.js +0 -1
  144. package/dist/sankhyablocks/p-4a53fbeb.entry.js +0 -1
  145. package/dist/sankhyablocks/p-7e63af25.entry.js +0 -1
  146. package/dist/sankhyablocks/p-a8a93568.entry.js +0 -1
  147. package/dist/sankhyablocks/p-acd3adf9.entry.js +0 -1
  148. package/dist/sankhyablocks/p-c3bc693a.js +0 -1
  149. package/dist/sankhyablocks/p-c6b6567f.entry.js +0 -1
  150. package/dist/sankhyablocks/p-ed1b1b14.js +0 -1
@@ -644,7 +644,11 @@ export class SnkDynaform {
644
644
  if (this._snkDataUnit) {
645
645
  this._snkDataUnit.ignoreSaveMessage = (this._currentViewMode === VIEW_MODE.GRID && !this.enableGridInsert);
646
646
  }
647
- return (h(Host, null, h("header", { class: { 'snk-crud--hidden': !this._headerVisible, 'snk-crud__header': true } }, h("div", { class: "snk-crud__header-top" }, h("snk-taskbar", { "data-element-id": "grid_top", key: "snkGridTopTaskbar", configName: this.configName, dataUnit: this._dataUnit, messagesBuilder: this.messagesBuilder, buttons: this._taskbarProcessor.buttons, disabledButtons: this._taskbarProcessor.disabledButtons, customButtons: this._taskbarProcessor.customButtons, resourceID: this._resourceID, primaryButton: "INSERT", overflowStrategy: "hiddenItems", alignRigth: true, actionsList: this.getActionsList(), customActionsList: this.buildTaskbarCustomActionsList(), sizeButtons: 'medium' })), h("snk-filter-bar", { ref: (ref) => this._snkFilterBar = ref, title: this.filterBarTitle, dataUnit: this._dataUnit, "data-element-id": "gridFilter", class: "snk-grid__filter-bar ez-align--top", configName: this.configName, messagesBuilder: this.messagesBuilder, resourceID: this._resourceID, onConfigUpdated: evt => this.handleFilterConfigUpdated(evt.detail), disablePersonalizedFilter: this.disablePersonalizedFilter, filterBarLegacyConfigName: this.filterBarLegacyConfigName, autoLoad: this.autoLoad, enableLockManagerLoadingComp: this.enableLockManagerLoadingComp, mode: this._filterMode, hideFilterButton: true, sizeChips: 'default' })), h("ez-view-stack", { ref: (ref) => this._viewStack = ref, "data-element-id": "crud" }, h("stack-item", { class: 'snk-crud__grid-stack-item' }, h("snk-grid", { ref: (ref) => this._snkGrid = ref, class: 'ez-flex ez-flex--column ez-size-height--full ez-size-width--full', filterBarTitle: this.filterBarTitle, "data-element-id": "crud_grid", configName: this.configName, onGridDoubleClick: () => this.gridToForm(true), taskbarManager: this.taskbarManager, onActionClick: evt => this.executeAction(evt.detail), messagesBuilder: this.messagesBuilder, actionsList: this.actionsList, statusResolver: this.statusResolver, multipleSelection: this.multipleSelection, presentationMode: this.presentationMode, recordsValidator: this.recordsValidator, selectionToastConfig: this.selectionToastConfig, useEnterLikeTab: this.useEnterLikeTab, canEdit: this._canEdit, resourceID: this._resourceID, disablePersonalizedFilter: this.disablePersonalizedFilter, gridLegacyConfigName: this.gridLegacyConfigName, filterBarLegacyConfigName: this.filterBarLegacyConfigName, autoLoad: this.autoLoad, autoFocus: this.autoFocus, enableGridInsert: this.enableGridInsert, enableLockManagerTaskbarClick: this.enableLockManagerTaskbarClick, enableLockManagerLoadingComp: this.enableLockManagerLoadingComp, strategyExporter: this.strategyExporter, multipleEditionEnabled: this.multipleEditionEnabled, paginationCounterMode: this.paginationCounterMode, hideHeader: true, hideGridTaskbar: true }, h("slot", { name: "GRID_TASKBAR_CUSTOM_ELEMENTS" }), h("slot", { name: "GRID_HEADER_CUSTOM_ELEMENTS" }), h("slot", { name: "SnkGridHeader" }), h("slot", { name: "SnkGridFooter" }), h("slot", { name: "SnkGridTaskBar" }))), h("stack-item", null, h("snk-dynaform-guides-view", { ref: (ref) => this._guidesViewer = ref, customGuidesConfig: this.customGuidesConfig, entityPath: (_a = this._snkDataUnit) === null || _a === void 0 ? void 0 : _a.entityName, messagesBuilder: this.messagesBuilder, onExit: () => this.setViewMode(VIEW_MODE.GRID), dataState: this._dataState, dataUnit: this._dataUnit, actionsList: this.actionsList, taskbarManager: this.taskbarManager, configName: this.configName, onActionClick: (evt) => this.executeAction(evt.detail), presentationMode: this.presentationMode, "data-element-id": "crud_form", canEdit: this._canEdit, recordsValidator: this.recordsValidator, resourceID: this._resourceID, detailTaskbarCustomContainerId: this.customContainerId, formLegacyConfigName: this.formLegacyConfigName, enableGridInsert: this.enableGridInsert, getCustomTitle: this.setCustomFormTitle, ignoreReadOnlyFormFields: this.ignoreReadOnlyFormFields, onFormConfigVisibilityChanged: evt => this._headerVisible = !evt.detail }, h("slot", { name: "GUIDES_VIEWER_TASKBAR_CUSTOM_ELEMENTS" }), this.renderCustomGuideSlots(), h("slot", { name: "SnkFormTaskBar" })))), h("snk-attach", { ref: (ref) => this._snkAttach = ref, registerKey: (_b = this.attachmentRegisterKey) !== null && _b !== void 0 ? _b : '', messagesBuilder: this.messagesBuilder, entityName: (_d = (_c = this._snkDataUnit) === null || _c === void 0 ? void 0 : _c.entityName) !== null && _d !== void 0 ? _d : '' }), h("snk-configurator", { ref: (ref) => this._snkConfigurator = ref, entityName: (_e = this._snkDataUnit) === null || _e === void 0 ? void 0 : _e.entityName, viewMode: this._currentViewMode, messagesBuilder: this.messagesBuilder, onConfigSelected: (evt) => this.setViewMode(evt.detail), onOpenConfig: (evt) => this.openConfig(evt.detail), showActionButtons: this.showActionButtons, onSave: evt => this.handleConfiguratorEvent(evt, 'SAVE'), onCancel: evt => this.handleConfiguratorEvent(evt, 'CANCEL'), resourceID: this._resourceID, customContainerId: this.customContainerId, layoutFormConfig: this.layoutFormConfig }), this.renderDynamicSearch(), h("div", { id: `${this.customContainerId}` }, h("slot", { name: "SnkConfigContainerSlot" }), h("slot", { name: "DETAIL_GRID_HEADER_CUSTOM_ELEMENTS" }), h("slot", { name: "DETAIL_GRID_TASKBAR_CUSTOM_ELEMENTS" }), h("slot", { name: "DETAIL_TASKBAR_CUSTOM_ELEMENTS" }))));
647
+ return (h(Host, null, h("header", { class: { 'snk-crud--hidden': !this._headerVisible, 'snk-crud__header': true } }, h("div", { class: "snk-crud__header-top" }, h("snk-taskbar", { "data-element-id": "grid_top", key: "snkGridTopTaskbar", configName: this.configName, dataUnit: this._dataUnit, messagesBuilder: this.messagesBuilder, buttons: this._taskbarProcessor.buttons, disabledButtons: this._taskbarProcessor.disabledButtons, customButtons: this._taskbarProcessor.customButtons, resourceID: this._resourceID, primaryButton: "INSERT", overflowStrategy: "hiddenItems", alignRigth: true, actionsList: this.getActionsList(), customActionsList: this.buildTaskbarCustomActionsList(), sizeButtons: 'medium' })), h("snk-filter-bar", { ref: (ref) => this._snkFilterBar = ref, title: this.filterBarTitle, dataUnit: this._dataUnit, "data-element-id": "gridFilter", class: {
648
+ 'snk-grid__filter-bar': true,
649
+ 'ez-align--top': true,
650
+ 'snk-crud__filter-bar--hidden': this._currentViewMode !== VIEW_MODE.GRID
651
+ }, configName: this.configName, messagesBuilder: this.messagesBuilder, resourceID: this._resourceID, onConfigUpdated: evt => this.handleFilterConfigUpdated(evt.detail), disablePersonalizedFilter: this.disablePersonalizedFilter, filterBarLegacyConfigName: this.filterBarLegacyConfigName, autoLoad: this.autoLoad, enableLockManagerLoadingComp: this.enableLockManagerLoadingComp, mode: this._filterMode, hideFilterButton: true, sizeChips: 'default' })), h("ez-view-stack", { ref: (ref) => this._viewStack = ref, "data-element-id": "crud" }, h("stack-item", { class: 'snk-crud__grid-stack-item' }, h("snk-grid", { ref: (ref) => this._snkGrid = ref, class: 'ez-flex ez-flex--column ez-size-height--full ez-size-width--full', filterBarTitle: this.filterBarTitle, "data-element-id": "crud_grid", configName: this.configName, onGridDoubleClick: () => this.gridToForm(true), taskbarManager: this.taskbarManager, onActionClick: evt => this.executeAction(evt.detail), messagesBuilder: this.messagesBuilder, actionsList: this.actionsList, statusResolver: this.statusResolver, multipleSelection: this.multipleSelection, presentationMode: this.presentationMode, recordsValidator: this.recordsValidator, selectionToastConfig: this.selectionToastConfig, useEnterLikeTab: this.useEnterLikeTab, canEdit: this._canEdit, resourceID: this._resourceID, disablePersonalizedFilter: this.disablePersonalizedFilter, gridLegacyConfigName: this.gridLegacyConfigName, filterBarLegacyConfigName: this.filterBarLegacyConfigName, autoLoad: this.autoLoad, autoFocus: this.autoFocus, enableGridInsert: this.enableGridInsert, enableLockManagerTaskbarClick: this.enableLockManagerTaskbarClick, enableLockManagerLoadingComp: this.enableLockManagerLoadingComp, strategyExporter: this.strategyExporter, multipleEditionEnabled: this.multipleEditionEnabled, paginationCounterMode: this.paginationCounterMode, hideHeader: true, hideGridTaskbar: true }, h("slot", { name: "GRID_TASKBAR_CUSTOM_ELEMENTS" }), h("slot", { name: "GRID_HEADER_CUSTOM_ELEMENTS" }), h("slot", { name: "SnkGridHeader" }), h("slot", { name: "SnkGridFooter" }), h("slot", { name: "SnkGridTaskBar" }))), h("stack-item", null, h("snk-dynaform-guides-view", { ref: (ref) => this._guidesViewer = ref, customGuidesConfig: this.customGuidesConfig, entityPath: (_a = this._snkDataUnit) === null || _a === void 0 ? void 0 : _a.entityName, messagesBuilder: this.messagesBuilder, onExit: () => this.setViewMode(VIEW_MODE.GRID), dataState: this._dataState, dataUnit: this._dataUnit, actionsList: this.actionsList, taskbarManager: this.taskbarManager, configName: this.configName, onActionClick: (evt) => this.executeAction(evt.detail), presentationMode: this.presentationMode, "data-element-id": "crud_form", canEdit: this._canEdit, recordsValidator: this.recordsValidator, resourceID: this._resourceID, detailTaskbarCustomContainerId: this.customContainerId, formLegacyConfigName: this.formLegacyConfigName, enableGridInsert: this.enableGridInsert, getCustomTitle: this.setCustomFormTitle, ignoreReadOnlyFormFields: this.ignoreReadOnlyFormFields, onFormConfigVisibilityChanged: evt => this._headerVisible = !evt.detail }, h("slot", { name: "GUIDES_VIEWER_TASKBAR_CUSTOM_ELEMENTS" }), this.renderCustomGuideSlots(), h("slot", { name: "SnkFormTaskBar" })))), h("snk-attach", { ref: (ref) => this._snkAttach = ref, registerKey: (_b = this.attachmentRegisterKey) !== null && _b !== void 0 ? _b : '', messagesBuilder: this.messagesBuilder, entityName: (_d = (_c = this._snkDataUnit) === null || _c === void 0 ? void 0 : _c.entityName) !== null && _d !== void 0 ? _d : '' }), h("snk-configurator", { ref: (ref) => this._snkConfigurator = ref, entityName: (_e = this._snkDataUnit) === null || _e === void 0 ? void 0 : _e.entityName, viewMode: this._currentViewMode, messagesBuilder: this.messagesBuilder, onConfigSelected: (evt) => this.setViewMode(evt.detail), onOpenConfig: (evt) => this.openConfig(evt.detail), showActionButtons: this.showActionButtons, onSave: evt => this.handleConfiguratorEvent(evt, 'SAVE'), onCancel: evt => this.handleConfiguratorEvent(evt, 'CANCEL'), resourceID: this._resourceID, customContainerId: this.customContainerId, layoutFormConfig: this.layoutFormConfig }), this.renderDynamicSearch(), h("div", { id: `${this.customContainerId}` }, h("slot", { name: "SnkConfigContainerSlot" }), h("slot", { name: "DETAIL_GRID_HEADER_CUSTOM_ELEMENTS" }), h("slot", { name: "DETAIL_GRID_TASKBAR_CUSTOM_ELEMENTS" }), h("slot", { name: "DETAIL_TASKBAR_CUSTOM_ELEMENTS" }))));
648
652
  }
649
653
  static get is() { return "snk-dynaform"; }
650
654
  static get encapsulation() { return "scoped"; }
@@ -4,7 +4,36 @@
4
4
  flex-direction: column;
5
5
  width: 100%;
6
6
  height: 100%;
7
- overflow: hidden;
7
+ overflow-x: hidden;
8
+ overflow-y: auto;
9
+ padding: var(--space--4, 4px);
10
+ scrollbar-width: auto;
11
+ scrollbar-color: var(--color--strokes, #E1E2E5) transparent;
12
+ }
13
+
14
+ :host::-webkit-scrollbar {
15
+ width: var(--space--14, 14px);
16
+ height: var(--space--14, 14px);
17
+ }
18
+
19
+ :host::-webkit-scrollbar-track {
20
+ background: transparent;
21
+ }
22
+
23
+ :host::-webkit-scrollbar-thumb {
24
+ background-color: var(--color--strokes, #E1E2E5);
25
+ border-radius: var(--border--radius-100, 100px);
26
+ border: 2px solid transparent;
27
+ background-clip: padding-box;
28
+ }
29
+
30
+ :host::-webkit-scrollbar-thumb:hover {
31
+ background-color: var(--color--petroleum-100, #C8CCD3);
32
+ background-clip: padding-box;
33
+ }
34
+
35
+ :host::-webkit-scrollbar-corner {
36
+ background: transparent;
8
37
  }
9
38
 
10
39
  .level-path {
@@ -31,15 +60,29 @@
31
60
 
32
61
  snk-data-unit {
33
62
  flex: 1;
63
+ /* Permite encolher abaixo do conteúdo p/ a grade rolar quando o painel
64
+ inferior é redimensionado abaixo da altura natural. */
65
+ min-height: 0;
34
66
  gap: var(--space--12, 12px);
35
67
  display: flex;
36
68
  flex-direction: column;
37
69
  }
38
70
 
71
+ /* view-stack preenche o espaço restante e pode encolher (grade rola dentro). */
72
+ snk-data-unit ez-view-stack {
73
+ flex: 1;
74
+ min-height: 0;
75
+ }
76
+
39
77
  snk-grid {
40
78
  height: 100%;
41
79
  --snk-grid-margin: 0px;
42
80
  --snk-grid-box-shadow: none;
81
+ --snk-grid-min-height: 135px;
82
+ }
83
+
84
+ .form-and-detail-container > ez-tabselector {
85
+ flex-shrink: 0;
43
86
  }
44
87
 
45
88
  .form-and-detail-container {
@@ -49,6 +92,33 @@ snk-grid {
49
92
  width: 100%;
50
93
  overflow: auto;
51
94
  padding: var(--space--12, 12px);
95
+ scrollbar-width: auto;
96
+ scrollbar-color: var(--color--strokes, #E1E2E5) transparent;
97
+ }
98
+
99
+ .form-and-detail-container::-webkit-scrollbar {
100
+ width: var(--space--14, 14px);
101
+ height: var(--space--14, 14px);
102
+ }
103
+
104
+ .form-and-detail-container::-webkit-scrollbar-track {
105
+ background: transparent;
106
+ }
107
+
108
+ .form-and-detail-container::-webkit-scrollbar-thumb {
109
+ background-color: var(--color--strokes, #E1E2E5);
110
+ border-radius: var(--border--radius-100, 100px);
111
+ border: 2px solid transparent;
112
+ background-clip: padding-box;
113
+ }
114
+
115
+ .form-and-detail-container::-webkit-scrollbar-thumb:hover {
116
+ background-color: var(--color--petroleum-100, #C8CCD3);
117
+ background-clip: padding-box;
118
+ }
119
+
120
+ .form-and-detail-container::-webkit-scrollbar-corner {
121
+ background: transparent;
52
122
  }
53
123
 
54
124
  .ez-tabselector-internal {
@@ -13,6 +13,8 @@ import { DEFAULT_TASKBAR_BUTTONS, getTopTaskBarId } from '../../../snk-crud/util
13
13
  export class SnkDynaformDetailView {
14
14
  constructor() {
15
15
  this._taskbarProcessor = new SimpleTaskbarProcessor(DEFAULT_TASKBAR_BUTTONS);
16
+ /** Evita repetir a carga inicial da grade no mesmo mount da aba. */
17
+ this._didInitialLoad = false;
16
18
  this._currentView = 0;
17
19
  this.attachmentRegisterKey = undefined;
18
20
  this._fieldToGetFocus = undefined;
@@ -161,6 +163,27 @@ export class SnkDynaformDetailView {
161
163
  dataUnitReadyHandler(evt) {
162
164
  this.dataUnit = evt.detail;
163
165
  this.loadMetadata();
166
+ this.ensureInitialLoad();
167
+ }
168
+ /**
169
+ * Dispara a carga inicial da grade quando a aba é montada com o master já
170
+ * selecionado. A carga do filho normalmente é disparada pelo evento de troca
171
+ * de seleção do master; uma aba montada tardiamente (aberta depois que o
172
+ * registro master já estava selecionado) não recebe esse evento e ficaria
173
+ * vazia até um refresh manual. Navegações seguintes do master continuam
174
+ * recarregando pela assinatura existente do DataUnit.
175
+ */
176
+ ensureInitialLoad() {
177
+ var _a, _b, _c, _d, _e;
178
+ if (this._didInitialLoad) {
179
+ return;
180
+ }
181
+ const dataUnit = this.dataUnit;
182
+ const parentDataUnit = (_a = dataUnit === null || dataUnit === void 0 ? void 0 : dataUnit.getParentDataUnit) === null || _a === void 0 ? void 0 : _a.call(dataUnit);
183
+ if (((_b = parentDataUnit === null || parentDataUnit === void 0 ? void 0 : parentDataUnit.getSelectedRecord) === null || _b === void 0 ? void 0 : _b.call(parentDataUnit)) && ((_d = (_c = dataUnit === null || dataUnit === void 0 ? void 0 : dataUnit.records) === null || _c === void 0 ? void 0 : _c.length) !== null && _d !== void 0 ? _d : 0) === 0) {
184
+ this._didInitialLoad = true;
185
+ (_e = dataUnit === null || dataUnit === void 0 ? void 0 : dataUnit.loadData) === null || _e === void 0 ? void 0 : _e.call(dataUnit);
186
+ }
164
187
  }
165
188
  getFormFields() {
166
189
  var _a, _b, _c;
@@ -5,6 +5,7 @@
5
5
  flex-wrap: wrap;
6
6
  background-color: var(--background--xlight);
7
7
  padding: var(--space--12, 12px);
8
+ padding-right: 0;
8
9
  border-radius: var(--border--radius-medium);
9
10
  border: 1px solid var(--color--petroleum-100, #C8CCD3);
10
11
 
@@ -12,8 +13,41 @@
12
13
  }
13
14
 
14
15
  ez-form-view {
15
- padding: var(--space--6 ,6px) 0;
16
+ padding-right: var(--space--12, 12px);
16
17
  --ez-form-view__item--padding: 0;
18
+ min-height: 0;
19
+ overflow-y: auto;
20
+ /* Scrollbar moderna (Firefox). Levar para biblioteca após validação*/
21
+ scrollbar-width: auto;
22
+ scrollbar-color: var(--color--strokes, #E1E2E5) transparent;
23
+ }
24
+
25
+ /* Scrollbar moderna (WebKit/Chromium): trilho transparente, polegar em pílula
26
+ flutuante, some no fundo e escurece no hover. Levar para biblioteca após validação */
27
+ ez-form-view::-webkit-scrollbar {
28
+ width: 14px;
29
+ height: 14px;
30
+ }
31
+
32
+ ez-form-view::-webkit-scrollbar-track {
33
+ background: transparent;
34
+ }
35
+
36
+ ez-form-view::-webkit-scrollbar-thumb {
37
+ background-color: var(--color--strokes, #E1E2E5);
38
+ border-radius: 999px;
39
+ /* Borda transparente + background-clip cria o respiro em volta do polegar. */
40
+ border: 2px solid transparent;
41
+ background-clip: padding-box;
42
+ }
43
+
44
+ ez-form-view::-webkit-scrollbar-thumb:hover {
45
+ background-color: var(--color--petroleum-100, #C8CCD3);
46
+ background-clip: padding-box;
47
+ }
48
+
49
+ ez-form-view::-webkit-scrollbar-corner {
50
+ background: transparent;
17
51
  }
18
52
 
19
53
  .level-path{
@@ -124,6 +124,9 @@ export class SnkDynaformFormView {
124
124
  this.dataUnit.unsubscribe(this.dataUnitObserver);
125
125
  }
126
126
  }
127
+ async componentWillLoad() {
128
+ await this.initLayoutFormConfig();
129
+ }
127
130
  componentDidLoad() {
128
131
  if (this.customEditors) {
129
132
  this.observePropsCustomEditor(this.customEditors);
@@ -131,7 +134,6 @@ export class SnkDynaformFormView {
131
134
  if (this.fieldsProps) {
132
135
  this.observeFieldsProps(this.fieldsProps);
133
136
  }
134
- this.initLayoutFormConfig();
135
137
  }
136
138
  async initLayoutFormConfig() {
137
139
  const _application = ApplicationContext.getContextValue("__SNK__APPLICATION__");
@@ -31,6 +31,8 @@ snk-dynaform-form-view {
31
31
 
32
32
  /*public*/
33
33
  padding: 0px;
34
+ padding: var(--space--8, 8px);
35
+ padding-top: 0;
34
36
  }
35
37
 
36
38
  .snk-guides-viewer__detail-container {
@@ -41,20 +43,106 @@ snk-dynaform-form-view {
41
43
  max-height: none;
42
44
  min-height: 0;
43
45
  overflow: hidden;
44
- margin-bottom: var(--space--12, 12px);
45
46
  }
46
47
 
47
- .snk-guides-viewer__container > snk-dynaform-form-view {
48
- max-height: 300px;
48
+ .snk-guides-viewer__master {
49
+ display: flex;
50
+ flex-direction: column;
51
+ min-height: 0;
52
+ height: 100%;
53
+ }
54
+
55
+ /* Painéis do ez-split-panel: preenchem a faixa e deixam o conteúdo rolar. */
56
+ .snk-guides-viewer__split {
57
+ flex: 1;
58
+ min-height: 0;
59
+ }
60
+
61
+ .snk-guides-viewer__split-master,
62
+ .snk-guides-viewer__split-content {
63
+ display: flex;
64
+ flex-direction: column;
65
+ min-height: 0;
66
+ overflow: hidden;
67
+ }
68
+
69
+ /* O master (structural) não tem borda visível; remove o raio herdado do
70
+ ez-split-item para o conteúdo/scroll não ser cortado nos cantos. */
71
+ .snk-guides-viewer__split-master {
72
+ border-radius: 0;
73
+ }
74
+
75
+ /* Painel com contorno: inseta o conteúdo em >= raio da borda, para o scroll/
76
+ barra ficar na região reta e não cortar o canto arredondado.
77
+ Classe dobrada para vencer o `.structural__item { padding: 0 }` do ez-ui. */
78
+ .snk-guides-viewer__split-content.snk-guides-viewer__split-content {
79
+ box-sizing: border-box;
80
+ padding-top: var(--space--4, 4px);
81
+ }
82
+
83
+ /* Preenche o painel inferior: abas fixas no topo, scroll no detail-container.
84
+ Sem transbordo aqui, então o split-item não vira o container de scroll. */
85
+ .snk-guides-viewer__panel {
86
+ display: flex;
87
+ flex-direction: column;
88
+ flex: 1;
89
+ min-height: 0;
90
+ height: 100%;
91
+ overflow: hidden;
92
+ }
93
+
94
+ /* Alterna resumo/expandido só por CSS — o form-view permanece montado. */
95
+ .snk-guides-viewer__master .snk-guides-viewer__master-summary {
96
+ display: none;
97
+ }
98
+ .snk-guides-viewer__master--collapsed .snk-guides-viewer__master-summary {
99
+ display: flex;
100
+ }
101
+ .snk-guides-viewer__master--collapsed .snk-guides-viewer__master-expanded {
102
+ display: none;
103
+ }
104
+
105
+ .snk-guides-viewer__master-expanded {
106
+ position: relative;
107
+ display: flex;
108
+ flex-direction: column;
109
+ min-height: 0;
110
+ flex: 1;
111
+ overflow: visible;
112
+ margin-top: var(--space--6, 6px);
113
+ }
114
+
115
+ /* Altura limitada; o scroll é interno ao form-view (a borda fica sempre fixa). */
116
+ .snk-guides-viewer__master-expanded > snk-dynaform-form-view {
117
+ flex: 1;
49
118
  min-height: 0;
50
- overflow-y: auto;
51
119
  }
52
120
 
121
+ /* form-view e detail-view ficam com altura limitada; o scroll é interno
122
+ (dentro do form-view a borda fica fixa; a grade rola internamente). */
53
123
  .snk-guides-viewer__detail-container > snk-dynaform-form-view,
54
124
  .snk-guides-viewer__detail-container > snk-dynaform-detail-view {
55
125
  flex: 1;
56
126
  min-height: 0;
57
- overflow-y: auto;
127
+ }
128
+
129
+ /* Cada aba aberta fica montada; só a ativa é visível. */
130
+ .snk-guides-viewer__guide-content {
131
+ display: flex;
132
+ flex-direction: column;
133
+ flex: 1;
134
+ min-height: 0;
135
+ overflow: hidden;
136
+ }
137
+
138
+ .snk-guides-viewer__guide-content--hidden {
139
+ display: none;
140
+ }
141
+
142
+ .snk-guides-viewer__guide-content > snk-dynaform-form-view,
143
+ .snk-guides-viewer__guide-content > snk-dynaform-detail-view {
144
+ flex: 1;
145
+ min-height: 0;
58
146
  }
59
147
 
60
148
  .snk-guides-viewer__header {
@@ -66,7 +154,7 @@ snk-dynaform-form-view {
66
154
  /*public*/
67
155
  z-index: var(--snk-guides-viewer__header--z-index);
68
156
  background-color: var(--snk-guides-viewer__header--background-color);
69
- padding: var(--snk-guides-viewer--space-small);
157
+ padding-inline: var(--snk-guides-viewer--space-small);
70
158
  }
71
159
 
72
160
  .snk-guides-viewer__header-breadcrumb {
@@ -95,4 +183,139 @@ snk-dynaform-form-view {
95
183
  box-sizing: border-box;
96
184
  padding: 0 var(--space--12, 12px);
97
185
  flex-shrink: 0;
186
+ }
187
+
188
+ .snk-guides-viewer__master-summary {
189
+ position: relative;
190
+ display: flex;
191
+ align-items: center;
192
+ justify-content: space-between;
193
+ gap: var(--space--12, 12px);
194
+ box-sizing: border-box;
195
+ margin: var(--space--2xs, 8px) var(--space--12, 12px);
196
+ padding: var(--space--2xs, 8px) var(--space--12, 12px);
197
+ border: 1px solid var(--color--strokes, #E1E2E5);
198
+ border-radius: var(--border--radius-medium, 12px);
199
+ background: var(--background--medium, #f0f3f7);
200
+ box-shadow: var(--shadow--small, 0 0 16px rgba(0, 38, 111, 0.07));
201
+ cursor: pointer;
202
+ text-align: left;
203
+ flex-shrink: 0;
204
+ overflow: hidden;
205
+ transition: background 0.15s ease, border-color 0.15s ease;
206
+ }
207
+
208
+ .snk-guides-viewer__master-summary:hover,
209
+ .snk-guides-viewer__master-summary:focus-visible {
210
+ background: var(--background--xlight, #fff);
211
+ border-color: var(--color--primary, #4e4e4e);
212
+ }
213
+
214
+ .snk-guides-viewer__master-summary-fields {
215
+ display: flex;
216
+ gap: var(--space--large, 24px);
217
+ flex: 1;
218
+ min-width: 0;
219
+ overflow: hidden;
220
+ white-space: nowrap;
221
+ /* Espaço p/ o box-shadow do realce de campo inválido não ser cortado. */
222
+ padding: var(--space--4, 4px);
223
+ margin: calc(-1 * var(--space--4, 4px));
224
+ }
225
+
226
+ /* Row-fantasma: fora do fluxo, invisível, largura natural — só para medir. */
227
+ .snk-guides-viewer__master-summary-measure {
228
+ position: absolute;
229
+ top: 0;
230
+ left: 0;
231
+ display: flex;
232
+ gap: var(--space--large, 24px);
233
+ white-space: nowrap;
234
+ visibility: hidden;
235
+ pointer-events: none;
236
+ z-index: -1;
237
+ }
238
+
239
+ .snk-guides-viewer__master-summary-item {
240
+ display: inline-flex;
241
+ flex-direction: column;
242
+ gap: 2px;
243
+ min-width: 0;
244
+ padding: var(--space--4, 4px);
245
+ }
246
+
247
+ .snk-guides-viewer__master-summary-label {
248
+ display: flex;
249
+ align-items: center;
250
+ gap: 2px;
251
+ max-width: 240px;
252
+ color: var(--text--primary, #626e82);
253
+ font-size: var(--title--small, 12px);
254
+ font-weight: var(--text-weight--medium, 400);
255
+ }
256
+
257
+ .snk-guides-viewer__master-summary-label-text {
258
+ overflow: hidden;
259
+ text-overflow: ellipsis;
260
+ white-space: nowrap;
261
+ min-width: 0;
262
+ }
263
+
264
+ /* Marcador de campo obrigatório (mesmo estilo do ez-classic-input). */
265
+ .snk-guides-viewer__master-summary-required {
266
+ flex-shrink: 0;
267
+ color: var(--color--red-600, #BD0025);
268
+ font-weight: 700;
269
+ }
270
+
271
+ /* Campo obrigatório não preenchido ao salvar: realce vermelho.
272
+ box-shadow (não outline) p/ compatibilidade com browsers antigos; o wrapper
273
+ .master-summary-fields tem padding p/ o anel não ser cortado pelo overflow. */
274
+ .snk-guides-viewer__master-summary-item--invalid {
275
+ box-shadow: 0 0 0 1px var(--color--red-600, #BD0025);
276
+ border-radius: var(--border--radius-4, 4px);
277
+ }
278
+
279
+ .snk-guides-viewer__master-summary-value {
280
+ color: var(--title--primary, #2b3a54);
281
+ font-size: var(--text--large, 14px);
282
+ font-weight: 700;
283
+ max-width: 240px;
284
+ overflow: hidden;
285
+ text-overflow: ellipsis;
286
+ }
287
+
288
+ .snk-guides-viewer__master-summary-chevron {
289
+ flex-shrink: 0;
290
+ color: var(--title--primary, #2b3a54);
291
+ }
292
+
293
+ /* Botão recolher (ez-button) centrado sobre a borda superior do card master,
294
+ fora da área dos inputs — não sobrepõe campos no layout lado-a-lado.
295
+ Oculto por padrão; aparece com transição ao passar o mouse (ou focar) o form. */
296
+ /* Pendura o botão a partir da borda superior do master (topo alinhado à margem
297
+ reservada). Sem transbordo para cima, então não é cortado pelo overflow do
298
+ container mesmo com a margem pequena. */
299
+ .snk-guides-viewer__master-collapse-btn {
300
+ position: absolute;
301
+ top: calc(-1 * var(--space--6, 6px));
302
+ left: 50%;
303
+ transform: translate(-50%, 0);
304
+ z-index: 1;
305
+ opacity: 0;
306
+ visibility: hidden;
307
+ transition: opacity 0.2s ease, visibility 0.2s ease;
308
+ }
309
+
310
+ .snk-guides-viewer__master:hover .snk-guides-viewer__master-collapse-btn,
311
+ .snk-guides-viewer__master:focus-within .snk-guides-viewer__master-collapse-btn,
312
+ .snk-guides-viewer__master-collapse-btn:hover {
313
+ opacity: 1;
314
+ visibility: visible;
315
+ }
316
+
317
+ /* Borda do botão igual à borda do card master (form-view usa --color--petroleum-100). */
318
+ .snk-guides-viewer__master-collapse-btn ez-button {
319
+ --ez-button--border: 1px solid var(--color--petroleum-100, #C8CCD3);
320
+ --ez-button--hover--border: 1px solid var(--color--petroleum-100, #C8CCD3);
98
321
  }