@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.
Files changed (119) hide show
  1. package/dist/cjs/{ConfigStorage-0d507a8f.js → ConfigStorage-8009ecb2.js} +1 -1
  2. package/dist/cjs/{SnkFormConfigManager-467907f6.js → SnkFormConfigManager-7d850fbc.js} +1 -1
  3. package/dist/cjs/{dataunit-fetcher-de65b9fc.js → dataunit-fetcher-bd4c52da.js} +11 -6
  4. package/dist/cjs/{index-0e663819.js → index-0922807b.js} +1 -0
  5. package/dist/cjs/loader.cjs.js +1 -1
  6. package/dist/cjs/sankhyablocks.cjs.js +1 -1
  7. package/dist/cjs/snk-actions-button_2.cjs.entry.js +2 -2
  8. package/dist/cjs/snk-application.cjs.entry.js +63 -3
  9. package/dist/cjs/snk-attach.cjs.entry.js +11 -4
  10. package/dist/cjs/snk-crud.cjs.entry.js +3 -3
  11. package/dist/cjs/snk-data-exporter.cjs.entry.js +1 -1
  12. package/dist/cjs/snk-detail-view.cjs.entry.js +6 -6
  13. package/dist/cjs/snk-filter-bar.cjs.entry.js +28 -3
  14. package/dist/cjs/snk-filter-modal-item.cjs.entry.js +1 -2
  15. package/dist/cjs/snk-filter-modal.cjs.entry.js +14 -0
  16. package/dist/cjs/snk-form.cjs.entry.js +2 -2
  17. package/dist/cjs/snk-grid-config.cjs.entry.js +1 -1
  18. package/dist/cjs/snk-grid.cjs.entry.js +41 -18
  19. package/dist/cjs/{snk-guides-viewer-7e87ffce.js → snk-guides-viewer-cb176c4d.js} +5 -5
  20. package/dist/cjs/snk-guides-viewer.cjs.entry.js +6 -6
  21. package/dist/cjs/snk-personalized-filter.cjs.entry.js +2 -2
  22. package/dist/cjs/snk-simple-crud.cjs.entry.js +3 -3
  23. package/dist/cjs/snk-taskbar.cjs.entry.js +2 -2
  24. package/dist/cjs/{taskbar-elements-b8c428a9.js → taskbar-elements-01b85b99.js} +1 -1
  25. package/dist/collection/components/snk-application/snk-application.js +76 -13
  26. package/dist/collection/components/snk-attach/snk-attach.js +8 -1
  27. package/dist/collection/components/snk-crud/snk-crud.js +1 -1
  28. package/dist/collection/components/snk-crud/subcomponents/snk-guides-viewer.js +2 -2
  29. package/dist/collection/components/snk-filter-bar/filter-modal/snk-filter-modal.js +65 -1
  30. package/dist/collection/components/snk-filter-bar/filter-modal/subcomponents/snk-filter-modal-item.js +0 -1
  31. package/dist/collection/components/snk-filter-bar/snk-filter-bar.js +57 -1
  32. package/dist/collection/components/snk-filter-bar/utils/SnkFilterModalFactory.js +3 -1
  33. package/dist/collection/components/snk-grid/snk-grid.js +39 -16
  34. package/dist/collection/components/snk-personalized-filter/snk-personalized-filter.js +1 -1
  35. package/dist/collection/components/snk-taskbar/snk-taskbar.js +1 -1
  36. package/dist/collection/lib/@types/index.js +1 -0
  37. package/dist/collection/lib/http/data-fetcher/fetchers/data-unit/loadstrategy/DatasetStrategy.js +11 -6
  38. package/dist/collection/lib/http/data-fetcher/fetchers/filter-bar-config-fetcher.js +1 -1
  39. package/dist/components/ConfigStorage.js +1 -1
  40. package/dist/components/dataunit-fetcher.js +11 -6
  41. package/dist/components/index2.js +1 -0
  42. package/dist/components/snk-application2.js +62 -2
  43. package/dist/components/snk-attach2.js +8 -1
  44. package/dist/components/snk-detail-view2.js +1 -1
  45. package/dist/components/snk-filter-bar2.js +29 -3
  46. package/dist/components/snk-filter-modal-item2.js +0 -1
  47. package/dist/components/snk-filter-modal.js +18 -2
  48. package/dist/components/snk-grid2.js +38 -15
  49. package/dist/components/snk-personalized-filter2.js +1 -1
  50. package/dist/esm/{ConfigStorage-379a9cba.js → ConfigStorage-1244b8b0.js} +1 -1
  51. package/dist/esm/{SnkFormConfigManager-587e9030.js → SnkFormConfigManager-9be0e7d4.js} +1 -1
  52. package/dist/esm/{dataunit-fetcher-e218c6d2.js → dataunit-fetcher-65714f21.js} +11 -6
  53. package/dist/esm/{index-1564817d.js → index-0ece87a6.js} +1 -0
  54. package/dist/esm/loader.js +1 -1
  55. package/dist/esm/sankhyablocks.js +1 -1
  56. package/dist/esm/snk-actions-button_2.entry.js +2 -2
  57. package/dist/esm/snk-application.entry.js +64 -4
  58. package/dist/esm/snk-attach.entry.js +11 -4
  59. package/dist/esm/snk-crud.entry.js +3 -3
  60. package/dist/esm/snk-data-exporter.entry.js +1 -1
  61. package/dist/esm/snk-detail-view.entry.js +6 -6
  62. package/dist/esm/snk-filter-bar.entry.js +28 -3
  63. package/dist/esm/snk-filter-modal-item.entry.js +1 -2
  64. package/dist/esm/snk-filter-modal.entry.js +14 -0
  65. package/dist/esm/snk-form.entry.js +2 -2
  66. package/dist/esm/snk-grid-config.entry.js +1 -1
  67. package/dist/esm/snk-grid.entry.js +41 -18
  68. package/dist/esm/{snk-guides-viewer-2134aba2.js → snk-guides-viewer-eeb8f354.js} +5 -5
  69. package/dist/esm/snk-guides-viewer.entry.js +6 -6
  70. package/dist/esm/snk-personalized-filter.entry.js +2 -2
  71. package/dist/esm/snk-simple-crud.entry.js +3 -3
  72. package/dist/esm/snk-taskbar.entry.js +2 -2
  73. package/dist/esm/{taskbar-elements-26c981af.js → taskbar-elements-d4d0b424.js} +1 -1
  74. package/dist/sankhyablocks/{p-35fe6e61.entry.js → p-0874adb5.entry.js} +1 -1
  75. package/dist/sankhyablocks/{p-aaa1438e.entry.js → p-11081798.entry.js} +1 -1
  76. package/dist/sankhyablocks/{p-ba627e85.js → p-29804fc5.js} +1 -1
  77. package/dist/sankhyablocks/p-3520c088.entry.js +1 -0
  78. package/dist/sankhyablocks/p-374d03f6.js +1 -0
  79. package/dist/sankhyablocks/p-38289a55.js +1 -0
  80. package/dist/sankhyablocks/{p-4396d1a6.js → p-585294ee.js} +1 -1
  81. package/dist/sankhyablocks/{p-953346b9.entry.js → p-69efa80d.entry.js} +1 -1
  82. package/dist/sankhyablocks/{p-a49b1019.entry.js → p-6d20d38c.entry.js} +1 -1
  83. package/dist/sankhyablocks/{p-2028633c.js → p-776ee8e3.js} +1 -1
  84. package/dist/sankhyablocks/p-7d51d949.entry.js +11 -0
  85. package/dist/sankhyablocks/p-809f367d.entry.js +1 -0
  86. package/dist/sankhyablocks/{p-0cd2e986.entry.js → p-95a3778f.entry.js} +1 -1
  87. package/dist/sankhyablocks/p-a9e5b094.entry.js +1 -0
  88. package/dist/sankhyablocks/p-b146a9f0.entry.js +1 -0
  89. package/dist/sankhyablocks/p-bedb8ad6.entry.js +1 -0
  90. package/dist/sankhyablocks/{p-a7923832.entry.js → p-ca4d337a.entry.js} +1 -1
  91. package/dist/sankhyablocks/{p-ca8e7da0.entry.js → p-cdd66657.entry.js} +1 -1
  92. package/dist/sankhyablocks/p-d1f5bc50.js +1 -0
  93. package/dist/sankhyablocks/p-f2056f66.entry.js +1 -0
  94. package/dist/sankhyablocks/p-f514913b.entry.js +1 -0
  95. package/dist/sankhyablocks/{p-729f5f5b.entry.js → p-fd8814b9.entry.js} +1 -1
  96. package/dist/sankhyablocks/sankhyablocks.esm.js +1 -1
  97. package/dist/types/components/snk-actions-button/subcomponents/snk-actions-form.d.ts +1 -1
  98. package/dist/types/components/snk-application/snk-application.d.ts +5 -2
  99. package/dist/types/components/snk-attach/snk-attach.d.ts +1 -0
  100. package/dist/types/components/snk-filter-bar/filter-modal/snk-filter-modal.d.ts +14 -1
  101. package/dist/types/components/snk-filter-bar/snk-filter-bar.d.ts +11 -0
  102. package/dist/types/components/snk-filter-bar/utils/SnkFilterModalFactory.d.ts +5 -1
  103. package/dist/types/components/snk-grid/snk-grid.d.ts +1 -0
  104. package/dist/types/components/snk-taskbar/subcomponents/field-search.d.ts +1 -0
  105. package/dist/types/components.d.ts +34 -11
  106. package/dist/types/lib/@types/index.d.ts +2 -1
  107. package/dist/types/lib/http/data-fetcher/fetchers/data-unit/loadstrategy/DatasetStrategy.d.ts +1 -0
  108. package/package.json +3 -3
  109. package/dist/sankhyablocks/p-145c4434.js +0 -1
  110. package/dist/sankhyablocks/p-4b0ea83f.entry.js +0 -1
  111. package/dist/sankhyablocks/p-5534e08c.js +0 -1
  112. package/dist/sankhyablocks/p-58218eb7.entry.js +0 -1
  113. package/dist/sankhyablocks/p-78777ae0.entry.js +0 -1
  114. package/dist/sankhyablocks/p-7915c452.entry.js +0 -1
  115. package/dist/sankhyablocks/p-a037f5b4.entry.js +0 -1
  116. package/dist/sankhyablocks/p-b52c2175.js +0 -1
  117. package/dist/sankhyablocks/p-bf9b7149.entry.js +0 -11
  118. package/dist/sankhyablocks/p-c259545b.entry.js +0 -1
  119. 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
- const hasSelectedRecord = this._dataState && !!((_a = this._dataState.selectionInfo) === null || _a === void 0 ? void 0 : _a.length);
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 sufix = this.presentationMode === PresentationMode.SECONDARY ? ".secondary" : "";
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
- return this.presentationMode === PresentationMode.PRIMARY ? "INSERT" : "";
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) {
@@ -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 this.pesquisaFetcher.loadSearchOptions(entity, argument, criteria, searchOptions);
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
- this.loadAttachmentDataUnit();
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;