@sankhyalabs/sankhyablocks 8.1.0 → 8.2.0-rc.1

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 (124) hide show
  1. package/dist/cjs/{ConfigStorage-73e7afff.js → ConfigStorage-e9d7fa82.js} +4 -4
  2. package/dist/cjs/{DataFetcher-004811c6.js → DataFetcher-39b63a1e.js} +1 -1
  3. package/dist/cjs/{SnkFormConfigManager-d1f1a222.js → SnkFormConfigManager-2f8eccd9.js} +2 -2
  4. package/dist/cjs/auth-fetcher-d407c31c.js +34 -0
  5. package/dist/cjs/{dataunit-fetcher-029eafbd.js → dataunit-fetcher-15a7cc88.js} +1 -1
  6. package/dist/cjs/{filter-bar-config-fetcher-2b8ed9d0.js → filter-bar-config-fetcher-24548cec.js} +1 -1
  7. package/dist/cjs/{form-config-fetcher-181767c9.js → form-config-fetcher-ab3ce222.js} +2 -2
  8. package/dist/cjs/loader.cjs.js +1 -1
  9. package/dist/cjs/{pesquisa-fetcher-9a97994a.js → pesquisa-fetcher-96c042aa.js} +1 -1
  10. package/dist/cjs/{resource-fetcher-c0332609.js → resource-fetcher-64102551.js} +1 -1
  11. package/dist/cjs/sankhyablocks.cjs.js +1 -1
  12. package/dist/cjs/snk-actions-button.cjs.entry.js +2 -2
  13. package/dist/cjs/snk-application.cjs.entry.js +10 -37
  14. package/dist/cjs/snk-attach.cjs.entry.js +2 -2
  15. package/dist/cjs/snk-crud.cjs.entry.js +9 -5
  16. package/dist/cjs/snk-data-exporter.cjs.entry.js +2 -2
  17. package/dist/cjs/{snk-data-unit-d5109a08.js → snk-data-unit-e89e07bd.js} +4 -3
  18. package/dist/cjs/snk-data-unit.cjs.entry.js +1 -1
  19. package/dist/cjs/snk-detail-view.cjs.entry.js +13 -22
  20. package/dist/cjs/snk-filter-bar.cjs.entry.js +5 -5
  21. package/dist/cjs/snk-filter-detail.cjs.entry.js +3 -3
  22. package/dist/cjs/snk-filter-modal-item.cjs.entry.js +5 -5
  23. package/dist/cjs/snk-form-config.cjs.entry.js +3 -3
  24. package/dist/cjs/snk-form.cjs.entry.js +6 -6
  25. package/dist/cjs/snk-grid-config.cjs.entry.js +5 -5
  26. package/dist/cjs/snk-grid.cjs.entry.js +9 -6
  27. package/dist/cjs/{snk-guides-viewer-aa3e3bfa.js → snk-guides-viewer-8518c61b.js} +5 -6
  28. package/dist/cjs/snk-guides-viewer.cjs.entry.js +8 -8
  29. package/dist/cjs/snk-personalized-filter.cjs.entry.js +5 -5
  30. package/dist/cjs/snk-print-selector.cjs.entry.js +1 -1
  31. package/dist/cjs/snk-simple-crud.cjs.entry.js +5 -11
  32. package/dist/collection/components/snk-crud/snk-crud.js +26 -5
  33. package/dist/collection/components/snk-crud/subcomponents/snk-detail-view/snk-detail-view.js +24 -14
  34. package/dist/collection/components/snk-crud/subcomponents/snk-guides-viewer.js +20 -3
  35. package/dist/collection/components/snk-data-unit/snk-data-unit.js +21 -3
  36. package/dist/collection/components/snk-grid/snk-grid.js +60 -2
  37. package/dist/collection/components/snk-simple-crud/snk-simple-crud.js +21 -9
  38. package/dist/collection/lib/http/data-fetcher/DataFetcher.js +1 -1
  39. package/dist/components/DataFetcher.js +1 -1
  40. package/dist/components/auth-fetcher.js +32 -0
  41. package/dist/components/snk-application2.js +1 -29
  42. package/dist/components/snk-crud.js +8 -3
  43. package/dist/components/snk-data-unit2.js +5 -3
  44. package/dist/components/snk-detail-view2.js +10 -17
  45. package/dist/components/snk-grid2.js +7 -1
  46. package/dist/components/snk-simple-crud2.js +4 -9
  47. package/dist/esm/{ConfigStorage-19a7260b.js → ConfigStorage-1090289a.js} +4 -4
  48. package/dist/esm/{DataFetcher-e0fc5549.js → DataFetcher-a4ed43e7.js} +1 -1
  49. package/dist/esm/{SnkFormConfigManager-1a42eb02.js → SnkFormConfigManager-de537eca.js} +2 -2
  50. package/dist/esm/auth-fetcher-c53e0d6c.js +32 -0
  51. package/dist/esm/{dataunit-fetcher-6a695723.js → dataunit-fetcher-8d0bfa4a.js} +1 -1
  52. package/dist/esm/{filter-bar-config-fetcher-06e02851.js → filter-bar-config-fetcher-2417b8cf.js} +1 -1
  53. package/dist/esm/{form-config-fetcher-9e167008.js → form-config-fetcher-4065db9a.js} +2 -2
  54. package/dist/esm/loader.js +1 -1
  55. package/dist/esm/{pesquisa-fetcher-9118eb7a.js → pesquisa-fetcher-7460b876.js} +1 -1
  56. package/dist/esm/{resource-fetcher-768d5556.js → resource-fetcher-45a70066.js} +1 -1
  57. package/dist/esm/sankhyablocks.js +1 -1
  58. package/dist/esm/snk-actions-button.entry.js +2 -2
  59. package/dist/esm/snk-application.entry.js +8 -35
  60. package/dist/esm/snk-attach.entry.js +2 -2
  61. package/dist/esm/snk-crud.entry.js +9 -5
  62. package/dist/esm/snk-data-exporter.entry.js +2 -2
  63. package/dist/esm/{snk-data-unit-3a0bbfcb.js → snk-data-unit-8c4d944d.js} +4 -3
  64. package/dist/esm/snk-data-unit.entry.js +1 -1
  65. package/dist/esm/snk-detail-view.entry.js +13 -22
  66. package/dist/esm/snk-filter-bar.entry.js +5 -5
  67. package/dist/esm/snk-filter-detail.entry.js +3 -3
  68. package/dist/esm/snk-filter-modal-item.entry.js +5 -5
  69. package/dist/esm/snk-form-config.entry.js +3 -3
  70. package/dist/esm/snk-form.entry.js +6 -6
  71. package/dist/esm/snk-grid-config.entry.js +5 -5
  72. package/dist/esm/snk-grid.entry.js +9 -6
  73. package/dist/esm/{snk-guides-viewer-aa386f6e.js → snk-guides-viewer-cdecff6e.js} +5 -6
  74. package/dist/esm/snk-guides-viewer.entry.js +8 -8
  75. package/dist/esm/snk-personalized-filter.entry.js +5 -5
  76. package/dist/esm/snk-print-selector.entry.js +1 -1
  77. package/dist/esm/snk-simple-crud.entry.js +5 -11
  78. package/dist/sankhyablocks/{p-7c7764bf.entry.js → p-0848ee4d.entry.js} +1 -1
  79. package/dist/sankhyablocks/p-0bd9c412.js +1 -0
  80. package/dist/sankhyablocks/{p-976e56e9.js → p-0fb83448.js} +1 -1
  81. package/dist/sankhyablocks/p-10b2aedc.entry.js +1 -0
  82. package/dist/sankhyablocks/p-1f63dcd4.entry.js +1 -0
  83. package/dist/sankhyablocks/p-216b2102.entry.js +1 -0
  84. package/dist/sankhyablocks/{p-df8621b4.js → p-44e66c8d.js} +1 -1
  85. package/dist/sankhyablocks/{p-6759adae.entry.js → p-4514fc6a.entry.js} +1 -1
  86. package/dist/sankhyablocks/{p-bc735728.entry.js → p-50c13cc8.entry.js} +1 -1
  87. package/dist/sankhyablocks/{p-d1b89765.js → p-52c6b2e7.js} +1 -1
  88. package/dist/sankhyablocks/p-564efc43.js +1 -0
  89. package/dist/sankhyablocks/{p-8f8184ff.js → p-5994af77.js} +1 -1
  90. package/dist/sankhyablocks/{p-0ed0fc02.entry.js → p-6bb904bb.entry.js} +1 -1
  91. package/dist/sankhyablocks/p-6e06175e.entry.js +1 -0
  92. package/dist/sankhyablocks/{p-c0f656af.entry.js → p-6f0795c8.entry.js} +1 -1
  93. package/dist/sankhyablocks/{p-f31bfdee.entry.js → p-7588f006.entry.js} +1 -1
  94. package/dist/sankhyablocks/{p-98f9d076.js → p-847e6c20.js} +2 -2
  95. package/dist/sankhyablocks/p-8f3652bf.entry.js +11 -0
  96. package/dist/sankhyablocks/{p-e28129aa.entry.js → p-9471cbc9.entry.js} +1 -1
  97. package/dist/sankhyablocks/{p-0a4c753d.js → p-9d18017a.js} +1 -1
  98. package/dist/sankhyablocks/{p-815a42c0.entry.js → p-a42dd503.entry.js} +1 -1
  99. package/dist/sankhyablocks/p-b04fb9d4.js +1 -0
  100. package/dist/sankhyablocks/{p-2ac9c585.js → p-b978da60.js} +1 -1
  101. package/dist/sankhyablocks/p-c32b9d7c.entry.js +1 -0
  102. package/dist/sankhyablocks/{p-e7e54737.entry.js → p-c6feb995.entry.js} +1 -1
  103. package/dist/sankhyablocks/{p-8a41172a.entry.js → p-d7c7a289.entry.js} +1 -1
  104. package/dist/sankhyablocks/{p-7b8b8ae9.js → p-f3b7b69e.js} +1 -1
  105. package/dist/sankhyablocks/{p-be684b38.entry.js → p-f7eded3a.entry.js} +1 -1
  106. package/dist/sankhyablocks/p-ff7383b0.entry.js +1 -0
  107. package/dist/sankhyablocks/sankhyablocks.esm.js +1 -1
  108. package/dist/types/components/snk-crud/snk-crud.d.ts +5 -0
  109. package/dist/types/components/snk-crud/subcomponents/snk-detail-view/snk-detail-view.d.ts +5 -0
  110. package/dist/types/components/snk-crud/subcomponents/snk-guides-viewer.d.ts +4 -0
  111. package/dist/types/components/snk-data-unit/snk-data-unit.d.ts +4 -0
  112. package/dist/types/components/snk-grid/snk-grid.d.ts +13 -0
  113. package/dist/types/components/snk-simple-crud/snk-simple-crud.d.ts +4 -0
  114. package/dist/types/components.d.ts +64 -0
  115. package/package.json +1 -1
  116. package/dist/sankhyablocks/p-0a94fdbd.entry.js +0 -1
  117. package/dist/sankhyablocks/p-1e0189ff.entry.js +0 -1
  118. package/dist/sankhyablocks/p-50d72261.entry.js +0 -1
  119. package/dist/sankhyablocks/p-8fdc3108.js +0 -1
  120. package/dist/sankhyablocks/p-9edad923.js +0 -1
  121. package/dist/sankhyablocks/p-abdcac04.entry.js +0 -1
  122. package/dist/sankhyablocks/p-b0847056.entry.js +0 -1
  123. package/dist/sankhyablocks/p-ccbfb1cf.entry.js +0 -1
  124. package/dist/sankhyablocks/p-f92fda53.entry.js +0 -11
