@sankhyalabs/sankhyablocks 8.16.0-dev.104 → 8.16.0-dev.106

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 (107) hide show
  1. package/dist/cjs/{ClientSideExporterProvider-8c219037.js → ClientSideExporterProvider-a2753c93.js} +3 -3
  2. package/dist/cjs/{SnkMessageBuilder-bae64d0d.js → SnkMessageBuilder-aecd7c18.js} +31 -24
  3. package/dist/cjs/{dataunit-fetcher-4a5d491a.js → dataunit-fetcher-a723f0dc.js} +5 -2
  4. package/dist/cjs/loader.cjs.js +1 -1
  5. package/dist/cjs/pesquisa-grid_2.cjs.entry.js +1 -1
  6. package/dist/cjs/sankhyablocks.cjs.js +1 -1
  7. package/dist/cjs/snk-actions-button_7.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 -2
  10. package/dist/cjs/snk-crud.cjs.entry.js +19 -11
  11. package/dist/cjs/snk-data-exporter.cjs.entry.js +3 -3
  12. package/dist/cjs/{snk-data-unit-4b510d6e.js → snk-data-unit-ebfdb9ba.js} +226 -12
  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 +23 -9
  16. package/dist/cjs/{snk-guides-viewer-e8e5f7b4.js → snk-guides-viewer-fd39f437.js} +99 -44
  17. package/dist/cjs/snk-guides-viewer.cjs.entry.js +3 -3
  18. package/dist/cjs/snk-pesquisa.cjs.entry.js +1 -1
  19. package/dist/cjs/snk-simple-crud.cjs.entry.js +67 -24
  20. package/dist/cjs/snk-taskbar.cjs.entry.js +2 -1
  21. package/dist/cjs/{taskbar-elements-7e19882d.js → taskbar-elements-02379452.js} +3 -0
  22. package/dist/collection/components/snk-crud/snk-crud.js +35 -9
  23. package/dist/collection/components/snk-crud/subcomponents/snk-guides-viewer.js +117 -43
  24. package/dist/collection/components/snk-data-unit/MultipleUpdateHelper.js +128 -0
  25. package/dist/collection/components/snk-data-unit/snk-data-unit.js +107 -12
  26. package/dist/collection/components/snk-grid/filtercolumn/SnkMultiSelectionListDataSource.js +2 -2
  27. package/dist/collection/components/snk-grid/snk-grid.js +38 -6
  28. package/dist/collection/components/snk-simple-crud/snk-simple-crud.js +83 -22
  29. package/dist/collection/components/snk-taskbar/elements/taskbar-elements.js +3 -0
  30. package/dist/collection/components/snk-taskbar/snk-taskbar.js +2 -2
  31. package/dist/collection/lib/http/data-fetcher/fetchers/data-unit/cache/PreloadManager.js +5 -2
  32. package/dist/collection/lib/message/SnkMessageBuilder.js +1 -0
  33. package/dist/collection/lib/message/resources/snk-data-unit.msg.js +28 -23
  34. package/dist/collection/lib/message/resources/snk-taskbar.msg.js +1 -0
  35. package/dist/components/ContinuousInsertUtils.js +2 -2
  36. package/dist/components/SnkMessageBuilder.js +31 -24
  37. package/dist/components/dataunit-fetcher.js +5 -2
  38. package/dist/components/snk-crud.js +18 -9
  39. package/dist/components/snk-data-unit2.js +225 -11
  40. package/dist/components/snk-detail-view2.js +98 -43
  41. package/dist/components/snk-grid2.js +21 -6
  42. package/dist/components/snk-simple-crud2.js +66 -22
  43. package/dist/components/snk-taskbar2.js +4 -0
  44. package/dist/esm/{ClientSideExporterProvider-a37f890b.js → ClientSideExporterProvider-b3871edb.js} +3 -3
  45. package/dist/esm/{SnkMessageBuilder-6fff4a4c.js → SnkMessageBuilder-12f5fe1a.js} +31 -24
  46. package/dist/esm/{dataunit-fetcher-1d02ecfc.js → dataunit-fetcher-0e025732.js} +5 -2
  47. package/dist/esm/loader.js +1 -1
  48. package/dist/esm/pesquisa-grid_2.entry.js +1 -1
  49. package/dist/esm/sankhyablocks.js +1 -1
  50. package/dist/esm/snk-actions-button_7.entry.js +1 -1
  51. package/dist/esm/snk-application.entry.js +2 -2
  52. package/dist/esm/snk-attach.entry.js +2 -2
  53. package/dist/esm/snk-crud.entry.js +19 -11
  54. package/dist/esm/snk-data-exporter.entry.js +3 -3
  55. package/dist/esm/{snk-data-unit-7d0ce406.js → snk-data-unit-03654813.js} +226 -12
  56. package/dist/esm/snk-data-unit.entry.js +3 -3
  57. package/dist/esm/snk-detail-view.entry.js +4 -4
  58. package/dist/esm/snk-grid.entry.js +23 -9
  59. package/dist/esm/{snk-guides-viewer-c44b3839.js → snk-guides-viewer-75e06feb.js} +100 -45
  60. package/dist/esm/snk-guides-viewer.entry.js +3 -3
  61. package/dist/esm/snk-pesquisa.entry.js +1 -1
  62. package/dist/esm/snk-simple-crud.entry.js +68 -25
  63. package/dist/esm/snk-taskbar.entry.js +2 -1
  64. package/dist/esm/{taskbar-elements-d2353c64.js → taskbar-elements-c62b6c66.js} +3 -0
  65. package/dist/sankhyablocks/{p-35f85998.entry.js → p-1a51dfde.entry.js} +1 -1
  66. package/dist/sankhyablocks/{p-ef6f0a1b.entry.js → p-1c29409b.entry.js} +1 -1
  67. package/dist/sankhyablocks/{p-5503e89f.entry.js → p-271c86d3.entry.js} +1 -1
  68. package/dist/sankhyablocks/p-2d6df7e7.entry.js +1 -0
  69. package/dist/sankhyablocks/p-41da5310.js +1 -0
  70. package/dist/sankhyablocks/{p-b2a2a83e.entry.js → p-4a93daef.entry.js} +1 -1
  71. package/dist/sankhyablocks/p-65be98c5.entry.js +1 -0
  72. package/dist/sankhyablocks/{p-6541bb6d.entry.js → p-6a0c8ce0.entry.js} +1 -1
  73. package/dist/sankhyablocks/p-7993b2e3.js +60 -0
  74. package/dist/sankhyablocks/{p-754559b9.entry.js → p-7cd5c315.entry.js} +1 -1
  75. package/dist/sankhyablocks/p-80f8c22c.js +1 -0
  76. package/dist/sankhyablocks/p-885802c3.js +1 -0
  77. package/dist/sankhyablocks/p-ab0caed6.entry.js +1 -0
  78. package/dist/sankhyablocks/{p-38e3ffda.entry.js → p-ad07f0c5.entry.js} +1 -1
  79. package/dist/sankhyablocks/p-cc8c3bca.entry.js +1 -0
  80. package/dist/sankhyablocks/{p-3b190fb1.entry.js → p-d31a701e.entry.js} +1 -1
  81. package/dist/sankhyablocks/{p-00796b12.entry.js → p-dc6ad9a6.entry.js} +1 -1
  82. package/dist/sankhyablocks/p-f4d5bb7f.js +1 -0
  83. package/dist/sankhyablocks/p-fb0f0087.js +1 -0
  84. package/dist/sankhyablocks/sankhyablocks.esm.js +1 -1
  85. package/dist/types/components/snk-crud/snk-crud.d.ts +4 -0
  86. package/dist/types/components/snk-crud/subcomponents/snk-guides-viewer.d.ts +10 -1
  87. package/dist/types/components/snk-data-unit/MultipleUpdateHelper.d.ts +9 -0
  88. package/dist/types/components/snk-data-unit/snk-data-unit.d.ts +17 -0
  89. package/dist/types/components/snk-grid/filtercolumn/SnkMultiSelectionListDataSource.d.ts +2 -1
  90. package/dist/types/components/snk-grid/snk-grid.d.ts +5 -0
  91. package/dist/types/components/snk-simple-crud/snk-simple-crud.d.ts +9 -2
  92. package/dist/types/components/snk-taskbar/elements/taskbar-elements.d.ts +2 -1
  93. package/dist/types/components/snk-taskbar/snk-taskbar.d.ts +1 -0
  94. package/dist/types/components.d.ts +28 -0
  95. package/dist/types/lib/http/data-fetcher/fetchers/data-unit/cache/PreloadManager.d.ts +1 -1
  96. package/dist/types/lib/message/SnkMessageBuilder.d.ts +2 -1
  97. package/package.json +1 -1
  98. package/dist/sankhyablocks/p-17425c72.js +0 -1
  99. package/dist/sankhyablocks/p-3fc82614.js +0 -1
  100. package/dist/sankhyablocks/p-460f1827.entry.js +0 -1
  101. package/dist/sankhyablocks/p-6e0a5314.js +0 -1
  102. package/dist/sankhyablocks/p-835128f5.entry.js +0 -1
  103. package/dist/sankhyablocks/p-8fa828b5.js +0 -1
  104. package/dist/sankhyablocks/p-92778d5a.js +0 -1
  105. package/dist/sankhyablocks/p-a8be1d67.js +0 -60
  106. package/dist/sankhyablocks/p-a962a3e4.entry.js +0 -1
  107. package/dist/sankhyablocks/p-e35fe2bd.entry.js +0 -1
