@sankhyalabs/sankhyablocks 8.16.0-dev.21 → 8.16.0-dev.23

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 (101) hide show
  1. package/dist/cjs/{IExporterProvider-9ac15aaf.js → ContinuousInsertUtils-e8d801ee.js} +35 -2
  2. package/dist/cjs/{RecordIDUtils-3735135c.js → GetSelectedRecordsIDsInfo-bd50caf1.js} +10 -10
  3. package/dist/cjs/{SnkMessageBuilder-cceebbae.js → SnkMessageBuilder-bae64d0d.js} +5 -1
  4. package/dist/cjs/{dataunit-fetcher-4b12f70c.js → dataunit-fetcher-c1119754.js} +9 -2
  5. package/dist/cjs/{field-search-f56aa7d6.js → field-search-68e34bf4.js} +5 -1
  6. package/dist/cjs/loader.cjs.js +1 -1
  7. package/dist/cjs/sankhyablocks.cjs.js +1 -1
  8. package/dist/cjs/snk-actions-button_4.cjs.entry.js +13 -10
  9. package/dist/cjs/snk-application.cjs.entry.js +2 -2
  10. package/dist/cjs/snk-attach.cjs.entry.js +1 -1
  11. package/dist/cjs/snk-crud.cjs.entry.js +5 -2
  12. package/dist/cjs/snk-data-exporter.cjs.entry.js +4 -4
  13. package/dist/cjs/{snk-data-unit-c095fb1a.js → snk-data-unit-3f5acfd1.js} +4 -4
  14. package/dist/cjs/snk-data-unit.cjs.entry.js +4 -4
  15. package/dist/cjs/snk-detail-view.cjs.entry.js +4 -4
  16. package/dist/cjs/snk-grid.cjs.entry.js +54 -14
  17. package/dist/cjs/{snk-guides-viewer-866447ab.js → snk-guides-viewer-c29b6316.js} +8 -4
  18. package/dist/cjs/snk-guides-viewer.cjs.entry.js +3 -3
  19. package/dist/cjs/snk-simple-crud.cjs.entry.js +45 -13
  20. package/dist/collection/components/snk-actions-button/actions/index.js +12 -9
  21. package/dist/collection/components/snk-crud/snk-crud.js +22 -1
  22. package/dist/collection/components/snk-crud/subcomponents/snk-guides-viewer.js +24 -2
  23. package/dist/collection/components/snk-data-exporter/providers/ClientSideExporterProvider.js +1 -1
  24. package/dist/collection/components/snk-data-exporter/providers/ServerSideExporterProvider.js +1 -1
  25. package/dist/collection/components/snk-data-unit/snk-data-unit.js +2 -2
  26. package/dist/collection/components/snk-grid/snk-grid.js +66 -6
  27. package/dist/collection/components/snk-simple-crud/snk-simple-crud.js +59 -8
  28. package/dist/collection/components/snk-taskbar/processor/taskbar-processor.js +5 -1
  29. package/dist/collection/lib/DefaultCustomFormatters/RmPrecisionCustomValueFormatter.js +1 -1
  30. package/dist/collection/lib/http/data-fetcher/fetchers/data-unit/loadstrategy/DatasetStrategy.js +9 -2
  31. package/dist/collection/lib/message/resources/snk-grid.msg.js +5 -1
  32. package/dist/collection/lib/utils/ContinuousInsertUtils.js +31 -0
  33. package/dist/collection/{components/snk-data-exporter/utils/RecordIDUtils.js → lib/utils/GetSelectedRecordsIDsInfo.js} +9 -9
  34. package/dist/components/{IExporterProvider.js → ContinuousInsertUtils.js} +39 -4
  35. package/dist/{esm/RecordIDUtils-87d02110.js → components/GetSelectedRecordsIDsInfo.js} +10 -10
  36. package/dist/components/SnkMessageBuilder.js +5 -1
  37. package/dist/components/dataunit-fetcher.js +9 -2
  38. package/dist/components/snk-actions-button2.js +12 -9
  39. package/dist/components/snk-crud.js +5 -1
  40. package/dist/components/snk-data-unit2.js +4 -41
  41. package/dist/components/snk-detail-view2.js +8 -3
  42. package/dist/components/snk-grid2.js +50 -8
  43. package/dist/components/snk-simple-crud2.js +42 -7
  44. package/dist/esm/{IExporterProvider-09df2e3e.js → ContinuousInsertUtils-042cdd90.js} +36 -4
  45. package/dist/esm/GetSelectedRecordsIDsInfo-9fa41508.js +41 -0
  46. package/dist/esm/{SnkMessageBuilder-ae87b754.js → SnkMessageBuilder-6fff4a4c.js} +5 -1
  47. package/dist/esm/{dataunit-fetcher-3aac1a53.js → dataunit-fetcher-f80e80a6.js} +9 -2
  48. package/dist/esm/{field-search-efbe307f.js → field-search-f8b1d91e.js} +5 -1
  49. package/dist/esm/loader.js +1 -1
  50. package/dist/esm/sankhyablocks.js +1 -1
  51. package/dist/esm/snk-actions-button_4.entry.js +13 -10
  52. package/dist/esm/snk-application.entry.js +2 -2
  53. package/dist/esm/snk-attach.entry.js +1 -1
  54. package/dist/esm/snk-crud.entry.js +5 -2
  55. package/dist/esm/snk-data-exporter.entry.js +4 -4
  56. package/dist/esm/{snk-data-unit-75fc8910.js → snk-data-unit-cc1d8b4e.js} +4 -4
  57. package/dist/esm/snk-data-unit.entry.js +4 -4
  58. package/dist/esm/snk-detail-view.entry.js +4 -4
  59. package/dist/esm/snk-grid.entry.js +49 -9
  60. package/dist/esm/{snk-guides-viewer-cb8a0b48.js → snk-guides-viewer-292473eb.js} +8 -4
  61. package/dist/esm/snk-guides-viewer.entry.js +3 -3
  62. package/dist/esm/snk-simple-crud.entry.js +41 -9
  63. package/dist/sankhyablocks/p-031721d6.js +1 -0
  64. package/dist/sankhyablocks/{p-640140b3.entry.js → p-05af89d0.entry.js} +1 -1
  65. package/dist/sankhyablocks/p-12e2c750.js +1 -0
  66. package/dist/sankhyablocks/p-17425c72.js +1 -0
  67. package/dist/sankhyablocks/{p-f8698ad3.js → p-219452ed.js} +1 -1
  68. package/dist/sankhyablocks/p-23736d75.js +1 -0
  69. package/dist/sankhyablocks/p-39edee2a.js +1 -0
  70. package/dist/sankhyablocks/{p-16969508.entry.js → p-4fbd8c74.entry.js} +1 -1
  71. package/dist/sankhyablocks/p-656fbc8b.entry.js +1 -0
  72. package/dist/sankhyablocks/p-6bd7e6e4.entry.js +1 -0
  73. package/dist/sankhyablocks/{p-41556e8a.entry.js → p-6e89e14b.entry.js} +1 -1
  74. package/dist/sankhyablocks/{p-bc4b94d2.entry.js → p-7a9df88b.entry.js} +1 -1
  75. package/dist/sankhyablocks/p-7dd49d15.js +1 -0
  76. package/dist/sankhyablocks/{p-3757394b.entry.js → p-9fd54396.entry.js} +1 -1
  77. package/dist/sankhyablocks/p-b364a0b7.entry.js +1 -0
  78. package/dist/sankhyablocks/{p-e2a1273a.entry.js → p-d7837f33.entry.js} +1 -1
  79. package/dist/sankhyablocks/p-f5f5c94a.entry.js +1 -0
  80. package/dist/sankhyablocks/sankhyablocks.esm.js +1 -1
  81. package/dist/types/components/snk-actions-button/actions/index.d.ts +1 -0
  82. package/dist/types/components/snk-crud/snk-crud.d.ts +4 -0
  83. package/dist/types/components/snk-crud/subcomponents/snk-guides-viewer.d.ts +5 -0
  84. package/dist/types/components/snk-grid/snk-grid.d.ts +12 -0
  85. package/dist/types/components/snk-simple-crud/snk-simple-crud.d.ts +10 -0
  86. package/dist/types/components/snk-taskbar/processor/taskbar-processor.d.ts +1 -0
  87. package/dist/types/components.d.ts +32 -0
  88. package/dist/types/lib/utils/ContinuousInsertUtils.d.ts +10 -0
  89. package/dist/types/lib/utils/GetSelectedRecordsIDsInfo.d.ts +3 -0
  90. package/package.json +1 -1
  91. package/dist/sankhyablocks/p-17aba142.entry.js +0 -1
  92. package/dist/sankhyablocks/p-1ab19772.js +0 -1
  93. package/dist/sankhyablocks/p-1f47a0b2.entry.js +0 -1
  94. package/dist/sankhyablocks/p-7c4aabe2.js +0 -1
  95. package/dist/sankhyablocks/p-9863d682.js +0 -1
  96. package/dist/sankhyablocks/p-a31e761f.js +0 -1
  97. package/dist/sankhyablocks/p-c2495304.js +0 -1
  98. package/dist/sankhyablocks/p-d137ae48.entry.js +0 -1
  99. package/dist/sankhyablocks/p-df8f4c4f.js +0 -1
  100. package/dist/sankhyablocks/p-fb0313db.entry.js +0 -1
  101. package/dist/types/components/snk-data-exporter/utils/RecordIDUtils.d.ts +0 -3