@@ -8,7 +8,6 @@ import TaskbarProcessor from '../snk-taskbar/processor/taskbar-processor';
8
8
  import store from "../../lib/store";
9
9
  import SnkMultiSelectionListDataSource from './filtercolumn/SnkMultiSelectionListDataSource';
10
10
  import { SelectionMode } from '@sankhyalabs/core/dist/dataunit/DataUnit';
11
- // import { IRecordValidator } from '@sankhyalabs/ezui/dist/types/utils/form/interfaces';
12
11
  export class SnkGrid {
13
12
  constructor() {
14
13
  this._multiSelectionListDataSource = new SnkMultiSelectionListDataSource();
@@ -37,6 +36,9 @@ export class SnkGrid {
37
36
  this.multipleSelection = undefined;
38
37
  this.presentationMode = PresentationMode.PRIMARY;
39
38
  this.messagesBuilder = undefined;
39
+ this.useEnterLikeTab = false;
40
+ this.recordsValidator = undefined;
41
+ this.canEdit = true;
40
42
  }
41
43
  /**
42
44
  * Exibe a janela de configurações da grade.
@@ -305,7 +307,7 @@ export class SnkGrid {
305
307
  return undefined;
306
308
  }
307
309
  return (h("div", { class: "snk-grid__container ez-flex ez-flex--column ez-flex-item--auto ez-padding--large" }, h("div", { class: "snk-grid__header ez-margin-bottom--medium" }, h("snk-filter-bar", { ref: (ref) => this._snkFilterBar = ref, dataUnit: this._dataUnit, "data-element-id": "gridFilter", class: "snk-grid__filter-bar ez-align--top", configName: this.configName, messagesBuilder: this.messagesBuilder }), ((_b = (_a = this._snkFilterBar) === null || _a === void 0 ? void 0 : _a.filterConfig) === null || _b === void 0 ? void 0 : _b.length) > 0 &&
308
- h("hr", { class: "ez-divider-vertical ez-divider--dark ez-margin-left--medium snk-grid__header-divider" }), h("snk-taskbar", { class: "ez-padding-left--medium", "data-element-id": "grid_top", key: "topTaskbar", configName: this.configName, dataUnit: this._dataUnit, messagesBuilder: this.messagesBuilder, buttons: this._topTaskbarProcessor.buttons, disabledButtons: this._topTaskbarProcessor.disabledButtons, customButtons: this._topTaskbarProcessor.customButtons, primaryButton: this.getPrimaryButton() })), h("ez-grid", { ref: ref => this._grid = ref, class: (this.presentationMode === PresentationMode.SECONDARY ? "snk-grid-container__without-shadow " : "") + "snk-grid__table", "data-element-id": "embedded", dataUnit: this._dataUnit, key: "grid-" + this._snkDataUnit.entityName, config: this._gridConfig, onConfigChange: (evt) => { this.gridConfigChangeHandler(evt); }, onEzDoubleClick: () => this.gridDoubleClick.emit(), statusResolver: this.statusResolver, multipleSelection: this.multipleSelection, onComponentReady: () => this.onEzGridReady(), columnfilterDataSource: this._multiSelectionListDataSource, selectionToastConfig: this.selectionToastConfig }, h("snk-taskbar", { dataUnit: this._dataUnit, configName: this.configName, messagesBuilder: this.messagesBuilder, "data-element-id": "grid_left", buttons: this._headerTaskbarProcessor.buttons, disabledButtons: this._headerTaskbarProcessor.disabledButtons, customButtons: this._headerTaskbarProcessor.customButtons, slot: "leftButtons", actionsList: this.actionsList })), h("div", { class: "ez-col ez-col--sd-12" }, h("slot", { name: "SnkGridFooter" })), h("ez-modal", { modalSize: "small", closeEsc: false, closeOutsideClick: false, opened: this._popUpGridConfig, onEzCloseModal: () => this.closeGridConfig() }, h("snk-grid-config", { ref: ref => this._snkGridConfig = ref, config: this._gridConfig, "data-element-id": this._element.getAttribute(ElementIDUtils.DATA_ELEMENT_ID_ATTRIBUTE_NAME), application: this._application, selectedIndex: 0, configName: this.configName, onConfigChange: (evt) => this.modalConfigChangeHandler(evt), onConfigCancel: () => this.closeGridConfig() }))));
310
+ h("hr", { class: "ez-divider-vertical ez-divider--dark ez-margin-left--medium snk-grid__header-divider" }), h("snk-taskbar", { class: "ez-padding-left--medium", "data-element-id": "grid_top", key: "topTaskbar", configName: this.configName, dataUnit: this._dataUnit, messagesBuilder: this.messagesBuilder, buttons: this._topTaskbarProcessor.buttons, disabledButtons: this._topTaskbarProcessor.disabledButtons, customButtons: this._topTaskbarProcessor.customButtons, primaryButton: this.getPrimaryButton() })), h("ez-grid", { ref: ref => this._grid = ref, class: (this.presentationMode === PresentationMode.SECONDARY ? "snk-grid-container__without-shadow " : "") + "snk-grid__table", "data-element-id": "embedded", dataUnit: this._dataUnit, key: "grid-" + this._snkDataUnit.entityName, config: this._gridConfig, onConfigChange: (evt) => { this.gridConfigChangeHandler(evt); }, onEzDoubleClick: () => this.gridDoubleClick.emit(), statusResolver: this.statusResolver, multipleSelection: this.multipleSelection, onComponentReady: () => this.onEzGridReady(), columnfilterDataSource: this._multiSelectionListDataSource, selectionToastConfig: this.selectionToastConfig, useEnterLikeTab: this.useEnterLikeTab, recordsValidator: this.recordsValidator, canEdit: this.canEdit }, h("snk-taskbar", { dataUnit: this._dataUnit, configName: this.configName, messagesBuilder: this.messagesBuilder, "data-element-id": "grid_left", buttons: this._headerTaskbarProcessor.buttons, disabledButtons: this._headerTaskbarProcessor.disabledButtons, customButtons: this._headerTaskbarProcessor.customButtons, slot: "leftButtons", actionsList: this.actionsList })), h("div", { class: "ez-col ez-col--sd-12" }, h("slot", { name: "SnkGridFooter" })), h("ez-modal", { modalSize: "small", closeEsc: false, closeOutsideClick: false, opened: this._popUpGridConfig, onEzCloseModal: () => this.closeGridConfig() }, h("snk-grid-config", { ref: ref => this._snkGridConfig = ref, config: this._gridConfig, "data-element-id": this._element.getAttribute(ElementIDUtils.DATA_ELEMENT_ID_ATTRIBUTE_NAME), application: this._application, selectedIndex: 0, configName: this.configName, onConfigChange: (evt) => this.modalConfigChangeHandler(evt), onConfigCancel: () => this.closeGridConfig() }))));
309
311
  }
310
312
  static get is() { return "snk-grid"; }
311
313
  static get encapsulation() { return "scoped"; }
@@ -501,6 +503,62 @@ export class SnkGrid {
501
503
  "tags": [],
502
504
  "text": "Respons\u00E1vel por flexibilizar e padronizar o uso de mensagens nos blocos de constru\u00E7\u00E3o."
503
505
  }
506
+ },
507
+ "useEnterLikeTab": {
508
+ "type": "boolean",
509
+ "mutable": false,
510
+ "complexType": {
511
+ "original": "boolean",
512
+ "resolved": "boolean",
513
+ "references": {}
514
+ },
515
+ "required": false,
516
+ "optional": false,
517
+ "docs": {
518
+ "tags": [],
519
+ "text": "Quando verdadeiro, o ENTER far\u00E1 a navega\u00E7\u00E3o como se fosse a tecla TAB na grade."
520
+ },
521
+ "attribute": "use-enter-like-tab",
522
+ "reflect": false,
523
+ "defaultValue": "false"
524
+ },
525
+ "recordsValidator": {
526
+ "type": "unknown",
527
+ "mutable": false,
528
+ "complexType": {
529
+ "original": "IRecordValidator",
530
+ "resolved": "IRecordValidator",
531
+ "references": {
532
+ "IRecordValidator": {
533
+ "location": "import",
534
+ "path": "@sankhyalabs/ezui/dist/types/utils/form/interfaces"
535
+ }
536
+ }
537
+ },
538
+ "required": false,
539
+ "optional": false,
540
+ "docs": {
541
+ "tags": [],
542
+ "text": "Validador respons\u00E1vel por checar a integridade das informa\u00E7\u00F5es do registro."
543
+ }
544
+ },
545
+ "canEdit": {
546
+ "type": "boolean",
547
+ "mutable": false,
548
+ "complexType": {
549
+ "original": "boolean",
550
+ "resolved": "boolean",
551
+ "references": {}
552
+ },
553
+ "required": false,
554
+ "optional": false,
555
+ "docs": {
556
+ "tags": [],
557
+ "text": "Define se a edi\u00E7\u00E3o est\u00E1 habilitada na grid."
558
+ },
559
+ "attribute": "can-edit",
560
+ "reflect": false,
561
+ "defaultValue": "true"
504
562
  }
505
563
  };
506
564
  }
@@ -11,11 +11,6 @@ export class SnkSimpleCrud {
11
11
  this.REGULAR_DEFAULT_BTNS = ["INSERT", "REFRESH", "PREVIOUS", "NEXT", "DIVIDER"];
12
12
  this.REGULAR_SELECTED_BTNS = ["INSERT", "REFRESH", "PREVIOUS", "NEXT", "DIVIDER", "CLONE", "REMOVE", "DIVIDER"];
13
13
  this._multiSelectionListDataSource = new SnkMultiSelectionListDataSource();
14
- // /**
15
- // * Quando verdadeiro, o ENTER fará a navegação como se fosse a tecla TAB na grade.
16
- // */
17
- // @Prop()
18
- // useEnterLikeTab: boolean = false;
19
14
  this._taskbarProcessor = new TaskbarProcessor({
20
15
  "snkSimpleCrudTaskbar.form_regular": this.resolveInMemoryBtns(this.REGULAR_DEFAULT_BTNS).concat(TaskbarElement.GRID_MODE),
21
16
  "snkSimpleCrudTaskbar.grid_regular": this.resolveInMemoryBtns(this.REGULAR_DEFAULT_BTNS).concat(TaskbarElement.FORM_MODE),
@@ -34,6 +29,7 @@ export class SnkSimpleCrud {
34
29
  this.useCancelConfirm = true;
35
30
  this.taskbarManager = undefined;
36
31
  this.messagesBuilder = undefined;
32
+ this.useEnterLikeTab = false;
37
33
  }
38
34
  resolveInMemoryBtns(taskbarButtons) {
39
35
  const newTaskBarConfig = [...taskbarButtons];
@@ -178,11 +174,9 @@ export class SnkSimpleCrud {
178
174
  }
179
175
  render() {
180
176
  var _a;
181
- return (h("snk-data-unit", { class: "simple-crud__container", dataUnit: this.dataUnit, useCancelConfirm: this.useCancelConfirm, onDataStateChange: evt => this.onDataStateChange(evt), onCancelEdition: this.handleCancelEdit.bind(this), onInsertionMode: () => this.goToView(VIEW_MODE.FORM), onDataUnitReady: (evt) => this.dataUnitReady.emit(evt.detail),
182
- // ignoreSaveMessage={this._currentViewMode === VIEW_MODE.GRID}
183
- onMessagesBuilderUpdated: evt => this.messagesBuilder = evt.detail }, h("header", null, h("slot", { name: "snkSimpleCrudHeader" })), h("section", { class: "ez-flex ez-box ez-box--shadow" }, h("snk-taskbar", { class: "ez-box ez-box--shadow ez-padding--medium ez-margin-bottom--large", dataUnit: this.dataUnit, primaryButton: ((_a = this.dataState) === null || _a === void 0 ? void 0 : _a.isDirty) ? "SAVE" : "INSERT", "data-element-id": "grid_left", messagesBuilder: this.messagesBuilder, buttons: this._taskbarProcessor.buttons, disabledButtons: this._taskbarProcessor.disabledButtons, customButtons: this._taskbarProcessor.customButtons, slot: "leftButtons", presentationMode: PresentationMode.SECONDARY }), h("ez-view-stack", { class: "ez-flex ez-flex--column", ref: (ref) => this._viewStack = ref, "data-element-id": "simple-crud" }, h("stack-item", null, h("ez-grid", { dataUnit: this.dataUnit, config: this.gridConfig, "no-header": true, multipleSelection: this.multipleSelection, onEzDoubleClick: () => this.goToView(VIEW_MODE.FORM), columnfilterDataSource: this.dataUnit.name.includes(InMemoryLoader.IN_MEMORY_DATA_UNIT_NAME)
177
+ return (h("snk-data-unit", { class: "simple-crud__container", dataUnit: this.dataUnit, useCancelConfirm: this.useCancelConfirm, onDataStateChange: evt => this.onDataStateChange(evt), onCancelEdition: this.handleCancelEdit.bind(this), onInsertionMode: () => this.goToView(VIEW_MODE.FORM), onDataUnitReady: (evt) => this.dataUnitReady.emit(evt.detail), ignoreSaveMessage: this._currentViewMode === VIEW_MODE.GRID, onMessagesBuilderUpdated: evt => this.messagesBuilder = evt.detail }, h("header", null, h("slot", { name: "snkSimpleCrudHeader" })), h("section", { class: "ez-flex ez-box ez-box--shadow" }, h("snk-taskbar", { class: "ez-box ez-box--shadow ez-padding--medium ez-margin-bottom--large", dataUnit: this.dataUnit, primaryButton: ((_a = this.dataState) === null || _a === void 0 ? void 0 : _a.isDirty) ? "SAVE" : "INSERT", "data-element-id": "grid_left", messagesBuilder: this.messagesBuilder, buttons: this._taskbarProcessor.buttons, disabledButtons: this._taskbarProcessor.disabledButtons, customButtons: this._taskbarProcessor.customButtons, slot: "leftButtons", presentationMode: PresentationMode.SECONDARY }), h("ez-view-stack", { class: "ez-flex ez-flex--column", ref: (ref) => this._viewStack = ref, "data-element-id": "simple-crud" }, h("stack-item", null, h("ez-grid", { dataUnit: this.dataUnit, config: this.gridConfig, "no-header": true, multipleSelection: this.multipleSelection, onEzDoubleClick: () => this.goToView(VIEW_MODE.FORM), columnfilterDataSource: this.dataUnit.name.includes(InMemoryLoader.IN_MEMORY_DATA_UNIT_NAME)
184
178
  ? undefined
185
- : this._multiSelectionListDataSource }, h("div", { slot: "footer" }, h("slot", { name: "snkSimpleCrudFooter" })))), h("stack-item", null, h("ez-form", { dataUnit: this.dataUnit, config: this.formConfig }))))));
179
+ : this._multiSelectionListDataSource, useEnterLikeTab: this.useEnterLikeTab }, h("div", { slot: "footer" }, h("slot", { name: "snkSimpleCrudFooter" })))), h("stack-item", null, h("ez-form", { dataUnit: this.dataUnit, config: this.formConfig }))))));
186
180
  }
187
181
  static get is() { return "snk-simple-crud"; }
188
182
  static get encapsulation() { return "scoped"; }
@@ -375,6 +369,24 @@ export class SnkSimpleCrud {
375
369
  "tags": [],
376
370
  "text": "Respons\u00E1vel por flexibilizar e padronizar o uso de mensagens nos blocos de constru\u00E7\u00E3o."
377
371
  }
372
+ },
373
+ "useEnterLikeTab": {
374
+ "type": "boolean",
375
+ "mutable": false,
376
+ "complexType": {
377
+ "original": "boolean",
378
+ "resolved": "boolean",
379
+ "references": {}
380
+ },
381
+ "required": false,
382
+ "optional": false,
383
+ "docs": {
384
+ "tags": [],
385
+ "text": "Quando verdadeiro, o ENTER far\u00E1 a navega\u00E7\u00E3o como se fosse a tecla TAB na grade."
386
+ },
387
+ "attribute": "use-enter-like-tab",
388
+ "reflect": false,
389
+ "defaultValue": "false"
378
390
  }
379
391
  };
380
392
  }
@@ -7,7 +7,7 @@ import { GraphQLRecaller } from './recaller/GraphQLRecaller';
7
7
  import { PrintUtils } from '../../utils/PrintUtils';
8
8
  export class DataFetcher {
9
9
  constructor() {
10
- this.GRAPHQL_PATH = "/mgefin-bff/graphql";
10
+ this.GRAPHQL_PATH = `/${window.MGE_MODULE_NAME || 'mgefin-bff'}/graphql`;
11
11
  this.watingRequestsById = new Map();
12
12
  }
13
13
  static get() {
@@ -6679,7 +6679,7 @@ class AppletImpressao {
6679
6679
 
6680
6680
  class DataFetcher {
6681
6681
  constructor() {
6682
- this.GRAPHQL_PATH = "/mgefin-bff/graphql";
6682
+ this.GRAPHQL_PATH = `/${window.MGE_MODULE_NAME || 'mgefin-bff'}/graphql`;
6683
6683
  this.watingRequestsById = new Map();
6684
6684
  }
6685
6685
  static get() {
@@ -0,0 +1,32 @@
1
+ import { ObjectUtils } from '@sankhyalabs/core';
2
+ import { R as ResourceFetcher } from './resource-fetcher.js';
3
+
4
+ class AuthFetcher extends ResourceFetcher {
5
+ getData(resourceID) {
6
+ const completePath = `cfg://auth/${resourceID}`;
7
+ return new Promise((resolve, reject) => {
8
+ this.loadResource(completePath)
9
+ .then((loadedResource) => {
10
+ let auth = ObjectUtils.stringToObject(loadedResource);
11
+ if (auth && typeof (auth) === 'object') {
12
+ resolve(auth);
13
+ }
14
+ }).catch((error) => {
15
+ reject(error);
16
+ });
17
+ });
18
+ }
19
+ }
20
+ var AutorizationType;
21
+ (function (AutorizationType) {
22
+ AutorizationType["INSERT"] = "I";
23
+ AutorizationType["UPDATE"] = "A";
24
+ AutorizationType["REMOVE"] = "E";
25
+ AutorizationType["SHOW"] = "C";
26
+ AutorizationType["CONFIG"] = "F";
27
+ AutorizationType["CONFIG_NUMBER"] = "N";
28
+ AutorizationType["CLONE"] = "D";
29
+ AutorizationType["CONFIG_GRID"] = "G";
30
+ })(AutorizationType || (AutorizationType = {}));
31
+
32
+ export { AutorizationType as A, AuthFetcher as a };
@@ -5,7 +5,7 @@ import { ApplicationUtils } from '@sankhyalabs/ezui/dist/collection/utils';
5
5
  import { P as PesquisaFetcher } from './pesquisa-fetcher.js';
6
6
  import { G as GridConfigFetcher, C as ConfigStorage } from './ConfigStorage.js';
7
7
  import { D as DataUnitFetcher } from './dataunit-fetcher.js';
8
- import { R as ResourceFetcher } from './resource-fetcher.js';
8
+ import { A as AutorizationType, a as AuthFetcher } from './auth-fetcher.js';
9
9
  import { S as SnkMessageBuilder } from './SnkMessageBuilder.js';
10
10
  import { d as defineCustomElement$1 } from './snk-pesquisa2.js';
11
11
 
@@ -226,34 +226,6 @@ class ParametersFetcher {
226
226
 
227
227
  const _0x5b7870=_0x2202;(function(_0x42e134,_0x5d9727){const _0x185c97=_0x2202,_0x5854c7=_0x42e134();while(!![]){try{const _0x129d35=parseInt(_0x185c97(0x18f))/0x1*(-parseInt(_0x185c97(0x183))/0x2)+-parseInt(_0x185c97(0x191))/0x3+parseInt(_0x185c97(0x17d))/0x4*(-parseInt(_0x185c97(0x185))/0x5)+parseInt(_0x185c97(0x184))/0x6*(-parseInt(_0x185c97(0x182))/0x7)+parseInt(_0x185c97(0x17b))/0x8+parseInt(_0x185c97(0x18c))/0x9+parseInt(_0x185c97(0x17f))/0xa;if(_0x129d35===_0x5d9727)break;else _0x5854c7['push'](_0x5854c7['shift']());}catch(_0x4becb4){_0x5854c7['push'](_0x5854c7['shift']());}}}(_0xdfb1,0x44ac7));function _0x2202(_0x2eac1f,_0x170d27){const _0xdfb1b4=_0xdfb1();return _0x2202=function(_0x2202d7,_0x224df5){_0x2202d7=_0x2202d7-0x17a;let _0x4d54a9=_0xdfb1b4[_0x2202d7];return _0x4d54a9;},_0x2202(_0x2eac1f,_0x170d27);}function _0xdfb1(){const _0x2b9dc4=['true','863GKWjmo','parse','56355fjjjAm','isSup','putAccess','4324480sjuCdS','hasOwnProperty','239748okvJLB','name','6055770tXeRaU','actions','forEach','7RPRvzn','1042CHxkUw','2988126NIwRMm','20MTNzmH','authorizationSf','item','string','hasAccess','isArray','Objeto\x20não\x20pode\x20ser\x20indefinido.','3071943fWslZp','parseFromJSON'];_0xdfb1=function(){return _0x2b9dc4;};return _0xdfb1();}class MGEAuthorization{[_0x5b7870(0x18d)](_0x37e96b){const _0x580407=_0x5b7870;_0x37e96b=utxt(_0x37e96b[_0x580407(0x186)]);typeof _0x37e96b==_0x580407(0x188)&&(_0x37e96b=JSON[_0x580407(0x190)](_0x37e96b));if(_0x37e96b==undefined)throw Error(_0x580407(0x18b));const _0x291d34=new MGEAuthorizationData(_0x37e96b[_0x580407(0x192)]==='S'||_0x37e96b[_0x580407(0x192)]===!![]);return Array[_0x580407(0x18a)](_0x37e96b[_0x580407(0x187)])&&_0x37e96b[_0x580407(0x187)][_0x580407(0x181)](_0x58a748=>_0x291d34['putAccess'](_0x58a748[_0x580407(0x17e)],String(_0x58a748['status'])==_0x580407(0x18e))),_0x291d34;}}class MGEAuthorizationData{constructor(_0x51ec5d){const _0x2c8472=_0x5b7870;this['isSup']=_0x51ec5d,this[_0x2c8472(0x180)]={};}[_0x5b7870(0x17a)](_0x5bd0f2,_0x2ef465){const _0x40d701=_0x5b7870;this[_0x40d701(0x180)][_0x5bd0f2]=_0x2ef465;}[_0x5b7870(0x189)](_0x4fd772){const _0x3707c1=_0x5b7870;if(this[_0x3707c1(0x192)])return !![];let _0x25e60a=!![];return this[_0x3707c1(0x180)][_0x3707c1(0x17c)](_0x4fd772)&&(_0x25e60a=this['actions'][_0x4fd772]),_0x25e60a;}['isUserSup'](){return this['isSup'];}}
228
228
 
229
- class AuthFetcher extends ResourceFetcher {
230
- getData(resourceID) {
231
- const completePath = `cfg://auth/${resourceID}`;
232
- return new Promise((resolve, reject) => {
233
- this.loadResource(completePath)
234
- .then((loadedResource) => {
235
- let auth = ObjectUtils.stringToObject(loadedResource);
236
- if (auth && typeof (auth) === 'object') {
237
- resolve(auth);
238
- }
239
- }).catch((error) => {
240
- reject(error);
241
- });
242
- });
243
- }
244
- }
245
- var AutorizationType;
246
- (function (AutorizationType) {
247
- AutorizationType["INSERT"] = "I";
248
- AutorizationType["UPDATE"] = "A";
249
- AutorizationType["REMOVE"] = "E";
250
- AutorizationType["SHOW"] = "C";
251
- AutorizationType["CONFIG"] = "F";
252
- AutorizationType["CONFIG_NUMBER"] = "N";
253
- AutorizationType["CLONE"] = "D";
254
- AutorizationType["CONFIG_GRID"] = "G";
255
- })(AutorizationType || (AutorizationType = {}));
256
-
257
229
  const snkApplicationCss = ".sc-snk-application-h{display:flex;flex-direction:column;height:100%}";
258
230
 
259
231
  const SnkApplication = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
@@ -5,6 +5,7 @@ import './DataFetcher.js';
5
5
  import './pesquisa-fetcher.js';
6
6
  import { P as PresentationMode } from './index2.js';
7
7
  import { V as VIEW_MODE } from './constants.js';
8
+ import { A as AutorizationType } from './auth-fetcher.js';
8
9
  import { d as defineCustomElement$v } from './snk-actions-button2.js';
9
10
  import { d as defineCustomElement$u } from './snk-attach2.js';
10
11
  import { d as defineCustomElement$t } from './snk-config-options2.js';
@@ -48,6 +49,7 @@ const SnkCrud$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
48
49
  this._dataState = undefined;
49
50
  this.attachmentRegisterKey = undefined;
50
51
  this._currentViewMode = VIEW_MODE.GRID;
52
+ this._canEdit = undefined;
51
53
  this.configName = undefined;
52
54
  this.selectionToastConfig = undefined;
53
55
  this.showActionButtons = false;
@@ -58,6 +60,7 @@ const SnkCrud$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
58
60
  this.multipleSelection = true;
59
61
  this.presentationMode = PresentationMode.PRIMARY;
60
62
  this.messagesBuilder = undefined;
63
+ this.useEnterLikeTab = false;
61
64
  }
62
65
  /**
63
66
  * Usado para alternar a visão entre GRID e FORM externamente.
@@ -141,7 +144,7 @@ const SnkCrud$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
141
144
  }
142
145
  componentWillLoad() {
143
146
  const application = ApplicationContext.getContextValue("__SNK__APPLICATION__");
144
- // application.hasAccess(AutorizationType.UPDATE).then(canEdit=>this._canEdit = canEdit)
147
+ application.hasAccess(AutorizationType.UPDATE).then(canEdit => this._canEdit = canEdit);
145
148
  let parent = this._element.parentElement;
146
149
  while (parent) {
147
150
  if (parent.tagName.toUpperCase() === "SNK-DATA-UNIT") {
@@ -188,8 +191,8 @@ const SnkCrud$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
188
191
  this.configuratorCancel.emit();
189
192
  }
190
193
  render() {
191
- // this._snkDataUnit.ignoreSaveMessage = this._currentViewMode === VIEW_MODE.GRID;
192
- return (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, "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, selectionToastConfig: this.selectionToastConfig }, 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" }, 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') }, h("div", { slot: "SnkConfigContainerSlot" }, h("slot", { name: "SnkConfigContainerSlot" })))));
194
+ this._snkDataUnit.ignoreSaveMessage = this._currentViewMode === VIEW_MODE.GRID;
195
+ return (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, "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, selectionToastConfig: this.selectionToastConfig, useEnterLikeTab: this.useEnterLikeTab, canEdit: this._canEdit }, 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 }, 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') }, h("div", { slot: "SnkConfigContainerSlot" }, h("slot", { name: "SnkConfigContainerSlot" })))));
193
196
  }
194
197
  get _element() { return this; }
195
198
  static get watchers() { return {
@@ -207,10 +210,12 @@ const SnkCrud$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
207
210
  "multipleSelection": [4, "multiple-selection"],
208
211
  "presentationMode": [1, "presentation-mode"],
209
212
  "messagesBuilder": [1040],
213
+ "useEnterLikeTab": [4, "use-enter-like-tab"],
210
214
  "_dataUnit": [32],
211
215
  "_dataState": [32],
212
216
  "attachmentRegisterKey": [32],
213
217
  "_currentViewMode": [32],
218
+ "_canEdit": [32],
214
219
  "goToView": [64],
215
220
  "openConfigurator": [64],
216
221
  "closeConfigurator": [64],
@@ -21,9 +21,9 @@ const SnkDataUnit = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
21
21
  const duState = this.buildDataState();
22
22
  this.dataState = duState;
23
23
  if (action.type === Action.DATA_SAVED) {
24
- // if(this.ignoreSaveMessage){
25
- // return
26
- // }
24
+ if (this.ignoreSaveMessage) {
25
+ return;
26
+ }
27
27
  const msg = this.getMessage("snkDataUnit.saveInfo", action.payload.records[0]);
28
28
  if (msg != undefined) {
29
29
  this.showSuccessMessage(msg);
@@ -69,6 +69,7 @@ const SnkDataUnit = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
69
69
  this.beforeSave = undefined;
70
70
  this.afterSave = undefined;
71
71
  this.useCancelConfirm = true;
72
+ this.ignoreSaveMessage = undefined;
72
73
  this.configName = undefined;
73
74
  }
74
75
  observePageSize() {
@@ -433,6 +434,7 @@ const SnkDataUnit = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
433
434
  "beforeSave": [16],
434
435
  "afterSave": [16],
435
436
  "useCancelConfirm": [4, "use-cancel-confirm"],
437
+ "ignoreSaveMessage": [4, "ignore-save-message"],
436
438
  "configName": [1, "config-name"],
437
439
  "getDataUnit": [64],
438
440
  "getSelectedRecordsIDsInfo": [64]
@@ -58,6 +58,7 @@ const SnkGuidesViewer = /*@__PURE__*/ proxyCustomElement(class extends HTMLEleme
58
58
  this.selectedGuide = undefined;
59
59
  this.taskbarManager = undefined;
60
60
  this.messagesBuilder = undefined;
61
+ this.canEdit = true;
61
62
  this.presentationMode = undefined;
62
63
  this._breadcrumbItems = [];
63
64
  this._guides = undefined;
@@ -260,9 +261,7 @@ const SnkGuidesViewer = /*@__PURE__*/ proxyCustomElement(class extends HTMLEleme
260
261
  else {
261
262
  detailBranch = this.selectedGuide;
262
263
  }
263
- 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}`,
264
- // canEdit={this.canEdit}
265
- onSnkSwitchGuide: evt => this._guideNavigator.selectGuide(evt.detail) }));
264
+ 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) }));
266
265
  }
267
266
  else {
268
267
  const cardId = this.selectedGuide.id;
@@ -369,6 +368,7 @@ const SnkGuidesViewer = /*@__PURE__*/ proxyCustomElement(class extends HTMLEleme
369
368
  "selectedGuide": [16],
370
369
  "taskbarManager": [16],
371
370
  "messagesBuilder": [1040],
371
+ "canEdit": [4, "can-edit"],
372
372
  "presentationMode": [1, "presentation-mode"],
373
373
  "_breadcrumbItems": [32],
374
374
  "_guides": [32],
@@ -587,6 +587,7 @@ const SnkDetailView = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement
587
587
  this.snkDetailGuidesChange = createEvent(this, "snkDetailGuidesChange", 7);
588
588
  this.snkSwitchGuide = createEvent(this, "snkSwitchGuide", 7);
589
589
  this._disabledButtons = undefined;
590
+ this._currentView = undefined;
590
591
  this.attachmentRegisterKey = undefined;
591
592
  this.formConfigManager = undefined;
592
593
  this.dataUnitName = undefined;
@@ -598,12 +599,8 @@ const SnkDetailView = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement
598
599
  this.dataState = undefined;
599
600
  this.messagesBuilder = undefined;
600
601
  this.branchGuide = undefined;
602
+ this.canEdit = true;
601
603
  }
602
- // /**
603
- // * Define se a edição está habilitada na grid.
604
- // */
605
- // @Prop()
606
- // canEdit: boolean = true;
607
604
  observerDataState(newValue, oldValue) {
608
605
  const openInsertion = !(oldValue === null || oldValue === void 0 ? void 0 : oldValue.insertionMode) && (newValue === null || newValue === void 0 ? void 0 : newValue.insertionMode);
609
606
  const closeInsertion = (oldValue === null || oldValue === void 0 ? void 0 : oldValue.insertionMode) && !(newValue === null || newValue === void 0 ? void 0 : newValue.insertionMode);
@@ -716,10 +713,8 @@ const SnkDetailView = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement
716
713
  updateViewStack(viewStack) {
717
714
  var _a, _b;
718
715
  this._viewStack = viewStack;
719
- // TODO: remove to gridEditor
720
- (_b = (_a = this._viewStack) === null || _a === void 0 ? void 0 : _a.show) === null || _b === void 0 ? void 0 : _b.call(_a, this.selectedForm ? 1 : 0);
721
- // this._currentView = this.selectedForm ? 1 : 0;
722
- // this._viewStack?.show?.(this._currentView);
716
+ this._currentView = this.selectedForm ? 1 : 0;
717
+ (_b = (_a = this._viewStack) === null || _a === void 0 ? void 0 : _a.show) === null || _b === void 0 ? void 0 : _b.call(_a, this._currentView);
723
718
  }
724
719
  getFormFields() {
725
720
  if (this.selectedForm && this._formMetadata) {
@@ -774,11 +769,7 @@ const SnkDetailView = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement
774
769
  render() {
775
770
  this.updateLabel();
776
771
  //const cardConfig: IFormCardConfig = this._cardsState?.get(this.selectedForm);
777
- return (h(Host, null, h("snk-data-unit", { ref: (el) => this._snkDataUnit = el, dataUnitName: `${this.dataUnitName}`, onDataUnitReady: evt => this.dataUnitReadyHandler(evt), entityName: this.entityName, onDataStateChange: this.handleDataStateChange.bind(this),
778
- // ignoreSaveMessage={this._currentView === VIEW_MODE.GRID}
779
- messagesBuilder: this.messagesBuilder, configName: this._configName }, h("ez-view-stack", { ref: (ref) => this.updateViewStack(ref) }, h("stack-item", null, h("div", { class: "ez-box ez-box--shadow grid-container" }, h("div", { class: "ez-flex ez-title--primary ez-size-width--full ez-padding--large detail-header" }, h("div", { class: "ez-flex ez-text ez-text--bold ez-flex--justify-start ez-flex--align-items-center" }, this._levelPath ? h("span", { class: "level-path" }, this._levelPath + " /") : undefined, this.label)), h("snk-grid", { class: "ez-size-width--full ez-size-height--full", ref: (ref) => this._snkGrid = ref, configName: this._configName, messagesBuilder: this.messagesBuilder, onGridDoubleClick: () => this.emitSwitchEvent(VIEW_MODE.FORM), onActionClick: (evt) => this.executeActionHandler(evt), presentationMode: PresentationMode.SECONDARY,
780
- // canEdit={this.canEdit}
781
- isDetail: true }))), h("stack-item", null, h("snk-form-view", { ref: (ref) => this._snkFormView = ref, canExpand: false, canFix: false, name: this.selectedForm, formMetadata: this._formMetadata, dataUnit: this.dataUnit, fields: this.getFormFields(), label: this.label, levelPath: this._levelPath }, h("snk-taskbar", { key: "guideViewerTaskbar", class: "form-taskbar", "data-element-id": "guideViewer", configName: this._configName, messagesBuilder: this.messagesBuilder, disabledButtons: this._disabledButtons, buttons: "INSERT,PREVIOUS,NEXT,DIVIDER,CLONE,REMOVE,MORE_OPTIONS,DIVIDER,GRID_MODE,CONFIGURATOR", primaryButton: "INSERT", presentationMode: PresentationMode.SECONDARY, onActionClick: evt => this.executeActionHandler(evt), dataUnit: this.dataUnit }))), h("stack-item", null, h("snk-attach", { registerKey: this.attachmentRegisterKey, messagesBuilder: this.messagesBuilder, entityName: this.entityName, onBack: this.handleAttachBack.bind(this) }))))));
772
+ return (h(Host, null, h("snk-data-unit", { ref: (el) => this._snkDataUnit = el, dataUnitName: `${this.dataUnitName}`, onDataUnitReady: evt => this.dataUnitReadyHandler(evt), entityName: this.entityName, onDataStateChange: this.handleDataStateChange.bind(this), ignoreSaveMessage: this._currentView === VIEW_MODE.GRID, messagesBuilder: this.messagesBuilder, configName: this._configName }, h("ez-view-stack", { ref: (ref) => this.updateViewStack(ref) }, h("stack-item", null, h("div", { class: "ez-box ez-box--shadow grid-container" }, h("div", { class: "ez-flex ez-title--primary ez-size-width--full ez-padding--large detail-header" }, h("div", { class: "ez-flex ez-text ez-text--bold ez-flex--justify-start ez-flex--align-items-center" }, this._levelPath ? h("span", { class: "level-path" }, this._levelPath + " /") : undefined, this.label)), h("snk-grid", { class: "ez-size-width--full ez-size-height--full", ref: (ref) => this._snkGrid = ref, configName: this._configName, messagesBuilder: this.messagesBuilder, onGridDoubleClick: () => this.emitSwitchEvent(VIEW_MODE.FORM), onActionClick: (evt) => this.executeActionHandler(evt), presentationMode: PresentationMode.SECONDARY, canEdit: this.canEdit, isDetail: true }))), h("stack-item", null, h("snk-form-view", { ref: (ref) => this._snkFormView = ref, canExpand: false, canFix: false, name: this.selectedForm, formMetadata: this._formMetadata, dataUnit: this.dataUnit, fields: this.getFormFields(), label: this.label, levelPath: this._levelPath }, h("snk-taskbar", { key: "guideViewerTaskbar", class: "form-taskbar", "data-element-id": "guideViewer", configName: this._configName, messagesBuilder: this.messagesBuilder, disabledButtons: this._disabledButtons, buttons: "INSERT,PREVIOUS,NEXT,DIVIDER,CLONE,REMOVE,MORE_OPTIONS,DIVIDER,GRID_MODE,CONFIGURATOR", primaryButton: "INSERT", presentationMode: PresentationMode.SECONDARY, onActionClick: evt => this.executeActionHandler(evt), dataUnit: this.dataUnit }))), h("stack-item", null, h("snk-attach", { registerKey: this.attachmentRegisterKey, messagesBuilder: this.messagesBuilder, entityName: this.entityName, onBack: this.handleAttachBack.bind(this) }))))));
782
773
  }
783
774
  static get watchers() { return {
784
775
  "dataState": ["observerDataState"]
@@ -795,7 +786,9 @@ const SnkDetailView = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement
795
786
  "dataState": [1040],
796
787
  "messagesBuilder": [1040],
797
788
  "branchGuide": [16],
789
+ "canEdit": [4, "can-edit"],
798
790
  "_disabledButtons": [32],
791
+ "_currentView": [32],
799
792
  "attachmentRegisterKey": [32],
800
793
  "changeViewMode": [64],
801
794
  "configGrid": [64],
@@ -58,6 +58,9 @@ const SnkGrid = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
58
58
  this.multipleSelection = undefined;
59
59
  this.presentationMode = PresentationMode.PRIMARY;
60
60
  this.messagesBuilder = undefined;
61
+ this.useEnterLikeTab = false;
62
+ this.recordsValidator = undefined;
63
+ this.canEdit = true;
61
64
  }
62
65
  /**
63
66
  * Exibe a janela de configurações da grade.
@@ -326,7 +329,7 @@ const SnkGrid = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
326
329
  return undefined;
327
330
  }
328
331
  return (h("div", { class: "snk-grid__container ez-flex ez-flex--column ez-flex-item--auto ez-padding--large" }, h("div", { class: "snk-grid__header ez-margin-bottom--medium" }, h("snk-filter-bar", { ref: (ref) => this._snkFilterBar = ref, dataUnit: this._dataUnit, "data-element-id": "gridFilter", class: "snk-grid__filter-bar ez-align--top", configName: this.configName, messagesBuilder: this.messagesBuilder }), ((_b = (_a = this._snkFilterBar) === null || _a === void 0 ? void 0 : _a.filterConfig) === null || _b === void 0 ? void 0 : _b.length) > 0 &&
329
- h("hr", { class: "ez-divider-vertical ez-divider--dark ez-margin-left--medium snk-grid__header-divider" }), h("snk-taskbar", { class: "ez-padding-left--medium", "data-element-id": "grid_top", key: "topTaskbar", configName: this.configName, dataUnit: this._dataUnit, messagesBuilder: this.messagesBuilder, buttons: this._topTaskbarProcessor.buttons, disabledButtons: this._topTaskbarProcessor.disabledButtons, customButtons: this._topTaskbarProcessor.customButtons, primaryButton: this.getPrimaryButton() })), h("ez-grid", { ref: ref => this._grid = ref, class: (this.presentationMode === PresentationMode.SECONDARY ? "snk-grid-container__without-shadow " : "") + "snk-grid__table", "data-element-id": "embedded", dataUnit: this._dataUnit, key: "grid-" + this._snkDataUnit.entityName, config: this._gridConfig, onConfigChange: (evt) => { this.gridConfigChangeHandler(evt); }, onEzDoubleClick: () => this.gridDoubleClick.emit(), statusResolver: this.statusResolver, multipleSelection: this.multipleSelection, onComponentReady: () => this.onEzGridReady(), columnfilterDataSource: this._multiSelectionListDataSource, selectionToastConfig: this.selectionToastConfig }, h("snk-taskbar", { dataUnit: this._dataUnit, configName: this.configName, messagesBuilder: this.messagesBuilder, "data-element-id": "grid_left", buttons: this._headerTaskbarProcessor.buttons, disabledButtons: this._headerTaskbarProcessor.disabledButtons, customButtons: this._headerTaskbarProcessor.customButtons, slot: "leftButtons", actionsList: this.actionsList })), h("div", { class: "ez-col ez-col--sd-12" }, h("slot", { name: "SnkGridFooter" })), h("ez-modal", { modalSize: "small", closeEsc: false, closeOutsideClick: false, opened: this._popUpGridConfig, onEzCloseModal: () => this.closeGridConfig() }, h("snk-grid-config", { ref: ref => this._snkGridConfig = ref, config: this._gridConfig, "data-element-id": this._element.getAttribute(ElementIDUtils.DATA_ELEMENT_ID_ATTRIBUTE_NAME), application: this._application, selectedIndex: 0, configName: this.configName, onConfigChange: (evt) => this.modalConfigChangeHandler(evt), onConfigCancel: () => this.closeGridConfig() }))));
332
+ h("hr", { class: "ez-divider-vertical ez-divider--dark ez-margin-left--medium snk-grid__header-divider" }), h("snk-taskbar", { class: "ez-padding-left--medium", "data-element-id": "grid_top", key: "topTaskbar", configName: this.configName, dataUnit: this._dataUnit, messagesBuilder: this.messagesBuilder, buttons: this._topTaskbarProcessor.buttons, disabledButtons: this._topTaskbarProcessor.disabledButtons, customButtons: this._topTaskbarProcessor.customButtons, primaryButton: this.getPrimaryButton() })), h("ez-grid", { ref: ref => this._grid = ref, class: (this.presentationMode === PresentationMode.SECONDARY ? "snk-grid-container__without-shadow " : "") + "snk-grid__table", "data-element-id": "embedded", dataUnit: this._dataUnit, key: "grid-" + this._snkDataUnit.entityName, config: this._gridConfig, onConfigChange: (evt) => { this.gridConfigChangeHandler(evt); }, onEzDoubleClick: () => this.gridDoubleClick.emit(), statusResolver: this.statusResolver, multipleSelection: this.multipleSelection, onComponentReady: () => this.onEzGridReady(), columnfilterDataSource: this._multiSelectionListDataSource, selectionToastConfig: this.selectionToastConfig, useEnterLikeTab: this.useEnterLikeTab, recordsValidator: this.recordsValidator, canEdit: this.canEdit }, h("snk-taskbar", { dataUnit: this._dataUnit, configName: this.configName, messagesBuilder: this.messagesBuilder, "data-element-id": "grid_left", buttons: this._headerTaskbarProcessor.buttons, disabledButtons: this._headerTaskbarProcessor.disabledButtons, customButtons: this._headerTaskbarProcessor.customButtons, slot: "leftButtons", actionsList: this.actionsList })), h("div", { class: "ez-col ez-col--sd-12" }, h("slot", { name: "SnkGridFooter" })), h("ez-modal", { modalSize: "small", closeEsc: false, closeOutsideClick: false, opened: this._popUpGridConfig, onEzCloseModal: () => this.closeGridConfig() }, h("snk-grid-config", { ref: ref => this._snkGridConfig = ref, config: this._gridConfig, "data-element-id": this._element.getAttribute(ElementIDUtils.DATA_ELEMENT_ID_ATTRIBUTE_NAME), application: this._application, selectedIndex: 0, configName: this.configName, onConfigChange: (evt) => this.modalConfigChangeHandler(evt), onConfigCancel: () => this.closeGridConfig() }))));
330
333
  }
331
334
  get _element() { return this; }
332
335
  static get style() { return snkGridCss; }
@@ -340,6 +343,9 @@ const SnkGrid = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
340
343
  "multipleSelection": [4, "multiple-selection"],
341
344
  "presentationMode": [1, "presentation-mode"],
342
345
  "messagesBuilder": [1040],
346
+ "useEnterLikeTab": [4, "use-enter-like-tab"],
347
+ "recordsValidator": [16],
348
+ "canEdit": [4, "can-edit"],
343
349
  "_dataUnit": [32],
344
350
  "_dataState": [32],
345
351
  "_gridConfig": [32],
@@ -157,11 +157,6 @@ const SnkSimpleCrud = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement
157
157
  this.REGULAR_DEFAULT_BTNS = ["INSERT", "REFRESH", "PREVIOUS", "NEXT", "DIVIDER"];
158
158
  this.REGULAR_SELECTED_BTNS = ["INSERT", "REFRESH", "PREVIOUS", "NEXT", "DIVIDER", "CLONE", "REMOVE", "DIVIDER"];
159
159
  this._multiSelectionListDataSource = new SnkMultiSelectionListDataSource();
160
- // /**
161
- // * Quando verdadeiro, o ENTER fará a navegação como se fosse a tecla TAB na grade.
162
- // */
163
- // @Prop()
164
- // useEnterLikeTab: boolean = false;
165
160
  this._taskbarProcessor = new TaskbarProcessor({
166
161
  "snkSimpleCrudTaskbar.form_regular": this.resolveInMemoryBtns(this.REGULAR_DEFAULT_BTNS).concat(TaskbarElement.GRID_MODE),
167
162
  "snkSimpleCrudTaskbar.grid_regular": this.resolveInMemoryBtns(this.REGULAR_DEFAULT_BTNS).concat(TaskbarElement.FORM_MODE),
@@ -180,6 +175,7 @@ const SnkSimpleCrud = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement
180
175
  this.useCancelConfirm = true;
181
176
  this.taskbarManager = undefined;
182
177
  this.messagesBuilder = undefined;
178
+ this.useEnterLikeTab = false;
183
179
  }
184
180
  resolveInMemoryBtns(taskbarButtons) {
185
181
  const newTaskBarConfig = [...taskbarButtons];
@@ -324,11 +320,9 @@ const SnkSimpleCrud = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement
324
320
  }
325
321
  render() {
326
322
  var _a;
327
- return (h("snk-data-unit", { class: "simple-crud__container", dataUnit: this.dataUnit, useCancelConfirm: this.useCancelConfirm, onDataStateChange: evt => this.onDataStateChange(evt), onCancelEdition: this.handleCancelEdit.bind(this), onInsertionMode: () => this.goToView(VIEW_MODE.FORM), onDataUnitReady: (evt) => this.dataUnitReady.emit(evt.detail),
328
- // ignoreSaveMessage={this._currentViewMode === VIEW_MODE.GRID}
329
- onMessagesBuilderUpdated: evt => this.messagesBuilder = evt.detail }, h("header", null, h("slot", { name: "snkSimpleCrudHeader" })), h("section", { class: "ez-flex ez-box ez-box--shadow" }, h("snk-taskbar", { class: "ez-box ez-box--shadow ez-padding--medium ez-margin-bottom--large", dataUnit: this.dataUnit, primaryButton: ((_a = this.dataState) === null || _a === void 0 ? void 0 : _a.isDirty) ? "SAVE" : "INSERT", "data-element-id": "grid_left", messagesBuilder: this.messagesBuilder, buttons: this._taskbarProcessor.buttons, disabledButtons: this._taskbarProcessor.disabledButtons, customButtons: this._taskbarProcessor.customButtons, slot: "leftButtons", presentationMode: PresentationMode.SECONDARY }), h("ez-view-stack", { class: "ez-flex ez-flex--column", ref: (ref) => this._viewStack = ref, "data-element-id": "simple-crud" }, h("stack-item", null, h("ez-grid", { dataUnit: this.dataUnit, config: this.gridConfig, "no-header": true, multipleSelection: this.multipleSelection, onEzDoubleClick: () => this.goToView(VIEW_MODE.FORM), columnfilterDataSource: this.dataUnit.name.includes(InMemoryLoader.IN_MEMORY_DATA_UNIT_NAME)
323
+ return (h("snk-data-unit", { class: "simple-crud__container", dataUnit: this.dataUnit, useCancelConfirm: this.useCancelConfirm, onDataStateChange: evt => this.onDataStateChange(evt), onCancelEdition: this.handleCancelEdit.bind(this), onInsertionMode: () => this.goToView(VIEW_MODE.FORM), onDataUnitReady: (evt) => this.dataUnitReady.emit(evt.detail), ignoreSaveMessage: this._currentViewMode === VIEW_MODE.GRID, onMessagesBuilderUpdated: evt => this.messagesBuilder = evt.detail }, h("header", null, h("slot", { name: "snkSimpleCrudHeader" })), h("section", { class: "ez-flex ez-box ez-box--shadow" }, h("snk-taskbar", { class: "ez-box ez-box--shadow ez-padding--medium ez-margin-bottom--large", dataUnit: this.dataUnit, primaryButton: ((_a = this.dataState) === null || _a === void 0 ? void 0 : _a.isDirty) ? "SAVE" : "INSERT", "data-element-id": "grid_left", messagesBuilder: this.messagesBuilder, buttons: this._taskbarProcessor.buttons, disabledButtons: this._taskbarProcessor.disabledButtons, customButtons: this._taskbarProcessor.customButtons, slot: "leftButtons", presentationMode: PresentationMode.SECONDARY }), h("ez-view-stack", { class: "ez-flex ez-flex--column", ref: (ref) => this._viewStack = ref, "data-element-id": "simple-crud" }, h("stack-item", null, h("ez-grid", { dataUnit: this.dataUnit, config: this.gridConfig, "no-header": true, multipleSelection: this.multipleSelection, onEzDoubleClick: () => this.goToView(VIEW_MODE.FORM), columnfilterDataSource: this.dataUnit.name.includes(InMemoryLoader.IN_MEMORY_DATA_UNIT_NAME)
330
324
  ? undefined
331
- : this._multiSelectionListDataSource }, h("div", { slot: "footer" }, h("slot", { name: "snkSimpleCrudFooter" })))), h("stack-item", null, h("ez-form", { dataUnit: this.dataUnit, config: this.formConfig }))))));
325
+ : this._multiSelectionListDataSource, useEnterLikeTab: this.useEnterLikeTab }, h("div", { slot: "footer" }, h("slot", { name: "snkSimpleCrudFooter" })))), h("stack-item", null, h("ez-form", { dataUnit: this.dataUnit, config: this.formConfig }))))));
332
326
  }
333
327
  get _element() { return this; }
334
328
  static get watchers() { return {
@@ -346,6 +340,7 @@ const SnkSimpleCrud = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement
346
340
  "useCancelConfirm": [4, "use-cancel-confirm"],
347
341
  "taskbarManager": [16],
348
342
  "messagesBuilder": [1040],
343
+ "useEnterLikeTab": [4, "use-enter-like-tab"],
349
344
  "_currentViewMode": [32],
350
345
  "_config": [32],
351
346
  "goToView": [64],
@@ -1,8 +1,8 @@
1
1
  import { ApplicationContext } from '@sankhyalabs/core';
2
- import { F as FormConfigFetcher } from './form-config-fetcher-9e167008.js';
3
- import { R as ResourceFetcher } from './resource-fetcher-768d5556.js';
4
- import { F as FilterBarConfigFetcher } from './filter-bar-config-fetcher-06e02851.js';
5
- import { d as dist, D as DataFetcher } from './DataFetcher-e0fc5549.js';
2
+ import { F as FormConfigFetcher } from './form-config-fetcher-4065db9a.js';
3
+ import { R as ResourceFetcher } from './resource-fetcher-45a70066.js';
4
+ import { F as FilterBarConfigFetcher } from './filter-bar-config-fetcher-2417b8cf.js';
5
+ import { d as dist, D as DataFetcher } from './DataFetcher-a4ed43e7.js';
6
6
 
7
7
  class GridConfigFetcher extends ResourceFetcher {
8
8
  constructor() {
@@ -6679,7 +6679,7 @@ class AppletImpressao {
6679
6679
 
6680
6680
  class DataFetcher {
6681
6681
  constructor() {
6682
- this.GRAPHQL_PATH = "/mgefin-bff/graphql";
6682
+ this.GRAPHQL_PATH = `/${window.MGE_MODULE_NAME || 'mgefin-bff'}/graphql`;
6683
6683
  this.watingRequestsById = new Map();
6684
6684
  }
6685
6685
  static get() {
@@ -1,6 +1,6 @@
1
- import { C as ConfigStorage } from './ConfigStorage-19a7260b.js';
1
+ import { C as ConfigStorage } from './ConfigStorage-1090289a.js';
2
2
  import { ObjectUtils } from '@sankhyalabs/core';
3
- import { F as FormConfigFetcher } from './form-config-fetcher-9e167008.js';
3
+ import { F as FormConfigFetcher } from './form-config-fetcher-4065db9a.js';
4
4
 
5
5
  class SnkFormConfigManager {
6
6
  constructor(configName, onConfigChange) {
@@ -0,0 +1,32 @@
1
+ import { ObjectUtils } from '@sankhyalabs/core';
2
+ import { R as ResourceFetcher } from './resource-fetcher-45a70066.js';
3
+
4
+ class AuthFetcher extends ResourceFetcher {
5
+ getData(resourceID) {
6
+ const completePath = `cfg://auth/${resourceID}`;
7
+ return new Promise((resolve, reject) => {
8
+ this.loadResource(completePath)
9
+ .then((loadedResource) => {
10
+ let auth = ObjectUtils.stringToObject(loadedResource);
11
+ if (auth && typeof (auth) === 'object') {
12
+ resolve(auth);
13
+ }
14
+ }).catch((error) => {
15
+ reject(error);
16
+ });
17
+ });
18
+ }
19
+ }
20
+ var AutorizationType;
21
+ (function (AutorizationType) {
22
+ AutorizationType["INSERT"] = "I";
23
+ AutorizationType["UPDATE"] = "A";
24
+ AutorizationType["REMOVE"] = "E";
25
+ AutorizationType["SHOW"] = "C";
26
+ AutorizationType["CONFIG"] = "F";
27
+ AutorizationType["CONFIG_NUMBER"] = "N";
28
+ AutorizationType["CLONE"] = "D";
29
+ AutorizationType["CONFIG_GRID"] = "G";
30
+ })(AutorizationType || (AutorizationType = {}));
31
+
32
+ export { AutorizationType as A, AuthFetcher as a };
@@ -1,5 +1,5 @@
1
1
  import { DataUnit, StringUtils, DataType, DataUnitStorage, ChangeOperation } from '@sankhyalabs/core';
2
- import { d as dist, D as DataFetcher } from './DataFetcher-e0fc5549.js';
2
+ import { d as dist, D as DataFetcher } from './DataFetcher-a4ed43e7.js';
3
3
  import { DISTINCT_FILTER_NAME_PREFIX } from '@sankhyalabs/ezui/dist/collection/utils/constants';
4
4
  import { DataUnitTransient } from '@sankhyalabs/core/dist/dataunit/metadata/UnitMetadata';
5
5
 
@@ -1,5 +1,5 @@
1
1
  import { F as FilterItemType } from './filter-item-type.enum-5028ed3f.js';
2
- import { R as ResourceFetcher } from './resource-fetcher-768d5556.js';
2
+ import { R as ResourceFetcher } from './resource-fetcher-45a70066.js';
3
3
 
4
4
  var __rest = (undefined && undefined.__rest) || function (s, e) {
5
5
  var t = {};
@@ -1,6 +1,6 @@
1
- import { d as dist, D as DataFetcher } from './DataFetcher-e0fc5549.js';
1
+ import { d as dist, D as DataFetcher } from './DataFetcher-a4ed43e7.js';
2
2
  import { ObjectUtils } from '@sankhyalabs/core';
3
- import { R as ResourceFetcher } from './resource-fetcher-768d5556.js';
3
+ import { R as ResourceFetcher } from './resource-fetcher-45a70066.js';
4
4
 
5
5
  class FormConfigFetcher extends ResourceFetcher {
6
6
  constructor() {