@sankhyalabs/sankhyablocks 8.16.0-dev.3 → 8.16.0-dev.30

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 (204) hide show
  1. package/dist/cjs/{ConfigStorage-942ce74b.js → ConfigStorage-ecc0ed20.js} +3 -2
  2. package/dist/cjs/{IExporterProvider-597949f9.js → ContinuousInsertUtils-807730a8.js} +39 -6
  3. package/dist/cjs/{DataFetcher-313debd8.js → DataFetcher-cadeef8e.js} +21 -15
  4. package/dist/cjs/{RecordIDUtils-3735135c.js → GetSelectedRecordsIDsInfo-bd50caf1.js} +10 -10
  5. package/dist/cjs/{SnkFormConfigManager-1b13bacd.js → SnkFormConfigManager-f1c92f79.js} +74 -20
  6. package/dist/cjs/{SnkMessageBuilder-722b104e.js → SnkMessageBuilder-bae64d0d.js} +7 -3
  7. package/dist/cjs/{auth-fetcher-54f5ff9d.js → auth-fetcher-d68841bc.js} +1 -1
  8. package/dist/cjs/{dataunit-fetcher-688d3f05.js → dataunit-fetcher-f89461c1.js} +46 -18
  9. package/dist/cjs/{field-search-f56aa7d6.js → field-search-68e34bf4.js} +5 -1
  10. package/dist/cjs/{form-config-fetcher-2dd00e5b.js → form-config-fetcher-ed497282.js} +5 -2
  11. package/dist/cjs/loader.cjs.js +1 -1
  12. package/dist/cjs/{pesquisa-fetcher-680e198f.js → pesquisa-fetcher-ca89181c.js} +1 -1
  13. package/dist/cjs/sankhyablocks.cjs.js +1 -1
  14. package/dist/cjs/snk-actions-button_4.cjs.entry.js +17 -14
  15. package/dist/cjs/snk-application.cjs.entry.js +7 -7
  16. package/dist/cjs/snk-attach.cjs.entry.js +37 -28
  17. package/dist/cjs/snk-crud.cjs.entry.js +14 -6
  18. package/dist/cjs/snk-data-exporter.cjs.entry.js +9 -9
  19. package/dist/cjs/{snk-data-unit-685272e7.js → snk-data-unit-668dc5e8.js} +42 -22
  20. package/dist/cjs/snk-data-unit.cjs.entry.js +5 -5
  21. package/dist/cjs/snk-detail-view.cjs.entry.js +12 -13
  22. package/dist/cjs/snk-exporter-email-sender.cjs.entry.js +1 -1
  23. package/dist/cjs/snk-filter-bar.cjs.entry.js +37 -25
  24. package/dist/cjs/snk-filter-checkbox-list.cjs.entry.js +1 -1
  25. package/dist/cjs/snk-filter-modal-item.cjs.entry.js +3 -3
  26. package/dist/cjs/snk-form-config.cjs.entry.js +17 -6
  27. package/dist/cjs/snk-form.cjs.entry.js +7 -6
  28. package/dist/cjs/snk-grid.cjs.entry.js +61 -21
  29. package/dist/cjs/{snk-guides-viewer-67605336.js → snk-guides-viewer-68777d37.js} +24 -12
  30. package/dist/cjs/snk-guides-viewer.cjs.entry.js +9 -9
  31. package/dist/cjs/snk-personalized-filter.cjs.entry.js +3 -3
  32. package/dist/cjs/snk-simple-bar.cjs.entry.js +1 -1
  33. package/dist/cjs/snk-simple-crud.cjs.entry.js +64 -26
  34. package/dist/cjs/snk-taskbar.cjs.entry.js +23 -1
  35. package/dist/collection/components/snk-actions-button/actions/index.js +12 -9
  36. package/dist/collection/components/snk-attach/snk-attach.js +24 -15
  37. package/dist/collection/components/snk-attach/structure/fetcher/factory/attach-fetcher-data-unit.factory.js +2 -4
  38. package/dist/collection/components/snk-crud/snk-crud.js +78 -1
  39. package/dist/collection/components/snk-crud/subcomponents/snk-detail-view/snk-detail-view.js +3 -4
  40. package/dist/collection/components/snk-crud/subcomponents/snk-guides-viewer.js +51 -6
  41. package/dist/collection/components/snk-data-exporter/exporter-email-sender/options-step.js +1 -1
  42. package/dist/collection/components/snk-data-exporter/providers/ClientSideExporterProvider.js +1 -1
  43. package/dist/collection/components/snk-data-exporter/providers/ServerSideExporterProvider.js +1 -1
  44. package/dist/collection/components/snk-data-exporter/structure/ItemBuilder.js +2 -2
  45. package/dist/collection/components/snk-data-unit/snk-data-unit.js +57 -20
  46. package/dist/collection/components/snk-filter-bar/filter-item/editors/snk-filter-checkbox-list.js +1 -1
  47. package/dist/collection/components/snk-filter-bar/snk-filter-bar.css +1 -1
  48. package/dist/collection/components/snk-filter-bar/snk-filter-bar.js +59 -21
  49. package/dist/collection/components/snk-form/snk-form.js +2 -2
  50. package/dist/collection/components/snk-form-config/SnkFormConfigManager.js +72 -18
  51. package/dist/collection/components/snk-form-config/snk-form-config.css +8 -3
  52. package/dist/collection/components/snk-form-config/snk-form-config.js +14 -3
  53. package/dist/collection/components/snk-grid/snk-grid.css +2 -0
  54. package/dist/collection/components/snk-grid/snk-grid.js +68 -8
  55. package/dist/collection/components/snk-simple-bar/snk-simple-bar.js +1 -1
  56. package/dist/collection/components/snk-simple-crud/snk-simple-crud.css +0 -1
  57. package/dist/collection/components/snk-simple-crud/snk-simple-crud.js +89 -15
  58. package/dist/collection/components/snk-taskbar/processor/taskbar-processor.js +5 -1
  59. package/dist/collection/components/snk-taskbar/snk-taskbar.js +64 -0
  60. package/dist/collection/lib/DefaultCustomFormatters/RmPrecisionCustomValueFormatter.js +3 -3
  61. package/dist/collection/lib/configs/ConfigStorage.js +1 -0
  62. package/dist/collection/lib/dataUnit/InMemoryLoader.js +2 -4
  63. package/dist/collection/lib/dataUnit/dataUnitInMemoryUtils.js +34 -9
  64. package/dist/collection/lib/http/data-fetcher/DataFetcher.js +22 -16
  65. package/dist/collection/lib/http/data-fetcher/fetchers/AttachFetcher/anexo-sistema-fetcher.js +7 -5
  66. package/dist/collection/lib/http/data-fetcher/fetchers/data-unit/loadstrategy/DatasetStrategy.js +9 -2
  67. package/dist/collection/lib/http/data-fetcher/fetchers/form-config-fetcher.js +4 -1
  68. package/dist/collection/lib/message/resources/snk-data-unit.msg.js +1 -1
  69. package/dist/collection/lib/message/resources/snk-exporter.msg.js +1 -1
  70. package/dist/collection/lib/message/resources/snk-grid.msg.js +5 -1
  71. package/dist/collection/lib/utils/ContinuousInsertUtils.js +31 -0
  72. package/dist/collection/{components/snk-data-exporter/utils/RecordIDUtils.js → lib/utils/GetSelectedRecordsIDsInfo.js} +9 -9
  73. package/dist/components/ConfigStorage.js +1 -0
  74. package/dist/components/{IExporterProvider.js → ContinuousInsertUtils.js} +40 -5
  75. package/dist/components/DataFetcher.js +22 -16
  76. package/dist/{esm/RecordIDUtils-87d02110.js → components/GetSelectedRecordsIDsInfo.js} +10 -10
  77. package/dist/components/SnkFormConfigManager.js +72 -18
  78. package/dist/components/SnkMessageBuilder.js +7 -3
  79. package/dist/components/dataunit-fetcher.js +45 -15
  80. package/dist/components/form-config-fetcher.js +4 -1
  81. package/dist/components/snk-actions-button2.js +12 -9
  82. package/dist/components/snk-attach2.js +33 -24
  83. package/dist/components/snk-crud.js +12 -1
  84. package/dist/components/snk-data-exporter2.js +2 -2
  85. package/dist/components/snk-data-unit2.js +44 -60
  86. package/dist/components/snk-detail-view2.js +24 -11
  87. package/dist/components/snk-exporter-email-sender2.js +1 -1
  88. package/dist/components/snk-filter-bar2.js +35 -22
  89. package/dist/components/snk-filter-checkbox-list.js +1 -1
  90. package/dist/components/snk-form-config2.js +15 -4
  91. package/dist/components/snk-form.js +2 -2
  92. package/dist/components/snk-grid2.js +53 -11
  93. package/dist/components/snk-simple-bar2.js +1 -1
  94. package/dist/components/snk-simple-crud2.js +57 -15
  95. package/dist/components/snk-taskbar2.js +24 -2
  96. package/dist/esm/{ConfigStorage-86187da3.js → ConfigStorage-7b36d041.js} +3 -2
  97. package/dist/esm/{IExporterProvider-63a188b6.js → ContinuousInsertUtils-1a82a768.js} +40 -8
  98. package/dist/esm/{DataFetcher-c1baf61d.js → DataFetcher-a9c598f2.js} +22 -16
  99. package/dist/esm/GetSelectedRecordsIDsInfo-9fa41508.js +41 -0
  100. package/dist/esm/{SnkFormConfigManager-d4554df9.js → SnkFormConfigManager-139f09fa.js} +74 -20
  101. package/dist/esm/{SnkMessageBuilder-89925609.js → SnkMessageBuilder-6fff4a4c.js} +7 -3
  102. package/dist/esm/{auth-fetcher-039abba3.js → auth-fetcher-749d880f.js} +1 -1
  103. package/dist/esm/{dataunit-fetcher-264191b2.js → dataunit-fetcher-c24c76c6.js} +46 -16
  104. package/dist/esm/{field-search-efbe307f.js → field-search-f8b1d91e.js} +5 -1
  105. package/dist/esm/{form-config-fetcher-30fb808f.js → form-config-fetcher-adbe5d34.js} +5 -2
  106. package/dist/esm/loader.js +1 -1
  107. package/dist/esm/{pesquisa-fetcher-03c8f919.js → pesquisa-fetcher-8edaa8cd.js} +1 -1
  108. package/dist/esm/sankhyablocks.js +1 -1
  109. package/dist/esm/snk-actions-button_4.entry.js +17 -14
  110. package/dist/esm/snk-application.entry.js +7 -7
  111. package/dist/esm/snk-attach.entry.js +37 -28
  112. package/dist/esm/snk-crud.entry.js +14 -6
  113. package/dist/esm/snk-data-exporter.entry.js +9 -9
  114. package/dist/esm/{snk-data-unit-63f83504.js → snk-data-unit-0fdfb6c2.js} +42 -22
  115. package/dist/esm/snk-data-unit.entry.js +5 -5
  116. package/dist/esm/snk-detail-view.entry.js +12 -13
  117. package/dist/esm/snk-exporter-email-sender.entry.js +1 -1
  118. package/dist/esm/snk-filter-bar.entry.js +37 -25
  119. package/dist/esm/snk-filter-checkbox-list.entry.js +1 -1
  120. package/dist/esm/snk-filter-modal-item.entry.js +3 -3
  121. package/dist/esm/snk-form-config.entry.js +17 -6
  122. package/dist/esm/snk-form.entry.js +7 -6
  123. package/dist/esm/snk-grid.entry.js +56 -16
  124. package/dist/esm/{snk-guides-viewer-151f6091.js → snk-guides-viewer-b5dd30e6.js} +24 -12
  125. package/dist/esm/snk-guides-viewer.entry.js +9 -9
  126. package/dist/esm/snk-personalized-filter.entry.js +3 -3
  127. package/dist/esm/snk-simple-bar.entry.js +1 -1
  128. package/dist/esm/snk-simple-crud.entry.js +60 -22
  129. package/dist/esm/snk-taskbar.entry.js +23 -1
  130. package/dist/sankhyablocks/p-0035ad6e.entry.js +1 -0
  131. package/dist/sankhyablocks/{p-df5451c7.js → p-06421fdb.js} +2 -2
  132. package/dist/sankhyablocks/p-16a1dd18.entry.js +1 -0
  133. package/dist/sankhyablocks/p-17425c72.js +1 -0
  134. package/dist/sankhyablocks/p-18ed15f4.entry.js +1 -0
  135. package/dist/sankhyablocks/{p-af8efd95.js → p-1bf06cd3.js} +2 -2
  136. package/dist/sankhyablocks/p-1e4c25e3.entry.js +1 -0
  137. package/dist/sankhyablocks/{p-a1d72395.entry.js → p-212213d9.entry.js} +1 -1
  138. package/dist/sankhyablocks/p-23736d75.js +1 -0
  139. package/dist/sankhyablocks/p-3ae9d08a.js +1 -0
  140. package/dist/sankhyablocks/p-3e3cc017.js +1 -0
  141. package/dist/sankhyablocks/{p-aff76a53.js → p-4d9549cf.js} +2 -2
  142. package/dist/sankhyablocks/p-50779ad3.entry.js +1 -0
  143. package/dist/sankhyablocks/p-5dd8cf4f.js +1 -0
  144. package/dist/sankhyablocks/{p-aaa3ee68.entry.js → p-5f157b09.entry.js} +1 -1
  145. package/dist/sankhyablocks/p-60b29483.entry.js +1 -0
  146. package/dist/sankhyablocks/p-694e1c4a.entry.js +1 -0
  147. package/dist/sankhyablocks/p-7ac7932c.js +60 -0
  148. package/dist/sankhyablocks/p-7dd49d15.js +1 -0
  149. package/dist/sankhyablocks/p-7eef0898.entry.js +1 -0
  150. package/dist/sankhyablocks/{p-82a0bfb0.entry.js → p-a42e7a1e.entry.js} +2 -2
  151. package/dist/sankhyablocks/p-afbb070d.js +1 -0
  152. package/dist/sankhyablocks/p-b9679243.entry.js +1 -0
  153. package/dist/sankhyablocks/p-b9c67e45.entry.js +1 -0
  154. package/dist/sankhyablocks/p-c2e468c9.entry.js +1 -0
  155. package/dist/sankhyablocks/{p-913a9979.js → p-ca5ec380.js} +1 -1
  156. package/dist/sankhyablocks/p-d80a84fd.entry.js +1 -0
  157. package/dist/sankhyablocks/p-d836f72b.entry.js +1 -0
  158. package/dist/sankhyablocks/p-e16e87fc.entry.js +1 -0
  159. package/dist/sankhyablocks/p-eb9f0407.entry.js +1 -0
  160. package/dist/sankhyablocks/p-f3434fc4.js +1 -0
  161. package/dist/sankhyablocks/{p-eae7a817.entry.js → p-fb34e0cf.entry.js} +1 -1
  162. package/dist/sankhyablocks/sankhyablocks.esm.js +1 -1
  163. package/dist/types/components/snk-actions-button/actions/index.d.ts +1 -0
  164. package/dist/types/components/snk-attach/snk-attach.d.ts +1 -0
  165. package/dist/types/components/snk-crud/snk-crud.d.ts +13 -0
  166. package/dist/types/components/snk-crud/subcomponents/snk-guides-viewer.d.ts +11 -0
  167. package/dist/types/components/snk-data-unit/snk-data-unit.d.ts +7 -0
  168. package/dist/types/components/snk-filter-bar/snk-filter-bar.d.ts +5 -0
  169. package/dist/types/components/snk-form-config/SnkFormConfigManager.d.ts +9 -4
  170. package/dist/types/components/snk-grid/snk-grid.d.ts +12 -0
  171. package/dist/types/components/snk-simple-crud/snk-simple-crud.d.ts +14 -0
  172. package/dist/types/components/snk-taskbar/processor/taskbar-processor.d.ts +1 -0
  173. package/dist/types/components/snk-taskbar/snk-taskbar.d.ts +11 -0
  174. package/dist/types/components.d.ts +89 -0
  175. package/dist/types/lib/dataUnit/dataUnitInMemoryUtils.d.ts +12 -2
  176. package/dist/types/lib/http/data-fetcher/fetchers/AttachFetcher/anexo-sistema-fetcher.d.ts +3 -2
  177. package/dist/types/lib/utils/ContinuousInsertUtils.d.ts +10 -0
  178. package/dist/types/lib/utils/GetSelectedRecordsIDsInfo.d.ts +3 -0
  179. package/package.json +2 -2
  180. package/dist/sankhyablocks/p-14a08904.entry.js +0 -1
  181. package/dist/sankhyablocks/p-14b9f964.entry.js +0 -1
  182. package/dist/sankhyablocks/p-219f888d.entry.js +0 -1
  183. package/dist/sankhyablocks/p-3a212712.js +0 -1
  184. package/dist/sankhyablocks/p-3a216b81.entry.js +0 -1
  185. package/dist/sankhyablocks/p-47b60deb.entry.js +0 -1
  186. package/dist/sankhyablocks/p-7505da04.entry.js +0 -1
  187. package/dist/sankhyablocks/p-75f83d1d.entry.js +0 -1
  188. package/dist/sankhyablocks/p-7a337364.js +0 -1
  189. package/dist/sankhyablocks/p-829d4045.js +0 -1
  190. package/dist/sankhyablocks/p-88aa931b.entry.js +0 -1
  191. package/dist/sankhyablocks/p-8fc470e5.entry.js +0 -1
  192. package/dist/sankhyablocks/p-941bf3ef.entry.js +0 -1
  193. package/dist/sankhyablocks/p-9863d682.js +0 -1
  194. package/dist/sankhyablocks/p-b4b21558.entry.js +0 -1
  195. package/dist/sankhyablocks/p-bad55caa.entry.js +0 -1
  196. package/dist/sankhyablocks/p-c053256c.entry.js +0 -1
  197. package/dist/sankhyablocks/p-c2495304.js +0 -1
  198. package/dist/sankhyablocks/p-c5268346.entry.js +0 -1
  199. package/dist/sankhyablocks/p-cefba299.js +0 -1
  200. package/dist/sankhyablocks/p-dc7c9047.js +0 -1
  201. package/dist/sankhyablocks/p-f2809746.entry.js +0 -1
  202. package/dist/sankhyablocks/p-fcac4dfc.js +0 -1
  203. package/dist/sankhyablocks/p-fe79f83a.js +0 -60
  204. package/dist/types/components/snk-data-exporter/utils/RecordIDUtils.d.ts +0 -3