@@ -27,7 +27,7 @@ export class SnkGrid {
27
27
  });
28
28
  this._headerTaskbarProcessor = new TaskbarProcessor({
29
29
  "snkGridHeaderTaskbar.unselected": ["REFRESH", "DATA_EXPORTER", "ACTIONS_BUTTON", "MORE_OPTIONS"],
30
- "snkGridHeaderTaskbar.selected": ["UPDATE", "CLONE", "REMOVE", "MORE_OPTIONS", "DIVIDER", "ATTACH", "REFRESH", "DATA_EXPORTER", "ACTIONS_BUTTON"],
30
+ "snkGridHeaderTaskbar.selected": this.getGridHeaderSelectedBtns(),
31
31
  "snkGridHeaderTaskbar.detail.unselected": ["REFRESH", "MORE_OPTIONS"],
32
32
  "snkGridHeaderTaskbar.detail.selected": ["UPDATE", "ATTACH", "CLONE", "REMOVE", "MORE_OPTIONS", "DIVIDER", "REFRESH"],
33
33
  "snkGridHeaderTaskbar.singleTaskbar.unselected": ["INSERT", "FORM_MODE", "CONFIGURATOR", "REFRESH", "DATA_EXPORTER", "ACTIONS_BUTTON", "MORE_OPTIONS"],
@@ -78,6 +78,17 @@ export class SnkGrid {
78
78
  this.enableGridInsert = false;
79
79
  this.outlineMode = false;
80
80
  this.strategyExporter = ExporterStrategy.SERVER_SIDE;
81
+ this.multipleEditionEnabled = true;
82
+ }
83
+ getGridHeaderSelectedBtns() {
84
+ const btns = [
85
+ TaskbarElement.UPDATE, TaskbarElement.CLONE, TaskbarElement.REMOVE,
86
+ TaskbarElement.MORE_OPTIONS, TaskbarElement.DIVIDER, TaskbarElement.ATTACH, TaskbarElement.FORM_MODE,
87
+ TaskbarElement.CONFIGURATOR, TaskbarElement.REFRESH, TaskbarElement.DATA_EXPORTER, TaskbarElement.ACTIONS_BUTTON
88
+ ];
89
+ if (this.multipleEditionEnabled)
90
+ btns.unshift(TaskbarElement.UPDATE_MULTIPLE);
91
+ return btns;
81
92
  }
82
93
  reloadConfig() {
83
94
  this.loadConfig();
@@ -362,20 +373,23 @@ export class SnkGrid {
362
373
  const disabledButtons = [];
363
374
  if ((_a = this._dataState) === null || _a === void 0 ? void 0 : _a.selectionInfo) {
364
375
  if (this._dataState.selectionInfo.length > 1) {
365
- disabledButtons.push(TaskbarElement.CLONE, "ATTACH", TaskbarElement.UPDATE);
376
+ disabledButtons.push(TaskbarElement.CLONE, TaskbarElement.ATTACH, TaskbarElement.UPDATE);
366
377
  }
367
378
  if (this._dataState.selectionInfo.isAllRecords()) {
368
- disabledButtons.push("REMOVE");
379
+ disabledButtons.push(TaskbarElement.REMOVE);
369
380
  }
370
381
  }
371
382
  return disabledButtons;
372
383
  }
373
384
  getInvisibleButtons() {
385
+ var _a, _b;
374
386
  let invisibleButtons = [];
375
387
  if (!this._dataUnit || this._dataUnit.records.length === 0)
376
- invisibleButtons.push("DATA_EXPORTER");
377
- if (this._dataState && this._dataState.selectionInfo.mode === SelectionMode.ALL_RECORDS)
378
- invisibleButtons.push("ACTIONS_BUTTON");
388
+ invisibleButtons.push(TaskbarElement.DATA_EXPORTER);
389
+ if (((_a = this._dataState) === null || _a === void 0 ? void 0 : _a.selectionInfo.mode) === SelectionMode.ALL_RECORDS)
390
+ invisibleButtons.push(TaskbarElement.ACTIONS_BUTTON);
391
+ if (((_b = this._dataState) === null || _b === void 0 ? void 0 : _b.selectionInfo.length) === 1)
392
+ invisibleButtons.push(TaskbarElement.UPDATE_MULTIPLE);
379
393
  return invisibleButtons;
380
394
  }
381
395
  componentWillRender() {
@@ -1026,6 +1040,24 @@ export class SnkGrid {
1026
1040
  "attribute": "strategy-exporter",
1027
1041
  "reflect": false,
1028
1042
  "defaultValue": "ExporterStrategy.SERVER_SIDE"
1043
+ },
1044
+ "multipleEditionEnabled": {
1045
+ "type": "boolean",
1046
+ "mutable": false,
1047
+ "complexType": {
1048
+ "original": "boolean",
1049
+ "resolved": "boolean",
1050
+ "references": {}
1051
+ },
1052
+ "required": false,
1053
+ "optional": false,
1054
+ "docs": {
1055
+ "tags": [],
1056
+ "text": "Habilita a edi\u00E7\u00E3o de m\u00FAltiplos registros simult\u00E2neos."
1057
+ },
1058
+ "attribute": "multiple-edition-enabled",
1059
+ "reflect": false,
1060
+ "defaultValue": "true"
1029
1061
  }
1030
1062
  };
1031
1063
  }
@@ -1,4 +1,4 @@
1
- import { ApplicationContext, DataType, ElementIDUtils, FloatingManager, JSUtils, KeyboardManager, ObjectUtils, StringUtils, UserInterface, } from '@sankhyalabs/core';
1
+ import { Action as DUAction, ApplicationContext, DataType, ElementIDUtils, FloatingManager, JSUtils, KeyboardManager, ObjectUtils, StringUtils, UserInterface, } from '@sankhyalabs/core';
2
2
  import { CSSVarsUtils } from '@sankhyalabs/ezui/dist/collection/utils';
3
3
  import { h } from '@stencil/core';
4
4
  import { SIMPLE_CRUD_MODE, VIEW_MODE } from '../../lib/utils/constants';
@@ -22,13 +22,6 @@ export class SnkSimpleCrud {
22
22
  this._formConfigFetcher = new FormConfigFetcher();
23
23
  this._customEditors = new Map();
24
24
  this._customRenders = new Map();
25
- this._taskbarProcessor = new TaskbarProcessor({
26
- "snkSimpleCrudTaskbar.form_regular": this.getButtons(false, [TaskbarElement.GRID_MODE], true),
27
- "snkSimpleCrudTaskbar.grid_regular": this.getButtons(false, [TaskbarElement.DATA_EXPORTER, TaskbarElement.FORM_MODE]),
28
- "snkSimpleCrudTaskbar.form_selected": this.getButtons(true, [TaskbarElement.GRID_MODE], true),
29
- "snkSimpleCrudTaskbar.grid_selected": this.getButtons(true, [TaskbarElement.DATA_EXPORTER, TaskbarElement.FORM_MODE]),
30
- "snkSimpleCrudTaskbar.finish_edition": this.getFinishEditionButtonsCallback.bind(this)
31
- });
32
25
  this._showPopUpGridConfig = false;
33
26
  this._currentViewMode = VIEW_MODE.GRID;
34
27
  this._config = undefined;
@@ -61,6 +54,7 @@ export class SnkSimpleCrud {
61
54
  this.ignoreReadOnlyFormFields = false;
62
55
  this.autoFocus = true;
63
56
  this.domainMessagesBuilder = undefined;
57
+ this.multipleEditionEnabled = true;
64
58
  this.layoutFormConfig = false;
65
59
  this.autoLoad = undefined;
66
60
  this.outlineMode = false;
@@ -121,8 +115,25 @@ export class SnkSimpleCrud {
121
115
  newCustomFieldProps.set(fieldName, Object.assign(Object.assign({}, currentProps), { [propName]: value }));
122
116
  this._fieldsProps = newCustomFieldProps;
123
117
  }
118
+ loadTaskbarProcessor() {
119
+ const taskbarIDs = {};
120
+ taskbarIDs[TASKBAR_ID.FORM_REGULAR] = this.getButtons(false, [TaskbarElement.GRID_MODE], true);
121
+ taskbarIDs[TASKBAR_ID.GRID_REGULAR] = this.getButtons(false, [TaskbarElement.DATA_EXPORTER, TaskbarElement.FORM_MODE]);
122
+ taskbarIDs[TASKBAR_ID.FORM_SELECTED] = this.getButtons(true, [TaskbarElement.GRID_MODE], true);
123
+ taskbarIDs[TASKBAR_ID.GRID_SELECTED] = this.getGridSelectedButtonsCallBack.bind(this);
124
+ taskbarIDs[TASKBAR_ID.FINISH_EDITION] = this.getFinishEditionButtonsCallback.bind(this);
125
+ taskbarIDs[TASKBAR_ID.MULTIPLE_EDITION] = [TaskbarElement.CANCEL];
126
+ this._taskbarProcessor = new TaskbarProcessor(taskbarIDs);
127
+ }
128
+ getGridSelectedButtonsCallBack() {
129
+ var _a, _b, _c;
130
+ if (!this.multipleEditionEnabled || ((_c = (_b = (_a = this.dataState) === null || _a === void 0 ? void 0 : _a.selectionInfo) === null || _b === void 0 ? void 0 : _b.records) === null || _c === void 0 ? void 0 : _c.length) === 1) {
131
+ return this.getButtons(true, [TaskbarElement.DATA_EXPORTER, TaskbarElement.FORM_MODE]);
132
+ }
133
+ return this.getButtons(true, [TaskbarElement.UPDATE_MULTIPLE, TaskbarElement.DATA_EXPORTER, TaskbarElement.FORM_MODE]);
134
+ }
124
135
  getFinishEditionButtonsCallback() {
125
- const btns = ["CANCEL", "SAVE"];
136
+ const btns = [TaskbarElement.CANCEL, TaskbarElement.SAVE];
126
137
  if (this.enableGridInsert && this._currentViewMode !== VIEW_MODE.ATTACHMENT) {
127
138
  btns.push(this._currentViewMode === VIEW_MODE.GRID ? TaskbarElement.FORM_MODE : TaskbarElement.GRID_MODE);
128
139
  }
@@ -158,22 +169,32 @@ export class SnkSimpleCrud {
158
169
  async goToView(view) {
159
170
  this._currentViewMode = view;
160
171
  if (this._viewStack) {
172
+ if (view === VIEW_MODE.GRID)
173
+ this.dataUnit.isMultipleEdition = false;
161
174
  this._viewStack.show(view);
162
175
  }
163
176
  }
164
177
  actionClickListener(evt) {
165
- const act = evt.detail;
166
- if (act === TaskbarElement.CONFIGURATOR) {
167
- this._snkConfigurator.open();
168
- }
169
- else if (act === TaskbarElement.GRID_MODE) {
170
- this.goToView(VIEW_MODE.GRID);
171
- }
172
- else if (act === TaskbarElement.FORM_MODE) {
173
- this.goToView(VIEW_MODE.FORM);
174
- }
178
+ this.handleTaskbarAction(evt.detail);
175
179
  evt.stopPropagation();
176
180
  }
181
+ handleTaskbarAction(action) {
182
+ switch (action) {
183
+ case TaskbarElement.CONFIGURATOR:
184
+ this._snkConfigurator.open();
185
+ break;
186
+ case TaskbarElement.GRID_MODE:
187
+ this.goToView(VIEW_MODE.GRID);
188
+ break;
189
+ case TaskbarElement.FORM_MODE:
190
+ this.goToView(VIEW_MODE.FORM);
191
+ break;
192
+ case TaskbarElement.UPDATE_MULTIPLE:
193
+ this.dataUnit.isMultipleEdition = true;
194
+ this.goToView(VIEW_MODE.FORM);
195
+ break;
196
+ }
197
+ }
177
198
  async onChangeEntityName(newValue) {
178
199
  if (this.dataUnit)
179
200
  return;
@@ -305,8 +326,10 @@ export class SnkSimpleCrud {
305
326
  this.setFormConfig(await this._formConfigManager.loadConfig());
306
327
  }
307
328
  async componentWillRender() {
329
+ this.loadTaskbarProcessor();
308
330
  this._resourceID = await this.application.getResourceID();
309
331
  this.dataExporterProviderStore();
332
+ this.dataExporterProviderStore();
310
333
  this._taskbarProcessor.process(this.getTaskBarId(), this.taskbarManager, this.dataState, this.getTaskBarDisabledButtons());
311
334
  if (this.configName === undefined) {
312
335
  return;
@@ -338,6 +361,14 @@ export class SnkSimpleCrud {
338
361
  componentDidLoad() {
339
362
  CSSVarsUtils.applyVarsGrid(this._element, this._grid);
340
363
  this.initKeyboardManager();
364
+ this.dataUnit.subscribe(this.dataUnitActionHandler.bind(this));
365
+ }
366
+ async dataUnitActionHandler(action) {
367
+ if (action.type === DUAction.EDITION_CANCELED || action.type === DUAction.DATA_SAVED) {
368
+ if (this.dataUnit.isMultipleEdition) {
369
+ this.goToView(VIEW_MODE.GRID);
370
+ }
371
+ }
341
372
  }
342
373
  setCustomRenders() {
343
374
  if (!this._grid) {
@@ -376,14 +407,17 @@ export class SnkSimpleCrud {
376
407
  getTaskBarId() {
377
408
  var _a, _b;
378
409
  if ((_a = this.dataState) === null || _a === void 0 ? void 0 : _a.isDirty) {
379
- return "snkSimpleCrudTaskbar.finish_edition";
410
+ return TASKBAR_ID.FINISH_EDITION;
411
+ }
412
+ if (this.dataUnit.isMultipleEdition) {
413
+ return TASKBAR_ID.MULTIPLE_EDITION;
380
414
  }
381
415
  if (((_b = this.dataState) === null || _b === void 0 ? void 0 : _b.selectionInfo) &&
382
416
  !this.dataState.selectionInfo.isAllRecords() &&
383
417
  this.dataState.selectionInfo.length > 0) {
384
- return this._currentViewMode === VIEW_MODE.GRID ? "snkSimpleCrudTaskbar.grid_selected" : "snkSimpleCrudTaskbar.form_selected";
418
+ return this._currentViewMode === VIEW_MODE.GRID ? TASKBAR_ID.GRID_SELECTED : TASKBAR_ID.FORM_SELECTED;
385
419
  }
386
- return this._currentViewMode === VIEW_MODE.GRID ? "snkSimpleCrudTaskbar.grid_regular" : "snkSimpleCrudTaskbar.form_regular";
420
+ return this._currentViewMode === VIEW_MODE.GRID ? TASKBAR_ID.GRID_REGULAR : TASKBAR_ID.FORM_REGULAR;
387
421
  }
388
422
  initInMemoryDataUnit() {
389
423
  this._inMemoryLoader = new InMemoryLoader(this._metadata, undefined, { autoLoad: this.autoLoad });
@@ -1237,6 +1271,24 @@ export class SnkSimpleCrud {
1237
1271
  "attribute": "domain-messages-builder",
1238
1272
  "reflect": false
1239
1273
  },
1274
+ "multipleEditionEnabled": {
1275
+ "type": "boolean",
1276
+ "mutable": false,
1277
+ "complexType": {
1278
+ "original": "boolean",
1279
+ "resolved": "boolean",
1280
+ "references": {}
1281
+ },
1282
+ "required": false,
1283
+ "optional": false,
1284
+ "docs": {
1285
+ "tags": [],
1286
+ "text": "Habilita a edi\u00E7\u00E3o de m\u00FAltiplos registros simult\u00E2neos."
1287
+ },
1288
+ "attribute": "multiple-edition-enabled",
1289
+ "reflect": false,
1290
+ "defaultValue": "true"
1291
+ },
1240
1292
  "layoutFormConfig": {
1241
1293
  "type": "boolean",
1242
1294
  "mutable": false,
@@ -1714,3 +1766,12 @@ export class SnkSimpleCrud {
1714
1766
  }];
1715
1767
  }
1716
1768
  }
1769
+ var TASKBAR_ID;
1770
+ (function (TASKBAR_ID) {
1771
+ TASKBAR_ID["FORM_REGULAR"] = "snkSimpleCrudTaskbar.form_regular";
1772
+ TASKBAR_ID["GRID_REGULAR"] = "snkSimpleCrudTaskbar.grid_regular";
1773
+ TASKBAR_ID["FORM_SELECTED"] = "snkSimpleCrudTaskbar.form_selected";
1774
+ TASKBAR_ID["GRID_SELECTED"] = "snkSimpleCrudTaskbar.grid_selected";
1775
+ TASKBAR_ID["FINISH_EDITION"] = "snkSimpleCrudTaskbar.finish_edition";
1776
+ TASKBAR_ID["MULTIPLE_EDITION"] = "snkSimpleCrudTaskbar.multiple_edition";
1777
+ })(TASKBAR_ID || (TASKBAR_ID = {}));
@@ -20,6 +20,7 @@ export var TaskbarElement;
20
20
  TaskbarElement["DATA_EXPORTER"] = "DATA_EXPORTER";
21
21
  TaskbarElement["ATTACH"] = "ATTACH";
22
22
  TaskbarElement["ACTIONS_BUTTON"] = "ACTIONS_BUTTON";
23
+ TaskbarElement["UPDATE_MULTIPLE"] = "UPDATE_MULTIPLE";
23
24
  })(TaskbarElement || (TaskbarElement = {}));
24
25
  export var AuthorizationElements;
25
26
  (function (AuthorizationElements) {
@@ -59,6 +60,8 @@ export const buildElem = (element, className, dataElementId, getTitle, action, i
59
60
  return iconButton("sync", element, className, dataElementId, title, action, isEnabled);
60
61
  case TaskbarElement.UPDATE:
61
62
  return iconButton("edit", element, className, dataElementId, title, action, isEnabled);
63
+ case TaskbarElement.UPDATE_MULTIPLE:
64
+ return iconButton("edit-table", element, className, dataElementId, title, action, isEnabled);
62
65
  case TaskbarElement.CLONE:
63
66
  return iconButton("copy", element, className, dataElementId, title, action, isEnabled);
64
67
  case TaskbarElement.REMOVE:
@@ -1,9 +1,8 @@
1
- import { ApplicationContext, ElementIDUtils, OverflowDirection, OverflowWatcher, StringUtils, OVERFLOWED_CLASS_NAME, LockManager, LockManagerOperation, SilentException } from '@sankhyalabs/core';
1
+ import { Action as DUAction, ApplicationContext, ElementIDUtils, LockManager, LockManagerOperation, OverflowDirection, OVERFLOWED_CLASS_NAME, OverflowWatcher, SilentException, StringUtils, } from '@sankhyalabs/core';
2
2
  import { h, Host } from '@stencil/core';
3
3
  import { AuthorizationConfig } from '../snk-configurator/AuthorizationConfig';
4
4
  import { AuthorizationElements, buildCustomButton, buildElem, TaskbarElement, VisibleWhenForbidden, } from './elements/taskbar-elements';
5
5
  import { PresentationMode } from '../../lib/@types';
6
- import { Action as DUAction } from '@sankhyalabs/core';
7
6
  export class SnkTaskbar {
8
7
  constructor() {
9
8
  this.TASKBAR_ITEM_ID_PREFIX = 'TASKBAR_ITEM_';
@@ -11,6 +10,7 @@ export class SnkTaskbar {
11
10
  this.ACTIONS_BUTTON_TAG = 'TASKBAR-ACTIONS-BUTTON';
12
11
  this.NOT_OVERFLOW_ELEMENTS = ["moreOptions", "dataExporter_snkDataExporter", "actionsButton_snkActionsButton"];
13
12
  this._titleKeyByElement = {
13
+ [TaskbarElement.UPDATE_MULTIPLE]: "snkTaskbar.titleUpdateMultiple",
14
14
  [TaskbarElement.UPDATE]: "snkTaskbar.titleUpdate",
15
15
  [TaskbarElement.PREVIOUS]: "snkTaskbar.titlePrevious",
16
16
  [TaskbarElement.NEXT]: "snkTaskbar.titleNext",
@@ -23,7 +23,7 @@ export default class PreloadManager {
23
23
  static getSortingFunction(dataUnit, sorting) {
24
24
  return SortingUtils.getSortingFunction(dataUnit, sorting);
25
25
  }
26
- static async getDistinct(dataUnit, fieldName) {
26
+ static async getDistinct(dataUnit, fieldName, onlyLabel = false) {
27
27
  if (!PreloadManager.isCacheEnabled(dataUnit)) {
28
28
  return Promise.resolve(ColumnFilterManager.compileDistinct(fieldName, dataUnit));
29
29
  }
@@ -42,7 +42,10 @@ export default class PreloadManager {
42
42
  if (fieldValue == undefined) {
43
43
  return { key: null, value: null };
44
44
  }
45
- const value = fieldValue.value != undefined ? fieldValue.value : fieldValue;
45
+ let value = fieldValue.value != undefined ? fieldValue.value : fieldValue;
46
+ if ((fieldValue === null || fieldValue === void 0 ? void 0 : fieldValue.label) && onlyLabel) {
47
+ return { key: fieldValue === null || fieldValue === void 0 ? void 0 : fieldValue.label, value: dataUnit.getFormattedValue(fieldName, value) };
48
+ }
46
49
  return { key: dataUnit.getFormattedValue(fieldName, fieldValue), value };
47
50
  })
48
51
  .then(result => {
@@ -159,4 +159,5 @@ export var OperationMap;
159
159
  OperationMap["INSERT"] = "insert";
160
160
  OperationMap["UPDATE"] = "update";
161
161
  OperationMap["CLEAN"] = "clean";
162
+ OperationMap["UPDATE_MULTIPLES"] = "updateMultiples";
162
163
  })(OperationMap || (OperationMap = {}));
@@ -1,32 +1,37 @@
1
1
  const snkDataUnitMessages = {
2
2
  saveInfo: {
3
- clone: "Duplicação realizada!",
4
- insert: "Inclusão realizada!",
5
- update: "Alteração realizada!"
3
+ clone: 'Duplicação realizada!',
4
+ insert: 'Inclusão realizada!',
5
+ update: 'Alteração realizada!',
6
+ updateMultiples: 'Múltiplos registros alterados com sucesso!'
6
7
  },
7
8
  cancelInfo: {
8
- clone: "Duplicação descartada!",
9
- insert: "A inclusão foi descartada!",
10
- update: "A edição foi descartada!"
9
+ clone: 'Duplicação descartada!',
10
+ insert: 'A inclusão foi descartada!',
11
+ update: 'A edição foi descartada!',
12
+ updateMultiples: 'A edição de múltiplos registros foi descartada com sucesso!'
11
13
  },
12
14
  confirm: {
13
- cancel: "Cancelar",
14
- delete: "Excluir",
15
- yes: "Sim",
16
- no: "Não"
15
+ cancel: 'Cancelar',
16
+ delete: 'Excluir',
17
+ updateMultipleConfirm: 'Confirmar edição',
18
+ yes: 'Sim',
19
+ no: 'Não',
17
20
  },
18
- removeInfo: "Registro removido com sucesso!",
19
- cancelConfirmationTitle: "Aviso",
20
- cancelConfirmation: "As alterações realizadas serão descartadas<br/><br/><b>Você realmente gostaria de cancelar?",
21
- removeConfirmationTitle: "Aviso",
22
- removeConfirmation: "Deseja realmente excluir o registro atual?",
23
- forbidden: "Sem permissão",
24
- forbiddenUpdate: "Não é possível fazer alterações. Verifique as permissões de acesso.",
25
- forbiddenInsert: "Não é possível incluir. Verifique as permissões de acesso.",
26
- forbiddenClone: "Não é possível duplicar. Verifique as permissões de acesso.",
27
- forbiddenRemove: "Não é possível remover. Verifique as permissões de acesso.",
28
- removeAllConfirmation: "Os <strong>{{size}} registros selecionados</strong> serão excluídos.<br/><br/><strong>Você realmente gostaria de continuar?</strong>",
29
- removeAllInfo: "Os {{size}} registros foram removidos com sucesso!",
30
- fieldNameRequired: necessário informar o nome da coluna."
21
+ removeInfo: 'Registro removido com sucesso!',
22
+ cancelConfirmationTitle: 'Aviso',
23
+ cancelConfirmation: 'As alterações realizadas serão descartadas<br/><br/><b>Você realmente gostaria de cancelar?',
24
+ removeConfirmationTitle: 'Aviso',
25
+ removeConfirmation: 'Deseja realmente excluir o registro atual?',
26
+ multipleUpdateConfirmationTitle: 'Confirmar edição múltipla',
27
+ multipleUpdateConfirmationMessage: 'As informações dos campos abaixo foram alteradas e serão aplicadas a {{size}} registros',
28
+ forbidden: 'Sem permissão',
29
+ forbiddenUpdate: 'Não é possível fazer alterações. Verifique as permissões de acesso.',
30
+ forbiddenInsert: 'Não é possível incluir. Verifique as permissões de acesso.',
31
+ forbiddenClone: 'Não é possível duplicar. Verifique as permissões de acesso.',
32
+ forbiddenRemove: 'Não é possível remover. Verifique as permissões de acesso.',
33
+ removeAllConfirmation: 'Os <strong>{{size}} registros selecionados</strong> serão excluídos.<br/><br/><strong>Você realmente gostaria de continuar?</strong>',
34
+ removeAllInfo: 'Os {{size}} registros foram removidos com sucesso!',
35
+ fieldNameRequired: 'É necessário informar o nome da coluna.',
31
36
  };
32
37
  export default snkDataUnitMessages;
@@ -1,4 +1,5 @@
1
1
  const snkTaskbarMessages = {
2
+ titleUpdateMultiple: "Editar Múltiplos",
2
3
  titleUpdate: "Editar",
3
4
  titlePrevious: "Anterior",
4
5
  titleNext: "Próximo",
@@ -168,11 +168,11 @@ class SnkMultiSelectionListDataSource {
168
168
  }
169
169
  return String(this._dataUnit.getFormattedValue(fieldName, value));
170
170
  }
171
- async getStaticOptions(fieldName) {
171
+ async getStaticOptions(fieldName, options) {
172
172
  if (fieldName == undefined) {
173
173
  return Promise.resolve(undefined);
174
174
  }
175
- return Promise.resolve(await PreloadManager.getDistinct(this._dataUnit, fieldName));
175
+ return Promise.resolve(await PreloadManager.getDistinct(this._dataUnit, fieldName, options === null || options === void 0 ? void 0 : options.onlyLabel));
176
176
  }
177
177
  fetchData(filterTerm, fieldName) {
178
178
  return new Promise(resolve => {
@@ -2,34 +2,39 @@ import { ApplicationContext } from '@sankhyalabs/core';
2
2
 
3
3
  const snkDataUnitMessages = {
4
4
  saveInfo: {
5
- clone: "Duplicação realizada!",
6
- insert: "Inclusão realizada!",
7
- update: "Alteração realizada!"
5
+ clone: 'Duplicação realizada!',
6
+ insert: 'Inclusão realizada!',
7
+ update: 'Alteração realizada!',
8
+ updateMultiples: 'Múltiplos registros alterados com sucesso!'
8
9
  },
9
10
  cancelInfo: {
10
- clone: "Duplicação descartada!",
11
- insert: "A inclusão foi descartada!",
12
- update: "A edição foi descartada!"
11
+ clone: 'Duplicação descartada!',
12
+ insert: 'A inclusão foi descartada!',
13
+ update: 'A edição foi descartada!',
14
+ updateMultiples: 'A edição de múltiplos registros foi descartada com sucesso!'
13
15
  },
14
16
  confirm: {
15
- cancel: "Cancelar",
16
- delete: "Excluir",
17
- yes: "Sim",
18
- no: "Não"
19
- },
20
- removeInfo: "Registro removido com sucesso!",
21
- cancelConfirmationTitle: "Aviso",
22
- cancelConfirmation: "As alterações realizadas serão descartadas<br/><br/><b>Você realmente gostaria de cancelar?",
23
- removeConfirmationTitle: "Aviso",
24
- removeConfirmation: "Deseja realmente excluir o registro atual?",
25
- forbidden: "Sem permissão",
26
- forbiddenUpdate: "Não é possível fazer alterações. Verifique as permissões de acesso.",
27
- forbiddenInsert: "Não é possível incluir. Verifique as permissões de acesso.",
28
- forbiddenClone: "Não é possível duplicar. Verifique as permissões de acesso.",
29
- forbiddenRemove: "Não é possível remover. Verifique as permissões de acesso.",
30
- removeAllConfirmation: "Os <strong>{{size}} registros selecionados</strong> serão excluídos.<br/><br/><strong>Você realmente gostaria de continuar?</strong>",
31
- removeAllInfo: "Os {{size}} registros foram removidos com sucesso!",
32
- fieldNameRequired: necessário informar o nome da coluna."
17
+ cancel: 'Cancelar',
18
+ delete: 'Excluir',
19
+ updateMultipleConfirm: 'Confirmar edição',
20
+ yes: 'Sim',
21
+ no: 'Não',
22
+ },
23
+ removeInfo: 'Registro removido com sucesso!',
24
+ cancelConfirmationTitle: 'Aviso',
25
+ cancelConfirmation: 'As alterações realizadas serão descartadas<br/><br/><b>Você realmente gostaria de cancelar?',
26
+ removeConfirmationTitle: 'Aviso',
27
+ removeConfirmation: 'Deseja realmente excluir o registro atual?',
28
+ multipleUpdateConfirmationTitle: 'Confirmar edição múltipla',
29
+ multipleUpdateConfirmationMessage: 'As informações dos campos abaixo foram alteradas e serão aplicadas a {{size}} registros',
30
+ forbidden: 'Sem permissão',
31
+ forbiddenUpdate: 'Não é possível fazer alterações. Verifique as permissões de acesso.',
32
+ forbiddenInsert: 'Não é possível incluir. Verifique as permissões de acesso.',
33
+ forbiddenClone: 'Não é possível duplicar. Verifique as permissões de acesso.',
34
+ forbiddenRemove: 'Não é possível remover. Verifique as permissões de acesso.',
35
+ removeAllConfirmation: 'Os <strong>{{size}} registros selecionados</strong> serão excluídos.<br/><br/><strong>Você realmente gostaria de continuar?</strong>',
36
+ removeAllInfo: 'Os {{size}} registros foram removidos com sucesso!',
37
+ fieldNameRequired: 'É necessário informar o nome da coluna.',
33
38
  };
34
39
 
35
40
  const snkFilterBarMessages = {
@@ -92,6 +97,7 @@ const snkFilterBarMessages = {
92
97
  };
93
98
 
94
99
  const snkTaskbarMessages = {
100
+ titleUpdateMultiple: "Editar Múltiplos",
95
101
  titleUpdate: "Editar",
96
102
  titlePrevious: "Anterior",
97
103
  titleNext: "Próximo",
@@ -663,6 +669,7 @@ var OperationMap;
663
669
  OperationMap["INSERT"] = "insert";
664
670
  OperationMap["UPDATE"] = "update";
665
671
  OperationMap["CLEAN"] = "clean";
672
+ OperationMap["UPDATE_MULTIPLES"] = "updateMultiples";
666
673
  })(OperationMap || (OperationMap = {}));
667
674
 
668
675
  export { OperationMap as O, SnkMessageBuilder as S };
@@ -153,7 +153,7 @@ class PreloadManager {
153
153
  static getSortingFunction(dataUnit, sorting) {
154
154
  return SortingUtils.getSortingFunction(dataUnit, sorting);
155
155
  }
156
- static async getDistinct(dataUnit, fieldName) {
156
+ static async getDistinct(dataUnit, fieldName, onlyLabel = false) {
157
157
  if (!PreloadManager.isCacheEnabled(dataUnit)) {
158
158
  return Promise.resolve(ColumnFilterManager.compileDistinct(fieldName, dataUnit));
159
159
  }
@@ -172,7 +172,10 @@ class PreloadManager {
172
172
  if (fieldValue == undefined) {
173
173
  return { key: null, value: null };
174
174
  }
175
- const value = fieldValue.value != undefined ? fieldValue.value : fieldValue;
175
+ let value = fieldValue.value != undefined ? fieldValue.value : fieldValue;
176
+ if ((fieldValue === null || fieldValue === void 0 ? void 0 : fieldValue.label) && onlyLabel) {
177
+ return { key: fieldValue === null || fieldValue === void 0 ? void 0 : fieldValue.label, value: dataUnit.getFormattedValue(fieldName, value) };
178
+ }
176
179
  return { key: dataUnit.getFormattedValue(fieldName, fieldValue), value };
177
180
  })
178
181
  .then(result => {
@@ -90,6 +90,7 @@ const SnkCrud$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
90
90
  this.setCustomFormTitle = undefined;
91
91
  this.strategyExporter = ExporterStrategy.SERVER_SIDE;
92
92
  this.layoutFormConfig = false;
93
+ this.multipleEditionEnabled = true;
93
94
  this.customContainerId = `SNK-CRUD-CUSTOM-CONTAINER-${StringUtils.generateUUID()}`;
94
95
  }
95
96
  /**
@@ -176,14 +177,20 @@ const SnkCrud$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
176
177
  this.setViewMode(VIEW_MODE.FORM);
177
178
  }
178
179
  async executeAction(act) {
179
- if (act === TaskbarElement.GRID_MODE)
180
- return this.setViewMode(VIEW_MODE.GRID);
181
- if (act === TaskbarElement.FORM_MODE || act === TaskbarElement.UPDATE)
182
- return this.gridToForm(act !== TaskbarElement.UPDATE);
183
- if (act === TaskbarElement.CONFIGURATOR)
184
- return this._snkConfigurator.open();
185
- if (act === "ATTACH")
186
- return this.setViewMode(VIEW_MODE.ATTACHMENT);
180
+ switch (act) {
181
+ case TaskbarElement.GRID_MODE:
182
+ return this.setViewMode(VIEW_MODE.GRID);
183
+ case TaskbarElement.FORM_MODE:
184
+ case TaskbarElement.UPDATE:
185
+ return this.gridToForm(act !== TaskbarElement.UPDATE);
186
+ case TaskbarElement.UPDATE_MULTIPLE:
187
+ this._dataUnit.isMultipleEdition = true;
188
+ return this.setViewMode(VIEW_MODE.FORM);
189
+ case TaskbarElement.CONFIGURATOR:
190
+ return this._snkConfigurator.open();
191
+ case TaskbarElement.ATTACH:
192
+ return this.setViewMode(VIEW_MODE.ATTACHMENT);
193
+ }
187
194
  }
188
195
  backView() {
189
196
  const lastView = this._viewHistory.at(-2) || VIEW_MODE.GRID;
@@ -193,6 +200,7 @@ const SnkCrud$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
193
200
  this._viewStack.show(viewMode);
194
201
  this._currentViewMode = viewMode;
195
202
  if (viewMode === VIEW_MODE.GRID) {
203
+ this._dataUnit.isMultipleEdition = false;
196
204
  this._snkGrid.setFocus();
197
205
  }
198
206
  else if (viewMode === VIEW_MODE.FORM) {
@@ -412,7 +420,7 @@ const SnkCrud$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
412
420
  return;
413
421
  }
414
422
  this._snkDataUnit.ignoreSaveMessage = (this._currentViewMode === VIEW_MODE.GRID && !this.enableGridInsert);
415
- return (h(Host, null, h("ez-view-stack", { ref: (ref) => this._viewStack = ref, "data-element-id": "crud" }, h("stack-item", { class: 'ez-flex ez-flex--column ez-size-height--full ez-size-width--full ez-padding--medium' }, h("snk-grid", { ref: (ref) => this._snkGrid = ref, class: 'ez-flex ez-flex--column ez-size-height--full ez-size-width--full', 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, enableLockManagerTaskbarClick: this.enableLockManagerTaskbarClick, enableLockManagerLoadingComp: this.enableLockManagerLoadingComp, strategyExporter: this.strategyExporter }, 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, ignoreReadOnlyFormFields: this.ignoreReadOnlyFormFields }, 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, layoutFormConfig: this.layoutFormConfig })), 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" }))));
423
+ return (h(Host, null, h("ez-view-stack", { ref: (ref) => this._viewStack = ref, "data-element-id": "crud" }, h("stack-item", { class: 'ez-flex ez-flex--column ez-size-height--full ez-size-width--full ez-padding--medium' }, h("snk-grid", { ref: (ref) => this._snkGrid = ref, class: 'ez-flex ez-flex--column ez-size-height--full ez-size-width--full', 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, enableLockManagerTaskbarClick: this.enableLockManagerTaskbarClick, enableLockManagerLoadingComp: this.enableLockManagerLoadingComp, strategyExporter: this.strategyExporter, multipleEditionEnabled: this.multipleEditionEnabled }, 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, ignoreReadOnlyFormFields: this.ignoreReadOnlyFormFields }, 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, layoutFormConfig: this.layoutFormConfig })), 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" }))));
416
424
  }
417
425
  get _element() { return this; }
418
426
  static get watchers() { return {
@@ -446,6 +454,7 @@ const SnkCrud$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
446
454
  "setCustomFormTitle": [16],
447
455
  "strategyExporter": [1025, "strategy-exporter"],
448
456
  "layoutFormConfig": [4, "layout-form-config"],
457
+ "multipleEditionEnabled": [4, "multiple-edition-enabled"],
449
458
  "_dataUnit": [32],
450
459
  "_dataState": [32],
451
460
  "attachmentRegisterKey": [32],