wj-elements 0.1.176 → 0.1.178

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 (36) hide show
  1. package/dist/base-path.js +23 -0
  2. package/dist/base-path.js.map +1 -0
  3. package/dist/dark.css +6 -0
  4. package/dist/light.css +5 -0
  5. package/dist/packages/index.d.ts +4 -2
  6. package/dist/packages/utils/base-path.d.ts +14 -0
  7. package/dist/packages/utils/permissions.d.ts +40 -0
  8. package/dist/packages/wje-color-picker/color-picker.test.d.ts +1 -0
  9. package/dist/packages/wje-element/element.d.ts +3 -3
  10. package/dist/packages/wje-icon/service/library.d.ts +3 -0
  11. package/dist/packages/wje-option/option.element.d.ts +36 -2
  12. package/dist/packages/wje-select/select.element.d.ts +26 -2
  13. package/dist/packages/wje-split-view/split-view.element.d.ts +0 -1
  14. package/dist/packages/wje-tooltip/tooltip.element.d.ts +5 -0
  15. package/dist/wje-element.js +231 -229
  16. package/dist/wje-element.js.map +1 -1
  17. package/dist/wje-icon-library.js +24 -0
  18. package/dist/wje-icon-library.js.map +1 -0
  19. package/dist/wje-icon.js +6 -5
  20. package/dist/wje-icon.js.map +1 -1
  21. package/dist/wje-input.js +1 -1
  22. package/dist/wje-master.js +189 -183
  23. package/dist/wje-master.js.map +1 -1
  24. package/dist/wje-option.js +193 -25
  25. package/dist/wje-option.js.map +1 -1
  26. package/dist/wje-select.js +55 -17
  27. package/dist/wje-select.js.map +1 -1
  28. package/dist/wje-split-view.js.map +1 -1
  29. package/dist/wje-textarea.js +2 -2
  30. package/dist/wje-textarea.js.map +1 -1
  31. package/dist/wje-tooltip.js +9 -0
  32. package/dist/wje-tooltip.js.map +1 -1
  33. package/package.json +4 -1
  34. package/dist/packages/utils/permissions-api.d.ts +0 -34
  35. package/dist/packages/utils/wje-import.d.ts +0 -0
  36. /package/dist/packages/{utils/wje-import-firefox.d.ts → wje-accordion/accordion.test.d.ts} +0 -0
@@ -11,6 +11,235 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
11
11
  var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
12
12
  var _Event_instances, dispatch_fn, _drawingStatus, _isAttached, _isRendering, _originalVisibility, _pristine, _WJElement_instances, enqueueUpdate_fn, refresh_fn, resolveRender_fn;
13
13
  import { store, defaultStoreActions } from "./wje-store.js";
