@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
@@ -1,17 +1,17 @@
1
1
  import { r as registerInstance, c as createEvent, h, F as Fragment, g as getElement } from './index-a7d3d3f1.js';
2
2
  import { Action, ElementIDUtils, ApplicationContext, StringUtils } from '@sankhyalabs/core';
3
- import { T as TaskbarElement } from './taskbar-elements-d2353c64.js';
3
+ import { T as TaskbarElement } from './taskbar-elements-c62b6c66.js';
4
4
  import { C as ConfigStorage } from './ConfigStorage-71e6766f.js';
5
5
  import { P as PresentationMode, E as ExporterStrategy } from './index-b40568ff.js';
6
6
  import { T as TaskbarProcessor, o as openFieldSearch, b as buildFieldSearch } from './field-search-f8b1d91e.js';
7
7
  import { s as store } from './index-bdf75557.js';
8
- import { C as CommonsExporter, S as SnkMultiSelectionListDataSource, a as CrudUtils, R as RmPrecisionCustomValueFormatter, b as ContinuousInsertUtils, c as ClientSideExporterProvider } from './ClientSideExporterProvider-a37f890b.js';
8
+ import { C as CommonsExporter, S as SnkMultiSelectionListDataSource, a as CrudUtils, R as RmPrecisionCustomValueFormatter, b as ContinuousInsertUtils, c as ClientSideExporterProvider } from './ClientSideExporterProvider-b3871edb.js';
9
9
  import { SelectionMode } from '@sankhyalabs/core/dist/dataunit/DataUnit';
10
10
  import './DataFetcher-88e56266.js';
11
11
  import './ISave-5efafc97.js';
12
12
  import '@sankhyalabs/ezui/dist/collection/utils/constants';
13
13
  import '@sankhyalabs/core/dist/dataunit/metadata/UnitMetadata';
14
- import './dataunit-fetcher-1d02ecfc.js';
14
+ import './dataunit-fetcher-0e025732.js';
15
15
  import './filter-item-type.enum-d45e026f.js';
16
16
  import './form-config-fetcher-fa208a6c.js';
17
17
  import './constants-7db1128a.js';
@@ -96,7 +96,7 @@ const SnkGrid = class {
96
96
  });
