@sankhyalabs/sankhyablocks 8.16.0-dev.22 → 8.16.0-dev.24

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 (92) hide show
  1. package/dist/cjs/{IExporterProvider-9ac15aaf.js → ContinuousInsertUtils-b32220f0.js} +35 -2
  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-2f2e6f8c.js → snk-data-unit-004f781a.js} +2 -2
  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-grid.cjs.entry.js +52 -12
  16. package/dist/cjs/{snk-guides-viewer-866447ab.js → snk-guides-viewer-68777d37.js} +8 -4
  17. package/dist/cjs/snk-guides-viewer.cjs.entry.js +3 -3
  18. package/dist/cjs/snk-simple-crud.cjs.entry.js +43 -11
  19. package/dist/collection/components/snk-attach/structure/fetcher/factory/attach-fetcher-data-unit.factory.js +2 -4
  20. package/dist/collection/components/snk-crud/snk-crud.js +22 -1
  21. package/dist/collection/components/snk-crud/subcomponents/snk-guides-viewer.js +24 -2
  22. package/dist/collection/components/snk-grid/snk-grid.js +66 -6
  23. package/dist/collection/components/snk-simple-crud/snk-simple-crud.js +59 -8
  24. package/dist/collection/components/snk-taskbar/processor/taskbar-processor.js +5 -1
  25. package/dist/collection/lib/DefaultCustomFormatters/RmPrecisionCustomValueFormatter.js +1 -1
  26. package/dist/collection/lib/dataUnit/InMemoryLoader.js +2 -4
  27. package/dist/collection/lib/dataUnit/dataUnitInMemoryUtils.js +34 -9
  28. package/dist/collection/lib/http/data-fetcher/fetchers/data-unit/loadstrategy/DatasetStrategy.js +9 -2
  29. package/dist/collection/lib/message/resources/snk-grid.msg.js +5 -1
  30. package/dist/collection/lib/utils/ContinuousInsertUtils.js +31 -0
  31. package/dist/components/{IExporterProvider.js → ContinuousInsertUtils.js} +39 -4
  32. package/dist/components/SnkMessageBuilder.js +5 -1
  33. package/dist/components/dataunit-fetcher.js +45 -15
  34. package/dist/components/snk-attach2.js +2 -4
  35. package/dist/components/snk-crud.js +5 -1
  36. package/dist/components/snk-data-unit2.js +1 -1
  37. package/dist/components/snk-detail-view2.js +8 -3
  38. package/dist/components/snk-grid2.js +48 -6
  39. package/dist/components/snk-simple-crud2.js +39 -5
  40. package/dist/esm/{IExporterProvider-09df2e3e.js → ContinuousInsertUtils-aae77a37.js} +36 -4
  41. package/dist/esm/{SnkMessageBuilder-ae87b754.js → SnkMessageBuilder-6fff4a4c.js} +5 -1
  42. package/dist/esm/{dataunit-fetcher-3aac1a53.js → dataunit-fetcher-c24c76c6.js} +45 -15
  43. package/dist/esm/{field-search-efbe307f.js → field-search-f8b1d91e.js} +5 -1
  44. package/dist/esm/loader.js +1 -1
  45. package/dist/esm/sankhyablocks.js +1 -1
  46. package/dist/esm/snk-actions-button_4.entry.js +1 -1
  47. package/dist/esm/snk-application.entry.js +2 -2
  48. package/dist/esm/snk-attach.entry.js +2 -4
  49. package/dist/esm/snk-crud.entry.js +5 -2
  50. package/dist/esm/snk-data-exporter.entry.js +3 -3
  51. package/dist/esm/{snk-data-unit-acf3dd64.js → snk-data-unit-a90ce6f2.js} +2 -2
  52. package/dist/esm/snk-data-unit.entry.js +3 -3
  53. package/dist/esm/snk-detail-view.entry.js +4 -4
  54. package/dist/esm/snk-grid.entry.js +47 -7
  55. package/dist/esm/{snk-guides-viewer-cb8a0b48.js → snk-guides-viewer-b5dd30e6.js} +8 -4
  56. package/dist/esm/snk-guides-viewer.entry.js +3 -3
  57. package/dist/esm/snk-simple-crud.entry.js +39 -7
  58. package/dist/sankhyablocks/p-17425c72.js +1 -0
  59. package/dist/sankhyablocks/p-23736d75.js +1 -0
  60. package/dist/sankhyablocks/p-3e3cc017.js +1 -0
  61. package/dist/sankhyablocks/{p-8d7e2747.entry.js → p-43a73838.entry.js} +1 -1
  62. package/dist/sankhyablocks/p-47a038a3.js +1 -0
  63. package/dist/sankhyablocks/p-50779ad3.entry.js +1 -0
  64. package/dist/sankhyablocks/{p-16969508.entry.js → p-694e1c4a.entry.js} +1 -1
  65. package/dist/sankhyablocks/p-7ac7932c.js +60 -0
  66. package/dist/sankhyablocks/{p-bc4b94d2.entry.js → p-7eef0898.entry.js} +1 -1
  67. package/dist/sankhyablocks/{p-8862ba4a.entry.js → p-7f918d0b.entry.js} +1 -1
  68. package/dist/sankhyablocks/{p-ce6eed2c.js → p-9132a0a1.js} +1 -1
  69. package/dist/sankhyablocks/p-9bc1c239.entry.js +1 -0
  70. package/dist/sankhyablocks/{p-640140b3.entry.js → p-a42e7a1e.entry.js} +1 -1
  71. package/dist/sankhyablocks/p-b0ef9faa.entry.js +1 -0
  72. package/dist/sankhyablocks/p-e16e87fc.entry.js +1 -0
  73. package/dist/sankhyablocks/{p-3d542b58.entry.js → p-eb9f0407.entry.js} +1 -1
  74. package/dist/sankhyablocks/sankhyablocks.esm.js +1 -1
  75. package/dist/types/components/snk-crud/snk-crud.d.ts +4 -0
  76. package/dist/types/components/snk-crud/subcomponents/snk-guides-viewer.d.ts +5 -0
  77. package/dist/types/components/snk-grid/snk-grid.d.ts +12 -0
  78. package/dist/types/components/snk-simple-crud/snk-simple-crud.d.ts +10 -0
  79. package/dist/types/components/snk-taskbar/processor/taskbar-processor.d.ts +1 -0
  80. package/dist/types/components.d.ts +32 -0
  81. package/dist/types/lib/dataUnit/dataUnitInMemoryUtils.d.ts +12 -2
  82. package/dist/types/lib/utils/ContinuousInsertUtils.d.ts +10 -0
  83. package/package.json +1 -1
  84. package/dist/sankhyablocks/p-0e9a872d.entry.js +0 -1
  85. package/dist/sankhyablocks/p-1ab19772.js +0 -1
  86. package/dist/sankhyablocks/p-1f47a0b2.entry.js +0 -1
  87. package/dist/sankhyablocks/p-3757394b.entry.js +0 -1
  88. package/dist/sankhyablocks/p-53c1d25d.entry.js +0 -1
  89. package/dist/sankhyablocks/p-7c4aabe2.js +0 -1
  90. package/dist/sankhyablocks/p-a31e761f.js +0 -1
  91. package/dist/sankhyablocks/p-c2495304.js +0 -1
  92. package/dist/sankhyablocks/p-f8698ad3.js +0 -60
