@oslokommune/punkt-elements 16.7.1 → 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 (286) hide show
  1. package/CHANGELOG.md +35 -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 -6
  75. package/dist/pkt-backlink.cjs +1 -1
  76. package/dist/pkt-backlink.js +2 -6
  77. package/dist/pkt-breadcrumbs.cjs +1 -43
  78. package/dist/pkt-breadcrumbs.js +2 -79
  79. package/dist/pkt-button.cjs +1 -1
  80. package/dist/pkt-button.js +2 -6
  81. package/dist/pkt-calendar.cjs +1 -1
  82. package/dist/pkt-calendar.js +2 -6
  83. package/dist/pkt-card.cjs +1 -1
  84. package/dist/pkt-card.js +2 -6
  85. package/dist/pkt-checkbox.cjs +1 -1
  86. package/dist/pkt-checkbox.js +2 -6
  87. package/dist/pkt-combobox.cjs +1 -1
  88. package/dist/pkt-combobox.js +2 -6
  89. package/dist/pkt-consent.cjs +1 -1
  90. package/dist/pkt-consent.js +2 -6
  91. package/dist/pkt-datepicker.cjs +1 -1
  92. package/dist/pkt-datepicker.js +5 -10
  93. package/dist/pkt-header.cjs +1 -304
  94. package/dist/pkt-header.js +2 -855
  95. package/dist/pkt-heading.cjs +1 -1
  96. package/dist/pkt-heading.js +2 -6
  97. package/dist/pkt-helptext.cjs +1 -1
  98. package/dist/pkt-helptext.js +2 -6
  99. package/dist/pkt-icon.cjs +1 -1
  100. package/dist/pkt-icon.js +2 -6
  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 -6
  105. package/dist/pkt-link.cjs +1 -1
  106. package/dist/pkt-link.js +2 -6
  107. package/dist/pkt-linkcard.cjs +1 -1
  108. package/dist/pkt-linkcard.js +2 -6
  109. package/dist/pkt-listbox.cjs +1 -1
  110. package/dist/pkt-listbox.js +2 -6
  111. package/dist/pkt-loader.cjs +1 -1
  112. package/dist/pkt-loader.js +2 -6
  113. package/dist/pkt-messagebox.cjs +1 -1
  114. package/dist/pkt-messagebox.js +2 -6
  115. package/dist/pkt-modal.cjs +1 -1
  116. package/dist/pkt-modal.js +2 -6
  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 -6
  121. package/dist/pkt-radiobutton.cjs +1 -1
  122. package/dist/pkt-radiobutton.js +2 -6
  123. package/dist/pkt-select.cjs +1 -1
  124. package/dist/pkt-select.js +2 -6
  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 -6
  129. package/dist/pkt-textarea.cjs +1 -1
  130. package/dist/pkt-textarea.js +2 -6
  131. package/dist/pkt-textinput.cjs +1 -1
  132. package/dist/pkt-textinput.js +2 -6
  133. package/dist/pkt-timepicker.cjs +1 -191
  134. package/dist/pkt-timepicker.js +2 -558
  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/accordion/accordion.ts +6 -1
  159. package/src/components/accordion/accordionitem.ts +6 -1
  160. package/src/components/alert/alert.test.ts +1 -1
  161. package/src/components/alert/alert.ts +12 -7
  162. package/src/components/backlink/backlink.ts +6 -1
  163. package/src/components/breadcrumbs/breadcrumbs.ts +6 -1
  164. package/src/components/button/button.ts +6 -1
  165. package/src/components/calendar/calendar.ts +6 -1
  166. package/src/components/card/card.ts +6 -1
  167. package/src/components/checkbox/checkbox.ts +6 -1
  168. package/src/components/combobox/combobox.ts +6 -1
  169. package/src/components/consent/consent.ts +6 -1
  170. package/src/components/datepicker/date-tags.ts +6 -1
  171. package/src/components/datepicker/datepicker-multiple.ts +6 -1
  172. package/src/components/datepicker/datepicker-popup.ts +6 -1
  173. package/src/components/datepicker/datepicker-range.ts +6 -1
  174. package/src/components/datepicker/datepicker-single.ts +6 -1
  175. package/src/components/datepicker/datepicker-utils.test.ts +16 -23
  176. package/src/components/datepicker/datepicker.ts +6 -1
  177. package/src/components/header/header-service.ts +6 -1
  178. package/src/components/header/header-user-menu.ts +6 -1
  179. package/src/components/header/header.ts +6 -1
  180. package/src/components/heading/heading.ts +6 -1
  181. package/src/components/helptext/helptext.ts +6 -1
  182. package/src/components/icon/icon.ts +6 -1
  183. package/src/components/input-wrapper/input-wrapper.ts +6 -1
  184. package/src/components/link/link.ts +6 -1
  185. package/src/components/linkcard/linkcard.ts +6 -1
  186. package/src/components/listbox/listbox.ts +6 -1
  187. package/src/components/loader/loader.ts +6 -1
  188. package/src/components/messagebox/messagebox.ts +6 -1
  189. package/src/components/modal/modal.ts +6 -1
  190. package/src/components/progressbar/progressbar.ts +6 -1
  191. package/src/components/radiobutton/radiobutton.ts +6 -1
  192. package/src/components/select/select.ts +6 -1
  193. package/src/components/tabs/tabitem.ts +6 -1
  194. package/src/components/tabs/tabs.ts +6 -1
  195. package/src/components/tag/tag.ts +6 -1
  196. package/src/components/textarea/textarea.ts +6 -1
  197. package/src/components/textinput/textinput.ts +6 -1
  198. package/src/components/timepicker/timepicker.ts +6 -1
  199. package/dist/accordionitem-D1Agl1bB.cjs +0 -34
  200. package/dist/accordionitem-ZlaXvjt5.js +0 -138
  201. package/dist/alert-BuAXrnKl.js +0 -115
  202. package/dist/alert-DFkFNTxh.cjs +0 -33
  203. package/dist/async-directive-CMzWMlZ5.js +0 -65
  204. package/dist/async-directive-DoMuclel.cjs +0 -5
  205. package/dist/backlink-EiAXUUZP.cjs +0 -13
  206. package/dist/backlink-V4DAt17e.js +0 -47
  207. package/dist/booleanish-BKVonob4.cjs +0 -1
  208. package/dist/booleanish-C9R0tdXH.js +0 -11
  209. package/dist/button-DEyvt1LI.js +0 -137
  210. package/dist/button-DYv5Dg4M.cjs +0 -27
  211. package/dist/calendar-HIE9nxcc.cjs +0 -90
  212. package/dist/calendar-S63oreVW.js +0 -2138
  213. package/dist/card-CyeH6l1c.cjs +0 -87
  214. package/dist/card-DDiLfuO4.js +0 -231
  215. package/dist/checkbox-BLlwTABj.cjs +0 -31
  216. package/dist/checkbox-ejBUa5qQ.js +0 -145
  217. package/dist/class-map-CEnykyO_.js +0 -34
  218. package/dist/class-map-CsENJXf1.cjs +0 -5
  219. package/dist/classutils-BwNK82ZQ.cjs +0 -1
  220. package/dist/classutils-RQs1k6D9.js +0 -7
  221. package/dist/combobox-BmxSecfE.js +0 -818
  222. package/dist/combobox-Hb2V-fPX.cjs +0 -135
  223. package/dist/consent-iXyx5v6J.js +0 -173
  224. package/dist/consent-ruWAEVXW.cjs +0 -11
  225. package/dist/datepicker-CZl7b8Na.js +0 -1158
  226. package/dist/datepicker-D2H7U6MS.cjs +0 -273
  227. package/dist/dialog-polyfill.esm-CPKZe7AL.cjs +0 -1
  228. package/dist/dialog-polyfill.esm-CbjBMXAG.js +0 -395
  229. package/dist/directive-C7oCP5Bh.cjs +0 -5
  230. package/dist/directive-helpers-BP2WOx60.cjs +0 -5
  231. package/dist/directive-helpers-rm-28gIj.js +0 -38
  232. package/dist/directive-oAbCiebi.js +0 -27
  233. package/dist/element-CPpT3rFQ.js +0 -638
  234. package/dist/element-gR_VtSiD.cjs +0 -27
  235. package/dist/element-with-slot-Dqk6-TRR.js +0 -240
  236. package/dist/element-with-slot-ZX-up7jO.cjs +0 -1
  237. package/dist/heading-CKt7cVn7.js +0 -101
  238. package/dist/heading-Cvz8m1xL.cjs +0 -1
  239. package/dist/helptext-5Mzp65-F.cjs +0 -24
  240. package/dist/helptext-jIoWRcCF.js +0 -80
  241. package/dist/icon-BlKA8YuW.js +0 -103
  242. package/dist/icon-Bqj9oBbl.cjs +0 -9
  243. package/dist/if-defined-B0krMLad.js +0 -10
  244. package/dist/if-defined-BOW3ODSj.cjs +0 -5
  245. package/dist/input-element-8nLwuQS4.js +0 -837
  246. package/dist/input-element-DdVhUvva.cjs +0 -1
  247. package/dist/input-wrapper-B0MkQ0IZ.cjs +0 -54
  248. package/dist/input-wrapper-B2JpK016.js +0 -179
  249. package/dist/input-wrapper-CDgenrYA.js +0 -6
  250. package/dist/input-wrapper-EoSAbU-U.cjs +0 -1
  251. package/dist/link-R_lNhViF.cjs +0 -7
  252. package/dist/link-Z_GizclR.js +0 -53
  253. package/dist/linkcard-BlQvdB1a.js +0 -54
  254. package/dist/linkcard-C7HbSLlX.cjs +0 -13
  255. package/dist/listbox-BQKDZvZn.js +0 -438
  256. package/dist/listbox-CGgV9MAe.cjs +0 -106
  257. package/dist/loader-Ci3CHU8k.js +0 -93
  258. package/dist/loader-e2gs_1xz.cjs +0 -16
  259. package/dist/messagebox-Bf-XMlvW.js +0 -69
  260. package/dist/messagebox-D67w71VX.cjs +0 -13
  261. package/dist/modal-CyvEkbfQ.cjs +0 -36
  262. package/dist/modal-DzGe1g8Z.js +0 -154
  263. package/dist/pkt-options-controller-5LXbEzuk.cjs +0 -1
  264. package/dist/pkt-options-controller-B5YalfCb.js +0 -39
  265. package/dist/progressbar-By7e0lEI.js +0 -162
  266. package/dist/progressbar-DsJ2B9Vm.cjs +0 -21
  267. package/dist/radiobutton-6frNG9J_.js +0 -111
  268. package/dist/radiobutton-Bv-BZ1Hw.cjs +0 -31
  269. package/dist/ref-Bg_Swj5w.js +0 -42
  270. package/dist/ref-CL-Xk9Xm.cjs +0 -5
  271. package/dist/repeat-BD8TKgJb.js +0 -61
  272. package/dist/repeat-Cfq8CDlf.cjs +0 -5
  273. package/dist/select-CXZt1nHS.js +0 -228
  274. package/dist/select-WFhS4Vfp.cjs +0 -49
  275. package/dist/state-C_1EOo3D.js +0 -12
  276. package/dist/state-Dg-53wQ8.cjs +0 -5
  277. package/dist/tabitem-CB8wkKmv.js +0 -332
  278. package/dist/tabitem-DZpspU4Q.cjs +0 -65
  279. package/dist/tag-BuCpqaks.js +0 -115
  280. package/dist/tag-X6xdjR0N.cjs +0 -27
  281. package/dist/textarea-Bzuymclz.js +0 -131
  282. package/dist/textarea-DoeHJ7HR.cjs +0 -50
  283. package/dist/textinput-9lHjs4ce.js +0 -150
  284. package/dist/textinput-BNsLd26i.cjs +0 -70
  285. package/dist/utils-DznhwRXm.js +0 -8
  286. package/dist/utils-byXsEz1u.cjs +0 -1