97
97
  this._headerTaskbarProcessor = new TaskbarProcessor({
98
98
  "snkGridHeaderTaskbar.unselected": ["REFRESH", "DATA_EXPORTER", "ACTIONS_BUTTON", "MORE_OPTIONS"],
99
- "snkGridHeaderTaskbar.selected": ["UPDATE", "CLONE", "REMOVE", "MORE_OPTIONS", "DIVIDER", "ATTACH", "REFRESH", "DATA_EXPORTER", "ACTIONS_BUTTON"],
99
+ "snkGridHeaderTaskbar.selected": this.getGridHeaderSelectedBtns(),
100
100
  "snkGridHeaderTaskbar.detail.unselected": ["REFRESH", "MORE_OPTIONS"],
101
101
  "snkGridHeaderTaskbar.detail.selected": ["UPDATE", "ATTACH", "CLONE", "REMOVE", "MORE_OPTIONS", "DIVIDER", "REFRESH"],
102
102
  "snkGridHeaderTaskbar.singleTaskbar.unselected": ["INSERT", "FORM_MODE", "CONFIGURATOR", "REFRESH", "DATA_EXPORTER", "ACTIONS_BUTTON", "MORE_OPTIONS"],
@@ -147,6 +147,17 @@ const SnkGrid = class {
147
147
  this.enableGridInsert = false;
148
148
  this.outlineMode = false;
149
149
  this.strategyExporter = ExporterStrategy.SERVER_SIDE;
150
+ this.multipleEditionEnabled = true;
151
+ }
152
+ getGridHeaderSelectedBtns() {
153
+ const btns = [
154
+ TaskbarElement.UPDATE, TaskbarElement.CLONE, TaskbarElement.REMOVE,
155
+ TaskbarElement.MORE_OPTIONS, TaskbarElement.DIVIDER, TaskbarElement.ATTACH, TaskbarElement.FORM_MODE,
156
+ TaskbarElement.CONFIGURATOR, TaskbarElement.REFRESH, TaskbarElement.DATA_EXPORTER, TaskbarElement.ACTIONS_BUTTON
157
+ ];
158
+ if (this.multipleEditionEnabled)
159
+ btns.unshift(TaskbarElement.UPDATE_MULTIPLE);
160
+ return btns;
150
161
  }
151
162
  reloadConfig() {
152
163
  this.loadConfig();
@@ -431,20 +442,23 @@ const SnkGrid = class {
431
442
  const disabledButtons = [];
432
443
  if ((_a = this._dataState) === null || _a === void 0 ? void 0 : _a.selectionInfo) {
433
444
  if (this._dataState.selectionInfo.length > 1) {
434
- disabledButtons.push(TaskbarElement.CLONE, "ATTACH", TaskbarElement.UPDATE);
445
+ disabledButtons.push(TaskbarElement.CLONE, TaskbarElement.ATTACH, TaskbarElement.UPDATE);
435
446
  }
436
447
  if (this._dataState.selectionInfo.isAllRecords()) {
437
- disabledButtons.push("REMOVE");
448
+ disabledButtons.push(TaskbarElement.REMOVE);
438
449
  }
439
450
  }
440
451
  return disabledButtons;
441
452
  }
442
453
  getInvisibleButtons() {
454
+ var _a, _b;
443
455
  let invisibleButtons = [];
444
456
  if (!this._dataUnit || this._dataUnit.records.length === 0)
445
- invisibleButtons.push("DATA_EXPORTER");
446
- if (this._dataState && this._dataState.selectionInfo.mode === SelectionMode.ALL_RECORDS)
447
- invisibleButtons.push("ACTIONS_BUTTON");
457
+ invisibleButtons.push(TaskbarElement.DATA_EXPORTER);
458
+ if (((_a = this._dataState) === null || _a === void 0 ? void 0 : _a.selectionInfo.mode) === SelectionMode.ALL_RECORDS)
459
+ invisibleButtons.push(TaskbarElement.ACTIONS_BUTTON);
460
+ if (((_b = this._dataState) === null || _b === void 0 ? void 0 : _b.selectionInfo.length) === 1)
461
+ invisibleButtons.push(TaskbarElement.UPDATE_MULTIPLE);
448
462
  return invisibleButtons;
449
463
  }
450
464
  componentWillRender() {
@@ -1,16 +1,16 @@
1
1
  import { r as registerInstance, c as createEvent, h, F as Fragment } from './index-a7d3d3f1.js';
2
- import { Action, ElementIDUtils } from '@sankhyalabs/core';
2
+ import { ObjectUtils, Action, ElementIDUtils } from '@sankhyalabs/core';
3
3
  import { S as SnkFormConfigManager } from './SnkFormConfigManager-be490a33.js';
4
4
  import { buildFormMetadata, FormMetadata } from '@sankhyalabs/ezui/dist/collection/utils/form';
5
5
  import { o as openFieldSearch, T as TaskbarProcessor, b as buildFieldSearch } from './field-search-f8b1d91e.js';
6
- import { T as TaskbarElement } from './taskbar-elements-d2353c64.js';
6
+ import { T as TaskbarElement } from './taskbar-elements-c62b6c66.js';
7
7
  import { V as VIEW_MODE } from './constants-7db1128a.js';
8
8
  import './DataFetcher-88e56266.js';
9
9
  import './ISave-5efafc97.js';
10
10
  import { P as PresentationMode } from './index-b40568ff.js';
11
11
  import '@sankhyalabs/ezui/dist/collection/utils/constants';
12
12
  import '@sankhyalabs/core/dist/dataunit/metadata/UnitMetadata';
13
- import './dataunit-fetcher-1d02ecfc.js';
13
+ import './dataunit-fetcher-0e025732.js';
14
14
  import './filter-item-type.enum-d45e026f.js';
15
15
  import './form-config-fetcher-fa208a6c.js';
16
16
  import { SelectionMode } from '@sankhyalabs/core/dist/dataunit/DataUnit';
@@ -21,6 +21,7 @@ const FORM_NAME_PREFIX = "__FORM:";
21
21
  const SnkGuidesViewer = class {
22
22
  constructor(hostRef) {
23
23
  registerInstance(this, hostRef);
24
+ this.snkMasterFormConfigChange = createEvent(this, "snkMasterFormConfigChange", 7);
24
25
  this.exit = createEvent(this, "exit", 7);
25
26
  this.actionClick = createEvent(this, "actionClick", 7);
26
27
  this.formItemsReady = createEvent(this, "formItemsReady", 7);
@@ -57,14 +58,16 @@ const SnkGuidesViewer = class {
57
58
  this.loadGuides(true);
58
59
  }
59
60
  observeDataState(newValue, oldValue) {
60
- const newRecord = newValue === null || newValue === void 0 ? void 0 : newValue.selectedRecord;
61
- const oldRecord = oldValue === null || oldValue === void 0 ? void 0 : oldValue.selectedRecord;
62
- if ((newRecord === null || newRecord === void 0 ? void 0 : newRecord.__record__id__) !== (oldRecord === null || oldRecord === void 0 ? void 0 : oldRecord.__record__id__)) {
61
+ var _a, _b, _c, _d, _e, _f;
62
+ 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__'];
63
+ 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__'];
64
+ if (!ObjectUtils.equals(newRecordsIds, oldRecordsIds)) {
63
65
  this.loadGuides((oldValue === null || oldValue === void 0 ? void 0 : oldValue.insertionMode) != (newValue === null || newValue === void 0 ? void 0 : newValue.insertionMode));
64
66
  }
65
67
  }
66
68
  observeMasterFormConfig() {
67
69
  this.loadGuides(this.noGuideSelected());
70
+ this.snkMasterFormConfigChange.emit(this.masterFormConfig);
68
71
  }
69
72
  /**
70
73
  * Abre o configurador do formulário
@@ -138,6 +141,11 @@ const SnkGuidesViewer = class {
138
141
  * Para conhecer os detalhes do módulo, vide o arquivo neste projeto "/src/lib/message/resources/snk-crud.msg.ts"
139
142
  */
140
143
  getMessage(key) {
144
+ var _a, _b;
145
+ if (this.dataUnit.isMultipleEdition) {
146
+ const selectedRecords = (_b = (_a = this.dataUnit.getSelectionInfo()) === null || _a === void 0 ? void 0 : _a.records) !== null && _b !== void 0 ? _b : [];
147
+ return `Editando ${selectedRecords.length} registros`;
148
+ }
141
149
  return this.messagesBuilder.getMessage(key, this.dataUnit.getSelectedRecord());
142
150
  }
143
151
  loadGuides(changeSelection) {
@@ -150,12 +158,12 @@ const SnkGuidesViewer = class {
150
158
  this._masterFormMetadata = buildFormMetadata(this.masterFormConfig, this.dataUnit, true);
151
159
  const allSheets = this._masterFormMetadata.getAllSheets();
152
160
  const currentRecord = this.dataUnit.getSelectedRecord();
153
- const disableDetails = !currentRecord || this.dataUnit.isNewRecord(currentRecord.__record__id__);
161
+ const disableDetails = this.hasToDisableDetails(currentRecord);
154
162
  const guides = [];
155
163
  Array.from(allSheets.values()).forEach((sheet) => {
156
164
  const item = { id: sheet.name, label: sheet.label };
157
165
  if (this.isDetail(sheet.name) && disableDetails) {
158
- item.tooltip = "Para alterar detalhes é necessário estar com um registro selecionado.";
166
+ item.tooltip = "Para alterar detalhes é necessário estar com um (e apenas um) registro selecionado.";
159
167
  item.disabled = true;
160
168
  }
161
169
  guides.push(item);
@@ -168,6 +176,11 @@ const SnkGuidesViewer = class {
168
176
  this.selectedGuide = this._guides.length > 0 ? this._guides[0] : undefined;
169
177
  }
170
178
  }
179
+ hasToDisableDetails(currentRecord) {
180
+ return !currentRecord
181
+ || this.dataUnit.isNewRecord(currentRecord.__record__id__)
182
+ || this.dataUnit.isMultipleEdition;
183
+ }
171
184
  isDetail(formId) {
172
185
  return FormMetadata.getDetailName(formId) != undefined;
173
186
  }
@@ -190,47 +203,59 @@ const SnkGuidesViewer = class {
190
203
  }
191
204
  getTaskBarId() {
192
205
  var _a;
193
- return ((_a = this.dataState) === null || _a === void 0 ? void 0 : _a.isDirty) ? "snkGuideViewer.finish_edition" : "snkGuideViewer.regular";
194
- }
195
- loadTaskbarProcessor() {
196
- var _a;
197
- const taskbarId = this.getTaskBarId();
198
- const disabledButtons = [];
199
- if (!this.dataState || !this.dataState.hasPrevious) {
200
- disabledButtons.push("PREVIOUS");
206
+ if ((_a = this.dataState) === null || _a === void 0 ? void 0 : _a.isDirty) {
207
+ return TASKBAR_ID.FINISH_EDITION;
201
208
  }
202
- if (!this.dataState || !this.dataState.hasNext) {
203
- disabledButtons.push("NEXT");
209
+ if (this.dataUnit.isMultipleEdition) {
210
+ return TASKBAR_ID.MUTIPLE_EDITION;
204
211
  }
205
- if ((_a = this.dataState) === null || _a === void 0 ? void 0 : _a.selectionInfo) {
206
- if (this.dataState.selectionInfo.length > 1) {
207
- disabledButtons.push("CLONE");
208
- }
209
- if (this.dataState.selectionInfo.isAllRecords()) {
210
- disabledButtons.push("REMOVE");
211
- }
212
+ return TASKBAR_ID.REGULAR;
213
+ }
214
+ loadTaskbarProcessor() {
215
+ const taskbarIDs = {};
216
+ taskbarIDs[TASKBAR_ID.REGULAR] = this.buildBtnsRegularMode();
217
+ taskbarIDs[TASKBAR_ID.FINISH_EDITION] = [TaskbarElement.CANCEL, TaskbarElement.SAVE, this.handleAddGridMode()];
218
+ taskbarIDs[TASKBAR_ID.MUTIPLE_EDITION] = [TaskbarElement.CANCEL];
219
+ this._taskbarProcessor = new TaskbarProcessor(taskbarIDs);
220
+ this._taskbarProcessor.process(this.getTaskBarId(), this.taskbarManager, this.dataState, this.buildDisabledButtons(), this.buildInvisibleButtons());
221
+ }
222
+ buildBtnsRegularMode() {
223
+ var _a, _b;
224
+ const btnsRegularMode = [
225
+ TaskbarElement.ATTACH, TaskbarElement.CLONE, TaskbarElement.REMOVE, TaskbarElement.MORE_OPTIONS,
226
+ TaskbarElement.ACTIONS_BUTTON, TaskbarElement.DIVIDER, TaskbarElement.GRID_MODE, TaskbarElement.CONFIGURATOR,
227
+ ];
228
+ if (((_b = (_a = this.dataState) === null || _a === void 0 ? void 0 : _a.selectionInfo) === null || _b === void 0 ? void 0 : _b.length) <= 1) {
229
+ btnsRegularMode.unshift(TaskbarElement.PREVIOUS, TaskbarElement.NEXT, TaskbarElement.DIVIDER);
212
230
  }
213
- const btnsRegularMode = ["PREVIOUS", "NEXT", "DIVIDER", "ATTACH", "CLONE", "REMOVE", "MORE_OPTIONS", "ACTIONS_BUTTON", "DIVIDER", "GRID_MODE", "CONFIGURATOR"];
214
231
  if (this.presentationMode == PresentationMode.SECONDARY) {
215
- btnsRegularMode.unshift("INSERT");
232
+ btnsRegularMode.unshift(TaskbarElement.INSERT);
216
233
  }
217
234
  else {
218
- btnsRegularMode.push("INSERT");
235
+ btnsRegularMode.push(TaskbarElement.INSERT);
219
236
  }
220
- const invisibleButtons = this.getInvisibleButtons();
221
- this._taskbarProcessor = new TaskbarProcessor({
222
- "snkGuideViewer.regular": btnsRegularMode,
223
- "snkGuideViewer.finish_edition": ["CANCEL", "SAVE", this.handleAddGridMode()],
224
- });
225
- this._taskbarProcessor.process(taskbarId, this.taskbarManager, this.dataState, disabledButtons, invisibleButtons);
237
+ return btnsRegularMode;
238
+ }
239
+ buildDisabledButtons() {
240
+ var _a, _b, _c, _d, _e, _f;
241
+ const disabledButtons = [];
242
+ if (!((_a = this.dataState) === null || _a === void 0 ? void 0 : _a.hasPrevious))
243
+ disabledButtons.push(TaskbarElement.PREVIOUS);
244
+ if (!((_b = this.dataState) === null || _b === void 0 ? void 0 : _b.hasNext))
245
+ disabledButtons.push(TaskbarElement.NEXT);
246
+ if (((_d = (_c = this.dataState) === null || _c === void 0 ? void 0 : _c.selectionInfo) === null || _d === void 0 ? void 0 : _d.length) > 1)
247
+ disabledButtons.push(TaskbarElement.CLONE);
248
+ if ((_f = (_e = this.dataState) === null || _e === void 0 ? void 0 : _e.selectionInfo) === null || _f === void 0 ? void 0 : _f.isAllRecords())
249
+ disabledButtons.push(TaskbarElement.REMOVE);
250
+ return disabledButtons;
226
251
  }
227
252
  handleAddGridMode() {
228
253
  return this.enableGridInsert ? TaskbarElement.GRID_MODE : "";
229
254
  }
230
- getInvisibleButtons() {
255
+ buildInvisibleButtons() {
231
256
  const invisibleButtons = [];
232
257
  if (this.dataState && this.dataState.selectionInfo.mode === SelectionMode.ALL_RECORDS)
233
- invisibleButtons.push("ACTIONS_BUTTON");
258
+ invisibleButtons.push(TaskbarElement.ACTIONS_BUTTON);
234
259
  return invisibleButtons;
235
260
  }
236
261
  static updateContentCard(formName, cardConfig, propertyChanged, configManager) {
@@ -443,17 +468,27 @@ const SnkGuidesViewer = class {
443
468
  }
444
469
  buildTaskBar() {
445
470
  var _a;
446
- 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" })));
471
+ 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" })));
447
472
  }
448
473
  async dataUnitActionHandler(action) {
449
474
  var _a;
450
- if (action.type === Action.FIELD_INVALIDATED) {
451
- const guideName = this.getGuideName((_a = action.payload) === null || _a === void 0 ? void 0 : _a.fieldName);
452
- await this.addErrorBadgeToGuide(guideName);
453
- await this.openGuideNavigator(guideName);
454
- }
455
- if (action.type === Action.METADATA_LOADED) {
456
- this.loadGuides(this.noGuideSelected());
475
+ switch (action.type) {
476
+ case Action.EDITION_CANCELED:
477
+ case Action.DATA_SAVED:
478
+ if (this.dataUnit.isMultipleEdition) {
479
+ this.exitViewer();
480
+ this.dataUnit.isMultipleEdition = false;
481
+ }
482
+ break;
483
+ case Action.FIELD_INVALIDATED:
484
+ const guideName = this.getGuideName((_a = action.payload) === null || _a === void 0 ? void 0 : _a.fieldName);
485
+ await this.addErrorBadgeToGuide(guideName);
486
+ await this.openGuideNavigator(guideName);
487
+ break;
488
+ case Action.METADATA_LOADED:
489
+ case Action.MULTIPLE_EDITION_CHANGED:
490
+ this.loadGuides(this.noGuideSelected());
491
+ break;
457
492
  }
458
493
  }
459
494
  async addErrorBadgeToGuide(guideName) {
@@ -493,6 +528,20 @@ const SnkGuidesViewer = class {
493
528
  var _a, _b;
494
529
  return (_b = (_a = this.getCustomTitle) === null || _a === void 0 ? void 0 : _a.call(this)) !== null && _b !== void 0 ? _b : this.getMessage("snkCrud.title");
495
530
  }
531
+ getTitleTooltip() {
532
+ if (!this.dataUnit.isMultipleEdition)
533
+ return;
534
+ return this.buildRecordIdsArray();
535
+ }
536
+ buildRecordIdsArray() {
537
+ var _a, _b;
538
+ const selectedRecords = (_b = (_a = this.dataUnit.getSelectionInfo()) === null || _a === void 0 ? void 0 : _a.records) !== null && _b !== void 0 ? _b : [];
539
+ if (selectedRecords.length === 0) {
540
+ return "[]";
541
+ }
542
+ const labels = selectedRecords.map(record => this.messagesBuilder.getMessage("snkCrud.title", record));
543
+ return `[${labels.join(", ")}]`;
544
+ }
496
545
  componentDidLoad() {
497
546
  this.dataUnit.subscribe(this.dataUnitActionHandler.bind(this));
498
547
  }
@@ -506,7 +555,7 @@ const SnkGuidesViewer = class {
506
555
  }
507
556
  this.loadTaskbarProcessor();
508
557
  const showGuides = this._guides && (this._guides.length > 1);
509
- 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 &&
558
+ 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 &&
510
559
  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 ?
511
560
  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) })
512
561
  :
@@ -528,6 +577,12 @@ const SnkGuidesViewer = class {
528
577
  "masterFormConfig": ["observeMasterFormConfig"]
529
578
  }; }
530
579
  };
580
+ var TASKBAR_ID;
581
+ (function (TASKBAR_ID) {
582
+ TASKBAR_ID["FINISH_EDITION"] = "snkGuideViewer.finish_edition";
583
+ TASKBAR_ID["MUTIPLE_EDITION"] = "snkGuideViewer.multiple_edition";
584
+ TASKBAR_ID["REGULAR"] = "snkGuideViewer.regular";
585
+ })(TASKBAR_ID || (TASKBAR_ID = {}));
531
586
  SnkGuidesViewer.style = snkGuidesViewerCss;
532
587
 
533
588
  export { SnkGuidesViewer as S };
@@ -1,4 +1,4 @@
1
- export { S as snk_guides_viewer } from './snk-guides-viewer-c44b3839.js';
1
+ export { S as snk_guides_viewer } from './snk-guides-viewer-75e06feb.js';
2
2
  import './index-a7d3d3f1.js';
3
3
  import '@sankhyalabs/core';
4
4
  import './SnkFormConfigManager-be490a33.js';
@@ -11,12 +11,12 @@ import './filter-item-type.enum-d45e026f.js';
11
11
  import './constants-7db1128a.js';
12
12
  import '@sankhyalabs/ezui/dist/collection/utils/form';
13
13
  import './field-search-f8b1d91e.js';
14
- import './taskbar-elements-d2353c64.js';
14
+ import './taskbar-elements-c62b6c66.js';
15
15
  import './index-b40568ff.js';
16
16
  import './index-bdf75557.js';
17
17
  import './ISave-5efafc97.js';
18
18
  import '@sankhyalabs/ezui/dist/collection/utils/constants';
19
- import './dataunit-fetcher-1d02ecfc.js';
19
+ import './dataunit-fetcher-0e025732.js';
20
20
  import '@sankhyalabs/ezui/dist/collection/components/ez-grid/utils';
21
21
  import '@sankhyalabs/core/dist/utils/SortingUtils';
22
22
  import './ResourceIDUtils-a114189a.js';
@@ -5,7 +5,7 @@ import './DataFetcher-88e56266.js';
5
5
  import './index-b40568ff.js';
6
6
  import '@sankhyalabs/ezui/dist/collection/utils/constants';
7
7
  import '@sankhyalabs/core/dist/dataunit/metadata/UnitMetadata';
8
- import './dataunit-fetcher-1d02ecfc.js';
8
+ import './dataunit-fetcher-0e025732.js';
9
9
  import './filter-item-type.enum-d45e026f.js';
10
10
  import './form-config-fetcher-fa208a6c.js';
11
11
  import './constants-7db1128a.js';
@@ -1,15 +1,15 @@
1
1
  import { r as registerInstance, c as createEvent, h, g as getElement } from './index-a7d3d3f1.js';
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-7db1128a.js';
5
- import { T as TaskbarElement } from './taskbar-elements-d2353c64.js';
5
+ import { T as TaskbarElement } from './taskbar-elements-c62b6c66.js';
6
6
  import './DataFetcher-88e56266.js';
7
7
  import './ISave-5efafc97.js';
8
- import { S as SnkMultiSelectionListDataSource, R as RmPrecisionCustomValueFormatter, b as ContinuousInsertUtils, a as CrudUtils, c as ClientSideExporterProvider } from './ClientSideExporterProvider-a37f890b.js';
8
+ import { S as SnkMultiSelectionListDataSource, R as RmPrecisionCustomValueFormatter, b as ContinuousInsertUtils, a as CrudUtils, c as ClientSideExporterProvider } from './ClientSideExporterProvider-b3871edb.js';
9
9
  import { P as PresentationMode } from './index-b40568ff.js';
10
10
  import '@sankhyalabs/ezui/dist/collection/utils/constants';
11
11
  import '@sankhyalabs/core/dist/dataunit/metadata/UnitMetadata';
12
- import { I as InMemoryLoader } from './dataunit-fetcher-1d02ecfc.js';
12
+ import { I as InMemoryLoader } from './dataunit-fetcher-0e025732.js';
13
13
  import './filter-item-type.enum-d45e026f.js';
14
14
  import { F as FormConfigFetcher } from './form-config-fetcher-fa208a6c.js';
15
15
  import { T as TaskbarProcessor, b as buildFieldSearch, o as openFieldSearch } from './field-search-f8b1d91e.js';
@@ -43,13 +43,6 @@ const SnkSimpleCrud = class {
43
43
  this._formConfigFetcher = new FormConfigFetcher();
44
44
  this._customEditors = new Map();
45
45
  this._customRenders = new Map();
46
- this._taskbarProcessor = new TaskbarProcessor({
47
- "snkSimpleCrudTaskbar.form_regular": this.getButtons(false, [TaskbarElement.GRID_MODE], true),
48
- "snkSimpleCrudTaskbar.grid_regular": this.getButtons(false, [TaskbarElement.DATA_EXPORTER, TaskbarElement.FORM_MODE]),
49
- "snkSimpleCrudTaskbar.form_selected": this.getButtons(true, [TaskbarElement.GRID_MODE], true),
50
- "snkSimpleCrudTaskbar.grid_selected": this.getButtons(true, [TaskbarElement.DATA_EXPORTER, TaskbarElement.FORM_MODE]),
51
- "snkSimpleCrudTaskbar.finish_edition": this.getFinishEditionButtonsCallback.bind(this)
52
- });
53
46
  this._showPopUpGridConfig = false;
54
47
  this._currentViewMode = VIEW_MODE.GRID;
55
48
  this._config = undefined;
@@ -82,6 +75,7 @@ const SnkSimpleCrud = class {
82
75
  this.ignoreReadOnlyFormFields = false;
83
76
  this.autoFocus = true;
84
77
  this.domainMessagesBuilder = undefined;
78
+ this.multipleEditionEnabled = true;
85
79
  this.layoutFormConfig = false;
86
80
  this.autoLoad = undefined;
87
81
  this.outlineMode = false;
@@ -142,8 +136,25 @@ const SnkSimpleCrud = class {
142
136
  newCustomFieldProps.set(fieldName, Object.assign(Object.assign({}, currentProps), { [propName]: value }));
143
137
  this._fieldsProps = newCustomFieldProps;
144
138
  }
139
+ loadTaskbarProcessor() {
140
+ const taskbarIDs = {};
141
+ taskbarIDs[TASKBAR_ID.FORM_REGULAR] = this.getButtons(false, [TaskbarElement.GRID_MODE], true);
142
+ taskbarIDs[TASKBAR_ID.GRID_REGULAR] = this.getButtons(false, [TaskbarElement.DATA_EXPORTER, TaskbarElement.FORM_MODE]);
143
+ taskbarIDs[TASKBAR_ID.FORM_SELECTED] = this.getButtons(true, [TaskbarElement.GRID_MODE], true);
144
+ taskbarIDs[TASKBAR_ID.GRID_SELECTED] = this.getGridSelectedButtonsCallBack.bind(this);
145
+ taskbarIDs[TASKBAR_ID.FINISH_EDITION] = this.getFinishEditionButtonsCallback.bind(this);
146
+ taskbarIDs[TASKBAR_ID.MULTIPLE_EDITION] = [TaskbarElement.CANCEL];
147
+ this._taskbarProcessor = new TaskbarProcessor(taskbarIDs);
148
+ }
149
+ getGridSelectedButtonsCallBack() {
150
+ var _a, _b, _c;
151
+ 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) {
152
+ return this.getButtons(true, [TaskbarElement.DATA_EXPORTER, TaskbarElement.FORM_MODE]);
153
+ }
154
+ return this.getButtons(true, [TaskbarElement.UPDATE_MULTIPLE, TaskbarElement.DATA_EXPORTER, TaskbarElement.FORM_MODE]);
155
+ }
145
156
  getFinishEditionButtonsCallback() {
146
- const btns = ["CANCEL", "SAVE"];
157
+ const btns = [TaskbarElement.CANCEL, TaskbarElement.SAVE];
147
158
  if (this.enableGridInsert && this._currentViewMode !== VIEW_MODE.ATTACHMENT) {
148
159
  btns.push(this._currentViewMode === VIEW_MODE.GRID ? TaskbarElement.FORM_MODE : TaskbarElement.GRID_MODE);
149
160
  }
@@ -179,22 +190,32 @@ const SnkSimpleCrud = class {
179
190
  async goToView(view) {
180
191
  this._currentViewMode = view;
181
192
  if (this._viewStack) {
193
+ if (view === VIEW_MODE.GRID)
194
+ this.dataUnit.isMultipleEdition = false;
182
195
  this._viewStack.show(view);
183
196
  }
184
197
  }
185
198
  actionClickListener(evt) {
186
- const act = evt.detail;
187
- if (act === TaskbarElement.CONFIGURATOR) {
188
- this._snkConfigurator.open();
189
- }
190
- else if (act === TaskbarElement.GRID_MODE) {
191
- this.goToView(VIEW_MODE.GRID);
192
- }
193
- else if (act === TaskbarElement.FORM_MODE) {
194
- this.goToView(VIEW_MODE.FORM);
195
- }
199
+ this.handleTaskbarAction(evt.detail);
196
200
  evt.stopPropagation();
197
201
  }
202
+ handleTaskbarAction(action) {
203
+ switch (action) {
204
+ case TaskbarElement.CONFIGURATOR:
205
+ this._snkConfigurator.open();
206
+ break;
207
+ case TaskbarElement.GRID_MODE:
208
+ this.goToView(VIEW_MODE.GRID);
209
+ break;
210
+ case TaskbarElement.FORM_MODE:
211
+ this.goToView(VIEW_MODE.FORM);
212
+ break;
213
+ case TaskbarElement.UPDATE_MULTIPLE:
214
+ this.dataUnit.isMultipleEdition = true;
215
+ this.goToView(VIEW_MODE.FORM);
216
+ break;
217
+ }
218
+ }
198
219
  async onChangeEntityName(newValue) {
199
220
  if (this.dataUnit)
200
221
  return;
@@ -326,8 +347,10 @@ const SnkSimpleCrud = class {
326
347
  this.setFormConfig(await this._formConfigManager.loadConfig());
327
348
  }
328
349
  async componentWillRender() {
350
+ this.loadTaskbarProcessor();
329
351
  this._resourceID = await this.application.getResourceID();
330
352
  this.dataExporterProviderStore();
353
+ this.dataExporterProviderStore();
331
354
  this._taskbarProcessor.process(this.getTaskBarId(), this.taskbarManager, this.dataState, this.getTaskBarDisabledButtons());
332
355
  if (this.configName === undefined) {
333
356
  return;
@@ -359,6 +382,14 @@ const SnkSimpleCrud = class {
359
382
  componentDidLoad() {
360
383
  CSSVarsUtils.applyVarsGrid(this._element, this._grid);
361
384
  this.initKeyboardManager();
385
+ this.dataUnit.subscribe(this.dataUnitActionHandler.bind(this));
386
+ }
387
+ async dataUnitActionHandler(action) {
388
+ if (action.type === Action.EDITION_CANCELED || action.type === Action.DATA_SAVED) {
389
+ if (this.dataUnit.isMultipleEdition) {
390
+ this.goToView(VIEW_MODE.GRID);
391
+ }
392
+ }
362
393
  }
363
394
  setCustomRenders() {
364
395
  if (!this._grid) {
@@ -397,14 +428,17 @@ const SnkSimpleCrud = class {
397
428
  getTaskBarId() {
398
429
  var _a, _b;
399
430
  if ((_a = this.dataState) === null || _a === void 0 ? void 0 : _a.isDirty) {
400
- return "snkSimpleCrudTaskbar.finish_edition";
431
+ return TASKBAR_ID.FINISH_EDITION;
432
+ }
433
+ if (this.dataUnit.isMultipleEdition) {
434
+ return TASKBAR_ID.MULTIPLE_EDITION;
401
435
  }
402
436
  if (((_b = this.dataState) === null || _b === void 0 ? void 0 : _b.selectionInfo) &&
403
437
  !this.dataState.selectionInfo.isAllRecords() &&
404
438
  this.dataState.selectionInfo.length > 0) {
405
- return this._currentViewMode === VIEW_MODE.GRID ? "snkSimpleCrudTaskbar.grid_selected" : "snkSimpleCrudTaskbar.form_selected";
439
+ return this._currentViewMode === VIEW_MODE.GRID ? TASKBAR_ID.GRID_SELECTED : TASKBAR_ID.FORM_SELECTED;
406
440
  }
407
- return this._currentViewMode === VIEW_MODE.GRID ? "snkSimpleCrudTaskbar.grid_regular" : "snkSimpleCrudTaskbar.form_regular";
441
+ return this._currentViewMode === VIEW_MODE.GRID ? TASKBAR_ID.GRID_REGULAR : TASKBAR_ID.FORM_REGULAR;
408
442
  }
409
443
  initInMemoryDataUnit() {
410
444
  this._inMemoryLoader = new InMemoryLoader(this._metadata, undefined, { autoLoad: this.autoLoad });
@@ -790,6 +824,15 @@ const SnkSimpleCrud = class {
790
824
  "gridLegacyConfigName": ["observeGridLegacy"]
791
825
  }; }
792
826
  };
827
+ var TASKBAR_ID;
828
+ (function (TASKBAR_ID) {
829
+ TASKBAR_ID["FORM_REGULAR"] = "snkSimpleCrudTaskbar.form_regular";
830
+ TASKBAR_ID["GRID_REGULAR"] = "snkSimpleCrudTaskbar.grid_regular";
831
+ TASKBAR_ID["FORM_SELECTED"] = "snkSimpleCrudTaskbar.form_selected";
832
+ TASKBAR_ID["GRID_SELECTED"] = "snkSimpleCrudTaskbar.grid_selected";
833
+ TASKBAR_ID["FINISH_EDITION"] = "snkSimpleCrudTaskbar.finish_edition";
834
+ TASKBAR_ID["MULTIPLE_EDITION"] = "snkSimpleCrudTaskbar.multiple_edition";
835
+ })(TASKBAR_ID || (TASKBAR_ID = {}));
793
836
  SnkSimpleCrud.style = snkSimpleCrudCss;
794
837
 
795
838
  export { SnkSimpleCrud as snk_simple_crud };
@@ -1,7 +1,7 @@
1
1
  import { r as registerInstance, c as createEvent, h, H as Host, g as getElement } from './index-a7d3d3f1.js';
2
2
  import { Action, LockManager, LockManagerOperation, SilentException, StringUtils, ApplicationContext, OVERFLOWED_CLASS_NAME, OverflowWatcher, OverflowDirection, ElementIDUtils } from '@sankhyalabs/core';
3
3
  import { A as AuthorizationConfig } from './AuthorizationConfig-dcbd207a.js';
4
- import { T as TaskbarElement, V as VisibleWhenForbidden, A as AuthorizationElements, b as buildElem, a as buildCustomButton } from './taskbar-elements-d2353c64.js';
4
+ import { T as TaskbarElement, V as VisibleWhenForbidden, A as AuthorizationElements, b as buildElem, a as buildCustomButton } from './taskbar-elements-c62b6c66.js';
5
5
  import { P as PresentationMode } from './index-b40568ff.js';
6
6
  import './index-bdf75557.js';
7
7
 
@@ -18,6 +18,7 @@ const SnkTaskbar = class {
18
18
  this.ACTIONS_BUTTON_TAG = 'TASKBAR-ACTIONS-BUTTON';
19
19
  this.NOT_OVERFLOW_ELEMENTS = ["moreOptions", "dataExporter_snkDataExporter", "actionsButton_snkActionsButton"];
20
20
  this._titleKeyByElement = {
21
+ [TaskbarElement.UPDATE_MULTIPLE]: "snkTaskbar.titleUpdateMultiple",
21
22
  [TaskbarElement.UPDATE]: "snkTaskbar.titleUpdate",
22
23
  [TaskbarElement.PREVIOUS]: "snkTaskbar.titlePrevious",
23
24
  [TaskbarElement.NEXT]: "snkTaskbar.titleNext",
@@ -21,6 +21,7 @@ var TaskbarElement;
21
21
  TaskbarElement["DATA_EXPORTER"] = "DATA_EXPORTER";
22
22
  TaskbarElement["ATTACH"] = "ATTACH";
23
23
  TaskbarElement["ACTIONS_BUTTON"] = "ACTIONS_BUTTON";
24
+ TaskbarElement["UPDATE_MULTIPLE"] = "UPDATE_MULTIPLE";
24
25
  })(TaskbarElement || (TaskbarElement = {}));
25
26
  var AuthorizationElements;
26
27
  (function (AuthorizationElements) {
@@ -60,6 +61,8 @@ const buildElem = (element, className, dataElementId, getTitle, action, isEnable
60
61
  return iconButton("sync", element, className, dataElementId, title, action, isEnabled);
61
62
  case TaskbarElement.UPDATE:
62
63
  return iconButton("edit", element, className, dataElementId, title, action, isEnabled);
64
+ case TaskbarElement.UPDATE_MULTIPLE:
65
+ return iconButton("edit-table", element, className, dataElementId, title, action, isEnabled);
63
66
  case TaskbarElement.CLONE:
64
67
  return iconButton("copy", element, className, dataElementId, title, action, isEnabled);
65
68
  case TaskbarElement.REMOVE:
@@ -1 +1 @@
1
- import{r as t,c as i,f as s,h as e,H as a}from"./p-d2d301a6.js";import{Action as o}from"@sankhyalabs/core";import{S as h}from"./p-ebdb9d89.js";import{FormMetadata as n,buildFormMetadata as r}from"@sankhyalabs/ezui/dist/collection/utils/form";import"./p-fbba7e3d.js";import"./p-6dd38d7b.js";import{P as d}from"./p-0f3698af.js";import"@sankhyalabs/ezui/dist/collection/utils/constants";import"@sankhyalabs/core/dist/dataunit/metadata/UnitMetadata";import"./p-a8be1d67.js";import"./p-ff1990ad.js";import"./p-601b252b.js";import{V as l}from"./p-9261d8a0.js";import{T as c}from"./p-3fc82614.js";import{S as u}from"./p-92778d5a.js";import{S as m}from"./p-17425c72.js";import"./p-03b68a74.js";import"./p-8d884fab.js";import"@sankhyalabs/ezui/dist/collection/components/ez-grid/utils";import"@sankhyalabs/core/dist/utils/SortingUtils";import"./p-688dcb4c.js";import"./p-6dc031de.js";import"./p-23736d75.js";import"@sankhyalabs/core/dist/dataunit/DataUnit";class v{constructor(t,i,s){this._parentGuide=t,this._formMetadata=i,this._dataUnit=s}get id(){return this._parentGuide.id}buildGuideItem(t){const i=Object.assign({},this._parentGuide);delete i.expanded,delete i.children;const s=this._dataUnit.getSelectedRecord();if(!s)return i;const e=this._dataUnit.isNewRecord(s.__record__id__),a=Array.from(this._formMetadata.getAllSheets().values()).map((i=>{const{name:s,label:a}=i,o=null!=n.getDetailName(s.split("::").pop()),h=o&&e,r=this._parentGuide.id,d=o?`${r}::${s}`:`${r}__FORM:${s}`;return o&&t.has(d)&&!h?t.get(d).buildGuideItem(t):{id:d,label:a,disabled:h,tooltip:h?"Finalize o cadastro para ter acesso a esta guia.":void 0}})),o=a.shift();return o.label=e?"Novo Registro":s.__record__label__,o.children=a,i.children=[o],i}}const p=class{constructor(s){t(this,s),this.snkDetailGuidesChange=i(this,"snkDetailGuidesChange",7),this.snkSwitchGuide=i(this,"snkSwitchGuide",7),this.formItemsReady=i(this,"formItemsReady",7),this._disabledButtons=void 0,this._currentView=void 0,this.attachmentRegisterKey=void 0,this.formConfigManager=void 0,this.dataUnitName=void 0,this.resourceID=void 0,this.guideItemPath=void 0,this.entityName=void 0,this.label=void 0,this.dataUnit=void 0,this.selectedForm=void 0,this.dataState=void 0,this.messagesBuilder=void 0,this.branchGuide=void 0,this.canEdit=!0,this.taskbarCustomContainerId=void 0,this.customEditors=void 0,this.customRenders=void 0,this.presentationMode=d.SECONDARY}observeDataUnit(t,i){null==t||t.subscribe(this.dataUnitActionHandler.bind(this)),null==i||i.unsubscribe(this.dataUnitActionHandler)}observerDataState(t,i){const s=!(null==i?void 0:i.insertionMode)&&(null==t?void 0:t.insertionMode),e=(null==i?void 0:i.insertionMode)&&!(null==t?void 0:t.insertionMode);if((s||e)&&this.loadMetadata(),null==this._formMetadata)return;const a=null==t?void 0:t.selectedRecord,o=null==i?void 0:i.selectedRecord;(null==a?void 0:a.__record__id__)!==(null==o?void 0:o.__record__id__)&&this.snkDetailGuidesChange.emit(new v(this.branchGuide,this._formMetadata,this.dataUnit)),s&&setTimeout((()=>{this.changeViewMode(l.FORM)}),0),e&&this.changeViewMode(l.GRID);const h=[];this.dataState.hasPrevious||h.push(c.PREVIOUS),this.dataState.hasNext||h.push(c.NEXT),this.dataState.insertionMode&&h.push(c.INSERT),this._disabledButtons=h}async changeViewMode(t){this.emitSwitchEvent(t)}async configGrid(){this._snkGrid&&this._snkGrid.showConfig()}async showUp(){this._snkFormView&&this._snkFormView.showUp(),this._snkGrid&&this._snkGrid.scrollIntoView({behavior:"smooth",block:"start"})}async addCustomEditor(t,i){var s;const e=this.normalizeBranchGuideId(null===(s=this.branchGuide)||void 0===s?void 0:s.id);this._snkGrid.addCustomEditor(t,i,e),this._snkFormView.addCustomEditor(t,i,e)}async observerPropsCustomEditor(t){for(const i in t)await this.addCustomEditor(i,t[i])}async addGridCustomRender(t,i){var s;const e=this.normalizeBranchGuideId(null===(s=this.branchGuide)||void 0===s?void 0:s.id);await this._snkGrid.addGridCustomRender(t,i,e)}onContentCardChanged(t){u.updateContentCard(t.detail.formName,t.detail.cardConfig,t.detail.propertyChanged,this.formConfigManager).then((()=>s(this))),t.stopPropagation()}async observeCustomRenders(t){for(const i in t){const s=t[i];await this.addGridCustomRender(i,s)}}updateLabel(){const t=this.guideItemPath?this.guideItemPath.length:0;if(t>0){const i=t>0?this.guideItemPath.map((t=>t.label)):void 0;this.label=i.pop(),this._levelPath=i.length>0?i.join(" / "):void 0}else this.label="",this._levelPath=void 0}getFormGuideId(t){var i;if(!t){if(null==(null===(i=this.dataState)||void 0===i?void 0:i.selectedRecord))return;const s=Array.from(this._formMetadata.getAllSheets().keys());if(!s||0==s.length)return;t=s[0]}return`${this.stripFormPattern(this.branchGuide.id)}__FORM:${t}`}stripFormPattern(t){return t.replace(p.REGEX_FORM_ID,"")}loadMetadata(){if(!this.dataUnit)return;if(!this.formConfigManager.isLoaded)return;const t=this.formConfigManager.getConfig(this.dataUnit);this._formMetadata=r(null==t||0===t.fields.length?void 0:t,this.dataUnit,!0)}dataUnitReadyHandler(t){this.dataUnit=t.detail,this.loadMetadata()}updateViewStack(t){var i,s;this._viewStack=t,this._currentView=this.selectedForm?1:0,null===(s=null===(i=this._viewStack)||void 0===i?void 0:i.show)||void 0===s||s.call(i,this._currentView)}getFormFields(){return this.selectedForm&&this._formMetadata?this._formMetadata.getSheet(this.selectedForm).fields:[]}emitSwitchEvent(t){const i=t===l.GRID?this.stripFormPattern(this.branchGuide.id):this.getFormGuideId();i&&this.snkSwitchGuide.emit(i)}handleAttachBack(){this._viewStack.show(l.GRID)}executeActionHandler(t){t.detail===c.GRID_MODE&&(this.emitSwitchEvent(l.GRID),t.stopPropagation()),t.detail!==c.FORM_MODE&&t.detail!==c.UPDATE||(this.emitSwitchEvent(l.FORM),t.stopPropagation()),t.detail===c.ATTACH&&(this._viewStack.show(l.ATTACHMENT),t.stopPropagation())}async getAttachmentRegisterKey(){if(this._snkDataUnit)return(await this._snkDataUnit.getSelectedRecordsIDsInfo()).map((({value:t})=>t)).join("_")}async handleDataStateChange({detail:t}){this.dataState=t,void 0!==t.selectedRecord&&this._snkDataUnit&&(this.attachmentRegisterKey=await this.getAttachmentRegisterKey())}componentWillLoad(){this._configName=`dynaform.${this.entityName}`,this.formConfigManager=new h(this._configName,this.resourceID,(()=>this.loadMetadata()),this.dataUnit),this.formConfigManager.loadConfig(),null==this.messagesBuilder&&(this.messagesBuilder=new m(this.entityName))}async componentDidLoad(){await this.observerPropsCustomEditor(this.customEditors),await this.observeCustomRenders(this.customRenders)}async dataUnitActionHandler(t){t.type===o.FIELD_INVALIDATED&&this.addErrorBadgeToBranchGuide()}addErrorBadgeToBranchGuide(){this.branchGuide=Object.assign(Object.assign({},this.branchGuide),{badge:"error"}),this.snkDetailGuidesChange.emit(new v(this.branchGuide,this._formMetadata,this.dataUnit))}normalizeBranchGuideId(t){return null==t?void 0:t.replace(/child\[(.*?)\]/g,"$1").replace(/::/g,">")}render(){return this.updateLabel(),e(a,null,e("snk-data-unit",{ref:t=>this._snkDataUnit=t,dataUnitName:`${this.dataUnitName}`,onDataUnitReady:t=>this.dataUnitReadyHandler(t),entityName:this.entityName,onDataStateChange:this.handleDataStateChange.bind(this),ignoreSaveMessage:this._currentView===l.GRID,messagesBuilder:this.messagesBuilder,configName:this._configName},e("ez-view-stack",{ref:t=>this.updateViewStack(t)},e("stack-item",null,e("div",{class:"ez-box ez-box--shadow grid-container"},e("div",{class:"ez-title--primary ez-size-width--full ez-padding--large detail-header"},e("div",{class:"ez-flex ez-text ez-text--bold ez-flex--justify-start ez-flex--align-items-center"},this._levelPath?e("span",{class:"level-path"},this._levelPath+" /"):void 0,this.label)),e("snk-grid",{class:"ez-size-width--full",ref:t=>this._snkGrid=t,configName:this._configName,messagesBuilder:this.messagesBuilder,onGridDoubleClick:()=>this.emitSwitchEvent(l.FORM),onActionClick:t=>this.executeActionHandler(t),presentationMode:this.presentationMode,canEdit:this.canEdit,isDetail:!0,taskbarCustomContainerId:this.taskbarCustomContainerId,gridHeaderCustomSlotId:"DETAIL_GRID_HEADER_CUSTOM_ELEMENTS",topTaskbarCustomSlotId:"DETAIL_GRID_TASKBAR_CUSTOM_ELEMENTS",outlineMode:!1}))),e("stack-item",null,e("snk-form-view",{ref:t=>this._snkFormView=t,canExpand:!1,canFix:!1,name:this.selectedForm,formMetadata:this._formMetadata,dataUnit:this.dataUnit,fields:this.getFormFields(),label:this.label,levelPath:this._levelPath,onFormItemsReady:({detail:t})=>this.formItemsReady.emit(t)},e("snk-taskbar",{key:"guideViewerTaskbar",class:"form-taskbar","data-element-id":"guideViewer",configName:this._configName,messagesBuilder:this.messagesBuilder,disabledButtons:this._disabledButtons,buttons:"INSERT,PREVIOUS,NEXT,DIVIDER,CLONE,REMOVE,MORE_OPTIONS,DIVIDER,GRID_MODE,CONFIGURATOR",primaryButton:"INSERT",presentationMode:this.presentationMode,onActionClick:t=>this.executeActionHandler(t),dataUnit:this.dataUnit,resourceID:this.resourceID,customContainerId:this.taskbarCustomContainerId,customSlotId:"DETAIL_TASKBAR_CUSTOM_ELEMENTS"},e("slot",{name:"DETAIL_TASKBAR_CUSTOM_ELEMENTS"})))),e("stack-item",null,e("snk-attach",{registerKey:this.attachmentRegisterKey,messagesBuilder:this.messagesBuilder,entityName:this.entityName,onBack:this.handleAttachBack.bind(this)})))))}static get watchers(){return{dataUnit:["observeDataUnit"],dataState:["observerDataState"],customEditors:["observerPropsCustomEditor"],customRenders:["observeCustomRenders"]}}};p.REGEX_FORM_ID=/__FORM:[^:]+/g,p.style=".sc-snk-detail-view-h{display:flex;row-gap:24px;flex-direction:column;width:100%;height:100%}.level-path.sc-snk-detail-view{color:var(--color--title-primary, #2B3A54);font-weight:var(--text-weight--medium, 400);padding-right:3px}.form-taskbar.sc-snk-detail-view{padding-bottom:var(--space--medium)}.grid-container.sc-snk-detail-view{background-color:#FFF;min-height:100px;height:100%}.detail-header.sc-snk-detail-view{padding-bottom:0}snk-data-unit.sc-snk-detail-view{flex:1}snk-grid.sc-snk-detail-view{height:calc(100% - 43px)}";export{p as snk_detail_view}
1
+ import{r as t,c as i,f as s,h as e,H as a}from"./p-d2d301a6.js";import{Action as o}from"@sankhyalabs/core";import{S as h}from"./p-ebdb9d89.js";import{FormMetadata as n,buildFormMetadata as r}from"@sankhyalabs/ezui/dist/collection/utils/form";import"./p-fbba7e3d.js";import"./p-6dd38d7b.js";import{P as d}from"./p-0f3698af.js";import"@sankhyalabs/ezui/dist/collection/utils/constants";import"@sankhyalabs/core/dist/dataunit/metadata/UnitMetadata";import"./p-7993b2e3.js";import"./p-ff1990ad.js";import"./p-601b252b.js";import{V as l}from"./p-9261d8a0.js";import{T as c}from"./p-fb0f0087.js";import{S as u}from"./p-41da5310.js";import{S as m}from"./p-80f8c22c.js";import"./p-03b68a74.js";import"./p-8d884fab.js";import"@sankhyalabs/ezui/dist/collection/components/ez-grid/utils";import"@sankhyalabs/core/dist/utils/SortingUtils";import"./p-688dcb4c.js";import"./p-6dc031de.js";import"./p-23736d75.js";import"@sankhyalabs/core/dist/dataunit/DataUnit";class v{constructor(t,i,s){this._parentGuide=t,this._formMetadata=i,this._dataUnit=s}get id(){return this._parentGuide.id}buildGuideItem(t){const i=Object.assign({},this._parentGuide);delete i.expanded,delete i.children;const s=this._dataUnit.getSelectedRecord();if(!s)return i;const e=this._dataUnit.isNewRecord(s.__record__id__),a=Array.from(this._formMetadata.getAllSheets().values()).map((i=>{const{name:s,label:a}=i,o=null!=n.getDetailName(s.split("::").pop()),h=o&&e,r=this._parentGuide.id,d=o?`${r}::${s}`:`${r}__FORM:${s}`;return o&&t.has(d)&&!h?t.get(d).buildGuideItem(t):{id:d,label:a,disabled:h,tooltip:h?"Finalize o cadastro para ter acesso a esta guia.":void 0}})),o=a.shift();return o.label=e?"Novo Registro":s.__record__label__,o.children=a,i.children=[o],i}}const p=class{constructor(s){t(this,s),this.snkDetailGuidesChange=i(this,"snkDetailGuidesChange",7),this.snkSwitchGuide=i(this,"snkSwitchGuide",7),this.formItemsReady=i(this,"formItemsReady",7),this._disabledButtons=void 0,this._currentView=void 0,this.attachmentRegisterKey=void 0,this.formConfigManager=void 0,this.dataUnitName=void 0,this.resourceID=void 0,this.guideItemPath=void 0,this.entityName=void 0,this.label=void 0,this.dataUnit=void 0,this.selectedForm=void 0,this.dataState=void 0,this.messagesBuilder=void 0,this.branchGuide=void 0,this.canEdit=!0,this.taskbarCustomContainerId=void 0,this.customEditors=void 0,this.customRenders=void 0,this.presentationMode=d.SECONDARY}observeDataUnit(t,i){null==t||t.subscribe(this.dataUnitActionHandler.bind(this)),null==i||i.unsubscribe(this.dataUnitActionHandler)}observerDataState(t,i){const s=!(null==i?void 0:i.insertionMode)&&(null==t?void 0:t.insertionMode),e=(null==i?void 0:i.insertionMode)&&!(null==t?void 0:t.insertionMode);if((s||e)&&this.loadMetadata(),null==this._formMetadata)return;const a=null==t?void 0:t.selectedRecord,o=null==i?void 0:i.selectedRecord;(null==a?void 0:a.__record__id__)!==(null==o?void 0:o.__record__id__)&&this.snkDetailGuidesChange.emit(new v(this.branchGuide,this._formMetadata,this.dataUnit)),s&&setTimeout((()=>{this.changeViewMode(l.FORM)}),0),e&&this.changeViewMode(l.GRID);const h=[];this.dataState.hasPrevious||h.push(c.PREVIOUS),this.dataState.hasNext||h.push(c.NEXT),this.dataState.insertionMode&&h.push(c.INSERT),this._disabledButtons=h}async changeViewMode(t){this.emitSwitchEvent(t)}async configGrid(){this._snkGrid&&this._snkGrid.showConfig()}async showUp(){this._snkFormView&&this._snkFormView.showUp(),this._snkGrid&&this._snkGrid.scrollIntoView({behavior:"smooth",block:"start"})}async addCustomEditor(t,i){var s;const e=this.normalizeBranchGuideId(null===(s=this.branchGuide)||void 0===s?void 0:s.id);this._snkGrid.addCustomEditor(t,i,e),this._snkFormView.addCustomEditor(t,i,e)}async observerPropsCustomEditor(t){for(const i in t)await this.addCustomEditor(i,t[i])}async addGridCustomRender(t,i){var s;const e=this.normalizeBranchGuideId(null===(s=this.branchGuide)||void 0===s?void 0:s.id);await this._snkGrid.addGridCustomRender(t,i,e)}onContentCardChanged(t){u.updateContentCard(t.detail.formName,t.detail.cardConfig,t.detail.propertyChanged,this.formConfigManager).then((()=>s(this))),t.stopPropagation()}async observeCustomRenders(t){for(const i in t){const s=t[i];await this.addGridCustomRender(i,s)}}updateLabel(){const t=this.guideItemPath?this.guideItemPath.length:0;if(t>0){const i=t>0?this.guideItemPath.map((t=>t.label)):void 0;this.label=i.pop(),this._levelPath=i.length>0?i.join(" / "):void 0}else this.label="",this._levelPath=void 0}getFormGuideId(t){var i;if(!t){if(null==(null===(i=this.dataState)||void 0===i?void 0:i.selectedRecord))return;const s=Array.from(this._formMetadata.getAllSheets().keys());if(!s||0==s.length)return;t=s[0]}return`${this.stripFormPattern(this.branchGuide.id)}__FORM:${t}`}stripFormPattern(t){return t.replace(p.REGEX_FORM_ID,"")}loadMetadata(){if(!this.dataUnit)return;if(!this.formConfigManager.isLoaded)return;const t=this.formConfigManager.getConfig(this.dataUnit);this._formMetadata=r(null==t||0===t.fields.length?void 0:t,this.dataUnit,!0)}dataUnitReadyHandler(t){this.dataUnit=t.detail,this.loadMetadata()}updateViewStack(t){var i,s;this._viewStack=t,this._currentView=this.selectedForm?1:0,null===(s=null===(i=this._viewStack)||void 0===i?void 0:i.show)||void 0===s||s.call(i,this._currentView)}getFormFields(){return this.selectedForm&&this._formMetadata?this._formMetadata.getSheet(this.selectedForm).fields:[]}emitSwitchEvent(t){const i=t===l.GRID?this.stripFormPattern(this.branchGuide.id):this.getFormGuideId();i&&this.snkSwitchGuide.emit(i)}handleAttachBack(){this._viewStack.show(l.GRID)}executeActionHandler(t){t.detail===c.GRID_MODE&&(this.emitSwitchEvent(l.GRID),t.stopPropagation()),t.detail!==c.FORM_MODE&&t.detail!==c.UPDATE||(this.emitSwitchEvent(l.FORM),t.stopPropagation()),t.detail===c.ATTACH&&(this._viewStack.show(l.ATTACHMENT),t.stopPropagation())}async getAttachmentRegisterKey(){if(this._snkDataUnit)return(await this._snkDataUnit.getSelectedRecordsIDsInfo()).map((({value:t})=>t)).join("_")}async handleDataStateChange({detail:t}){this.dataState=t,void 0!==t.selectedRecord&&this._snkDataUnit&&(this.attachmentRegisterKey=await this.getAttachmentRegisterKey())}componentWillLoad(){this._configName=`dynaform.${this.entityName}`,this.formConfigManager=new h(this._configName,this.resourceID,(()=>this.loadMetadata()),this.dataUnit),this.formConfigManager.loadConfig(),null==this.messagesBuilder&&(this.messagesBuilder=new m(this.entityName))}async componentDidLoad(){await this.observerPropsCustomEditor(this.customEditors),await this.observeCustomRenders(this.customRenders)}async dataUnitActionHandler(t){t.type===o.FIELD_INVALIDATED&&this.addErrorBadgeToBranchGuide()}addErrorBadgeToBranchGuide(){this.branchGuide=Object.assign(Object.assign({},this.branchGuide),{badge:"error"}),this.snkDetailGuidesChange.emit(new v(this.branchGuide,this._formMetadata,this.dataUnit))}normalizeBranchGuideId(t){return null==t?void 0:t.replace(/child\[(.*?)\]/g,"$1").replace(/::/g,">")}render(){return this.updateLabel(),e(a,null,e("snk-data-unit",{ref:t=>this._snkDataUnit=t,dataUnitName:`${this.dataUnitName}`,onDataUnitReady:t=>this.dataUnitReadyHandler(t),entityName:this.entityName,onDataStateChange:this.handleDataStateChange.bind(this),ignoreSaveMessage:this._currentView===l.GRID,messagesBuilder:this.messagesBuilder,configName:this._configName},e("ez-view-stack",{ref:t=>this.updateViewStack(t)},e("stack-item",null,e("div",{class:"ez-box ez-box--shadow grid-container"},e("div",{class:"ez-title--primary ez-size-width--full ez-padding--large detail-header"},e("div",{class:"ez-flex ez-text ez-text--bold ez-flex--justify-start ez-flex--align-items-center"},this._levelPath?e("span",{class:"level-path"},this._levelPath+" /"):void 0,this.label)),e("snk-grid",{class:"ez-size-width--full",ref:t=>this._snkGrid=t,configName:this._configName,messagesBuilder:this.messagesBuilder,onGridDoubleClick:()=>this.emitSwitchEvent(l.FORM),onActionClick:t=>this.executeActionHandler(t),presentationMode:this.presentationMode,canEdit:this.canEdit,isDetail:!0,taskbarCustomContainerId:this.taskbarCustomContainerId,gridHeaderCustomSlotId:"DETAIL_GRID_HEADER_CUSTOM_ELEMENTS",topTaskbarCustomSlotId:"DETAIL_GRID_TASKBAR_CUSTOM_ELEMENTS",outlineMode:!1}))),e("stack-item",null,e("snk-form-view",{ref:t=>this._snkFormView=t,canExpand:!1,canFix:!1,name:this.selectedForm,formMetadata:this._formMetadata,dataUnit:this.dataUnit,fields:this.getFormFields(),label:this.label,levelPath:this._levelPath,onFormItemsReady:({detail:t})=>this.formItemsReady.emit(t)},e("snk-taskbar",{key:"guideViewerTaskbar",class:"form-taskbar","data-element-id":"guideViewer",configName:this._configName,messagesBuilder:this.messagesBuilder,disabledButtons:this._disabledButtons,buttons:"INSERT,PREVIOUS,NEXT,DIVIDER,CLONE,REMOVE,MORE_OPTIONS,DIVIDER,GRID_MODE,CONFIGURATOR",primaryButton:"INSERT",presentationMode:this.presentationMode,onActionClick:t=>this.executeActionHandler(t),dataUnit:this.dataUnit,resourceID:this.resourceID,customContainerId:this.taskbarCustomContainerId,customSlotId:"DETAIL_TASKBAR_CUSTOM_ELEMENTS"},e("slot",{name:"DETAIL_TASKBAR_CUSTOM_ELEMENTS"})))),e("stack-item",null,e("snk-attach",{registerKey:this.attachmentRegisterKey,messagesBuilder:this.messagesBuilder,entityName:this.entityName,onBack:this.handleAttachBack.bind(this)})))))}static get watchers(){return{dataUnit:["observeDataUnit"],dataState:["observerDataState"],customEditors:["observerPropsCustomEditor"],customRenders:["observeCustomRenders"]}}};p.REGEX_FORM_ID=/__FORM:[^:]+/g,p.style=".sc-snk-detail-view-h{display:flex;row-gap:24px;flex-direction:column;width:100%;height:100%}.level-path.sc-snk-detail-view{color:var(--color--title-primary, #2B3A54);font-weight:var(--text-weight--medium, 400);padding-right:3px}.form-taskbar.sc-snk-detail-view{padding-bottom:var(--space--medium)}.grid-container.sc-snk-detail-view{background-color:#FFF;min-height:100px;height:100%}.detail-header.sc-snk-detail-view{padding-bottom:0}snk-data-unit.sc-snk-detail-view{flex:1}snk-grid.sc-snk-detail-view{height:calc(100% - 43px)}";export{p as snk_detail_view}