@@ -12,20 +12,20 @@ const index$1 = require('./index-1dfc7a6e.js');
12
12
  require('./ISave-e91b70a7.js');
13
13
  require('@sankhyalabs/ezui/dist/collection/utils/constants');
14
14
  require('@sankhyalabs/core/dist/dataunit/metadata/UnitMetadata');
15
- require('./dataunit-fetcher-4b12f70c.js');
15
+ require('./dataunit-fetcher-f89461c1.js');
16
16
  require('./filter-item-type.enum-a7ffdaa6.js');
17
17
  require('./form-config-fetcher-ed497282.js');
18
18
  const taskbarElements = require('./taskbar-elements-9ad1f9c0.js');
19
19
  const constants = require('./constants-35ddd366.js');
20
- const snkGuidesViewer = require('./snk-guides-viewer-866447ab.js');
21
- const SnkMessageBuilder = require('./SnkMessageBuilder-cceebbae.js');
20
+ const snkGuidesViewer = require('./snk-guides-viewer-68777d37.js');
21
+ const SnkMessageBuilder = require('./SnkMessageBuilder-bae64d0d.js');
22
22
  require('./ConfigStorage-ecc0ed20.js');
23
23
  require('./PrintUtils-bcaeb82f.js');
24
24
  require('@sankhyalabs/ezui/dist/collection/components/ez-grid/utils');
