@sankhyalabs/sankhyablocks 0.0.0-bugfix-dev-KB-81085.0 → 0.0.0-bugfix-dev-KB-74406.0

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 (126) hide show
  1. package/dist/cjs/{ContinuousInsertUtils-aa63f0a9.js → ClientSideExporterProvider-6b781452.js} +71 -2
  2. package/dist/cjs/IFetchDataExporterParams-e78ec415.js +8 -0
  3. package/dist/cjs/{dataunit-fetcher-c32fdff7.js → dataunit-fetcher-8291ac21.js} +21 -7
  4. package/dist/cjs/{index-1dfc7a6e.js → index-e3e39724.js} +5 -0
  5. package/dist/cjs/loader.cjs.js +1 -1
  6. package/dist/cjs/pesquisa-grid_2.cjs.entry.js +2 -2
  7. package/dist/cjs/sankhyablocks.cjs.js +1 -1
  8. package/dist/cjs/snk-actions-button_5.cjs.entry.js +3 -3
  9. package/dist/cjs/snk-application.cjs.entry.js +9 -2
  10. package/dist/cjs/snk-attach.cjs.entry.js +3 -3
  11. package/dist/cjs/snk-configurator.cjs.entry.js +1 -1
  12. package/dist/cjs/snk-crud.cjs.entry.js +3 -14
  13. package/dist/cjs/snk-data-exporter.cjs.entry.js +13 -16
  14. package/dist/cjs/{snk-data-unit-2c7c1964.js → snk-data-unit-d75e6220.js} +1 -1
  15. package/dist/cjs/snk-data-unit.cjs.entry.js +2 -2
  16. package/dist/cjs/snk-detail-view.cjs.entry.js +4 -4
  17. package/dist/cjs/snk-filter-bar_4.cjs.entry.js +9 -8
  18. package/dist/cjs/snk-filter-number.cjs.entry.js +1 -1
  19. package/dist/cjs/snk-grid.cjs.entry.js +34 -16
  20. package/dist/cjs/{snk-guides-viewer-c1c56eca.js → snk-guides-viewer-a029ff50.js} +3 -3
  21. package/dist/cjs/snk-guides-viewer.cjs.entry.js +4 -4
  22. package/dist/cjs/snk-pesquisa.cjs.entry.js +3 -3
  23. package/dist/cjs/snk-simple-crud.cjs.entry.js +25 -79
  24. package/dist/cjs/snk-taskbar.cjs.entry.js +2 -2
  25. package/dist/cjs/{taskbar-elements-9ad1f9c0.js → taskbar-elements-7e19882d.js} +1 -1
  26. package/dist/collection/components/snk-application/snk-application.js +8 -1
  27. package/dist/collection/components/snk-configurator/snk-configurator.css +1 -1
  28. package/dist/collection/components/snk-crud/snk-crud.js +0 -11
  29. package/dist/collection/components/snk-data-exporter/exporter-strategy/ClientSideExporterStrategy.js +3 -9
  30. package/dist/collection/components/snk-data-exporter/providers/ClientSideExporterProvider.js +17 -5
  31. package/dist/collection/components/snk-data-exporter/snk-data-exporter.js +7 -4
  32. package/dist/collection/components/snk-filter-bar/filter-item/dataunitfilter/data-unit-filter-builder.js +3 -3
  33. package/dist/collection/components/snk-filter-bar/filter-item/editors/snk-filter-number.js +1 -1
  34. package/dist/collection/components/snk-filter-bar/filter-item/snk-filter-item.js +4 -3
  35. package/dist/collection/components/snk-filter-bar/snk-filter-bar.css +2 -2
  36. package/dist/collection/components/snk-filter-bar/snk-filter-bar.js +1 -1
  37. package/dist/collection/components/snk-grid/snk-grid.css +6 -0
  38. package/dist/collection/components/snk-grid/snk-grid.js +47 -6
  39. package/dist/collection/components/snk-grid-config/snk-grid-config.css +1 -1
  40. package/dist/collection/components/snk-pesquisa/snk-pesquisa.css +1 -1
  41. package/dist/collection/lib/@types/index.js +5 -0
  42. package/dist/collection/lib/http/data-fetcher/fetchers/data-unit/cache/ArrayRepository.js +21 -7
  43. package/dist/collection/lib/http/data-fetcher/fetchers/fetchDataExporter/interfaces/IFetchDataExporterParams.js +6 -1
  44. package/dist/components/ContinuousInsertUtils.js +70 -2
  45. package/dist/components/ISave.js +6 -1
  46. package/dist/components/dataunit-fetcher.js +21 -7
  47. package/dist/components/snk-application2.js +8 -1
  48. package/dist/components/snk-configurator2.js +1 -1
  49. package/dist/components/snk-crud.js +0 -11
  50. package/dist/components/snk-data-exporter2.js +17 -14
  51. package/dist/components/snk-filter-bar2.js +5 -5
  52. package/dist/components/snk-filter-item2.js +4 -3
  53. package/dist/components/snk-filter-number.js +1 -1
  54. package/dist/components/snk-grid-config2.js +1 -1
  55. package/dist/components/snk-grid2.js +26 -8
  56. package/dist/components/snk-pesquisa2.js +1 -1
  57. package/dist/components/snk-simple-crud2.js +3 -59
  58. package/dist/esm/{ContinuousInsertUtils-af683684.js → ClientSideExporterProvider-ff89c7e9.js} +71 -3
  59. package/dist/esm/IFetchDataExporterParams-d73bed3d.js +8 -0
  60. package/dist/esm/{dataunit-fetcher-26c2bed4.js → dataunit-fetcher-5247a708.js} +21 -7
  61. package/dist/esm/{index-3aa4977a.js → index-b40568ff.js} +6 -1
  62. package/dist/esm/loader.js +1 -1
  63. package/dist/esm/pesquisa-grid_2.entry.js +2 -2
  64. package/dist/esm/sankhyablocks.js +1 -1
  65. package/dist/esm/snk-actions-button_5.entry.js +3 -3
  66. package/dist/esm/snk-application.entry.js +9 -2
  67. package/dist/esm/snk-attach.entry.js +3 -3
  68. package/dist/esm/snk-configurator.entry.js +1 -1
  69. package/dist/esm/snk-crud.entry.js +3 -14
  70. package/dist/esm/snk-data-exporter.entry.js +13 -16
  71. package/dist/esm/{snk-data-unit-a36df23f.js → snk-data-unit-bfd10c71.js} +1 -1
  72. package/dist/esm/snk-data-unit.entry.js +2 -2
  73. package/dist/esm/snk-detail-view.entry.js +4 -4
  74. package/dist/esm/snk-filter-bar_4.entry.js +9 -8
  75. package/dist/esm/snk-filter-number.entry.js +1 -1
  76. package/dist/esm/snk-grid.entry.js +28 -10
  77. package/dist/esm/{snk-guides-viewer-2b96b7f7.js → snk-guides-viewer-fa45714d.js} +3 -3
  78. package/dist/esm/snk-guides-viewer.entry.js +4 -4
  79. package/dist/esm/snk-pesquisa.entry.js +3 -3
  80. package/dist/esm/snk-simple-crud.entry.js +7 -61
  81. package/dist/esm/snk-taskbar.entry.js +2 -2
  82. package/dist/esm/{taskbar-elements-d59867f1.js → taskbar-elements-d2353c64.js} +1 -1
  83. package/dist/sankhyablocks/{p-7d0627f4.entry.js → p-0b00d69c.entry.js} +1 -1
  84. package/dist/sankhyablocks/p-0f3698af.js +1 -0
  85. package/dist/sankhyablocks/{p-c4d87e71.entry.js → p-172848d4.entry.js} +1 -1
  86. package/dist/sankhyablocks/{p-c9eb2bf5.entry.js → p-29d08446.entry.js} +1 -1
  87. package/dist/sankhyablocks/p-38179225.js +60 -0
  88. package/dist/sankhyablocks/{p-7e7a7473.js → p-3fc82614.js} +1 -1
  89. package/dist/sankhyablocks/p-40e323f9.js +1 -0
  90. package/dist/sankhyablocks/{p-f4ceb72c.entry.js → p-4c9adf1c.entry.js} +1 -1
  91. package/dist/sankhyablocks/{p-70ae0779.js → p-655bdd60.js} +1 -1
  92. package/dist/sankhyablocks/p-700a4cc3.entry.js +1 -0
  93. package/dist/sankhyablocks/p-79f823f3.entry.js +1 -0
  94. package/dist/sankhyablocks/p-8f3f2306.js +1 -0
  95. package/dist/sankhyablocks/{p-28ca3908.entry.js → p-a962a3e4.entry.js} +1 -1
  96. package/dist/sankhyablocks/p-aa1a0f3e.entry.js +1 -0
  97. package/dist/sankhyablocks/{p-80dd8976.entry.js → p-b02e58fd.entry.js} +1 -1
  98. package/dist/sankhyablocks/{p-d5687306.entry.js → p-b0ff53b7.entry.js} +1 -1
  99. package/dist/sankhyablocks/{p-538b3174.entry.js → p-c82deea7.entry.js} +1 -1
  100. package/dist/sankhyablocks/{p-31c3c9d0.entry.js → p-d2d0535f.entry.js} +1 -1
  101. package/dist/sankhyablocks/{p-c6aefba8.js → p-de9da2f2.js} +1 -1
  102. package/dist/sankhyablocks/p-e10faff0.entry.js +11 -0
  103. package/dist/sankhyablocks/p-e36f89d1.entry.js +1 -0
  104. package/dist/sankhyablocks/{p-045398fb.entry.js → p-f8db6795.entry.js} +1 -1
  105. package/dist/sankhyablocks/p-fa0cf19c.entry.js +1 -0
  106. package/dist/sankhyablocks/sankhyablocks.esm.js +1 -1
  107. package/dist/types/components/snk-data-exporter/data/export-result.d.ts +2 -1
  108. package/dist/types/components/snk-data-exporter/exporter-strategy/ClientSideExporterStrategy.d.ts +0 -1
  109. package/dist/types/components/snk-data-exporter/interfaces/IExporterProvider.d.ts +2 -1
  110. package/dist/types/components/snk-data-exporter/interfaces/IRecordID.d.ts +1 -0
  111. package/dist/types/components/snk-data-exporter/providers/ClientSideExporterProvider.d.ts +3 -1
  112. package/dist/types/components/snk-grid/snk-grid.d.ts +7 -0
  113. package/dist/types/components.d.ts +9 -1
  114. package/dist/types/lib/@types/index.d.ts +4 -0
  115. package/dist/types/lib/http/data-fetcher/fetchers/data-unit/cache/ArrayRepository.d.ts +4 -0
  116. package/dist/types/lib/http/data-fetcher/fetchers/fetchDataExporter/interfaces/IFetchDataExporterParams.d.ts +5 -1
  117. package/package.json +1 -1
  118. package/dist/sankhyablocks/p-01ba23cd.entry.js +0 -1
  119. package/dist/sankhyablocks/p-0c50ba37.entry.js +0 -11
  120. package/dist/sankhyablocks/p-15f5f702.js +0 -1
  121. package/dist/sankhyablocks/p-30cf616e.js +0 -1
  122. package/dist/sankhyablocks/p-43d58b74.entry.js +0 -1
  123. package/dist/sankhyablocks/p-78d49c74.js +0 -60
  124. package/dist/sankhyablocks/p-bf6bc973.entry.js +0 -1
  125. package/dist/sankhyablocks/p-d434bb9a.entry.js +0 -1
  126. package/dist/sankhyablocks/p-edbe8e15.entry.js +0 -1
