@sankhyalabs/sankhyablocks 9.2.0-ms.14 → 9.2.0-ms.15

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 (102) hide show
  1. package/dist/cjs/{ClientSideExporterProvider-994f6e26.js → ClientSideExporterProvider-bb0b2273.js} +8 -5
  2. package/dist/cjs/{ConfigStorage-1931defc.js → ConfigStorage-0ebc800f.js} +2 -2
  3. package/dist/cjs/{DataFetcher-ad9fb3bb.js → DataFetcher-602cdc72.js} +1 -1
  4. package/dist/cjs/{ISave-18ffb73e.js → ISave-18205d86.js} +1 -1
  5. package/dist/cjs/{SnkFormConfigManager-65e5288e.js → SnkFormConfigManager-4b651537.js} +2 -2
  6. package/dist/cjs/{auth-fetcher-afbe69ab.js → auth-fetcher-82317d4d.js} +1 -1
  7. package/dist/cjs/{dataunit-fetcher-c7253b02.js → dataunit-fetcher-93077a2f.js} +1 -1
  8. package/dist/cjs/{form-config-fetcher-f6e66d64.js → form-config-fetcher-05d210e7.js} +1 -1
  9. package/dist/cjs/{index-0ad2baeb.js → index-13d05f03.js} +21 -5
  10. package/dist/cjs/pesquisa-grid_2.cjs.entry.js +4 -4
  11. package/dist/cjs/snk-actions-button_8.cjs.entry.js +5 -5
  12. package/dist/cjs/snk-application.cjs.entry.js +6 -6
  13. package/dist/cjs/snk-attach.cjs.entry.js +7 -7
  14. package/dist/cjs/snk-crud.cjs.entry.js +7 -7
  15. package/dist/cjs/snk-data-exporter.cjs.entry.js +5 -5
  16. package/dist/cjs/{snk-data-unit-72715da9.js → snk-data-unit-28d629e4.js} +2 -2
  17. package/dist/cjs/snk-data-unit.cjs.entry.js +3 -3
  18. package/dist/cjs/snk-detail-view.cjs.entry.js +9 -9
  19. package/dist/cjs/snk-expression-group_2.cjs.entry.js +1 -1
  20. package/dist/cjs/snk-filter-bar_4.cjs.entry.js +3 -3
  21. package/dist/cjs/snk-filter-modal-item.cjs.entry.js +3 -3
  22. package/dist/cjs/snk-form_2.cjs.entry.js +4 -4
  23. package/dist/cjs/snk-grid.cjs.entry.js +75 -48
  24. package/dist/cjs/{snk-guides-viewer-c23ed218.js → snk-guides-viewer-73d40f42.js} +6 -6
  25. package/dist/cjs/snk-guides-viewer.cjs.entry.js +9 -9
  26. package/dist/cjs/snk-personalized-filter.cjs.entry.js +4 -4
  27. package/dist/cjs/snk-pesquisa.cjs.entry.js +4 -4
  28. package/dist/cjs/snk-simple-crud.cjs.entry.js +9 -9
  29. package/dist/cjs/snk-taskbar.cjs.entry.js +2 -2
  30. package/dist/cjs/{taskbar-elements-3b74cd21.js → taskbar-elements-fb5d1e08.js} +1 -1
  31. package/dist/collection/components/snk-data-exporter/providers/ClientSideExporterProvider.js +4 -1
  32. package/dist/collection/components/snk-grid/snk-grid.js +70 -43
  33. package/dist/components/ContinuousInsertUtils.js +4 -1
  34. package/dist/components/DataFetcher.js +1 -1
  35. package/dist/components/index2.js +21 -5
  36. package/dist/components/snk-grid2.js +67 -40
  37. package/dist/esm/{ClientSideExporterProvider-7c2781f4.js → ClientSideExporterProvider-21a99af1.js} +8 -5
  38. package/dist/esm/{ConfigStorage-b5a1dba3.js → ConfigStorage-fc4e3a42.js} +2 -2
  39. package/dist/esm/{DataFetcher-6f6de657.js → DataFetcher-01ce1a4f.js} +1 -1
  40. package/dist/esm/{ISave-7ecdca20.js → ISave-d36bade4.js} +1 -1
  41. package/dist/esm/{SnkFormConfigManager-34fc1dc7.js → SnkFormConfigManager-71dae34e.js} +2 -2
  42. package/dist/esm/{auth-fetcher-7332a9a9.js → auth-fetcher-2e565c35.js} +1 -1
  43. package/dist/esm/{dataunit-fetcher-f21cbad0.js → dataunit-fetcher-14ba162b.js} +1 -1
  44. package/dist/esm/{form-config-fetcher-6ab4e805.js → form-config-fetcher-a1ccc944.js} +1 -1
  45. package/dist/esm/{index-b72af127.js → index-446f9341.js} +21 -5
  46. package/dist/esm/pesquisa-grid_2.entry.js +4 -4
  47. package/dist/esm/snk-actions-button_8.entry.js +5 -5
  48. package/dist/esm/snk-application.entry.js +6 -6
  49. package/dist/esm/snk-attach.entry.js +7 -7
  50. package/dist/esm/snk-crud.entry.js +7 -7
  51. package/dist/esm/snk-data-exporter.entry.js +5 -5
  52. package/dist/esm/{snk-data-unit-d31619fb.js → snk-data-unit-3977725e.js} +2 -2
  53. package/dist/esm/snk-data-unit.entry.js +3 -3
  54. package/dist/esm/snk-detail-view.entry.js +9 -9
  55. package/dist/esm/snk-expression-group_2.entry.js +1 -1
  56. package/dist/esm/snk-filter-bar_4.entry.js +3 -3
  57. package/dist/esm/snk-filter-modal-item.entry.js +3 -3
  58. package/dist/esm/snk-form_2.entry.js +4 -4
  59. package/dist/esm/snk-grid.entry.js +75 -48
  60. package/dist/esm/{snk-guides-viewer-fbfece85.js → snk-guides-viewer-f800c9aa.js} +6 -6
  61. package/dist/esm/snk-guides-viewer.entry.js +9 -9
  62. package/dist/esm/snk-personalized-filter.entry.js +4 -4
  63. package/dist/esm/snk-pesquisa.entry.js +4 -4
  64. package/dist/esm/snk-simple-crud.entry.js +9 -9
  65. package/dist/esm/snk-taskbar.entry.js +2 -2
  66. package/dist/esm/{taskbar-elements-171476d4.js → taskbar-elements-faaf5d8f.js} +1 -1
  67. package/dist/sankhyablocks/{p-4e63ffed.entry.js → p-082e7ba8.entry.js} +1 -1
  68. package/dist/sankhyablocks/{p-8b601472.js → p-2b2c2718.js} +1 -1
  69. package/dist/sankhyablocks/p-3143bb44.entry.js +1 -0
  70. package/dist/sankhyablocks/{p-eb0616d3.entry.js → p-34222890.entry.js} +1 -1
  71. package/dist/sankhyablocks/{p-16fc4acd.js → p-353b4a74.js} +1 -1
  72. package/dist/sankhyablocks/{p-3dba3468.js → p-3cdfd7fb.js} +1 -1
  73. package/dist/sankhyablocks/{p-b49281be.entry.js → p-41e5a485.entry.js} +1 -1
  74. package/dist/sankhyablocks/{p-c6331595.js → p-51209229.js} +1 -1
  75. package/dist/sankhyablocks/p-55798617.js +1 -0
  76. package/dist/sankhyablocks/{p-ba4979b4.js → p-7535d592.js} +1 -1
  77. package/dist/sankhyablocks/{p-f39b0ebe.entry.js → p-7a1d3cb6.entry.js} +1 -1
  78. package/dist/sankhyablocks/{p-eacff4b7.entry.js → p-7b97f9af.entry.js} +1 -1
  79. package/dist/sankhyablocks/{p-72c8c847.entry.js → p-95c71f5e.entry.js} +1 -1
  80. package/dist/sankhyablocks/{p-69b815ab.entry.js → p-a60028f1.entry.js} +1 -1
  81. package/dist/sankhyablocks/{p-ad2ae575.entry.js → p-aba06047.entry.js} +1 -1
  82. package/dist/sankhyablocks/{p-1210500e.js → p-ae2ebab7.js} +1 -1
  83. package/dist/sankhyablocks/p-b21aa190.entry.js +1 -0
  84. package/dist/sankhyablocks/{p-d377aa7a.entry.js → p-b6b42620.entry.js} +1 -1
  85. package/dist/sankhyablocks/{p-7de79adf.js → p-b987e15d.js} +1 -1
  86. package/dist/sankhyablocks/{p-6a015ba2.js → p-c3bab5f4.js} +1 -1
  87. package/dist/sankhyablocks/{p-735a1175.entry.js → p-c3dbf441.entry.js} +1 -1
  88. package/dist/sankhyablocks/{p-a2e8c7a7.entry.js → p-c3eea705.entry.js} +1 -1
  89. package/dist/sankhyablocks/{p-cf7063a4.entry.js → p-c8932b14.entry.js} +1 -1
  90. package/dist/sankhyablocks/{p-c9e6d720.js → p-dc8bb41f.js} +1 -1
  91. package/dist/sankhyablocks/{p-5e282b33.entry.js → p-dde9da7a.entry.js} +1 -1
  92. package/dist/sankhyablocks/{p-6fa3d474.entry.js → p-dfbe4d7f.entry.js} +1 -1
  93. package/dist/sankhyablocks/{p-4872dc3a.entry.js → p-e5571279.entry.js} +1 -1
  94. package/dist/sankhyablocks/{p-b35574b5.js → p-e63cc25f.js} +1 -1
  95. package/dist/sankhyablocks/{p-665dd170.entry.js → p-f4bf0517.entry.js} +1 -1
  96. package/dist/sankhyablocks/sankhyablocks.esm.js +1 -1
  97. package/dist/types/components/snk-grid/snk-grid.d.ts +17 -15
  98. package/package.json +1 -1
  99. package/dist/sankhyablocks/p-5c7af8a9.entry.js +0 -1
  100. package/dist/sankhyablocks/p-82729ec0.entry.js +0 -1
  101. package/dist/sankhyablocks/p-a349689a.js +0 -1
  102. /package/dist/sankhyablocks/{p-0dac8fef.js → p-65517fcf.js} +0 -0