@@ -2,12 +2,12 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- const snkDataUnit = require('./snk-data-unit-c095fb1a.js');
5
+ const snkDataUnit = require('./snk-data-unit-3f5acfd1.js');
6
6
  require('./index-f9e81701.js');
7
7
  require('@sankhyalabs/core');
8
8
  require('@sankhyalabs/ezui/dist/collection/utils');
9
- require('./SnkMessageBuilder-cceebbae.js');
10
- require('./dataunit-fetcher-4b12f70c.js');
9
+ require('./SnkMessageBuilder-bae64d0d.js');
10
+ require('./dataunit-fetcher-c1119754.js');
11
11
  require('./DataFetcher-cadeef8e.js');
12
12
  require('./PrintUtils-bcaeb82f.js');
13
13
  require('@sankhyalabs/core/dist/dataunit/metadata/UnitMetadata');
@@ -15,8 +15,8 @@ require('@sankhyalabs/ezui/dist/collection/utils/constants');
15
15
  require('@sankhyalabs/ezui/dist/collection/components/ez-grid/utils');
16
16
  require('@sankhyalabs/core/dist/utils/SortingUtils');
17
17
  require('./ResourceIDUtils-5ff86aa7.js');
18
- require('./RecordIDUtils-3735135c.js');
19
18
  require('@sankhyalabs/core/dist/dataunit/metadata/DataType');
