@sankhyalabs/sankhyablocks 1.3.31-beta.4 → 1.3.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 (71) hide show
  1. package/dist/cjs/{index-ebe8245e.js → index-1133bc2a.js} +9 -453
  2. package/dist/cjs/loader.cjs.js +2 -2
  3. package/dist/cjs/sankhyablocks.cjs.js +2 -2
  4. package/dist/cjs/snk-application.cjs.entry.js +95 -118
  5. package/dist/cjs/snk-pesquisa.cjs.entry.js +2 -2
  6. package/dist/cjs/teste-pesquisa.cjs.entry.js +1 -1
  7. package/dist/collection/collection-manifest.json +0 -4
  8. package/dist/collection/components/snk-application/snk-application.js +20 -61
  9. package/dist/collection/components/snk-pesquisa/snk-pesquisa.css +2 -2
  10. package/dist/collection/lib/http/data-fetcher/fetchers/dataunit-fetcher.js +21 -36
  11. package/dist/collection/lib/http/data-fetcher/fetchers/grid-config-fetcher.js +3 -4
  12. package/dist/collection/lib/http/data-fetcher/fetchers/pesquisa-fetcher.js +1 -0
  13. package/dist/components/snk-application2.js +94 -118
  14. package/dist/components/snk-pesquisa2.js +1 -1
  15. package/dist/esm/{index-7565ae23.js → index-ffda6382.js} +10 -453
  16. package/dist/esm/loader.js +2 -2
  17. package/dist/esm/sankhyablocks.js +2 -2
  18. package/dist/esm/snk-application.entry.js +95 -118
  19. package/dist/esm/snk-pesquisa.entry.js +2 -2
  20. package/dist/esm/teste-pesquisa.entry.js +1 -1
  21. package/dist/sankhyablocks/{p-bb31ea2a.entry.js → p-2a7b4cb3.entry.js} +1 -1
  22. package/dist/sankhyablocks/{p-6d82d7fd.entry.js → p-49fdec1f.entry.js} +1 -1
  23. package/dist/sankhyablocks/p-9bc9abe0.entry.js +69 -0
  24. package/dist/sankhyablocks/p-edcb9d8e.js +2 -0
  25. package/dist/sankhyablocks/sankhyablocks.esm.js +1 -1
  26. package/dist/types/components/snk-application/snk-application.d.ts +5 -6
  27. package/dist/types/components.d.ts +1 -119
  28. package/dist/types/lib/http/data-fetcher/fetchers/grid-config-fetcher.d.ts +1 -1
  29. package/package.json +5 -5
  30. package/react/components.d.ts +0 -4
  31. package/react/components.js +0 -4
  32. package/react/components.js.map +1 -1
  33. package/dist/cjs/snk-data-unit.cjs.entry.js +0 -174
  34. package/dist/cjs/snk-form.cjs.entry.js +0 -95
  35. package/dist/cjs/snk-grid.cjs.entry.js +0 -64
  36. package/dist/cjs/snk-taskbar.cjs.entry.js +0 -159
  37. package/dist/cjs/taskbar-elements-589a3744.js +0 -68
  38. package/dist/collection/components/snk-data-unit/snk-data-unit.css +0 -6
  39. package/dist/collection/components/snk-data-unit/snk-data-unit.js +0 -429
  40. package/dist/collection/components/snk-form/snk-form.css +0 -3
  41. package/dist/collection/components/snk-form/snk-form.js +0 -194
  42. package/dist/collection/components/snk-grid/snk-grid.css +0 -5
  43. package/dist/collection/components/snk-grid/snk-grid.js +0 -128
  44. package/dist/collection/components/snk-taskbar/component/snk-popup-button.js +0 -7
  45. package/dist/collection/components/snk-taskbar/elements/taskbar-elements.js +0 -63
  46. package/dist/collection/components/snk-taskbar/snk-taskbar.css +0 -3
  47. package/dist/collection/components/snk-taskbar/snk-taskbar.js +0 -268
  48. package/dist/components/snk-data-unit.d.ts +0 -11
  49. package/dist/components/snk-data-unit.js +0 -198
  50. package/dist/components/snk-form.d.ts +0 -11
  51. package/dist/components/snk-form.js +0 -121
  52. package/dist/components/snk-grid.d.ts +0 -11
  53. package/dist/components/snk-grid.js +0 -88
  54. package/dist/components/snk-taskbar.d.ts +0 -11
  55. package/dist/components/snk-taskbar.js +0 -6
  56. package/dist/components/snk-taskbar2.js +0 -239
  57. package/dist/esm/snk-data-unit.entry.js +0 -170
  58. package/dist/esm/snk-form.entry.js +0 -91
  59. package/dist/esm/snk-grid.entry.js +0 -60
  60. package/dist/esm/snk-taskbar.entry.js +0 -155
  61. package/dist/esm/taskbar-elements-b6822601.js +0 -66
  62. package/dist/sankhyablocks/p-306224bf.entry.js +0 -1
  63. package/dist/sankhyablocks/p-4ee1e12b.js +0 -1
  64. package/dist/sankhyablocks/p-88278b85.entry.js +0 -1
  65. package/dist/sankhyablocks/p-90b832f7.js +0 -2
  66. package/dist/sankhyablocks/p-a4b2fa10.entry.js +0 -69
  67. package/dist/sankhyablocks/p-bb8d8fe7.entry.js +0 -1
  68. package/dist/sankhyablocks/p-e7ade160.entry.js +0 -1
  69. package/dist/types/components/snk-taskbar/component/snk-popup-button.d.ts +0 -12
  70. package/dist/types/components/snk-taskbar/elements/taskbar-elements.d.ts +0 -24
  71. package/dist/types/components/snk-taskbar/snk-taskbar.d.ts +0 -28