25
25
  require('@sankhyalabs/core/dist/utils/SortingUtils');
26
26
  require('./ResourceIDUtils-5ff86aa7.js');
27
27
  require('./index-102ba62d.js');
28
- require('./field-search-f56aa7d6.js');
28
+ require('./field-search-68e34bf4.js');
29
29
  require('@sankhyalabs/core/dist/dataunit/DataUnit');
30
30
 
31
31
  class GuideBuilder {
@@ -7,16 +7,16 @@ const core = require('@sankhyalabs/core');
7
7
  const taskbarElements = require('./taskbar-elements-9ad1f9c0.js');
8
8
  const ConfigStorage = require('./ConfigStorage-ecc0ed20.js');
9
9
  const index$1 = require('./index-1dfc7a6e.js');
10
- const fieldSearch = require('./field-search-f56aa7d6.js');
10
+ const fieldSearch = require('./field-search-68e34bf4.js');
11
11
  const index$2 = require('./index-102ba62d.js');
12
- const IExporterProvider = require('./IExporterProvider-9ac15aaf.js');
12
+ const ContinuousInsertUtils = require('./ContinuousInsertUtils-b32220f0.js');
13
13
  const DataUnit = require('@sankhyalabs/core/dist/dataunit/DataUnit');
14
14
  require('./DataFetcher-cadeef8e.js');
15
15
  require('./pesquisa-fetcher-ca89181c.js');
16
16
  require('./ISave-e91b70a7.js');
17
17
  require('@sankhyalabs/ezui/dist/collection/utils/constants');
18
18
  require('@sankhyalabs/core/dist/dataunit/metadata/UnitMetadata');
19
- require('./dataunit-fetcher-4b12f70c.js');
19
+ require('./dataunit-fetcher-f89461c1.js');
20
20
  require('./filter-item-type.enum-a7ffdaa6.js');
21
21
  require('./form-config-fetcher-ed497282.js');
22
22
  const GetSelectedRecordsIDsInfo = require('./GetSelectedRecordsIDsInfo-bd50caf1.js');
@@ -26,7 +26,7 @@ require('@sankhyalabs/ezui/dist/collection/components/ez-grid/utils');
26
26
  require('@sankhyalabs/core/dist/utils/SortingUtils');
27
27
  require('./ResourceIDUtils-5ff86aa7.js');
28
28
 
29
- class ServerSideExporterProvider extends IExporterProvider.CommonsExporter {
29
+ class ServerSideExporterProvider extends ContinuousInsertUtils.CommonsExporter {
30
30
  getFilters() {
31
31
  var _a;
32
32
  return (_a = this.dataUnit) === null || _a === void 0 ? void 0 : _a.getAppliedFilters();
@@ -93,7 +93,7 @@ const SnkGrid = class {
93
93
  "snkGridTopTaskbar.regular": ["FORM_MODE", "CONFIGURATOR", "INSERT"],
94
94
  "snkGridTopTaskbar.regular.secondary": ["FORM_MODE", "CONFIGURATOR", "INSERT"],
95
95
  "snkGridTopTaskbar.regular.singleTaskbar": [],
96
- "snkGridTopTaskbar.finish_edition": ["CANCEL", "SAVE"],
96
+ "snkGridTopTaskbar.finish_edition": ["CANCEL", "SAVE", this.handleAddFormMode()],
97
97
  "snkGridTopTaskbar.finish_edition.secondary": [],
98
98
  "snkGridTopTaskbar.finish_edition.singleTaskbar": [],
99
99
  });
@@ -106,7 +106,7 @@ const SnkGrid = class {
106
106
  "snkGridHeaderTaskbar.singleTaskbar.selected": ["UPDATE", "CLONE", "REMOVE", "MORE_OPTIONS", "DIVIDER", "ATTACH", "FORM_MODE", "CONFIGURATOR", "REFRESH", "DATA_EXPORTER", "ACTIONS_BUTTON"],
107
107
  "snkGridHeaderTaskbar.singleTaskbar.detail.unselected": ["INSERT", "FORM_MODE", "CONFIGURATOR", "REFRESH", "MORE_OPTIONS"],
108
108
  "snkGridHeaderTaskbar.singleTaskbar.detail.selected": ["UPDATE", "ATTACH", "CLONE", "REMOVE", "MORE_OPTIONS", "DIVIDER", "FORM_MODE", "CONFIGURATOR", "REFRESH"],
109
- "snkGridHeaderTaskbar.singleTaskbar.finish_edition": ["CANCEL", "SAVE"]
109
+ "snkGridHeaderTaskbar.singleTaskbar.finish_edition": ["CANCEL", "SAVE", this.handleAddFormMode()]
110
110
  });
111
111
  this.dataUnitInterceptor = {
112
112
  interceptAction: async (action) => {
@@ -121,7 +121,8 @@ const SnkGrid = class {
121
121
  this._gridConfig = undefined;
122
122
  this._popUpGridConfig = false;
123
123
  this._showSnkFilterBar = true;
124
- this.columnFilterDataSource = new IExporterProvider.SnkMultiSelectionListDataSource();
124
+ this._enableContinuousInsert = false;
125
+ this.columnFilterDataSource = new ContinuousInsertUtils.SnkMultiSelectionListDataSource();
125
126
  this.configName = undefined;
126
127
  this.filterBarTitle = undefined;
127
128
  this.resourceID = undefined;
@@ -144,6 +145,7 @@ const SnkGrid = class {
144
145
  this.filterBarLegacyConfigName = undefined;
145
146
  this.autoLoad = undefined;
146
147
  this.autoFocus = true;
148
+ this.enableGridInsert = false;
147
149
  }
148
150
  /**
149
151
  * Exibe a janela de configurações da grade.
@@ -230,6 +232,16 @@ const SnkGrid = class {
230
232
  async setFocus() {
231
233
  this._grid.setFocus();
232
234
  }
235
+ async handleClick(event) {
236
+ if (this.hasToBlockEvent(event)) {
237
+ event.preventDefault();
238
+ event.stopPropagation();
239
+ await this._dataUnit.cancelEdition();
240
+ }
241
+ }
242
+ hasToBlockEvent(event) {
243
+ return this._snkFilterBar.contains(event.target) && this.enableGridInsert && this._dataUnit.hasNewRecord();
244
+ }
233
245
  async handleGridLegacyConfigName(newLegacyConfig, oldLegacyConfig) {
234
246
  if (!newLegacyConfig) {
235
247
  return;
@@ -240,6 +252,9 @@ const SnkGrid = class {
240
252
  this.addGridLegacyConfigName();
241
253
  this.loadConfig();
242
254
  }
255
+ handleAddFormMode() {
256
+ return this.enableGridInsert ? taskbarElements.TaskbarElement.FORM_MODE : "";
257
+ }
243
258
  openGridConfig() {
244
259
  this._grid.getColumnsState()
245
260
  .then((gridColumns) => {
@@ -253,7 +268,7 @@ const SnkGrid = class {
253
268
  }
254
269
  setGridConfig(config) {
255
270
  this._gridConfig = config;
256
- IExporterProvider.CrudUtils.assertDefaultSorting(this._gridConfig, this._dataUnit);
271
+ ContinuousInsertUtils.CrudUtils.assertDefaultSorting(this._gridConfig, this._dataUnit);
257
272
  }
258
273
  loadConfig() {
259
274
  ConfigStorage.ConfigStorage.loadGridConfig(this.configName, this.resourceID)
@@ -309,7 +324,7 @@ const SnkGrid = class {
309
324
  }
310
325
  finishLoading() {
311
326
  this._dataUnit.addInterceptor(this.dataUnitInterceptor);
312
- IExporterProvider.CrudUtils.assertDefaultSorting(this._gridConfig, this._dataUnit);
327
+ ContinuousInsertUtils.CrudUtils.assertDefaultSorting(this._gridConfig, this._dataUnit);
313
328
  this.addElementID();
314
329
  if (this.columnFilterDataSource != undefined) {
315
330
  this.columnFilterDataSource.setApplication(this._application);
@@ -364,13 +379,21 @@ const SnkGrid = class {
364
379
  }
365
380
  parent = parent.parentElement;
366
381
  }
367
- this._rmPrecisionCustomValueFormatter = new IExporterProvider.RmPrecisionCustomValueFormatter();
382
+ if (this._snkFilterBar) {
383
+ this._snkFilterBar.addEventListener('click', this.handleClick);
384
+ }
385
+ this._rmPrecisionCustomValueFormatter = new ContinuousInsertUtils.RmPrecisionCustomValueFormatter();
368
386
  this.addGridLegacyConfigName();
369
387
  this.loadConfig();
388
+ this._continuousInsertUtils = new ContinuousInsertUtils.ContinuousInsertUtils(this._application, this.resourceID, this.configName);
389
+ if (this.enableGridInsert) {
390
+ this._continuousInsertUtils.getConfig().then(value => this._enableContinuousInsert = value);
391
+ }
370
392
  }
371
393
  componentDidRender() {
394
+ var _a, _b;
372
395
  this._rmPrecisionCustomValueFormatter.setGrid(this._grid);
373
- this.loadGridCustomFormatters(this._dataUnit.metadata.fields);
396
+ this.loadGridCustomFormatters((_b = (_a = this._dataUnit) === null || _a === void 0 ? void 0 : _a.metadata) === null || _b === void 0 ? void 0 : _b.fields);
374
397
  this.setCustomRenders();
375
398
  this.setCustomEditors();
376
399
  }
@@ -468,12 +491,21 @@ const SnkGrid = class {
468
491
  eagerInitialize: true,
469
492
  itemBuilder: (actionButton, item) => this.getColumnSearch(actionButton, item)
470
493
  }];
494
+ if (this.enableGridInsert) {
495
+ hardList.push(this._continuousInsertUtils.actionContinuousInsert(this._enableContinuousInsert, this.handleEnableContinuousInsert));
496
+ }
497
+ if (this.isGridInsertActive())
498
+ return hardList;
471
499
  if (this.taskbarManager != undefined && this.taskbarManager.getMoreOptions != undefined) {
472
500
  const taskbarID = this.getTopTaskBarId();
473
501
  return hardList.concat(this.taskbarManager.getMoreOptions(taskbarID, this.configName, this._dataState, this.actionsList));
474
502
  }
475
503
  return hardList.concat(this.actionsList);
476
504
  }
505
+ handleEnableContinuousInsert() {
506
+ this._enableContinuousInsert = !this._enableContinuousInsert;
507
+ this._continuousInsertUtils.handleSaveConfig(this._enableContinuousInsert);
508
+ }
477
509
  handleFilterConfigUpdated(filterConfig) {
478
510
  if (!filterConfig.length) {
479
511
  this._showSnkFilterBar = false;
@@ -485,12 +517,20 @@ const SnkGrid = class {
485
517
  }
486
518
  this._showSnkFilterBar = true;
487
519
  }
520
+ getGridHeaderButtons() {
521
+ if (this.isGridInsertActive())
522
+ return taskbarElements.TaskbarElement.MORE_OPTIONS;
523
+ return this._headerTaskbarProcessor.buttons;
524
+ }
525
+ isGridInsertActive() {
526
+ return this.enableGridInsert && this._dataUnit.hasNewRecord();
527
+ }
488
528
  render() {
489
529
  if (!this._dataUnit) {
490
530
  return undefined;
491
531
  }
492
532
  return (index.h("div", { class: "snk-grid__container ez-flex ez-flex--column ez-flex-item--auto" }, index.h("div", { class: "snk-grid__header ez-margin-bottom--medium" }, this._showSnkFilterBar &&
493
- index.h(index.Fragment, null, index.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 }), index.h("hr", { class: "ez-divider-vertical ez-divider--dark ez-margin-left--medium snk-grid__header-divider" })), index.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' }, index.h("slot", { name: this.topTaskbarCustomSlotId }))), index.h("ez-grid", { ref: ref => this._grid = ref, class: (this.presentationMode === index$1.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 }, index.h("snk-taskbar", { id: 'teste', dataUnit: this._dataUnit, configName: this.configName, messagesBuilder: this.messagesBuilder, "data-element-id": "grid_left", buttons: this._headerTaskbarProcessor.buttons, presentationMode: this.presentationMode, disabledButtons: this._headerTaskbarProcessor.disabledButtons, customButtons: this._headerTaskbarProcessor.customButtons, slot: "leftButtons", actionsList: this.getActionsList(), primaryButton: this.getPrimaryButton(), resourceID: this.resourceID, customContainerId: this.taskbarCustomContainerId, customSlotId: this.gridHeaderCustomSlotId }, index.h("slot", { name: this.gridHeaderCustomSlotId }))), index.h("div", { class: "ez-col ez-col--sd-12" }, index.h("slot", { name: "SnkGridFooter" })), index.h("ez-modal", { modalSize: "small", closeEsc: false, closeOutsideClick: false, opened: this._popUpGridConfig, onEzCloseModal: () => this.closeGridConfig() }, index.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.resourceID }))));
533
+ index.h(index.Fragment, null, index.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 }), index.h("hr", { class: "ez-divider-vertical ez-divider--dark ez-margin-left--medium snk-grid__header-divider" })), index.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' }, index.h("slot", { name: this.topTaskbarCustomSlotId }))), index.h("ez-grid", { ref: ref => this._grid = ref, class: (this.presentationMode === index$1.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 }, index.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 }, index.h("slot", { name: this.gridHeaderCustomSlotId }))), index.h("div", { class: "ez-col ez-col--sd-12" }, index.h("slot", { name: "SnkGridFooter" })), index.h("ez-modal", { modalSize: "small", closeEsc: false, closeOutsideClick: false, opened: this._popUpGridConfig, onEzCloseModal: () => this.closeGridConfig() }, index.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.resourceID }))));
494
534
  }
495
535
  get _element() { return index.getElement(this); }
496
536
  static get watchers() { return {
@@ -4,7 +4,7 @@ const index = require('./index-f9e81701.js');
4
4
  const core = require('@sankhyalabs/core');
5
5
  const SnkFormConfigManager = require('./SnkFormConfigManager-f1c92f79.js');
6
6
  const form = require('@sankhyalabs/ezui/dist/collection/utils/form');
7
- const fieldSearch = require('./field-search-f56aa7d6.js');
7
+ const fieldSearch = require('./field-search-68e34bf4.js');
8
8
  const taskbarElements = require('./taskbar-elements-9ad1f9c0.js');
9
9
  const constants = require('./constants-35ddd366.js');
10
10
  require('./DataFetcher-cadeef8e.js');
@@ -13,7 +13,7 @@ const index$1 = require('./index-1dfc7a6e.js');
13
13
  require('./ISave-e91b70a7.js');
14
14
  require('@sankhyalabs/ezui/dist/collection/utils/constants');
15
15
  require('@sankhyalabs/core/dist/dataunit/metadata/UnitMetadata');
16
- require('./dataunit-fetcher-4b12f70c.js');
16
+ require('./dataunit-fetcher-f89461c1.js');
17
17
  require('./filter-item-type.enum-a7ffdaa6.js');
18
18
  require('./form-config-fetcher-ed497282.js');
19
19
  const DataUnit = require('@sankhyalabs/core/dist/dataunit/DataUnit');
@@ -43,6 +43,7 @@ const SnkGuidesViewer = class {
43
43
  this.resourceID = undefined;
44
44
  this.detailTaskbarCustomContainerId = undefined;
45
45
  this.formLegacyConfigName = undefined;
46
+ this.enableGridInsert = false;
46
47
  this.getCustomTitle = undefined;
47
48
  this._hasToCreateFieldSearch = true;
48
49
  this._breadcrumbItems = [];
@@ -112,7 +113,7 @@ const SnkGuidesViewer = class {
112
113
  this._container.focus();
113
114
  }
114
115
  exitViewer() {
115
- if (this.dataUnit.isDirty()) {
116
+ if (!this.enableGridInsert && this.dataUnit.isDirty()) {
116
117
  this.dataUnit.cancelEdition({ after: () => this.exit.emit() });
117
118
  }
118
119
  else {
@@ -221,10 +222,13 @@ const SnkGuidesViewer = class {
221
222
  const invisibleButtons = this.getInvisibleButtons();
222
223
  this._taskbarProcessor = new fieldSearch.TaskbarProcessor({
223
224
  "snkGuideViewer.regular": btnsRegularMode,
224
- "snkGuideViewer.finish_edition": ["CANCEL", "SAVE"],
225
+ "snkGuideViewer.finish_edition": ["CANCEL", "SAVE", this.handleAddGridMode()],
225
226
  });
226
227
  this._taskbarProcessor.process(taskbarId, this.taskbarManager, this.dataState, disabledButtons, invisibleButtons);
227
228
  }
229
+ handleAddGridMode() {
230
+ return this.enableGridInsert ? taskbarElements.TaskbarElement.GRID_MODE : "";
231
+ }
228
232
  getInvisibleButtons() {
229
233
  const invisibleButtons = [];
230
234
  if (this.dataState && this.dataState.selectionInfo.mode === DataUnit.SelectionMode.ALL_RECORDS)
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- const snkGuidesViewer = require('./snk-guides-viewer-866447ab.js');
5
+ const snkGuidesViewer = require('./snk-guides-viewer-68777d37.js');
6
6
  require('./index-f9e81701.js');
7
7
  require('@sankhyalabs/core');
8
8
  require('./SnkFormConfigManager-f1c92f79.js');
@@ -14,14 +14,14 @@ require('@sankhyalabs/core/dist/dataunit/metadata/UnitMetadata');
14
14
  require('./filter-item-type.enum-a7ffdaa6.js');
15
15
  require('./constants-35ddd366.js');
16
16
  require('@sankhyalabs/ezui/dist/collection/utils/form');
17
- require('./field-search-f56aa7d6.js');
17
+ require('./field-search-68e34bf4.js');
18
18
  require('./taskbar-elements-9ad1f9c0.js');
19
19
  require('./index-1dfc7a6e.js');
20
20
  require('./index-102ba62d.js');
21
21
  require('./pesquisa-fetcher-ca89181c.js');
22
22
  require('./ISave-e91b70a7.js');
23
23
  require('@sankhyalabs/ezui/dist/collection/utils/constants');
24
- require('./dataunit-fetcher-4b12f70c.js');
24
+ require('./dataunit-fetcher-f89461c1.js');
25
25
  require('@sankhyalabs/ezui/dist/collection/components/ez-grid/utils');
26
26
  require('@sankhyalabs/core/dist/utils/SortingUtils');
27
27
  require('./ResourceIDUtils-5ff86aa7.js');
@@ -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-b32220f0.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
  }
@@ -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,22 @@ 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, this.handleEnableContinuousInsert));
666
+ }
667
+ if (this.isGridInsertActive())
668
+ return hardList;
648
669
  if (this.taskbarManager != undefined && this.taskbarManager.getMoreOptions != undefined) {
649
670
  const taskbarID = this.getTopTaskBarId();
650
671
  return hardList.concat(this.taskbarManager.getMoreOptions(taskbarID, this.configName, this.dataState, this.actionsList));
651
672
  }
652
- return hardList.concat(this.actionsList);
673
+ if (this.actionsList)
674
+ return hardList.concat(this.actionsList);
675
+ return hardList;
676
+ }
677
+ handleEnableContinuousInsert() {
678
+ this._enableContinuousInsert = !this._enableContinuousInsert;
679
+ this._continuousInsertUtils.handleSaveConfig(this._enableContinuousInsert);
653
680
  }
654
681
  getTopTaskBarId() {
655
682
  var _a;
@@ -723,7 +750,7 @@ const SnkSimpleCrud = class {
723
750
  }
724
751
  setGridConfig(config) {
725
752
  this.gridConfig = config;
726
- IExporterProvider.CrudUtils.assertDefaultSorting(this.gridConfig, this.dataUnit);
753
+ ContinuousInsertUtils.CrudUtils.assertDefaultSorting(this.gridConfig, this.dataUnit);
727
754
  }
728
755
  setFormConfig(config, forceUpdate) {
729
756
  if (this.formConfig && !forceUpdate)
@@ -768,6 +795,11 @@ const SnkSimpleCrud = class {
768
795
  }
769
796
  this._formConfigManager.setConfig(this.formConfig);
770
797
  }
798
+ handleDataUnitOnInsertionMode() {
799
+ if (this.enableGridInsert)
800
+ return;
801
+ this.goToView(constants.VIEW_MODE.FORM);
802
+ }
771
803
  /* istanbul ignore next */
772
804
  render() {
773
805
  var _a;
@@ -775,9 +807,9 @@ const SnkSimpleCrud = class {
775
807
  return;
776
808
  }
777
809
  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)
810
+ 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
811
  ? 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() }))));
812
+ : 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
813
  }
782
814
  get _element() { return index$1.getElement(this); }
783
815
  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,