19
+ require('./GetSelectedRecordsIDsInfo-bd50caf1.js');
20
20
 
21
21
 
22
22
 
@@ -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-c1119754.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-c29b6316.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,26 +7,26 @@ 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-e8d801ee.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-c1119754.js');
20
20
  require('./filter-item-type.enum-a7ffdaa6.js');
21
21
  require('./form-config-fetcher-ed497282.js');
22
- const RecordIDUtils = require('./RecordIDUtils-3735135c.js');
22
+ const GetSelectedRecordsIDsInfo = require('./GetSelectedRecordsIDsInfo-bd50caf1.js');
23
23
  require('@sankhyalabs/ezui/dist/collection/components/ez-grid/utils/InMemoryFilterColumnDataSource');
24
24
  require('./PrintUtils-bcaeb82f.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');
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();
@@ -48,7 +48,7 @@ class ServerSideExporterProvider extends IExporterProvider.CommonsExporter {
48
48
  return total !== null && total !== void 0 ? total : (_c = (_b = this.dataUnit) === null || _b === void 0 ? void 0 : _b.records) === null || _c === void 0 ? void 0 : _c.length;
49
49
  }
50
50
  getSelectedIDs() {
51
- return RecordIDUtils.getSelectedIDs(this.dataUnit);
51
+ return GetSelectedRecordsIDsInfo.getSelectedRecordsIDsInfo(this.dataUnit);
52
52
  }
