@sankhyalabs/sankhyablocks 10.1.0-dev.4 → 10.1.0-dev.5

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 (139) hide show
  1. package/dist/cjs/{ConfigStorage-b29e31be.js → ConfigStorage-72f34bd4.js} +2 -2
  2. package/dist/cjs/{DataFetcher-ed9d97ea.js → DataFetcher-991b0349.js} +19 -1
  3. package/dist/cjs/{FormConfigHelper-ebb77625.js → FormConfigHelper-e253a418.js} +42 -0
  4. package/dist/cjs/{ISave-81eb2fbc.js → ISave-ebf6b4ed.js} +1 -1
  5. package/dist/cjs/{SnkFormConfigManager-6838389c.js → SnkFormConfigManager-cdbb29d4.js} +4 -4
  6. package/dist/cjs/{SnkMultiSelectionListDataSource-1e804147.js → SnkMultiSelectionListDataSource-011bec79.js} +4 -4
  7. package/dist/cjs/{auth-fetcher-cc28d847.js → auth-fetcher-c3cac878.js} +1 -1
  8. package/dist/cjs/{dataunit-fetcher-ab1cc071.js → dataunit-fetcher-8bf469e7.js} +1 -1
  9. package/dist/cjs/field-config_2.cjs.entry.js +1 -1
  10. package/dist/cjs/fields-layout.cjs.entry.js +4 -1
  11. package/dist/cjs/fields-selector.cjs.entry.js +1 -1
  12. package/dist/cjs/{form-config-fetcher-f0897eb5.js → form-config-fetcher-c7af90d8.js} +1 -1
  13. package/dist/cjs/guides-configurator.cjs.entry.js +3 -1
  14. package/dist/cjs/loader.cjs.js +1 -1
  15. package/dist/cjs/pesquisa-grid_2.cjs.entry.js +4 -4
  16. package/dist/cjs/sankhyablocks.cjs.js +1 -1
  17. package/dist/cjs/snk-actions-button_9.cjs.entry.js +5 -5
  18. package/dist/cjs/snk-application.cjs.entry.js +6 -6
  19. package/dist/cjs/snk-attach.cjs.entry.js +5 -5
  20. package/dist/cjs/snk-crud.cjs.entry.js +9 -7
  21. package/dist/cjs/snk-data-exporter.cjs.entry.js +5 -5
  22. package/dist/cjs/{snk-data-unit-68992932.js → snk-data-unit-7d587ad5.js} +2 -2
  23. package/dist/cjs/snk-data-unit.cjs.entry.js +3 -3
  24. package/dist/cjs/snk-detail-view.cjs.entry.js +7 -7
  25. package/dist/cjs/snk-filter-bar_4.cjs.entry.js +3 -3
  26. package/dist/cjs/snk-filter-modal-item.cjs.entry.js +3 -3
  27. package/dist/cjs/snk-form_2.cjs.entry.js +22 -9
  28. package/dist/cjs/snk-grid.cjs.entry.js +6 -6
  29. package/dist/cjs/{snk-guides-viewer-8b841753.js → snk-guides-viewer-366d5c32.js} +90 -28
  30. package/dist/cjs/snk-guides-viewer.cjs.entry.js +7 -7
  31. package/dist/cjs/snk-personalized-filter.cjs.entry.js +3 -3
  32. package/dist/cjs/snk-pesquisa.cjs.entry.js +4 -4
  33. package/dist/cjs/snk-simple-crud.cjs.entry.js +7 -7
  34. package/dist/cjs/snk-taskbar.cjs.entry.js +56 -44
  35. package/dist/collection/collection-manifest.json +1 -1
  36. package/dist/collection/components/snk-crud/snk-crud.js +29 -2
  37. package/dist/collection/components/snk-crud/subcomponents/snk-guides-viewer.js +124 -23
  38. package/dist/collection/components/snk-form-config/FormConfigHelper.js +40 -0
  39. package/dist/collection/components/snk-form-config/SnkFormConfigManager.js +3 -3
  40. package/dist/collection/components/snk-form-config/fields-layout/fields-layout.js +3 -0
  41. package/dist/collection/components/snk-form-config/guides-configurator/guides-configurator.js +3 -1
  42. package/dist/collection/components/snk-form-config/snk-form-config.js +43 -6
  43. package/dist/collection/components/snk-taskbar/snk-taskbar.js +58 -44
  44. package/dist/collection/lib/message/resources/en-us/snk-form.msg.js +6 -0
  45. package/dist/collection/lib/message/resources/es-es/snk-form.msg.js +6 -0
  46. package/dist/collection/lib/message/resources/pt-br/snk-form.msg.js +7 -1
  47. package/dist/components/DataFetcher.js +19 -1
  48. package/dist/components/SnkFormConfigManager.js +3 -3
  49. package/dist/components/field-config2.js +41 -1
  50. package/dist/components/fields-layout2.js +3 -0
  51. package/dist/components/guides-configurator2.js +3 -1
  52. package/dist/components/snk-crud.js +6 -2
  53. package/dist/components/snk-detail-view2.js +86 -23
  54. package/dist/components/snk-form-config2.js +19 -5
  55. package/dist/components/snk-taskbar2.js +57 -45
  56. package/dist/esm/{ConfigStorage-13d80e36.js → ConfigStorage-22324b6b.js} +2 -2
  57. package/dist/esm/{DataFetcher-f4ccd9f3.js → DataFetcher-450828a0.js} +19 -1
  58. package/dist/esm/{FormConfigHelper-4e42f0b6.js → FormConfigHelper-e89ca25c.js} +41 -1
  59. package/dist/esm/{ISave-288fa9df.js → ISave-61153166.js} +1 -1
  60. package/dist/esm/{SnkFormConfigManager-3ee2937b.js → SnkFormConfigManager-b5a92e12.js} +4 -4
  61. package/dist/esm/{SnkMultiSelectionListDataSource-5d3a93f2.js → SnkMultiSelectionListDataSource-d7ce2e54.js} +4 -4
  62. package/dist/esm/{auth-fetcher-59ab0c67.js → auth-fetcher-eef9d01e.js} +1 -1
  63. package/dist/esm/{dataunit-fetcher-c4f9f222.js → dataunit-fetcher-da9596f6.js} +1 -1
  64. package/dist/esm/field-config_2.entry.js +1 -1
  65. package/dist/esm/fields-layout.entry.js +4 -1
  66. package/dist/esm/fields-selector.entry.js +1 -1
  67. package/dist/esm/{form-config-fetcher-6a00fe9e.js → form-config-fetcher-8d0a5e1c.js} +1 -1
  68. package/dist/esm/guides-configurator.entry.js +3 -1
  69. package/dist/esm/loader.js +1 -1
  70. package/dist/esm/pesquisa-grid_2.entry.js +4 -4
  71. package/dist/esm/sankhyablocks.js +1 -1
  72. package/dist/esm/snk-actions-button_9.entry.js +5 -5
  73. package/dist/esm/snk-application.entry.js +6 -6
  74. package/dist/esm/snk-attach.entry.js +5 -5
  75. package/dist/esm/snk-crud.entry.js +9 -7
  76. package/dist/esm/snk-data-exporter.entry.js +5 -5
  77. package/dist/esm/{snk-data-unit-0edeb967.js → snk-data-unit-99616a07.js} +2 -2
  78. package/dist/esm/snk-data-unit.entry.js +3 -3
  79. package/dist/esm/snk-detail-view.entry.js +7 -7
  80. package/dist/esm/snk-filter-bar_4.entry.js +3 -3
  81. package/dist/esm/snk-filter-modal-item.entry.js +3 -3
  82. package/dist/esm/snk-form_2.entry.js +22 -9
  83. package/dist/esm/snk-grid.entry.js +6 -6
  84. package/dist/esm/{snk-guides-viewer-9cd4d20f.js → snk-guides-viewer-240de636.js} +90 -28
  85. package/dist/esm/snk-guides-viewer.entry.js +7 -7
  86. package/dist/esm/snk-personalized-filter.entry.js +3 -3
  87. package/dist/esm/snk-pesquisa.entry.js +4 -4
  88. package/dist/esm/snk-simple-crud.entry.js +7 -7
  89. package/dist/esm/snk-taskbar.entry.js +57 -45
  90. package/dist/sankhyablocks/{p-1c2971e4.js → p-002d4d2b.js} +1 -1
  91. package/dist/sankhyablocks/{p-ae108ffd.entry.js → p-0948dc0a.entry.js} +1 -1
  92. package/dist/sankhyablocks/{p-7b3ca294.entry.js → p-0b9a42ad.entry.js} +1 -1
  93. package/dist/sankhyablocks/p-118c221e.js +1 -0
  94. package/dist/sankhyablocks/{p-dc851b6e.entry.js → p-1a9c5684.entry.js} +1 -1
  95. package/dist/sankhyablocks/p-1d589380.entry.js +1 -0
  96. package/dist/sankhyablocks/{p-d9c54991.js → p-28f50632.js} +1 -1
  97. package/dist/sankhyablocks/p-39be771c.js +1 -0
  98. package/dist/sankhyablocks/{p-26e0f63c.entry.js → p-4963dd2a.entry.js} +1 -1
  99. package/dist/sankhyablocks/p-55f6fef2.entry.js +1 -0
  100. package/dist/sankhyablocks/p-56f16390.entry.js +1 -0
  101. package/dist/sankhyablocks/{p-5304753a.js → p-58683e28.js} +2 -2
  102. package/dist/sankhyablocks/{p-11346b8d.entry.js → p-5ea893c5.entry.js} +1 -1
  103. package/dist/sankhyablocks/{p-f15478a1.js → p-62aef37a.js} +1 -1
  104. package/dist/sankhyablocks/{p-34f447ba.entry.js → p-62e9b9b8.entry.js} +1 -1
  105. package/dist/sankhyablocks/{p-e9021f79.entry.js → p-669bb869.entry.js} +1 -1
  106. package/dist/sankhyablocks/{p-6180de07.entry.js → p-6ee2ca7a.entry.js} +1 -1
  107. package/dist/sankhyablocks/p-7cac3870.entry.js +1 -0
  108. package/dist/sankhyablocks/{p-78ff8734.js → p-7d6f1285.js} +1 -1
  109. package/dist/sankhyablocks/{p-53599b26.js → p-840fb68c.js} +1 -1
  110. package/dist/sankhyablocks/{p-b4322b87.entry.js → p-86e54841.entry.js} +1 -1
  111. package/dist/sankhyablocks/{p-34df7eca.entry.js → p-88b337fe.entry.js} +1 -1
  112. package/dist/sankhyablocks/{p-3d021bef.entry.js → p-91005a00.entry.js} +1 -1
  113. package/dist/sankhyablocks/p-92cfc028.js +1 -0
  114. package/dist/sankhyablocks/{p-44939a0e.entry.js → p-ada013c0.entry.js} +1 -1
  115. package/dist/sankhyablocks/{p-9317942f.js → p-c35fc941.js} +1 -1
  116. package/dist/sankhyablocks/p-c98c79c3.entry.js +1 -0
  117. package/dist/sankhyablocks/{p-1858c023.entry.js → p-cadf4846.entry.js} +1 -1
  118. package/dist/sankhyablocks/{p-38e56b68.entry.js → p-e91c3c57.entry.js} +1 -1
  119. package/dist/sankhyablocks/{p-f8f29e1a.entry.js → p-ea729922.entry.js} +1 -1
  120. package/dist/sankhyablocks/p-ec5fbad8.js +1 -0
  121. package/dist/sankhyablocks/{p-80014119.entry.js → p-f5e942b7.entry.js} +1 -1
  122. package/dist/sankhyablocks/sankhyablocks.esm.js +1 -1
  123. package/dist/types/components/snk-crud/snk-crud.d.ts +6 -0
  124. package/dist/types/components/snk-crud/subcomponents/snk-guides-viewer.d.ts +22 -0
  125. package/dist/types/components/snk-form-config/FormConfigHelper.d.ts +5 -0
  126. package/dist/types/components/snk-form-config/SnkFormConfigManager.d.ts +1 -1
  127. package/dist/types/components/snk-form-config/snk-form-config.d.ts +8 -2
  128. package/dist/types/components/snk-taskbar/snk-taskbar.d.ts +6 -3
  129. package/dist/types/components.d.ts +30 -0
  130. package/package.json +1 -1
  131. package/dist/sankhyablocks/p-0e279e7a.js +0 -1
  132. package/dist/sankhyablocks/p-3abeeefa.entry.js +0 -1
  133. package/dist/sankhyablocks/p-557368df.entry.js +0 -1
  134. package/dist/sankhyablocks/p-583151c5.entry.js +0 -1
  135. package/dist/sankhyablocks/p-8f73da95.js +0 -1
  136. package/dist/sankhyablocks/p-a2ed1ebd.entry.js +0 -1
  137. package/dist/sankhyablocks/p-a5108625.entry.js +0 -1
  138. package/dist/sankhyablocks/p-a644a956.js +0 -1
  139. package/dist/sankhyablocks/p-bb2f5f38.js +0 -1
