@sankhyalabs/sankhyablocks 0.0.0-bugfix-dev-KB-55889.1 → 0.0.0-bugfix-dev-KB-72883.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 (115) hide show
  1. package/dist/cjs/{IExporterProvider-9ac15aaf.js → ContinuousInsertUtils-29b65619.js} +36 -3
  2. package/dist/cjs/{SnkMessageBuilder-cceebbae.js → SnkMessageBuilder-bae64d0d.js} +5 -1
  3. package/dist/cjs/{dataunit-fetcher-4b12f70c.js → dataunit-fetcher-f89461c1.js} +45 -17
  4. package/dist/cjs/{field-search-f56aa7d6.js → field-search-68e34bf4.js} +5 -1
  5. package/dist/cjs/loader.cjs.js +1 -1
  6. package/dist/cjs/sankhyablocks.cjs.js +1 -1
  7. package/dist/cjs/snk-actions-button_4.cjs.entry.js +1 -1
  8. package/dist/cjs/snk-application.cjs.entry.js +2 -2
  9. package/dist/cjs/snk-attach.cjs.entry.js +2 -4
  10. package/dist/cjs/snk-crud.cjs.entry.js +5 -2
  11. package/dist/cjs/snk-data-exporter.cjs.entry.js +3 -3
  12. package/dist/cjs/{snk-data-unit-ed17da6b.js → snk-data-unit-47202e42.js} +24 -18
  13. package/dist/cjs/snk-data-unit.cjs.entry.js +3 -3
  14. package/dist/cjs/snk-detail-view.cjs.entry.js +4 -4
  15. package/dist/cjs/snk-filter-bar.cjs.entry.js +19 -15
  16. package/dist/cjs/snk-filter-checkbox-list.cjs.entry.js +1 -1
  17. package/dist/cjs/snk-grid.cjs.entry.js +53 -14
  18. package/dist/cjs/{snk-guides-viewer-866447ab.js → snk-guides-viewer-68777d37.js} +8 -4
  19. package/dist/cjs/snk-guides-viewer.cjs.entry.js +3 -3
  20. package/dist/cjs/snk-simple-bar.cjs.entry.js +1 -1
  21. package/dist/cjs/snk-simple-crud.cjs.entry.js +44 -13
  22. package/dist/collection/components/snk-attach/structure/fetcher/factory/attach-fetcher-data-unit.factory.js +2 -4
  23. package/dist/collection/components/snk-crud/snk-crud.js +22 -1
  24. package/dist/collection/components/snk-crud/subcomponents/snk-guides-viewer.js +24 -2
  25. package/dist/collection/components/snk-data-unit/snk-data-unit.js +22 -16
  26. package/dist/collection/components/snk-filter-bar/filter-item/editors/snk-filter-checkbox-list.js +1 -1
  27. package/dist/collection/components/snk-filter-bar/snk-filter-bar.css +1 -1
  28. package/dist/collection/components/snk-filter-bar/snk-filter-bar.js +44 -14
  29. package/dist/collection/components/snk-grid/snk-grid.css +1 -1
  30. package/dist/collection/components/snk-grid/snk-grid.js +66 -7
  31. package/dist/collection/components/snk-simple-bar/snk-simple-bar.js +1 -1
  32. package/dist/collection/components/snk-simple-crud/snk-simple-crud.css +0 -1
  33. package/dist/collection/components/snk-simple-crud/snk-simple-crud.js +59 -9
  34. package/dist/collection/components/snk-taskbar/processor/taskbar-processor.js +5 -1
  35. package/dist/collection/lib/DefaultCustomFormatters/RmPrecisionCustomValueFormatter.js +3 -3
  36. package/dist/collection/lib/dataUnit/InMemoryLoader.js +2 -4
  37. package/dist/collection/lib/dataUnit/dataUnitInMemoryUtils.js +34 -9
  38. package/dist/collection/lib/http/data-fetcher/fetchers/data-unit/loadstrategy/DatasetStrategy.js +9 -2
  39. package/dist/collection/lib/message/resources/snk-grid.msg.js +5 -1
  40. package/dist/collection/lib/utils/ContinuousInsertUtils.js +31 -0
  41. package/dist/components/{IExporterProvider.js → ContinuousInsertUtils.js} +40 -5
  42. package/dist/components/SnkMessageBuilder.js +5 -1
  43. package/dist/components/dataunit-fetcher.js +45 -15
  44. package/dist/components/snk-attach2.js +2 -4
  45. package/dist/components/snk-crud.js +5 -1
  46. package/dist/components/snk-data-unit2.js +23 -17
  47. package/dist/components/snk-detail-view2.js +8 -3
  48. package/dist/components/snk-filter-bar2.js +20 -15
  49. package/dist/components/snk-filter-checkbox-list.js +1 -1
  50. package/dist/components/snk-grid2.js +49 -8
  51. package/dist/components/snk-simple-bar2.js +1 -1
  52. package/dist/components/snk-simple-crud2.js +40 -7
  53. package/dist/esm/{IExporterProvider-09df2e3e.js → ContinuousInsertUtils-30caa626.js} +37 -5
  54. package/dist/esm/{SnkMessageBuilder-ae87b754.js → SnkMessageBuilder-6fff4a4c.js} +5 -1
  55. package/dist/esm/{dataunit-fetcher-3aac1a53.js → dataunit-fetcher-c24c76c6.js} +45 -15
  56. package/dist/esm/{field-search-efbe307f.js → field-search-f8b1d91e.js} +5 -1
  57. package/dist/esm/loader.js +1 -1
  58. package/dist/esm/sankhyablocks.js +1 -1
  59. package/dist/esm/snk-actions-button_4.entry.js +1 -1
  60. package/dist/esm/snk-application.entry.js +2 -2
  61. package/dist/esm/snk-attach.entry.js +2 -4
  62. package/dist/esm/snk-crud.entry.js +5 -2
  63. package/dist/esm/snk-data-exporter.entry.js +3 -3
  64. package/dist/esm/{snk-data-unit-6888df8f.js → snk-data-unit-de45e0e1.js} +24 -18
  65. package/dist/esm/snk-data-unit.entry.js +3 -3
  66. package/dist/esm/snk-detail-view.entry.js +4 -4
  67. package/dist/esm/snk-filter-bar.entry.js +19 -15
  68. package/dist/esm/snk-filter-checkbox-list.entry.js +1 -1
  69. package/dist/esm/snk-grid.entry.js +48 -9
  70. package/dist/esm/{snk-guides-viewer-cb8a0b48.js → snk-guides-viewer-b5dd30e6.js} +8 -4
  71. package/dist/esm/snk-guides-viewer.entry.js +3 -3
  72. package/dist/esm/snk-simple-bar.entry.js +1 -1
  73. package/dist/esm/snk-simple-crud.entry.js +40 -9
  74. package/dist/sankhyablocks/p-17425c72.js +1 -0
  75. package/dist/sankhyablocks/p-23736d75.js +1 -0
  76. package/dist/sankhyablocks/p-2923c1b5.js +1 -0
  77. package/dist/sankhyablocks/p-3e3cc017.js +1 -0
  78. package/dist/sankhyablocks/p-50779ad3.entry.js +1 -0
  79. package/dist/sankhyablocks/{p-aaa3ee68.entry.js → p-5f157b09.entry.js} +1 -1
  80. package/dist/sankhyablocks/{p-559bfb9b.entry.js → p-62e048c6.entry.js} +1 -1
  81. package/dist/sankhyablocks/{p-16969508.entry.js → p-694e1c4a.entry.js} +1 -1
  82. package/dist/sankhyablocks/p-7ac7932c.js +60 -0
  83. package/dist/sankhyablocks/{p-bc4b94d2.entry.js → p-7eef0898.entry.js} +1 -1
  84. package/dist/sankhyablocks/p-9eaf913b.entry.js +1 -0
  85. package/dist/sankhyablocks/{p-640140b3.entry.js → p-a42e7a1e.entry.js} +1 -1
  86. package/dist/sankhyablocks/p-b9679243.entry.js +1 -0
  87. package/dist/sankhyablocks/{p-9cbef862.js → p-bccfc262.js} +1 -1
  88. package/dist/sankhyablocks/p-c2e468c9.entry.js +1 -0
  89. package/dist/sankhyablocks/p-d11f58d2.entry.js +1 -0
  90. package/dist/sankhyablocks/{p-439a50fb.entry.js → p-da34270e.entry.js} +1 -1
  91. package/dist/sankhyablocks/p-e16e87fc.entry.js +1 -0
  92. package/dist/sankhyablocks/{p-3d542b58.entry.js → p-eb9f0407.entry.js} +1 -1
  93. package/dist/sankhyablocks/sankhyablocks.esm.js +1 -1
  94. package/dist/types/components/snk-crud/snk-crud.d.ts +4 -0
  95. package/dist/types/components/snk-crud/subcomponents/snk-guides-viewer.d.ts +5 -0
  96. package/dist/types/components/snk-data-unit/snk-data-unit.d.ts +2 -2
  97. package/dist/types/components/snk-filter-bar/snk-filter-bar.d.ts +4 -0
  98. package/dist/types/components/snk-grid/snk-grid.d.ts +11 -0
  99. package/dist/types/components/snk-simple-crud/snk-simple-crud.d.ts +9 -0
  100. package/dist/types/components/snk-taskbar/processor/taskbar-processor.d.ts +1 -0
  101. package/dist/types/components.d.ts +40 -0
  102. package/dist/types/lib/dataUnit/dataUnitInMemoryUtils.d.ts +12 -2
  103. package/dist/types/lib/utils/ContinuousInsertUtils.d.ts +10 -0
  104. package/package.json +1 -1
  105. package/dist/sankhyablocks/p-0e9a872d.entry.js +0 -1
  106. package/dist/sankhyablocks/p-1ab19772.js +0 -1
  107. package/dist/sankhyablocks/p-1f47a0b2.entry.js +0 -1
  108. package/dist/sankhyablocks/p-3757394b.entry.js +0 -1
  109. package/dist/sankhyablocks/p-53c1d25d.entry.js +0 -1
  110. package/dist/sankhyablocks/p-7c4aabe2.js +0 -1
  111. package/dist/sankhyablocks/p-88aa931b.entry.js +0 -1
  112. package/dist/sankhyablocks/p-a31e761f.js +0 -1
  113. package/dist/sankhyablocks/p-b2caaaf9.entry.js +0 -1
  114. package/dist/sankhyablocks/p-c2495304.js +0 -1
  115. package/dist/sankhyablocks/p-f8698ad3.js +0 -60
