@sankhyalabs/sankhyablocks 8.15.0-dev.30 → 8.15.0-dev.31

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 (123) hide show
  1. package/dist/cjs/SnkMultiSelectionListDataSource-5213120b.js +140 -0
  2. package/dist/cjs/index-f9e81701.js +2 -10
  3. package/dist/cjs/loader.cjs.js +1 -1
  4. package/dist/cjs/{pesquisa-fetcher-c416a6b7.js → pesquisa-fetcher-94f6b316.js} +231 -20
  5. package/dist/cjs/sankhyablocks.cjs.js +1 -1
  6. package/dist/cjs/{snk-actions-button_2.cjs.entry.js → snk-actions-button_4.cjs.entry.js} +517 -2
  7. package/dist/cjs/snk-application.cjs.entry.js +1 -2
  8. package/dist/cjs/snk-attach.cjs.entry.js +3 -4
  9. package/dist/cjs/snk-crud.cjs.entry.js +2 -3
  10. package/dist/cjs/snk-detail-view.cjs.entry.js +4 -5
  11. package/dist/cjs/snk-form-config.cjs.entry.js +6 -0
  12. package/dist/cjs/snk-form.cjs.entry.js +1 -1
  13. package/dist/cjs/snk-grid.cjs.entry.js +10 -19
  14. package/dist/cjs/{snk-guides-viewer-bd69fce4.js → snk-guides-viewer-c7293cfa.js} +2 -3
  15. package/dist/cjs/snk-guides-viewer.cjs.entry.js +3 -4
  16. package/dist/cjs/snk-personalized-filter-editor.cjs.entry.js +3 -1
  17. package/dist/cjs/snk-simple-crud.cjs.entry.js +147 -16
  18. package/dist/collection/collection-manifest.json +6 -6
  19. package/dist/collection/components/snk-crud/subcomponents/snk-detail-view/snk-detail-view.js +2 -2
  20. package/dist/collection/components/snk-crud/subcomponents/snk-guides-viewer.js +1 -1
  21. package/dist/collection/components/snk-filter-bar/filter-item/editors/snk-personalized-filter-editor/snk-personalized-filter-editor.js +3 -1
  22. package/dist/collection/components/snk-form/snk-form.js +1 -1
  23. package/dist/collection/components/{snk-form/subcomponents/snk-form-config → snk-form-config}/snk-form-config.js +11 -5
  24. package/dist/collection/components/snk-grid/snk-grid.js +5 -16
  25. package/dist/collection/components/{snk-grid/subcomponents/snk-grid-config → snk-grid-config}/snk-grid-config.js +130 -123
  26. package/dist/collection/components/{snk-grid/subcomponents → snk-grid-config}/snk-select-box/snk-select-box.js +1 -1
  27. package/dist/collection/components/snk-simple-crud/snk-simple-crud.css +5 -0
  28. package/dist/collection/components/snk-simple-crud/snk-simple-crud.js +226 -14
  29. package/dist/collection/lib/http/data-fetcher/fetchers/pesquisa-fetcher.js +1 -8
  30. package/dist/collection/lib/utils/CrudUtils.js +13 -1
  31. package/dist/components/dataunit-fetcher.js +1 -8
  32. package/dist/components/field-search.js +93 -3
  33. package/dist/components/index.d.ts +6 -6
  34. package/dist/components/snk-attach2.js +54 -12
  35. package/dist/components/snk-detail-view2.js +29 -4
  36. package/dist/components/snk-form-config2.js +7 -1
  37. package/dist/components/snk-grid-config2.js +128 -102
  38. package/dist/components/snk-grid2.js +10 -17
  39. package/dist/components/snk-personalized-filter-editor.js +3 -1
  40. package/dist/components/snk-simple-crud2.js +204 -24
  41. package/dist/esm/SnkMultiSelectionListDataSource-7e7eada5.js +133 -0
  42. package/dist/esm/index-a7d3d3f1.js +2 -10
  43. package/dist/esm/loader.js +1 -1
  44. package/dist/esm/{pesquisa-fetcher-ab16a2e8.js → pesquisa-fetcher-f05a12ca.js} +222 -12
  45. package/dist/esm/sankhyablocks.js +1 -1
  46. package/dist/esm/{snk-actions-button_2.entry.js → snk-actions-button_4.entry.js} +516 -3
  47. package/dist/esm/snk-application.entry.js +1 -2
  48. package/dist/esm/snk-attach.entry.js +2 -3
  49. package/dist/esm/snk-crud.entry.js +2 -3
  50. package/dist/esm/snk-detail-view.entry.js +4 -5
  51. package/dist/esm/snk-form-config.entry.js +7 -1
  52. package/dist/esm/snk-form.entry.js +1 -1
  53. package/dist/esm/snk-grid.entry.js +11 -20
  54. package/dist/esm/{snk-guides-viewer-fde82cc1.js → snk-guides-viewer-47443f7c.js} +2 -3
  55. package/dist/esm/snk-guides-viewer.entry.js +3 -4
  56. package/dist/esm/snk-personalized-filter-editor.entry.js +3 -1
  57. package/dist/esm/snk-simple-crud.entry.js +148 -17
  58. package/dist/sankhyablocks/p-2897fb8c.js +1 -0
  59. package/dist/sankhyablocks/p-30735d1e.entry.js +1 -0
  60. package/dist/sankhyablocks/p-3c5b7cfc.entry.js +1 -0
  61. package/dist/sankhyablocks/p-6ae58da0.js +1 -0
  62. package/dist/sankhyablocks/{p-fcdcb0e2.entry.js → p-746fc99e.entry.js} +1 -1
  63. package/dist/sankhyablocks/p-99b1926b.entry.js +1 -0
  64. package/dist/sankhyablocks/p-9fb97691.entry.js +1 -0
  65. package/dist/sankhyablocks/p-b11aa1e0.entry.js +1 -0
  66. package/dist/sankhyablocks/p-b281e9e9.entry.js +1 -0
  67. package/dist/sankhyablocks/p-d78d4062.js +65 -0
  68. package/dist/sankhyablocks/{p-fd0a8d68.entry.js → p-ec18c04e.entry.js} +3 -3
  69. package/dist/sankhyablocks/p-eefe9954.entry.js +1 -0
  70. package/dist/sankhyablocks/p-fca66dda.entry.js +1 -0
  71. package/dist/sankhyablocks/p-fe741404.entry.js +1 -0
  72. package/dist/sankhyablocks/sankhyablocks.esm.js +1 -1
  73. package/dist/types/components/snk-crud/subcomponents/snk-detail-view/snk-detail-view.d.ts +1 -1
  74. package/dist/types/components/snk-crud/subcomponents/snk-guides-viewer.d.ts +1 -1
  75. package/dist/types/components/snk-form/snk-form.d.ts +1 -1
  76. package/dist/types/components/{snk-form/subcomponents/snk-form-config → snk-form-config}/snk-form-config.d.ts +4 -3
  77. package/dist/types/components/snk-grid/snk-grid.d.ts +0 -1
  78. package/dist/types/components/{snk-grid/subcomponents/snk-grid-config → snk-grid-config}/snk-grid-config.d.ts +11 -6
  79. package/dist/types/components/{snk-grid/subcomponents → snk-grid-config}/snk-select-box/snk-select-box.d.ts +1 -1
  80. package/dist/types/components/snk-simple-crud/snk-simple-crud.d.ts +46 -1
  81. package/dist/types/components.d.ts +26 -10
  82. package/dist/types/lib/utils/CrudUtils.d.ts +3 -0
  83. package/package.json +1 -1
  84. package/dist/cjs/PreloadManager-84466da6.js +0 -224
  85. package/dist/cjs/SnkMultiSelectionListDataSource-ba5838c2.js +0 -49
  86. package/dist/cjs/snk-grid-config.cjs.entry.js +0 -483
  87. package/dist/cjs/snk-select-box.cjs.entry.js +0 -25
  88. package/dist/esm/PreloadManager-c1c2f2b4.js +0 -222
  89. package/dist/esm/SnkMultiSelectionListDataSource-44494b0e.js +0 -43
  90. package/dist/esm/snk-grid-config.entry.js +0 -479
  91. package/dist/esm/snk-select-box.entry.js +0 -21
  92. package/dist/sankhyablocks/p-094c30cb.js +0 -1
  93. package/dist/sankhyablocks/p-0b0b36ac.entry.js +0 -1
  94. package/dist/sankhyablocks/p-11ad137d.entry.js +0 -1
  95. package/dist/sankhyablocks/p-57212bb5.js +0 -1
  96. package/dist/sankhyablocks/p-5f5b58b6.entry.js +0 -1
  97. package/dist/sankhyablocks/p-84bb8f47.entry.js +0 -1
  98. package/dist/sankhyablocks/p-91b7f78a.entry.js +0 -1
  99. package/dist/sankhyablocks/p-98674137.entry.js +0 -1
  100. package/dist/sankhyablocks/p-b7004423.entry.js +0 -1
  101. package/dist/sankhyablocks/p-c22c1d8e.js +0 -1
  102. package/dist/sankhyablocks/p-c6247955.js +0 -65
  103. package/dist/sankhyablocks/p-c758265f.entry.js +0 -1
  104. package/dist/sankhyablocks/p-d4802f81.entry.js +0 -1
  105. package/dist/sankhyablocks/p-e3bd000e.entry.js +0 -1
  106. package/dist/sankhyablocks/p-fb842329.entry.js +0 -1
  107. /package/dist/cjs/{SnkFormConfigManager-3621bfc4.js → SnkFormConfigManager-0ffd098d.js} +0 -0
  108. /package/dist/collection/components/{snk-form → snk-form-config}/SnkFormConfigManager.js +0 -0
  109. /package/dist/collection/components/{snk-form/subcomponents/snk-form-config → snk-form-config}/snk-form-config.css +0 -0
  110. /package/dist/collection/components/{snk-form → snk-form-config}/subcomponents/snk-config-options/snk-config-options.css +0 -0
  111. /package/dist/collection/components/{snk-form → snk-form-config}/subcomponents/snk-config-options/snk-config-options.js +0 -0
  112. /package/dist/collection/components/{snk-form → snk-form-config}/subcomponents/snk-field-config/snk-field-config.css +0 -0
  113. /package/dist/collection/components/{snk-form → snk-form-config}/subcomponents/snk-field-config/snk-field-config.js +0 -0
  114. /package/dist/collection/components/{snk-form → snk-form-config}/subcomponents/snk-tab-config/snk-tab-config.css +0 -0
  115. /package/dist/collection/components/{snk-form → snk-form-config}/subcomponents/snk-tab-config/snk-tab-config.js +0 -0
  116. /package/dist/collection/components/{snk-grid/subcomponents/snk-grid-config → snk-grid-config}/snk-grid-config.css +0 -0
  117. /package/dist/collection/components/{snk-grid/subcomponents → snk-grid-config}/snk-select-box/snk-select-box.css +0 -0
  118. /package/dist/esm/{SnkFormConfigManager-692e20c7.js → SnkFormConfigManager-dd450734.js} +0 -0
  119. /package/dist/sankhyablocks/{p-725d04ba.js → p-9ea14b61.js} +0 -0
  120. /package/dist/types/components/{snk-form → snk-form-config}/SnkFormConfigManager.d.ts +0 -0
  121. /package/dist/types/components/{snk-form → snk-form-config}/subcomponents/snk-config-options/snk-config-options.d.ts +0 -0
  122. /package/dist/types/components/{snk-form → snk-form-config}/subcomponents/snk-field-config/snk-field-config.d.ts +0 -0
  123. /package/dist/types/components/{snk-form → snk-form-config}/subcomponents/snk-tab-config/snk-tab-config.d.ts +0 -0
