@oslokommune/punkt-elements 16.7.1 → 16.7.3

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 (193) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/dist/accordionitem-_9AiCIvd.cjs +34 -0
  3. package/dist/{accordionitem-ZlaXvjt5.js → accordionitem-dCfSrxh5.js} +57 -55
  4. package/dist/alert-BtOk8yRH.cjs +33 -0
  5. package/dist/{alert-BuAXrnKl.js → alert-DlY2_grU.js} +48 -46
  6. package/dist/backlink-Ce5Vldop.js +49 -0
  7. package/dist/backlink-y3dwjKPC.cjs +13 -0
  8. package/dist/button-B_TXwNzt.cjs +27 -0
  9. package/dist/{button-DEyvt1LI.js → button-BiY-wlKF.js} +79 -77
  10. package/dist/calendar-B2pji2zn.cjs +90 -0
  11. package/dist/{calendar-S63oreVW.js → calendar-DhjQDC4C.js} +689 -687
  12. package/dist/card-BwMNB5Bb.cjs +87 -0
  13. package/dist/{card-DDiLfuO4.js → card-CGlmcMSR.js} +99 -97
  14. package/dist/checkbox-BsJZYA26.js +147 -0
  15. package/dist/checkbox-CTY8f_qn.cjs +31 -0
  16. package/dist/{combobox-BmxSecfE.js → combobox-DSB5WOxg.js} +223 -226
  17. package/dist/{combobox-Hb2V-fPX.cjs → combobox-DbICIgKG.cjs} +4 -4
  18. package/dist/consent-DkOQpbsg.cjs +11 -0
  19. package/dist/{consent-iXyx5v6J.js → consent-SNWV_mMU.js} +48 -46
  20. package/dist/datepicker-BEWl9iz3.cjs +273 -0
  21. package/dist/{datepicker-CZl7b8Na.js → datepicker-euHyzXnb.js} +341 -329
  22. package/dist/{heading-CKt7cVn7.js → heading-D2tVS6lS.js} +30 -28
  23. package/dist/heading-DrzbgDb6.cjs +1 -0
  24. package/dist/helptext-BKtU4mas.js +82 -0
  25. package/dist/helptext-DcRC7wW2.cjs +24 -0
  26. package/dist/icon-CxQcIa5F.js +105 -0
  27. package/dist/icon-q81vqPK_.cjs +9 -0
  28. package/dist/input-wrapper-Bs4CRNst.js +181 -0
  29. package/dist/input-wrapper-Bv9aqqVq.cjs +54 -0
  30. package/dist/link-C0rl-86s.cjs +7 -0
  31. package/dist/link-Cdqgl60z.js +55 -0
  32. package/dist/linkcard-Dimu7Rlx.cjs +13 -0
  33. package/dist/linkcard-Lbq_UhjZ.js +56 -0
  34. package/dist/{listbox-BQKDZvZn.js → listbox-Bia4_tvN.js} +131 -129
  35. package/dist/listbox-La2GZQei.cjs +106 -0
  36. package/dist/loader-D1ugDXGV.cjs +16 -0
  37. package/dist/{loader-Ci3CHU8k.js → loader-DyN6RGC5.js} +51 -49
  38. package/dist/messagebox-BGMVm2t9.js +71 -0
  39. package/dist/messagebox-M0yIgCz9.cjs +13 -0
  40. package/dist/modal-CMO1RtIi.cjs +36 -0
  41. package/dist/{modal-DzGe1g8Z.js → modal-DjPQDE-Z.js} +53 -51
  42. package/dist/pkt-accordion.cjs +1 -1
  43. package/dist/pkt-accordion.js +2 -2
  44. package/dist/pkt-alert.cjs +1 -1
  45. package/dist/pkt-alert.js +3 -4
  46. package/dist/pkt-backlink.cjs +1 -1
  47. package/dist/pkt-backlink.js +2 -3
  48. package/dist/pkt-breadcrumbs.cjs +11 -11
  49. package/dist/pkt-breadcrumbs.js +30 -28
  50. package/dist/pkt-button.cjs +1 -1
  51. package/dist/pkt-button.js +3 -4
  52. package/dist/pkt-calendar.cjs +1 -1
  53. package/dist/pkt-calendar.js +2 -3
  54. package/dist/pkt-card.cjs +1 -1
  55. package/dist/pkt-card.js +2 -3
  56. package/dist/pkt-checkbox.cjs +1 -1
  57. package/dist/pkt-checkbox.js +3 -4
  58. package/dist/pkt-combobox.cjs +1 -1
  59. package/dist/pkt-combobox.js +3 -4
  60. package/dist/pkt-consent.cjs +1 -1
  61. package/dist/pkt-consent.js +2 -3
  62. package/dist/pkt-datepicker.cjs +1 -1
  63. package/dist/pkt-datepicker.js +7 -8
  64. package/dist/pkt-header.cjs +35 -35
  65. package/dist/pkt-header.js +224 -218
  66. package/dist/pkt-heading.cjs +1 -1
  67. package/dist/pkt-heading.js +3 -4
  68. package/dist/pkt-helptext.cjs +1 -1
  69. package/dist/pkt-helptext.js +3 -4
  70. package/dist/pkt-icon.cjs +1 -1
  71. package/dist/pkt-icon.js +3 -4
  72. package/dist/pkt-index.cjs +1 -1
  73. package/dist/pkt-index.js +26 -26
  74. package/dist/pkt-input-wrapper.cjs +1 -1
  75. package/dist/pkt-input-wrapper.js +2 -3
  76. package/dist/pkt-link.cjs +1 -1
  77. package/dist/pkt-link.js +2 -3
  78. package/dist/pkt-linkcard.cjs +1 -1
  79. package/dist/pkt-linkcard.js +3 -4
  80. package/dist/pkt-listbox.cjs +1 -1
  81. package/dist/pkt-listbox.js +3 -4
  82. package/dist/pkt-loader.cjs +1 -1
  83. package/dist/pkt-loader.js +3 -4
  84. package/dist/pkt-messagebox.cjs +1 -1
  85. package/dist/pkt-messagebox.js +3 -4
  86. package/dist/pkt-modal.cjs +1 -1
  87. package/dist/pkt-modal.js +3 -4
  88. package/dist/pkt-progressbar.cjs +1 -1
  89. package/dist/pkt-progressbar.js +2 -3
  90. package/dist/pkt-radiobutton.cjs +1 -1
  91. package/dist/pkt-radiobutton.js +3 -4
  92. package/dist/pkt-select.cjs +1 -1
  93. package/dist/pkt-select.js +3 -4
  94. package/dist/pkt-tabs.cjs +1 -1
  95. package/dist/pkt-tabs.js +2 -2
  96. package/dist/pkt-tag.cjs +1 -1
  97. package/dist/pkt-tag.js +3 -4
  98. package/dist/pkt-textarea.cjs +1 -1
  99. package/dist/pkt-textarea.js +3 -4
  100. package/dist/pkt-textinput.cjs +1 -1
  101. package/dist/pkt-textinput.js +3 -4
  102. package/dist/pkt-timepicker.cjs +16 -16
  103. package/dist/pkt-timepicker.js +91 -89
  104. package/dist/progressbar-BqlMzkM_.cjs +21 -0
  105. package/dist/{progressbar-By7e0lEI.js → progressbar-sbHDFC12.js} +88 -88
  106. package/dist/radiobutton-5ZqVVtTT.cjs +31 -0
  107. package/dist/{radiobutton-6frNG9J_.js → radiobutton-D8Ai8ETa.js} +44 -42
  108. package/dist/select-De-n8on9.js +230 -0
  109. package/dist/select-dTWibR6_.cjs +49 -0
  110. package/dist/tabitem-B9-jeV97.js +334 -0
  111. package/dist/tabitem-BnhzqfW3.cjs +65 -0
  112. package/dist/tag-CbwO8yvD.cjs +27 -0
  113. package/dist/{tag-BuCpqaks.js → tag-D4FI5t3y.js} +42 -40
  114. package/dist/textarea-BmLaKzsc.cjs +50 -0
  115. package/dist/{textarea-Bzuymclz.js → textarea-CMiSJaYL.js} +62 -60
  116. package/dist/textinput-em9y4yrL.cjs +70 -0
  117. package/dist/{textinput-9lHjs4ce.js → textinput-r8udK0IX.js} +57 -55
  118. package/package.json +2 -2
  119. package/src/components/accordion/accordion.ts +6 -1
  120. package/src/components/accordion/accordionitem.ts +6 -1
  121. package/src/components/alert/alert.ts +6 -1
  122. package/src/components/backlink/backlink.ts +6 -1
  123. package/src/components/breadcrumbs/breadcrumbs.ts +6 -1
  124. package/src/components/button/button.ts +6 -1
  125. package/src/components/calendar/calendar.ts +6 -1
  126. package/src/components/card/card.ts +6 -1
  127. package/src/components/checkbox/checkbox.ts +6 -1
  128. package/src/components/combobox/combobox.ts +6 -1
  129. package/src/components/consent/consent.ts +6 -1
  130. package/src/components/datepicker/date-tags.ts +6 -1
  131. package/src/components/datepicker/datepicker-multiple.ts +6 -1
  132. package/src/components/datepicker/datepicker-popup.ts +6 -1
  133. package/src/components/datepicker/datepicker-range.ts +6 -1
  134. package/src/components/datepicker/datepicker-single.ts +6 -1
  135. package/src/components/datepicker/datepicker.ts +6 -1
  136. package/src/components/header/header-service.ts +6 -1
  137. package/src/components/header/header-user-menu.ts +6 -1
  138. package/src/components/header/header.ts +6 -1
  139. package/src/components/heading/heading.ts +6 -1
  140. package/src/components/helptext/helptext.ts +6 -1
  141. package/src/components/icon/icon.ts +6 -1
  142. package/src/components/input-wrapper/input-wrapper.ts +6 -1
  143. package/src/components/link/link.ts +6 -1
  144. package/src/components/linkcard/linkcard.ts +6 -1
  145. package/src/components/listbox/listbox.ts +6 -1
  146. package/src/components/loader/loader.ts +6 -1
  147. package/src/components/messagebox/messagebox.ts +6 -1
  148. package/src/components/modal/modal.ts +6 -1
  149. package/src/components/progressbar/progressbar.ts +6 -1
  150. package/src/components/radiobutton/radiobutton.ts +6 -1
  151. package/src/components/select/select.ts +6 -1
  152. package/src/components/tabs/tabitem.ts +6 -1
  153. package/src/components/tabs/tabs.ts +6 -1
  154. package/src/components/tag/tag.ts +6 -1
  155. package/src/components/textarea/textarea.ts +6 -1
  156. package/src/components/textinput/textinput.ts +6 -1
  157. package/src/components/timepicker/timepicker.ts +6 -1
  158. package/dist/accordionitem-D1Agl1bB.cjs +0 -34
  159. package/dist/alert-DFkFNTxh.cjs +0 -33
  160. package/dist/backlink-EiAXUUZP.cjs +0 -13
  161. package/dist/backlink-V4DAt17e.js +0 -47
  162. package/dist/button-DYv5Dg4M.cjs +0 -27
  163. package/dist/calendar-HIE9nxcc.cjs +0 -90
  164. package/dist/card-CyeH6l1c.cjs +0 -87
  165. package/dist/checkbox-BLlwTABj.cjs +0 -31
  166. package/dist/checkbox-ejBUa5qQ.js +0 -145
  167. package/dist/consent-ruWAEVXW.cjs +0 -11
  168. package/dist/datepicker-D2H7U6MS.cjs +0 -273
  169. package/dist/heading-Cvz8m1xL.cjs +0 -1
  170. package/dist/helptext-5Mzp65-F.cjs +0 -24
  171. package/dist/helptext-jIoWRcCF.js +0 -80
  172. package/dist/icon-BlKA8YuW.js +0 -103
  173. package/dist/icon-Bqj9oBbl.cjs +0 -9
  174. package/dist/input-wrapper-B0MkQ0IZ.cjs +0 -54
  175. package/dist/input-wrapper-B2JpK016.js +0 -179
  176. package/dist/link-R_lNhViF.cjs +0 -7
  177. package/dist/link-Z_GizclR.js +0 -53
  178. package/dist/linkcard-BlQvdB1a.js +0 -54
  179. package/dist/linkcard-C7HbSLlX.cjs +0 -13
  180. package/dist/listbox-CGgV9MAe.cjs +0 -106
  181. package/dist/loader-e2gs_1xz.cjs +0 -16
  182. package/dist/messagebox-Bf-XMlvW.js +0 -69
  183. package/dist/messagebox-D67w71VX.cjs +0 -13
  184. package/dist/modal-CyvEkbfQ.cjs +0 -36
  185. package/dist/progressbar-DsJ2B9Vm.cjs +0 -21
  186. package/dist/radiobutton-Bv-BZ1Hw.cjs +0 -31
  187. package/dist/select-CXZt1nHS.js +0 -228
  188. package/dist/select-WFhS4Vfp.cjs +0 -49
  189. package/dist/tabitem-CB8wkKmv.js +0 -332
  190. package/dist/tabitem-DZpspU4Q.cjs +0 -65
  191. package/dist/tag-X6xdjR0N.cjs +0 -27
  192. package/dist/textarea-DoeHJ7HR.cjs +0 -50
  193. package/dist/textinput-BNsLd26i.cjs +0 -70