@@ -1,10 +1,10 @@
1
- import { h, Fragment, } from '@stencil/core';
2
- import { Action as DUAction, ApplicationContext, ElementIDUtils, StringUtils, KeyboardManager } from '@sankhyalabs/core';
1
+ import { Fragment, h, } from '@stencil/core';
2
+ import { Action as DUAction, ApplicationContext, ElementIDUtils, KeyboardManager, StringUtils, } from '@sankhyalabs/core';
3
3
  import { TaskbarElement } from '../snk-taskbar/elements/taskbar-elements';
4
4
  import { ConfigStorage } from '../../lib/configs/ConfigStorage';
5
5
  import { ExporterStrategy, PresentationMode } from '../../lib/@types';
6
6
  import TaskbarProcessor from '../snk-taskbar/processor/taskbar-processor';
7
- import store from "../../lib/store";
7
+ import store from '../../lib/store';
8
8
  import SnkMultiSelectionListDataSource from './filtercolumn/SnkMultiSelectionListDataSource';
9
9
  import { SelectionMode } from '@sankhyalabs/core/dist/dataunit/DataUnit';
10
10
  import { CrudUtils } from '../../lib';
@@ -19,23 +19,23 @@ export class SnkGrid {
19
19
  this._customRenders = new Map();
20
20
  this._keyboardManager = new KeyboardManager();
21
21
  this._topTaskbarProcessor = new TaskbarProcessor({
22
- "snkGridTopTaskbar.regular": ["FORM_MODE", "CONFIGURATOR", "INSERT"],
23
- "snkGridTopTaskbar.regular.secondary": ["FORM_MODE", "CONFIGURATOR", "INSERT"],
24
- "snkGridTopTaskbar.regular.singleTaskbar": [],
25
- "snkGridTopTaskbar.finish_edition": ["CANCEL", "SAVE", this.handleAddFormMode()],
26
- "snkGridTopTaskbar.finish_edition.secondary": [],
27
- "snkGridTopTaskbar.finish_edition.singleTaskbar": [],
22
+ 'snkGridTopTaskbar.regular': ['FORM_MODE', 'CONFIGURATOR', 'INSERT'],
23
+ 'snkGridTopTaskbar.regular.secondary': ['FORM_MODE', 'CONFIGURATOR', 'INSERT'],
24
+ 'snkGridTopTaskbar.regular.singleTaskbar': [],
25
+ 'snkGridTopTaskbar.finish_edition': ['CANCEL', 'SAVE', this.handleAddFormMode()],
26
+ 'snkGridTopTaskbar.finish_edition.secondary': [],
27
+ 'snkGridTopTaskbar.finish_edition.singleTaskbar': [],
28
28
  });
29
29
  this._headerTaskbarProcessor = new TaskbarProcessor({
30
- "snkGridHeaderTaskbar.unselected": ["REFRESH", "DATA_EXPORTER", "ACTIONS_BUTTON", "MORE_OPTIONS"],
31
- "snkGridHeaderTaskbar.selected": this.getGridHeaderSelectedBtns(),
32
- "snkGridHeaderTaskbar.detail.unselected": ["REFRESH", "MORE_OPTIONS"],
33
- "snkGridHeaderTaskbar.detail.selected": ["UPDATE", "ATTACH", "CLONE", "REMOVE", "MORE_OPTIONS", "DIVIDER", "REFRESH"],
34
- "snkGridHeaderTaskbar.singleTaskbar.unselected": ["INSERT", "FORM_MODE", "CONFIGURATOR", "REFRESH", "DATA_EXPORTER", "ACTIONS_BUTTON", "MORE_OPTIONS"],
35
- "snkGridHeaderTaskbar.singleTaskbar.selected": ["UPDATE", "CLONE", "REMOVE", "MORE_OPTIONS", "DIVIDER", "ATTACH", "FORM_MODE", "CONFIGURATOR", "REFRESH", "DATA_EXPORTER", "ACTIONS_BUTTON"],
36
- "snkGridHeaderTaskbar.singleTaskbar.detail.unselected": ["INSERT", "FORM_MODE", "CONFIGURATOR", "REFRESH", "MORE_OPTIONS"],
37
- "snkGridHeaderTaskbar.singleTaskbar.detail.selected": ["UPDATE", "ATTACH", "CLONE", "REMOVE", "MORE_OPTIONS", "DIVIDER", "FORM_MODE", "CONFIGURATOR", "REFRESH"],
38
- "snkGridHeaderTaskbar.singleTaskbar.finish_edition": ["CANCEL", "SAVE", this.handleAddFormMode()]
30
+ 'snkGridHeaderTaskbar.unselected': ['REFRESH', 'DATA_EXPORTER', 'ACTIONS_BUTTON', 'MORE_OPTIONS'],
31
+ 'snkGridHeaderTaskbar.selected': this.getGridHeaderSelectedBtns(),
32
+ 'snkGridHeaderTaskbar.detail.unselected': ['REFRESH', 'MORE_OPTIONS'],
33
+ 'snkGridHeaderTaskbar.detail.selected': ['UPDATE', 'ATTACH', 'CLONE', 'REMOVE', 'MORE_OPTIONS', 'DIVIDER', 'REFRESH'],
34
+ 'snkGridHeaderTaskbar.singleTaskbar.unselected': ['INSERT', 'FORM_MODE', 'CONFIGURATOR', 'REFRESH', 'DATA_EXPORTER', 'ACTIONS_BUTTON', 'MORE_OPTIONS'],
35
+ 'snkGridHeaderTaskbar.singleTaskbar.selected': ['UPDATE', 'CLONE', 'REMOVE', 'MORE_OPTIONS', 'DIVIDER', 'ATTACH', 'FORM_MODE', 'CONFIGURATOR', 'REFRESH', 'DATA_EXPORTER', 'ACTIONS_BUTTON'],
36
+ 'snkGridHeaderTaskbar.singleTaskbar.detail.unselected': ['INSERT', 'FORM_MODE', 'CONFIGURATOR', 'REFRESH', 'MORE_OPTIONS'],
37
+ 'snkGridHeaderTaskbar.singleTaskbar.detail.selected': ['UPDATE', 'ATTACH', 'CLONE', 'REMOVE', 'MORE_OPTIONS', 'DIVIDER', 'FORM_MODE', 'CONFIGURATOR', 'REFRESH'],
38
+ 'snkGridHeaderTaskbar.singleTaskbar.finish_edition': ['CANCEL', 'SAVE', this.handleAddFormMode()],
39
39
  });
40
40
  this.dataUnitInterceptor = {
41
41
  interceptAction: async (action) => {
@@ -43,7 +43,7 @@ export class SnkGrid {
43
43
  return await this.interceptMetadataLoaded(action);
44
44
  }
45
45
  return action;
46
- }
46
+ },
47
47
  };