@@ -1,12 +1,14 @@
1
- import { ApplicationContext, DataType, FloatingManager, JSUtils, ObjectUtils, StringUtils, UserInterface, } from '@sankhyalabs/core';
1
+ import { ApplicationContext, DataType, ElementIDUtils, FloatingManager, JSUtils, ObjectUtils, StringUtils, UserInterface, } from '@sankhyalabs/core';
2
2
  import { h } from '@stencil/core';
3
3
  import { SIMPLE_CRUD_MODE, VIEW_MODE } from '../../lib/utils/constants';
4
4
  import { TaskbarElement } from '../snk-taskbar/elements/taskbar-elements';
5
- import { PresentationMode } from '../../lib';
5
+ import { CrudUtils, PresentationMode } from '../../lib';
6
6
  import TaskbarProcessor from '../snk-taskbar/processor/taskbar-processor';
7
7
  import InMemoryLoader from '../../lib/dataUnit/InMemoryLoader';
8
8
  import SnkMultiSelectionListDataSource from '../snk-grid/filtercolumn/SnkMultiSelectionListDataSource';
9
9
  import { buildFieldSearch, openFieldSearch } from '../snk-taskbar/subcomponents/field-search';
10
+ import { ConfigStorage } from '../../lib/configs/ConfigStorage';
11
+ import { SnkFormConfigManager } from '../snk-form-config/SnkFormConfigManager';
10
12
  export class SnkSimpleCrud {
11
13
  constructor() {
12
14
  this.REGULAR_DEFAULT_BTNS = ["INSERT", "REFRESH", "PREVIOUS", "NEXT", "DIVIDER", "MORE_OPTIONS"];
@@ -14,15 +16,18 @@ export class SnkSimpleCrud {
14
16
  this._multiSelectionListDataSource = new SnkMultiSelectionListDataSource();
15
17
  this._keyDownHandler = (event) => this.keyDownListener(event);
16
18
  this._taskbarProcessor = new TaskbarProcessor({
17
- "snkSimpleCrudTaskbar.form_regular": this.resolveInMemoryBtns(this.REGULAR_DEFAULT_BTNS).concat(TaskbarElement.GRID_MODE),
18
- "snkSimpleCrudTaskbar.grid_regular": this.resolveInMemoryBtns(this.REGULAR_DEFAULT_BTNS).concat(TaskbarElement.FORM_MODE),
19
- "snkSimpleCrudTaskbar.form_selected": this.resolveInMemoryBtns(this.REGULAR_SELECTED_BTNS).concat(TaskbarElement.GRID_MODE),
20
- "snkSimpleCrudTaskbar.grid_selected": this.resolveInMemoryBtns(this.REGULAR_SELECTED_BTNS).concat(TaskbarElement.FORM_MODE),
19
+ "snkSimpleCrudTaskbar.form_regular": this.getButtons(false, TaskbarElement.GRID_MODE),
20
+ "snkSimpleCrudTaskbar.grid_regular": this.getButtons(false, TaskbarElement.FORM_MODE),
21
+ "snkSimpleCrudTaskbar.form_selected": this.getButtons(true, TaskbarElement.GRID_MODE),
22
+ "snkSimpleCrudTaskbar.grid_selected": this.getButtons(true, TaskbarElement.FORM_MODE),
21
23
  "snkSimpleCrudTaskbar.finish_edition": ["CANCEL", "SAVE"]
22
24
  });
25
+ this._showPopUpGridConfig = false;
26
+ this._showFormConfig = false;
23
27
  this._currentViewMode = VIEW_MODE.GRID;
24
28
  this._config = undefined;
25
29
  this._fieldToGetFocus = undefined;
30
+ this._customContainerId = `SNK-SIMPLE-CRUD-CUSTOM-CONTAINER-${StringUtils.generateUUID()}`;
26
31
  this.dataState = undefined;
27
32
  this.dataUnit = undefined;
28
33
  this.mode = SIMPLE_CRUD_MODE.SERVER;
@@ -36,6 +41,20 @@ export class SnkSimpleCrud {
36
41
  this.useEnterLikeTab = false;
37
42
  this.actionsList = undefined;
38
43
  this.configName = undefined;
44
+ this.showConfiguratorButtons = undefined;
45
+ }
46
+ getButtons(selected, changeModeBtn) {
47
+ return this.addConfigButton(this.resolveInMemoryBtns(selected ? this.REGULAR_DEFAULT_BTNS : this.REGULAR_SELECTED_BTNS)
48
+ .concat(changeModeBtn));
49
+ }
50
+ addConfigButton(buttons) {
51
+ if (this.configName === undefined) {
52
+ return buttons;
53
+ }
54
+ return buttons.concat(TaskbarElement.CONFIGURATOR);
55
+ }
56
+ get application() {
57
+ return ApplicationContext.getContextValue("__SNK__APPLICATION__");
39
58
  }
40
59
  resolveInMemoryBtns(taskbarButtons) {
41
60
  const newTaskBarConfig = [...taskbarButtons];
@@ -55,7 +74,10 @@ export class SnkSimpleCrud {
55
74
  }
56
75
  actionClickListener(evt) {
57
76
  const act = evt.detail;
58
- if (act === TaskbarElement.GRID_MODE) {
77
+ if (act === TaskbarElement.CONFIGURATOR) {
78
+ this._snkConfigurator.open();
79
+ }
80
+ else if (act === TaskbarElement.GRID_MODE) {
59
81
  this.goToView(VIEW_MODE.GRID);
60
82
  }
61
83
  else if (act === TaskbarElement.FORM_MODE) {
@@ -73,8 +95,64 @@ export class SnkSimpleCrud {
73
95
  this.dataStateChange.emit(newValue);
74
96
  }
75
97
  }
76
- componentWillRender() {
98
+ openConfig(viewMode) {
99
+ this._snkConfigurator.close();
100
+ if (viewMode === VIEW_MODE.GRID) {
101
+ this.openGridConfig();
102
+ }
103
+ else if (viewMode === VIEW_MODE.FORM) {
104
+ this.openFormConfig();
105
+ }
106
+ }
107
+ openGridConfig() {
108
+ this._grid.getColumnsState()
109
+ .then((gridColumns) => {
110
+ this._snkGridConfig.columns = gridColumns.filter(c => c.name);
111
+ this._snkGridConfig.selectedIndex = 0;
112
+ this._showPopUpGridConfig = true;
113
+ });
114
+ }
115
+ openFormConfig() {
116
+ this._showFormConfig = true;
117
+ }
118
+ loadGridConfig() {
119
+ if (this.gridConfig != undefined || this._gridConfigAlreadyLoaded) {
120
+ return;
121
+ }
122
+ this._gridConfigAlreadyLoaded = true;
123
+ return new Promise((accept, reject) => {
124
+ ConfigStorage.loadGridConfig(this.configName, this._resourceID)
125
+ .then(config => {
126
+ this.setGridConfig(config);
127
+ accept();
128
+ })
129
+ .catch(reason => {
130
+ reject(reason);
131
+ });
132
+ });
133
+ }
134
+ async loadFormConfig() {
135
+ if (this._formConfigManager == undefined) {
136
+ this._formConfigManager = new SnkFormConfigManager(this.configName, this._resourceID);
137
+ this._formConfigManager.setConfig(this.formConfig);
138
+ }
139
+ if (this.formConfig != undefined || this._formConfigAlreadyLoaded) {
140
+ return;
141
+ }
142
+ this._formConfigAlreadyLoaded = true;
143
+ this.setFormConfig(await this._formConfigManager.loadConfig());
144
+ }
145
+ async componentWillRender() {
146
+ this._resourceID = await this.application.getResourceID();
77
147
  this._taskbarProcessor.process(this.getTaskBarId(), this.taskbarManager, this.dataState, this.getTaskBarDisabledButtons());
148
+ if (this.configName === undefined) {
149
+ return;
150
+ }
151
+ if (this.gridConfig != undefined || this._gridConfigAlreadyLoaded) {
152
+ return;
153
+ }
154
+ this.loadGridConfig();
155
+ this.loadFormConfig();
78
156
  }
79
157
  componentWillLoad() {
80
158
  this.processMetadata();
@@ -82,8 +160,7 @@ export class SnkSimpleCrud {
82
160
  this.configDatasource();
83
161
  }
84
162
  configDatasource() {
85
- const application = ApplicationContext.getContextValue("__SNK__APPLICATION__");
86
- this._multiSelectionListDataSource.setApplication(application);
163
+ this._multiSelectionListDataSource.setApplication(this.application);
87
164
  this._multiSelectionListDataSource.setDataUnit(this.dataUnit);
88
165
  }
89
166
  getTaskBarId() {
@@ -124,6 +201,20 @@ export class SnkSimpleCrud {
124
201
  getRecords() {
125
202
  return Promise.resolve(this.dataUnit.records);
126
203
  }
204
+ /**
205
+ * Usado para abrir o configurator do CRUD
206
+ */
207
+ async openConfigurator() {
208
+ var _a;
209
+ (_a = this._snkConfigurator) === null || _a === void 0 ? void 0 : _a.open();
210
+ }
211
+ /**
212
+ * Usado para fechar o configurator do CRUD
213
+ */
214
+ async closeConfigurator() {
215
+ var _a;
216
+ (_a = this._snkConfigurator) === null || _a === void 0 ? void 0 : _a.close();
217
+ }
127
218
  processMetadata() {
128
219
  const fieldsMetadataElem = this._element.querySelectorAll("snk-field-metadata");
129
220
  const fieldMetadata = [];
@@ -178,6 +269,14 @@ export class SnkSimpleCrud {
178
269
  this.dataUnit.clearSelection();
179
270
  }
180
271
  }
272
+ handleConfiguratorEvent(evt, type) {
273
+ evt.stopImmediatePropagation();
274
+ if (type === 'SAVE') {
275
+ this.configuratorSave.emit();
276
+ return;
277
+ }
278
+ this.configuratorCancel.emit();
279
+ }
181
280
  getColumnSearch(actionButton, item) {
182
281
  if (this._columnSearch != undefined) {
183
282
  return this._columnSearch;
@@ -291,11 +390,42 @@ export class SnkSimpleCrud {
291
390
  disconnectedCallback() {
292
391
  window.removeEventListener("keydown", this._keyDownHandler);
293
392
  }
393
+ gridConfigChangeHandler(evt) {
394
+ const config = evt.detail;
395
+ ConfigStorage.saveGridConfig(config, this.configName, this._resourceID);
396
+ evt.stopPropagation();
397
+ }
398
+ modalConfigChangeHandler(evt) {
399
+ const config = evt.detail;
400
+ this._grid.setColumnsState(config.columns)
401
+ .then(() => {
402
+ this.setGridConfig(config);
403
+ this.closeGridConfig();
404
+ });
405
+ evt.stopPropagation();
406
+ }
407
+ setGridConfig(config) {
408
+ this.gridConfig = config;
409
+ CrudUtils.assertDefaultSorting(this.gridConfig, this.dataUnit);
410
+ }
411
+ setFormConfig(config) {
412
+ this.formConfig = config;
413
+ }
414
+ closeGridConfig() {
415
+ this._showPopUpGridConfig = false;
416
+ }
417
+ closeFormConfig() {
418
+ this._showFormConfig = false;
419
+ }
420
+ /* istanbul ignore next */
294
421
  render() {
295
- var _a;
296
- 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-box ez-box--shadow simple-crud__container-section" }, h("snk-taskbar", { class: "ez-box ez-box--shadow ez-padding--medium", 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, actionsList: this.getActionsList(), disabledButtons: this._taskbarProcessor.disabledButtons, customButtons: this._taskbarProcessor.customButtons, slot: "leftButtons", presentationMode: PresentationMode.SECONDARY }, h("slot", { name: "TASKBAR_CUSTOM_ELEMENTS" })), h("ez-view-stack", { ref: (ref) => this._viewStack = ref, "data-element-id": "simple-crud" }, h("stack-item", null, h("ez-grid", { class: "ez-margin-bottom--large", ref: ref => this._grid = ref, 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)
422
+ var _a, _b, _c;
423
+ if (this.dataUnit == undefined) {
424
+ return;
425
+ }
426
+ 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-box ez-box--shadow simple-crud__container-section" }, h("snk-taskbar", { class: "ez-box ez-box--shadow ez-padding--medium", 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, actionsList: this.getActionsList(), disabledButtons: this._taskbarProcessor.disabledButtons, customButtons: this._taskbarProcessor.customButtons, slot: "leftButtons", presentationMode: PresentationMode.SECONDARY }, h("slot", { name: "TASKBAR_CUSTOM_ELEMENTS" })), h("ez-view-stack", { ref: (ref) => this._viewStack = ref, "data-element-id": "simple-crud" }, h("stack-item", null, h("ez-grid", { class: "ez-margin-bottom--large", ref: ref => this._grid = ref, dataUnit: this.dataUnit, config: this.gridConfig, "no-header": true, multipleSelection: this.multipleSelection, onEzDoubleClick: () => this.goToView(VIEW_MODE.FORM), onConfigChange: evt => this.gridConfigChangeHandler(evt), columnfilterDataSource: this.dataUnit.name && this.dataUnit.name.includes(InMemoryLoader.IN_MEMORY_DATA_UNIT_NAME)
297
427
  ? undefined
298
- : this._multiSelectionListDataSource, useEnterLikeTab: this.useEnterLikeTab }, h("div", { slot: "footer" }, h("slot", { name: "snkSimpleCrudFooter" })))), h("stack-item", null, h("ez-form", { class: "ez-margin-top--large", dataUnit: this.dataUnit, config: this.formConfig, fieldToFocus: this._fieldToGetFocus, onEzFormSetFields: (evt) => this.handleFormSetFields(evt.detail), onEzFormRequestClearFieldToFocus: this.clearFieldToFocusHandler.bind(this) }))))));
428
+ : this._multiSelectionListDataSource, useEnterLikeTab: this.useEnterLikeTab }, h("div", { slot: "footer" }, h("slot", { name: "snkSimpleCrudFooter" })))), h("stack-item", null, h("ez-form", { class: `ez-margin-top--large ${this._showFormConfig ? "simple-crud__form--hidden" : ""}`, dataUnit: this.dataUnit, config: (_b = this._formConfigManager) === null || _b === void 0 ? void 0 : _b.getConfig((_c = this.dataState) === null || _c === void 0 ? void 0 : _c.insertionMode, this.dataUnit), fieldToFocus: this._fieldToGetFocus, onEzFormSetFields: (evt) => this.handleFormSetFields(evt.detail), onEzFormRequestClearFieldToFocus: this.clearFieldToFocusHandler.bind(this) }), this._showFormConfig && h("snk-form-config", { messagesBuilder: this.messagesBuilder, dataUnit: this.dataUnit, configManager: this._formConfigManager, onConfigClose: () => this.closeFormConfig() })), this.messagesBuilder && h("snk-configurator", { ref: (ref) => this._snkConfigurator = ref, viewMode: this._currentViewMode, messagesBuilder: this.messagesBuilder, onConfigSelected: (evt) => this.goToView(evt.detail), onOpenConfig: (evt) => this.openConfig(evt.detail), showActionButtons: this.showConfiguratorButtons, onSave: evt => this.handleConfiguratorEvent(evt, 'SAVE'), onCancel: evt => this.handleConfiguratorEvent(evt, 'CANCEL'), resourceID: this._resourceID, customContainerId: this._customContainerId })), h("div", { id: `${this._customContainerId}` }, h("slot", { name: "SnkConfigContainerSlot" }))), h("ez-modal", { modalSize: "small", closeEsc: false, closeOutsideClick: false, opened: this._showPopUpGridConfig, 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), selectedIndex: 0, configName: this.configName, onConfigChange: (evt) => this.modalConfigChangeHandler(evt), onConfigCancel: () => this.closeGridConfig(), resourceID: this._resourceID }))));
299
429
  }
