@sankhyalabs/sankhyablocks 5.5.0 → 5.6.0

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 (122) hide show
  1. package/dist/cjs/{SnkMessageBuilder-26da04f7.js → SnkMessageBuilder-e64dce7f.js} +14 -0
  2. package/dist/cjs/index-8d94b7e0.js +7 -0
  3. package/dist/cjs/index-de79181a.js +201 -0
  4. package/dist/cjs/loader.cjs.js +1 -1
  5. package/dist/cjs/sankhyablocks.cjs.js +1 -1
  6. package/dist/cjs/snk-application.cjs.entry.js +1 -1
  7. package/dist/cjs/snk-attach.cjs.entry.js +2 -1
  8. package/dist/cjs/snk-crud.cjs.entry.js +2 -1
  9. package/dist/cjs/snk-data-exporter.cjs.entry.js +2 -2
  10. package/dist/cjs/{snk-data-unit-c43df27b.js → snk-data-unit-85d6565e.js} +1 -1
  11. package/dist/cjs/snk-data-unit.cjs.entry.js +2 -2
  12. package/dist/cjs/snk-detail-view.cjs.entry.js +4 -3
  13. package/dist/cjs/snk-expression-item.cjs.entry.js +213 -0
  14. package/dist/cjs/snk-filter-field-search_2.cjs.entry.js +435 -0
  15. package/dist/cjs/snk-grid.cjs.entry.js +3 -2
  16. package/dist/cjs/{snk-guides-viewer-e6a65393.js → snk-guides-viewer-9784c527.js} +1 -1
  17. package/dist/cjs/snk-guides-viewer.cjs.entry.js +3 -2
  18. package/dist/cjs/snk-personalized-filter.cjs.entry.js +126 -0
  19. package/dist/cjs/snk-simple-bar_2.cjs.entry.js +2 -1
  20. package/dist/cjs/snk-taskbar.cjs.entry.js +2 -1
  21. package/dist/cjs/taskbar-elements-bc2598f9.js +118 -0
  22. package/dist/collection/collection-manifest.json +2 -0
  23. package/dist/collection/components/snk-filter-field-search/snk-filter-field-search.js +62 -69
  24. package/dist/collection/components/snk-personalized-filter/snk-personalized-filter.css +4 -0
  25. package/dist/collection/components/snk-personalized-filter/snk-personalized-filter.js +87 -0
  26. package/dist/collection/components/snk-personalized-filter/subcomponents/snk-expression-item/filter-operands/filter-operands.js +34 -0
  27. package/dist/collection/components/snk-personalized-filter/subcomponents/snk-expression-item/snk-expression-item.css +97 -0
  28. package/dist/collection/components/snk-personalized-filter/subcomponents/snk-expression-item/snk-expression-item.js +298 -0
  29. package/dist/collection/components/snk-personalized-filter/subcomponents/snk-filter-param-config/snk-filter-param-config.js +2 -2
  30. package/dist/collection/lib/http/data-fetcher/fetchers/personalized-filter-fetcher.js +63 -0
  31. package/dist/collection/lib/message/SnkMessageBuilder.js +2 -0
  32. package/dist/collection/lib/message/resources/snk-personalized-filter.msg.js +12 -0
  33. package/dist/collection/lib/store/index.js +2 -1
  34. package/dist/components/SnkMessageBuilder.js +14 -0
  35. package/dist/components/index.d.ts +2 -0
  36. package/dist/components/index.js +2 -0
  37. package/dist/components/index2.js +1 -1
  38. package/dist/components/index3.js +199 -0
  39. package/dist/components/snk-data-exporter2.js +1 -1
  40. package/dist/components/snk-expression-item.d.ts +11 -0
  41. package/dist/components/snk-expression-item.js +6 -0
  42. package/dist/components/snk-expression-item2.js +241 -0
  43. package/dist/components/snk-filter-field-search.js +1 -200
  44. package/dist/{esm/snk-filter-field-search.entry.js → components/snk-filter-field-search2.js} +65 -38
  45. package/dist/components/snk-filter-param-config.js +1 -273
  46. package/dist/{esm/snk-filter-param-config.entry.js → components/snk-filter-param-config2.js} +35 -11
  47. package/dist/components/snk-grid2.js +2 -1
  48. package/dist/components/snk-personalized-filter.d.ts +11 -0
  49. package/dist/components/snk-personalized-filter.js +158 -0
  50. package/dist/components/snk-taskbar2.js +3 -197
  51. package/dist/esm/{SnkMessageBuilder-7a9392e6.js → SnkMessageBuilder-f3590f65.js} +14 -0
  52. package/dist/esm/{index-6519a79e.js → index-507e19ec.js} +1 -1
  53. package/dist/esm/index-620ac460.js +7 -0
  54. package/dist/esm/index-8efbf198.js +199 -0
  55. package/dist/esm/loader.js +1 -1
  56. package/dist/esm/sankhyablocks.js +1 -1
  57. package/dist/esm/snk-application.entry.js +1 -1
  58. package/dist/esm/snk-attach.entry.js +3 -2
  59. package/dist/esm/snk-crud.entry.js +3 -2
  60. package/dist/esm/snk-data-exporter.entry.js +3 -3
  61. package/dist/esm/{snk-data-unit-f9e4c694.js → snk-data-unit-50b1660c.js} +1 -1
  62. package/dist/esm/snk-data-unit.entry.js +2 -2
  63. package/dist/esm/snk-detail-view.entry.js +5 -4
  64. package/dist/esm/snk-expression-item.entry.js +209 -0
  65. package/dist/esm/snk-filter-field-search_2.entry.js +430 -0
  66. package/dist/esm/snk-grid.entry.js +3 -2
  67. package/dist/esm/{snk-guides-viewer-62a9f74d.js → snk-guides-viewer-4d12f268.js} +2 -2
  68. package/dist/esm/snk-guides-viewer.entry.js +4 -3
  69. package/dist/esm/snk-personalized-filter.entry.js +122 -0
  70. package/dist/esm/snk-simple-bar_2.entry.js +3 -2
  71. package/dist/esm/snk-taskbar.entry.js +3 -2
  72. package/dist/esm/taskbar-elements-e6af3e93.js +115 -0
  73. package/dist/sankhyablocks/p-1dcfd32a.entry.js +1 -0
  74. package/dist/sankhyablocks/p-27e264d9.entry.js +1 -0
  75. package/dist/sankhyablocks/p-343699ad.entry.js +1 -0
  76. package/dist/sankhyablocks/{p-f2223502.js → p-3d3263b4.js} +1 -1
  77. package/dist/sankhyablocks/{p-b2523981.entry.js → p-3fbe2d69.entry.js} +1 -1
  78. package/dist/sankhyablocks/p-433dfa63.entry.js +1 -0
  79. package/dist/sankhyablocks/{p-f132e371.js → p-4c2015a9.js} +1 -1
  80. package/dist/sankhyablocks/p-4eefe631.entry.js +1 -0
  81. package/dist/sankhyablocks/p-6a02e236.js +1 -0
  82. package/dist/sankhyablocks/p-8bdf5e57.entry.js +1 -0
  83. package/dist/sankhyablocks/{p-a412992c.entry.js → p-c4417efb.entry.js} +1 -1
  84. package/dist/sankhyablocks/{p-92a0fca4.js → p-c9477950.js} +1 -1
  85. package/dist/sankhyablocks/{p-aeffd219.js → p-ccd26e3a.js} +1 -1
  86. package/dist/sankhyablocks/p-d410f45a.js +1 -0
  87. package/dist/sankhyablocks/p-df8f13b4.entry.js +1 -0
  88. package/dist/sankhyablocks/p-e9f42525.entry.js +1 -0
  89. package/dist/sankhyablocks/p-f344b811.entry.js +1 -0
  90. package/dist/sankhyablocks/p-f4184ce7.js +1 -0
  91. package/dist/sankhyablocks/p-fd4ed40a.entry.js +1 -0
  92. package/dist/sankhyablocks/p-ff96b509.entry.js +27 -0
  93. package/dist/sankhyablocks/sankhyablocks.esm.js +1 -1
  94. package/dist/types/components/snk-filter-field-search/interfaces/index.d.ts +14 -4
  95. package/dist/types/components/snk-filter-field-search/snk-filter-field-search.d.ts +13 -10
  96. package/dist/types/components/snk-personalized-filter/snk-personalized-filter.d.ts +20 -0
  97. package/dist/types/components/snk-personalized-filter/subcomponents/snk-expression-item/filter-operands/filter-operands.d.ts +9 -0
  98. package/dist/types/components/snk-personalized-filter/subcomponents/snk-expression-item/snk-expression-item.d.ts +54 -0
  99. package/dist/types/components/snk-personalized-filter/subcomponents/snk-filter-param-config/interfaces/IExpressionItem.d.ts +4 -2
  100. package/dist/types/components.d.ts +83 -9
  101. package/dist/types/lib/http/data-fetcher/fetchers/personalized-filter-fetcher.d.ts +7 -0
  102. package/dist/types/lib/message/resources/snk-personalized-filter.msg.d.ts +1 -0
  103. package/dist/types/lib/store/index.d.ts +1 -0
  104. package/package.json +1 -1
  105. package/react/components.d.ts +2 -0
  106. package/react/components.js +2 -0
  107. package/react/components.js.map +1 -1
  108. package/dist/cjs/snk-filter-field-search.cjs.entry.js +0 -185
  109. package/dist/cjs/snk-filter-param-config.cjs.entry.js +0 -256
  110. package/dist/cjs/taskbar-elements-80285601.js +0 -313
  111. package/dist/esm/taskbar-elements-055ba1ad.js +0 -309
  112. package/dist/sankhyablocks/p-4512cc6c.entry.js +0 -1
  113. package/dist/sankhyablocks/p-5cbbe1f7.entry.js +0 -1
  114. package/dist/sankhyablocks/p-63d01871.entry.js +0 -1
  115. package/dist/sankhyablocks/p-741b00ef.entry.js +0 -1
  116. package/dist/sankhyablocks/p-79d22df0.entry.js +0 -1
  117. package/dist/sankhyablocks/p-93d8fe00.entry.js +0 -1
  118. package/dist/sankhyablocks/p-999d1953.entry.js +0 -1
  119. package/dist/sankhyablocks/p-c3efd4eb.entry.js +0 -1
  120. package/dist/sankhyablocks/p-ebe876f5.entry.js +0 -1
  121. package/dist/sankhyablocks/p-ed438690.js +0 -1
  122. package/dist/sankhyablocks/p-f3d0c744.entry.js +0 -1
