wj-elements 0.7.7 → 0.8.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 (233) hide show
  1. package/dist/animations.js +28 -51
  2. package/dist/animations.js.map +1 -1
  3. package/dist/base-path.js +19 -31
  4. package/dist/base-path.js.map +1 -1
  5. package/dist/custom-elements.json +11504 -11499
  6. package/dist/dark.css +1 -302
  7. package/dist/date.js +16 -36
  8. package/dist/date.js.map +1 -1
  9. package/dist/element-utils.js +20 -81
  10. package/dist/element-utils.js.map +1 -1
  11. package/dist/event.js +49 -165
  12. package/dist/event.js.map +1 -1
  13. package/dist/form-associated-element-BjeJn7j8.js +101 -0
  14. package/dist/{form-associated-element-DEQ4y-jn.js.map → form-associated-element-BjeJn7j8.js.map} +1 -1
  15. package/dist/icon-DmsqtDpL.js +102 -0
  16. package/dist/{icon-CReYMzAK.js.map → icon-DmsqtDpL.js.map} +1 -1
  17. package/dist/light.css +1 -731
  18. package/dist/localize.js +36 -111
  19. package/dist/localize.js.map +1 -1
  20. package/dist/packages/wje-accordion-item/accordion-item.element.d.ts +3 -2
  21. package/dist/permissions.js +14 -41
  22. package/dist/permissions.js.map +1 -1
  23. package/dist/popup.element-CbkhthPP.js +806 -0
  24. package/dist/{popup.element-CwXvVFK7.js.map → popup.element-CbkhthPP.js.map} +1 -1
  25. package/dist/router-links-CNsJ-elb.js +105 -0
  26. package/dist/{router-links-wjqCnncc.js.map → router-links-CNsJ-elb.js.map} +1 -1
  27. package/dist/skeleton.css +1 -197
  28. package/dist/styles.css +1 -866
  29. package/dist/universal-service.js +48 -109
  30. package/dist/universal-service.js.map +1 -1
  31. package/dist/utils.js +11 -18
  32. package/dist/utils.js.map +1 -1
  33. package/dist/web-types.json +760 -760
  34. package/dist/wje-accordion-item.js +33 -106
  35. package/dist/wje-accordion-item.js.map +1 -1
  36. package/dist/wje-accordion.js +19 -84
  37. package/dist/wje-accordion.js.map +1 -1
  38. package/dist/wje-animation.js +37 -4258
  39. package/dist/wje-animation.js.map +1 -1
  40. package/dist/wje-aside.js +9 -34
  41. package/dist/wje-aside.js.map +1 -1
  42. package/dist/wje-avatar.js +36 -126
  43. package/dist/wje-avatar.js.map +1 -1
  44. package/dist/wje-badge.js +10 -52
  45. package/dist/wje-badge.js.map +1 -1
  46. package/dist/wje-breadcrumb.js +205 -672
  47. package/dist/wje-breadcrumb.js.map +1 -1
  48. package/dist/wje-breadcrumbs.js +177 -633
  49. package/dist/wje-breadcrumbs.js.map +1 -1
  50. package/dist/wje-button-group.js +48 -153
  51. package/dist/wje-button-group.js.map +1 -1
  52. package/dist/wje-button.js +92 -413
  53. package/dist/wje-button.js.map +1 -1
  54. package/dist/wje-card-content.js +7 -30
  55. package/dist/wje-card-content.js.map +1 -1
  56. package/dist/wje-card-controls.js +7 -30
  57. package/dist/wje-card-controls.js.map +1 -1
  58. package/dist/wje-card-header.js +7 -30
  59. package/dist/wje-card-header.js.map +1 -1
  60. package/dist/wje-card-subtitle.js +7 -34
  61. package/dist/wje-card-subtitle.js.map +1 -1
  62. package/dist/wje-card-title.js +7 -34
  63. package/dist/wje-card-title.js.map +1 -1
  64. package/dist/wje-card.js +15 -71
  65. package/dist/wje-card.js.map +1 -1
  66. package/dist/wje-carousel-item.js +12 -56
  67. package/dist/wje-carousel-item.js.map +1 -1
  68. package/dist/wje-carousel.js +154 -509
  69. package/dist/wje-carousel.js.map +1 -1
  70. package/dist/wje-checkbox.js +50 -227
  71. package/dist/wje-checkbox.js.map +1 -1
  72. package/dist/wje-chip.js +43 -160
  73. package/dist/wje-chip.js.map +1 -1
  74. package/dist/wje-col.js +7 -20
  75. package/dist/wje-col.js.map +1 -1
  76. package/dist/wje-color-picker.js +445 -1464
  77. package/dist/wje-color-picker.js.map +1 -1
  78. package/dist/wje-container.js +9 -35
  79. package/dist/wje-container.js.map +1 -1
  80. package/dist/wje-copy-button.js +64 -204
  81. package/dist/wje-copy-button.js.map +1 -1
  82. package/dist/wje-dialog.js +85 -553
  83. package/dist/wje-dialog.js.map +1 -1
  84. package/dist/wje-divider.js +7 -34
  85. package/dist/wje-divider.js.map +1 -1
  86. package/dist/wje-dropdown.js +78 -305
  87. package/dist/wje-dropdown.js.map +1 -1
  88. package/dist/wje-element.js +191 -700
  89. package/dist/wje-element.js.map +1 -1
  90. package/dist/wje-file-upload-item.js +51 -156
  91. package/dist/wje-file-upload-item.js.map +1 -1
  92. package/dist/wje-file-upload.js +181 -619
  93. package/dist/wje-file-upload.js.map +1 -1
  94. package/dist/wje-footer.js +7 -31
  95. package/dist/wje-footer.js.map +1 -1
  96. package/dist/wje-form.js +7 -32
  97. package/dist/wje-form.js.map +1 -1
  98. package/dist/wje-format-digital.js +26 -118
  99. package/dist/wje-format-digital.js.map +1 -1
  100. package/dist/wje-grid.js +7 -33
  101. package/dist/wje-grid.js.map +1 -1
  102. package/dist/wje-header.js +9 -35
  103. package/dist/wje-header.js.map +1 -1
  104. package/dist/wje-icon-library.js +12 -18
  105. package/dist/wje-icon-library.js.map +1 -1
  106. package/dist/wje-icon-picker.js +65 -320
  107. package/dist/wje-icon-picker.js.map +1 -1
  108. package/dist/wje-icon.js +1 -1
  109. package/dist/wje-img-comparer.js +37 -114
  110. package/dist/wje-img-comparer.js.map +1 -1
  111. package/dist/wje-img.js +50 -198
  112. package/dist/wje-img.js.map +1 -1
  113. package/dist/wje-infinite-scroll.js +94 -346
  114. package/dist/wje-infinite-scroll.js.map +1 -1
  115. package/dist/wje-input-file.js +23 -84
  116. package/dist/wje-input-file.js.map +1 -1
  117. package/dist/wje-input.js +78 -392
  118. package/dist/wje-input.js.map +1 -1
  119. package/dist/wje-item.js +11 -64
  120. package/dist/wje-item.js.map +1 -1
  121. package/dist/wje-kanban.js +124 -401
  122. package/dist/wje-kanban.js.map +1 -1
  123. package/dist/wje-label.js +9 -32
  124. package/dist/wje-label.js.map +1 -1
  125. package/dist/wje-level-indicator.js +38 -157
  126. package/dist/wje-level-indicator.js.map +1 -1
  127. package/dist/wje-list.js +10 -40
  128. package/dist/wje-list.js.map +1 -1
  129. package/dist/wje-main.js +7 -31
  130. package/dist/wje-main.js.map +1 -1
  131. package/dist/wje-masonry.js +66 -211
  132. package/dist/wje-masonry.js.map +1 -1
  133. package/dist/wje-master.js +45 -161
  134. package/dist/wje-master.js.map +1 -1
  135. package/dist/wje-menu-button.js +10 -38
  136. package/dist/wje-menu-button.js.map +1 -1
  137. package/dist/wje-menu-item.js +127 -577
  138. package/dist/wje-menu-item.js.map +1 -1
  139. package/dist/wje-menu-label.js +9 -35
  140. package/dist/wje-menu-label.js.map +1 -1
  141. package/dist/wje-menu.js +14 -49
  142. package/dist/wje-menu.js.map +1 -1
  143. package/dist/wje-option.js +48 -279
  144. package/dist/wje-option.js.map +1 -1
  145. package/dist/wje-options.js +130 -384
  146. package/dist/wje-options.js.map +1 -1
  147. package/dist/wje-orgchart-group.js +16 -52
  148. package/dist/wje-orgchart-group.js.map +1 -1
  149. package/dist/wje-orgchart-item.js +24 -93
  150. package/dist/wje-orgchart-item.js.map +1 -1
  151. package/dist/wje-orgchart.js +18 -68
  152. package/dist/wje-orgchart.js.map +1 -1
  153. package/dist/wje-pagination.js +113 -397
  154. package/dist/wje-pagination.js.map +1 -1
  155. package/dist/wje-popup.js +3 -3
  156. package/dist/wje-popup.js.map +1 -1
  157. package/dist/wje-progress-bar.js +53 -205
  158. package/dist/wje-progress-bar.js.map +1 -1
  159. package/dist/wje-qr-code.js +398 -2980
  160. package/dist/wje-qr-code.js.map +1 -1
  161. package/dist/wje-radio-group.js +52 -190
  162. package/dist/wje-radio-group.js.map +1 -1
  163. package/dist/wje-radio.js +24 -118
  164. package/dist/wje-radio.js.map +1 -1
  165. package/dist/wje-rate.js +62 -266
  166. package/dist/wje-rate.js.map +1 -1
  167. package/dist/wje-relative-time.js +24 -99
  168. package/dist/wje-relative-time.js.map +1 -1
  169. package/dist/wje-reorder-dropzone.js +9 -31
  170. package/dist/wje-reorder-dropzone.js.map +1 -1
  171. package/dist/wje-reorder-handle.js +67 -204
  172. package/dist/wje-reorder-handle.js.map +1 -1
  173. package/dist/wje-reorder-item.js +14 -44
  174. package/dist/wje-reorder-item.js.map +1 -1
  175. package/dist/wje-reorder.js +61 -246
  176. package/dist/wje-reorder.js.map +1 -1
  177. package/dist/wje-route.js +6 -24
  178. package/dist/wje-route.js.map +1 -1
  179. package/dist/wje-router-link.js +11 -39
  180. package/dist/wje-router-link.js.map +1 -1
  181. package/dist/wje-router-outlet.js +76 -172
  182. package/dist/wje-router-outlet.js.map +1 -1
  183. package/dist/wje-routerx.js +537 -1331
  184. package/dist/wje-routerx.js.map +1 -1
  185. package/dist/wje-row.js +9 -31
  186. package/dist/wje-row.js.map +1 -1
  187. package/dist/wje-select.js +326 -1152
  188. package/dist/wje-select.js.map +1 -1
  189. package/dist/wje-slider.js +44 -225
  190. package/dist/wje-slider.js.map +1 -1
  191. package/dist/wje-sliding-container.js +295 -1319
  192. package/dist/wje-sliding-container.js.map +1 -1
  193. package/dist/wje-split-view.js +35 -121
  194. package/dist/wje-split-view.js.map +1 -1
  195. package/dist/wje-status.js +14 -45
  196. package/dist/wje-status.js.map +1 -1
  197. package/dist/wje-step.js +9 -32
  198. package/dist/wje-step.js.map +1 -1
  199. package/dist/wje-stepper.js +109 -357
  200. package/dist/wje-stepper.js.map +1 -1
  201. package/dist/wje-store.js +67 -360
  202. package/dist/wje-store.js.map +1 -1
  203. package/dist/wje-tab-group.js +85 -314
  204. package/dist/wje-tab-group.js.map +1 -1
  205. package/dist/wje-tab-panel.js +7 -28
  206. package/dist/wje-tab-panel.js.map +1 -1
  207. package/dist/wje-tab.js +21 -198
  208. package/dist/wje-tab.js.map +1 -1
  209. package/dist/wje-textarea.js +64 -264
  210. package/dist/wje-textarea.js.map +1 -1
  211. package/dist/wje-thumbnail.js +10 -51
  212. package/dist/wje-thumbnail.js.map +1 -1
  213. package/dist/wje-toast.js +127 -632
  214. package/dist/wje-toast.js.map +1 -1
  215. package/dist/wje-toggle.js +52 -177
  216. package/dist/wje-toggle.js.map +1 -1
  217. package/dist/wje-toolbar-action.js +128 -456
  218. package/dist/wje-toolbar-action.js.map +1 -1
  219. package/dist/wje-toolbar.js +75 -270
  220. package/dist/wje-toolbar.js.map +1 -1
  221. package/dist/wje-tooltip.js +50 -161
  222. package/dist/wje-tooltip.js.map +1 -1
  223. package/dist/wje-tree-item.js +70 -301
  224. package/dist/wje-tree-item.js.map +1 -1
  225. package/dist/wje-tree.js +145 -489
  226. package/dist/wje-tree.js.map +1 -1
  227. package/dist/wje-visually-hidden.js +7 -34
  228. package/dist/wje-visually-hidden.js.map +1 -1
  229. package/package.json +3 -2
  230. package/dist/form-associated-element-DEQ4y-jn.js +0 -245
  231. package/dist/icon-CReYMzAK.js +0 -245
  232. package/dist/popup.element-CwXvVFK7.js +0 -2133
  233. package/dist/router-links-wjqCnncc.js +0 -156
