@sankhyalabs/sankhyablocks 1.3.31-beta.16 → 1.3.31-beta.18

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 (190) hide show
  1. package/dist/cjs/{SnkMessageBuilder-79cf15c5.js → SnkMessageBuilder-02c2ca02.js} +137 -1
  2. package/dist/cjs/app-globals-3a1e7e63.js +5 -0
  3. package/dist/cjs/css-shim-b8158822.js +6 -0
  4. package/dist/cjs/dom-36862b77.js +75 -0
  5. package/dist/cjs/filter-item-type.enum-e2e1bc5b.js +14 -0
  6. package/dist/cjs/index-02201bc9.js +2397 -0
  7. package/dist/cjs/{index-5575fe3d.js → index-b0b676c5.js} +1598 -145
  8. package/dist/cjs/loader.cjs.js +18 -2
  9. package/dist/cjs/sankhyablocks.cjs.js +116 -4
  10. package/dist/cjs/shadow-css-346c0795.js +389 -0
  11. package/dist/cjs/snk-application.cjs.entry.js +662 -66
  12. package/dist/cjs/snk-crud.cjs.entry.js +3 -2
  13. package/dist/cjs/snk-data-unit.cjs.entry.js +23 -24
  14. package/dist/cjs/snk-filter-bar.cjs.entry.js +247 -0
  15. package/dist/cjs/snk-filter-binary-select.cjs.entry.js +47 -0
  16. package/dist/cjs/snk-filter-detail.cjs.entry.js +49 -0
  17. package/dist/cjs/snk-filter-item.cjs.entry.js +143 -0
  18. package/dist/cjs/snk-filter-list.cjs.entry.js +91 -0
  19. package/dist/cjs/snk-filter-multi-select.cjs.entry.js +23 -0
  20. package/dist/cjs/snk-filter-number.cjs.entry.js +24 -0
  21. package/dist/cjs/snk-filter-period.cjs.entry.js +26 -0
  22. package/dist/cjs/snk-filter-search.cjs.entry.js +44 -0
  23. package/dist/cjs/snk-filter-text.cjs.entry.js +22 -0
  24. package/dist/cjs/{snk-form_2.cjs.entry.js → snk-form.cjs.entry.js} +21 -65
  25. package/dist/cjs/snk-grid.cjs.entry.js +79 -0
  26. package/dist/cjs/snk-pesquisa.cjs.entry.js +5 -5
  27. package/dist/cjs/snk-taskbar.cjs.entry.js +17 -13
  28. package/dist/cjs/{taskbar-elements-2ae0d005.js → taskbar-elements-283c737e.js} +37 -18
  29. package/dist/cjs/taskbar-processor-6bd0d35c.js +47 -0
  30. package/dist/cjs/teste-pesquisa.cjs.entry.js +5 -5
  31. package/dist/collection/collection-manifest.json +10 -0
  32. package/dist/collection/components/snk-application/errorhandler/snk-error-handler.js +7 -0
  33. package/dist/collection/components/snk-application/snk-application.js +89 -17
  34. package/dist/collection/components/snk-crud/snk-crud.js +41 -3
  35. package/dist/collection/components/snk-filter-bar/filter-item/editors/snk-filter-binary-select.js +88 -0
  36. package/dist/collection/components/snk-filter-bar/filter-item/editors/snk-filter-multi-select.js +64 -0
  37. package/dist/collection/components/snk-filter-bar/filter-item/editors/snk-filter-number.js +65 -0
  38. package/dist/collection/components/snk-filter-bar/filter-item/editors/snk-filter-period.js +69 -0
  39. package/dist/collection/components/snk-filter-bar/filter-item/editors/snk-filter-search.js +118 -0
  40. package/dist/collection/components/snk-filter-bar/filter-item/editors/snk-filter-text.js +63 -0
  41. package/dist/collection/components/snk-filter-bar/filter-item/filter-item-type.enum.js +10 -0
  42. package/dist/collection/components/snk-filter-bar/filter-item/snk-filter-detail.js +118 -0
  43. package/dist/collection/components/snk-filter-bar/filter-item/snk-filter-item.js +244 -0
  44. package/dist/collection/components/snk-filter-bar/filter-list/snk-filter-list.js +233 -0
  45. package/dist/collection/components/snk-filter-bar/snk-filter-bar.css +114 -0
  46. package/dist/collection/components/snk-filter-bar/snk-filter-bar.js +305 -0
  47. package/dist/collection/components/snk-form/snk-form.js +41 -1
  48. package/dist/collection/components/snk-grid/snk-grid.css +14 -1
  49. package/dist/collection/components/snk-grid/snk-grid.js +35 -3
  50. package/dist/collection/components/snk-taskbar/elements/taskbar-elements.js +35 -17
  51. package/dist/collection/components/snk-taskbar/processor/taskbar-processor.js +43 -0
  52. package/dist/collection/components/snk-taskbar/snk-taskbar.js +36 -11
  53. package/dist/collection/lib/http/data-fetcher/DataFetcher.js +24 -2
  54. package/dist/collection/lib/http/data-fetcher/fetchers/dataunit-fetcher.js +1 -1
  55. package/dist/collection/lib/http/data-fetcher/fetchers/filter-bar-config-fetcher.js +388 -0
  56. package/dist/collection/lib/message/SnkMessageBuilder.js +3 -1
  57. package/dist/collection/lib/message/resources/snk-filter-bar.msg.js +18 -0
  58. package/dist/components/SnkMessageBuilder.js +137 -2
  59. package/dist/components/filter-item-type.enum.js +12 -0
  60. package/dist/components/index.d.ts +10 -0
  61. package/dist/components/index.js +14 -0
  62. package/dist/components/index2.js +2384 -0
  63. package/dist/components/snk-application2.js +628 -30
  64. package/dist/components/snk-crud.js +29 -3
  65. package/dist/components/snk-data-unit.js +2 -3
  66. package/dist/components/snk-filter-bar.d.ts +11 -0
  67. package/dist/components/snk-filter-bar.js +6 -0
  68. package/dist/components/snk-filter-bar2.js +278 -0
  69. package/dist/components/snk-filter-binary-select.d.ts +11 -0
  70. package/dist/components/snk-filter-binary-select.js +63 -0
  71. package/dist/components/snk-filter-detail.d.ts +11 -0
  72. package/dist/components/snk-filter-detail.js +6 -0
  73. package/dist/components/snk-filter-detail2.js +63 -0
  74. package/dist/components/snk-filter-item.d.ts +11 -0
  75. package/dist/components/snk-filter-item.js +6 -0
  76. package/dist/components/snk-filter-item2.js +164 -0
  77. package/dist/components/snk-filter-list.d.ts +11 -0
  78. package/dist/components/snk-filter-list.js +6 -0
  79. package/dist/components/snk-filter-list2.js +111 -0
  80. package/dist/components/snk-filter-multi-select.d.ts +11 -0
  81. package/dist/components/snk-filter-multi-select.js +39 -0
  82. package/dist/components/snk-filter-number.d.ts +11 -0
  83. package/dist/components/snk-filter-number.js +40 -0
  84. package/dist/components/snk-filter-period.d.ts +11 -0
  85. package/dist/components/snk-filter-period.js +42 -0
  86. package/dist/components/snk-filter-search.d.ts +11 -0
  87. package/dist/components/snk-filter-search.js +62 -0
  88. package/dist/components/snk-filter-text.d.ts +11 -0
  89. package/dist/components/snk-filter-text.js +38 -0
  90. package/dist/components/snk-form2.js +21 -2
  91. package/dist/components/snk-grid2.js +42 -7
  92. package/dist/components/snk-pesquisa2.js +1 -1
  93. package/dist/components/snk-taskbar2.js +50 -27
  94. package/dist/components/taskbar-processor.js +45 -0
  95. package/dist/components/teste-pesquisa.js +1 -1
  96. package/dist/esm/{SnkMessageBuilder-3cdde541.js → SnkMessageBuilder-65d431bd.js} +137 -2
  97. package/dist/esm/app-globals-0f993ce5.js +3 -0
  98. package/dist/esm/css-shim-b3f2ee8d.js +4 -0
  99. package/dist/esm/dom-665d6011.js +73 -0
  100. package/dist/esm/filter-item-type.enum-61fbf80a.js +12 -0
  101. package/dist/esm/index-2b4d2d14.js +3262 -0
  102. package/dist/esm/index-e5b61043.js +2384 -0
  103. package/dist/esm/loader.js +18 -2
  104. package/dist/esm/sankhyablocks.js +116 -4
  105. package/dist/esm/shadow-css-b18e99d7.js +387 -0
  106. package/dist/esm/snk-application.entry.js +627 -31
  107. package/dist/esm/snk-crud.entry.js +3 -2
  108. package/dist/esm/snk-data-unit.entry.js +3 -4
  109. package/dist/esm/snk-filter-bar.entry.js +243 -0
  110. package/dist/esm/snk-filter-binary-select.entry.js +43 -0
  111. package/dist/esm/snk-filter-detail.entry.js +45 -0
  112. package/dist/esm/snk-filter-item.entry.js +139 -0
  113. package/dist/esm/snk-filter-list.entry.js +87 -0
  114. package/dist/esm/snk-filter-multi-select.entry.js +19 -0
  115. package/dist/esm/snk-filter-number.entry.js +20 -0
  116. package/dist/esm/snk-filter-period.entry.js +22 -0
  117. package/dist/esm/snk-filter-search.entry.js +40 -0
  118. package/dist/esm/snk-filter-text.entry.js +18 -0
  119. package/dist/esm/{snk-form_2.entry.js → snk-form.entry.js} +21 -64
  120. package/dist/esm/snk-grid.entry.js +75 -0
  121. package/dist/esm/snk-pesquisa.entry.js +2 -2
  122. package/dist/esm/snk-taskbar.entry.js +16 -12
  123. package/dist/esm/taskbar-elements-35d64ff9.js +90 -0
  124. package/dist/esm/taskbar-processor-aa6772c9.js +45 -0
  125. package/dist/esm/teste-pesquisa.entry.js +2 -2
  126. package/dist/sankhyablocks/SnkMessageBuilder-65d431bd.js +303 -0
  127. package/dist/sankhyablocks/app-globals-0f993ce5.js +3 -0
  128. package/dist/sankhyablocks/css-shim-b3f2ee8d.js +4 -0
  129. package/dist/sankhyablocks/dom-665d6011.js +73 -0
  130. package/dist/sankhyablocks/filter-item-type.enum-61fbf80a.js +12 -0
  131. package/dist/sankhyablocks/index-2b4d2d14.js +3262 -0
  132. package/dist/sankhyablocks/index-e5b61043.js +2384 -0
  133. package/dist/sankhyablocks/index.esm.js +1 -0
  134. package/dist/sankhyablocks/sankhyablocks.esm.js +129 -1
  135. package/dist/sankhyablocks/shadow-css-b18e99d7.js +387 -0
  136. package/dist/sankhyablocks/snk-application.entry.js +8426 -0
  137. package/dist/sankhyablocks/snk-crud.entry.js +61 -0
  138. package/dist/sankhyablocks/snk-data-unit.entry.js +272 -0
  139. package/dist/sankhyablocks/snk-filter-bar.entry.js +243 -0
  140. package/dist/sankhyablocks/snk-filter-binary-select.entry.js +43 -0
  141. package/dist/sankhyablocks/snk-filter-detail.entry.js +45 -0
  142. package/dist/sankhyablocks/snk-filter-item.entry.js +139 -0
  143. package/dist/sankhyablocks/snk-filter-list.entry.js +87 -0
  144. package/dist/sankhyablocks/snk-filter-multi-select.entry.js +19 -0
  145. package/dist/sankhyablocks/snk-filter-number.entry.js +20 -0
  146. package/dist/sankhyablocks/snk-filter-period.entry.js +22 -0
  147. package/dist/sankhyablocks/snk-filter-search.entry.js +40 -0
  148. package/dist/sankhyablocks/snk-filter-text.entry.js +18 -0
  149. package/dist/sankhyablocks/snk-form.entry.js +129 -0
  150. package/dist/sankhyablocks/snk-grid.entry.js +75 -0
  151. package/dist/sankhyablocks/snk-pesquisa.entry.js +311 -0
  152. package/dist/sankhyablocks/snk-taskbar.entry.js +156 -0
  153. package/dist/sankhyablocks/taskbar-elements-35d64ff9.js +90 -0
  154. package/dist/sankhyablocks/taskbar-processor-aa6772c9.js +45 -0
  155. package/dist/sankhyablocks/teste-pesquisa.entry.js +33 -0
  156. package/dist/types/components/snk-application/errorhandler/snk-error-handler.d.ts +1 -0
  157. package/dist/types/components/snk-application/snk-application.d.ts +9 -0
  158. package/dist/types/components/snk-filter-bar/filter-item/editors/snk-filter-binary-select.d.ts +12 -0
  159. package/dist/types/components/snk-filter-bar/filter-item/editors/snk-filter-multi-select.d.ts +7 -0
  160. package/dist/types/components/snk-filter-bar/filter-item/editors/snk-filter-number.d.ts +7 -0
  161. package/dist/types/components/snk-filter-bar/filter-item/editors/snk-filter-period.d.ts +13 -0
  162. package/dist/types/components/snk-filter-bar/filter-item/editors/snk-filter-search.d.ts +12 -0
  163. package/dist/types/components/snk-filter-bar/filter-item/editors/snk-filter-text.d.ts +7 -0
  164. package/dist/types/components/snk-filter-bar/filter-item/filter-item-type.enum.d.ts +9 -0
  165. package/dist/types/components/snk-filter-bar/filter-item/snk-filter-detail.d.ts +14 -0
  166. package/dist/types/components/snk-filter-bar/filter-list/snk-filter-list.d.ts +40 -0
  167. package/dist/types/components/snk-filter-bar/snk-filter-bar.d.ts +45 -0
  168. package/dist/types/components/snk-taskbar/elements/taskbar-elements.d.ts +3 -2
  169. package/dist/types/components/snk-taskbar/processor/taskbar-processor.d.ts +12 -0
  170. package/dist/types/components/snk-taskbar/snk-taskbar.d.ts +17 -1
  171. package/dist/types/components.d.ts +277 -2
  172. package/dist/types/lib/http/data-fetcher/DataFetcher.d.ts +1 -0
  173. package/dist/types/lib/http/data-fetcher/fetchers/filter-bar-config-fetcher.d.ts +5 -0
  174. package/dist/types/lib/message/resources/snk-filter-bar.msg.d.ts +2 -0
  175. package/package.json +2 -2
  176. package/react/components.d.ts +0 -7
  177. package/react/components.js +0 -7
  178. package/react/components.js.map +1 -1
  179. package/dist/esm/index-cf91f542.js +0 -1817
  180. package/dist/esm/taskbar-elements-bcccc0ff.js +0 -72
  181. package/dist/sankhyablocks/p-1ba29824.entry.js +0 -74
  182. package/dist/sankhyablocks/p-2266555e.entry.js +0 -1
  183. package/dist/sankhyablocks/p-23c4c94f.js +0 -2
  184. package/dist/sankhyablocks/p-2454be94.js +0 -1
  185. package/dist/sankhyablocks/p-49743bc5.js +0 -1
  186. package/dist/sankhyablocks/p-4fa389bd.entry.js +0 -1
  187. package/dist/sankhyablocks/p-5327ba05.entry.js +0 -1
  188. package/dist/sankhyablocks/p-7a922fb4.entry.js +0 -1
  189. package/dist/sankhyablocks/p-92d6f826.entry.js +0 -1
  190. package/dist/sankhyablocks/p-bdeef7f2.entry.js +0 -1