@@ -1,438 +0,0 @@
1
- import { P as v, b as d, A as h, s as _, n as o, t as O } 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 g } from "./class-map-CEnykyO_.js";
6
- import { u as S } from "./utils-DznhwRXm.js";
7
- const F = (e, t) => t && (e.find((s) => s.value === t) || e.find((s) => s.label === t)) || null, H = (e, t) => {
8
- if (!t) return -1;
9
- const s = e.findIndex((i) => i.value === t);
10
- return s >= 0 ? s : e.findIndex((i) => i.label === t);
11
- }, I = (e, t) => {
12
- if (!t) return [...e];
13
- const s = t.toLowerCase();
14
- return e.filter((i) => (i.fulltext || i.value + (i.label || "") + (i.prefix || "")).toLowerCase().includes(s));
15
- }, z = (e) => e.value + (e.label || "") + (e.prefix || ""), N = (e, t) => t !== null && e >= t, j = (e, t) => {
16
- if (!t) return { filtered: [...e], suggestion: null };
17
- const s = t.toLowerCase(), i = e.filter((l) => {
18
- var c;
19
- return (c = l.fulltext) == null ? void 0 : c.toLowerCase().includes(s);
20
- }), a = i.find(
21
- (l) => {
22
- var c;
23
- return !l.selected && ((c = l.label) == null ? void 0 : c.toLowerCase().startsWith(s));
24
- }
25
- ) || null;
26
- return { filtered: i, suggestion: a };
27
- }, W = (e, t, s, i) => {
28
- if (!e.trim())
29
- return { addValueText: null, userInfoMessage: "" };
30
- const a = e.trim().toLowerCase(), l = t.find((p) => p.toLowerCase() === a), c = s.filter(
31
- (p) => {
32
- var b;
33
- return ((b = p.label) == null ? void 0 : b.toLowerCase().includes(a)) || p.value.toLowerCase().includes(a);
34
- }
35
- ), y = c.find(
36
- (p) => {
37
- var b;
38
- return ((b = p.label) == null ? void 0 : b.toLowerCase()) === a || p.value.toLowerCase() === a;
39
- }
40
- );
41
- return (c.length === 0 || !y) && i ? { addValueText: e, userInfoMessage: "" } : c.length === 0 && !i ? { addValueText: null, userInfoMessage: "Ingen treff i søket" } : l ? { addValueText: null, userInfoMessage: "Verdien er allerede valgt" } : { addValueText: null, userInfoMessage: "" };
42
- }, C = (e) => /^[\p{L} ]$/u.test(e), L = (e = 500) => {
43
- let t = "", s;
44
- return { append: (l) => (t += l.toLowerCase(), s !== void 0 && clearTimeout(s), s = setTimeout(() => {
45
- t = "";
46
- }, e), t), reset: () => {
47
- t = "", s !== void 0 && (clearTimeout(s), s = void 0);
48
- }, getBuffer: () => t };
49
- }, M = (e, t) => {
50
- const s = t.toLowerCase();
51
- return e.findIndex((i) => {
52
- var a;
53
- return (a = i.textContent) == null ? void 0 : a.trim().toLowerCase().startsWith(s);
54
- });
55
- }, u = (e) => {
56
- e.scrollIntoView({ block: "nearest" }), window.setTimeout(() => e.focus(), 0);
57
- }, f = (e) => Array.from(
58
- e.querySelectorAll('[role="option"]:not([data-disabled])') || []
59
- ), E = (e) => {
60
- const t = e.nextElementSibling;
61
- t && u(t);
62
- }, T = (e, t, s) => {
63
- const i = e.previousElementSibling;
64
- if (e.dataset.index === "0" && s) {
65
- const a = t.querySelector('[role="searchbox"]');
66
- a && u(a);
67
- } else i && u(i);
68
- }, x = (e) => {
69
- const t = f(e);
70
- t[0] && u(t[0]);
71
- }, k = (e) => {
72
- const t = f(e), s = t[t.length - 1];
73
- s && u(s);
74
- }, U = (e, t) => {
75
- if (t.disabled) return;
76
- const s = f(e);
77
- if (t.allowUserInput && t.customUserInput) {
78
- const a = e.querySelector('[data-type="new-option"]');
79
- if (a) {
80
- u(a);
81
- return;
82
- }
83
- }
84
- const i = s.find((a) => a.dataset.selected === "true");
85
- if (i) {
86
- u(i);
87
- return;
88
- }
89
- if (t.includeSearch && !(document.activeElement instanceof HTMLInputElement)) {
90
- const a = e.querySelector('[role="searchbox"]');
91
- if (a) {
92
- window.setTimeout(() => a.focus(), 0);
93
- return;
94
- }
95
- }
96
- s[0] && u(s[0]);
97
- };
98
- var V = Object.defineProperty, B = Object.getOwnPropertyDescriptor, r = (e, t, s, i) => {
99
- for (var a = i > 1 ? void 0 : i ? B(t, s) : t, l = e.length - 1, c; l >= 0; l--)
100
- (c = e[l]) && (a = (i ? c(t, s, a) : c(a)) || a);
101
- return i && a && V(t, s, a), a;
102
- };
103
- let n = class extends v {
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, s) {
118
- (e === "options" || e === "search-value") && this.filterOptions(), super.attributeChangedCallback(e, t, s);
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=${g({
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=${(s) => {
158
- s.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=${g({
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 || _.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, s = t.dataset.value, i = t.dataset.type, a = 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
- s && (a ? 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 ? k(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
- k(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 s = e instanceof HTMLElement ? e.dataset.value : e.value;
357
- this.dispatchEvent(
358
- new CustomEvent("option-toggle", {
359
- detail: s,
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), s = f(this), i = M(s, t);
379
- i >= 0 && u(s[i]);
380
- }
381
- };
382
- r([
383
- o({ type: String })
384
- ], n.prototype, "id", 2);
385
- r([
386
- o({ type: String })
387
- ], n.prototype, "label", 2);
388
- r([
389
- o({ type: Array })
390
- ], n.prototype, "options", 2);
391
- r([
392
- o({ type: Boolean, reflect: !0, attribute: "is-open" })
393
- ], n.prototype, "isOpen", 2);
394
- r([
395
- o({ type: Boolean })
396
- ], n.prototype, "disabled", 2);
397
- r([
398
- o({ type: Boolean, attribute: "include-search" })
399
- ], n.prototype, "includeSearch", 2);
400
- r([
401
- o({ type: Boolean, attribute: "is-multi-select" })
402
- ], n.prototype, "isMultiSelect", 2);
403
- r([
404
- o({ type: Boolean, attribute: "allow-user-input" })
405
- ], n.prototype, "allowUserInput", 2);
406
- r([
407
- o({ type: Boolean, attribute: "max-is-reached" })
408
- ], n.prototype, "maxIsReached", 2);
409
- r([
410
- o({ type: String, attribute: "custom-user-input" })
411
- ], n.prototype, "customUserInput", 2);
412
- r([
413
- o({ type: String, attribute: "search-placeholder" })
414
- ], n.prototype, "searchPlaceholder", 2);
415
- r([
416
- o({ type: String, attribute: "search-value" })
417
- ], n.prototype, "searchValue", 2);
418
- r([
419
- o({ type: Number, attribute: "max-length" })
420
- ], n.prototype, "maxLength", 2);
421
- r([
422
- o({ type: String, attribute: "user-message" })
423
- ], n.prototype, "userMessage", 2);
424
- r([
425
- w()
426
- ], n.prototype, "_filteredOptions", 2);
427
- n = r([
428
- O("pkt-listbox")
429
- ], n);
430
- export {
431
- n as P,
432
- j as a,
433
- z as b,
434
- H as c,
435
- F as f,
436
- W as g,
437
- N as i
438
- };
@@ -1,106 +0,0 @@
1
- "use strict";const n=require("./element-gR_VtSiD.cjs"),g=require("./state-Dg-53wQ8.cjs"),p=require("./if-defined-BOW3ODSj.cjs"),m=require("./repeat-Cfq8CDlf.cjs"),f=require("./class-map-CsENJXf1.cjs"),y=require("./utils-byXsEz1u.cjs"),v=(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(i=>i.value===e);return t>=0?t:s.findIndex(i=>i.label===e)},_=(s,e)=>{if(!e)return[...s];const t=e.toLowerCase();return s.filter(i=>(i.fulltext||i.value+(i.label||"")+(i.prefix||"")).toLowerCase().includes(t))},w=s=>s.value+(s.label||"")+(s.prefix||""),$=(s,e)=>e!==null&&s>=e,L=(s,e)=>{if(!e)return{filtered:[...s],suggestion:null};const t=e.toLowerCase(),i=s.filter(o=>{var l;return(l=o.fulltext)==null?void 0:l.toLowerCase().includes(t)}),a=i.find(o=>{var l;return!o.selected&&((l=o.label)==null?void 0:l.toLowerCase().startsWith(t))})||null;return{filtered:i,suggestion:a}},S=(s,e,t,i)=>{if(!s.trim())return{addValueText:null,userInfoMessage:""};const a=s.trim().toLowerCase(),o=e.find(u=>u.toLowerCase()===a),l=t.filter(u=>{var d;return((d=u.label)==null?void 0:d.toLowerCase().includes(a))||u.value.toLowerCase().includes(a)}),k=l.find(u=>{var d;return((d=u.label)==null?void 0:d.toLowerCase())===a||u.value.toLowerCase()===a});return(l.length===0||!k)&&i?{addValueText:s,userInfoMessage:""}:l.length===0&&!i?{addValueText:null,userInfoMessage:"Ingen treff i søket"}:o?{addValueText:null,userInfoMessage:"Verdien er allerede valgt"}:{addValueText:null,userInfoMessage:""}},I=s=>/^[\p{L} ]$/u.test(s),C=(s=500)=>{let e="",t;return{append:o=>(e+=o.toLowerCase(),t!==void 0&&clearTimeout(t),t=setTimeout(()=>{e=""},s),e),reset:()=>{e="",t!==void 0&&(clearTimeout(t),t=void 0)},getBuffer:()=>e}},M=(s,e)=>{const t=e.toLowerCase();return s.findIndex(i=>{var a;return(a=i.textContent)==null?void 0:a.trim().toLowerCase().startsWith(t)})},c=s=>{s.scrollIntoView({block:"nearest"}),window.setTimeout(()=>s.focus(),0)},h=s=>Array.from(s.querySelectorAll('[role="option"]:not([data-disabled])')||[]),P=s=>{const e=s.nextElementSibling;e&&c(e)},E=(s,e,t)=>{const i=s.previousElementSibling;if(s.dataset.index==="0"&&t){const a=e.querySelector('[role="searchbox"]');a&&c(a)}else i&&c(i)},b=s=>{const e=h(s);e[0]&&c(e[0])},x=s=>{const e=h(s),t=e[e.length-1];t&&c(t)},T=(s,e)=>{if(e.disabled)return;const t=h(s);if(e.allowUserInput&&e.customUserInput){const a=s.querySelector('[data-type="new-option"]');if(a){c(a);return}}const i=t.find(a=>a.dataset.selected==="true");if(i){c(i);return}if(e.includeSearch&&!(document.activeElement instanceof HTMLInputElement)){const a=s.querySelector('[role="searchbox"]');if(a){window.setTimeout(()=>a.focus(),0);return}}t[0]&&c(t[0])};var U=Object.defineProperty,A=Object.getOwnPropertyDescriptor,r=(s,e,t,i)=>{for(var a=i>1?void 0:i?A(e,t):e,o=s.length-1,l;o>=0;o--)(l=s[o])&&(a=(i?l(e,t,a):l(a))||a);return i&&a&&U(e,t,a),a};exports.PktListbox=class extends n.PktElement{constructor(){super(...arguments),this.id=y.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=C(),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,i){(e==="options"||e==="search-value")&&this.filterOptions(),super.attributeChangedCallback(e,t,i)}get _hasOptions(){return this._filteredOptions.length>0||this.options.length>0}render(){return n.b`
2
- <div
3
- class=${f.e({"pkt-listbox":!0,"pkt-listbox__open":this.isOpen,"pkt-txt-16-light":!0})}
4
- role=${p.o(this._hasOptions?"listbox":void 0)}
5
- aria-multiselectable=${p.o(this._hasOptions&&this.isMultiSelect?"true":void 0)}
6
- aria-label=${p.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?n.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=${i=>{i.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?n.b`<pkt-icon name="check-big"></pkt-icon>`:n.A}renderEmptyMessage(){return this.options.length>0||this._filteredOptions.length>0||this.userMessage?n.A:n.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 n.b`
37
- ${m.c(this._filteredOptions,e=>e.value,(e,t)=>n.b`
38
- <li
39
- @click=${()=>{this.toggleOption(e)}}
40
- aria-selected=${e.selected?"true":"false"}
41
- @keydown=${this.handleOptionKeydown}
42
- class=${f.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?n.b`<span class="pkt-listbox__option-prefix">${e.prefix}</span>`:n.A}
55
- ${e.label||e.value}
56
- </span>
57
- ${e.description?n.b`<span class="pkt-listbox__option-description pkt-txt-14-light"
58
- >${e.description}</span
59
- >`:n.A}
60
- </li>
61
- `)}
62
- `}renderNewOptionBanner(){return this.allowUserInput&&this.customUserInput?n.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
- `:n.A}renderMaximumReachedBanner(){return this._selectedOptions=this.options.filter(e=>e.selected).length,this.isMultiSelect&&this._selectedOptions>0&&this.maxLength>0?n.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
- `:n.A}renderUserMessage(){return this.userMessage?n.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>`:n.A}renderSearch(){return this.includeSearch?n.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||n.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
- `:n.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,i=t.dataset.value,a=t.dataset.type,o=t.dataset.selected==="true";if(!(!h(this).length&&(!this.customUserInput||!this.allowUserInput&&this.customUserInput)&&a!=="new-option"&&a!=="searchbox"))switch(e.key){case" ":case"Enter":this.toggleOption(t),e.preventDefault();break;case"Backspace":i&&(o?this.toggleOption(t):this.closeOptions()),e.preventDefault();break;case"Escape":this.closeOptions(),e.preventDefault();break;case"Tab":this.tabClose();break;case"ArrowDown":e.altKey?x(this):a==="searchbox"||a==="new-option"?b(this):P(t),e.preventDefault();break;case"ArrowUp":if(e.altKey)b(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 E(t,this,this.includeSearch);e.preventDefault();break;case"Home":b(this),e.preventDefault();break;case"End":x(this),e.preventDefault();break;default:(e.metaKey||e.ctrlKey)&&e.key==="a"&&(this.selectAll(),e.preventDefault()),I(e.key)&&(this.handleTypeAhead(e.key),e.preventDefault());break}}focusFirstOrSelectedOption(){T(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 i=e instanceof HTMLElement?e.dataset.value:e.value;this.dispatchEvent(new CustomEvent("option-toggle",{detail:i,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=_(this.options,this.searchValue)}handleTypeAhead(e){const t=this.typeahead.append(e),i=h(this),a=M(i,t);a>=0&&c(i[a])}};r([n.n({type:String})],exports.PktListbox.prototype,"id",2);r([n.n({type:String})],exports.PktListbox.prototype,"label",2);r([n.n({type:Array})],exports.PktListbox.prototype,"options",2);r([n.n({type:Boolean,reflect:!0,attribute:"is-open"})],exports.PktListbox.prototype,"isOpen",2);r([n.n({type:Boolean})],exports.PktListbox.prototype,"disabled",2);r([n.n({type:Boolean,attribute:"include-search"})],exports.PktListbox.prototype,"includeSearch",2);r([n.n({type:Boolean,attribute:"is-multi-select"})],exports.PktListbox.prototype,"isMultiSelect",2);r([n.n({type:Boolean,attribute:"allow-user-input"})],exports.PktListbox.prototype,"allowUserInput",2);r([n.n({type:Boolean,attribute:"max-is-reached"})],exports.PktListbox.prototype,"maxIsReached",2);r([n.n({type:String,attribute:"custom-user-input"})],exports.PktListbox.prototype,"customUserInput",2);r([n.n({type:String,attribute:"search-placeholder"})],exports.PktListbox.prototype,"searchPlaceholder",2);r([n.n({type:String,attribute:"search-value"})],exports.PktListbox.prototype,"searchValue",2);r([n.n({type:Number,attribute:"max-length"})],exports.PktListbox.prototype,"maxLength",2);r([n.n({type:String,attribute:"user-message"})],exports.PktListbox.prototype,"userMessage",2);r([g.r()],exports.PktListbox.prototype,"_filteredOptions",2);exports.PktListbox=r([n.t("pkt-listbox")],exports.PktListbox);exports.buildFulltext=w;exports.findOptionByValue=v;exports.findOptionIndex=O;exports.findTypeaheadMatches=L;exports.getSearchInfoMessage=S;exports.isMaxSelectionReached=$;
@@ -1,93 +0,0 @@
1
- import { P as u, s as m } from "./element-with-slot-Dqk6-TRR.js";
2
- import { e as h } from "./class-map-CEnykyO_.js";
3
- import { A as y, b as d, n as a, t as c } from "./element-CPpT3rFQ.js";
4
- import { r as g } from "./state-C_1EOo3D.js";
5
- import "./icon-BlKA8YuW.js";
6
- var v = Object.defineProperty, _ = Object.getOwnPropertyDescriptor, e = (s, o, n, r) => {
7
- for (var i = r > 1 ? void 0 : r ? _(o, n) : o, p = s.length - 1, l; p >= 0; p--)
8
- (l = s[p]) && (i = (r ? l(o, n, i) : l(i)) || i);
9
- return r && i && v(o, n, i), i;
10
- };
11
- window.pktAnimationPath = window.pktAnimationPath || "https://punkt-cdn.oslo.kommune.no/latest/animations/";
12
- let t = class extends u {
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(s) {
20
- s.has("delay") && this.setupLoader();
21
- }
22
- render() {
23
- const s = h({
24
- "pkt-loader": !0,
25
- [`pkt-loader--${this.inline ? "inline" : "box"}`]: !0,
26
- [`pkt-loader--${this.size}`]: !0
27
- }), o = h({
28
- "pkt-contents": !0,
29
- "pkt-hide": this.isLoading
30
- });
31
- return d`<div
32
- role="status"
33
- aria-live="polite"
34
- aria-busy=${this.isLoading ? "true" : "false"}
35
- class=${s}
36
- >
37
- ${this.isLoading && this._shouldDisplayLoader ? d`<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 && d`<p>${this.message}</p>`}
44
- </div>` : y}
45
- <div class=${o}>${m(this)}</div>
46
- </div>`;
47
- }
48
- getVariant(s) {
49
- switch (s) {
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
- e([
65
- a({ type: Number })
66
- ], t.prototype, "delay", 2);
67
- e([
68
- a({ type: Boolean })
69
- ], t.prototype, "inline", 2);
70
- e([
71
- a({ type: Boolean })
72
- ], t.prototype, "isLoading", 2);
73
- e([
74
- a({ type: String })
75
- ], t.prototype, "message", 2);
76
- e([
77
- a({ type: String })
78
- ], t.prototype, "size", 2);
79
- e([
80
- a({ type: String })
81
- ], t.prototype, "variant", 2);
82
- e([
83
- a({ type: String })
84
- ], t.prototype, "loadingAnimationPath", 2);
85
- e([
86
- g()
87
- ], t.prototype, "_shouldDisplayLoader", 2);
88
- t = e([
89
- c("pkt-loader")
90
- ], t);
91
- export {
92
- t as P
93
- };
@@ -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-Bqj9oBbl.cjs");var u=Object.defineProperty,c=Object.getOwnPropertyDescriptor,s=(r,e,a,o)=>{for(var i=o>1?void 0:o?c(e,a):e,n=r.length-1,l;n>=0;n--)(l=r[n])&&(i=(o?l(e,a,i):l(i))||i);return o&&i&&u(e,a,i),i};window.pktAnimationPath=window.pktAnimationPath||"https://punkt-cdn.oslo.kommune.no/latest/animations/";exports.PktLoader=class 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(e){e.has("delay")&&this.setupLoader()}render(){const e=p.e({"pkt-loader":!0,[`pkt-loader--${this.inline?"inline":"box"}`]:!0,[`pkt-loader--${this.size}`]:!0}),a=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=${e}
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=${a}>${d.slotContent(this)}</div>
16
- </div>`}getVariant(e){switch(e){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})],exports.PktLoader.prototype,"delay",2);s([t.n({type:Boolean})],exports.PktLoader.prototype,"inline",2);s([t.n({type:Boolean})],exports.PktLoader.prototype,"isLoading",2);s([t.n({type:String})],exports.PktLoader.prototype,"message",2);s([t.n({type:String})],exports.PktLoader.prototype,"size",2);s([t.n({type:String})],exports.PktLoader.prototype,"variant",2);s([t.n({type:String})],exports.PktLoader.prototype,"loadingAnimationPath",2);s([h.r()],exports.PktLoader.prototype,"_shouldDisplayLoader",2);exports.PktLoader=s([t.t("pkt-loader")],exports.PktLoader);