48
48
  this._dataUnit = undefined;
49
49
  this._dataState = undefined;
@@ -91,7 +91,7 @@ export class SnkGrid {
91
91
  const btns = [
92
92
  TaskbarElement.UPDATE, TaskbarElement.CLONE, TaskbarElement.REMOVE,
93
93
  TaskbarElement.MORE_OPTIONS, TaskbarElement.DIVIDER, TaskbarElement.ATTACH, TaskbarElement.FORM_MODE,
94
- TaskbarElement.CONFIGURATOR, TaskbarElement.REFRESH, TaskbarElement.DATA_EXPORTER, TaskbarElement.ACTIONS_BUTTON
94
+ TaskbarElement.CONFIGURATOR, TaskbarElement.REFRESH, TaskbarElement.DATA_EXPORTER, TaskbarElement.ACTIONS_BUTTON,
95
95
  ];
96
96
  if (this.multipleEditionEnabled)
97
97
  btns.unshift(TaskbarElement.UPDATE_MULTIPLE);
@@ -255,7 +255,7 @@ export class SnkGrid {
255
255
  this.loadConfig();
256
256
  }
257
257
  handleAddFormMode() {
258
- return this.enableGridInsert ? TaskbarElement.FORM_MODE : "";
258
+ return this.enableGridInsert ? TaskbarElement.FORM_MODE : '';
259
259
  }
260
260
  openGridConfig() {
261
261
  this._grid.getColumnsState()
@@ -299,6 +299,17 @@ export class SnkGrid {
299
299
  ConfigStorage.addGridLegacyConfig(this.configName, this.gridLegacyConfigName);
300
300
  }
301
301
  }
302
+ hasCalculatedFields(columnNames) {
303
+ let hasCalculatedFields = false;
304
+ columnNames.forEach(name => {
305
+ var _a;
306
+ const field = this._dataUnit.getField(name);
307
+ if (((_a = field.properties) === null || _a === void 0 ? void 0 : _a.calculated) === 'true') {
308
+ hasCalculatedFields = true;
309
+ }
310
+ });
311
+ return hasCalculatedFields;
312
+ }
302
313
  gridConfigChangeHandler(evt) {
303
314
  const config = this.normalizeGridConfig(evt.detail);
304
315
  ConfigStorage.saveGridConfig(config, this.configName, this.resourceID);
@@ -314,11 +325,25 @@ export class SnkGrid {
314
325
  });
315
326
  evt.stopPropagation();
316
327
  }
328
+ async hasToForceClientSideExporter() {
329
+ if (!this._grid) {
330
+ return false;
331
+ }
332
+ const filters = await this._grid.getAppliedColumnFilters();
333
+ const columnNames = filters.map(filter => filter.name.replace('FILTRO_COLUNA_', ''));
334
+ return this.hasCalculatedFields(columnNames);
335
+ }
317
336
  async dataExporterProviderStore() {
318
- const dataExporterProvider = this.strategyExporter === ExporterStrategy.SERVER_SIDE
319
- ? new ServerSideExporterProvider(this._dataUnit, this._grid)
320
- : new ClientSideExporterProvider(this._dataUnit, this._grid);
321
- store.set("exporterProviders", Object.assign(Object.assign({}, store.get("exporterProviders")), { [this.configName]: dataExporterProvider }));
337
+ /**
338
+ * O ServerSideExporterProvider do SankhyaOm não suporta a filtragem de campos calculados.
339
+ * Por esse motivo, precisamos verificar os filtros aplicados no momento e recriar o dataExporterProvider conforme necessário.
340
+ * Se houver campos calculados, forçamos o uso do clientSide, caso contrário é seguido o fluxo padrão.
341
+ */
342
+ const forceClientSide = await this.hasToForceClientSideExporter();
343
+ const dataExporterProvider = (forceClientSide || this.strategyExporter === ExporterStrategy.CLIENT_SIDE)
344
+ ? new ClientSideExporterProvider(this._dataUnit, this._grid)
345
+ : new ServerSideExporterProvider(this._dataUnit, this._grid);
346
+ store.set('exporterProviders', Object.assign(Object.assign({}, store.get('exporterProviders')), { [this.configName]: dataExporterProvider }));
322
347
  }
323
348
  addElementID() {
324
349
  const dataInfo = { dataUnit: this._dataUnit };
@@ -367,15 +392,15 @@ export class SnkGrid {
367
392
  }
368
393
  }