@@ -12,6 +12,8 @@ const FORM_NAME_PREFIX = "__FORM:";
12
12
  export class SnkGuidesViewer {
13
13
  constructor() {
14
14
  this._guideBuilders = new Map();
15
+ this.CUSTOM_GUIDE_ID_PREFIX = "CUSTOM_GUIDE_";
16
+ this.CUSTOM_GUIDE_DATA_CUSTOM_ID = "CUSTOM_GUIDE";
15
17
  this.dataUnit = undefined;
16
18
  this.dataState = undefined;
17
19
  this.configName = undefined;
@@ -30,6 +32,7 @@ export class SnkGuidesViewer {
30
32
  this.enableGridInsert = false;
31
33
  this.ignoreReadOnlyFormFields = undefined;
32
34
  this.getCustomTitle = undefined;
35
+ this.customGuidesConfig = [];
33
36
  this._hasToCreateFieldSearch = true;
34
37
  this._breadcrumbItems = [];
35
38
  this._guides = undefined;
@@ -44,6 +47,9 @@ export class SnkGuidesViewer {
44
47
  observeDataUnit() {
45
48
  this.loadGuides(true);
46
49
  }
50
+ observeFormConfigManager(value) {
51
+ this.formConfigVisibilityChanged.emit(!!value);
52
+ }
47
53
  observeDataState(newValue, oldValue) {
48
54
  var _a, _b, _c, _d, _e, _f;
49
55
  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__'];
@@ -142,7 +148,7 @@ export class SnkGuidesViewer {
142
148
  if (!this._configManager.isLoaded) {
143
149
  return;
144
150
  }
145
- this._masterFormMetadata = buildFormMetadata(this.masterFormConfig, this.dataUnit, true);
151
+ this._masterFormMetadata = buildFormMetadata(this.masterFormConfig, this.dataUnit, true, this.customGuidesConfig);
146
152
  const allSheets = this._masterFormMetadata.getAllSheets();
147
153
  const currentRecord = this.dataUnit.getSelectedRecord();
148
154
  const disableDetails = this.hasToDisableDetails(currentRecord);
@@ -288,38 +294,67 @@ export class SnkGuidesViewer {
288
294
  return `${this.entityPath}/${entityName}`;
289
295
  }
290
296
  getContent() {
291
- var _a, _b, _c, _d, _e;
292
297
  if (!this.selectedGuide) {
293
298
  return;
294
299
  }
295
300
  const guideId = this.selectedGuide.id;
296
- let content;
301
+ if (this.isCustomGuide(guideId)) {
302
+ return h("div", { "data-custom-id": `${this.CUSTOM_GUIDE_DATA_CUSTOM_ID}`, "data-reserved-slot-id": guideId, id: this.buildCustomGuideContainerId(guideId) });
303
+ }
297
304
  const levels = guideId.split("::");
298
305
  const currentLevel = levels.pop();
299
306
  const childEntityName = FormMetadata.getDetailName(currentLevel);
300
307
  let detailId = guideId;
301
- if (childEntityName || levels.length > 0) {
302
- let formName;
303
- let detailBranch;
304
- if (guideId.includes(FORM_NAME_PREFIX)) {
305
- [detailId, formName] = guideId.split(FORM_NAME_PREFIX);
306
- const pathSize = ((_a = this._breadcrumbItems) === null || _a === void 0 ? void 0 : _a.length) || 0;
307
- detailBranch = pathSize > 1 ? this._breadcrumbItems[pathSize - 2] : this.selectedGuide;
308
- }
309
- else {
310
- detailBranch = this.selectedGuide;
311
- }
312
- content = this.wrapDetail(levels, h("snk-detail-view", { ref: (ref) => this._currentDetail = ref, dataUnitName: this.getDataUnitName(levels, childEntityName), onSnkDetailGuidesChange: (evt) => this.updateGuide(evt.detail), entityName: childEntityName, selectedForm: formName, branchGuide: detailBranch, guideItemPath: this._breadcrumbItems, key: `detail${detailId}`, canEdit: this.canEdit, onSnkSwitchGuide: evt => this._guideNavigator.selectGuide(evt.detail), resourceID: this.resourceID, taskbarCustomContainerId: this.detailTaskbarCustomContainerId, customEditors: this._customEditors, customRenders: this._customRenders, presentationMode: this.presentationMode }));
308
+ if (this.isDetailGuide(childEntityName, levels)) {
309
+ return this.buildDetailGuideContent(guideId, detailId, levels, childEntityName);
310
+ }
311
+ return this.buildFormViewGuideContent(guideId);
312
+ }
313
+ buildCustomGuideContainerId(guideId) {
314
+ return `${this.CUSTOM_GUIDE_ID_PREFIX}${guideId}`;
315
+ }
316
+ buildFormViewGuideContent(cardId) {
317
+ var _a, _b, _c, _d;
318
+ const sheet = this._masterFormMetadata.getSheet(cardId);
319
+ if (!sheet)
320
+ return;
321
+ const cardConfig = (_b = (_a = this.masterFormConfig) === null || _a === void 0 ? void 0 : _a.cardsState) === null || _b === void 0 ? void 0 : _b.get(cardId);
322
+ return (h("snk-form-view", { ref: ref => this._mainForm = ref, fixed: cardConfig === null || cardConfig === void 0 ? void 0 : cardConfig.fixed, summaryFields: (_d = (_c = this.masterFormConfig) === null || _c === void 0 ? void 0 : _c.summary) === null || _d === void 0 ? void 0 : _d.get(cardId), name: cardId, label: sheet.label, fields: sheet.fields, dataUnit: this.dataUnit, formMetadata: this._masterFormMetadata, recordsValidator: this.recordsValidator, fieldToFocus: this._fieldToGetFocus, key: cardId, onSnkRequestClearFieldToFocus: _ => this.clearFieldToFocusHandler(), customEditors: this._customEditors, fieldsProps: this._fieldsProps, fieldSearch: this._fieldSearch }, this.presentationMode == PresentationMode.SECONDARY && this.buildTaskBar()));
323
+ }
324
+ isDetailGuide(childEntityName, levels) {
325
+ return childEntityName || levels.length > 0;
326
+ }
327
+ buildDetailGuideContent(guideId, detailId, levels, childEntityName) {
328
+ var _a;
329
+ let formName;
330
+ let detailBranch;
331
+ if (guideId.includes(FORM_NAME_PREFIX)) {
332
+ [detailId, formName] = guideId.split(FORM_NAME_PREFIX);
333
+ const pathSize = ((_a = this._breadcrumbItems) === null || _a === void 0 ? void 0 : _a.length) || 0;
334
+ detailBranch = pathSize > 1 ? this._breadcrumbItems[pathSize - 2] : this.selectedGuide;
313
335
  }
314
336
  else {
315
- const cardId = this.selectedGuide.id;
316
- const sheet = this._masterFormMetadata.getSheet(cardId);
317
- if (sheet) {
318
- const cardConfig = (_c = (_b = this.masterFormConfig) === null || _b === void 0 ? void 0 : _b.cardsState) === null || _c === void 0 ? void 0 : _c.get(cardId);
319
- content = h("snk-form-view", { ref: ref => this._mainForm = ref, fixed: cardConfig === null || cardConfig === void 0 ? void 0 : cardConfig.fixed, summaryFields: (_e = (_d = this.masterFormConfig) === null || _d === void 0 ? void 0 : _d.summary) === null || _e === void 0 ? void 0 : _e.get(cardId), name: cardId, label: sheet.label, fields: sheet.fields, dataUnit: this.dataUnit, formMetadata: this._masterFormMetadata, recordsValidator: this.recordsValidator, fieldToFocus: this._fieldToGetFocus, key: guideId, onSnkRequestClearFieldToFocus: _ => this.clearFieldToFocusHandler(), customEditors: this._customEditors, fieldsProps: this._fieldsProps, fieldSearch: this._fieldSearch }, this.presentationMode == PresentationMode.SECONDARY && this.buildTaskBar());
320
- }
337
+ detailBranch = this.selectedGuide;
321
338
  }
322
- return content;
339
+ return this.wrapDetail(levels, h("snk-detail-view", { ref: (ref) => this._currentDetail = ref, dataUnitName: this.getDataUnitName(levels, childEntityName), onSnkDetailGuidesChange: (evt) => this.updateGuide(evt.detail), entityName: childEntityName, selectedForm: formName, branchGuide: detailBranch, guideItemPath: this._breadcrumbItems, key: `detail${detailId}`, canEdit: this.canEdit, onSnkSwitchGuide: evt => this._guideNavigator.selectGuide(evt.detail), resourceID: this.resourceID, taskbarCustomContainerId: this.detailTaskbarCustomContainerId, customEditors: this._customEditors, customRenders: this._customRenders, presentationMode: this.presentationMode }));
340
+ }
341
+ isCustomGuide(guideId) {
342
+ var _a;
343
+ return (_a = this.customGuidesConfig) === null || _a === void 0 ? void 0 : _a.map(g => g.id).includes(guideId);
344
+ }
345
+ attachCustomGuideInView() {
346
+ //As guias customizadas ficam em slots reservados na DOM e
347
+ // precisam ser acessadas via querySelector e colocadas no container correto na view.
348
+ var _a;
349
+ const guideId = (_a = this.selectedGuide) === null || _a === void 0 ? void 0 : _a.id;
350
+ if (!this.isCustomGuide(guideId))
351
+ return;
352
+ const customGuideSlot = document.querySelector(`#${guideId}`);
353
+ const customGuideElement = customGuideSlot === null || customGuideSlot === void 0 ? void 0 : customGuideSlot.firstElementChild;
354
+ const customGuideViewContainer = document.querySelector(`#${this.buildCustomGuideContainerId(guideId)}`);
355
+ if (!customGuideElement || !customGuideViewContainer)
356
+ return;
357
+ customGuideViewContainer.appendChild(customGuideElement);
323
358
  }
324
359
  onBreadcrumbClickHandler(item) {
325
360
  if ((item === null || item === void 0 ? void 0 : item.id) == undefined) {
@@ -402,7 +437,29 @@ export class SnkGuidesViewer {
402
437
  this.addFormLegacyConfigName();
403
438
  this._configManager.loadConfig();
404
439
  }
440
+ componentWillRender() {
441
+ this.detachCustomGuideFromView();
442
+ }
443
+ detachCustomGuideFromView() {
444
+ // Antes de cada renderização, o componente remove a guia customizada da view
445
+ // e a coloca de volta no slot reservado na DOM para que não seja perdida sua referência.
446
+ if (!this.customGuidesConfig || this.customGuidesConfig.length === 0)
447
+ return;
448
+ const viewCustomGuideContainer = this._element.querySelector(`[data-custom-id="${this.CUSTOM_GUIDE_DATA_CUSTOM_ID}"]`);
449
+ const reservedSlotId = viewCustomGuideContainer === null || viewCustomGuideContainer === void 0 ? void 0 : viewCustomGuideContainer.getAttribute('data-reserved-slot-id');
450
+ if (!(viewCustomGuideContainer === null || viewCustomGuideContainer === void 0 ? void 0 : viewCustomGuideContainer.hasChildNodes()) || !reservedSlotId)
451
+ return;
452
+ const customGuideReservedSlot = document.querySelector(`#${reservedSlotId}`);
453
+ const customGuideElement = viewCustomGuideContainer === null || viewCustomGuideContainer === void 0 ? void 0 : viewCustomGuideContainer.firstElementChild;
454
+ if (!customGuideReservedSlot || !customGuideElement)
455
+ return;
456
+ customGuideReservedSlot.appendChild(customGuideElement);
457
+ }
405
458
  componentDidRender() {
459
+ var _a;
460
+ if (this.isCustomGuide((_a = this.selectedGuide) === null || _a === void 0 ? void 0 : _a.id)) {
461
+ this.attachCustomGuideInView();
462
+ }
406
463
  if (!this._guideHasChanged) {
407
464
  return;
408
465
  }
@@ -531,6 +588,9 @@ export class SnkGuidesViewer {
531
588
  const labels = selectedRecords.map(record => this.messagesBuilder.getMessage("snkCrud.title", record));
532
589
  return `[${labels.join(", ")}]`;
533
590
  }
591
+ getCustomGuidesConfig() {
592
+ return this._currentDetail ? [] : this.customGuidesConfig;
593
+ }
534
594
  componentDidLoad() {
535
595
  this.dataUnit.subscribe(this.dataUnitActionHandler.bind(this));
536
596
  this.initKeyboardManager();
@@ -550,7 +610,7 @@ export class SnkGuidesViewer {
550
610
  render() {
551
611
  var _a, _b;
552
612
  if (this._formEditorConfigManager != undefined) {
553
- return (h("snk-form-config", { ref: ref => this._container = ref, tabindex: -1, dataUnit: this._formEditorDataUnit, messagesBuilder: this.messagesBuilder, configManager: this._formEditorConfigManager, onConfigClose: () => this._formEditorConfigManager = null }));
613
+ return (h("snk-form-config", { ref: ref => this._container = ref, tabindex: -1, dataUnit: this._formEditorDataUnit, messagesBuilder: this.messagesBuilder, configManager: this._formEditorConfigManager, onConfigClose: () => this._formEditorConfigManager = null, customGuidesConfig: this.getCustomGuidesConfig() }));
554
614
  }
555
615
  if (!this.dataUnit || !this._configManager.isLoaded) {
556
616
  return;
@@ -924,6 +984,29 @@ export class SnkGuidesViewer {
924
984
  "tags": [],
925
985
  "text": "Fornece uma fun\u00E7\u00E3o para obter um t\u00EDtulo customizado do formul\u00E1rio."
926
986
  }
987
+ },
988
+ "customGuidesConfig": {
989
+ "type": "unknown",
990
+ "mutable": false,
991
+ "complexType": {
992
+ "original": "Array<CustomGuideItem>",
993
+ "resolved": "CustomGuideItem[]",
994
+ "references": {
995
+ "Array": {
996
+ "location": "global"
997
+ },
998
+ "CustomGuideItem": {
999
+ "location": "local"
1000
+ }
1001
+ }
1002
+ },
1003
+ "required": false,
1004
+ "optional": true,
1005
+ "docs": {
1006
+ "tags": [],
1007
+ "text": "Fornece as informa\u00E7\u00F5es das guias personalizadas."
1008
+ },
1009
+ "defaultValue": "[]"
927
1010
  }
928
1011
  };
929
1012
  }
@@ -962,6 +1045,21 @@ export class SnkGuidesViewer {
962
1045
  }
963
1046
  }
964
1047
  }
1048
+ }, {
1049
+ "method": "formConfigVisibilityChanged",
1050
+ "name": "formConfigVisibilityChanged",
1051
+ "bubbles": true,
1052
+ "cancelable": true,
1053
+ "composed": true,
1054
+ "docs": {
1055
+ "tags": [],
1056
+ "text": "Emitido quando a visibilidade do configurador do formul\u00E1rio \u00E9 alterada."
1057
+ },
1058
+ "complexType": {
1059
+ "original": "boolean",
1060
+ "resolved": "boolean",
1061
+ "references": {}
1062
+ }
965
1063
  }, {
966
1064
  "method": "exit",
967
1065
  "name": "exit",
@@ -1159,6 +1257,9 @@ export class SnkGuidesViewer {
1159
1257
  return [{
1160
1258
  "propName": "dataUnit",
1161
1259
  "methodName": "observeDataUnit"
1260
+ }, {
1261
+ "propName": "_formEditorConfigManager",
1262
+ "methodName": "observeFormConfigManager"
1162
1263
  }, {
1163
1264
  "propName": "dataState",
1164
1265
  "methodName": "observeDataState"
@@ -108,6 +108,46 @@ export function buildGuides(config, mainArea) {
108
108
  tabs = initializeTabsNames(tabs);
109
109
  return handleMainTab(tabs, mainArea);
110
110
  }
111
+ export function buildChildrenGuides(dataUnit, initialOrderIndex = 0, guidesList) {
112
+ var _a;
113
+ if (!dataUnit || !dataUnit.metadata) {
114
+ return [];
115
+ }
116
+ const children = ((_a = dataUnit.metadata) === null || _a === void 0 ? void 0 : _a.children) || [];
117
+ const childrenWithNoGuide = [];
118
+ for (const child of children) {
119
+ if (guidesList.some((guide) => child.label === guide.label)) {
120
+ continue;
121
+ }
122
+ childrenWithNoGuide.push({
123
+ label: child.label,
124
+ name: child.name,
125
+ visible: true,
126
+ isCustom: true,
127
+ order: initialOrderIndex++
128
+ });
129
+ }
130
+ return childrenWithNoGuide;
131
+ }
132
+ export function buildCustomGuides(customGuidesList, guidesList) {
133
+ let initialOrderIndex = guidesList.length;
134
+ const customGuidesToAdd = getCustomGuidesNotIncludedInList(customGuidesList, guidesList);
135
+ return customGuidesToAdd.map(guide => {
136
+ return {
137
+ name: guide.id,
138
+ label: guide.label,
139
+ visible: true,
140
+ isCustom: true,
141
+ order: initialOrderIndex++
142
+ };
143
+ });
144
+ }
145
+ function isCustomGuideIncludedInList(guidesList, guide) {
146
+ return guidesList.some(fromList => fromList.name === guide.id || fromList.label === guide.label);
147
+ }
148
+ function getCustomGuidesNotIncludedInList(customGuidesList, guidesList) {
149
+ return customGuidesList.filter(guide => !isCustomGuideIncludedInList(guidesList, guide));
150
+ }
111
151
  function handleFieldsTabNames(allFields) {
112
152
  // Campos que não fazem parte de nenhuma aba ou da aba "Geral", devem ser movidos para a aba __main.
113
153
  return allFields.map(field => {
@@ -1,5 +1,5 @@
1
- import { ConfigStorage } from '../../lib/configs/ConfigStorage';
2
1
  import { ObjectUtils, StringUtils } from '@sankhyalabs/core';
2
+ import { ConfigStorage } from '../../lib/configs/ConfigStorage';
3
3
  import { FormConfigFetcher } from '../../lib/http/data-fetcher/fetchers/form-config-fetcher';
4
4
  import { TAB_NAMES } from '../../lib/utils/constants';
5
5
  export class SnkFormConfigManager {
@@ -82,7 +82,7 @@ export class SnkFormConfigManager {
82
82
  return false;
83
83
  }
84
84
  getFieldsList(descriptionFilter, forceEmptyConfig = false) {
85
- var _a;
85
+ var _a, _b;
86
86
  const fields = (_a = this._config) === null || _a === void 0 ? void 0 : _a.fields;
87
87
  const hasConfig = this.hasConfig();
88
88
  if (hasConfig && !forceEmptyConfig) {
@@ -98,7 +98,7 @@ export class SnkFormConfigManager {
98
98
  })
99
99
  .filter(field => this.isFieldVisible(field, descriptionFilter));
100
100
  }
101
- if (!this._dataUnit) {
101
+ if (!this._dataUnit || !((_b = this._dataUnit.metadata) === null || _b === void 0 ? void 0 : _b.fields)) {
102
102
  return [];
103
103
  }
104
104
  const filteredFields = this._dataUnit.metadata.fields
@@ -320,6 +320,9 @@ export class FieldLayoutComponent {
320
320
  if (!this.selectedGuide) {
321
321
  return (h(Host, { class: 'ez-flex-item--auto ez-size-height--full ez-box ez-padding--medium content-container' }, h("span", { class: 'no-guide-selected' }, this.getMessage('snkFormConfig.form.noGuideSelected'))));
322
322
  }
323
+ if (this.selectedGuide.isCustom || this.selectedGuide.isDetail) {
324
+ return (h(Host, { class: 'ez-flex-item--auto ez-size-height--full ez-box ez-padding--medium content-container' }, h("span", { class: 'no-guide-selected' }, this.getMessage('snkFormConfig.form.canNotEditCustomGuide'))));
325
+ }
323
326
  return (h(Host, { class: 'ez-flex-item--auto ez-size-height--full ez-box ez-padding--medium content-container' }, this.renderGuideName(), h("div", { class: 'layout-container' }, h("ez-scroller", { direction: 'vertical', activeShadow: true }, h("div", { class: 'no-group-container' }, h("div", { id: GROUP_NAMES.noGroup, class: 'group-content', "data-group-name": GROUP_NAMES.noGroup }, this.renderFixedFields())), h("hr", null), h("div", { id: this.ID_GROUPS, class: 'groups-container' }, this.renderDraggableGroups()))), h("div", { class: 'add-group-container', onClick: this.handleAddGroup.bind(this) }, h("ez-icon", { slot: "leftIcon", iconName: "plus" }), h("span", null, this.getMessage('snkFormConfig.form.createNewGroup')))));
324
327
  }
325
328
  static get is() { return "fields-layout"; }
@@ -92,7 +92,9 @@ export class GuidesConfigurator {
92
92
  var _a;
93
93
  return (h("div", { key: guide.name, "data-guide-name": guide.name, title: guide.label, class: `guide-item ${((_a = this.selectedGuide) === null || _a === void 0 ? void 0 : _a.label) === guide.label ? 'selected' : ''} ${this.filterTerm.length ? 'disable-sort' : ''}`, onClick: e => this.handleSelectGuide(guide, e) }, h("span", null, h("ez-icon", { iconName: "drag-indicator", class: 'ez-margin-right--small' })), h("span", { class: 'item-label' }, guide.label), h("div", { class: 'actions' }, h("ez-button", { mode: "icon", class: "ez-button--tertiary", onClick: e => this.toggleGuideVisibility(guide, e), size: "medium", iconName: guide.visible ? 'eye-off' : 'eye', title: guide.visible ?
94
94
  this.getMessage('snkFormConfig.guidesConfigurator.actions.hide') :
95
- this.getMessage('snkFormConfig.guidesConfigurator.actions.show') }), h("ez-button", { mode: "icon", class: "ez-button--tertiary", onClick: e => this.handleDeleteGuide(guide, e), size: "medium", iconName: 'delete', title: this.getMessage('snkFormConfig.guidesConfigurator.actions.delete') }))));
95
+ this.getMessage('snkFormConfig.guidesConfigurator.actions.show') }), h("ez-button", { mode: "icon", class: "ez-button--tertiary", onClick: e => this.handleDeleteGuide(guide, e), size: "medium", isDisabled: guide.isCustom || guide.isDetail, iconName: 'delete', title: guide.isCustom || guide.isDetail ?
96
+ this.getMessage('snkFormConfig.guidesConfigurator.canNotDeleteCustomGuide') :
97
+ this.getMessage('snkFormConfig.guidesConfigurator.actions.delete') }))));
96
98
  });
97
99
  }
98
100
  getContainerElement(id) {
@@ -1,10 +1,10 @@
1
- import { h, Host } from '@stencil/core';
2
1
  import { ApplicationContext, ObjectUtils } from '@sankhyalabs/core';
3
2
  import { buildFormConfigFromDataUnit } from '@sankhyalabs/ezui/dist/collection/utils/form';
4
- import { updateTabInFieldsFromGroupList, buildGuides, buildGuidesMap, buildNewGuideName, getFieldsToSave, } from './FormConfigHelper';
5
- import { GROUP_NAMES, TAB_NAMES } from '../../lib/utils/constants';
3
+ import { h, Host } from '@stencil/core';
6
4
  import { ApplicationUtils } from '@sankhyalabs/ezui/dist/collection/utils';
7
5
  import { UserConfigType } from '../../lib/http/data-fetcher/fetchers/form-config-fetcher';
6
+ import { GROUP_NAMES, TAB_NAMES } from '../../lib/utils/constants';
7
+ import { buildChildrenGuides, buildCustomGuides, buildGuides, buildGuidesMap, buildNewGuideName, getFieldsToSave, updateTabInFieldsFromGroupList, } from './FormConfigHelper';
8
8
  export class SnkFormConfig {
9
9
  constructor() {
10
10
  this.guidesMap = new Map();
@@ -22,6 +22,7 @@ export class SnkFormConfig {
22
22
  this.configManager = undefined;
23
23
  this.ignoreReadOnlyFormFields = undefined;
24
24
  this.messagesBuilder = undefined;
25
+ this.customGuidesConfig = [];
25
26
  }
26
27
  handleFieldConfigChanged() {
27
28
  this.hasChanges = true;
@@ -41,6 +42,10 @@ export class SnkFormConfig {
41
42
  this.showNoGuideSelectedDialog();
42
43
  return;
43
44
  }
45
+ if (this.selectedGuide.isCustom || this.selectedGuide.isDetail) {
46
+ this.showCanNotAddFieldToGuideDialog();
47
+ return;
48
+ }
44
49
  this.availableFields = [...this.availableFields.filter(f => f.name !== fieldItem.name)];
45
50
  await ((_a = this.refFieldsLayout) === null || _a === void 0 ? void 0 : _a.addFieldToLayout(fieldItem));
46
51
  }
@@ -66,6 +71,11 @@ export class SnkFormConfig {
66
71
  const message = this.getMessage('snkFormConfig.noGuideSelected.message');
67
72
  ApplicationUtils.alert(title, message);
68
73
  }
74
+ showCanNotAddFieldToGuideDialog() {
75
+ const title = this.getMessage('snkFormConfig.canNotAddFieldToGuide.title');
76
+ const message = this.getMessage('snkFormConfig.canNotAddFieldToGuide.message');
77
+ ApplicationUtils.alert(title, message);
78
+ }
69
79
  /**
70
80
  * Conforme mecanismo de mensagens, é possível customizar as mensagens dos blocos de construção
71
81
  * através de um pequeno modulo na estrutura da aplicação:
@@ -138,9 +148,12 @@ export class SnkFormConfig {
138
148
  });
139
149
  }
140
150
  loadGuides() {
141
- var _a;
142
- this.guidesList = [...buildGuides(this._formConfig, this.getMessage('snkFormConfig.form.mainArea'))];
143
- this.guidesMap = buildGuidesMap((_a = this._formConfig) === null || _a === void 0 ? void 0 : _a.fields, this.guidesList, this.dataUnit, this.getMessage('snkFormConfig.form.tabGeneral'));
151
+ var _a, _b, _c, _d;
152
+ this.guidesList = [];
153
+ this.guidesList.push(...buildGuides(this._formConfig, this.getMessage('snkFormConfig.form.mainArea')));
154
+ this.guidesList.push(...buildChildrenGuides(this.dataUnit, (_c = (_b = (_a = this._formConfig) === null || _a === void 0 ? void 0 : _a.tabs) === null || _b === void 0 ? void 0 : _b.length) !== null && _c !== void 0 ? _c : 0, this.guidesList));
155
+ this.guidesList.push(...buildCustomGuides(this.customGuidesConfig, this.guidesList));
156
+ this.guidesMap = buildGuidesMap((_d = this._formConfig) === null || _d === void 0 ? void 0 : _d.fields, this.guidesList, this.dataUnit, this.getMessage('snkFormConfig.form.tabGeneral'));
144
157
  }
145
158
  getConfig() {
146
159
  let config = this.configManager.getConfig(this.dataUnit, false);
@@ -368,6 +381,30 @@ export class SnkFormConfig {
368
381
  "tags": [],
369
382
  "text": "Respons\u00E1vel por flexibilizar e padronizar o uso de mensagens nos blocos de constru\u00E7\u00E3o."
370
383
  }
384
+ },
385
+ "customGuidesConfig": {
386
+ "type": "unknown",
387
+ "mutable": false,
388
+ "complexType": {
389
+ "original": "Array<CustomGuideItem>",
390
+ "resolved": "CustomGuideItem[]",
391
+ "references": {
392
+ "Array": {
393
+ "location": "global"
394
+ },
395
+ "CustomGuideItem": {
396
+ "location": "import",
397
+ "path": "../snk-crud/subcomponents/snk-guides-viewer"
398
+ }
399
+ }
400
+ },
401
+ "required": false,
402
+ "optional": true,
403
+ "docs": {
404
+ "tags": [],
405
+ "text": "Informa\u00E7\u00F5es das guias personalizadas."
406
+ },
407
+ "defaultValue": "[]"
371
408
  }
372
409
  };
373
410
  }
@@ -1,8 +1,8 @@
1
- import { Action as DUAction, ApplicationContext, ElementIDUtils, LockManager, LockManagerOperation, OverflowDirection, OVERFLOWED_CLASS_NAME, OverflowWatcher, SilentException, StringUtils, } from '@sankhyalabs/core';
1
+ import { ApplicationContext, Action as DUAction, ElementIDUtils, LockManager, LockManagerOperation, OverflowDirection, OVERFLOWED_CLASS_NAME, OverflowWatcher, SilentException, StringUtils, } from '@sankhyalabs/core';
2
2
  import { h, Host } from '@stencil/core';
3
+ import { PresentationMode } from '../../lib/@types';
3
4
  import { AuthorizationConfig } from '../snk-configurator/AuthorizationConfig';
4
5
  import { AuthorizationElements, buildCustomButton, buildElem, TaskbarElement, VisibleWhenForbidden, } from './elements/taskbar-elements';
5
- import { PresentationMode } from '../../lib/@types';
6
6
  export class SnkTaskbar {
7
7
  constructor() {
8
8
  this.TASKBAR_ITEM_ID_PREFIX = 'TASKBAR_ITEM_';
@@ -11,6 +11,7 @@ export class SnkTaskbar {
11
11
  this.TASKBAR_CUSTOM_ELEMENTS = 'taskbar-custom-elements-container';
12
12
  this.TASKBAR_ADDITIONAL_SLOT_CONTAINER_CLASS_NAME = 'taskbar-additional-slot-container';
13
13
  this.TASKBAR_ADDITIONAL_SLOT = 'taskbar-additional-slot-container';
14
+ this._dataUnitInitialized = false;
14
15
  this._titleKeyByElement = {
15
16
  [TaskbarElement.UPDATE_MULTIPLE]: "snkTaskbar.titleUpdateMultiple",
16
17
  [TaskbarElement.UPDATE]: "snkTaskbar.titleUpdate",
@@ -109,6 +110,17 @@ export class SnkTaskbar {
109
110
  this.taskbarSaveUnlocker.emit();
110
111
  }
111
112
  }
113
+ observeDataUnit(newValue) {
114
+ this.initializeDataUnit(newValue);
115
+ }
116
+ initializeDataUnit(dataUnit) {
117
+ if (!!dataUnit && !this._dataUnitInitialized) {
118
+ this._dataUnitInitialized = true;
119
+ const dataInfo = { dataUnit: this.dataUnit };
120
+ ElementIDUtils.addIDInfo(this._element, null, dataInfo);
121
+ this.dataUnit.subscribe(this.onSaveEvent);
122
+ }
123
+ }
112
124
  // Internal methods
113
125
  elementsFromString(strButtons) {
114
126
  const elements = [];
@@ -154,45 +166,46 @@ export class SnkTaskbar {
154
166
  }
155
167
  elementClick(elem) {
156
168
  LockManager.whenResolve(this._element, LockManagerOperation.TASKBAR_CLICK).then(() => {
157
- if (this.dataUnit) {
158
- switch (elem) {
159
- case TaskbarElement.PREVIOUS:
160
- this.dataUnit.previousRecord();
161
- break;
162
- case TaskbarElement.NEXT:
163
- this.dataUnit.nextRecord();
164
- break;
165
- case TaskbarElement.REFRESH:
166
- this.dataUnit.loadData();
167
- break;
168
- case TaskbarElement.CLONE:
169
- this.dataUnit.copySelected();
170
- break;
171
- case TaskbarElement.REMOVE:
172
- this.dataUnit.removeSelectedRecords();
173
- break;
174
- case TaskbarElement.INSERT:
175
- this.dataUnit.addRecord();
176
- break;
177
- case TaskbarElement.CANCEL:
178
- this.dataUnit.cancelEdition();
179
- break;
180
- case TaskbarElement.SAVE:
181
- if (!this._isWaitingForSave) {
182
- this._isWaitingForSave = true;
183
- this.dataUnit.saveData().catch((err) => {
184
- if (err instanceof SilentException) {
185
- return;
186
- }
187
- else {
188
- throw err;
189
- }
190
- }).finally(() => {
191
- this._isWaitingForSave = false;
192
- });
193
- }
194
- break;
195
- }
169
+ if (!this.dataUnit) {
170
+ return;
171
+ }
172
+ switch (elem) {
173
+ case TaskbarElement.PREVIOUS:
174
+ this.dataUnit.previousRecord();
175
+ break;
176
+ case TaskbarElement.NEXT:
177
+ this.dataUnit.nextRecord();
178
+ break;
179
+ case TaskbarElement.REFRESH:
180
+ this.dataUnit.loadData();
181
+ break;
182
+ case TaskbarElement.CLONE:
183
+ this.dataUnit.copySelected();
184
+ break;
185
+ case TaskbarElement.REMOVE:
186
+ this.dataUnit.removeSelectedRecords();
187
+ break;
188
+ case TaskbarElement.INSERT:
189
+ this.dataUnit.addRecord();
190
+ break;
191
+ case TaskbarElement.CANCEL:
192
+ this.dataUnit.cancelEdition();
193
+ break;
194
+ case TaskbarElement.SAVE:
195
+ if (!this._isWaitingForSave) {
196
+ this._isWaitingForSave = true;
197
+ this.dataUnit.saveData().catch((err) => {
198
+ if (err instanceof SilentException) {
199
+ return;
200
+ }
201
+ else {
202
+ throw err;
203
+ }
204
+ }).finally(() => {
205
+ this._isWaitingForSave = false;
206
+ });
207
+ }
208
+ break;
196
209
  }
197
210
  if (this.isEnabled(elem))
198
211
  this.actionClick.emit(elem);
@@ -391,10 +404,8 @@ export class SnkTaskbar {
391
404
  };
392
405
  }
393
406
  componentDidLoad() {
394
- const dataInfo = { dataUnit: this.dataUnit };
395
- ElementIDUtils.addIDInfo(this._element, null, dataInfo);
407
+ this.initializeDataUnit(this.dataUnit);
396
408
  this.handleOverFlowStrategy();
397
- this.dataUnit.subscribe(this.onSaveEvent);
398
409
  }
399
410
  componentDidRender() {
400
411
  this.appendCustomElementsInTaskbar();
@@ -914,6 +925,9 @@ export class SnkTaskbar {
914
925
  }, {
915
926
  "propName": "_isWaitingForSave",
916
927
  "methodName": "observeIsWaitingForSave"
928
+ }, {
929
+ "propName": "dataUnit",
930
+ "methodName": "observeDataUnit"
917
931
  }];
918
932
  }
919
933
  static get listeners() {
@@ -39,6 +39,7 @@ export const snkFormConfigMessages = {
39
39
  labelNewGroup: "Add new group",
40
40
  mainArea: "Main area",
41
41
  tabGeneral: "General",
42
+ canNotEditCustomGuide: "It is not possible to edit detail tabs and custom tabs",
42
43
  createNewGroup: "Create new group",
43
44
  newGroup: "New group",
44
45
  noGuideSelected: "Select a tab and start configuring",
@@ -66,6 +67,10 @@ export const snkFormConfigMessages = {
66
67
  title: "Attention",
67
68
  message: "Select a guide to start configuration!"
68
69
  },
70
+ canNotAddFieldToGuide: {
71
+ title: "Attention",
72
+ message: "It is not possible to add fields to detail tabs or custom tabs!"
73
+ },
69
74
  alert: {
70
75
  titleGroupExists: "A group with this title already exists",
71
76
  titleGroupEditing: "There is a <b>group<b/> being edited. <br/> Finish editing to save the settings.",
@@ -96,6 +101,7 @@ export const snkFormConfigMessages = {
96
101
  createNewGuide: "Create new tab",
97
102
  noHiddenGuides: "No hidden tabs",
98
103
  noVisibleGuides: "No visible tabs",
104
+ canNotDeleteCustomGuide: "Is not possible to detail detail tabs os a custom tabs",
99
105
  actions: {
100
106
  hide: "Hide",
101
107
  show: "Make visible",
@@ -39,6 +39,7 @@ export const snkFormConfigMessages = {
39
39
  labelNewGroup: "Añadir nuevo grupo",
40
40
  mainArea: "Área principal",
41
41
  tabGeneral: "General",
42
+ canNotEditCustomGuide: "No es posible editar pestañas de detalles y pestañas personalizadas",
42
43
  createNewGroup: "Crear nuevo grupo",
43
44
  newGroup: "Nuevo grupo",
44
45
  noGuideSelected: "Seleccione una pestaña y comience a configurar",
@@ -66,6 +67,10 @@ export const snkFormConfigMessages = {
66
67
  title: "Atención",
67
68
  message: "¡Seleccione una guía para iniciar la configuración!"
68
69
  },
70
+ canNotAddFieldToGuide: {
71
+ title: "Atención",
72
+ message: "¡No es posible agregar campos a pestañas de detalles o pestañas personalizadas!"
73
+ },
69
74
  alert: {
70
75
  titleGroupExists: "Ya existe un grupo con título",
71
76
  titleGroupEditing: "Hay un <b>grupo<b/> en edición. <br/> Finalice la edición para guardar las configuraciones.",
@@ -96,6 +101,7 @@ export const snkFormConfigMessages = {
96
101
  createNewGuide: "Crear nueva pestaña",
97
102
  noHiddenGuides: "No hay pestañas ocultas",
98
103
  noVisibleGuides: "No hay pestañas visibles",
104
+ canNotDeleteCustomGuide: "No es posible eliminar pestañas de detalles o pestañas personalizadas",
99
105
  actions: {
100
106
  hide: "Ocultar",
101
107
  show: "Hacer visible",
@@ -39,6 +39,7 @@ export const snkFormConfigMessages = {
39
39
  labelNewGroup: "Adicionar novo grupo",
40
40
  mainArea: "Área principal",
41
41
  tabGeneral: "Geral",
42
+ canNotEditCustomGuide: "Não é possível editar guias detalhe e guias personalizadas",
42
43
  createNewGroup: "Criar novo grupo",
43
44
  newGroup: "Criar novo grupo",
44
45
  noGuideSelected: "Selecione uma guia e comece a configurar",
@@ -66,6 +67,10 @@ export const snkFormConfigMessages = {
66
67
  title: "Atenção",
67
68
  message: "Selecione uma guia para iniciar a configuração!"
68
69
  },
70
+ canNotAddFieldToGuide: {
71
+ title: "Atenção",
72
+ message: "Não é possível adicionar campos à guias customizadas ou guias detalhe!"
73
+ },
69
74
  alert: {
70
75
  titleGroupExists: "Já existe um grupo com título",
71
76
  titleGroupEditing: "Há um <b>grupo<b/> em edição. <br/> Finalize a edição para salvar as configurações.",
@@ -96,10 +101,11 @@ export const snkFormConfigMessages = {
96
101
  createNewGuide: "Criar nova guia",
97
102
  noHiddenGuides: "Nenhuma guia oculta",
98
103
  noVisibleGuides: "Nenhuma guia visível",
104
+ canNotDeleteCustomGuide: "Não é possível excluir guias detalhe e guias personalizadas",
99
105
  actions: {
100
106
  hide: "Ocultar",
101
107
  show: "Tornar visível",
102
- delete: "Excluir"
108
+ delete: "Excluir",
103
109
  }
104
110
  }
105
111
  };