@oslokommune/punkt-elements 13.6.3 → 13.6.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -5,6 +5,23 @@ og skriver commits ca etter [Conventional Commits](https://conventionalcommits.o
5
5
 
6
6
  ---
7
7
 
8
+ ## [13.6.4](https://github.com/oslokommune/punkt/compare/13.6.3...13.6.4) (2025-09-19)
9
+
10
+ ### ⚠ BREAKING CHANGES
11
+ Ingen
12
+
13
+ ### Features
14
+ Ingen
15
+
16
+ ### Bug Fixes
17
+ Ingen
18
+
19
+ ### Chores
20
+ Ingen
21
+
22
+ ---
23
+
24
+
8
25
  ## [13.6.1](https://github.com/oslokommune/punkt/compare/13.6.0...13.6.1) (2025-09-18)
9
26
 
10
27
  ### ⚠ BREAKING CHANGES
@@ -1,4 +1,4 @@
1
- "use strict";const p=require("./class-map-CG3vIaNm.cjs"),h=require("./if-defined-CkVc_RJD.cjs"),t=require("./element-D62wHiNU.cjs"),g=require("./pkt-slot-controller-BzddBp7z.cjs"),c=require("./ref-BfgcOXko.cjs");require("./icon-__Hjt2XZ.cjs");require("./tag-BKq07hGI.cjs");require("./heading-BBzoDZGk.cjs");const k={layout:{default:"vertical"},skin:{type:["outlined","outlined-beige","gray","blue","beige","green"],default:"outlined"},padding:{default:"default"}},o={props:k};var u=Object.defineProperty,m=Object.getOwnPropertyDescriptor,e=(i,a,s,n)=>{for(var r=n>1?void 0:n?m(a,s):a,d=i.length-1,l;d>=0;d--)(l=i[d])&&(r=(n?l(a,s,r):l(r))||r);return n&&r&&u(a,s,r),r};exports.PktCard=class extends t.PktElement{constructor(){super(),this.defaultSlot=c.e(),this.ariaLabel="",this.metaLead=null,this.borderOnHover=!0,this.clickCardLink=null,this.metaTrail=null,this.layout=o.props.layout.default,this.heading="",this.headinglevel=3,this.image={src:"",alt:""},this.imageShape="square",this.openLinkInNewTab=!1,this.padding=o.props.padding.default,this.skin=o.props.skin.default,this.subheading="",this.tagPosition="top",this.tags=[],this.slotController=new g.PktSlotController(this,this.defaultSlot)}connectedCallback(){super.connectedCallback()}render(){var r,d;const a={"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},s=((r=this.ariaLabel)==null?void 0:r.trim())||(this.heading?`${this.heading} lenkekort`:"lenkekort"),n=((d=this.ariaLabel)==null?void 0:d.trim())||(this.heading?this.heading:"kort");return t.x`
1
+ "use strict";const p=require("./class-map-CG3vIaNm.cjs"),h=require("./if-defined-CkVc_RJD.cjs"),t=require("./element-D62wHiNU.cjs"),g=require("./pkt-slot-controller-BzddBp7z.cjs"),c=require("./ref-BfgcOXko.cjs");require("./icon-__Hjt2XZ.cjs");require("./tag-BKq07hGI.cjs");require("./heading-H_FWjo2k.cjs");const k={layout:{default:"vertical"},skin:{type:["outlined","outlined-beige","gray","blue","beige","green"],default:"outlined"},padding:{default:"default"}},o={props:k};var u=Object.defineProperty,m=Object.getOwnPropertyDescriptor,e=(i,a,s,n)=>{for(var r=n>1?void 0:n?m(a,s):a,d=i.length-1,l;d>=0;d--)(l=i[d])&&(r=(n?l(a,s,r):l(r))||r);return n&&r&&u(a,s,r),r};exports.PktCard=class extends t.PktElement{constructor(){super(),this.defaultSlot=c.e(),this.ariaLabel="",this.metaLead=null,this.borderOnHover=!0,this.clickCardLink=null,this.metaTrail=null,this.layout=o.props.layout.default,this.heading="",this.headinglevel=3,this.image={src:"",alt:""},this.imageShape="square",this.openLinkInNewTab=!1,this.padding=o.props.padding.default,this.skin=o.props.skin.default,this.subheading="",this.tagPosition="top",this.tags=[],this.slotController=new g.PktSlotController(this,this.defaultSlot)}connectedCallback(){super.connectedCallback()}render(){var r,d;const a={"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},s=((r=this.ariaLabel)==null?void 0:r.trim())||(this.heading?`${this.heading} lenkekort`:"lenkekort"),n=((d=this.ariaLabel)==null?void 0:d.trim())||(this.heading?this.heading:"kort");return t.x`
2
2
  <article
3
3
  class=${p.e(a)}
4
4
  aria-label=${h.o(this.clickCardLink?s:n)}
@@ -5,7 +5,7 @@ import { P as $ } from "./pkt-slot-controller-BPGj-LC5.js";
5
5
  import { e as y, n as _ } from "./ref-BCGCor-j.js";
6
6
  import "./icon-B1-mkmwB.js";
7
7
  import "./tag-NZ5oeGfw.js";
8
- import "./heading-CfxZa1QR.js";
8
+ import "./heading-DQ0R34j4.js";
9
9
  const b = {
10
10
  layout: {
11
11
  default: "vertical"
@@ -0,0 +1,76 @@
1
+ import { b as u, x as p, n as d, a as o } from "./element-DJZPsA_J.js";
2
+ var g = Object.defineProperty, v = Object.getOwnPropertyDescriptor, a = (e, i, t, r) => {
3
+ for (var s = r > 1 ? void 0 : r ? v(i, t) : i, h = e.length - 1, n; h >= 0; h--)
4
+ (n = e[h]) && (s = (r ? n(i, t, s) : n(s)) || s);
5
+ return r && s && g(i, t, s), s;
6
+ };
7
+ let l = class extends u {
8
+ constructor() {
9
+ super(...arguments), this.size = void 0, this.level = 2, this.visuallyHidden = !1, this.align = void 0;
10
+ }
11
+ connectedCallback() {
12
+ super.connectedCallback(), this.setAttribute("role", "heading"), this.setAttribute("aria-level", String(this.level)), this.updateHostClasses();
13
+ }
14
+ attributeChangedCallback(e, i, t) {
15
+ super.attributeChangedCallback(e, i, t), e === "level" && t && this.setLevel(Number(t)), e === "visuallyHidden" && (this.visuallyHidden = t !== null && t !== "false"), (e === "size" || e === "visuallyHidden" || e === "align") && this.updateHostClasses();
16
+ }
17
+ updated(e) {
18
+ super.updated(e), e.has("level") && (this.setLevel(this.level), this.hasAttribute("size") || (this.size = this.defaultSizeForLevel)), !this.hasAttribute("size") && (e.has("level") || this.size === void 0) && (this.size = this.defaultSizeForLevel), (e.has("size") || e.has("visuallyHidden") || e.has("align")) && this.updateHostClasses();
19
+ }
20
+ setLevel(e) {
21
+ e >= 1 && e <= 6 ? (this.level = e, this.setAttribute("aria-level", String(e))) : console.warn(`Invalid heading level: ${e}. Must be between 1 and 6.`);
22
+ }
23
+ get defaultSizeForLevel() {
24
+ switch (this.level) {
25
+ case 1:
26
+ return "xlarge";
27
+ case 2:
28
+ return "large";
29
+ case 3:
30
+ return "medium";
31
+ case 4:
32
+ return "small";
33
+ case 5:
34
+ return "xsmall";
35
+ case 6:
36
+ return "xsmall";
37
+ default:
38
+ return "medium";
39
+ }
40
+ }
41
+ updateHostClasses() {
42
+ this.classList.remove(
43
+ "pkt-heading",
44
+ "pkt-heading--xsmall",
45
+ "pkt-heading--small",
46
+ "pkt-heading--medium",
47
+ "pkt-heading--large",
48
+ "pkt-heading--xlarge",
49
+ "pkt-sr-only",
50
+ "pkt-heading--start",
51
+ "pkt-heading--center",
52
+ "pkt-heading--end"
53
+ ), this.classList.add("pkt-heading"), this.size && this.classList.add(`pkt-heading--${this.size}`), this.visuallyHidden && this.classList.add("pkt-sr-only"), this.align && this.classList.add(`pkt-heading--${this.align}`);
54
+ }
55
+ render() {
56
+ return p`<slot></slot>`;
57
+ }
58
+ };
59
+ a([
60
+ d({ type: String, reflect: !0 })
61
+ ], l.prototype, "size", 2);
62
+ a([
63
+ d({ type: Number, reflect: !0 })
64
+ ], l.prototype, "level", 2);
65
+ a([
66
+ d({ type: Boolean, reflect: !0 })
67
+ ], l.prototype, "visuallyHidden", 2);
68
+ a([
69
+ d({ type: String, reflect: !0 })
70
+ ], l.prototype, "align", 2);
71
+ l = a([
72
+ o("pkt-heading")
73
+ ], l);
74
+ export {
75
+ l as P
76
+ };
@@ -0,0 +1 @@
1
+ "use strict";const i=require("./element-D62wHiNU.cjs");var h=Object.defineProperty,u=Object.getOwnPropertyDescriptor,a=(n,e,l,t)=>{for(var s=t>1?void 0:t?u(e,l):e,r=n.length-1,d;r>=0;r--)(d=n[r])&&(s=(t?d(e,l,s):d(s))||s);return t&&s&&h(e,l,s),s};exports.PktHeading=class extends i.PktShadowElement{constructor(){super(...arguments),this.size=void 0,this.level=2,this.visuallyHidden=!1,this.align=void 0}connectedCallback(){super.connectedCallback(),this.setAttribute("role","heading"),this.setAttribute("aria-level",String(this.level)),this.updateHostClasses()}attributeChangedCallback(e,l,t){super.attributeChangedCallback(e,l,t),e==="level"&&t&&this.setLevel(Number(t)),e==="visuallyHidden"&&(this.visuallyHidden=t!==null&&t!=="false"),(e==="size"||e==="visuallyHidden"||e==="align")&&this.updateHostClasses()}updated(e){super.updated(e),e.has("level")&&(this.setLevel(this.level),this.hasAttribute("size")||(this.size=this.defaultSizeForLevel)),!this.hasAttribute("size")&&(e.has("level")||this.size===void 0)&&(this.size=this.defaultSizeForLevel),(e.has("size")||e.has("visuallyHidden")||e.has("align"))&&this.updateHostClasses()}setLevel(e){e>=1&&e<=6?(this.level=e,this.setAttribute("aria-level",String(e))):console.warn(`Invalid heading level: ${e}. Must be between 1 and 6.`)}get defaultSizeForLevel(){switch(this.level){case 1:return"xlarge";case 2:return"large";case 3:return"medium";case 4:return"small";case 5:return"xsmall";case 6:return"xsmall";default:return"medium"}}updateHostClasses(){this.classList.remove("pkt-heading","pkt-heading--xsmall","pkt-heading--small","pkt-heading--medium","pkt-heading--large","pkt-heading--xlarge","pkt-sr-only","pkt-heading--start","pkt-heading--center","pkt-heading--end"),this.classList.add("pkt-heading"),this.size&&this.classList.add(`pkt-heading--${this.size}`),this.visuallyHidden&&this.classList.add("pkt-sr-only"),this.align&&this.classList.add(`pkt-heading--${this.align}`)}render(){return i.x`<slot></slot>`}};a([i.n({type:String,reflect:!0})],exports.PktHeading.prototype,"size",2);a([i.n({type:Number,reflect:!0})],exports.PktHeading.prototype,"level",2);a([i.n({type:Boolean,reflect:!0})],exports.PktHeading.prototype,"visuallyHidden",2);a([i.n({type:String,reflect:!0})],exports.PktHeading.prototype,"align",2);exports.PktHeading=a([i.t("pkt-heading")],exports.PktHeading);
package/dist/index.d.ts CHANGED
@@ -749,14 +749,15 @@ declare class PktElement<T = {}> extends PktShadowElement<T> {
749
749
  }
750
750
 
751
751
  export declare class PktHeading extends PktShadowElement<IPktHeading> implements IPktHeading {
752
- size: TPktHeadingSize;
752
+ size: TPktHeadingSize | undefined;
753
753
  level: TPktHeadingLevel;
754
754
  visuallyHidden: boolean;
755
- align: 'start' | 'center' | 'end';
755
+ align: 'start' | 'center' | 'end' | undefined;
756
756
  connectedCallback(): void;
757
757
  attributeChangedCallback(name: string, _old: string | null, value: string | null): void;
758
758
  protected updated(_changedProperties: PropertyValues): void;
759
759
  private setLevel;
760
+ private get defaultSizeForLevel();
760
761
  private updateHostClasses;
761
762
  render(): TemplateResult<1>;
762
763
  }
package/dist/pkt-card.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./card-BwLe5f50.cjs"),t=e.PktCard;Object.defineProperty(exports,"PktCard",{enumerable:!0,get:()=>e.PktCard});exports.default=t;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./card-B9RPShvV.cjs"),t=e.PktCard;Object.defineProperty(exports,"PktCard",{enumerable:!0,get:()=>e.PktCard});exports.default=t;
package/dist/pkt-card.js CHANGED
@@ -1,4 +1,4 @@
1
- import { P as a } from "./card-DpUEM1tU.js";
1
+ import { P as a } from "./card-en2KhOPO.js";
2
2
  const r = a;
3
3
  export {
4
4
  a as PktCard,
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./heading-BBzoDZGk.cjs"),t=e.PktHeading;Object.defineProperty(exports,"PktHeading",{enumerable:!0,get:()=>e.PktHeading});exports.default=t;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./heading-H_FWjo2k.cjs"),t=e.PktHeading;Object.defineProperty(exports,"PktHeading",{enumerable:!0,get:()=>e.PktHeading});exports.default=t;
@@ -1,4 +1,4 @@
1
- import { P as a } from "./heading-CfxZa1QR.js";
1
+ import { P as a } from "./heading-DQ0R34j4.js";
2
2
  const e = a;
3
3
  export {
4
4
  a as PktHeading,
@@ -1,4 +1,4 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("./alert-ZP5-fqlt.cjs"),l=require("./accordionitem-BOmnm80g.cjs"),b=require("./backlink-BT7DO6rV.cjs"),m=require("./button-BfqxLnMT.cjs"),P=require("./calendar-CL9O0tLP.cjs"),g=require("./card-BwLe5f50.cjs"),h=require("./combobox-COuxR036.cjs"),f=require("./consent-DFrsiYGQ.cjs"),y=require("./checkbox-CH8xeK-0.cjs"),t=require("./element-D62wHiNU.cjs"),O=require("./pkt-slot-controller-BzddBp7z.cjs"),s=require("./ref-BfgcOXko.cjs"),j=require("./class-map-CG3vIaNm.cjs"),k=require("./datepicker-CV73pLqD.cjs"),q=require("./helptext-D1fkGmfT.cjs"),x=require("./heading-BBzoDZGk.cjs"),C=require("./icon-__Hjt2XZ.cjs"),v=require("./input-wrapper-C9rZEgju.cjs"),S=require("./link-CyiVlb-7.cjs"),$=require("./linkcard-fH9uydjS.cjs"),L=require("./loader-C-3l7kb9.cjs"),T=require("./messagebox---xPIAwR.cjs"),_=require("./modal-IjDRQfX1.cjs"),A=require("./progressbar-DJzEC7cx.cjs"),p=require("./radiobutton-DEboKECm.cjs"),B=require("./tag-BKq07hGI.cjs"),I=require("./textarea-CXu8UUsY.cjs"),D=require("./textinput-C6wccDhZ.cjs"),M=require("./select-Cf1RWSsI.cjs");var R=Object.defineProperty,H=Object.getOwnPropertyDescriptor,o=(a,e,r,i)=>{for(var n=i>1?void 0:i?H(e,r):e,u=a.length-1,c;u>=0;u--)(c=a[u])&&(n=(i?c(e,r,n):c(n))||n);return i&&n&&R(e,r,n),n};exports.PktComponent=class extends t.PktElement{constructor(){super(),this.string="",this.strings=[],this.darkmode=!1,this._list=[],this.defaultSlot=s.e(),this.namedSlot=s.e(),this.slotController=new O.PktSlotController(this,this.defaultSlot,this.namedSlot)}connectedCallback(){this.strings.length&&this.strings.forEach(e=>{this._list.push(e.toUpperCase())}),super.connectedCallback()}render(){const e={"pkt-component":!0,"pkt-component--has-list":this.strings.length>0,"pkt-darkmode":this.darkmode};return t.x`
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("./alert-ZP5-fqlt.cjs"),l=require("./accordionitem-BOmnm80g.cjs"),b=require("./backlink-BT7DO6rV.cjs"),m=require("./button-BfqxLnMT.cjs"),P=require("./calendar-CL9O0tLP.cjs"),g=require("./card-B9RPShvV.cjs"),h=require("./combobox-COuxR036.cjs"),f=require("./consent-DFrsiYGQ.cjs"),y=require("./checkbox-CH8xeK-0.cjs"),t=require("./element-D62wHiNU.cjs"),O=require("./pkt-slot-controller-BzddBp7z.cjs"),s=require("./ref-BfgcOXko.cjs"),j=require("./class-map-CG3vIaNm.cjs"),k=require("./datepicker-CV73pLqD.cjs"),q=require("./helptext-D1fkGmfT.cjs"),x=require("./heading-H_FWjo2k.cjs"),C=require("./icon-__Hjt2XZ.cjs"),v=require("./input-wrapper-C9rZEgju.cjs"),S=require("./link-CyiVlb-7.cjs"),$=require("./linkcard-fH9uydjS.cjs"),L=require("./loader-C-3l7kb9.cjs"),T=require("./messagebox---xPIAwR.cjs"),_=require("./modal-IjDRQfX1.cjs"),A=require("./progressbar-DJzEC7cx.cjs"),p=require("./radiobutton-DEboKECm.cjs"),B=require("./tag-BKq07hGI.cjs"),I=require("./textarea-CXu8UUsY.cjs"),D=require("./textinput-C6wccDhZ.cjs"),M=require("./select-Cf1RWSsI.cjs");var R=Object.defineProperty,H=Object.getOwnPropertyDescriptor,o=(a,e,r,i)=>{for(var n=i>1?void 0:i?H(e,r):e,u=a.length-1,c;u>=0;u--)(c=a[u])&&(n=(i?c(e,r,n):c(n))||n);return i&&n&&R(e,r,n),n};exports.PktComponent=class extends t.PktElement{constructor(){super(),this.string="",this.strings=[],this.darkmode=!1,this._list=[],this.defaultSlot=s.e(),this.namedSlot=s.e(),this.slotController=new O.PktSlotController(this,this.defaultSlot,this.namedSlot)}connectedCallback(){this.strings.length&&this.strings.forEach(e=>{this._list.push(e.toUpperCase())}),super.connectedCallback()}render(){const e={"pkt-component":!0,"pkt-component--has-list":this.strings.length>0,"pkt-darkmode":this.darkmode};return t.x`
2
2
  <div class="${j.e(e)}">
3
3
  <h1 class="pkt-txt-28">${this.string}</h1>
4
4
 
package/dist/pkt-index.js CHANGED
@@ -4,7 +4,7 @@ import { P as E } from "./backlink-Bq8O2bt8.js";
4
4
  import { P as O } from "./button-x6Xw-5w0.js";
5
5
  import { c as d } from "./calendar-ChphTIhk.js";
6
6
  import { P as j } from "./calendar-ChphTIhk.js";
7
- import { P as G } from "./card-DpUEM1tU.js";
7
+ import { P as G } from "./card-en2KhOPO.js";
8
8
  import { P as K } from "./combobox-D3aPvdrE.js";
9
9
  import { P as U } from "./consent-CXp0bLvg.js";
10
10
  import { P as q } from "./checkbox-DSAcMC-D.js";
@@ -14,7 +14,7 @@ import { e as m, n as k } from "./ref-BCGCor-j.js";
14
14
  import { e as u } from "./class-map-Dw6Wrxwi.js";
15
15
  import { P as F, a as J } from "./datepicker-Ca552mbJ.js";
16
16
  import { P as V } from "./helptext-8ykxyegi.js";
17
- import { P as Y } from "./heading-CfxZa1QR.js";
17
+ import { P as Y } from "./heading-DQ0R34j4.js";
18
18
  import { P as tt } from "./icon-B1-mkmwB.js";
19
19
  import { P as rt } from "./input-wrapper-D_JdEqcO.js";
20
20
  import { P as st } from "./link-DSSJYrtn.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oslokommune/punkt-elements",
3
- "version": "13.6.3",
3
+ "version": "13.6.4",
4
4
  "description": "Komponentbiblioteket til Punkt, et designsystem laget av Oslo Origo",
5
5
  "homepage": "https://punkt.oslo.kommune.no",
6
6
  "author": "Team Designsystem, Oslo Origo",
@@ -40,7 +40,7 @@
40
40
  "@babel/preset-env": "^7.28.3",
41
41
  "@babel/preset-typescript": "^7.25.9",
42
42
  "@oslokommune/punkt-assets": "^13.6.3",
43
- "@oslokommune/punkt-css": "^13.6.3",
43
+ "@oslokommune/punkt-css": "^13.6.4",
44
44
  "@testing-library/jest-dom": "^6.6.3",
45
45
  "@vitest/ui": "^1.0.0",
46
46
  "jest-axe": "^9.0.0",
@@ -72,5 +72,5 @@
72
72
  "url": "https://github.com/oslokommune/punkt/issues"
73
73
  },
74
74
  "license": "MIT",
75
- "gitHead": "b58d1ae17c67067c2cd94a585d1362a9b27483b0"
75
+ "gitHead": "e5cb812d5161777cf03a2a2ed532490446d6d5a9"
76
76
  }
@@ -42,10 +42,9 @@ describe('PktHeading', () => {
42
42
  const heading = container.querySelector('pkt-heading') as PktHeading
43
43
  await heading.updateComplete
44
44
 
45
- expect(heading.size).toBe('medium')
46
45
  expect(heading.level).toBe(2)
47
46
  expect(heading.visuallyHidden).toBe(false)
48
- expect(heading.align).toBe('start')
47
+ expect(heading.align).toBe(undefined)
49
48
  })
50
49
 
51
50
  test('renders content in shadow DOM slot', async () => {
@@ -65,10 +64,10 @@ describe('PktHeading', () => {
65
64
  const heading = container.querySelector('pkt-heading') as PktHeading
66
65
  await heading.updateComplete
67
66
 
68
- expect(heading.getAttribute('size')).toBe('medium')
67
+ expect(heading.getAttribute('size')).toBe('large')
69
68
  expect(heading.getAttribute('level')).toBe('2')
70
69
  expect(heading.getAttribute('visually-hidden')).toBe(null)
71
- expect(heading.getAttribute('align')).toBe('start')
70
+ expect(heading.getAttribute('align')).toBe(null)
72
71
  })
73
72
 
74
73
  test('sets size property correctly', async () => {
@@ -130,8 +129,8 @@ describe('PktHeading', () => {
130
129
  await heading.updateComplete
131
130
 
132
131
  expect(heading.classList.contains('pkt-heading')).toBe(true)
133
- expect(heading.classList.contains('pkt-heading--medium')).toBe(true)
134
- expect(heading.classList.contains('pkt-heading--start')).toBe(true)
132
+ expect(heading.classList.contains('pkt-heading--medium')).toBe(false)
133
+ expect(heading.classList.contains('pkt-heading--start')).toBe(false)
135
134
  })
136
135
 
137
136
  test('applies size-specific CSS classes', async () => {
@@ -451,7 +450,7 @@ describe('PktHeading', () => {
451
450
 
452
451
  // Verify second heading is unaffected
453
452
  expect(heading2.size).toBe('small')
454
- expect(heading2.align).toBe('start')
453
+ expect(heading2.align).toBe(undefined)
455
454
  expect(heading1.size).toBe('xlarge')
456
455
  expect(heading1.align).toBe('center')
457
456
  })
@@ -14,15 +14,17 @@ export interface IPktHeading {
14
14
 
15
15
  @customElement('pkt-heading')
16
16
  export class PktHeading extends PktShadowElement<IPktHeading> implements IPktHeading {
17
- @property({ type: String, reflect: true }) size: TPktHeadingSize = 'medium'
17
+ @property({ type: String, reflect: true }) size: TPktHeadingSize | undefined = undefined
18
18
  @property({ type: Number, reflect: true }) level: TPktHeadingLevel = 2
19
19
  @property({ type: Boolean, reflect: true }) visuallyHidden: boolean = false
20
- @property({ type: String, reflect: true }) align: 'start' | 'center' | 'end' = 'start'
20
+ @property({ type: String, reflect: true }) align: 'start' | 'center' | 'end' | undefined =
21
+ undefined
21
22
 
22
23
  connectedCallback(): void {
23
24
  super.connectedCallback()
24
25
  this.setAttribute('role', 'heading')
25
26
  this.setAttribute('aria-level', String(this.level))
27
+
26
28
  this.updateHostClasses()
27
29
  }
28
30
 
@@ -43,7 +45,18 @@ export class PktHeading extends PktShadowElement<IPktHeading> implements IPktHea
43
45
  super.updated(_changedProperties)
44
46
  if (_changedProperties.has('level')) {
45
47
  this.setLevel(this.level)
48
+
49
+ if (!this.hasAttribute('size')) {
50
+ this.size = this.defaultSizeForLevel
51
+ }
46
52
  }
53
+ if (
54
+ !this.hasAttribute('size') &&
55
+ (_changedProperties.has('level') || this.size === undefined)
56
+ ) {
57
+ this.size = this.defaultSizeForLevel
58
+ }
59
+
47
60
  if (
48
61
  _changedProperties.has('size') ||
49
62
  _changedProperties.has('visuallyHidden') ||
@@ -62,6 +75,25 @@ export class PktHeading extends PktShadowElement<IPktHeading> implements IPktHea
62
75
  }
63
76
  }
64
77
 
78
+ private get defaultSizeForLevel(): TPktHeadingSize {
79
+ switch (this.level) {
80
+ case 1:
81
+ return 'xlarge'
82
+ case 2:
83
+ return 'large'
84
+ case 3:
85
+ return 'medium'
86
+ case 4:
87
+ return 'small'
88
+ case 5:
89
+ return 'xsmall'
90
+ case 6:
91
+ return 'xsmall'
92
+ default:
93
+ return 'medium'
94
+ }
95
+ }
96
+
65
97
  private updateHostClasses() {
66
98
  // Remove all possible classes first
67
99
  this.classList.remove(
@@ -1 +0,0 @@
1
- "use strict";const i=require("./element-D62wHiNU.cjs");var h=Object.defineProperty,p=Object.getOwnPropertyDescriptor,l=(n,t,a,e)=>{for(var s=e>1?void 0:e?p(t,a):t,d=n.length-1,r;d>=0;d--)(r=n[d])&&(s=(e?r(t,a,s):r(s))||s);return e&&s&&h(t,a,s),s};exports.PktHeading=class extends i.PktShadowElement{constructor(){super(...arguments),this.size="medium",this.level=2,this.visuallyHidden=!1,this.align="start"}connectedCallback(){super.connectedCallback(),this.setAttribute("role","heading"),this.setAttribute("aria-level",String(this.level)),this.updateHostClasses()}attributeChangedCallback(t,a,e){super.attributeChangedCallback(t,a,e),t==="level"&&e&&this.setLevel(Number(e)),t==="visuallyHidden"&&(this.visuallyHidden=e!==null&&e!=="false"),(t==="size"||t==="visuallyHidden"||t==="align")&&this.updateHostClasses()}updated(t){super.updated(t),t.has("level")&&this.setLevel(this.level),(t.has("size")||t.has("visuallyHidden")||t.has("align"))&&this.updateHostClasses()}setLevel(t){t>=1&&t<=6?(this.level=t,this.setAttribute("aria-level",String(t))):console.warn(`Invalid heading level: ${t}. Must be between 1 and 6.`)}updateHostClasses(){this.classList.remove("pkt-heading","pkt-heading--xsmall","pkt-heading--small","pkt-heading--medium","pkt-heading--large","pkt-heading--xlarge","pkt-sr-only","pkt-heading--start","pkt-heading--center","pkt-heading--end"),this.classList.add("pkt-heading"),this.size&&this.classList.add(`pkt-heading--${this.size}`),this.visuallyHidden&&this.classList.add("pkt-sr-only"),this.align&&this.classList.add(`pkt-heading--${this.align}`)}render(){return i.x`<slot></slot>`}};l([i.n({type:String,reflect:!0})],exports.PktHeading.prototype,"size",2);l([i.n({type:Number,reflect:!0})],exports.PktHeading.prototype,"level",2);l([i.n({type:Boolean,reflect:!0})],exports.PktHeading.prototype,"visuallyHidden",2);l([i.n({type:String,reflect:!0})],exports.PktHeading.prototype,"align",2);exports.PktHeading=l([i.t("pkt-heading")],exports.PktHeading);
@@ -1,58 +0,0 @@
1
- import { b as p, x as u, n, a as o } from "./element-DJZPsA_J.js";
2
- var g = Object.defineProperty, f = Object.getOwnPropertyDescriptor, a = (t, i, e, d) => {
3
- for (var s = d > 1 ? void 0 : d ? f(i, e) : i, r = t.length - 1, h; r >= 0; r--)
4
- (h = t[r]) && (s = (d ? h(i, e, s) : h(s)) || s);
5
- return d && s && g(i, e, s), s;
6
- };
7
- let l = class extends p {
8
- constructor() {
9
- super(...arguments), this.size = "medium", this.level = 2, this.visuallyHidden = !1, this.align = "start";
10
- }
11
- connectedCallback() {
12
- super.connectedCallback(), this.setAttribute("role", "heading"), this.setAttribute("aria-level", String(this.level)), this.updateHostClasses();
13
- }
14
- attributeChangedCallback(t, i, e) {
15
- super.attributeChangedCallback(t, i, e), t === "level" && e && this.setLevel(Number(e)), t === "visuallyHidden" && (this.visuallyHidden = e !== null && e !== "false"), (t === "size" || t === "visuallyHidden" || t === "align") && this.updateHostClasses();
16
- }
17
- updated(t) {
18
- super.updated(t), t.has("level") && this.setLevel(this.level), (t.has("size") || t.has("visuallyHidden") || t.has("align")) && this.updateHostClasses();
19
- }
20
- setLevel(t) {
21
- t >= 1 && t <= 6 ? (this.level = t, this.setAttribute("aria-level", String(t))) : console.warn(`Invalid heading level: ${t}. Must be between 1 and 6.`);
22
- }
23
- updateHostClasses() {
24
- this.classList.remove(
25
- "pkt-heading",
26
- "pkt-heading--xsmall",
27
- "pkt-heading--small",
28
- "pkt-heading--medium",
29
- "pkt-heading--large",
30
- "pkt-heading--xlarge",
31
- "pkt-sr-only",
32
- "pkt-heading--start",
33
- "pkt-heading--center",
34
- "pkt-heading--end"
35
- ), this.classList.add("pkt-heading"), this.size && this.classList.add(`pkt-heading--${this.size}`), this.visuallyHidden && this.classList.add("pkt-sr-only"), this.align && this.classList.add(`pkt-heading--${this.align}`);
36
- }
37
- render() {
38
- return u`<slot></slot>`;
39
- }
40
- };
41
- a([
42
- n({ type: String, reflect: !0 })
43
- ], l.prototype, "size", 2);
44
- a([
45
- n({ type: Number, reflect: !0 })
46
- ], l.prototype, "level", 2);
47
- a([
48
- n({ type: Boolean, reflect: !0 })
49
- ], l.prototype, "visuallyHidden", 2);
50
- a([
51
- n({ type: String, reflect: !0 })
52
- ], l.prototype, "align", 2);
53
- l = a([
54
- o("pkt-heading")
55
- ], l);
56
- export {
57
- l as P
58
- };