@@ -1,30 +1,30 @@
1
1
  import { JSUtils, DataType } from '@sankhyalabs/core';
2
2
 
3
- const getSelectedIDs = (dataUnit) => {
4
- const selectionInfo = dataUnit.getSelectionInfo();
3
+ function getSelectedRecordsIDsInfo(dataUnit) {
4
+ const selectionInfo = dataUnit === null || dataUnit === void 0 ? void 0 : dataUnit.getSelectionInfo();
5
5
  if (selectionInfo === null || selectionInfo === void 0 ? void 0 : selectionInfo.isAllRecords()) {
6
6
  return [];
7
7
  }
8
8
  const selectedRecordsIDsInfo = [];
9
- const selectedRecords = selectionInfo === null || selectionInfo === void 0 ? void 0 : selectionInfo.recordIds;
9
+ const selectedRecords = selectionInfo === null || selectionInfo === void 0 ? void 0 : selectionInfo.records;
10
10
  if ((selectedRecords === null || selectedRecords === void 0 ? void 0 : selectedRecords.length) > 0) {
11
- selectedRecords.forEach(recordId => {
12
- if (!dataUnit.isNewRecord(recordId)) {
11
+ selectedRecords.forEach(({ __record__id__ }) => {
12
+ if (!dataUnit.isNewRecord(__record__id__)) {
13
13
  /*
14
14
  Esse if foi necessário para tratar corretamente o ID
15
15
  do record quando está sendo utilizado no modo standAlone
16
16
  isso não faz a exportação da grid funcionar no modo standAlone
17
17
  mas deixa de causar erro nas oprações de CRUD.
18
18
  */
19
- if (!JSUtils.isBase64(recordId)) {
19
+ if (!JSUtils.isBase64(__record__id__)) {
20
20
  selectedRecordsIDsInfo.push({
21
21
  name: "__record__id__",
22
22
  type: DataType.TEXT,
23
- value: recordId
23
+ value: __record__id__
24
24
  });
25
25
  return;
26
26
  }
27
- const revertBase64ToObject = JSON.parse(window.atob(recordId));
27
+ const revertBase64ToObject = JSON.parse(window.atob(__record__id__));
28
28
  Object.entries(revertBase64ToObject).forEach(([name, value]) => {
29
29
  const metadataField = dataUnit === null || dataUnit === void 0 ? void 0 : dataUnit.getField(name);
30
30
  if (metadataField == undefined) {
@@ -36,6 +36,6 @@ const getSelectedIDs = (dataUnit) => {
36
36
  });
37
37
  }
38
38
  return selectedRecordsIDsInfo;
39
- };
39
+ }
40
40
 
41
- export { getSelectedIDs as g };
41
+ export { getSelectedRecordsIDsInfo as g };
@@ -1,12 +1,14 @@
1
1
  import { C as ConfigStorage } from './ConfigStorage.js';
2
2
  import { ObjectUtils, StringUtils } from '@sankhyalabs/core';
3
3
  import { F as FormConfigFetcher } from './form-config-fetcher.js';
4
+ import { c as TAB_NAMES } from './constants.js';
4
5
 
5
6
  class SnkFormConfigManager {
6
- constructor(configName, resourceID, onConfigChange) {
7
+ constructor(configName, resourceID, onConfigChange, dataUnit) {
7
8
  this._resourceID = resourceID;
8
9
  this._configName = configName;
9
10
  this._onConfigChange = onConfigChange;
11
+ this._dataUnit = dataUnit;
10
12
  }
11
13
  addFormLegacyConfig(legacyConfigName) {
12
14
  if (this._configName) {
@@ -17,6 +19,7 @@ class SnkFormConfigManager {
17
19
  return new Promise(resolve => {
18
20
  ConfigStorage.loadFormConfig(this._configName, this._resourceID)
19
21
  .then((config) => {
22
+ config = this.buildFormMetadataUITabs(config);
20
23
  this.setConfig(config);
21
24
  resolve(config);
22
25
  })
@@ -25,6 +28,10 @@ class SnkFormConfigManager {
25
28
  });
26
29
  });
27
30
  }
31
+ getEmptyConfig() {
32
+ const config = this.buildFormMetadataUITabs({ fields: [], emptyConfig: true }, true);
33
+ return config;
34
+ }
28
35
  saveConfig(config) {
29
36
  const configToSave = ObjectUtils.copy(config);
30
37
  return new Promise(accept => {
@@ -68,27 +75,36 @@ class SnkFormConfigManager {
68
75
  }
69
76
  return updatingCardConfig;
70
77
  }
71
- getFieldsList(dataUnit, descriptionFilter) {
78
+ hasConfig(config) {
79
+ var _a;
80
+ const currentConfig = config !== null && config !== void 0 ? config : this._config;
81
+ if (currentConfig && ((_a = currentConfig.fields) === null || _a === void 0 ? void 0 : _a.length)) {
82
+ return true;
83
+ }
84
+ return false;
85
+ }
86
+ getFieldsList(descriptionFilter, forceEmptyConfig = false) {
72
87
  var _a;
73
88
  const fields = (_a = this._config) === null || _a === void 0 ? void 0 : _a.fields;
74
- if (fields != undefined && fields.length > 0) {
75
- return fields.map(({ label, name, readOnly, visible, required }) => {
89
+ const hasConfig = this.hasConfig();
90
+ if (hasConfig && !forceEmptyConfig) {
91
+ return fields.map(({ label, name, readOnly, visible, required, tab }) => {
92
+ var _a;
76
93
  if (label == undefined) {
77
- return Object.assign(Object.assign({}, dataUnit.getField(name)), { name,
78
- readOnly,
79
- visible,
80
- required });
94
+ const currentField = (_a = this._dataUnit) === null || _a === void 0 ? void 0 : _a.getField(name);
95
+ return Object.assign(Object.assign({}, currentField), { name: name !== null && name !== void 0 ? name : currentField.name, readOnly: readOnly !== null && readOnly !== void 0 ? readOnly : currentField.readOnly, visible: visible !== null && visible !== void 0 ? visible : currentField.visible, required: required !== null && required !== void 0 ? required : currentField.required, tab: tab });
81
96
  }
82
- return { name, label, readOnly, visible, required };
97
+ return { name, label, readOnly, visible, required, tab };
83
98
  })
84
99
  .filter(field => this.isFieldVisible(field, descriptionFilter));
85
100
  }
86
- if (dataUnit != undefined) {
87
- return dataUnit.metadata.fields
88
- .filter(field => this.isFieldVisible(field, descriptionFilter))
89
- .map(({ label, name, readOnly }) => { return { label, name, readOnly }; });
101
+ if (!this._dataUnit) {
102
+ return [];
90
103
  }
91
- return [];
104
+ const filteredFields = this._dataUnit.metadata.fields
105
+ .filter(field => this.isFieldVisible(field, descriptionFilter))
106
+ .map(({ label, name, readOnly, visible, required, properties }) => ({ label, name, readOnly, visible, required, tab: properties === null || properties === void 0 ? void 0 : properties.UITabName }));
107
+ return filteredFields;
92
108
  }
93
109
  isFieldVisible(field, descriptionFilter) {
94
110
  if (field.visible === false) {
@@ -101,8 +117,8 @@ class SnkFormConfigManager {
101
117
  const normalizedFilter = StringUtils.replaceAccentuatedCharsLower(descriptionFilter.toLocaleLowerCase());
102
118
  return normalizedText.includes(normalizedFilter);
103
119
  }
104
- getInsertionConfig(dataUnit, ignoreReadOnlyFormFields) {
105
- let fields = this.getFieldsList(dataUnit);
120
+ getFormConfig(dataUnit, ignoreReadOnlyFormFields, forceEmptyConfig = false) {
121
+ let fields = this.getFieldsList(undefined, forceEmptyConfig);
106
122
  if (ignoreReadOnlyFormFields) {
107
123
  fields = fields.filter(field => {
108
124
  if (dataUnit) {
@@ -133,8 +149,8 @@ class SnkFormConfigManager {
133
149
  this._onConfigChange(Object.assign({}, this._config));
134
150
  }
135
151
  }
136
- getConfig(insertionMode, dataUnit, ignoreReadOnlyFormFields) {
137
- return insertionMode ? this.getInsertionConfig(dataUnit, ignoreReadOnlyFormFields !== null && ignoreReadOnlyFormFields !== void 0 ? ignoreReadOnlyFormFields : true) : Object.assign({}, this._config);
152
+ getConfig(dataUnit, ignoreReadOnlyFormFields) {
153
+ return this.getFormConfig(dataUnit, ignoreReadOnlyFormFields !== null && ignoreReadOnlyFormFields !== void 0 ? ignoreReadOnlyFormFields : true);
138
154
  }
139
155
  getFormConfigFetcher() {
140
156
  if (this._formConfigFetcher == undefined) {
@@ -155,6 +171,44 @@ class SnkFormConfigManager {
155
171
  async fetchDefaultConfig() {
156
172
  return this.getFormConfigFetcher().fetchDefaultConfig(this._configName, this._resourceID);
157
173
  }
174
+ parseObjectList(object) {
175
+ if (!object) {
176
+ return [];
177
+ }
178
+ return Array.isArray(object) ? object : [object];
179
+ }
180
+ buildFormMetadataUITabs(config, forceEmptyConfig = false) {
181
+ var _a;
182
+ const hasConfig = this.hasConfig(config);
183
+ if (!forceEmptyConfig && (!this._dataUnit || hasConfig)) {
184
+ return config;
185
+ }
186
+ config = this.getFormConfig(this._dataUnit, false, true);
187
+ config.tabs = this.parseObjectList(config.tabs);
188
+ config.emptyConfig = false;
189
+ config.defaultConfiguration = true;
190
+ const fields = this._dataUnit.metadata.fields;
191
+ for (const currentField of fields) {
192
+ const field = config.fields.find(field => field.name === currentField.name);
193
+ const uiTabName = (_a = currentField.properties) === null || _a === void 0 ? void 0 : _a.UITabName;
194
+ if (!uiTabName || uiTabName === TAB_NAMES.main) {
195
+ continue;
196
+ }
197
+ const haveTab = config.tabs.some((tab) => tab.label === uiTabName);
198
+ if (!haveTab) {
199
+ config.tabs.push({
200
+ label: uiTabName,
201
+ name: uiTabName,
202
+ order: 0,
203
+ visible: true,
204
+ });
205
+ }
206
+ if (field) {
207
+ field.tab = uiTabName;
208
+ }
209
+ }
210
+ return config;
211
+ }
158
212
  }
159
213
 
160
214
  export { SnkFormConfigManager as S };
@@ -8,7 +8,7 @@ const snkDataUnitMessages = {
8
8
  },
9
9
  cancelInfo: {
10
10
  clone: "Duplicação descartada!",
11
- insert: "A inclusão descartada!",
11
+ insert: "A inclusão foi descartada!",
12
12
  update: "A edição foi descartada!"
13
13
  },
14
14
  confirm: {
@@ -122,7 +122,7 @@ const snkExporterMessages = {
122
122
  emailSenderOptStep_subtitle: "Primeiro, escolha o formato do arquivo",
123
123
  emailSenderOptStep_lblFormat: "Formato:",
124
124
  emailSenderOptStep_formatPDF: "PDF (.pdf)",
125
- emailSenderOptStep_formatXLSX: "Planilha (.xlsx)",
125
+ emailSenderOptStep_formatXLS: "Planilha (.xls)",
126
126
  emailSenderOptStep_export: "Exportar:",
127
127
  emailSenderOptStep_allData: "Toda a grade",
128
128
  emailSenderOptStep_currentPage: "Somente a página atual",
@@ -245,7 +245,11 @@ const snkConfiguratorMessages = {
245
245
  };
246
246
 
247
247
  const snkGridMessages = {
248
- findColumn: "Busca de colunas"
248
+ findColumn: "Busca de colunas",
249
+ cancelConfirmation: {
250
+ title: "Aviso",
251
+ message: "As alterações realizadas serão descartadas<br/><br/><b>Você realmente gostaria de cancelar?</b>",
252
+ }
249
253
  };
250
254
  const snkGridConfigMessages = {
251
255
  gridConfiguration: "Configuração da Grade",
@@ -235,6 +235,21 @@ function applyFilter(records, dataUnit, filters) {
235
235
  }
236
236
  return records.filter(filterFunction);
237
237
  }
238
+ function buildLoadDataResponse(recordsIn, dataUnit, request) {
239
+ let records = recordsIn ? [...recordsIn] : [];
240
+ records = applyFilter(records, dataUnit, request.filters);
241
+ records = applySorting(records, dataUnit, request.sort);
242
+ const { offset, limit } = request;
243
+ const paginationInfoBuilderParams = {
244
+ recordsLength: records.length,
245
+ offset,
246
+ recordsPerPage: limit,
247
+ };
248
+ return Promise.resolve({
249
+ records: getPagesByRecords(records, offset, limit),
250
+ paginationInfo: buildPaginationInfo(paginationInfoBuilderParams),
251
+ });
252
+ }
238
253
  function applySorting(records, dataUnit, sorting) {
239
254
  if (sorting == undefined || sorting.length == 0) {
240
255
  return records;
@@ -245,18 +260,28 @@ function applySorting(records, dataUnit, sorting) {
245
260
  }
246
261
  return records.sort(sortingFunction);
247
262
  }
248
- function buildPaginationInfo(records, offset = 0, limit = 0) {
249
- if (records === undefined) {
250
- return undefined;
263
+ function hasValidLimitAndOffset(offset, limit) {
264
+ return offset >= 0 && limit >= 0;
265
+ }
266
+ function getPagesByRecords(records, offset = 0, limit = 0) {
267
+ if (!records || !records.length || !hasValidLimitAndOffset(offset, limit))
268
+ return [];
269
+ if (limit === 0 && offset === 0)
270
+ return records;
271
+ return records.slice(offset, offset + limit);
272
+ }
273
+ function buildPaginationInfo({ recordsLength = 0, offset = 0, recordsPerPage = 0 }) {
274
+ if (!recordsLength) {
275
+ return { currentPage: 0, firstRecord: 0, lastRecord: 0, total: 0, hasMore: false };
251
276
  }
252
- const total = (records === null || records === void 0 ? void 0 : records.length) || 0;
253
- const lastRecord = Math.min(offset + limit, total);
277
+ const lastRecordIndex = offset + recordsPerPage;
278
+ const lastRecord = lastRecordIndex ? Math.min(lastRecordIndex, recordsLength) : recordsLength;
254
279
  return {
255
- currentPage: limit === 0 ? 0 : Math.ceil(offset / limit),
256
- firstRecord: offset,
280
+ currentPage: recordsPerPage === 0 ? 0 : Math.ceil(offset / recordsPerPage),
281
+ firstRecord: offset + 1,
257
282
  lastRecord: lastRecord,
258
- total: total,
259
- hasMore: !!(total - lastRecord),
283
+ total: recordsLength,
284
+ hasMore: lastRecord < recordsLength,
260
285
  };
261
286
  }
262
287
 
@@ -342,9 +367,7 @@ class InMemoryLoader {
342
367
  return StringUtils.generateUUID();
343
368
  }
344
369
  inMemoryLoader(dataUnit, request, recordsIn) {
345
- let records = applyFilter(recordsIn, dataUnit, request.filters);
346
- records = applySorting(records, dataUnit, request.sort);
347
- return Promise.resolve({ records, paginationInfo: buildPaginationInfo(records, request.offset, request.limit) });
370
+ return buildLoadDataResponse(recordsIn, dataUnit, request);
348
371
  }
349
372
  metadaLoader() {
350
373
  return Promise.resolve(this._metadata);
@@ -424,12 +447,19 @@ class DatasetStrategy {
424
447
  const records = this.processRecords(dataUnit, fields, responseRecords);
425
448
  const loadingInProgress = pagerId != undefined;
426
449
  const count = loadingInfo.count + records.length;
450
+ const isInsertingNewRecord = dataUnit.hasNewRecord();
427
451
  const needReload = !loadingInProgress && localSorting.length > 0;
452
+ /**
453
+ * Caso precise recarregar dados, porém está no meio de uma inserção, os dados não devem recarregados instantaneamente,
454
+ * Mas sim, sinalizar que o dataUnit está aguardando para der recarregado.
455
+ */
456
+ if (needReload && isInsertingNewRecord) {
457
+ dataUnit.setWaitingToReload(true);
458
+ }
428
459
  return Promise.resolve({
429
460
  records,
430
461
  loadingInfo: Object.assign(Object.assign({}, loadingInfo), { pagerId,
431
- loadingInProgress, total: loadingInProgress ? undefined : count, count,
432
- needReload })
462
+ loadingInProgress, total: loadingInProgress ? undefined : count, count, needReload: needReload && !isInsertingNewRecord })
433
463
  });
434
464
  }
435
465
  catch (error) {
@@ -1052,4 +1082,4 @@ class DataUnitFetcher {
1052
1082
  }
1053
1083
  }
1054
1084
 
1055
- export { DataUnitFetcher as D, InMemoryLoader as I, PreloadManager as P, applyFilter as a, applySorting as b, buildPaginationInfo as c, DatasetStrategy as d, getRecordValue as g };
1085
+ export { DataUnitFetcher as D, InMemoryLoader as I, PreloadManager as P, DatasetStrategy as a, buildLoadDataResponse as b, getRecordValue as g };
@@ -217,7 +217,10 @@ class FormConfigFetcher extends ResourceFetcher {
217
217
  query: this.queryConfig.get("fetchDefaultConfig"),
218
218
  })
219
219
  .then((result) => {
220
- resolve(ObjectUtils.stringToObject((result === null || result === void 0 ? void 0 : result.resource) || ''));
220
+ if (!(result === null || result === void 0 ? void 0 : result.resource)) {
221
+ resolve(null);
222
+ }
223
+ resolve(ObjectUtils.stringToObject(result === null || result === void 0 ? void 0 : result.resource));
221
224
  })
222
225
  .catch((error) => {
223
226
  reject(error);
@@ -9,6 +9,7 @@ import '@sankhyalabs/core/dist/dataunit/metadata/UnitMetadata';
9
9
  import './dataunit-fetcher.js';
10
10
  import './filter-item-type.enum.js';
11
11
  import './form-config-fetcher.js';
12
+ import { g as getSelectedRecordsIDsInfo } from './GetSelectedRecordsIDsInfo.js';
12
13
  import { R as ResourceIDUtils } from './ResourceIDUtils.js';
13
14
 
14
15
  const SERVICE_ACTION_EXECUTE_JAVA = 'ActionButtonsSP.executeJava';
@@ -161,7 +162,6 @@ var RefreshType;
161
162
 
162
163
  const MASTER_ROW_PROPERTY = "__MASTER_ROW__";
163
164
  const ENTITY_NAME_PROPERTY = '__ENTITY_NAME__';
164
- const NUFIN_COLUMN = 'NUFIN';
165
165
  const SERVICE_GET_CONFIGURATIONS = 'SystemUtilsSP.getConf';
166
166
  class Actions {
167
167
  constructor(actionsExecuteInterface, dataUnit, appResourceId) {
@@ -173,6 +173,10 @@ class Actions {
173
173
  this._application = ApplicationContext.getContextValue("__SNK__APPLICATION__");
174
174
  this._appResourceId = appResourceId;
175
175
  }
176
+ getPrimaryKeys() {
177
+ const ids = getSelectedRecordsIDsInfo(this._dataUnit);
178
+ return ids.map(({ name }) => name);
179
+ }
176
180
  apply(action, hasParamsToSave) {
177
181
  this._application.closePopUp();
178
182
  this._actionsExecuteInterface.execute(action, this._dataUnit)
@@ -441,6 +445,7 @@ class Actions {
441
445
  executeAction(execSource);
442
446
  }
443
447
  addRows(execSource) {
448
+ const primaryKeys = this.getPrimaryKeys();
444
449
  const rows = {
445
450
  row: []
446
451
  };
@@ -454,15 +459,13 @@ class Actions {
454
459
  delete sourceRow[MASTER_ROW_PROPERTY];
455
460
  delete sourceRow[ENTITY_NAME_PROPERTY];
456
461
  }
457
- for (const fieldName in sourceRow) {
458
- if (fieldName !== NUFIN_COLUMN)
459
- continue;
460
- if (!row.field) {
461
- row.field = [];
462
- }
462
+ if (!row.field) {
463
+ row.field = [];
464
+ }
465
+ for (const primaryKey of primaryKeys) {
463
466
  row.field.push({
464
- fieldName: fieldName,
465
- $: sourceRow[fieldName]
467
+ fieldName: primaryKey,
468
+ $: sourceRow[primaryKey]
466
469
  });
467
470
  }
468
471
  rows.row.push(row);
@@ -3,7 +3,7 @@ import { ApplicationContext, DataType, Action, UserInterface, StringUtils, DataU
3
3
  import { D as DataFetcher } from './DataFetcher.js';
4
4
  import './pesquisa-fetcher.js';
5
5
  import { S as SaveErrorsEnum } from './ISave.js';
6
- import { P as PreloadManager, a as applyFilter, b as applySorting, c as buildPaginationInfo, D as DataUnitFetcher, I as InMemoryLoader } from './dataunit-fetcher.js';
6
+ import { P as PreloadManager, b as buildLoadDataResponse, D as DataUnitFetcher, I as InMemoryLoader } from './dataunit-fetcher.js';
7
7
  import './filter-item-type.enum.js';
8
8
  import './form-config-fetcher.js';
9
9
  import { V as VIEW_MODE } from './constants.js';
@@ -119,21 +119,23 @@ const SERVICE = {
119
119
  download: "AnexoSistemaSP.baixar",
120
120
  };
121
121
  class AnexoSistemaFetcher {
122
- constructor(entityName, registerKey, dataUnitName) {
122
+ constructor(entityName, dataUnitName) {
123
123
  var _a;
124
124
  this.entityName = entityName;
125
- this.registerKey = registerKey;
126
125
  this.dataUnitName = dataUnitName;
127
126
  this.validateFields = (fields) => {
128
127
  if (!!fields.LINK && !!fields.NOMEARQUIVO)
129
128
  throw new Error(SaveErrorsEnum.LINK_AND_FILE_AT_THE_SAME_TIME);
130
129
  if (!fields.LINK && !fields.NOMEARQUIVO)
131
130
  throw new Error(SaveErrorsEnum.ANY_LINK_OR_FILE_FILLED);
132
- if (!this.registerKey)
131
+ if (!this._registerKey)
133
132
  throw new Error('Register key can not be null');
134
133
  };
135
134
  this.resourceID = (window["resourceID"] || ((_a = window["workspace"]) === null || _a === void 0 ? void 0 : _a.resourceID));
136
135
  }
136
+ set registerKey(registerKey) {
137
+ this._registerKey = registerKey;
138
+ }
137
139
  async save(change) {
138
140
  var _a, _b;
139
141
  let { updatingFields: fields } = change;
@@ -152,7 +154,7 @@ class AnexoSistemaFetcher {
152
154
  nameAttach: fileInfo === null || fileInfo === void 0 ? void 0 : fileInfo.name,
153
155
  link: fields.LINK,
154
156
  nameEntity: this.entityName,
155
- pkEntity: this.registerKey,
157
+ pkEntity: this._registerKey,
156
158
  typeAcess: fields.TIPOACESSO,
157
159
  typeApres: fields.TIPOAPRES,
158
160
  }
@@ -192,7 +194,7 @@ class AnexoSistemaFetcher {
192
194
  nameAttach: fileInfo === null || fileInfo === void 0 ? void 0 : fileInfo.name,
193
195
  link: fields.LINK,
194
196
  nameEntity: this.entityName,
195
- pkEntity: this.registerKey,
197
+ pkEntity: this._registerKey,
196
198
  typeAcess: fields.TIPOACESSO,
197
199
  typeApres: fields.TIPOAPRES,
198
200
  }
@@ -464,9 +466,7 @@ class AttachFetcherDataUnitFactory {
464
466
  });
465
467
  this._records = records;
466
468
  }
467
- let records = applyFilter(this._records, dataUnit, request.filters);
468
- records = applySorting(records, dataUnit, request.sort);
469
- return Promise.resolve({ records, paginationInfo: buildPaginationInfo(records, request.offset, request.limit) });
469
+ return buildLoadDataResponse(this._records, dataUnit, request);
470
470
  }
471
471
  saveLoader(changes, fetcher) {
472
472
  return new Promise((resolve) => {
@@ -663,11 +663,20 @@ const SnkAttach = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
663
663
  this.loadAttachmentDataUnit();
664
664
  }
665
665
  if (oldRegisterKey !== newRegisterKey) {
666
+ if (this._currentFetcher instanceof AnexoSistemaFetcher) {
667
+ this._currentFetcher.registerKey = newRegisterKey;
668
+ }
666
669
  await ((_a = this._currentDataUnit) === null || _a === void 0 ? void 0 : _a.loadData());
667
670
  }
668
671
  }
672
+ getAnexoSistemaFetcherInstance() {
673
+ var _a;
674
+ const anexoSistemaFetcher = new AnexoSistemaFetcher(this.entityName, (_a = this._currentDataUnit) === null || _a === void 0 ? void 0 : _a.name);
675
+ anexoSistemaFetcher.registerKey = this.registerKey;
676
+ return anexoSistemaFetcher;
677
+ }
669
678
  async initAttach() {
670
- var _a, _b, _c, _d, _e, _f;
679
+ var _a, _b, _c, _d, _e;
671
680
  if (!this.fetcherType && !this.registerKey)
672
681
  return;
673
682
  if (!this.fetcherType) {
@@ -675,18 +684,18 @@ const SnkAttach = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
675
684
  }
676
685
  this.returnToGridMode();
677
686
  if (this.fetcherType === "AnexoSistema") {
678
- this._currentFetcher = new AnexoSistemaFetcher(this.entityName, this.registerKey, (_a = this._currentDataUnit) === null || _a === void 0 ? void 0 : _a.name);
679
- (_b = this._currentDataUnitBuilder) === null || _b === void 0 ? void 0 : _b.initLoaders(this._currentDataUnit, this._currentFetcher, this.returnToGridMode.bind(this));
680
- await ((_c = this._currentDataUnit) === null || _c === void 0 ? void 0 : _c.loadData());
687
+ this._currentFetcher = this.getAnexoSistemaFetcherInstance();
688
+ (_a = this._currentDataUnitBuilder) === null || _a === void 0 ? void 0 : _a.initLoaders(this._currentDataUnit, this._currentFetcher, this.returnToGridMode.bind(this));
689
+ await ((_b = this._currentDataUnit) === null || _b === void 0 ? void 0 : _b.loadData());
681
690
  return;
682
691
  }
683
692
  if (this.fetcherType === "Attach") {
684
- const hasMoreOneItem = ((_d = this.registerKey) === null || _d === void 0 ? void 0 : _d.split("_").length) > 1;
693
+ const hasMoreOneItem = ((_c = this.registerKey) === null || _c === void 0 ? void 0 : _c.split("_").length) > 1;
685
694
  if (hasMoreOneItem)
686
695
  return;
687
696
  }
688
- await ((_e = this._currentDataUnit) === null || _e === void 0 ? void 0 : _e.loadMetadata());
689
- await ((_f = this._currentDataUnit) === null || _f === void 0 ? void 0 : _f.loadData(undefined, undefined, true, this.registerKey));
697
+ await ((_d = this._currentDataUnit) === null || _d === void 0 ? void 0 : _d.loadMetadata());
698
+ await ((_e = this._currentDataUnit) === null || _e === void 0 ? void 0 : _e.loadData(undefined, undefined, true, this.registerKey));
690
699
  }
691
700
  /**
692
701
  * Conforme mecanismo de mensagens, é possível customizar as mensagens dos blocos de construção
@@ -745,11 +754,11 @@ const SnkAttach = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
745
754
  }
746
755
  }
747
756
  async loadAnexoSistema() {
748
- var _a, _b, _c;
757
+ var _a, _b;
749
758
  this._currentDataUnit = new DataUnitFetcher().getDataUnit(RESOURCE_ID, DATA_UNIT_NAME);
750
- this._currentFetcher = new AnexoSistemaFetcher(this.entityName, this.registerKey, (_a = this._currentDataUnit) === null || _a === void 0 ? void 0 : _a.name);
759
+ this._currentFetcher = this.getAnexoSistemaFetcherInstance();
751
760
  if (!this._currentDataUnit.metadata) {
752
- await ((_b = this._currentDataUnit) === null || _b === void 0 ? void 0 : _b.loadMetadata());
761
+ await ((_a = this._currentDataUnit) === null || _a === void 0 ? void 0 : _a.loadMetadata());
753
762
  this.crudConfig = Object.assign({}, anexoSistemaCrudConfig);
754
763
  }
755
764
  this.initDataUnitLoaders();
@@ -759,7 +768,7 @@ const SnkAttach = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
759
768
  this._currentDataUnit.addInterceptor({
760
769
  interceptAction: (action) => this._currentDataUnitBuilder.getInterceptions(this._currentDataUnit, action, this._crudElement)
761
770
  });
762
- await ((_c = this._currentDataUnit) === null || _c === void 0 ? void 0 : _c.loadData());
771
+ await ((_b = this._currentDataUnit) === null || _b === void 0 ? void 0 : _b.loadData());
763
772
  this.disableEditFieldsNotInForm();
764
773
  }
765
774
  async loadAttach() {
@@ -785,16 +794,16 @@ const SnkAttach = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
785
794
  }
786
795
  }
787
796
  initDataUnitLoaders() {
788
- var _a, _b, _c;
797
+ var _a, _b;
789
798
  if (this.fetcherType === "AnexoSistema") {
790
- this._currentFetcher = new AnexoSistemaFetcher(this.entityName, this.registerKey, (_a = this._currentDataUnit) === null || _a === void 0 ? void 0 : _a.name);
799
+ this._currentFetcher = this.getAnexoSistemaFetcherInstance();
791
800
  this._currentDataUnitBuilder = new AnexoSistemaDataUnitFactory(this.entityName, this.getMessage.bind(this));
792
- (_b = this._currentDataUnitBuilder) === null || _b === void 0 ? void 0 : _b.initLoaders(this._currentDataUnit, this._currentFetcher, this.returnToGridMode.bind(this));
801
+ (_a = this._currentDataUnitBuilder) === null || _a === void 0 ? void 0 : _a.initLoaders(this._currentDataUnit, this._currentFetcher, this.returnToGridMode.bind(this));
793
802
  }
794
803
  if (this.fetcherType === "Attach") {
795
804
  this._currentFetcher = new AttachFetcher();
796
805
  this._currentDataUnitBuilder = new AttachFetcherDataUnitFactory(this.getMessage.bind(this));
797
- (_c = this._currentDataUnitBuilder) === null || _c === void 0 ? void 0 : _c.initLoaders(this._currentDataUnit, this._currentFetcher, async () => {
806
+ (_b = this._currentDataUnitBuilder) === null || _b === void 0 ? void 0 : _b.initLoaders(this._currentDataUnit, this._currentFetcher, async () => {
798
807
  this.returnToGridMode();
799
808
  await this._currentDataUnit.loadData(undefined, undefined, true, this.registerKey);
800
809
  });
@@ -51,6 +51,7 @@ const SnkCrud$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
51
51
  this.configuratorSave = createEvent(this, "configuratorSave", 7);
52
52
  this.configuratorCancel = createEvent(this, "configuratorCancel", 7);
53
53
  this.formItemsReady = createEvent(this, "formItemsReady", 7);
54
+ this.viewModeChanged = createEvent(this, "viewModeChanged", 7);
54
55
  this._keyDownHandler = async (event) => this.keyDownListener(event);
55
56
  this._viewHistory = [];
56
57
  this._customEditors = new Map();
@@ -79,6 +80,9 @@ const SnkCrud$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
79
80
  this.disablePersonalizedFilter = undefined;
80
81
  this.autoLoad = undefined;
81
82
  this.autoFocus = true;
83
+ this.enableGridInsert = false;
84
+ this.domainMessagesBuilder = undefined;
85
+ this.setCustomFormTitle = undefined;
82
86
  this.customContainerId = `SNK-CRUD-CUSTOM-CONTAINER-${StringUtils.generateUUID()}`;
83
87
  }
84
88
  /**
@@ -187,6 +191,7 @@ const SnkCrud$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
187
191
  else if (viewMode === VIEW_MODE.FORM) {
188
192
  this._guidesViewer.setFocus();
189
193
  }
194
+ this.viewModeChanged.emit(viewMode);
190
195
  }
191
196
  openConfig(viewMode) {
192
197
  this._snkConfigurator.close();
@@ -202,6 +207,8 @@ const SnkCrud$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
202
207
  ElementIDUtils.addIDInfo(this._element, null, dataInfo);
203
208
  }
204
209
  insertionModeHandler() {
210
+ if (this.enableGridInsert)
211
+ return;
205
212
  this.gridToForm();
206
213
  }
207
214
  cancelHandler() {
@@ -250,6 +257,7 @@ const SnkCrud$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
250
257
  this._snkDataUnit = parent;
251
258
  this._snkDataUnit.addEventListener("insertionMode", () => this.insertionModeHandler());
252
259
  this._snkDataUnit.addEventListener("cancelEdition", () => this.cancelHandler());
260
+ this._snkDataUnit.domainMessagesBuilder = this.domainMessagesBuilder;
253
261
  this._dataUnit = this._snkDataUnit.dataUnit;
254
262
  this._dataState = this._snkDataUnit.dataState;
255
263
  if (!this._dataUnit) {
@@ -415,7 +423,7 @@ const SnkCrud$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
415
423
  return;
416
424
  }
417
425
  this._snkDataUnit.ignoreSaveMessage = this._currentViewMode === VIEW_MODE.GRID;
418
- return (h(Host, null, h("ez-view-stack", { ref: (ref) => this._viewStack = ref, "data-element-id": "crud" }, h("stack-item", null, h("snk-grid", { ref: (ref) => this._snkGrid = ref, filterBarTitle: this.filterBarTitle, "data-element-id": "crud_grid", configName: this.configName, onGridDoubleClick: () => this.gridToForm(true), taskbarManager: this.taskbarManager, onActionClick: evt => this.executeAction(evt.detail), messagesBuilder: this.messagesBuilder, actionsList: this.actionsList, statusResolver: this.statusResolver, multipleSelection: this.multipleSelection, presentationMode: this.presentationMode, recordsValidator: this.recordsValidator, selectionToastConfig: this.selectionToastConfig, useEnterLikeTab: this.useEnterLikeTab, canEdit: this._canEdit, resourceID: this._resourceID, disablePersonalizedFilter: this.disablePersonalizedFilter, gridLegacyConfigName: this.gridLegacyConfigName, filterBarLegacyConfigName: this.filterBarLegacyConfigName, autoLoad: this.autoLoad, autoFocus: this.autoFocus }, h("slot", { name: "GRID_TASKBAR_CUSTOM_ELEMENTS" }), h("slot", { name: "GRID_HEADER_CUSTOM_ELEMENTS" }), h("slot", { name: "SnkGridHeader" }), h("slot", { name: "SnkGridFooter" }), h("slot", { name: "SnkGridTaskBar" }))), h("stack-item", null, h("snk-guides-viewer", { ref: ref => this._guidesViewer = ref, entityPath: this._snkDataUnit.entityName, messagesBuilder: this.messagesBuilder, onExit: () => this.setViewMode(VIEW_MODE.GRID), dataState: this._dataState, dataUnit: this._dataUnit, actionsList: this.actionsList, taskbarManager: this.taskbarManager, configName: this.configName, onActionClick: evt => this.executeAction(evt.detail), presentationMode: this.presentationMode, "data-element-id": "crud_form", canEdit: this._canEdit, recordsValidator: this.recordsValidator, resourceID: this._resourceID, detailTaskbarCustomContainerId: this.customContainerId, formLegacyConfigName: this.formLegacyConfigName }, h("slot", { name: "GUIDES_VIEWER_TASKBAR_CUSTOM_ELEMENTS" }), h("slot", { name: "SnkFormTaskBar" }))), h("stack-item", null, h("snk-attach", { registerKey: this.attachmentRegisterKey, messagesBuilder: this.messagesBuilder, entityName: this._snkDataUnit.entityName, onBack: this.backView.bind(this) })), h("snk-configurator", { ref: (ref) => this._snkConfigurator = ref, viewMode: this._currentViewMode, messagesBuilder: this.messagesBuilder, onConfigSelected: (evt) => this.setViewMode(evt.detail), onOpenConfig: (evt) => this.openConfig(evt.detail), showActionButtons: this.showActionButtons, onSave: evt => this.handleConfiguratorEvent(evt, 'SAVE'), onCancel: evt => this.handleConfiguratorEvent(evt, 'CANCEL'), resourceID: this._resourceID, customContainerId: this.customContainerId })), h("div", { id: `${this.customContainerId}` }, h("slot", { name: "SnkConfigContainerSlot" }), h("slot", { name: "DETAIL_GRID_HEADER_CUSTOM_ELEMENTS" }), h("slot", { name: "DETAIL_GRID_TASKBAR_CUSTOM_ELEMENTS" }), h("slot", { name: "DETAIL_TASKBAR_CUSTOM_ELEMENTS" }))));
426
+ return (h(Host, null, h("ez-view-stack", { ref: (ref) => this._viewStack = ref, "data-element-id": "crud" }, h("stack-item", null, h("snk-grid", { ref: (ref) => this._snkGrid = ref, filterBarTitle: this.filterBarTitle, "data-element-id": "crud_grid", configName: this.configName, onGridDoubleClick: () => this.gridToForm(true), taskbarManager: this.taskbarManager, onActionClick: evt => this.executeAction(evt.detail), messagesBuilder: this.messagesBuilder, actionsList: this.actionsList, statusResolver: this.statusResolver, multipleSelection: this.multipleSelection, presentationMode: this.presentationMode, recordsValidator: this.recordsValidator, selectionToastConfig: this.selectionToastConfig, useEnterLikeTab: this.useEnterLikeTab, canEdit: this._canEdit, resourceID: this._resourceID, disablePersonalizedFilter: this.disablePersonalizedFilter, gridLegacyConfigName: this.gridLegacyConfigName, filterBarLegacyConfigName: this.filterBarLegacyConfigName, autoLoad: this.autoLoad, autoFocus: this.autoFocus, enableGridInsert: this.enableGridInsert }, h("slot", { name: "GRID_TASKBAR_CUSTOM_ELEMENTS" }), h("slot", { name: "GRID_HEADER_CUSTOM_ELEMENTS" }), h("slot", { name: "SnkGridHeader" }), h("slot", { name: "SnkGridFooter" }), h("slot", { name: "SnkGridTaskBar" }))), h("stack-item", null, h("snk-guides-viewer", { ref: ref => this._guidesViewer = ref, entityPath: this._snkDataUnit.entityName, messagesBuilder: this.messagesBuilder, onExit: () => this.setViewMode(VIEW_MODE.GRID), dataState: this._dataState, dataUnit: this._dataUnit, actionsList: this.actionsList, taskbarManager: this.taskbarManager, configName: this.configName, onActionClick: evt => this.executeAction(evt.detail), presentationMode: this.presentationMode, "data-element-id": "crud_form", canEdit: this._canEdit, recordsValidator: this.recordsValidator, resourceID: this._resourceID, detailTaskbarCustomContainerId: this.customContainerId, formLegacyConfigName: this.formLegacyConfigName, enableGridInsert: this.enableGridInsert, getCustomTitle: this.setCustomFormTitle }, h("slot", { name: "GUIDES_VIEWER_TASKBAR_CUSTOM_ELEMENTS" }), h("slot", { name: "SnkFormTaskBar" }))), h("stack-item", null, h("snk-attach", { registerKey: this.attachmentRegisterKey, messagesBuilder: this.messagesBuilder, entityName: this._snkDataUnit.entityName, onBack: this.backView.bind(this) })), h("snk-configurator", { ref: (ref) => this._snkConfigurator = ref, viewMode: this._currentViewMode, messagesBuilder: this.messagesBuilder, onConfigSelected: (evt) => this.setViewMode(evt.detail), onOpenConfig: (evt) => this.openConfig(evt.detail), showActionButtons: this.showActionButtons, onSave: evt => this.handleConfiguratorEvent(evt, 'SAVE'), onCancel: evt => this.handleConfiguratorEvent(evt, 'CANCEL'), resourceID: this._resourceID, customContainerId: this.customContainerId })), h("div", { id: `${this.customContainerId}` }, h("slot", { name: "SnkConfigContainerSlot" }), h("slot", { name: "DETAIL_GRID_HEADER_CUSTOM_ELEMENTS" }), h("slot", { name: "DETAIL_GRID_TASKBAR_CUSTOM_ELEMENTS" }), h("slot", { name: "DETAIL_TASKBAR_CUSTOM_ELEMENTS" }))));
419
427
  }
420
428
  get _element() { return this; }
421
429
  static get watchers() { return {
@@ -441,6 +449,9 @@ const SnkCrud$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
441
449
  "disablePersonalizedFilter": [4, "disable-personalized-filter"],
442
450
  "autoLoad": [4, "auto-load"],
443
451
  "autoFocus": [4, "auto-focus"],
452
+ "enableGridInsert": [4, "enable-grid-insert"],
453
+ "domainMessagesBuilder": [1, "domain-messages-builder"],
454
+ "setCustomFormTitle": [16],
444
455
  "_dataUnit": [32],
445
456
  "_dataState": [32],
446
457
  "attachmentRegisterKey": [32],
@@ -124,7 +124,7 @@ class ItemBuilder {
124
124
  getExportToXLS(groupName) {
125
125
  return {
126
126
  id: DataExporterOption.EXPORT_TO_XLS,
127
- label: `${this._getMessage("snkDataExporter.label.spreadsheet")} (.xlsx)`,
127
+ label: `${this._getMessage("snkDataExporter.label.spreadsheet")} (.xls)`,
128
128
  group: groupName
129
129
  };
130
130
  }
@@ -167,7 +167,7 @@ class ItemBuilder {
167
167
  getExportPageToXLS() {
168
168
  return {
169
169
  id: DataExporterOption.EXPORT_PAGE_TO_XLS,
170
- label: `${this._getMessage("snkDataExporter.label.spreadsheet")} (.xlsx)`
170
+ label: `${this._getMessage("snkDataExporter.label.spreadsheet")} (.xls)`
171
171
  };
172
172
  }
173
173
  /**