@sankhyalabs/sankhyablocks 8.15.0-dev.3 → 8.15.0-dev.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/{ConfigStorage-0d507a8f.js → ConfigStorage-8009ecb2.js} +1 -1
- package/dist/cjs/{SnkFormConfigManager-467907f6.js → SnkFormConfigManager-7d850fbc.js} +1 -1
- package/dist/cjs/{dataunit-fetcher-de65b9fc.js → dataunit-fetcher-bd4c52da.js} +11 -6
- package/dist/cjs/{index-0e663819.js → index-0922807b.js} +1 -0
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/sankhyablocks.cjs.js +1 -1
- package/dist/cjs/snk-actions-button_2.cjs.entry.js +2 -2
- package/dist/cjs/snk-application.cjs.entry.js +63 -3
- package/dist/cjs/snk-attach.cjs.entry.js +11 -4
- package/dist/cjs/snk-crud.cjs.entry.js +3 -3
- package/dist/cjs/snk-data-exporter.cjs.entry.js +1 -1
- package/dist/cjs/snk-detail-view.cjs.entry.js +6 -6
- package/dist/cjs/snk-filter-bar.cjs.entry.js +28 -3
- package/dist/cjs/snk-filter-modal-item.cjs.entry.js +1 -2
- package/dist/cjs/snk-filter-modal.cjs.entry.js +14 -0
- package/dist/cjs/snk-form.cjs.entry.js +2 -2
- package/dist/cjs/snk-grid-config.cjs.entry.js +1 -1
- package/dist/cjs/snk-grid.cjs.entry.js +41 -18
- package/dist/cjs/{snk-guides-viewer-7e87ffce.js → snk-guides-viewer-cb176c4d.js} +5 -5
- package/dist/cjs/snk-guides-viewer.cjs.entry.js +6 -6
- package/dist/cjs/snk-personalized-filter.cjs.entry.js +2 -2
- package/dist/cjs/snk-simple-crud.cjs.entry.js +3 -3
- package/dist/cjs/snk-taskbar.cjs.entry.js +2 -2
- package/dist/cjs/{taskbar-elements-b8c428a9.js → taskbar-elements-01b85b99.js} +1 -1
- package/dist/collection/components/snk-application/snk-application.js +76 -13
- package/dist/collection/components/snk-attach/snk-attach.js +8 -1
- package/dist/collection/components/snk-crud/snk-crud.js +1 -1
- package/dist/collection/components/snk-crud/subcomponents/snk-guides-viewer.js +2 -2
- package/dist/collection/components/snk-filter-bar/filter-modal/snk-filter-modal.js +65 -1
- package/dist/collection/components/snk-filter-bar/filter-modal/subcomponents/snk-filter-modal-item.js +0 -1
- package/dist/collection/components/snk-filter-bar/snk-filter-bar.js +57 -1
- package/dist/collection/components/snk-filter-bar/utils/SnkFilterModalFactory.js +3 -1
- package/dist/collection/components/snk-grid/snk-grid.js +39 -16
- package/dist/collection/components/snk-personalized-filter/snk-personalized-filter.js +1 -1
- package/dist/collection/components/snk-taskbar/snk-taskbar.js +1 -1
- package/dist/collection/lib/@types/index.js +1 -0
- package/dist/collection/lib/http/data-fetcher/fetchers/data-unit/loadstrategy/DatasetStrategy.js +11 -6
- package/dist/collection/lib/http/data-fetcher/fetchers/filter-bar-config-fetcher.js +1 -1
- package/dist/components/ConfigStorage.js +1 -1
- package/dist/components/dataunit-fetcher.js +11 -6
- package/dist/components/index2.js +1 -0
- package/dist/components/snk-application2.js +62 -2
- package/dist/components/snk-attach2.js +8 -1
- package/dist/components/snk-detail-view2.js +1 -1
- package/dist/components/snk-filter-bar2.js +29 -3
- package/dist/components/snk-filter-modal-item2.js +0 -1
- package/dist/components/snk-filter-modal.js +18 -2
- package/dist/components/snk-grid2.js +38 -15
- package/dist/components/snk-personalized-filter2.js +1 -1
- package/dist/esm/{ConfigStorage-379a9cba.js → ConfigStorage-1244b8b0.js} +1 -1
- package/dist/esm/{SnkFormConfigManager-587e9030.js → SnkFormConfigManager-9be0e7d4.js} +1 -1
- package/dist/esm/{dataunit-fetcher-e218c6d2.js → dataunit-fetcher-65714f21.js} +11 -6
- package/dist/esm/{index-1564817d.js → index-0ece87a6.js} +1 -0
- package/dist/esm/loader.js +1 -1
- package/dist/esm/sankhyablocks.js +1 -1
- package/dist/esm/snk-actions-button_2.entry.js +2 -2
- package/dist/esm/snk-application.entry.js +64 -4
- package/dist/esm/snk-attach.entry.js +11 -4
- package/dist/esm/snk-crud.entry.js +3 -3
- package/dist/esm/snk-data-exporter.entry.js +1 -1
- package/dist/esm/snk-detail-view.entry.js +6 -6
- package/dist/esm/snk-filter-bar.entry.js +28 -3
- package/dist/esm/snk-filter-modal-item.entry.js +1 -2
- package/dist/esm/snk-filter-modal.entry.js +14 -0
- package/dist/esm/snk-form.entry.js +2 -2
- package/dist/esm/snk-grid-config.entry.js +1 -1
- package/dist/esm/snk-grid.entry.js +41 -18
- package/dist/esm/{snk-guides-viewer-2134aba2.js → snk-guides-viewer-eeb8f354.js} +5 -5
- package/dist/esm/snk-guides-viewer.entry.js +6 -6
- package/dist/esm/snk-personalized-filter.entry.js +2 -2
- package/dist/esm/snk-simple-crud.entry.js +3 -3
- package/dist/esm/snk-taskbar.entry.js +2 -2
- package/dist/esm/{taskbar-elements-26c981af.js → taskbar-elements-d4d0b424.js} +1 -1
- package/dist/sankhyablocks/{p-35fe6e61.entry.js → p-0874adb5.entry.js} +1 -1
- package/dist/sankhyablocks/{p-aaa1438e.entry.js → p-11081798.entry.js} +1 -1
- package/dist/sankhyablocks/{p-ba627e85.js → p-29804fc5.js} +1 -1
- package/dist/sankhyablocks/p-3520c088.entry.js +1 -0
- package/dist/sankhyablocks/p-374d03f6.js +1 -0
- package/dist/sankhyablocks/p-38289a55.js +1 -0
- package/dist/sankhyablocks/{p-4396d1a6.js → p-585294ee.js} +1 -1
- package/dist/sankhyablocks/{p-953346b9.entry.js → p-69efa80d.entry.js} +1 -1
- package/dist/sankhyablocks/{p-a49b1019.entry.js → p-6d20d38c.entry.js} +1 -1
- package/dist/sankhyablocks/{p-2028633c.js → p-776ee8e3.js} +1 -1
- package/dist/sankhyablocks/p-7d51d949.entry.js +11 -0
- package/dist/sankhyablocks/p-809f367d.entry.js +1 -0
- package/dist/sankhyablocks/{p-0cd2e986.entry.js → p-95a3778f.entry.js} +1 -1
- package/dist/sankhyablocks/p-a9e5b094.entry.js +1 -0
- package/dist/sankhyablocks/p-b146a9f0.entry.js +1 -0
- package/dist/sankhyablocks/p-bedb8ad6.entry.js +1 -0
- package/dist/sankhyablocks/{p-a7923832.entry.js → p-ca4d337a.entry.js} +1 -1
- package/dist/sankhyablocks/{p-ca8e7da0.entry.js → p-cdd66657.entry.js} +1 -1
- package/dist/sankhyablocks/p-d1f5bc50.js +1 -0
- package/dist/sankhyablocks/p-f2056f66.entry.js +1 -0
- package/dist/sankhyablocks/p-f514913b.entry.js +1 -0
- package/dist/sankhyablocks/{p-729f5f5b.entry.js → p-fd8814b9.entry.js} +1 -1
- package/dist/sankhyablocks/sankhyablocks.esm.js +1 -1
- package/dist/types/components/snk-actions-button/subcomponents/snk-actions-form.d.ts +1 -1
- package/dist/types/components/snk-application/snk-application.d.ts +5 -2
- package/dist/types/components/snk-attach/snk-attach.d.ts +1 -0
- package/dist/types/components/snk-filter-bar/filter-modal/snk-filter-modal.d.ts +14 -1
- package/dist/types/components/snk-filter-bar/snk-filter-bar.d.ts +11 -0
- package/dist/types/components/snk-filter-bar/utils/SnkFilterModalFactory.d.ts +5 -1
- package/dist/types/components/snk-grid/snk-grid.d.ts +1 -0
- package/dist/types/components/snk-taskbar/subcomponents/field-search.d.ts +1 -0
- package/dist/types/components.d.ts +34 -11
- package/dist/types/lib/@types/index.d.ts +2 -1
- package/dist/types/lib/http/data-fetcher/fetchers/data-unit/loadstrategy/DatasetStrategy.d.ts +1 -0
- package/package.json +3 -3
- package/dist/sankhyablocks/p-145c4434.js +0 -1
- package/dist/sankhyablocks/p-4b0ea83f.entry.js +0 -1
- package/dist/sankhyablocks/p-5534e08c.js +0 -1
- package/dist/sankhyablocks/p-58218eb7.entry.js +0 -1
- package/dist/sankhyablocks/p-78777ae0.entry.js +0 -1
- package/dist/sankhyablocks/p-7915c452.entry.js +0 -1
- package/dist/sankhyablocks/p-a037f5b4.entry.js +0 -1
- package/dist/sankhyablocks/p-b52c2175.js +0 -1
- package/dist/sankhyablocks/p-bf9b7149.entry.js +0 -11
- package/dist/sankhyablocks/p-c259545b.entry.js +0 -1
- package/dist/sankhyablocks/p-d1677df0.entry.js +0 -1
@@ -114,6 +114,24 @@ export class SnkFilterBar {
|
|
114
114
|
this.updateFilter(filterItem);
|
115
115
|
return Promise.resolve();
|
116
116
|
}
|
117
|
+
/**
|
118
|
+
* Remove um item de filtro.
|
119
|
+
*
|
120
|
+
* @param filterID - ID do a ser adicionado
|
121
|
+
*
|
122
|
+
* @returns {Promise<SnkFilterItemConfig|undefined>} - Retorna o item de filtro removido, ou undefined caso não encontrado.
|
123
|
+
*/
|
124
|
+
async removeFilterItem(filterID) {
|
125
|
+
const itemIndex = this.filterConfig.findIndex(item => item.id === filterID);
|
126
|
+
if (itemIndex == -1) {
|
127
|
+
console.warn("[SnkFilterBar.removeFilterItem] FilterItem não encontrado");
|
128
|
+
return Promise.resolve(undefined);
|
129
|
+
}
|
130
|
+
const itemToRemove = this.filterConfig[itemIndex];
|
131
|
+
;
|
132
|
+
this.filterConfig = this.filterConfig.filter(item => item.id !== filterID);
|
133
|
+
return Promise.resolve(itemToRemove);
|
134
|
+
}
|
117
135
|
componentDidLoad() {
|
118
136
|
if (this._element) {
|
119
137
|
const dataInfo = { dataUnit: this.dataUnit };
|
@@ -321,7 +339,8 @@ export class SnkFilterBar {
|
|
321
339
|
onComplete: callbackOnApplyFilter,
|
322
340
|
getMessage: (key, props) => this.getMessage(key, props),
|
323
341
|
onAddPersonalizedFilter: () => this.addPersonalizedFilter(),
|
324
|
-
onEditPersonalizedFilter: (id) => this.editPersonalizedFilter(id)
|
342
|
+
onEditPersonalizedFilter: (id) => this.editPersonalizedFilter(id),
|
343
|
+
onDeletePersonalizedFilter: (filter, configName) => this.deletePersonalizedFilter(filter, FilterItemType.PERSONALIZED, configName),
|
325
344
|
};
|
326
345
|
this._filterModalFactory = new SnkFilterModalFactory(factoryParams);
|
327
346
|
await this._filterModalFactory.showModal();
|
@@ -339,6 +358,11 @@ export class SnkFilterBar {
|
|
339
358
|
this.showPersonalizedFilter = true;
|
340
359
|
this.personalizedFilterId = id;
|
341
360
|
}
|
361
|
+
deletePersonalizedFilter(filter, filterItemType, configName) {
|
362
|
+
if (filterItemType === FilterItemType.PERSONALIZED) {
|
363
|
+
ConfigStorage.removePersonalizedFilter(filter, this.resourceID, configName);
|
364
|
+
}
|
365
|
+
}
|
342
366
|
handleHidePersonalizedFilter(reloadFilterBar) {
|
343
367
|
if (reloadFilterBar) {
|
344
368
|
this.loadConfigFromStorage().then(() => {
|
@@ -612,6 +636,38 @@ export class SnkFilterBar {
|
|
612
636
|
"text": "filterItem - Item a ser adicionado, caso o item j\u00E1 exista com o ID ele n\u00E3o ser\u00E1 adicionado novamente"
|
613
637
|
}]
|
614
638
|
}
|
639
|
+
},
|
640
|
+
"removeFilterItem": {
|
641
|
+
"complexType": {
|
642
|
+
"signature": "(filterID: string) => Promise<SnkFilterItemConfig | undefined>",
|
643
|
+
"parameters": [{
|
644
|
+
"tags": [{
|
645
|
+
"name": "param",
|
646
|
+
"text": "filterID - ID do a ser adicionado"
|
647
|
+
}],
|
648
|
+
"text": "- ID do a ser adicionado"
|
649
|
+
}],
|
650
|
+
"references": {
|
651
|
+
"Promise": {
|
652
|
+
"location": "global"
|
653
|
+
},
|
654
|
+
"SnkFilterItemConfig": {
|
655
|
+
"location": "import",
|
656
|
+
"path": "./filter-item/snk-filter-item"
|
657
|
+
}
|
658
|
+
},
|
659
|
+
"return": "Promise<SnkFilterItemConfig>"
|
660
|
+
},
|
661
|
+
"docs": {
|
662
|
+
"text": "Remove um item de filtro.",
|
663
|
+
"tags": [{
|
664
|
+
"name": "param",
|
665
|
+
"text": "filterID - ID do a ser adicionado"
|
666
|
+
}, {
|
667
|
+
"name": "returns",
|
668
|
+
"text": "- Retorna o item de filtro removido, ou undefined caso n\u00E3o encontrado."
|
669
|
+
}]
|
670
|
+
}
|
615
671
|
}
|
616
672
|
};
|
617
673
|
}
|
@@ -1,12 +1,13 @@
|
|
1
1
|
import { ApplicationUtils } from "@sankhyalabs/ezui/dist/collection/utils";
|
2
2
|
class SnkFilterModalFactory {
|
3
|
-
constructor({ filterConfig, configName, onComplete, getMessage, onAddPersonalizedFilter, onEditPersonalizedFilter }) {
|
3
|
+
constructor({ filterConfig, configName, onComplete, getMessage, onAddPersonalizedFilter, onEditPersonalizedFilter, onDeletePersonalizedFilter }) {
|
4
4
|
this._filterConfig = filterConfig;
|
5
5
|
this._configName = configName;
|
6
6
|
this._onComplete = onComplete;
|
7
7
|
this._getMessage = getMessage;
|
8
8
|
this._addPersonalizedFilterFn = onAddPersonalizedFilter;
|
9
9
|
this._editPersonalizedFilterFn = onEditPersonalizedFilter;
|
10
|
+
this._onDeletePersonalizedFilter = onDeletePersonalizedFilter;
|
10
11
|
}
|
11
12
|
applyFilters(newFilterConfig) {
|
12
13
|
this._onComplete(newFilterConfig);
|
@@ -22,6 +23,7 @@ class SnkFilterModalFactory {
|
|
22
23
|
filterModal.closeModal = () => this._closeModal();
|
23
24
|
filterModal.addPersonalizedFilter = () => this._addPersonalizedFilterFn();
|
24
25
|
filterModal.editPersonalizedFilter = (id) => this._editPersonalizedFilterFn(id);
|
26
|
+
filterModal.deletePersonalizedFilter = (filter, configName) => this._onDeletePersonalizedFilter(filter, configName);
|
25
27
|
return filterModal;
|
26
28
|
}
|
27
29
|
async showModal() {
|
@@ -14,14 +14,21 @@ export class SnkGrid {
|
|
14
14
|
this._topTaskbarProcessor = new TaskbarProcessor({
|
15
15
|
"snkGridTopTaskbar.regular": ["FORM_MODE", "CONFIGURATOR", "INSERT"],
|
16
16
|
"snkGridTopTaskbar.regular.secondary": ["FORM_MODE", "CONFIGURATOR", "INSERT"],
|
17
|
+
"snkGridTopTaskbar.regular.singleTaskbar": [],
|
17
18
|
"snkGridTopTaskbar.finish_edition": ["CANCEL", "SAVE"],
|
18
|
-
"snkGridTopTaskbar.finish_edition.secondary": []
|
19
|
+
"snkGridTopTaskbar.finish_edition.secondary": [],
|
20
|
+
"snkGridTopTaskbar.finish_edition.singleTaskbar": [],
|
19
21
|
});
|
20
22
|
this._headerTaskbarProcessor = new TaskbarProcessor({
|
21
23
|
"snkGridHeaderTaskbar.unselected": ["REFRESH", "DATA_EXPORTER", "ACTIONS_BUTTON", "MORE_OPTIONS"],
|
22
24
|
"snkGridHeaderTaskbar.selected": ["UPDATE", "CLONE", "REMOVE", "MORE_OPTIONS", "DIVIDER", "ATTACH", "REFRESH", "DATA_EXPORTER", "ACTIONS_BUTTON"],
|
23
25
|
"snkGridHeaderTaskbar.detail.unselected": ["REFRESH", "MORE_OPTIONS"],
|
24
|
-
"snkGridHeaderTaskbar.detail.selected": ["UPDATE", "ATTACH", "CLONE", "REMOVE", "MORE_OPTIONS", "DIVIDER", "REFRESH"]
|
26
|
+
"snkGridHeaderTaskbar.detail.selected": ["UPDATE", "ATTACH", "CLONE", "REMOVE", "MORE_OPTIONS", "DIVIDER", "REFRESH"],
|
27
|
+
"snkGridHeaderTaskbar.singleTaskbar.unselected": ["INSERT", "FORM_MODE", "CONFIGURATOR", "REFRESH", "DATA_EXPORTER", "ACTIONS_BUTTON", "MORE_OPTIONS"],
|
28
|
+
"snkGridHeaderTaskbar.singleTaskbar.selected": ["UPDATE", "CLONE", "REMOVE", "MORE_OPTIONS", "DIVIDER", "ATTACH", "FORM_MODE", "CONFIGURATOR", "REFRESH", "DATA_EXPORTER", "ACTIONS_BUTTON"],
|
29
|
+
"snkGridHeaderTaskbar.singleTaskbar.detail.unselected": ["INSERT", "FORM_MODE", "CONFIGURATOR", "REFRESH", "MORE_OPTIONS"],
|
30
|
+
"snkGridHeaderTaskbar.singleTaskbar.detail.selected": ["UPDATE", "ATTACH", "CLONE", "REMOVE", "MORE_OPTIONS", "DIVIDER", "FORM_MODE", "CONFIGURATOR", "REFRESH"],
|
31
|
+
"snkGridHeaderTaskbar.singleTaskbar.finish_edition": ["CANCEL", "SAVE"]
|
25
32
|
});
|
26
33
|
this._dataUnit = undefined;
|
27
34
|
this._dataState = undefined;
|
@@ -302,30 +309,46 @@ export class SnkGrid {
|
|
302
309
|
return invisibleButtons;
|
303
310
|
}
|
304
311
|
componentWillRender() {
|
305
|
-
var _a;
|
306
312
|
const invisibleButtons = this.getInvisibleButtons();
|
307
|
-
|
308
|
-
let headerTaskbarId;
|
309
|
-
if (hasSelectedRecord) {
|
310
|
-
headerTaskbarId = this.isDetail ? "snkGridHeaderTaskbar.detail.selected" : "snkGridHeaderTaskbar.selected";
|
311
|
-
}
|
312
|
-
else {
|
313
|
-
headerTaskbarId = this.isDetail ? "snkGridHeaderTaskbar.detail.unselected" : "snkGridHeaderTaskbar.unselected";
|
314
|
-
}
|
315
|
-
this._headerTaskbarProcessor.process(headerTaskbarId, this.taskbarManager, this._dataState, this.getHeaderDisabledButtons(), invisibleButtons);
|
313
|
+
this._headerTaskbarProcessor.process(this.getHeaderTaskbarId(), this.taskbarManager, this._dataState, this.getHeaderDisabledButtons(), invisibleButtons);
|
316
314
|
this._topTaskbarProcessor.process(this.getTopTaskBarId(), this.taskbarManager, this._dataState, undefined, invisibleButtons);
|
317
315
|
this.dataExporterProviderStore();
|
318
316
|
}
|
317
|
+
getHeaderTaskbarId() {
|
318
|
+
var _a, _b;
|
319
|
+
const hasSelectedRecord = this._dataState && !!((_a = this._dataState.selectionInfo) === null || _a === void 0 ? void 0 : _a.length);
|
320
|
+
const taskbarIdPrefixLookup = {
|
321
|
+
primary: this.isDetail ? "snkGridHeaderTaskbar.detail" : "snkGridHeaderTaskbar",
|
322
|
+
secondary: this.isDetail ? "snkGridHeaderTaskbar.detail" : "snkGridHeaderTaskbar",
|
323
|
+
singleTaskbar: this.isDetail ? "snkGridHeaderTaskbar.singleTaskbar.detail" : "snkGridHeaderTaskbar.singleTaskbar"
|
324
|
+
};
|
325
|
+
const taskbarIdPrefix = taskbarIdPrefixLookup[this.presentationMode];
|
326
|
+
let headerTaskbarId = hasSelectedRecord ? `${taskbarIdPrefix}.selected` : `${taskbarIdPrefix}.unselected`;
|
327
|
+
if (((_b = this._dataState) === null || _b === void 0 ? void 0 : _b.isDirty) && this.presentationMode === PresentationMode.SINGLE_TASKBAR) {
|
328
|
+
headerTaskbarId = "snkGridHeaderTaskbar.singleTaskbar.finish_edition";
|
329
|
+
}
|
330
|
+
return headerTaskbarId;
|
331
|
+
}
|
319
332
|
getTopTaskBarId() {
|
320
333
|
var _a;
|
321
|
-
const
|
334
|
+
const suffixLookup = {
|
335
|
+
primary: "",
|
336
|
+
secondary: ".secondary",
|
337
|
+
singleTaskbar: ".singleTaskbar"
|
338
|
+
};
|
339
|
+
const sufix = suffixLookup[this.presentationMode];
|
322
340
|
if ((_a = this._dataState) === null || _a === void 0 ? void 0 : _a.isDirty) {
|
323
341
|
return `snkGridTopTaskbar.finish_edition${sufix}`;
|
324
342
|
}
|
325
343
|
return `snkGridTopTaskbar.regular${sufix}`;
|
326
344
|
}
|
327
345
|
getPrimaryButton() {
|
328
|
-
|
346
|
+
const primaryButtonLookup = {
|
347
|
+
primary: "INSERT",
|
348
|
+
secondary: "",
|
349
|
+
singleTaskbar: "INSERT"
|
350
|
+
};
|
351
|
+
return primaryButtonLookup[this.presentationMode];
|
329
352
|
}
|
330
353
|
getColumnSearch(actionButton, item) {
|
331
354
|
if (this._columnSearch != undefined) {
|
@@ -376,7 +399,7 @@ export class SnkGrid {
|
|
376
399
|
return undefined;
|
377
400
|
}
|
378
401
|
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--medium" }, this._showSnkFilterBar &&
|
379
|
-
h(Fragment, null, h("snk-filter-bar", { ref: (ref) => this._snkFilterBar = ref, 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) }), 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 }, 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 }, h("snk-taskbar", { dataUnit: this._dataUnit, configName: this.configName, messagesBuilder: this.messagesBuilder, "data-element-id": "grid_left", buttons: this._headerTaskbarProcessor.buttons, disabledButtons: this._headerTaskbarProcessor.disabledButtons, customButtons: this._headerTaskbarProcessor.customButtons, slot: "leftButtons", actionsList: this.getActionsList(), 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), application: this._application, selectedIndex: 0, configName: this.configName, onConfigChange: (evt) => this.modalConfigChangeHandler(evt), onConfigCancel: () => this.closeGridConfig(), resourceID: this.resourceID }))));
|
402
|
+
h(Fragment, null, h("snk-filter-bar", { ref: (ref) => this._snkFilterBar = ref, 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) }), 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 }, 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 }, h("snk-taskbar", { dataUnit: this._dataUnit, configName: this.configName, messagesBuilder: this.messagesBuilder, "data-element-id": "grid_left", buttons: this._headerTaskbarProcessor.buttons, 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), application: this._application, selectedIndex: 0, configName: this.configName, onConfigChange: (evt) => this.modalConfigChangeHandler(evt), onConfigCancel: () => this.closeGridConfig(), resourceID: this.resourceID }))));
|
380
403
|
}
|
381
404
|
static get is() { return "snk-grid"; }
|
382
405
|
static get encapsulation() { return "scoped"; }
|
@@ -573,7 +596,7 @@ export class SnkGrid {
|
|
573
596
|
"mutable": false,
|
574
597
|
"complexType": {
|
575
598
|
"original": "PresentationMode",
|
576
|
-
"resolved": "PresentationMode.PRIMARY | PresentationMode.SECONDARY",
|
599
|
+
"resolved": "PresentationMode.PRIMARY | PresentationMode.SECONDARY | PresentationMode.SINGLE_TASKBAR",
|
577
600
|
"references": {
|
578
601
|
"PresentationMode": {
|
579
602
|
"location": "import",
|
@@ -190,7 +190,7 @@ export class SnkPersonalizedFilter {
|
|
190
190
|
return personalizedFilter;
|
191
191
|
}
|
192
192
|
addFilterGroupCondition(personalizedFilter) {
|
193
|
-
if (!personalizedFilter.assistent.operand) {
|
193
|
+
if (personalizedFilter.assistent && !personalizedFilter.assistent.operand) {
|
194
194
|
personalizedFilter.assistent.operand = FilterGroupCondition.AND;
|
195
195
|
}
|
196
196
|
}
|
@@ -472,7 +472,7 @@ export class SnkTaskbar {
|
|
472
472
|
"mutable": true,
|
473
473
|
"complexType": {
|
474
474
|
"original": "PresentationMode",
|
475
|
-
"resolved": "PresentationMode.PRIMARY | PresentationMode.SECONDARY",
|
475
|
+
"resolved": "PresentationMode.PRIMARY | PresentationMode.SECONDARY | PresentationMode.SINGLE_TASKBAR",
|
476
476
|
"references": {
|
477
477
|
"PresentationMode": {
|
478
478
|
"location": "import",
|
@@ -2,6 +2,7 @@ export var PresentationMode;
|
|
2
2
|
(function (PresentationMode) {
|
3
3
|
PresentationMode["PRIMARY"] = "primary";
|
4
4
|
PresentationMode["SECONDARY"] = "secondary";
|
5
|
+
PresentationMode["SINGLE_TASKBAR"] = "singleTaskbar";
|
5
6
|
})(PresentationMode || (PresentationMode = {}));
|
6
7
|
export var DataExporterOption;
|
7
8
|
(function (DataExporterOption) {
|
package/dist/collection/lib/http/data-fetcher/fetchers/data-unit/loadstrategy/DatasetStrategy.js
CHANGED
@@ -51,13 +51,21 @@ export class DatasetStrategy {
|
|
51
51
|
getFieldsList(dataUnit) {
|
52
52
|
let fields = ["__record__id__", "__record__label__"];
|
53
53
|
dataUnit.metadata.fields.forEach((descriptor) => {
|
54
|
-
if (descriptor.standAlone)
|
54
|
+
if (descriptor.standAlone)
|
55
55
|
return;
|
56
|
-
}
|
57
56
|
fields = fields.concat(this.getFieldNames(descriptor));
|
58
57
|
});
|
59
58
|
return fields;
|
60
59
|
}
|
60
|
+
getStandAloneFieldsList(dataUnit) {
|
61
|
+
let fields = {};
|
62
|
+
dataUnit.metadata.fields.forEach((currentField) => {
|
63
|
+
if (!currentField.standAlone)
|
64
|
+
return;
|
65
|
+
fields = Object.assign(Object.assign({}, fields), { [currentField.name]: { fieldType: currentField.dataType, userType: currentField.userInterface } });
|
66
|
+
});
|
67
|
+
return fields;
|
68
|
+
}
|
61
69
|
getFieldNames(descriptor) {
|
62
70
|
const descriptionField = this.getSearchDescriptionField(descriptor);
|
63
71
|
if (descriptionField == undefined) {
|
@@ -80,10 +88,7 @@ export class DatasetStrategy {
|
|
80
88
|
totalRecordsCount: loadingInfo.count,
|
81
89
|
pagerID: loadingInfo.pagerId,
|
82
90
|
standAlone: false,
|
83
|
-
standAloneFieldsMD: {
|
84
|
-
__record__id__: { "fieldType": "S", "userType": "P" },
|
85
|
-
__record__label__: { "fieldType": "S", "userType": "P" }
|
86
|
-
},
|
91
|
+
standAloneFieldsMD: Object.assign({ __record__id__: { "fieldType": "S", "userType": "P" }, __record__label__: { "fieldType": "S", "userType": "P" } }, this.getStandAloneFieldsList(dataUnit)),
|
87
92
|
tryJoinedFields: true,
|
88
93
|
parallelLoader: useParallelLoader,
|
89
94
|
crudListener: `br.com.sankhya.bff.${this.getModuleName()}.BFFDataUnitDatasetAdapter`,
|
@@ -107,7 +107,7 @@ export default class FilterBarConfigFetcher extends ResourceFetcher {
|
|
107
107
|
multilistValueArray = Array.isArray(multilistValueArray) ? multilistValueArray : [multilistValueArray];
|
108
108
|
// Existem cenários onde o HTML5 não salva o Id do filtro, apenas seu label e value
|
109
109
|
multilistValueArray = multilistValueArray.map(itemRaw => {
|
110
|
-
return Object.assign(Object.assign({}, itemRaw), { id: itemRaw.id ? itemRaw.id : itemRaw.value });
|
110
|
+
return Object.assign(Object.assign({}, itemRaw), { id: (itemRaw.id !== undefined) ? itemRaw.id : itemRaw.value });
|
111
111
|
});
|
112
112
|
item.value = ObjectUtils.copy(multilistValueArray);
|
113
113
|
}
|
@@ -108,7 +108,7 @@ class FilterBarConfigFetcher extends ResourceFetcher {
|
|
108
108
|
multilistValueArray = Array.isArray(multilistValueArray) ? multilistValueArray : [multilistValueArray];
|
109
109
|
// Existem cenários onde o HTML5 não salva o Id do filtro, apenas seu label e value
|
110
110
|
multilistValueArray = multilistValueArray.map(itemRaw => {
|
111
|
-
return Object.assign(Object.assign({}, itemRaw), { id: itemRaw.id ? itemRaw.id : itemRaw.value });
|
111
|
+
return Object.assign(Object.assign({}, itemRaw), { id: (itemRaw.id !== undefined) ? itemRaw.id : itemRaw.value });
|
112
112
|
});
|
113
113
|
item.value = ObjectUtils.copy(multilistValueArray);
|
114
114
|
}
|
@@ -576,13 +576,21 @@ class DatasetStrategy {
|
|
576
576
|
getFieldsList(dataUnit) {
|
577
577
|
let fields = ["__record__id__", "__record__label__"];
|
578
578
|
dataUnit.metadata.fields.forEach((descriptor) => {
|
579
|
-
if (descriptor.standAlone)
|
579
|
+
if (descriptor.standAlone)
|
580
580
|
return;
|
581
|
-
}
|
582
581
|
fields = fields.concat(this.getFieldNames(descriptor));
|
583
582
|
});
|
584
583
|
return fields;
|
585
584
|
}
|
585
|
+
getStandAloneFieldsList(dataUnit) {
|
586
|
+
let fields = {};
|
587
|
+
dataUnit.metadata.fields.forEach((currentField) => {
|
588
|
+
if (!currentField.standAlone)
|
589
|
+
return;
|
590
|
+
fields = Object.assign(Object.assign({}, fields), { [currentField.name]: { fieldType: currentField.dataType, userType: currentField.userInterface } });
|
591
|
+
});
|
592
|
+
return fields;
|
593
|
+
}
|
586
594
|
getFieldNames(descriptor) {
|
587
595
|
const descriptionField = this.getSearchDescriptionField(descriptor);
|
588
596
|
if (descriptionField == undefined) {
|
@@ -605,10 +613,7 @@ class DatasetStrategy {
|
|
605
613
|
totalRecordsCount: loadingInfo.count,
|
606
614
|
pagerID: loadingInfo.pagerId,
|
607
615
|
standAlone: false,
|
608
|
-
standAloneFieldsMD: {
|
609
|
-
__record__id__: { "fieldType": "S", "userType": "P" },
|
610
|
-
__record__label__: { "fieldType": "S", "userType": "P" }
|
611
|
-
},
|
616
|
+
standAloneFieldsMD: Object.assign({ __record__id__: { "fieldType": "S", "userType": "P" }, __record__label__: { "fieldType": "S", "userType": "P" } }, this.getStandAloneFieldsList(dataUnit)),
|
612
617
|
tryJoinedFields: true,
|
613
618
|
parallelLoader: useParallelLoader,
|
614
619
|
crudListener: `br.com.sankhya.bff.${this.getModuleName()}.BFFDataUnitDatasetAdapter`,
|
@@ -2,6 +2,7 @@ var PresentationMode;
|
|
2
2
|
(function (PresentationMode) {
|
3
3
|
PresentationMode["PRIMARY"] = "primary";
|
4
4
|
PresentationMode["SECONDARY"] = "secondary";
|
5
|
+
PresentationMode["SINGLE_TASKBAR"] = "singleTaskbar";
|
5
6
|
})(PresentationMode || (PresentationMode = {}));
|
6
7
|
var DataExporterOption;
|
7
8
|
(function (DataExporterOption) {
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import { proxyCustomElement, HTMLElement, createEvent, h } from '@stencil/core/internal/client';
|
2
|
-
import { DateUtils, StringUtils, ObjectUtils, WaitingChangeException, WarningException, ErrorException, KeyboardManager, OnboardingUtils, DependencyType, ElementIDUtils, ApplicationContext, DataType, ErrorTracking } from '@sankhyalabs/core';
|
2
|
+
import { DateUtils, StringUtils, ObjectUtils, WaitingChangeException, WarningException, ErrorException, KeyboardManager, OnboardingUtils, DependencyType, ArrayUtils, SearchUtils, ElementIDUtils, ApplicationContext, DataType, ErrorTracking } from '@sankhyalabs/core';
|
3
3
|
import { ApplicationUtils } from '@sankhyalabs/ezui/dist/collection/utils';
|
4
4
|
import { C as ConfigStorage } from './ConfigStorage.js';
|
5
5
|
import { d as dist, D as DataFetcher, U as UrlUtils } from './DataFetcher.js';
|
@@ -818,11 +818,53 @@ const SnkApplication = /*@__PURE__*/ proxyCustomElement(class extends HTMLElemen
|
|
818
818
|
return this.executePreparedSearch(mode, argument, { entity: ENTITYNAME, entityDescription: DESCRIPTIONENTITY, criteria, searchOptions });
|
819
819
|
}
|
820
820
|
}
|
821
|
+
filterInvalidFields(resp, item, mdByName) {
|
822
|
+
let fieldsMetadata = resp.fieldsMetadata.filter((field) => {
|
823
|
+
let accept = !StringUtils.isEmpty(item[field.fieldName]) &&
|
824
|
+
field.visible !== false &&
|
825
|
+
field.type !== 'B' &&
|
826
|
+
resp.pkField !== field.fieldName &&
|
827
|
+
resp.descriptionField !== field.fieldName &&
|
828
|
+
(field.isPrimaryKey || !field.isLinkField) &&
|
829
|
+
!(field.type === 'S' && field.presentationType === 'H');
|
830
|
+
if (accept) {
|
831
|
+
mdByName[field.fieldName] = field;
|
832
|
+
}
|
833
|
+
//Condição que trata o problema de trazer imagem no entityCard na pesquisa de registros
|
834
|
+
if (typeof item[field.fieldName] === 'string' && (item[field.fieldName].indexOf('<img') > -1 || item[field.fieldName].indexOf('<svg') > -1)) {
|
835
|
+
return false;
|
836
|
+
}
|
837
|
+
return accept;
|
838
|
+
});
|
839
|
+
return fieldsMetadata;
|
840
|
+
}
|
841
|
+
filterMathFields(matchFields, fields, qtyFields, mdByName) {
|
842
|
+
if (matchFields && Array.isArray(matchFields)) {
|
843
|
+
matchFields.forEach((matchField) => {
|
844
|
+
let fieldMD = ArrayUtils.removeReference(fields, mdByName[matchField]);
|
845
|
+
if (fieldMD) {
|
846
|
+
fields.unshift(fieldMD);
|
847
|
+
}
|
848
|
+
});
|
849
|
+
}
|
850
|
+
fields = fields.slice(0, qtyFields);
|
851
|
+
return fields;
|
852
|
+
}
|
853
|
+
builOptionItem(argument, item, fields, descriptionField, pkField) {
|
854
|
+
var _a;
|
855
|
+
let exibitionItem = {
|
856
|
+
value: StringUtils.highlightValue(argument, item['__matchFields'], (_a = item[pkField]) === null || _a === void 0 ? void 0 : _a.toString(), fields, true),
|
857
|
+
label: descriptionField ? StringUtils.highlightValue(argument, item['__matchFields'], item[descriptionField], fields, true) : "",
|
858
|
+
details: SearchUtils.buildDetails(argument, fields, item)
|
859
|
+
};
|
860
|
+
return exibitionItem;
|
861
|
+
}
|
821
862
|
/**
|
822
863
|
* Obtém as opções em componentes de pesquisa
|
823
864
|
* Ex.: snk-config-options
|
824
865
|
*/
|
825
866
|
async executePreparedSearch(mode, argument, options) {
|
867
|
+
const mdByName = {};
|
826
868
|
const { entity, entityDescription, criteria, searchOptions } = options;
|
827
869
|
if (mode === "ADVANCED") {
|
828
870
|
return new Promise(accept => {
|
@@ -840,7 +882,25 @@ const SnkApplication = /*@__PURE__*/ proxyCustomElement(class extends HTMLElemen
|
|
840
882
|
});
|
841
883
|
}
|
842
884
|
else {
|
843
|
-
return
|
885
|
+
return new Promise((resolve, reject) => {
|
886
|
+
this.pesquisaFetcher.loadAdvancedSearch(entity, argument, criteria, searchOptions)
|
887
|
+
.then(result => {
|
888
|
+
result = ObjectUtils.stringToObject(result.json.$);
|
889
|
+
let descriptionField = result.descriptionField;
|
890
|
+
let pkField = result.pkField;
|
891
|
+
const list = [];
|
892
|
+
result.data.forEach((item) => {
|
893
|
+
let fieldsMetadata = this.filterInvalidFields(result, item, mdByName);
|
894
|
+
let qtyFields = 6;
|
895
|
+
let fields = this.filterMathFields(item['__matchFields'], fieldsMetadata, qtyFields, mdByName);
|
896
|
+
list.push(this.builOptionItem(argument, item, fields, descriptionField, pkField));
|
897
|
+
});
|
898
|
+
resolve(list);
|
899
|
+
})
|
900
|
+
.catch(error => {
|
901
|
+
reject(error);
|
902
|
+
});
|
903
|
+
});
|
844
904
|
}
|
845
905
|
}
|
846
906
|
/**
|
@@ -371,6 +371,9 @@ const SnkAttach = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
371
371
|
}
|
372
372
|
registerKeyWatcher(newRegisterKey, oldRegisterKey) {
|
373
373
|
var _a;
|
374
|
+
if (this.dataUnit == null) {
|
375
|
+
this.loadAttachmentDataUnit();
|
376
|
+
}
|
374
377
|
if (oldRegisterKey !== newRegisterKey) {
|
375
378
|
this.returnToGridMode();
|
376
379
|
this._attachFetcher = new AttachFetcher(this.entityName, this.registerKey, (_a = this.dataUnit) === null || _a === void 0 ? void 0 : _a.name);
|
@@ -441,7 +444,11 @@ const SnkAttach = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
441
444
|
}
|
442
445
|
componentWillLoad() {
|
443
446
|
this._application = ApplicationContext.getContextValue("__SNK__APPLICATION__");
|
444
|
-
|
447
|
+
}
|
448
|
+
componentWillRender() {
|
449
|
+
if (this.dataUnit == null) {
|
450
|
+
this.loadAttachmentDataUnit();
|
451
|
+
}
|
445
452
|
}
|
446
453
|
render() {
|
447
454
|
var _a, _b;
|
@@ -176,7 +176,7 @@ const SnkGuidesViewer = /*@__PURE__*/ proxyCustomElement(class extends HTMLEleme
|
|
176
176
|
});
|
177
177
|
this._guides = this._guides.map(guide => {
|
178
178
|
if (guide.id === guideItem.id) {
|
179
|
-
return Object.assign(Object.assign({}, guide), guideItem);
|
179
|
+
return Object.assign(Object.assign(Object.assign({}, guide), guideItem), (guideItem.children !== undefined ? {} : { children: undefined }));
|
180
180
|
}
|
181
181
|
return guide;
|
182
182
|
});
|
@@ -209,13 +209,14 @@ function buildPersonalized(item) {
|
|
209
209
|
}
|
210
210
|
|
211
211
|
class SnkFilterModalFactory {
|
212
|
-
constructor({ filterConfig, configName, onComplete, getMessage, onAddPersonalizedFilter, onEditPersonalizedFilter }) {
|
212
|
+
constructor({ filterConfig, configName, onComplete, getMessage, onAddPersonalizedFilter, onEditPersonalizedFilter, onDeletePersonalizedFilter }) {
|
213
213
|
this._filterConfig = filterConfig;
|
214
214
|
this._configName = configName;
|
215
215
|
this._onComplete = onComplete;
|
216
216
|
this._getMessage = getMessage;
|
217
217
|
this._addPersonalizedFilterFn = onAddPersonalizedFilter;
|
218
218
|
this._editPersonalizedFilterFn = onEditPersonalizedFilter;
|
219
|
+
this._onDeletePersonalizedFilter = onDeletePersonalizedFilter;
|
219
220
|
}
|
220
221
|
applyFilters(newFilterConfig) {
|
221
222
|
this._onComplete(newFilterConfig);
|
@@ -231,6 +232,7 @@ class SnkFilterModalFactory {
|
|
231
232
|
filterModal.closeModal = () => this._closeModal();
|
232
233
|
filterModal.addPersonalizedFilter = () => this._addPersonalizedFilterFn();
|
233
234
|
filterModal.editPersonalizedFilter = (id) => this._editPersonalizedFilterFn(id);
|
235
|
+
filterModal.deletePersonalizedFilter = (filter, configName) => this._onDeletePersonalizedFilter(filter, configName);
|
234
236
|
return filterModal;
|
235
237
|
}
|
236
238
|
async showModal() {
|
@@ -362,6 +364,23 @@ const SnkFilterBar = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement
|
|
362
364
|
this.updateFilter(filterItem);
|
363
365
|
return Promise.resolve();
|
364
366
|
}
|
367
|
+
/**
|
368
|
+
* Remove um item de filtro.
|
369
|
+
*
|
370
|
+
* @param filterID - ID do a ser adicionado
|
371
|
+
*
|
372
|
+
* @returns {Promise<SnkFilterItemConfig|undefined>} - Retorna o item de filtro removido, ou undefined caso não encontrado.
|
373
|
+
*/
|
374
|
+
async removeFilterItem(filterID) {
|
375
|
+
const itemIndex = this.filterConfig.findIndex(item => item.id === filterID);
|
376
|
+
if (itemIndex == -1) {
|
377
|
+
console.warn("[SnkFilterBar.removeFilterItem] FilterItem não encontrado");
|
378
|
+
return Promise.resolve(undefined);
|
379
|
+
}
|
380
|
+
const itemToRemove = this.filterConfig[itemIndex];
|
381
|
+
this.filterConfig = this.filterConfig.filter(item => item.id !== filterID);
|
382
|
+
return Promise.resolve(itemToRemove);
|
383
|
+
}
|
365
384
|
componentDidLoad() {
|
366
385
|
if (this._element) {
|
367
386
|
const dataInfo = { dataUnit: this.dataUnit };
|
@@ -569,7 +588,8 @@ const SnkFilterBar = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement
|
|
569
588
|
onComplete: callbackOnApplyFilter,
|
570
589
|
getMessage: (key, props) => this.getMessage(key, props),
|
571
590
|
onAddPersonalizedFilter: () => this.addPersonalizedFilter(),
|
572
|
-
onEditPersonalizedFilter: (id) => this.editPersonalizedFilter(id)
|
591
|
+
onEditPersonalizedFilter: (id) => this.editPersonalizedFilter(id),
|
592
|
+
onDeletePersonalizedFilter: (filter, configName) => this.deletePersonalizedFilter(filter, FilterItemType.PERSONALIZED, configName),
|
573
593
|
};
|
574
594
|
this._filterModalFactory = new SnkFilterModalFactory(factoryParams);
|
575
595
|
await this._filterModalFactory.showModal();
|
@@ -587,6 +607,11 @@ const SnkFilterBar = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement
|
|
587
607
|
this.showPersonalizedFilter = true;
|
588
608
|
this.personalizedFilterId = id;
|
589
609
|
}
|
610
|
+
deletePersonalizedFilter(filter, filterItemType, configName) {
|
611
|
+
if (filterItemType === FilterItemType.PERSONALIZED) {
|
612
|
+
ConfigStorage.removePersonalizedFilter(filter, this.resourceID, configName);
|
613
|
+
}
|
614
|
+
}
|
590
615
|
handleHidePersonalizedFilter(reloadFilterBar) {
|
591
616
|
if (reloadFilterBar) {
|
592
617
|
this.loadConfigFromStorage().then(() => {
|
@@ -639,7 +664,8 @@ const SnkFilterBar = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement
|
|
639
664
|
"reload": [64],
|
640
665
|
"getFilterItem": [64],
|
641
666
|
"updateFilterItem": [64],
|
642
|
-
"addFilterItem": [64]
|
667
|
+
"addFilterItem": [64],
|
668
|
+
"removeFilterItem": [64]
|
643
669
|
}, [[0, "filterChange", "filterChangeListener"]]]);
|
644
670
|
function defineCustomElement() {
|
645
671
|
if (typeof customElements === "undefined") {
|
@@ -56,7 +56,6 @@ const SnkFilterModalItem = /*@__PURE__*/ proxyCustomElement(class extends HTMLEl
|
|
56
56
|
buildSnkFilterPersonalizedProps() {
|
57
57
|
return {
|
58
58
|
tag: "snk-personalized-filter-editor", props: {
|
59
|
-
onDeleteFilter: (event) => this.handleDeleteFilter(event.detail, FilterItemType.PERSONALIZED),
|
60
59
|
onEditFilter: (event) => this.editPersonalizedFilter.emit(event.detail),
|
61
60
|
onAddFilter: () => this.addPersonalizedFilter.emit(),
|
62
61
|
}
|
@@ -20,6 +20,14 @@ const SnkFilterModal$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElem
|
|
20
20
|
this.closeModal = undefined;
|
21
21
|
this.addPersonalizedFilter = undefined;
|
22
22
|
this.editPersonalizedFilter = undefined;
|
23
|
+
this.deletePersonalizedFilter = undefined;
|
24
|
+
this.filtersToDelete = [];
|
25
|
+
}
|
26
|
+
/**
|
27
|
+
* Emitido quando um filtro personalizado é deletado.
|
28
|
+
*/
|
29
|
+
deletePersonalizedFilterListener(event) {
|
30
|
+
this.filtersToDelete.push(event.detail);
|
23
31
|
}
|
24
32
|
getCustomMessage(key, params) {
|
25
33
|
var _a;
|
@@ -87,6 +95,12 @@ const SnkFilterModal$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElem
|
|
87
95
|
if (this.isValidCustomFilter(filterPersonalized)) {
|
88
96
|
this.applyFilters(this.filters);
|
89
97
|
}
|
98
|
+
if (this.filtersToDelete.length > 0) {
|
99
|
+
this.filtersToDelete.forEach(filter => {
|
100
|
+
this.deletePersonalizedFilter(filter, this.configName);
|
101
|
+
});
|
102
|
+
this.filtersToDelete = [];
|
103
|
+
}
|
90
104
|
}
|
91
105
|
isValidCustomFilter(filterPersonalized) {
|
92
106
|
const isValid = PersonalizedFilterUtils.validateVariableValues(filterPersonalized);
|
@@ -232,8 +246,10 @@ const SnkFilterModal$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElem
|
|
232
246
|
"applyFilters": [16],
|
233
247
|
"closeModal": [16],
|
234
248
|
"addPersonalizedFilter": [16],
|
235
|
-
"editPersonalizedFilter": [16]
|
236
|
-
|
249
|
+
"editPersonalizedFilter": [16],
|
250
|
+
"deletePersonalizedFilter": [16],
|
251
|
+
"filtersToDelete": [16]
|
252
|
+
}, [[0, "deleteFilter", "deletePersonalizedFilterListener"]]]);
|
237
253
|
function defineCustomElement$1() {
|
238
254
|
if (typeof customElements === "undefined") {
|
239
255
|
return;
|