@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.
Files changed (248) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/accordion-BB1JrONI.cjs +34 -0
  3. package/dist/accordion-nNH87Y60.js +130 -0
  4. package/dist/alert-BEEnTiCb.cjs +33 -0
  5. package/dist/alert-ePJuDtmm.js +171 -0
  6. package/dist/async-directive-B9P1Qa0k.cjs +1 -0
  7. package/dist/async-directive-CaQiqjyV.js +55 -0
  8. package/dist/backlink-Ba03LlbB.cjs +13 -0
  9. package/dist/backlink-CiwXrQYD.js +38 -0
  10. package/dist/booleanish-BmcOU-43.js +11 -0
  11. package/dist/booleanish-jJLlnr6-.cjs +1 -0
  12. package/dist/breadcrumbs-CD1zib3s.cjs +43 -0
  13. package/dist/breadcrumbs-CpuVqWhF.js +76 -0
  14. package/dist/button-BIpd1xJh.js +95 -0
  15. package/dist/button-D-TOBaJB.cjs +27 -0
  16. package/dist/calendar-BzEtOJla.js +2031 -0
  17. package/dist/calendar-E5jJLt8D.cjs +90 -0
  18. package/dist/card-BYJu1MYm.js +339 -0
  19. package/dist/card-CUFhMVim.cjs +87 -0
  20. package/dist/checkbox-BARDb9iV.cjs +31 -0
  21. package/dist/checkbox-Cspxcvt_.js +111 -0
  22. package/dist/class-map-C8HuhNzZ.js +27 -0
  23. package/dist/class-map-CJ-msbHs.cjs +1 -0
  24. package/dist/classutils-DEL164Ur.js +7 -0
  25. package/dist/classutils-z8YsPlOf.cjs +1 -0
  26. package/dist/combobox-BcdLZRDU.js +984 -0
  27. package/dist/combobox-CGbFTWq_.cjs +135 -0
  28. package/dist/consent-DeB_5sWH.js +197 -0
  29. package/dist/consent-hwu7pp3S.cjs +11 -0
  30. package/dist/datepicker-DpmlsnH_.cjs +273 -0
  31. package/dist/datepicker-OVd8pmnZ.js +1125 -0
  32. package/dist/dialog-polyfill.esm-1hPr0gl9.js +280 -0
  33. package/dist/dialog-polyfill.esm-D3Oinvk0.cjs +1 -0
  34. package/dist/directive-3THFsVew.js +28 -0
  35. package/dist/directive-CJ2giQBZ.cjs +1 -0
  36. package/dist/directive-helpers-D1QSxY17.cjs +1 -0
  37. package/dist/directive-helpers-Dkv2gKgs.js +25 -0
  38. package/dist/element-DjtxO-1r.cjs +2 -0
  39. package/dist/element-cZ85T_aa.js +693 -0
  40. package/dist/element-with-slot-4J2o3SeU.js +166 -0
  41. package/dist/element-with-slot-CWoTGA1B.cjs +1 -0
  42. package/dist/header-DWgPgGfS.cjs +304 -0
  43. package/dist/header-a6ztVNp3.js +782 -0
  44. package/dist/heading-BgSWIRii.cjs +1 -0
  45. package/dist/heading-DiQLPxdf.js +73 -0
  46. package/dist/helptext-CCBKKLus.js +65 -0
  47. package/dist/helptext-D-3QfZv5.cjs +24 -0
  48. package/dist/icon-Co72KtgF.js +86 -0
  49. package/dist/icon-Dr8sfT2X.cjs +1 -0
  50. package/dist/if-defined-Cjj8qN-Z.js +5 -0
  51. package/dist/if-defined-XKOD_t_V.cjs +1 -0
  52. package/dist/index.d.ts +1 -2
  53. package/dist/input-element-B1yxcfz4.cjs +1 -0
  54. package/dist/input-element-Bw1s6NlF.js +643 -0
  55. package/dist/input-wrapper-BRuVELpK.cjs +54 -0
  56. package/dist/input-wrapper-CDyHTR1V.js +164 -0
  57. package/dist/input-wrapper-Dwd-_sKm.cjs +1 -0
  58. package/dist/input-wrapper-YfTmpSSY.js +117 -0
  59. package/dist/link-CKAFMz9j.js +89 -0
  60. package/dist/link-CyTCpI0k.cjs +7 -0
  61. package/dist/linkcard-B0KOGaGj.js +55 -0
  62. package/dist/linkcard-BE4-FewK.cjs +13 -0
  63. package/dist/listbox-DCA2JoPV.cjs +106 -0
  64. package/dist/listbox-DuBgTFvH.js +397 -0
  65. package/dist/loader-6kFZUErT.js +66 -0
  66. package/dist/loader-CX2rsC01.cjs +16 -0
  67. package/dist/messagebox-Cwlg5sOr.js +110 -0
  68. package/dist/messagebox-Din9X53b.cjs +13 -0
  69. package/dist/modal-C_wtsh9m.js +209 -0
  70. package/dist/modal-DS_wUOIv.cjs +36 -0
  71. package/dist/pkt-accordion.cjs +1 -1
  72. package/dist/pkt-accordion.js +2 -7
  73. package/dist/pkt-alert.cjs +1 -1
  74. package/dist/pkt-alert.js +2 -5
  75. package/dist/pkt-backlink.cjs +1 -1
  76. package/dist/pkt-backlink.js +2 -5
  77. package/dist/pkt-breadcrumbs.cjs +1 -43
  78. package/dist/pkt-breadcrumbs.js +2 -81
  79. package/dist/pkt-button.cjs +1 -1
  80. package/dist/pkt-button.js +2 -5
  81. package/dist/pkt-calendar.cjs +1 -1
  82. package/dist/pkt-calendar.js +2 -5
  83. package/dist/pkt-card.cjs +1 -1
  84. package/dist/pkt-card.js +2 -5
  85. package/dist/pkt-checkbox.cjs +1 -1
  86. package/dist/pkt-checkbox.js +2 -5
  87. package/dist/pkt-combobox.cjs +1 -1
  88. package/dist/pkt-combobox.js +2 -5
  89. package/dist/pkt-consent.cjs +1 -1
  90. package/dist/pkt-consent.js +2 -5
  91. package/dist/pkt-datepicker.cjs +1 -1
  92. package/dist/pkt-datepicker.js +5 -9
  93. package/dist/pkt-header.cjs +1 -304
  94. package/dist/pkt-header.js +2 -861
  95. package/dist/pkt-heading.cjs +1 -1
  96. package/dist/pkt-heading.js +2 -5
  97. package/dist/pkt-helptext.cjs +1 -1
  98. package/dist/pkt-helptext.js +2 -5
  99. package/dist/pkt-icon.cjs +1 -1
  100. package/dist/pkt-icon.js +2 -5
  101. package/dist/pkt-index.cjs +1 -1
  102. package/dist/pkt-index.js +30 -66
  103. package/dist/pkt-input-wrapper.cjs +1 -1
  104. package/dist/pkt-input-wrapper.js +2 -5
  105. package/dist/pkt-link.cjs +1 -1
  106. package/dist/pkt-link.js +2 -5
  107. package/dist/pkt-linkcard.cjs +1 -1
  108. package/dist/pkt-linkcard.js +2 -5
  109. package/dist/pkt-listbox.cjs +1 -1
  110. package/dist/pkt-listbox.js +2 -5
  111. package/dist/pkt-loader.cjs +1 -1
  112. package/dist/pkt-loader.js +2 -5
  113. package/dist/pkt-messagebox.cjs +1 -1
  114. package/dist/pkt-messagebox.js +2 -5
  115. package/dist/pkt-modal.cjs +1 -1
  116. package/dist/pkt-modal.js +2 -5
  117. package/dist/pkt-options-controller-CRrI6WMk.js +43 -0
  118. package/dist/pkt-options-controller-CXUGx134.cjs +1 -0
  119. package/dist/pkt-progressbar.cjs +1 -1
  120. package/dist/pkt-progressbar.js +2 -5
  121. package/dist/pkt-radiobutton.cjs +1 -1
  122. package/dist/pkt-radiobutton.js +2 -5
  123. package/dist/pkt-select.cjs +1 -1
  124. package/dist/pkt-select.js +2 -5
  125. package/dist/pkt-tabs.cjs +1 -1
  126. package/dist/pkt-tabs.js +2 -7
  127. package/dist/pkt-tag.cjs +1 -1
  128. package/dist/pkt-tag.js +2 -5
  129. package/dist/pkt-textarea.cjs +1 -1
  130. package/dist/pkt-textarea.js +2 -5
  131. package/dist/pkt-textinput.cjs +1 -1
  132. package/dist/pkt-textinput.js +2 -5
  133. package/dist/pkt-timepicker.cjs +1 -191
  134. package/dist/pkt-timepicker.js +2 -560
  135. package/dist/progressbar-CdXtmOBb.cjs +17 -0
  136. package/dist/progressbar-Dy9AiYQz.js +113 -0
  137. package/dist/radiobutton-GOnpUbCW.cjs +31 -0
  138. package/dist/radiobutton-V_KPbup_.js +84 -0
  139. package/dist/ref-BaJ0mBT_.cjs +1 -0
  140. package/dist/ref-RS8Uv6uC.js +30 -0
  141. package/dist/repeat-Cepr3469.js +57 -0
  142. package/dist/repeat-CqcDYBxr.cjs +1 -0
  143. package/dist/select-BSAFd8Wa.js +164 -0
  144. package/dist/select-C2i8sOk5.cjs +49 -0
  145. package/dist/tabs-D8nL9rWx.cjs +37 -0
  146. package/dist/tabs-Y7utmJi9.js +318 -0
  147. package/dist/tag-DLthw5b4.cjs +27 -0
  148. package/dist/tag-VwykmuQR.js +179 -0
  149. package/dist/textarea-D7aGOyDf.cjs +46 -0
  150. package/dist/textarea-DYOBhJrN.js +115 -0
  151. package/dist/textinput-BUgntXnM.js +124 -0
  152. package/dist/textinput-DFh8_9cx.cjs +70 -0
  153. package/dist/timepicker-BIfE7KKJ.cjs +191 -0
  154. package/dist/timepicker-DaSwn1FA.js +503 -0
  155. package/dist/utils-CUqCKGvp.js +7 -0
  156. package/dist/utils-CjAbIttF.cjs +1 -0
  157. package/package.json +6 -6
  158. package/src/components/alert/alert.test.ts +1 -1
  159. package/src/components/alert/alert.ts +6 -6
  160. package/src/components/datepicker/datepicker-utils.test.ts +16 -23
  161. package/dist/accordionitem-_9AiCIvd.cjs +0 -34
  162. package/dist/accordionitem-dCfSrxh5.js +0 -140
  163. package/dist/alert-BtOk8yRH.cjs +0 -33
  164. package/dist/alert-DlY2_grU.js +0 -117
  165. package/dist/async-directive-CMzWMlZ5.js +0 -65
  166. package/dist/async-directive-DoMuclel.cjs +0 -5
  167. package/dist/backlink-Ce5Vldop.js +0 -49
  168. package/dist/backlink-y3dwjKPC.cjs +0 -13
  169. package/dist/booleanish-BKVonob4.cjs +0 -1
  170. package/dist/booleanish-C9R0tdXH.js +0 -11
  171. package/dist/button-B_TXwNzt.cjs +0 -27
  172. package/dist/button-BiY-wlKF.js +0 -139
  173. package/dist/calendar-B2pji2zn.cjs +0 -90
  174. package/dist/calendar-DhjQDC4C.js +0 -2140
  175. package/dist/card-BwMNB5Bb.cjs +0 -87
  176. package/dist/card-CGlmcMSR.js +0 -233
  177. package/dist/checkbox-BsJZYA26.js +0 -147
  178. package/dist/checkbox-CTY8f_qn.cjs +0 -31
  179. package/dist/class-map-CEnykyO_.js +0 -34
  180. package/dist/class-map-CsENJXf1.cjs +0 -5
  181. package/dist/classutils-BwNK82ZQ.cjs +0 -1
  182. package/dist/classutils-RQs1k6D9.js +0 -7
  183. package/dist/combobox-DSB5WOxg.js +0 -815
  184. package/dist/combobox-DbICIgKG.cjs +0 -135
  185. package/dist/consent-DkOQpbsg.cjs +0 -11
  186. package/dist/consent-SNWV_mMU.js +0 -175
  187. package/dist/datepicker-BEWl9iz3.cjs +0 -273
  188. package/dist/datepicker-euHyzXnb.js +0 -1170
  189. package/dist/dialog-polyfill.esm-CPKZe7AL.cjs +0 -1
  190. package/dist/dialog-polyfill.esm-CbjBMXAG.js +0 -395
  191. package/dist/directive-C7oCP5Bh.cjs +0 -5
  192. package/dist/directive-helpers-BP2WOx60.cjs +0 -5
  193. package/dist/directive-helpers-rm-28gIj.js +0 -38
  194. package/dist/directive-oAbCiebi.js +0 -27
  195. package/dist/element-CPpT3rFQ.js +0 -638
  196. package/dist/element-gR_VtSiD.cjs +0 -27
  197. package/dist/element-with-slot-Dqk6-TRR.js +0 -240
  198. package/dist/element-with-slot-ZX-up7jO.cjs +0 -1
  199. package/dist/heading-D2tVS6lS.js +0 -103
  200. package/dist/heading-DrzbgDb6.cjs +0 -1
  201. package/dist/helptext-BKtU4mas.js +0 -82
  202. package/dist/helptext-DcRC7wW2.cjs +0 -24
  203. package/dist/icon-CxQcIa5F.js +0 -105
  204. package/dist/icon-q81vqPK_.cjs +0 -9
  205. package/dist/if-defined-B0krMLad.js +0 -10
  206. package/dist/if-defined-BOW3ODSj.cjs +0 -5
  207. package/dist/input-element-8nLwuQS4.js +0 -837
  208. package/dist/input-element-DdVhUvva.cjs +0 -1
  209. package/dist/input-wrapper-Bs4CRNst.js +0 -181
  210. package/dist/input-wrapper-Bv9aqqVq.cjs +0 -54
  211. package/dist/input-wrapper-CDgenrYA.js +0 -6
  212. package/dist/input-wrapper-EoSAbU-U.cjs +0 -1
  213. package/dist/link-C0rl-86s.cjs +0 -7
  214. package/dist/link-Cdqgl60z.js +0 -55
  215. package/dist/linkcard-Dimu7Rlx.cjs +0 -13
  216. package/dist/linkcard-Lbq_UhjZ.js +0 -56
  217. package/dist/listbox-Bia4_tvN.js +0 -440
  218. package/dist/listbox-La2GZQei.cjs +0 -106
  219. package/dist/loader-D1ugDXGV.cjs +0 -16
  220. package/dist/loader-DyN6RGC5.js +0 -95
  221. package/dist/messagebox-BGMVm2t9.js +0 -71
  222. package/dist/messagebox-M0yIgCz9.cjs +0 -13
  223. package/dist/modal-CMO1RtIi.cjs +0 -36
  224. package/dist/modal-DjPQDE-Z.js +0 -156
  225. package/dist/pkt-options-controller-5LXbEzuk.cjs +0 -1
  226. package/dist/pkt-options-controller-B5YalfCb.js +0 -39
  227. package/dist/progressbar-BqlMzkM_.cjs +0 -21
  228. package/dist/progressbar-sbHDFC12.js +0 -162
  229. package/dist/radiobutton-5ZqVVtTT.cjs +0 -31
  230. package/dist/radiobutton-D8Ai8ETa.js +0 -113
  231. package/dist/ref-Bg_Swj5w.js +0 -42
  232. package/dist/ref-CL-Xk9Xm.cjs +0 -5
  233. package/dist/repeat-BD8TKgJb.js +0 -61
  234. package/dist/repeat-Cfq8CDlf.cjs +0 -5
  235. package/dist/select-De-n8on9.js +0 -230
  236. package/dist/select-dTWibR6_.cjs +0 -49
  237. package/dist/state-C_1EOo3D.js +0 -12
  238. package/dist/state-Dg-53wQ8.cjs +0 -5
  239. package/dist/tabitem-B9-jeV97.js +0 -334
  240. package/dist/tabitem-BnhzqfW3.cjs +0 -65
  241. package/dist/tag-CbwO8yvD.cjs +0 -27
  242. package/dist/tag-D4FI5t3y.js +0 -117
  243. package/dist/textarea-BmLaKzsc.cjs +0 -50
  244. package/dist/textarea-CMiSJaYL.js +0 -133
  245. package/dist/textinput-em9y4yrL.cjs +0 -70
  246. package/dist/textinput-r8udK0IX.js +0 -152
  247. package/dist/utils-DznhwRXm.js +0 -8
  248. package/dist/utils-byXsEz1u.cjs +0 -1
@@ -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;
@@ -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;
@@ -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
- };