@@ -9,15 +9,15 @@ const constants = require('./constants-35ddd366.js');
9
9
  const taskbarElements = require('./taskbar-elements-9ad1f9c0.js');
10
10
  require('./DataFetcher-cadeef8e.js');
11
11
  require('./pesquisa-fetcher-ca89181c.js');
12
- const IExporterProvider = require('./IExporterProvider-9ac15aaf.js');
12
+ const ContinuousInsertUtils = require('./ContinuousInsertUtils-29b65619.js');
13
13
  const index = require('./index-1dfc7a6e.js');
14
14
  require('./ISave-e91b70a7.js');
15
15
  require('@sankhyalabs/ezui/dist/collection/utils/constants');
16
16
  require('@sankhyalabs/core/dist/dataunit/metadata/UnitMetadata');
17
- const dataunitFetcher = require('./dataunit-fetcher-4b12f70c.js');
17
+ const dataunitFetcher = require('./dataunit-fetcher-f89461c1.js');
18
18
  require('./filter-item-type.enum-a7ffdaa6.js');
19
19
  const formConfigFetcher = require('./form-config-fetcher-ed497282.js');
20
- const fieldSearch = require('./field-search-f56aa7d6.js');
20
+ const fieldSearch = require('./field-search-68e34bf4.js');
21
21
  const ConfigStorage = require('./ConfigStorage-ecc0ed20.js');
22
22
  const SnkFormConfigManager = require('./SnkFormConfigManager-f1c92f79.js');
23
23
  const GetSelectedRecordsIDsInfo = require('./GetSelectedRecordsIDsInfo-bd50caf1.js');
@@ -31,7 +31,7 @@ require('./ResourceIDUtils-5ff86aa7.js');
31
31
  const REGULAR_DEFAULT_BTNS = ["INSERT", "REFRESH", "PREVIOUS", "NEXT", "DIVIDER", "MORE_OPTIONS"];
32
32
  const REGULAR_SELECTED_BTNS = ["INSERT", "REFRESH", "PREVIOUS", "NEXT", "DIVIDER", "CLONE", "REMOVE", "DIVIDER", "MORE_OPTIONS"];
33
33
 
