@oslokommune/punkt-elements 18.6.0 → 18.7.0

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 (69) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/dist/card-CsSNvjZV.cjs +64 -0
  3. package/dist/card-PXDm9JXv.js +182 -0
  4. package/dist/{checkbox-D6j7amKX.cjs → checkbox-CMu4pF8-.cjs} +1 -1
  5. package/dist/{checkbox-DcvKYDU2.js → checkbox-DReZOEy2.js} +1 -1
  6. package/dist/{combobox-BT1LB0gl.cjs → combobox-BZm_12qR.cjs} +1 -1
  7. package/dist/{combobox-CiT2YvLb.js → combobox-DcBFiuwP.js} +2 -2
  8. package/dist/components/datepicker/datepicker-base.d.ts +4 -0
  9. package/dist/components/datepicker/datepicker.d.ts +3 -1
  10. package/dist/{datepicker-CqWg6K2N.js → datepicker-DboWQcrh.js} +58 -29
  11. package/dist/{datepicker-DIgQrvbZ.cjs → datepicker-NSWMVoGi.cjs} +22 -5
  12. package/dist/{fileupload-BmT5nQX0.cjs → fileupload-BYVtnSaI.cjs} +1 -1
  13. package/dist/{fileupload-4nTdjPKw.js → fileupload-CqxWUH0y.js} +1 -1
  14. package/dist/{header-DU10rGhU.js → header-DsaPCLjJ.js} +1 -1
  15. package/dist/{header-DybJSDQQ.cjs → header-DzVHM7gZ.cjs} +1 -1
  16. package/dist/{input-element-zXKo9jpe.js → input-element-BiUfK_gU.js} +8 -8
  17. package/dist/{input-element-uajHIWAO.cjs → input-element-kvI_5er5.cjs} +1 -1
  18. package/dist/{input-wrapper-B4TCGGwj.js → input-wrapper-Bwh720ke.js} +4 -4
  19. package/dist/{input-wrapper-791L3L--.cjs → input-wrapper-wyvCnWPp.cjs} +2 -2
  20. package/dist/pkt-card.cjs +1 -1
  21. package/dist/pkt-card.js +1 -1
  22. package/dist/pkt-checkbox.cjs +1 -1
  23. package/dist/pkt-checkbox.js +1 -1
  24. package/dist/pkt-combobox.cjs +1 -1
  25. package/dist/pkt-combobox.js +1 -1
  26. package/dist/pkt-datepicker.cjs +1 -1
  27. package/dist/pkt-datepicker.js +1 -1
  28. package/dist/pkt-fileupload.cjs +1 -1
  29. package/dist/pkt-fileupload.js +1 -1
  30. package/dist/pkt-header.cjs +1 -1
  31. package/dist/pkt-header.js +1 -1
  32. package/dist/pkt-index.cjs +1 -1
  33. package/dist/pkt-index.js +14 -14
  34. package/dist/pkt-input-wrapper.cjs +1 -1
  35. package/dist/pkt-input-wrapper.js +1 -1
  36. package/dist/pkt-radiobutton.cjs +1 -1
  37. package/dist/pkt-radiobutton.js +1 -1
  38. package/dist/pkt-select.cjs +1 -1
  39. package/dist/pkt-select.js +1 -1
  40. package/dist/pkt-textarea.cjs +1 -1
  41. package/dist/pkt-textarea.js +1 -1
  42. package/dist/pkt-textinput.cjs +1 -1
  43. package/dist/pkt-textinput.js +1 -1
  44. package/dist/pkt-timepicker.cjs +1 -1
  45. package/dist/pkt-timepicker.js +1 -1
  46. package/dist/{radiobutton-BuOLykKo.cjs → radiobutton-B6pzZQZV.cjs} +1 -1
  47. package/dist/{radiobutton-Dr5OQ0IY.js → radiobutton-bGdAEz26.js} +1 -1
  48. package/dist/{select-Cd_saUE7.js → select-D7r2s7Cw.js} +2 -2
  49. package/dist/{select-Cc7c9dRd.cjs → select-ay8WHI7p.cjs} +1 -1
  50. package/dist/shared-types/card.d.ts +86 -0
  51. package/dist/shared-types/index.d.ts +4 -1
  52. package/dist/shared-types/layout.d.ts +2 -1
  53. package/dist/shared-types/skin.d.ts +1 -4
  54. package/dist/{textarea-MJvpE_yV.js → textarea-CzAL8e6L.js} +2 -2
  55. package/dist/{textarea-xTcafucE.cjs → textarea-s4IDLsBi.cjs} +1 -1
  56. package/dist/{textinput-B4VnZzsa.cjs → textinput-B9w4jhIP.cjs} +1 -1
  57. package/dist/{textinput-Cr7Z9ilH.js → textinput-DT3HR9eU.js} +2 -2
  58. package/dist/{timepicker-srjt12dI.js → timepicker-BE0UouVr.js} +2 -2
  59. package/dist/{timepicker-85ViMBd6.cjs → timepicker-C-Ip5Jgl.cjs} +1 -1
  60. package/package.json +2 -2
  61. package/src/components/card/card.ts +19 -16
  62. package/src/components/datepicker/datepicker-base.ts +14 -0
  63. package/src/components/datepicker/datepicker-multiple.ts +3 -0
  64. package/src/components/datepicker/datepicker-range.ts +6 -0
  65. package/src/components/datepicker/datepicker-single.ts +3 -1
  66. package/src/components/datepicker/datepicker.accessibility.test.ts +24 -3
  67. package/src/components/datepicker/datepicker.ts +63 -63
  68. package/dist/card-CwvUQj1a.js +0 -360
  69. package/dist/card-b7jjKk6B.cjs +0 -64
