@sankhyalabs/sankhyablocks 8.16.0-dev.104 → 8.16.0-dev.106
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/{ClientSideExporterProvider-8c219037.js → ClientSideExporterProvider-a2753c93.js} +3 -3
- package/dist/cjs/{SnkMessageBuilder-bae64d0d.js → SnkMessageBuilder-aecd7c18.js} +31 -24
- package/dist/cjs/{dataunit-fetcher-4a5d491a.js → dataunit-fetcher-a723f0dc.js} +5 -2
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/pesquisa-grid_2.cjs.entry.js +1 -1
- package/dist/cjs/sankhyablocks.cjs.js +1 -1
- package/dist/cjs/snk-actions-button_7.cjs.entry.js +1 -1
- package/dist/cjs/snk-application.cjs.entry.js +2 -2
- package/dist/cjs/snk-attach.cjs.entry.js +2 -2
- package/dist/cjs/snk-crud.cjs.entry.js +19 -11
- package/dist/cjs/snk-data-exporter.cjs.entry.js +3 -3
- package/dist/cjs/{snk-data-unit-4b510d6e.js → snk-data-unit-ebfdb9ba.js} +226 -12
- package/dist/cjs/snk-data-unit.cjs.entry.js +3 -3
- package/dist/cjs/snk-detail-view.cjs.entry.js +4 -4
- package/dist/cjs/snk-grid.cjs.entry.js +23 -9
- package/dist/cjs/{snk-guides-viewer-e8e5f7b4.js → snk-guides-viewer-fd39f437.js} +99 -44
- package/dist/cjs/snk-guides-viewer.cjs.entry.js +3 -3
- package/dist/cjs/snk-pesquisa.cjs.entry.js +1 -1
- package/dist/cjs/snk-simple-crud.cjs.entry.js +67 -24
- package/dist/cjs/snk-taskbar.cjs.entry.js +2 -1
- package/dist/cjs/{taskbar-elements-7e19882d.js → taskbar-elements-02379452.js} +3 -0
- package/dist/collection/components/snk-crud/snk-crud.js +35 -9
- package/dist/collection/components/snk-crud/subcomponents/snk-guides-viewer.js +117 -43
- package/dist/collection/components/snk-data-unit/MultipleUpdateHelper.js +128 -0
- package/dist/collection/components/snk-data-unit/snk-data-unit.js +107 -12
- package/dist/collection/components/snk-grid/filtercolumn/SnkMultiSelectionListDataSource.js +2 -2
- package/dist/collection/components/snk-grid/snk-grid.js +38 -6
- package/dist/collection/components/snk-simple-crud/snk-simple-crud.js +83 -22
- package/dist/collection/components/snk-taskbar/elements/taskbar-elements.js +3 -0
- package/dist/collection/components/snk-taskbar/snk-taskbar.js +2 -2
- package/dist/collection/lib/http/data-fetcher/fetchers/data-unit/cache/PreloadManager.js +5 -2
- package/dist/collection/lib/message/SnkMessageBuilder.js +1 -0
- package/dist/collection/lib/message/resources/snk-data-unit.msg.js +28 -23
- package/dist/collection/lib/message/resources/snk-taskbar.msg.js +1 -0
- package/dist/components/ContinuousInsertUtils.js +2 -2
- package/dist/components/SnkMessageBuilder.js +31 -24
- package/dist/components/dataunit-fetcher.js +5 -2
- package/dist/components/snk-crud.js +18 -9
- package/dist/components/snk-data-unit2.js +225 -11
- package/dist/components/snk-detail-view2.js +98 -43
- package/dist/components/snk-grid2.js +21 -6
- package/dist/components/snk-simple-crud2.js +66 -22
- package/dist/components/snk-taskbar2.js +4 -0
- package/dist/esm/{ClientSideExporterProvider-a37f890b.js → ClientSideExporterProvider-b3871edb.js} +3 -3
- package/dist/esm/{SnkMessageBuilder-6fff4a4c.js → SnkMessageBuilder-12f5fe1a.js} +31 -24
- package/dist/esm/{dataunit-fetcher-1d02ecfc.js → dataunit-fetcher-0e025732.js} +5 -2
- package/dist/esm/loader.js +1 -1
- package/dist/esm/pesquisa-grid_2.entry.js +1 -1
- package/dist/esm/sankhyablocks.js +1 -1
- package/dist/esm/snk-actions-button_7.entry.js +1 -1
- package/dist/esm/snk-application.entry.js +2 -2
- package/dist/esm/snk-attach.entry.js +2 -2
- package/dist/esm/snk-crud.entry.js +19 -11
- package/dist/esm/snk-data-exporter.entry.js +3 -3
- package/dist/esm/{snk-data-unit-7d0ce406.js → snk-data-unit-03654813.js} +226 -12
- package/dist/esm/snk-data-unit.entry.js +3 -3
- package/dist/esm/snk-detail-view.entry.js +4 -4
- package/dist/esm/snk-grid.entry.js +23 -9
- package/dist/esm/{snk-guides-viewer-c44b3839.js → snk-guides-viewer-75e06feb.js} +100 -45
- package/dist/esm/snk-guides-viewer.entry.js +3 -3
- package/dist/esm/snk-pesquisa.entry.js +1 -1
- package/dist/esm/snk-simple-crud.entry.js +68 -25
- package/dist/esm/snk-taskbar.entry.js +2 -1
- package/dist/esm/{taskbar-elements-d2353c64.js → taskbar-elements-c62b6c66.js} +3 -0
- package/dist/sankhyablocks/{p-35f85998.entry.js → p-1a51dfde.entry.js} +1 -1
- package/dist/sankhyablocks/{p-ef6f0a1b.entry.js → p-1c29409b.entry.js} +1 -1
- package/dist/sankhyablocks/{p-5503e89f.entry.js → p-271c86d3.entry.js} +1 -1
- package/dist/sankhyablocks/p-2d6df7e7.entry.js +1 -0
- package/dist/sankhyablocks/p-41da5310.js +1 -0
- package/dist/sankhyablocks/{p-b2a2a83e.entry.js → p-4a93daef.entry.js} +1 -1
- package/dist/sankhyablocks/p-65be98c5.entry.js +1 -0
- package/dist/sankhyablocks/{p-6541bb6d.entry.js → p-6a0c8ce0.entry.js} +1 -1
- package/dist/sankhyablocks/p-7993b2e3.js +60 -0
- package/dist/sankhyablocks/{p-754559b9.entry.js → p-7cd5c315.entry.js} +1 -1
- package/dist/sankhyablocks/p-80f8c22c.js +1 -0
- package/dist/sankhyablocks/p-885802c3.js +1 -0
- package/dist/sankhyablocks/p-ab0caed6.entry.js +1 -0
- package/dist/sankhyablocks/{p-38e3ffda.entry.js → p-ad07f0c5.entry.js} +1 -1
- package/dist/sankhyablocks/p-cc8c3bca.entry.js +1 -0
- package/dist/sankhyablocks/{p-3b190fb1.entry.js → p-d31a701e.entry.js} +1 -1
- package/dist/sankhyablocks/{p-00796b12.entry.js → p-dc6ad9a6.entry.js} +1 -1
- package/dist/sankhyablocks/p-f4d5bb7f.js +1 -0
- package/dist/sankhyablocks/p-fb0f0087.js +1 -0
- package/dist/sankhyablocks/sankhyablocks.esm.js +1 -1
- package/dist/types/components/snk-crud/snk-crud.d.ts +4 -0
- package/dist/types/components/snk-crud/subcomponents/snk-guides-viewer.d.ts +10 -1
- package/dist/types/components/snk-data-unit/MultipleUpdateHelper.d.ts +9 -0
- package/dist/types/components/snk-data-unit/snk-data-unit.d.ts +17 -0
- package/dist/types/components/snk-grid/filtercolumn/SnkMultiSelectionListDataSource.d.ts +2 -1
- package/dist/types/components/snk-grid/snk-grid.d.ts +5 -0
- package/dist/types/components/snk-simple-crud/snk-simple-crud.d.ts +9 -2
- package/dist/types/components/snk-taskbar/elements/taskbar-elements.d.ts +2 -1
- package/dist/types/components/snk-taskbar/snk-taskbar.d.ts +1 -0
- package/dist/types/components.d.ts +28 -0
- package/dist/types/lib/http/data-fetcher/fetchers/data-unit/cache/PreloadManager.d.ts +1 -1
- package/dist/types/lib/message/SnkMessageBuilder.d.ts +2 -1
- package/package.json +1 -1
- package/dist/sankhyablocks/p-17425c72.js +0 -1
- package/dist/sankhyablocks/p-3fc82614.js +0 -1
- package/dist/sankhyablocks/p-460f1827.entry.js +0 -1
- package/dist/sankhyablocks/p-6e0a5314.js +0 -1
- package/dist/sankhyablocks/p-835128f5.entry.js +0 -1
- package/dist/sankhyablocks/p-8fa828b5.js +0 -1
- package/dist/sankhyablocks/p-92778d5a.js +0 -1
- package/dist/sankhyablocks/p-a8be1d67.js +0 -60
- package/dist/sankhyablocks/p-a962a3e4.entry.js +0 -1
- package/dist/sankhyablocks/p-e35fe2bd.entry.js +0 -1
@@ -6,6 +6,135 @@ import { g as getRecordValue, a as DatasetStrategy } from './dataunit-fetcher.js
|
|
6
6
|
import { convertType } from '@sankhyalabs/core/dist/dataunit/metadata/DataType';
|
7
7
|
import { g as getSelectedRecordsIDsInfo } from './GetSelectedRecordsIDsInfo.js';
|
8
8
|
|
9
|
+
const NO_TAB_NAME = "__NO_TAB_NAME__";
|
10
|
+
const MAIN_TAB_NAME = "__main";
|
11
|
+
async function showConfirmMultipleUpdatePopup({ title, labelBtnConfirm, labelBtnCancel, message, changingFields, }) {
|
12
|
+
return new Promise((resolve) => {
|
13
|
+
const popup = builPopup(title, resolve);
|
14
|
+
const contentContainer = buildContentContainer();
|
15
|
+
contentContainer.appendChild(buildMessage(message));
|
16
|
+
contentContainer.appendChild(buildChangesContainer(changingFields));
|
17
|
+
const actionsContainer = buildActionsContainer();
|
18
|
+
actionsContainer.appendChild(buildCancelBtn(popup, labelBtnCancel, resolve));
|
19
|
+
actionsContainer.appendChild(buildConfirmBtn(popup, labelBtnConfirm, resolve));
|
20
|
+
contentContainer.appendChild(actionsContainer);
|
21
|
+
popup.appendChild(contentContainer);
|
22
|
+
document.body.appendChild(popup);
|
23
|
+
});
|
24
|
+
}
|
25
|
+
function groupChanges(changingFields) {
|
26
|
+
const changesMap = new Map();
|
27
|
+
changingFields.forEach(change => {
|
28
|
+
var _a;
|
29
|
+
const key = (_a = change.tabName) !== null && _a !== void 0 ? _a : NO_TAB_NAME;
|
30
|
+
if (!changesMap.has(key))
|
31
|
+
changesMap.set(key, []);
|
32
|
+
changesMap.get(key).push(change);
|
33
|
+
});
|
34
|
+
return changesMap;
|
35
|
+
}
|
36
|
+
function getTabName(tabName) {
|
37
|
+
switch (tabName) {
|
38
|
+
case NO_TAB_NAME:
|
39
|
+
return "";
|
40
|
+
case MAIN_TAB_NAME:
|
41
|
+
return "Principal";
|
42
|
+
default:
|
43
|
+
return tabName;
|
44
|
+
}
|
45
|
+
}
|
46
|
+
function buildChangesDiv(tabName, changes) {
|
47
|
+
const changeLabel = document.createElement('span');
|
48
|
+
changeLabel.innerText = getTabName(tabName);
|
49
|
+
changeLabel.style.display = 'block';
|
50
|
+
changeLabel.style.fontWeight = 'var(--text-weight--large, 500)';
|
51
|
+
changeLabel.style.fontSize = 'var(--text--medium, 14px)';
|
52
|
+
changeLabel.style.marginBottom = 'var(--space--small, 6px)';
|
53
|
+
const changeDiv = document.createElement('div');
|
54
|
+
changeDiv.style.padding = 'var(--space--medium, 12px) 0';
|
55
|
+
changeDiv.style.borderTop = '1px solid var(--color--disable-secondary, #f2f5f8)';
|
56
|
+
changeDiv.appendChild(changeLabel);
|
57
|
+
changes.forEach(change => {
|
58
|
+
const changeLine = document.createElement('span');
|
59
|
+
changeLine.innerHTML = `${change.label}: <span style="color: var(--text--primary, #626e82)">${change.value}</span>`;
|
60
|
+
changeLine.style.display = 'block';
|
61
|
+
changeLine.style.marginBottom = 'var(--space--extra-small, 3px)';
|
62
|
+
changeDiv.appendChild(changeLine);
|
63
|
+
});
|
64
|
+
return changeDiv;
|
65
|
+
}
|
66
|
+
function buildChangesContainer(changingFields) {
|
67
|
+
const changesContainer = document.createElement('div');
|
68
|
+
changesContainer.style.flexDirection = 'column';
|
69
|
+
changesContainer.style.display = 'flex';
|
70
|
+
changesContainer.style.overflow = 'auto';
|
71
|
+
changesContainer.style.maxHeight = '300px';
|
72
|
+
const changesMap = groupChanges(changingFields);
|
73
|
+
changesMap.forEach((changes, key) => {
|
74
|
+
changesContainer.appendChild(buildChangesDiv(key, changes));
|
75
|
+
});
|
76
|
+
return changesContainer;
|
77
|
+
}
|
78
|
+
function buildMessage(messageContent) {
|
79
|
+
const message = document.createElement('p');
|
80
|
+
message.textContent = messageContent;
|
81
|
+
message.style.fontSize = 'var(--text--medium, 14px)';
|
82
|
+
return message;
|
83
|
+
}
|
84
|
+
function buildContentContainer() {
|
85
|
+
const contentContainer = document.createElement('div');
|
86
|
+
contentContainer.style.display = 'flex';
|
87
|
+
contentContainer.style.flexDirection = 'column';
|
88
|
+
contentContainer.style.fontFamily = 'var(--font-pattern, Roboto)';
|
89
|
+
contentContainer.style.fontSize = 'var(--text--medium, 14px)';
|
90
|
+
return contentContainer;
|
91
|
+
}
|
92
|
+
function buildActionsContainer() {
|
93
|
+
const actionsContainer = document.createElement('div');
|
94
|
+
actionsContainer.style.display = 'flex';
|
95
|
+
actionsContainer.style.flexDirection = 'row';
|
96
|
+
actionsContainer.style.justifyContent = 'flex-end';
|
97
|
+
actionsContainer.style.gap = '5px';
|
98
|
+
return actionsContainer;
|
99
|
+
}
|
100
|
+
function builPopup(title, resolve) {
|
101
|
+
const popup = document.createElement('ez-popup');
|
102
|
+
popup.opened = true;
|
103
|
+
popup.size = 'small';
|
104
|
+
popup.ezTitle = title;
|
105
|
+
popup.heightMode = 'auto';
|
106
|
+
popup.addEventListener('ezClosePopup', () => {
|
107
|
+
document.body.removeChild(popup);
|
108
|
+
resolve(false);
|
109
|
+
}, { once: true });
|
110
|
+
popup.addEventListener('ezPopupAction', () => {
|
111
|
+
document.body.removeChild(popup);
|
112
|
+
resolve(false);
|
113
|
+
}, { once: true });
|
114
|
+
return popup;
|
115
|
+
}
|
116
|
+
function buildConfirmBtn(popup, confirmBtnLabel, resolve) {
|
117
|
+
const confirmBtn = document.createElement('ez-button');
|
118
|
+
confirmBtn.label = confirmBtnLabel;
|
119
|
+
confirmBtn.size = 'medium';
|
120
|
+
confirmBtn.classList.add('ez-button--primary');
|
121
|
+
confirmBtn.onclick = () => {
|
122
|
+
document.body.removeChild(popup);
|
123
|
+
resolve(true);
|
124
|
+
};
|
125
|
+
return confirmBtn;
|
126
|
+
}
|
127
|
+
function buildCancelBtn(popup, cancelBtnLabel, resolve) {
|
128
|
+
const cancelBtn = document.createElement('ez-button');
|
129
|
+
cancelBtn.label = cancelBtnLabel;
|
130
|
+
cancelBtn.size = 'medium';
|
131
|
+
cancelBtn.onclick = () => {
|
132
|
+
document.body.removeChild(popup);
|
133
|
+
resolve(false);
|
134
|
+
};
|
135
|
+
return cancelBtn;
|
136
|
+
}
|
137
|
+
|
9
138
|
const SnkDataUnit = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
10
139
|
constructor() {
|
11
140
|
super();
|
@@ -22,6 +151,7 @@ const SnkDataUnit = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
22
151
|
this._fieldsWithRmPrecision = [];
|
23
152
|
this._metadataByRow = new Map();
|
24
153
|
this._rowMetadataCache = new Map();
|
154
|
+
this._formFieldsConfig = [];
|
25
155
|
this.REGEX_DATAUNIT_NAME = /dd:\/\/(.+?)\//;
|
26
156
|
this._dataUnitObserver = async (action) => {
|
27
157
|
const duState = await this.buildDataState(action.type);
|
@@ -98,6 +228,10 @@ const SnkDataUnit = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
98
228
|
this.messagesBuilderUpdated.emit(newValue);
|
99
229
|
}
|
100
230
|
}
|
231
|
+
onMasterFormConfigChange({ detail }) {
|
232
|
+
var _a;
|
233
|
+
this._formFieldsConfig = (_a = detail === null || detail === void 0 ? void 0 : detail.fields) !== null && _a !== void 0 ? _a : [];
|
234
|
+
}
|
101
235
|
/**
|
102
236
|
* Obtém o dataUnit.
|
103
237
|
*/
|
@@ -272,9 +406,13 @@ const SnkDataUnit = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
272
406
|
this._openedAlert = false;
|
273
407
|
}
|
274
408
|
async interceptSavingData(action) {
|
275
|
-
if (
|
276
|
-
|
409
|
+
if (this.dataUnit.isMultipleEdition) {
|
410
|
+
const confirm = await this.confirmMultipleSavingData();
|
411
|
+
if (!confirm)
|
412
|
+
return undefined;
|
277
413
|
}
|
414
|
+
if (!this.beforeSave)
|
415
|
+
return action;
|
278
416
|
const continueAction = this.beforeSave(this.dataUnit);
|
279
417
|
if (continueAction instanceof Promise) {
|
280
418
|
const result = await continueAction;
|
@@ -282,6 +420,46 @@ const SnkDataUnit = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
282
420
|
}
|
283
421
|
return continueAction ? action : undefined;
|
284
422
|
}
|
423
|
+
async confirmMultipleSavingData() {
|
424
|
+
const selectedRecords = this.dataUnit.getSelectionInfo().records;
|
425
|
+
const title = this.getMessage('snkDataUnit.multipleUpdateConfirmationTitle');
|
426
|
+
const message = this.getMessage('snkDataUnit.multipleUpdateConfirmationMessage', { size: selectedRecords.length });
|
427
|
+
const labelBtnCancel = this.getMessage('snkDataUnit.confirm.cancel');
|
428
|
+
const labelBtnConfirm = this.getMessage('snkDataUnit.confirm.updateMultipleConfirm');
|
429
|
+
return await showConfirmMultipleUpdatePopup({
|
430
|
+
title,
|
431
|
+
message,
|
432
|
+
labelBtnConfirm,
|
433
|
+
labelBtnCancel,
|
434
|
+
changingFields: this.getChangingFields(),
|
435
|
+
});
|
436
|
+
}
|
437
|
+
getChangingFields() {
|
438
|
+
const changes = this.dataUnit.buildChangesToSave();
|
439
|
+
if (!(changes === null || changes === void 0 ? void 0 : changes.length))
|
440
|
+
return [];
|
441
|
+
const change = changes[0];
|
442
|
+
const changingFields = Object.keys(change.updatingFields).map(key => this.buildChangingField(key, change[key]));
|
443
|
+
return changingFields;
|
444
|
+
}
|
445
|
+
buildChangingField(key, value) {
|
446
|
+
const fieldLabel = this.dataUnit.getField(key).label;
|
447
|
+
const formattedValue = this.dataUnit.getFormattedValue(key, value);
|
448
|
+
return {
|
449
|
+
label: fieldLabel,
|
450
|
+
value: formattedValue,
|
451
|
+
tabName: this.getFieldTabName(key),
|
452
|
+
};
|
453
|
+
}
|
454
|
+
getFieldTabName(fieldName) {
|
455
|
+
var _a;
|
456
|
+
const tab = (_a = this._formFieldsConfig.find(f => f.name === fieldName)) === null || _a === void 0 ? void 0 : _a.tab;
|
457
|
+
if (!tab)
|
458
|
+
return undefined;
|
459
|
+
if (typeof tab === 'string')
|
460
|
+
return tab;
|
461
|
+
return tab.label;
|
462
|
+
}
|
285
463
|
interceptDataSaved(action) {
|
286
464
|
if (this.afterSave) {
|
287
465
|
this.afterSave(this.dataUnit);
|
@@ -301,7 +479,17 @@ const SnkDataUnit = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
301
479
|
}
|
302
480
|
const cancelConfirmationTitle = this.getMessage("snkDataUnit.cancelConfirmationTitle");
|
303
481
|
const confirm = await ApplicationUtils.confirm(cancelConfirmationTitle, cancelConfirmation);
|
304
|
-
|
482
|
+
if (confirm) {
|
483
|
+
let editionCanceledMessage;
|
484
|
+
if (this.dataUnit.isMultipleEdition) {
|
485
|
+
const selectedRecords = this.dataUnit.getSelectionInfo().records;
|
486
|
+
editionCanceledMessage = this.buildMultipleUpdateMessage(selectedRecords, true);
|
487
|
+
}
|
488
|
+
else {
|
489
|
+
editionCanceledMessage = this.getMessage("snkDataUnit.cancelInfo");
|
490
|
+
}
|
491
|
+
this.showSuccessMessage(editionCanceledMessage);
|
492
|
+
}
|
305
493
|
return confirm ? action : undefined;
|
306
494
|
}
|
307
495
|
async interceptRemovingRecords(action) {
|
@@ -479,24 +667,50 @@ const SnkDataUnit = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
479
667
|
}
|
480
668
|
async handleDataSaved(action) {
|
481
669
|
var _a, _b, _c;
|
482
|
-
const
|
670
|
+
const changes = (_a = action === null || action === void 0 ? void 0 : action.payload) === null || _a === void 0 ? void 0 : _a.changes;
|
671
|
+
const affectedRecords = (_b = action === null || action === void 0 ? void 0 : action.payload) === null || _b === void 0 ? void 0 : _b.records;
|
672
|
+
const newRowMetadata = await this.handleLoadRowMetadata((_c = changes === null || changes === void 0 ? void 0 : changes[0]) === null || _c === void 0 ? void 0 : _c.record);
|
483
673
|
if (newRowMetadata) {
|
484
674
|
newRowMetadata.getProp = this.buildGetPropRowMetadata(newRowMetadata);
|
485
675
|
}
|
486
|
-
const recordId =
|
676
|
+
const recordId = affectedRecords[0].__record__id__;
|
487
677
|
this._metadataByRow.set(recordId, newRowMetadata);
|
488
678
|
this.dataState = await this.buildDataState();
|
489
|
-
let saveOperation =
|
490
|
-
if (saveOperation == 'copy')
|
679
|
+
let saveOperation = changes[0]._operation.toLowerCase();
|
680
|
+
if (saveOperation == 'copy') {
|
491
681
|
saveOperation = OperationMap.CLONE;
|
492
|
-
if (this.ignoreSaveMessage && ![OperationMap.CLONE, OperationMap.INSERT].includes(saveOperation)) {
|
493
|
-
return;
|
494
682
|
}
|
495
|
-
|
683
|
+
if (this.canIgnoreOperationMessage(saveOperation))
|
684
|
+
return;
|
685
|
+
let msg = this.buildOperationMessage(saveOperation, affectedRecords);
|
496
686
|
if (msg != undefined) {
|
497
687
|
this.showSuccessMessage(msg);
|
498
688
|
}
|
499
689
|
}
|
690
|
+
canIgnoreOperationMessage(saveOperation) {
|
691
|
+
return this.ignoreSaveMessage && !this.isCloneOrInsertOperation(saveOperation);
|
692
|
+
}
|
693
|
+
isCloneOrInsertOperation(saveOperation) {
|
694
|
+
return [OperationMap.CLONE, OperationMap.INSERT].includes(saveOperation);
|
695
|
+
}
|
696
|
+
buildOperationMessage(saveOperation, records) {
|
697
|
+
if (this.isMultiplesUpdate(saveOperation, records)) {
|
698
|
+
return this.buildMultipleUpdateMessage(records);
|
699
|
+
}
|
700
|
+
return this.getMessage('snkDataUnit.saveInfo', records[0], saveOperation);
|
701
|
+
}
|
702
|
+
buildMultipleUpdateMessage(records, isCancel) {
|
703
|
+
/**
|
704
|
+
* FIXME: No futuro, precisamos pensar em um mecanismo para deixar as mensagens de feedback mais dinâmicas.
|
705
|
+
* Podemo ocorrer cenários onde temos mais de um registro selecionado e também cenários onde a chave primária
|
706
|
+
* de um registro se trata de uma chave composta.
|
707
|
+
*/
|
708
|
+
const key = `snkDataUnit.${isCancel ? 'cancelInfo' : 'saveInfo'}`;
|
709
|
+
return this.getMessage(key, { records: records }, OperationMap.UPDATE_MULTIPLES);
|
710
|
+
}
|
711
|
+
isMultiplesUpdate(saveOperation, records) {
|
712
|
+
return saveOperation === OperationMap.UPDATE && records.length > 1;
|
713
|
+
}
|
500
714
|
handleRecordsRemoved(action) {
|
501
715
|
var _a, _b;
|
502
716
|
let removeFinishMsg = this.buildRemoveFinishMessage(action);
|
@@ -703,7 +917,7 @@ const SnkDataUnit = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
703
917
|
"getFieldsWithRmp": [64],
|
704
918
|
"getFieldsWithRmPrecision": [64],
|
705
919
|
"getRowMetadata": [64]
|
706
|
-
}]);
|
920
|
+
}, [[0, "snkMasterFormConfigChange", "onMasterFormConfigChange"]]]);
|
707
921
|
class DataStateImpl {
|
708
922
|
constructor(datastate) {
|
709
923
|
this.copyMode = datastate.copyMode;
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import { proxyCustomElement, HTMLElement, createEvent, h, Fragment, forceUpdate, Host } from '@stencil/core/internal/client';
|
2
|
-
import { Action, ElementIDUtils } from '@sankhyalabs/core';
|
2
|
+
import { ObjectUtils, Action, ElementIDUtils } from '@sankhyalabs/core';
|
3
3
|
import { S as SnkFormConfigManager } from './SnkFormConfigManager.js';
|
4
4
|
import { buildFormMetadata, FormMetadata } from '@sankhyalabs/ezui/dist/collection/utils/form';
|
5
5
|
import './DataFetcher.js';
|
@@ -53,6 +53,7 @@ const SnkGuidesViewer = /*@__PURE__*/ proxyCustomElement(class extends HTMLEleme
|
|
53
53
|
constructor() {
|
54
54
|
super();
|
55
55
|
this.__registerHost();
|
56
|
+
this.snkMasterFormConfigChange = createEvent(this, "snkMasterFormConfigChange", 7);
|
56
57
|
this.exit = createEvent(this, "exit", 7);
|
57
58
|
this.actionClick = createEvent(this, "actionClick", 7);
|
58
59
|
this.formItemsReady = createEvent(this, "formItemsReady", 7);
|
@@ -89,14 +90,16 @@ const SnkGuidesViewer = /*@__PURE__*/ proxyCustomElement(class extends HTMLEleme
|
|
89
90
|
this.loadGuides(true);
|
90
91
|
}
|
91
92
|
observeDataState(newValue, oldValue) {
|
92
|
-
|
93
|
-
const
|
94
|
-
|
93
|
+
var _a, _b, _c, _d, _e, _f;
|
94
|
+
const newRecordsIds = (_b = (_a = newValue === null || newValue === void 0 ? void 0 : newValue.selectionInfo) === null || _a === void 0 ? void 0 : _a.recordIds) !== null && _b !== void 0 ? _b : (_c = newValue === null || newValue === void 0 ? void 0 : newValue.selectedRecord) === null || _c === void 0 ? void 0 : _c['__record__id__'];
|
95
|
+
const oldRecordsIds = (_e = (_d = oldValue === null || oldValue === void 0 ? void 0 : oldValue.selectionInfo) === null || _d === void 0 ? void 0 : _d.recordIds) !== null && _e !== void 0 ? _e : (_f = oldValue === null || oldValue === void 0 ? void 0 : oldValue.selectedRecord) === null || _f === void 0 ? void 0 : _f['__record__id__'];
|
96
|
+
if (!ObjectUtils.equals(newRecordsIds, oldRecordsIds)) {
|
95
97
|
this.loadGuides((oldValue === null || oldValue === void 0 ? void 0 : oldValue.insertionMode) != (newValue === null || newValue === void 0 ? void 0 : newValue.insertionMode));
|
96
98
|
}
|
97
99
|
}
|
98
100
|
observeMasterFormConfig() {
|
99
101
|
this.loadGuides(this.noGuideSelected());
|
102
|
+
this.snkMasterFormConfigChange.emit(this.masterFormConfig);
|
100
103
|
}
|
101
104
|
/**
|
102
105
|
* Abre o configurador do formulário
|
@@ -170,6 +173,11 @@ const SnkGuidesViewer = /*@__PURE__*/ proxyCustomElement(class extends HTMLEleme
|
|
170
173
|
* Para conhecer os detalhes do módulo, vide o arquivo neste projeto "/src/lib/message/resources/snk-crud.msg.ts"
|
171
174
|
*/
|
172
175
|
getMessage(key) {
|
176
|
+
var _a, _b;
|
177
|
+
if (this.dataUnit.isMultipleEdition) {
|
178
|
+
const selectedRecords = (_b = (_a = this.dataUnit.getSelectionInfo()) === null || _a === void 0 ? void 0 : _a.records) !== null && _b !== void 0 ? _b : [];
|
179
|
+
return `Editando ${selectedRecords.length} registros`;
|
180
|
+
}
|
173
181
|
return this.messagesBuilder.getMessage(key, this.dataUnit.getSelectedRecord());
|
174
182
|
}
|
175
183
|
loadGuides(changeSelection) {
|
@@ -182,12 +190,12 @@ const SnkGuidesViewer = /*@__PURE__*/ proxyCustomElement(class extends HTMLEleme
|
|
182
190
|
this._masterFormMetadata = buildFormMetadata(this.masterFormConfig, this.dataUnit, true);
|
183
191
|
const allSheets = this._masterFormMetadata.getAllSheets();
|
184
192
|
const currentRecord = this.dataUnit.getSelectedRecord();
|
185
|
-
const disableDetails =
|
193
|
+
const disableDetails = this.hasToDisableDetails(currentRecord);
|
186
194
|
const guides = [];
|
187
195
|
Array.from(allSheets.values()).forEach((sheet) => {
|
188
196
|
const item = { id: sheet.name, label: sheet.label };
|
189
197
|
if (this.isDetail(sheet.name) && disableDetails) {
|
190
|
-
item.tooltip = "Para alterar detalhes é necessário estar com um registro selecionado.";
|
198
|
+
item.tooltip = "Para alterar detalhes é necessário estar com um (e apenas um) registro selecionado.";
|
191
199
|
item.disabled = true;
|
192
200
|
}
|
193
201
|
guides.push(item);
|
@@ -200,6 +208,11 @@ const SnkGuidesViewer = /*@__PURE__*/ proxyCustomElement(class extends HTMLEleme
|
|
200
208
|
this.selectedGuide = this._guides.length > 0 ? this._guides[0] : undefined;
|
201
209
|
}
|
202
210
|
}
|
211
|
+
hasToDisableDetails(currentRecord) {
|
212
|
+
return !currentRecord
|
213
|
+
|| this.dataUnit.isNewRecord(currentRecord.__record__id__)
|
214
|
+
|| this.dataUnit.isMultipleEdition;
|
215
|
+
}
|
203
216
|
isDetail(formId) {
|
204
217
|
return FormMetadata.getDetailName(formId) != undefined;
|
205
218
|
}
|
@@ -222,47 +235,59 @@ const SnkGuidesViewer = /*@__PURE__*/ proxyCustomElement(class extends HTMLEleme
|
|
222
235
|
}
|
223
236
|
getTaskBarId() {
|
224
237
|
var _a;
|
225
|
-
|
226
|
-
|
227
|
-
loadTaskbarProcessor() {
|
228
|
-
var _a;
|
229
|
-
const taskbarId = this.getTaskBarId();
|
230
|
-
const disabledButtons = [];
|
231
|
-
if (!this.dataState || !this.dataState.hasPrevious) {
|
232
|
-
disabledButtons.push("PREVIOUS");
|
238
|
+
if ((_a = this.dataState) === null || _a === void 0 ? void 0 : _a.isDirty) {
|
239
|
+
return TASKBAR_ID.FINISH_EDITION;
|
233
240
|
}
|
234
|
-
if (
|
235
|
-
|
241
|
+
if (this.dataUnit.isMultipleEdition) {
|
242
|
+
return TASKBAR_ID.MUTIPLE_EDITION;
|
236
243
|
}
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
+
return TASKBAR_ID.REGULAR;
|
245
|
+
}
|
246
|
+
loadTaskbarProcessor() {
|
247
|
+
const taskbarIDs = {};
|
248
|
+
taskbarIDs[TASKBAR_ID.REGULAR] = this.buildBtnsRegularMode();
|
249
|
+
taskbarIDs[TASKBAR_ID.FINISH_EDITION] = [TaskbarElement.CANCEL, TaskbarElement.SAVE, this.handleAddGridMode()];
|
250
|
+
taskbarIDs[TASKBAR_ID.MUTIPLE_EDITION] = [TaskbarElement.CANCEL];
|
251
|
+
this._taskbarProcessor = new TaskbarProcessor(taskbarIDs);
|
252
|
+
this._taskbarProcessor.process(this.getTaskBarId(), this.taskbarManager, this.dataState, this.buildDisabledButtons(), this.buildInvisibleButtons());
|
253
|
+
}
|
254
|
+
buildBtnsRegularMode() {
|
255
|
+
var _a, _b;
|
256
|
+
const btnsRegularMode = [
|
257
|
+
TaskbarElement.ATTACH, TaskbarElement.CLONE, TaskbarElement.REMOVE, TaskbarElement.MORE_OPTIONS,
|
258
|
+
TaskbarElement.ACTIONS_BUTTON, TaskbarElement.DIVIDER, TaskbarElement.GRID_MODE, TaskbarElement.CONFIGURATOR,
|
259
|
+
];
|
260
|
+
if (((_b = (_a = this.dataState) === null || _a === void 0 ? void 0 : _a.selectionInfo) === null || _b === void 0 ? void 0 : _b.length) <= 1) {
|
261
|
+
btnsRegularMode.unshift(TaskbarElement.PREVIOUS, TaskbarElement.NEXT, TaskbarElement.DIVIDER);
|
244
262
|
}
|
245
|
-
const btnsRegularMode = ["PREVIOUS", "NEXT", "DIVIDER", "ATTACH", "CLONE", "REMOVE", "MORE_OPTIONS", "ACTIONS_BUTTON", "DIVIDER", "GRID_MODE", "CONFIGURATOR"];
|
246
263
|
if (this.presentationMode == PresentationMode.SECONDARY) {
|
247
|
-
btnsRegularMode.unshift(
|
264
|
+
btnsRegularMode.unshift(TaskbarElement.INSERT);
|
248
265
|
}
|
249
266
|
else {
|
250
|
-
btnsRegularMode.push(
|
267
|
+
btnsRegularMode.push(TaskbarElement.INSERT);
|
251
268
|
}
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
269
|
+
return btnsRegularMode;
|
270
|
+
}
|
271
|
+
buildDisabledButtons() {
|
272
|
+
var _a, _b, _c, _d, _e, _f;
|
273
|
+
const disabledButtons = [];
|
274
|
+
if (!((_a = this.dataState) === null || _a === void 0 ? void 0 : _a.hasPrevious))
|
275
|
+
disabledButtons.push(TaskbarElement.PREVIOUS);
|
276
|
+
if (!((_b = this.dataState) === null || _b === void 0 ? void 0 : _b.hasNext))
|
277
|
+
disabledButtons.push(TaskbarElement.NEXT);
|
278
|
+
if (((_d = (_c = this.dataState) === null || _c === void 0 ? void 0 : _c.selectionInfo) === null || _d === void 0 ? void 0 : _d.length) > 1)
|
279
|
+
disabledButtons.push(TaskbarElement.CLONE);
|
280
|
+
if ((_f = (_e = this.dataState) === null || _e === void 0 ? void 0 : _e.selectionInfo) === null || _f === void 0 ? void 0 : _f.isAllRecords())
|
281
|
+
disabledButtons.push(TaskbarElement.REMOVE);
|
282
|
+
return disabledButtons;
|
258
283
|
}
|
259
284
|
handleAddGridMode() {
|
260
285
|
return this.enableGridInsert ? TaskbarElement.GRID_MODE : "";
|
261
286
|
}
|
262
|
-
|
287
|
+
buildInvisibleButtons() {
|
263
288
|
const invisibleButtons = [];
|
264
289
|
if (this.dataState && this.dataState.selectionInfo.mode === SelectionMode.ALL_RECORDS)
|
265
|
-
invisibleButtons.push(
|
290
|
+
invisibleButtons.push(TaskbarElement.ACTIONS_BUTTON);
|
266
291
|
return invisibleButtons;
|
267
292
|
}
|
268
293
|
static updateContentCard(formName, cardConfig, propertyChanged, configManager) {
|
@@ -475,17 +500,27 @@ const SnkGuidesViewer = /*@__PURE__*/ proxyCustomElement(class extends HTMLEleme
|
|
475
500
|
}
|
476
501
|
buildTaskBar() {
|
477
502
|
var _a;
|
478
|
-
return h("div", { class: `snk-guides-viewer__header-taskbar ${this.presentationMode != PresentationMode.SECONDARY ? 'ez-align--right' : 'ez-padding-bottom--medium'}` }, h("snk-taskbar", { key: "guideViewerTaskbar", "data-element-id": "guideViewer", configName: this.configName, buttons: this._taskbarProcessor.buttons, disabledButtons: this._taskbarProcessor.disabledButtons, customButtons: this._taskbarProcessor.customButtons, actionsList: this.getActionsList(), messagesBuilder: this.messagesBuilder, presentationMode: this.presentationMode, primaryButton: ((_a = this.dataState) === null || _a === void 0 ? void 0 : _a.isDirty) ?
|
503
|
+
return h("div", { class: `snk-guides-viewer__header-taskbar ${this.presentationMode != PresentationMode.SECONDARY ? 'ez-align--right' : 'ez-padding-bottom--medium'}` }, h("snk-taskbar", { key: "guideViewerTaskbar", "data-element-id": "guideViewer", configName: this.configName, buttons: this._taskbarProcessor.buttons, disabledButtons: this._taskbarProcessor.disabledButtons, customButtons: this._taskbarProcessor.customButtons, actionsList: this.getActionsList(), messagesBuilder: this.messagesBuilder, presentationMode: this.presentationMode, primaryButton: ((_a = this.dataState) === null || _a === void 0 ? void 0 : _a.isDirty) ? TaskbarElement.SAVE : TaskbarElement.INSERT, "data-taskbar-owner": "master", dataUnit: this.dataUnit, resourceID: this.resourceID, customSlotId: "GUIDES_VIEWER_TASKBAR_CUSTOM_ELEMENTS", alignRigth: true }, h("slot", { name: "GUIDES_VIEWER_TASKBAR_CUSTOM_ELEMENTS" })));
|
479
504
|
}
|
480
505
|
async dataUnitActionHandler(action) {
|
481
506
|
var _a;
|
482
|
-
|
483
|
-
|
484
|
-
|
485
|
-
|
486
|
-
|
487
|
-
|
488
|
-
|
507
|
+
switch (action.type) {
|
508
|
+
case Action.EDITION_CANCELED:
|
509
|
+
case Action.DATA_SAVED:
|
510
|
+
if (this.dataUnit.isMultipleEdition) {
|
511
|
+
this.exitViewer();
|
512
|
+
this.dataUnit.isMultipleEdition = false;
|
513
|
+
}
|
514
|
+
break;
|
515
|
+
case Action.FIELD_INVALIDATED:
|
516
|
+
const guideName = this.getGuideName((_a = action.payload) === null || _a === void 0 ? void 0 : _a.fieldName);
|
517
|
+
await this.addErrorBadgeToGuide(guideName);
|
518
|
+
await this.openGuideNavigator(guideName);
|
519
|
+
break;
|
520
|
+
case Action.METADATA_LOADED:
|
521
|
+
case Action.MULTIPLE_EDITION_CHANGED:
|
522
|
+
this.loadGuides(this.noGuideSelected());
|
523
|
+
break;
|
489
524
|
}
|
490
525
|
}
|
491
526
|
async addErrorBadgeToGuide(guideName) {
|
@@ -525,6 +560,20 @@ const SnkGuidesViewer = /*@__PURE__*/ proxyCustomElement(class extends HTMLEleme
|
|
525
560
|
var _a, _b;
|
526
561
|
return (_b = (_a = this.getCustomTitle) === null || _a === void 0 ? void 0 : _a.call(this)) !== null && _b !== void 0 ? _b : this.getMessage("snkCrud.title");
|
527
562
|
}
|
563
|
+
getTitleTooltip() {
|
564
|
+
if (!this.dataUnit.isMultipleEdition)
|
565
|
+
return;
|
566
|
+
return this.buildRecordIdsArray();
|
567
|
+
}
|
568
|
+
buildRecordIdsArray() {
|
569
|
+
var _a, _b;
|
570
|
+
const selectedRecords = (_b = (_a = this.dataUnit.getSelectionInfo()) === null || _a === void 0 ? void 0 : _a.records) !== null && _b !== void 0 ? _b : [];
|
571
|
+
if (selectedRecords.length === 0) {
|
572
|
+
return "[]";
|
573
|
+
}
|
574
|
+
const labels = selectedRecords.map(record => this.messagesBuilder.getMessage("snkCrud.title", record));
|
575
|
+
return `[${labels.join(", ")}]`;
|
576
|
+
}
|
528
577
|
componentDidLoad() {
|
529
578
|
this.dataUnit.subscribe(this.dataUnitActionHandler.bind(this));
|
530
579
|
}
|
@@ -538,7 +587,7 @@ const SnkGuidesViewer = /*@__PURE__*/ proxyCustomElement(class extends HTMLEleme
|
|
538
587
|
}
|
539
588
|
this.loadTaskbarProcessor();
|
540
589
|
const showGuides = this._guides && (this._guides.length > 1);
|
541
|
-
return (h("section", { class: "snk-guides-viewer", ref: ref => this._container = ref, tabindex: -1 }, h("div", { class: "ez-row snk-guides-viewer__header" }, h("div", { class: "snk-guides-viewer__header-breadcrumb ez-flex--align-items-center ez-flex-item--align-center ez-padding-left--large", key: "header" }, h("ez-button", { onClick: () => this.exitViewer(), title: this.getMessage("snkCrud.goBackTitle"), mode: "icon", iconName: "arrow_back", class: "ez-padding-right--medium", size: "small" }), h("div", { class: "ez-flex ez-flex--column ez-flex-item--auto" }, h("h1", { class: "ez-title ez-title--primary ez-title--xlarge" }, this.getTitle()), ((_a = this._breadcrumbItems) === null || _a === void 0 ? void 0 : _a.length) > 1 &&
|
590
|
+
return (h("section", { class: "snk-guides-viewer", ref: ref => this._container = ref, tabindex: -1 }, h("div", { class: "ez-row snk-guides-viewer__header" }, h("div", { class: "snk-guides-viewer__header-breadcrumb ez-flex--align-items-center ez-flex-item--align-center ez-padding-left--large", key: "header" }, h("ez-button", { onClick: () => this.exitViewer(), title: this.getMessage("snkCrud.goBackTitle"), mode: "icon", iconName: "arrow_back", class: "ez-padding-right--medium", size: "small" }), h("div", { class: "ez-flex ez-flex--column ez-flex-item--auto" }, h("h1", { class: "ez-title ez-title--primary ez-title--xlarge", title: this.getTitleTooltip() }, this.getTitle()), ((_a = this._breadcrumbItems) === null || _a === void 0 ? void 0 : _a.length) > 1 &&
|
542
591
|
h("div", { class: "ez-margin-top--extra-small" }, h("ez-breadcrumb", Object.assign({ items: this._breadcrumbItems, onSelectedItem: (evt) => this.onBreadcrumbClickHandler(evt === null || evt === void 0 ? void 0 : evt.detail) }, { [ElementIDUtils.DATA_ELEMENT_ID_ATTRIBUTE_NAME]: `${ElementIDUtils.getInternalIDInfo("breadcrumb")}` }))))), this.presentationMode != PresentationMode.SECONDARY && this.buildTaskBar()), h("div", { class: "snk-guides-viewer__container" }, showGuides ?
|
543
592
|
h("ez-guide-navigator", { ref: (ref) => this._guideNavigator = ref, class: "snk-guides-viewer__guide-navigator", items: this._guides, selectedId: this.selectedGuide ? this.selectedGuide.id : undefined, onEzSelectionChange: evt => this.updateSelectedGuideHandler(evt.detail) })
|
544
593
|
:
|
@@ -595,6 +644,12 @@ const SnkGuidesViewer = /*@__PURE__*/ proxyCustomElement(class extends HTMLEleme
|
|
595
644
|
"setFieldProp": [64],
|
596
645
|
"setFocus": [64]
|
597
646
|
}, [[2, "actionClick", "onActionClick"], [0, "snkContentCardChanged", "onContentCardChanged"]]]);
|
647
|
+
var TASKBAR_ID;
|
648
|
+
(function (TASKBAR_ID) {
|
649
|
+
TASKBAR_ID["FINISH_EDITION"] = "snkGuideViewer.finish_edition";
|
650
|
+
TASKBAR_ID["MUTIPLE_EDITION"] = "snkGuideViewer.multiple_edition";
|
651
|
+
TASKBAR_ID["REGULAR"] = "snkGuideViewer.regular";
|
652
|
+
})(TASKBAR_ID || (TASKBAR_ID = {}));
|
598
653
|
function defineCustomElement$1() {
|
599
654
|
if (typeof customElements === "undefined") {
|
600
655
|
return;
|
@@ -106,7 +106,7 @@ const SnkGrid = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
106
106
|
});
|
107
107
|
this._headerTaskbarProcessor = new TaskbarProcessor({
|
108
108
|
"snkGridHeaderTaskbar.unselected": ["REFRESH", "DATA_EXPORTER", "ACTIONS_BUTTON", "MORE_OPTIONS"],
|
109
|
-
"snkGridHeaderTaskbar.selected":
|
109
|
+
"snkGridHeaderTaskbar.selected": this.getGridHeaderSelectedBtns(),
|
110
110
|
"snkGridHeaderTaskbar.detail.unselected": ["REFRESH", "MORE_OPTIONS"],
|
111
111
|
"snkGridHeaderTaskbar.detail.selected": ["UPDATE", "ATTACH", "CLONE", "REMOVE", "MORE_OPTIONS", "DIVIDER", "REFRESH"],
|
112
112
|
"snkGridHeaderTaskbar.singleTaskbar.unselected": ["INSERT", "FORM_MODE", "CONFIGURATOR", "REFRESH", "DATA_EXPORTER", "ACTIONS_BUTTON", "MORE_OPTIONS"],
|
@@ -157,6 +157,17 @@ const SnkGrid = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
157
157
|
this.enableGridInsert = false;
|
158
158
|
this.outlineMode = false;
|
159
159
|
this.strategyExporter = ExporterStrategy.SERVER_SIDE;
|
160
|
+
this.multipleEditionEnabled = true;
|
161
|
+
}
|
162
|
+
getGridHeaderSelectedBtns() {
|
163
|
+
const btns = [
|
164
|
+
TaskbarElement.UPDATE, TaskbarElement.CLONE, TaskbarElement.REMOVE,
|
165
|
+
TaskbarElement.MORE_OPTIONS, TaskbarElement.DIVIDER, TaskbarElement.ATTACH, TaskbarElement.FORM_MODE,
|
166
|
+
TaskbarElement.CONFIGURATOR, TaskbarElement.REFRESH, TaskbarElement.DATA_EXPORTER, TaskbarElement.ACTIONS_BUTTON
|
167
|
+
];
|
168
|
+
if (this.multipleEditionEnabled)
|
169
|
+
btns.unshift(TaskbarElement.UPDATE_MULTIPLE);
|
170
|
+
return btns;
|
160
171
|
}
|
161
172
|
reloadConfig() {
|
162
173
|
this.loadConfig();
|
@@ -441,20 +452,23 @@ const SnkGrid = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
441
452
|
const disabledButtons = [];
|
442
453
|
if ((_a = this._dataState) === null || _a === void 0 ? void 0 : _a.selectionInfo) {
|
443
454
|
if (this._dataState.selectionInfo.length > 1) {
|
444
|
-
disabledButtons.push(TaskbarElement.CLONE,
|
455
|
+
disabledButtons.push(TaskbarElement.CLONE, TaskbarElement.ATTACH, TaskbarElement.UPDATE);
|
445
456
|
}
|
446
457
|
if (this._dataState.selectionInfo.isAllRecords()) {
|
447
|
-
disabledButtons.push(
|
458
|
+
disabledButtons.push(TaskbarElement.REMOVE);
|
448
459
|
}
|
449
460
|
}
|
450
461
|
return disabledButtons;
|
451
462
|
}
|
452
463
|
getInvisibleButtons() {
|
464
|
+
var _a, _b;
|
453
465
|
let invisibleButtons = [];
|
454
466
|
if (!this._dataUnit || this._dataUnit.records.length === 0)
|
455
|
-
invisibleButtons.push(
|
456
|
-
if (this._dataState
|
457
|
-
invisibleButtons.push(
|
467
|
+
invisibleButtons.push(TaskbarElement.DATA_EXPORTER);
|
468
|
+
if (((_a = this._dataState) === null || _a === void 0 ? void 0 : _a.selectionInfo.mode) === SelectionMode.ALL_RECORDS)
|
469
|
+
invisibleButtons.push(TaskbarElement.ACTIONS_BUTTON);
|
470
|
+
if (((_b = this._dataState) === null || _b === void 0 ? void 0 : _b.selectionInfo.length) === 1)
|
471
|
+
invisibleButtons.push(TaskbarElement.UPDATE_MULTIPLE);
|
458
472
|
return invisibleButtons;
|
459
473
|
}
|
460
474
|
componentWillRender() {
|
@@ -600,6 +614,7 @@ const SnkGrid = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
600
614
|
"enableGridInsert": [4, "enable-grid-insert"],
|
601
615
|
"outlineMode": [4, "outline-mode"],
|
602
616
|
"strategyExporter": [1025, "strategy-exporter"],
|
617
|
+
"multipleEditionEnabled": [4, "multiple-edition-enabled"],
|
603
618
|
"_dataUnit": [32],
|
604
619
|
"_dataState": [32],
|
605
620
|
"_gridConfig": [32],
|