package/dist/event.js CHANGED
@@ -4,188 +4,72 @@ var __typeError = (msg) => {
4
4
  var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
5
5
  var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
6
6
  var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
7
- var _Event_instances, dispatch_fn;
8
- var self;
9
- class Event {
7
+ var _instances, e_fn, _a;
8
+ var e;
9
+ let t = new (_a = class {
10
10
  constructor() {
11
- __privateAdd(this, _Event_instances);
12
- this.customEventWeakMap = /* @__PURE__ */ new WeakMap();
13
- self = this;
11
+ __privateAdd(this, _instances);
12
+ this.customEventWeakMap = /* @__PURE__ */ new WeakMap(), e = this;
14
13
  }
15
- /**
16
- * Dispatch custom event to the element with the specified event name and detail.
17
- * @param element
18
- * @param event
19
- * @param detail
20
- */
21
- dispatchCustomEvent(element, event2, detail) {
22
- element.dispatchEvent(
23
- new CustomEvent(event2, {
24
- detail: detail || {
25
- context: element,
26
- event: self
27
- },
28
- bubbles: true,
29
- composed: true,
30
- cancelable: true
31
- })
32
- );
14
+ dispatchCustomEvent(t2, s, n) {
15
+ t2.dispatchEvent(new CustomEvent(s, { detail: n || { context: t2, event: e }, bubbles: true, composed: true, cancelable: true }));
33
16
  }
34
- /**
35
- * Find record by element in the storage.
36
- * @param element
37
- * @returns {*}
38
- */
39
- findRecordByElement(element) {
40
- return this.customEventWeakMap.get(element);
17
+ findRecordByElement(e2) {
18
+ return this.customEventWeakMap.get(e2);
41
19
  }
42
- /**
43
- * Add listener to the element. If the element is an array, the listener will be added to all elements in the array.
44
- * @param element
45
- * @param originalEvent
46
- * @param event
47
- * @param listener
48
- * @param options
49
- */
50
- addListener(element, originalEvent, event2, listener, options) {
51
- if (!element) return;
52
- if (!Array.isArray(element)) element = [element];
53
- element.forEach((el) => {
54
- this.writeRecord(el, originalEvent, event2, listener, options);
55
- });
20
+ addListener(e2, t2, s, n, i) {
21
+ e2 && (Array.isArray(e2) || (e2 = [e2]), e2.forEach((e3) => {
22
+ this.writeRecord(e3, t2, s, n, i);
23
+ }));
56
24
  }
57
- /**
58
- * Write record to the storage.
59
- * @param element
60
- * @param originalEvent
61
- * @param event
62
- * @param listener
63
- * @param options
64
- */
65
- writeRecord(element, originalEvent, event2, listener, options) {
66
- let recordListeners = this.findRecordByElement(element);
67
- if (!recordListeners) {
68
- this.customEventWeakMap.set(element, {
69
- [originalEvent]: []
70
- });
71
- recordListeners = this.findRecordByElement(element);
72
- } else {
73
- recordListeners[originalEvent] = recordListeners[originalEvent] || [];
74
- }
75
- listener = listener || __privateMethod(this, _Event_instances, dispatch_fn);
76
- let obj = {
77
- listener,
78
- options,
79
- event: event2
80
- };
81
- if (!this.isRecordExists(recordListeners[originalEvent], obj)) {
82
- if (!this.listenerExists(recordListeners[originalEvent], obj)) {
83
- element.addEventListener(originalEvent, listener, options);
84
- obj.unbind = () => {
85
- element.removeEventListener(originalEvent, listener, options);
86
- };
87
- }
88
- recordListeners[originalEvent].push(obj);
89
- }
25
+ writeRecord(e2, t2, s, n, i) {
26
+ let r = this.findRecordByElement(e2);
27
+ r ? r[t2] = r[t2] || [] : (this.customEventWeakMap.set(e2, { [t2]: [] }), r = this.findRecordByElement(e2));
28
+ let o = { listener: n = n || __privateMethod(this, _instances, e_fn), options: i, event: s };
29
+ this.isRecordExists(r[t2], o) || (this.listenerExists(r[t2], o) || (e2.addEventListener(t2, n, i), o.unbind = () => {
30
+ e2.removeEventListener(t2, n, i);
31
+ }), r[t2].push(o));
90
32
  }
91
- /**
92
- * Performs a deep equality check between two objects.
93
- * @param x The first object to compare.
94
- * @param y The second object to compare.
95
- * @returns - Returns `true` if the objects are deeply equal, `false` otherwise.
96
- */
97
- deepEqual(x, y) {
98
- 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;
33
+ deepEqual(e2, t2) {
34
+ return e2 && t2 && "object" == typeof e2 && typeof e2 == typeof t2 ? Object.keys(e2).length === Object.keys(t2).length && Object.keys(e2).every((s) => this.deepEqual(e2[s], t2[s])) : e2 === t2;
99
35
  }
100
- /**
101
- * Check if the listener already exists on the element.
102
- * @param records
103
- * @param eventObj
104
- * @returns
105
- */
106
- listenerExists(records, eventObj) {
107
- return records.some((e) => e.listener === eventObj.listener);
36
+ listenerExists(e2, t2) {
37
+ return e2.some((e3) => e3.listener === t2.listener);
108
38
  }
109
- isRecordExists(records, eventObj) {
110
- return records.some((e) => this.deepEqual(e, eventObj));
39
+ isRecordExists(e2, t2) {
40
+ return e2.some((e3) => this.deepEqual(e3, t2));
111
41
  }
112
- /**
113
- * Remove listener from the element and delete the listener from the custom event storage.
114
- * @param element
115
- * @param originalEvent
116
- * @param event
117
- * @param listener
118
- * @param options
119
- */
120
- removeListener(element, originalEvent, event2, listener, options) {
121
- let records = this.findRecordByElement(element);
122
- let listeners = records == null ? void 0 : records[originalEvent];
123
- listener = listener || __privateMethod(this, _Event_instances, dispatch_fn);
124
- if (listeners) {
125
- let listenerOfWeakMap = listeners.find((e) => e.listener === listener);
126
- if (listenerOfWeakMap) {
127
- listeners.splice(listeners.indexOf(listenerOfWeakMap), 1);
128
- }
129
- if (!listeners.length) {
130
- delete records[originalEvent];
131
- element == null ? void 0 : element.removeEventListener(originalEvent, listener, options);
132
- }
42
+ removeListener(e2, t2, s, n, i) {
43
+ let r = this.findRecordByElement(e2), o = r == null ? void 0 : r[t2];
44
+ if (n = n || __privateMethod(this, _instances, e_fn), o) {
45
+ let s2 = o.find((e3) => e3.listener === n);
46
+ s2 && o.splice(o.indexOf(s2), 1), o.length || (delete r[t2], e2 == null ? void 0 : e2.removeEventListener(t2, n, i));
133
47
  }
134
48
  }
135
- /**
136
- * Remove all event listeners from the specified element and delete the element from the custom event storage.
137
- * @param {HTMLElement} element The element from which all listeners will be removed.
138
- */
139
- removeElement(element) {
140
- let listeners = this.customEventWeakMap.get(element);
141
- if (listeners) {
142
- queueMicrotask(() => {
143
- for (let event2 in listeners) {
144
- listeners[event2].forEach((e) => {
145
- element.removeEventListener(event2, e.listener, e.options);
146
- e.unbind();
147
- });
148
- }
149
- this.customEventWeakMap.delete(element);
49
+ removeElement(e2) {
50
+ let t2 = this.customEventWeakMap.get(e2);
51
+ t2 && queueMicrotask(() => {
52
+ for (let s in t2) t2[s].forEach((t3) => {
53
+ e2.removeEventListener(s, t3.listener, t3.options), t3.unbind();
150
54
  });
151
- }
55
+ this.customEventWeakMap.delete(e2);
56
+ });
152
57
  }
153
- // TODO
154
- createPromiseFromEvent(element, event2) {
155
- return new Promise((resolve) => {
156
- let success = () => {
157
- element.removeEventListener(event2, success);
158
- resolve();
58
+ createPromiseFromEvent(e2, t2) {
59
+ return new Promise((s) => {
60
+ let n = () => {
61
+ e2.removeEventListener(t2, n), s();
159
62
  };
160
- element.addEventListener(event2, success);
63
+ e2.addEventListener(t2, n);
161
64
  });
162
65
  }
163
- }
164
- _Event_instances = new WeakSet();
165
- /**
166
- * Dispatch event to the element and trigger the listener.
167
- * @param e
168
- */
169
- dispatch_fn = function(e) {
170
- let element = this;
171
- let record = self.customEventWeakMap.get(this);
172
- if (!record) return;
173
- let listeners = record[e.type];
174
- listeners.forEach((listener) => {
175
- self.dispatchCustomEvent(element, listener.event, {
176
- originalEvent: (e == null ? void 0 : e.type) || null,
177
- context: element,
178
- event: self
179
- });
180
- if (listener.options && listener.options.stopPropagation === true) {
181
- e.stopPropagation();
182
- e.stopImmediatePropagation();
183
- e.preventDefault();
184
- }
66
+ }, _instances = new WeakSet(), e_fn = function(t2) {
67
+ let s = this, n = e.customEventWeakMap.get(this);
68
+ n && n[t2.type].forEach((n2) => {
69
+ e.dispatchCustomEvent(s, n2.event, { originalEvent: (t2 == null ? void 0 : t2.type) || null, context: s, event: e }), n2.options && true === n2.options.stopPropagation && (t2.stopPropagation(), t2.stopImmediatePropagation(), t2.preventDefault());
185
70
  });
186
- };
187
- let event = new Event();
71
+ }, _a)();
188
72
  export {
189
- event
73
+ t as event
190
74
  };
191
75
  //# sourceMappingURL=event.js.map
package/dist/event.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"event.js","sources":["../packages/utils/event.js"],"sourcesContent":["var self; // eslint-disable-line no-var\n\nclass Event {\n constructor() {\n this.customEventWeakMap = new WeakMap();\n self = this;\n }\n\n /**\n * Dispatch event to the element and trigger the listener.\n * @param e\n */\n #dispatch(e) {\n let element = this;\n // let record = self.findRecordByElement(element);\n let record = self.customEventWeakMap.get(this);\n\n if (!record) return;\n\n let listeners = record[e.type];\n\n listeners.forEach((listener) => {\n self.dispatchCustomEvent(element, listener.event, {\n originalEvent: e?.type || null,\n context: element,\n event: self,\n });\n\n if (listener.options && listener.options.stopPropagation === true) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n e.preventDefault();\n }\n });\n }\n\n /**\n * Dispatch custom event to the element with the specified event name and detail.\n * @param element\n * @param event\n * @param detail\n */\n dispatchCustomEvent(element, event, detail) {\n element.dispatchEvent(\n new CustomEvent(event, {\n detail: detail || {\n context: element,\n event: self,\n },\n bubbles: true,\n composed: true,\n cancelable: true,\n })\n );\n }\n\n /**\n * Find record by element in the storage.\n * @param element\n * @returns {*}\n */\n\n findRecordByElement(element) {\n return this.customEventWeakMap.get(element);\n }\n\n /**\n * Add listener to the element. If the element is an array, the listener will be added to all elements in the array.\n * @param element\n * @param originalEvent\n * @param event\n * @param listener\n * @param options\n */\n addListener(element, originalEvent, event, listener, options) {\n if (!element) return;\n\n if (!Array.isArray(element)) element = [element];\n\n element.forEach((el) => {\n this.writeRecord(el, originalEvent, event, listener, options);\n });\n }\n\n /**\n * Write record to the storage.\n * @param element\n * @param originalEvent\n * @param event\n * @param listener\n * @param options\n */\n writeRecord(element, originalEvent, event, listener, options) {\n let recordListeners = this.findRecordByElement(element);\n\n if (!recordListeners) {\n this.customEventWeakMap.set(element, {\n [originalEvent]: [],\n });\n\n recordListeners = this.findRecordByElement(element);\n } else {\n recordListeners[originalEvent] = recordListeners[originalEvent] || [];\n }\n\n listener = listener || this.#dispatch;\n let obj = {\n listener: listener,\n options: options,\n event: event,\n };\n\n // skontrolujeme ci uz tento listener neexistuje\n if (!this.isRecordExists(recordListeners[originalEvent], obj)) {\n if (!this.listenerExists(recordListeners[originalEvent], obj)) {\n element.addEventListener(originalEvent, listener, options);\n obj.unbind = () => {\n element.removeEventListener(originalEvent, listener, options);\n };\n }\n\n recordListeners[originalEvent].push(obj);\n\n } else {\n // in case we want to add the same listener multiple times trigger a warning for a better debugging\n //console.info(\"Listener already exists\", element, originalEvent);\n }\n }\n\n /**\n * Performs a deep equality check between two objects.\n * @param x The first object to compare.\n * @param y The second object to compare.\n * @returns - Returns `true` if the objects are deeply equal, `false` otherwise.\n */\n deepEqual(x, y) {\n return x && y && typeof x === 'object' && typeof x === typeof y\n ? Object.keys(x).length === Object.keys(y).length &&\n Object.keys(x).every((key) => this.deepEqual(x[key], y[key]))\n : x === y;\n }\n\n /**\n * Check if the listener already exists on the element.\n * @param records\n * @param eventObj\n * @returns\n */\n listenerExists(records, eventObj) {\n return records.some((e) => e.listener === eventObj.listener);\n }\n\n isRecordExists(records, eventObj) {\n return records.some((e) => this.deepEqual(e, eventObj))\n }\n\n /**\n * Remove listener from the element and delete the listener from the custom event storage.\n * @param element\n * @param originalEvent\n * @param event\n * @param listener\n * @param options\n */\n removeListener(element, originalEvent, event, listener, options) {\n let records = this.findRecordByElement(element);\n let listeners = records?.[originalEvent];\n listener = listener || this.#dispatch;\n\n if (listeners) {\n let listenerOfWeakMap = listeners.find((e) => e.listener === listener);\n\n if (listenerOfWeakMap) {\n listeners.splice(listeners.indexOf(listenerOfWeakMap), 1);\n }\n\n if (!listeners.length) {\n delete records[originalEvent];\n element?.removeEventListener(originalEvent, listener, options);\n }\n }\n }\n\n /**\n * Remove all event listeners from the specified element and delete the element from the custom event storage.\n * @param {HTMLElement} element The element from which all listeners will be removed.\n */\n removeElement(element) {\n // remove all listeners from the element\n let listeners = this.customEventWeakMap.get(element);\n if (listeners) {\n queueMicrotask(() => {\n for (let event in listeners) {\n listeners[event].forEach((e) => {\n element.removeEventListener(event, e.listener, e.options);\n e.unbind();\n });\n }\n\n this.customEventWeakMap.delete(element);\n });\n }\n }\n\n // TODO\n createPromiseFromEvent(element, event) {\n return new Promise((resolve) => {\n let success = () => {\n element.removeEventListener(event, success);\n resolve();\n };\n\n element.addEventListener(event, success);\n });\n }\n}\n\nlet event = new Event();\nexport { event };\n"],"names":["event"],"mappings":"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"}
1
+ {"version":3,"file":"event.js","sources":["../packages/utils/event.js"],"sourcesContent":["var self; // eslint-disable-line no-var\n\nclass Event {\n constructor() {\n this.customEventWeakMap = new WeakMap();\n self = this;\n }\n\n /**\n * Dispatch event to the element and trigger the listener.\n * @param e\n */\n #dispatch(e) {\n let element = this;\n // let record = self.findRecordByElement(element);\n let record = self.customEventWeakMap.get(this);\n\n if (!record) return;\n\n let listeners = record[e.type];\n\n listeners.forEach((listener) => {\n self.dispatchCustomEvent(element, listener.event, {\n originalEvent: e?.type || null,\n context: element,\n event: self,\n });\n\n if (listener.options && listener.options.stopPropagation === true) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n e.preventDefault();\n }\n });\n }\n\n /**\n * Dispatch custom event to the element with the specified event name and detail.\n * @param element\n * @param event\n * @param detail\n */\n dispatchCustomEvent(element, event, detail) {\n element.dispatchEvent(\n new CustomEvent(event, {\n detail: detail || {\n context: element,\n event: self,\n },\n bubbles: true,\n composed: true,\n cancelable: true,\n })\n );\n }\n\n /**\n * Find record by element in the storage.\n * @param element\n * @returns {*}\n */\n\n findRecordByElement(element) {\n return this.customEventWeakMap.get(element);\n }\n\n /**\n * Add listener to the element. If the element is an array, the listener will be added to all elements in the array.\n * @param element\n * @param originalEvent\n * @param event\n * @param listener\n * @param options\n */\n addListener(element, originalEvent, event, listener, options) {\n if (!element) return;\n\n if (!Array.isArray(element)) element = [element];\n\n element.forEach((el) => {\n this.writeRecord(el, originalEvent, event, listener, options);\n });\n }\n\n /**\n * Write record to the storage.\n * @param element\n * @param originalEvent\n * @param event\n * @param listener\n * @param options\n */\n writeRecord(element, originalEvent, event, listener, options) {\n let recordListeners = this.findRecordByElement(element);\n\n if (!recordListeners) {\n this.customEventWeakMap.set(element, {\n [originalEvent]: [],\n });\n\n recordListeners = this.findRecordByElement(element);\n } else {\n recordListeners[originalEvent] = recordListeners[originalEvent] || [];\n }\n\n listener = listener || this.#dispatch;\n let obj = {\n listener: listener,\n options: options,\n event: event,\n };\n\n // skontrolujeme ci uz tento listener neexistuje\n if (!this.isRecordExists(recordListeners[originalEvent], obj)) {\n if (!this.listenerExists(recordListeners[originalEvent], obj)) {\n element.addEventListener(originalEvent, listener, options);\n obj.unbind = () => {\n element.removeEventListener(originalEvent, listener, options);\n };\n }\n\n recordListeners[originalEvent].push(obj);\n\n } else {\n // in case we want to add the same listener multiple times trigger a warning for a better debugging\n //console.info(\"Listener already exists\", element, originalEvent);\n }\n }\n\n /**\n * Performs a deep equality check between two objects.\n * @param x The first object to compare.\n * @param y The second object to compare.\n * @returns - Returns `true` if the objects are deeply equal, `false` otherwise.\n */\n deepEqual(x, y) {\n return x && y && typeof x === 'object' && typeof x === typeof y\n ? Object.keys(x).length === Object.keys(y).length &&\n Object.keys(x).every((key) => this.deepEqual(x[key], y[key]))\n : x === y;\n }\n\n /**\n * Check if the listener already exists on the element.\n * @param records\n * @param eventObj\n * @returns\n */\n listenerExists(records, eventObj) {\n return records.some((e) => e.listener === eventObj.listener);\n }\n\n isRecordExists(records, eventObj) {\n return records.some((e) => this.deepEqual(e, eventObj))\n }\n\n /**\n * Remove listener from the element and delete the listener from the custom event storage.\n * @param element\n * @param originalEvent\n * @param event\n * @param listener\n * @param options\n */\n removeListener(element, originalEvent, event, listener, options) {\n let records = this.findRecordByElement(element);\n let listeners = records?.[originalEvent];\n listener = listener || this.#dispatch;\n\n if (listeners) {\n let listenerOfWeakMap = listeners.find((e) => e.listener === listener);\n\n if (listenerOfWeakMap) {\n listeners.splice(listeners.indexOf(listenerOfWeakMap), 1);\n }\n\n if (!listeners.length) {\n delete records[originalEvent];\n element?.removeEventListener(originalEvent, listener, options);\n }\n }\n }\n\n /**\n * Remove all event listeners from the specified element and delete the element from the custom event storage.\n * @param {HTMLElement} element The element from which all listeners will be removed.\n */\n removeElement(element) {\n // remove all listeners from the element\n let listeners = this.customEventWeakMap.get(element);\n if (listeners) {\n queueMicrotask(() => {\n for (let event in listeners) {\n listeners[event].forEach((e) => {\n element.removeEventListener(event, e.listener, e.options);\n e.unbind();\n });\n }\n\n this.customEventWeakMap.delete(element);\n });\n }\n }\n\n // TODO\n createPromiseFromEvent(element, event) {\n return new Promise((resolve) => {\n let success = () => {\n element.removeEventListener(event, success);\n resolve();\n };\n\n element.addEventListener(event, success);\n });\n }\n}\n\nlet event = new Event();\nexport { event };\n"],"names":["self","event","this","customEventWeakMap","WeakMap","element","detail","dispatchEvent","CustomEvent","context","bubbles","composed","cancelable","get","originalEvent","listener","options","Array","isArray","forEach","el","writeRecord","recordListeners","findRecordByElement","set","obj","isRecordExists","listenerExists","addEventListener","unbind","removeEventListener","push","x","y","Object","keys","length","every","key","deepEqual","records","eventObj","some","e","listeners","listenerOfWeakMap","find","splice","indexOf","queueMicrotask","delete","Promise","resolve","success","dispatch","record","type","dispatchCustomEvent","stopPropagation","stopImmediatePropagation","preventDefault"],"mappings":"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"}
@@ -0,0 +1,101 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
4
+ import t from "./wje-element.js";
5
+ import { event as e } from "./event.js";
6
+ class i extends t {
7
+ constructor() {
8
+ super();
9
+ }
10
+ set name(t2) {
11
+ this.setAttribute("name", t2);
12
+ }
13
+ get name() {
14
+ return this.getAttribute("name");
15
+ }
16
+ get type() {
17
+ return this.getAttribute("type");
18
+ }
19
+ set required(t2) {
20
+ t2 ? this.setAttribute("required", "") : this.removeAttribute("required");
21
+ }
22
+ get required() {
23
+ return this.hasAttribute("required");
24
+ }
25
+ set invalid(t2) {
26
+ t2 ? this.setAttribute("invalid", "") : this.removeAttribute("invalid");
27
+ }
28
+ get invalid() {
29
+ return this.hasAttribute("invalid");
30
+ }
31
+ set disabled(t2) {
32
+ t2 ? this.setAttribute("disabled", "") : this.removeAttribute("disabled");
33
+ }
34
+ get disabled() {
35
+ return this.hasAttribute("disabled");
36
+ }
37
+ get form() {
38
+ return this.internals.form;
39
+ }
40
+ get validity() {
41
+ return this.internals.validity;
42
+ }
43
+ get validationMessage() {
44
+ return this.internals.validationMessage;
45
+ }
46
+ get willValidate() {
47
+ return this.internals.willValidate;
48
+ }
49
+ validate() {
50
+ const t2 = this.input.validity;
51
+ if (t2.valid) this.internals.setValidity({});
52
+ else for (let e2 in t2) {
53
+ const i2 = `message-${e2.toString()}`;
54
+ if (t2[e2]) {
55
+ this.validationError = e2.toString();
56
+ let t3 = this.message;
57
+ this.hasAttribute("message") || (t3 = this.hasAttribute(i2) ? this.getAttribute(i2) : this.input.validationMessage), this.internals.setValidity({ [this.validationError]: true }, t3, this.input);
58
+ }
59
+ }
60
+ }
61
+ propagateValidation(t2 = "invalid", i2 = {}) {
62
+ const s = this.internals;
63
+ this.invalid = !this.pristine && !s.validity.valid, this.invalid && e.dispatchCustomEvent(this, this.tagName.toLocaleLowerCase() + ":" + t2, i2);
64
+ }
65
+ showInvalidMessage() {
66
+ const t2 = this.internals, e2 = this.querySelector("[slot='error']");
67
+ let i2 = e2 == null ? void 0 : e2.querySelector("[error-message]");
68
+ if (!i2) {
69
+ const t3 = document.createElement("div");
70
+ t3.setAttribute("error-message", ""), e2 == null ? void 0 : e2.append(t3), i2 = t3;
71
+ }
72
+ i2.textContent = t2.validationMessage;
73
+ }
74
+ checkValidity() {
75
+ return this.validate(), this.internals.checkValidity();
76
+ }
77
+ formResetCallback() {
78
+ this.value = this.defaultValue, this.internals.setFormValue(this.defaultValue), this.internals.setValidity({});
79
+ }
80
+ formStateRestoreCallback(t2) {
81
+ this.value = t2.value, this.internals.setFormValue(t2.value), this.internals.setValidity({});
82
+ }
83
+ formStateSaveCallback() {
84
+ return { value: this.value };
85
+ }
86
+ formDisabledCallback(t2) {
87
+ var _a;
88
+ (_a = this.native) == null ? void 0 : _a.classList.toggle("disabled", t2), this.toggleAttribute("disabled", t2);
89
+ }
90
+ formAssociatedCallback() {
91
+ var _a;
92
+ this.form && (this.internals.setFormValue(this.value), (_a = this.form) == null ? void 0 : _a.addEventListener("submit", () => {
93
+ this.validate(), this.propagateValidation();
94
+ }));
95
+ }
96
+ }
97
+ __publicField(i, "formAssociated", true);
98
+ export {
99
+ i as F
100
+ };
101
+ //# sourceMappingURL=form-associated-element-BjeJn7j8.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"form-associated-element-DEQ4y-jn.js","sources":["../packages/internals/form-associated-element.js"],"sourcesContent":["import { default as WJElement, event } from \"../wje-element/element.js\";\n\nexport class FormAssociatedElement extends WJElement {\n static formAssociated = true;\n\n constructor() {\n super();\n }\n\n /**\n * Sets the 'name' attribute to the given value.\n * @param {string} value The new value for the 'name' attribute.\n */\n set name(value) {\n this.setAttribute('name', value);\n }\n\n /**\n * Getter for the name attribute.\n * @returns {string} The name of the input.\n */\n get name() {\n return this.getAttribute('name');\n }\n\n /**\n * Getter for the type attribute.\n * @returns {string} The type of the input.\n */\n get type() {\n return this.getAttribute(\"type\");\n }\n\n /**\n * Sets or removes the 'required' attribute on the element.\n * @param {boolean} value If true, adds the 'required' attribute. If false, removes the 'required' attribute.\n */\n set required(value) {\n if (value) {\n this.setAttribute('required', '');\n } else {\n this.removeAttribute('required');\n }\n }\n\n /**\n * Checks if the 'required' attribute is present on the element.\n * @returns {boolean} `true` if the 'required' attribute is set, otherwise `false`.\n */\n get required() {\n return this.hasAttribute('required');\n }\n\n /**\n * Setter for the invalid attribute.\n * @param {boolean} isInvalid Whether the input is invalid.\n */\n set invalid(isInvalid) {\n if (isInvalid) this.setAttribute('invalid', '');\n else this.removeAttribute('invalid');\n }\n\n /**\n * Getter for the invalid attribute.\n * @returns {boolean} Whether the attribute is present.\n */\n get invalid() {\n return this.hasAttribute('invalid');\n }\n\n /**\n * Set checked attribute.\n * @param {boolean} value true if the toggle is checked, false otherwise\n */\n set disabled(value) {\n if (value) {\n this.setAttribute('disabled', '');\n } else {\n this.removeAttribute('disabled');\n }\n }\n\n /**\n * Get disabled attribute value.\n * @returns {boolean} true if the toggle is disabled, false otherwise\n */\n get disabled() {\n return this.hasAttribute('disabled');\n }\n\n /**\n * Retrieves the form element associated with this object.\n * @returns {HTMLFormElement|null} The associated form element, or null if there isn't one.\n */\n get form() {\n return this.internals.form;\n }\n\n /**\n * Retrieves the validity state of the element by returning the validity object from the internal element.\n * The validity object provides information on whether the element satisfies its validation constraints.\n * @returns {ValidityState} The validity state object representing the element's validation constraints.\n */\n get validity() {\n return this.internals.validity;\n }\n\n /**\n * Retrieves the current validation message associated with the element.\n * @returns {string} The validation message that describes why the element's value fails validity checks.\n */\n get validationMessage() {\n return this.internals.validationMessage;\n }\n\n /**\n * Indicates whether the element is a candidate for constraint validation.\n * @returns {boolean} Returns true if the element will be validated during constraint validation, false otherwise.\n */\n get willValidate() {\n return this.internals.willValidate;\n }\n\n /**\n * Validates the input element associated with the component and updates its validity state\n * and error messages based on the user's input and the current validation rules.\n * @returns {void} This method does not return a value. It modifies the validity state\n * internally and sets appropriate validation messages.\n */\n validate() {\n const validState = this.input.validity;\n\n if (!validState.valid) {\n for (let state in validState) {\n const attr = `message-${state.toString()}`;\n\n if (validState[state]) {\n this.validationError = state.toString();\n let errorMessage = this.message;\n\n // TODO this take error messages based on lang from operating system of user should we implement custom translations based on app language ?\n if (!this.hasAttribute('message'))\n errorMessage = this.hasAttribute(attr) ? this.getAttribute(attr) : this.input.validationMessage;\n\n this.internals.setValidity({ [this.validationError]: true }, errorMessage, this.input);\n }\n }\n } else {\n this.internals.setValidity({});\n }\n }\n\n /**\n * Propagates a validation event based on the validity state of the component.\n *\n * This method checks the validity status of the component and emits a custom\n * event if the component is invalid. The event's name and additional details\n * can be specified.\n * @param {string} [eventName] The name of the event to dispatch when the component is invalid.\n * @param {object} [detail] Additional detail to include in the dispatched event.\n * @returns {void} This method does not return a value.\n */\n propagateValidation(eventName = 'invalid', detail = {}) {\n const internals = this.internals;\n\n this.invalid = !this.pristine && !internals.validity.valid;\n\n if (this.invalid) {\n event.dispatchCustomEvent(this, this.tagName.toLocaleLowerCase() + ':' + eventName, detail);\n }\n }\n\n /**\n * Displays an invalid message for the current element.\n * If an error message element does not exist within the designated slot,\n * it creates one and appends it to the slot. Updates the text content\n * of the error message element with the validation message from the\n * element's internals.\n * @returns {void} This method does not return any value.\n */\n showInvalidMessage() {\n const internals = this.internals;\n const slot = this.querySelector(\"[slot='error']\");\n let errorMessageEl = slot?.querySelector('[error-message]');\n\n if (!errorMessageEl) {\n const error = document.createElement('div');\n error.setAttribute('error-message', '');\n slot?.append(error);\n errorMessageEl = error;\n }\n\n errorMessageEl.textContent = internals.validationMessage;\n }\n\n /**\n * Checks the validity of the input by invoking custom validation logic\n * and then verifying against internal validation rules.\n * @returns {boolean} Returns true if the input is valid according to both custom validation and internal validation rules, otherwise false.\n */\n checkValidity() {\n // zavolá tvoju vlastnú validáciu pred kontrolou internals\n this.validate();\n return this.internals.checkValidity();\n }\n\n /**\n * Callback to handle the reset action for a form.\n * Resets the value of the form control to its default value, updates the form value, and clears any validity states.\n * @returns {void} Does not return a value.\n */\n formResetCallback() {\n this.value = this.defaultValue;\n this.internals.setFormValue(this.defaultValue);\n this.internals.setValidity({});\n }\n\n /**\n * Restores the form state by assigning the provided state value\n * and updating the internal form value and validity.\n * @param {object} state The state object containing the value to restore the form.\n * @param {*} state.value The value to set for the form element.\n * @returns {void} This method does not return any value.\n */\n formStateRestoreCallback(state) {\n this.value = state.value;\n this.internals.setFormValue(state.value);\n this.internals.setValidity({});\n }\n\n /**\n * Callback method to save the current state of a form.\n * This method captures and returns the form's value property.\n * @returns {object} An object containing the `value` property of the current form state.\n */\n formStateSaveCallback() {\n return {\n value: this.value\n };\n }\n\n /**\n * Toggles the disabled state of the component and updates corresponding attributes.\n * @param {boolean} disabled Indicates whether the form should be marked as disabled.\n * If true, the 'disabled' class is added, and the 'disabled' attribute is set.\n * If false, both the class and attribute are removed.\n * @returns {void}\n */\n formDisabledCallback(disabled) {\n this.native?.classList.toggle('disabled', disabled);\n this.toggleAttribute('disabled', disabled);\n }\n\n /**\n * A lifecycle callback that is executed when the element is associated with a form.\n * It updates the form's value field with the element's value and sets up an event\n * listener to perform validation and propagate it whenever the form is submitted.\n * @returns {void} Does not return any value.\n */\n formAssociatedCallback() {\n if (this.form) {\n this.internals.setFormValue(this.value);\n this.form?.addEventListener('submit', () => {\n this.validate();\n this.propagateValidation();\n });\n }\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"form-associated-element-BjeJn7j8.js","sources":["../packages/internals/form-associated-element.js"],"sourcesContent":["import { default as WJElement, event } from \"../wje-element/element.js\";\n\nexport class FormAssociatedElement extends WJElement {\n static formAssociated = true;\n\n constructor() {\n super();\n }\n\n /**\n * Sets the 'name' attribute to the given value.\n * @param {string} value The new value for the 'name' attribute.\n */\n set name(value) {\n this.setAttribute('name', value);\n }\n\n /**\n * Getter for the name attribute.\n * @returns {string} The name of the input.\n */\n get name() {\n return this.getAttribute('name');\n }\n\n /**\n * Getter for the type attribute.\n * @returns {string} The type of the input.\n */\n get type() {\n return this.getAttribute(\"type\");\n }\n\n /**\n * Sets or removes the 'required' attribute on the element.\n * @param {boolean} value If true, adds the 'required' attribute. If false, removes the 'required' attribute.\n */\n set required(value) {\n if (value) {\n this.setAttribute('required', '');\n } else {\n this.removeAttribute('required');\n }\n }\n\n /**\n * Checks if the 'required' attribute is present on the element.\n * @returns {boolean} `true` if the 'required' attribute is set, otherwise `false`.\n */\n get required() {\n return this.hasAttribute('required');\n }\n\n /**\n * Setter for the invalid attribute.\n * @param {boolean} isInvalid Whether the input is invalid.\n */\n set invalid(isInvalid) {\n if (isInvalid) this.setAttribute('invalid', '');\n else this.removeAttribute('invalid');\n }\n\n /**\n * Getter for the invalid attribute.\n * @returns {boolean} Whether the attribute is present.\n */\n get invalid() {\n return this.hasAttribute('invalid');\n }\n\n /**\n * Set checked attribute.\n * @param {boolean} value true if the toggle is checked, false otherwise\n */\n set disabled(value) {\n if (value) {\n this.setAttribute('disabled', '');\n } else {\n this.removeAttribute('disabled');\n }\n }\n\n /**\n * Get disabled attribute value.\n * @returns {boolean} true if the toggle is disabled, false otherwise\n */\n get disabled() {\n return this.hasAttribute('disabled');\n }\n\n /**\n * Retrieves the form element associated with this object.\n * @returns {HTMLFormElement|null} The associated form element, or null if there isn't one.\n */\n get form() {\n return this.internals.form;\n }\n\n /**\n * Retrieves the validity state of the element by returning the validity object from the internal element.\n * The validity object provides information on whether the element satisfies its validation constraints.\n * @returns {ValidityState} The validity state object representing the element's validation constraints.\n */\n get validity() {\n return this.internals.validity;\n }\n\n /**\n * Retrieves the current validation message associated with the element.\n * @returns {string} The validation message that describes why the element's value fails validity checks.\n */\n get validationMessage() {\n return this.internals.validationMessage;\n }\n\n /**\n * Indicates whether the element is a candidate for constraint validation.\n * @returns {boolean} Returns true if the element will be validated during constraint validation, false otherwise.\n */\n get willValidate() {\n return this.internals.willValidate;\n }\n\n /**\n * Validates the input element associated with the component and updates its validity state\n * and error messages based on the user's input and the current validation rules.\n * @returns {void} This method does not return a value. It modifies the validity state\n * internally and sets appropriate validation messages.\n */\n validate() {\n const validState = this.input.validity;\n\n if (!validState.valid) {\n for (let state in validState) {\n const attr = `message-${state.toString()}`;\n\n if (validState[state]) {\n this.validationError = state.toString();\n let errorMessage = this.message;\n\n // TODO this take error messages based on lang from operating system of user should we implement custom translations based on app language ?\n if (!this.hasAttribute('message'))\n errorMessage = this.hasAttribute(attr) ? this.getAttribute(attr) : this.input.validationMessage;\n\n this.internals.setValidity({ [this.validationError]: true }, errorMessage, this.input);\n }\n }\n } else {\n this.internals.setValidity({});\n }\n }\n\n /**\n * Propagates a validation event based on the validity state of the component.\n *\n * This method checks the validity status of the component and emits a custom\n * event if the component is invalid. The event's name and additional details\n * can be specified.\n * @param {string} [eventName] The name of the event to dispatch when the component is invalid.\n * @param {object} [detail] Additional detail to include in the dispatched event.\n * @returns {void} This method does not return a value.\n */\n propagateValidation(eventName = 'invalid', detail = {}) {\n const internals = this.internals;\n\n this.invalid = !this.pristine && !internals.validity.valid;\n\n if (this.invalid) {\n event.dispatchCustomEvent(this, this.tagName.toLocaleLowerCase() + ':' + eventName, detail);\n }\n }\n\n /**\n * Displays an invalid message for the current element.\n * If an error message element does not exist within the designated slot,\n * it creates one and appends it to the slot. Updates the text content\n * of the error message element with the validation message from the\n * element's internals.\n * @returns {void} This method does not return any value.\n */\n showInvalidMessage() {\n const internals = this.internals;\n const slot = this.querySelector(\"[slot='error']\");\n let errorMessageEl = slot?.querySelector('[error-message]');\n\n if (!errorMessageEl) {\n const error = document.createElement('div');\n error.setAttribute('error-message', '');\n slot?.append(error);\n errorMessageEl = error;\n }\n\n errorMessageEl.textContent = internals.validationMessage;\n }\n\n /**\n * Checks the validity of the input by invoking custom validation logic\n * and then verifying against internal validation rules.\n * @returns {boolean} Returns true if the input is valid according to both custom validation and internal validation rules, otherwise false.\n */\n checkValidity() {\n // zavolá tvoju vlastnú validáciu pred kontrolou internals\n this.validate();\n return this.internals.checkValidity();\n }\n\n /**\n * Callback to handle the reset action for a form.\n * Resets the value of the form control to its default value, updates the form value, and clears any validity states.\n * @returns {void} Does not return a value.\n */\n formResetCallback() {\n this.value = this.defaultValue;\n this.internals.setFormValue(this.defaultValue);\n this.internals.setValidity({});\n }\n\n /**\n * Restores the form state by assigning the provided state value\n * and updating the internal form value and validity.\n * @param {object} state The state object containing the value to restore the form.\n * @param {*} state.value The value to set for the form element.\n * @returns {void} This method does not return any value.\n */\n formStateRestoreCallback(state) {\n this.value = state.value;\n this.internals.setFormValue(state.value);\n this.internals.setValidity({});\n }\n\n /**\n * Callback method to save the current state of a form.\n * This method captures and returns the form's value property.\n * @returns {object} An object containing the `value` property of the current form state.\n */\n formStateSaveCallback() {\n return {\n value: this.value\n };\n }\n\n /**\n * Toggles the disabled state of the component and updates corresponding attributes.\n * @param {boolean} disabled Indicates whether the form should be marked as disabled.\n * If true, the 'disabled' class is added, and the 'disabled' attribute is set.\n * If false, both the class and attribute are removed.\n * @returns {void}\n */\n formDisabledCallback(disabled) {\n this.native?.classList.toggle('disabled', disabled);\n this.toggleAttribute('disabled', disabled);\n }\n\n /**\n * A lifecycle callback that is executed when the element is associated with a form.\n * It updates the form's value field with the element's value and sets up an event\n * listener to perform validation and propagate it whenever the form is submitted.\n * @returns {void} Does not return any value.\n */\n formAssociatedCallback() {\n if (this.form) {\n this.internals.setFormValue(this.value);\n this.form?.addEventListener('submit', () => {\n this.validate();\n this.propagateValidation();\n });\n }\n }\n}\n"],"names":["FormAssociatedElement","WJElement","constructor","super","value","this","setAttribute","getAttribute","type","removeAttribute","hasAttribute","isInvalid","invalid","disabled","form","internals","validity","validationMessage","willValidate","validate","validState","input","valid","setValidity","state","attr","toString","validationError","errorMessage","message","eventName","detail","pristine","event","dispatchCustomEvent","tagName","toLocaleLowerCase","showInvalidMessage","slot","querySelector","errorMessageEl","error","document","createElement","append","textContent","checkValidity","formResetCallback","defaultValue","setFormValue","native","classList","toggle","toggleAttribute","formAssociatedCallback","addEventListener","propagateValidation","static"],"mappings":";;;;;AAEO,MAAMA,UAA8BC;EAGzC,cAAAC;AACEC;EACF;AAAA,EAMA,IAAA,KAASC,IAAAA;AACPC,SAAKC,aAAa,QAAQF,EAAAA;AAAAA,EAC5B;AAAA,EAMA,IAAA;AACE,WAAOC,KAAKE,aAAa,MAAA;AAAA,EAC3B;AAAA,EAMA,IAAA,OAAIC;AACF,WAAOH,KAAKE,aAAa,MAAA;AAAA,EAC3B;AAAA,EAMA,aAAaH,IAAAA;AACPA,IAAAA,KACFC,KAAKC,aAAa,YAAY,EAAA,IAE9BD,KAAKI,gBAAgB,UAAA;AAAA,EAEzB;AAAA,EAMA,IAAA;AACE,WAAOJ,KAAKK,aAAa,UAAA;AAAA,EAC3B;AAAA,EAMA,IAAA,QAAYC;AACNA,IAAAA,KAAWN,KAAKC,aAAa,WAAW,EAAA,IACvCD,KAAKI,gBAAgB;EAC5B;AAAA,EAMA,IAAA,UAAIG;AACF,WAAOP,KAAKK,aAAa,SAAA;AAAA,EAC3B;AAAA,EAMA,IAAA,SAAaN,IAAAA;AACPA,IAAAA,KACFC,KAAKC,aAAa,YAAY,MAE9BD,KAAKI,gBAAgB,UAAA;AAAA,EAEzB;AAAA,EAMA,eAAII;AACF,WAAOR,KAAKK,aAAa;EAC3B;AAAA,EAMA,IAAA,OAAII;AACF,WAAOT,KAAKU,UAAUD;AAAAA,EACxB;AAAA,EAOA,IAAA,WAAIE;AACF,WAAOX,KAAKU,UAAUC;AAAAA,EACxB;AAAA,EAMA,wBAAIC;AACF,WAAOZ,KAAKU,UAAUE;AAAAA,EACxB;AAAA,EAMA,IAAA,eAAIC;AACF,WAAOb,KAAKU,UAAUG;AAAAA,EACxB;AAAA,EAQA,WAAAC;AACE,UAAMC,KAAaf,KAAKgB,MAAML;AAE9B,QAAKI,GAAWE,MAgBdjB,MAAKU,UAAUQ,YAAY;QAf3B,UAASC,MAASJ,IAAY;AAC5B,YAAMK,KAAO,WAAWD,GAAME,SAAAA,CAAAA;AAE9B,UAAIN,GAAWI,EAAAA,GAAQ;AACrBnB,aAAKsB,kBAAkBH,GAAME,SAAAA;AAC7B,YAAIE,KAAevB,KAAKwB;AAGnBxB,aAAKK,aAAa,eACrBkB,KAAevB,KAAKK,aAAae,EAAAA,IAAQpB,KAAKE,aAAakB,EAAAA,IAAQpB,KAAKgB,MAAMJ,oBAEhFZ,KAAKU,UAAUQ,YAAY,EAAE,CAAClB,KAAKsB,eAAAA,GAAAA,KAAkB,GAAQC,IAAcvB,KAAKgB;MAClF;AAAA,IACF;AAAA,EAIJ;AAAA,EAYA,oBAAoBS,KAAY,WAAWC,KAAS,CAAA,GAAA;AAClD,UAAMhB,IAAYV,KAAKU;AAEvBV,SAAKO,WAAWP,KAAK2B,YAAAA,CAAajB,EAAUC,SAASM,OAEjDjB,KAAKO,WACPqB,EAAMC,oBAAoB7B,MAAMA,KAAK8B,QAAQC,kBAAAA,IAAsB,MAAMN,IAAWC;EAExF;AAAA,EAUA,qBAAAM;AACE,UAAMtB,KAAYV,KAAKU,WACjBuB,KAAOjC,KAAKkC,cAAc,gBAAA;AAChC,QAAIC,KAAiBF,MAAAA,gBAAAA,GAAMC,cAAc;AAEzC,QAAA,CAAKC,IAAgB;AACnB,YAAMC,KAAQC,SAASC,cAAc;AACrCF,MAAAA,GAAMnC,aAAa,iBAAiB,EAAA,GACpCgC,MAAAA,gBAAAA,GAAMM,OAAOH,KACbD,KAAiBC;AAAAA,IACnB;AAEAD,IAAAA,GAAeK,cAAc9B,GAAUE;AAAAA,EACzC;AAAA,EAOA,gBAAA6B;AAGE,WADAzC,KAAKc,SAAAA,GACEd,KAAKU,UAAU+B,cAAAA;AAAAA,EACxB;AAAA,EAOA,oBAAAC;AACE1C,SAAKD,QAAQC,KAAK2C,cAClB3C,KAAKU,UAAUkC,aAAa5C,KAAK2C,eACjC3C,KAAKU,UAAUQ,YAAY;EAC7B;AAAA,EASA,yBAAyBC,IAAAA;AACvBnB,SAAKD,QAAQoB,GAAMpB,OACnBC,KAAKU,UAAUkC,aAAazB,GAAMpB,QAClCC,KAAKU,UAAUQ,YAAY;EAC7B;AAAA,EAOA;AACE,WAAO,EACLnB,OAAOC,KAAKD;EAEhB;AAAA,EASA,qBAAqBS,IAAAA;;AACnBR,eAAK6C,WAAL7C,mBAAa8C,UAAUC,OAAO,YAAYvC,KAC1CR,KAAKgD,gBAAgB,YAAYxC,EAAAA;AAAAA,EACnC;AAAA,EAQA,yBAAAyC;;AACMjD,SAAKS,SACPT,KAAKU,UAAUkC,aAAa5C,KAAKD,KAAAA,IACjCC,UAAKS,SAALT,mBAAWkD,iBAAiB,UAAU,MAAA;AACpClD,WAAKc,SAAAA,GACLd,KAAKmD;;EAGX;AAAA;AAxQAC,cADWzD,GACXyD,kBAAAA;"}
@@ -0,0 +1,102 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
4
+ import e from "./wje-element.js";
5
+ import { getBasePath as t } from "./base-path.js";
6
+ let r = [];
7
+ function i(e2, t2) {
8
+ s(e2), r.push({ name: e2, resolver: t2.resolver });
9
+ }
10
+ function s(e2) {
11
+ r = r.filter((t2) => t2.name !== e2);
12
+ }
13
+ i("default", { resolver: (e2, r2) => t(`assets/img/icons/${r2}/${e2}.svg`) });
14
+ const o = /* @__PURE__ */ new Map(), n = /* @__PURE__ */ new Map();
15
+ let a;
16
+ const l = (e2) => e2.length > 0 && /(\/|\.)/.test(e2), c = (e2) => "string" == typeof e2, h = (e2) => {
17
+ if (1 === e2.nodeType) {
18
+ if ("script" === e2.nodeName.toLowerCase()) return false;
19
+ for (let t2 = 0; t2 < e2.attributes.length; t2++) {
20
+ const r2 = e2.attributes[t2].name;
21
+ if (c(r2) && 0 === r2.toLowerCase().indexOf("on")) return false;
22
+ }
23
+ for (let t2 = 0; t2 < e2.childNodes.length; t2++) if (!h(e2.childNodes[t2])) return false;
24
+ }
25
+ return true;
26
+ }, u = (e2, t2) => {
27
+ let r2 = n.get(e2);
28
+ if (!r2) {
29
+ if ("undefined" == typeof fetch || "undefined" == typeof document) return o.set(e2, ""), Promise.resolve();
30
+ if (((e3) => e3.startsWith("data:image/svg+xml"))(e2) && ((e3) => -1 !== e3.indexOf(";utf8,"))(e2)) {
31
+ a || (a = new DOMParser());
32
+ const t3 = a.parseFromString(e2, "text/html").querySelector("svg");
33
+ return t3 && o.set(e2, t3.outerHTML), Promise.resolve();
34
+ }
35
+ r2 = fetch(e2).then((r3) => r3.ok ? r3.text().then((r4) => {
36
+ r4 && false !== t2 && (r4 = ((e3) => {
37
+ const t3 = document.createElement("div");
38
+ t3.innerHTML = e3;
39
+ const r5 = t3.firstElementChild;
40
+ return r5 && "svg" === r5.nodeName.toLowerCase() && (r5.getAttribute("class"), h(r5)) ? t3.innerHTML : "";
41
+ })(r4)), o.set(e2, r4 || "");
42
+ }) : o.set(e2, "")), n.set(e2, r2);
43
+ }
44
+ return r2;
45
+ }, d = (e2) => {
46
+ let t2 = (r2 = e2.src, c(r2) && (r2 = r2.trim(), l(r2)) ? r2 : null);
47
+ var r2;
48
+ return t2 || (t2 = v(e2.name), t2 ? m(t2, e2.library, e2.hasAttribute("filled")) : null);
49
+ }, v = (e2) => {
50
+ if (!c(e2) || "" === e2.trim()) return null;
51
+ return "" !== e2.replace(/[a-z]|-|\d/gi, "") ? null : e2;
52
+ }, m = (e2, t2 = "default", i2 = false) => {
53
+ var s2;
54
+ return (s2 = t2, r.find((e3) => e3.name === s2)).resolver(e2, i2 ? "filled" : "outline");
55
+ };
56
+ class w extends e {
57
+ constructor() {
58
+ super();
59
+ __publicField(this, "className", "Icon");
60
+ }
61
+ static get cssStyleSheet() {
62
+ return ':host{width:var(--wje-icon-width, var(--wje-icon-size, 1rem));height:var(--wje-icon-height, var(--wje-icon-size, 1rem));display:block;box-sizing:content-box!important}.native-icon{display:flex;align-items:center;justify-content:center;width:100%;height:100%}svg{width:100%;height:100%;stroke-width:var(--wje-icon-stroke);color:var(--wje-icon-color)}:host([stroke="1"]){--wje-icon-stroke: 1}:host([stroke="1.25"]){--wje-icon-stroke: 1.25}:host([stroke="1.5"]){--wje-icon-stroke: 1.5}:host([stroke="1.75"]){--wje-icon-stroke: 1.75}:host([stroke="2"]){--wje-icon-stroke: 2}:host([size="2x-small"]){--wje-icon-size: var(--wje-size-2x-small)}:host([size="x-small"]){--wje-icon-size: var(--wje-size-x-small)}:host([size="small"]){--wje-icon-size: var(--wje-size-small)}:host([size="medium"]){--wje-icon-size: var(--wje-size-medium)}:host([size="large"]){--wje-icon-size: var(--wje-size-large)}:host([size="x-large"]){--wje-icon-size: var(--wje-size-x-large)}:host([size="2x-large"]){--wje-icon-size: var(--wje-size-2x-large)}:host([size="3x-large"]){--wje-icon-size: var(--wje-size-3x-large)}:host([size="4x-large"]){--wje-icon-size: var(--wje-size-4x-large)}:host([color="primary"]) .native-icon{color:var(--wje-color-primary-9)}:host([color="complete"]) .native-icon{color:var(--wje-color-complete-9)}:host([color="success"]) .native-icon{color:var(--wje-color-success-9)}:host([color="warning"]) .native-icon{color:var(--wje-color-warning-9)}:host([color="danger"]) .native-icon{color:var(--wje-color-danger-9)}:host([color="info"]) .native-icon{color:var(--wje-color-info-9)}:host([color="menu"]) .native-icon{color:var(--wje-color-contrast-9)}';
63
+ }
64
+ static get observedAttributes() {
65
+ return ["name", "filled", "label"];
66
+ }
67
+ setupAttributes() {
68
+ this.isShadowRoot = "open", this.syncAria();
69
+ }
70
+ draw(e2, t2, r2) {
71
+ let i2 = document.createDocumentFragment();
72
+ this.classList.add("lazy-loaded-image", "lazy");
73
+ let s2 = document.createElement("div");
74
+ return s2.setAttribute("part", "native"), s2.classList.add("native-icon"), this.url = d(this), i2.appendChild(s2), this.native = s2, i2;
75
+ }
76
+ afterDraw() {
77
+ this.syncAria();
78
+ let e2 = new IntersectionObserver((t2, r2) => {
79
+ t2.forEach((t3) => {
80
+ t3.isIntersecting && (u(this.url).then((e3) => {
81
+ var _a;
82
+ this.native.innerHTML = o == null ? void 0 : o.get(this.url), (_a = this.native.querySelector("svg")) == null ? void 0 : _a.setAttribute("part", "svg");
83
+ }), this.classList.remove("lazy"), e2.unobserve(t3.target));
84
+ });
85
+ });
86
+ e2.observe(this.native);
87
+ }
88
+ syncAria() {
89
+ const e2 = this.getAttribute("aria-label"), t2 = this.getAttribute("label");
90
+ e2 || t2 ? (this.hasAttribute("role") || this.setAttribute("role", "img"), !e2 && t2 && this.setAriaState({ label: t2 }), this.removeAttribute("aria-hidden")) : this.setAttribute("aria-hidden", "true");
91
+ }
92
+ attributeChangedCallback(e2, t2, r2) {
93
+ super.attributeChangedCallback && super.attributeChangedCallback(e2, t2, r2), "label" === e2 && t2 !== r2 && this.syncAria();
94
+ }
95
+ }
96
+ w.define("wje-icon", w);
97
+ export {
98
+ w as I,
99
+ i as r,
100
+ s as u
101
+ };
102
+ //# sourceMappingURL=icon-DmsqtDpL.js.map