@@ -1,360 +0,0 @@
1
- import { _ as e, d as t, h as n, n as r, u as i } from "./element-e2MAMNEP.js";
2
- import { t as a } from "./class-map-BL_YL_Ed.js";
3
- import { t as o } from "./if-defined-r8tKY4tG.js";
4
- import { r as s, t as c } from "./element-with-slot-GwTT3WRD.js";
5
- import "./icon-jEFbKTB_.js";
6
- import "./tag-D2Xvsy1i.js";
7
- var l = {
8
- name: "pkt-card",
9
- react: "PktCard",
10
- "css-class": "pkt-card",
11
- isElement: !0,
12
- isPureReact: !0,
13
- "dark-mode": !0,
14
- props: {
15
- heading: {
16
- type: "string",
17
- name: "Overskrift",
18
- description: "Tittel på card",
19
- category: "contents"
20
- },
21
- headingLevel: {
22
- type: [
23
- 1,
24
- 2,
25
- 3,
26
- 4,
27
- 5,
28
- 6
29
- ],
30
- name: "Overskriftsnivå",
31
- description: "Nivået på headingen. Brukes for tilgjengelighet.",
32
- default: 3,
33
- category: "accessibility"
34
- },
35
- subheading: {
36
- type: "string",
37
- name: "Undertittel",
38
- description: "Undertittel på card",
39
- category: "contents"
40
- },
41
- layout: {
42
- type: ["vertical", "horizontal"],
43
- name: "Layout",
44
- description: "Horisontal eller vertikal layout. Ved horisontal layout vil bildet være plassert til venstre for teksten på desktop, og over teksten på mobil.",
45
- default: "vertical",
46
- category: "ui"
47
- },
48
- skin: {
49
- type: [
50
- "outlined",
51
- "outlined-beige",
52
- "gray",
53
- "blue",
54
- "beige",
55
- "green"
56
- ],
57
- name: "Utseende",
58
- description: "Fargen på card. Velg mellom outlined, outlined-beige, gray, blue, beige og green. Ved padding=none er det ikke mulighet for outlined-skin. Card med kombinasjonen av propsene padding=none + layout=vertical vil alltid være transparante.",
59
- default: "outlined",
60
- category: "ui"
61
- },
62
- padding: {
63
- type: ["none", "default"],
64
- name: "Padding",
65
- description: "Padding rundt card. Ved \"none\" strekker innholdet i card seg ut til kantene, og dette er derfor ikke mulig å kombinere med outlined skin.",
66
- default: "default",
67
- category: "ui"
68
- },
69
- metaLead: {
70
- type: "string",
71
- name: "Forfatter eller annen metadata",
72
- description: "Undertekst med fet skriftvekt",
73
- default: !1,
74
- category: "contents"
75
- },
76
- metaTrail: {
77
- type: "string",
78
- name: "Dato eller annen metadata",
79
- description: "Undertekst med normal skriftvekt",
80
- default: !1,
81
- category: "contents"
82
- },
83
- tagPosition: {
84
- type: ["top", "bottom"],
85
- name: "Tagplassering",
86
- description: "Plassering av tags i card",
87
- default: "top",
88
- category: "ui"
89
- },
90
- clickCardLink: {
91
- type: "string",
92
- name: "Lenke for klikkbart card",
93
- description: "Href sendes inn som streng for å gjøre card klikkbart. Ved bruk MÅ heading sendes inn da denne vil brukes som lenketekst i klikkbart card.",
94
- category: "contents"
95
- },
96
- openLinkInNewTab: {
97
- type: "boolean",
98
- name: "Åpne i ny fane",
99
- description: "Velg denne dersom du ønsker at lenken i card skal åpnes i ny fane.",
100
- default: !1,
101
- category: "tech"
102
- },
103
- borderOnHover: {
104
- type: "boolean",
105
- name: "Hover border for klikkbart card",
106
- description: "Vi anbefaler hoverborder på klikkbart card. Kan slås av ved behov.",
107
- default: !0,
108
- category: "ui"
109
- },
110
- zoom: {
111
- name: "Zoom på bildet",
112
- description: "Forstørrer bildet litt når man holder musepekeren over kortet",
113
- type: "boolean",
114
- category: "ui",
115
- default: !1
116
- },
117
- image: {
118
- type: "object",
119
- name: "Bilde",
120
- description: "Bildet på card. Tar inn et objekt av typen {src: string, alt: string}.",
121
- properties: {
122
- src: {
123
- type: "string",
124
- description: "Stien til bildet",
125
- required: !0
126
- },
127
- alt: {
128
- type: "string",
129
- description: "Tekst til skjermleser. Skal kun sendes inn for bilder som ikke er dekorative",
130
- required: !1
131
- }
132
- },
133
- category: "contents"
134
- },
135
- imageShape: {
136
- type: ["square", "round"],
137
- name: "Bildeform",
138
- description: "Valg for om bildet skal ha rektangulær eller rund form.",
139
- default: "square",
140
- category: "contents"
141
- },
142
- imageAspect: {
143
- name: "Bildeformat",
144
- description: "Overstyrer bildets sideforhold. Uten denne er det 1:1, eller 19:10 med padding «none» og stående kort.",
145
- type: [
146
- "auto",
147
- "1-1",
148
- "4-3",
149
- "3-2",
150
- "16-9",
151
- "19-10"
152
- ],
153
- category: "ui"
154
- },
155
- restrictImageHeight: {
156
- name: "Lås bildehøyden",
157
- description: "Låser bildehøyden i stedet for sideforholdet, og trapper den opp med skjermbredden: 12.5rem, 14.375rem fra tablet og 18.125rem fra tablet-big. Bildet beskjæres sentrert.",
158
- type: "boolean",
159
- category: "ui",
160
- default: !1
161
- },
162
- tags: {
163
- type: "array",
164
- description: "Liste av tags på card. Tar inn et array med objekter med følgende stringproperties: skin, iconName, ariaLabel, text",
165
- name: "Tags",
166
- items: {
167
- type: "object",
168
- name: "Tag",
169
- properties: {
170
- skin: {
171
- type: [
172
- "blue",
173
- "green",
174
- "red",
175
- "yellow"
176
- ],
177
- description: "Farge på tag"
178
- },
179
- iconName: {
180
- type: "icon",
181
- description: "Id på ikonet du ønsker å bruke til tag"
182
- },
183
- ariaLabel: {
184
- type: "string",
185
- description: "Tekst for aria-label"
186
- },
187
- text: {
188
- type: "string",
189
- description: "Tekst på tag",
190
- required: !0
191
- }
192
- }
193
- },
194
- category: "contents"
195
- },
196
- ariaLabel: {
197
- type: "string",
198
- name: "Aria-label for card",
199
- description: "Tekst til skjermleser for aria-label på card. Settes automatisk til headingen, eller subheadingen der heading ikke eksisterer. Ved bruk av klikkbart card må heading alltid sendes inn da denne brukes som lenketekst.",
200
- category: "accessibility"
201
- }
202
- },
203
- slots: { default: { description: "Innholdet i card" } }
204
- }, u = class extends c {
205
- constructor(...e) {
206
- super(...e), this.ariaLabel = "", this.metaLead = null, this.borderOnHover = !0, this.zoom = !1, this.imageAspect = null, this.restrictImageHeight = !1, this.clickCardLink = null, this.metaTrail = null, this.layout = l.props.layout.default, this.heading = "", this.headingLevel = 3, this.image = {
207
- src: "",
208
- alt: ""
209
- }, this.imageShape = "square", this.openLinkInNewTab = !1, this.padding = l.props.padding.default, this.skin = l.props.skin.default, this.subheading = "", this.tagPosition = "top", this.tags = [];
210
- }
211
- connectedCallback() {
212
- super.connectedCallback();
213
- }
214
- render() {
215
- let t = {
216
- "pkt-card": !0,
217
- [`pkt-card--${this.skin}`]: this.skin,
218
- [`pkt-card--${this.layout}`]: this.layout,
219
- [`pkt-card--padding-${this.padding}`]: this.padding,
220
- "pkt-card--border-on-hover": this.borderOnHover,
221
- "pkt-card--zoom": this.zoom
222
- }, r = this.ariaLabel?.trim() || (this.heading ? `${this.heading} lenkekort` : "lenkekort"), i = this.ariaLabel?.trim() || (this.heading ? this.heading : "kort");
223
- return e`
224
- <article
225
- class=${a(t)}
226
- aria-label=${o(this.clickCardLink ? r : i)}
227
- >
228
- ${this.renderImage()}
229
- <div class="pkt-card__wrapper">
230
- ${this.tagPosition === "top" ? this.renderTags() : n}
231
- ${this.renderHeader()}
232
- ${this.renderSlot()}
233
- ${this.tagPosition === "bottom" ? this.renderTags() : n}
234
- ${this.renderMetadata()}
235
- </div>
236
- </article>
237
- `;
238
- }
239
- renderImage() {
240
- let t = {
241
- "pkt-card__image": !0,
242
- [`pkt-card__image-${this.imageShape}`]: this.imageShape,
243
- [`pkt-card__image-aspect-${this.imageAspect}`]: !!this.imageAspect,
244
- "pkt-card__image-restricted": this.restrictImageHeight
245
- };
246
- return e`
247
- ${this.image.src && e`
248
- <div class=${a(t)}>
249
- <img src=${this.image.src} alt=${this.image.alt || ""} />
250
- </div>
251
- `}
252
- `;
253
- }
254
- renderHeadingTag(t, n) {
255
- let r = this.headingLevel && this.headingLevel >= 1 && this.headingLevel <= 6 ? this.headingLevel : 3, i = `pkt-heading pkt-heading--medium pkt-heading--fw-regular ${t}`;
256
- switch (r) {
257
- case 1: return e`<h1 class=${i}>${n}</h1>`;
258
- case 2: return e`<h2 class=${i}>${n}</h2>`;
259
- case 4: return e`<h4 class=${i}>${n}</h4>`;
260
- case 5: return e`<h5 class=${i}>${n}</h5>`;
261
- case 6: return e`<h6 class=${i}>${n}</h6>`;
262
- default: return e`<h3 class=${i}>${n}</h3>`;
263
- }
264
- }
265
- renderHeading() {
266
- return !this.heading || this.clickCardLink ? n : this.renderHeadingTag("pkt-card__heading", this.heading);
267
- }
268
- renderLinkHeading() {
269
- return this.clickCardLink ? this.renderHeadingTag("pkt-card__link-heading pkt-card__heading", e`<a
270
- class="pkt-card__link"
271
- href=${this.clickCardLink}
272
- target=${this.openLinkInNewTab ? "_blank" : "_self"}
273
- rel=${o(this.openLinkInNewTab ? "noopener noreferrer" : void 0)}
274
- >${this.heading}</a
275
- >`) : n;
276
- }
277
- renderSubheading() {
278
- return e`
279
- ${this.subheading ? e` <p class="pkt-card__subheading ">${this.subheading}</p> ` : n}
280
- `;
281
- }
282
- renderHeader() {
283
- let t = !!this.heading || !!this.subheading;
284
- return e`
285
- ${t ? e`
286
- <header class="pkt-card__header">
287
- ${this.renderHeading()}
288
- ${this.renderLinkHeading()}
289
- ${this.renderSubheading()}
290
- </header>
291
- ` : n}
292
- `;
293
- }
294
- renderTags() {
295
- let t = {
296
- "pkt-card__tags": !0,
297
- [`pkt-card__tags-${this.tagPosition}`]: this.tagPosition
298
- };
299
- return e`
300
- ${this.tags.length > 0 ? e`
301
- <div
302
- class=${a(t)}
303
- role="list"
304
- aria-label=${this.tags.length > 1 ? "merkelapper" : "merkelapp"}
305
- >
306
- ${this.tags.map((t) => e`
307
- <pkt-tag
308
- role="listitem"
309
- textStyle="normal-text"
310
- size="medium"
311
- skin=${o(t.skin)}
312
- iconName=${o(t.iconName)}
313
- >
314
- <span>${t.text}</span>
315
- </pkt-tag>
316
- `)}
317
- </div>
318
- ` : n}
319
- `;
320
- }
321
- renderSlot() {
322
- return e`<section class="pkt-card__content">${s(this)}</section>`;
323
- }
324
- renderMetadata() {
325
- return e`
326
- ${this.metaLead || this.metaTrail ? e`
327
- <footer class="pkt-card__metadata">
328
- ${this.metaLead ? e`<span class="pkt-card__metadata-lead">${this.metaLead}</span>` : n}
329
- ${this.metaTrail ? e`<span class="pkt-card__metadata-trail">${this.metaTrail}</span>` : n}
330
- </footer>
331
- ` : n}
332
- `;
333
- }
334
- };
335
- r([i({ type: String })], u.prototype, "ariaLabel", void 0), r([i({ type: String })], u.prototype, "metaLead", void 0), r([i({ type: Boolean })], u.prototype, "borderOnHover", void 0), r([i({ type: Boolean })], u.prototype, "zoom", void 0), r([i({ type: String })], u.prototype, "imageAspect", void 0), r([i({ type: Boolean })], u.prototype, "restrictImageHeight", void 0), r([i({
336
- type: String,
337
- reflect: !0
338
- })], u.prototype, "clickCardLink", void 0), r([i({ type: String })], u.prototype, "metaTrail", void 0), r([i({ type: String })], u.prototype, "layout", void 0), r([i({ type: String })], u.prototype, "heading", void 0), r([i({
339
- type: Number,
340
- attribute: "headinglevel"
341
- })], u.prototype, "headingLevel", void 0), r([i({ type: Object })], u.prototype, "image", void 0), r([i({ type: String })], u.prototype, "imageShape", void 0), r([i({ type: Boolean })], u.prototype, "openLinkInNewTab", void 0), r([i({ type: String })], u.prototype, "padding", void 0), r([i({
342
- type: String,
343
- converter: {
344
- fromAttribute: (e) => {
345
- let t = l.props.skin.type;
346
- return e && t.includes(e) ? e : (e && !t.includes(e) && console.warn(`Invalid skin value "${e}". Using default skin "${l.props.skin.default}".`), l.props.skin.default);
347
- },
348
- toAttribute: (e) => e
349
- }
350
- })], u.prototype, "skin", void 0), r([i({ type: String })], u.prototype, "subheading", void 0), r([i({ type: String })], u.prototype, "tagPosition", void 0), r([i({ type: Array })], u.prototype, "tags", void 0);
351
- try {
352
- t("pkt-card")(u);
353
- } catch {
354
- console.warn("Forsøker å definere <pkt-card>, men den er allerede definert");
355
- }
356
- //#endregion
357
- //#region src/components/card/index.ts
358
- var d = u;
359
- //#endregion
360
- export { u as n, d as t };
@@ -1,64 +0,0 @@
1
- const e=require("./element-DRc10X2R.cjs"),t=require("./class-map-BEib48YL.cjs"),n=require("./if-defined-BeVQnl3C.cjs"),r=require("./element-with-slot-DgtT8lCH.cjs");require("./icon-DBFTFd-J.cjs"),require("./tag-Cojf4jgA.cjs");var i={name:`pkt-card`,react:`PktCard`,"css-class":`pkt-card`,isElement:!0,isPureReact:!0,"dark-mode":!0,props:{heading:{type:`string`,name:`Overskrift`,description:`Tittel på card`,category:`contents`},headingLevel:{type:[1,2,3,4,5,6],name:`Overskriftsnivå`,description:`Nivået på headingen. Brukes for tilgjengelighet.`,default:3,category:`accessibility`},subheading:{type:`string`,name:`Undertittel`,description:`Undertittel på card`,category:`contents`},layout:{type:[`vertical`,`horizontal`],name:`Layout`,description:`Horisontal eller vertikal layout. Ved horisontal layout vil bildet være plassert til venstre for teksten på desktop, og over teksten på mobil.`,default:`vertical`,category:`ui`},skin:{type:[`outlined`,`outlined-beige`,`gray`,`blue`,`beige`,`green`],name:`Utseende`,description:`Fargen på card. Velg mellom outlined, outlined-beige, gray, blue, beige og green. Ved padding=none er det ikke mulighet for outlined-skin. Card med kombinasjonen av propsene padding=none + layout=vertical vil alltid være transparante.`,default:`outlined`,category:`ui`},padding:{type:[`none`,`default`],name:`Padding`,description:`Padding rundt card. Ved "none" strekker innholdet i card seg ut til kantene, og dette er derfor ikke mulig å kombinere med outlined skin.`,default:`default`,category:`ui`},metaLead:{type:`string`,name:`Forfatter eller annen metadata`,description:`Undertekst med fet skriftvekt`,default:!1,category:`contents`},metaTrail:{type:`string`,name:`Dato eller annen metadata`,description:`Undertekst med normal skriftvekt`,default:!1,category:`contents`},tagPosition:{type:[`top`,`bottom`],name:`Tagplassering`,description:`Plassering av tags i card`,default:`top`,category:`ui`},clickCardLink:{type:`string`,name:`Lenke for klikkbart card`,description:`Href sendes inn som streng for å gjøre card klikkbart. Ved bruk MÅ heading sendes inn da denne vil brukes som lenketekst i klikkbart card.`,category:`contents`},openLinkInNewTab:{type:`boolean`,name:`Åpne i ny fane`,description:`Velg denne dersom du ønsker at lenken i card skal åpnes i ny fane.`,default:!1,category:`tech`},borderOnHover:{type:`boolean`,name:`Hover border for klikkbart card`,description:`Vi anbefaler hoverborder på klikkbart card. Kan slås av ved behov.`,default:!0,category:`ui`},zoom:{name:`Zoom på bildet`,description:`Forstørrer bildet litt når man holder musepekeren over kortet`,type:`boolean`,category:`ui`,default:!1},image:{type:`object`,name:`Bilde`,description:`Bildet på card. Tar inn et objekt av typen {src: string, alt: string}.`,properties:{src:{type:`string`,description:`Stien til bildet`,required:!0},alt:{type:`string`,description:`Tekst til skjermleser. Skal kun sendes inn for bilder som ikke er dekorative`,required:!1}},category:`contents`},imageShape:{type:[`square`,`round`],name:`Bildeform`,description:`Valg for om bildet skal ha rektangulær eller rund form.`,default:`square`,category:`contents`},imageAspect:{name:`Bildeformat`,description:`Overstyrer bildets sideforhold. Uten denne er det 1:1, eller 19:10 med padding «none» og stående kort.`,type:[`auto`,`1-1`,`4-3`,`3-2`,`16-9`,`19-10`],category:`ui`},restrictImageHeight:{name:`Lås bildehøyden`,description:`Låser bildehøyden i stedet for sideforholdet, og trapper den opp med skjermbredden: 12.5rem, 14.375rem fra tablet og 18.125rem fra tablet-big. Bildet beskjæres sentrert.`,type:`boolean`,category:`ui`,default:!1},tags:{type:`array`,description:`Liste av tags på card. Tar inn et array med objekter med følgende stringproperties: skin, iconName, ariaLabel, text`,name:`Tags`,items:{type:`object`,name:`Tag`,properties:{skin:{type:[`blue`,`green`,`red`,`yellow`],description:`Farge på tag`},iconName:{type:`icon`,description:`Id på ikonet du ønsker å bruke til tag`},ariaLabel:{type:`string`,description:`Tekst for aria-label`},text:{type:`string`,description:`Tekst på tag`,required:!0}}},category:`contents`},ariaLabel:{type:`string`,name:`Aria-label for card`,description:`Tekst til skjermleser for aria-label på card. Settes automatisk til headingen, eller subheadingen der heading ikke eksisterer. Ved bruk av klikkbart card må heading alltid sendes inn da denne brukes som lenketekst.`,category:`accessibility`}},slots:{default:{description:`Innholdet i card`}}},a=class extends r.t{constructor(...e){super(...e),this.ariaLabel=``,this.metaLead=null,this.borderOnHover=!0,this.zoom=!1,this.imageAspect=null,this.restrictImageHeight=!1,this.clickCardLink=null,this.metaTrail=null,this.layout=i.props.layout.default,this.heading=``,this.headingLevel=3,this.image={src:``,alt:``},this.imageShape=`square`,this.openLinkInNewTab=!1,this.padding=i.props.padding.default,this.skin=i.props.skin.default,this.subheading=``,this.tagPosition=`top`,this.tags=[]}connectedCallback(){super.connectedCallback()}render(){let r={"pkt-card":!0,[`pkt-card--${this.skin}`]:this.skin,[`pkt-card--${this.layout}`]:this.layout,[`pkt-card--padding-${this.padding}`]:this.padding,"pkt-card--border-on-hover":this.borderOnHover,"pkt-card--zoom":this.zoom},i=this.ariaLabel?.trim()||(this.heading?`${this.heading} lenkekort`:`lenkekort`),a=this.ariaLabel?.trim()||(this.heading?this.heading:`kort`);return e._`
2
- <article
3
- class=${t.t(r)}
4
- aria-label=${n.t(this.clickCardLink?i:a)}
5
- >
6
- ${this.renderImage()}
7
- <div class="pkt-card__wrapper">
8
- ${this.tagPosition===`top`?this.renderTags():e.h}
9
- ${this.renderHeader()}
10
- ${this.renderSlot()}
11
- ${this.tagPosition===`bottom`?this.renderTags():e.h}
12
- ${this.renderMetadata()}
13
- </div>
14
- </article>
15
- `}renderImage(){let n={"pkt-card__image":!0,[`pkt-card__image-${this.imageShape}`]:this.imageShape,[`pkt-card__image-aspect-${this.imageAspect}`]:!!this.imageAspect,"pkt-card__image-restricted":this.restrictImageHeight};return e._`
16
- ${this.image.src&&e._`
17
- <div class=${t.t(n)}>
18
- <img src=${this.image.src} alt=${this.image.alt||``} />
19
- </div>
20
- `}
21
- `}renderHeadingTag(t,n){let r=this.headingLevel&&this.headingLevel>=1&&this.headingLevel<=6?this.headingLevel:3,i=`pkt-heading pkt-heading--medium pkt-heading--fw-regular ${t}`;switch(r){case 1:return e._`<h1 class=${i}>${n}</h1>`;case 2:return e._`<h2 class=${i}>${n}</h2>`;case 4:return e._`<h4 class=${i}>${n}</h4>`;case 5:return e._`<h5 class=${i}>${n}</h5>`;case 6:return e._`<h6 class=${i}>${n}</h6>`;default:return e._`<h3 class=${i}>${n}</h3>`}}renderHeading(){return!this.heading||this.clickCardLink?e.h:this.renderHeadingTag(`pkt-card__heading`,this.heading)}renderLinkHeading(){return this.clickCardLink?this.renderHeadingTag(`pkt-card__link-heading pkt-card__heading`,e._`<a
22
- class="pkt-card__link"
23
- href=${this.clickCardLink}
24
- target=${this.openLinkInNewTab?`_blank`:`_self`}
25
- rel=${n.t(this.openLinkInNewTab?`noopener noreferrer`:void 0)}
26
- >${this.heading}</a
27
- >`):e.h}renderSubheading(){return e._`
28
- ${this.subheading?e._` <p class="pkt-card__subheading ">${this.subheading}</p> `:e.h}
29
- `}renderHeader(){let t=!!this.heading||!!this.subheading;return e._`
30
- ${t?e._`
31
- <header class="pkt-card__header">
32
- ${this.renderHeading()}
33
- ${this.renderLinkHeading()}
34
- ${this.renderSubheading()}
35
- </header>
36
- `:e.h}
37
- `}renderTags(){let r={"pkt-card__tags":!0,[`pkt-card__tags-${this.tagPosition}`]:this.tagPosition};return e._`
38
- ${this.tags.length>0?e._`
39
- <div
40
- class=${t.t(r)}
41
- role="list"
42
- aria-label=${this.tags.length>1?`merkelapper`:`merkelapp`}
43
- >
44
- ${this.tags.map(t=>e._`
45
- <pkt-tag
46
- role="listitem"
47
- textStyle="normal-text"
48
- size="medium"
49
- skin=${n.t(t.skin)}
50
- iconName=${n.t(t.iconName)}
51
- >
52
- <span>${t.text}</span>
53
- </pkt-tag>
54
- `)}
55
- </div>
56
- `:e.h}
57
- `}renderSlot(){return e._`<section class="pkt-card__content">${r.r(this)}</section>`}renderMetadata(){return e._`
58
- ${this.metaLead||this.metaTrail?e._`
59
- <footer class="pkt-card__metadata">
60
- ${this.metaLead?e._`<span class="pkt-card__metadata-lead">${this.metaLead}</span>`:e.h}
61
- ${this.metaTrail?e._`<span class="pkt-card__metadata-trail">${this.metaTrail}</span>`:e.h}
62
- </footer>
63
- `:e.h}
64
- `}};e.n([e.u({type:String})],a.prototype,`ariaLabel`,void 0),e.n([e.u({type:String})],a.prototype,`metaLead`,void 0),e.n([e.u({type:Boolean})],a.prototype,`borderOnHover`,void 0),e.n([e.u({type:Boolean})],a.prototype,`zoom`,void 0),e.n([e.u({type:String})],a.prototype,`imageAspect`,void 0),e.n([e.u({type:Boolean})],a.prototype,`restrictImageHeight`,void 0),e.n([e.u({type:String,reflect:!0})],a.prototype,`clickCardLink`,void 0),e.n([e.u({type:String})],a.prototype,`metaTrail`,void 0),e.n([e.u({type:String})],a.prototype,`layout`,void 0),e.n([e.u({type:String})],a.prototype,`heading`,void 0),e.n([e.u({type:Number,attribute:`headinglevel`})],a.prototype,`headingLevel`,void 0),e.n([e.u({type:Object})],a.prototype,`image`,void 0),e.n([e.u({type:String})],a.prototype,`imageShape`,void 0),e.n([e.u({type:Boolean})],a.prototype,`openLinkInNewTab`,void 0),e.n([e.u({type:String})],a.prototype,`padding`,void 0),e.n([e.u({type:String,converter:{fromAttribute:e=>{let t=i.props.skin.type;return e&&t.includes(e)?e:(e&&!t.includes(e)&&console.warn(`Invalid skin value "${e}". Using default skin "${i.props.skin.default}".`),i.props.skin.default)},toAttribute:e=>e}})],a.prototype,`skin`,void 0),e.n([e.u({type:String})],a.prototype,`subheading`,void 0),e.n([e.u({type:String})],a.prototype,`tagPosition`,void 0),e.n([e.u({type:Array})],a.prototype,`tags`,void 0);try{e.d(`pkt-card`)(a)}catch{console.warn(`Forsøker å definere <pkt-card>, men den er allerede definert`)}var o=a;Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return o}});