53
53
  getOffset() {
54
54
  return this.getExporterOffset(this.getPaginationInfo());
@@ -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-c1119754.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-c29b6316.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-c1119754.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,18 +9,18 @@ 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-e8d801ee.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-c1119754.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
- const RecordIDUtils = require('./RecordIDUtils-3735135c.js');
23
+ const GetSelectedRecordsIDsInfo = require('./GetSelectedRecordsIDsInfo-bd50caf1.js');
24
24
  const index$2 = require('./index-102ba62d.js');
25
25
  require('./PrintUtils-bcaeb82f.js');
26
26
  require('@sankhyalabs/ezui/dist/collection/components/ez-grid/utils/InMemoryFilterColumnDataSource');
@@ -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
  }
@@ -41,7 +41,7 @@ class ClientSideExporterProvider extends IExporterProvider.CommonsExporter {
41
41
  return total !== null && total !== void 0 ? total : (_c = (_b = this.dataUnit) === null || _b === void 0 ? void 0 : _b.records) === null || _c === void 0 ? void 0 : _c.length;
42
42
  }
43
43
  getSelectedIDs() {
44
- return RecordIDUtils.getSelectedIDs(this.dataUnit);
44
+ return GetSelectedRecordsIDsInfo.getSelectedRecordsIDsInfo(this.dataUnit);
45
45
  }
46
46
  getRecordID() {
47
47
  var _a, _b, _c;
@@ -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,9 +3,9 @@ import { RefreshType } from "./enum/RefreshType";
3
3
  import { ParamType } from "./enum/ParamType";
4
4
  import { DataFetcher } from "../../../lib";
5
5
  import { ActionsType } from "./enum/ActionsType";
6
+ import { getSelectedRecordsIDsInfo } from "../../../lib/utils/GetSelectedRecordsIDsInfo";
6
7
  const MASTER_ROW_PROPERTY = "__MASTER_ROW__";
7
8
  const ENTITY_NAME_PROPERTY = '__ENTITY_NAME__';
8
- const NUFIN_COLUMN = 'NUFIN';
9
9
  const SERVICE_GET_CONFIGURATIONS = 'SystemUtilsSP.getConf';
10
10
  export default class Actions {
11
11
  constructor(actionsExecuteInterface, dataUnit, appResourceId) {
@@ -17,6 +17,10 @@ export default class Actions {
17
17
  this._application = ApplicationContext.getContextValue("__SNK__APPLICATION__");
18
18
  this._appResourceId = appResourceId;
19
19
  }
20
+ getPrimaryKeys() {
21
+ const ids = getSelectedRecordsIDsInfo(this._dataUnit);
22
+ return ids.map(({ name }) => name);
23
+ }
20
24
  apply(action, hasParamsToSave) {
21
25
  this._application.closePopUp();
22
26
  this._actionsExecuteInterface.execute(action, this._dataUnit)
@@ -285,6 +289,7 @@ export default class Actions {
285
289
  executeAction(execSource);
286
290
  }
287
291
  addRows(execSource) {
292
+ const primaryKeys = this.getPrimaryKeys();
288
293
  const rows = {
289
294
  row: []
290
295
  };
@@ -298,15 +303,13 @@ export default class Actions {
298
303
  delete sourceRow[MASTER_ROW_PROPERTY];
299
304
  delete sourceRow[ENTITY_NAME_PROPERTY];
300
305
  }
301
- for (const fieldName in sourceRow) {
302
- if (fieldName !== NUFIN_COLUMN)
303
- continue;
304
- if (!row.field) {
305
- row.field = [];
306
- }
306
+ if (!row.field) {
307
+ row.field = [];
308
+ }
309
+ for (const primaryKey of primaryKeys) {
307
310
  row.field.push({
308
- fieldName: fieldName,
309
- $: sourceRow[fieldName]
311
+ fieldName: primaryKey,
312
+ $: sourceRow[primaryKey]
310
313
  });
311
314
  }
312
315
  rows.row.push(row);
@@ -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,