@sankhyalabs/sankhyablocks 5.8.1 → 5.9.1
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/loader.cjs.js +1 -1
- package/dist/cjs/sankhyablocks.cjs.js +1 -1
- package/dist/cjs/snk-attach.cjs.entry.js +1 -2
- package/dist/cjs/snk-crud.cjs.entry.js +23 -12
- package/dist/cjs/snk-detail-view.cjs.entry.js +29 -6
- package/dist/cjs/snk-filter-bar.cjs.entry.js +10 -3
- package/dist/cjs/snk-grid.cjs.entry.js +3 -10
- package/dist/cjs/{snk-guides-viewer-9784c527.js → snk-guides-viewer-5f2eb52b.js} +2 -2
- package/dist/cjs/snk-guides-viewer.cjs.entry.js +2 -2
- package/dist/cjs/snk-simple-bar_2.cjs.entry.js +1 -1
- package/dist/cjs/{taskbar-processor-bce3f499.js → taskbar-processor-e1e3bbf7.js} +16 -0
- package/dist/collection/collection-manifest.json +2 -2
- package/dist/collection/components/snk-attach/structure/data-unit-builder.js +1 -2
- package/dist/collection/components/snk-crud/snk-crud.js +27 -13
- package/dist/collection/components/snk-crud/subcomponents/{snk-detail-view.js → snk-detail-view/snk-detail-view.js} +41 -17
- package/dist/collection/components/snk-crud/subcomponents/snk-guides-viewer.js +4 -4
- package/dist/collection/components/snk-filter-bar/snk-filter-bar.js +10 -3
- package/dist/collection/components/snk-grid/snk-grid.js +3 -10
- package/dist/collection/components/snk-taskbar/processor/taskbar-processor.js +15 -0
- package/dist/components/index.d.ts +1 -1
- package/dist/components/snk-attach2.js +1 -2
- package/dist/components/snk-crud.js +24 -13
- package/dist/components/snk-detail-view2.js +103 -46
- package/dist/components/snk-filter-bar2.js +10 -3
- package/dist/components/snk-grid2.js +4 -11
- package/dist/components/taskbar-processor.js +16 -0
- package/dist/esm/loader.js +1 -1
- package/dist/esm/sankhyablocks.js +1 -1
- package/dist/esm/snk-attach.entry.js +1 -2
- package/dist/esm/snk-crud.entry.js +24 -13
- package/dist/esm/snk-detail-view.entry.js +29 -6
- package/dist/esm/snk-filter-bar.entry.js +10 -3
- package/dist/esm/snk-grid.entry.js +4 -11
- package/dist/esm/{snk-guides-viewer-4d12f268.js → snk-guides-viewer-11ca46dc.js} +2 -2
- package/dist/esm/snk-guides-viewer.entry.js +2 -2
- package/dist/esm/snk-simple-bar_2.entry.js +1 -1
- package/dist/esm/{taskbar-processor-94402e6e.js → taskbar-processor-a40798b8.js} +16 -0
- package/dist/sankhyablocks/{p-fd4ed40a.entry.js → p-0bb49e4a.entry.js} +1 -1
- package/dist/sankhyablocks/p-39082fc3.js +1 -0
- package/dist/sankhyablocks/p-747ea2c3.entry.js +1 -0
- package/dist/sankhyablocks/p-7f2e267a.js +1 -0
- package/dist/sankhyablocks/{p-27e264d9.entry.js → p-83765829.entry.js} +1 -1
- package/dist/sankhyablocks/p-8819be14.entry.js +1 -0
- package/dist/sankhyablocks/p-9043c45f.entry.js +1 -0
- package/dist/sankhyablocks/p-b1dc7e17.entry.js +1 -0
- package/dist/sankhyablocks/p-c7ee03cd.entry.js +1 -0
- package/dist/sankhyablocks/sankhyablocks.esm.js +1 -1
- package/dist/types/components/snk-crud/subcomponents/{snk-detail-view.d.ts → snk-detail-view/snk-detail-view.d.ts} +12 -6
- package/dist/types/components/snk-filter-bar/snk-filter-bar.d.ts +1 -0
- package/dist/types/components.d.ts +1 -1
- package/package.json +1 -1
- package/dist/sankhyablocks/p-1465f132.entry.js +0 -1
- package/dist/sankhyablocks/p-21c2b733.entry.js +0 -1
- package/dist/sankhyablocks/p-433dfa63.entry.js +0 -1
- package/dist/sankhyablocks/p-4eefe631.entry.js +0 -1
- package/dist/sankhyablocks/p-9c3f0caf.entry.js +0 -1
- package/dist/sankhyablocks/p-c2beb95c.js +0 -1
- package/dist/sankhyablocks/p-ccd26e3a.js +0 -1
- /package/dist/collection/components/snk-crud/subcomponents/{snk-detail-view.css → snk-detail-view/snk-detail-view.css} +0 -0
@@ -1,15 +1,16 @@
|
|
1
1
|
import { Host, forceUpdate, h } from '@stencil/core';
|
2
|
-
import { SnkFormConfigManager } from '
|
2
|
+
import { SnkFormConfigManager } from '../../../snk-form/SnkFormConfigManager';
|
3
3
|
import { buildFormMetadata } from "@sankhyalabs/ezui/dist/collection/utils/form";
|
4
|
-
import { PresentationMode } from '
|
5
|
-
import { TaskbarElement } from '
|
6
|
-
import { VIEW_MODE } from '
|
7
|
-
import { SnkGuidesViewer } from '
|
8
|
-
import { SnkMessageBuilder } from '
|
9
|
-
import { GuideBuilder } from '
|
4
|
+
import { PresentationMode } from '../../../../lib';
|
5
|
+
import { TaskbarElement } from '../../../snk-taskbar/elements/taskbar-elements';
|
6
|
+
import { VIEW_MODE } from '../../../../lib/utils/constants';
|
7
|
+
import { SnkGuidesViewer } from '../snk-guides-viewer';
|
8
|
+
import { SnkMessageBuilder } from '../../../../lib/message/SnkMessageBuilder';
|
9
|
+
import { GuideBuilder } from '../GuideBuilder';
|
10
10
|
export class SnkDetailView {
|
11
11
|
constructor() {
|
12
12
|
this._disabledButtons = undefined;
|
13
|
+
this.attachmentRegisterKey = undefined;
|
13
14
|
this.formConfigManager = undefined;
|
14
15
|
this.dataUnitName = undefined;
|
15
16
|
this.guideItemPath = undefined;
|
@@ -39,8 +40,8 @@ export class SnkDetailView {
|
|
39
40
|
setTimeout(() => {
|
40
41
|
//FIXME: A necessidade de usar esse timeout é por causa da renderização
|
41
42
|
//do guide navigator... se esse evento subir antes do guidenavigator ter
|
42
|
-
//um item com esse id, ele fica sem seleção. Acredito que poderíamos
|
43
|
-
//ajustar o componente para manter o item selecionado e então remover
|
43
|
+
//um item com esse id, ele fica sem seleção. Acredito que poderíamos
|
44
|
+
//ajustar o componente para manter o item selecionado e então remover
|
44
45
|
//esse timeout.
|
45
46
|
this.changeViewMode(VIEW_MODE.FORM);
|
46
47
|
}, 0);
|
@@ -131,7 +132,9 @@ export class SnkDetailView {
|
|
131
132
|
this.loadMetadata();
|
132
133
|
}
|
133
134
|
updateViewStack(viewStack) {
|
134
|
-
|
135
|
+
var _a, _b;
|
136
|
+
this._viewStack = viewStack;
|
137
|
+
(_b = (_a = this._viewStack) === null || _a === void 0 ? void 0 : _a.show) === null || _b === void 0 ? void 0 : _b.call(_a, this.selectedForm ? 1 : 0);
|
135
138
|
}
|
136
139
|
getFormFields() {
|
137
140
|
if (this.selectedForm && this._formMetadata) {
|
@@ -145,6 +148,9 @@ export class SnkDetailView {
|
|
145
148
|
this.snkSwitchGuide.emit(guideId);
|
146
149
|
}
|
147
150
|
}
|
151
|
+
handleAttachBack() {
|
152
|
+
this._viewStack.show(VIEW_MODE.GRID);
|
153
|
+
}
|
148
154
|
executeActionHandler(evt) {
|
149
155
|
if (evt.detail === TaskbarElement.GRID_MODE) {
|
150
156
|
this.emitSwitchEvent(VIEW_MODE.GRID);
|
@@ -154,6 +160,23 @@ export class SnkDetailView {
|
|
154
160
|
this.emitSwitchEvent(VIEW_MODE.FORM);
|
155
161
|
evt.stopPropagation();
|
156
162
|
}
|
163
|
+
if (evt.detail === TaskbarElement.ATTACH) {
|
164
|
+
this._viewStack.show(VIEW_MODE.ATTACHMENT);
|
165
|
+
evt.stopPropagation();
|
166
|
+
}
|
167
|
+
}
|
168
|
+
async getAttachmentRegisterKey() {
|
169
|
+
if (!this._snkDataUnit)
|
170
|
+
return;
|
171
|
+
const recordCriteria = await this._snkDataUnit.getSelectedRecordsIDsInfo();
|
172
|
+
const joinedPrimaryKeys = recordCriteria.map(({ value }) => value).join('_');
|
173
|
+
return joinedPrimaryKeys;
|
174
|
+
}
|
175
|
+
async handleDataStateChange({ detail: dataState }) {
|
176
|
+
this.dataState = dataState;
|
177
|
+
if (dataState.selectedRecord !== undefined && this._snkDataUnit) {
|
178
|
+
this.attachmentRegisterKey = await this.getAttachmentRegisterKey();
|
179
|
+
}
|
157
180
|
}
|
158
181
|
componentWillLoad() {
|
159
182
|
this._configName = `dynaform.${this.entityName}`;
|
@@ -166,7 +189,7 @@ export class SnkDetailView {
|
|
166
189
|
render() {
|
167
190
|
this.updateLabel();
|
168
191
|
//const cardConfig: IFormCardConfig = this._cardsState?.get(this.selectedForm);
|
169
|
-
return (h(Host, null, h("snk-data-unit", { dataUnitName: `${this.dataUnitName}`, onDataUnitReady: evt => this.dataUnitReadyHandler(evt), entityName: this.entityName, onDataStateChange:
|
192
|
+
return (h(Host, null, h("snk-data-unit", { ref: (el) => this._snkDataUnit = el, dataUnitName: `${this.dataUnitName}`, onDataUnitReady: evt => this.dataUnitReadyHandler(evt), entityName: this.entityName, onDataStateChange: this.handleDataStateChange.bind(this), messagesBuilder: this.messagesBuilder }, h("ez-view-stack", { ref: (ref) => this.updateViewStack(ref) }, h("stack-item", null, h("div", { class: "ez-box ez-box--shadow grid-container" }, h("div", { class: "ez-flex ez-size-width--full ez-padding--large detail-header" }, h("div", { class: "ez-flex ez-text ez-text--bold ez-flex--justify-start ez-flex--align-items-center" }, this._levelPath ? h("span", { class: "level-path" }, this._levelPath + " /") : undefined, this.label)), h("snk-grid", { class: "ez-size-width--full ez-size-height--full", ref: (ref) => this._snkGrid = ref, configName: this._configName, messagesBuilder: this.messagesBuilder, onGridDoubleClick: () => this.emitSwitchEvent(VIEW_MODE.FORM), onActionClick: evt => this.executeActionHandler(evt), presentationMode: PresentationMode.SECONDARY, isDetail: true }))), h("stack-item", null, h("snk-form-view", { ref: (ref) => this._snkFormView = ref, canExpand: false, canFix: false, name: this.selectedForm, formMetadata: this._formMetadata, dataUnit: this.dataUnit, fields: this.getFormFields(), label: this.label, levelPath: this._levelPath }, h("snk-taskbar", { key: "guideViewerTaskbar", class: "form-taskbar", "data-element-id": "guideViewer", configName: this._configName, messagesBuilder: this.messagesBuilder, disabledButtons: this._disabledButtons, buttons: "INSERT,PREVIOUS,NEXT,DIVIDER,CLONE,REMOVE,MORE_OPTIONS,DIVIDER,GRID_MODE,CONFIGURATOR", primaryButton: "INSERT", presentationMode: PresentationMode.SECONDARY, onActionClick: evt => this.executeActionHandler(evt), dataUnit: this.dataUnit }))), h("stack-item", null, h("snk-attach", { registerKey: this.attachmentRegisterKey, messagesBuilder: this.messagesBuilder, entityName: this.entityName, onBack: this.handleAttachBack.bind(this) }))))));
|
170
193
|
}
|
171
194
|
static get is() { return "snk-detail-view"; }
|
172
195
|
static get encapsulation() { return "scoped"; }
|
@@ -191,7 +214,7 @@ export class SnkDetailView {
|
|
191
214
|
"references": {
|
192
215
|
"SnkFormConfigManager": {
|
193
216
|
"location": "import",
|
194
|
-
"path": "
|
217
|
+
"path": "../../../snk-form/SnkFormConfigManager"
|
195
218
|
}
|
196
219
|
}
|
197
220
|
},
|
@@ -322,7 +345,7 @@ export class SnkDetailView {
|
|
322
345
|
"references": {
|
323
346
|
"DataState": {
|
324
347
|
"location": "import",
|
325
|
-
"path": "
|
348
|
+
"path": "../../../snk-data-unit/snk-data-unit"
|
326
349
|
}
|
327
350
|
}
|
328
351
|
},
|
@@ -342,7 +365,7 @@ export class SnkDetailView {
|
|
342
365
|
"references": {
|
343
366
|
"SnkMessageBuilder": {
|
344
367
|
"location": "import",
|
345
|
-
"path": "
|
368
|
+
"path": "../../../../lib/message/SnkMessageBuilder"
|
346
369
|
}
|
347
370
|
}
|
348
371
|
},
|
@@ -377,7 +400,8 @@ export class SnkDetailView {
|
|
377
400
|
}
|
378
401
|
static get states() {
|
379
402
|
return {
|
380
|
-
"_disabledButtons": {}
|
403
|
+
"_disabledButtons": {},
|
404
|
+
"attachmentRegisterKey": {}
|
381
405
|
};
|
382
406
|
}
|
383
407
|
static get events() {
|
@@ -397,7 +421,7 @@ export class SnkDetailView {
|
|
397
421
|
"references": {
|
398
422
|
"GuideBuilder": {
|
399
423
|
"location": "import",
|
400
|
-
"path": "
|
424
|
+
"path": "../GuideBuilder"
|
401
425
|
}
|
402
426
|
}
|
403
427
|
}
|
@@ -436,7 +460,7 @@ export class SnkDetailView {
|
|
436
460
|
},
|
437
461
|
"VIEW_MODE": {
|
438
462
|
"location": "import",
|
439
|
-
"path": "
|
463
|
+
"path": "../../../../lib/utils/constants"
|
440
464
|
}
|
441
465
|
},
|
442
466
|
"return": "Promise<void>"
|
@@ -139,7 +139,7 @@ export class SnkGuidesViewer {
|
|
139
139
|
disabledButtons.push("REMOVE");
|
140
140
|
}
|
141
141
|
}
|
142
|
-
const btnsRegularMode = ["PREVIOUS", "NEXT", "DIVIDER", "CLONE", "REMOVE", "MORE_OPTIONS", "DIVIDER", "GRID_MODE", "CONFIGURATOR"];
|
142
|
+
const btnsRegularMode = ["PREVIOUS", "NEXT", "DIVIDER", "ATTACH", "CLONE", "REMOVE", "MORE_OPTIONS", "DIVIDER", "GRID_MODE", "CONFIGURATOR"];
|
143
143
|
if (this.presentationMode == PresentationMode.SECONDARY) {
|
144
144
|
btnsRegularMode.unshift("INSERT");
|
145
145
|
}
|
@@ -612,9 +612,9 @@ export class SnkGuidesViewer {
|
|
612
612
|
"parameters": [{
|
613
613
|
"tags": [{
|
614
614
|
"name": "param",
|
615
|
-
"text": "detail - Define se a configura\u00E7\u00E3o que est\u00E1 sendo carregada \u00E9
|
615
|
+
"text": "detail - Define se a configura\u00E7\u00E3o que est\u00E1 sendo carregada \u00E9\nreferente a um form detail."
|
616
616
|
}],
|
617
|
-
"text": "- Define se a configura\u00E7\u00E3o que est\u00E1 sendo carregada \u00E9
|
617
|
+
"text": "- Define se a configura\u00E7\u00E3o que est\u00E1 sendo carregada \u00E9\nreferente a um form detail."
|
618
618
|
}],
|
619
619
|
"references": {
|
620
620
|
"Promise": {
|
@@ -627,7 +627,7 @@ export class SnkGuidesViewer {
|
|
627
627
|
"text": "Abre o configurador do formul\u00E1rio",
|
628
628
|
"tags": [{
|
629
629
|
"name": "param",
|
630
|
-
"text": "detail - Define se a configura\u00E7\u00E3o que est\u00E1 sendo carregada \u00E9
|
630
|
+
"text": "detail - Define se a configura\u00E7\u00E3o que est\u00E1 sendo carregada \u00E9\nreferente a um form detail."
|
631
631
|
}]
|
632
632
|
}
|
633
633
|
}
|
@@ -78,7 +78,11 @@ export class SnkFilterBar {
|
|
78
78
|
}
|
79
79
|
if (this._loadingPending) {
|
80
80
|
this._loadingPending = false;
|
81
|
-
this.
|
81
|
+
this._inProgressLoadFromConfig = new Promise((resolve) => {
|
82
|
+
this.dataUnit.loadData().then(() => {
|
83
|
+
resolve();
|
84
|
+
});
|
85
|
+
});
|
82
86
|
}
|
83
87
|
if (this._configUpdated) {
|
84
88
|
this._configUpdated = false;
|
@@ -189,10 +193,13 @@ export class SnkFilterBar {
|
|
189
193
|
ConfigStorage.get().then(instance => {
|
190
194
|
instance.loadFilterBarConfig(this.configName)
|
191
195
|
.then((filters) => {
|
196
|
+
var _a;
|
192
197
|
this.filterConfig = filters.map(item => this.normalizeItem(item));
|
193
|
-
if (this.
|
194
|
-
|
198
|
+
if (this._inProgressLoadFromConfig) {
|
199
|
+
return;
|
195
200
|
}
|
201
|
+
(_a = this.dataUnit) === null || _a === void 0 ? void 0 : _a.loadData(undefined, undefined, true);
|
202
|
+
this._inProgressLoadFromConfig = undefined;
|
196
203
|
})
|
197
204
|
.catch(reason => {
|
198
205
|
throw new ErrorException(this.getMessage("snkFilterBar.failToLoadConfig"), reason);
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import { h } from '@stencil/core';
|
2
|
-
import { ApplicationContext, DataType, ElementIDUtils
|
2
|
+
import { ApplicationContext, DataType, ElementIDUtils } from '@sankhyalabs/core';
|
3
3
|
import { UserInterface } from '@sankhyalabs/core/dist/dataunit/metadata/UnitMetadata';
|
4
4
|
import { TaskbarElement } from '../snk-taskbar/elements/taskbar-elements';
|
5
5
|
import { ConfigStorage } from '../../lib/configs/ConfigStorage';
|
@@ -16,9 +16,9 @@ export class SnkGrid {
|
|
16
16
|
});
|
17
17
|
this._headerTaskbarProcessor = new TaskbarProcessor({
|
18
18
|
"snkGridHeaderTaskbar.unselected": ["REFRESH", "DATA_EXPORTER"],
|
19
|
-
"snkGridHeaderTaskbar.selected": ["UPDATE", "CLONE", "REMOVE", "MORE_OPTIONS", "DIVIDER",
|
19
|
+
"snkGridHeaderTaskbar.selected": ["UPDATE", "CLONE", "REMOVE", "MORE_OPTIONS", "DIVIDER", "ATTACH", "REFRESH", "DATA_EXPORTER"],
|
20
20
|
"snkGridHeaderTaskbar.detail.unselected": ["REFRESH"],
|
21
|
-
"snkGridHeaderTaskbar.detail.selected": ["UPDATE", "CLONE", "REMOVE", "MORE_OPTIONS", "DIVIDER", "REFRESH"]
|
21
|
+
"snkGridHeaderTaskbar.detail.selected": ["UPDATE", "ATTACH", "CLONE", "REMOVE", "MORE_OPTIONS", "DIVIDER", "REFRESH"]
|
22
22
|
});
|
23
23
|
this._dataUnit = undefined;
|
24
24
|
this._dataState = undefined;
|
@@ -57,13 +57,6 @@ export class SnkGrid {
|
|
57
57
|
async setConfig(config) {
|
58
58
|
this.setGridConfig(config);
|
59
59
|
}
|
60
|
-
getAttachAvailable() {
|
61
|
-
var _a;
|
62
|
-
const isValidVersion = VersionUtils.isRequiredVersion((_a = window.envContext) === null || _a === void 0 ? void 0 : _a.sysVersion, '4.22');
|
63
|
-
if (isValidVersion)
|
64
|
-
return TaskbarElement.ATTACH;
|
65
|
-
return "";
|
66
|
-
}
|
67
60
|
openGridConfig() {
|
68
61
|
this._grid.getColumnsState()
|
69
62
|
.then((gridColumns) => {
|
@@ -1,3 +1,12 @@
|
|
1
|
+
import { TaskbarElement } from "../elements/taskbar-elements";
|
2
|
+
import { VersionUtils } from "@sankhyalabs/core";
|
3
|
+
const MINIMUM_SK_VERSION_TO_ATTACHMENT = "4.22";
|
4
|
+
const buttonsWithPermissions = {
|
5
|
+
[TaskbarElement.ATTACH]: () => {
|
6
|
+
var _a;
|
7
|
+
return VersionUtils.isRequiredVersion((_a = window.envContext) === null || _a === void 0 ? void 0 : _a.sysVersion, MINIMUM_SK_VERSION_TO_ATTACHMENT);
|
8
|
+
}
|
9
|
+
};
|
1
10
|
export default class TaskbarProcessor {
|
2
11
|
constructor(defaultButtons) {
|
3
12
|
this._defaultButtons = defaultButtons;
|
@@ -8,8 +17,14 @@ export default class TaskbarProcessor {
|
|
8
17
|
this.buttons = "";
|
9
18
|
this.disabledButtons = [].concat(disabledButtons);
|
10
19
|
(_a = this.getButtonsArray(taskbarId, taskbarManager, dataState)) === null || _a === void 0 ? void 0 : _a.forEach(btnDef => {
|
20
|
+
var _a;
|
11
21
|
let buttonName;
|
12
22
|
if (typeof btnDef === "string") {
|
23
|
+
if (buttonsWithPermissions[btnDef]) {
|
24
|
+
const hasPermissions = (_a = buttonsWithPermissions[btnDef]) === null || _a === void 0 ? void 0 : _a.call(buttonsWithPermissions);
|
25
|
+
if (!hasPermissions)
|
26
|
+
return;
|
27
|
+
}
|
13
28
|
buttonName = btnDef;
|
14
29
|
}
|
15
30
|
else {
|
@@ -6,7 +6,7 @@ export { SnkConfigurator as SnkConfigurator } from '../types/components/snk-conf
|
|
6
6
|
export { SnkCrud as SnkCrud } from '../types/components/snk-crud/snk-crud';
|
7
7
|
export { SnkDataExporter as SnkDataExporter } from '../types/components/snk-data-exporter/snk-data-exporter';
|
8
8
|
export { SnkDataUnit as SnkDataUnit } from '../types/components/snk-data-unit/snk-data-unit';
|
9
|
-
export { SnkDetailView as SnkDetailView } from '../types/components/snk-crud/subcomponents/snk-detail-view';
|
9
|
+
export { SnkDetailView as SnkDetailView } from '../types/components/snk-crud/subcomponents/snk-detail-view/snk-detail-view';
|
10
10
|
export { SnkExporterEmailSender as SnkExporterEmailSender } from '../types/components/snk-data-exporter/exporter-email-sender/snk-exporter-email-sender';
|
11
11
|
export { SnkExpressionItem as SnkExpressionItem } from '../types/components/snk-personalized-filter/subcomponents/snk-expression-item/snk-expression-item';
|
12
12
|
export { SnkFieldConfig as SnkFieldConfig } from '../types/components/snk-form/subcomponents/snk-field-config/snk-field-config';
|
@@ -216,9 +216,8 @@ class AttachmentDataUnitBuilder {
|
|
216
216
|
return new Promise((resolve) => {
|
217
217
|
const { records } = dataUnit.getSelectionInfo();
|
218
218
|
attachFetcher.delete(records[0]).then(() => {
|
219
|
-
resolve(ids);
|
219
|
+
return resolve(ids);
|
220
220
|
});
|
221
|
-
resolve([]);
|
222
221
|
});
|
223
222
|
}
|
224
223
|
getFilters(registerKey) {
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import { proxyCustomElement, HTMLElement, createEvent, h } from '@stencil/core/internal/client';
|
2
|
-
import { ElementIDUtils, ApplicationContext
|
2
|
+
import { ElementIDUtils, ApplicationContext } from '@sankhyalabs/core';
|
3
3
|
import { T as TaskbarElement, d as defineCustomElement$2 } from './snk-taskbar2.js';
|
4
4
|
import './DataFetcher.js';
|
5
5
|
import './pesquisa-fetcher.js';
|
@@ -33,6 +33,7 @@ const SnkCrud$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
33
33
|
super();
|
34
34
|
this.__registerHost();
|
35
35
|
this.actionClick = createEvent(this, "actionClick", 7);
|
36
|
+
this._viewHistory = [];
|
36
37
|
this._dataUnit = undefined;
|
37
38
|
this._dataState = undefined;
|
38
39
|
this.attachmentRegisterKey = undefined;
|
@@ -52,6 +53,9 @@ const SnkCrud$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
52
53
|
async goToView(mode) {
|
53
54
|
this.executeAction(mode);
|
54
55
|
}
|
56
|
+
currentViewModeWatcher(currentView) {
|
57
|
+
this._viewHistory = [...this._viewHistory.slice(-1), currentView];
|
58
|
+
}
|
55
59
|
async gridToForm(keepFormMode = false) {
|
56
60
|
this._backToGrid = !keepFormMode && await this._viewStack.getSelectedIndex() === VIEW_MODE.GRID;
|
57
61
|
this.setViewMode(VIEW_MODE.FORM);
|
@@ -66,8 +70,9 @@ const SnkCrud$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
66
70
|
if (act === "ATTACH")
|
67
71
|
return this.setViewMode(VIEW_MODE.ATTACHMENT);
|
68
72
|
}
|
69
|
-
|
70
|
-
this.
|
73
|
+
backView() {
|
74
|
+
const lastView = this._viewHistory.at(-2) || VIEW_MODE.GRID;
|
75
|
+
this.setViewMode(lastView);
|
71
76
|
}
|
72
77
|
setViewMode(viewMode) {
|
73
78
|
this._viewStack.show(viewMode);
|
@@ -94,6 +99,13 @@ const SnkCrud$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
94
99
|
this.setViewMode(VIEW_MODE.GRID);
|
95
100
|
}
|
96
101
|
}
|
102
|
+
async getAttachmentRegisterKey() {
|
103
|
+
if (!this._snkDataUnit)
|
104
|
+
return;
|
105
|
+
const recordCriteria = await this._snkDataUnit.getSelectedRecordsIDsInfo();
|
106
|
+
const joinedPrimaryKeys = recordCriteria.map(({ value }) => value).join('_');
|
107
|
+
return joinedPrimaryKeys;
|
108
|
+
}
|
97
109
|
componentWillLoad() {
|
98
110
|
let parent = this._element.parentElement;
|
99
111
|
while (parent) {
|
@@ -112,8 +124,11 @@ const SnkCrud$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
112
124
|
else {
|
113
125
|
this.initDataUnit();
|
114
126
|
}
|
115
|
-
this._snkDataUnit.addEventListener("dataStateChange", (
|
116
|
-
this._dataState =
|
127
|
+
this._snkDataUnit.addEventListener("dataStateChange", async ({ detail: dataState }) => {
|
128
|
+
this._dataState = dataState;
|
129
|
+
if (dataState.selectedRecord !== undefined) {
|
130
|
+
this.attachmentRegisterKey = await this.getAttachmentRegisterKey();
|
131
|
+
}
|
117
132
|
});
|
118
133
|
break;
|
119
134
|
}
|
@@ -130,17 +145,13 @@ const SnkCrud$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
130
145
|
this.messagesBuilder = this._snkDataUnit.messagesBuilder;
|
131
146
|
}
|
132
147
|
}
|
133
|
-
async canRenderAttachment() {
|
134
|
-
var _a, _b, _c, _d, _e;
|
135
|
-
const isValidVersion = VersionUtils.isRequiredVersion((_a = window.envContext) === null || _a === void 0 ? void 0 : _a.sysVersion, '4.22');
|
136
|
-
const recordCriteria = await ((_c = (_b = this._snkDataUnit) === null || _b === void 0 ? void 0 : _b.getSelectedRecordsIDsInfo) === null || _c === void 0 ? void 0 : _c.call(_b));
|
137
|
-
this.attachmentRegisterKey = (_d = recordCriteria.find(criteria => !!criteria.value)) === null || _d === void 0 ? void 0 : _d.value;
|
138
|
-
return isValidVersion && ((_e = this._dataState) === null || _e === void 0 ? void 0 : _e.selectedRecord) !== undefined;
|
139
|
-
}
|
140
148
|
render() {
|
141
|
-
return (h("ez-view-stack", { ref: (ref) => this._viewStack = ref, "data-element-id": "crud" }, h("stack-item", null, h("snk-grid", { ref: (ref) => this._snkGrid = ref, "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 }, 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" }, h("slot", { name: "SnkFormTaskBar" }))), h("stack-item", null,
|
149
|
+
return (h("ez-view-stack", { ref: (ref) => this._viewStack = ref, "data-element-id": "crud" }, h("stack-item", null, h("snk-grid", { ref: (ref) => this._snkGrid = ref, "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 }, 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" }, 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) })));
|
142
150
|
}
|
143
151
|
get _element() { return this; }
|
152
|
+
static get watchers() { return {
|
153
|
+
"_currentViewMode": ["currentViewModeWatcher"]
|
154
|
+
}; }
|
144
155
|
static get style() { return snkCrudCss; }
|
145
156
|
}, [6, "snk-crud", {
|
146
157
|
"configName": [1025, "config-name"],
|