@@ -0,0 +1,230 @@
1
+ import { n as h, t as c, b as a } from "./element-CPpT3rFQ.js";
2
+ import { e as v, n as f } from "./ref-Bg_Swj5w.js";
3
+ import { o as n } from "./if-defined-B0krMLad.js";
4
+ import { r as _ } from "./state-C_1EOo3D.js";
5
+ import { P as $ } from "./input-element-8nLwuQS4.js";
6
+ import { P as x } from "./pkt-options-controller-B5YalfCb.js";
7
+ import { s as m } from "./element-with-slot-Dqk6-TRR.js";
8
+ import "./input-wrapper-Bs4CRNst.js";
9
+ var b = Object.defineProperty, u = (r, t, e, i) => {
10
+ for (var s = void 0, o = r.length - 1, l; o >= 0; o--)
11
+ (l = r[o]) && (s = l(t, e, s) || s);
12
+ return s && b(t, e, s), s;
13
+ };
14
+ class p extends $ {
15
+ constructor() {
16
+ super(...arguments), this._optionsProp = [], this._options = [];
17
+ }
18
+ /**
19
+ * Public getter for options that includes selected state
20
+ * Override this in subclasses to customize the selected state logic
21
+ */
22
+ get options() {
23
+ return this._options.map((t) => ({
24
+ ...t,
25
+ selected: this.isOptionSelected(t)
26
+ }));
27
+ }
28
+ /**
29
+ * Public setter for options
30
+ */
31
+ set options(t) {
32
+ this._optionsProp = t, this.requestUpdate("_optionsProp", this._options);
33
+ }
34
+ /**
35
+ * Determines if an option is selected
36
+ * Subclasses should override this to implement their selection logic
37
+ *
38
+ * @param option - The option to check
39
+ * @returns True if the option is selected
40
+ * @protected
41
+ */
42
+ isOptionSelected(t) {
43
+ return Array.isArray(this.value) ? this.value.includes(t.value) : t.value === this.value;
44
+ }
45
+ /**
46
+ * Finds an option by its value
47
+ *
48
+ * @param value - The value to search for
49
+ * @returns The option if found, undefined otherwise
50
+ * @protected
51
+ */
52
+ findOptionByValue(t) {
53
+ return this._options.find((e) => e.value === t);
54
+ }
55
+ /**
56
+ * Gets all currently selected options
57
+ *
58
+ * @returns Array of selected options
59
+ * @protected
60
+ */
61
+ getSelectedOptions() {
62
+ return this._options.filter((t) => this.isOptionSelected(t));
63
+ }
64
+ /**
65
+ * Parses options from either props or slot controller
66
+ * Call this in connectedCallback to initialize options
67
+ *
68
+ * @protected
69
+ */
70
+ parseOptions() {
71
+ var i, s;
72
+ const t = this._optionsProp.length > 0, e = ((s = (i = this.optionsController) == null ? void 0 : i.nodes) == null ? void 0 : s.length) && this.optionsController.nodes.length > 0;
73
+ t ? this._options = this._optionsProp : e && (this._options = this.optionsController.options);
74
+ }
75
+ /**
76
+ * Re-parse options when the component updates
77
+ * This ensures options stay in sync when they change dynamically
78
+ *
79
+ * @protected
80
+ */
81
+ willUpdate(t) {
82
+ super.willUpdate(t), this.parseOptions();
83
+ }
84
+ }
85
+ u([
86
+ h({ type: Array, attribute: "options" })
87
+ ], p.prototype, "_optionsProp");
88
+ u([
89
+ _()
90
+ ], p.prototype, "_options");
91
+ var g = Object.defineProperty, I = (r, t, e, i) => {
92
+ for (var s = void 0, o = r.length - 1, l; o >= 0; o--)
93
+ (l = r[o]) && (s = l(t, e, s) || s);
94
+ return s && g(t, e, s), s;
95
+ };
96
+ class d extends p {
97
+ constructor() {
98
+ super(), this.inputRef = v(), this.value = "", this.selectedIndex = -1, this.selectedOptions = void 0, this.optionsController = new x(this);
99
+ }
100
+ connectedCallback() {
101
+ super.connectedCallback(), this.parseOptions(), this._options.forEach((t) => {
102
+ t.selected && !this.value && (this.value = t.value);
103
+ });
104
+ }
105
+ // Support native Select method `add`
106
+ add(t, e) {
107
+ const i = {
108
+ value: t.value || t.text,
109
+ label: t.text || t.value,
110
+ selected: t.selected,
111
+ disabled: t.disabled
112
+ };
113
+ if (e === void 0)
114
+ this._options.push(i);
115
+ else if (typeof e == "number")
116
+ this._options.splice(e, 0, i);
117
+ else {
118
+ const s = e.value || e.text, o = this._options.findIndex((l) => l.value === s);
119
+ o >= 0 ? this._options.splice(o, 0, i) : this._options.push(i);
120
+ }
121
+ t.selected && (this.value = t.value || t.text, this.selectedIndex = this._options.findIndex((s) => s.value === this.value)), this.requestUpdate();
122
+ }
123
+ // Support native Select method `remove`
124
+ remove(t) {
125
+ var e;
126
+ typeof t == "number" && (this.selectedIndex === t && (this.value = ((e = this._options[0]) == null ? void 0 : e.value) || ""), this._options.splice(t, 1), this.requestUpdate());
127
+ }
128
+ // Support native Select method `item`
129
+ item(t) {
130
+ var e;
131
+ return (e = this.inputRef.value) == null ? void 0 : e.item(t);
132
+ }
133
+ // Support native Select method `namedItem`
134
+ namedItem(t) {
135
+ var e;
136
+ return (e = this.inputRef.value) == null ? void 0 : e.namedItem(t);
137
+ }
138
+ // Support native Select method `showPicker`
139
+ showPicker() {
140
+ this.inputRef.value && "showPicker" in this.inputRef.value && this.inputRef.value.showPicker();
141
+ }
142
+ attributeChangedCallback(t, e, i) {
143
+ var s, o;
144
+ t === "options" && (this._options = i ? JSON.parse(i) : []), t === "value" && this.value !== e && (this.selectedIndex = this.touched ? this.returnNumberOrNull((s = this.inputRef.value) == null ? void 0 : s.selectedIndex) : this._options.findIndex((l) => l.value === i), this.selectedOptions = (o = this.inputRef.value) == null ? void 0 : o.selectedOptions, this.valueChanged(i, e)), super.attributeChangedCallback(t, e, i);
145
+ }
146
+ update(t) {
147
+ var e, i;
148
+ super.update(t), t.has("_optionsProp") && this._optionsProp.length > 0 && (this._options = this._optionsProp, this.requestUpdate("_options"), !this.value && this._options.length > 0 && (this.value = this._options[0].value, this.selectedIndex = 0)), t.has("value") && this.value !== t.get("value") && (this.selectedIndex = this.touched ? this.returnNumberOrNull((e = this.inputRef.value) == null ? void 0 : e.selectedIndex) : this._options.findIndex((s) => s.value === this.value), this.selectedOptions = (i = this.inputRef.value) == null ? void 0 : i.selectedOptions, this.valueChanged(this.value, t.get("value"))), t.has("id") && !this.name && this.id && (this.name = this.id);
149
+ }
150
+ firstUpdated(t) {
151
+ var e;
152
+ super.firstUpdated(t), this._optionsProp.length && (this._options = this._optionsProp), !this.value && this._options.length > 0 ? (this.value = this._options[0].value, this.selectedIndex = 0) : this.selectedIndex = this._options.findIndex((i) => i.value === this.value), this.selectedOptions = (e = this.inputRef.value) == null ? void 0 : e.selectedOptions;
153
+ }
154
+ render() {
155
+ const t = `pkt-input ${this.fullwidth ? "pkt-input--fullwidth" : ""}`;
156
+ return a`
157
+ <pkt-input-wrapper
158
+ ?counter=${this.counter}
159
+ ?disabled=${this.disabled}
160
+ ?hasError=${this.hasError}
161
+ ?hasFieldset=${this.hasFieldset}
162
+ ?inline=${this.inline}
163
+ ?optionalTag=${this.optionalTag}
164
+ ?requiredTag=${this.requiredTag}
165
+ useWrapper=${this.useWrapper}
166
+ ariaDescribedBy=${n(this.ariaDescribedBy)}
167
+ class="pkt-select"
168
+ errorMessage=${n(this.errorMessage)}
169
+ forId=${this.id + "-input"}
170
+ helptext=${n(this.helptext)}
171
+ helptextDropdown=${n(this.helptextDropdown)}
172
+ helptextDropdownButton=${n(this.helptextDropdownButton)}
173
+ label=${n(this.label)}
174
+ optionalText=${n(this.optionalText)}
175
+ requiredText=${n(this.requiredText)}
176
+ tagText=${n(this.tagText)}
177
+ >
178
+ <select
179
+ class=${t}
180
+ aria-invalid=${this.hasError}
181
+ aria-errormessage=${`${this.id}-error`}
182
+ aria-labelledby=${n(this.ariaLabelledby)}
183
+ ?disabled=${this.disabled}
184
+ id=${this.id + "-input"}
185
+ name=${(this.name || this.id) + "-input"}
186
+ value=${this.value}
187
+ @change=${(e) => {
188
+ this.touched = !0, this.value = e.target.value, e.stopImmediatePropagation();
189
+ }}
190
+ @input=${(e) => {
191
+ this.onInput(), e.stopImmediatePropagation();
192
+ }}
193
+ @focus=${(e) => {
194
+ this.onFocus(), e.stopImmediatePropagation();
195
+ }}
196
+ @blur=${(e) => {
197
+ this.onBlur(), e.stopImmediatePropagation();
198
+ }}
199
+ ${f(this.inputRef)}
200
+ >
201
+ ${this._options.length > 0 ? this._options.map(
202
+ (e) => a`<option
203
+ value=${e.value}
204
+ ?selected=${this.value == e.value || e.selected}
205
+ ?disabled=${e.disabled}
206
+ ?hidden=${e.hidden}
207
+ >
208
+ ${e.label}
209
+ </option>`
210
+ ) : ""}
211
+ </select>
212
+ <div class="pkt-contents" slot="helptext">${m(this, "helptext")}</div>
213
+ </pkt-input-wrapper>
214
+ `;
215
+ }
216
+ returnNumberOrNull(t) {
217
+ return t == null || isNaN(t) ? null : t;
218
+ }
219
+ }
220
+ I([
221
+ h({ type: String })
222
+ ], d.prototype, "value");
223
+ try {
224
+ c("pkt-select")(d);
225
+ } catch {
226
+ console.warn("Forsøker å definere <pkt-select>, men den er allerede definert");
227
+ }
228
+ export {
229
+ d as P
230
+ };
@@ -0,0 +1,49 @@
1
+ "use strict";const p=require("./element-gR_VtSiD.cjs"),u=require("./ref-CL-Xk9Xm.cjs"),n=require("./if-defined-BOW3ODSj.cjs"),c=require("./state-Dg-53wQ8.cjs"),v=require("./input-element-DdVhUvva.cjs"),f=require("./pkt-options-controller-5LXbEzuk.cjs"),_=require("./element-with-slot-ZX-up7jO.cjs");require("./input-wrapper-Bv9aqqVq.cjs");var $=Object.defineProperty,d=(r,t,e,i)=>{for(var s=void 0,o=r.length-1,l;o>=0;o--)(l=r[o])&&(s=l(t,e,s)||s);return s&&$(t,e,s),s};class h extends v.PktInputElement{constructor(){super(...arguments),this._optionsProp=[],this._options=[]}get options(){return this._options.map(t=>({...t,selected:this.isOptionSelected(t)}))}set options(t){this._optionsProp=t,this.requestUpdate("_optionsProp",this._options)}isOptionSelected(t){return Array.isArray(this.value)?this.value.includes(t.value):t.value===this.value}findOptionByValue(t){return this._options.find(e=>e.value===t)}getSelectedOptions(){return this._options.filter(t=>this.isOptionSelected(t))}parseOptions(){var i,s;const t=this._optionsProp.length>0,e=((s=(i=this.optionsController)==null?void 0:i.nodes)==null?void 0:s.length)&&this.optionsController.nodes.length>0;t?this._options=this._optionsProp:e&&(this._options=this.optionsController.options)}willUpdate(t){super.willUpdate(t),this.parseOptions()}}d([p.n({type:Array,attribute:"options"})],h.prototype,"_optionsProp");d([c.r()],h.prototype,"_options");var x=Object.defineProperty,b=(r,t,e,i)=>{for(var s=void 0,o=r.length-1,l;o>=0;o--)(l=r[o])&&(s=l(t,e,s)||s);return s&&x(t,e,s),s};class a extends h{constructor(){super(),this.inputRef=u.e(),this.value="",this.selectedIndex=-1,this.selectedOptions=void 0,this.optionsController=new f.PktOptionsSlotController(this)}connectedCallback(){super.connectedCallback(),this.parseOptions(),this._options.forEach(t=>{t.selected&&!this.value&&(this.value=t.value)})}add(t,e){const i={value:t.value||t.text,label:t.text||t.value,selected:t.selected,disabled:t.disabled};if(e===void 0)this._options.push(i);else if(typeof e=="number")this._options.splice(e,0,i);else{const s=e.value||e.text,o=this._options.findIndex(l=>l.value===s);o>=0?this._options.splice(o,0,i):this._options.push(i)}t.selected&&(this.value=t.value||t.text,this.selectedIndex=this._options.findIndex(s=>s.value===this.value)),this.requestUpdate()}remove(t){var e;typeof t=="number"&&(this.selectedIndex===t&&(this.value=((e=this._options[0])==null?void 0:e.value)||""),this._options.splice(t,1),this.requestUpdate())}item(t){var e;return(e=this.inputRef.value)==null?void 0:e.item(t)}namedItem(t){var e;return(e=this.inputRef.value)==null?void 0:e.namedItem(t)}showPicker(){this.inputRef.value&&"showPicker"in this.inputRef.value&&this.inputRef.value.showPicker()}attributeChangedCallback(t,e,i){var s,o;t==="options"&&(this._options=i?JSON.parse(i):[]),t==="value"&&this.value!==e&&(this.selectedIndex=this.touched?this.returnNumberOrNull((s=this.inputRef.value)==null?void 0:s.selectedIndex):this._options.findIndex(l=>l.value===i),this.selectedOptions=(o=this.inputRef.value)==null?void 0:o.selectedOptions,this.valueChanged(i,e)),super.attributeChangedCallback(t,e,i)}update(t){var e,i;super.update(t),t.has("_optionsProp")&&this._optionsProp.length>0&&(this._options=this._optionsProp,this.requestUpdate("_options"),!this.value&&this._options.length>0&&(this.value=this._options[0].value,this.selectedIndex=0)),t.has("value")&&this.value!==t.get("value")&&(this.selectedIndex=this.touched?this.returnNumberOrNull((e=this.inputRef.value)==null?void 0:e.selectedIndex):this._options.findIndex(s=>s.value===this.value),this.selectedOptions=(i=this.inputRef.value)==null?void 0:i.selectedOptions,this.valueChanged(this.value,t.get("value"))),t.has("id")&&!this.name&&this.id&&(this.name=this.id)}firstUpdated(t){var e;super.firstUpdated(t),this._optionsProp.length&&(this._options=this._optionsProp),!this.value&&this._options.length>0?(this.value=this._options[0].value,this.selectedIndex=0):this.selectedIndex=this._options.findIndex(i=>i.value===this.value),this.selectedOptions=(e=this.inputRef.value)==null?void 0:e.selectedOptions}render(){const t=`pkt-input ${this.fullwidth?"pkt-input--fullwidth":""}`;return p.b`
2
+ <pkt-input-wrapper
3
+ ?counter=${this.counter}
4
+ ?disabled=${this.disabled}
5
+ ?hasError=${this.hasError}
6
+ ?hasFieldset=${this.hasFieldset}
7
+ ?inline=${this.inline}
8
+ ?optionalTag=${this.optionalTag}
9
+ ?requiredTag=${this.requiredTag}
10
+ useWrapper=${this.useWrapper}
11
+ ariaDescribedBy=${n.o(this.ariaDescribedBy)}
12
+ class="pkt-select"
13
+ errorMessage=${n.o(this.errorMessage)}
14
+ forId=${this.id+"-input"}
15
+ helptext=${n.o(this.helptext)}
16
+ helptextDropdown=${n.o(this.helptextDropdown)}
17
+ helptextDropdownButton=${n.o(this.helptextDropdownButton)}
18
+ label=${n.o(this.label)}
19
+ optionalText=${n.o(this.optionalText)}
20
+ requiredText=${n.o(this.requiredText)}
21
+ tagText=${n.o(this.tagText)}
22
+ >
23
+ <select
24
+ class=${t}
25
+ aria-invalid=${this.hasError}
26
+ aria-errormessage=${`${this.id}-error`}
27
+ aria-labelledby=${n.o(this.ariaLabelledby)}
28
+ ?disabled=${this.disabled}
29
+ id=${this.id+"-input"}
30
+ name=${(this.name||this.id)+"-input"}
31
+ value=${this.value}
32
+ @change=${e=>{this.touched=!0,this.value=e.target.value,e.stopImmediatePropagation()}}
33
+ @input=${e=>{this.onInput(),e.stopImmediatePropagation()}}
34
+ @focus=${e=>{this.onFocus(),e.stopImmediatePropagation()}}
35
+ @blur=${e=>{this.onBlur(),e.stopImmediatePropagation()}}
36
+ ${u.n(this.inputRef)}
37
+ >
38
+ ${this._options.length>0?this._options.map(e=>p.b`<option
39
+ value=${e.value}
40
+ ?selected=${this.value==e.value||e.selected}
41
+ ?disabled=${e.disabled}
42
+ ?hidden=${e.hidden}
43
+ >
44
+ ${e.label}
45
+ </option>`):""}
46
+ </select>
47
+ <div class="pkt-contents" slot="helptext">${_.slotContent(this,"helptext")}</div>
48
+ </pkt-input-wrapper>
49
+ `}returnNumberOrNull(t){return t==null||isNaN(t)?null:t}}b([p.n({type:String})],a.prototype,"value");try{p.t("pkt-select")(a)}catch{console.warn("Forsøker å definere <pkt-select>, men den er allerede definert")}exports.PktSelect=a;
@@ -0,0 +1,334 @@
1
+ import { P as w, s as y } from "./element-with-slot-Dqk6-TRR.js";
2
+ import { t as $, b, n as c } from "./element-CPpT3rFQ.js";
3
+ import { r as v } from "./state-C_1EOo3D.js";
4
+ import { e as R, n as k } from "./ref-Bg_Swj5w.js";
5
+ import { o as l } from "./if-defined-B0krMLad.js";
6
+ /**
7
+ * @license
8
+ * Copyright 2021 Google LLC
9
+ * SPDX-License-Identifier: BSD-3-Clause
10
+ */
11
+ let C = class extends Event {
12
+ constructor(t, e, r, s) {
13
+ super("context-request", { bubbles: !0, composed: !0 }), this.context = t, this.contextTarget = e, this.callback = r, this.subscribe = s ?? !1;
14
+ }
15
+ };
16
+ /**
17
+ * @license
18
+ * Copyright 2021 Google LLC
19
+ * SPDX-License-Identifier: BSD-3-Clause
20
+ */
21
+ /**
22
+ * @license
23
+ * Copyright 2021 Google LLC
24
+ * SPDX-License-Identifier: BSD-3-Clause
25
+ */
26
+ let m = class {
27
+ constructor(t, e, r, s) {
28
+ if (this.subscribe = !1, this.provided = !1, this.value = void 0, this.t = (o, i) => {
29
+ this.unsubscribe && (this.unsubscribe !== i && (this.provided = !1, this.unsubscribe()), this.subscribe || this.unsubscribe()), this.value = o, this.host.requestUpdate(), this.provided && !this.subscribe || (this.provided = !0, this.callback && this.callback(o, i)), this.unsubscribe = i;
30
+ }, this.host = t, e.context !== void 0) {
31
+ const o = e;
32
+ this.context = o.context, this.callback = o.callback, this.subscribe = o.subscribe ?? !1;
33
+ } else this.context = e, this.callback = r, this.subscribe = s ?? !1;
34
+ this.host.addController(this);
35
+ }
36
+ hostConnected() {
37
+ this.dispatchRequest();
38
+ }
39
+ hostDisconnected() {
40
+ this.unsubscribe && (this.unsubscribe(), this.unsubscribe = void 0);
41
+ }
42
+ dispatchRequest() {
43
+ this.host.dispatchEvent(new C(this.context, this.host, this.t, this.subscribe));
44
+ }
45
+ };
46
+ /**
47
+ * @license
48
+ * Copyright 2021 Google LLC
49
+ * SPDX-License-Identifier: BSD-3-Clause
50
+ */
51
+ class A {
52
+ get value() {
53
+ return this.o;
54
+ }
55
+ set value(t) {
56
+ this.setValue(t);
57
+ }
58
+ setValue(t, e = !1) {
59
+ const r = e || !Object.is(t, this.o);
60
+ this.o = t, r && this.updateObservers();
61
+ }
62
+ constructor(t) {
63
+ this.subscriptions = /* @__PURE__ */ new Map(), this.updateObservers = () => {
64
+ for (const [e, { disposer: r }] of this.subscriptions) e(this.o, r);
65
+ }, t !== void 0 && (this.value = t);
66
+ }
67
+ addCallback(t, e, r) {
68
+ if (!r) return void t(this.value);
69
+ this.subscriptions.has(t) || this.subscriptions.set(t, { disposer: () => {
70
+ this.subscriptions.delete(t);
71
+ }, consumerHost: e });
72
+ const { disposer: s } = this.subscriptions.get(t);
73
+ t(this.value, s);
74
+ }
75
+ clearCallbacks() {
76
+ this.subscriptions.clear();
77
+ }
78
+ }
79
+ /**
80
+ * @license
81
+ * Copyright 2021 Google LLC
82
+ * SPDX-License-Identifier: BSD-3-Clause
83
+ */
84
+ let P = class extends Event {
85
+ constructor(t, e) {
86
+ super("context-provider", { bubbles: !0, composed: !0 }), this.context = t, this.contextTarget = e;
87
+ }
88
+ };
89
+ class g extends A {
90
+ constructor(t, e, r) {
91
+ var s, o;
92
+ super(e.context !== void 0 ? e.initialValue : r), this.onContextRequest = (i) => {
93
+ if (i.context !== this.context) return;
94
+ const a = i.contextTarget ?? i.composedPath()[0];
95
+ a !== this.host && (i.stopPropagation(), this.addCallback(i.callback, a, i.subscribe));
96
+ }, this.onProviderRequest = (i) => {
97
+ if (i.context !== this.context || (i.contextTarget ?? i.composedPath()[0]) === this.host) return;
98
+ const a = /* @__PURE__ */ new Set();
99
+ for (const [f, { consumerHost: x }] of this.subscriptions) a.has(f) || (a.add(f), x.dispatchEvent(new C(this.context, x, f, !0)));
100
+ i.stopPropagation();
101
+ }, this.host = t, e.context !== void 0 ? this.context = e.context : this.context = e, this.attachListeners(), (o = (s = this.host).addController) == null || o.call(s, this);
102
+ }
103
+ attachListeners() {
104
+ this.host.addEventListener("context-request", this.onContextRequest), this.host.addEventListener("context-provider", this.onProviderRequest);
105
+ }
106
+ hostConnected() {
107
+ this.host.dispatchEvent(new P(this.context, this.host));
108
+ }
109
+ }
110
+ /**
111
+ * @license
112
+ * Copyright 2017 Google LLC
113
+ * SPDX-License-Identifier: BSD-3-Clause
114
+ */
115
+ function _({ context: n }) {
116
+ return (t, e) => {
117
+ const r = /* @__PURE__ */ new WeakMap();
118
+ if (typeof e == "object") return { get() {
119
+ return t.get.call(this);
120
+ }, set(s) {
121
+ return r.get(this).setValue(s), t.set.call(this, s);
122
+ }, init(s) {
123
+ return r.set(this, new g(this, { context: n, initialValue: s })), s;
124
+ } };
125
+ {
126
+ t.constructor.addInitializer(((i) => {
127
+ r.set(i, new g(i, { context: n }));
128
+ }));
129
+ const s = Object.getOwnPropertyDescriptor(t, e);
130
+ let o;
131
+ if (s === void 0) {
132
+ const i = /* @__PURE__ */ new WeakMap();
133
+ o = { get() {
134
+ return i.get(this);
135
+ }, set(a) {
136
+ r.get(this).setValue(a), i.set(this, a);
137
+ }, configurable: !0, enumerable: !0 };
138
+ } else {
139
+ const i = s.set;
140
+ o = { ...s, set(a) {
141
+ r.get(this).setValue(a), i == null || i.call(this, a);
142
+ } };
143
+ }
144
+ return void Object.defineProperty(t, e, o);
145
+ }
146
+ };
147
+ }
148
+ /**
149
+ * @license
150
+ * Copyright 2022 Google LLC
151
+ * SPDX-License-Identifier: BSD-3-Clause
152
+ */
153
+ function S({ context: n, subscribe: t }) {
154
+ return (e, r) => {
155
+ typeof r == "object" ? r.addInitializer((function() {
156
+ new m(this, { context: n, callback: (s) => {
157
+ e.set.call(this, s);
158
+ }, subscribe: t });
159
+ })) : e.constructor.addInitializer(((s) => {
160
+ new m(s, { context: n, callback: (o) => {
161
+ s[r] = o;
162
+ }, subscribe: t });
163
+ }));
164
+ };
165
+ }
166
+ const N = Symbol("pkt-tabs-context");
167
+ var T = Object.defineProperty, p = (n, t, e, r) => {
168
+ for (var s = void 0, o = n.length - 1, i; o >= 0; o--)
169
+ (i = n[o]) && (s = i(t, e, s) || s);
170
+ return s && T(t, e, s), s;
171
+ };
172
+ class d extends w {
173
+ constructor() {
174
+ super(...arguments), this.arrowNav = !0, this.disableArrowNav = !1, this.tabRefs = [], this.tabCount = 0, this.context = {
175
+ useArrowNav: this.useArrowNav,
176
+ registerTab: this.registerTab.bind(this),
177
+ handleClick: this.handleClick.bind(this),
178
+ handleKeyUp: this.handleKeyUp.bind(this)
179
+ };
180
+ }
181
+ get useArrowNav() {
182
+ return this.arrowNav && !this.disableArrowNav;
183
+ }
184
+ // Update context when properties change
185
+ updated(t) {
186
+ (t.has("arrowNav") || t.has("disableArrowNav")) && (this.context = {
187
+ ...this.context,
188
+ useArrowNav: this.useArrowNav
189
+ });
190
+ }
191
+ registerTab(t, e) {
192
+ this.tabRefs[e] = t, this.tabCount = Math.max(this.tabCount, e + 1);
193
+ }
194
+ handleClick(t) {
195
+ this.dispatchEvent(
196
+ new CustomEvent("tab-selected", {
197
+ detail: { index: t },
198
+ bubbles: !0,
199
+ composed: !0
200
+ })
201
+ );
202
+ }
203
+ handleKeyUp(t, e) {
204
+ var r, s;
205
+ this.useArrowNav && (t.code === "ArrowLeft" && e !== 0 && ((r = this.tabRefs[e - 1]) == null || r.focus()), t.code === "ArrowRight" && e < this.tabCount - 1 && ((s = this.tabRefs[e + 1]) == null || s.focus()), (t.code === "ArrowDown" || t.code === "Space") && this.dispatchEvent(
206
+ new CustomEvent("tab-selected", {
207
+ detail: { index: e },
208
+ bubbles: !0,
209
+ composed: !0
210
+ })
211
+ ));
212
+ }
213
+ render() {
214
+ const t = this.useArrowNav ? "tablist" : "navigation";
215
+ return b`
216
+ <div class="pkt-tabs">
217
+ <div class="pkt-tabs__list" role=${t}>${y(this)}</div>
218
+ </div>
219
+ `;
220
+ }
221
+ }
222
+ p([
223
+ c({ type: Boolean, reflect: !0, attribute: "arrow-nav" })
224
+ ], d.prototype, "arrowNav");
225
+ p([
226
+ c({ type: Boolean, reflect: !0, attribute: "disable-arrow-nav" })
227
+ ], d.prototype, "disableArrowNav");
228
+ p([
229
+ v()
230
+ ], d.prototype, "tabRefs");
231
+ p([
232
+ v()
233
+ ], d.prototype, "tabCount");
234
+ p([
235
+ _({ context: N }),
236
+ v()
237
+ ], d.prototype, "context");
238
+ try {
239
+ $("pkt-tabs")(d);
240
+ } catch {
241
+ console.warn("Forsøker å definere <pkt-tabs>, men den er allerede definert");
242
+ }
243
+ var q = Object.defineProperty, u = (n, t, e, r) => {
244
+ for (var s = void 0, o = n.length - 1, i; o >= 0; o--)
245
+ (i = n[o]) && (s = i(t, e, s) || s);
246
+ return s && q(t, e, s), s;
247
+ };
248
+ class h extends w {
249
+ constructor() {
250
+ super(), this.active = !1, this.href = "", this.icon = "", this.controls = "", this.tag = "", this.tagSkin = "blue", this.index = 0, this.elementRef = R();
251
+ }
252
+ connectedCallback() {
253
+ super.connectedCallback(), this.updateComplete.then(() => {
254
+ this.elementRef.value && this.context && this.context.registerTab(this.elementRef.value, this.index);
255
+ });
256
+ }
257
+ handleClick() {
258
+ this.context && this.context.handleClick(this.index);
259
+ }
260
+ handleKeyUp(t) {
261
+ this.context && this.context.handleKeyUp(t, this.index);
262
+ }
263
+ render() {
264
+ var a;
265
+ const t = ((a = this.context) == null ? void 0 : a.useArrowNav) ?? !0, e = this.active ? "active" : "", r = t ? "tab" : void 0, s = t ? this.active : void 0, o = this.active || !t ? void 0 : -1, i = b`
266
+ ${this.icon ? b`<pkt-icon name=${this.icon} class="pkt-icon--small"></pkt-icon>` : ""}
267
+ <span>${y(this)}</span>
268
+ ${this.tag ? b`<pkt-tag skin=${this.tagSkin} size="small">${this.tag}</pkt-tag>` : ""}
269
+ `;
270
+ return this.href ? b`
271
+ <a
272
+ ${k(this.elementRef)}
273
+ href=${this.href}
274
+ class="pkt-tabs__link ${e}"
275
+ role=${l(r)}
276
+ aria-selected=${l(s)}
277
+ aria-controls=${l(this.controls || void 0)}
278
+ tabindex=${l(o)}
279
+ @click=${this.handleClick}
280
+ @keyup=${this.handleKeyUp}
281
+ >
282
+ ${i}
283
+ </a>
284
+ ` : b`
285
+ <button
286
+ ${k(this.elementRef)}
287
+ type="button"
288
+ class="pkt-tabs__button pkt-link-button ${e}"
289
+ role=${l(r)}
290
+ aria-selected=${l(s)}
291
+ aria-controls=${l(this.controls || void 0)}
292
+ tabindex=${l(o)}
293
+ @click=${this.handleClick}
294
+ @keyup=${this.handleKeyUp}
295
+ >
296
+ ${i}
297
+ </button>
298
+ `;
299
+ }
300
+ }
301
+ u([
302
+ c({ type: Boolean, reflect: !0 })
303
+ ], h.prototype, "active");
304
+ u([
305
+ c({ type: String, reflect: !0 })
306
+ ], h.prototype, "href");
307
+ u([
308
+ c({ type: String, reflect: !0 })
309
+ ], h.prototype, "icon");
310
+ u([
311
+ c({ type: String, reflect: !0 })
312
+ ], h.prototype, "controls");
313
+ u([
314
+ c({ type: String, reflect: !0 })
315
+ ], h.prototype, "tag");
316
+ u([
317
+ c({ type: String, reflect: !0, attribute: "tag-skin" })
318
+ ], h.prototype, "tagSkin");
319
+ u([
320
+ c({ type: Number, reflect: !0 })
321
+ ], h.prototype, "index");
322
+ u([
323
+ S({ context: N, subscribe: !0 }),
324
+ c({ attribute: !1 })
325
+ ], h.prototype, "context");
326
+ try {
327
+ $("pkt-tab-item")(h);
328
+ } catch {
329
+ console.warn("Forsøker å definere <pkt-tab-item>, men den er allerede definert");
330
+ }
331
+ export {
332
+ h as P,
333
+ d as a
334
+ };