300
430
  static get is() { return "snk-simple-crud"; }
301
431
  static get encapsulation() { return "scoped"; }
@@ -376,7 +506,7 @@ export class SnkSimpleCrud {
376
506
  },
377
507
  "gridConfig": {
378
508
  "type": "unknown",
379
- "mutable": false,
509
+ "mutable": true,
380
510
  "complexType": {
381
511
  "original": "IGridConfig",
382
512
  "resolved": "IGridConfig",
@@ -546,14 +676,34 @@ export class SnkSimpleCrud {
546
676
  },
547
677
  "attribute": "config-name",
548
678
  "reflect": false
679
+ },
680
+ "showConfiguratorButtons": {
681
+ "type": "boolean",
682
+ "mutable": false,
683
+ "complexType": {
684
+ "original": "boolean",
685
+ "resolved": "boolean",
686
+ "references": {}
687
+ },
688
+ "required": false,
689
+ "optional": false,
690
+ "docs": {
691
+ "tags": [],
692
+ "text": "Usado para exibir os bot\u00F5es de a\u00E7\u00E3o do snk-configurator."
693
+ },
694
+ "attribute": "show-configurator-buttons",
695
+ "reflect": false
549
696
  }
550
697
  };
551
698
  }
552
699
  static get states() {
553
700
  return {
701
+ "_showPopUpGridConfig": {},
702
+ "_showFormConfig": {},
554
703
  "_currentViewMode": {},
555
704
  "_config": {},
556
705
  "_fieldToGetFocus": {},
706
+ "_customContainerId": {},
557
707
  "_formFields": {}
558
708
  };
559
709
  }
