@mattilsynet/design 3.2.3 → 3.2.4
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/mtds/app/app-observer.js +1 -1
- package/mtds/app/app-toggle.js +10 -26
- package/mtds/app/app-toggle.js.map +1 -1
- package/mtds/app/app-toggle2.js +26 -10
- package/mtds/app/app-toggle2.js.map +1 -1
- package/mtds/app/app.js +1 -1
- package/mtds/atlas/atlas-element.js +1 -1
- package/mtds/deprecations.js +39 -37
- package/mtds/deprecations.js.map +1 -1
- package/mtds/external/@u-elements/u-combobox/dist/u-combobox.js +288 -0
- package/mtds/external/@u-elements/u-combobox/dist/u-combobox.js.map +1 -0
- package/mtds/external/@u-elements/u-datalist/dist/u-datalist.js +238 -0
- package/mtds/external/@u-elements/u-datalist/dist/u-datalist.js.map +1 -0
- package/mtds/external/@u-elements/u-details/dist/u-details.js +101 -0
- package/mtds/external/@u-elements/u-details/dist/u-details.js.map +1 -0
- package/mtds/external/@u-elements/u-tabs/dist/u-tabs.js +235 -0
- package/mtds/external/@u-elements/u-tabs/dist/u-tabs.js.map +1 -0
- package/mtds/index.iife.js +17 -30
- package/mtds/index.js +36 -21
- package/mtds/package.json.js +1 -1
- package/mtds/styles.css +1 -1
- package/mtds/styles.json +23 -23
- package/mtds/styles.module.css.js +44 -44
- package/mtds/tabs/tabs.d.ts +9 -9
- package/mtds/tabs/tabs.js +8 -8
- package/mtds/tabs/tabs.js.map +1 -1
- package/package.json +9 -13
|
@@ -0,0 +1,288 @@
|
|
|
1
|
+
var Y = Object.defineProperty, R = Object.getOwnPropertySymbols, z = Object.prototype.hasOwnProperty, G = Object.prototype.propertyIsEnumerable, $ = (t, e, o) => e in t ? Y(t, e, { enumerable: !0, configurable: !0, writable: !0, value: o }) : t[e] = o, J = (t, e) => {
|
|
2
|
+
for (var o in e || (e = {}))
|
|
3
|
+
z.call(e, o) && $(t, o, e[o]);
|
|
4
|
+
if (R)
|
|
5
|
+
for (var o of R(e))
|
|
6
|
+
G.call(e, o) && $(t, o, e[o]);
|
|
7
|
+
return t;
|
|
8
|
+
}, T = () => typeof window < "u" && typeof window.document < "u" && typeof window.navigator < "u", g = T(), k = g ? navigator.userAgent : "", P = /android/i.test(k), Q = /firefox/i.test(k), B = /iPad|iPhone|iPod/.test(k), D, Z = g && // @ts-expect-error Typescript has not implemented userAgentData yet https://stackoverflow.com/a/71392474
|
|
9
|
+
/^Mac/i.test(((D = navigator.userAgentData) == null ? void 0 : D.platform) || navigator.platform), tt = g && window.CSSStyleSheet && document.adoptedStyleSheets, H = { once: !0, capture: !0, passive: !0 }, et = ":host(:not([hidden])) { display: block }", ot = "outline: 1px dotted; outline: 5px auto Highlight; outline: 5px auto -webkit-focus-ring-color", nt = `${P ? "data" : "aria"}-multiselectable`, it = typeof HTMLElement > "u" ? class {
|
|
10
|
+
} : HTMLElement, s = (t, e, o) => o === void 0 ? t.getAttribute(e) : (o === null ? t.removeAttribute(e) : t.getAttribute(e) !== o && t.setAttribute(e, o), null), L = (t, ...e) => {
|
|
11
|
+
const [o, ...n] = e;
|
|
12
|
+
for (const i of o.split(" ")) t.addEventListener(i, ...n);
|
|
13
|
+
return () => K(t, ...e);
|
|
14
|
+
}, K = (t, ...e) => {
|
|
15
|
+
const [o, ...n] = e;
|
|
16
|
+
for (const i of o.split(" ")) t.removeEventListener(i, ...n);
|
|
17
|
+
}, rt = (t, e) => {
|
|
18
|
+
const o = t.shadowRoot || t.attachShadow({ mode: "open" });
|
|
19
|
+
if (o.querySelector("slot") || o.append(y("slot")), !o.querySelector("style"))
|
|
20
|
+
if (!tt) o.append(y("style", null, e));
|
|
21
|
+
else {
|
|
22
|
+
const n = new CSSStyleSheet();
|
|
23
|
+
n.replaceSync(e), o.adoptedStyleSheets = [n];
|
|
24
|
+
}
|
|
25
|
+
return o;
|
|
26
|
+
}, at = (t, e, o) => {
|
|
27
|
+
const n = new MutationObserver((r) => {
|
|
28
|
+
if (!T() || !t.isConnected) return i();
|
|
29
|
+
e(t, r);
|
|
30
|
+
}), i = Object.assign(() => n.disconnect(), {
|
|
31
|
+
takeRecords: () => n.takeRecords()
|
|
32
|
+
// Expose takeRecords - useful if mutating a attribute that is observed
|
|
33
|
+
});
|
|
34
|
+
return e(t), n.observe(t, o), i;
|
|
35
|
+
}, lt = (t) => {
|
|
36
|
+
var e;
|
|
37
|
+
const o = ((e = t.getRootNode) == null ? void 0 : e.call(t)) || t.ownerDocument;
|
|
38
|
+
return o instanceof Document || o instanceof ShadowRoot ? o : document;
|
|
39
|
+
}, O = (t) => lt(t).activeElement, st = (t) => {
|
|
40
|
+
var e;
|
|
41
|
+
const o = s(t, "aria-label") || "";
|
|
42
|
+
return [
|
|
43
|
+
...(((e = s(t, "aria-labelledby")) == null ? void 0 : e.split(" ")) || []).map((i) => document.getElementById(i.trim() || "-")),
|
|
44
|
+
// Get all labelledby elements
|
|
45
|
+
...Array.from(t.labels || [])
|
|
46
|
+
// Get all <label> elements
|
|
47
|
+
].reduce((i, r) => {
|
|
48
|
+
var l;
|
|
49
|
+
return i || ((l = r?.innerText) == null ? void 0 : l.trim()) || "";
|
|
50
|
+
}, o).trim();
|
|
51
|
+
}, ut = (t) => {
|
|
52
|
+
if (!t || !g) return null;
|
|
53
|
+
if (window.uElementsId || (window.uElementsId = {}), !t.id) {
|
|
54
|
+
const e = t.nodeName.toLowerCase();
|
|
55
|
+
window.uElementsId[e] || (window.uElementsId[e] = 1), t.id = `:${e}${window.uElementsId[e]++}`;
|
|
56
|
+
}
|
|
57
|
+
return t.id;
|
|
58
|
+
}, y = (t, e, o) => {
|
|
59
|
+
const n = document.createElement(t);
|
|
60
|
+
if (o && (n.textContent = o), e) for (const [i, r] of Object.entries(e)) s(n, i, r);
|
|
61
|
+
return n;
|
|
62
|
+
}, ct = {
|
|
63
|
+
define: (t, e) => !T() || window.customElements.get(t) || window.customElements.define(t, e)
|
|
64
|
+
}, V = (t, e, o = "") => {
|
|
65
|
+
var n, i;
|
|
66
|
+
const r = { bubbles: !0, composed: !0, data: e, inputType: o }, l = HTMLInputElement.prototype;
|
|
67
|
+
t.dispatchEvent(new InputEvent("beforeinput", r)), (i = (n = Object.getOwnPropertyDescriptor(l, "value")) == null ? void 0 : n.set) == null || i.call(t, e), t.dispatchEvent(new InputEvent("input", r)), t.dispatchEvent(new Event("change", { bubbles: !0 }));
|
|
68
|
+
}, I = /* @__PURE__ */ new WeakSet(), q = (t, e) => (e?.type === "pointerdown" && (I.add(t), L(document, "pointerup", () => I.delete(t), H)), I.has(t)), dt = (t, e = "<slot></slot>") => `<template shadowrootmode="open">${e}<style>${t}</style></template>`, vt = (t) => {
|
|
69
|
+
const e = s(t, "form");
|
|
70
|
+
s(t, "form", "#"), setTimeout(pt, 0, t, e);
|
|
71
|
+
}, pt = (t, e) => s(t, "form", e), _ = (t) => {
|
|
72
|
+
var e;
|
|
73
|
+
return ((e = t?.textContent) == null ? void 0 : e.trim()) || "";
|
|
74
|
+
}, m, mt = 0, M = 0, x = (t) => {
|
|
75
|
+
clearTimeout(M), m || (m = y("div", { "aria-live": "assertive" }), m.style.overflow = "hidden", m.style.position = "fixed", m.style.whiteSpace = "nowrap", m.style.width = "1px"), m.isConnected || document.body.append(m), t === "" && (m.textContent = ""), t && (m.textContent = `${t}${mt++ % 2 ? " " : ""}`, M = setTimeout(x, !Z && Q ? 2e3 : 300, ""));
|
|
76
|
+
}, U = `${et}
|
|
77
|
+
:is(:host(:not([data-multiple])), :host([data-multiple="false"])) [part="items"] { display: none }
|
|
78
|
+
[role="listbox"] { display: contents }
|
|
79
|
+
::slotted(button[type="reset"]),::slotted(del) { font: inherit; border: 0; padding: 0; background: none; color: inherit; cursor: pointer; text-decoration: none }
|
|
80
|
+
::slotted(data) { cursor: pointer; pointer-events: none }
|
|
81
|
+
::slotted(data)::after { padding-inline: .5ch; pointer-events: auto }
|
|
82
|
+
::slotted(data)::after,::slotted(button[type="reset"]:empty)::before,::slotted(del:empty)::before { content: '\\00D7'; content: '\\00D7' / '' }
|
|
83
|
+
::slotted(data:focus),::slotted(del:focus),::slotted(button[type="reset"]:focus) { ${ot} }`, Lt = dt(U), f = "aria-label", ft = 'button[type="reset"],del', ht = 'datalist,[role="listbox"]', _t = 'option,[role="option"]', N = "blur focus click input keydown pointerdown", S = "false", w = {
|
|
84
|
+
added: "Added",
|
|
85
|
+
clear: "Clear input",
|
|
86
|
+
empty: "No selected",
|
|
87
|
+
found: "Navigate left to find %d selected",
|
|
88
|
+
invalid: "Invalid value",
|
|
89
|
+
items: "Selected",
|
|
90
|
+
// Note: Not announced by NVDA
|
|
91
|
+
of: "of",
|
|
92
|
+
remove: "Press to remove",
|
|
93
|
+
removed: "Removed"
|
|
94
|
+
}, bt = class extends it {
|
|
95
|
+
constructor() {
|
|
96
|
+
super(), this._focusMoved = !1, this._itemSingleVale = "", this._speak = "", this._texts = J({}, w), this._value = "";
|
|
97
|
+
const t = rt(this, U);
|
|
98
|
+
this._listbox = t.querySelector('[role="listbox"]') || y("div"), this._listbox.innerHTML = '<slot name="items"></slot>', s(this._listbox, "aria-orientation", "horizontal"), s(this._listbox, "role", "listbox"), s(this._listbox, "part", "items"), s(this._listbox, "tabindex", "-1"), t.prepend(this._listbox);
|
|
99
|
+
}
|
|
100
|
+
// Locally store value to store value before input-click
|
|
101
|
+
static get observedAttributes() {
|
|
102
|
+
return Object.keys(w).map((t) => `data-sr-${t}`);
|
|
103
|
+
}
|
|
104
|
+
connectedCallback() {
|
|
105
|
+
L(this, N, this, !0), this._umutate = at(this, It, {
|
|
106
|
+
attributeFilter: ["id", "value", "role"],
|
|
107
|
+
// Respond to changes in <data> value or id or role of <datalist>
|
|
108
|
+
attributes: !0,
|
|
109
|
+
characterData: !0,
|
|
110
|
+
// Respond to changes in <data> textContent
|
|
111
|
+
childList: !0,
|
|
112
|
+
subtree: !0
|
|
113
|
+
}), E(this), A(this);
|
|
114
|
+
}
|
|
115
|
+
attributeChangedCallback(t, e, o) {
|
|
116
|
+
const n = t.split("data-sr-")[1];
|
|
117
|
+
w[n] && (this._texts[n] = o || w[n]), n === "clear" && this.clear && s(this.clear, f, this._texts.clear);
|
|
118
|
+
}
|
|
119
|
+
disconnectedCallback() {
|
|
120
|
+
var t;
|
|
121
|
+
K(this, N, this, !0), (t = this._umutate) == null || t.call(this), this._umutate = this._list = this._options = this._match = void 0, this._items = this._clear = this._control = this._select = void 0;
|
|
122
|
+
}
|
|
123
|
+
handleEvent(t) {
|
|
124
|
+
var e, o;
|
|
125
|
+
(e = this.control) != null && e.disabled || (o = this.control) != null && o.readOnly || (t.type === "blur" && yt(this), t.type === "click" && wt(this, t), t.type === "focus" && x(), t.type === "input" && Et(this, t), t.type === "keydown" && gt(this, t), t.type === "pointerdown" && q(this, t));
|
|
126
|
+
}
|
|
127
|
+
get multiple() {
|
|
128
|
+
var t;
|
|
129
|
+
return ((t = s(this, "data-multiple")) != null ? t : S) !== S;
|
|
130
|
+
}
|
|
131
|
+
set multiple(t) {
|
|
132
|
+
s(this, "data-multiple", t ? "" : null);
|
|
133
|
+
}
|
|
134
|
+
get creatable() {
|
|
135
|
+
var t;
|
|
136
|
+
return ((t = s(this, "data-creatable")) != null ? t : S) !== S;
|
|
137
|
+
}
|
|
138
|
+
set creatable(t) {
|
|
139
|
+
s(this, "data-creatable", t ? "" : null);
|
|
140
|
+
}
|
|
141
|
+
get control() {
|
|
142
|
+
var t;
|
|
143
|
+
return (t = this._control) != null && t.isConnected || (this._control = this.querySelector("input")), this._control;
|
|
144
|
+
}
|
|
145
|
+
get list() {
|
|
146
|
+
var t;
|
|
147
|
+
return (t = this._list) != null && t.isConnected || (this._list = this.querySelector(ht), this._options = void 0), this._list;
|
|
148
|
+
}
|
|
149
|
+
get clear() {
|
|
150
|
+
var t;
|
|
151
|
+
return (t = this._clear) != null && t.isConnected || (this._clear = this.querySelector(ft)), this._clear;
|
|
152
|
+
}
|
|
153
|
+
get items() {
|
|
154
|
+
return this._items || (this._items = this.getElementsByTagName("data")), this._items;
|
|
155
|
+
}
|
|
156
|
+
get options() {
|
|
157
|
+
var t, e, o;
|
|
158
|
+
const n = !this._options && ((e = (t = this.list) == null ? void 0 : t.querySelector(_t)) == null ? void 0 : e.nodeName);
|
|
159
|
+
return n && (this._options = (o = this.list) == null ? void 0 : o.getElementsByTagName(n)), this._options || this.getElementsByTagName("-");
|
|
160
|
+
}
|
|
161
|
+
get values() {
|
|
162
|
+
return Array.from(this.items, ({ value: t }) => t);
|
|
163
|
+
}
|
|
164
|
+
}, j = (t) => {
|
|
165
|
+
var e;
|
|
166
|
+
const { creatable: o, control: n, options: i, multiple: r } = t, l = ((e = n?.value) == null ? void 0 : e.trim()) || "", u = l.toLowerCase() || null;
|
|
167
|
+
let a = [...i].find((c) => c.label.trim().toLowerCase() === u);
|
|
168
|
+
const d = { bubbles: !0, cancelable: !0, detail: a };
|
|
169
|
+
if (t.dispatchEvent(new CustomEvent("comboboxbeforematch", d)) || (a = [...i].find((c) => c.selected)), r) W(t);
|
|
170
|
+
else for (const c of i) c.selected = c === a;
|
|
171
|
+
return !a && o && l ? { value: l, label: l } : a && { value: a.value, label: a.label };
|
|
172
|
+
}, b = (t, e, o = !0) => {
|
|
173
|
+
const { _texts: n, control: i, items: r, multiple: l } = t;
|
|
174
|
+
if (!e)
|
|
175
|
+
return l ? x(n.invalid) : !i?.value && r[0] ? b(t, r[0]) : E(t);
|
|
176
|
+
const u = [...r].findIndex((p) => p.value === e.value), a = r[u], d = a === O(t) && (l && (r[u - 1] || r[u + 1]) || i);
|
|
177
|
+
if (a && !o) return E(t);
|
|
178
|
+
d && d.focus(), t._focusMoved = !!d;
|
|
179
|
+
const c = y("data", { value: e.value }, e.label || e.value), v = { bubbles: !0, cancelable: !0, detail: a || c };
|
|
180
|
+
if (t.dispatchEvent(new CustomEvent("comboboxbeforeselect", v))) {
|
|
181
|
+
if (!l) for (const p of [...r]) p.remove();
|
|
182
|
+
a ? a.remove() : i?.insertAdjacentElement("beforebegin", c), t.dispatchEvent(new CustomEvent("comboboxafterselect", v));
|
|
183
|
+
}
|
|
184
|
+
}, yt = (t) => q(t) || setTimeout(St, 0, t), St = (t) => t.multiple || t.contains(O(t)) || b(t, t._match, !1), wt = (t, e) => {
|
|
185
|
+
const { clientX: o, clientY: n, target: i } = e, { clear: r, control: l, items: u } = t;
|
|
186
|
+
if (l && r?.contains(i))
|
|
187
|
+
return e.preventDefault(), V(l, "", "deleteContentBackward"), l.focus();
|
|
188
|
+
for (const a of u) {
|
|
189
|
+
if (a.contains(i)) return b(t, a);
|
|
190
|
+
const d = a.getBoundingClientRect(), { top: c, right: v, bottom: p, left: C, width: h, height: X } = d;
|
|
191
|
+
if (h && X && n >= c && n <= p && o >= C && o <= v) return a.focus();
|
|
192
|
+
}
|
|
193
|
+
i === t && l?.focus();
|
|
194
|
+
}, Et = (t, e) => {
|
|
195
|
+
var o;
|
|
196
|
+
const { control: n, options: i, multiple: r } = t, l = n?.value || null, u = e instanceof InputEvent ? !e.inputType || e.inputType === "insertReplacementText" : !!n?.value;
|
|
197
|
+
if (u || (t._value = n?.value || ""), u) {
|
|
198
|
+
(o = e.stopImmediatePropagation) == null || o.call(e);
|
|
199
|
+
const a = [...i].find((d) => d.value === l);
|
|
200
|
+
if (n && (n.value = t._value), a) return b(t, a, r);
|
|
201
|
+
} else r || (t._match = j(t));
|
|
202
|
+
A(t);
|
|
203
|
+
}, gt = (t, e) => {
|
|
204
|
+
e.ctrlKey || e.metaKey || e.shiftKey || e.key === "Alt" || (t.control === e.target ? xt(t, e) : Ct(t, e));
|
|
205
|
+
}, xt = (t, e) => {
|
|
206
|
+
var o;
|
|
207
|
+
const { _match: n, clear: i, control: r, items: l, multiple: u } = t;
|
|
208
|
+
(e.key === "ArrowLeft" || e.key === "Backspace") && !r?.selectionEnd && ((o = l[l.length - 1]) == null || o.focus()), e.key === "Enter" && r && (vt(r), b(t, u ? j(t) : n, u)), e.key === "Tab" && !e.shiftKey && i && !i.hidden && (e.preventDefault(), s(i, "aria-hidden", "false"), s(i, "tabindex", "0"), i.focus(), L(i, "blur", () => A(t), H));
|
|
209
|
+
}, Ct = (t, e) => {
|
|
210
|
+
var o, n, i;
|
|
211
|
+
const { clear: r, control: l, items: u } = t, { key: a, repeat: d, target: c } = e, v = [...u].indexOf(c);
|
|
212
|
+
if ((a === " " || a === "Enter") && (u[v] || c === r))
|
|
213
|
+
return (o = u[v] || r) == null || o.click(), e.preventDefault();
|
|
214
|
+
if (u[v]) {
|
|
215
|
+
if (a === "ArrowLeft") return (n = u[v - 1]) == null ? void 0 : n.focus();
|
|
216
|
+
if (a === "ArrowRight") return (i = u[v + 1] || l) == null ? void 0 : i.focus();
|
|
217
|
+
if (a === "Backspace")
|
|
218
|
+
return e.preventDefault(), d || b(t, u[v]);
|
|
219
|
+
l?.focus();
|
|
220
|
+
}
|
|
221
|
+
}, It = (t, e) => {
|
|
222
|
+
var o;
|
|
223
|
+
if (!t.control) return;
|
|
224
|
+
const { _texts: n, control: i, items: r, list: l, multiple: u } = t, a = [];
|
|
225
|
+
for (const { addedNodes: p, removedNodes: C } of e || []) {
|
|
226
|
+
for (const h of p) h instanceof HTMLDataElement && a.unshift(h);
|
|
227
|
+
for (const h of C) h instanceof HTMLDataElement && a.push(h);
|
|
228
|
+
}
|
|
229
|
+
const d = O(t);
|
|
230
|
+
if ((u ? a.length === 1 : a[0] === d) && t.contains(d)) {
|
|
231
|
+
const p = i ? s(i, f) : null;
|
|
232
|
+
t._speak = `${n[a[0].isConnected ? "added" : "removed"]} ${_(a[0])}, `, s(i, f, `${t._speak}${st(i)}`), t._focusMoved || setTimeout(() => x(t._speak.slice(0, -2))), setTimeout(Tt, 300, t, p);
|
|
233
|
+
}
|
|
234
|
+
if (!u) {
|
|
235
|
+
const p = _(r[0]);
|
|
236
|
+
p !== t._itemSingleVale && E(t), t._itemSingleVale = p;
|
|
237
|
+
}
|
|
238
|
+
F(t), W(t), kt(t);
|
|
239
|
+
const v = `${r.length ? n.found.replace("%d", `${r.length}`) : n.empty}`;
|
|
240
|
+
s(i, "aria-description", u ? v : null), s(i, "list", ut(l)), s(t._listbox, f, n.items), (o = t._umutate) == null || o.takeRecords();
|
|
241
|
+
}, Tt = (t, e) => {
|
|
242
|
+
t._speak = "", t.control && s(t.control, f, e), F(t);
|
|
243
|
+
}, F = (t) => {
|
|
244
|
+
const { _texts: e, _speak: o, items: n } = t;
|
|
245
|
+
let i = 0;
|
|
246
|
+
for (const r of n) {
|
|
247
|
+
const l = `${o}${_(r)}, ${e.remove}${B ? `, ${++i} ${e.of} ${n.length}` : ""}`;
|
|
248
|
+
s(r, f, l), s(r, "role", "option"), s(r, "slot", "items"), s(r, "tabindex", "-1"), s(r, "value", r.value || _(r));
|
|
249
|
+
}
|
|
250
|
+
}, kt = (t) => {
|
|
251
|
+
var e, o;
|
|
252
|
+
if ((e = t._select) != null && e.isConnected || (t._select = t.querySelector("select")), !t._select) return;
|
|
253
|
+
const { _select: n, items: i, multiple: r } = t, l = [];
|
|
254
|
+
let u = 0;
|
|
255
|
+
s(n, "multiple", r ? "" : null);
|
|
256
|
+
for (const a of i) {
|
|
257
|
+
const d = n?.options[u++], c = _(a), v = a?.value;
|
|
258
|
+
d ? Object.assign(d, {
|
|
259
|
+
defaultSelected: !0,
|
|
260
|
+
selected: !0,
|
|
261
|
+
text: c,
|
|
262
|
+
value: v
|
|
263
|
+
}) : l.push(new Option(c, v, !0, !0));
|
|
264
|
+
}
|
|
265
|
+
if (l.length) n.append(...l);
|
|
266
|
+
else for (const a of [...n.options].slice(u)) a.remove();
|
|
267
|
+
(o = t._umutate) == null || o.takeRecords();
|
|
268
|
+
}, A = (t) => {
|
|
269
|
+
if (!t.clear) return;
|
|
270
|
+
const { clear: e, control: o } = t, n = !o?.value || o?.disabled || o?.readOnly;
|
|
271
|
+
e.nodeName === "DEL" && s(e, "role", "button"), s(e, f) || s(e, f, t._texts.clear), s(e, "aria-hidden", `${B || P}`), s(e, "hidden", n ? "" : null), s(e, "tabindex", "-1");
|
|
272
|
+
}, W = (t) => {
|
|
273
|
+
if (!t.list) return;
|
|
274
|
+
const { _texts: e, list: o, multiple: n, options: i, values: r } = t;
|
|
275
|
+
s(o, "data-sr-of", e.of), s(o, nt, `${n}`);
|
|
276
|
+
for (const l of i) l.selected = r.includes(l.value);
|
|
277
|
+
}, E = (t) => {
|
|
278
|
+
if (!t.control || t.multiple) return;
|
|
279
|
+
const { control: e, items: o } = t, n = _(o[0]), i = n ? "insertText" : "deleteContentBackward";
|
|
280
|
+
n !== e.value && V(e, n, i);
|
|
281
|
+
};
|
|
282
|
+
ct.define("u-combobox", bt);
|
|
283
|
+
export {
|
|
284
|
+
bt as UHTMLComboboxElement,
|
|
285
|
+
Lt as UHTMLComboboxShadowRoot,
|
|
286
|
+
U as UHTMLComboboxStyle
|
|
287
|
+
};
|
|
288
|
+
//# sourceMappingURL=u-combobox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"u-combobox.js","sources":["../../../../../node_modules/@u-elements/u-combobox/dist/u-combobox.js"],"sourcesContent":["var __defProp = Object.defineProperty;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\n\n// ../utils.ts\nvar isBrowser = () => typeof window !== \"undefined\" && typeof window.document !== \"undefined\" && typeof window.navigator !== \"undefined\";\nvar IS_BROWSER = isBrowser();\nvar AGENT = IS_BROWSER ? navigator.userAgent : \"\";\nvar IS_ANDROID = /android/i.test(AGENT);\nvar IS_FIREFOX = /firefox/i.test(AGENT);\nvar IS_IOS = /iPad|iPhone|iPod/.test(AGENT);\nvar _a;\nvar IS_MAC = IS_BROWSER && // @ts-expect-error Typescript has not implemented userAgentData yet https://stackoverflow.com/a/71392474\n/^Mac/i.test(((_a = navigator.userAgentData) == null ? void 0 : _a.platform) || navigator.platform);\nvar SUPPORTS_CONSTRUCTED_CSS = IS_BROWSER && window.CSSStyleSheet && document.adoptedStyleSheets;\nvar EVENT_ONCE = { once: true, capture: true, passive: true };\nvar DISPLAY_BLOCK = \":host(:not([hidden])) { display: block }\";\nvar FOCUS_OUTLINE = `outline: 1px dotted; outline: 5px auto Highlight; outline: 5px auto -webkit-focus-ring-color`;\nvar SAFE_MULTISELECTABLE = `${IS_ANDROID ? \"data\" : \"aria\"}-multiselectable`;\nvar UHTMLElement = typeof HTMLElement === \"undefined\" ? class {\n} : HTMLElement;\nvar attr = (el, name, value) => {\n if (value === void 0) return el.getAttribute(name);\n if (value === null) el.removeAttribute(name);\n else if (el.getAttribute(name) !== value) el.setAttribute(name, value);\n return null;\n};\nvar on = (el, ...rest) => {\n const [types, ...options] = rest;\n for (const type of types.split(\" \")) el.addEventListener(type, ...options);\n return () => off(el, ...rest);\n};\nvar off = (el, ...rest) => {\n const [types, ...options] = rest;\n for (const type of types.split(\" \")) el.removeEventListener(type, ...options);\n};\nvar attachStyle = (el, css) => {\n const root = el.shadowRoot || el.attachShadow({ mode: \"open\" });\n if (!root.querySelector(\"slot\")) root.append(tag(\"slot\"));\n if (!root.querySelector(\"style\")) {\n if (!SUPPORTS_CONSTRUCTED_CSS) root.append(tag(\"style\", null, css));\n else {\n const sheet = new CSSStyleSheet();\n sheet.replaceSync(css);\n root.adoptedStyleSheets = [sheet];\n }\n }\n return root;\n};\nvar onMutation = (el, callback, options) => {\n const observer = new MutationObserver((records) => {\n if (!isBrowser() || !el.isConnected) return cleanup();\n callback(el, records);\n });\n const cleanup = Object.assign(() => observer.disconnect(), {\n takeRecords: () => observer.takeRecords()\n // Expose takeRecords - useful if mutating a attribute that is observed\n });\n callback(el);\n observer.observe(el, options);\n return cleanup;\n};\nvar getRoot = (node) => {\n var _a2;\n const root = ((_a2 = node.getRootNode) == null ? void 0 : _a2.call(node)) || node.ownerDocument;\n return root instanceof Document || root instanceof ShadowRoot ? root : document;\n};\nvar getFocusedElement = (node) => getRoot(node).activeElement;\nvar getLabel = (el) => {\n var _a2;\n const label = attr(el, \"aria-label\") || \"\";\n const labels = ((_a2 = attr(el, \"aria-labelledby\")) == null ? void 0 : _a2.split(\" \")) || [];\n return [\n ...labels.map((id) => document.getElementById(id.trim() || \"-\")),\n // Get all labelledby elements\n ...Array.from(el.labels || [])\n // Get all <label> elements\n ].reduce((acc, el2) => {\n var _a3;\n return acc || ((_a3 = el2 == null ? void 0 : el2.innerText) == null ? void 0 : _a3.trim()) || \"\";\n }, label).trim();\n};\nvar useId = (el) => {\n if (!el || !IS_BROWSER) return null;\n if (!window.uElementsId) window.uElementsId = {};\n if (!el.id) {\n const node = el.nodeName.toLowerCase();\n if (!window.uElementsId[node]) window.uElementsId[node] = 1;\n el.id = `:${node}${window.uElementsId[node]++}`;\n }\n return el.id;\n};\nvar tag = (tagName, attrs, content) => {\n const el = document.createElement(tagName);\n if (content) el.textContent = content;\n if (attrs) for (const [key, val] of Object.entries(attrs)) attr(el, key, val);\n return el;\n};\nvar customElements = {\n define: (name, instance) => !isBrowser() || window.customElements.get(name) || window.customElements.define(name, instance)\n};\nvar setValue = (input, data, type = \"\") => {\n var _a2, _b;\n const event = { bubbles: true, composed: true, data, inputType: type };\n const proto = HTMLInputElement.prototype;\n input.dispatchEvent(new InputEvent(\"beforeinput\", event));\n (_b = (_a2 = Object.getOwnPropertyDescriptor(proto, \"value\")) == null ? void 0 : _a2.set) == null ? void 0 : _b.call(input, data);\n input.dispatchEvent(new InputEvent(\"input\", event));\n input.dispatchEvent(new Event(\"change\", { bubbles: true }));\n};\nvar IS_PRESS = /* @__PURE__ */ new WeakSet();\nvar isPointerDown = (el, e) => {\n if ((e == null ? void 0 : e.type) === \"pointerdown\") {\n IS_PRESS.add(el);\n on(document, \"pointerup\", () => IS_PRESS.delete(el), EVENT_ONCE);\n }\n return IS_PRESS.has(el);\n};\nvar declarativeShadowRoot = (style, slot = \"<slot></slot>\") => `<template shadowrootmode=\"open\">${slot}<style>${style}</style></template>`;\nvar preventSubmit = (input) => {\n const form = attr(input, \"form\");\n attr(input, \"form\", \"#\");\n setTimeout(restoreSubmit, 0, input, form);\n};\nvar restoreSubmit = (input, form) => attr(input, \"form\", form);\nvar getText = (el) => {\n var _a2;\n return ((_a2 = el == null ? void 0 : el.textContent) == null ? void 0 : _a2.trim()) || \"\";\n};\nvar LIVE;\nvar LIVE_SR_FIX = 0;\nvar LIVE_CLEAR = 0;\nvar speak = (text) => {\n clearTimeout(LIVE_CLEAR);\n if (!LIVE) {\n LIVE = tag(\"div\", { \"aria-live\": \"assertive\" });\n LIVE.style.overflow = \"hidden\";\n LIVE.style.position = \"fixed\";\n LIVE.style.whiteSpace = \"nowrap\";\n LIVE.style.width = \"1px\";\n }\n if (!LIVE.isConnected) document.body.append(LIVE);\n if (text === \"\") LIVE.textContent = \"\";\n if (text) {\n LIVE.textContent = `${text}${LIVE_SR_FIX++ % 2 ? \"\\xA0\" : \"\"}`;\n LIVE_CLEAR = setTimeout(speak, !IS_MAC && IS_FIREFOX ? 2e3 : 300, \"\");\n }\n};\n\n// u-combobox.ts\nvar UHTMLComboboxStyle = `${DISPLAY_BLOCK}\n:is(:host(:not([data-multiple])), :host([data-multiple=\"false\"])) [part=\"items\"] { display: none }\n[role=\"listbox\"] { display: contents }\n::slotted(button[type=\"reset\"]),::slotted(del) { font: inherit; border: 0; padding: 0; background: none; color: inherit; cursor: pointer; text-decoration: none }\n::slotted(data) { cursor: pointer; pointer-events: none }\n::slotted(data)::after { padding-inline: .5ch; pointer-events: auto }\n::slotted(data)::after,::slotted(button[type=\"reset\"]:empty)::before,::slotted(del:empty)::before { content: '\\\\00D7'; content: '\\\\00D7' / '' }\n::slotted(data:focus),::slotted(del:focus),::slotted(button[type=\"reset\"]:focus) { ${FOCUS_OUTLINE} }`;\nvar UHTMLComboboxShadowRoot = declarativeShadowRoot(UHTMLComboboxStyle);\nvar ARIA_LABEL = \"aria-label\";\nvar CSS_CLEAR = `button[type=\"reset\"],del`;\nvar CSS_DATALIST = `datalist,[role=\"listbox\"]`;\nvar CSS_OPTION = `option,[role=\"option\"]`;\nvar EVENTS = \"blur focus click input keydown pointerdown\";\nvar FALSE = \"false\";\nvar TEXTS = {\n added: \"Added\",\n clear: \"Clear input\",\n empty: \"No selected\",\n found: \"Navigate left to find %d selected\",\n invalid: \"Invalid value\",\n items: \"Selected\",\n // Note: Not announced by NVDA\n of: \"of\",\n remove: \"Press to remove\",\n removed: \"Removed\"\n};\nvar UHTMLComboboxElement = class extends UHTMLElement {\n constructor() {\n super();\n this._focusMoved = false;\n // Used to determine if we announce through aria-live or aria-label when items are added or removed\n this._itemSingleVale = \"\";\n // Used to store current match\n this._speak = \"\";\n this._texts = __spreadValues({}, TEXTS);\n this._value = \"\";\n const root = attachStyle(this, UHTMLComboboxStyle);\n this._listbox = root.querySelector('[role=\"listbox\"]') || tag(\"div\");\n this._listbox.innerHTML = `<slot name=\"items\"></slot>`;\n attr(this._listbox, \"aria-orientation\", \"horizontal\");\n attr(this._listbox, \"role\", \"listbox\");\n attr(this._listbox, \"part\", \"items\");\n attr(this._listbox, \"tabindex\", \"-1\");\n root.prepend(this._listbox);\n }\n // Locally store value to store value before input-click\n static get observedAttributes() {\n return Object.keys(TEXTS).map((key) => `data-sr-${key}`);\n }\n connectedCallback() {\n on(this, EVENTS, this, true);\n this._umutate = onMutation(this, onMutations, {\n attributeFilter: [\"id\", \"value\", \"role\"],\n // Respond to changes in <data> value or id or role of <datalist>\n attributes: true,\n characterData: true,\n // Respond to changes in <data> textContent\n childList: true,\n subtree: true\n });\n syncInputWithItemSingleMode(this);\n syncClearWithInput(this);\n }\n attributeChangedCallback(prop, _, val) {\n const text = prop.split(\"data-sr-\")[1];\n if (TEXTS[text]) this._texts[text] = val || TEXTS[text];\n if (text === \"clear\" && this.clear)\n attr(this.clear, ARIA_LABEL, this._texts.clear);\n }\n disconnectedCallback() {\n var _a2;\n off(this, EVENTS, this, true);\n (_a2 = this._umutate) == null ? void 0 : _a2.call(this);\n this._umutate = this._list = this._options = this._match = void 0;\n this._items = this._clear = this._control = this._select = void 0;\n }\n handleEvent(event) {\n var _a2, _b;\n if (((_a2 = this.control) == null ? void 0 : _a2.disabled) || ((_b = this.control) == null ? void 0 : _b.readOnly)) return;\n if (event.type === \"blur\") onBlur(this);\n if (event.type === \"click\") onClick(this, event);\n if (event.type === \"focus\") speak();\n if (event.type === \"input\") onInput(this, event);\n if (event.type === \"keydown\") onKeyDown(this, event);\n if (event.type === \"pointerdown\") isPointerDown(this, event);\n }\n get multiple() {\n var _a2;\n return ((_a2 = attr(this, \"data-multiple\")) != null ? _a2 : FALSE) !== FALSE;\n }\n set multiple(value) {\n attr(this, \"data-multiple\", value ? \"\" : null);\n }\n get creatable() {\n var _a2;\n return ((_a2 = attr(this, \"data-creatable\")) != null ? _a2 : FALSE) !== FALSE;\n }\n set creatable(value) {\n attr(this, \"data-creatable\", value ? \"\" : null);\n }\n get control() {\n var _a2;\n if (!((_a2 = this._control) == null ? void 0 : _a2.isConnected))\n this._control = this.querySelector(\"input\");\n return this._control;\n }\n get list() {\n var _a2;\n if (!((_a2 = this._list) == null ? void 0 : _a2.isConnected)) {\n this._list = this.querySelector(CSS_DATALIST);\n this._options = void 0;\n }\n return this._list;\n }\n get clear() {\n var _a2;\n if (!((_a2 = this._clear) == null ? void 0 : _a2.isConnected)) this._clear = this.querySelector(CSS_CLEAR);\n return this._clear;\n }\n get items() {\n if (!this._items) this._items = this.getElementsByTagName(\"data\");\n return this._items;\n }\n get options() {\n var _a2, _b, _c;\n const el = !this._options && ((_b = (_a2 = this.list) == null ? void 0 : _a2.querySelector(CSS_OPTION)) == null ? void 0 : _b.nodeName);\n if (el) this._options = (_c = this.list) == null ? void 0 : _c.getElementsByTagName(el);\n return this._options || this.getElementsByTagName(\"-\");\n }\n get values() {\n return Array.from(this.items, ({ value }) => value);\n }\n};\nvar dispatchMatch = (self) => {\n var _a2;\n const { creatable, control, options, multiple } = self;\n const value = ((_a2 = control == null ? void 0 : control.value) == null ? void 0 : _a2.trim()) || \"\";\n const query = value.toLowerCase() || null;\n let match = [...options].find((o) => o.label.trim().toLowerCase() === query);\n const event = { bubbles: true, cancelable: true, detail: match };\n if (!self.dispatchEvent(new CustomEvent(\"comboboxbeforematch\", event)))\n match = [...options].find((o) => o.selected);\n if (!multiple) for (const o of options) o.selected = o === match;\n else syncOptionsWithItems(self);\n if (!match && creatable && value) return { value, label: value };\n return match && { value: match.value, label: match.label };\n};\nvar dispatchSelect = (self, item, canRemove = true) => {\n const { _texts, control, items, multiple } = self;\n if (!item) {\n if (multiple) return speak(_texts.invalid);\n if (!(control == null ? void 0 : control.value) && items[0]) return dispatchSelect(self, items[0]);\n return syncInputWithItemSingleMode(self);\n }\n const index = [...items].findIndex((i) => i.value === item.value);\n const remove = items[index];\n const focus = remove === getFocusedElement(self) && (multiple ? items[index - 1] || items[index + 1] || control : control);\n if (remove && !canRemove) return syncInputWithItemSingleMode(self);\n if (focus) focus.focus();\n self._focusMoved = !!focus;\n const add = tag(\"data\", { value: item.value }, item.label || item.value);\n const event = { bubbles: true, cancelable: true, detail: remove || add };\n if (self.dispatchEvent(new CustomEvent(\"comboboxbeforeselect\", event))) {\n if (!multiple) for (const item2 of [...items]) item2.remove();\n if (remove) remove.remove();\n else control == null ? void 0 : control.insertAdjacentElement(\"beforebegin\", add);\n self.dispatchEvent(new CustomEvent(\"comboboxafterselect\", event));\n }\n};\nvar onBlur = (self) => isPointerDown(self) || setTimeout(onBlurred, 0, self);\nvar onBlurred = (self) => self.multiple || self.contains(getFocusedElement(self)) || dispatchSelect(self, self._match, false);\nvar onClick = (self, event) => {\n const { clientX: x, clientY: y, target } = event;\n const { clear, control, items } = self;\n if (control && (clear == null ? void 0 : clear.contains(target))) {\n event.preventDefault();\n setValue(control, \"\", \"deleteContentBackward\");\n return control.focus();\n }\n for (const item of items) {\n if (item.contains(target)) return dispatchSelect(self, item);\n const rect = item.getBoundingClientRect();\n const { top: t, right: r, bottom: b, left: l, width: w, height: h } = rect;\n if (w && h && y >= t && y <= b && x >= l && x <= r) return item.focus();\n }\n if (target === self) control == null ? void 0 : control.focus();\n};\nvar onInput = (self, event) => {\n var _a2;\n const { control, options, multiple } = self;\n const value = (control == null ? void 0 : control.value) || null;\n const isDatalistClick = event instanceof InputEvent ? !event.inputType || event.inputType === \"insertReplacementText\" : !!(control == null ? void 0 : control.value);\n if (!isDatalistClick) self._value = (control == null ? void 0 : control.value) || \"\";\n if (isDatalistClick) {\n (_a2 = event.stopImmediatePropagation) == null ? void 0 : _a2.call(event);\n const clicked = [...options].find((o) => o.value === value);\n if (control) control.value = self._value;\n if (clicked) return dispatchSelect(self, clicked, multiple);\n } else if (!multiple) self._match = dispatchMatch(self);\n syncClearWithInput(self);\n};\nvar onKeyDown = (self, e) => {\n if (e.ctrlKey || e.metaKey || e.shiftKey || e.key === \"Alt\") return;\n if (self.control === e.target) onKeyDownControl(self, e);\n else onKeyDownItems(self, e);\n};\nvar onKeyDownControl = (self, e) => {\n var _a2;\n const { _match, clear, control: input, items, multiple } = self;\n if ((e.key === \"ArrowLeft\" || e.key === \"Backspace\") && !(input == null ? void 0 : input.selectionEnd))\n (_a2 = items[items.length - 1]) == null ? void 0 : _a2.focus();\n if (e.key === \"Enter\" && input) {\n preventSubmit(input);\n dispatchSelect(self, multiple ? dispatchMatch(self) : _match, multiple);\n }\n if (e.key === \"Tab\" && !e.shiftKey && clear && !clear.hidden) {\n e.preventDefault();\n attr(clear, \"aria-hidden\", \"false\");\n attr(clear, \"tabindex\", \"0\");\n clear.focus();\n on(clear, \"blur\", () => syncClearWithInput(self), EVENT_ONCE);\n }\n};\nvar onKeyDownItems = (self, event) => {\n var _a2, _b, _c;\n const { clear, control, items } = self;\n const { key, repeat, target } = event;\n const index = [...items].indexOf(target);\n const isKeyClick = key === \" \" || key === \"Enter\";\n if (isKeyClick && (items[index] || target === clear)) {\n (_a2 = items[index] || clear) == null ? void 0 : _a2.click();\n return event.preventDefault();\n }\n if (!items[index]) return;\n if (key === \"ArrowLeft\") return (_b = items[index - 1]) == null ? void 0 : _b.focus();\n if (key === \"ArrowRight\") return (_c = items[index + 1] || control) == null ? void 0 : _c.focus();\n if (key === \"Backspace\") {\n event.preventDefault();\n return repeat || dispatchSelect(self, items[index]);\n }\n control == null ? void 0 : control.focus();\n};\nvar onMutations = (self, edit) => {\n var _a2;\n if (!self.control) return;\n const { _texts, control, items, list, multiple } = self;\n const edits = [];\n for (const { addedNodes: add, removedNodes: del } of edit || []) {\n for (const el of add) if (el instanceof HTMLDataElement) edits.unshift(el);\n for (const el of del) if (el instanceof HTMLDataElement) edits.push(el);\n }\n const focus = getFocusedElement(self);\n const doSpeak = multiple ? edits.length === 1 : edits[0] === focus;\n if (doSpeak && self.contains(focus)) {\n const label = control ? attr(control, ARIA_LABEL) : null;\n self._speak = `${_texts[edits[0].isConnected ? \"added\" : \"removed\"]} ${getText(edits[0])}, `;\n attr(control, ARIA_LABEL, `${self._speak}${getLabel(control)}`);\n if (!self._focusMoved) setTimeout(() => speak(self._speak.slice(0, -2)));\n setTimeout(speakReset, 300, self, label);\n }\n if (!multiple) {\n const item = getText(items[0]);\n if (item !== self._itemSingleVale) syncInputWithItemSingleMode(self);\n self._itemSingleVale = item;\n }\n syncItems(self);\n syncOptionsWithItems(self);\n syncSelectWithItems(self);\n const hint = `${items.length ? _texts.found.replace(\"%d\", `${items.length}`) : _texts.empty}`;\n attr(control, \"aria-description\", multiple ? hint : null);\n attr(control, \"list\", useId(list));\n attr(self._listbox, ARIA_LABEL, _texts.items);\n (_a2 = self._umutate) == null ? void 0 : _a2.takeRecords();\n};\nvar speakReset = (self, label) => {\n self._speak = \"\";\n if (self.control) attr(self.control, ARIA_LABEL, label);\n syncItems(self);\n};\nvar syncItems = (self) => {\n const { _texts, _speak, items } = self;\n let idx = 0;\n for (const item of items) {\n const text = `${_speak}${getText(item)}, ${_texts.remove}${IS_IOS ? `, ${++idx} ${_texts.of} ${items.length}` : \"\"}`;\n attr(item, ARIA_LABEL, text);\n attr(item, \"role\", \"option\");\n attr(item, \"slot\", \"items\");\n attr(item, \"tabindex\", \"-1\");\n attr(item, \"value\", item.value || getText(item));\n }\n};\nvar syncSelectWithItems = (self) => {\n var _a2, _b;\n if (!((_a2 = self._select) == null ? void 0 : _a2.isConnected)) self._select = self.querySelector(\"select\");\n if (!self._select) return;\n const { _select, items, multiple } = self;\n const append = [];\n let idx = 0;\n attr(_select, \"multiple\", multiple ? \"\" : null);\n for (const item of items) {\n const option = _select == null ? void 0 : _select.options[idx++];\n const text = getText(item);\n const value = item == null ? void 0 : item.value;\n if (!option) append.push(new Option(text, value, true, true));\n else\n Object.assign(option, {\n defaultSelected: true,\n selected: true,\n text,\n value\n });\n }\n if (append.length) _select.append(...append);\n else for (const opt of [..._select.options].slice(idx)) opt.remove();\n (_b = self._umutate) == null ? void 0 : _b.takeRecords();\n};\nvar syncClearWithInput = (self) => {\n if (!self.clear) return;\n const { clear, control } = self;\n const hidden = !(control == null ? void 0 : control.value) || (control == null ? void 0 : control.disabled) || (control == null ? void 0 : control.readOnly);\n if (clear.nodeName === \"DEL\") attr(clear, \"role\", \"button\");\n if (!attr(clear, ARIA_LABEL)) attr(clear, ARIA_LABEL, self._texts.clear);\n attr(clear, \"aria-hidden\", `${IS_IOS || IS_ANDROID}`);\n attr(clear, \"hidden\", hidden ? \"\" : null);\n attr(clear, \"tabindex\", \"-1\");\n};\nvar syncOptionsWithItems = (self) => {\n if (!self.list) return;\n const { _texts, list, multiple, options, values } = self;\n attr(list, \"data-sr-of\", _texts.of);\n attr(list, SAFE_MULTISELECTABLE, `${multiple}`);\n for (const opt of options) opt.selected = values.includes(opt.value);\n};\nvar syncInputWithItemSingleMode = (self) => {\n if (!self.control || self.multiple) return;\n const { control, items } = self;\n const value = getText(items[0]);\n const action = value ? \"insertText\" : \"deleteContentBackward\";\n if (value !== control.value) setValue(control, value, action);\n};\ncustomElements.define(\"u-combobox\", UHTMLComboboxElement);\n\nexport { UHTMLComboboxElement, UHTMLComboboxShadowRoot, UHTMLComboboxStyle };\n"],"names":["__defProp","__getOwnPropSymbols","__hasOwnProp","__propIsEnum","__defNormalProp","obj","key","value","__spreadValues","a","b","prop","isBrowser","IS_BROWSER","AGENT","IS_ANDROID","IS_FIREFOX","IS_IOS","_a","IS_MAC","SUPPORTS_CONSTRUCTED_CSS","EVENT_ONCE","DISPLAY_BLOCK","FOCUS_OUTLINE","SAFE_MULTISELECTABLE","UHTMLElement","attr","el","name","on","rest","types","options","type","off","attachStyle","css","root","tag","sheet","onMutation","callback","observer","records","cleanup","getRoot","node","_a2","getFocusedElement","getLabel","label","id","acc","el2","_a3","useId","tagName","attrs","content","val","customElements","instance","setValue","input","data","_b","event","proto","IS_PRESS","isPointerDown","declarativeShadowRoot","style","slot","preventSubmit","form","restoreSubmit","getText","LIVE","LIVE_SR_FIX","LIVE_CLEAR","speak","text","UHTMLComboboxStyle","UHTMLComboboxShadowRoot","ARIA_LABEL","CSS_CLEAR","CSS_DATALIST","CSS_OPTION","EVENTS","FALSE","TEXTS","UHTMLComboboxElement","onMutations","syncInputWithItemSingleMode","syncClearWithInput","_","onBlur","onClick","onInput","onKeyDown","_c","dispatchMatch","self","creatable","control","multiple","query","match","o","syncOptionsWithItems","dispatchSelect","item","canRemove","_texts","items","index","i","remove","focus","add","item2","onBlurred","x","y","target","clear","rect","t","r","l","w","h","isDatalistClick","clicked","onKeyDownControl","onKeyDownItems","_match","repeat","edit","list","edits","del","speakReset","syncItems","syncSelectWithItems","hint","_speak","idx","_select","append","option","opt","hidden","values","action"],"mappings":"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","x_google_ignoreList":[0]}
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
var z = Object.defineProperty, H = Object.getOwnPropertySymbols, J = Object.prototype.hasOwnProperty, Q = Object.prototype.propertyIsEnumerable, B = (t, e, i) => e in t ? z(t, e, { enumerable: !0, configurable: !0, writable: !0, value: i }) : t[e] = i, Z = (t, e) => {
|
|
2
|
+
for (var i in e || (e = {}))
|
|
3
|
+
J.call(e, i) && B(t, i, e[i]);
|
|
4
|
+
if (H)
|
|
5
|
+
for (var i of H(e))
|
|
6
|
+
Q.call(e, i) && B(t, i, e[i]);
|
|
7
|
+
return t;
|
|
8
|
+
}, y = () => typeof window < "u" && typeof window.document < "u" && typeof window.navigator < "u", w = y(), O = w ? navigator.userAgent : "", S = /android/i.test(O), tt = /firefox/i.test(O), et = /iPad|iPhone|iPod/.test(O), U, it = w && // @ts-expect-error Typescript has not implemented userAgentData yet https://stackoverflow.com/a/71392474
|
|
9
|
+
/^Mac/i.test(((U = navigator.userAgentData) == null ? void 0 : U.platform) || navigator.platform), rt = w && window.CSSStyleSheet && document.adoptedStyleSheets, ot = { once: !0, capture: !0, passive: !0 }, nt = ":host(:not([hidden])) { display: block }", at = "outline: 1px dotted; outline: 5px auto Highlight; outline: 5px auto -webkit-focus-ring-color", st = `${S ? "data" : "aria"}-multiselectable`, K = typeof HTMLElement > "u" ? class {
|
|
10
|
+
} : HTMLElement, r = (t, e, i) => i === void 0 ? t.getAttribute(e) : (i === null ? t.removeAttribute(e) : t.getAttribute(e) !== i && t.setAttribute(e, i), null), D = (t, ...e) => {
|
|
11
|
+
const [i, ...o] = e;
|
|
12
|
+
for (const n of i.split(" ")) t.addEventListener(n, ...o);
|
|
13
|
+
return () => m(t, ...e);
|
|
14
|
+
}, m = (t, ...e) => {
|
|
15
|
+
const [i, ...o] = e;
|
|
16
|
+
for (const n of i.split(" ")) t.removeEventListener(n, ...o);
|
|
17
|
+
}, ut = (t, e) => {
|
|
18
|
+
const i = t.shadowRoot || t.attachShadow({ mode: "open" });
|
|
19
|
+
if (i.querySelector("slot") || i.append(x("slot")), !i.querySelector("style"))
|
|
20
|
+
if (!rt) i.append(x("style", null, e));
|
|
21
|
+
else {
|
|
22
|
+
const o = new CSSStyleSheet();
|
|
23
|
+
o.replaceSync(e), i.adoptedStyleSheets = [o];
|
|
24
|
+
}
|
|
25
|
+
return i;
|
|
26
|
+
}, dt = (t, e, i) => {
|
|
27
|
+
const o = new MutationObserver((a) => {
|
|
28
|
+
if (!y() || !t.isConnected) return n();
|
|
29
|
+
e(t, a);
|
|
30
|
+
}), n = Object.assign(() => o.disconnect(), {
|
|
31
|
+
takeRecords: () => o.takeRecords()
|
|
32
|
+
// Expose takeRecords - useful if mutating a attribute that is observed
|
|
33
|
+
});
|
|
34
|
+
return e(t), o.observe(t, i), n;
|
|
35
|
+
}, b = (t) => {
|
|
36
|
+
var e;
|
|
37
|
+
const i = ((e = t.getRootNode) == null ? void 0 : e.call(t)) || t.ownerDocument;
|
|
38
|
+
return i instanceof Document || i instanceof ShadowRoot ? i : document;
|
|
39
|
+
}, q = (t) => b(t).activeElement, h = (t) => {
|
|
40
|
+
if (!t || !w) return null;
|
|
41
|
+
if (window.uElementsId || (window.uElementsId = {}), !t.id) {
|
|
42
|
+
const e = t.nodeName.toLowerCase();
|
|
43
|
+
window.uElementsId[e] || (window.uElementsId[e] = 1), t.id = `:${e}${window.uElementsId[e]++}`;
|
|
44
|
+
}
|
|
45
|
+
return t.id;
|
|
46
|
+
}, x = (t, e, i) => {
|
|
47
|
+
const o = document.createElement(t);
|
|
48
|
+
if (i && (o.textContent = i), e) for (const [n, a] of Object.entries(e)) r(o, n, a);
|
|
49
|
+
return o;
|
|
50
|
+
}, X = {
|
|
51
|
+
define: (t, e) => !y() || window.customElements.get(t) || window.customElements.define(t, e)
|
|
52
|
+
}, lt = (t, e, i = "") => {
|
|
53
|
+
var o, n;
|
|
54
|
+
const a = { bubbles: !0, composed: !0, data: e, inputType: i }, s = HTMLInputElement.prototype;
|
|
55
|
+
t.dispatchEvent(new InputEvent("beforeinput", a)), (n = (o = Object.getOwnPropertyDescriptor(s, "value")) == null ? void 0 : o.set) == null || n.call(t, e), t.dispatchEvent(new InputEvent("input", a)), t.dispatchEvent(new Event("change", { bubbles: !0 }));
|
|
56
|
+
}, C = !1, k = (t) => (t?.type === "pointerup" && (C = !1), t?.type === "pointerdown" && (C = !0, D(document, "pointerup", k, ot)), C), ct = (t) => {
|
|
57
|
+
const e = r(t, "form");
|
|
58
|
+
r(t, "form", "#"), setTimeout(pt, 0, t, e);
|
|
59
|
+
}, pt = (t, e) => r(t, "form", e), u, ht = 0, V = 0, P = (t) => {
|
|
60
|
+
clearTimeout(V), u || (u = x("div", { "aria-live": "assertive" }), u.style.overflow = "hidden", u.style.position = "fixed", u.style.whiteSpace = "nowrap", u.style.width = "1px"), u.isConnected || document.body.append(u), t === "" && (u.textContent = ""), t && (u.textContent = `${t}${ht++ % 2 ? " " : ""}`, V = setTimeout(P, !it && tt ? 2e3 : 300, ""));
|
|
61
|
+
}, A = "disabled", p = "selected", vt = class extends K {
|
|
62
|
+
constructor() {
|
|
63
|
+
super(...arguments), this._skipAttrChange = !1;
|
|
64
|
+
}
|
|
65
|
+
// Using ES2015 syntax for backwards compatibility
|
|
66
|
+
static get observedAttributes() {
|
|
67
|
+
return ["id", A, p];
|
|
68
|
+
}
|
|
69
|
+
connectedCallback() {
|
|
70
|
+
S && (this.tabIndex = -1), this.hasAttribute("role") || r(this, "role", "option"), r(this, "aria-disabled", `${this.disabled}`), r(this, "aria-selected", `${this.selected}`), h(this);
|
|
71
|
+
}
|
|
72
|
+
attributeChangedCallback(t) {
|
|
73
|
+
this._skipAttrChange || (this._skipAttrChange = !0, t === "id" ? h(this) : r(this, `aria-${t}`, `${this[t]}`), this._skipAttrChange = !1);
|
|
74
|
+
}
|
|
75
|
+
/** Sets or retrieves whether the option in the list box is the default item. */
|
|
76
|
+
get defaultSelected() {
|
|
77
|
+
return this[p];
|
|
78
|
+
}
|
|
79
|
+
set defaultSelected(t) {
|
|
80
|
+
this[p] = t;
|
|
81
|
+
}
|
|
82
|
+
get disabled() {
|
|
83
|
+
return r(this, A) !== null;
|
|
84
|
+
}
|
|
85
|
+
set disabled(t) {
|
|
86
|
+
r(this, A, t ? "" : null);
|
|
87
|
+
}
|
|
88
|
+
/** Retrieves a reference to the form that the object is embedded in. */
|
|
89
|
+
get form() {
|
|
90
|
+
return this.closest("form");
|
|
91
|
+
}
|
|
92
|
+
/** Sets or retrieves the ordinal position of an option in a list box. */
|
|
93
|
+
get index() {
|
|
94
|
+
var t;
|
|
95
|
+
return [
|
|
96
|
+
...((t = this.parentElement) == null ? void 0 : t.options) || [this]
|
|
97
|
+
].indexOf(this);
|
|
98
|
+
}
|
|
99
|
+
/** Sets or retrieves a value that you can use to implement your own label functionality for the object. */
|
|
100
|
+
get label() {
|
|
101
|
+
var t;
|
|
102
|
+
return (t = r(this, "label")) != null ? t : this.text;
|
|
103
|
+
}
|
|
104
|
+
set label(t) {
|
|
105
|
+
r(this, "label", t);
|
|
106
|
+
}
|
|
107
|
+
get selected() {
|
|
108
|
+
return r(this, p) !== null;
|
|
109
|
+
}
|
|
110
|
+
set selected(t) {
|
|
111
|
+
r(this, p, t ? "" : null);
|
|
112
|
+
}
|
|
113
|
+
/** Sets or retrieves the text string specified by the option tag. */
|
|
114
|
+
get text() {
|
|
115
|
+
var t;
|
|
116
|
+
return ((t = this.textContent) == null ? void 0 : t.trim()) || "";
|
|
117
|
+
}
|
|
118
|
+
set text(t) {
|
|
119
|
+
this.textContent = t;
|
|
120
|
+
}
|
|
121
|
+
/** Sets or retrieves the value which is returned to the server when the form control is submitted. */
|
|
122
|
+
get value() {
|
|
123
|
+
var t;
|
|
124
|
+
return (t = r(this, "value")) != null ? t : this.text;
|
|
125
|
+
}
|
|
126
|
+
set value(t) {
|
|
127
|
+
r(this, "value", t);
|
|
128
|
+
}
|
|
129
|
+
};
|
|
130
|
+
X.define("u-option", vt);
|
|
131
|
+
var W = "data-activedescendant", E = "aria-hidden", ft = `${nt}
|
|
132
|
+
::slotted([role="option"]) { display: block; cursor: pointer }
|
|
133
|
+
::slotted([role="option"][${W}]) { ${at} }
|
|
134
|
+
::slotted([role="option"]:is([${E}="true"], [disabled], [hidden])) { display: none !important }`, L, F = "focus click keydown", $ = "focusout input pointerdown", _ = {
|
|
135
|
+
of: "of",
|
|
136
|
+
plural: "%d hits",
|
|
137
|
+
singular: "%d hit"
|
|
138
|
+
}, _t = class extends K {
|
|
139
|
+
constructor() {
|
|
140
|
+
super(), this._texts = Z({}, _), ut(this, ft);
|
|
141
|
+
}
|
|
142
|
+
static get observedAttributes() {
|
|
143
|
+
return ["id", ...Object.keys(_).map((t) => `data-sr-${t}`)];
|
|
144
|
+
}
|
|
145
|
+
connectedCallback() {
|
|
146
|
+
this._root = b(this), r(this, "hidden", ""), r(this, "role", "listbox"), r(this, "tabindex", "-1"), D(this._root, F, this, !0), this._umutate = dt(this, j, {
|
|
147
|
+
attributeFilter: ["disabled", "hidden", "label", "value"],
|
|
148
|
+
// Listening to hidden attribute to update on open
|
|
149
|
+
attributes: !0,
|
|
150
|
+
characterData: !0,
|
|
151
|
+
childList: !0,
|
|
152
|
+
subtree: !0
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
disconnectedCallback() {
|
|
156
|
+
var t;
|
|
157
|
+
this._root && m(this._root, F, this, !0), this._root && m(this._root, $, this), g(this, null), (t = this._umutate) == null || t.call(this), this._umutate = this._root = this._input = void 0;
|
|
158
|
+
}
|
|
159
|
+
attributeChangedCallback(t, e, i) {
|
|
160
|
+
const o = t?.split("data-sr-")[1];
|
|
161
|
+
if (_[o]) this._texts[o] = i || _[o];
|
|
162
|
+
else if (this.id) {
|
|
163
|
+
const n = `input[list="${this.id}"]`, a = b(this).querySelector(n);
|
|
164
|
+
a && g(this, a);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
handleEvent(t) {
|
|
168
|
+
t.defaultPrevented || (t.type === "focus" && M(this, t), t.type === "focusout" && bt(this, t), t.type === "click" && gt(this, t), t.type === "input" && j(this), t.type === "keydown" && yt(this, t), t.type === "pointerdown" && Et(this, t));
|
|
169
|
+
}
|
|
170
|
+
get options() {
|
|
171
|
+
const t = !this._options && this.querySelector('[role="option"],option');
|
|
172
|
+
return t && (this._options = this.getElementsByTagName(t?.nodeName)), this._options || this.getElementsByTagName("option");
|
|
173
|
+
}
|
|
174
|
+
}, G = (t) => t.disabled || t.readOnly, R = (t) => t instanceof HTMLInputElement, mt = (t) => r(t, E) !== "true" && t.clientHeight, v = (t, e) => {
|
|
175
|
+
t._input && r(t._input, "aria-expanded", `${e}`), !(!t.isConnected || t.hidden !== e) && (e || Y(t), t.popover && t.togglePopover(e), e && setTimeout(() => clearTimeout(L)), t.hidden = !e);
|
|
176
|
+
}, Y = (t, e) => {
|
|
177
|
+
t._input && r(t._input, "aria-activedescendant", h(e));
|
|
178
|
+
for (const i of t.options) r(i, W, i === e ? "" : null);
|
|
179
|
+
e?.scrollIntoView({ block: "nearest" });
|
|
180
|
+
}, g = (t, e) => {
|
|
181
|
+
const i = e || t._input;
|
|
182
|
+
i && (t.popover && (r(t, "popover", "manual"), r(i, "popovertarget", e && h(t))), r(i, "aria-autocomplete", e && "list"), r(i, "aria-controls", e && h(t)), r(i, "autocomplete", e && "off"), r(i, "enterkeyhint", "done"), r(i, "role", e && !G(i) ? "combobox" : null));
|
|
183
|
+
}, M = (t, { target: e }) => {
|
|
184
|
+
var i, o;
|
|
185
|
+
if (t._input !== e)
|
|
186
|
+
if (R(e) && e.getAttribute("list") === t.id) {
|
|
187
|
+
if (g(t, null), g(t, e), G(e)) return;
|
|
188
|
+
t._root && D(t._root, $, t), r(t, "aria-label", ((o = (i = e.labels) == null ? void 0 : i[0]) == null ? void 0 : o.textContent.trim()) || null), P(), t._input = e, S && v(t, !0);
|
|
189
|
+
} else N(t);
|
|
190
|
+
}, bt = (t, e) => {
|
|
191
|
+
k() ? e.stopImmediatePropagation() : S || setTimeout(N, 0, t, e);
|
|
192
|
+
}, N = (t) => {
|
|
193
|
+
const e = q(t);
|
|
194
|
+
t._input === e || t.contains(e) || (t._root && m(t._root, $, t), v(t, !1), t._input = void 0);
|
|
195
|
+
}, Et = (t, e) => t.contains(e.target) && k(e), gt = (t, e) => {
|
|
196
|
+
var i;
|
|
197
|
+
if (R(e.target) && M(t, e), t._input === e.target) return v(t, !0);
|
|
198
|
+
if (!t.contains(e.target)) return N(t);
|
|
199
|
+
for (const o of t.options)
|
|
200
|
+
if (o.contains(e.target))
|
|
201
|
+
return (i = t._input) == null || i.focus(), t._input && lt(t._input, o.value), v(t, r(t, st) === "true");
|
|
202
|
+
}, yt = (t, e) => {
|
|
203
|
+
if (R(e.target) && M(t, e), t._input !== e.target) return;
|
|
204
|
+
const { key: i, ctrlKey: o, metaKey: n, shiftKey: a, altKey: s } = e;
|
|
205
|
+
if (o || n || a || i === "Tab" || s && !i.startsWith("Arrow")) return;
|
|
206
|
+
i === "Escape" && !t.hidden && e.preventDefault(), v(t, i !== "Escape");
|
|
207
|
+
const f = i === "Enter", I = r(t._input, "aria-activedescendant"), d = [];
|
|
208
|
+
let c = -1, l = -1;
|
|
209
|
+
for (const T of t.options)
|
|
210
|
+
mt(T) && (d.push(T), T.id === I && (c = d.length - 1));
|
|
211
|
+
!s && i === "ArrowDown" && (l = (c + 1) % d.length), !s && i === "ArrowUp" && (l = (c || d.length) - 1), ~c && ((i === "Home" || i === "PageUp") && (l = 0), (i === "End" || i === "PageDown") && (l = d.length - 1), f && (l = c)), d[l] && (e.preventDefault(), t._input.focus()), f && d[l] ? (e.stopImmediatePropagation(), ct(t._input), d[l].click()) : Y(t, d[l]);
|
|
212
|
+
}, j = (t) => {
|
|
213
|
+
var e;
|
|
214
|
+
if (!t._input || t.hidden) return;
|
|
215
|
+
const i = t._input.value.toLowerCase().trim() || "", o = !t.hasAttribute("data-nofilter"), n = [], a = [];
|
|
216
|
+
for (const s of t.options) (s.disabled || s.hidden || o && !s.label.toLowerCase().includes(i) ? n : a).push(s);
|
|
217
|
+
for (const s of n) r(s, E, "true");
|
|
218
|
+
for (const s of a) r(s, E, "false");
|
|
219
|
+
clearTimeout(L), L = setTimeout(wt, 500, t, a), et && a.forEach((s, f, { length: I }) => {
|
|
220
|
+
r(s, "title", `${f + 1} ${t._texts.of} ${I}`);
|
|
221
|
+
}), (e = t._umutate) == null || e.takeRecords();
|
|
222
|
+
}, wt = (t, e) => !t.hidden && t._input === q(t) && P(
|
|
223
|
+
`${e.some(({ value: i }) => i) ? `${t._texts[e[1] ? "plural" : "singular"]}`.replace("%d", `${e.length}`) : t.innerText}`
|
|
224
|
+
);
|
|
225
|
+
y() && Object.defineProperty(HTMLInputElement.prototype, "list", {
|
|
226
|
+
configurable: !0,
|
|
227
|
+
enumerable: !0,
|
|
228
|
+
get() {
|
|
229
|
+
const t = r(this, "list");
|
|
230
|
+
return t && b(this).getElementById(t);
|
|
231
|
+
}
|
|
232
|
+
});
|
|
233
|
+
X.define("u-datalist", _t);
|
|
234
|
+
export {
|
|
235
|
+
_t as UHTMLDataListElement,
|
|
236
|
+
ft as UHTMLDataListStyle
|
|
237
|
+
};
|
|
238
|
+
//# sourceMappingURL=u-datalist.js.map
|