@@ -2,6 +2,9 @@ import { ObjectUtils } from "@sankhyalabs/core";
2
2
  export class ArrayRepository {
3
3
  constructor(equalsFunction) {
4
4
  this._list = [];
5
+ this._listCopy = [];
6
+ this._listLastUpdate = 0;
7
+ this._listCopyLastUpdate = 0;
5
8
  this._equalsFunction = equalsFunction;
6
9
  }
7
10
  async load(filterFunction, sortingFunction, offset, limit) {
@@ -40,13 +43,13 @@ export class ArrayRepository {
40
43
  return Promise.resolve(new Map(processedItems.map(item => [item.key, item.value])));
41
44
  }
42
45
  async push(items) {
43
- this._list.push(...items);
46
+ this.updateList([...this._list, ...items]);
44
47
  }
45
48
  async clear() {
46
- this._list = [];
49
+ this.updateList([]);
47
50
  }
48
51
  async delete(items) {
49
- this._list = this._list.filter(item => {
52
+ const list = this._list.filter(item => {
50
53
  for (const removed of items) {
51
54
  if (this._equalsFunction(item, removed)) {
52
55
  return false;
@@ -54,20 +57,23 @@ export class ArrayRepository {
54
57
  }
55
58
  return true;
56
59
  });
60
+ this.updateList(list);
57
61
  }
58
62
  async update(items) {
59
- this._list = this._list.map(existingItem => {
63
+ const list = this._list.map(existingItem => {
60
64
  const newItem = items.find(newItem => this._equalsFunction(existingItem, newItem));
61
65
  return newItem == undefined ? existingItem : newItem;
62
66
  });
67
+ this.updateList(list);
63
68
  }
64
69
  async insert(itemReference, items) {
65
70
  const itemPosition = this._list.indexOf(itemReference);
66
71
  if (itemPosition == -1) {
67
- this._list.push(...items);
72
+ this.push(items);
68
73
  return;
69
74
  }
70
- this._list = this._list.slice(0, itemPosition).concat(items).concat(this._list.slice(itemPosition));
75
+ const list = this._list.slice(0, itemPosition).concat(items).concat(this._list.slice(itemPosition));
76
+ this.updateList(list);
71
77
  }
72
78
  isOperating() {
73
79
  return true;
@@ -79,6 +85,14 @@ export class ArrayRepository {
79
85
  return Promise.resolve(this._list.length);
80
86
  }
81
87
  getFromCache() {
82
- return ObjectUtils.copy(this._list);
88
+ if (this._listLastUpdate > this._listCopyLastUpdate) {
89
+ this._listCopyLastUpdate = this._listLastUpdate;
90
+ this._listCopy = ObjectUtils.copy(this._list);
91
+ }
92
+ return this._listCopy;
93
+ }
94
+ updateList(newList) {
95
+ this._list = newList;
96
+ this._listLastUpdate = Date.now();
83
97
  }
84
98
  }
@@ -1 +1,6 @@
1
- export {};
1
+ export var IExportType;
2
+ (function (IExportType) {
3
+ IExportType["ALL"] = "all";
4
+ IExportType["PAGE"] = "page";
5
+ IExportType["SELECTION"] = "selection";
6
+ })(IExportType || (IExportType = {}));
@@ -1,5 +1,5 @@
1
1
  import { D as DataFetcher } from './DataFetcher.js';
2
- import './ISave.js';
2
+ import { D as DataExporterOption } from './ISave.js';
3
3
  import { SortMode, ApplicationContext, UserInterface, DateUtils, ObjectUtils, StringUtils, NumberUtils, DataType } from '@sankhyalabs/core';
4
4
  import '@sankhyalabs/ezui/dist/collection/utils/constants';
5
5
  import { UserInterface as UserInterface$1 } from '@sankhyalabs/core/dist/dataunit/metadata/UnitMetadata';
@@ -9,6 +9,8 @@ import './form-config-fetcher.js';
9
9
  import './constants.js';
10
10
  import InMemoryFilterColumnDataSource from '@sankhyalabs/ezui/dist/collection/components/ez-grid/utils/InMemoryFilterColumnDataSource';
11
11
  import { h } from '@stencil/core/internal/client';
12
+ import { g as getSelectedRecordsIDsInfo } from './GetSelectedRecordsIDsInfo.js';
13
+ import { I as IExportType } from './snk-data-exporter2.js';
12
14
 
13
15
  class CrudUtils {
14
16
  static assertDefaultSorting(gridConfig, dataUnit) {
@@ -308,6 +310,72 @@ class CommonsExporter {
308
310
  }
309
311
  }
310
312
 
313
+ class ClientSideExporterProvider extends CommonsExporter {
314
+ getSelectedNumber() {
315
+ return this.dataUnit.getSelectionInfo().length;
316
+ }
317
+ getTotalRecords() {
318
+ var _a, _b, _c;
319
+ const { total } = ((_a = this.dataUnit) === null || _a === void 0 ? void 0 : _a.getPaginationInfo()) || {};
320
+ return total !== null && total !== void 0 ? total : (_c = (_b = this.dataUnit) === null || _b === void 0 ? void 0 : _b.records) === null || _c === void 0 ? void 0 : _c.length;
321
+ }
322
+ getSelectedIDs() {
323
+ return getSelectedRecordsIDsInfo(this.dataUnit);
324
+ }
325
+ getRecordID() {
326
+ var _a, _b, _c;
327
+ return (_c = (_b = (_a = this.dataUnit) === null || _a === void 0 ? void 0 : _a.records) === null || _b === void 0 ? void 0 : _b[0]) === null || _c === void 0 ? void 0 : _c.__record__id__;
328
+ }
329
+ async getRecords(exportType) {
330
+ if (this.dataUnit.records.length === 0)
331
+ return [];
332
+ switch (exportType) {
333
+ case IExportType.ALL:
334
+ return this.dataUnit.getSelectionInfo().getAllRecords();
335
+ case IExportType.SELECTION:
336
+ return this.resolveRecordsFromSelection();
337
+ case IExportType.PAGE:
338
+ return this.dataUnit.records;
339
+ default:
340
+ return this.resolveRecordsFromSelection();
341
+ }
342
+ }
343
+ resolveRecordsFromSelection() {
344
+ const selectionInfo = this.dataUnit.getSelectionInfo();
345
+ const selectionRecords = selectionInfo.isEmpty() || selectionInfo.isAllRecords() ? selectionInfo.getAllRecords() : selectionInfo.records;
346
+ return selectionRecords.length ? selectionRecords : this.dataUnit.records;
347
+ }
348
+ getHiddenOptions() {
349
+ return [
350
+ DataExporterOption.EXPORT_BY_EMAIL,
351
+ DataExporterOption.EXPORT_PDF_TO_EMAIL,
352
+ DataExporterOption.EXPORT_XLS_TO_EMAIL,
353
+ DataExporterOption.EXPORT_PAGE_TO_PDF,
354
+ DataExporterOption.EXPORT_PAGE_TO_XLS
355
+ ];
356
+ }
357
+ formatValue(record, column) {
358
+ const { id, descriptionFrom } = column;
359
+ const value = record[descriptionFrom || id];
360
+ if (value == undefined) {
361
+ return "";
362
+ }
363
+ if (descriptionFrom != undefined) {
364
+ return value.label;
365
+ }
366
+ const fieldDescriptor = this.dataUnit.getField(id);
367
+ if (fieldDescriptor.userInterface === UserInterface.SEARCH) {
368
+ return value.value;
369
+ }
370
+ if (column.customFormatter) {
371
+ const ezGridColumn = this.getColumnsState().find(columnState => column.id === columnState.name);
372
+ const formattedValue = column.customFormatter.format(value, ezGridColumn, record.__record__id__);
373
+ return formattedValue;
374
+ }
375
+ return this.dataUnit.getFormattedValue(id, value);
376
+ }
377
+ }
378
+
311
379
  class ContinuousInsertUtils {
312
380
  constructor(snkApplication, resourceID, configName) {
313
381
  this.snkApplication = snkApplication;
@@ -339,4 +407,4 @@ class ContinuousInsertUtils {
339
407
  }
340
408
  }
341
409
 
342
- export { CommonsExporter as C, RmPrecisionCustomValueFormatter as R, SnkMultiSelectionListDataSource as S, TaskbarProcessor as T, CrudUtils as a, buildFieldSearch as b, ContinuousInsertUtils as c, openFieldSearch as o };
410
+ export { CommonsExporter as C, RmPrecisionCustomValueFormatter as R, SnkMultiSelectionListDataSource as S, TaskbarProcessor as T, CrudUtils as a, buildFieldSearch as b, ContinuousInsertUtils as c, ClientSideExporterProvider as d, openFieldSearch as o };
@@ -396,6 +396,11 @@ var DataExporterType;
396
396
  DataExporterType["EXPORT_PDF_TO_EMAIL"] = "PDF";
397
397
  DataExporterType["EXPORT_XLS_TO_EMAIL"] = "XLS";
398
398
  })(DataExporterType || (DataExporterType = {}));
399
+ var ExporterStrategy;
400
+ (function (ExporterStrategy) {
401
+ ExporterStrategy["SERVER_SIDE"] = "ServerSideExporterStrategy";
402
+ ExporterStrategy["CLIENT_SIDE"] = "ClientSideExporterStrategy";
403
+ })(ExporterStrategy || (ExporterStrategy = {}));
399
404
 
400
405
  var SaveErrorsEnum;
401
406
  (function (SaveErrorsEnum) {
@@ -405,4 +410,4 @@ var SaveErrorsEnum;
405
410
  SaveErrorsEnum["DESCRIPTION_CANNOT_BE_CHANGED"] = "DESCRIPTION_CANNOT_BE_CHANGED";
406
411
  })(SaveErrorsEnum || (SaveErrorsEnum = {}));
407
412
 
408
- export { DataExporterOption as D, PresentationMode as P, SaveErrorsEnum as S, PesquisaFetcher as a, DataExporterType as b, DataExporterFormat as c, buildGridMetadata as d, PESQUISA_VIEW_MODE as e };
413
+ export { DataExporterOption as D, ExporterStrategy as E, PresentationMode as P, SaveErrorsEnum as S, PesquisaFetcher as a, DataExporterType as b, DataExporterFormat as c, buildGridMetadata as d, PESQUISA_VIEW_MODE as e };
@@ -9,6 +9,9 @@ import { R as ResourceIDUtils } from './ResourceIDUtils.js';
9
9
  class ArrayRepository {
10
10
  constructor(equalsFunction) {
11
11
  this._list = [];
12
+ this._listCopy = [];
13
+ this._listLastUpdate = 0;
14
+ this._listCopyLastUpdate = 0;
12
15
  this._equalsFunction = equalsFunction;
13
16
  }
14
17
  async load(filterFunction, sortingFunction, offset, limit) {
@@ -47,13 +50,13 @@ class ArrayRepository {
47
50
  return Promise.resolve(new Map(processedItems.map(item => [item.key, item.value])));
48
51
  }
49
52
  async push(items) {
50
- this._list.push(...items);
53
+ this.updateList([...this._list, ...items]);
51
54
  }
52
55
  async clear() {
53
- this._list = [];
56
+ this.updateList([]);
54
57
  }
55
58
  async delete(items) {
56
- this._list = this._list.filter(item => {
59
+ const list = this._list.filter(item => {
57
60
  for (const removed of items) {
58
61
  if (this._equalsFunction(item, removed)) {
59
62
  return false;
@@ -61,20 +64,23 @@ class ArrayRepository {
61
64
  }
62
65
  return true;
63
66
  });
67
+ this.updateList(list);
64
68
  }
65
69
  async update(items) {
66
- this._list = this._list.map(existingItem => {
70
+ const list = this._list.map(existingItem => {
67
71
  const newItem = items.find(newItem => this._equalsFunction(existingItem, newItem));
68
72
  return newItem == undefined ? existingItem : newItem;
69
73
  });
74
+ this.updateList(list);
70
75
  }
71
76
  async insert(itemReference, items) {
72
77
  const itemPosition = this._list.indexOf(itemReference);
73
78
  if (itemPosition == -1) {
74
- this._list.push(...items);
79
+ this.push(items);
75
80
  return;
76
81
  }
77
- this._list = this._list.slice(0, itemPosition).concat(items).concat(this._list.slice(itemPosition));
82
+ const list = this._list.slice(0, itemPosition).concat(items).concat(this._list.slice(itemPosition));
83
+ this.updateList(list);
78
84
  }
79
85
  isOperating() {
80
86
  return true;
@@ -86,7 +92,15 @@ class ArrayRepository {
86
92
  return Promise.resolve(this._list.length);
87
93
  }
88
94
  getFromCache() {
89
- return ObjectUtils.copy(this._list);
95
+ if (this._listLastUpdate > this._listCopyLastUpdate) {
96
+ this._listCopyLastUpdate = this._listLastUpdate;
97
+ this._listCopy = ObjectUtils.copy(this._list);
98
+ }
99
+ return this._listCopy;
100
+ }
101
+ updateList(newList) {
102
+ this._list = newList;
103
+ this._listLastUpdate = Date.now();
90
104
  }
91
105
  }
92
106
 
@@ -536,7 +536,14 @@ const SnkApplication = /*@__PURE__*/ proxyCustomElement(class extends HTMLElemen
536
536
  const allAccess = {};
537
537
  allAccess['isSup'] = auths.isSup;
538
538
  Object.entries(AutorizationType).forEach((data) => {
539
- allAccess[data[0]] = auths.actions[data[1]] || false;
539
+ if (data[1] === AutorizationType.CLONE) {
540
+ const insertPermission = auths.actions[AutorizationType.INSERT] || false;
541
+ const clonePermission = auths.actions[AutorizationType.CLONE] || false;
542
+ allAccess[data[0]] = insertPermission && clonePermission;
543
+ }
544
+ else {
545
+ allAccess[data[0]] = auths.actions[data[1]] || false;
546
+ }
540
547
  });
541
548
  resolve(allAccess);
542
549
  }).catch(error => reject(error));
@@ -3,7 +3,7 @@ import { ApplicationContext } from '@sankhyalabs/core';
3
3
  import { V as VIEW_MODE } from './constants.js';
4
4
  import { A as AuthorizationConfig } from './AuthorizationConfig.js';
5
5
 
6
- const snkConfiguratorCss = ".sc-snk-configurator-h{--snk-configurator__button-close--padding-left:var(--space--medium, 12px);--snk-configurator__title--color:var(--title--primary, #2B3A54);--snk-configurator__title--font-family:var(--font-pattern, \"Roboto\");--snk-configurator__title--font-size:var(--title--large, 20px);--snk-configurator__title--font-weight:var(--text-weight--extra-large, 700);--snk-configurator__subtitle--color:var(--title--primary, #2B3A54);--snk-configurator__subtitle--font-family:var(--font-pattern, \"Roboto\");--snk-configurator__subtitle--font-size:var(--text--medium, 14px);--snk-configurator__subtitle--font-weight:var(--text-weight--large, 600);--snk-configurator__scrollbar--color-default:var(--scrollbar--default, #626e82);--snk-configurator__scrollbar--color-background:var(--scrollbar--background, #E5EAF0);--snk-configurator__scrollbar--color-hover:var(--scrollbar--hover, #2B3A54);--snk-configurator__scrollbar--color-clicked:var(--scrollbar--clicked, #a2abb9);--snk-configurator__scrollbar--border-radius:var(--border--radius-small, 6px);--snk-configurator__scrollbar--width:var(--space--medium, 12px)}.snk-configurator.sc-snk-configurator{display:grid;grid-template-rows:auto 1fr auto;max-height:100%;width:100%}.snk-configurator__collsable-box-action.sc-snk-configurator{width:100%}.snk-configurator__action-buttons.sc-snk-configurator{display:flex;flex-direction:row;justify-content:flex-end;gap:var(--space--medium)}.snk-configurator__outline.sc-snk-configurator{display:flex;flex-direction:column;gap:var(--space--small);margin-top:var(--space--small);margin-bottom:var(--space--large)}@media screen and (min-width: 480px){.snk-configurator.sc-snk-configurator{width:359px;max-width:359px}}.snk-configurator__button-config.sc-snk-configurator{--ez-button--min-width:100%}.snk-configurator__header.sc-snk-configurator{display:flex;justify-content:space-between;align-items:center;width:100%}.snk-configurator__title.sc-snk-configurator{display:flex;margin:0;line-height:normal;letter-spacing:0em;text-align:left;color:var(--snk-configurator__title--color);font-size:var(--snk-configurator__title--font-size);font-family:var(--snk-configurator__title--font-family);font-weight:var(--snk-configurator__title--font-weight)}.snk-configurator__subtitle.sc-snk-configurator{display:flex;margin:0;padding-top:var(--space--medium);padding-bottom:var(--space--small);color:var(--snk-configurator__subtitle--color);font-size:var(--snk-configurator__subtitle--font-size);font-family:var(--snk-configurator__subtitle--font-family);font-weight:var(--snk-configurator__subtitle--font-weight)}.snk-configurator__button-close.sc-snk-configurator{padding-left:var(--snk-configurator__button-close--padding-left)}.snk-configurator__main.sc-snk-configurator{overflow-y:auto;scrollbar-width:thin;margin:var(--space--medium) 0;scrollbar-color:var(--snk-configurator__scrollbar--color-clicked) var(--snk-configurator__scrollbar--color-background)}.snk-configurator__main.sc-snk-configurator::-webkit-scrollbar{background-color:var(--snk-configurator__scrollbar--color-background);width:var(--snk-configurator__scrollbar--width);max-width:var(--snk-configurator__scrollbar--width);min-width:var(--snk-configurator__scrollbar--width)}.snk-configurator__main.sc-snk-configurator::-webkit-scrollbar-track{background-color:var(--snk-configurator__scrollbar--color-background);border-radius:var(--snk-configurator__scrollbar--border-radius)}.snk-configurator__main.sc-snk-configurator::-webkit-scrollbar-thumb{background-color:var(--snk-configurator__scrollbar--color-default);border-radius:var(--snk-configurator__scrollbar--border-radius)}.snk-configurator__main.sc-snk-configurator::-webkit-scrollbar-thumb:vertical:hover,.snk-configurator__main.sc-snk-configurator::-webkit-scrollbar-thumb:horizontal:hover{background-color:var(--snk-configurator__scrollbar--color-hover)}.snk-configurator__main.sc-snk-configurator::-webkit-scrollbar-thumb:vertical:active,.snk-configurator__main.sc-snk-configurator::-webkit-scrollbar-thumb:horizontal:active{background-color:var(--snk-configurator__scrollbar--color-clicked)}";
6
+ const snkConfiguratorCss = ".sc-snk-configurator-h{--snk-configurator__button-close--padding-left:var(--space--medium, 12px);--snk-configurator__title--color:var(--title--primary, #2B3A54);--snk-configurator__title--font-family:var(--font-pattern, \"Roboto\");--snk-configurator__title--font-size:var(--title--large, 20px);--snk-configurator__title--font-weight:var(--text-weight--extra-large, 700);--snk-configurator__subtitle--color:var(--title--primary, #2B3A54);--snk-configurator__subtitle--font-family:var(--font-pattern, \"Roboto\");--snk-configurator__subtitle--font-size:var(--text--medium, 14px);--snk-configurator__subtitle--font-weight:var(--text-weight--large, 600);--snk-configurator__scrollbar--color-default:var(--scrollbar--default, #626e82);--snk-configurator__scrollbar--color-background:var(--scrollbar--background, #E5EAF0);--snk-configurator__scrollbar--color-hover:var(--scrollbar--hover, #2B3A54);--snk-configurator__scrollbar--color-clicked:var(--scrollbar--clicked, #a2abb9);--snk-configurator__scrollbar--border-radius:var(--border--radius-small, 6px);--snk-configurator__scrollbar--width:var(--space--small, 6px)}.snk-configurator.sc-snk-configurator{display:grid;grid-template-rows:auto 1fr auto;max-height:100%;width:100%}.snk-configurator__collsable-box-action.sc-snk-configurator{width:100%}.snk-configurator__action-buttons.sc-snk-configurator{display:flex;flex-direction:row;justify-content:flex-end;gap:var(--space--medium)}.snk-configurator__outline.sc-snk-configurator{display:flex;flex-direction:column;gap:var(--space--small);margin-top:var(--space--small);margin-bottom:var(--space--large)}@media screen and (min-width: 480px){.snk-configurator.sc-snk-configurator{width:359px;max-width:359px}}.snk-configurator__button-config.sc-snk-configurator{--ez-button--min-width:100%}.snk-configurator__header.sc-snk-configurator{display:flex;justify-content:space-between;align-items:center;width:100%}.snk-configurator__title.sc-snk-configurator{display:flex;margin:0;line-height:normal;letter-spacing:0em;text-align:left;color:var(--snk-configurator__title--color);font-size:var(--snk-configurator__title--font-size);font-family:var(--snk-configurator__title--font-family);font-weight:var(--snk-configurator__title--font-weight)}.snk-configurator__subtitle.sc-snk-configurator{display:flex;margin:0;padding-top:var(--space--medium);padding-bottom:var(--space--small);color:var(--snk-configurator__subtitle--color);font-size:var(--snk-configurator__subtitle--font-size);font-family:var(--snk-configurator__subtitle--font-family);font-weight:var(--snk-configurator__subtitle--font-weight)}.snk-configurator__button-close.sc-snk-configurator{padding-left:var(--snk-configurator__button-close--padding-left)}.snk-configurator__main.sc-snk-configurator{overflow-y:auto;scrollbar-width:thin;margin:var(--space--medium) 0;scrollbar-color:var(--snk-configurator__scrollbar--color-clicked) var(--snk-configurator__scrollbar--color-background)}.snk-configurator__main.sc-snk-configurator::-webkit-scrollbar{background-color:var(--snk-configurator__scrollbar--color-background);width:var(--snk-configurator__scrollbar--width);max-width:var(--snk-configurator__scrollbar--width);min-width:var(--snk-configurator__scrollbar--width)}.snk-configurator__main.sc-snk-configurator::-webkit-scrollbar-track{background-color:var(--snk-configurator__scrollbar--color-background);border-radius:var(--snk-configurator__scrollbar--border-radius)}.snk-configurator__main.sc-snk-configurator::-webkit-scrollbar-thumb{background-color:var(--snk-configurator__scrollbar--color-default);border-radius:var(--snk-configurator__scrollbar--border-radius)}.snk-configurator__main.sc-snk-configurator::-webkit-scrollbar-thumb:vertical:hover,.snk-configurator__main.sc-snk-configurator::-webkit-scrollbar-thumb:horizontal:hover{background-color:var(--snk-configurator__scrollbar--color-hover)}.snk-configurator__main.sc-snk-configurator::-webkit-scrollbar-thumb:vertical:active,.snk-configurator__main.sc-snk-configurator::-webkit-scrollbar-thumb:horizontal:active{background-color:var(--snk-configurator__scrollbar--color-clicked)}";
7
7
 
8
8
  const SnkConfigurator = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
9
9
  constructor() {
@@ -337,15 +337,6 @@ const SnkCrud$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
337
337
  .bind("F8", handleAddRecord.bind(this), { description: "Adiciona um novo registro.", element: this._element })
338
338
  .bind("F9", dataUnit.removeSelectedRecords.bind(dataUnit), { description: "Remove o registro selecionado.", element: this._element })
339
339
  .bind("ctrl + F9", dataUnit.removeSelectedRecords.bind(dataUnit), { description: "Remove o registro selecionado.", element: this._element })
340
- .bind("ctrl + .", () => {
341
- if (dataUnit.getSelectionInfo().records.length === 0) {
342
- return dataUnit.selectFirst();
343
- }
344
- return dataUnit.nextRecord();
345
- }, {
346
- description: "Avança para o próximo registro.", element: this._element
347
- })
348
- .bind("ctrl + ,", dataUnit.previousRecord.bind(dataUnit), { description: "Retorna ao registro anterior.", element: this._element })
349
340
  .bind("F5", async () => {
350
341
  const currentView = await this._viewStack.getSelectedIndex();
351
342
  if (VIEW_MODE.GRID === currentView) {
@@ -373,8 +364,6 @@ const SnkCrud$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
373
364
  .unbind("F8")
374
365
  .unbind("F9")
375
366
  .unbind("ctrl + F9")
376
- .unbind("ctrl + .")
377
- .unbind("ctrl + ,")
378
367
  .unbind("F5")
379
368
  .unbind("Escape");
380
369
  }
@@ -12,6 +12,13 @@ import './filter-item-type.enum.js';
12
12
  import './form-config-fetcher.js';
13
13
  import { d as defineCustomElement$1 } from './snk-exporter-email-sender2.js';
14
14
 
15
+ var IExportType;
16
+ (function (IExportType) {
17
+ IExportType["ALL"] = "all";
18
+ IExportType["PAGE"] = "page";
19
+ IExportType["SELECTION"] = "selection";
20
+ })(IExportType || (IExportType = {}));
21
+
15
22
  class ItemBuilder {
16
23
  constructor(getMessage, selectedNumber) {
17
24
  this._selectedNumber = 0;
@@ -348,17 +355,11 @@ class ClientSideExporterStrategy {
348
355
  const visibleColumns = getVisibleColumns(columns);
349
356
  return visibleColumns;
350
357
  }
351
- async getColumns(resolveProps) {
352
- var _a;
353
- if ((_a = getOptionKey(resolveProps === null || resolveProps === void 0 ? void 0 : resolveProps.exportOption)) === null || _a === void 0 ? void 0 : _a.includes("PDF")) {
354
- return await this.getParsedColumns();
355
- }
356
- return await this._provider.getColumnsMetadata();
357
- }
358
358
  async executeExport(resolveProps) {
359
+ var _a;
359
360
  const { methodName, gridTitle } = resolveProps;
360
- const records = await this._provider.getRecords();
361
- const columns = await this.getColumns(resolveProps);
361
+ const records = await this._provider.getRecords(resolveProps.type);
362
+ const columns = ((_a = getOptionKey(resolveProps === null || resolveProps === void 0 ? void 0 : resolveProps.exportOption)) === null || _a === void 0 ? void 0 : _a.includes("PDF")) ? await this.getParsedColumns() : await this._provider.getColumnsMetadata();
362
363
  const [serviceName, processor] = this.getExecutor(methodName);
363
364
  const payload = {
364
365
  serviceName,
@@ -538,7 +539,9 @@ const SnkDataExporter = /*@__PURE__*/ proxyCustomElement(class extends HTMLEleme
538
539
  });
539
540
  }
540
541
  getExporterStrategy() {
541
- return this.provider.getRecords == undefined ? new ServerSideExporterStrategy(this.provider) : new ClientSideExporterStrategy(this.provider);
542
+ return this.provider.getRecords == undefined
543
+ ? new ServerSideExporterStrategy(this.provider)
544
+ : new ClientSideExporterStrategy(this.provider);
542
545
  }
543
546
  getOptionKey(option) {
544
547
  return Object.keys(DataExporterOption)
@@ -548,12 +551,12 @@ const SnkDataExporter = /*@__PURE__*/ proxyCustomElement(class extends HTMLEleme
548
551
  }
549
552
  getExportType(option) {
550
553
  if (option === DataExporterOption.EXPORT_ALL_RECORDS_TO_PDF || option === DataExporterOption.EXPORT_ALL_RECORDS_TO_XLS) {
551
- return 'all';
554
+ return IExportType.ALL;
552
555
  }
553
556
  if (option === DataExporterOption.EXPORT_PAGE_TO_PDF || option === DataExporterOption.EXPORT_PAGE_TO_XLS) {
554
- return 'page';
557
+ return IExportType.PAGE;
555
558
  }
556
- return 'selection';
559
+ return IExportType.SELECTION;
557
560
  }
558
561
  async dispatchExporter(option) {
559
562
  var _a, _b, _c;
@@ -777,4 +780,4 @@ function defineCustomElement() {
777
780
  } });
778
781
  }
779
782
 
780
- export { SnkDataExporter as S, defineCustomElement as d };
783
+ export { IExportType as I, SnkDataExporter as S, defineCustomElement as d };
@@ -139,7 +139,7 @@ function buildNumber(item) {
139
139
  const variation = props.variation;
140
140
  if (variation === FilterNumberVariation.INTERVAL) {
141
141
  const { start, end } = value !== null && value !== void 0 ? value : { start: 0, end: 0 };
142
- if (start && end) {
142
+ if (!isNaN(start) && !isNaN(end)) {
143
143
  return {
144
144
  name: id,
145
145
  expression: props.intervalExpression.fullfill,
@@ -149,7 +149,7 @@ function buildNumber(item) {
149
149
  ]
150
150
  };
151
151
  }
152
- if (start) {
152
+ if (!isNaN(start)) {
153
153
  return {
154
154
  name: id,
155
155
  expression: props.intervalExpression.onlystart,
@@ -158,7 +158,7 @@ function buildNumber(item) {
158
158
  ]
159
159
  };
160
160
  }
161
- if (end) {
161
+ if (!isNaN(end)) {
162
162
  return {
163
163
  name: id,
164
164
  expression: props.intervalExpression.onlyend,
@@ -253,7 +253,7 @@ class SnkFilterModalFactory {
253
253
  }
254
254
  }
255
255
 
256
- const snkFilterBarCss = ".sc-snk-filter-bar-h{display:grid;grid-template-columns:1fr minmax(100px, 100%) 1fr 1fr;--snk-personalized-filter--z-index:var(--elevation--20, 20);--snk-personalized-filter--background-color:var(--background--xlight, #fff)}.snk-filter-bar__title.sc-snk-filter-bar{max-width:260px;display:inline-block;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;font-size:16px;font-family:var(--font-pattern, Arial);font-weight:var(--text-weight--large, 600);color:var(--color--title-primary, #2B3A54);margin-top:8px}[data-mode=\"hidden\"].sc-snk-filter-bar-h{width:0px;height:0px}[data-mode=\"button\"].sc-snk-filter-bar-h{grid-template-columns:1fr;width:fit-content}.snk-filter__popover-container.sc-snk-filter-bar{display:flex;cursor:auto}.filter-bar__personalized-filter.sc-snk-filter-bar{display:flex;flex-direction:column;position:fixed;top:0;left:0;width:100%;height:100%;overflow:auto;z-index:var(--snk-personalized-filter--z-index);background-color:var(--snk-personalized-filter--background-color)}.snk-filter__popover.sc-snk-filter-bar{display:flex;flex-direction:column;position:absolute;width:fit-content;height:fit-content;min-width:265px;background-color:var(--background--xlight, #fff);border-radius:var(--border--radius-medium, 12px);box-shadow:var(--shadow, 0px 0px 16px 0px #000)}.snk-filter-item__editor-header.sc-snk-filter-bar{flex-grow:1;font-weight:var(--text-weight--medium, 400);color:var(--color--title-primary, #2B3A54)}.snk-filter__popover-rule.sc-snk-filter-bar{border-style:solid;border-color:var(--color--disable-secondary, #F2F5F8);border-radius:1px;border-width:1px;width:100%}.editor__ez-check.sc-snk-filter-bar{--ez-check__label--padding-left:0}.snk-filter-item__editor-header-button.sc-snk-filter-bar{cursor:pointer;background-color:transparent;border:none;padding:3px;outline-color:var(--color--primary)}.snk-filter-bar__divider.sc-snk-filter-bar{margin-bottom:var(--space--small)}.snk-filter-bar__scroller.sc-snk-filter-bar{height:calc(100% + var(--space-extra-small, 3px))}.snk-filter-bar__filter-item-container.sc-snk-filter-bar{display:flex;align-items:start}.snk-filter-bar__scroller.sc-snk-filter-bar .sc-snk-filter-bar:first-child{margin-left:var(--space-extra-small, 3px)}.snk-filter-bar__filter-list-items-container.sc-snk-filter-bar{overflow-y:auto;max-height:360px;margin-top:var(--space--small, 6px)}.snk-filter-bar__filter-list-item.sc-snk-filter-bar{cursor:pointer;border-radius:var(--border--radius-small, 6px);border:none;background-color:transparent}.snk-filter-bar__filter-list-item__label.sc-snk-filter-bar{color:var(--title--primary)}.snk-filter-bar__filter-list-item__label--secondary.sc-snk-filter-bar{color:var(--text--primary)}.snk-filter-bar__filter-list-item__icon.sc-snk-filter-bar{--ez-icon--color:var(--title--primary)}.snk-filter-bar__filter-list-item__icon--secondary.sc-snk-filter-bar{--ez-icon--color:var(--text--secondary)}.snk-filter-bar__filter-list-item.sc-snk-filter-bar:focus-visible{outline:none;background-color:var(--background--medium)}.snk-filter-bar__filter-list-item.sc-snk-filter-bar:hover{background-color:var(--background--medium)}.snk-filter-bar__filter-list-items-container--empty.sc-snk-filter-bar{width:100%;height:100px;display:flex;justify-content:center;align-self:center;align-items:center}.snk-filter-bar__filter-list-items-button--active.sc-snk-filter-bar{position:relative}.snk-filter-bar__filter-list-items-button--active.sc-snk-filter-bar::after{display:flex;position:absolute;content:\"\";width:8px;height:8px;top:7px;left:17px;background-color:var(--icon--alert--color, #008561);border-radius:50%}.snk-filter-bar__filter-modal-item.sc-snk-filter-bar{--modal-item-border-width:2px;display:flex;flex-direction:row;margin-left:var(--modal-item-border-width);border-radius:var(--border--radius-medium, 12px);background-color:var(--background--medium, #f0f3f7);border:none;width:100%}.snk-filter-bar__filter-modal-item.sc-snk-filter-bar:focus-visible{outline:var(--color--primary) solid var(--modal-item-border-width)}.snk-filter-bar__filter-modal-item__check.sc-snk-filter-bar{width:auto}.snk-filter-bar__filter-modal-item__label.sc-snk-filter-bar{font-weight:var(--text-weight--medium)}.snk-filter-bar__filter-modal-content.sc-snk-filter-bar{display:grid;grid-template-rows:auto auto 1fr auto;width:99%;height:100%}";
256
+ const snkFilterBarCss = ".sc-snk-filter-bar-h{display:grid;grid-template-columns:1fr minmax(100px, 100%) 1fr 1fr;--snk-personalized-filter--z-index:var(--elevation--20, 20);--snk-personalized-filter--background-color:var(--background--xlight, #fff)}.snk-filter-bar__title.sc-snk-filter-bar{max-width:260px;display:inline-block;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;font-size:16px;font-family:var(--font-pattern, Arial);font-weight:var(--text-weight--large, 600);color:var(--color--title-primary, #2B3A54);margin-top:12px}[data-mode=\"hidden\"].sc-snk-filter-bar-h{width:0px;height:0px}[data-mode=\"button\"].sc-snk-filter-bar-h{grid-template-columns:1fr;width:fit-content}.snk-filter__popover-container.sc-snk-filter-bar{display:flex;cursor:auto}.filter-bar__personalized-filter.sc-snk-filter-bar{display:flex;flex-direction:column;position:fixed;top:0;left:0;width:100%;height:100%;overflow:auto;z-index:var(--snk-personalized-filter--z-index);background-color:var(--snk-personalized-filter--background-color)}.snk-filter__popover.sc-snk-filter-bar{display:flex;flex-direction:column;position:absolute;width:fit-content;height:fit-content;min-width:265px;background-color:var(--background--xlight, #fff);border-radius:var(--border--radius-medium, 12px);box-shadow:var(--shadow, 0px 0px 16px 0px #000)}.snk-filter-item__editor-header.sc-snk-filter-bar{flex-grow:1;font-weight:var(--text-weight--medium, 400);color:var(--color--title-primary, #2B3A54)}.snk-filter__popover-rule.sc-snk-filter-bar{border-style:solid;border-color:var(--color--disable-secondary, #F2F5F8);border-radius:1px;border-width:1px;width:100%}.editor__ez-check.sc-snk-filter-bar{--ez-check__label--padding-left:0}.snk-filter-item__editor-header-button.sc-snk-filter-bar{cursor:pointer;background-color:transparent;border:none;padding:3px;outline-color:var(--color--primary)}.snk-filter-bar__divider.sc-snk-filter-bar{margin-bottom:var(--space--small)}.snk-filter-bar__scroller.sc-snk-filter-bar{height:calc(100% + var(--space-extra-small, 0px))}.snk-filter-bar__filter-item-container.sc-snk-filter-bar{display:flex;align-items:start}.snk-filter-bar__scroller.sc-snk-filter-bar .sc-snk-filter-bar:first-child{margin-left:var(--space-extra-small, 3px)}.snk-filter-bar__filter-list-items-container.sc-snk-filter-bar{overflow-y:auto;max-height:360px;margin-top:var(--space--small, 6px)}.snk-filter-bar__filter-list-item.sc-snk-filter-bar{cursor:pointer;border-radius:var(--border--radius-small, 6px);border:none;background-color:transparent}.snk-filter-bar__filter-list-item__label.sc-snk-filter-bar{color:var(--title--primary)}.snk-filter-bar__filter-list-item__label--secondary.sc-snk-filter-bar{color:var(--text--primary)}.snk-filter-bar__filter-list-item__icon.sc-snk-filter-bar{--ez-icon--color:var(--title--primary)}.snk-filter-bar__filter-list-item__icon--secondary.sc-snk-filter-bar{--ez-icon--color:var(--text--secondary)}.snk-filter-bar__filter-list-item.sc-snk-filter-bar:focus-visible{outline:none;background-color:var(--background--medium)}.snk-filter-bar__filter-list-item.sc-snk-filter-bar:hover{background-color:var(--background--medium)}.snk-filter-bar__filter-list-items-container--empty.sc-snk-filter-bar{width:100%;height:100px;display:flex;justify-content:center;align-self:center;align-items:center}.snk-filter-bar__filter-list-items-button--active.sc-snk-filter-bar{position:relative}.snk-filter-bar__filter-list-items-button--active.sc-snk-filter-bar::after{display:flex;position:absolute;content:\"\";width:8px;height:8px;top:7px;left:17px;background-color:var(--icon--alert--color, #008561);border-radius:50%}.snk-filter-bar__filter-modal-item.sc-snk-filter-bar{--modal-item-border-width:2px;display:flex;flex-direction:row;margin-left:var(--modal-item-border-width);border-radius:var(--border--radius-medium, 12px);background-color:var(--background--medium, #f0f3f7);border:none;width:100%}.snk-filter-bar__filter-modal-item.sc-snk-filter-bar:focus-visible{outline:var(--color--primary) solid var(--modal-item-border-width)}.snk-filter-bar__filter-modal-item__check.sc-snk-filter-bar{width:auto}.snk-filter-bar__filter-modal-item__label.sc-snk-filter-bar{font-weight:var(--text-weight--medium)}.snk-filter-bar__filter-modal-content.sc-snk-filter-bar{display:grid;grid-template-rows:auto auto 1fr auto;width:99%;height:100%}";
257
257
 
258
258
  const SnkFilterBar = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
259
259
  constructor() {
@@ -735,7 +735,7 @@ const SnkFilterBar = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement
735
735
  if (this.mode !== "regular") {
736
736
  return (h(Host, { "data-mode": this.mode }, this.getPersonalizedFilterVariableItems(), this.mode === 'button' && (h("ez-button", { class: "ez-margin-left--medium", size: "small", label: this.getMessage('snkFilterBar.filters', undefined, 'Filtros'), onClick: this.showFilterModal.bind(this) }))));
737
737
  }
738
- return (h(Host, null, h("div", null, h("span", { class: "snk-filter-bar__title", title: this.title, "data-tooltip": this.title, "data-flow": "bottom" }, this.title)), h("ez-scroller", { class: "snk-filter-bar__scroller", direction: EzScrollDirection.HORIZONTAL, activeShadow: true, locked: this.scrollerLocked }, h("section", { class: "snk-filter-bar__filter-item-container" }, this.getFilterItems())), h("ez-button", { class: "ez-padding-left--medium", size: "small", label: this.getMessage('snkFilterBar.filters', undefined, 'Filtros'), onClick: this.showFilterModal.bind(this) }, h("ez-icon", { slot: "leftIcon", iconName: "plus", class: "ez-padding-right--small" }))));
738
+ return (h(Host, null, h("div", null, h("span", { class: "snk-filter-bar__title", title: this.title, "data-tooltip": this.title, "data-flow": "bottom" }, this.title)), h("ez-scroller", { class: "snk-filter-bar__scroller", direction: EzScrollDirection.HORIZONTAL, activeShadow: true, locked: this.scrollerLocked }, h("section", { class: "snk-filter-bar__filter-item-container" }, this.getFilterItems())), h("ez-button", { class: "ez-padding-left--medium ez-margin-top--extra-small", size: "small", label: this.getMessage('snkFilterBar.filters', undefined, 'Filtros'), onClick: this.showFilterModal.bind(this) }, h("ez-icon", { slot: "leftIcon", iconName: "plus", class: "ez-padding-right--small" }))));
739
739
  }
740
740
  get _element() { return this; }
741
741
  static get watchers() { return {
@@ -33,6 +33,7 @@ const SnkFilterItem = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement
33
33
  this._filterItemElement.scrollIntoView({ behavior: "auto", block: "nearest", inline: "nearest" });
34
34
  if (open) {
35
35
  this._closeCallback = resolve;
36
+ this._chipElement.blur();
36
37
  window.requestAnimationFrame(() => {
37
38
  this._floatingID = FloatingManager.float(this._popover, this._popoverContainer, this.getFloatOptions());
38
39
  this._popover.show();
@@ -207,13 +208,13 @@ const SnkFilterItem = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement
207
208
  }
208
209
  if (type === FilterItemType.NUMBER && props.variation === FilterNumberVariation.INTERVAL) {
209
210
  const { start, end } = value;
210
- if (start && end) {
211
+ if (!isNaN(start) && !isNaN(end)) {
211
212
  return this.getMessage('snkFilterBar.fullIntervalTooltip', { LABEL: label, START_LABEL: start, END_LABEL: end });
212
213
  }
213
- if (start) {
214
+ if (!isNaN(start)) {
214
215
  return `${label}: ${this.getMessage('snkFilterBar.onlyStartToltip')} ${Number(start)}`;
215
216
  }
216
- if (end) {
217
+ if (!isNaN(end)) {
217
218
  return `${label}: ${this.getMessage('snkFilterBar.onlyEndToltip')} ${Number(end)}`;
218
219
  }
219
220
  }
@@ -23,7 +23,7 @@ const SnkFilterPeriod = /*@__PURE__*/ proxyCustomElement(class extends HTMLEleme
23
23
  if (this.getVariation() === FilterNumberVariation.INTERVAL) {
24
24
  const start = this._startInterval.value;
25
25
  const end = this._endInterval.value;
26
- this.value = (start || end ? { start, end } : undefined);
26
+ this.value = (!isNaN(start) || !isNaN(end) ? { start, end } : undefined);
27
27
  this.valueChanged.emit(this.value);
28
28
  return;
29
29
  }
@@ -6,7 +6,7 @@ import { C as ConfigStorage } from './ConfigStorage.js';
6
6
  import { O as ORDER_VALUES } from './constants.js';
7
7
  import { d as defineCustomElement$1 } from './snk-select-box2.js';
8
8
 
9
- const snkGridConfigCss = ".sc-snk-grid-config-h{--snk-grid-config__footer--padding-top:var(--space--medium, 12px);--snk-grid-config__main--padding-right:var(--space--medium, 12px);--snk-grid-config__tabselector-container--padding:var(--space--medium, 12px);--snk-grid-config__button-close--padding-left:var(--space--medium, 12px);--snk-grid-config__title--color:var(--title--primary, #2B3A54);--snk-grid-config__title--font-family:var(--font-pattern, \"Roboto\");--snk-grid-config__title--font-size:var(--title--large, 20px);--snk-grid-config__title--font-weight:var(--text-weight--extra-large, 700);--snk-grid-config__subtitle--font-family:var(--font-pattern, \"Roboto\");--snk-grid-config__subtitle--font-size:var(--text--medium, 14px);--snk-grid-config__group--font-family:var(--font-pattern, \"Roboto\");--snk-grid-config__group--font-size:var(--text--medium, 14px);--snk-grid-config__group--font-weight:var(--text-weight--large, 600);--snk-grid-config__group--padding-bottom:var(--space-small, 6px);--snk-grid-config__scrollbar--color-default:var(--scrollbar--default, #626e82);--snk-grid-config__scrollbar--color-background:var(--scrollbar--background, #E5EAF0);--snk-grid-config__scrollbar--color-hover:var(--scrollbar--hover, #2B3A54);--snk-grid-config__scrollbar--color-clicked:var(--scrollbar--clicked, #a2abb9);--snk-grid-config__scrollbar--border-radius:var(--border--radius-small, 6px);--snk-grid-config__scrollbar--width:var(--space--medium, 12px);display:grid;grid-template-rows:auto 1fr auto;max-height:100%;width:100%}@media screen and (min-width: 480px){.sc-snk-grid-config-h{width:359px;max-width:359px}}.padding-right--medium.sc-snk-grid-config{padding-right:var(--space--medium)}ez-list.sc-snk-grid-config{height:100%}.height-calc.sc-snk-grid-config{max-height:calc(100% - 24px)}.grid-config__footer.sc-snk-grid-config{display:flex;justify-content:flex-end;width:100%;padding-top:var(--snk-grid-config__footer--padding-top)}.hidden.sc-snk-grid-config{display:none}.tabselector-container.sc-snk-grid-config{padding:var(--snk-grid-config__tabselector-container--padding) 0}.button-close.sc-snk-grid-config{padding-left:var(--snk-grid-config__button-close--padding-left)}.title-container.sc-snk-grid-config{display:flex;justify-content:space-between;align-items:center;width:100%}.title.sc-snk-grid-config{display:flex;margin:0;line-height:normal;letter-spacing:0em;text-align:left;color:var(--snk-grid-config__title--color);font-size:var(--snk-grid-config__title--font-size);font-family:var(--snk-grid-config__title--font-family);font-weight:var(--snk-grid-config__title--font-weight)}.subtitle.sc-snk-grid-config{color:var(--text--primary);font-size:var(--snk-grid-config__subtitle--font-size);font-family:var(--snk-grid-config__subtitle--font-family)}.grid-config__main.sc-snk-grid-config{overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--snk-grid-config__scrollbar--color-clicked) var(--snk-grid-config__scrollbar--color-background);padding-right:var(--snk-grid-config__main--padding-right)}.grid-config__main.sc-snk-grid-config::-webkit-scrollbar{width:var(--snk-grid-config__scrollbar--width);max-width:var(--snk-grid-config__scrollbar--width);min-width:var(--snk-grid-config__scrollbar--width);background-color:var(--snk-grid-config__scrollbar--color-background)}.grid-config__main.sc-snk-grid-config::-webkit-scrollbar-track{background-color:var(--snk-grid-config__scrollbar--color-background);border-radius:var(--snk-grid-config__scrollbar--border-radius)}.grid-config__main.sc-snk-grid-config::-webkit-scrollbar-thumb{background-color:var(--snk-grid-config__scrollbar--color-default);border-radius:var(--snk-grid-config__scrollbar--border-radius)}.grid-config__main.sc-snk-grid-config::-webkit-scrollbar-thumb:vertical:hover,.grid-config__main.sc-snk-grid-config::-webkit-scrollbar-thumb:horizontal:hover{background-color:var(--snk-grid-config__scrollbar--color-hover)}.grid-config__main.sc-snk-grid-config::-webkit-scrollbar-thumb:vertical:active,.grid-config__main.sc-snk-grid-config::-webkit-scrollbar-thumb:horizontal:active{background-color:var(--snk-grid-config__scrollbar--color-clicked)}.group-name.sc-snk-grid-config{font-family:var(--snk-grid-config__group--font-family);font-size:var(--snk-grid-config__group--font-size);font-weight:var(--snk-grid-config__group--font-weight);padding-bottom:var(--snk-grid-config__group--padding-bottom)}";
9
+ const snkGridConfigCss = ".sc-snk-grid-config-h{--snk-grid-config__footer--padding-top:var(--space--medium, 12px);--snk-grid-config__main--padding-right:var(--space--medium, 12px);--snk-grid-config__tabselector-container--padding:var(--space--medium, 12px);--snk-grid-config__button-close--padding-left:var(--space--medium, 12px);--snk-grid-config__title--color:var(--title--primary, #2B3A54);--snk-grid-config__title--font-family:var(--font-pattern, \"Roboto\");--snk-grid-config__title--font-size:var(--title--large, 20px);--snk-grid-config__title--font-weight:var(--text-weight--extra-large, 700);--snk-grid-config__subtitle--font-family:var(--font-pattern, \"Roboto\");--snk-grid-config__subtitle--font-size:var(--text--medium, 14px);--snk-grid-config__group--font-family:var(--font-pattern, \"Roboto\");--snk-grid-config__group--font-size:var(--text--medium, 14px);--snk-grid-config__group--font-weight:var(--text-weight--large, 600);--snk-grid-config__group--padding-bottom:var(--space-small, 6px);--snk-grid-config__scrollbar--color-default:var(--scrollbar--default, #626e82);--snk-grid-config__scrollbar--color-background:var(--scrollbar--background, #E5EAF0);--snk-grid-config__scrollbar--color-hover:var(--scrollbar--hover, #2B3A54);--snk-grid-config__scrollbar--color-clicked:var(--scrollbar--clicked, #a2abb9);--snk-grid-config__scrollbar--border-radius:var(--border--radius-small, 6px);--snk-grid-config__scrollbar--width:var(--space--small, 6px);display:grid;grid-template-rows:auto 1fr auto;max-height:100%;width:100%}@media screen and (min-width: 480px){.sc-snk-grid-config-h{width:359px;max-width:359px}}.padding-right--medium.sc-snk-grid-config{padding-right:var(--space--medium)}ez-list.sc-snk-grid-config{height:100%}.height-calc.sc-snk-grid-config{max-height:calc(100% - 24px)}.grid-config__footer.sc-snk-grid-config{display:flex;justify-content:flex-end;width:100%;padding-top:var(--snk-grid-config__footer--padding-top)}.hidden.sc-snk-grid-config{display:none}.tabselector-container.sc-snk-grid-config{padding:var(--snk-grid-config__tabselector-container--padding) 0}.button-close.sc-snk-grid-config{padding-left:var(--snk-grid-config__button-close--padding-left)}.title-container.sc-snk-grid-config{display:flex;justify-content:space-between;align-items:center;width:100%}.title.sc-snk-grid-config{display:flex;margin:0;line-height:normal;letter-spacing:0em;text-align:left;color:var(--snk-grid-config__title--color);font-size:var(--snk-grid-config__title--font-size);font-family:var(--snk-grid-config__title--font-family);font-weight:var(--snk-grid-config__title--font-weight)}.subtitle.sc-snk-grid-config{color:var(--text--primary);font-size:var(--snk-grid-config__subtitle--font-size);font-family:var(--snk-grid-config__subtitle--font-family)}.grid-config__main.sc-snk-grid-config{overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--snk-grid-config__scrollbar--color-clicked) var(--snk-grid-config__scrollbar--color-background);padding-right:var(--snk-grid-config__main--padding-right)}.grid-config__main.sc-snk-grid-config::-webkit-scrollbar{width:var(--snk-grid-config__scrollbar--width);max-width:var(--snk-grid-config__scrollbar--width);min-width:var(--snk-grid-config__scrollbar--width);background-color:var(--snk-grid-config__scrollbar--color-background)}.grid-config__main.sc-snk-grid-config::-webkit-scrollbar-track{background-color:var(--snk-grid-config__scrollbar--color-background);border-radius:var(--snk-grid-config__scrollbar--border-radius)}.grid-config__main.sc-snk-grid-config::-webkit-scrollbar-thumb{background-color:var(--snk-grid-config__scrollbar--color-default);border-radius:var(--snk-grid-config__scrollbar--border-radius)}.grid-config__main.sc-snk-grid-config::-webkit-scrollbar-thumb:vertical:hover,.grid-config__main.sc-snk-grid-config::-webkit-scrollbar-thumb:horizontal:hover{background-color:var(--snk-grid-config__scrollbar--color-hover)}.grid-config__main.sc-snk-grid-config::-webkit-scrollbar-thumb:vertical:active,.grid-config__main.sc-snk-grid-config::-webkit-scrollbar-thumb:horizontal:active{background-color:var(--snk-grid-config__scrollbar--color-clicked)}.group-name.sc-snk-grid-config{font-family:var(--snk-grid-config__group--font-family);font-size:var(--snk-grid-config__group--font-size);font-weight:var(--snk-grid-config__group--font-weight);padding-bottom:var(--snk-grid-config__group--padding-bottom)}";
10
10
 
11
11
  const SnkGridConfig = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
12
12
  constructor() {
@@ -2,8 +2,8 @@ import { proxyCustomElement, HTMLElement, createEvent, h, Fragment } from '@sten
2
2
  import { Action, ElementIDUtils, ApplicationContext, StringUtils } from '@sankhyalabs/core';
3
3
  import { T as TaskbarElement, d as defineCustomElement$2 } from './snk-taskbar2.js';
4
4
  import { C as ConfigStorage } from './ConfigStorage.js';
5
- import { P as PresentationMode } from './ISave.js';
6
- import { C as CommonsExporter, T as TaskbarProcessor, S as SnkMultiSelectionListDataSource, o as openFieldSearch, a as CrudUtils, R as RmPrecisionCustomValueFormatter, c as ContinuousInsertUtils, b as buildFieldSearch } from './ContinuousInsertUtils.js';
5
+ import { P as PresentationMode, E as ExporterStrategy } from './ISave.js';
6
+ import { C as CommonsExporter, T as TaskbarProcessor, S as SnkMultiSelectionListDataSource, o as openFieldSearch, a as CrudUtils, R as RmPrecisionCustomValueFormatter, c as ContinuousInsertUtils, b as buildFieldSearch, d as ClientSideExporterProvider } from './ContinuousInsertUtils.js';
7
7
  import { s as store } from './index2.js';
8
8
  import { SelectionMode } from '@sankhyalabs/core/dist/dataunit/DataUnit';
9
9
  import './DataFetcher.js';
@@ -86,7 +86,7 @@ class ServerSideExporterProvider extends CommonsExporter {
86
86
  }
87
87
  }
88
88
 
89
- const snkGridCss = ".sc-snk-grid-h{--snk-grid-min-height:300px;--snk-grid-padding:var(--space--small)}.snk-grid__container.sc-snk-grid{display:flex;height:100%;width:100%;padding:var(--snk-grid-padding)}.snk-grid__header.sc-snk-grid{width:100%;display:flex;flex-wrap:nowrap;justify-content:flex-end}.snk-grid__filter-bar.sc-snk-grid{width:100%}.snk-grid__header-divider.sc-snk-grid{margin-bottom:var(--space--medium)}.snk-grid__table.sc-snk-grid{min-height:var(--snk-grid-min-height)}.snk-grid-container__without-shadow.sc-snk-grid{--ezgrid__container--shadow:unset}";
89
+ const snkGridCss = ".sc-snk-grid-h{--snk-grid-min-height:300px;--snk-grid-padding:var(--space--small)}.snk-grid__container.sc-snk-grid{display:flex;height:100%;width:100%;padding:var(--snk-grid-padding)}.snk-grid__header.sc-snk-grid{width:100%;display:flex;flex-wrap:nowrap;justify-content:flex-end}.snk-grid__filter-bar.sc-snk-grid{width:100%}.snk-grid__header-divider.sc-snk-grid{margin-bottom:var(--space--medium)}.snk-grid__table.sc-snk-grid{min-height:var(--snk-grid-min-height)}.snk-grid-container__without-shadow.sc-snk-grid{--ezgrid__container--shadow:unset}.snk-grid-container__footer.sc-snk-grid{background-color:var(--background--xlight, #FFF);border-radius:0 0 var(--border--radius-medium) var(--border--radius-medium);box-shadow:var(--shadow--small)}";
90
90
 
91
91
  const SnkGrid = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
92
92
  constructor() {
@@ -156,6 +156,7 @@ const SnkGrid = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
156
156
  this.autoFocus = true;
157
157
  this.enableGridInsert = false;
158
158
  this.outlineMode = false;
159
+ this.strategyExporter = ExporterStrategy.SERVER_SIDE;
159
160
  }
160
161
  reloadConfig() {
161
162
  this.loadConfig();
@@ -291,10 +292,24 @@ const SnkGrid = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
291
292
  this._gridConfig = config;
292
293
  CrudUtils.assertDefaultSorting(this._gridConfig, this._dataUnit);
293
294
  }
295
+ fixColumNameCharset(columnName) {
296
+ try {
297
+ return decodeURIComponent(escape(columnName));
298
+ }
299
+ catch (e) {
300
+ return columnName;
301
+ }
302
+ }
303
+ normalizeGridConfig(config) {
304
+ if (!config)
305
+ return config;
306
+ const columnsMapped = config.columns.map(column => (Object.assign(Object.assign({}, column), { name: this.fixColumNameCharset(column.name) })));
307
+ return Object.assign(Object.assign({}, config), { columns: columnsMapped });
308
+ }
294
309
  loadConfig() {
295
310
  ConfigStorage.loadGridConfig(this.configName, this.resourceID)
296
311
  .then((config) => {
297
- this.setGridConfig(config);
312
+ this.setGridConfig(this.normalizeGridConfig(config));
298
313
  })
299
314
  .catch((error) => {
300
315
  console.warn(error);
@@ -306,12 +321,12 @@ const SnkGrid = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
306
321
  }
307
322
  }
308
323
  gridConfigChangeHandler(evt) {
309
- const config = evt.detail;
324
+ const config = this.normalizeGridConfig(evt.detail);
310
325
  ConfigStorage.saveGridConfig(config, this.configName, this.resourceID);
311
326
  evt.stopPropagation();
312
327
  }
313
328
  modalConfigChangeHandler(evt) {
314
- const config = evt.detail;
329
+ const config = this.normalizeGridConfig(evt.detail);
315
330
  this._grid.setColumnsState(config.columns)
316
331
  .then(() => {
317
332
  this.setGridConfig(config);
@@ -321,7 +336,9 @@ const SnkGrid = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
321
336
  evt.stopPropagation();
322
337
  }
323
338
  async dataExporterProviderStore() {
324
- const dataExporterProvider = new ServerSideExporterProvider(this._dataUnit, this._grid);
339
+ const dataExporterProvider = this.strategyExporter === ExporterStrategy.SERVER_SIDE
340
+ ? new ServerSideExporterProvider(this._dataUnit, this._grid)
341
+ : new ClientSideExporterProvider(this._dataUnit, this._grid);
325
342
  store.set("exporterProviders", Object.assign(Object.assign({}, store.get("exporterProviders")), { [this.configName]: dataExporterProvider }));
326
343
  }
327
344
  addElementID() {
@@ -547,7 +564,7 @@ const SnkGrid = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
547
564
  return undefined;
548
565
  }
549
566
  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--extra-small" }, this._showSnkFilterBar &&
550
- 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", "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' }, 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 }, 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 }, 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), selectedIndex: 0, configName: this.configName, onConfigChange: (evt) => this.modalConfigChangeHandler(evt), onConfigCancel: () => this.closeGridConfig(), resourceID: this.resourceID }))));
567
+ 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", "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' }, 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 }, 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 }, h("slot", { name: this.gridHeaderCustomSlotId }))), h("div", { class: "ez-col ez-col--sd-12 snk-grid-container__footer" }, 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), selectedIndex: 0, configName: this.configName, onConfigChange: (evt) => this.modalConfigChangeHandler(evt), onConfigCancel: () => this.closeGridConfig(), resourceID: this.resourceID }))));
551
568
  }
552
569
  get _element() { return this; }
553
570
  static get watchers() { return {
@@ -582,6 +599,7 @@ const SnkGrid = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
582
599
  "autoFocus": [4, "auto-focus"],
583
600
  "enableGridInsert": [4, "enable-grid-insert"],
584
601
  "outlineMode": [4, "outline-mode"],
602
+ "strategyExporter": [1025, "strategy-exporter"],
585
603
  "_dataUnit": [32],
586
604
  "_dataState": [32],
587
605
  "_gridConfig": [32],