@@ -635,6 +785,36 @@ export class SnkSimpleCrud {
635
785
  }
636
786
  }
637
787
  }
788
+ }, {
789
+ "method": "configuratorSave",
790
+ "name": "configuratorSave",
791
+ "bubbles": true,
792
+ "cancelable": true,
793
+ "composed": true,
794
+ "docs": {
795
+ "tags": [],
796
+ "text": "Emitido quando salva a configura\u00E7\u00E3o no configurator do CRUD."
797
+ },
798
+ "complexType": {
799
+ "original": "any",
800
+ "resolved": "any",
801
+ "references": {}
802
+ }
803
+ }, {
804
+ "method": "configuratorCancel",
805
+ "name": "configuratorCancel",
806
+ "bubbles": true,
807
+ "cancelable": true,
808
+ "composed": true,
809
+ "docs": {
810
+ "tags": [],
811
+ "text": "Emitido quando cancela o salvamento da configura\u00E7\u00E3o no configurator do CRUD."
812
+ },
813
+ "complexType": {
814
+ "original": "any",
815
+ "resolved": "any",
816
+ "references": {}
817
+ }
638
818
  }];
639
819
  }
640
820
  static get methods() {
@@ -733,6 +913,38 @@ export class SnkSimpleCrud {
733
913
  "text": "",
734
914
  "tags": []
735
915
  }
916
+ },
917
+ "openConfigurator": {
918
+ "complexType": {
919
+ "signature": "() => Promise<void>",
920
+ "parameters": [],
921
+ "references": {
922
+ "Promise": {
923
+ "location": "global"
924
+ }
925
+ },
926
+ "return": "Promise<void>"
927
+ },
928
+ "docs": {
929
+ "text": "Usado para abrir o configurator do CRUD",
930
+ "tags": []
931
+ }
932
+ },
933
+ "closeConfigurator": {
934
+ "complexType": {
935
+ "signature": "() => Promise<void>",
936
+ "parameters": [],
937
+ "references": {
938
+ "Promise": {
939
+ "location": "global"
940
+ }
941
+ },
942
+ "return": "Promise<void>"
943
+ },
944
+ "docs": {
945
+ "text": "Usado para fechar o configurator do CRUD",
946
+ "tags": []
947
+ }
736
948
  }