@@ -1,313 +0,0 @@
1
- 'use strict';
2
-
3
- const index = require('./index-21bd01e1.js');
4
- const index$1 = require('./index-f400b1d6.js');
5
-
6
- const appendToMap = (map, propName, value) => {
7
- const items = map.get(propName);
8
- if (!items) {
9
- map.set(propName, [value]);
10
- }
11
- else if (!items.includes(value)) {
12
- items.push(value);
13
- }
14
- };
15
- const debounce = (fn, ms) => {
16
- let timeoutId;
17
- return (...args) => {
18
- if (timeoutId) {
19
- clearTimeout(timeoutId);
20
- }
21
- timeoutId = setTimeout(() => {
22
- timeoutId = 0;
23
- fn(...args);
24
- }, ms);
25
- };
26
- };
27
-
28
- /**
29
- * Check if a possible element isConnected.
30
- * The property might not be there, so we check for it.
31
- *
32
- * We want it to return true if isConnected is not a property,
33
- * otherwise we would remove these elements and would not update.
34
- *
35
- * Better leak in Edge than to be useless.
36
- */
37
- const isConnected = (maybeElement) => !('isConnected' in maybeElement) || maybeElement.isConnected;
38
- const cleanupElements = debounce((map) => {
39
- for (let key of map.keys()) {
40
- map.set(key, map.get(key).filter(isConnected));
41
- }
42
- }, 2000);
43
- const stencilSubscription = () => {
44
- if (typeof index.getRenderingRef !== 'function') {
45
- // If we are not in a stencil project, we do nothing.
46
- // This function is not really exported by @stencil/core.
47
- return {};
48
- }
49
- const elmsToUpdate = new Map();
50
- return {
51
- dispose: () => elmsToUpdate.clear(),
52
- get: (propName) => {
53
- const elm = index.getRenderingRef();
54
- if (elm) {
55
- appendToMap(elmsToUpdate, propName, elm);
56
- }
57
- },
58
- set: (propName) => {
59
- const elements = elmsToUpdate.get(propName);
60
- if (elements) {
61
- elmsToUpdate.set(propName, elements.filter(index.forceUpdate));
62
- }
63
- cleanupElements(elmsToUpdate);
64
- },
65
- reset: () => {
66
- elmsToUpdate.forEach((elms) => elms.forEach(index.forceUpdate));
67
- cleanupElements(elmsToUpdate);
68
- },
69
- };
70
- };
71
-
72
- const unwrap = (val) => (typeof val === 'function' ? val() : val);
73
- const createObservableMap = (defaultState, shouldUpdate = (a, b) => a !== b) => {
74
- const unwrappedState = unwrap(defaultState);
75
- let states = new Map(Object.entries(unwrappedState !== null && unwrappedState !== void 0 ? unwrappedState : {}));
76
- const handlers = {
77
- dispose: [],
78
- get: [],
79
- set: [],
80
- reset: [],
81
- };
82
- const reset = () => {
83
- var _a;
84
- // When resetting the state, the default state may be a function - unwrap it to invoke it.
85
- // otherwise, the state won't be properly reset
86
- states = new Map(Object.entries((_a = unwrap(defaultState)) !== null && _a !== void 0 ? _a : {}));
87
- handlers.reset.forEach((cb) => cb());
88
- };
89
- const dispose = () => {
90
- // Call first dispose as resetting the state would
91
- // cause less updates ;)
92
- handlers.dispose.forEach((cb) => cb());
93
- reset();
94
- };
95
- const get = (propName) => {
96
- handlers.get.forEach((cb) => cb(propName));
97
- return states.get(propName);
98
- };
99
- const set = (propName, value) => {
100
- const oldValue = states.get(propName);
101
- if (shouldUpdate(value, oldValue, propName)) {
102
- states.set(propName, value);
103
- handlers.set.forEach((cb) => cb(propName, value, oldValue));
104
- }
105
- };
106
- const state = (typeof Proxy === 'undefined'
107
- ? {}
108
- : new Proxy(unwrappedState, {
109
- get(_, propName) {
110
- return get(propName);
111
- },
112
- ownKeys(_) {
113
- return Array.from(states.keys());
114
- },
115
- getOwnPropertyDescriptor() {
116
- return {
117
- enumerable: true,
118
- configurable: true,
119
- };
120
- },
121
- has(_, propName) {
122
- return states.has(propName);
123
- },
124
- set(_, propName, value) {
125
- set(propName, value);
126
- return true;
127
- },
128
- }));
129
- const on = (eventName, callback) => {
130
- handlers[eventName].push(callback);
131
- return () => {
132
- removeFromArray(handlers[eventName], callback);
133
- };
134
- };
135
- const onChange = (propName, cb) => {
136
- const unSet = on('set', (key, newValue) => {
137
- if (key === propName) {
138
- cb(newValue);
139
- }
140
- });
141
- // We need to unwrap the defaultState because it might be a function.
142
- // Otherwise we might not be sending the right reset value.
143
- const unReset = on('reset', () => cb(unwrap(defaultState)[propName]));
144
- return () => {
145
- unSet();
146
- unReset();
147
- };
148
- };
149
- const use = (...subscriptions) => {
150
- const unsubs = subscriptions.reduce((unsubs, subscription) => {
151
- if (subscription.set) {
152
- unsubs.push(on('set', subscription.set));
153
- }
154
- if (subscription.get) {
155
- unsubs.push(on('get', subscription.get));
156
- }
157
- if (subscription.reset) {
158
- unsubs.push(on('reset', subscription.reset));
159
- }
160
- if (subscription.dispose) {
161
- unsubs.push(on('dispose', subscription.dispose));
162
- }
163
- return unsubs;
164
- }, []);
165
- return () => unsubs.forEach((unsub) => unsub());
166
- };
167
- const forceUpdate = (key) => {
168
- const oldValue = states.get(key);
169
- handlers.set.forEach((cb) => cb(key, oldValue, oldValue));
170
- };
171
- return {
172
- state,
173
- get,
174
- set,
175
- on,
176
- onChange,
177
- use,
178
- dispose,
179
- reset,
180
- forceUpdate,
181
- };
182
- };
183
- const removeFromArray = (array, item) => {
184
- const index = array.indexOf(item);
185
- if (index >= 0) {
186
- array[index] = array[array.length - 1];
187
- array.length--;
188
- }
189
- };
190
-
191
- const createStore = (defaultState, shouldUpdate) => {
192
- const map = createObservableMap(defaultState, shouldUpdate);
193
- map.use(stencilSubscription());
194
- return map;
195
- };
196
-
197
- const store = createStore({
198
- exporterProviders: {}
199
- });
200
-
201
- exports.TaskbarElement = void 0;
202
- (function (TaskbarElement) {
203
- TaskbarElement["PREVIOUS"] = "PREVIOUS";
204
- TaskbarElement["NEXT"] = "NEXT";
205
- TaskbarElement["REFRESH"] = "REFRESH";
206
- TaskbarElement["UPDATE"] = "UPDATE";
207
- TaskbarElement["CLONE"] = "CLONE";
208
- TaskbarElement["REMOVE"] = "REMOVE";
209
- TaskbarElement["INSERT"] = "INSERT";
210
- TaskbarElement["CANCEL"] = "CANCEL";
211
- TaskbarElement["SAVE"] = "SAVE";
212
- TaskbarElement["GRID_MODE"] = "GRID_MODE";
213
- TaskbarElement["FORM_MODE"] = "FORM_MODE";
214
- TaskbarElement["MORE_OPTIONS"] = "MORE_OPTIONS";
215
- TaskbarElement["DIVIDER"] = "DIVIDER";
216
- TaskbarElement["CONFIGURATOR"] = "CONFIGURATOR";
217
- TaskbarElement["DATA_EXPORTER"] = "DATA_EXPORTER";
218
- TaskbarElement["ATTACH"] = "ATTACH";
219
- })(exports.TaskbarElement || (exports.TaskbarElement = {}));
220
- exports.AuthorizationElements = void 0;
221
- (function (AuthorizationElements) {
222
- AuthorizationElements["UPDATE"] = "UPDATE";
223
- AuthorizationElements["CLONE"] = "CLONE";
224
- AuthorizationElements["REMOVE"] = "REMOVE";
225
- AuthorizationElements["INSERT"] = "INSERT";
226
- AuthorizationElements["CONFIGURATOR"] = "CONFIGURATOR";
227
- })(exports.AuthorizationElements || (exports.AuthorizationElements = {}));
228
- exports.VisibleWhenForbidden = void 0;
229
- (function (VisibleWhenForbidden) {
230
- VisibleWhenForbidden["CONFIGURATOR"] = "CONFIGURATOR";
231
- })(exports.VisibleWhenForbidden || (exports.VisibleWhenForbidden = {}));
232
- const buildCustomButton = (def, className, dataElementId, action, isEnabled) => {
233
- const { hint, text, iconName } = def;
234
- if (iconName) {
235
- if (text) {
236
- return iconTextButton(iconName, def.name, className, dataElementId, hint, text, action, isEnabled);
237
- }
238
- else {
239
- return iconButton(iconName, def.name, className, dataElementId, hint, action, isEnabled);
240
- }
241
- }
242
- else {
243
- return textButton(def.name, className, dataElementId, text, hint, action, isEnabled);
244
- }
245
- };
246
- const buildElem = (element, className, dataElementId, getTitle, action, isEnabled, actions, configName, presentationMode) => {
247
- var _a;
248
- const title = getTitle(element);
249
- switch (element) {
250
- case exports.TaskbarElement.PREVIOUS:
251
- return iconButton("chevron-left", element, className, dataElementId, title, action, isEnabled);
252
- case exports.TaskbarElement.NEXT:
253
- return iconButton("chevron-right", element, className, dataElementId, title, action, isEnabled);
254
- case exports.TaskbarElement.REFRESH:
255
- return iconButton("sync", element, className, dataElementId, title, action, isEnabled);
256
- case exports.TaskbarElement.UPDATE:
257
- return iconButton("edit", element, className, dataElementId, title, action, isEnabled);
258
- case exports.TaskbarElement.CLONE:
259
- return iconButton("copy", element, className, dataElementId, title, action, isEnabled);
260
- case exports.TaskbarElement.REMOVE:
261
- return iconButton("delete", element, className, dataElementId, title, action, isEnabled);
262
- case exports.TaskbarElement.INSERT:
263
- if (presentationMode === index$1.PresentationMode.PRIMARY) {
264
- return iconTextButton("plus", element, className, dataElementId, title, title, action, isEnabled);
265
- }
266
- else {
267
- return iconButton("plus", element, className, dataElementId, title, action, isEnabled);
268
- }
269
- case exports.TaskbarElement.CANCEL:
270
- return textButton(element, className, dataElementId, title, title, action, isEnabled);
271
- case exports.TaskbarElement.SAVE:
272
- if (presentationMode === index$1.PresentationMode.PRIMARY) {
273
- return iconTextButton("save", element, className, dataElementId, title, title, action, isEnabled);
274
- }
275
- else {
276
- return iconButton("save", element, className, dataElementId, title, action, isEnabled);
277
- }
278
- case exports.TaskbarElement.GRID_MODE:
279
- return iconButton("table", element, className, dataElementId, title, action, isEnabled);
280
- case exports.TaskbarElement.FORM_MODE:
281
- return iconButton("list", element, className, dataElementId, title, action, isEnabled);
282
- case exports.TaskbarElement.CONFIGURATOR:
283
- return iconButton("settings-inverted", element, className, dataElementId, title, action, isEnabled);
284
- case exports.TaskbarElement.MORE_OPTIONS:
285
- return actionButton(element, className, dataElementId, title, action, isEnabled, actions);
286
- case exports.TaskbarElement.DIVIDER:
287
- return index.h("hr", { class: "ez-divider-vertical ez-divider--dark ez-margin-horizontal--medium", "data-taskbar-divider": true });
288
- case exports.TaskbarElement.DATA_EXPORTER:
289
- const provider = (_a = store.get("exporterProviders")) === null || _a === void 0 ? void 0 : _a[configName];
290
- return index.h("snk-data-exporter", { class: className, provider: provider, "data-element-id": dataElementId });
291
- case exports.TaskbarElement.ATTACH:
292
- return iconButton("anexo", element, className, dataElementId, title, action, isEnabled);
293
- }
294
- };
295
- function textButton(name, className, dataElementId, text, title, action, isEnabled) {
296
- return index.h("ez-button", { title: title, label: text, size: "small", class: className, "data-element-id": dataElementId, enabled: isEnabled(name), onClick: () => action(name) });
297
- }
298
- function iconButton(iconName, name, className, dataElementId, title, action, isEnabled) {
299
- return index.h("ez-button", { title: title, mode: "icon", size: "small", class: className, "data-element-id": dataElementId, iconName: iconName, enabled: isEnabled(name), onClick: () => action(name) });
300
- }
301
- function iconTextButton(iconName, name, className, dataElementId, text, title, action, isEnabled) {
302
- return index.h("ez-button", { title: title, label: text, size: "small", class: className, "data-element-id": dataElementId, enabled: isEnabled(name), onClick: () => action(name) },
303
- index.h("ez-icon", { class: "ez-padding-right--small", slot: "leftIcon", iconName: iconName }));
304
- }
305
- function actionButton(element, className, dataElementId, title, action, isEnabled, actions) {
306
- return actions && actions.length > 0
307
- ? index.h("ez-actions-button", { title: title, size: "small", "data-element-id": dataElementId, arrowActive: true, class: className, enabled: isEnabled(element), onEzAction: (evt) => action(evt.detail.value), actions: actions })
308
- : undefined;
309
- }
310
-
311
- exports.buildCustomButton = buildCustomButton;
312
- exports.buildElem = buildElem;
313
- exports.store = store;
@@ -1,309 +0,0 @@
1
- import { a as getRenderingRef, f as forceUpdate, h } from './index-cfd4bb13.js';
2
- import { P as PresentationMode } from './index-6519a79e.js';
3
-
4
- const appendToMap = (map, propName, value) => {
5
- const items = map.get(propName);
6
- if (!items) {
7
- map.set(propName, [value]);
8
- }
9
- else if (!items.includes(value)) {
10
- items.push(value);
11
- }
12
- };
13
- const debounce = (fn, ms) => {
14
- let timeoutId;
15
- return (...args) => {
16
- if (timeoutId) {
17
- clearTimeout(timeoutId);
18
- }
19
- timeoutId = setTimeout(() => {
20
- timeoutId = 0;
21
- fn(...args);
22
- }, ms);
23
- };
24
- };
25
-
26
- /**
27
- * Check if a possible element isConnected.
28
- * The property might not be there, so we check for it.
29
- *
30
- * We want it to return true if isConnected is not a property,
31
- * otherwise we would remove these elements and would not update.
32
- *
33
- * Better leak in Edge than to be useless.
34
- */
35
- const isConnected = (maybeElement) => !('isConnected' in maybeElement) || maybeElement.isConnected;
36
- const cleanupElements = debounce((map) => {
37
- for (let key of map.keys()) {
38
- map.set(key, map.get(key).filter(isConnected));
39
- }
40
- }, 2000);
41
- const stencilSubscription = () => {
42
- if (typeof getRenderingRef !== 'function') {
43
- // If we are not in a stencil project, we do nothing.
44
- // This function is not really exported by @stencil/core.
45
- return {};
46
- }
47
- const elmsToUpdate = new Map();
48
- return {
49
- dispose: () => elmsToUpdate.clear(),
50
- get: (propName) => {
51
- const elm = getRenderingRef();
52
- if (elm) {
53
- appendToMap(elmsToUpdate, propName, elm);
54
- }
55
- },
56
- set: (propName) => {
57
- const elements = elmsToUpdate.get(propName);
58
- if (elements) {
59
- elmsToUpdate.set(propName, elements.filter(forceUpdate));
60
- }
61
- cleanupElements(elmsToUpdate);
62
- },
63
- reset: () => {
64
- elmsToUpdate.forEach((elms) => elms.forEach(forceUpdate));
65
- cleanupElements(elmsToUpdate);
66
- },
67
- };
68
- };
69
-
70
- const unwrap = (val) => (typeof val === 'function' ? val() : val);
71
- const createObservableMap = (defaultState, shouldUpdate = (a, b) => a !== b) => {
72
- const unwrappedState = unwrap(defaultState);
73
- let states = new Map(Object.entries(unwrappedState !== null && unwrappedState !== void 0 ? unwrappedState : {}));
74
- const handlers = {
75
- dispose: [],
76
- get: [],
77
- set: [],
78
- reset: [],
79
- };
80
- const reset = () => {
81
- var _a;
82
- // When resetting the state, the default state may be a function - unwrap it to invoke it.
83
- // otherwise, the state won't be properly reset
84
- states = new Map(Object.entries((_a = unwrap(defaultState)) !== null && _a !== void 0 ? _a : {}));
85
- handlers.reset.forEach((cb) => cb());
86
- };
87
- const dispose = () => {
88
- // Call first dispose as resetting the state would
89
- // cause less updates ;)
90
- handlers.dispose.forEach((cb) => cb());
91
- reset();
92
- };
93
- const get = (propName) => {
94
- handlers.get.forEach((cb) => cb(propName));
95
- return states.get(propName);
96
- };
97
- const set = (propName, value) => {
98
- const oldValue = states.get(propName);
99
- if (shouldUpdate(value, oldValue, propName)) {
100
- states.set(propName, value);
101
- handlers.set.forEach((cb) => cb(propName, value, oldValue));
102
- }
103
- };
104
- const state = (typeof Proxy === 'undefined'
105
- ? {}
106
- : new Proxy(unwrappedState, {
107
- get(_, propName) {
108
- return get(propName);
109
- },
110
- ownKeys(_) {
111
- return Array.from(states.keys());
112
- },
113
- getOwnPropertyDescriptor() {
114
- return {
115
- enumerable: true,
116
- configurable: true,
117
- };
118
- },
119
- has(_, propName) {
120
- return states.has(propName);
121
- },
122
- set(_, propName, value) {
123
- set(propName, value);
124
- return true;
125
- },
126
- }));
127
- const on = (eventName, callback) => {
128
- handlers[eventName].push(callback);
129
- return () => {
130
- removeFromArray(handlers[eventName], callback);
131
- };
132
- };
133
- const onChange = (propName, cb) => {
134
- const unSet = on('set', (key, newValue) => {
135
- if (key === propName) {
136
- cb(newValue);
137
- }
138
- });
139
- // We need to unwrap the defaultState because it might be a function.
140
- // Otherwise we might not be sending the right reset value.
141
- const unReset = on('reset', () => cb(unwrap(defaultState)[propName]));
142
- return () => {
143
- unSet();
144
- unReset();
145
- };
146
- };
147
- const use = (...subscriptions) => {
148
- const unsubs = subscriptions.reduce((unsubs, subscription) => {
149
- if (subscription.set) {
150
- unsubs.push(on('set', subscription.set));
151
- }
152
- if (subscription.get) {
153
- unsubs.push(on('get', subscription.get));
154
- }
155
- if (subscription.reset) {
156
- unsubs.push(on('reset', subscription.reset));
157
- }
158
- if (subscription.dispose) {
159
- unsubs.push(on('dispose', subscription.dispose));
160
- }
161
- return unsubs;
162
- }, []);
163
- return () => unsubs.forEach((unsub) => unsub());
164
- };
165
- const forceUpdate = (key) => {
166
- const oldValue = states.get(key);
167
- handlers.set.forEach((cb) => cb(key, oldValue, oldValue));
168
- };
169
- return {
170
- state,
171
- get,
172
- set,
173
- on,
174
- onChange,
175
- use,
176
- dispose,
177
- reset,
178
- forceUpdate,
179
- };
180
- };
181
- const removeFromArray = (array, item) => {
182
- const index = array.indexOf(item);
183
- if (index >= 0) {
184
- array[index] = array[array.length - 1];
185
- array.length--;
186
- }
187
- };
188
-
189
- const createStore = (defaultState, shouldUpdate) => {
190
- const map = createObservableMap(defaultState, shouldUpdate);
191
- map.use(stencilSubscription());
192
- return map;
193
- };
194
-
195
- const store = createStore({
196
- exporterProviders: {}
197
- });
198
-
199
- var TaskbarElement;
200
- (function (TaskbarElement) {
201
- TaskbarElement["PREVIOUS"] = "PREVIOUS";
202
- TaskbarElement["NEXT"] = "NEXT";
203
- TaskbarElement["REFRESH"] = "REFRESH";
204
- TaskbarElement["UPDATE"] = "UPDATE";
205
- TaskbarElement["CLONE"] = "CLONE";
206
- TaskbarElement["REMOVE"] = "REMOVE";
207
- TaskbarElement["INSERT"] = "INSERT";
208
- TaskbarElement["CANCEL"] = "CANCEL";
209
- TaskbarElement["SAVE"] = "SAVE";
210
- TaskbarElement["GRID_MODE"] = "GRID_MODE";
211
- TaskbarElement["FORM_MODE"] = "FORM_MODE";
212
- TaskbarElement["MORE_OPTIONS"] = "MORE_OPTIONS";
213
- TaskbarElement["DIVIDER"] = "DIVIDER";
214
- TaskbarElement["CONFIGURATOR"] = "CONFIGURATOR";
215
- TaskbarElement["DATA_EXPORTER"] = "DATA_EXPORTER";
216
- TaskbarElement["ATTACH"] = "ATTACH";
217
- })(TaskbarElement || (TaskbarElement = {}));
218
- var AuthorizationElements;
219
- (function (AuthorizationElements) {
220
- AuthorizationElements["UPDATE"] = "UPDATE";
221
- AuthorizationElements["CLONE"] = "CLONE";
222
- AuthorizationElements["REMOVE"] = "REMOVE";
223
- AuthorizationElements["INSERT"] = "INSERT";
224
- AuthorizationElements["CONFIGURATOR"] = "CONFIGURATOR";
225
- })(AuthorizationElements || (AuthorizationElements = {}));
226
- var VisibleWhenForbidden;
227
- (function (VisibleWhenForbidden) {
228
- VisibleWhenForbidden["CONFIGURATOR"] = "CONFIGURATOR";
229
- })(VisibleWhenForbidden || (VisibleWhenForbidden = {}));
230
- const buildCustomButton = (def, className, dataElementId, action, isEnabled) => {
231
- const { hint, text, iconName } = def;
232
- if (iconName) {
233
- if (text) {
234
- return iconTextButton(iconName, def.name, className, dataElementId, hint, text, action, isEnabled);
235
- }
236
- else {
237
- return iconButton(iconName, def.name, className, dataElementId, hint, action, isEnabled);
238
- }
239
- }
240
- else {
241
- return textButton(def.name, className, dataElementId, text, hint, action, isEnabled);
242
- }
243
- };
244
- const buildElem = (element, className, dataElementId, getTitle, action, isEnabled, actions, configName, presentationMode) => {
245
- var _a;
246
- const title = getTitle(element);
247
- switch (element) {
248
- case TaskbarElement.PREVIOUS:
249
- return iconButton("chevron-left", element, className, dataElementId, title, action, isEnabled);
250
- case TaskbarElement.NEXT:
251
- return iconButton("chevron-right", element, className, dataElementId, title, action, isEnabled);
252
- case TaskbarElement.REFRESH:
253
- return iconButton("sync", element, className, dataElementId, title, action, isEnabled);
254
- case TaskbarElement.UPDATE:
255
- return iconButton("edit", element, className, dataElementId, title, action, isEnabled);
256
- case TaskbarElement.CLONE:
257
- return iconButton("copy", element, className, dataElementId, title, action, isEnabled);
258
- case TaskbarElement.REMOVE:
259
- return iconButton("delete", element, className, dataElementId, title, action, isEnabled);
260
- case TaskbarElement.INSERT:
261
- if (presentationMode === PresentationMode.PRIMARY) {
262
- return iconTextButton("plus", element, className, dataElementId, title, title, action, isEnabled);
263
- }
264
- else {
265
- return iconButton("plus", element, className, dataElementId, title, action, isEnabled);
266
- }
267
- case TaskbarElement.CANCEL:
268
- return textButton(element, className, dataElementId, title, title, action, isEnabled);
269
- case TaskbarElement.SAVE:
270
- if (presentationMode === PresentationMode.PRIMARY) {
271
- return iconTextButton("save", element, className, dataElementId, title, title, action, isEnabled);
272
- }
273
- else {
274
- return iconButton("save", element, className, dataElementId, title, action, isEnabled);
275
- }
276
- case TaskbarElement.GRID_MODE:
277
- return iconButton("table", element, className, dataElementId, title, action, isEnabled);
278
- case TaskbarElement.FORM_MODE:
279
- return iconButton("list", element, className, dataElementId, title, action, isEnabled);
280
- case TaskbarElement.CONFIGURATOR:
281
- return iconButton("settings-inverted", element, className, dataElementId, title, action, isEnabled);
282
- case TaskbarElement.MORE_OPTIONS:
283
- return actionButton(element, className, dataElementId, title, action, isEnabled, actions);
284
- case TaskbarElement.DIVIDER:
285
- return h("hr", { class: "ez-divider-vertical ez-divider--dark ez-margin-horizontal--medium", "data-taskbar-divider": true });
286
- case TaskbarElement.DATA_EXPORTER:
287
- const provider = (_a = store.get("exporterProviders")) === null || _a === void 0 ? void 0 : _a[configName];
288
- return h("snk-data-exporter", { class: className, provider: provider, "data-element-id": dataElementId });
289
- case TaskbarElement.ATTACH:
290
- return iconButton("anexo", element, className, dataElementId, title, action, isEnabled);
291
- }
292
- };
293
- function textButton(name, className, dataElementId, text, title, action, isEnabled) {
294
- return h("ez-button", { title: title, label: text, size: "small", class: className, "data-element-id": dataElementId, enabled: isEnabled(name), onClick: () => action(name) });
295
- }
296
- function iconButton(iconName, name, className, dataElementId, title, action, isEnabled) {
297
- return h("ez-button", { title: title, mode: "icon", size: "small", class: className, "data-element-id": dataElementId, iconName: iconName, enabled: isEnabled(name), onClick: () => action(name) });
298
- }
299
- function iconTextButton(iconName, name, className, dataElementId, text, title, action, isEnabled) {
300
- return h("ez-button", { title: title, label: text, size: "small", class: className, "data-element-id": dataElementId, enabled: isEnabled(name), onClick: () => action(name) },
301
- h("ez-icon", { class: "ez-padding-right--small", slot: "leftIcon", iconName: iconName }));
302
- }
303
- function actionButton(element, className, dataElementId, title, action, isEnabled, actions) {
304
- return actions && actions.length > 0
305
- ? h("ez-actions-button", { title: title, size: "small", "data-element-id": dataElementId, arrowActive: true, class: className, enabled: isEnabled(element), onEzAction: (evt) => action(evt.detail.value), actions: actions })
306
- : undefined;
307
- }
308
-
309
- export { AuthorizationElements as A, TaskbarElement as T, VisibleWhenForbidden as V, buildCustomButton as a, buildElem as b, store as s };
@@ -1 +0,0 @@
1
- import{r as t,c as s,h as e,g as i}from"./p-b9667fbe.js";import{ElementIDUtils as r,ApplicationContext as a,DataUnit as n,StringUtils as l,SortMode as o,DataType as h,ChangeOperation as d,ObjectUtils as m,UserInterface as c}from"@sankhyalabs/core";import{c as u,S as p}from"./p-17375123.js";import{T as b}from"./p-ed438690.js";import"./p-41d92871.js";import"./p-11028eba.js";import{P as g}from"./p-f132e371.js";import{T as k}from"./p-c2beb95c.js";import"./p-112455b1.js";const f=class{constructor(e){t(this,e),this.clickBreadcrumbItem=s(this,"clickBreadcrumbItem",3),this.exit=s(this,"exit",3),this.label=void 0,this.breadcrumbItens=void 0,this.messagesBuilder=void 0}getMessage(t,s){var e;return this.messagesBuilder?this.messagesBuilder.getMessage(t,s):(null===(e=this._application)||void 0===e?void 0:e.messagesBuilder)?this._application.messagesBuilder.getMessage(t,s):void 0}componentDidLoad(){this._element&&(r.addIDInfo(this._element),this._application=a.getContextValue("__SNK__APPLICATION__"))}render(){return e("div",{class:"simple-bar__container ez-margin-vertical--medium ez-padding--extra-small"},e("div",{class:"simple-bar__left-slot"},e("ez-button",{class:"ez-padding-right--medium",title:this.getMessage("snkSimpleBar.backTitle"),mode:"icon",iconName:"arrow_back",size:"medium",onClick:()=>this.exit.emit()}),e("div",{class:"simple-bar__column"},e("h1",{class:"ez-title ez-title--primary ez-title--extra-large"},this.label),e("ez-breadcrumb",{items:this.breadcrumbItens,onSelectedItem:({detail:t})=>this.clickBreadcrumbItem.emit(t)}))),e("div",{class:"simple-bar__right-slot"},e("slot",{name:"rightSlot"})))}get _element(){return i(this)}};f.style=".sc-snk-simple-bar-h{display:flex;height:100%;width:100%}.simple-bar__container.sc-snk-simple-bar{flex:1;display:flex;align-items:stretch;gap:var(--space--small)}.simple-bar__left-slot.sc-snk-simple-bar{min-width:280px;flex:1;display:flex;align-items:center}.simple-bar__right-slot.sc-snk-simple-bar{flex:1;display:flex;align-items:center;justify-content:flex-end}.simple-bar__column.sc-snk-simple-bar{flex:1;display:flex;flex-direction:column}";class v{constructor(t,s){this.records=s||[],this.metadata=t,this._dataUnit=new n("InMemoryDataUnit"),this._dataUnit.metadataLoader=()=>this.metadaLoader(),this._dataUnit.dataLoader=(t,s)=>this.dataLoader(t,s),this._dataUnit.saveLoader=(t,s)=>this.saveLoader(t,s),this._dataUnit.removeLoader=(t,s)=>this.removeLoader(t,s),this.dataUnit.loadMetadata().then((()=>this.dataUnit.loadData()))}get dataUnit(){return this._dataUnit}get records(){return this._records}set records(t){this._records=null==t?void 0:t.map((t=>(t.__record__id__||(t.__record__id__=this.generateUniqueId()),t))),this._dataUnit&&(this._dataUnit.records=[...this._records])}get metadata(){return this._metadata}set metadata(t){this._metadata=t,this._dataUnit&&(this._dataUnit.metadata=this._metadata)}generateUniqueId(){return l.generateUUID()}metadaLoader(){return Promise.resolve(this._metadata)}dataLoader(t,s){let e=[...this._records];return s.sort&&s.sort.forEach((t=>{e=e.sort(((s,e)=>{const i=s[t.field],r=e[t.field];return this.getSortFn(t.dataType)(i,r)*(t.mode==o.ASC?1:-1)}))})),Promise.resolve({records:e})}getSortFn(t){switch(t){case h.NUMBER:return this.sortNumber;case h.DATE:return this.sortDate;case h.OBJECT:return this.sortObject;default:return l.compare}}sortObject(t,s){return l.compare(t.label,s.label)}sortNumber(t,s){return t-s}sortDate(t,s){let e=t.getTime(),i=s.getTime();return e===i?0:e<i?-1:1}saveLoader(t,s){return new Promise((t=>{let e=[];s.forEach((t=>{let{record:s,updatingFields:i,operation:r}=t,a=!1;r!==d.INSERT&&r!==d.COPY||(s.__old__id__=s.__record__id__,s.__record__id__=this.generateUniqueId(),a=!0);const n=Object.assign(Object.assign({},s),i);if(a)this.records.push(n);else{const t=this.records.findIndex((t=>t.__record__id__==n.__record__id__));this.records[t]=n}e.push(n)})),t(e)}))}removeLoader(t,s){return new Promise((t=>{this._records=this._records.filter((t=>!s.includes(t.__record__id__))),t(s)}))}}const _=class{constructor(e){t(this,e),this.dataStateChange=s(this,"dataStateChange",3),this.dataUnitReady=s(this,"dataUnitReady",3),this.REGULAR_DEFAULT_BTNS=["INSERT","REFRESH","PREVIOUS","NEXT","DIVIDER"],this.REGULAR_SELECTED_BTNS=["INSERT","REFRESH","PREVIOUS","NEXT","DIVIDER","CLONE","REMOVE","DIVIDER"],this._taskbarProcessor=new k({"snkSimpleCrudTaskbar.form_regular":this.resolveInMemoryBtns(this.REGULAR_DEFAULT_BTNS).concat(b.GRID_MODE),"snkSimpleCrudTaskbar.grid_regular":this.resolveInMemoryBtns(this.REGULAR_DEFAULT_BTNS).concat(b.FORM_MODE),"snkSimpleCrudTaskbar.form_selected":this.resolveInMemoryBtns(this.REGULAR_SELECTED_BTNS).concat(b.GRID_MODE),"snkSimpleCrudTaskbar.grid_selected":this.resolveInMemoryBtns(this.REGULAR_SELECTED_BTNS).concat(b.FORM_MODE),"snkSimpleCrudTaskbar.finish_edition":["CANCEL","SAVE"]}),this._currentViewMode=u.GRID,this._config=void 0,this.dataState=void 0,this.dataUnit=void 0,this.mode=p.SERVER,this.gridConfig=void 0,this.formConfig=void 0,this.useCancelConfirm=!0,this.taskbarManager=void 0,this.messagesBuilder=void 0}resolveInMemoryBtns(t){const s=[...t];return this.mode===p.IN_MEMORY&&s.splice(1,1),s}async goToView(t){this._currentViewMode=t,this._viewStack&&this._viewStack.show(t)}actionClickListener(t){const s=t.detail;s===b.GRID_MODE?this.goToView(u.GRID):s===b.FORM_MODE&&this.goToView(u.FORM),t.stopPropagation()}onModeChange(){this.mode==p.IN_MEMORY&&this.initInMemoryDataUnit()}observeDataState(t,s){m.objectToString(s)!=m.objectToString(t)&&this.dataStateChange.emit(t)}componentWillRender(){this._taskbarProcessor.process(this.getTaskBarId(),this.taskbarManager,this.dataState,this.getTaskBarDisabledButtons())}componentWillLoad(){this.processMetadata(),this.onModeChange()}getTaskBarId(){var t,s,e;return(null===(t=this.dataState)||void 0===t?void 0:t.isDirty)?"snkSimpleCrudTaskbar.finish_edition":(null===(s=this.dataState)||void 0===s?void 0:s.selectionInfo)&&!this.dataState.selectionInfo.isAllRecords()&&(null===(e=this.dataState.selectionInfo.records)||void 0===e?void 0:e.length)>0?this._currentViewMode===u.GRID?"snkSimpleCrudTaskbar.grid_selected":"snkSimpleCrudTaskbar.form_selected":this._currentViewMode===u.GRID?"snkSimpleCrudTaskbar.grid_regular":"snkSimpleCrudTaskbar.form_regular"}initInMemoryDataUnit(){this._inMemoryLoader=new v(this._metadata),this.dataUnit=this._inMemoryLoader.dataUnit,this.dataUnitReady.emit(this.dataUnit)}setMetadata(t){return this._inMemoryLoader?this._inMemoryLoader.metadata=t:this.dataUnit&&(this.dataUnit.metadata=t),Promise.resolve()}setRecords(t){return this._inMemoryLoader?this._inMemoryLoader.records=t:this.dataUnit&&(this.dataUnit.records=t),Promise.resolve()}getRecords(){return Promise.resolve(this.dataUnit.records)}processMetadata(){const t=this._element.querySelectorAll("snk-field-metadata"),s=[],e={fields:[],emptyConfig:!1};t.forEach((t=>{const i={name:t.getAttribute("name")||t.getAttribute("label"),label:t.getAttribute("label"),dataType:h[t.getAttribute("dataType")]||h.TEXT,userInterface:c[t.getAttribute("userInterface")]||c.SHORTTEXT,readOnly:"true"==t.getAttribute("readOnly"),required:"true"==t.getAttribute("required"),tab:t.getAttribute("tab")||void 0,visible:"false"!=t.getAttribute("visible")};e.fields.push({name:i.name,tab:i.tab,visible:i.visible}),s.push(i)})),s.length>0&&(this.formConfig||(this.formConfig=e),this._metadata={name:"SimpleCrud",label:"SimpleCrud",fields:s})}onDataStateChange(t){this.dataState=Object.assign({},t.detail)}getTaskBarDisabledButtons(){var t,s;const e=[];return(null===(t=this.dataState)||void 0===t?void 0:t.hasNext)||e.push(b.NEXT),(null===(s=this.dataState)||void 0===s?void 0:s.hasPrevious)||e.push(b.PREVIOUS),e}render(){var t;return e("snk-data-unit",{class:"simple-crud__container",dataUnit:this.dataUnit,useCancelConfirm:this.useCancelConfirm,onDataStateChange:t=>this.onDataStateChange(t),onInsertionMode:()=>this.goToView(u.FORM),onDataUnitReady:t=>this.dataUnitReady.emit(t.detail),onMessagesBuilderUpdated:t=>this.messagesBuilder=t.detail},e("header",null,e("slot",{name:"snkSimpleCrudHeader"})),e("section",{class:"ez-flex ez-box ez-box--shadow"},e("snk-taskbar",{class:"simple-crud__taskbar ez-box ez-box--shadow ez-padding--medium",dataUnit:this.dataUnit,primaryButton:(null===(t=this.dataState)||void 0===t?void 0:t.isDirty)?"SAVE":"INSERT","data-element-id":"grid_left",messagesBuilder:this.messagesBuilder,buttons:this._taskbarProcessor.buttons,disabledButtons:this._taskbarProcessor.disabledButtons,customButtons:this._taskbarProcessor.customButtons,slot:"leftButtons",presentationMode:g.SECONDARY}),e("ez-view-stack",{class:"ez-flex ez-flex--column",ref:t=>this._viewStack=t,"data-element-id":"simple-crud"},e("stack-item",null,e("ez-grid",{dataUnit:this.dataUnit,onEzDoubleClick:()=>this.goToView(u.FORM),config:this.gridConfig,"no-header":!0},e("div",{slot:"footer"},e("slot",{name:"snkSimpleCrudFooter"})))),e("stack-item",null,e("ez-form",{dataUnit:this.dataUnit,config:this.formConfig})))))}get _element(){return i(this)}static get watchers(){return{mode:["onModeChange"],dataState:["observeDataState"]}}};_.style=".sc-snk-simple-crud-h{display:flex;height:100%;width:100%}.simple-crud__container.sc-snk-simple-crud{display:grid;grid-template-rows:auto;row-gap:12px;height:100%;width:100%}.simple-crud__taskbar.sc-snk-simple-crud{z-index:var(--more-visible, 2);margin-bottom:var(--space--medium)}ez-grid.sc-snk-simple-crud{--ez-grid__container--shadow:none;min-height:300px}ez-form.sc-snk-simple-crud{min-height:300px}";export{f as snk_simple_bar,_ as snk_simple_crud}
@@ -1 +0,0 @@
1
- import{r as t,c as s,h as i,H as e,g as a}from"./p-b9667fbe.js";import{StringUtils as r,ApplicationContext as h,ElementIDUtils as n}from"@sankhyalabs/core";import{A as o}from"./p-dc36cfbf.js";import{T as l,V as k,A as d,b,a as c}from"./p-ed438690.js";import{P as m}from"./p-f132e371.js";const u=class{constructor(i){t(this,i),this.actionClick=s(this,"actionClick",7),this._titleKeyByElement={[l.UPDATE]:"snkTaskbar.titleUpdate",[l.PREVIOUS]:"snkTaskbar.titlePrevious",[l.NEXT]:"snkTaskbar.titleNext",[l.REFRESH]:"snkTaskbar.titleRefresh",[l.CLONE]:"snkTaskbar.titleClone",[l.REMOVE]:"snkTaskbar.titleRemove",[l.MORE_OPTIONS]:"snkTaskbar.titleMoreOptions",[l.INSERT]:"snkTaskbar.titleInsert",[l.CANCEL]:"snkTaskbar.titleCancel",[l.SAVE]:"snkTaskbar.titleSave",[l.GRID_MODE]:"snkTaskbar.titleGridMode",[l.FORM_MODE]:"snkTaskbar.titleFormMode",[l.CONFIGURATOR]:"snkTaskbar.titleConfigurator",[l.ATTACH]:"snkTaskbar.titleAttach"},this._permissions=void 0,this.configName=void 0,this.buttons=void 0,this.customButtons=void 0,this.actionsList=void 0,this.primaryButton=void 0,this.disabledButtons=void 0,this.dataUnit=void 0,this.presentationMode=m.PRIMARY,this.messagesBuilder=void 0}observeButtons(){this._definitions=void 0}elementsFromString(t){const s=[];return null==t||t.split(",").forEach((t=>{t=t.trim(),(k[t]||this.isAllowed(t))&&s.push(t.trim())})),s}isAllowed(t){return t===d.CONFIGURATOR?!!this._permissions&&(this._permissions.isSup||this._permissions[o.CONFIG_GRID]||this._permissions[o.CONFIG]):!d[t]||!!this._permissions&&(this._permissions.isSup||this._permissions[t])}getTitle(t){var s;let i;return i=this.isAllowed(t)?this._titleKeyByElement[t]:"snkTaskbar.forbidden",i?null===(s=this.messagesBuilder)||void 0===s?void 0:s.getMessage(i,{}):""}elementClick(t){if(this.dataUnit)switch(t){case l.PREVIOUS:this.dataUnit.previousRecord();break;case l.NEXT:this.dataUnit.nextRecord();break;case l.REFRESH:this.dataUnit.loadData();break;case l.CLONE:this.dataUnit.copySelected();break;case l.REMOVE:this.dataUnit.removeSelectedRecords();break;case l.INSERT:this.dataUnit.addRecord();break;case l.CANCEL:this.dataUnit.cancelEdition();break;case l.SAVE:this.dataUnit.saveData()}this.actionClick.emit(t)}isEnabled(t){return!(!this.isAllowed(t)||this.disabledButtons&&this.disabledButtons.includes(t))}validatePresentationMode(){Object.values(m).includes(this.presentationMode)||(this.presentationMode=m.PRIMARY)}getElement(t,s){let i=s===this.primaryButton?"ez-button--primary ":"";return t>1&&(i+="ez-padding-left--medium"),l[s.toString()]?b(s,i,this.getIdElemBtnNative(s),(t=>this.getTitle(t)),(t=>this.elementClick(t)),(t=>this.isEnabled(t)),this.actionsList,this.configName,this.presentationMode):c(s,i,this.getIdElemBtnCustom(s),(t=>this.elementClick(t)),(t=>this.isEnabled(t)))}getIdElemBtnNative(t){return r.toCamelCase(t)}getIdElemBtnCustom(t){return r.toCamelCase(t.name)}isDivider(t){var s;return void 0!==t&&(null===(s=t.t)||void 0===s?void 0:s["data-taskbar-divider"])}removeEmpty(t){let s;return t.filter((t=>!(null==t||this.isDivider(s)&&this.isDivider(t)||(s=t,0))))}componentWillLoad(){this._application=h.getContextValue("__SNK__APPLICATION__"),this._application?this._application.getAllAccess().then((t=>this._permissions=t)):this._permissions={}}componentWillRender(){null==this._definitions&&this._permissions&&(this._definitions=this.elementsFromString(this.buttons)),this.validatePresentationMode()}componentDidLoad(){n.addIDInfo(this._element,null,{dataUnit:this.dataUnit})}render(){if(void 0===this._definitions)return;let t=0;return i(e,null,this.removeEmpty(this._definitions.map((s=>(s===l.DIVIDER?t=0:t++,l[s]?this.getElement(t,l[s]):this.customButtons.has(s)?this.getElement(t,this.customButtons.get(s)):i("slot",{name:s}))))))}get _element(){return a(this)}static get watchers(){return{buttons:["observeButtons"]}}};u.style=".sc-snk-taskbar-h{display:flex}";export{u as snk_taskbar}
@@ -1 +0,0 @@
1
- export{S as snk_guides_viewer}from"./p-aeffd219.js";import"./p-b9667fbe.js";import"@sankhyalabs/core";import"./p-e0aa5838.js";import"./p-52ed2a18.js";import"./p-0d81236c.js";import"./p-41d92871.js";import"./p-112455b1.js";import"@sankhyalabs/ezui/dist/collection/utils/form";import"./p-c2beb95c.js";import"./p-ed438690.js";import"./p-f132e371.js";import"./p-17375123.js";import"./p-11028eba.js";