14
+ var self;
15
+ class Event {
16
+ constructor() {
17
+ __privateAdd(this, _Event_instances);
18
+ this.customEventWeakMap = /* @__PURE__ */ new WeakMap();
19
+ self = this;
20
+ }
21
+ /**
22
+ * Dispatch custom event to the element with the specified event name and detail.
23
+ * @param element
24
+ * @param event
25
+ * @param detail
26
+ */
27
+ dispatchCustomEvent(element, event2, detail) {
28
+ element.dispatchEvent(
29
+ new CustomEvent(event2, {
30
+ detail: detail || {
31
+ context: element,
32
+ event: self
33
+ },
34
+ bubbles: true,
35
+ composed: true,
36
+ cancelable: true
37
+ })
38
+ );
39
+ }
40
+ /**
41
+ * Find record by element in the storage.
42
+ * @param element
43
+ * @returns {*}
44
+ */
45
+ findRecordByElement(element) {
46
+ return this.customEventWeakMap.get(element);
47
+ }
48
+ /**
49
+ * Add listener to the element. If the element is an array, the listener will be added to all elements in the array.
50
+ * @param element
51
+ * @param originalEvent
52
+ * @param event
53
+ * @param listener
54
+ * @param options
55
+ */
56
+ addListener(element, originalEvent, event2, listener, options) {
57
+ if (!element) return;
58
+ if (!Array.isArray(element)) element = [element];
59
+ element.forEach((el) => {
60
+ this.writeRecord(el, originalEvent, event2, listener, options);
61
+ });
62
+ }
63
+ /**
64
+ * Write record to the storage.
65
+ * @param element
66
+ * @param originalEvent
67
+ * @param event
68
+ * @param listener
69
+ * @param options
70
+ */
71
+ writeRecord(element, originalEvent, event2, listener, options) {
72
+ let recordListeners = this.findRecordByElement(element);
73
+ if (!recordListeners) {
74
+ this.customEventWeakMap.set(element, {
75
+ [originalEvent]: []
76
+ });
77
+ recordListeners = this.findRecordByElement(element);
78
+ } else {
79
+ recordListeners[originalEvent] = recordListeners[originalEvent] || [];
80
+ }
81
+ listener = listener || __privateMethod(this, _Event_instances, dispatch_fn);
82
+ let obj = {
83
+ listener,
84
+ options,
85
+ event: event2
86
+ };
87
+ if (!this.isRecordExists(recordListeners[originalEvent], obj)) {
88
+ if (!this.listenerExists(recordListeners[originalEvent], obj)) {
89
+ element.addEventListener(originalEvent, listener, options);
90
+ obj.unbind = () => {
91
+ element.removeEventListener(originalEvent, listener, options);
92
+ };
93
+ }
94
+ recordListeners[originalEvent].push(obj);
95
+ }
96
+ }
97
+ /**
98
+ * Performs a deep equality check between two objects.
99
+ * @param x The first object to compare.
100
+ * @param y The second object to compare.
101
+ * @returns - Returns `true` if the objects are deeply equal, `false` otherwise.
102
+ */
103
+ deepEqual(x, y) {
104
+ return x && y && typeof x === "object" && typeof x === typeof y ? Object.keys(x).length === Object.keys(y).length && Object.keys(x).every((key) => this.deepEqual(x[key], y[key])) : x === y;
105
+ }
106
+ /**
107
+ * Check if the listener already exists on the element.
108
+ * @param records
109
+ * @param eventObj
110
+ * @returns
111
+ */
112
+ listenerExists(records, eventObj) {
113
+ return records.some((e) => e.listener === eventObj.listener);
114
+ }
115
+ isRecordExists(records, eventObj) {
116
+ return records.some((e) => this.deepEqual(e, eventObj));
117
+ }
118
+ /**
119
+ * Remove listener from the element and delete the listener from the custom event storage.
120
+ * @param element
121
+ * @param originalEvent
122
+ * @param event
123
+ * @param listener
124
+ * @param options
125
+ */
126
+ removeListener(element, originalEvent, event2, listener, options) {
127
+ let records = this.findRecordByElement(element);
128
+ let listeners = records == null ? void 0 : records[originalEvent];
129
+ listener = listener || __privateMethod(this, _Event_instances, dispatch_fn);
130
+ if (listeners) {
131
+ let listenerOfWeakMap = listeners.find((e) => e.listener === listener);
132
+ if (listenerOfWeakMap) {
133
+ listeners.splice(listeners.indexOf(listenerOfWeakMap), 1);
134
+ }
135
+ if (!listeners.length) {
136
+ delete records[originalEvent];
137
+ element == null ? void 0 : element.removeEventListener(originalEvent, listener, options);
138
+ }
139
+ }
140
+ }
141
+ /**
142
+ * Remove all event listeners from the specified element and delete the element from the custom event storage.
143
+ * @param {HTMLElement} element The element from which all listeners will be removed.
144
+ */
145
+ removeElement(element) {
146
+ let listeners = this.customEventWeakMap.get(element);
147
+ if (listeners) {
148
+ queueMicrotask(() => {
149
+ for (let event2 in listeners) {
150
+ listeners[event2].forEach((e) => {
151
+ element.removeEventListener(event2, e.listener, e.options);
152
+ e.unbind();
153
+ });
154
+ }
155
+ this.customEventWeakMap.delete(element);
156
+ });
157
+ }
158
+ }
159
+ // TODO
160
+ createPromiseFromEvent(element, event2) {
161
+ return new Promise((resolve) => {
162
+ let success = () => {
163
+ element.removeEventListener(event2, success);
164
+ resolve();
165
+ };
166
+ element.addEventListener(event2, success);
167
+ });
168
+ }
169
+ }
170
+ _Event_instances = new WeakSet();
171
+ /**
172
+ * Dispatch event to the element and trigger the listener.
173
+ * @param e
174
+ */
175
+ dispatch_fn = function(e) {
176
+ let element = this;
177
+ let record = self.customEventWeakMap.get(this);
178
+ if (!record) return;
179
+ let listeners = record[e.type];
180
+ listeners.forEach((listener) => {
181
+ self.dispatchCustomEvent(element, listener.event, {
182
+ originalEvent: (e == null ? void 0 : e.type) || null,
183
+ context: element,
184
+ event: self
185
+ });
186
+ if (listener.options && listener.options.stopPropagation === true) {
187
+ e.stopPropagation();
188
+ e.stopImmediatePropagation();
189
+ e.preventDefault();
190
+ }
191
+ });
192
+ };
193
+ let event = new Event();
194
+ const _Permissions = class _Permissions {
195
+ /**
196
+ * Sets the permission key for the PermissionsApi.
197
+ * The key is stored internally and defaults to 'permissions' if no value is provided.
198
+ * @param {string} value The key to set for permissions. If no value is provided, the default is 'permissions'.
199
+ */
200
+ static set permissionKey(value) {
201
+ _Permissions._permissionKey = value || "permissions";
202
+ }
203
+ /**
204
+ * Retrieves the permission key used for accessing the permissions API.
205
+ * @returns {string} The permission key associated with the PermissionsApi.
206
+ */
207
+ static get permissionKey() {
208
+ return _Permissions._permissionKey;
209
+ }
210
+ /**
211
+ * Sets the permissions by storing them in the local storage.
212
+ * @param {object} value The permissions object to be stored.
213
+ */
214
+ static set permissions(value) {
215
+ window.localStorage.setItem(_Permissions.permissionKey, JSON.stringify(value));
216
+ }
217
+ /**
218
+ * Retrieves the list of permissions stored in the browser's local storage.
219
+ * @returns {Array} An array of permissions. If no permissions are found, returns an empty array.
220
+ */
221
+ static get permissions() {
222
+ return JSON.parse(window.localStorage.getItem(_Permissions.permissionKey)) || [];
223
+ }
224
+ /**
225
+ * Determines whether the specified key exists in the permissions list.
226
+ * @param {string} key The key to check for existence in the permissions list.
227
+ * @returns {boolean} Returns true if the key exists in the permissions list; otherwise, returns false.
228
+ */
229
+ static includesKey(key) {
230
+ return _Permissions.permissions.includes(key);
231
+ }
232
+ /**
233
+ * Checks if at least one of the given permissions is fulfilled, based on the permissions available in `PermissionsApi`.
234
+ * @param {Array<string>} permissions The list of permissions to check against the permissions available in `PermissionsApi`.
235
+ * @returns {boolean} Returns `true` if any of the given permissions match the permissions available in `PermissionsApi`, otherwise returns `false`.
236
+ */
237
+ static isPermissionFulfilled(permissions) {
238
+ return permissions.some((perm) => _Permissions.permissions.includes(perm));
239
+ }
240
+ };
241
+ __publicField(_Permissions, "_permissionKey", "permissions");
242
+ let Permissions = _Permissions;
14
243
  class UniversalService {
15
244
  constructor(props = {}) {
16
245
  __publicField(this, "findByKey", (attrName, key, keyValue) => {
@@ -121,53 +350,6 @@ class UniversalService {
121
350
  return promise;
122
351
  }
123
352
  }
124
- const _WjePermissionsApi = class _WjePermissionsApi {
125
- /**
126
- * Sets the permission key.
127
- * @param value
128
- */
129
- static set permissionKey(value) {
130
- _WjePermissionsApi._permissionKey = value || "permissions";
131
- }
132
- /**
133
- * Returns the permission key.
134
- * @returns {*|string}
135
- */
136
- static get permissionKey() {
137
- return _WjePermissionsApi._permissionKey;
138
- }
139
- /**
140
- * Sets the permissions.
141
- * @param value
142
- */
143
- static set permissions(value) {
144
- window.localStorage.setItem(_WjePermissionsApi.permissionKey, JSON.stringify(value));
145
- }
146
- /**
147
- * Returns the permissions.
148
- * @returns {string[]}
149
- */
150
- static get permissions() {
151
- return JSON.parse(window.localStorage.getItem(_WjePermissionsApi.permissionKey)) || [];
152
- }
153
- /**
154
- * Checks if the permission is included.
155
- * @param key
156
- * @returns {boolean}
157
- */
158
- static includesKey(key) {
159
- return _WjePermissionsApi.permissions.includes(key);
160
- }
161
- /**
162
- * Checks if the permission is fulfilled.
163
- * @returns {boolean}
164
- */
165
- static isPermissionFulfilled(permissions) {
166
- return permissions.some((perm) => _WjePermissionsApi.permissions.includes(perm));
167
- }
168
- };
169
- __publicField(_WjePermissionsApi, "_permissionKey", "permissions");
170
- let WjePermissionsApi = _WjePermissionsApi;
171
353
  class WjElementUtils {
172
354
  /**
173
355
  * This function creates an element.
@@ -259,186 +441,6 @@ class WjElementUtils {
259
441
  return !["false", "0", 0].includes(value);
260
442
  }
261
443
  }
262
- var self;
263
- class Event {
264
- constructor() {
265
- __privateAdd(this, _Event_instances);
266
- this.customEventWeakMap = /* @__PURE__ */ new WeakMap();
267
- self = this;
268
- }
269
- /**
270
- * Dispatch custom event to the element with the specified event name and detail.
271
- * @param element
272
- * @param event
273
- * @param detail
274
- */
275
- dispatchCustomEvent(element, event2, detail) {
276
- element.dispatchEvent(
277
- new CustomEvent(event2, {
278
- detail: detail || {
279
- context: element,
280
- event: self
281
- },
282
- bubbles: true,
283
- composed: true,
284
- cancelable: true
285
- })
286
- );
287
- }
288
- /**
289
- * Find record by element in the storage.
290
- * @param element
291
- * @returns {*}
292
- */
293
- findRecordByElement(element) {
294
- return this.customEventWeakMap.get(element);
295
- }
296
- /**
297
- * Add listener to the element. If the element is an array, the listener will be added to all elements in the array.
298
- * @param element
299
- * @param originalEvent
300
- * @param event
301
- * @param listener
302
- * @param options
303
- */
304
- addListener(element, originalEvent, event2, listener, options) {
305
- if (!element) return;
306
- if (!Array.isArray(element)) element = [element];
307
- element.forEach((el) => {
308
- this.writeRecord(el, originalEvent, event2, listener, options);
309
- });
310
- }
311
- /**
312
- * Write record to the storage.
313
- * @param element
314
- * @param originalEvent
315
- * @param event
316
- * @param listener
317
- * @param options
318
- */
319
- writeRecord(element, originalEvent, event2, listener, options) {
320
- let recordListeners = this.findRecordByElement(element);
321
- if (!recordListeners) {
322
- this.customEventWeakMap.set(element, {
323
- [originalEvent]: []
324
- });
325
- recordListeners = this.findRecordByElement(element);
326
- } else {
327
- recordListeners[originalEvent] = recordListeners[originalEvent] || [];
328
- }
329
- listener = listener || __privateMethod(this, _Event_instances, dispatch_fn);
330
- let obj = {
331
- listener,
332
- options,
333
- event: event2
334
- };
335
- if (!this.isRecordExists(recordListeners[originalEvent], obj)) {
336
- if (!this.listenerExists(recordListeners[originalEvent], obj)) {
337
- element.addEventListener(originalEvent, listener, options);
338
- obj.unbind = () => {
339
- element.removeEventListener(originalEvent, listener, options);
340
- };
341
- }
342
- recordListeners[originalEvent].push(obj);
343
- }
344
- }
345
- /**
346
- * Performs a deep equality check between two objects.
347
- * @param x The first object to compare.
348
- * @param y The second object to compare.
349
- * @returns - Returns `true` if the objects are deeply equal, `false` otherwise.
350
- */
351
- deepEqual(x, y) {
352
- return x && y && typeof x === "object" && typeof x === typeof y ? Object.keys(x).length === Object.keys(y).length && Object.keys(x).every((key) => this.deepEqual(x[key], y[key])) : x === y;
353
- }
354
- /**
355
- * Check if the listener already exists on the element.
356
- * @param records
357
- * @param eventObj
358
- * @returns
359
- */
360
- listenerExists(records, eventObj) {
361
- return records.some((e) => e.listener === eventObj.listener);
362
- }
363
- isRecordExists(records, eventObj) {
364
- return records.some((e) => this.deepEqual(e, eventObj));
365
- }
366
- /**
367
- * Remove listener from the element and delete the listener from the custom event storage.
368
- * @param element
369
- * @param originalEvent
370
- * @param event
371
- * @param listener
372
- * @param options
373
- */
374
- removeListener(element, originalEvent, event2, listener, options) {
375
- let records = this.findRecordByElement(element);
376
- let listeners = records == null ? void 0 : records[originalEvent];
377
- listener = listener || __privateMethod(this, _Event_instances, dispatch_fn);
378
- if (listeners) {
379
- let listenerOfWeakMap = listeners.find((e) => e.listener === listener);
380
- if (listenerOfWeakMap) {
381
- listeners.splice(listeners.indexOf(listenerOfWeakMap), 1);
382
- }
383
- if (!listeners.length) {
384
- delete records[originalEvent];
385
- element == null ? void 0 : element.removeEventListener(originalEvent, listener, options);
386
- }
387
- }
388
- }
389
- /**
390
- * Remove all event listeners from the specified element and delete the element from the custom event storage.
391
- * @param {HTMLElement} element The element from which all listeners will be removed.
392
- */
393
- removeElement(element) {
394
- let listeners = this.customEventWeakMap.get(element);
395
- if (listeners) {
396
- queueMicrotask(() => {
397
- for (let event2 in listeners) {
398
- listeners[event2].forEach((e) => {
399
- element.removeEventListener(event2, e.listener, e.options);
400
- e.unbind();
401
- });
402
- }
403
- this.customEventWeakMap.delete(element);
404
- });
405
- }
406
- }
407
- // TODO
408
- createPromiseFromEvent(element, event2) {
409
- return new Promise((resolve) => {
410
- let success = () => {
411
- element.removeEventListener(event2, success);
412
- resolve();
413
- };
414
- element.addEventListener(event2, success);
415
- });
416
- }
417
- }
418
- _Event_instances = new WeakSet();
419
- /**
420
- * Dispatch event to the element and trigger the listener.
421
- * @param e
422
- */
423
- dispatch_fn = function(e) {
424
- let element = this;
425
- let record = self.customEventWeakMap.get(this);
426
- if (!record) return;
427
- let listeners = record[e.type];
428
- listeners.forEach((listener) => {
429
- self.dispatchCustomEvent(element, listener.event, {
430
- originalEvent: (e == null ? void 0 : e.type) || null,
431
- context: element,
432
- event: self
433
- });
434
- if (listener.options && listener.options.stopPropagation === true) {
435
- e.stopPropagation();
436
- e.stopImmediatePropagation();
437
- e.preventDefault();
438
- }
439
- });
440
- };
441
- let event = new Event();
442
444
  const template = document.createElement("template");
443
445
  template.innerHTML = ``;
444
446
  const _WJElement = class _WJElement extends HTMLElement {
@@ -814,7 +816,7 @@ const _WJElement = class _WJElement extends HTMLElement {
814
816
  [...this.context.childNodes].forEach(this.context.removeChild.bind(this.context));
815
817
  }
816
818
  this.context.append(this.template.content.cloneNode(true));
817
- if (this.noShow || this.isPermissionCheck && !WjePermissionsApi.isPermissionFulfilled(this.permission)) {
819
+ if (this.noShow || this.isPermissionCheck && !Permissions.isPermissionFulfilled(this.permission)) {
818
820
  this.remove();
819
821
  return Promise.resolve();
820
822
  }
@@ -990,8 +992,8 @@ __publicField(_WJElement, "processTemplates", (pTemplate, inputTemplate) => {
990
992
  let WJElement = _WJElement;
991
993
  let __esModule = "true";
992
994
  export {
995
+ Permissions,
993
996
  WjElementUtils,
994
- WjePermissionsApi,
995
997
  __esModule,
996
998
  WJElement as default,
997
999
  event