@@ -1,6 +1,13 @@
1
1
  import { ApplicationContext } from '@sankhyalabs/core';
2
2
  import { h } from '@stencil/core';
3
+ import TaskbarProcessor from '../snk-taskbar/processor/taskbar-processor';
3
4
  export class SnkForm {
5
+ constructor() {
6
+ this._taskbarProcessor = new TaskbarProcessor({
7
+ "snkForm.regular": ["PREVIOUS", "NEXT", "DIVIDER", "CLONE", "REMOVE", "MORE_OPTIONS", "DIVIDER", "GRID_MODE", "INSERT"],
8
+ "snkForm.finish_edition": ["CANCEL", "SAVE"]
9
+ });
10
+ }
4
11
  getFormConfig() {
5
12
  return (this._dataState && this._dataState.insertionMode ? this._insertionFormConfig : this._editionFormConfig);
6
13
  }
@@ -90,11 +97,24 @@ export class SnkForm {
90
97
  parent = parent.parentElement;
91
98
  }
92
99
  }
100
+ componentWillRender() {
101
+ var _a;
102
+ const taskbarId = ((_a = this._dataState) === null || _a === void 0 ? void 0 : _a.isDirty) ? "snkForm.finish_edition" : "snkForm.regular";
103
+ const disabledButtons = [];
104
+ if (!this._dataState || !this._dataState.hasPrevious) {
105
+ disabledButtons.push("PREVIOUS");
106
+ }
107
+ if (!this._dataState || !this._dataState.hasNext) {
108
+ disabledButtons.push("NEXT");
109
+ }
110
+ this._taskbarProcessor.process(taskbarId, this.taskbarManager, this._dataState, disabledButtons);
111
+ }
93
112
  render() {
113
+ var _a;
94
114
  if (!this._configLoaded || !this._dataUnit || !this._dataState) {
95
115
  return undefined;
96
116
  }
97
- return (h("section", { class: "snk-form" }, h("div", { class: "snk-form__header snk-form__header--fixed ez-row" }, h("div", { class: "ez-col ez-col--sd-6 ez-col--tb-6", key: "formHeader" }, h("ez-button", { title: this.getMessage("snkForm.goBackTitle"), mode: "icon", iconName: "arrow_back", class: "ez-padding-right--medium", size: "small", onClick: () => this.exitForm() }), h("h1", { class: "ez-title ez-title--primary ez-title--xlarge ez-align--middle" }, this.getMessage("snkForm.title"))), h("div", { class: "ez-col ez-col--sd-6 ez-col--tb-6 ez-align--right" }, h("snk-taskbar", { key: "formTaskbar", buttons: this._dataState.isDirty ? "CANCEL,SAVE" : "PREVIOUS,NEXT,DIVIDER,CLONE,REMOVE,MORE_OPTIONS,DIVIDER,GRID_MODE,INSERT", primaryButton: this._dataState.isDirty ? "SAVE" : "INSERT", disabledButtons: this.getDisabledButtons(), actionsList: this.actionsList, dataUnit: this._dataUnit }))), h("section", null, h("div", { class: "ez-row" }, h("div", { class: "ez-col ez-col--sd-12" }, h("ez-form", { key: "ezForm" + this._snkDataUnit.entityName, dataUnit: this._dataUnit, config: this.getFormConfig(), recordsValidator: this.recordsValidator }))))));
117
+ return (h("section", { class: "snk-form" }, h("div", { class: "snk-form__header snk-form__header--fixed ez-row" }, h("div", { class: "ez-col ez-col--sd-6 ez-col--tb-6", key: "formHeader" }, h("ez-button", { title: this.getMessage("snkForm.goBackTitle"), mode: "icon", iconName: "arrow_back", class: "ez-padding-right--medium", size: "small", onClick: () => this.exitForm() }), h("h1", { class: "ez-title ez-title--primary ez-title--xlarge ez-align--middle" }, this.getMessage("snkForm.title"))), h("div", { class: "ez-col ez-col--sd-6 ez-col--tb-6 ez-align--right" }, h("snk-taskbar", { key: "formTaskbar", buttons: this._taskbarProcessor.buttons, disabledButtons: this._taskbarProcessor.disabledButtons, customButtons: this._taskbarProcessor.customButtons, actionsList: this.actionsList, primaryButton: ((_a = this._dataState) === null || _a === void 0 ? void 0 : _a.isDirty) ? "SAVE" : "INSERT", dataUnit: this._dataUnit }))), h("section", null, h("div", { class: "ez-row" }, h("div", { class: "ez-col ez-col--sd-12" }, h("ez-form", { key: "ezForm" + this._snkDataUnit.entityName, dataUnit: this._dataUnit, config: this.getFormConfig(), recordsValidator: this.recordsValidator }))))));
98
118
  }
