@sankhyalabs/sankhyablocks 0.0.0-bugfix-dev-KB-77074.0 → 0.0.0-bugfix-dev-KB-78131.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.
- package/dist/cjs/{SnkMessageBuilder-7691a2c1.js → SnkMessageBuilder-bae64d0d.js} +0 -10
- package/dist/cjs/index-f9e81701.js +0 -8
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/sankhyablocks.cjs.js +1 -1
- package/dist/cjs/snk-actions-button_4.cjs.entry.js +25 -22
- package/dist/cjs/snk-application.cjs.entry.js +18 -2
- package/dist/cjs/snk-config-options_3.cjs.entry.js +17 -5
- package/dist/cjs/snk-crud.cjs.entry.js +8 -2
- package/dist/cjs/snk-data-exporter.cjs.entry.js +2 -2
- package/dist/cjs/{snk-data-unit-7dbdad0e.js → snk-data-unit-3d9b6ed4.js} +26 -14
- package/dist/cjs/snk-data-unit.cjs.entry.js +2 -2
- package/dist/cjs/snk-detail-view.cjs.entry.js +2 -2
- package/dist/cjs/snk-filter-bar_4.cjs.entry.js +9 -0
- package/dist/cjs/snk-filter-text.cjs.entry.js +2 -1
- package/dist/cjs/snk-grid.cjs.entry.js +10 -2
- package/dist/cjs/{snk-guides-viewer-eee43c8b.js → snk-guides-viewer-c2e64f68.js} +2 -2
- package/dist/cjs/snk-guides-viewer.cjs.entry.js +1 -1
- package/dist/cjs/snk-simple-crud.cjs.entry.js +7 -4
- package/dist/cjs/snk-taskbar.cjs.entry.js +40 -37
- package/dist/collection/collection-manifest.json +0 -3
- package/dist/collection/components/snk-actions-button/snk-actions-button.js +27 -26
- package/dist/collection/components/snk-application/snk-application.js +41 -1
- package/dist/collection/components/snk-crud/snk-crud.js +26 -2
- package/dist/collection/components/snk-crud/subcomponents/snk-guides-viewer.css +1 -1
- package/dist/collection/components/snk-crud/subcomponents/snk-guides-viewer.js +1 -1
- package/dist/collection/components/snk-data-unit/snk-data-unit.js +25 -13
- package/dist/collection/components/snk-filter-bar/filter-item/editors/snk-filter-text.js +2 -1
- package/dist/collection/components/snk-filter-bar/filter-item/filter-item-type-mask.enum.js +8 -0
- package/dist/collection/components/snk-filter-bar/filter-item/snk-filter-item.js +5 -1
- package/dist/collection/components/snk-filter-bar/snk-filter-bar.js +20 -0
- package/dist/collection/components/snk-form-config/snk-form-config.js +17 -5
- package/dist/collection/components/snk-grid/snk-grid.js +28 -2
- package/dist/collection/components/snk-simple-crud/snk-simple-crud.js +25 -4
- package/dist/collection/components/snk-taskbar/snk-taskbar.js +41 -38
- package/dist/collection/lib/http/data-fetcher/fetchers/parameters-fecher.js +7 -1
- package/dist/collection/lib/message/SnkMessageBuilder.js +0 -2
- package/dist/components/SnkMessageBuilder.js +0 -10
- package/dist/components/index.d.ts +0 -3
- package/dist/components/index.js +0 -3
- package/dist/components/snk-actions-button2.js +27 -26
- package/dist/components/snk-application2.js +19 -2
- package/dist/components/snk-crud.js +9 -2
- package/dist/components/snk-data-unit2.js +25 -13
- package/dist/components/snk-detail-view2.js +2 -2
- package/dist/components/snk-filter-bar2.js +6 -0
- package/dist/components/snk-filter-item2.js +5 -1
- package/dist/components/snk-filter-text.js +2 -1
- package/dist/components/snk-form-config2.js +17 -5
- package/dist/components/snk-grid2.js +11 -2
- package/dist/components/snk-simple-crud2.js +8 -4
- package/dist/components/snk-taskbar2.js +41 -38
- package/dist/esm/{SnkMessageBuilder-7ace6803.js → SnkMessageBuilder-6fff4a4c.js} +0 -10
- package/dist/esm/index-a7d3d3f1.js +0 -8
- package/dist/esm/loader.js +1 -1
- package/dist/esm/sankhyablocks.js +1 -1
- package/dist/esm/snk-actions-button_4.entry.js +26 -23
- package/dist/esm/snk-application.entry.js +19 -3
- package/dist/esm/snk-config-options_3.entry.js +17 -5
- package/dist/esm/snk-crud.entry.js +8 -2
- package/dist/esm/snk-data-exporter.entry.js +2 -2
- package/dist/esm/{snk-data-unit-7a579dbd.js → snk-data-unit-9fa7d2b9.js} +26 -14
- package/dist/esm/snk-data-unit.entry.js +2 -2
- package/dist/esm/snk-detail-view.entry.js +2 -2
- package/dist/esm/snk-filter-bar_4.entry.js +10 -1
- package/dist/esm/snk-filter-text.entry.js +2 -1
- package/dist/esm/snk-grid.entry.js +10 -2
- package/dist/esm/{snk-guides-viewer-e8ca764a.js → snk-guides-viewer-3e56f2c0.js} +2 -2
- package/dist/esm/snk-guides-viewer.entry.js +1 -1
- package/dist/esm/snk-simple-crud.entry.js +7 -4
- package/dist/esm/snk-taskbar.entry.js +41 -38
- package/dist/sankhyablocks/{p-f4e221b2.entry.js → p-0d2a2e9e.entry.js} +1 -1
- package/dist/sankhyablocks/p-17425c72.js +1 -0
- package/dist/sankhyablocks/p-1d3ce0d9.entry.js +1 -0
- package/dist/sankhyablocks/p-342eeb3b.js +1 -0
- package/dist/sankhyablocks/p-3728d2aa.entry.js +11 -0
- package/dist/sankhyablocks/p-40ec3105.entry.js +1 -0
- package/dist/sankhyablocks/p-4e1f992e.entry.js +1 -0
- package/dist/sankhyablocks/p-619aeac8.entry.js +1 -0
- package/dist/sankhyablocks/{p-00f9fe5c.entry.js → p-7075b789.entry.js} +1 -1
- package/dist/sankhyablocks/p-89c92727.entry.js +1 -0
- package/dist/sankhyablocks/{p-42130213.entry.js → p-9abaa4ab.entry.js} +1 -1
- package/dist/sankhyablocks/p-a3fadd0b.entry.js +1 -0
- package/dist/sankhyablocks/p-af7f7b3e.entry.js +1 -0
- package/dist/sankhyablocks/{p-b389ed49.entry.js → p-d5db32d1.entry.js} +1 -1
- package/dist/sankhyablocks/{p-e3a285a2.js → p-e89dea18.js} +1 -1
- package/dist/sankhyablocks/p-ec43fcc8.entry.js +1 -0
- package/dist/sankhyablocks/sankhyablocks.esm.js +1 -1
- package/dist/types/components/snk-actions-button/interfaces/index.d.ts +3 -0
- package/dist/types/components/snk-actions-button/snk-actions-button.d.ts +3 -2
- package/dist/types/components/snk-application/snk-application.d.ts +6 -1
- package/dist/types/components/snk-crud/snk-crud.d.ts +4 -0
- package/dist/types/components/snk-filter-bar/filter-item/filter-item-type-mask.enum.d.ts +7 -0
- package/dist/types/components/snk-filter-bar/filter-item/snk-filter-item.d.ts +2 -0
- package/dist/types/components/snk-filter-bar/snk-filter-bar.d.ts +4 -0
- package/dist/types/components/snk-grid/snk-grid.d.ts +4 -0
- package/dist/types/components/snk-simple-crud/snk-simple-crud.d.ts +2 -0
- package/dist/types/components.d.ts +31 -393
- package/dist/types/lib/http/data-fetcher/fetchers/parameters-fecher.d.ts +1 -0
- package/package.json +1 -1
- package/react/components.d.ts +0 -3
- package/react/components.js +0 -3
- package/react/components.js.map +1 -1
- package/dist/cjs/input-distinct-search_2.cjs.entry.js +0 -469
- package/dist/cjs/snk-distinct-search.cjs.entry.js +0 -123
- package/dist/collection/components/snk-distinct-search/snk-distinct-search.css +0 -4
- package/dist/collection/components/snk-distinct-search/snk-distinct-search.js +0 -372
- package/dist/collection/components/snk-distinct-search/subcomponents/input-distinct-search/input-distinct-search.css +0 -109
- package/dist/collection/components/snk-distinct-search/subcomponents/input-distinct-search/input-distinct-search.js +0 -542
- package/dist/collection/components/snk-distinct-search/subcomponents/search-modal/search-modal.css +0 -27
- package/dist/collection/components/snk-distinct-search/subcomponents/search-modal/search-modal.js +0 -600
- package/dist/collection/components/snk-distinct-search/utils/filter-distinct-search.js +0 -13
- package/dist/collection/lib/http/data-fetcher/fetchers/distinct-search-fetcher.js +0 -25
- package/dist/collection/lib/message/resources/snk-distinct-search.msg.js +0 -9
- package/dist/components/filter-distinct-search.js +0 -15
- package/dist/components/input-distinct-search.d.ts +0 -11
- package/dist/components/input-distinct-search.js +0 -6
- package/dist/components/input-distinct-search2.js +0 -262
- package/dist/components/search-modal.d.ts +0 -11
- package/dist/components/search-modal.js +0 -6
- package/dist/components/search-modal2.js +0 -264
- package/dist/components/snk-distinct-search.d.ts +0 -11
- package/dist/components/snk-distinct-search.js +0 -163
- package/dist/esm/input-distinct-search_2.entry.js +0 -464
- package/dist/esm/snk-distinct-search.entry.js +0 -119
- package/dist/sankhyablocks/p-0e250436.entry.js +0 -1
- package/dist/sankhyablocks/p-154aa2a6.entry.js +0 -11
- package/dist/sankhyablocks/p-18cb1acb.entry.js +0 -1
- package/dist/sankhyablocks/p-1dbd5c18.entry.js +0 -1
- package/dist/sankhyablocks/p-2aae03a1.entry.js +0 -1
- package/dist/sankhyablocks/p-30ebcbe0.entry.js +0 -1
- package/dist/sankhyablocks/p-37074cc3.entry.js +0 -1
- package/dist/sankhyablocks/p-3858a2e4.entry.js +0 -1
- package/dist/sankhyablocks/p-563b7c28.entry.js +0 -1
- package/dist/sankhyablocks/p-96a89d58.entry.js +0 -1
- package/dist/sankhyablocks/p-c75fae8e.js +0 -1
- package/dist/sankhyablocks/p-d8665750.js +0 -1
- package/dist/sankhyablocks/p-f0aaad2b.entry.js +0 -1
- package/dist/types/components/snk-distinct-search/snk-distinct-search.d.ts +0 -83
- package/dist/types/components/snk-distinct-search/subcomponents/input-distinct-search/input-distinct-search.d.ts +0 -105
- package/dist/types/components/snk-distinct-search/subcomponents/search-modal/search-modal.d.ts +0 -126
- package/dist/types/components/snk-distinct-search/types/index.d.ts +0 -8
- package/dist/types/components/snk-distinct-search/utils/filter-distinct-search.d.ts +0 -3
- package/dist/types/lib/http/data-fetcher/fetchers/distinct-search-fetcher.d.ts +0 -6
- package/dist/types/lib/message/resources/snk-distinct-search.msg.d.ts +0 -2
- /package/dist/collection/components/{snk-distinct-search/types → snk-actions-button/interfaces}/index.js +0 -0
|
@@ -42,6 +42,7 @@ export class SnkCrud {
|
|
|
42
42
|
this.enableGridInsert = false;
|
|
43
43
|
this.domainMessagesBuilder = undefined;
|
|
44
44
|
this.ignoreReadOnlyFormFields = undefined;
|
|
45
|
+
this.enableLockManger = false;
|
|
45
46
|
this.setCustomFormTitle = undefined;
|
|
46
47
|
this.customContainerId = `SNK-CRUD-CUSTOM-CONTAINER-${StringUtils.generateUUID()}`;
|
|
47
48
|
}
|
|
@@ -283,11 +284,16 @@ export class SnkCrud {
|
|
|
283
284
|
if (!isDocumentBody)
|
|
284
285
|
element.focus();
|
|
285
286
|
}
|
|
287
|
+
async function handleAddRecord() {
|
|
288
|
+
if (!dataUnit.hasNewRecord()) {
|
|
289
|
+
dataUnit.addRecord();
|
|
290
|
+
}
|
|
291
|
+
}
|
|
286
292
|
keyboardManager
|
|
287
293
|
.bind("F6", this.toggleView.bind(this), { description: "Alterna entre modo formulário e grade.", element: this._element })
|
|
288
294
|
.bind("F7", saveDataUnitHandlingFocus.bind(this), { description: "Salva os dados.", element: this._element })
|
|
289
295
|
.bind("ctrl + \\", saveDataUnitHandlingFocus.bind(this), { description: "Salva os dados.", element: this._element })
|
|
290
|
-
.bind("F8",
|
|
296
|
+
.bind("F8", handleAddRecord.bind(this), { description: "Adiciona um novo registro.", element: this._element })
|
|
291
297
|
.bind("F9", dataUnit.removeSelectedRecords.bind(dataUnit), { description: "Remove o registro selecionado.", element: this._element })
|
|
292
298
|
.bind("ctrl + F9", dataUnit.removeSelectedRecords.bind(dataUnit), { description: "Remove o registro selecionado.", element: this._element })
|
|
293
299
|
.bind("ctrl + .", () => {
|
|
@@ -384,7 +390,7 @@ export class SnkCrud {
|
|
|
384
390
|
return;
|
|
385
391
|
}
|
|
386
392
|
this._snkDataUnit.ignoreSaveMessage = (this._currentViewMode === VIEW_MODE.GRID && !this.enableGridInsert);
|
|
387
|
-
return (h(Host, null, h("ez-view-stack", { ref: (ref) => this._viewStack = ref, "data-element-id": "crud" }, h("stack-item",
|
|
393
|
+
return (h(Host, null, h("ez-view-stack", { ref: (ref) => this._viewStack = ref, "data-element-id": "crud" }, h("stack-item", { class: 'ez-flex ez-flex--column ez-size-height--full ez-size-width--full ez-padding--small' }, 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, enableLockManger: this.enableLockManger }, 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-guides-viewer", { ref: ref => this._guidesViewer = ref, entityPath: this._snkDataUnit.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 }, h("slot", { name: "GUIDES_VIEWER_TASKBAR_CUSTOM_ELEMENTS" }), h("slot", { name: "SnkFormTaskBar" }))), h("stack-item", null, h("snk-attach", { registerKey: this.attachmentRegisterKey, messagesBuilder: this.messagesBuilder, entityName: this._snkDataUnit.entityName, onBack: this.backView.bind(this) })), h("snk-configurator", { ref: (ref) => this._snkConfigurator = ref, 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 })), 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" }))));
|
|
388
394
|
}
|
|
389
395
|
static get is() { return "snk-crud"; }
|
|
390
396
|
static get encapsulation() { return "scoped"; }
|
|
@@ -793,6 +799,24 @@ export class SnkCrud {
|
|
|
793
799
|
"attribute": "ignore-read-only-form-fields",
|
|
794
800
|
"reflect": false
|
|
795
801
|
},
|
|
802
|
+
"enableLockManger": {
|
|
803
|
+
"type": "boolean",
|
|
804
|
+
"mutable": false,
|
|
805
|
+
"complexType": {
|
|
806
|
+
"original": "boolean",
|
|
807
|
+
"resolved": "boolean",
|
|
808
|
+
"references": {}
|
|
809
|
+
},
|
|
810
|
+
"required": false,
|
|
811
|
+
"optional": true,
|
|
812
|
+
"docs": {
|
|
813
|
+
"tags": [],
|
|
814
|
+
"text": "Ativa o gerenciamento de locks na grade."
|
|
815
|
+
},
|
|
816
|
+
"attribute": "enable-lock-manger",
|
|
817
|
+
"reflect": false,
|
|
818
|
+
"defaultValue": "false"
|
|
819
|
+
},
|
|
796
820
|
"setCustomFormTitle": {
|
|
797
821
|
"type": "unknown",
|
|
798
822
|
"mutable": false,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
:host {
|
|
2
2
|
/*@doc Define o espaçamento maior utilizado no componente.*/
|
|
3
|
-
--snk-guides-viewer--space-large: var(--space--
|
|
3
|
+
--snk-guides-viewer--space-large: var(--space--medium, 12px);
|
|
4
4
|
/*@doc Define o espaçamento médio utilizado no componente.*/
|
|
5
5
|
--snk-guides-viewer--space-small: var(--space--2xs, 8px);
|
|
6
6
|
/*@doc Define a altura mínima do cabeçalho do componente.*/
|
|
@@ -440,7 +440,7 @@ export class SnkGuidesViewer {
|
|
|
440
440
|
await this.openGuideNavigator(guideName);
|
|
441
441
|
}
|
|
442
442
|
if (action.type === DUAction.METADATA_LOADED) {
|
|
443
|
-
this.loadGuides(
|
|
443
|
+
this.loadGuides(this.noGuideSelected());
|
|
444
444
|
}
|
|
445
445
|
}
|
|
446
446
|
async addErrorBadgeToGuide(guideName) {
|
|
@@ -16,7 +16,7 @@ export class SnkDataUnit {
|
|
|
16
16
|
this._rowMetadataCache = new Map();
|
|
17
17
|
this.REGEX_DATAUNIT_NAME = /dd:\/\/(.+?)\//;
|
|
18
18
|
this._dataUnitObserver = async (action) => {
|
|
19
|
-
const duState = this.buildDataState(action.type);
|
|
19
|
+
const duState = await this.buildDataState(action.type);
|
|
20
20
|
this.dataState = duState;
|
|
21
21
|
this.messagesBuilder.currentOperation = this.getMessageOperation();
|
|
22
22
|
switch (action.type) {
|
|
@@ -130,14 +130,22 @@ export class SnkDataUnit {
|
|
|
130
130
|
async getRowMetadata(record) {
|
|
131
131
|
return this.doGetRowMetadata(record);
|
|
132
132
|
}
|
|
133
|
-
doGetRowMetadata(record) {
|
|
133
|
+
async doGetRowMetadata(record) {
|
|
134
134
|
const selectedRecord = this.dataUnit.getSelectedRecord();
|
|
135
135
|
if (!record && !selectedRecord) {
|
|
136
136
|
return;
|
|
137
137
|
}
|
|
138
138
|
const currentRecord = record || selectedRecord;
|
|
139
139
|
const recordId = typeof currentRecord === 'string' ? currentRecord : currentRecord.__record__id__;
|
|
140
|
-
|
|
140
|
+
let rowMetadata = this._metadataByRow.get(recordId);
|
|
141
|
+
/*
|
|
142
|
+
Nao fazemos cache de metadataByRow pra registros novos, pois a chave do mesmo
|
|
143
|
+
muda ao ser salvo, por isso essa tratativa é necessária para que o dataState fique com metadados
|
|
144
|
+
corretos nao confiando apenas no _metadataByRow
|
|
145
|
+
*/
|
|
146
|
+
if (this.dataUnit.isNewRecord(recordId) && !rowMetadata) {
|
|
147
|
+
rowMetadata = await this.handleLoadRowMetadata(selectedRecord);
|
|
148
|
+
}
|
|
141
149
|
if (!rowMetadata) {
|
|
142
150
|
return;
|
|
143
151
|
}
|
|
@@ -331,7 +339,7 @@ export class SnkDataUnit {
|
|
|
331
339
|
case Action.RECORDS_COPIED:
|
|
332
340
|
return this.interceptRecordsCopied(action);
|
|
333
341
|
case Action.DATA_CHANGED:
|
|
334
|
-
await this.handleLoadRowMetadata(action);
|
|
342
|
+
await this.handleLoadRowMetadata(action.payload);
|
|
335
343
|
return await this.interceptDataChange(action);
|
|
336
344
|
case Action.CHANGING_DATA:
|
|
337
345
|
return await this.interceptDataChange(action);
|
|
@@ -351,8 +359,9 @@ export class SnkDataUnit {
|
|
|
351
359
|
return action;
|
|
352
360
|
}
|
|
353
361
|
}
|
|
354
|
-
async handleLoadRowMetadata(
|
|
355
|
-
|
|
362
|
+
async handleLoadRowMetadata(record) {
|
|
363
|
+
if (!record)
|
|
364
|
+
return;
|
|
356
365
|
const keysPayload = Object.keys(record);
|
|
357
366
|
const rmpField = keysPayload.find((field) => this._fieldsWithRmp.includes(field));
|
|
358
367
|
if (rmpField) {
|
|
@@ -431,7 +440,7 @@ export class SnkDataUnit {
|
|
|
431
440
|
isAllowed(flag) {
|
|
432
441
|
return this._permissions ? this._permissions.isSup || this._permissions[flag] : false;
|
|
433
442
|
}
|
|
434
|
-
buildDataState(actionType) {
|
|
443
|
+
async buildDataState(actionType) {
|
|
435
444
|
var _a;
|
|
436
445
|
const selectionInfo = this.dataUnit.getSelectionInfo();
|
|
437
446
|
const isStartingInsertionMode = (this.dataUnit.hasDirtyRecords() || this.dataUnit.hasWaitingChanges()) && (selectionInfo === null || selectionInfo === void 0 ? void 0 : selectionInfo.isEmpty());
|
|
@@ -439,7 +448,7 @@ export class SnkDataUnit {
|
|
|
439
448
|
let rowMetadata = (_a = this.dataState) === null || _a === void 0 ? void 0 : _a.rowMetadata;
|
|
440
449
|
const allowedOverwrite = [Action.SELECTION_CHANGED, Action.EDITION_CANCELED, Action.NEXT_SELECTED, Action.PREVIOUS_SELECTED];
|
|
441
450
|
if (selectedRecord && (!rowMetadata || allowedOverwrite.includes(actionType))) {
|
|
442
|
-
rowMetadata = this.doGetRowMetadata(selectedRecord);
|
|
451
|
+
rowMetadata = await this.doGetRowMetadata(selectedRecord);
|
|
443
452
|
}
|
|
444
453
|
else if (rowMetadata) {
|
|
445
454
|
rowMetadata.getProp = this.buildGetPropRowMetadata(rowMetadata);
|
|
@@ -461,17 +470,20 @@ export class SnkDataUnit {
|
|
|
461
470
|
});
|
|
462
471
|
}
|
|
463
472
|
async handleDataSaved(action) {
|
|
464
|
-
|
|
473
|
+
var _a, _b, _c;
|
|
474
|
+
const newRowMetadata = await this.handleLoadRowMetadata((_c = (_b = (_a = action === null || action === void 0 ? void 0 : action.payload) === null || _a === void 0 ? void 0 : _a.changes) === null || _b === void 0 ? void 0 : _b[0]) === null || _c === void 0 ? void 0 : _c.record);
|
|
465
475
|
if (newRowMetadata) {
|
|
466
476
|
newRowMetadata.getProp = this.buildGetPropRowMetadata(newRowMetadata);
|
|
467
477
|
}
|
|
468
478
|
const recordId = action.payload.records[0].__record__id__;
|
|
469
479
|
this._metadataByRow.set(recordId, newRowMetadata);
|
|
470
|
-
this.dataState = this.buildDataState();
|
|
471
|
-
|
|
480
|
+
this.dataState = await this.buildDataState();
|
|
481
|
+
let saveOperation = action.payload.changes[0]._operation.toLowerCase();
|
|
482
|
+
if (saveOperation == 'copy')
|
|
483
|
+
saveOperation = OperationMap.CLONE;
|
|
484
|
+
if (this.ignoreSaveMessage && ![OperationMap.CLONE, OperationMap.INSERT].includes(saveOperation)) {
|
|
472
485
|
return;
|
|
473
486
|
}
|
|
474
|
-
const saveOperation = action.payload.changes[0]._operation.toLowerCase();
|
|
475
487
|
const msg = this.getMessage("snkDataUnit.saveInfo", action.payload.records[0], saveOperation);
|
|
476
488
|
if (msg != undefined) {
|
|
477
489
|
this.showSuccessMessage(msg);
|
|
@@ -564,7 +576,7 @@ export class SnkDataUnit {
|
|
|
564
576
|
const { records } = this.getMetadataByRow(this.dataUnit);
|
|
565
577
|
this.dataUnit.records = records;
|
|
566
578
|
}
|
|
567
|
-
this.dataState = this.buildDataState();
|
|
579
|
+
this.dataState = await this.buildDataState();
|
|
568
580
|
let resolver;
|
|
569
581
|
while (resolver = this._onDataUnitResolve.pop()) {
|
|
570
582
|
resolver(this.dataUnit);
|
|
@@ -18,10 +18,11 @@ export class SnkFilterText {
|
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
20
|
render() {
|
|
21
|
+
var _a;
|
|
21
22
|
if (!this.config) {
|
|
22
23
|
return undefined;
|
|
23
24
|
}
|
|
24
|
-
return (h("ez-text-input", { id: this.config.id, ref: ref => this._textInputElement = ref, label: this.config.label, value: this.config.value }));
|
|
25
|
+
return (h("ez-text-input", { id: this.config.id, ref: ref => this._textInputElement = ref, label: this.config.label, value: this.config.value, mask: (_a = this.config) === null || _a === void 0 ? void 0 : _a.mask, cleanValueMask: true }));
|
|
25
26
|
}
|
|
26
27
|
static get is() { return "snk-filter-text"; }
|
|
27
28
|
static get properties() {
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
var FilterItemTypeMask;
|
|
2
|
+
(function (FilterItemTypeMask) {
|
|
3
|
+
FilterItemTypeMask["CEP"] = "#####-###";
|
|
4
|
+
FilterItemTypeMask["TELEFONE"] = "(##) ####-####";
|
|
5
|
+
FilterItemTypeMask["CPF"] = "###.###.###-##";
|
|
6
|
+
FilterItemTypeMask["CNPJ"] = "##.###.###/####-##";
|
|
7
|
+
})(FilterItemTypeMask || (FilterItemTypeMask = {}));
|
|
8
|
+
export default FilterItemTypeMask;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ElementIDUtils, FloatingManager, DateUtils } from '@sankhyalabs/core';
|
|
1
|
+
import { ElementIDUtils, FloatingManager, DateUtils, MaskFormatter } from '@sankhyalabs/core';
|
|
2
2
|
import { h, Host } from '@stencil/core';
|
|
3
3
|
import FilterItemType from './filter-item-type.enum';
|
|
4
4
|
import { FilterNumberVariation } from './editors/enum/filterNumberVariation';
|
|
@@ -211,6 +211,10 @@ export class SnkFilterItem {
|
|
|
211
211
|
return `${label}: ${this.getMessage('snkFilterBar.onlyEndToltip')} ${Number(end)}`;
|
|
212
212
|
}
|
|
213
213
|
}
|
|
214
|
+
if (this.config.mask) {
|
|
215
|
+
const _maskFormatter = new MaskFormatter(this.config.mask);
|
|
216
|
+
return `${label}: ${_maskFormatter.format(value)}`;
|
|
217
|
+
}
|
|
214
218
|
return `${label}: ${value}`;
|
|
215
219
|
}
|
|
216
220
|
return label;
|
|
@@ -38,6 +38,7 @@ export class SnkFilterBar {
|
|
|
38
38
|
this.disablePersonalizedFilter = undefined;
|
|
39
39
|
this.filterBarLegacyConfigName = undefined;
|
|
40
40
|
this.autoLoad = undefined;
|
|
41
|
+
this.afterApplyConfig = undefined;
|
|
41
42
|
this.allowDefault = undefined;
|
|
42
43
|
this.scrollerLocked = false;
|
|
43
44
|
this.showPersonalizedFilter = false;
|
|
@@ -174,6 +175,7 @@ export class SnkFilterBar {
|
|
|
174
175
|
return this.filterConfig.find(item => item.type === FilterItemType.PERSONALIZED);
|
|
175
176
|
}
|
|
176
177
|
async processAfterUpdateConfig() {
|
|
178
|
+
var _a;
|
|
177
179
|
if (this._loadingPending) {
|
|
178
180
|
if (await this._application.isLoadedByPk() && !this._configUpdated)
|
|
179
181
|
return;
|
|
@@ -188,6 +190,7 @@ export class SnkFilterBar {
|
|
|
188
190
|
if (this._configUpdated) {
|
|
189
191
|
this._configUpdated = false;
|
|
190
192
|
ConfigStorage.saveFilterBarConfig(this.filterConfig, this.configName, this.resourceID);
|
|
193
|
+
(_a = this.afterApplyConfig) === null || _a === void 0 ? void 0 : _a.call(this);
|
|
191
194
|
}
|
|
192
195
|
}
|
|
193
196
|
async doLoadData(forceReload = false) {
|
|
@@ -392,7 +395,9 @@ export class SnkFilterBar {
|
|
|
392
395
|
*/
|
|
393
396
|
async showFilterModal() {
|
|
394
397
|
const callbackOnApplyFilter = (filters) => {
|
|
398
|
+
var _a;
|
|
395
399
|
this.filterConfig = filters.map(this.normalizeItem).sort((a, b) => this._filtersComparator(a, b));
|
|
400
|
+
(_a = this.afterApplyConfig) === null || _a === void 0 ? void 0 : _a.call(this);
|
|
396
401
|
};
|
|
397
402
|
let filtersConfigCopy = ObjectUtils.copy(this.filterConfig);
|
|
398
403
|
filtersConfigCopy = filtersConfigCopy.sort((itemA, itemB) => {
|
|
@@ -689,6 +694,21 @@ export class SnkFilterBar {
|
|
|
689
694
|
},
|
|
690
695
|
"attribute": "auto-load",
|
|
691
696
|
"reflect": false
|
|
697
|
+
},
|
|
698
|
+
"afterApplyConfig": {
|
|
699
|
+
"type": "unknown",
|
|
700
|
+
"mutable": false,
|
|
701
|
+
"complexType": {
|
|
702
|
+
"original": "() => void",
|
|
703
|
+
"resolved": "() => void",
|
|
704
|
+
"references": {}
|
|
705
|
+
},
|
|
706
|
+
"required": false,
|
|
707
|
+
"optional": true,
|
|
708
|
+
"docs": {
|
|
709
|
+
"tags": [],
|
|
710
|
+
"text": "Fun\u00E7\u00E3o chamada depois de aplicar os filtros."
|
|
711
|
+
}
|
|
692
712
|
}
|
|
693
713
|
};
|
|
694
714
|
}
|
|
@@ -679,7 +679,7 @@ export class SnkFormConfig {
|
|
|
679
679
|
}
|
|
680
680
|
}
|
|
681
681
|
getLayoutFormConfig() {
|
|
682
|
-
var _a, _b;
|
|
682
|
+
var _a, _b, _c;
|
|
683
683
|
if (((_a = this._formConfig) === null || _a === void 0 ? void 0 : _a.fields) == undefined) {
|
|
684
684
|
return;
|
|
685
685
|
}
|
|
@@ -692,7 +692,11 @@ export class SnkFormConfig {
|
|
|
692
692
|
if (hasField == undefined) {
|
|
693
693
|
fields.push(field);
|
|
694
694
|
const fieldMD = this.dataUnit.getField(field.name);
|
|
695
|
-
|
|
695
|
+
/**
|
|
696
|
+
* Quando um campo é ocultado pelo dev, mas queremos manter ele na config precisamos fazer essa tratativa.
|
|
697
|
+
*/
|
|
698
|
+
const visibleOnConfig = ((_b = fieldMD === null || fieldMD === void 0 ? void 0 : fieldMD.properties) === null || _b === void 0 ? void 0 : _b.visibleOnConfig) === true && (fieldMD === null || fieldMD === void 0 ? void 0 : fieldMD.visible) === false;
|
|
699
|
+
if ((fieldMD === null || fieldMD === void 0 ? void 0 : fieldMD.visible) || visibleOnConfig) {
|
|
696
700
|
if (field.label == undefined || field.label === "") {
|
|
697
701
|
field.label = fieldMD.label;
|
|
698
702
|
}
|
|
@@ -708,7 +712,7 @@ export class SnkFormConfig {
|
|
|
708
712
|
visible = configTabs[0].visible;
|
|
709
713
|
}
|
|
710
714
|
}
|
|
711
|
-
const tabLabel = ((
|
|
715
|
+
const tabLabel = ((_c = field.tab) === null || _c === void 0 ? void 0 : _c.label) || field.tab;
|
|
712
716
|
if (visible !== null) {
|
|
713
717
|
tab = { tab: tabLabel, groups: [], visible };
|
|
714
718
|
}
|
|
@@ -793,8 +797,16 @@ export class SnkFormConfig {
|
|
|
793
797
|
for (const field of this._formConfig.fields) {
|
|
794
798
|
fieldsFormConfig.push(field);
|
|
795
799
|
}
|
|
796
|
-
const listFieldsAvailable = fieldsMetadata.filter(({ name: _nameFieldMetadado, visible: _visibleMetadado }) =>
|
|
797
|
-
|
|
800
|
+
const listFieldsAvailable = fieldsMetadata.filter(({ name: _nameFieldMetadado, visible: _visibleMetadado, properties }) => {
|
|
801
|
+
const hasCfg = fieldsFormConfig.some(({ name: _nameFieldForm }) => _nameFieldForm === _nameFieldMetadado);
|
|
802
|
+
/**
|
|
803
|
+
* Quando a visibilidade de um campo é alterada pelo dataunit, mas o desenvolvedor deseja que o mesmo continue
|
|
804
|
+
* sendo apresentado no configurador, precisamos fazer essa tratativa, verificando se o campo não tem configuração
|
|
805
|
+
*/
|
|
806
|
+
if (!hasCfg && properties.visibleOnConfig === true && !_visibleMetadado)
|
|
807
|
+
return properties.visibleOnConfig;
|
|
808
|
+
return _visibleMetadado === true && hasCfg === false;
|
|
809
|
+
});
|
|
798
810
|
this._fieldsAvailable = listFieldsAvailable;
|
|
799
811
|
this._listEnabledFields = listFieldsAvailable;
|
|
800
812
|
if (((_b = this._filterFieldsAvailable) === null || _b === void 0 ? void 0 : _b.value) != undefined) {
|
|
@@ -73,6 +73,7 @@ export class SnkGrid {
|
|
|
73
73
|
this.autoLoad = undefined;
|
|
74
74
|
this.autoFocus = true;
|
|
75
75
|
this.enableGridInsert = false;
|
|
76
|
+
this.enableLockManger = false;
|
|
76
77
|
}
|
|
77
78
|
/**
|
|
78
79
|
* Exibe a janela de configurações da grade.
|
|
@@ -160,10 +161,17 @@ export class SnkGrid {
|
|
|
160
161
|
this._grid.setFocus();
|
|
161
162
|
}
|
|
162
163
|
async handleClick(event) {
|
|
164
|
+
var _a;
|
|
163
165
|
if (this.hasToBlockEvent(event)) {
|
|
164
166
|
event.preventDefault();
|
|
165
167
|
event.stopPropagation();
|
|
166
|
-
await this._dataUnit.cancelEdition()
|
|
168
|
+
if (!await this._dataUnit.cancelEdition())
|
|
169
|
+
return;
|
|
170
|
+
const newEvent = new event.constructor(event.type, event);
|
|
171
|
+
(_a = event.target) === null || _a === void 0 ? void 0 : _a.dispatchEvent(newEvent);
|
|
172
|
+
}
|
|
173
|
+
if (this._grid && !this._grid.contains(event.target)) {
|
|
174
|
+
this._grid.stopEdit();
|
|
167
175
|
}
|
|
168
176
|
}
|
|
169
177
|
hasToBlockEvent(event) {
|
|
@@ -454,7 +462,7 @@ export class SnkGrid {
|
|
|
454
462
|
return undefined;
|
|
455
463
|
}
|
|
456
464
|
return (h("div", { class: "snk-grid__container ez-flex ez-flex--column ez-flex-item--auto ez-padding--large" }, h("div", { class: "snk-grid__header ez-margin-bottom--extra-small" }, this._showSnkFilterBar &&
|
|
457
|
-
h(Fragment, null, 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 }), h("hr", { class: "ez-divider-vertical ez-divider--dark ez-margin-left--medium snk-grid__header-divider" })), h("snk-taskbar", { class: "ez-padding-left--medium", "data-element-id": "grid_top", key: "topTaskbar", configName: this.configName, dataUnit: this._dataUnit, messagesBuilder: this.messagesBuilder, buttons: this._topTaskbarProcessor.buttons, disabledButtons: this._topTaskbarProcessor.disabledButtons, customButtons: this._topTaskbarProcessor.customButtons, primaryButton: this.getPrimaryButton(), resourceID: this.resourceID, customContainerId: this.taskbarCustomContainerId, customSlotId: this.topTaskbarCustomSlotId, overflowStrategy: 'none' }, h("slot", { name: this.topTaskbarCustomSlotId }))), h("ez-grid", { ref: ref => this._grid = ref, class: (this.presentationMode === PresentationMode.SECONDARY ? "snk-grid-container__without-shadow " : "") + "snk-grid__table", "data-element-id": "embedded", dataUnit: this._dataUnit, key: "grid-" + this._snkDataUnit.entityName, config: this._gridConfig, onConfigChange: (evt) => { this.gridConfigChangeHandler(evt); }, onEzDoubleClick: (evt) => this.gridDoubleClick.emit(evt.detail), statusResolver: this.statusResolver, multipleSelection: this.multipleSelection, columnfilterDataSource: this.columnFilterDataSource, selectionToastConfig: this.selectionToastConfig, useEnterLikeTab: this.useEnterLikeTab, recordsValidator: this.recordsValidator, canEdit: this.canEdit, autoFocus: this.autoFocus, enableGridInsert: this.enableGridInsert, enableContinuousInsert: this._enableContinuousInsert }, h("snk-taskbar", { id: 'teste', dataUnit: this._dataUnit, configName: this.configName, messagesBuilder: this.messagesBuilder, "data-element-id": "grid_left", buttons: this.getGridHeaderButtons(), presentationMode: this.presentationMode, disabledButtons: this._headerTaskbarProcessor.disabledButtons, customButtons: this._headerTaskbarProcessor.customButtons, slot: "leftButtons", actionsList: this.getActionsList(), primaryButton: this.getPrimaryButton(), resourceID: this.resourceID, customContainerId: this.taskbarCustomContainerId, customSlotId: this.gridHeaderCustomSlotId }, h("slot", { name: this.gridHeaderCustomSlotId }))), h("div", { class: "ez-col ez-col--sd-12" }, h("slot", { name: "SnkGridFooter" })), h("ez-modal", { modalSize: "small", closeEsc: false, closeOutsideClick: false, opened: this._popUpGridConfig, onEzCloseModal: () => this.closeGridConfig() }, h("snk-grid-config", { ref: ref => this._snkGridConfig = ref, config: this._gridConfig, "data-element-id": this._element.getAttribute(ElementIDUtils.DATA_ELEMENT_ID_ATTRIBUTE_NAME), selectedIndex: 0, configName: this.configName, onConfigChange: (evt) => this.modalConfigChangeHandler(evt), onConfigCancel: () => this.closeGridConfig(), resourceID: this.resourceID }))));
|
|
465
|
+
h(Fragment, null, 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 }), h("hr", { class: "ez-divider-vertical ez-divider--dark ez-margin-left--medium snk-grid__header-divider" })), h("snk-taskbar", { class: "ez-padding-left--medium", "data-element-id": "grid_top", key: "topTaskbar", configName: this.configName, dataUnit: this._dataUnit, messagesBuilder: this.messagesBuilder, buttons: this._topTaskbarProcessor.buttons, disabledButtons: this._topTaskbarProcessor.disabledButtons, customButtons: this._topTaskbarProcessor.customButtons, primaryButton: this.getPrimaryButton(), resourceID: this.resourceID, customContainerId: this.taskbarCustomContainerId, customSlotId: this.topTaskbarCustomSlotId, overflowStrategy: 'none' }, h("slot", { name: this.topTaskbarCustomSlotId }))), h("ez-grid", { ref: ref => this._grid = ref, class: (this.presentationMode === PresentationMode.SECONDARY ? "snk-grid-container__without-shadow " : "") + "snk-grid__table", "data-element-id": "embedded", dataUnit: this._dataUnit, key: "grid-" + this._snkDataUnit.entityName, config: this._gridConfig, onConfigChange: (evt) => { this.gridConfigChangeHandler(evt); }, onEzDoubleClick: (evt) => this.gridDoubleClick.emit(evt.detail), statusResolver: this.statusResolver, multipleSelection: this.multipleSelection, columnfilterDataSource: this.columnFilterDataSource, selectionToastConfig: this.selectionToastConfig, useEnterLikeTab: this.useEnterLikeTab, recordsValidator: this.recordsValidator, canEdit: this.canEdit, autoFocus: this.autoFocus, enableGridInsert: this.enableGridInsert, enableContinuousInsert: this._enableContinuousInsert, enableLockManger: this.enableLockManger }, h("snk-taskbar", { id: 'teste', dataUnit: this._dataUnit, configName: this.configName, messagesBuilder: this.messagesBuilder, "data-element-id": "grid_left", buttons: this.getGridHeaderButtons(), presentationMode: this.presentationMode, disabledButtons: this._headerTaskbarProcessor.disabledButtons, customButtons: this._headerTaskbarProcessor.customButtons, slot: "leftButtons", actionsList: this.getActionsList(), primaryButton: this.getPrimaryButton(), resourceID: this.resourceID, customContainerId: this.taskbarCustomContainerId, customSlotId: this.gridHeaderCustomSlotId }, h("slot", { name: this.gridHeaderCustomSlotId }))), h("div", { class: "ez-col ez-col--sd-12" }, h("slot", { name: "SnkGridFooter" })), h("ez-modal", { modalSize: "small", closeEsc: false, closeOutsideClick: false, opened: this._popUpGridConfig, onEzCloseModal: () => this.closeGridConfig() }, h("snk-grid-config", { ref: ref => this._snkGridConfig = ref, config: this._gridConfig, "data-element-id": this._element.getAttribute(ElementIDUtils.DATA_ELEMENT_ID_ATTRIBUTE_NAME), selectedIndex: 0, configName: this.configName, onConfigChange: (evt) => this.modalConfigChangeHandler(evt), onConfigCancel: () => this.closeGridConfig(), resourceID: this.resourceID }))));
|
|
458
466
|
}
|
|
459
467
|
static get is() { return "snk-grid"; }
|
|
460
468
|
static get encapsulation() { return "scoped"; }
|
|
@@ -918,6 +926,24 @@ export class SnkGrid {
|
|
|
918
926
|
"attribute": "enable-grid-insert",
|
|
919
927
|
"reflect": false,
|
|
920
928
|
"defaultValue": "false"
|
|
929
|
+
},
|
|
930
|
+
"enableLockManger": {
|
|
931
|
+
"type": "boolean",
|
|
932
|
+
"mutable": false,
|
|
933
|
+
"complexType": {
|
|
934
|
+
"original": "boolean",
|
|
935
|
+
"resolved": "boolean",
|
|
936
|
+
"references": {}
|
|
937
|
+
},
|
|
938
|
+
"required": false,
|
|
939
|
+
"optional": true,
|
|
940
|
+
"docs": {
|
|
941
|
+
"tags": [],
|
|
942
|
+
"text": "Ativa o gerenciamento de locks na grade."
|
|
943
|
+
},
|
|
944
|
+
"attribute": "enable-lock-manger",
|
|
945
|
+
"reflect": false,
|
|
946
|
+
"defaultValue": "false"
|
|
921
947
|
}
|
|
922
948
|
};
|
|
923
949
|
}
|
|
@@ -41,6 +41,7 @@ export class SnkSimpleCrud {
|
|
|
41
41
|
this.mode = SIMPLE_CRUD_MODE.SERVER;
|
|
42
42
|
this.gridConfig = undefined;
|
|
43
43
|
this.formConfig = undefined;
|
|
44
|
+
this.enableLockManger = false;
|
|
44
45
|
this._formFields = [];
|
|
45
46
|
this._fieldsProps = new Map();
|
|
46
47
|
this._enableContinuousInsert = true;
|
|
@@ -725,16 +726,18 @@ export class SnkSimpleCrud {
|
|
|
725
726
|
return;
|
|
726
727
|
this.goToView(VIEW_MODE.FORM);
|
|
727
728
|
}
|
|
729
|
+
renderTaskbarContent() {
|
|
730
|
+
var _a;
|
|
731
|
+
return (h("snk-taskbar", { class: this._currentViewMode === VIEW_MODE.FORM && "ez-box ez-box--shadow ez-padding--small", dataUnit: this.dataUnit, primaryButton: ((_a = this.dataState) === null || _a === void 0 ? void 0 : _a.isDirty) ? "SAVE" : "INSERT", "data-element-id": "grid_left", messagesBuilder: this.messagesBuilder, buttons: this._taskbarProcessor.buttons, actionsList: this.getActionsList(), disabledButtons: this._taskbarProcessor.disabledButtons, customButtons: this._taskbarProcessor.customButtons, "data-exporter-store-key": this.getDataExporterStoreKey(), slot: "leftButtons", presentationMode: PresentationMode.SECONDARY }, h("slot", { name: "TASKBAR_CUSTOM_ELEMENTS" })));
|
|
732
|
+
}
|
|
728
733
|
/* istanbul ignore next */
|
|
729
734
|
render() {
|
|
730
|
-
var _a;
|
|
731
735
|
if (this.dataUnit == undefined) {
|
|
732
736
|
return;
|
|
733
737
|
}
|
|
734
|
-
|
|
735
|
-
return (h("snk-data-unit", { ref: ref => this._snkDataUnit = ref, class: "simple-crud__container", dataUnit: this.dataUnit, useCancelConfirm: this.useCancelConfirm, onDataStateChange: evt => this.onDataStateChange(evt), onCancelEdition: this.handleCancelEdit.bind(this), pageSize: this.getPageSize(), onInsertionMode: this.handleDataUnitOnInsertionMode.bind(this), onDataUnitReady: (evt) => this.dataUnitReady.emit(evt.detail), ignoreSaveMessage: this._currentViewMode === VIEW_MODE.GRID && !this.enableGridInsert, onMessagesBuilderUpdated: evt => this.messagesBuilder = evt.detail, onDataUnitFieldsHidded: this.updateFormConfig.bind(this), domainMessagesBuilder: this.domainMessagesBuilder }, h("header", null, h("slot", { name: "snkSimpleCrudHeader" })), h("section", { class: "ez-box ez-box--shadow simple-crud__container-section" }, this._currentViewMode === VIEW_MODE.FORM && taskbarContent, h("ez-view-stack", { ref: (ref) => this._viewStack = ref, "data-element-id": "simple-crud" }, h("stack-item", null, h("ez-grid", { class: "ez-margin-bottom--large", ref: ref => this._grid = ref, dataUnit: this.dataUnit, config: this.gridConfig, "no-header": true, multipleSelection: this.multipleSelection, onEzDoubleClick: () => this.goToView(VIEW_MODE.FORM), onConfigChange: evt => this.gridConfigChangeHandler(evt), columnfilterDataSource: this.dataUnit.name && this.dataUnit.name.includes(InMemoryLoader.IN_MEMORY_DATA_UNIT_NAME)
|
|
738
|
+
return (h("snk-data-unit", { ref: ref => this._snkDataUnit = ref, class: "simple-crud__container", dataUnit: this.dataUnit, useCancelConfirm: this.useCancelConfirm, onDataStateChange: evt => this.onDataStateChange(evt), onCancelEdition: this.handleCancelEdit.bind(this), pageSize: this.getPageSize(), onInsertionMode: this.handleDataUnitOnInsertionMode.bind(this), onDataUnitReady: (evt) => this.dataUnitReady.emit(evt.detail), ignoreSaveMessage: this._currentViewMode === VIEW_MODE.GRID, onMessagesBuilderUpdated: evt => this.messagesBuilder = evt.detail, onDataUnitFieldsHidded: this.updateFormConfig.bind(this), domainMessagesBuilder: this.domainMessagesBuilder }, h("header", null, h("slot", { name: "snkSimpleCrudHeader" })), h("section", { class: "ez-box ez-box--shadow simple-crud__container-section" }, h("ez-view-stack", { ref: (ref) => this._viewStack = ref, "data-element-id": "simple-crud" }, h("stack-item", null, h("ez-grid", { class: "ez-margin-bottom--large", ref: ref => this._grid = ref, dataUnit: this.dataUnit, config: this.gridConfig, "no-header": true, multipleSelection: this.multipleSelection, onEzDoubleClick: () => this.goToView(VIEW_MODE.FORM), onConfigChange: evt => this.gridConfigChangeHandler(evt), columnfilterDataSource: this.dataUnit.name && this.dataUnit.name.includes(InMemoryLoader.IN_MEMORY_DATA_UNIT_NAME)
|
|
736
739
|
? undefined
|
|
737
|
-
: this._multiSelectionListDataSource, useEnterLikeTab: this.useEnterLikeTab, autoFocus: this.autoFocus, enableGridInsert: this.enableGridInsert, enableContinuousInsert: this._enableContinuousInsert
|
|
740
|
+
: this._multiSelectionListDataSource, useEnterLikeTab: this.useEnterLikeTab, autoFocus: this.autoFocus, enableGridInsert: this.enableGridInsert, enableContinuousInsert: this._enableContinuousInsert, enableLockManger: this.enableLockManger }, this.renderTaskbarContent(), h("div", { slot: "footer" }, h("slot", { name: "snkSimpleCrudFooter" })))), h("stack-item", null, this.renderTaskbarContent(), h("ez-form", { ref: (ref) => this._form = ref, class: `ez-margin-top--large ${this.handleShowFormConfig() ? "simple-crud__form--hidden" : ""}`, dataUnit: this.dataUnit, config: this.getFormConfig(), fieldToFocus: this._fieldToGetFocus, onEzFormSetFields: (evt) => this.handleFormSetFields(evt.detail), onEzFormRequestClearFieldToFocus: this.clearFieldToFocusHandler.bind(this) }), this.handleShowFormConfig() && h("snk-form-config", { messagesBuilder: this.messagesBuilder, dataUnit: this.dataUnit, configManager: this._formConfigManager, onConfigClose: () => this.closeFormConfig() })), this.messagesBuilder && h("snk-configurator", { ref: (ref) => this._snkConfigurator = ref, viewMode: this._currentViewMode, messagesBuilder: this.messagesBuilder, onConfigSelected: (evt) => this.goToView(evt.detail), onOpenConfig: (evt) => this.openConfig(evt.detail), showActionButtons: this.showConfiguratorButtons, onSave: evt => this.handleConfiguratorEvent(evt, 'SAVE'), onCancel: evt => this.handleConfiguratorEvent(evt, 'CANCEL'), resourceID: this.resolveResourceID(), customContainerId: this._customContainerId })), h("div", { id: `${this._customContainerId}` }, h("slot", { name: "SnkConfigContainerSlot" }))), h("ez-modal", { modalSize: "small", closeEsc: false, closeOutsideClick: false, opened: this._showPopUpGridConfig, onEzCloseModal: () => this.closeGridConfig() }, h("snk-grid-config", { ref: ref => this._snkGridConfig = ref, config: this.gridConfig, "data-element-id": this._element.getAttribute(ElementIDUtils.DATA_ELEMENT_ID_ATTRIBUTE_NAME), selectedIndex: 0, configName: this.configName, onConfigChange: (evt) => this.modalConfigChangeHandler(evt), onConfigCancel: () => this.closeGridConfig(), resourceID: this.resolveResourceID() }))));
|
|
738
741
|
}
|
|
739
742
|
static get is() { return "snk-simple-crud"; }
|
|
740
743
|
static get encapsulation() { return "scoped"; }
|
|
@@ -870,6 +873,24 @@ export class SnkSimpleCrud {
|
|
|
870
873
|
"text": ""
|
|
871
874
|
}
|
|
872
875
|
},
|
|
876
|
+
"enableLockManger": {
|
|
877
|
+
"type": "boolean",
|
|
878
|
+
"mutable": false,
|
|
879
|
+
"complexType": {
|
|
880
|
+
"original": "boolean",
|
|
881
|
+
"resolved": "boolean",
|
|
882
|
+
"references": {}
|
|
883
|
+
},
|
|
884
|
+
"required": false,
|
|
885
|
+
"optional": true,
|
|
886
|
+
"docs": {
|
|
887
|
+
"tags": [],
|
|
888
|
+
"text": ""
|
|
889
|
+
},
|
|
890
|
+
"attribute": "enable-lock-manger",
|
|
891
|
+
"reflect": false,
|
|
892
|
+
"defaultValue": "false"
|
|
893
|
+
},
|
|
873
894
|
"multipleSelection": {
|
|
874
895
|
"type": "boolean",
|
|
875
896
|
"mutable": false,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ApplicationContext, ElementIDUtils, OverflowDirection, OverflowWatcher, StringUtils, OVERFLOWED_CLASS_NAME } from '@sankhyalabs/core';
|
|
1
|
+
import { ApplicationContext, ElementIDUtils, OverflowDirection, OverflowWatcher, StringUtils, OVERFLOWED_CLASS_NAME, LockManager, LockManagerOperation } from '@sankhyalabs/core';
|
|
2
2
|
import { h, Host } from '@stencil/core';
|
|
3
3
|
import { AuthorizationConfig } from '../snk-configurator/AuthorizationConfig';
|
|
4
4
|
import { AuthorizationElements, buildCustomButton, buildElem, TaskbarElement, VisibleWhenForbidden, } from './elements/taskbar-elements';
|
|
@@ -149,42 +149,44 @@ export class SnkTaskbar {
|
|
|
149
149
|
return key ? (_a = this.messagesBuilder) === null || _a === void 0 ? void 0 : _a.getMessage(key, {}) : "";
|
|
150
150
|
}
|
|
151
151
|
elementClick(elem) {
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
this._isWaitingForSave
|
|
178
|
-
|
|
179
|
-
.
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
152
|
+
LockManager.whenResolve(this._element, LockManagerOperation.TASKBAR_CLICK).then(() => {
|
|
153
|
+
if (this.dataUnit) {
|
|
154
|
+
switch (elem) {
|
|
155
|
+
case TaskbarElement.PREVIOUS:
|
|
156
|
+
this.dataUnit.previousRecord();
|
|
157
|
+
break;
|
|
158
|
+
case TaskbarElement.NEXT:
|
|
159
|
+
this.dataUnit.nextRecord();
|
|
160
|
+
break;
|
|
161
|
+
case TaskbarElement.REFRESH:
|
|
162
|
+
this.dataUnit.loadData();
|
|
163
|
+
break;
|
|
164
|
+
case TaskbarElement.CLONE:
|
|
165
|
+
this.dataUnit.copySelected();
|
|
166
|
+
break;
|
|
167
|
+
case TaskbarElement.REMOVE:
|
|
168
|
+
this.dataUnit.removeSelectedRecords();
|
|
169
|
+
break;
|
|
170
|
+
case TaskbarElement.INSERT:
|
|
171
|
+
this.dataUnit.addRecord();
|
|
172
|
+
break;
|
|
173
|
+
case TaskbarElement.CANCEL:
|
|
174
|
+
this.dataUnit.cancelEdition();
|
|
175
|
+
break;
|
|
176
|
+
case TaskbarElement.SAVE:
|
|
177
|
+
if (!this._isWaitingForSave) {
|
|
178
|
+
this._isWaitingForSave = true;
|
|
179
|
+
this.dataUnit.saveData()
|
|
180
|
+
.finally(() => {
|
|
181
|
+
this._isWaitingForSave = false;
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
break;
|
|
185
|
+
}
|
|
184
186
|
}
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
187
|
+
if (this.isEnabled(elem))
|
|
188
|
+
this.actionClick.emit(elem);
|
|
189
|
+
});
|
|
188
190
|
}
|
|
189
191
|
isEnabled(elem) {
|
|
190
192
|
if (!this.isAllowed(elem)) {
|
|
@@ -388,9 +390,10 @@ export class SnkTaskbar {
|
|
|
388
390
|
this._lastWidth = this._element.getBoundingClientRect().width;
|
|
389
391
|
}
|
|
390
392
|
disconnectedCallback() {
|
|
391
|
-
var _a;
|
|
393
|
+
var _a, _b;
|
|
394
|
+
(_a = this.dataUnit) === null || _a === void 0 ? void 0 : _a.unsubscribe(this.onSaveEvent);
|
|
392
395
|
this.unlinkAllCustomElements();
|
|
393
|
-
(
|
|
396
|
+
(_b = this._overFlowWatcher) === null || _b === void 0 ? void 0 : _b.destroy();
|
|
394
397
|
}
|
|
395
398
|
unlinkAllCustomElements() {
|
|
396
399
|
var _a;
|
|
@@ -4,6 +4,7 @@ import { DataFetcher } from "../DataFetcher";
|
|
|
4
4
|
export default class ParametersFetcher {
|
|
5
5
|
constructor() {
|
|
6
6
|
this._embeddedParams = new Map();
|
|
7
|
+
this._cachedParams = new Map();
|
|
7
8
|
this.templateByQuery = new Map();
|
|
8
9
|
try {
|
|
9
10
|
if (window["MGE_PARAMS"] != undefined) {
|
|
@@ -33,11 +34,16 @@ export default class ParametersFetcher {
|
|
|
33
34
|
if (this._embeddedParams.has(name)) {
|
|
34
35
|
return Promise.resolve(this._embeddedParams.get(name));
|
|
35
36
|
}
|
|
37
|
+
if (this._cachedParams.has(name)) {
|
|
38
|
+
return this._cachedParams.get(name);
|
|
39
|
+
}
|
|
36
40
|
const completPath = `param://application?params=${name}`;
|
|
37
|
-
|
|
41
|
+
const param = await DataFetcher.get().callGraphQL({
|
|
38
42
|
values: { name: completPath },
|
|
39
43
|
query: this.templateByQuery.get("fetchParam"),
|
|
40
44
|
});
|
|
45
|
+
this._cachedParams.set(name, param);
|
|
46
|
+
return param;
|
|
41
47
|
}
|
|
42
48
|
async asString(name) {
|
|
43
49
|
const paramArr = await this.getParam(name);
|
|
@@ -7,7 +7,6 @@ import snkCrudMessages from "./resources/snk-crud.msg";
|
|
|
7
7
|
import snkSimpleCrudMessages from "./resources/snk-simple-crud.msg";
|
|
8
8
|
import fileViewerMessages from "./resources/file-viewer.msg";
|
|
9
9
|
import snkApplicationMessages from "./resources/snk-application.msg";
|
|
10
|
-
import snkDistinctSearchMessages from "./resources/snk-distinct-search.msg";
|
|
11
10
|
import { snkFormConfigMessages, snkConfigOptionsMessages, snkFieldConfigMessages, snkTabConfigMessages } from "./resources/snk-form.msg";
|
|
12
11
|
import { snkConfiguratorMessages } from "./resources/snk-configurator.msg";
|
|
13
12
|
import { snkGridMessages, snkGridConfigMessages } from "./resources/snk-grid.msg";
|
|
@@ -49,7 +48,6 @@ export class SnkMessageBuilder {
|
|
|
49
48
|
snkEntityList: snkEntityListMessages,
|
|
50
49
|
snkActionsButton: snkActionsButtonMessages,
|
|
51
50
|
snkPrintSelector: snkPrintSelectorMessages,
|
|
52
|
-
snkDistinctSearch: snkDistinctSearchMessages,
|
|
53
51
|
};
|
|
54
52
|
this._currentOperation = OperationMap.CLEAN;
|
|
55
53
|
this._domainName = domainName;
|