737
949
  };
738
950
  }
@@ -86,14 +86,7 @@ export class PesquisaFetcher {
86
86
  };
87
87
  }
88
88
  const options = searchOptions != undefined
89
- ? {
90
- "pkFieldName": searchOptions.codeFieldName,
91
- "label": searchOptions.descriptionFieldName,
92
- "fieldName": searchOptions.codeFieldName,
93
- "useDescriptionOptions": false,
94
- "enableRowsCounter": true
95
- }
96
- : undefined;
89
+ ? Object.assign(Object.assign({}, searchOptions), { "pkFieldName": searchOptions.codeFieldName, "label": searchOptions.descriptionFieldName, "fieldName": searchOptions.codeFieldName, "useDescriptionOptions": false, "enableRowsCounter": true }) : undefined;
97
90
  const reqBody = {
98
91
  "serviceName": serviceName,
99
92
  "requestBody": {
@@ -1,6 +1,18 @@
1
1
  import { DataFetcher } from '../';
2
- import { ApplicationContext } from '@sankhyalabs/core';
2
+ import { ApplicationContext, SortMode } from '@sankhyalabs/core';
3
3
  export class CrudUtils {
4
+ static assertDefaultSorting(gridConfig, dataUnit) {
5
+ if (gridConfig && dataUnit) {
6
+ dataUnit.defaultSorting = gridConfig
7
+ .columns
8
+ .filter(col => col.ascending != undefined)
9
+ .sort((colA, colB) => colA.orderIndex - colB.orderIndex)
10
+ .map(({ name: field, ascending }) => {
11
+ const { dataType } = dataUnit.getField(field);
12
+ return { field, dataType, mode: ascending ? SortMode.ASC : SortMode.DESC };
13
+ });
14
+ }
15
+ }
4
16
  static find(entityName, fields, criteria, onlyFirst = true, criteriaExpression, orderBy) {
5
17
  const SERVICE_CRUD_FIND = "mge@crud.find";
6
18
  let parsedFields = [];
@@ -90,14 +90,7 @@ class PesquisaFetcher {
90
90
  };
91
91
  }
92
92
  const options = searchOptions != undefined
93
- ? {
94
- "pkFieldName": searchOptions.codeFieldName,
95
- "label": searchOptions.descriptionFieldName,
96
- "fieldName": searchOptions.codeFieldName,
97
- "useDescriptionOptions": false,
98
- "enableRowsCounter": true
99
- }
100
- : undefined;
93
+ ? Object.assign(Object.assign({}, searchOptions), { "pkFieldName": searchOptions.codeFieldName, "label": searchOptions.descriptionFieldName, "fieldName": searchOptions.codeFieldName, "useDescriptionOptions": false, "enableRowsCounter": true }) : undefined;
101
94
  const reqBody = {
102
95
  "serviceName": serviceName,
103
96
  "requestBody": {
@@ -1,8 +1,98 @@
1
- import { UserInterface, DateUtils } from '@sankhyalabs/core';
2
- import InMemoryFilterColumnDataSource from '@sankhyalabs/ezui/dist/collection/components/ez-grid/utils/InMemoryFilterColumnDataSource';
1
+ import { D as DataFetcher } from './DataFetcher.js';
3
2
  import { a as PreloadManager } from './dataunit-fetcher.js';
3
+ import { SortMode, ApplicationContext, UserInterface, DateUtils } from '@sankhyalabs/core';
4
+ import './index2.js';
5
+ import './snk-actions-button2.js';
6
+ import '@sankhyalabs/ezui/dist/collection/utils/constants';
7
+ import '@sankhyalabs/core/dist/dataunit/metadata/UnitMetadata';
8
+ import './filter-item-type.enum.js';
9
+ import './form-config-fetcher.js';
10
+ import InMemoryFilterColumnDataSource from '@sankhyalabs/ezui/dist/collection/components/ez-grid/utils/InMemoryFilterColumnDataSource';
4
11
  import { h } from '@stencil/core/internal/client';
5
12
 
13
+ class CrudUtils {
14
+ static assertDefaultSorting(gridConfig, dataUnit) {
15
+ if (gridConfig && dataUnit) {
16
+ dataUnit.defaultSorting = gridConfig
17
+ .columns
18
+ .filter(col => col.ascending != undefined)
19
+ .sort((colA, colB) => colA.orderIndex - colB.orderIndex)
20
+ .map(({ name: field, ascending }) => {
21
+ const { dataType } = dataUnit.getField(field);
22
+ return { field, dataType, mode: ascending ? SortMode.ASC : SortMode.DESC };
23
+ });
24
+ }
25
+ }
26
+ static find(entityName, fields, criteria, onlyFirst = true, criteriaExpression, orderBy) {
27
+ const SERVICE_CRUD_FIND = "mge@crud.find";
28
+ let parsedFields = [];
29
+ let parsedCriteria = [];
30
+ let literalCriteria = {};
31
+ let application = ApplicationContext.getContextValue("__SNK__APPLICATION__");
32
+ if (fields) {
33
+ if (!Array.isArray(fields)) {
34
+ throw new Error(application.messagesBuilder.getMessage("crudUtils.errorArray", null));
35
+ }
36
+ fields.forEach((fieldName) => {
37
+ parsedFields.push({
38
+ name: fieldName
39
+ });
40
+ });
41
+ }
42
+ if (criteria) {
43
+ for (const key in criteria) {
44
+ if (criteria.hasOwnProperty(key)) {
45
+ parsedCriteria.push({ nome: key, valor: criteria[key] });
46
+ }
47
+ }
48
+ }
49
+ if (criteriaExpression) {
50
+ literalCriteria = {
51
+ expression: {
52
+ $: criteriaExpression
53
+ }
54
+ };
55
+ }
56
+ let request = {
57
+ requestBody: {
58
+ entity: {
59
+ name: entityName,
60
+ criterio: parsedCriteria,
61
+ fields: {
62
+ field: parsedFields
63
+ },
64
+ literalCriteria: literalCriteria,
65
+ orderby: orderBy
66
+ }
67
+ }
68
+ };
69
+ return new Promise((resolve) => {
70
+ DataFetcher.get().callServiceBroker(SERVICE_CRUD_FIND, JSON.stringify(request)).then((result) => {
71
+ var _a;
72
+ let entities = (_a = result.entidades) === null || _a === void 0 ? void 0 : _a.entidade;
73
+ if (entities != undefined) {
74
+ let crudFindResult = {
75
+ fields: new Map()
76
+ };
77
+ for (let key in entities) {
78
+ let fieldValue = entities[key];
79
+ if (fieldValue.hasOwnProperty('$')) {
80
+ crudFindResult.fields.set(key, fieldValue.$);
81
+ }
82
+ if (onlyFirst) {
83
+ break;
84
+ }
85
+ }
86
+ resolve(crudFindResult);
87
+ }
88
+ else {
89
+ resolve(null);
90
+ }
91
+ });
92
+ });
93
+ }
94
+ }
95
+
6
96
  class TaskbarProcessor {
7
97
  constructor(defaultButtons) {
8
98
  this._defaultButtons = defaultButtons;
@@ -118,4 +208,4 @@ const openFieldSearch = async (moreOptions, field) => {
118
208
  await moreOptions.showActions();
119
209
  };
120
210
 
121
- export { SnkMultiSelectionListDataSource as S, TaskbarProcessor as T, buildFieldSearch as b, openFieldSearch as o };
211
+ export { CrudUtils as C, SnkMultiSelectionListDataSource as S, TaskbarProcessor as T, buildFieldSearch as b, openFieldSearch as o };
@@ -4,7 +4,7 @@ export { SnkActionsForm as SnkActionsForm } from '../types/components/snk-action
4
4
  export { SnkApplication as SnkApplication } from '../types/components/snk-application/snk-application';
5
5
  export { SnkAttach as SnkAttach } from '../types/components/snk-attach/snk-attach';
6
6
  export { SnkActionsForm as SnkClientConfirm } from '../types/components/snk-actions-button/subcomponents/snk-client-confirm';
7
- export { SnkConfigOptions as SnkConfigOptions } from '../types/components/snk-form/subcomponents/snk-config-options/snk-config-options';
7
+ export { SnkConfigOptions as SnkConfigOptions } from '../types/components/snk-form-config/subcomponents/snk-config-options/snk-config-options';
8
8
  export { SnkConfigurator as SnkConfigurator } from '../types/components/snk-configurator/snk-configurator';
9
9
  export { SnkCrud as SnkCrud } from '../types/components/snk-crud/snk-crud';
10
10
  export { SnkCustomSlotElements as SnkCustomSlotElements } from '../types/components/snk-custom-slot-elements/snk-custom-slot-elements';
@@ -15,7 +15,7 @@ export { SnkEntityList as SnkEntityList } from '../types/components/snk-entity-l
15
15
  export { SnkExporterEmailSender as SnkExporterEmailSender } from '../types/components/snk-data-exporter/exporter-email-sender/snk-exporter-email-sender';
16
16
  export { SnkExpressionGroup as SnkExpressionGroup } from '../types/components/snk-personalized-filter/subcomponents/snk-expression-group/snk-expression-group';
17
17
  export { SnkExpressionItem as SnkExpressionItem } from '../types/components/snk-personalized-filter/subcomponents/snk-expression-item/snk-expression-item';
18
- export { SnkFieldConfig as SnkFieldConfig } from '../types/components/snk-form/subcomponents/snk-field-config/snk-field-config';
18
+ export { SnkFieldConfig as SnkFieldConfig } from '../types/components/snk-form-config/subcomponents/snk-field-config/snk-field-config';
19
19
  export { SnkFilterAdvancedMode as SnkFilterAdvancedMode } from '../types/components/snk-personalized-filter/subcomponents/snk-filter-advanced-mode/snk-filter-advanced-mode';
20
20
  export { SnkFilterAssistentMode as SnkFilterAssistentMode } from '../types/components/snk-personalized-filter/subcomponents/snk-filter-assistent-mode/snk-filter-assistent-mode';
21
21
  export { SnkFilterBar as SnkFilterBar } from '../types/components/snk-filter-bar/snk-filter-bar';
@@ -34,20 +34,20 @@ export { SnkFilterPeriod as SnkFilterPeriod } from '../types/components/snk-filt
34
34
  export { SnkFilterSearch as SnkFilterSearch } from '../types/components/snk-filter-bar/filter-item/editors/snk-filter-search';
35
35
  export { SnkFilterText as SnkFilterText } from '../types/components/snk-filter-bar/filter-item/editors/snk-filter-text';
36
36
  export { SnkForm as SnkForm } from '../types/components/snk-form/snk-form';
37
- export { SnkFormConfig as SnkFormConfig } from '../types/components/snk-form/subcomponents/snk-form-config/snk-form-config';
37
+ export { SnkFormConfig as SnkFormConfig } from '../types/components/snk-form-config/snk-form-config';
38
38
  export { SnkFormSummary as SnkFormSummary } from '../types/components/snk-crud/subcomponents/snk-form-summary';
39
39
  export { SnkFormView as SnkFormView } from '../types/components/snk-crud/subcomponents/snk-form-view';
40
40
  export { SnkGrid as SnkGrid } from '../types/components/snk-grid/snk-grid';
41
- export { SnkGridConfig as SnkGridConfig } from '../types/components/snk-grid/subcomponents/snk-grid-config/snk-grid-config';
41
+ export { SnkGridConfig as SnkGridConfig } from '../types/components/snk-grid-config/snk-grid-config';
42
42
  export { SnkGuidesViewer as SnkGuidesViewer } from '../types/components/snk-crud/subcomponents/snk-guides-viewer';
43
43
  export { SnkPersonalizedFilter as SnkPersonalizedFilter } from '../types/components/snk-personalized-filter/snk-personalized-filter';
44
44
  export { SnkFilterPersonalized as SnkPersonalizedFilterEditor } from '../types/components/snk-filter-bar/filter-item/editors/snk-personalized-filter-editor/snk-personalized-filter-editor';
45
45
  export { SnkPesquisa as SnkPesquisa } from '../types/components/snk-pesquisa/snk-pesquisa';
46
46
  export { SnkPrintSelector as SnkPrintSelector } from '../types/components/snk-print-selector/snk-print-selector';
47
- export { SelectBox as SnkSelectBox } from '../types/components/snk-grid/subcomponents/snk-select-box/snk-select-box';
47
+ export { SelectBox as SnkSelectBox } from '../types/components/snk-grid-config/snk-select-box/snk-select-box';
48
48
  export { SnkSimpleBar as SnkSimpleBar } from '../types/components/snk-simple-bar/snk-simple-bar';
49
49
  export { SnkSimpleCrud as SnkSimpleCrud } from '../types/components/snk-simple-crud/snk-simple-crud';
50
- export { SnkTabConfig as SnkTabConfig } from '../types/components/snk-form/subcomponents/snk-tab-config/snk-tab-config';
50
+ export { SnkTabConfig as SnkTabConfig } from '../types/components/snk-form-config/subcomponents/snk-tab-config/snk-tab-config';
51
51
  export { SnkTaskbar as SnkTaskbar } from '../types/components/snk-taskbar/snk-taskbar';
52
52
  export { TaskbarActionsButton as TaskbarActionsButton } from '../types/components/snk-taskbar/elements/taskbar-actions-button/taskbar-actions-button';
53
53
  export { TestePesquisa as TestePesquisa } from '../types/components/teste-pesquisa/teste-pesquisa';