@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.
- package/dist/cjs/{ConfigStorage-a28eceb2.js → ConfigStorage-156bfcac.js} +2 -2
- package/dist/cjs/{DataFetcher-98d95e8f.js → DataFetcher-d13b4637.js} +12 -0
- package/dist/cjs/{ISave-a9815bb3.js → ISave-55d9dcc3.js} +1 -1
- package/dist/cjs/{SnkFormConfigManager-af47ba2f.js → SnkFormConfigManager-5cb9a39c.js} +2 -2
- package/dist/cjs/{SnkMultiSelectionListDataSource-13774e5f.js → SnkMultiSelectionListDataSource-5c5badfc.js} +5 -5
- package/dist/cjs/{auth-fetcher-9c257a1f.js → auth-fetcher-d1715459.js} +1 -1
- package/dist/cjs/{dataunit-fetcher-afc246d8.js → dataunit-fetcher-fae710c5.js} +1 -1
- package/dist/cjs/{form-config-fetcher-1ce4125c.js → form-config-fetcher-bbebdcb8.js} +1 -1
- package/dist/cjs/{index-e3e39724.js → index-bc950921.js} +6 -0
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/pesquisa-grid_2.cjs.entry.js +5 -5
- package/dist/cjs/sankhyablocks.cjs.js +1 -1
- package/dist/cjs/snk-actions-button_9.cjs.entry.js +9 -9
- package/dist/cjs/snk-application.cjs.entry.js +7 -7
- package/dist/cjs/snk-attach_11.cjs.entry.js +14 -12
- package/dist/cjs/snk-crud.cjs.entry.js +14 -10
- package/dist/cjs/snk-data-exporter.cjs.entry.js +59 -14
- package/dist/cjs/{snk-data-unit-ab570f87.js → snk-data-unit-32237a2d.js} +2 -2
- package/dist/cjs/snk-data-unit.cjs.entry.js +3 -3
- package/dist/cjs/snk-detail-view.cjs.entry.js +9 -9
- package/dist/cjs/snk-dynaform-detail-view_2.cjs.entry.js +33 -10
- package/dist/cjs/{snk-dynaform-guides-view-30ce5a8c.js → snk-dynaform-guides-view-2c7c6ce4.js} +389 -42
- package/dist/cjs/snk-dynaform-guides-view.cjs.entry.js +6 -6
- package/dist/cjs/snk-dynaform.cjs.entry.js +14 -10
- package/dist/cjs/snk-filter-bar_4.cjs.entry.js +4 -4
- package/dist/cjs/snk-form_2.cjs.entry.js +4 -4
- package/dist/cjs/snk-grid.cjs.entry.js +8 -8
- package/dist/cjs/{snk-guides-viewer-2a55fa3a.js → snk-guides-viewer-67b9cca9.js} +2 -2
- package/dist/cjs/snk-guides-viewer.cjs.entry.js +7 -7
- package/dist/cjs/snk-layout-form-config.cjs.entry.js +5 -5
- package/dist/cjs/snk-pesquisa.cjs.entry.js +5 -5
- package/dist/cjs/snk-taskbar.cjs.entry.js +2 -2
- package/dist/cjs/{taskbar-elements-80eddec8.js → taskbar-elements-25f800b3.js} +1 -1
- package/dist/cjs/{taskbarUtils-4ca4235e.js → taskbarUtils-99aaa01f.js} +11 -6
- package/dist/collection/components/snk-actions-button/snk-actions-button.js +3 -3
- package/dist/collection/components/snk-crud/snk-crud.css +9 -4
- package/dist/collection/components/snk-crud/snk-crud.js +5 -1
- package/dist/collection/components/snk-crud/utils/taskbarUtils.js +5 -0
- package/dist/collection/components/snk-data-exporter/exporter-strategy/ClientSideExporterStrategy.js +2 -2
- package/dist/collection/components/snk-data-exporter/snk-data-exporter.js +8 -4
- package/dist/collection/components/snk-data-exporter/structure/ItemBuilder.js +43 -2
- package/dist/collection/components/snk-dynaform/snk-dynaform.css +9 -4
- package/dist/collection/components/snk-dynaform/snk-dynaform.js +5 -1
- package/dist/collection/components/snk-dynaform/subcomponents/snk-dynaform-detail-view/snk-dynaform-detail-view.css +71 -1
- package/dist/collection/components/snk-dynaform/subcomponents/snk-dynaform-detail-view/snk-dynaform-detail-view.js +23 -0
- package/dist/collection/components/snk-dynaform/subcomponents/snk-dynaform-form-view/snk-dynaform-form-view.css +35 -1
- package/dist/collection/components/snk-dynaform/subcomponents/snk-dynaform-form-view/snk-dynaform-form-view.js +3 -1
- package/dist/collection/components/snk-dynaform/subcomponents/snk-dynaform-guides-view/snk-dynaform-guides-view.css +229 -6
- package/dist/collection/components/snk-dynaform/subcomponents/snk-dynaform-guides-view/snk-dynaform-guides-view.js +458 -38
- package/dist/collection/components/snk-dynaform-form-config/SnkFormConfigManager.js +8 -1
- package/dist/collection/components/snk-filter-bar/snk-filter-bar.js +1 -1
- package/dist/collection/lib/@types/index.js +6 -0
- package/dist/collection/lib/message/resources/en-us/snk-crud.msg.js +4 -0
- package/dist/collection/lib/message/resources/es-es/snk-crud.msg.js +4 -0
- package/dist/collection/lib/message/resources/pt-br/snk-crud.msg.js +4 -0
- package/dist/components/ISave.js +6 -0
- package/dist/components/SnkMessageBuilder.js +12 -0
- package/dist/components/snk-actions-button2.js +3 -3
- package/dist/components/snk-crud.js +6 -2
- package/dist/components/snk-data-exporter2.js +53 -8
- package/dist/components/snk-dynaform-detail-view2.js +419 -41
- package/dist/components/snk-dynaform-form-view2.js +4 -2
- package/dist/components/snk-dynaform.js +6 -2
- package/dist/components/snk-filter-bar2.js +1 -1
- package/dist/components/taskbarUtils.js +5 -0
- package/dist/esm/{ConfigStorage-346d781d.js → ConfigStorage-0d1c0695.js} +2 -2
- package/dist/esm/{DataFetcher-7d8df5a2.js → DataFetcher-70de9419.js} +12 -0
- package/dist/esm/{ISave-2117075a.js → ISave-f5704813.js} +1 -1
- package/dist/esm/{SnkFormConfigManager-066d370b.js → SnkFormConfigManager-e7f05f79.js} +2 -2
- package/dist/esm/{SnkMultiSelectionListDataSource-7c5ffcd4.js → SnkMultiSelectionListDataSource-6ac291a9.js} +5 -5
- package/dist/esm/{auth-fetcher-5891e22c.js → auth-fetcher-e34880e5.js} +1 -1
- package/dist/esm/{dataunit-fetcher-5dcb0e89.js → dataunit-fetcher-d26e4a08.js} +1 -1
- package/dist/esm/{form-config-fetcher-8e2082f3.js → form-config-fetcher-98c42169.js} +1 -1
- package/dist/esm/{index-b40568ff.js → index-c6721886.js} +6 -0
- package/dist/esm/loader.js +1 -1
- package/dist/esm/pesquisa-grid_2.entry.js +5 -5
- package/dist/esm/sankhyablocks.js +1 -1
- package/dist/esm/snk-actions-button_9.entry.js +9 -9
- package/dist/esm/snk-application.entry.js +7 -7
- package/dist/esm/snk-attach_11.entry.js +14 -12
- package/dist/esm/snk-crud.entry.js +14 -10
- package/dist/esm/snk-data-exporter.entry.js +59 -14
- package/dist/esm/{snk-data-unit-f697345b.js → snk-data-unit-ff57ac90.js} +2 -2
- package/dist/esm/snk-data-unit.entry.js +3 -3
- package/dist/esm/snk-detail-view.entry.js +9 -9
- package/dist/esm/snk-dynaform-detail-view_2.entry.js +33 -10
- package/dist/esm/{snk-dynaform-guides-view-6aae38f7.js → snk-dynaform-guides-view-0dfbefc1.js} +390 -43
- package/dist/esm/snk-dynaform-guides-view.entry.js +6 -6
- package/dist/esm/snk-dynaform.entry.js +14 -10
- package/dist/esm/snk-filter-bar_4.entry.js +4 -4
- package/dist/esm/snk-form_2.entry.js +4 -4
- package/dist/esm/snk-grid.entry.js +8 -8
- package/dist/esm/{snk-guides-viewer-3ea7e312.js → snk-guides-viewer-31a0a23d.js} +2 -2
- package/dist/esm/snk-guides-viewer.entry.js +7 -7
- package/dist/esm/snk-layout-form-config.entry.js +5 -5
- package/dist/esm/snk-pesquisa.entry.js +5 -5
- package/dist/esm/snk-taskbar.entry.js +2 -2
- package/dist/esm/{taskbar-elements-63651ca7.js → taskbar-elements-ba9d6889.js} +1 -1
- package/dist/esm/{taskbarUtils-a43e4bba.js → taskbarUtils-cb9db0d9.js} +11 -6
- package/dist/sankhyablocks/{p-3190ac29.js → p-097d75b3.js} +2 -2
- package/dist/sankhyablocks/{p-aa9d61fa.entry.js → p-12579574.entry.js} +1 -1
- package/dist/sankhyablocks/{p-741f1ad0.entry.js → p-1d31aec3.entry.js} +1 -1
- package/dist/sankhyablocks/{p-6f2de911.entry.js → p-250b273e.entry.js} +1 -1
- package/dist/sankhyablocks/p-2a83f20e.entry.js +1 -0
- package/dist/sankhyablocks/p-2c4f7fdd.entry.js +1 -0
- package/dist/sankhyablocks/{p-3072136e.js → p-2ec98523.js} +1 -1
- package/dist/sankhyablocks/{p-10d883b0.js → p-4dd574d6.js} +1 -1
- package/dist/sankhyablocks/{p-7827871d.entry.js → p-541c72ec.entry.js} +1 -1
- package/dist/sankhyablocks/p-5aeae67f.js +1 -0
- package/dist/sankhyablocks/p-5ef0e9a8.entry.js +1 -0
- package/dist/sankhyablocks/{p-9e97fabb.entry.js → p-6d3bcabf.entry.js} +1 -1
- package/dist/sankhyablocks/p-6f60df43.js +1 -0
- package/dist/sankhyablocks/{p-58e0f14b.entry.js → p-846d8f79.entry.js} +1 -1
- package/dist/sankhyablocks/{p-77f608bc.entry.js → p-885262ce.entry.js} +1 -1
- package/dist/sankhyablocks/{p-c1e168a2.js → p-8d1ef77a.js} +1 -1
- package/dist/sankhyablocks/{p-13f91e7e.js → p-8d81c8d3.js} +1 -1
- package/dist/sankhyablocks/{p-ee192f06.entry.js → p-8f5dd87d.entry.js} +1 -1
- package/dist/sankhyablocks/{p-c5889dae.js → p-90037547.js} +1 -1
- package/dist/sankhyablocks/p-9e02a785.js +1 -0
- package/dist/sankhyablocks/{p-5a8390f9.entry.js → p-a25ab2ff.entry.js} +1 -1
- package/dist/sankhyablocks/p-a696bbcd.entry.js +1 -0
- package/dist/sankhyablocks/{p-b3762105.entry.js → p-a9012341.entry.js} +1 -1
- package/dist/sankhyablocks/p-abcb646d.js +1 -0
- package/dist/sankhyablocks/{p-733eba69.js → p-bd2a845c.js} +1 -1
- package/dist/sankhyablocks/p-bfce617e.entry.js +1 -0
- package/dist/sankhyablocks/{p-3630a5ae.entry.js → p-c4b34e2b.entry.js} +1 -1
- package/dist/sankhyablocks/{p-8d513b64.js → p-c9440c8a.js} +1 -1
- package/dist/sankhyablocks/p-cd153f71.entry.js +1 -0
- package/dist/sankhyablocks/{p-e91bd00e.js → p-eac48627.js} +1 -1
- package/dist/sankhyablocks/{p-d7657667.js → p-ec7c87bb.js} +1 -1
- package/dist/sankhyablocks/p-fb6e3c65.entry.js +1 -0
- package/dist/sankhyablocks/sankhyablocks.esm.js +1 -1
- package/dist/types/components/snk-data-exporter/structure/ItemBuilder.d.ts +16 -0
- package/dist/types/components/snk-dynaform/subcomponents/snk-dynaform-detail-view/snk-dynaform-detail-view.d.ts +11 -0
- package/dist/types/components/snk-dynaform/subcomponents/snk-dynaform-form-view/snk-dynaform-form-view.d.ts +1 -0
- package/dist/types/components.d.ts +32 -0
- package/dist/types/lib/@types/index.d.ts +6 -0
- package/dist/types/lib/http/data-fetcher/fetchers/fetchDataExporter/interfaces/IFetchDataExporterParams.d.ts +2 -0
- package/package.json +1 -1
- package/dist/sankhyablocks/p-0f3698af.js +0 -1
- package/dist/sankhyablocks/p-1bc6849e.js +0 -1
- package/dist/sankhyablocks/p-2c65dc01.entry.js +0 -1
- package/dist/sankhyablocks/p-3cc67d50.entry.js +0 -1
- package/dist/sankhyablocks/p-4a53fbeb.entry.js +0 -1
- package/dist/sankhyablocks/p-7e63af25.entry.js +0 -1
- package/dist/sankhyablocks/p-a8a93568.entry.js +0 -1
- package/dist/sankhyablocks/p-acd3adf9.entry.js +0 -1
- package/dist/sankhyablocks/p-c3bc693a.js +0 -1
- package/dist/sankhyablocks/p-c6b6567f.entry.js +0 -1
- 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:
|
|
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--
|
|
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-
|
|
48
|
-
|
|
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
|
-
|
|
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
|
}
|