34
- class ClientSideExporterProvider extends IExporterProvider.CommonsExporter {
34
+ class ClientSideExporterProvider extends ContinuousInsertUtils.CommonsExporter {
35
35
  getSelectedNumber() {
36
36
  return this.dataUnit.getSelectionInfo().length;
37
37
  }
@@ -86,7 +86,7 @@ class ClientSideExporterProvider extends IExporterProvider.CommonsExporter {
86
86
  }
87
87
  }
88
88
 
89
- const snkSimpleCrudCss = ".sc-snk-simple-crud-h{display:flex;height:100%;width:100%;--snk-simple-crud-grid--min-height:300px}.simple-crud__container.sc-snk-simple-crud{display:grid;grid-template-rows:auto 1fr;row-gap:12px;height:100%;width:100%}.simple-crud__container-section.sc-snk-simple-crud{flex-wrap:unset;flex-direction:column}.simple-crud__form--hidden.sc-snk-simple-crud{display:none}ez-grid.sc-snk-simple-crud{--ez-grid__container--shadow:none;--ez-grid--min-height:var(--snk-simple-crud-grid--min-height)}ez-form.sc-snk-simple-crud{min-height:300px}";
89
+ const snkSimpleCrudCss = ".sc-snk-simple-crud-h{display:flex;height:100%;width:100%;--snk-simple-crud-grid--min-height:300px}.simple-crud__container.sc-snk-simple-crud{display:grid;grid-template-rows:auto 1fr;height:100%;width:100%}.simple-crud__container-section.sc-snk-simple-crud{flex-wrap:unset;flex-direction:column}.simple-crud__form--hidden.sc-snk-simple-crud{display:none}ez-grid.sc-snk-simple-crud{--ez-grid__container--shadow:none;--ez-grid--min-height:var(--snk-simple-crud-grid--min-height)}ez-form.sc-snk-simple-crud{min-height:300px}";
90
90
 
91
91
  const SnkSimpleCrud = class {
92
92
  constructor(hostRef) {
@@ -97,7 +97,7 @@ const SnkSimpleCrud = class {
97
97
  this.formItemsReady = index$1.createEvent(this, "formItemsReady", 7);
98
98
  this.configuratorSave = index$1.createEvent(this, "configuratorSave", 7);
99
99
  this.configuratorCancel = index$1.createEvent(this, "configuratorCancel", 7);
100
- this._multiSelectionListDataSource = new IExporterProvider.SnkMultiSelectionListDataSource();
100
+ this._multiSelectionListDataSource = new ContinuousInsertUtils.SnkMultiSelectionListDataSource();
101
101
  this._keyDownHandler = (event) => this.keyDownListener(event);
102
102
  this._formConfigFetcher = new formConfigFetcher.FormConfigFetcher();
103
103
  this._customEditors = new Map();
@@ -107,7 +107,7 @@ const SnkSimpleCrud = class {
107
107
  "snkSimpleCrudTaskbar.grid_regular": this.getButtons(false, [taskbarElements.TaskbarElement.DATA_EXPORTER, taskbarElements.TaskbarElement.FORM_MODE]),
108
108
  "snkSimpleCrudTaskbar.form_selected": this.getButtons(true, [taskbarElements.TaskbarElement.GRID_MODE]),
109
109
  "snkSimpleCrudTaskbar.grid_selected": this.getButtons(true, [taskbarElements.TaskbarElement.DATA_EXPORTER, taskbarElements.TaskbarElement.FORM_MODE]),
110
- "snkSimpleCrudTaskbar.finish_edition": ["CANCEL", "SAVE"]
110
+ "snkSimpleCrudTaskbar.finish_edition": this.getFinishEditionButtonsCallback.bind(this)
111
111
  });
112
112
  this._showPopUpGridConfig = false;
113
113
  this._showFormConfig = false;
@@ -123,10 +123,12 @@ const SnkSimpleCrud = class {
123
123
  this.formConfig = undefined;
124
124
  this._formFields = [];
125
125
  this._fieldsProps = new Map();
126
+ this._enableContinuousInsert = true;
126
127
  this.multipleSelection = undefined;
127
128
  this.useCancelConfirm = true;
128
129
  this.pageSize = 150;
129
130
  this.resourceID = undefined;
131
+ this.enableGridInsert = false;
130
132
  this.taskbarManager = undefined;
131
133
  this.messagesBuilder = undefined;
132
134
  this.useEnterLikeTab = false;
@@ -196,6 +198,13 @@ const SnkSimpleCrud = class {
196
198
  newCustomFieldProps.set(fieldName, Object.assign(Object.assign({}, currentProps), { [propName]: value }));
197
199
  this._fieldsProps = newCustomFieldProps;
198
200
  }
201
+ getFinishEditionButtonsCallback() {
202
+ const btns = ["CANCEL", "SAVE"];
203
+ if (this.enableGridInsert && this._currentViewMode !== constants.VIEW_MODE.ATTACHMENT) {
204
+ btns.push(this._currentViewMode === constants.VIEW_MODE.GRID ? taskbarElements.TaskbarElement.FORM_MODE : taskbarElements.TaskbarElement.GRID_MODE);
205
+ }
206
+ return btns;
207
+ }
199
208
  getButtons(selected, extraButtons) {
200
209
  return this.addConfigButton(this.resolveInMemoryBtns(selected ? REGULAR_SELECTED_BTNS : REGULAR_DEFAULT_BTNS)
201
210
  .concat(extraButtons));
@@ -399,7 +408,11 @@ const SnkSimpleCrud = class {
399
408
  this.processMetadata();
400
409
  this.onModeChange();
401
410
  this.configDatasource();
402
- this._rmPrecisionCustomValueFormatter = new IExporterProvider.RmPrecisionCustomValueFormatter();
411
+ this._rmPrecisionCustomValueFormatter = new ContinuousInsertUtils.RmPrecisionCustomValueFormatter();
412
+ this._continuousInsertUtils = new ContinuousInsertUtils.ContinuousInsertUtils(this.application, this.resolveResourceID(), this.configName);
413
+ if (this.enableGridInsert) {
414
+ this._continuousInsertUtils.getConfig().then(value => this._enableContinuousInsert = value);
415
+ }
403
416
  }
404
417
  componentDidLoad() {
405
418
  utils.CSSVarsUtils.applyVarsGrid(this._element, this._grid);
@@ -634,6 +647,9 @@ const SnkSimpleCrud = class {
634
647
  const options = filteredFields.map(field => ({ value: field.name, label: field.label }));
635
648
  return Promise.resolve(options);
636
649
  }
650
+ isGridInsertActive() {
651
+ return this.enableGridInsert && this.dataUnit.hasNewRecord();
652
+ }
637
653
  getActionsList() {
638
654
  var _a, _b;
639
655
  const hardList = [{
@@ -645,11 +661,21 @@ const SnkSimpleCrud = class {
645
661
  ? this.getColumnSearch(actionButton, item)
646
662
  : this.getFieldSearch(actionButton, item)
647
663
  }];
664
+ if (this.enableGridInsert) {
665
+ hardList.push(this._continuousInsertUtils.actionContinuousInsert(this._enableContinuousInsert, () => {
666
+ this._enableContinuousInsert = !this._enableContinuousInsert;
667
+ this._continuousInsertUtils.handleSaveConfig(this._enableContinuousInsert);
668
+ }));
669
+ }
670
+ if (this.isGridInsertActive())
671
+ return hardList;
648
672
  if (this.taskbarManager != undefined && this.taskbarManager.getMoreOptions != undefined) {
649
673
  const taskbarID = this.getTopTaskBarId();
650
674
  return hardList.concat(this.taskbarManager.getMoreOptions(taskbarID, this.configName, this.dataState, this.actionsList));
651
675
  }
652
- return hardList.concat(this.actionsList);
676
+ if (this.actionsList)
677
+ return hardList.concat(this.actionsList);
678
+ return hardList;
653
679
  }
654
680
  getTopTaskBarId() {
655
681
  var _a;
@@ -723,7 +749,7 @@ const SnkSimpleCrud = class {
723
749
  }
724
750
  setGridConfig(config) {
725
751
  this.gridConfig = config;
726
- IExporterProvider.CrudUtils.assertDefaultSorting(this.gridConfig, this.dataUnit);
752
+ ContinuousInsertUtils.CrudUtils.assertDefaultSorting(this.gridConfig, this.dataUnit);
727
753
  }
728
754
  setFormConfig(config, forceUpdate) {
729
755
  if (this.formConfig && !forceUpdate)
@@ -768,16 +794,21 @@ const SnkSimpleCrud = class {
768
794
  }
769
795
  this._formConfigManager.setConfig(this.formConfig);
770
796
  }
797
+ handleDataUnitOnInsertionMode() {
798
+ if (this.enableGridInsert)
799
+ return;
800
+ this.goToView(constants.VIEW_MODE.FORM);
801
+ }
771
802
  /* istanbul ignore next */
772
803
  render() {
773
804
  var _a;
774
805
  if (this.dataUnit == undefined) {
775
806
  return;
776
807
  }
777
- const taskbarContent = (index$1.h("snk-taskbar", { class: this._currentViewMode === constants.VIEW_MODE.FORM && "ez-box ez-box--shadow ez-padding--medium", dataUnit: this.dataUnit, primaryButton: ((_a = this.dataState) === null || _a === void 0 ? void 0 : _a.isDirty) ? "SAVE" : "INSERT", "data-element-id": "grid_left", messagesBuilder: this.messagesBuilder, buttons: this._taskbarProcessor.buttons, actionsList: this.getActionsList(), disabledButtons: this._taskbarProcessor.disabledButtons, customButtons: this._taskbarProcessor.customButtons, "data-exporter-store-key": this.getDataExporterStoreKey(), slot: "leftButtons", presentationMode: index.PresentationMode.SECONDARY }, index$1.h("slot", { name: "TASKBAR_CUSTOM_ELEMENTS" })));
778
- return (index$1.h("snk-data-unit", { ref: ref => this._snkDataUnit = ref, class: "simple-crud__container", dataUnit: this.dataUnit, useCancelConfirm: this.useCancelConfirm, onDataStateChange: evt => this.onDataStateChange(evt), onCancelEdition: this.handleCancelEdit.bind(this), pageSize: this.getPageSize(), onInsertionMode: () => this.goToView(constants.VIEW_MODE.FORM), onDataUnitReady: (evt) => this.dataUnitReady.emit(evt.detail), ignoreSaveMessage: this._currentViewMode === constants.VIEW_MODE.GRID, onMessagesBuilderUpdated: evt => this.messagesBuilder = evt.detail, onDataUnitFieldsHidded: this.updateFormConfig.bind(this), domainMessagesBuilder: this.domainMessagesBuilder }, index$1.h("header", null, index$1.h("slot", { name: "snkSimpleCrudHeader" })), index$1.h("section", { class: "ez-box ez-box--shadow simple-crud__container-section" }, this._currentViewMode === constants.VIEW_MODE.FORM && taskbarContent, index$1.h("ez-view-stack", { ref: (ref) => this._viewStack = ref, "data-element-id": "simple-crud" }, index$1.h("stack-item", null, index$1.h("ez-grid", { class: "ez-margin-bottom--large", ref: ref => this._grid = ref, dataUnit: this.dataUnit, config: this.gridConfig, "no-header": true, multipleSelection: this.multipleSelection, onEzDoubleClick: () => this.goToView(constants.VIEW_MODE.FORM), onConfigChange: evt => this.gridConfigChangeHandler(evt), columnfilterDataSource: this.dataUnit.name && this.dataUnit.name.includes(dataunitFetcher.InMemoryLoader.IN_MEMORY_DATA_UNIT_NAME)
808
+ const taskbarContent = (index$1.h("snk-taskbar", { class: this._currentViewMode === constants.VIEW_MODE.FORM && "ez-box ez-box--shadow ez-padding--small", dataUnit: this.dataUnit, primaryButton: ((_a = this.dataState) === null || _a === void 0 ? void 0 : _a.isDirty) ? "SAVE" : "INSERT", "data-element-id": "grid_left", messagesBuilder: this.messagesBuilder, buttons: this._taskbarProcessor.buttons, actionsList: this.getActionsList(), disabledButtons: this._taskbarProcessor.disabledButtons, customButtons: this._taskbarProcessor.customButtons, "data-exporter-store-key": this.getDataExporterStoreKey(), slot: "leftButtons", presentationMode: index.PresentationMode.SECONDARY }, index$1.h("slot", { name: "TASKBAR_CUSTOM_ELEMENTS" })));
809
+ return (index$1.h("snk-data-unit", { ref: ref => this._snkDataUnit = ref, class: "simple-crud__container", dataUnit: this.dataUnit, useCancelConfirm: this.useCancelConfirm, onDataStateChange: evt => this.onDataStateChange(evt), onCancelEdition: this.handleCancelEdit.bind(this), pageSize: this.getPageSize(), onInsertionMode: this.handleDataUnitOnInsertionMode.bind(this), onDataUnitReady: (evt) => this.dataUnitReady.emit(evt.detail), ignoreSaveMessage: this._currentViewMode === constants.VIEW_MODE.GRID, onMessagesBuilderUpdated: evt => this.messagesBuilder = evt.detail, onDataUnitFieldsHidded: this.updateFormConfig.bind(this), domainMessagesBuilder: this.domainMessagesBuilder }, index$1.h("header", null, index$1.h("slot", { name: "snkSimpleCrudHeader" })), index$1.h("section", { class: "ez-box ez-box--shadow simple-crud__container-section" }, this._currentViewMode === constants.VIEW_MODE.FORM && taskbarContent, index$1.h("ez-view-stack", { ref: (ref) => this._viewStack = ref, "data-element-id": "simple-crud" }, index$1.h("stack-item", null, index$1.h("ez-grid", { class: "ez-margin-bottom--large", ref: ref => this._grid = ref, dataUnit: this.dataUnit, config: this.gridConfig, "no-header": true, multipleSelection: this.multipleSelection, onEzDoubleClick: () => this.goToView(constants.VIEW_MODE.FORM), onConfigChange: evt => this.gridConfigChangeHandler(evt), columnfilterDataSource: this.dataUnit.name && this.dataUnit.name.includes(dataunitFetcher.InMemoryLoader.IN_MEMORY_DATA_UNIT_NAME)
779
810
  ? undefined
780
- : this._multiSelectionListDataSource, useEnterLikeTab: this.useEnterLikeTab, autoFocus: this.autoFocus }, this._currentViewMode === constants.VIEW_MODE.GRID && taskbarContent, index$1.h("div", { slot: "footer" }, index$1.h("slot", { name: "snkSimpleCrudFooter" })))), index$1.h("stack-item", null, index$1.h("ez-form", { ref: (ref) => this._form = ref, class: `ez-margin-top--large ${this.handleShowFormConfig() ? "simple-crud__form--hidden" : ""}`, dataUnit: this.dataUnit, config: this.getFormConfig(), fieldToFocus: this._fieldToGetFocus, onEzFormSetFields: (evt) => this.handleFormSetFields(evt.detail), onEzFormRequestClearFieldToFocus: this.clearFieldToFocusHandler.bind(this) }), this.handleShowFormConfig() && index$1.h("snk-form-config", { messagesBuilder: this.messagesBuilder, dataUnit: this.dataUnit, configManager: this._formConfigManager, onConfigClose: () => this.closeFormConfig() })), this.messagesBuilder && index$1.h("snk-configurator", { ref: (ref) => this._snkConfigurator = ref, viewMode: this._currentViewMode, messagesBuilder: this.messagesBuilder, onConfigSelected: (evt) => this.goToView(evt.detail), onOpenConfig: (evt) => this.openConfig(evt.detail), showActionButtons: this.showConfiguratorButtons, onSave: evt => this.handleConfiguratorEvent(evt, 'SAVE'), onCancel: evt => this.handleConfiguratorEvent(evt, 'CANCEL'), resourceID: this.resolveResourceID(), customContainerId: this._customContainerId })), index$1.h("div", { id: `${this._customContainerId}` }, index$1.h("slot", { name: "SnkConfigContainerSlot" }))), index$1.h("ez-modal", { modalSize: "small", closeEsc: false, closeOutsideClick: false, opened: this._showPopUpGridConfig, onEzCloseModal: () => this.closeGridConfig() }, index$1.h("snk-grid-config", { ref: ref => this._snkGridConfig = ref, config: this.gridConfig, "data-element-id": this._element.getAttribute(core.ElementIDUtils.DATA_ELEMENT_ID_ATTRIBUTE_NAME), selectedIndex: 0, configName: this.configName, onConfigChange: (evt) => this.modalConfigChangeHandler(evt), onConfigCancel: () => this.closeGridConfig(), resourceID: this.resolveResourceID() }))));
811
+ : this._multiSelectionListDataSource, useEnterLikeTab: this.useEnterLikeTab, autoFocus: this.autoFocus, enableGridInsert: this.enableGridInsert, enableContinuousInsert: this._enableContinuousInsert }, this._currentViewMode === constants.VIEW_MODE.GRID && taskbarContent, index$1.h("div", { slot: "footer" }, index$1.h("slot", { name: "snkSimpleCrudFooter" })))), index$1.h("stack-item", null, index$1.h("ez-form", { ref: (ref) => this._form = ref, class: `ez-margin-top--large ${this.handleShowFormConfig() ? "simple-crud__form--hidden" : ""}`, dataUnit: this.dataUnit, config: this.getFormConfig(), fieldToFocus: this._fieldToGetFocus, onEzFormSetFields: (evt) => this.handleFormSetFields(evt.detail), onEzFormRequestClearFieldToFocus: this.clearFieldToFocusHandler.bind(this) }), this.handleShowFormConfig() && index$1.h("snk-form-config", { messagesBuilder: this.messagesBuilder, dataUnit: this.dataUnit, configManager: this._formConfigManager, onConfigClose: () => this.closeFormConfig() })), this.messagesBuilder && index$1.h("snk-configurator", { ref: (ref) => this._snkConfigurator = ref, viewMode: this._currentViewMode, messagesBuilder: this.messagesBuilder, onConfigSelected: (evt) => this.goToView(evt.detail), onOpenConfig: (evt) => this.openConfig(evt.detail), showActionButtons: this.showConfiguratorButtons, onSave: evt => this.handleConfiguratorEvent(evt, 'SAVE'), onCancel: evt => this.handleConfiguratorEvent(evt, 'CANCEL'), resourceID: this.resolveResourceID(), customContainerId: this._customContainerId })), index$1.h("div", { id: `${this._customContainerId}` }, index$1.h("slot", { name: "SnkConfigContainerSlot" }))), index$1.h("ez-modal", { modalSize: "small", closeEsc: false, closeOutsideClick: false, opened: this._showPopUpGridConfig, onEzCloseModal: () => this.closeGridConfig() }, index$1.h("snk-grid-config", { ref: ref => this._snkGridConfig = ref, config: this.gridConfig, "data-element-id": this._element.getAttribute(core.ElementIDUtils.DATA_ELEMENT_ID_ATTRIBUTE_NAME), selectedIndex: 0, configName: this.configName, onConfigChange: (evt) => this.modalConfigChangeHandler(evt), onConfigCancel: () => this.closeGridConfig(), resourceID: this.resolveResourceID() }))));
781
812
  }
782
813
  get _element() { return index$1.getElement(this); }
783
814
  static get watchers() { return {
@@ -3,7 +3,7 @@ import { SaveErrorsEnum } from '../../../../../lib/http/data-fetcher/fetchers/At
3
3
  import { AutorizationType } from '../../../../../lib/http/data-fetcher/fetchers/auth-fetcher';
4
4
  import { attachFetcherMetadataBuilder } from '../../builder/attach-crud-config.builder';
5
5
  import { VIEW_MODE } from '../../../../../lib/utils/constants';
6
- import { applyFilter, applySorting, buildPaginationInfo } from '../../../../../lib/dataUnit/dataUnitInMemoryUtils';
6
+ import { buildLoadDataResponse } from '../../../../../lib/dataUnit/dataUnitInMemoryUtils';
7
7
  const SERVICE_LOAD = "Attach.load";
8
8
  export class AttachFetcherDataUnitFactory {
9
9
  constructor(getMessage) {
@@ -49,9 +49,7 @@ export class AttachFetcherDataUnitFactory {
49
49
  });
50
50
  this._records = records;
51
51
  }
52
- let records = applyFilter(this._records, dataUnit, request.filters);
53
- records = applySorting(records, dataUnit, request.sort);
54
- return Promise.resolve({ records, paginationInfo: buildPaginationInfo(records, request.offset, request.limit) });
52
+ return buildLoadDataResponse(this._records, dataUnit, request);
55
53
  }
56
54
  saveLoader(changes, fetcher) {
57
55
  return new Promise((resolve) => {
@@ -39,6 +39,7 @@ export class SnkCrud {
39
39
  this.disablePersonalizedFilter = undefined;
40
40
  this.autoLoad = undefined;
41
41
  this.autoFocus = true;
42
+ this.enableGridInsert = false;
42
43
  this.domainMessagesBuilder = undefined;
43
44
  this.setCustomFormTitle = undefined;
44
45
  this.customContainerId = `SNK-CRUD-CUSTOM-CONTAINER-${StringUtils.generateUUID()}`;
@@ -165,6 +166,8 @@ export class SnkCrud {
165
166
  ElementIDUtils.addIDInfo(this._element, null, dataInfo);
166
167
  }
167
168
  insertionModeHandler() {
169
+ if (this.enableGridInsert)
170
+ return;
168
171
  this.gridToForm();
169
172
  }
170
173
  cancelHandler() {
@@ -380,7 +383,7 @@ export class SnkCrud {
380
383
  return;
381
384
  }
382
385
  this._snkDataUnit.ignoreSaveMessage = this._currentViewMode === VIEW_MODE.GRID;
383
- return (h(Host, null, h("ez-view-stack", { ref: (ref) => this._viewStack = ref, "data-element-id": "crud" }, h("stack-item", null, h("snk-grid", { ref: (ref) => this._snkGrid = ref, filterBarTitle: this.filterBarTitle, "data-element-id": "crud_grid", configName: this.configName, onGridDoubleClick: () => this.gridToForm(true), taskbarManager: this.taskbarManager, onActionClick: evt => this.executeAction(evt.detail), messagesBuilder: this.messagesBuilder, actionsList: this.actionsList, statusResolver: this.statusResolver, multipleSelection: this.multipleSelection, presentationMode: this.presentationMode, recordsValidator: this.recordsValidator, selectionToastConfig: this.selectionToastConfig, useEnterLikeTab: this.useEnterLikeTab, canEdit: this._canEdit, resourceID: this._resourceID, disablePersonalizedFilter: this.disablePersonalizedFilter, gridLegacyConfigName: this.gridLegacyConfigName, filterBarLegacyConfigName: this.filterBarLegacyConfigName, autoLoad: this.autoLoad, autoFocus: this.autoFocus }, h("slot", { name: "GRID_TASKBAR_CUSTOM_ELEMENTS" }), h("slot", { name: "GRID_HEADER_CUSTOM_ELEMENTS" }), h("slot", { name: "SnkGridHeader" }), h("slot", { name: "SnkGridFooter" }), h("slot", { name: "SnkGridTaskBar" }))), h("stack-item", null, h("snk-guides-viewer", { ref: ref => this._guidesViewer = ref, entityPath: this._snkDataUnit.entityName, messagesBuilder: this.messagesBuilder, onExit: () => this.setViewMode(VIEW_MODE.GRID), dataState: this._dataState, dataUnit: this._dataUnit, actionsList: this.actionsList, taskbarManager: this.taskbarManager, configName: this.configName, onActionClick: evt => this.executeAction(evt.detail), presentationMode: this.presentationMode, "data-element-id": "crud_form", canEdit: this._canEdit, recordsValidator: this.recordsValidator, resourceID: this._resourceID, detailTaskbarCustomContainerId: this.customContainerId, formLegacyConfigName: this.formLegacyConfigName, getCustomTitle: this.setCustomFormTitle }, h("slot", { name: "GUIDES_VIEWER_TASKBAR_CUSTOM_ELEMENTS" }), h("slot", { name: "SnkFormTaskBar" }))), h("stack-item", null, h("snk-attach", { registerKey: this.attachmentRegisterKey, messagesBuilder: this.messagesBuilder, entityName: this._snkDataUnit.entityName, onBack: this.backView.bind(this) })), h("snk-configurator", { ref: (ref) => this._snkConfigurator = ref, viewMode: this._currentViewMode, messagesBuilder: this.messagesBuilder, onConfigSelected: (evt) => this.setViewMode(evt.detail), onOpenConfig: (evt) => this.openConfig(evt.detail), showActionButtons: this.showActionButtons, onSave: evt => this.handleConfiguratorEvent(evt, 'SAVE'), onCancel: evt => this.handleConfiguratorEvent(evt, 'CANCEL'), resourceID: this._resourceID, customContainerId: this.customContainerId })), h("div", { id: `${this.customContainerId}` }, h("slot", { name: "SnkConfigContainerSlot" }), h("slot", { name: "DETAIL_GRID_HEADER_CUSTOM_ELEMENTS" }), h("slot", { name: "DETAIL_GRID_TASKBAR_CUSTOM_ELEMENTS" }), h("slot", { name: "DETAIL_TASKBAR_CUSTOM_ELEMENTS" }))));
386
+ return (h(Host, null, h("ez-view-stack", { ref: (ref) => this._viewStack = ref, "data-element-id": "crud" }, h("stack-item", null, h("snk-grid", { ref: (ref) => this._snkGrid = ref, filterBarTitle: this.filterBarTitle, "data-element-id": "crud_grid", configName: this.configName, onGridDoubleClick: () => this.gridToForm(true), taskbarManager: this.taskbarManager, onActionClick: evt => this.executeAction(evt.detail), messagesBuilder: this.messagesBuilder, actionsList: this.actionsList, statusResolver: this.statusResolver, multipleSelection: this.multipleSelection, presentationMode: this.presentationMode, recordsValidator: this.recordsValidator, selectionToastConfig: this.selectionToastConfig, useEnterLikeTab: this.useEnterLikeTab, canEdit: this._canEdit, resourceID: this._resourceID, disablePersonalizedFilter: this.disablePersonalizedFilter, gridLegacyConfigName: this.gridLegacyConfigName, filterBarLegacyConfigName: this.filterBarLegacyConfigName, autoLoad: this.autoLoad, autoFocus: this.autoFocus, enableGridInsert: this.enableGridInsert }, h("slot", { name: "GRID_TASKBAR_CUSTOM_ELEMENTS" }), h("slot", { name: "GRID_HEADER_CUSTOM_ELEMENTS" }), h("slot", { name: "SnkGridHeader" }), h("slot", { name: "SnkGridFooter" }), h("slot", { name: "SnkGridTaskBar" }))), h("stack-item", null, h("snk-guides-viewer", { ref: ref => this._guidesViewer = ref, entityPath: this._snkDataUnit.entityName, messagesBuilder: this.messagesBuilder, onExit: () => this.setViewMode(VIEW_MODE.GRID), dataState: this._dataState, dataUnit: this._dataUnit, actionsList: this.actionsList, taskbarManager: this.taskbarManager, configName: this.configName, onActionClick: evt => this.executeAction(evt.detail), presentationMode: this.presentationMode, "data-element-id": "crud_form", canEdit: this._canEdit, recordsValidator: this.recordsValidator, resourceID: this._resourceID, detailTaskbarCustomContainerId: this.customContainerId, formLegacyConfigName: this.formLegacyConfigName, enableGridInsert: this.enableGridInsert, getCustomTitle: this.setCustomFormTitle }, h("slot", { name: "GUIDES_VIEWER_TASKBAR_CUSTOM_ELEMENTS" }), h("slot", { name: "SnkFormTaskBar" }))), h("stack-item", null, h("snk-attach", { registerKey: this.attachmentRegisterKey, messagesBuilder: this.messagesBuilder, entityName: this._snkDataUnit.entityName, onBack: this.backView.bind(this) })), h("snk-configurator", { ref: (ref) => this._snkConfigurator = ref, viewMode: this._currentViewMode, messagesBuilder: this.messagesBuilder, onConfigSelected: (evt) => this.setViewMode(evt.detail), onOpenConfig: (evt) => this.openConfig(evt.detail), showActionButtons: this.showActionButtons, onSave: evt => this.handleConfiguratorEvent(evt, 'SAVE'), onCancel: evt => this.handleConfiguratorEvent(evt, 'CANCEL'), resourceID: this._resourceID, customContainerId: this.customContainerId })), h("div", { id: `${this.customContainerId}` }, h("slot", { name: "SnkConfigContainerSlot" }), h("slot", { name: "DETAIL_GRID_HEADER_CUSTOM_ELEMENTS" }), h("slot", { name: "DETAIL_GRID_TASKBAR_CUSTOM_ELEMENTS" }), h("slot", { name: "DETAIL_TASKBAR_CUSTOM_ELEMENTS" }))));
384
387
  }
385
388
  static get is() { return "snk-crud"; }
386
389
  static get encapsulation() { return "scoped"; }
@@ -737,6 +740,24 @@ export class SnkCrud {
737
740
  "reflect": false,
738
741
  "defaultValue": "true"
739
742
  },
743
+ "enableGridInsert": {
744
+ "type": "boolean",
745
+ "mutable": false,
746
+ "complexType": {
747
+ "original": "boolean",
748
+ "resolved": "boolean",
749
+ "references": {}
750
+ },
751
+ "required": false,
752
+ "optional": true,
753
+ "docs": {
754
+ "tags": [],
755
+ "text": "Ativa inser\u00E7\u00E3o de registros no modo grade."
756
+ },
757
+ "attribute": "enable-grid-insert",
758
+ "reflect": false,
759
+ "defaultValue": "false"
760
+ },
740
761
  "domainMessagesBuilder": {
741
762
  "type": "string",
742
763
  "mutable": false,
@@ -27,6 +27,7 @@ export class SnkGuidesViewer {
27
27
  this.resourceID = undefined;
28
28
  this.detailTaskbarCustomContainerId = undefined;
29
29
  this.formLegacyConfigName = undefined;
30
+ this.enableGridInsert = false;
30
31
  this.getCustomTitle = undefined;
31
32
  this._hasToCreateFieldSearch = true;
32
33
  this._breadcrumbItems = [];
@@ -96,7 +97,7 @@ export class SnkGuidesViewer {
96
97
  this._container.focus();
97
98
  }
98
99
  exitViewer() {
99
- if (this.dataUnit.isDirty()) {
100
+ if (!this.enableGridInsert && this.dataUnit.isDirty()) {
100
101
  this.dataUnit.cancelEdition({ after: () => this.exit.emit() });
101
102
  }
102
103
  else {
@@ -205,10 +206,13 @@ export class SnkGuidesViewer {
205
206
  const invisibleButtons = this.getInvisibleButtons();
206
207
  this._taskbarProcessor = new TaskbarProcessor({
207
208
  "snkGuideViewer.regular": btnsRegularMode,
208
- "snkGuideViewer.finish_edition": ["CANCEL", "SAVE"],
209
+ "snkGuideViewer.finish_edition": ["CANCEL", "SAVE", this.handleAddGridMode()],
209
210
  });
210
211
  this._taskbarProcessor.process(taskbarId, this.taskbarManager, this.dataState, disabledButtons, invisibleButtons);
211
212
  }
213
+ handleAddGridMode() {
214
+ return this.enableGridInsert ? TaskbarElement.GRID_MODE : "";
215
+ }
212
216
  getInvisibleButtons() {
213
217
  const invisibleButtons = [];
214
218
  if (this.dataState && this.dataState.selectionInfo.mode === SelectionMode.ALL_RECORDS)
@@ -803,6 +807,24 @@ export class SnkGuidesViewer {
803
807
  "attribute": "form-legacy-config-name",
804
808
  "reflect": false
805
809
  },
810
+ "enableGridInsert": {
811
+ "type": "boolean",
812
+ "mutable": false,
813
+ "complexType": {
814
+ "original": "boolean",
815
+ "resolved": "boolean",
816
+ "references": {}
817
+ },
818
+ "required": false,
819
+ "optional": true,
820
+ "docs": {
821
+ "tags": [],
822
+ "text": "Ativa inser\u00E7\u00E3o de registros no modo grade."
823
+ },
824
+ "attribute": "enable-grid-insert",
825
+ "reflect": false,
826
+ "defaultValue": "false"
827
+ },
806
828
  "getCustomTitle": {
807
829
  "type": "unknown",
808
830
  "mutable": false,
@@ -479,7 +479,14 @@ export class SnkDataUnit {
479
479
  }
480
480
  handleRecordsRemoved(action) {
481
481
  var _a, _b;
482
- let removeFinishMsg = this.buildRemoveFinishMessage(action);
482
+ const cachedRecords = action.payload.cachedRecords;
483
+ let removeFinishMsg;
484
+ if ((cachedRecords === null || cachedRecords === void 0 ? void 0 : cachedRecords.length) > 1) {
485
+ removeFinishMsg = this.getMessage("snkDataUnit.removeAllInfo", { size: cachedRecords.length });
486
+ }
487
+ else {
488
+ removeFinishMsg = this.getMessage("snkDataUnit.removeInfo", action.payload.cachedRecords[0]);
489
+ }
483
490
  if (removeFinishMsg != undefined) {
484
491
  this.showSuccessMessage(removeFinishMsg);
485
492
  }
@@ -490,14 +497,6 @@ export class SnkDataUnit {
490
497
  this.dataUnit.gotoPage(page);
491
498
  }
492
499
  }
493
- buildRemoveFinishMessage(action) {
494
- const records = action.payload.records;
495
- if (!records || !records.length)
496
- return undefined;
497
- if ((records === null || records === void 0 ? void 0 : records.length) > 1)
498
- return this.getMessage('snkDataUnit.removeAllInfo', { size: records.length });
499
- return this.getMessage('snkDataUnit.removeInfo', records);
500
- }
501
500
  /**
502
501
  * Conforme mecanismo de mensagens, é possível customizar as mensagens dos blocos de construção
503
502
  * através de um pequeno modulo na estrutura da aplicação:
@@ -541,19 +540,26 @@ export class SnkDataUnit {
541
540
  return await this._application.getDataUnit(this.entityName, cacheName, null, this.configName, this.resourceID);
542
541
  }
543
542
  }
544
- async loadDataUnit(forceMetadataLoad = true) {
545
- var _a;
543
+ updateMetadataWithRMP() {
544
+ this.fillFieldsWithRmp(this.dataUnit.metadata);
545
+ this.fillFieldsWithRmPrecision(this.dataUnit.metadata);
546
+ const dataUnitUpdatedMetadata = this.handleDULinksOnMetadataLoaded(this.dataUnit.metadata);
547
+ this.dataUnit.metadata = dataUnitUpdatedMetadata;
548
+ }
549
+ async loadDataUnit() {
550
+ var _a, _b;
546
551
  if (this.dataUnit == null && this._application && this.entityName) {
547
552
  this.dataUnit = await this.getDataUnitParentOrChild();
548
553
  }
549
554
  if (this.dataUnit) {
550
555
  this.dataUnit.pageSize = this.pageSize;
551
556
  this.dataUnit.unsubscribe(this._dataUnitObserver);
552
- this.dataUnit.addInterceptor(this);
553
557
  this.dataUnit.subscribe(this._dataUnitObserver);
554
- if (forceMetadataLoad || !this.dataUnit.metadata)
555
- await this.dataUnit.loadMetadata();
556
- if ((_a = this.dataUnit.records) === null || _a === void 0 ? void 0 : _a.length) {
558
+ if ((_a = this.dataUnit) === null || _a === void 0 ? void 0 : _a.metadata) {
559
+ this.updateMetadataWithRMP();
560
+ }
561
+ this.dataUnit.addInterceptor(this);
562
+ if ((_b = this.dataUnit.records) === null || _b === void 0 ? void 0 : _b.length) {
557
563
  const { records } = this.getMetadataByRow(this.dataUnit);
558
564
  this.dataUnit.records = records;
559
565
  }
@@ -641,7 +647,7 @@ export class SnkDataUnit {
641
647
  }
642
648
  }
643
649
  async componentDidLoad() {
644
- await this.loadDataUnit(false);
650
+ await this.loadDataUnit();
645
651
  this.handlerLinkFields();
646
652
  }
647
653
  render() {
@@ -19,7 +19,7 @@ export class SnkFilterCheckboxList {
19
19
  this.valueChanged.emit((_b = this.config) === null || _b === void 0 ? void 0 : _b.value);
20
20
  }
21
21
  renderOptions() {
22
- return this.optionsList.map(option => (h("ez-check", { label: option.label, compact: true, onEzChange: (event) => this.handleToggleCheck(option, event.detail), value: !!this.isChecked(option.name) })));
22
+ return this.optionsList.map(option => (h("ez-check", { label: option.label, onEzChange: (event) => this.handleToggleCheck(option, event.detail), value: !!this.isChecked(option.name) })));
23
23
  }
24
24
  isChecked(itemName) {
25
25
  var _a;
@@ -105,7 +105,7 @@
105
105
 
106
106
  .snk-filter-bar__filter-item-container {
107
107
  display: flex;
108
- align-self: center;
108
+ align-items: start;
109
109
  }
110
110
 
111
111
  .snk-filter-bar__scroller :first-child {
@@ -1,4 +1,4 @@
1
- import { ApplicationContext, ElementIDUtils, ErrorException, ObjectUtils } from '@sankhyalabs/core';
1
+ import { ApplicationContext, ElementIDUtils, ObjectUtils, ErrorException } from '@sankhyalabs/core';
2
2
  import { EzScrollDirection } from '@sankhyalabs/ezui/dist/collection/components/ez-scroller/EzScrollDirection';
3
3
  import { h, Host } from '@stencil/core';
4
4
  import { ConfigStorage } from '../../lib/configs/ConfigStorage';
@@ -27,6 +27,7 @@ export class SnkFilterBar {
27
27
  this._filtersComparator = (a, b) => {
28
28
  return this._calculateSortIndex(b) - this._calculateSortIndex(a);
29
29
  };
30
+ this.customFilterBarConfig = undefined;
30
31
  this.dataUnit = undefined;
31
32
  this.title = undefined;
32
33
  this.configName = undefined;
@@ -337,20 +338,23 @@ export class SnkFilterBar {
337
338
  }
338
339
  }
339
340
  async loadConfigFromStorage(clearCache) {
340
- if (clearCache) {
341
- await ConfigStorage.deleteFilterBarConfigCache(this.configName, this.resourceID);
341
+ try {
342
+ if (clearCache) {
343
+ await ConfigStorage.deleteFilterBarConfigCache(this.configName, this.resourceID);
344
+ }
345
+ let config;
346
+ if (this.customFilterBarConfig) {
347
+ config = await this.customFilterBarConfig(this.configName, this.resourceID, { contextURI: this.dataUnit.name });
348
+ }
349
+ else {
350
+ config = await ConfigStorage.loadFilterBarConfig(this.configName, this.resourceID, { contextURI: this.dataUnit.name });
351
+ }
352
+ this.filterConfig = config.map(item => this.normalizeItem(item));
353
+ this.filterConfig.sort((a, b) => this._filtersComparator(a, b));
354
+ }
355
+ catch (e) {
356
+ throw new ErrorException(this.getMessage("snkFilterBar.failToLoadConfig"), e);
342
357
  }
343
- return new Promise(accept => {
344
- ConfigStorage.loadFilterBarConfig(this.configName, this.resourceID, { contextURI: this.dataUnit.name })
345
- .then((filters) => {
346
- accept();
347
- this.filterConfig = filters.map(item => this.normalizeItem(item));
348
- this.filterConfig.sort((a, b) => this._filtersComparator(a, b));
349
- })
350
- .catch(reason => {
351
- throw new ErrorException(this.getMessage("snkFilterBar.failToLoadConfig"), reason);
352
- });
353
- });
354
358
  }
355
359
  attachDataUnit() {
356
360
  if (this.dataUnit == undefined) {
@@ -477,6 +481,32 @@ export class SnkFilterBar {
477
481
  }
478
482
  static get properties() {
479
483
  return {
484
+ "customFilterBarConfig": {
485
+ "type": "unknown",
486
+ "mutable": false,
487
+ "complexType": {
488
+ "original": "(configName: string, resourceId: string, options: any) => Promise<Array<SnkFilterItemConfig>>",
489
+ "resolved": "(configName: string, resourceId: string, options: any) => Promise<SnkFilterItemConfig[]>",
490
+ "references": {
491
+ "Promise": {
492
+ "location": "global"
493
+ },
494
+ "Array": {
495
+ "location": "global"
496
+ },
497
+ "SnkFilterItemConfig": {
498
+ "location": "import",
499
+ "path": "./filter-item/snk-filter-item"
500
+ }
501
+ }
502
+ },
503
+ "required": false,
504
+ "optional": true,
505
+ "docs": {
506
+ "tags": [],
507
+ "text": "Loader customizado para carregar as configura\u00E7\u00F5es"
508
+ }
509
+ },
480
510
  "dataUnit": {
481
511
  "type": "unknown",
482
512
  "mutable": true,
@@ -1,6 +1,6 @@
1
1
  :host {
2
2
  --snk-grid-min-height: 300px;
3
- --snk-grid-padding: var(--space--lg);
3
+ --snk-grid-padding: var(--space--small);
4
4
  }
5
5
 
6
6
  .snk-grid__container {