@sankhyalabs/sankhyablocks 8.16.0-dev.102 → 8.16.0-dev.105

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 (90) hide show
  1. package/dist/cjs/{SnkMessageBuilder-bae64d0d.js → SnkMessageBuilder-aecd7c18.js} +31 -24
  2. package/dist/cjs/loader.cjs.js +1 -1
  3. package/dist/cjs/sankhyablocks.cjs.js +1 -1
  4. package/dist/cjs/snk-actions-button_7.cjs.entry.js +2 -2
  5. package/dist/cjs/snk-application.cjs.entry.js +1 -1
  6. package/dist/cjs/snk-attach.cjs.entry.js +1 -1
  7. package/dist/cjs/snk-crud.cjs.entry.js +18 -10
  8. package/dist/cjs/snk-data-exporter.cjs.entry.js +2 -2
  9. package/dist/cjs/{snk-data-unit-4b510d6e.js → snk-data-unit-9a463a4f.js} +225 -11
  10. package/dist/cjs/snk-data-unit.cjs.entry.js +2 -2
  11. package/dist/cjs/snk-detail-view.cjs.entry.js +3 -3
  12. package/dist/cjs/snk-grid.cjs.entry.js +21 -7
  13. package/dist/cjs/{snk-guides-viewer-e8e5f7b4.js → snk-guides-viewer-c9e1e97b.js} +98 -43
  14. package/dist/cjs/snk-guides-viewer.cjs.entry.js +2 -2
  15. package/dist/cjs/snk-simple-crud.cjs.entry.js +65 -22
  16. package/dist/cjs/snk-taskbar.cjs.entry.js +2 -1
  17. package/dist/cjs/{taskbar-elements-7e19882d.js → taskbar-elements-02379452.js} +3 -0
  18. package/dist/collection/components/snk-crud/snk-crud.js +35 -9
  19. package/dist/collection/components/snk-crud/subcomponents/snk-guides-viewer.js +117 -43
  20. package/dist/collection/components/snk-data-unit/MultipleUpdateHelper.js +128 -0
  21. package/dist/collection/components/snk-data-unit/snk-data-unit.js +107 -12
  22. package/dist/collection/components/snk-grid/snk-grid.js +38 -6
  23. package/dist/collection/components/snk-simple-crud/snk-simple-crud.js +83 -22
  24. package/dist/collection/components/snk-taskbar/elements/taskbar-actions-button/taskbar-actions-button.css +13 -0
  25. package/dist/collection/components/snk-taskbar/elements/taskbar-actions-button/taskbar-actions-button.js +1 -1
  26. package/dist/collection/components/snk-taskbar/elements/taskbar-elements.js +3 -0
  27. package/dist/collection/components/snk-taskbar/snk-taskbar.js +2 -2
  28. package/dist/collection/lib/message/SnkMessageBuilder.js +1 -0
  29. package/dist/collection/lib/message/resources/snk-data-unit.msg.js +28 -23
  30. package/dist/collection/lib/message/resources/snk-taskbar.msg.js +1 -0
  31. package/dist/components/SnkMessageBuilder.js +31 -24
  32. package/dist/components/snk-crud.js +18 -9
  33. package/dist/components/snk-data-unit2.js +225 -11
  34. package/dist/components/snk-detail-view2.js +98 -43
  35. package/dist/components/snk-grid2.js +21 -6
  36. package/dist/components/snk-simple-crud2.js +66 -22
  37. package/dist/components/snk-taskbar2.js +4 -0
  38. package/dist/components/taskbar-actions-button2.js +2 -2
  39. package/dist/esm/{SnkMessageBuilder-6fff4a4c.js → SnkMessageBuilder-12f5fe1a.js} +31 -24
  40. package/dist/esm/loader.js +1 -1
  41. package/dist/esm/sankhyablocks.js +1 -1
  42. package/dist/esm/snk-actions-button_7.entry.js +2 -2
  43. package/dist/esm/snk-application.entry.js +1 -1
  44. package/dist/esm/snk-attach.entry.js +1 -1
  45. package/dist/esm/snk-crud.entry.js +18 -10
  46. package/dist/esm/snk-data-exporter.entry.js +2 -2
  47. package/dist/esm/{snk-data-unit-7d0ce406.js → snk-data-unit-affee080.js} +225 -11
  48. package/dist/esm/snk-data-unit.entry.js +2 -2
  49. package/dist/esm/snk-detail-view.entry.js +3 -3
  50. package/dist/esm/snk-grid.entry.js +21 -7
  51. package/dist/esm/{snk-guides-viewer-c44b3839.js → snk-guides-viewer-3befd409.js} +99 -44
  52. package/dist/esm/snk-guides-viewer.entry.js +2 -2
  53. package/dist/esm/snk-simple-crud.entry.js +66 -23
  54. package/dist/esm/snk-taskbar.entry.js +2 -1
  55. package/dist/esm/{taskbar-elements-d2353c64.js → taskbar-elements-c62b6c66.js} +3 -0
  56. package/dist/sankhyablocks/{p-35f85998.entry.js → p-2101be8b.entry.js} +1 -1
  57. package/dist/sankhyablocks/{p-ef6f0a1b.entry.js → p-21a5acc4.entry.js} +1 -1
  58. package/dist/sankhyablocks/p-2d6df7e7.entry.js +1 -0
  59. package/dist/sankhyablocks/p-3f624cbe.js +1 -0
  60. package/dist/sankhyablocks/p-53e1de0a.entry.js +1 -0
  61. package/dist/sankhyablocks/{p-b2a2a83e.entry.js → p-624390bb.entry.js} +1 -1
  62. package/dist/sankhyablocks/{p-5cc206bb.entry.js → p-6541bb6d.entry.js} +1 -1
  63. package/dist/sankhyablocks/p-80f8c22c.js +1 -0
  64. package/dist/sankhyablocks/p-82177c24.js +1 -0
  65. package/dist/sankhyablocks/{p-754559b9.entry.js → p-a5e5574c.entry.js} +1 -1
  66. package/dist/sankhyablocks/{p-5503e89f.entry.js → p-cbb4c043.entry.js} +1 -1
  67. package/dist/sankhyablocks/p-cf685cef.entry.js +1 -0
  68. package/dist/sankhyablocks/p-dcfc8b35.entry.js +1 -0
  69. package/dist/sankhyablocks/{p-38e3ffda.entry.js → p-ea55f2ab.entry.js} +1 -1
  70. package/dist/sankhyablocks/p-fb0f0087.js +1 -0
  71. package/dist/sankhyablocks/sankhyablocks.esm.js +1 -1
  72. package/dist/types/components/snk-crud/snk-crud.d.ts +4 -0
  73. package/dist/types/components/snk-crud/subcomponents/snk-guides-viewer.d.ts +10 -1
  74. package/dist/types/components/snk-data-unit/MultipleUpdateHelper.d.ts +9 -0
  75. package/dist/types/components/snk-data-unit/snk-data-unit.d.ts +17 -0
  76. package/dist/types/components/snk-grid/snk-grid.d.ts +5 -0
  77. package/dist/types/components/snk-simple-crud/snk-simple-crud.d.ts +9 -2
  78. package/dist/types/components/snk-taskbar/elements/taskbar-elements.d.ts +2 -1
  79. package/dist/types/components/snk-taskbar/snk-taskbar.d.ts +1 -0
  80. package/dist/types/components.d.ts +28 -0
  81. package/dist/types/lib/message/SnkMessageBuilder.d.ts +2 -1
  82. package/package.json +1 -1
  83. package/dist/sankhyablocks/p-17425c72.js +0 -1
  84. package/dist/sankhyablocks/p-3fc82614.js +0 -1
  85. package/dist/sankhyablocks/p-460f1827.entry.js +0 -1
  86. package/dist/sankhyablocks/p-6e0a5314.js +0 -1
  87. package/dist/sankhyablocks/p-835128f5.entry.js +0 -1
  88. package/dist/sankhyablocks/p-92778d5a.js +0 -1
  89. package/dist/sankhyablocks/p-a962a3e4.entry.js +0 -1
  90. package/dist/sankhyablocks/p-e35fe2bd.entry.js +0 -1
