@oslokommune/punkt-elements 16.7.3 → 16.7.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/CHANGELOG.md +18 -0
- package/dist/accordion-BB1JrONI.cjs +34 -0
- package/dist/accordion-nNH87Y60.js +130 -0
- package/dist/alert-BEEnTiCb.cjs +33 -0
- package/dist/alert-ePJuDtmm.js +171 -0
- package/dist/async-directive-B9P1Qa0k.cjs +1 -0
- package/dist/async-directive-CaQiqjyV.js +55 -0
- package/dist/backlink-Ba03LlbB.cjs +13 -0
- package/dist/backlink-CiwXrQYD.js +38 -0
- package/dist/booleanish-BmcOU-43.js +11 -0
- package/dist/booleanish-jJLlnr6-.cjs +1 -0
- package/dist/breadcrumbs-CD1zib3s.cjs +43 -0
- package/dist/breadcrumbs-CpuVqWhF.js +76 -0
- package/dist/button-BIpd1xJh.js +95 -0
- package/dist/button-D-TOBaJB.cjs +27 -0
- package/dist/calendar-BzEtOJla.js +2031 -0
- package/dist/calendar-E5jJLt8D.cjs +90 -0
- package/dist/card-BYJu1MYm.js +339 -0
- package/dist/card-CUFhMVim.cjs +87 -0
- package/dist/checkbox-BARDb9iV.cjs +31 -0
- package/dist/checkbox-Cspxcvt_.js +111 -0
- package/dist/class-map-C8HuhNzZ.js +27 -0
- package/dist/class-map-CJ-msbHs.cjs +1 -0
- package/dist/classutils-DEL164Ur.js +7 -0
- package/dist/classutils-z8YsPlOf.cjs +1 -0
- package/dist/combobox-BcdLZRDU.js +984 -0
- package/dist/combobox-CGbFTWq_.cjs +135 -0
- package/dist/consent-DeB_5sWH.js +197 -0
- package/dist/consent-hwu7pp3S.cjs +11 -0
- package/dist/datepicker-DpmlsnH_.cjs +273 -0
- package/dist/datepicker-OVd8pmnZ.js +1125 -0
- package/dist/dialog-polyfill.esm-1hPr0gl9.js +280 -0
- package/dist/dialog-polyfill.esm-D3Oinvk0.cjs +1 -0
- package/dist/directive-3THFsVew.js +28 -0
- package/dist/directive-CJ2giQBZ.cjs +1 -0
- package/dist/directive-helpers-D1QSxY17.cjs +1 -0
- package/dist/directive-helpers-Dkv2gKgs.js +25 -0
- package/dist/element-DjtxO-1r.cjs +2 -0
- package/dist/element-cZ85T_aa.js +693 -0
- package/dist/element-with-slot-4J2o3SeU.js +166 -0
- package/dist/element-with-slot-CWoTGA1B.cjs +1 -0
- package/dist/header-DWgPgGfS.cjs +304 -0
- package/dist/header-a6ztVNp3.js +782 -0
- package/dist/heading-BgSWIRii.cjs +1 -0
- package/dist/heading-DiQLPxdf.js +73 -0
- package/dist/helptext-CCBKKLus.js +65 -0
- package/dist/helptext-D-3QfZv5.cjs +24 -0
- package/dist/icon-Co72KtgF.js +86 -0
- package/dist/icon-Dr8sfT2X.cjs +1 -0
- package/dist/if-defined-Cjj8qN-Z.js +5 -0
- package/dist/if-defined-XKOD_t_V.cjs +1 -0
- package/dist/index.d.ts +1 -2
- package/dist/input-element-B1yxcfz4.cjs +1 -0
- package/dist/input-element-Bw1s6NlF.js +643 -0
- package/dist/input-wrapper-BRuVELpK.cjs +54 -0
- package/dist/input-wrapper-CDyHTR1V.js +164 -0
- package/dist/input-wrapper-Dwd-_sKm.cjs +1 -0
- package/dist/input-wrapper-YfTmpSSY.js +117 -0
- package/dist/link-CKAFMz9j.js +89 -0
- package/dist/link-CyTCpI0k.cjs +7 -0
- package/dist/linkcard-B0KOGaGj.js +55 -0
- package/dist/linkcard-BE4-FewK.cjs +13 -0
- package/dist/listbox-DCA2JoPV.cjs +106 -0
- package/dist/listbox-DuBgTFvH.js +397 -0
- package/dist/loader-6kFZUErT.js +66 -0
- package/dist/loader-CX2rsC01.cjs +16 -0
- package/dist/messagebox-Cwlg5sOr.js +110 -0
- package/dist/messagebox-Din9X53b.cjs +13 -0
- package/dist/modal-C_wtsh9m.js +209 -0
- package/dist/modal-DS_wUOIv.cjs +36 -0
- package/dist/pkt-accordion.cjs +1 -1
- package/dist/pkt-accordion.js +2 -7
- package/dist/pkt-alert.cjs +1 -1
- package/dist/pkt-alert.js +2 -5
- package/dist/pkt-backlink.cjs +1 -1
- package/dist/pkt-backlink.js +2 -5
- package/dist/pkt-breadcrumbs.cjs +1 -43
- package/dist/pkt-breadcrumbs.js +2 -81
- package/dist/pkt-button.cjs +1 -1
- package/dist/pkt-button.js +2 -5
- package/dist/pkt-calendar.cjs +1 -1
- package/dist/pkt-calendar.js +2 -5
- package/dist/pkt-card.cjs +1 -1
- package/dist/pkt-card.js +2 -5
- package/dist/pkt-checkbox.cjs +1 -1
- package/dist/pkt-checkbox.js +2 -5
- package/dist/pkt-combobox.cjs +1 -1
- package/dist/pkt-combobox.js +2 -5
- package/dist/pkt-consent.cjs +1 -1
- package/dist/pkt-consent.js +2 -5
- package/dist/pkt-datepicker.cjs +1 -1
- package/dist/pkt-datepicker.js +5 -9
- package/dist/pkt-header.cjs +1 -304
- package/dist/pkt-header.js +2 -861
- package/dist/pkt-heading.cjs +1 -1
- package/dist/pkt-heading.js +2 -5
- package/dist/pkt-helptext.cjs +1 -1
- package/dist/pkt-helptext.js +2 -5
- package/dist/pkt-icon.cjs +1 -1
- package/dist/pkt-icon.js +2 -5
- package/dist/pkt-index.cjs +1 -1
- package/dist/pkt-index.js +30 -66
- package/dist/pkt-input-wrapper.cjs +1 -1
- package/dist/pkt-input-wrapper.js +2 -5
- package/dist/pkt-link.cjs +1 -1
- package/dist/pkt-link.js +2 -5
- package/dist/pkt-linkcard.cjs +1 -1
- package/dist/pkt-linkcard.js +2 -5
- package/dist/pkt-listbox.cjs +1 -1
- package/dist/pkt-listbox.js +2 -5
- package/dist/pkt-loader.cjs +1 -1
- package/dist/pkt-loader.js +2 -5
- package/dist/pkt-messagebox.cjs +1 -1
- package/dist/pkt-messagebox.js +2 -5
- package/dist/pkt-modal.cjs +1 -1
- package/dist/pkt-modal.js +2 -5
- package/dist/pkt-options-controller-CRrI6WMk.js +43 -0
- package/dist/pkt-options-controller-CXUGx134.cjs +1 -0
- package/dist/pkt-progressbar.cjs +1 -1
- package/dist/pkt-progressbar.js +2 -5
- package/dist/pkt-radiobutton.cjs +1 -1
- package/dist/pkt-radiobutton.js +2 -5
- package/dist/pkt-select.cjs +1 -1
- package/dist/pkt-select.js +2 -5
- package/dist/pkt-tabs.cjs +1 -1
- package/dist/pkt-tabs.js +2 -7
- package/dist/pkt-tag.cjs +1 -1
- package/dist/pkt-tag.js +2 -5
- package/dist/pkt-textarea.cjs +1 -1
- package/dist/pkt-textarea.js +2 -5
- package/dist/pkt-textinput.cjs +1 -1
- package/dist/pkt-textinput.js +2 -5
- package/dist/pkt-timepicker.cjs +1 -191
- package/dist/pkt-timepicker.js +2 -560
- package/dist/progressbar-CdXtmOBb.cjs +17 -0
- package/dist/progressbar-Dy9AiYQz.js +113 -0
- package/dist/radiobutton-GOnpUbCW.cjs +31 -0
- package/dist/radiobutton-V_KPbup_.js +84 -0
- package/dist/ref-BaJ0mBT_.cjs +1 -0
- package/dist/ref-RS8Uv6uC.js +30 -0
- package/dist/repeat-Cepr3469.js +57 -0
- package/dist/repeat-CqcDYBxr.cjs +1 -0
- package/dist/select-BSAFd8Wa.js +164 -0
- package/dist/select-C2i8sOk5.cjs +49 -0
- package/dist/tabs-D8nL9rWx.cjs +37 -0
- package/dist/tabs-Y7utmJi9.js +318 -0
- package/dist/tag-DLthw5b4.cjs +27 -0
- package/dist/tag-VwykmuQR.js +179 -0
- package/dist/textarea-D7aGOyDf.cjs +46 -0
- package/dist/textarea-DYOBhJrN.js +115 -0
- package/dist/textinput-BUgntXnM.js +124 -0
- package/dist/textinput-DFh8_9cx.cjs +70 -0
- package/dist/timepicker-BIfE7KKJ.cjs +191 -0
- package/dist/timepicker-DaSwn1FA.js +503 -0
- package/dist/utils-CUqCKGvp.js +7 -0
- package/dist/utils-CjAbIttF.cjs +1 -0
- package/package.json +6 -6
- package/src/components/alert/alert.test.ts +1 -1
- package/src/components/alert/alert.ts +6 -6
- package/src/components/datepicker/datepicker-utils.test.ts +16 -23
- package/dist/accordionitem-_9AiCIvd.cjs +0 -34
- package/dist/accordionitem-dCfSrxh5.js +0 -140
- package/dist/alert-BtOk8yRH.cjs +0 -33
- package/dist/alert-DlY2_grU.js +0 -117
- package/dist/async-directive-CMzWMlZ5.js +0 -65
- package/dist/async-directive-DoMuclel.cjs +0 -5
- package/dist/backlink-Ce5Vldop.js +0 -49
- package/dist/backlink-y3dwjKPC.cjs +0 -13
- package/dist/booleanish-BKVonob4.cjs +0 -1
- package/dist/booleanish-C9R0tdXH.js +0 -11
- package/dist/button-B_TXwNzt.cjs +0 -27
- package/dist/button-BiY-wlKF.js +0 -139
- package/dist/calendar-B2pji2zn.cjs +0 -90
- package/dist/calendar-DhjQDC4C.js +0 -2140
- package/dist/card-BwMNB5Bb.cjs +0 -87
- package/dist/card-CGlmcMSR.js +0 -233
- package/dist/checkbox-BsJZYA26.js +0 -147
- package/dist/checkbox-CTY8f_qn.cjs +0 -31
- package/dist/class-map-CEnykyO_.js +0 -34
- package/dist/class-map-CsENJXf1.cjs +0 -5
- package/dist/classutils-BwNK82ZQ.cjs +0 -1
- package/dist/classutils-RQs1k6D9.js +0 -7
- package/dist/combobox-DSB5WOxg.js +0 -815
- package/dist/combobox-DbICIgKG.cjs +0 -135
- package/dist/consent-DkOQpbsg.cjs +0 -11
- package/dist/consent-SNWV_mMU.js +0 -175
- package/dist/datepicker-BEWl9iz3.cjs +0 -273
- package/dist/datepicker-euHyzXnb.js +0 -1170
- package/dist/dialog-polyfill.esm-CPKZe7AL.cjs +0 -1
- package/dist/dialog-polyfill.esm-CbjBMXAG.js +0 -395
- package/dist/directive-C7oCP5Bh.cjs +0 -5
- package/dist/directive-helpers-BP2WOx60.cjs +0 -5
- package/dist/directive-helpers-rm-28gIj.js +0 -38
- package/dist/directive-oAbCiebi.js +0 -27
- package/dist/element-CPpT3rFQ.js +0 -638
- package/dist/element-gR_VtSiD.cjs +0 -27
- package/dist/element-with-slot-Dqk6-TRR.js +0 -240
- package/dist/element-with-slot-ZX-up7jO.cjs +0 -1
- package/dist/heading-D2tVS6lS.js +0 -103
- package/dist/heading-DrzbgDb6.cjs +0 -1
- package/dist/helptext-BKtU4mas.js +0 -82
- package/dist/helptext-DcRC7wW2.cjs +0 -24
- package/dist/icon-CxQcIa5F.js +0 -105
- package/dist/icon-q81vqPK_.cjs +0 -9
- package/dist/if-defined-B0krMLad.js +0 -10
- package/dist/if-defined-BOW3ODSj.cjs +0 -5
- package/dist/input-element-8nLwuQS4.js +0 -837
- package/dist/input-element-DdVhUvva.cjs +0 -1
- package/dist/input-wrapper-Bs4CRNst.js +0 -181
- package/dist/input-wrapper-Bv9aqqVq.cjs +0 -54
- package/dist/input-wrapper-CDgenrYA.js +0 -6
- package/dist/input-wrapper-EoSAbU-U.cjs +0 -1
- package/dist/link-C0rl-86s.cjs +0 -7
- package/dist/link-Cdqgl60z.js +0 -55
- package/dist/linkcard-Dimu7Rlx.cjs +0 -13
- package/dist/linkcard-Lbq_UhjZ.js +0 -56
- package/dist/listbox-Bia4_tvN.js +0 -440
- package/dist/listbox-La2GZQei.cjs +0 -106
- package/dist/loader-D1ugDXGV.cjs +0 -16
- package/dist/loader-DyN6RGC5.js +0 -95
- package/dist/messagebox-BGMVm2t9.js +0 -71
- package/dist/messagebox-M0yIgCz9.cjs +0 -13
- package/dist/modal-CMO1RtIi.cjs +0 -36
- package/dist/modal-DjPQDE-Z.js +0 -156
- package/dist/pkt-options-controller-5LXbEzuk.cjs +0 -1
- package/dist/pkt-options-controller-B5YalfCb.js +0 -39
- package/dist/progressbar-BqlMzkM_.cjs +0 -21
- package/dist/progressbar-sbHDFC12.js +0 -162
- package/dist/radiobutton-5ZqVVtTT.cjs +0 -31
- package/dist/radiobutton-D8Ai8ETa.js +0 -113
- package/dist/ref-Bg_Swj5w.js +0 -42
- package/dist/ref-CL-Xk9Xm.cjs +0 -5
- package/dist/repeat-BD8TKgJb.js +0 -61
- package/dist/repeat-Cfq8CDlf.cjs +0 -5
- package/dist/select-De-n8on9.js +0 -230
- package/dist/select-dTWibR6_.cjs +0 -49
- package/dist/state-C_1EOo3D.js +0 -12
- package/dist/state-Dg-53wQ8.cjs +0 -5
- package/dist/tabitem-B9-jeV97.js +0 -334
- package/dist/tabitem-BnhzqfW3.cjs +0 -65
- package/dist/tag-CbwO8yvD.cjs +0 -27
- package/dist/tag-D4FI5t3y.js +0 -117
- package/dist/textarea-BmLaKzsc.cjs +0 -50
- package/dist/textarea-CMiSJaYL.js +0 -133
- package/dist/textinput-em9y4yrL.cjs +0 -70
- package/dist/textinput-r8udK0IX.js +0 -152
- package/dist/utils-DznhwRXm.js +0 -8
- package/dist/utils-byXsEz1u.cjs +0 -1
package/dist/listbox-Bia4_tvN.js
DELETED
|
@@ -1,440 +0,0 @@
|
|
|
1
|
-
import { t as v, P as _, b as d, A as h, s as O, n as c } from "./element-CPpT3rFQ.js";
|
|
2
|
-
import { r as w } from "./state-C_1EOo3D.js";
|
|
3
|
-
import { o as m } from "./if-defined-B0krMLad.js";
|
|
4
|
-
import { c as $ } from "./repeat-BD8TKgJb.js";
|
|
5
|
-
import { e as k } from "./class-map-CEnykyO_.js";
|
|
6
|
-
import { u as S } from "./utils-DznhwRXm.js";
|
|
7
|
-
const F = (s, e) => e && (s.find((t) => t.value === e) || s.find((t) => t.label === e)) || null, q = (s, e) => {
|
|
8
|
-
if (!e) return -1;
|
|
9
|
-
const t = s.findIndex((a) => a.value === e);
|
|
10
|
-
return t >= 0 ? t : s.findIndex((a) => a.label === e);
|
|
11
|
-
}, I = (s, e) => {
|
|
12
|
-
if (!e) return [...s];
|
|
13
|
-
const t = e.toLowerCase();
|
|
14
|
-
return s.filter((a) => (a.fulltext || a.value + (a.label || "") + (a.prefix || "")).toLowerCase().includes(t));
|
|
15
|
-
}, H = (s) => s.value + (s.label || "") + (s.prefix || ""), z = (s, e) => e !== null && s >= e, N = (s, e) => {
|
|
16
|
-
if (!e) return { filtered: [...s], suggestion: null };
|
|
17
|
-
const t = e.toLowerCase(), a = s.filter((o) => {
|
|
18
|
-
var l;
|
|
19
|
-
return (l = o.fulltext) == null ? void 0 : l.toLowerCase().includes(t);
|
|
20
|
-
}), i = a.find(
|
|
21
|
-
(o) => {
|
|
22
|
-
var l;
|
|
23
|
-
return !o.selected && ((l = o.label) == null ? void 0 : l.toLowerCase().startsWith(t));
|
|
24
|
-
}
|
|
25
|
-
) || null;
|
|
26
|
-
return { filtered: a, suggestion: i };
|
|
27
|
-
}, W = (s, e, t, a) => {
|
|
28
|
-
if (!s.trim())
|
|
29
|
-
return { addValueText: null, userInfoMessage: "" };
|
|
30
|
-
const i = s.trim().toLowerCase(), o = e.find((p) => p.toLowerCase() === i), l = t.filter(
|
|
31
|
-
(p) => {
|
|
32
|
-
var b;
|
|
33
|
-
return ((b = p.label) == null ? void 0 : b.toLowerCase().includes(i)) || p.value.toLowerCase().includes(i);
|
|
34
|
-
}
|
|
35
|
-
), y = l.find(
|
|
36
|
-
(p) => {
|
|
37
|
-
var b;
|
|
38
|
-
return ((b = p.label) == null ? void 0 : b.toLowerCase()) === i || p.value.toLowerCase() === i;
|
|
39
|
-
}
|
|
40
|
-
);
|
|
41
|
-
return (l.length === 0 || !y) && a ? { addValueText: s, userInfoMessage: "" } : l.length === 0 && !a ? { addValueText: null, userInfoMessage: "Ingen treff i søket" } : o ? { addValueText: null, userInfoMessage: "Verdien er allerede valgt" } : { addValueText: null, userInfoMessage: "" };
|
|
42
|
-
}, C = (s) => /^[\p{L} ]$/u.test(s), L = (s = 500) => {
|
|
43
|
-
let e = "", t;
|
|
44
|
-
return { append: (o) => (e += o.toLowerCase(), t !== void 0 && clearTimeout(t), t = setTimeout(() => {
|
|
45
|
-
e = "";
|
|
46
|
-
}, s), e), reset: () => {
|
|
47
|
-
e = "", t !== void 0 && (clearTimeout(t), t = void 0);
|
|
48
|
-
}, getBuffer: () => e };
|
|
49
|
-
}, M = (s, e) => {
|
|
50
|
-
const t = e.toLowerCase();
|
|
51
|
-
return s.findIndex((a) => {
|
|
52
|
-
var i;
|
|
53
|
-
return (i = a.textContent) == null ? void 0 : i.trim().toLowerCase().startsWith(t);
|
|
54
|
-
});
|
|
55
|
-
}, u = (s) => {
|
|
56
|
-
s.scrollIntoView({ block: "nearest" }), window.setTimeout(() => s.focus(), 0);
|
|
57
|
-
}, f = (s) => Array.from(
|
|
58
|
-
s.querySelectorAll('[role="option"]:not([data-disabled])') || []
|
|
59
|
-
), E = (s) => {
|
|
60
|
-
const e = s.nextElementSibling;
|
|
61
|
-
e && u(e);
|
|
62
|
-
}, T = (s, e, t) => {
|
|
63
|
-
const a = s.previousElementSibling;
|
|
64
|
-
if (s.dataset.index === "0" && t) {
|
|
65
|
-
const i = e.querySelector('[role="searchbox"]');
|
|
66
|
-
i && u(i);
|
|
67
|
-
} else a && u(a);
|
|
68
|
-
}, x = (s) => {
|
|
69
|
-
const e = f(s);
|
|
70
|
-
e[0] && u(e[0]);
|
|
71
|
-
}, g = (s) => {
|
|
72
|
-
const e = f(s), t = e[e.length - 1];
|
|
73
|
-
t && u(t);
|
|
74
|
-
}, U = (s, e) => {
|
|
75
|
-
if (e.disabled) return;
|
|
76
|
-
const t = f(s);
|
|
77
|
-
if (e.allowUserInput && e.customUserInput) {
|
|
78
|
-
const i = s.querySelector('[data-type="new-option"]');
|
|
79
|
-
if (i) {
|
|
80
|
-
u(i);
|
|
81
|
-
return;
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
const a = t.find((i) => i.dataset.selected === "true");
|
|
85
|
-
if (a) {
|
|
86
|
-
u(a);
|
|
87
|
-
return;
|
|
88
|
-
}
|
|
89
|
-
if (e.includeSearch && !(document.activeElement instanceof HTMLInputElement)) {
|
|
90
|
-
const i = s.querySelector('[role="searchbox"]');
|
|
91
|
-
if (i) {
|
|
92
|
-
window.setTimeout(() => i.focus(), 0);
|
|
93
|
-
return;
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
t[0] && u(t[0]);
|
|
97
|
-
};
|
|
98
|
-
var V = Object.defineProperty, r = (s, e, t, a) => {
|
|
99
|
-
for (var i = void 0, o = s.length - 1, l; o >= 0; o--)
|
|
100
|
-
(l = s[o]) && (i = l(e, t, i) || i);
|
|
101
|
-
return i && V(e, t, i), i;
|
|
102
|
-
};
|
|
103
|
-
class n extends _ {
|
|
104
|
-
constructor() {
|
|
105
|
-
super(...arguments), this.id = S(), this.label = null, this.options = [], this.isOpen = !1, this.disabled = !1, this.includeSearch = !1, this.isMultiSelect = !1, this.allowUserInput = !1, this.maxIsReached = !1, this.customUserInput = null, this.searchPlaceholder = null, this.searchValue = null, this.maxLength = 0, this.userMessage = null, this._selectedOptions = 0, this.typeahead = L(), this._filteredOptions = [];
|
|
106
|
-
}
|
|
107
|
-
// Lifecycle methods
|
|
108
|
-
connectedCallback() {
|
|
109
|
-
super.connectedCallback(), this.includeSearch && !this.searchValue && (this.searchValue = ""), this.options.length > 0 && this.filterOptions(), this.setAttribute("tabindex", "-1"), this.addEventListener("focus", this.focusFirstOrSelectedOption);
|
|
110
|
-
}
|
|
111
|
-
disconnectedCallback() {
|
|
112
|
-
super.disconnectedCallback(), this.typeahead.reset();
|
|
113
|
-
}
|
|
114
|
-
updated(e) {
|
|
115
|
-
(e.has("options") || e.has("searchValue")) && this.filterOptions(), super.updated(e);
|
|
116
|
-
}
|
|
117
|
-
attributeChangedCallback(e, t, a) {
|
|
118
|
-
(e === "options" || e === "search-value") && this.filterOptions(), super.attributeChangedCallback(e, t, a);
|
|
119
|
-
}
|
|
120
|
-
// Render methods
|
|
121
|
-
get _hasOptions() {
|
|
122
|
-
return this._filteredOptions.length > 0 || this.options.length > 0;
|
|
123
|
-
}
|
|
124
|
-
render() {
|
|
125
|
-
return d`
|
|
126
|
-
<div
|
|
127
|
-
class=${k({
|
|
128
|
-
"pkt-listbox": !0,
|
|
129
|
-
"pkt-listbox__open": this.isOpen,
|
|
130
|
-
"pkt-txt-16-light": !0
|
|
131
|
-
})}
|
|
132
|
-
role=${m(this._hasOptions ? "listbox" : void 0)}
|
|
133
|
-
aria-multiselectable=${m(
|
|
134
|
-
this._hasOptions && this.isMultiSelect ? "true" : void 0
|
|
135
|
-
)}
|
|
136
|
-
aria-label=${m(this._hasOptions ? this.label ?? void 0 : void 0)}
|
|
137
|
-
>
|
|
138
|
-
<div class="pkt-listbox__banners">
|
|
139
|
-
${this.renderSearch()} ${this.renderMaximumReachedBanner()} ${this.renderUserMessage()}
|
|
140
|
-
${this.renderEmptyMessage()} ${this.renderNewOptionBanner()}
|
|
141
|
-
</div>
|
|
142
|
-
<ul class="pkt-listbox__options" role="presentation">
|
|
143
|
-
${this.renderList()}
|
|
144
|
-
</ul>
|
|
145
|
-
</div>
|
|
146
|
-
<div aria-live="polite" class="pkt-visually-hidden">${this.userMessage}</div>
|
|
147
|
-
`;
|
|
148
|
-
}
|
|
149
|
-
renderCheckboxOrCheckIcon(e, t) {
|
|
150
|
-
return this.isMultiSelect ? d`
|
|
151
|
-
<input
|
|
152
|
-
class="pkt-input-check__input-checkbox"
|
|
153
|
-
type="checkbox"
|
|
154
|
-
role="presentation"
|
|
155
|
-
tabindex="-1"
|
|
156
|
-
value=${e.value}
|
|
157
|
-
@change=${(a) => {
|
|
158
|
-
a.stopPropagation();
|
|
159
|
-
}}
|
|
160
|
-
.checked=${e.selected}
|
|
161
|
-
aria-labelledby=${this.id + "-option-label-" + t}
|
|
162
|
-
?disabled=${this.disabled || e.disabled || this.maxIsReached && !e.selected}
|
|
163
|
-
/>
|
|
164
|
-
` : e.selected ? d`<pkt-icon name="check-big"></pkt-icon>` : h;
|
|
165
|
-
}
|
|
166
|
-
renderEmptyMessage() {
|
|
167
|
-
return this.options.length > 0 || this._filteredOptions.length > 0 || this.userMessage ? h : d`<div class="pkt-listbox__banner pkt-listbox__banner--empty">
|
|
168
|
-
<pkt-icon
|
|
169
|
-
class="pkt-listbox__banner-icon"
|
|
170
|
-
name="exclamation-mark-circle"
|
|
171
|
-
size="large"
|
|
172
|
-
></pkt-icon>
|
|
173
|
-
Tom liste
|
|
174
|
-
</div>`;
|
|
175
|
-
}
|
|
176
|
-
renderList() {
|
|
177
|
-
return d`
|
|
178
|
-
${$(
|
|
179
|
-
this._filteredOptions,
|
|
180
|
-
(e) => e.value,
|
|
181
|
-
(e, t) => d`
|
|
182
|
-
<li
|
|
183
|
-
@click=${() => {
|
|
184
|
-
this.toggleOption(e);
|
|
185
|
-
}}
|
|
186
|
-
aria-selected=${e.selected ? "true" : "false"}
|
|
187
|
-
@keydown=${this.handleOptionKeydown}
|
|
188
|
-
class=${k({
|
|
189
|
-
"pkt-listbox__option": !0,
|
|
190
|
-
"pkt-listbox__option--selected": !!(!this.isMultiSelect && e.selected),
|
|
191
|
-
"pkt-listbox__option--checkBox": this.isMultiSelect
|
|
192
|
-
})}
|
|
193
|
-
tabindex="${this.disabled || e.disabled ? "-1" : "0"}"
|
|
194
|
-
data-index=${t}
|
|
195
|
-
data-value=${e.value}
|
|
196
|
-
data-selected=${e.selected ? "true" : "false"}
|
|
197
|
-
?data-disabled=${this.disabled || e.disabled || this.maxIsReached && !e.selected}
|
|
198
|
-
aria-disabled=${this.disabled || e.disabled || this.maxIsReached && !e.selected ? "true" : "false"}
|
|
199
|
-
role="option"
|
|
200
|
-
id=${`${this.id}-${t}`}
|
|
201
|
-
>
|
|
202
|
-
${this.renderCheckboxOrCheckIcon(e, t)}
|
|
203
|
-
<span class="pkt-listbox__option-label" id=${this.id + "-option-label-" + t}>
|
|
204
|
-
${e.prefix ? d`<span class="pkt-listbox__option-prefix">${e.prefix}</span>` : h}
|
|
205
|
-
${e.label || e.value}
|
|
206
|
-
</span>
|
|
207
|
-
${e.description ? d`<span class="pkt-listbox__option-description pkt-txt-14-light"
|
|
208
|
-
>${e.description}</span
|
|
209
|
-
>` : h}
|
|
210
|
-
</li>
|
|
211
|
-
`
|
|
212
|
-
)}
|
|
213
|
-
`;
|
|
214
|
-
}
|
|
215
|
-
renderNewOptionBanner() {
|
|
216
|
-
return this.allowUserInput && this.customUserInput ? d`
|
|
217
|
-
<div
|
|
218
|
-
class="pkt-listbox__banner pkt-listbox__banner--new-option pkt-listbox__option"
|
|
219
|
-
data-type="new-option"
|
|
220
|
-
data-value=${this.customUserInput}
|
|
221
|
-
data-selected="false"
|
|
222
|
-
tabindex="0"
|
|
223
|
-
@click=${() => this.toggleOption({
|
|
224
|
-
value: this.customUserInput || ""
|
|
225
|
-
})}
|
|
226
|
-
@keydown=${this.handleOptionKeydown}
|
|
227
|
-
>
|
|
228
|
-
<pkt-icon class="pkt-listbox__banner-icon" name="plus-sign" size="large"></pkt-icon>
|
|
229
|
-
Legg til "${this.customUserInput}"
|
|
230
|
-
</div>
|
|
231
|
-
` : h;
|
|
232
|
-
}
|
|
233
|
-
renderMaximumReachedBanner() {
|
|
234
|
-
return this._selectedOptions = this.options.filter((e) => e.selected).length, this.isMultiSelect && this._selectedOptions > 0 && this.maxLength > 0 ? d`
|
|
235
|
-
<div class="pkt-listbox__banner pkt-listbox__banner--maximum-reached">
|
|
236
|
-
${this._selectedOptions} av maks ${this.maxLength} mulige er valgt.
|
|
237
|
-
</div>
|
|
238
|
-
` : h;
|
|
239
|
-
}
|
|
240
|
-
renderUserMessage() {
|
|
241
|
-
return this.userMessage ? d`<div class="pkt-listbox__banner pkt-listbox__banner--user-message">
|
|
242
|
-
<pkt-icon
|
|
243
|
-
class="pkt-listbox__banner-icon"
|
|
244
|
-
name="exclamation-mark-circle"
|
|
245
|
-
size="large"
|
|
246
|
-
></pkt-icon>
|
|
247
|
-
${this.userMessage}
|
|
248
|
-
</div>` : h;
|
|
249
|
-
}
|
|
250
|
-
renderSearch() {
|
|
251
|
-
return this.includeSearch ? d`
|
|
252
|
-
<div class="pkt-listbox__search">
|
|
253
|
-
<span class="pkt-listbox__search-icon">
|
|
254
|
-
<pkt-icon name="magnifying-glass-small" size="large"></pkt-icon>
|
|
255
|
-
</span>
|
|
256
|
-
<input
|
|
257
|
-
class="pkt-txt-16-light"
|
|
258
|
-
type="text"
|
|
259
|
-
aria-label="Søk i listen"
|
|
260
|
-
form=""
|
|
261
|
-
placeholder=${this.searchPlaceholder || O.forms.search.placeholder}
|
|
262
|
-
@input=${this.handleSearchInput}
|
|
263
|
-
@keydown=${this.handleSearchKeydown}
|
|
264
|
-
.value=${this.searchValue}
|
|
265
|
-
data-type="searchbox"
|
|
266
|
-
?disabled=${this.disabled}
|
|
267
|
-
?readonly=${this.disabled}
|
|
268
|
-
role="searchbox"
|
|
269
|
-
/>
|
|
270
|
-
</div>
|
|
271
|
-
` : h;
|
|
272
|
-
}
|
|
273
|
-
// Event handlers
|
|
274
|
-
handleSearchInput(e) {
|
|
275
|
-
this.searchValue = e.target.value, this.dispatchEvent(
|
|
276
|
-
new CustomEvent("search", {
|
|
277
|
-
detail: this.searchValue,
|
|
278
|
-
bubbles: !1
|
|
279
|
-
})
|
|
280
|
-
);
|
|
281
|
-
}
|
|
282
|
-
handleSearchKeydown(e) {
|
|
283
|
-
switch (e.key) {
|
|
284
|
-
case "Enter":
|
|
285
|
-
e.preventDefault();
|
|
286
|
-
break;
|
|
287
|
-
case "ArrowUp":
|
|
288
|
-
case "Escape":
|
|
289
|
-
this.closeOptions(), e.preventDefault();
|
|
290
|
-
break;
|
|
291
|
-
case "ArrowDown":
|
|
292
|
-
this.focusFirstOrSelectedOption();
|
|
293
|
-
break;
|
|
294
|
-
case "Tab":
|
|
295
|
-
this.tabClose();
|
|
296
|
-
break;
|
|
297
|
-
}
|
|
298
|
-
}
|
|
299
|
-
handleOptionKeydown(e) {
|
|
300
|
-
const t = e.currentTarget, a = t.dataset.value, i = t.dataset.type, o = t.dataset.selected === "true";
|
|
301
|
-
if (!(!f(this).length && (!this.customUserInput || !this.allowUserInput && this.customUserInput) && i !== "new-option" && i !== "searchbox"))
|
|
302
|
-
switch (e.key) {
|
|
303
|
-
case " ":
|
|
304
|
-
case "Enter":
|
|
305
|
-
this.toggleOption(t), e.preventDefault();
|
|
306
|
-
break;
|
|
307
|
-
case "Backspace":
|
|
308
|
-
a && (o ? this.toggleOption(t) : this.closeOptions()), e.preventDefault();
|
|
309
|
-
break;
|
|
310
|
-
case "Escape":
|
|
311
|
-
this.closeOptions(), e.preventDefault();
|
|
312
|
-
break;
|
|
313
|
-
case "Tab":
|
|
314
|
-
this.tabClose();
|
|
315
|
-
break;
|
|
316
|
-
case "ArrowDown":
|
|
317
|
-
e.altKey ? g(this) : i === "searchbox" || i === "new-option" ? x(this) : E(t), e.preventDefault();
|
|
318
|
-
break;
|
|
319
|
-
case "ArrowUp":
|
|
320
|
-
if (e.altKey)
|
|
321
|
-
x(this);
|
|
322
|
-
else if (t.dataset.index === "0" && this.includeSearch) {
|
|
323
|
-
const l = this.querySelector('[role="searchbox"]');
|
|
324
|
-
l && l.focus();
|
|
325
|
-
} else if (t.dataset.index === "0" && this.customUserInput) {
|
|
326
|
-
const l = this.querySelector('[data-type="new-option"]');
|
|
327
|
-
l && l.focus();
|
|
328
|
-
} else
|
|
329
|
-
T(t, this, this.includeSearch);
|
|
330
|
-
e.preventDefault();
|
|
331
|
-
break;
|
|
332
|
-
case "Home":
|
|
333
|
-
x(this), e.preventDefault();
|
|
334
|
-
break;
|
|
335
|
-
case "End":
|
|
336
|
-
g(this), e.preventDefault();
|
|
337
|
-
break;
|
|
338
|
-
default:
|
|
339
|
-
(e.metaKey || e.ctrlKey) && e.key === "a" && (this.selectAll(), e.preventDefault()), C(e.key) && (this.handleTypeAhead(e.key), e.preventDefault());
|
|
340
|
-
break;
|
|
341
|
-
}
|
|
342
|
-
}
|
|
343
|
-
// Focus management methods (delegates to shared utils)
|
|
344
|
-
focusFirstOrSelectedOption() {
|
|
345
|
-
U(this, {
|
|
346
|
-
disabled: this.disabled,
|
|
347
|
-
allowUserInput: this.allowUserInput,
|
|
348
|
-
customUserInput: this.customUserInput,
|
|
349
|
-
includeSearch: this.includeSearch
|
|
350
|
-
});
|
|
351
|
-
}
|
|
352
|
-
// Event dispatching methods
|
|
353
|
-
toggleOption(e) {
|
|
354
|
-
const t = e instanceof HTMLElement ? e.dataset.disabled : e.disabled;
|
|
355
|
-
if (this.disabled || t) return;
|
|
356
|
-
const a = e instanceof HTMLElement ? e.dataset.value : e.value;
|
|
357
|
-
this.dispatchEvent(
|
|
358
|
-
new CustomEvent("option-toggle", {
|
|
359
|
-
detail: a,
|
|
360
|
-
bubbles: !1
|
|
361
|
-
})
|
|
362
|
-
);
|
|
363
|
-
}
|
|
364
|
-
selectAll() {
|
|
365
|
-
this.dispatchEvent(new CustomEvent("select-all", { bubbles: !1 }));
|
|
366
|
-
}
|
|
367
|
-
closeOptions() {
|
|
368
|
-
this.dispatchEvent(new CustomEvent("close-options", { bubbles: !1 }));
|
|
369
|
-
}
|
|
370
|
-
tabClose() {
|
|
371
|
-
this.dispatchEvent(new CustomEvent("tab-close", { bubbles: !1 }));
|
|
372
|
-
}
|
|
373
|
-
// Filtering and typeahead methods
|
|
374
|
-
filterOptions() {
|
|
375
|
-
this._filteredOptions = I(this.options, this.searchValue);
|
|
376
|
-
}
|
|
377
|
-
handleTypeAhead(e) {
|
|
378
|
-
const t = this.typeahead.append(e), a = f(this), i = M(a, t);
|
|
379
|
-
i >= 0 && u(a[i]);
|
|
380
|
-
}
|
|
381
|
-
}
|
|
382
|
-
r([
|
|
383
|
-
c({ type: String })
|
|
384
|
-
], n.prototype, "id");
|
|
385
|
-
r([
|
|
386
|
-
c({ type: String })
|
|
387
|
-
], n.prototype, "label");
|
|
388
|
-
r([
|
|
389
|
-
c({ type: Array })
|
|
390
|
-
], n.prototype, "options");
|
|
391
|
-
r([
|
|
392
|
-
c({ type: Boolean, reflect: !0, attribute: "is-open" })
|
|
393
|
-
], n.prototype, "isOpen");
|
|
394
|
-
r([
|
|
395
|
-
c({ type: Boolean })
|
|
396
|
-
], n.prototype, "disabled");
|
|
397
|
-
r([
|
|
398
|
-
c({ type: Boolean, attribute: "include-search" })
|
|
399
|
-
], n.prototype, "includeSearch");
|
|
400
|
-
r([
|
|
401
|
-
c({ type: Boolean, attribute: "is-multi-select" })
|
|
402
|
-
], n.prototype, "isMultiSelect");
|
|
403
|
-
r([
|
|
404
|
-
c({ type: Boolean, attribute: "allow-user-input" })
|
|
405
|
-
], n.prototype, "allowUserInput");
|
|
406
|
-
r([
|
|
407
|
-
c({ type: Boolean, attribute: "max-is-reached" })
|
|
408
|
-
], n.prototype, "maxIsReached");
|
|
409
|
-
r([
|
|
410
|
-
c({ type: String, attribute: "custom-user-input" })
|
|
411
|
-
], n.prototype, "customUserInput");
|
|
412
|
-
r([
|
|
413
|
-
c({ type: String, attribute: "search-placeholder" })
|
|
414
|
-
], n.prototype, "searchPlaceholder");
|
|
415
|
-
r([
|
|
416
|
-
c({ type: String, attribute: "search-value" })
|
|
417
|
-
], n.prototype, "searchValue");
|
|
418
|
-
r([
|
|
419
|
-
c({ type: Number, attribute: "max-length" })
|
|
420
|
-
], n.prototype, "maxLength");
|
|
421
|
-
r([
|
|
422
|
-
c({ type: String, attribute: "user-message" })
|
|
423
|
-
], n.prototype, "userMessage");
|
|
424
|
-
r([
|
|
425
|
-
w()
|
|
426
|
-
], n.prototype, "_filteredOptions");
|
|
427
|
-
try {
|
|
428
|
-
v("pkt-listbox")(n);
|
|
429
|
-
} catch {
|
|
430
|
-
console.warn("Forsøker å definere <pkt-listbox>, men den er allerede definert");
|
|
431
|
-
}
|
|
432
|
-
export {
|
|
433
|
-
n as P,
|
|
434
|
-
N as a,
|
|
435
|
-
H as b,
|
|
436
|
-
q as c,
|
|
437
|
-
F as f,
|
|
438
|
-
W as g,
|
|
439
|
-
z as i
|
|
440
|
-
};
|
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
"use strict";const a=require("./element-gR_VtSiD.cjs"),m=require("./state-Dg-53wQ8.cjs"),b=require("./if-defined-BOW3ODSj.cjs"),y=require("./repeat-Cfq8CDlf.cjs"),x=require("./class-map-CsENJXf1.cjs"),v=require("./utils-byXsEz1u.cjs"),_=(s,e)=>e&&(s.find(t=>t.value===e)||s.find(t=>t.label===e))||null,O=(s,e)=>{if(!e)return-1;const t=s.findIndex(n=>n.value===e);return t>=0?t:s.findIndex(n=>n.label===e)},w=(s,e)=>{if(!e)return[...s];const t=e.toLowerCase();return s.filter(n=>(n.fulltext||n.value+(n.label||"")+(n.prefix||"")).toLowerCase().includes(t))},$=s=>s.value+(s.label||"")+(s.prefix||""),S=(s,e)=>e!==null&&s>=e,I=(s,e)=>{if(!e)return{filtered:[...s],suggestion:null};const t=e.toLowerCase(),n=s.filter(c=>{var l;return(l=c.fulltext)==null?void 0:l.toLowerCase().includes(t)}),i=n.find(c=>{var l;return!c.selected&&((l=c.label)==null?void 0:l.toLowerCase().startsWith(t))})||null;return{filtered:n,suggestion:i}},C=(s,e,t,n)=>{if(!s.trim())return{addValueText:null,userInfoMessage:""};const i=s.trim().toLowerCase(),c=e.find(u=>u.toLowerCase()===i),l=t.filter(u=>{var h;return((h=u.label)==null?void 0:h.toLowerCase().includes(i))||u.value.toLowerCase().includes(i)}),g=l.find(u=>{var h;return((h=u.label)==null?void 0:h.toLowerCase())===i||u.value.toLowerCase()===i});return(l.length===0||!g)&&n?{addValueText:s,userInfoMessage:""}:l.length===0&&!n?{addValueText:null,userInfoMessage:"Ingen treff i søket"}:c?{addValueText:null,userInfoMessage:"Verdien er allerede valgt"}:{addValueText:null,userInfoMessage:""}},M=s=>/^[\p{L} ]$/u.test(s),L=(s=500)=>{let e="",t;return{append:c=>(e+=c.toLowerCase(),t!==void 0&&clearTimeout(t),t=setTimeout(()=>{e=""},s),e),reset:()=>{e="",t!==void 0&&(clearTimeout(t),t=void 0)},getBuffer:()=>e}},E=(s,e)=>{const t=e.toLowerCase();return s.findIndex(n=>{var i;return(i=n.textContent)==null?void 0:i.trim().toLowerCase().startsWith(t)})},d=s=>{s.scrollIntoView({block:"nearest"}),window.setTimeout(()=>s.focus(),0)},p=s=>Array.from(s.querySelectorAll('[role="option"]:not([data-disabled])')||[]),T=s=>{const e=s.nextElementSibling;e&&d(e)},U=(s,e,t)=>{const n=s.previousElementSibling;if(s.dataset.index==="0"&&t){const i=e.querySelector('[role="searchbox"]');i&&d(i)}else n&&d(n)},f=s=>{const e=p(s);e[0]&&d(e[0])},k=s=>{const e=p(s),t=e[e.length-1];t&&d(t)},A=(s,e)=>{if(e.disabled)return;const t=p(s);if(e.allowUserInput&&e.customUserInput){const i=s.querySelector('[data-type="new-option"]');if(i){d(i);return}}const n=t.find(i=>i.dataset.selected==="true");if(n){d(n);return}if(e.includeSearch&&!(document.activeElement instanceof HTMLInputElement)){const i=s.querySelector('[role="searchbox"]');if(i){window.setTimeout(()=>i.focus(),0);return}}t[0]&&d(t[0])};var V=Object.defineProperty,o=(s,e,t,n)=>{for(var i=void 0,c=s.length-1,l;c>=0;c--)(l=s[c])&&(i=l(e,t,i)||i);return i&&V(e,t,i),i};class r extends a.PktElement{constructor(){super(...arguments),this.id=v.uuidish(),this.label=null,this.options=[],this.isOpen=!1,this.disabled=!1,this.includeSearch=!1,this.isMultiSelect=!1,this.allowUserInput=!1,this.maxIsReached=!1,this.customUserInput=null,this.searchPlaceholder=null,this.searchValue=null,this.maxLength=0,this.userMessage=null,this._selectedOptions=0,this.typeahead=L(),this._filteredOptions=[]}connectedCallback(){super.connectedCallback(),this.includeSearch&&!this.searchValue&&(this.searchValue=""),this.options.length>0&&this.filterOptions(),this.setAttribute("tabindex","-1"),this.addEventListener("focus",this.focusFirstOrSelectedOption)}disconnectedCallback(){super.disconnectedCallback(),this.typeahead.reset()}updated(e){(e.has("options")||e.has("searchValue"))&&this.filterOptions(),super.updated(e)}attributeChangedCallback(e,t,n){(e==="options"||e==="search-value")&&this.filterOptions(),super.attributeChangedCallback(e,t,n)}get _hasOptions(){return this._filteredOptions.length>0||this.options.length>0}render(){return a.b`
|
|
2
|
-
<div
|
|
3
|
-
class=${x.e({"pkt-listbox":!0,"pkt-listbox__open":this.isOpen,"pkt-txt-16-light":!0})}
|
|
4
|
-
role=${b.o(this._hasOptions?"listbox":void 0)}
|
|
5
|
-
aria-multiselectable=${b.o(this._hasOptions&&this.isMultiSelect?"true":void 0)}
|
|
6
|
-
aria-label=${b.o(this._hasOptions?this.label??void 0:void 0)}
|
|
7
|
-
>
|
|
8
|
-
<div class="pkt-listbox__banners">
|
|
9
|
-
${this.renderSearch()} ${this.renderMaximumReachedBanner()} ${this.renderUserMessage()}
|
|
10
|
-
${this.renderEmptyMessage()} ${this.renderNewOptionBanner()}
|
|
11
|
-
</div>
|
|
12
|
-
<ul class="pkt-listbox__options" role="presentation">
|
|
13
|
-
${this.renderList()}
|
|
14
|
-
</ul>
|
|
15
|
-
</div>
|
|
16
|
-
<div aria-live="polite" class="pkt-visually-hidden">${this.userMessage}</div>
|
|
17
|
-
`}renderCheckboxOrCheckIcon(e,t){return this.isMultiSelect?a.b`
|
|
18
|
-
<input
|
|
19
|
-
class="pkt-input-check__input-checkbox"
|
|
20
|
-
type="checkbox"
|
|
21
|
-
role="presentation"
|
|
22
|
-
tabindex="-1"
|
|
23
|
-
value=${e.value}
|
|
24
|
-
@change=${n=>{n.stopPropagation()}}
|
|
25
|
-
.checked=${e.selected}
|
|
26
|
-
aria-labelledby=${this.id+"-option-label-"+t}
|
|
27
|
-
?disabled=${this.disabled||e.disabled||this.maxIsReached&&!e.selected}
|
|
28
|
-
/>
|
|
29
|
-
`:e.selected?a.b`<pkt-icon name="check-big"></pkt-icon>`:a.A}renderEmptyMessage(){return this.options.length>0||this._filteredOptions.length>0||this.userMessage?a.A:a.b`<div class="pkt-listbox__banner pkt-listbox__banner--empty">
|
|
30
|
-
<pkt-icon
|
|
31
|
-
class="pkt-listbox__banner-icon"
|
|
32
|
-
name="exclamation-mark-circle"
|
|
33
|
-
size="large"
|
|
34
|
-
></pkt-icon>
|
|
35
|
-
Tom liste
|
|
36
|
-
</div>`}renderList(){return a.b`
|
|
37
|
-
${y.c(this._filteredOptions,e=>e.value,(e,t)=>a.b`
|
|
38
|
-
<li
|
|
39
|
-
@click=${()=>{this.toggleOption(e)}}
|
|
40
|
-
aria-selected=${e.selected?"true":"false"}
|
|
41
|
-
@keydown=${this.handleOptionKeydown}
|
|
42
|
-
class=${x.e({"pkt-listbox__option":!0,"pkt-listbox__option--selected":!!(!this.isMultiSelect&&e.selected),"pkt-listbox__option--checkBox":this.isMultiSelect})}
|
|
43
|
-
tabindex="${this.disabled||e.disabled?"-1":"0"}"
|
|
44
|
-
data-index=${t}
|
|
45
|
-
data-value=${e.value}
|
|
46
|
-
data-selected=${e.selected?"true":"false"}
|
|
47
|
-
?data-disabled=${this.disabled||e.disabled||this.maxIsReached&&!e.selected}
|
|
48
|
-
aria-disabled=${this.disabled||e.disabled||this.maxIsReached&&!e.selected?"true":"false"}
|
|
49
|
-
role="option"
|
|
50
|
-
id=${`${this.id}-${t}`}
|
|
51
|
-
>
|
|
52
|
-
${this.renderCheckboxOrCheckIcon(e,t)}
|
|
53
|
-
<span class="pkt-listbox__option-label" id=${this.id+"-option-label-"+t}>
|
|
54
|
-
${e.prefix?a.b`<span class="pkt-listbox__option-prefix">${e.prefix}</span>`:a.A}
|
|
55
|
-
${e.label||e.value}
|
|
56
|
-
</span>
|
|
57
|
-
${e.description?a.b`<span class="pkt-listbox__option-description pkt-txt-14-light"
|
|
58
|
-
>${e.description}</span
|
|
59
|
-
>`:a.A}
|
|
60
|
-
</li>
|
|
61
|
-
`)}
|
|
62
|
-
`}renderNewOptionBanner(){return this.allowUserInput&&this.customUserInput?a.b`
|
|
63
|
-
<div
|
|
64
|
-
class="pkt-listbox__banner pkt-listbox__banner--new-option pkt-listbox__option"
|
|
65
|
-
data-type="new-option"
|
|
66
|
-
data-value=${this.customUserInput}
|
|
67
|
-
data-selected="false"
|
|
68
|
-
tabindex="0"
|
|
69
|
-
@click=${()=>this.toggleOption({value:this.customUserInput||""})}
|
|
70
|
-
@keydown=${this.handleOptionKeydown}
|
|
71
|
-
>
|
|
72
|
-
<pkt-icon class="pkt-listbox__banner-icon" name="plus-sign" size="large"></pkt-icon>
|
|
73
|
-
Legg til "${this.customUserInput}"
|
|
74
|
-
</div>
|
|
75
|
-
`:a.A}renderMaximumReachedBanner(){return this._selectedOptions=this.options.filter(e=>e.selected).length,this.isMultiSelect&&this._selectedOptions>0&&this.maxLength>0?a.b`
|
|
76
|
-
<div class="pkt-listbox__banner pkt-listbox__banner--maximum-reached">
|
|
77
|
-
${this._selectedOptions} av maks ${this.maxLength} mulige er valgt.
|
|
78
|
-
</div>
|
|
79
|
-
`:a.A}renderUserMessage(){return this.userMessage?a.b`<div class="pkt-listbox__banner pkt-listbox__banner--user-message">
|
|
80
|
-
<pkt-icon
|
|
81
|
-
class="pkt-listbox__banner-icon"
|
|
82
|
-
name="exclamation-mark-circle"
|
|
83
|
-
size="large"
|
|
84
|
-
></pkt-icon>
|
|
85
|
-
${this.userMessage}
|
|
86
|
-
</div>`:a.A}renderSearch(){return this.includeSearch?a.b`
|
|
87
|
-
<div class="pkt-listbox__search">
|
|
88
|
-
<span class="pkt-listbox__search-icon">
|
|
89
|
-
<pkt-icon name="magnifying-glass-small" size="large"></pkt-icon>
|
|
90
|
-
</span>
|
|
91
|
-
<input
|
|
92
|
-
class="pkt-txt-16-light"
|
|
93
|
-
type="text"
|
|
94
|
-
aria-label="Søk i listen"
|
|
95
|
-
form=""
|
|
96
|
-
placeholder=${this.searchPlaceholder||a.strings.forms.search.placeholder}
|
|
97
|
-
@input=${this.handleSearchInput}
|
|
98
|
-
@keydown=${this.handleSearchKeydown}
|
|
99
|
-
.value=${this.searchValue}
|
|
100
|
-
data-type="searchbox"
|
|
101
|
-
?disabled=${this.disabled}
|
|
102
|
-
?readonly=${this.disabled}
|
|
103
|
-
role="searchbox"
|
|
104
|
-
/>
|
|
105
|
-
</div>
|
|
106
|
-
`:a.A}handleSearchInput(e){this.searchValue=e.target.value,this.dispatchEvent(new CustomEvent("search",{detail:this.searchValue,bubbles:!1}))}handleSearchKeydown(e){switch(e.key){case"Enter":e.preventDefault();break;case"ArrowUp":case"Escape":this.closeOptions(),e.preventDefault();break;case"ArrowDown":this.focusFirstOrSelectedOption();break;case"Tab":this.tabClose();break}}handleOptionKeydown(e){const t=e.currentTarget,n=t.dataset.value,i=t.dataset.type,c=t.dataset.selected==="true";if(!(!p(this).length&&(!this.customUserInput||!this.allowUserInput&&this.customUserInput)&&i!=="new-option"&&i!=="searchbox"))switch(e.key){case" ":case"Enter":this.toggleOption(t),e.preventDefault();break;case"Backspace":n&&(c?this.toggleOption(t):this.closeOptions()),e.preventDefault();break;case"Escape":this.closeOptions(),e.preventDefault();break;case"Tab":this.tabClose();break;case"ArrowDown":e.altKey?k(this):i==="searchbox"||i==="new-option"?f(this):T(t),e.preventDefault();break;case"ArrowUp":if(e.altKey)f(this);else if(t.dataset.index==="0"&&this.includeSearch){const l=this.querySelector('[role="searchbox"]');l&&l.focus()}else if(t.dataset.index==="0"&&this.customUserInput){const l=this.querySelector('[data-type="new-option"]');l&&l.focus()}else U(t,this,this.includeSearch);e.preventDefault();break;case"Home":f(this),e.preventDefault();break;case"End":k(this),e.preventDefault();break;default:(e.metaKey||e.ctrlKey)&&e.key==="a"&&(this.selectAll(),e.preventDefault()),M(e.key)&&(this.handleTypeAhead(e.key),e.preventDefault());break}}focusFirstOrSelectedOption(){A(this,{disabled:this.disabled,allowUserInput:this.allowUserInput,customUserInput:this.customUserInput,includeSearch:this.includeSearch})}toggleOption(e){const t=e instanceof HTMLElement?e.dataset.disabled:e.disabled;if(this.disabled||t)return;const n=e instanceof HTMLElement?e.dataset.value:e.value;this.dispatchEvent(new CustomEvent("option-toggle",{detail:n,bubbles:!1}))}selectAll(){this.dispatchEvent(new CustomEvent("select-all",{bubbles:!1}))}closeOptions(){this.dispatchEvent(new CustomEvent("close-options",{bubbles:!1}))}tabClose(){this.dispatchEvent(new CustomEvent("tab-close",{bubbles:!1}))}filterOptions(){this._filteredOptions=w(this.options,this.searchValue)}handleTypeAhead(e){const t=this.typeahead.append(e),n=p(this),i=E(n,t);i>=0&&d(n[i])}}o([a.n({type:String})],r.prototype,"id");o([a.n({type:String})],r.prototype,"label");o([a.n({type:Array})],r.prototype,"options");o([a.n({type:Boolean,reflect:!0,attribute:"is-open"})],r.prototype,"isOpen");o([a.n({type:Boolean})],r.prototype,"disabled");o([a.n({type:Boolean,attribute:"include-search"})],r.prototype,"includeSearch");o([a.n({type:Boolean,attribute:"is-multi-select"})],r.prototype,"isMultiSelect");o([a.n({type:Boolean,attribute:"allow-user-input"})],r.prototype,"allowUserInput");o([a.n({type:Boolean,attribute:"max-is-reached"})],r.prototype,"maxIsReached");o([a.n({type:String,attribute:"custom-user-input"})],r.prototype,"customUserInput");o([a.n({type:String,attribute:"search-placeholder"})],r.prototype,"searchPlaceholder");o([a.n({type:String,attribute:"search-value"})],r.prototype,"searchValue");o([a.n({type:Number,attribute:"max-length"})],r.prototype,"maxLength");o([a.n({type:String,attribute:"user-message"})],r.prototype,"userMessage");o([m.r()],r.prototype,"_filteredOptions");try{a.t("pkt-listbox")(r)}catch{console.warn("Forsøker å definere <pkt-listbox>, men den er allerede definert")}exports.PktListbox=r;exports.buildFulltext=$;exports.findOptionByValue=_;exports.findOptionIndex=O;exports.findTypeaheadMatches=I;exports.getSearchInfoMessage=C;exports.isMaxSelectionReached=S;
|
package/dist/loader-D1ugDXGV.cjs
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
"use strict";const d=require("./element-with-slot-ZX-up7jO.cjs"),p=require("./class-map-CsENJXf1.cjs"),t=require("./element-gR_VtSiD.cjs"),h=require("./state-Dg-53wQ8.cjs");require("./icon-q81vqPK_.cjs");var u=Object.defineProperty,s=(n,i,r,c)=>{for(var a=void 0,o=n.length-1,l;o>=0;o--)(l=n[o])&&(a=l(i,r,a)||a);return a&&u(i,r,a),a};window.pktAnimationPath=window.pktAnimationPath||"https://punkt-cdn.oslo.kommune.no/latest/animations/";class e extends d.PktElementWithSlot{constructor(){super(...arguments),this.delay=0,this.inline=!1,this.isLoading=!0,this.message=null,this.size="medium",this.variant="shapes",this.loadingAnimationPath=window.pktAnimationPath,this._shouldDisplayLoader=!1}connectedCallback(){super.connectedCallback(),this._shouldDisplayLoader=this.delay===0,this.delay>0&&this.setupLoader()}updated(i){i.has("delay")&&this.setupLoader()}render(){const i=p.e({"pkt-loader":!0,[`pkt-loader--${this.inline?"inline":"box"}`]:!0,[`pkt-loader--${this.size}`]:!0}),r=p.e({"pkt-contents":!0,"pkt-hide":this.isLoading});return t.b`<div
|
|
2
|
-
role="status"
|
|
3
|
-
aria-live="polite"
|
|
4
|
-
aria-busy=${this.isLoading?"true":"false"}
|
|
5
|
-
class=${i}
|
|
6
|
-
>
|
|
7
|
-
${this.isLoading&&this._shouldDisplayLoader?t.b`<div class="pkt-loader__spinner">
|
|
8
|
-
<pkt-icon
|
|
9
|
-
name=${this.getVariant(this.variant)}
|
|
10
|
-
path=${this.loadingAnimationPath}
|
|
11
|
-
class="pkt-loader__svg pkt-loader__${this.variant}"
|
|
12
|
-
></pkt-icon>
|
|
13
|
-
${this.message&&t.b`<p>${this.message}</p>`}
|
|
14
|
-
</div>`:t.A}
|
|
15
|
-
<div class=${r}>${d.slotContent(this)}</div>
|
|
16
|
-
</div>`}getVariant(i){switch(i){case"blue":return"spinner-blue";case"rainbow":return"spinner";default:return"loader"}}setupLoader(){this.delay>0&&(this._shouldDisplayLoader=!1,setTimeout(()=>{this._shouldDisplayLoader=!0,this.requestUpdate()},this.delay))}}s([t.n({type:Number})],e.prototype,"delay");s([t.n({type:Boolean})],e.prototype,"inline");s([t.n({type:Boolean})],e.prototype,"isLoading");s([t.n({type:String})],e.prototype,"message");s([t.n({type:String})],e.prototype,"size");s([t.n({type:String})],e.prototype,"variant");s([t.n({type:String})],e.prototype,"loadingAnimationPath");s([h.r()],e.prototype,"_shouldDisplayLoader");try{t.t("pkt-loader")(e)}catch{console.warn("Forsøker å definere <pkt-loader>, men den er allerede definert")}exports.PktLoader=e;
|
package/dist/loader-DyN6RGC5.js
DELETED
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
import { P as h, s as u } from "./element-with-slot-Dqk6-TRR.js";
|
|
2
|
-
import { e as d } from "./class-map-CEnykyO_.js";
|
|
3
|
-
import { t as m, A as y, b as l, n as s } from "./element-CPpT3rFQ.js";
|
|
4
|
-
import { r as c } from "./state-C_1EOo3D.js";
|
|
5
|
-
import "./icon-CxQcIa5F.js";
|
|
6
|
-
var k = Object.defineProperty, i = (o, e, r, g) => {
|
|
7
|
-
for (var a = void 0, n = o.length - 1, p; n >= 0; n--)
|
|
8
|
-
(p = o[n]) && (a = p(e, r, a) || a);
|
|
9
|
-
return a && k(e, r, a), a;
|
|
10
|
-
};
|
|
11
|
-
window.pktAnimationPath = window.pktAnimationPath || "https://punkt-cdn.oslo.kommune.no/latest/animations/";
|
|
12
|
-
class t extends h {
|
|
13
|
-
constructor() {
|
|
14
|
-
super(...arguments), this.delay = 0, this.inline = !1, this.isLoading = !0, this.message = null, this.size = "medium", this.variant = "shapes", this.loadingAnimationPath = window.pktAnimationPath, this._shouldDisplayLoader = !1;
|
|
15
|
-
}
|
|
16
|
-
connectedCallback() {
|
|
17
|
-
super.connectedCallback(), this._shouldDisplayLoader = this.delay === 0, this.delay > 0 && this.setupLoader();
|
|
18
|
-
}
|
|
19
|
-
updated(e) {
|
|
20
|
-
e.has("delay") && this.setupLoader();
|
|
21
|
-
}
|
|
22
|
-
render() {
|
|
23
|
-
const e = d({
|
|
24
|
-
"pkt-loader": !0,
|
|
25
|
-
[`pkt-loader--${this.inline ? "inline" : "box"}`]: !0,
|
|
26
|
-
[`pkt-loader--${this.size}`]: !0
|
|
27
|
-
}), r = d({
|
|
28
|
-
"pkt-contents": !0,
|
|
29
|
-
"pkt-hide": this.isLoading
|
|
30
|
-
});
|
|
31
|
-
return l`<div
|
|
32
|
-
role="status"
|
|
33
|
-
aria-live="polite"
|
|
34
|
-
aria-busy=${this.isLoading ? "true" : "false"}
|
|
35
|
-
class=${e}
|
|
36
|
-
>
|
|
37
|
-
${this.isLoading && this._shouldDisplayLoader ? l`<div class="pkt-loader__spinner">
|
|
38
|
-
<pkt-icon
|
|
39
|
-
name=${this.getVariant(this.variant)}
|
|
40
|
-
path=${this.loadingAnimationPath}
|
|
41
|
-
class="pkt-loader__svg pkt-loader__${this.variant}"
|
|
42
|
-
></pkt-icon>
|
|
43
|
-
${this.message && l`<p>${this.message}</p>`}
|
|
44
|
-
</div>` : y}
|
|
45
|
-
<div class=${r}>${u(this)}</div>
|
|
46
|
-
</div>`;
|
|
47
|
-
}
|
|
48
|
-
getVariant(e) {
|
|
49
|
-
switch (e) {
|
|
50
|
-
case "blue":
|
|
51
|
-
return "spinner-blue";
|
|
52
|
-
case "rainbow":
|
|
53
|
-
return "spinner";
|
|
54
|
-
default:
|
|
55
|
-
return "loader";
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
setupLoader() {
|
|
59
|
-
this.delay > 0 && (this._shouldDisplayLoader = !1, setTimeout(() => {
|
|
60
|
-
this._shouldDisplayLoader = !0, this.requestUpdate();
|
|
61
|
-
}, this.delay));
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
i([
|
|
65
|
-
s({ type: Number })
|
|
66
|
-
], t.prototype, "delay");
|
|
67
|
-
i([
|
|
68
|
-
s({ type: Boolean })
|
|
69
|
-
], t.prototype, "inline");
|
|
70
|
-
i([
|
|
71
|
-
s({ type: Boolean })
|
|
72
|
-
], t.prototype, "isLoading");
|
|
73
|
-
i([
|
|
74
|
-
s({ type: String })
|
|
75
|
-
], t.prototype, "message");
|
|
76
|
-
i([
|
|
77
|
-
s({ type: String })
|
|
78
|
-
], t.prototype, "size");
|
|
79
|
-
i([
|
|
80
|
-
s({ type: String })
|
|
81
|
-
], t.prototype, "variant");
|
|
82
|
-
i([
|
|
83
|
-
s({ type: String })
|
|
84
|
-
], t.prototype, "loadingAnimationPath");
|
|
85
|
-
i([
|
|
86
|
-
c()
|
|
87
|
-
], t.prototype, "_shouldDisplayLoader");
|
|
88
|
-
try {
|
|
89
|
-
m("pkt-loader")(t);
|
|
90
|
-
} catch {
|
|
91
|
-
console.warn("Forsøker å definere <pkt-loader>, men den er allerede definert");
|
|
92
|
-
}
|
|
93
|
-
export {
|
|
94
|
-
t as P
|
|
95
|
-
};
|