@@ -1,5 +0,0 @@
1
- :host {
2
- display: flex;
3
- height: 100%;
4
- width: 100%;
5
- }
@@ -1,128 +0,0 @@
1
- import { ApplicationContext } from '@sankhyalabs/core';
2
- import { Component, Element, h, Prop, State, Event } from '@stencil/core';
3
- import { TaskbarElement } from '../snk-taskbar/elements/taskbar-elements';
4
- export class SnkGrid {
5
- getHeaderButtons() {
6
- return this._dataState && this._dataState.selectedRecords.length > 0 ? "UPDATE,CLONE,REMOVE,MORE_OPTIONS,DIVIDER,REFRESH" : "REFRESH";
7
- }
8
- actionClickHandler(evt) {
9
- if (evt.detail === TaskbarElement.CONFIG_GRID && this._grid) {
10
- this._grid.openGridConfig();
11
- }
12
- }
13
- componentWillLoad() {
14
- let parent = this._element.parentElement;
15
- while (parent) {
16
- if (parent.tagName.toUpperCase() === "SNK-DATA-UNIT") {
17
- this._snkDataUnit = parent;
18
- this._dataUnit = this._snkDataUnit.dataUnit;
19
- if (!this._dataUnit) {
20
- this._snkDataUnit.addEventListener("dataUnitReady", (evt) => {
21
- this._dataUnit = evt.detail;
22
- });
23
- }
24
- this._snkDataUnit.addEventListener("dataStateChange", (evt) => {
25
- this._dataState = evt.detail;
26
- });
27
- break;
28
- }
29
- parent = parent.parentElement;
30
- }
31
- }
32
- componentWillRender() {
33
- if (this._dataUnit && !this._configLoaded) {
34
- const snkApplication = ApplicationContext.getContextValue("__SNK__APPLICATION__");
35
- if (snkApplication) {
36
- snkApplication.loadGridConfig(this.configName).then(cfg => {
37
- this._gridConfig = cfg;
38
- this._configLoaded = true;
39
- });
40
- }
41
- }
42
- }
43
- render() {
44
- if (!this._configLoaded || !this._dataUnit) {
45
- return undefined;
46
- }
47
- return (h("div", { class: "ez-flex ez-flex--column ez-flex-item--auto ez-padding--large" },
48
- h("div", { class: "ez-row ez-padding-bottom--medium ez-margin-bottom--medium" },
49
- h("div", { class: "ez-col ez-col--sd-9 ez-col--tb-9 ez-align--bottom" },
50
- h("slot", null)),
51
- h("div", { class: "ez-col ez-col--sd-3 ez-col--tb-3 ez-align--right" },
52
- h("snk-taskbar", { onActionClick: evt => this.actionClickHandler(evt), key: "topTaskbar", dataUnit: this._dataUnit, buttons: "FORM_MODE,CONFIG_GRID,INSERT", primaryButton: "INSERT" }))),
53
- h("ez-grid", { ref: ref => this._grid = ref, dataUnit: this._dataUnit, key: "grid-" + this._snkDataUnit.entityName, config: this._gridConfig },
54
- h("snk-taskbar", { dataUnit: this._dataUnit, buttons: this.getHeaderButtons(), slot: "leftButtons", actionsList: this.actionsList }))));
55
- }
56
- static get is() { return "snk-grid"; }
57
- static get encapsulation() { return "scoped"; }
58
- static get originalStyleUrls() { return {
59
- "$": ["snk-grid.css"]
60
- }; }
61
- static get styleUrls() { return {
62
- "$": ["snk-grid.css"]
63
- }; }
64
- static get properties() { return {
65
- "configName": {
66
- "type": "string",
67
- "mutable": false,
68
- "complexType": {
69
- "original": "string",
70
- "resolved": "string",
71
- "references": {}
72
- },
73
- "required": false,
74
- "optional": false,
75
- "docs": {
76
- "tags": [],
77
- "text": ""
78
- },
79
- "attribute": "config-name",
80
- "reflect": false
81
- },
82
- "actionsList": {
83
- "type": "unknown",
84
- "mutable": false,
85
- "complexType": {
86
- "original": "Array<Action>",
87
- "resolved": "Action[]",
88
- "references": {
89
- "Array": {
90
- "location": "global"
91
- },
92
- "Action": {
93
- "location": "import",
94
- "path": "../snk-taskbar/snk-taskbar"
95
- }
96
- }
97
- },
98
- "required": false,
99
- "optional": false,
100
- "docs": {
101
- "tags": [],
102
- "text": ""
103
- }
104
- }
105
- }; }
106
- static get states() { return {
107
- "_dataUnit": {},
108
- "_configLoaded": {},
109
- "_dataState": {}
110
- }; }
111
- static get events() { return [{
112
- "method": "actionClick",
113
- "name": "actionClick",
114
- "bubbles": true,
115
- "cancelable": true,
116
- "composed": true,
117
- "docs": {
118
- "tags": [],
119
- "text": ""
120
- },
121
- "complexType": {
122
- "original": "string",
123
- "resolved": "string",
124
- "references": {}
125
- }
126
- }]; }
127
- static get elementRef() { return "_element"; }
128
- }
@@ -1,7 +0,0 @@
1
- import { h } from "@stencil/core";
2
- export const SnkPopupButton = ({ className, title, source, opened, setOpened, actionClick }) => {
3
- return (h("div", { class: "ez-flex " + className },
4
- h("ez-button", { id: "moreOptionsButton", title: title, mode: "icon", iconName: "dots-vertical", size: "small", onClick: () => setOpened(true) }),
5
- h("ez-popover", { opened: opened, autoClose: true, innerElement: ["moreOptionsButton", "moreOptionsDiv"], onEzVisibilityChange: (event) => setOpened(event.detail) },
6
- h("div", { id: "moreOptionsDiv", class: "ez-padding--small" }, source.map((option, index) => h("ez-button", { className: "btn-options", size: "small", label: option.label, key: index, onClick: () => actionClick(option) }))))));
7
- };
@@ -1,63 +0,0 @@
1
- import { h } from "@stencil/core";
2
- export var TaskbarElement;
3
- (function (TaskbarElement) {
4
- TaskbarElement["PREVIOUS"] = "PREVIOUS";
5
- TaskbarElement["NEXT"] = "NEXT";
6
- TaskbarElement["REFRESH"] = "REFRESH";
7
- TaskbarElement["UPDATE"] = "UPDATE";
8
- TaskbarElement["CLONE"] = "CLONE";
9
- TaskbarElement["REMOVE"] = "REMOVE";
10
- TaskbarElement["INSERT"] = "INSERT";
11
- TaskbarElement["CANCEL"] = "CANCEL";
12
- TaskbarElement["SAVE"] = "SAVE";
13
- TaskbarElement["GRID_MODE"] = "GRID_MODE";
14
- TaskbarElement["FORM_MODE"] = "FORM_MODE";
15
- TaskbarElement["CONFIG_GRID"] = "CONFIG_GRID";
16
- TaskbarElement["MORE_OPTIONS"] = "MORE_OPTIONS";
17
- TaskbarElement["DIVIDER"] = "DIVIDER";
18
- })(TaskbarElement || (TaskbarElement = {}));
19
- export var AuthorizationElements;
20
- (function (AuthorizationElements) {
21
- AuthorizationElements["UPDATE"] = "UPDATE";
22
- AuthorizationElements["CLONE"] = "CLONE";
23
- AuthorizationElements["REMOVE"] = "REMOVE";
24
- AuthorizationElements["INSERT"] = "INSERT";
25
- AuthorizationElements["CONFIG_GRID"] = "CONFIG_GRID";
26
- })(AuthorizationElements || (AuthorizationElements = {}));
27
- export const buildElem = (element, className, getTitle, action, isEnabled) => {
28
- switch (element) {
29
- case TaskbarElement.PREVIOUS:
30
- return iconButton("chevron-left", element, className, getTitle, action, isEnabled);
31
- case TaskbarElement.NEXT:
32
- return iconButton("chevron-right", element, className, getTitle, action, isEnabled);
33
- case TaskbarElement.REFRESH:
34
- return iconButton("sync", element, className, getTitle, action, isEnabled);
35
- case TaskbarElement.UPDATE:
36
- return iconButton("edit", element, className, getTitle, action, isEnabled);
37
- case TaskbarElement.CLONE:
38
- return iconButton("copy", element, className, getTitle, action, isEnabled);
39
- case TaskbarElement.REMOVE:
40
- return iconButton("delete", element, className, getTitle, action, isEnabled);
41
- case TaskbarElement.INSERT:
42
- return iconTextButton("plus", element, className, getTitle, action, isEnabled);
43
- case TaskbarElement.CANCEL:
44
- return h("ez-button", { label: getTitle(element), size: "small", enabled: isEnabled(element), onClick: () => action(element) });
45
- case TaskbarElement.SAVE:
46
- return iconTextButton("save", element, className, getTitle, action, isEnabled);
47
- case TaskbarElement.GRID_MODE:
48
- return iconButton("table", element, className, getTitle, action, isEnabled);
49
- case TaskbarElement.FORM_MODE:
50
- return iconButton("list", element, className, getTitle, action, isEnabled);
51
- case TaskbarElement.CONFIG_GRID:
52
- return iconButton("settings-inverted", element, className, getTitle, action, isEnabled);
53
- case TaskbarElement.DIVIDER:
54
- return h("hr", { class: "ez-divider-vertical ez-divider--dark ez-margin-horizontal--medium" });
55
- }
56
- };
57
- function iconButton(iconName, element, className, getTitle, action, isEnabled) {
58
- return h("ez-button", { key: iconName, title: getTitle(element), mode: "icon", size: "small", class: className, iconName: iconName, enabled: isEnabled(element), onClick: () => action(element) });
59
- }
60
- function iconTextButton(iconName, element, className, getTitle, action, isEnabled) {
61
- return h("ez-button", { key: iconName, title: getTitle(element), label: getTitle(element), size: "small", class: className, enabled: isEnabled(element), onClick: () => action(element) },
62
- h("ez-icon", { class: "ez-padding-right--small", slot: "leftIcon", iconName: iconName }));
63
- }
@@ -1,3 +0,0 @@
1
- :host {
2
- display: flex;
3
- }
@@ -1,268 +0,0 @@
1
- import { ApplicationContext } from '@sankhyalabs/core';
2
- import { Component, Event, h, Host, Prop, State, Watch } from '@stencil/core';
3
- import { SnkPopupButton } from './component/snk-popup-button';
4
- import { TaskbarElement, buildElem, AuthorizationElements } from './elements/taskbar-elements';
5
- export class SnkTaskbar {
6
- constructor() {
7
- this._moreOptionsOpened = false;
8
- }
9
- observeButtons() {
10
- this._definitions = undefined;
11
- }
12
- // Internal methods
13
- elementsFromString(strButtons) {
14
- const elements = [];
15
- if (strButtons) {
16
- strButtons.split(",").forEach(buttonName => {
17
- buttonName = buttonName.trim();
18
- if (this.isAllowed(buttonName)) {
19
- elements.push(buttonName.trim());
20
- }
21
- });
22
- }
23
- return elements;
24
- }
25
- isAllowed(buttonName) {
26
- if (AuthorizationElements[buttonName]) {
27
- return this._permissions ? this._permissions.isSup || this._permissions[buttonName] : false;
28
- }
29
- return true;
30
- }
31
- getTitle(element) {
32
- const pt_br = {
33
- [TaskbarElement.UPDATE]: "Editar",
34
- [TaskbarElement.PREVIOUS]: "Anterior",
35
- [TaskbarElement.NEXT]: "Próximo",
36
- [TaskbarElement.REFRESH]: "Atualizar",
37
- [TaskbarElement.CLONE]: "Duplicar",
38
- [TaskbarElement.REMOVE]: "Excluir",
39
- [TaskbarElement.MORE_OPTIONS]: "Mais Opções",
40
- [TaskbarElement.INSERT]: "Cadastrar",
41
- [TaskbarElement.CANCEL]: "Cancelar",
42
- [TaskbarElement.SAVE]: "Salvar",
43
- [TaskbarElement.GRID_MODE]: "Modo Grade",
44
- [TaskbarElement.CONFIG_GRID]: "Configuração da grade",
45
- [TaskbarElement.FORM_MODE]: "Modo Formulário"
46
- };
47
- return pt_br[element] ? pt_br[element] : "";
48
- }
49
- elementClick(elem) {
50
- if (this.dataUnit) {
51
- switch (elem) {
52
- case TaskbarElement.PREVIOUS:
53
- this.dataUnit.previousRecord();
54
- break;
55
- case TaskbarElement.NEXT:
56
- this.dataUnit.nextRecord();
57
- break;
58
- case TaskbarElement.REFRESH:
59
- this.dataUnit.loadData();
60
- break;
61
- case TaskbarElement.CLONE:
62
- this.dataUnit.copySelected();
63
- break;
64
- case TaskbarElement.REMOVE:
65
- this.dataUnit.removeSelectedRecords();
66
- break;
67
- case TaskbarElement.INSERT:
68
- this.dataUnit.addRecord();
69
- break;
70
- case TaskbarElement.CANCEL:
71
- this.dataUnit.cancelEdition();
72
- break;
73
- case TaskbarElement.SAVE:
74
- this.dataUnit.saveData();
75
- break;
76
- }
77
- }
78
- this.actionClick.emit(elem);
79
- }
80
- actionClickHandler(act) {
81
- this._moreOptionsOpened = false;
82
- this.actionClick.emit(act.key);
83
- }
84
- isEnabled(elem) {
85
- return !(this.disabledButtons && this.disabledButtons.includes(elem));
86
- }
87
- getElement(index, def) {
88
- let element;
89
- let className = def === this.primaryButton ? "ez-button--primary " : "";
90
- if (index > 1) {
91
- className += "ez-padding-left--medium";
92
- }
93
- if (def === TaskbarElement.MORE_OPTIONS) {
94
- element = this.actionsList ? h(SnkPopupButton, { className: className, title: this.getTitle(def), source: this.actionsList, opened: this._moreOptionsOpened, setOpened: opened => this._moreOptionsOpened = opened, actionClick: act => this.actionClickHandler(act) }) : undefined;
95
- }
96
- else {
97
- element = buildElem(def, className, elem => this.getTitle(elem), elem => this.elementClick(elem), elem => this.isEnabled(elem));
98
- }
99
- return element;
100
- }
101
- // Lifecycle
102
- componentWillRender() {
103
- if (this._permissions === undefined) {
104
- const snkApplication = ApplicationContext.getContextValue("__SNK__APPLICATION__");
105
- if (snkApplication) {
106
- snkApplication.getAllAccess().then(access => this._permissions = access);
107
- }
108
- else {
109
- this._permissions = {};
110
- }
111
- }
112
- else {
113
- if (this._definitions == undefined) {
114
- this._definitions = this.elementsFromString(this.buttons);
115
- }
116
- }
117
- }
118
- render() {
119
- if (this._definitions === undefined) {
120
- return undefined;
121
- }
122
- let index = 0;
123
- return (h(Host, null, this._definitions.map((btn) => {
124
- if (btn === TaskbarElement.DIVIDER) {
125
- index = 0;
126
- }
127
- else {
128
- index++;
129
- }
130
- if (TaskbarElement[btn]) {
131
- return this.getElement(index, TaskbarElement[btn]);
132
- }
133
- else {
134
- index;
135
- return h("slot", { name: btn });
136
- }
137
- })));
138
- }
139
- static get is() { return "snk-taskbar"; }
140
- static get encapsulation() { return "scoped"; }
141
- static get originalStyleUrls() { return {
142
- "$": ["snk-taskbar.css"]
143
- }; }
144
- static get styleUrls() { return {
145
- "$": ["snk-taskbar.css"]
146
- }; }
147
- static get properties() { return {
148
- "buttons": {
149
- "type": "string",
150
- "mutable": false,
151
- "complexType": {
152
- "original": "string",
153
- "resolved": "string",
154
- "references": {}
155
- },
156
- "required": false,
157
- "optional": false,
158
- "docs": {
159
- "tags": [],
160
- "text": ""
161
- },
162
- "attribute": "buttons",
163
- "reflect": false
164
- },
165
- "actionsList": {
166
- "type": "unknown",
167
- "mutable": false,
168
- "complexType": {
169
- "original": "Array<Action>",
170
- "resolved": "Action[]",
171
- "references": {
172
- "Array": {
173
- "location": "global"
174
- },
175
- "Action": {
176
- "location": "local"
177
- }
178
- }
179
- },
180
- "required": false,
181
- "optional": false,
182
- "docs": {
183
- "tags": [],
184
- "text": ""
185
- }
186
- },
187
- "primaryButton": {
188
- "type": "string",
189
- "mutable": false,
190
- "complexType": {
191
- "original": "string",
192
- "resolved": "string",
193
- "references": {}
194
- },
195
- "required": false,
196
- "optional": false,
197
- "docs": {
198
- "tags": [],
199
- "text": ""
200
- },
201
- "attribute": "primary-button",
202
- "reflect": false
203
- },
204
- "disabledButtons": {
205
- "type": "unknown",
206
- "mutable": false,
207
- "complexType": {
208
- "original": "Array<string>",
209
- "resolved": "string[]",
210
- "references": {
211
- "Array": {
212
- "location": "global"
213
- }
214
- }
215
- },
216
- "required": false,
217
- "optional": false,
218
- "docs": {
219
- "tags": [],
220
- "text": ""
221
- }
222
- },
223
- "dataUnit": {
224
- "type": "unknown",
225
- "mutable": false,
226
- "complexType": {
227
- "original": "DataUnit",
228
- "resolved": "DataUnit",
229
- "references": {
230
- "DataUnit": {
231
- "location": "import",
232
- "path": "@sankhyalabs/core"
233
- }
234
- }
235
- },
236
- "required": false,
237
- "optional": false,
238
- "docs": {
239
- "tags": [],
240
- "text": ""
241
- }
242
- }
243
- }; }
244
- static get states() { return {
245
- "_moreOptionsOpened": {},
246
- "_permissions": {}
247
- }; }
248
- static get events() { return [{
249
- "method": "actionClick",
250
- "name": "actionClick",
251
- "bubbles": true,
252
- "cancelable": true,
253
- "composed": true,
254
- "docs": {
255
- "tags": [],
256
- "text": ""
257
- },
258
- "complexType": {
259
- "original": "string",
260
- "resolved": "string",
261
- "references": {}
262
- }
263
- }]; }
264
- static get watchers() { return [{
265
- "propName": "buttons",
266
- "methodName": "observeButtons"
267
- }]; }
268
- }
@@ -1,11 +0,0 @@
1
- import type { Components, JSX } from "../types/components";
2
-
3
- interface SnkDataUnit extends Components.SnkDataUnit, HTMLElement {}
4
- export const SnkDataUnit: {
5
- prototype: SnkDataUnit;
6
- new (): SnkDataUnit;
7
- };
8
- /**
9
- * Used to define this component and all nested components recursively.
10
- */
11
- export const defineCustomElement: () => void;
@@ -1,198 +0,0 @@
1
- import { proxyCustomElement, HTMLElement, createEvent, h, Host } from '@stencil/core/internal/client';
2
- import { Action, ApplicationContext } from '@sankhyalabs/core';
3
- import { ApplicationUtils } from '@sankhyalabs/ezui/dist/collection/utils';
4
-
5
- const snkDataUnitCss = ".sc-snk-data-unit-h{display:flex;flex-direction:column;height:100%}";
6
-
7
- const SnkDataUnit$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
8
- constructor() {
9
- super();
10
- this.__registerHost();
11
- this.insertionMode = createEvent(this, "insertionMode", 7);
12
- this.dataStateChange = createEvent(this, "dataStateChange", 7);
13
- this.dataUnitReady = createEvent(this, "dataUnitReady", 7);
14
- this._onDataUnitResolve = [];
15
- this._dataUnitObserver = (action) => {
16
- let msg = this.getActionInfo(action.type);
17
- if (msg) {
18
- ApplicationUtils.info(msg);
19
- }
20
- if (action.type === Action.RECORDS_ADDED || action.type === Action.RECORDS_COPIED) {
21
- this.insertionMode.emit();
22
- }
23
- const duState = {
24
- insertionMode: false,
25
- hasNext: this.dataUnit.hasNext(),
26
- hasPrevious: this.dataUnit.hasPrevious(),
27
- copyMode: false,
28
- isDirty: this.dataUnit.isDirty(),
29
- selectedRecords: this.dataUnit.getSelectedRecords()
30
- };
31
- this.dataUnit.records.forEach(r => {
32
- if (r.__record__id__.startsWith('NEW_')) {
33
- duState.insertionMode = true;
34
- duState.copyMode || (duState.copyMode = r['__record__source__id__'] != undefined);
35
- }
36
- });
37
- this.dataState = duState;
38
- };
39
- }
40
- async getDataUnit() {
41
- return new Promise((resolve) => {
42
- if (this.dataUnit) {
43
- resolve(this.dataUnit);
44
- }
45
- else {
46
- this._onDataUnitResolve.push(resolve);
47
- }
48
- });
49
- }
50
- async interceptAction(action) {
51
- return new Promise(resolve => {
52
- switch (action.type) {
53
- case Action.SAVING_DATA:
54
- if (this.beforeSave) {
55
- const continueAction = this.beforeSave(this.dataUnit);
56
- if (continueAction instanceof Promise) {
57
- continueAction.then(result => resolve(result ? action : undefined));
58
- }
59
- else {
60
- resolve(continueAction ? action : undefined);
61
- }
62
- }
63
- else {
64
- resolve(action);
65
- }
66
- break;
67
- case Action.DATA_SAVED:
68
- if (this.afterSave) {
69
- this.afterSave(this.dataUnit);
70
- }
71
- else {
72
- resolve(action);
73
- }
74
- break;
75
- case Action.EDITION_CANCELED:
76
- ApplicationUtils.confirm(this.i18n("components.warning"), this.i18n("components.confirmCancelEdition"))
77
- .then((result) => resolve(result ? action : undefined));
78
- break;
79
- case Action.REMOVING_RECORDS:
80
- ApplicationUtils.confirm(this.i18n("components.delete"), this.i18n("components.confirmRemoveRecord"), "delete", true, { btnConfirmDanger: true })
81
- .then((result) => resolve(result ? action : undefined));
82
- break;
83
- default:
84
- resolve(action);
85
- }
86
- });
87
- }
88
- getActionInfo(action) {
89
- if (this.messageBuilder) {
90
- return this.messageBuilder(action, this.dataState, this.dataUnit);
91
- }
92
- else {
93
- if (action === Action.EDITION_CANCELED) {
94
- return this.i18n("components.editionCanceled");
95
- }
96
- }
97
- }
98
- observePageSize() {
99
- if (this.dataUnit) {
100
- this.dataUnit.pageSize = this.pageSize;
101
- }
102
- }
103
- observeDataUnitName(newValue, oldValue) {
104
- if (oldValue != newValue) {
105
- this.dataUnit = undefined;
106
- this.dataUnitName = newValue;
107
- this.loadDataUnit();
108
- }
109
- }
110
- observeEntityName(newValue, oldValue) {
111
- if (oldValue != newValue) {
112
- this.dataUnit = undefined;
113
- this.entityName = newValue;
114
- this.loadDataUnit();
115
- }
116
- }
117
- observeDataState(newValue, oldValue) {
118
- if (oldValue != newValue) {
119
- this.dataStateChange.emit(newValue);
120
- }
121
- }
122
- observeDataUnit() {
123
- this.dataUnitReady.emit(this.dataUnit);
124
- }
125
- async loadDataUnit() {
126
- if (!this.dataUnit) {
127
- const app = ApplicationContext.getContextValue("__SNK__APPLICATION__");
128
- if (app && this.entityName) {
129
- this.dataUnit = await app.getOrCreateDataUnit(this.entityName, this.dataUnitName);
130
- this.dataUnit.pageSize = this.pageSize;
131
- this.dataUnit.unsubscribe(this._dataUnitObserver);
132
- this.dataUnit.addInterceptor(this);
133
- this.dataUnit.subscribe(this._dataUnitObserver);
134
- let resolver;
135
- while (resolver = this._onDataUnitResolve.pop()) {
136
- resolver(this.dataUnit);
137
- }
138
- if (this.autoLoad) {
139
- this.dataUnit.loadData();
140
- }
141
- }
142
- }
143
- }
144
- i18n(key) {
145
- const pt_br = {
146
- "components.warning": "Aviso",
147
- "components.delete": "Excluir",
148
- "components.confirmRemoveRecord": "Deseja realmente excluir o registro atual?",
149
- "components.confirmCancelEdition": "As alterações realizadas serão descartadas<br/><br/><b>Você realmente gostaria de sair?</b>",
150
- "components.editionCanceled": "Todas as alterações foram descartadas.",
151
- };
152
- return pt_br[key];
153
- }
154
- componentDidRender() {
155
- this.loadDataUnit();
156
- }
157
- render() {
158
- return (h(Host, null));
159
- }
160
- get element() { return this; }
161
- static get watchers() { return {
162
- "pageSize": ["observePageSize"],
163
- "dataUnitName": ["observeDataUnitName"],
164
- "entityName": ["observeEntityName"],
165
- "dataState": ["observeDataState"],
166
- "dataUnit": ["observeDataUnit"]
167
- }; }
168
- static get style() { return snkDataUnitCss; }
169
- }, [2, "snk-data-unit", {
170
- "dataState": [1040],
171
- "dataUnitName": [1, "data-unit-name"],
172
- "entityName": [1, "entity-name"],
173
- "pageSize": [2, "page-size"],
174
- "dataUnit": [1040],
175
- "messageBuilder": [16],
176
- "beforeSave": [16],
177
- "afterSave": [16],
178
- "autoLoad": [4, "auto-load"],
179
- "getDataUnit": [64]
180
- }]);
181
- function defineCustomElement$1() {
182
- if (typeof customElements === "undefined") {
183
- return;
184
- }
185
- const components = ["snk-data-unit"];
186
- components.forEach(tagName => { switch (tagName) {
187
- case "snk-data-unit":
188
- if (!customElements.get(tagName)) {
189
- customElements.define(tagName, SnkDataUnit$1);
190
- }
191
- break;
192
- } });
193
- }
194
-
195
- const SnkDataUnit = SnkDataUnit$1;
196
- const defineCustomElement = defineCustomElement$1;
197
-
198
- export { SnkDataUnit, defineCustomElement };