@@ -1,5 +1,5 @@
1
1
  import { proxyCustomElement, HTMLElement, createEvent, h, Fragment, forceUpdate, Host } from '@stencil/core/internal/client';
2
- import { Action, ElementIDUtils } from '@sankhyalabs/core';
2
+ import { ObjectUtils, Action, ElementIDUtils } from '@sankhyalabs/core';
3
3
  import { S as SnkFormConfigManager } from './SnkFormConfigManager.js';
4
4
  import { buildFormMetadata, FormMetadata } from '@sankhyalabs/ezui/dist/collection/utils/form';
5
5
  import './DataFetcher.js';
@@ -53,6 +53,7 @@ const SnkGuidesViewer = /*@__PURE__*/ proxyCustomElement(class extends HTMLEleme
53
53
  constructor() {
54
54
  super();
55
55
  this.__registerHost();
56
+ this.snkMasterFormConfigChange = createEvent(this, "snkMasterFormConfigChange", 7);
56
57
  this.exit = createEvent(this, "exit", 7);
57
58
  this.actionClick = createEvent(this, "actionClick", 7);
58
59
  this.formItemsReady = createEvent(this, "formItemsReady", 7);
@@ -89,14 +90,16 @@ const SnkGuidesViewer = /*@__PURE__*/ proxyCustomElement(class extends HTMLEleme
89
90
  this.loadGuides(true);
90
91
  }
91
92
  observeDataState(newValue, oldValue) {
92
- const newRecord = newValue === null || newValue === void 0 ? void 0 : newValue.selectedRecord;
93
- const oldRecord = oldValue === null || oldValue === void 0 ? void 0 : oldValue.selectedRecord;
94
- if ((newRecord === null || newRecord === void 0 ? void 0 : newRecord.__record__id__) !== (oldRecord === null || oldRecord === void 0 ? void 0 : oldRecord.__record__id__)) {
93
+ var _a, _b, _c, _d, _e, _f;
94
+ const newRecordsIds = (_b = (_a = newValue === null || newValue === void 0 ? void 0 : newValue.selectionInfo) === null || _a === void 0 ? void 0 : _a.recordIds) !== null && _b !== void 0 ? _b : (_c = newValue === null || newValue === void 0 ? void 0 : newValue.selectedRecord) === null || _c === void 0 ? void 0 : _c['__record__id__'];
95
+ const oldRecordsIds = (_e = (_d = oldValue === null || oldValue === void 0 ? void 0 : oldValue.selectionInfo) === null || _d === void 0 ? void 0 : _d.recordIds) !== null && _e !== void 0 ? _e : (_f = oldValue === null || oldValue === void 0 ? void 0 : oldValue.selectedRecord) === null || _f === void 0 ? void 0 : _f['__record__id__'];
96
+ if (!ObjectUtils.equals(newRecordsIds, oldRecordsIds)) {
95
97
  this.loadGuides((oldValue === null || oldValue === void 0 ? void 0 : oldValue.insertionMode) != (newValue === null || newValue === void 0 ? void 0 : newValue.insertionMode));
96
98
  }
97
99
  }
98
100
  observeMasterFormConfig() {
99
101
  this.loadGuides(this.noGuideSelected());
102
+ this.snkMasterFormConfigChange.emit(this.masterFormConfig);
100
103
  }
101
104
  /**
102
105
  * Abre o configurador do formulário
@@ -170,6 +173,11 @@ const SnkGuidesViewer = /*@__PURE__*/ proxyCustomElement(class extends HTMLEleme
170
173
  * Para conhecer os detalhes do módulo, vide o arquivo neste projeto "/src/lib/message/resources/snk-crud.msg.ts"
171
174
  */
172
175
  getMessage(key) {
176
+ var _a, _b;
177
+ if (this.dataUnit.isMultipleEdition) {
178
+ const selectedRecords = (_b = (_a = this.dataUnit.getSelectionInfo()) === null || _a === void 0 ? void 0 : _a.records) !== null && _b !== void 0 ? _b : [];
179
+ return `Editando ${selectedRecords.length} registros`;
180
+ }
173
181
  return this.messagesBuilder.getMessage(key, this.dataUnit.getSelectedRecord());
174
182
  }
175
183
  loadGuides(changeSelection) {
@@ -182,12 +190,12 @@ const SnkGuidesViewer = /*@__PURE__*/ proxyCustomElement(class extends HTMLEleme
182
190
  this._masterFormMetadata = buildFormMetadata(this.masterFormConfig, this.dataUnit, true);
183
191
  const allSheets = this._masterFormMetadata.getAllSheets();
184
192
  const currentRecord = this.dataUnit.getSelectedRecord();
185
- const disableDetails = !currentRecord || this.dataUnit.isNewRecord(currentRecord.__record__id__);
193
+ const disableDetails = this.hasToDisableDetails(currentRecord);
186
194
  const guides = [];
187
195
  Array.from(allSheets.values()).forEach((sheet) => {
188
196
  const item = { id: sheet.name, label: sheet.label };
189
197
  if (this.isDetail(sheet.name) && disableDetails) {
190
- item.tooltip = "Para alterar detalhes é necessário estar com um registro selecionado.";
198
+ item.tooltip = "Para alterar detalhes é necessário estar com um (e apenas um) registro selecionado.";
191
199
  item.disabled = true;
192
200
  }
193
201
  guides.push(item);
@@ -200,6 +208,11 @@ const SnkGuidesViewer = /*@__PURE__*/ proxyCustomElement(class extends HTMLEleme
200
208
  this.selectedGuide = this._guides.length > 0 ? this._guides[0] : undefined;
201
209
  }
202
210
  }
211
+ hasToDisableDetails(currentRecord) {
212
+ return !currentRecord
213
+ || this.dataUnit.isNewRecord(currentRecord.__record__id__)
214
+ || this.dataUnit.isMultipleEdition;
215
+ }
203
216
  isDetail(formId) {
204
217
  return FormMetadata.getDetailName(formId) != undefined;
205
218
  }
@@ -222,47 +235,59 @@ const SnkGuidesViewer = /*@__PURE__*/ proxyCustomElement(class extends HTMLEleme
222
235
  }
223
236
  getTaskBarId() {
224
237
  var _a;
225
- return ((_a = this.dataState) === null || _a === void 0 ? void 0 : _a.isDirty) ? "snkGuideViewer.finish_edition" : "snkGuideViewer.regular";
226
- }
227
- loadTaskbarProcessor() {
228
- var _a;
229
- const taskbarId = this.getTaskBarId();
230
- const disabledButtons = [];
231
- if (!this.dataState || !this.dataState.hasPrevious) {
232
- disabledButtons.push("PREVIOUS");
238
+ if ((_a = this.dataState) === null || _a === void 0 ? void 0 : _a.isDirty) {
239
+ return TASKBAR_ID.FINISH_EDITION;
233
240
  }
234
- if (!this.dataState || !this.dataState.hasNext) {
235
- disabledButtons.push("NEXT");
241
+ if (this.dataUnit.isMultipleEdition) {
242
+ return TASKBAR_ID.MUTIPLE_EDITION;
236
243
  }
237
- if ((_a = this.dataState) === null || _a === void 0 ? void 0 : _a.selectionInfo) {
238
- if (this.dataState.selectionInfo.length > 1) {
239
- disabledButtons.push("CLONE");
240
- }
241
- if (this.dataState.selectionInfo.isAllRecords()) {
242
- disabledButtons.push("REMOVE");
243
- }
244
+ return TASKBAR_ID.REGULAR;
245
+ }
246
+ loadTaskbarProcessor() {
247
+ const taskbarIDs = {};
248
+ taskbarIDs[TASKBAR_ID.REGULAR] = this.buildBtnsRegularMode();
249
+ taskbarIDs[TASKBAR_ID.FINISH_EDITION] = [TaskbarElement.CANCEL, TaskbarElement.SAVE, this.handleAddGridMode()];
250
+ taskbarIDs[TASKBAR_ID.MUTIPLE_EDITION] = [TaskbarElement.CANCEL];
251
+ this._taskbarProcessor = new TaskbarProcessor(taskbarIDs);
252
+ this._taskbarProcessor.process(this.getTaskBarId(), this.taskbarManager, this.dataState, this.buildDisabledButtons(), this.buildInvisibleButtons());
253
+ }
254
+ buildBtnsRegularMode() {
255
+ var _a, _b;
256
+ const btnsRegularMode = [
257
+ TaskbarElement.ATTACH, TaskbarElement.CLONE, TaskbarElement.REMOVE, TaskbarElement.MORE_OPTIONS,
258
+ TaskbarElement.ACTIONS_BUTTON, TaskbarElement.DIVIDER, TaskbarElement.GRID_MODE, TaskbarElement.CONFIGURATOR,
259
+ ];
260
+ if (((_b = (_a = this.dataState) === null || _a === void 0 ? void 0 : _a.selectionInfo) === null || _b === void 0 ? void 0 : _b.length) <= 1) {
261
+ btnsRegularMode.unshift(TaskbarElement.PREVIOUS, TaskbarElement.NEXT, TaskbarElement.DIVIDER);
244
262
  }
245
- const btnsRegularMode = ["PREVIOUS", "NEXT", "DIVIDER", "ATTACH", "CLONE", "REMOVE", "MORE_OPTIONS", "ACTIONS_BUTTON", "DIVIDER", "GRID_MODE", "CONFIGURATOR"];
246
263
  if (this.presentationMode == PresentationMode.SECONDARY) {
247
- btnsRegularMode.unshift("INSERT");
264
+ btnsRegularMode.unshift(TaskbarElement.INSERT);
248
265
  }
249
266
  else {
250
- btnsRegularMode.push("INSERT");
267
+ btnsRegularMode.push(TaskbarElement.INSERT);
251
268
  }
252
- const invisibleButtons = this.getInvisibleButtons();
253
- this._taskbarProcessor = new TaskbarProcessor({
254
- "snkGuideViewer.regular": btnsRegularMode,
255
- "snkGuideViewer.finish_edition": ["CANCEL", "SAVE", this.handleAddGridMode()],
256
- });
257
- this._taskbarProcessor.process(taskbarId, this.taskbarManager, this.dataState, disabledButtons, invisibleButtons);
269
+ return btnsRegularMode;
270
+ }
271
+ buildDisabledButtons() {
272
+ var _a, _b, _c, _d, _e, _f;
273
+ const disabledButtons = [];
274
+ if (!((_a = this.dataState) === null || _a === void 0 ? void 0 : _a.hasPrevious))
275
+ disabledButtons.push(TaskbarElement.PREVIOUS);
276
+ if (!((_b = this.dataState) === null || _b === void 0 ? void 0 : _b.hasNext))
277
+ disabledButtons.push(TaskbarElement.NEXT);
278
+ if (((_d = (_c = this.dataState) === null || _c === void 0 ? void 0 : _c.selectionInfo) === null || _d === void 0 ? void 0 : _d.length) > 1)
279
+ disabledButtons.push(TaskbarElement.CLONE);
280
+ if ((_f = (_e = this.dataState) === null || _e === void 0 ? void 0 : _e.selectionInfo) === null || _f === void 0 ? void 0 : _f.isAllRecords())
281
+ disabledButtons.push(TaskbarElement.REMOVE);
282
+ return disabledButtons;
258
283
  }
259
284
  handleAddGridMode() {
260
285
  return this.enableGridInsert ? TaskbarElement.GRID_MODE : "";
261
286
  }
262
- getInvisibleButtons() {
287
+ buildInvisibleButtons() {
263
288
  const invisibleButtons = [];
264
289
  if (this.dataState && this.dataState.selectionInfo.mode === SelectionMode.ALL_RECORDS)
265
- invisibleButtons.push("ACTIONS_BUTTON");
290
+ invisibleButtons.push(TaskbarElement.ACTIONS_BUTTON);
266
291
  return invisibleButtons;
267
292
  }
268
293
  static updateContentCard(formName, cardConfig, propertyChanged, configManager) {
@@ -475,17 +500,27 @@ const SnkGuidesViewer = /*@__PURE__*/ proxyCustomElement(class extends HTMLEleme
475
500
  }
476
501
  buildTaskBar() {
477
502
  var _a;
478
- return h("div", { class: `snk-guides-viewer__header-taskbar ${this.presentationMode != PresentationMode.SECONDARY ? 'ez-align--right' : 'ez-padding-bottom--medium'}` }, h("snk-taskbar", { key: "guideViewerTaskbar", "data-element-id": "guideViewer", configName: this.configName, buttons: this._taskbarProcessor.buttons, disabledButtons: this._taskbarProcessor.disabledButtons, customButtons: this._taskbarProcessor.customButtons, actionsList: this.getActionsList(), messagesBuilder: this.messagesBuilder, presentationMode: this.presentationMode, primaryButton: ((_a = this.dataState) === null || _a === void 0 ? void 0 : _a.isDirty) ? "SAVE" : "INSERT", "data-taskbar-owner": "master", dataUnit: this.dataUnit, resourceID: this.resourceID, customSlotId: "GUIDES_VIEWER_TASKBAR_CUSTOM_ELEMENTS", alignRigth: true }, h("slot", { name: "GUIDES_VIEWER_TASKBAR_CUSTOM_ELEMENTS" })));
503
+ return h("div", { class: `snk-guides-viewer__header-taskbar ${this.presentationMode != PresentationMode.SECONDARY ? 'ez-align--right' : 'ez-padding-bottom--medium'}` }, h("snk-taskbar", { key: "guideViewerTaskbar", "data-element-id": "guideViewer", configName: this.configName, buttons: this._taskbarProcessor.buttons, disabledButtons: this._taskbarProcessor.disabledButtons, customButtons: this._taskbarProcessor.customButtons, actionsList: this.getActionsList(), messagesBuilder: this.messagesBuilder, presentationMode: this.presentationMode, primaryButton: ((_a = this.dataState) === null || _a === void 0 ? void 0 : _a.isDirty) ? TaskbarElement.SAVE : TaskbarElement.INSERT, "data-taskbar-owner": "master", dataUnit: this.dataUnit, resourceID: this.resourceID, customSlotId: "GUIDES_VIEWER_TASKBAR_CUSTOM_ELEMENTS", alignRigth: true }, h("slot", { name: "GUIDES_VIEWER_TASKBAR_CUSTOM_ELEMENTS" })));
479
504
  }
480
505
  async dataUnitActionHandler(action) {
481
506
  var _a;
482
- if (action.type === Action.FIELD_INVALIDATED) {
483
- const guideName = this.getGuideName((_a = action.payload) === null || _a === void 0 ? void 0 : _a.fieldName);
484
- await this.addErrorBadgeToGuide(guideName);
485
- await this.openGuideNavigator(guideName);
486
- }
487
- if (action.type === Action.METADATA_LOADED) {
488
- this.loadGuides(this.noGuideSelected());
507
+ switch (action.type) {
508
+ case Action.EDITION_CANCELED:
509
+ case Action.DATA_SAVED:
510
+ if (this.dataUnit.isMultipleEdition) {
511
+ this.exitViewer();
512
+ this.dataUnit.isMultipleEdition = false;
513
+ }
514
+ break;
515
+ case Action.FIELD_INVALIDATED:
516
+ const guideName = this.getGuideName((_a = action.payload) === null || _a === void 0 ? void 0 : _a.fieldName);
517
+ await this.addErrorBadgeToGuide(guideName);
518
+ await this.openGuideNavigator(guideName);
519
+ break;
520
+ case Action.METADATA_LOADED:
521
+ case Action.MULTIPLE_EDITION_CHANGED:
522
+ this.loadGuides(this.noGuideSelected());
523
+ break;
489
524
  }
490
525
  }
491
526
  async addErrorBadgeToGuide(guideName) {
@@ -525,6 +560,20 @@ const SnkGuidesViewer = /*@__PURE__*/ proxyCustomElement(class extends HTMLEleme
525
560
  var _a, _b;
526
561
  return (_b = (_a = this.getCustomTitle) === null || _a === void 0 ? void 0 : _a.call(this)) !== null && _b !== void 0 ? _b : this.getMessage("snkCrud.title");
527
562
  }
563
+ getTitleTooltip() {
564
+ if (!this.dataUnit.isMultipleEdition)
565
+ return;
566
+ return this.buildRecordIdsArray();
567
+ }
568
+ buildRecordIdsArray() {
569
+ var _a, _b;
570
+ const selectedRecords = (_b = (_a = this.dataUnit.getSelectionInfo()) === null || _a === void 0 ? void 0 : _a.records) !== null && _b !== void 0 ? _b : [];
571
+ if (selectedRecords.length === 0) {
572
+ return "[]";
573
+ }
574
+ const labels = selectedRecords.map(record => this.messagesBuilder.getMessage("snkCrud.title", record));
575
+ return `[${labels.join(", ")}]`;
576
+ }
528
577
  componentDidLoad() {
529
578
  this.dataUnit.subscribe(this.dataUnitActionHandler.bind(this));
530
579
  }
@@ -538,7 +587,7 @@ const SnkGuidesViewer = /*@__PURE__*/ proxyCustomElement(class extends HTMLEleme
538
587
  }
539
588
  this.loadTaskbarProcessor();
540
589
  const showGuides = this._guides && (this._guides.length > 1);
541
- return (h("section", { class: "snk-guides-viewer", ref: ref => this._container = ref, tabindex: -1 }, h("div", { class: "ez-row snk-guides-viewer__header" }, h("div", { class: "snk-guides-viewer__header-breadcrumb ez-flex--align-items-center ez-flex-item--align-center ez-padding-left--large", key: "header" }, h("ez-button", { onClick: () => this.exitViewer(), title: this.getMessage("snkCrud.goBackTitle"), mode: "icon", iconName: "arrow_back", class: "ez-padding-right--medium", size: "small" }), h("div", { class: "ez-flex ez-flex--column ez-flex-item--auto" }, h("h1", { class: "ez-title ez-title--primary ez-title--xlarge" }, this.getTitle()), ((_a = this._breadcrumbItems) === null || _a === void 0 ? void 0 : _a.length) > 1 &&
590
+ return (h("section", { class: "snk-guides-viewer", ref: ref => this._container = ref, tabindex: -1 }, h("div", { class: "ez-row snk-guides-viewer__header" }, h("div", { class: "snk-guides-viewer__header-breadcrumb ez-flex--align-items-center ez-flex-item--align-center ez-padding-left--large", key: "header" }, h("ez-button", { onClick: () => this.exitViewer(), title: this.getMessage("snkCrud.goBackTitle"), mode: "icon", iconName: "arrow_back", class: "ez-padding-right--medium", size: "small" }), h("div", { class: "ez-flex ez-flex--column ez-flex-item--auto" }, h("h1", { class: "ez-title ez-title--primary ez-title--xlarge", title: this.getTitleTooltip() }, this.getTitle()), ((_a = this._breadcrumbItems) === null || _a === void 0 ? void 0 : _a.length) > 1 &&
542
591
  h("div", { class: "ez-margin-top--extra-small" }, h("ez-breadcrumb", Object.assign({ items: this._breadcrumbItems, onSelectedItem: (evt) => this.onBreadcrumbClickHandler(evt === null || evt === void 0 ? void 0 : evt.detail) }, { [ElementIDUtils.DATA_ELEMENT_ID_ATTRIBUTE_NAME]: `${ElementIDUtils.getInternalIDInfo("breadcrumb")}` }))))), this.presentationMode != PresentationMode.SECONDARY && this.buildTaskBar()), h("div", { class: "snk-guides-viewer__container" }, showGuides ?
543
592
  h("ez-guide-navigator", { ref: (ref) => this._guideNavigator = ref, class: "snk-guides-viewer__guide-navigator", items: this._guides, selectedId: this.selectedGuide ? this.selectedGuide.id : undefined, onEzSelectionChange: evt => this.updateSelectedGuideHandler(evt.detail) })
544
593
  :
@@ -595,6 +644,12 @@ const SnkGuidesViewer = /*@__PURE__*/ proxyCustomElement(class extends HTMLEleme
595
644
  "setFieldProp": [64],
596
645
  "setFocus": [64]
597
646
  }, [[2, "actionClick", "onActionClick"], [0, "snkContentCardChanged", "onContentCardChanged"]]]);
647
+ var TASKBAR_ID;
648
+ (function (TASKBAR_ID) {
649
+ TASKBAR_ID["FINISH_EDITION"] = "snkGuideViewer.finish_edition";
650
+ TASKBAR_ID["MUTIPLE_EDITION"] = "snkGuideViewer.multiple_edition";
651
+ TASKBAR_ID["REGULAR"] = "snkGuideViewer.regular";
652
+ })(TASKBAR_ID || (TASKBAR_ID = {}));
598
653
  function defineCustomElement$1() {
599
654
  if (typeof customElements === "undefined") {
600
655
  return;
@@ -106,7 +106,7 @@ const SnkGrid = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
106
106
  });
107
107
  this._headerTaskbarProcessor = new TaskbarProcessor({
108
108
  "snkGridHeaderTaskbar.unselected": ["REFRESH", "DATA_EXPORTER", "ACTIONS_BUTTON", "MORE_OPTIONS"],
109
- "snkGridHeaderTaskbar.selected": ["UPDATE", "CLONE", "REMOVE", "MORE_OPTIONS", "DIVIDER", "ATTACH", "REFRESH", "DATA_EXPORTER", "ACTIONS_BUTTON"],
109
+ "snkGridHeaderTaskbar.selected": this.getGridHeaderSelectedBtns(),
110
110
  "snkGridHeaderTaskbar.detail.unselected": ["REFRESH", "MORE_OPTIONS"],
111
111
  "snkGridHeaderTaskbar.detail.selected": ["UPDATE", "ATTACH", "CLONE", "REMOVE", "MORE_OPTIONS", "DIVIDER", "REFRESH"],
112
112
  "snkGridHeaderTaskbar.singleTaskbar.unselected": ["INSERT", "FORM_MODE", "CONFIGURATOR", "REFRESH", "DATA_EXPORTER", "ACTIONS_BUTTON", "MORE_OPTIONS"],
@@ -157,6 +157,17 @@ const SnkGrid = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
157
157
  this.enableGridInsert = false;
158
158
  this.outlineMode = false;
159
159
  this.strategyExporter = ExporterStrategy.SERVER_SIDE;
160
+ this.multipleEditionEnabled = true;
161
+ }
162
+ getGridHeaderSelectedBtns() {
163
+ const btns = [
164
+ TaskbarElement.UPDATE, TaskbarElement.CLONE, TaskbarElement.REMOVE,
165
+ TaskbarElement.MORE_OPTIONS, TaskbarElement.DIVIDER, TaskbarElement.ATTACH, TaskbarElement.FORM_MODE,
166
+ TaskbarElement.CONFIGURATOR, TaskbarElement.REFRESH, TaskbarElement.DATA_EXPORTER, TaskbarElement.ACTIONS_BUTTON
167
+ ];
168
+ if (this.multipleEditionEnabled)
169
+ btns.unshift(TaskbarElement.UPDATE_MULTIPLE);
170
+ return btns;
160
171
  }
161
172
  reloadConfig() {
162
173
  this.loadConfig();
@@ -441,20 +452,23 @@ const SnkGrid = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
441
452
  const disabledButtons = [];
442
453
  if ((_a = this._dataState) === null || _a === void 0 ? void 0 : _a.selectionInfo) {
443
454
  if (this._dataState.selectionInfo.length > 1) {
444
- disabledButtons.push(TaskbarElement.CLONE, "ATTACH", TaskbarElement.UPDATE);
455
+ disabledButtons.push(TaskbarElement.CLONE, TaskbarElement.ATTACH, TaskbarElement.UPDATE);
445
456
  }
446
457
  if (this._dataState.selectionInfo.isAllRecords()) {
447
- disabledButtons.push("REMOVE");
458
+ disabledButtons.push(TaskbarElement.REMOVE);
448
459
  }
449
460
  }
450
461
  return disabledButtons;
451
462
  }
452
463
  getInvisibleButtons() {
464
+ var _a, _b;
453
465
  let invisibleButtons = [];
454
466
  if (!this._dataUnit || this._dataUnit.records.length === 0)
455
- invisibleButtons.push("DATA_EXPORTER");
456
- if (this._dataState && this._dataState.selectionInfo.mode === SelectionMode.ALL_RECORDS)
457
- invisibleButtons.push("ACTIONS_BUTTON");
467
+ invisibleButtons.push(TaskbarElement.DATA_EXPORTER);
468
+ if (((_a = this._dataState) === null || _a === void 0 ? void 0 : _a.selectionInfo.mode) === SelectionMode.ALL_RECORDS)
469
+ invisibleButtons.push(TaskbarElement.ACTIONS_BUTTON);
470
+ if (((_b = this._dataState) === null || _b === void 0 ? void 0 : _b.selectionInfo.length) === 1)
471
+ invisibleButtons.push(TaskbarElement.UPDATE_MULTIPLE);
458
472
  return invisibleButtons;
459
473
  }
460
474
  componentWillRender() {
@@ -600,6 +614,7 @@ const SnkGrid = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
600
614
  "enableGridInsert": [4, "enable-grid-insert"],
601
615
  "outlineMode": [4, "outline-mode"],
602
616
  "strategyExporter": [1025, "strategy-exporter"],
617
+ "multipleEditionEnabled": [4, "multiple-edition-enabled"],
603
618
  "_dataUnit": [32],
604
619
  "_dataState": [32],
605
620
  "_gridConfig": [32],
@@ -1,5 +1,5 @@
1
1
  import { proxyCustomElement, HTMLElement, createEvent, h } from '@stencil/core/internal/client';
2
- import { StringUtils, ApplicationContext, ObjectUtils, DataType, UserInterface, JSUtils, FloatingManager, KeyboardManager, ElementIDUtils } from '@sankhyalabs/core';
2
+ import { StringUtils, ApplicationContext, ObjectUtils, Action, DataType, UserInterface, JSUtils, FloatingManager, KeyboardManager, ElementIDUtils } from '@sankhyalabs/core';
3
3
  import { CSSVarsUtils } from '@sankhyalabs/ezui/dist/collection/utils';
4
4
  import { V as VIEW_MODE, S as SIMPLE_CRUD_MODE } from './constants.js';
5
5
  import { T as TaskbarElement, d as defineCustomElement$3 } from './snk-taskbar2.js';
@@ -46,13 +46,6 @@ const SnkSimpleCrud = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement
46
46
  this._formConfigFetcher = new FormConfigFetcher();
47
47
  this._customEditors = new Map();
48
48
  this._customRenders = new Map();
49
- this._taskbarProcessor = new TaskbarProcessor({
50
- "snkSimpleCrudTaskbar.form_regular": this.getButtons(false, [TaskbarElement.GRID_MODE], true),
51
- "snkSimpleCrudTaskbar.grid_regular": this.getButtons(false, [TaskbarElement.DATA_EXPORTER, TaskbarElement.FORM_MODE]),
52
- "snkSimpleCrudTaskbar.form_selected": this.getButtons(true, [TaskbarElement.GRID_MODE], true),
53
- "snkSimpleCrudTaskbar.grid_selected": this.getButtons(true, [TaskbarElement.DATA_EXPORTER, TaskbarElement.FORM_MODE]),
54
- "snkSimpleCrudTaskbar.finish_edition": this.getFinishEditionButtonsCallback.bind(this)
55
- });
56
49
  this._showPopUpGridConfig = false;
57
50
  this._currentViewMode = VIEW_MODE.GRID;
58
51
  this._config = undefined;
@@ -85,6 +78,7 @@ const SnkSimpleCrud = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement
85
78
  this.ignoreReadOnlyFormFields = false;
86
79
  this.autoFocus = true;
87
80
  this.domainMessagesBuilder = undefined;
81
+ this.multipleEditionEnabled = true;
88
82
  this.layoutFormConfig = false;
89
83
  this.autoLoad = undefined;
90
84
  this.outlineMode = false;
@@ -145,8 +139,25 @@ const SnkSimpleCrud = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement
145
139
  newCustomFieldProps.set(fieldName, Object.assign(Object.assign({}, currentProps), { [propName]: value }));
146
140
  this._fieldsProps = newCustomFieldProps;
147
141
  }
142
+ loadTaskbarProcessor() {
143
+ const taskbarIDs = {};
144
+ taskbarIDs[TASKBAR_ID.FORM_REGULAR] = this.getButtons(false, [TaskbarElement.GRID_MODE], true);
145
+ taskbarIDs[TASKBAR_ID.GRID_REGULAR] = this.getButtons(false, [TaskbarElement.DATA_EXPORTER, TaskbarElement.FORM_MODE]);
146
+ taskbarIDs[TASKBAR_ID.FORM_SELECTED] = this.getButtons(true, [TaskbarElement.GRID_MODE], true);
147
+ taskbarIDs[TASKBAR_ID.GRID_SELECTED] = this.getGridSelectedButtonsCallBack.bind(this);
148
+ taskbarIDs[TASKBAR_ID.FINISH_EDITION] = this.getFinishEditionButtonsCallback.bind(this);
149
+ taskbarIDs[TASKBAR_ID.MULTIPLE_EDITION] = [TaskbarElement.CANCEL];
150
+ this._taskbarProcessor = new TaskbarProcessor(taskbarIDs);
151
+ }
152
+ getGridSelectedButtonsCallBack() {
153
+ var _a, _b, _c;
154
+ 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) {
155
+ return this.getButtons(true, [TaskbarElement.DATA_EXPORTER, TaskbarElement.FORM_MODE]);
156
+ }
157
+ return this.getButtons(true, [TaskbarElement.UPDATE_MULTIPLE, TaskbarElement.DATA_EXPORTER, TaskbarElement.FORM_MODE]);
158
+ }
148
159
  getFinishEditionButtonsCallback() {
149
- const btns = ["CANCEL", "SAVE"];
160
+ const btns = [TaskbarElement.CANCEL, TaskbarElement.SAVE];
150
161
  if (this.enableGridInsert && this._currentViewMode !== VIEW_MODE.ATTACHMENT) {
151
162
  btns.push(this._currentViewMode === VIEW_MODE.GRID ? TaskbarElement.FORM_MODE : TaskbarElement.GRID_MODE);
152
163
  }
@@ -182,22 +193,32 @@ const SnkSimpleCrud = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement
182
193
  async goToView(view) {
183
194
  this._currentViewMode = view;
184
195
  if (this._viewStack) {
196
+ if (view === VIEW_MODE.GRID)
197
+ this.dataUnit.isMultipleEdition = false;
185
198
  this._viewStack.show(view);
186
199
  }
187
200
  }
188
201
  actionClickListener(evt) {
189
- const act = evt.detail;
190
- if (act === TaskbarElement.CONFIGURATOR) {
191
- this._snkConfigurator.open();
192
- }
193
- else if (act === TaskbarElement.GRID_MODE) {
194
- this.goToView(VIEW_MODE.GRID);
195
- }
196
- else if (act === TaskbarElement.FORM_MODE) {
197
- this.goToView(VIEW_MODE.FORM);
198
- }
202
+ this.handleTaskbarAction(evt.detail);
199
203
  evt.stopPropagation();
200
204
  }
205
+ handleTaskbarAction(action) {
206
+ switch (action) {
207
+ case TaskbarElement.CONFIGURATOR:
208
+ this._snkConfigurator.open();
209
+ break;
210
+ case TaskbarElement.GRID_MODE:
211
+ this.goToView(VIEW_MODE.GRID);
212
+ break;
213
+ case TaskbarElement.FORM_MODE:
214
+ this.goToView(VIEW_MODE.FORM);
215
+ break;
216
+ case TaskbarElement.UPDATE_MULTIPLE:
217
+ this.dataUnit.isMultipleEdition = true;
218
+ this.goToView(VIEW_MODE.FORM);
219
+ break;
220
+ }
221
+ }
201
222
  async onChangeEntityName(newValue) {
202
223
  if (this.dataUnit)
203
224
  return;
@@ -329,8 +350,10 @@ const SnkSimpleCrud = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement
329
350
  this.setFormConfig(await this._formConfigManager.loadConfig());
330
351
  }
331
352
  async componentWillRender() {
353
+ this.loadTaskbarProcessor();
332
354
  this._resourceID = await this.application.getResourceID();
333
355
  this.dataExporterProviderStore();
356
+ this.dataExporterProviderStore();
334
357
  this._taskbarProcessor.process(this.getTaskBarId(), this.taskbarManager, this.dataState, this.getTaskBarDisabledButtons());
335
358
  if (this.configName === undefined) {
336
359
  return;
@@ -362,6 +385,14 @@ const SnkSimpleCrud = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement
362
385
  componentDidLoad() {
363
386
  CSSVarsUtils.applyVarsGrid(this._element, this._grid);
364
387
  this.initKeyboardManager();
388
+ this.dataUnit.subscribe(this.dataUnitActionHandler.bind(this));
389
+ }
390
+ async dataUnitActionHandler(action) {
391
+ if (action.type === Action.EDITION_CANCELED || action.type === Action.DATA_SAVED) {
392
+ if (this.dataUnit.isMultipleEdition) {
393
+ this.goToView(VIEW_MODE.GRID);
394
+ }
395
+ }
365
396
  }
366
397
  setCustomRenders() {
367
398
  if (!this._grid) {
@@ -400,14 +431,17 @@ const SnkSimpleCrud = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement
400
431
  getTaskBarId() {
401
432
  var _a, _b;
402
433
  if ((_a = this.dataState) === null || _a === void 0 ? void 0 : _a.isDirty) {
403
- return "snkSimpleCrudTaskbar.finish_edition";
434
+ return TASKBAR_ID.FINISH_EDITION;
435
+ }
436
+ if (this.dataUnit.isMultipleEdition) {
437
+ return TASKBAR_ID.MULTIPLE_EDITION;
404
438
  }
405
439
  if (((_b = this.dataState) === null || _b === void 0 ? void 0 : _b.selectionInfo) &&
406
440
  !this.dataState.selectionInfo.isAllRecords() &&
407
441
  this.dataState.selectionInfo.length > 0) {
408
- return this._currentViewMode === VIEW_MODE.GRID ? "snkSimpleCrudTaskbar.grid_selected" : "snkSimpleCrudTaskbar.form_selected";
442
+ return this._currentViewMode === VIEW_MODE.GRID ? TASKBAR_ID.GRID_SELECTED : TASKBAR_ID.FORM_SELECTED;
409
443
  }
410
- return this._currentViewMode === VIEW_MODE.GRID ? "snkSimpleCrudTaskbar.grid_regular" : "snkSimpleCrudTaskbar.form_regular";
444
+ return this._currentViewMode === VIEW_MODE.GRID ? TASKBAR_ID.GRID_REGULAR : TASKBAR_ID.FORM_REGULAR;
411
445
  }
412
446
  initInMemoryDataUnit() {
413
447
  this._inMemoryLoader = new InMemoryLoader(this._metadata, undefined, { autoLoad: this.autoLoad });
@@ -819,6 +853,7 @@ const SnkSimpleCrud = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement
819
853
  "ignoreReadOnlyFormFields": [4, "ignore-read-only-form-fields"],
820
854
  "autoFocus": [4, "auto-focus"],
821
855
  "domainMessagesBuilder": [1, "domain-messages-builder"],
856
+ "multipleEditionEnabled": [4, "multiple-edition-enabled"],
822
857
  "layoutFormConfig": [4, "layout-form-config"],
823
858
  "autoLoad": [4, "auto-load"],
824
859
  "outlineMode": [4, "outline-mode"],
@@ -842,6 +877,15 @@ const SnkSimpleCrud = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement
842
877
  "closeConfigurator": [64],
843
878
  "updateConfig": [64]
844
879
  }, [[0, "actionClick", "actionClickListener"]]]);
880
+ var TASKBAR_ID;
881
+ (function (TASKBAR_ID) {
882
+ TASKBAR_ID["FORM_REGULAR"] = "snkSimpleCrudTaskbar.form_regular";
883
+ TASKBAR_ID["GRID_REGULAR"] = "snkSimpleCrudTaskbar.grid_regular";
884
+ TASKBAR_ID["FORM_SELECTED"] = "snkSimpleCrudTaskbar.form_selected";
885
+ TASKBAR_ID["GRID_SELECTED"] = "snkSimpleCrudTaskbar.grid_selected";
886
+ TASKBAR_ID["FINISH_EDITION"] = "snkSimpleCrudTaskbar.finish_edition";
887
+ TASKBAR_ID["MULTIPLE_EDITION"] = "snkSimpleCrudTaskbar.multiple_edition";
888
+ })(TASKBAR_ID || (TASKBAR_ID = {}));
845
889
  function defineCustomElement() {
846
890
  if (typeof customElements === "undefined") {
847
891
  return;
@@ -27,6 +27,7 @@ var TaskbarElement;
27
27
  TaskbarElement["DATA_EXPORTER"] = "DATA_EXPORTER";
28
28
  TaskbarElement["ATTACH"] = "ATTACH";
29
29
  TaskbarElement["ACTIONS_BUTTON"] = "ACTIONS_BUTTON";
30
+ TaskbarElement["UPDATE_MULTIPLE"] = "UPDATE_MULTIPLE";
30
31
  })(TaskbarElement || (TaskbarElement = {}));
31
32
  var AuthorizationElements;
32
33
  (function (AuthorizationElements) {
@@ -66,6 +67,8 @@ const buildElem = (element, className, dataElementId, getTitle, action, isEnable
66
67
  return iconButton("sync", element, className, dataElementId, title, action, isEnabled);
67
68
  case TaskbarElement.UPDATE:
68
69
  return iconButton("edit", element, className, dataElementId, title, action, isEnabled);
70
+ case TaskbarElement.UPDATE_MULTIPLE:
71
+ return iconButton("edit-table", element, className, dataElementId, title, action, isEnabled);
69
72
  case TaskbarElement.CLONE:
70
73
  return iconButton("copy", element, className, dataElementId, title, action, isEnabled);
71
74
  case TaskbarElement.REMOVE:
@@ -135,6 +138,7 @@ const SnkTaskbar = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
135
138
  this.ACTIONS_BUTTON_TAG = 'TASKBAR-ACTIONS-BUTTON';
136
139
  this.NOT_OVERFLOW_ELEMENTS = ["moreOptions", "dataExporter_snkDataExporter", "actionsButton_snkActionsButton"];
137
140
  this._titleKeyByElement = {
141
+ [TaskbarElement.UPDATE_MULTIPLE]: "snkTaskbar.titleUpdateMultiple",
138
142
  [TaskbarElement.UPDATE]: "snkTaskbar.titleUpdate",
139
143
  [TaskbarElement.PREVIOUS]: "snkTaskbar.titlePrevious",
140
144
  [TaskbarElement.NEXT]: "snkTaskbar.titleNext",
@@ -1,6 +1,6 @@
1
1
  import { proxyCustomElement, HTMLElement, createEvent, h, Host } from '@stencil/core/internal/client';
2
2
 
3
- const taskbarActionsButtonCss = ".sc-taskbar-actions-button-h{display:flex;width:fit-content;height:fit-content}";
3
+ const taskbarActionsButtonCss = ".sc-taskbar-actions-button-h{--ez-dropdown--min-width:150px;display:flex;width:fit-content;height:fit-content}.ez-dropdown-container.sc-taskbar-actions-button{position:relative;display:inline-block}.ez-dropdown--sticky.sc-taskbar-actions-button{position:absolute;display:block;min-width:var(--ez-dropdown--min-width)}";
4
4
 
5
5
  const TaskbarActionsButton = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
6
6
  constructor() {
@@ -126,7 +126,7 @@ const TaskbarActionsButton = /*@__PURE__*/ proxyCustomElement(class extends HTML
126
126
  this.taskbarActionsButtonDisconnected.emit();
127
127
  }
128
128
  render() {
129
- return (h(Host, null, h("div", { class: `${this.canShowDropdown() ? ' ez-elevation--16' : ''}` }, h("ez-button", { title: this.title, mode: 'icon', iconName: 'dots-vertical', size: 'small', enabled: this.enabled, onClick: () => this.controlDropdown() }), this.canShowDropdown() && h("ez-dropdown", { items: this.loadItems(), onEzClick: (evt) => this.onSelectAction(evt.detail), onEzOutsideClick: () => this._showDropdown = false, itemBuilder: (item, level) => this.dropdownItemBuilder(item, level) }))));
129
+ return (h(Host, null, h("div", { class: `${this.canShowDropdown() ? ' ez-elevation--16' : ''} ez-dropdown-container` }, h("ez-button", { title: this.title, mode: 'icon', iconName: 'dots-vertical', size: 'small', enabled: this.enabled, onClick: () => this.controlDropdown() }), this.canShowDropdown() && h("ez-dropdown", { class: `ez-dropdown--sticky`, items: this.loadItems(), onEzClick: (evt) => this.onSelectAction(evt.detail), onEzOutsideClick: () => this._showDropdown = false, itemBuilder: (item, level) => this.dropdownItemBuilder(item, level) }))));
130
130
  }
131
131
  get _element() { return this; }
132
132
  static get style() { return taskbarActionsButtonCss; }
@@ -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 };