369
394
  componentWillLoad() {
370
- this._application = ApplicationContext.getContextValue("__SNK__APPLICATION__");
395
+ this._application = ApplicationContext.getContextValue('__SNK__APPLICATION__');
371
396
  //TODO: substituir pelo metodo nativo closest
372
397
  let parent = this._element.parentElement;
373
398
  while (parent) {
374
- if (parent.tagName.toUpperCase() === "SNK-DATA-UNIT") {
399
+ if (parent.tagName.toUpperCase() === 'SNK-DATA-UNIT') {
375
400
  this._snkDataUnit = parent;
376
401
  this._dataUnit = this._snkDataUnit.dataUnit;
377
402
  if (!this._dataUnit) {
378
- this._snkDataUnit.addEventListener("dataUnitReady", (evt) => {
403
+ this._snkDataUnit.addEventListener('dataUnitReady', (evt) => {
379
404
  this._dataUnit = evt.detail;
380
405
  this.finishLoading();
381
406
  });
@@ -385,8 +410,8 @@ export class SnkGrid {
385
410
  }
386
411
  if (!this.messagesBuilder)
387
412
  this.messagesBuilder = this._snkDataUnit.messagesBuilder;
388
- this._snkDataUnit.addEventListener("dataStateChange", this.handleDataStateChange.bind(this));
389
- this._snkDataUnit.addEventListener("cancelEdition", () => {
413
+ this._snkDataUnit.addEventListener('dataStateChange', this.handleDataStateChange.bind(this));
414
+ this._snkDataUnit.addEventListener('cancelEdition', () => {
390
415
  var _a;
391
416
  if ((_a = this._dataState) === null || _a === void 0 ? void 0 : _a.recordsIsEmpty) {
392
417
  this._dataUnit.clearSelection();
@@ -449,23 +474,23 @@ export class SnkGrid {
449
474
  var _a, _b;
450
475
  const hasSelectedRecord = this._dataState && !!((_a = this._dataState.selectionInfo) === null || _a === void 0 ? void 0 : _a.length);
451
476
  const taskbarIdPrefixLookup = {
452
- primary: this.isDetail ? "snkGridHeaderTaskbar.detail" : "snkGridHeaderTaskbar",
453
- secondary: this.isDetail ? "snkGridHeaderTaskbar.detail" : "snkGridHeaderTaskbar",
454
- singleTaskbar: this.isDetail ? "snkGridHeaderTaskbar.singleTaskbar.detail" : "snkGridHeaderTaskbar.singleTaskbar"
477
+ primary: this.isDetail ? 'snkGridHeaderTaskbar.detail' : 'snkGridHeaderTaskbar',
478
+ secondary: this.isDetail ? 'snkGridHeaderTaskbar.detail' : 'snkGridHeaderTaskbar',
479
+ singleTaskbar: this.isDetail ? 'snkGridHeaderTaskbar.singleTaskbar.detail' : 'snkGridHeaderTaskbar.singleTaskbar',
455
480
  };
456
481
  const taskbarIdPrefix = taskbarIdPrefixLookup[this.presentationMode];
457
482
  let headerTaskbarId = hasSelectedRecord ? `${taskbarIdPrefix}.selected` : `${taskbarIdPrefix}.unselected`;
458
483
  if (((_b = this._dataState) === null || _b === void 0 ? void 0 : _b.isDirty) && this.presentationMode === PresentationMode.SINGLE_TASKBAR) {
459
- headerTaskbarId = "snkGridHeaderTaskbar.singleTaskbar.finish_edition";
484
+ headerTaskbarId = 'snkGridHeaderTaskbar.singleTaskbar.finish_edition';
460
485
  }
461
486
  return headerTaskbarId;
462
487
  }
463
488
  getTopTaskBarId() {
464
489
  var _a;
465
490
  const suffixLookup = {
466
- primary: "",
467
- secondary: ".secondary",
468
- singleTaskbar: ".singleTaskbar"
491
+ primary: '',
492
+ secondary: '.secondary',
493
+ singleTaskbar: '.singleTaskbar',
469
494
  };
470
495
  const sufix = suffixLookup[this.presentationMode];
471
496
  if ((_a = this._dataState) === null || _a === void 0 ? void 0 : _a.isDirty) {
@@ -475,9 +500,9 @@ export class SnkGrid {
475
500
  }
476
501
  getPrimaryButton() {
477
502
  const primaryButtonLookup = {
478
- primary: "INSERT",
479
- secondary: "",
480
- singleTaskbar: "INSERT"
503
+ primary: 'INSERT',
504
+ secondary: '',
505
+ singleTaskbar: 'INSERT',
481
506
  };
482
507
  return primaryButtonLookup[this.presentationMode];
483
508
  }
@@ -517,10 +542,10 @@ export class SnkGrid {
517
542
  getActionsSettingsList() {
518
543
  const hardList = [{
519
544
  value: StringUtils.generateUUID(),
520
- label: this.messagesBuilder.getMessage("snkGrid.findColumn", {}),
545
+ label: this.messagesBuilder.getMessage('snkGrid.findColumn', {}),
521
546
  disableCloseOnSelect: true,
522
547
  eagerInitialize: true,
523
- itemBuilder: (_, item) => this.getColumnSearch(item)
548
+ itemBuilder: (_, item) => this.getColumnSearch(item),
524
549
  }];
525
550
  return hardList;
526
551
  }
@@ -548,7 +573,9 @@ export class SnkGrid {
548
573
  return undefined;
549
574
  }
550
575
  return (h("div", { class: "snk-grid__container ez-flex ez-flex--column ez-flex-item--auto ez-padding--large ez-box--no-outline", tabindex: "0" }, h("div", { class: "snk-grid__header ez-margin-bottom--extra-small" }, this._showSnkFilterBar &&
551
- h(Fragment, null, h("snk-filter-bar", { ref: (ref) => this._snkFilterBar = ref, title: this.filterBarTitle, dataUnit: this._dataUnit, "data-element-id": "gridFilter", class: "snk-grid__filter-bar ez-align--top", configName: this.configName, messagesBuilder: this.messagesBuilder, resourceID: this.resourceID, onConfigUpdated: evt => this.handleFilterConfigUpdated(evt.detail), disablePersonalizedFilter: this.disablePersonalizedFilter, filterBarLegacyConfigName: this.filterBarLegacyConfigName, autoLoad: this.autoLoad, enableLockManagerLoadingComp: this.enableLockManagerLoadingComp }), 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 ez-padding-top--extra-small", "data-element-id": "grid_top", key: "topTaskbar", configName: this.configName, dataUnit: this._dataUnit, messagesBuilder: this.messagesBuilder, buttons: this._topTaskbarProcessor.buttons, disabledButtons: this._topTaskbarProcessor.disabledButtons, customButtons: this._topTaskbarProcessor.customButtons, primaryButton: this.getPrimaryButton(), resourceID: this.resourceID, customContainerId: this.taskbarCustomContainerId, customSlotId: this.topTaskbarCustomSlotId, overflowStrategy: 'none', actionsSettingsList: this.getActionsSettingsList() }, h("slot", { name: this.topTaskbarCustomSlotId }))), h("ez-grid", { ref: ref => this._grid = ref, class: (this.presentationMode === PresentationMode.SECONDARY ? "snk-grid-container__without-shadow " : "") + "snk-grid__table", "data-element-id": "embedded", dataUnit: this._dataUnit, key: "grid-" + this._snkDataUnit.entityName, config: this._gridConfig, onConfigChange: (evt) => { this.gridConfigChangeHandler(evt); }, onEzDoubleClick: (evt) => this.gridDoubleClick.emit(evt.detail), statusResolver: this.statusResolver, multipleSelection: this.multipleSelection, columnfilterDataSource: this.columnFilterDataSource, selectionToastConfig: this.selectionToastConfig, useEnterLikeTab: this.useEnterLikeTab, recordsValidator: this.recordsValidator, canEdit: this.canEdit, autoFocus: this.autoFocus, enableGridInsert: this.enableGridInsert, enableContinuousInsert: this._enableContinuousInsert, enableLockManagerTaskbarClick: this.enableLockManagerTaskbarClick, enableLockManagerLoadingComp: this.enableLockManagerLoadingComp, outlineMode: this.outlineMode, useSearchColumn: this.useSearchColumn, suppressHorizontalScroll: this.suppressHorizontalScroll, paginationCounterMode: this.paginationCounterMode, suppressCheckboxColumn: this.suppressCheckboxColumn, suppressFilterColumn: this.suppressFilterColumn, compact: this.compact }, h("snk-taskbar", { id: 'teste', dataUnit: this._dataUnit, configName: this.configName, messagesBuilder: this.messagesBuilder, "data-element-id": "grid_left", buttons: this.getGridHeaderButtons(), presentationMode: this.presentationMode, disabledButtons: this._headerTaskbarProcessor.disabledButtons, customButtons: this._headerTaskbarProcessor.customButtons, slot: "leftButtons", actionsList: this.getActionsList(), primaryButton: this.getPrimaryButton(), resourceID: this.resourceID, customContainerId: this.taskbarCustomContainerId, customSlotId: this.gridHeaderCustomSlotId, actionsSettingsList: this.getActionsSettingsList() }, h("slot", { name: this.gridHeaderCustomSlotId }))), h("div", { class: "ez-col ez-col--sd-12 snk-grid-container__footer" }, h("slot", { name: "SnkGridFooter" })), h("ez-popup", { size: "medium", heightMode: "auto", useHeader: false, opened: this._popUpGridConfig, onEzClosePopup: () => this.closeGridConfig() }, h("snk-grid-config", { ref: ref => this._snkGridConfig = ref, config: this._gridConfig, "data-element-id": this._element.getAttribute(ElementIDUtils.DATA_ELEMENT_ID_ATTRIBUTE_NAME), selectedIndex: 0, configName: this.configName, onConfigChange: (evt) => this.modalConfigChangeHandler(evt), onConfigCancel: () => this.closeGridConfig(), resourceID: this.resourceID }))));
576
+ h(Fragment, null, h("snk-filter-bar", { ref: (ref) => this._snkFilterBar = ref, title: this.filterBarTitle, dataUnit: this._dataUnit, "data-element-id": "gridFilter", class: "snk-grid__filter-bar ez-align--top", configName: this.configName, messagesBuilder: this.messagesBuilder, resourceID: this.resourceID, onConfigUpdated: evt => this.handleFilterConfigUpdated(evt.detail), disablePersonalizedFilter: this.disablePersonalizedFilter, filterBarLegacyConfigName: this.filterBarLegacyConfigName, autoLoad: this.autoLoad, enableLockManagerLoadingComp: this.enableLockManagerLoadingComp }), 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 ez-padding-top--extra-small", "data-element-id": "grid_top", key: "topTaskbar", configName: this.configName, dataUnit: this._dataUnit, messagesBuilder: this.messagesBuilder, buttons: this._topTaskbarProcessor.buttons, disabledButtons: this._topTaskbarProcessor.disabledButtons, customButtons: this._topTaskbarProcessor.customButtons, primaryButton: this.getPrimaryButton(), resourceID: this.resourceID, customContainerId: this.taskbarCustomContainerId, customSlotId: this.topTaskbarCustomSlotId, overflowStrategy: 'none', actionsSettingsList: this.getActionsSettingsList() }, 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) => {
577
+ this.gridConfigChangeHandler(evt);
578
+ }, onEzColumnFilterChanged: async () => await this.dataExporterProviderStore(), onEzDoubleClick: (evt) => this.gridDoubleClick.emit(evt.detail), statusResolver: this.statusResolver, multipleSelection: this.multipleSelection, columnfilterDataSource: this.columnFilterDataSource, selectionToastConfig: this.selectionToastConfig, useEnterLikeTab: this.useEnterLikeTab, recordsValidator: this.recordsValidator, canEdit: this.canEdit, autoFocus: this.autoFocus, enableGridInsert: this.enableGridInsert, enableContinuousInsert: this._enableContinuousInsert, enableLockManagerTaskbarClick: this.enableLockManagerTaskbarClick, enableLockManagerLoadingComp: this.enableLockManagerLoadingComp, outlineMode: this.outlineMode, useSearchColumn: this.useSearchColumn, suppressHorizontalScroll: this.suppressHorizontalScroll, paginationCounterMode: this.paginationCounterMode, suppressCheckboxColumn: this.suppressCheckboxColumn, suppressFilterColumn: this.suppressFilterColumn, compact: this.compact }, h("snk-taskbar", { id: 'teste', dataUnit: this._dataUnit, configName: this.configName, messagesBuilder: this.messagesBuilder, "data-element-id": "grid_left", buttons: this.getGridHeaderButtons(), presentationMode: this.presentationMode, disabledButtons: this._headerTaskbarProcessor.disabledButtons, customButtons: this._headerTaskbarProcessor.customButtons, slot: "leftButtons", actionsList: this.getActionsList(), primaryButton: this.getPrimaryButton(), resourceID: this.resourceID, customContainerId: this.taskbarCustomContainerId, customSlotId: this.gridHeaderCustomSlotId, actionsSettingsList: this.getActionsSettingsList() }, h("slot", { name: this.gridHeaderCustomSlotId }))), h("div", { class: "ez-col ez-col--sd-12 snk-grid-container__footer" }, h("slot", { name: "SnkGridFooter" })), h("ez-popup", { size: "medium", heightMode: "auto", useHeader: false, opened: this._popUpGridConfig, onEzClosePopup: () => this.closeGridConfig() }, h("snk-grid-config", { ref: ref => this._snkGridConfig = ref, config: this._gridConfig, "data-element-id": this._element.getAttribute(ElementIDUtils.DATA_ELEMENT_ID_ATTRIBUTE_NAME), selectedIndex: 0, configName: this.configName, onConfigChange: (evt) => this.modalConfigChangeHandler(evt), onConfigCancel: () => this.closeGridConfig(), resourceID: this.resourceID }))));
552
579
  }
553
580
  static get is() { return "snk-grid"; }
554
581
  static get encapsulation() { return "scoped"; }
@@ -348,7 +348,10 @@ class ClientSideExporterProvider extends CommonsExporter {
348
348
  }
349
349
  resolveRecordsFromSelection() {
350
350
  const selectionInfo = this.dataUnit.getSelectionInfo();
351
- const selectionRecords = selectionInfo.isEmpty() || selectionInfo.isAllRecords() ? selectionInfo.getAllRecords() : selectionInfo.records;
351
+ if (selectionInfo.isEmpty()) {
352
+ return this.dataUnit.records;
353
+ }
354
+ const selectionRecords = selectionInfo.isAllRecords() ? selectionInfo.getAllRecords() : selectionInfo.records;
352
355
  return selectionRecords.length ? selectionRecords : this.dataUnit.records;
353
356
  }
354
357
  getHiddenOptions() {
@@ -5603,7 +5603,7 @@ var _public = {
5603
5603
  };
5604
5604
 
5605
5605
  /* eslint-env browser */
5606
- var browser = typeof self == 'object' ? self.FormData : window.FormData;
5606
+ var browser = typeof self === 'object' ? self.FormData : window.FormData;
5607
5607
 
5608
5608
  var defaultJsonSerializer = createCommonjsModule(function (module, exports) {
5609
5609
  Object.defineProperty(exports, "__esModule", { value: true });
@@ -76,6 +76,8 @@ const createObservableMap = (defaultState, shouldUpdate = (a, b) => a !== b) =>
76
76
  set: [],
77
77
  reset: [],
78
78
  };
79
+ // Track onChange listeners to enable removeListener functionality
80
+ const changeListeners = new Map();
79
81
  const reset = () => {
80
82
  // When resetting the state, the default state may be a function - unwrap it to invoke it.
81
83
  // otherwise, the state won't be properly reset
@@ -129,17 +131,21 @@ const createObservableMap = (defaultState, shouldUpdate = (a, b) => a !== b) =>
129
131
  };
130
132
  };
131
133
  const onChange = (propName, cb) => {
132
- const unSet = on('set', (key, newValue) => {
134
+ const setHandler = (key, newValue) => {
133
135
  if (key === propName) {
134
136
  cb(newValue);
135
137
  }
136
- });
137
- // We need to unwrap the defaultState because it might be a function.
138
- // Otherwise we might not be sending the right reset value.
139
- const unReset = on('reset', () => cb(unwrap(defaultState)[propName]));
138
+ };
139
+ const resetHandler = () => cb(unwrap(defaultState)[propName]);
140
+ // Register the handlers
141
+ const unSet = on('set', setHandler);
142
+ const unReset = on('reset', resetHandler);
143
+ // Track the relationship between the user callback and internal handlers
144
+ changeListeners.set(cb, { setHandler, resetHandler, propName });
140
145
  return () => {
141
146
  unSet();
142
147
  unReset();
148
+ changeListeners.delete(cb);
143
149
  };
144
150
  };
145
151
  const use = (...subscriptions) => {
@@ -164,6 +170,15 @@ const createObservableMap = (defaultState, shouldUpdate = (a, b) => a !== b) =>
164
170
  const oldValue = states.get(key);
165
171
  handlers.set.forEach((cb) => cb(key, oldValue, oldValue));
166
172
  };
173
+ const removeListener = (propName, listener) => {
174
+ const listenerInfo = changeListeners.get(listener);
175
+ if (listenerInfo && listenerInfo.propName === propName) {
176
+ // Remove the specific handlers that were created for this listener
177
+ removeFromArray(handlers.set, listenerInfo.setHandler);
178
+ removeFromArray(handlers.reset, listenerInfo.resetHandler);
179
+ changeListeners.delete(listener);
180
+ }
181
+ };
167
182
  return {
168
183
  state,
169
184
  get,
@@ -174,6 +189,7 @@ const createObservableMap = (defaultState, shouldUpdate = (a, b) => a !== b) =>
174
189
  dispose,
175
190
  reset,
176
191
  forceUpdate,
192
+ removeListener,
177
193
  };
178
194
  };
179
195
  const removeFromArray = (array, item) => {
@@ -101,23 +101,23 @@ const SnkGrid = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
101
101
  this._customRenders = new Map();
102
102
  this._keyboardManager = new KeyboardManager();
103
103
  this._topTaskbarProcessor = new TaskbarProcessor({
104
- "snkGridTopTaskbar.regular": ["FORM_MODE", "CONFIGURATOR", "INSERT"],
105
- "snkGridTopTaskbar.regular.secondary": ["FORM_MODE", "CONFIGURATOR", "INSERT"],
106
- "snkGridTopTaskbar.regular.singleTaskbar": [],
107
- "snkGridTopTaskbar.finish_edition": ["CANCEL", "SAVE", this.handleAddFormMode()],
108
- "snkGridTopTaskbar.finish_edition.secondary": [],
109
- "snkGridTopTaskbar.finish_edition.singleTaskbar": [],
104
+ 'snkGridTopTaskbar.regular': ['FORM_MODE', 'CONFIGURATOR', 'INSERT'],
105
+ 'snkGridTopTaskbar.regular.secondary': ['FORM_MODE', 'CONFIGURATOR', 'INSERT'],
106
+ 'snkGridTopTaskbar.regular.singleTaskbar': [],
107
+ 'snkGridTopTaskbar.finish_edition': ['CANCEL', 'SAVE', this.handleAddFormMode()],
108
+ 'snkGridTopTaskbar.finish_edition.secondary': [],
109
+ 'snkGridTopTaskbar.finish_edition.singleTaskbar': [],
110
110
  });
111
111
  this._headerTaskbarProcessor = new TaskbarProcessor({
112
- "snkGridHeaderTaskbar.unselected": ["REFRESH", "DATA_EXPORTER", "ACTIONS_BUTTON", "MORE_OPTIONS"],
113
- "snkGridHeaderTaskbar.selected": this.getGridHeaderSelectedBtns(),
114
- "snkGridHeaderTaskbar.detail.unselected": ["REFRESH", "MORE_OPTIONS"],
115
- "snkGridHeaderTaskbar.detail.selected": ["UPDATE", "ATTACH", "CLONE", "REMOVE", "MORE_OPTIONS", "DIVIDER", "REFRESH"],
116
- "snkGridHeaderTaskbar.singleTaskbar.unselected": ["INSERT", "FORM_MODE", "CONFIGURATOR", "REFRESH", "DATA_EXPORTER", "ACTIONS_BUTTON", "MORE_OPTIONS"],
117
- "snkGridHeaderTaskbar.singleTaskbar.selected": ["UPDATE", "CLONE", "REMOVE", "MORE_OPTIONS", "DIVIDER", "ATTACH", "FORM_MODE", "CONFIGURATOR", "REFRESH", "DATA_EXPORTER", "ACTIONS_BUTTON"],
118
- "snkGridHeaderTaskbar.singleTaskbar.detail.unselected": ["INSERT", "FORM_MODE", "CONFIGURATOR", "REFRESH", "MORE_OPTIONS"],
119
- "snkGridHeaderTaskbar.singleTaskbar.detail.selected": ["UPDATE", "ATTACH", "CLONE", "REMOVE", "MORE_OPTIONS", "DIVIDER", "FORM_MODE", "CONFIGURATOR", "REFRESH"],
120
- "snkGridHeaderTaskbar.singleTaskbar.finish_edition": ["CANCEL", "SAVE", this.handleAddFormMode()]
112
+ 'snkGridHeaderTaskbar.unselected': ['REFRESH', 'DATA_EXPORTER', 'ACTIONS_BUTTON', 'MORE_OPTIONS'],
113
+ 'snkGridHeaderTaskbar.selected': this.getGridHeaderSelectedBtns(),
114
+ 'snkGridHeaderTaskbar.detail.unselected': ['REFRESH', 'MORE_OPTIONS'],
115
+ 'snkGridHeaderTaskbar.detail.selected': ['UPDATE', 'ATTACH', 'CLONE', 'REMOVE', 'MORE_OPTIONS', 'DIVIDER', 'REFRESH'],
116
+ 'snkGridHeaderTaskbar.singleTaskbar.unselected': ['INSERT', 'FORM_MODE', 'CONFIGURATOR', 'REFRESH', 'DATA_EXPORTER', 'ACTIONS_BUTTON', 'MORE_OPTIONS'],
117
+ 'snkGridHeaderTaskbar.singleTaskbar.selected': ['UPDATE', 'CLONE', 'REMOVE', 'MORE_OPTIONS', 'DIVIDER', 'ATTACH', 'FORM_MODE', 'CONFIGURATOR', 'REFRESH', 'DATA_EXPORTER', 'ACTIONS_BUTTON'],
118
+ 'snkGridHeaderTaskbar.singleTaskbar.detail.unselected': ['INSERT', 'FORM_MODE', 'CONFIGURATOR', 'REFRESH', 'MORE_OPTIONS'],
119
+ 'snkGridHeaderTaskbar.singleTaskbar.detail.selected': ['UPDATE', 'ATTACH', 'CLONE', 'REMOVE', 'MORE_OPTIONS', 'DIVIDER', 'FORM_MODE', 'CONFIGURATOR', 'REFRESH'],
120
+ 'snkGridHeaderTaskbar.singleTaskbar.finish_edition': ['CANCEL', 'SAVE', this.handleAddFormMode()],
121
121
  });
122
122
  this.dataUnitInterceptor = {
123
123
  interceptAction: async (action) => {
@@ -125,7 +125,7 @@ const SnkGrid = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
125
125
  return await this.interceptMetadataLoaded(action);
126
126
  }
127
127
  return action;
128
- }
128
+ },
129
129
  };
130
130
  this._dataUnit = undefined;
131
131
  this._dataState = undefined;
@@ -173,7 +173,7 @@ const SnkGrid = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
173
173
  const btns = [
174
174
  TaskbarElement.UPDATE, TaskbarElement.CLONE, TaskbarElement.REMOVE,
175
175
  TaskbarElement.MORE_OPTIONS, TaskbarElement.DIVIDER, TaskbarElement.ATTACH, TaskbarElement.FORM_MODE,
176
- TaskbarElement.CONFIGURATOR, TaskbarElement.REFRESH, TaskbarElement.DATA_EXPORTER, TaskbarElement.ACTIONS_BUTTON
176
+ TaskbarElement.CONFIGURATOR, TaskbarElement.REFRESH, TaskbarElement.DATA_EXPORTER, TaskbarElement.ACTIONS_BUTTON,
177
177
  ];
178
178
  if (this.multipleEditionEnabled)
179
179
  btns.unshift(TaskbarElement.UPDATE_MULTIPLE);
@@ -337,7 +337,7 @@ const SnkGrid = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
337
337
  this.loadConfig();
338
338
  }
339
339
  handleAddFormMode() {
340
- return this.enableGridInsert ? TaskbarElement.FORM_MODE : "";
340
+ return this.enableGridInsert ? TaskbarElement.FORM_MODE : '';
341
341
  }
342
342
  openGridConfig() {
343
343
  this._grid.getColumnsState()
@@ -381,6 +381,17 @@ const SnkGrid = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
381
381
  ConfigStorage.addGridLegacyConfig(this.configName, this.gridLegacyConfigName);
382
382
  }
383
383
  }
384
+ hasCalculatedFields(columnNames) {
385
+ let hasCalculatedFields = false;
386
+ columnNames.forEach(name => {
387
+ var _a;
388
+ const field = this._dataUnit.getField(name);
389
+ if (((_a = field.properties) === null || _a === void 0 ? void 0 : _a.calculated) === 'true') {
390
+ hasCalculatedFields = true;
391
+ }
392
+ });
393
+ return hasCalculatedFields;
394
+ }
384
395
  gridConfigChangeHandler(evt) {
385
396
  const config = this.normalizeGridConfig(evt.detail);
386
397
  ConfigStorage.saveGridConfig(config, this.configName, this.resourceID);
@@ -396,11 +407,25 @@ const SnkGrid = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
396
407
  });
397
408
  evt.stopPropagation();
398
409
  }
410
+ async hasToForceClientSideExporter() {
411
+ if (!this._grid) {
412
+ return false;
413
+ }
414
+ const filters = await this._grid.getAppliedColumnFilters();
415
+ const columnNames = filters.map(filter => filter.name.replace('FILTRO_COLUNA_', ''));
416
+ return this.hasCalculatedFields(columnNames);
417
+ }
399
418
  async dataExporterProviderStore() {
400
- const dataExporterProvider = this.strategyExporter === ExporterStrategy.SERVER_SIDE
401
- ? new ServerSideExporterProvider(this._dataUnit, this._grid)
402
- : new ClientSideExporterProvider(this._dataUnit, this._grid);
403
- store.set("exporterProviders", Object.assign(Object.assign({}, store.get("exporterProviders")), { [this.configName]: dataExporterProvider }));
419
+ /**
420
+ * O ServerSideExporterProvider do SankhyaOm não suporta a filtragem de campos calculados.
421
+ * Por esse motivo, precisamos verificar os filtros aplicados no momento e recriar o dataExporterProvider conforme necessário.
422
+ * Se houver campos calculados, forçamos o uso do clientSide, caso contrário é seguido o fluxo padrão.
423
+ */
424
+ const forceClientSide = await this.hasToForceClientSideExporter();
425
+ const dataExporterProvider = (forceClientSide || this.strategyExporter === ExporterStrategy.CLIENT_SIDE)
426
+ ? new ClientSideExporterProvider(this._dataUnit, this._grid)
427
+ : new ServerSideExporterProvider(this._dataUnit, this._grid);
428
+ store.set('exporterProviders', Object.assign(Object.assign({}, store.get('exporterProviders')), { [this.configName]: dataExporterProvider }));
404
429
  }
405
430
  addElementID() {
406
431
  const dataInfo = { dataUnit: this._dataUnit };
@@ -449,15 +474,15 @@ const SnkGrid = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
449
474
  }
450
475
  }
451
476
  componentWillLoad() {
452
- this._application = ApplicationContext.getContextValue("__SNK__APPLICATION__");
477
+ this._application = ApplicationContext.getContextValue('__SNK__APPLICATION__');
453
478
  //TODO: substituir pelo metodo nativo closest
454
479
  let parent = this._element.parentElement;
455
480
  while (parent) {
456
- if (parent.tagName.toUpperCase() === "SNK-DATA-UNIT") {
481
+ if (parent.tagName.toUpperCase() === 'SNK-DATA-UNIT') {
457
482
  this._snkDataUnit = parent;
458
483
  this._dataUnit = this._snkDataUnit.dataUnit;
459
484
  if (!this._dataUnit) {
460
- this._snkDataUnit.addEventListener("dataUnitReady", (evt) => {
485
+ this._snkDataUnit.addEventListener('dataUnitReady', (evt) => {
461
486
  this._dataUnit = evt.detail;
462
487
  this.finishLoading();
463
488
  });
@@ -467,8 +492,8 @@ const SnkGrid = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
467
492
  }
468
493
  if (!this.messagesBuilder)
469
494
  this.messagesBuilder = this._snkDataUnit.messagesBuilder;
470
- this._snkDataUnit.addEventListener("dataStateChange", this.handleDataStateChange.bind(this));
471
- this._snkDataUnit.addEventListener("cancelEdition", () => {
495
+ this._snkDataUnit.addEventListener('dataStateChange', this.handleDataStateChange.bind(this));
496
+ this._snkDataUnit.addEventListener('cancelEdition', () => {
472
497
  var _a;
473
498
  if ((_a = this._dataState) === null || _a === void 0 ? void 0 : _a.recordsIsEmpty) {
474
499
  this._dataUnit.clearSelection();
@@ -531,23 +556,23 @@ const SnkGrid = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
531
556
  var _a, _b;
532
557
  const hasSelectedRecord = this._dataState && !!((_a = this._dataState.selectionInfo) === null || _a === void 0 ? void 0 : _a.length);
533
558
  const taskbarIdPrefixLookup = {
534
- primary: this.isDetail ? "snkGridHeaderTaskbar.detail" : "snkGridHeaderTaskbar",
535
- secondary: this.isDetail ? "snkGridHeaderTaskbar.detail" : "snkGridHeaderTaskbar",
536
- singleTaskbar: this.isDetail ? "snkGridHeaderTaskbar.singleTaskbar.detail" : "snkGridHeaderTaskbar.singleTaskbar"
559
+ primary: this.isDetail ? 'snkGridHeaderTaskbar.detail' : 'snkGridHeaderTaskbar',
560
+ secondary: this.isDetail ? 'snkGridHeaderTaskbar.detail' : 'snkGridHeaderTaskbar',
561
+ singleTaskbar: this.isDetail ? 'snkGridHeaderTaskbar.singleTaskbar.detail' : 'snkGridHeaderTaskbar.singleTaskbar',
537
562
  };
538
563
  const taskbarIdPrefix = taskbarIdPrefixLookup[this.presentationMode];
539
564
  let headerTaskbarId = hasSelectedRecord ? `${taskbarIdPrefix}.selected` : `${taskbarIdPrefix}.unselected`;
540
565
  if (((_b = this._dataState) === null || _b === void 0 ? void 0 : _b.isDirty) && this.presentationMode === PresentationMode.SINGLE_TASKBAR) {
541
- headerTaskbarId = "snkGridHeaderTaskbar.singleTaskbar.finish_edition";
566
+ headerTaskbarId = 'snkGridHeaderTaskbar.singleTaskbar.finish_edition';
542
567
  }
543
568
  return headerTaskbarId;
544
569
  }
545
570
  getTopTaskBarId() {
546
571
  var _a;
547
572
  const suffixLookup = {
548
- primary: "",
549
- secondary: ".secondary",
550
- singleTaskbar: ".singleTaskbar"
573
+ primary: '',
574
+ secondary: '.secondary',
575
+ singleTaskbar: '.singleTaskbar',
551
576
  };
552
577
  const sufix = suffixLookup[this.presentationMode];
553
578
  if ((_a = this._dataState) === null || _a === void 0 ? void 0 : _a.isDirty) {
@@ -557,9 +582,9 @@ const SnkGrid = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
557
582
  }
558
583
  getPrimaryButton() {
559
584
  const primaryButtonLookup = {
560
- primary: "INSERT",
561
- secondary: "",
562
- singleTaskbar: "INSERT"
585
+ primary: 'INSERT',
586
+ secondary: '',
587
+ singleTaskbar: 'INSERT',
563
588
  };
564
589
  return primaryButtonLookup[this.presentationMode];
565
590
  }
@@ -599,10 +624,10 @@ const SnkGrid = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
599
624
  getActionsSettingsList() {
600
625
  const hardList = [{
601
626
  value: StringUtils.generateUUID(),
602
- label: this.messagesBuilder.getMessage("snkGrid.findColumn", {}),
627
+ label: this.messagesBuilder.getMessage('snkGrid.findColumn', {}),
603
628
  disableCloseOnSelect: true,
604
629
  eagerInitialize: true,
605
- itemBuilder: (_, item) => this.getColumnSearch(item)
630
+ itemBuilder: (_, item) => this.getColumnSearch(item),
606
631
  }];
607
632
  return hardList;
608
633
  }
@@ -630,7 +655,9 @@ const SnkGrid = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
630
655
  return undefined;
631
656
  }
632
657
  return (h("div", { class: "snk-grid__container ez-flex ez-flex--column ez-flex-item--auto ez-padding--large ez-box--no-outline", tabindex: "0" }, h("div", { class: "snk-grid__header ez-margin-bottom--extra-small" }, this._showSnkFilterBar &&
633
- h(Fragment, null, h("snk-filter-bar", { ref: (ref) => this._snkFilterBar = ref, title: this.filterBarTitle, dataUnit: this._dataUnit, "data-element-id": "gridFilter", class: "snk-grid__filter-bar ez-align--top", configName: this.configName, messagesBuilder: this.messagesBuilder, resourceID: this.resourceID, onConfigUpdated: evt => this.handleFilterConfigUpdated(evt.detail), disablePersonalizedFilter: this.disablePersonalizedFilter, filterBarLegacyConfigName: this.filterBarLegacyConfigName, autoLoad: this.autoLoad, enableLockManagerLoadingComp: this.enableLockManagerLoadingComp }), 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 ez-padding-top--extra-small", "data-element-id": "grid_top", key: "topTaskbar", configName: this.configName, dataUnit: this._dataUnit, messagesBuilder: this.messagesBuilder, buttons: this._topTaskbarProcessor.buttons, disabledButtons: this._topTaskbarProcessor.disabledButtons, customButtons: this._topTaskbarProcessor.customButtons, primaryButton: this.getPrimaryButton(), resourceID: this.resourceID, customContainerId: this.taskbarCustomContainerId, customSlotId: this.topTaskbarCustomSlotId, overflowStrategy: 'none', actionsSettingsList: this.getActionsSettingsList() }, h("slot", { name: this.topTaskbarCustomSlotId }))), h("ez-grid", { ref: ref => this._grid = ref, class: (this.presentationMode === PresentationMode.SECONDARY ? "snk-grid-container__without-shadow " : "") + "snk-grid__table", "data-element-id": "embedded", dataUnit: this._dataUnit, key: "grid-" + this._snkDataUnit.entityName, config: this._gridConfig, onConfigChange: (evt) => { this.gridConfigChangeHandler(evt); }, onEzDoubleClick: (evt) => this.gridDoubleClick.emit(evt.detail), statusResolver: this.statusResolver, multipleSelection: this.multipleSelection, columnfilterDataSource: this.columnFilterDataSource, selectionToastConfig: this.selectionToastConfig, useEnterLikeTab: this.useEnterLikeTab, recordsValidator: this.recordsValidator, canEdit: this.canEdit, autoFocus: this.autoFocus, enableGridInsert: this.enableGridInsert, enableContinuousInsert: this._enableContinuousInsert, enableLockManagerTaskbarClick: this.enableLockManagerTaskbarClick, enableLockManagerLoadingComp: this.enableLockManagerLoadingComp, outlineMode: this.outlineMode, useSearchColumn: this.useSearchColumn, suppressHorizontalScroll: this.suppressHorizontalScroll, paginationCounterMode: this.paginationCounterMode, suppressCheckboxColumn: this.suppressCheckboxColumn, suppressFilterColumn: this.suppressFilterColumn, compact: this.compact }, h("snk-taskbar", { id: 'teste', dataUnit: this._dataUnit, configName: this.configName, messagesBuilder: this.messagesBuilder, "data-element-id": "grid_left", buttons: this.getGridHeaderButtons(), presentationMode: this.presentationMode, disabledButtons: this._headerTaskbarProcessor.disabledButtons, customButtons: this._headerTaskbarProcessor.customButtons, slot: "leftButtons", actionsList: this.getActionsList(), primaryButton: this.getPrimaryButton(), resourceID: this.resourceID, customContainerId: this.taskbarCustomContainerId, customSlotId: this.gridHeaderCustomSlotId, actionsSettingsList: this.getActionsSettingsList() }, h("slot", { name: this.gridHeaderCustomSlotId }))), h("div", { class: "ez-col ez-col--sd-12 snk-grid-container__footer" }, h("slot", { name: "SnkGridFooter" })), h("ez-popup", { size: "medium", heightMode: "auto", useHeader: false, opened: this._popUpGridConfig, onEzClosePopup: () => this.closeGridConfig() }, h("snk-grid-config", { ref: ref => this._snkGridConfig = ref, config: this._gridConfig, "data-element-id": this._element.getAttribute(ElementIDUtils.DATA_ELEMENT_ID_ATTRIBUTE_NAME), selectedIndex: 0, configName: this.configName, onConfigChange: (evt) => this.modalConfigChangeHandler(evt), onConfigCancel: () => this.closeGridConfig(), resourceID: this.resourceID }))));
658
+ h(Fragment, null, h("snk-filter-bar", { ref: (ref) => this._snkFilterBar = ref, title: this.filterBarTitle, dataUnit: this._dataUnit, "data-element-id": "gridFilter", class: "snk-grid__filter-bar ez-align--top", configName: this.configName, messagesBuilder: this.messagesBuilder, resourceID: this.resourceID, onConfigUpdated: evt => this.handleFilterConfigUpdated(evt.detail), disablePersonalizedFilter: this.disablePersonalizedFilter, filterBarLegacyConfigName: this.filterBarLegacyConfigName, autoLoad: this.autoLoad, enableLockManagerLoadingComp: this.enableLockManagerLoadingComp }), 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 ez-padding-top--extra-small", "data-element-id": "grid_top", key: "topTaskbar", configName: this.configName, dataUnit: this._dataUnit, messagesBuilder: this.messagesBuilder, buttons: this._topTaskbarProcessor.buttons, disabledButtons: this._topTaskbarProcessor.disabledButtons, customButtons: this._topTaskbarProcessor.customButtons, primaryButton: this.getPrimaryButton(), resourceID: this.resourceID, customContainerId: this.taskbarCustomContainerId, customSlotId: this.topTaskbarCustomSlotId, overflowStrategy: 'none', actionsSettingsList: this.getActionsSettingsList() }, 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) => {
659
+ this.gridConfigChangeHandler(evt);
660
+ }, onEzColumnFilterChanged: async () => await this.dataExporterProviderStore(), onEzDoubleClick: (evt) => this.gridDoubleClick.emit(evt.detail), statusResolver: this.statusResolver, multipleSelection: this.multipleSelection, columnfilterDataSource: this.columnFilterDataSource, selectionToastConfig: this.selectionToastConfig, useEnterLikeTab: this.useEnterLikeTab, recordsValidator: this.recordsValidator, canEdit: this.canEdit, autoFocus: this.autoFocus, enableGridInsert: this.enableGridInsert, enableContinuousInsert: this._enableContinuousInsert, enableLockManagerTaskbarClick: this.enableLockManagerTaskbarClick, enableLockManagerLoadingComp: this.enableLockManagerLoadingComp, outlineMode: this.outlineMode, useSearchColumn: this.useSearchColumn, suppressHorizontalScroll: this.suppressHorizontalScroll, paginationCounterMode: this.paginationCounterMode, suppressCheckboxColumn: this.suppressCheckboxColumn, suppressFilterColumn: this.suppressFilterColumn, compact: this.compact }, h("snk-taskbar", { id: 'teste', dataUnit: this._dataUnit, configName: this.configName, messagesBuilder: this.messagesBuilder, "data-element-id": "grid_left", buttons: this.getGridHeaderButtons(), presentationMode: this.presentationMode, disabledButtons: this._headerTaskbarProcessor.disabledButtons, customButtons: this._headerTaskbarProcessor.customButtons, slot: "leftButtons", actionsList: this.getActionsList(), primaryButton: this.getPrimaryButton(), resourceID: this.resourceID, customContainerId: this.taskbarCustomContainerId, customSlotId: this.gridHeaderCustomSlotId, actionsSettingsList: this.getActionsSettingsList() }, h("slot", { name: this.gridHeaderCustomSlotId }))), h("div", { class: "ez-col ez-col--sd-12 snk-grid-container__footer" }, h("slot", { name: "SnkGridFooter" })), h("ez-popup", { size: "medium", heightMode: "auto", useHeader: false, opened: this._popUpGridConfig, onEzClosePopup: () => this.closeGridConfig() }, h("snk-grid-config", { ref: ref => this._snkGridConfig = ref, config: this._gridConfig, "data-element-id": this._element.getAttribute(ElementIDUtils.DATA_ELEMENT_ID_ATTRIBUTE_NAME), selectedIndex: 0, configName: this.configName, onConfigChange: (evt) => this.modalConfigChangeHandler(evt), onConfigCancel: () => this.closeGridConfig(), resourceID: this.resourceID }))));
634
661
  }
635
662
  get _element() { return this; }
636
663
  static get watchers() { return {
@@ -1,12 +1,12 @@
1
- import { D as DataFetcher } from './DataFetcher-6f6de657.js';
2
- import './ISave-7ecdca20.js';
1
+ import { D as DataFetcher } from './DataFetcher-01ce1a4f.js';
2
+ import './ISave-d36bade4.js';
3
3
  import { SortMode, ApplicationContext, UserInterface, DateUtils, ObjectUtils, StringUtils, NumberUtils, DataType } from '@sankhyalabs/core';
4
4
  import { D as DataExporterOption } from './index-b40568ff.js';
5
5
  import '@sankhyalabs/ezui/dist/collection/utils/constants';
6
6
  import { UserInterface as UserInterface$1 } from '@sankhyalabs/core/dist/dataunit/metadata/UnitMetadata';
7
- import { P as PreloadManager } from './dataunit-fetcher-f21cbad0.js';
7
+ import { P as PreloadManager } from './dataunit-fetcher-14ba162b.js';
8
8
  import './filter-item-type.enum-d45e026f.js';
9
- import './form-config-fetcher-6ab4e805.js';
9
+ import './form-config-fetcher-a1ccc944.js';
10
10
  import './constants-7b422de0.js';
11
11
  import InMemoryFilterColumnDataSource from '@sankhyalabs/ezui/dist/collection/components/ez-grid/utils/InMemoryFilterColumnDataSource';
12
12
  import { h } from './index-479e1293.js';
@@ -334,7 +334,10 @@ class ClientSideExporterProvider extends CommonsExporter {
334
334
  }
335
335
  resolveRecordsFromSelection() {
336
336
  const selectionInfo = this.dataUnit.getSelectionInfo();
337
- const selectionRecords = selectionInfo.isEmpty() || selectionInfo.isAllRecords() ? selectionInfo.getAllRecords() : selectionInfo.records;
337
+ if (selectionInfo.isEmpty()) {
338
+ return this.dataUnit.records;
339
+ }
340
+ const selectionRecords = selectionInfo.isAllRecords() ? selectionInfo.getAllRecords() : selectionInfo.records;
338
341
  return selectionRecords.length ? selectionRecords : this.dataUnit.records;
339
342
  }
340
343
  getHiddenOptions() {
@@ -1,5 +1,5 @@
1
- import { R as ResourceFetcher, F as FormConfigFetcher } from './form-config-fetcher-6ab4e805.js';
2
- import { D as DataFetcher, d as dist } from './DataFetcher-6f6de657.js';
1
+ import { R as ResourceFetcher, F as FormConfigFetcher } from './form-config-fetcher-a1ccc944.js';
2
+ import { D as DataFetcher, d as dist } from './DataFetcher-01ce1a4f.js';
3
3
  import { F as FilterItemType } from './filter-item-type.enum-d45e026f.js';
4
4
  import { ObjectUtils } from '@sankhyalabs/core';
5
5
 
@@ -5603,7 +5603,7 @@ var _public = {
5603
5603
  };
5604
5604
 
5605
5605
  /* eslint-env browser */
5606
- var browser = typeof self == 'object' ? self.FormData : window.FormData;
5606
+ var browser = typeof self === 'object' ? self.FormData : window.FormData;
5607
5607
 
5608
5608
  var defaultJsonSerializer = createCommonjsModule(function (module, exports) {
5609
5609
  Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,5 +1,5 @@
1
1
  import { UserInterface, DataType, ApplicationContext, ErrorException } from '@sankhyalabs/core';
2
- import { d as dist, D as DataFetcher } from './DataFetcher-6f6de657.js';
2
+ import { d as dist, D as DataFetcher } from './DataFetcher-01ce1a4f.js';
3
3
 
4
4
  function buildGridMetadata(rawValue) {
5
5
  const fieldsMetadata = buildFieldsMetadata(rawValue.fieldsMetadata);