99
119
  static get is() { return "snk-form"; }
100
120
  static get encapsulation() { return "scoped"; }
@@ -169,6 +189,26 @@ export class SnkForm {
169
189
  "tags": [],
170
190
  "text": "Lista de a\u00E7\u00F5es que devem ser usadas no bot\u00E3o \"Mais op\u00E7\u00F5es\""
171
191
  }
192
+ },
193
+ "taskbarManager": {
194
+ "type": "unknown",
195
+ "mutable": false,
196
+ "complexType": {
197
+ "original": "TaskbarManager",
198
+ "resolved": "TaskbarManager",
199
+ "references": {
200
+ "TaskbarManager": {
201
+ "location": "import",
202
+ "path": "../snk-taskbar/snk-taskbar"
203
+ }
204
+ }
205
+ },
206
+ "required": false,
207
+ "optional": false,
208
+ "docs": {
209
+ "tags": [],
210
+ "text": "Gerenciador das barras de tarefas. \u00C9 poss\u00EDvel determinar bot\u00F5es espec\u00EDficos\nou mesmo gerenciar o estado dos bot\u00F5es."
211
+ }
172
212
  }
173
213
  };
174
214
  }
@@ -1,5 +1,18 @@
1
- :host {
1
+ .snk-grid__container{
2
2
  display: flex;
3
3
  height: 100%;
4
4
  width: 100%;
5
5
  }
6
+
7
+ .snk-grid__header{
8
+ display: flex;
9
+ flex-wrap: nowrap;
10
+ width: 100%;
11
+ }
12
+
13
+ .snk-grid__filter-bar{
14
+ width: 100%;
15
+ }
16
+ .snk-grid__header-divider{
17
+ margin-bottom: var(--space--small);
18
+ }
@@ -1,9 +1,16 @@
1
1
  import { ApplicationContext } from '@sankhyalabs/core';
2
2
  import { h } from '@stencil/core';
3
3
  import { TaskbarElement } from '../snk-taskbar/elements/taskbar-elements';
4
+ import TaskbarProcessor from '../snk-taskbar/processor/taskbar-processor';
4
5
  export class SnkGrid {
5
- getHeaderButtons() {
6
- return this._dataState && this._dataState.selectedRecords.length > 0 ? "UPDATE,CLONE,REMOVE,MORE_OPTIONS,DIVIDER,REFRESH" : "REFRESH";
6
+ constructor() {
7
+ this._topTaskbarProcessor = new TaskbarProcessor({
8
+ "snkGridTopTaskbar": ["FORM_MODE", "CONFIG_GRID", "INSERT"]
9
+ });
10
+ this._headerTaskbarProcessor = new TaskbarProcessor({
11
+ "snkGridHeaderTaskbar.unselected": ["REFRESH"],
12
+ "snkGridHeaderTaskbar.selected": ["UPDATE", "CLONE", "REMOVE", "MORE_OPTIONS", "DIVIDER", "REFRESH"]
13
+ });
7
14
  }
8
15
  actionClickHandler(evt) {
9
16
  if (evt.detail === TaskbarElement.CONFIG_GRID && this._grid) {
@@ -44,11 +51,16 @@ export class SnkGrid {
44
51
  parent = parent.parentElement;
45
52
  }
46
53
  }
54
+ componentWillRender() {
55
+ const headerTaskbarId = this._dataState && this._dataState.selectedRecords.length > 0 ? "snkGridHeaderTaskbar.selected" : "snkGridHeaderTaskbar.unselected";
56
+ this._headerTaskbarProcessor.process(headerTaskbarId, this.taskbarManager, this._dataState);
57
+ this._topTaskbarProcessor.process("snkGridTopTaskbar", this.taskbarManager, this._dataState);
58
+ }
47
59
  render() {
48
60
  if (!this._configLoaded || !this._dataUnit) {
49
61
  return undefined;
50
62
  }
51
- return (h("div", { class: "ez-flex ez-flex--column ez-flex-item--auto ez-padding--large" }, h("div", { class: "ez-row ez-padding-bottom--medium ez-margin-bottom--medium" }, h("div", { class: "ez-col ez-col--sd-9 ez-col--tb-9 ez-align--bottom" }, h("slot", { name: "SnkGridHeader" })), h("div", { class: "ez-col ez-col--sd-3 ez-col--tb-3 ez-align--right" }, h("snk-taskbar", { onActionClick: evt => this.actionClickHandler(evt), key: "topTaskbar", dataUnit: this._dataUnit, buttons: "FORM_MODE,CONFIG_GRID,INSERT", primaryButton: "INSERT" }))), h("ez-grid", { ref: ref => this._grid = ref, dataUnit: this._dataUnit, key: "grid-" + this._snkDataUnit.entityName, config: this._gridConfig, onConfigChange: evt => { this.saveConfig(evt.detail); }, onEzDoubleClick: () => this.gridDoubleClick.emit() }, h("snk-taskbar", { dataUnit: this._dataUnit, buttons: this.getHeaderButtons(), slot: "leftButtons", actionsList: this.actionsList })), h("div", { class: "ez-col ez-col--sd-12" }, h("slot", { name: "SnkGridFooter" }))));
63
+ 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-padding-bottom--medium ez-margin-bottom--medium" }, h("snk-filter-bar", { class: "snk-grid__filter-bar ez-align--top" }), 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", onActionClick: evt => this.actionClickHandler(evt), key: "topTaskbar", dataUnit: this._dataUnit, buttons: this._topTaskbarProcessor.buttons, disabledButtons: this._topTaskbarProcessor.disabledButtons, customButtons: this._topTaskbarProcessor.customButtons, primaryButton: "INSERT" })), h("ez-grid", { ref: ref => this._grid = ref, dataUnit: this._dataUnit, key: "grid-" + this._snkDataUnit.entityName, config: this._gridConfig, onConfigChange: evt => { this.saveConfig(evt.detail); }, onEzDoubleClick: () => this.gridDoubleClick.emit() }, h("snk-taskbar", { dataUnit: this._dataUnit, 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" }))));
52
64
  }
53
65
  static get is() { return "snk-grid"; }
54
66
  static get encapsulation() { return "scoped"; }
@@ -103,6 +115,26 @@ export class SnkGrid {
103
115
  "tags": [],
104
116
  "text": "Lista de a\u00E7\u00F5es que devem ser usadas no bot\u00E3o \"Mais op\u00E7\u00F5es\""
105
117
  }
118
+ },
119
+ "taskbarManager": {
120
+ "type": "unknown",
121
+ "mutable": false,
122
+ "complexType": {
123
+ "original": "TaskbarManager",
124
+ "resolved": "TaskbarManager",
125
+ "references": {
126
+ "TaskbarManager": {
127
+ "location": "import",
128
+ "path": "../snk-taskbar/snk-taskbar"
129
+ }
130
+ }
131
+ },
132
+ "required": false,
133
+ "optional": false,
134
+ "docs": {
135
+ "tags": [],
136
+ "text": "Gerenciador das barras de tarefas. \u00C9 poss\u00EDvel determinar bot\u00F5es espec\u00EDficos\nou mesmo gerenciar o estado dos bot\u00F5es."
137
+ }
106
138
  }
107
139
  };
108
140
  }
@@ -28,41 +28,59 @@ export var VisibleWhenForbidden;
28
28
  (function (VisibleWhenForbidden) {
29
29
  VisibleWhenForbidden["CONFIG_GRID"] = "CONFIG_GRID";
30
30
  })(VisibleWhenForbidden || (VisibleWhenForbidden = {}));
31
+ export const buildCustomButton = (def, className, action, isEnabled) => {
32
+ const { hint, text, iconName } = def;
33
+ if (iconName) {
34
+ if (text) {
35
+ return iconTextButton(iconName, def.name, className, hint, text, action, isEnabled);
36
+ }
37
+ else {
38
+ return iconButton(iconName, def.name, className, hint, action, isEnabled);
39
+ }
40
+ }
41
+ else {
42
+ return textButton(def.name, className, text, hint, action, isEnabled);
43
+ }
44
+ };
31
45
  export const buildElem = (element, className, getTitle, action, isEnabled, actions) => {
46
+ const title = getTitle(element);
32
47
  switch (element) {
33
48
  case TaskbarElement.PREVIOUS:
34
- return iconButton("chevron-left", element, className, getTitle, action, isEnabled);
49
+ return iconButton("chevron-left", element, className, title, action, isEnabled);
35
50
  case TaskbarElement.NEXT:
36
- return iconButton("chevron-right", element, className, getTitle, action, isEnabled);
51
+ return iconButton("chevron-right", element, className, title, action, isEnabled);
37
52
  case TaskbarElement.REFRESH:
38
- return iconButton("sync", element, className, getTitle, action, isEnabled);
53
+ return iconButton("sync", element, className, title, action, isEnabled);
39
54
  case TaskbarElement.UPDATE:
40
- return iconButton("edit", element, className, getTitle, action, isEnabled);
55
+ return iconButton("edit", element, className, title, action, isEnabled);
41
56
  case TaskbarElement.CLONE:
42
- return iconButton("copy", element, className, getTitle, action, isEnabled);
57
+ return iconButton("copy", element, className, title, action, isEnabled);
43
58
  case TaskbarElement.REMOVE:
44
- return iconButton("delete", element, className, getTitle, action, isEnabled);
59
+ return iconButton("delete", element, className, title, action, isEnabled);
45
60
  case TaskbarElement.INSERT:
46
- return iconTextButton("plus", element, className, getTitle, action, isEnabled);
61
+ return iconTextButton("plus", element, className, title, title, action, isEnabled);
47
62
  case TaskbarElement.CANCEL:
48
- return h("ez-button", { title: getTitle(element), label: getTitle(element), size: "small", enabled: isEnabled(element), onClick: () => action(element) });
63
+ return textButton(element, className, title, title, action, isEnabled);
49
64
  case TaskbarElement.SAVE:
50
- return iconTextButton("save", element, className, getTitle, action, isEnabled);
65
+ return iconTextButton("save", element, className, title, title, action, isEnabled);
51
66
  case TaskbarElement.GRID_MODE:
52
- return iconButton("table", element, className, getTitle, action, isEnabled);
67
+ return iconButton("table", element, className, title, action, isEnabled);
53
68
  case TaskbarElement.FORM_MODE:
54
- return iconButton("list", element, className, getTitle, action, isEnabled);
69
+ return iconButton("list", element, className, title, action, isEnabled);
55
70
  case TaskbarElement.CONFIG_GRID:
56
- return iconButton("settings-inverted", element, className, getTitle, action, isEnabled);
71
+ return iconButton("settings-inverted", element, className, title, action, isEnabled);
57
72
  case TaskbarElement.MORE_OPTIONS:
58
- return actions && actions.length > 0 ? h("ez-actions-button", { title: getTitle(element), size: "small", class: className, enabled: isEnabled(element), onEzAction: (evt) => action(evt.detail.value), actions: actions }) : undefined;
73
+ return actions && actions.length > 0 ? h("ez-actions-button", { title: title, size: "small", class: className, enabled: isEnabled(element), onEzAction: (evt) => action(evt.detail.value), actions: actions }) : undefined;
59
74
  case TaskbarElement.DIVIDER:
60
75
  return h("hr", { class: "ez-divider-vertical ez-divider--dark ez-margin-horizontal--medium" });
61
76
  }
62
77
  };
63
- function iconButton(iconName, element, className, getTitle, action, isEnabled) {
64
- return h("ez-button", { key: iconName, title: getTitle(element), mode: "icon", size: "small", class: className, iconName: iconName, enabled: isEnabled(element), onClick: () => action(element) });
78
+ function textButton(name, className, text, title, action, isEnabled) {
79
+ return h("ez-button", { title: title, label: text, size: "small", class: className, enabled: isEnabled(name), onClick: () => action(name) });
80
+ }
81
+ function iconButton(iconName, name, className, title, action, isEnabled) {
82
+ return h("ez-button", { name: iconName, title: title, mode: "icon", size: "small", class: className, iconName: iconName, enabled: isEnabled(name), onClick: () => action(name) });
65
83
  }
66
- function iconTextButton(iconName, element, className, getTitle, action, isEnabled) {
67
- return h("ez-button", { key: iconName, title: getTitle(element), label: getTitle(element), size: "small", class: className, enabled: isEnabled(element), onClick: () => action(element) }, h("ez-icon", { class: "ez-padding-right--small", slot: "leftIcon", iconName: iconName }));
84
+ function iconTextButton(iconName, name, className, text, title, action, isEnabled) {
85
+ return h("ez-button", { name: iconName, title: title, label: text, size: "small", class: className, enabled: isEnabled(name), onClick: () => action(name) }, h("ez-icon", { class: "ez-padding-right--small", slot: "leftIcon", iconName: iconName }));
68
86
  }
@@ -0,0 +1,43 @@
1
+ export default class TaskbarProcessor {
2
+ constructor(defaultButtons) {
3
+ this._defaultButtons = defaultButtons;
4
+ }
5
+ process(taskbarId, taskbarManager, dataState, disabledButtons = []) {
6
+ var _a;
7
+ this.customButtons = new Map();
8
+ this.buttons = "";
9
+ this.disabledButtons = [];
10
+ (_a = this.getButtonsArray(taskbarId, taskbarManager, dataState)) === null || _a === void 0 ? void 0 : _a.forEach(btnDef => {
11
+ let buttonName;
12
+ if (typeof btnDef === "string") {
13
+ buttonName = btnDef;
14
+ }
15
+ else {
16
+ const customBtn = btnDef;
17
+ this.customButtons.set(customBtn.name, customBtn);
18
+ buttonName = customBtn.name;
19
+ }
20
+ if (!this.isEnabled(taskbarId, taskbarManager, buttonName, dataState, disabledButtons)) {
21
+ this.disabledButtons.push(buttonName);
22
+ }
23
+ if (this.buttons.length > 0) {
24
+ this.buttons += ",";
25
+ }
26
+ this.buttons += buttonName;
27
+ });
28
+ }
29
+ getButtonsArray(taskbarId, taskbarManager, dataState) {
30
+ const defaults = this._defaultButtons[taskbarId];
31
+ if (taskbarManager) {
32
+ return taskbarManager.getButtons(taskbarId, dataState, [...defaults]);
33
+ }
34
+ return defaults;
35
+ }
36
+ isEnabled(taskbarId, taskbarManager, buttonName, dataState, disabled) {
37
+ const originalValue = disabled.includes(buttonName) ? false : true;
38
+ if (taskbarManager && taskbarManager.isEnabled) {
39
+ return taskbarManager.isEnabled(taskbarId, dataState, buttonName, originalValue);
40
+ }
41
+ return originalValue;
42
+ }
43
+ }
@@ -1,6 +1,6 @@
1
1
  import { ApplicationContext } from '@sankhyalabs/core';
2
2
  import { h, Host } from '@stencil/core';
3
- import { TaskbarElement, buildElem, AuthorizationElements, VisibleWhenForbidden } from './elements/taskbar-elements';
3
+ import { TaskbarElement, buildElem, AuthorizationElements, buildCustomButton, VisibleWhenForbidden } from './elements/taskbar-elements';
4
4
  export class SnkTaskbar {
5
5
  constructor() {
6
6
  this._titleKeyByElement = {
@@ -95,13 +95,16 @@ export class SnkTaskbar {
95
95
  return !(this.disabledButtons && this.disabledButtons.includes(elem));
96
96
  }
97
97
  getElement(index, def) {
98
- let element;
99
98
  let className = def === this.primaryButton ? "ez-button--primary " : "";
100
99
  if (index > 1) {
101
100
  className += "ez-padding-left--medium";
102
101
  }
103
- element = buildElem(def, className, elem => this.getTitle(elem), elem => this.elementClick(elem), elem => this.isEnabled(elem), this.actionsList);
104
- return element;
102
+ if (TaskbarElement[def.toString()]) {
103
+ return buildElem(def, className, elem => this.getTitle(elem), elem => this.elementClick(elem), elem => this.isEnabled(elem), this.actionsList);
104
+ }
105
+ else {
106
+ return buildCustomButton(def, className, elem => this.elementClick(elem), elem => this.isEnabled(elem));
107
+ }
105
108
  }
106
109
  // Lifecycle
107
110
  componentWillLoad() {
@@ -123,20 +126,20 @@ export class SnkTaskbar {
123
126
  return undefined;
124
127
  }
125
128
  let index = 0;
126
- return (h(Host, null, this._definitions.map((btn) => {
127
- if (btn === TaskbarElement.DIVIDER) {
129
+ return (h(Host, null, this._definitions.map((elem) => {
130
+ if (elem === TaskbarElement.DIVIDER) {
128
131
  index = 0;
129
132
  }
130
133
  else {
131
134
  index++;
132
135
  }
133
- if (TaskbarElement[btn]) {
134
- return this.getElement(index, TaskbarElement[btn]);
136
+ if (TaskbarElement[elem]) {
137
+ return this.getElement(index, TaskbarElement[elem]);
135
138
  }
136
- else {
137
- index;
138
- return h("slot", { name: btn });
139
+ if (this.customButtons.has(elem)) {
140
+ return this.getElement(index, this.customButtons.get(elem));
139
141
  }
142
+ return h("slot", { name: elem });
140
143
  })));
141
144
  }
142
145
  static get is() { return "snk-taskbar"; }
@@ -170,6 +173,28 @@ export class SnkTaskbar {
170
173
  "attribute": "buttons",
171
174
  "reflect": false
172
175
  },
176
+ "customButtons": {
177
+ "type": "unknown",
178
+ "mutable": false,
179
+ "complexType": {
180
+ "original": "Map<string, CustomButton>",
181
+ "resolved": "Map<string, CustomButton>",
182
+ "references": {
183
+ "Map": {
184
+ "location": "global"
185
+ },
186
+ "CustomButton": {
187
+ "location": "local"
188
+ }
189
+ }
190
+ },
191
+ "required": false,
192
+ "optional": false,
193
+ "docs": {
194
+ "tags": [],
195
+ "text": "Mapa com defini\u00E7\u00E3o de bot\u00F5es personalizados. A chave do mapa deve ser \npassada na lista \"buttons\" no lugar onde o bot\u00E3o ir\u00E1 aparecer."
196
+ }
197
+ },
173
198
  "actionsList": {
174
199
  "type": "unknown",
175
200
  "mutable": false,
@@ -1,4 +1,4 @@
1
- import { ErrorException } from '@sankhyalabs/core';
1
+ import { ErrorException, WarningException } from '@sankhyalabs/core';
2
2
  import { batchRequests } from 'graphql-request';
3
3
  import UrlUtils from "../../../lib/utils/urlutils";
4
4
  import { StringUtils } from '@sankhyalabs/core';
@@ -33,6 +33,27 @@ export class DataFetcher {
33
33
  DataFetcher.requestListener.splice(index, 1);
34
34
  }
35
35
  }
36
+ processErrorInfo(errors) {
37
+ var _a, _b;
38
+ const POSITION_ERROR_INFO = 0;
39
+ const errorTitle = "Falha detectada";
40
+ const error = errors[POSITION_ERROR_INFO];
41
+ if (error.length > 0) { //As informações do erro vem no primeiro indice de um array
42
+ const errorInfo = error[POSITION_ERROR_INFO];
43
+ const errorMessage = (errorInfo === null || errorInfo === void 0 ? void 0 : errorInfo.message) ? errorInfo === null || errorInfo === void 0 ? void 0 : errorInfo.message : "Não há mensagem de erro";
44
+ const errorLevel = ((_a = errorInfo === null || errorInfo === void 0 ? void 0 : errorInfo.extensions) === null || _a === void 0 ? void 0 : _a.level) ? errorInfo.extensions.level : "ERROR";
45
+ const errorCode = ((_b = errorInfo === null || errorInfo === void 0 ? void 0 : errorInfo.extensions) === null || _b === void 0 ? void 0 : _b.code) ? errorInfo.extensions.code : "";
46
+ switch (errorLevel) {
47
+ case "WARNING":
48
+ return new WarningException(errorTitle, errorMessage, errorCode);
49
+ default:
50
+ return new ErrorException(errorTitle, errorMessage, errorCode);
51
+ }
52
+ }
53
+ else {
54
+ return new ErrorException(errorTitle, "Não há informações sobre o erro");
55
+ }
56
+ }
36
57
  async callGraphQL(req) {
37
58
  var _a;
38
59
  const reqKey = this.getReqKey(req);
@@ -43,7 +64,8 @@ export class DataFetcher {
43
64
  let query = this.getQueryTemplate(req);
44
65
  const res = await this.fecthGrapql([{ document: query, variables: req.values }]);
45
66
  if (res.errors.length > 0) {
46
- reject(new ErrorException("Falha detectada", res.errors[0][0].message));
67
+ const error = this.processErrorInfo(res.errors);
68
+ reject(error);
47
69
  }
48
70
  else {
49
71
  resolve(res.data[0][reqKey]);
@@ -146,7 +146,7 @@ export default class DataUnitFetcher {
146
146
  const { limit, offset, total, hasMore, records } = resp.data;
147
147
  let paginationInfo;
148
148
  if (limit) {
149
- const firstRecord = offset + 1;
149
+ const firstRecord = total == 0 ? 0 : offset + 1;
150
150
  const lastRecord = offset + Math.min(records.length, limit);
151
151
  const currentPage = offset / limit;
152
152
  paginationInfo = {