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.
- package/dist/animations.js +28 -51
- package/dist/animations.js.map +1 -1
- package/dist/base-path.js +19 -31
- package/dist/base-path.js.map +1 -1
- package/dist/custom-elements.json +11504 -11499
- package/dist/dark.css +1 -302
- package/dist/date.js +16 -36
- package/dist/date.js.map +1 -1
- package/dist/element-utils.js +20 -81
- package/dist/element-utils.js.map +1 -1
- package/dist/event.js +49 -165
- package/dist/event.js.map +1 -1
- package/dist/form-associated-element-BjeJn7j8.js +101 -0
- package/dist/{form-associated-element-DEQ4y-jn.js.map → form-associated-element-BjeJn7j8.js.map} +1 -1
- package/dist/icon-DmsqtDpL.js +102 -0
- package/dist/{icon-CReYMzAK.js.map → icon-DmsqtDpL.js.map} +1 -1
- package/dist/light.css +1 -731
- package/dist/localize.js +36 -111
- package/dist/localize.js.map +1 -1
- package/dist/packages/wje-accordion-item/accordion-item.element.d.ts +3 -2
- package/dist/permissions.js +14 -41
- package/dist/permissions.js.map +1 -1
- package/dist/popup.element-CbkhthPP.js +806 -0
- package/dist/{popup.element-CwXvVFK7.js.map → popup.element-CbkhthPP.js.map} +1 -1
- package/dist/router-links-CNsJ-elb.js +105 -0
- package/dist/{router-links-wjqCnncc.js.map → router-links-CNsJ-elb.js.map} +1 -1
- package/dist/skeleton.css +1 -197
- package/dist/styles.css +1 -866
- package/dist/universal-service.js +48 -109
- package/dist/universal-service.js.map +1 -1
- package/dist/utils.js +11 -18
- package/dist/utils.js.map +1 -1
- package/dist/web-types.json +760 -760
- package/dist/wje-accordion-item.js +33 -106
- package/dist/wje-accordion-item.js.map +1 -1
- package/dist/wje-accordion.js +19 -84
- package/dist/wje-accordion.js.map +1 -1
- package/dist/wje-animation.js +37 -4258
- package/dist/wje-animation.js.map +1 -1
- package/dist/wje-aside.js +9 -34
- package/dist/wje-aside.js.map +1 -1
- package/dist/wje-avatar.js +36 -126
- package/dist/wje-avatar.js.map +1 -1
- package/dist/wje-badge.js +10 -52
- package/dist/wje-badge.js.map +1 -1
- package/dist/wje-breadcrumb.js +205 -672
- package/dist/wje-breadcrumb.js.map +1 -1
- package/dist/wje-breadcrumbs.js +177 -633
- package/dist/wje-breadcrumbs.js.map +1 -1
- package/dist/wje-button-group.js +48 -153
- package/dist/wje-button-group.js.map +1 -1
- package/dist/wje-button.js +92 -413
- package/dist/wje-button.js.map +1 -1
- package/dist/wje-card-content.js +7 -30
- package/dist/wje-card-content.js.map +1 -1
- package/dist/wje-card-controls.js +7 -30
- package/dist/wje-card-controls.js.map +1 -1
- package/dist/wje-card-header.js +7 -30
- package/dist/wje-card-header.js.map +1 -1
- package/dist/wje-card-subtitle.js +7 -34
- package/dist/wje-card-subtitle.js.map +1 -1
- package/dist/wje-card-title.js +7 -34
- package/dist/wje-card-title.js.map +1 -1
- package/dist/wje-card.js +15 -71
- package/dist/wje-card.js.map +1 -1
- package/dist/wje-carousel-item.js +12 -56
- package/dist/wje-carousel-item.js.map +1 -1
- package/dist/wje-carousel.js +154 -509
- package/dist/wje-carousel.js.map +1 -1
- package/dist/wje-checkbox.js +50 -227
- package/dist/wje-checkbox.js.map +1 -1
- package/dist/wje-chip.js +43 -160
- package/dist/wje-chip.js.map +1 -1
- package/dist/wje-col.js +7 -20
- package/dist/wje-col.js.map +1 -1
- package/dist/wje-color-picker.js +445 -1464
- package/dist/wje-color-picker.js.map +1 -1
- package/dist/wje-container.js +9 -35
- package/dist/wje-container.js.map +1 -1
- package/dist/wje-copy-button.js +64 -204
- package/dist/wje-copy-button.js.map +1 -1
- package/dist/wje-dialog.js +85 -553
- package/dist/wje-dialog.js.map +1 -1
- package/dist/wje-divider.js +7 -34
- package/dist/wje-divider.js.map +1 -1
- package/dist/wje-dropdown.js +78 -305
- package/dist/wje-dropdown.js.map +1 -1
- package/dist/wje-element.js +191 -700
- package/dist/wje-element.js.map +1 -1
- package/dist/wje-file-upload-item.js +51 -156
- package/dist/wje-file-upload-item.js.map +1 -1
- package/dist/wje-file-upload.js +181 -619
- package/dist/wje-file-upload.js.map +1 -1
- package/dist/wje-footer.js +7 -31
- package/dist/wje-footer.js.map +1 -1
- package/dist/wje-form.js +7 -32
- package/dist/wje-form.js.map +1 -1
- package/dist/wje-format-digital.js +26 -118
- package/dist/wje-format-digital.js.map +1 -1
- package/dist/wje-grid.js +7 -33
- package/dist/wje-grid.js.map +1 -1
- package/dist/wje-header.js +9 -35
- package/dist/wje-header.js.map +1 -1
- package/dist/wje-icon-library.js +12 -18
- package/dist/wje-icon-library.js.map +1 -1
- package/dist/wje-icon-picker.js +65 -320
- package/dist/wje-icon-picker.js.map +1 -1
- package/dist/wje-icon.js +1 -1
- package/dist/wje-img-comparer.js +37 -114
- package/dist/wje-img-comparer.js.map +1 -1
- package/dist/wje-img.js +50 -198
- package/dist/wje-img.js.map +1 -1
- package/dist/wje-infinite-scroll.js +94 -346
- package/dist/wje-infinite-scroll.js.map +1 -1
- package/dist/wje-input-file.js +23 -84
- package/dist/wje-input-file.js.map +1 -1
- package/dist/wje-input.js +78 -392
- package/dist/wje-input.js.map +1 -1
- package/dist/wje-item.js +11 -64
- package/dist/wje-item.js.map +1 -1
- package/dist/wje-kanban.js +124 -401
- package/dist/wje-kanban.js.map +1 -1
- package/dist/wje-label.js +9 -32
- package/dist/wje-label.js.map +1 -1
- package/dist/wje-level-indicator.js +38 -157
- package/dist/wje-level-indicator.js.map +1 -1
- package/dist/wje-list.js +10 -40
- package/dist/wje-list.js.map +1 -1
- package/dist/wje-main.js +7 -31
- package/dist/wje-main.js.map +1 -1
- package/dist/wje-masonry.js +66 -211
- package/dist/wje-masonry.js.map +1 -1
- package/dist/wje-master.js +45 -161
- package/dist/wje-master.js.map +1 -1
- package/dist/wje-menu-button.js +10 -38
- package/dist/wje-menu-button.js.map +1 -1
- package/dist/wje-menu-item.js +127 -577
- package/dist/wje-menu-item.js.map +1 -1
- package/dist/wje-menu-label.js +9 -35
- package/dist/wje-menu-label.js.map +1 -1
- package/dist/wje-menu.js +14 -49
- package/dist/wje-menu.js.map +1 -1
- package/dist/wje-option.js +48 -279
- package/dist/wje-option.js.map +1 -1
- package/dist/wje-options.js +130 -384
- package/dist/wje-options.js.map +1 -1
- package/dist/wje-orgchart-group.js +16 -52
- package/dist/wje-orgchart-group.js.map +1 -1
- package/dist/wje-orgchart-item.js +24 -93
- package/dist/wje-orgchart-item.js.map +1 -1
- package/dist/wje-orgchart.js +18 -68
- package/dist/wje-orgchart.js.map +1 -1
- package/dist/wje-pagination.js +113 -397
- package/dist/wje-pagination.js.map +1 -1
- package/dist/wje-popup.js +3 -3
- package/dist/wje-popup.js.map +1 -1
- package/dist/wje-progress-bar.js +53 -205
- package/dist/wje-progress-bar.js.map +1 -1
- package/dist/wje-qr-code.js +398 -2980
- package/dist/wje-qr-code.js.map +1 -1
- package/dist/wje-radio-group.js +52 -190
- package/dist/wje-radio-group.js.map +1 -1
- package/dist/wje-radio.js +24 -118
- package/dist/wje-radio.js.map +1 -1
- package/dist/wje-rate.js +62 -266
- package/dist/wje-rate.js.map +1 -1
- package/dist/wje-relative-time.js +24 -99
- package/dist/wje-relative-time.js.map +1 -1
- package/dist/wje-reorder-dropzone.js +9 -31
- package/dist/wje-reorder-dropzone.js.map +1 -1
- package/dist/wje-reorder-handle.js +67 -204
- package/dist/wje-reorder-handle.js.map +1 -1
- package/dist/wje-reorder-item.js +14 -44
- package/dist/wje-reorder-item.js.map +1 -1
- package/dist/wje-reorder.js +61 -246
- package/dist/wje-reorder.js.map +1 -1
- package/dist/wje-route.js +6 -24
- package/dist/wje-route.js.map +1 -1
- package/dist/wje-router-link.js +11 -39
- package/dist/wje-router-link.js.map +1 -1
- package/dist/wje-router-outlet.js +76 -172
- package/dist/wje-router-outlet.js.map +1 -1
- package/dist/wje-routerx.js +537 -1331
- package/dist/wje-routerx.js.map +1 -1
- package/dist/wje-row.js +9 -31
- package/dist/wje-row.js.map +1 -1
- package/dist/wje-select.js +326 -1152
- package/dist/wje-select.js.map +1 -1
- package/dist/wje-slider.js +44 -225
- package/dist/wje-slider.js.map +1 -1
- package/dist/wje-sliding-container.js +295 -1319
- package/dist/wje-sliding-container.js.map +1 -1
- package/dist/wje-split-view.js +35 -121
- package/dist/wje-split-view.js.map +1 -1
- package/dist/wje-status.js +14 -45
- package/dist/wje-status.js.map +1 -1
- package/dist/wje-step.js +9 -32
- package/dist/wje-step.js.map +1 -1
- package/dist/wje-stepper.js +109 -357
- package/dist/wje-stepper.js.map +1 -1
- package/dist/wje-store.js +67 -360
- package/dist/wje-store.js.map +1 -1
- package/dist/wje-tab-group.js +85 -314
- package/dist/wje-tab-group.js.map +1 -1
- package/dist/wje-tab-panel.js +7 -28
- package/dist/wje-tab-panel.js.map +1 -1
- package/dist/wje-tab.js +21 -198
- package/dist/wje-tab.js.map +1 -1
- package/dist/wje-textarea.js +64 -264
- package/dist/wje-textarea.js.map +1 -1
- package/dist/wje-thumbnail.js +10 -51
- package/dist/wje-thumbnail.js.map +1 -1
- package/dist/wje-toast.js +127 -632
- package/dist/wje-toast.js.map +1 -1
- package/dist/wje-toggle.js +52 -177
- package/dist/wje-toggle.js.map +1 -1
- package/dist/wje-toolbar-action.js +128 -456
- package/dist/wje-toolbar-action.js.map +1 -1
- package/dist/wje-toolbar.js +75 -270
- package/dist/wje-toolbar.js.map +1 -1
- package/dist/wje-tooltip.js +50 -161
- package/dist/wje-tooltip.js.map +1 -1
- package/dist/wje-tree-item.js +70 -301
- package/dist/wje-tree-item.js.map +1 -1
- package/dist/wje-tree.js +145 -489
- package/dist/wje-tree.js.map +1 -1
- package/dist/wje-visually-hidden.js +7 -34
- package/dist/wje-visually-hidden.js.map +1 -1
- package/package.json +3 -2
- package/dist/form-associated-element-DEQ4y-jn.js +0 -245
- package/dist/icon-CReYMzAK.js +0 -245
- package/dist/popup.element-CwXvVFK7.js +0 -2133
- 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
|
|
8
|
-
var
|
|
9
|
-
class
|
|
7
|
+
var _instances, e_fn, _a;
|
|
8
|
+
var e;
|
|
9
|
+
let t = new (_a = class {
|
|
10
10
|
constructor() {
|
|
11
|
-
__privateAdd(this,
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
44
|
-
|
|
45
|
-
|
|
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
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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(
|
|
110
|
-
return
|
|
39
|
+
isRecordExists(e2, t2) {
|
|
40
|
+
return e2.some((e3) => this.deepEqual(e3, t2));
|
|
111
41
|
}
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
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
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
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
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
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
|
-
|
|
63
|
+
e2.addEventListener(t2, n);
|
|
161
64
|
});
|
|
162
65
|
}
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
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
|
package/dist/{form-associated-element-DEQ4y-jn.js.map → form-associated-element-BjeJn7j8.js.map}
RENAMED
|
@@ -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":"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"}
|
|
@@ -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
|