@kyndryl-design-system/shidoka-applications 2.70.11 → 2.71.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 (31) hide show
  1. package/components/global/header/header.js +12 -9
  2. package/components/global/header/header.js.map +1 -1
  3. package/components/global/header/headerCategories.d.ts +150 -0
  4. package/components/global/header/headerCategories.d.ts.map +1 -0
  5. package/components/global/header/headerCategories.js +242 -0
  6. package/components/global/header/headerCategories.js.map +1 -0
  7. package/components/global/header/headerCategory.d.ts.map +1 -1
  8. package/components/global/header/headerCategory.js +13 -5
  9. package/components/global/header/headerCategory.js.map +1 -1
  10. package/components/global/header/headerDivider.js +1 -2
  11. package/components/global/header/headerDivider.js.map +1 -1
  12. package/components/global/header/headerFlyout.js +12 -9
  13. package/components/global/header/headerFlyout.js.map +1 -1
  14. package/components/global/header/headerFlyouts.js +10 -7
  15. package/components/global/header/headerFlyouts.js.map +1 -1
  16. package/components/global/header/headerLink.d.ts +4 -1
  17. package/components/global/header/headerLink.d.ts.map +1 -1
  18. package/components/global/header/headerLink.js +109 -93
  19. package/components/global/header/headerLink.js.map +1 -1
  20. package/components/global/header/headerNav.d.ts +23 -2
  21. package/components/global/header/headerNav.d.ts.map +1 -1
  22. package/components/global/header/headerNav.js +16 -13
  23. package/components/global/header/headerNav.js.map +1 -1
  24. package/components/global/header/index.d.ts +1 -0
  25. package/components/global/header/index.d.ts.map +1 -1
  26. package/components/global/header/index.js +1 -1
  27. package/components/reusable/tabs/tabPanel.js +1 -1
  28. package/index.d.ts +1 -1
  29. package/index.d.ts.map +1 -1
  30. package/index.js +1 -1
  31. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- import{__setFunctionName as e,__esDecorate as t,__runInitializers as i,__classPrivateFieldGet as a,__classPrivateFieldSet as o}from"tslib";import{css as n,LitElement as r,unsafeCSS as l,html as s}from"lit";import{customElement as d,property as c,queryAssignedElements as h,state as m,query as g}from"lit/decorators.js";import{classMap as p}from"lit/directives/class-map.js";import{unsafeHTML as u}from"lit-html/directives/unsafe-html.js";import{debounce as v}from"../../../common/helpers/helpers.js";import{l as k}from"../../../vendor/@kyndryl-design-system/shidoka-foundation-7uii0Jz8.js";var f=n`*,
1
+ import{__setFunctionName as e,__esDecorate as t,__runInitializers as i,__classPrivateFieldGet as a,__classPrivateFieldSet as o}from"tslib";import{css as n,LitElement as r,unsafeCSS as l,html as s}from"lit";import{customElement as d,property as c,queryAssignedElements as h,state as m,query as p}from"lit/decorators.js";import{classMap as g}from"lit/directives/class-map.js";import{unsafeHTML as u}from"lit-html/directives/unsafe-html.js";import{debounce as v}from"../../../common/helpers/helpers.js";import{l as k}from"../../../vendor/@kyndryl-design-system/shidoka-foundation-7uii0Jz8.js";var f=n`*,
2
2
  *::before,
3
3
  *::after {
4
4
  box-sizing: border-box;
@@ -98,8 +98,8 @@ import{__setFunctionName as e,__esDecorate as t,__runInitializers as i,__classPr
98
98
  overflow-y: auto;
99
99
  overflow-x: hidden;
100
100
  background: var(--kd-color-background-container-default);
101
- transition: visibility 300ms, opacity 300ms ease-in-out, transform 300ms ease-in-out;
102
- transform: translateY(-20px);
101
+ transition: visibility 120ms ease-out, opacity 120ms ease-out;
102
+ transform: none;
103
103
  visibility: hidden;
104
104
  opacity: 0;
105
105
  z-index: -1;
@@ -108,7 +108,7 @@ import{__setFunctionName as e,__esDecorate as t,__runInitializers as i,__classPr
108
108
  gap: 2px;
109
109
  }
110
110
  .menu__content.slotted {
111
- padding: 8px;
111
+ padding: 8px 12px;
112
112
  }
113
113
  @media (min-width: 42rem) {
114
114
  .menu__content {
@@ -127,6 +127,9 @@ import{__setFunctionName as e,__esDecorate as t,__runInitializers as i,__classPr
127
127
  left: -12px;
128
128
  right: auto;
129
129
  }
130
+ .menu__content.categories-open {
131
+ box-shadow: none;
132
+ }
130
133
  }
131
134
  .menu__content strong {
132
135
  font-weight: var(--kd-font-weight-medium);
@@ -163,8 +166,8 @@ import{__setFunctionName as e,__esDecorate as t,__runInitializers as i,__classPr
163
166
  position: relative;
164
167
  align-items: center;
165
168
  gap: 8px;
166
- padding: 8px 12px;
167
- height: 40px;
169
+ padding: 6px 12px 6px 8px;
170
+ height: 30px;
168
171
  cursor: pointer;
169
172
  background: none;
170
173
  border: none;
@@ -353,8 +356,8 @@ import{__setFunctionName as e,__esDecorate as t,__runInitializers as i,__classPr
353
356
  background: none;
354
357
  padding: 0 8px;
355
358
  margin: 0 2px;
356
- }`;let b=(()=>{var n,b,x,y,_,w,E,z;let O,S,T,C,L,U,$,j,M,W,Y=[d("kyn-header")],F=[],N=r,R=[],q=[],H=[],P=[],A=[],B=[],D=[],G=[],I=[],J=[],K=[],Q=[],V=[],X=[],Z=[],ee=[];return S=class extends N{constructor(){super(...arguments),n.set(this,i(this,R,"/")),b.set(this,(i(this,q),i(this,H,""))),x.set(this,(i(this,P),i(this,A,void 0))),y.set(this,(i(this,B),i(this,D,void 0))),_.set(this,(i(this,G),i(this,I,void 0))),w.set(this,(i(this,J),i(this,K,!1))),E.set(this,(i(this,Q),i(this,V,!1))),z.set(this,(i(this,X),i(this,Z,void 0))),this._debounceScroll=(i(this,ee),v((()=>{this._handleScroll()})))}get rootUrl(){return a(this,n,"f")}set rootUrl(e){o(this,n,e,"f")}get appTitle(){return a(this,b,"f")}set appTitle(e){o(this,b,e,"f")}get navEls(){return a(this,x,"f")}set navEls(e){o(this,x,e,"f")}get assignedElements(){return a(this,y,"f")}set assignedElements(e){o(this,y,e,"f")}get leftEls(){return a(this,_,"f")}set leftEls(e){o(this,_,e,"f")}get _navOpen(){return a(this,w,"f")}set _navOpen(e){o(this,w,e,"f")}get _flyoutsOpen(){return a(this,E,"f")}set _flyoutsOpen(e){o(this,E,e,"f")}get _headerEl(){return a(this,z,"f")}set _headerEl(e){o(this,z,e,"f")}render(){const e={header:!0,"left-slotted":this.leftEls.length,"child-open":this._navOpen||this._flyoutsOpen};return s`
357
- <header class="${p(e)}">
359
+ }`;let b=(()=>{var n,b,x,y,_,w,E,z;let O,S,T,C,L,U,$,j,M,W,F=[d("kyn-header")],N=[],Y=r,R=[],q=[],H=[],P=[],A=[],B=[],D=[],G=[],I=[],J=[],K=[],Q=[],V=[],X=[],Z=[],ee=[];return S=class extends Y{constructor(){super(...arguments),n.set(this,i(this,R,"/")),b.set(this,(i(this,q),i(this,H,""))),x.set(this,(i(this,P),i(this,A,void 0))),y.set(this,(i(this,B),i(this,D,void 0))),_.set(this,(i(this,G),i(this,I,void 0))),w.set(this,(i(this,J),i(this,K,!1))),E.set(this,(i(this,Q),i(this,V,!1))),z.set(this,(i(this,X),i(this,Z,void 0))),this._debounceScroll=(i(this,ee),v((()=>{this._handleScroll()})))}get rootUrl(){return a(this,n,"f")}set rootUrl(e){o(this,n,e,"f")}get appTitle(){return a(this,b,"f")}set appTitle(e){o(this,b,e,"f")}get navEls(){return a(this,x,"f")}set navEls(e){o(this,x,e,"f")}get assignedElements(){return a(this,y,"f")}set assignedElements(e){o(this,y,e,"f")}get leftEls(){return a(this,_,"f")}set leftEls(e){o(this,_,e,"f")}get _navOpen(){return a(this,w,"f")}set _navOpen(e){o(this,w,e,"f")}get _flyoutsOpen(){return a(this,E,"f")}set _flyoutsOpen(e){o(this,E,e,"f")}get _headerEl(){return a(this,z,"f")}set _headerEl(e){o(this,z,e,"f")}render(){const e={header:!0,"left-slotted":this.leftEls.length,"child-open":this._navOpen||this._flyoutsOpen};return s`
360
+ <header class="${g(e)}">
358
361
  <slot name="left" @slotchange=${this.handleSlotChange}></slot>
359
362
 
360
363
  <a
@@ -380,5 +383,5 @@ import{__setFunctionName as e,__esDecorate as t,__runInitializers as i,__classPr
380
383
  </header>
381
384
 
382
385
  <div class="overlay"></div>
383
- `}handleSlotChange(){this.requestUpdate()}handleRootLinkClick(e){const t=new CustomEvent("on-root-link-click",{detail:{origEvent:e}});this.dispatchEvent(t)}_handleNavToggle(e){this._navOpen=e.detail.open}_handleFlyoutsToggle(e){this._flyoutsOpen=e.detail.open||e.detail.childrenOpen}_handleScroll(){window.scrollY>0?this._headerEl.classList.add("scrolled"):this._headerEl.classList.remove("scrolled")}firstUpdated(){this._handleScroll()}connectedCallback(){super.connectedCallback(),document.addEventListener("on-nav-toggle",(e=>this._handleNavToggle(e))),document.addEventListener("on-flyouts-toggle",(e=>this._handleFlyoutsToggle(e))),window.addEventListener("scroll",this._debounceScroll)}disconnectedCallback(){document.removeEventListener("on-nav-toggle",(e=>this._handleNavToggle(e))),document.removeEventListener("on-flyouts-toggle",(e=>this._handleFlyoutsToggle(e))),window.removeEventListener("scroll",this._debounceScroll),super.disconnectedCallback()}},n=new WeakMap,b=new WeakMap,x=new WeakMap,y=new WeakMap,_=new WeakMap,w=new WeakMap,E=new WeakMap,z=new WeakMap,e(S,"Header"),(()=>{var e;const i="function"==typeof Symbol&&Symbol.metadata?Object.create(null!==(e=N[Symbol.metadata])&&void 0!==e?e:null):void 0;T=[c({type:String})],C=[c({type:String})],L=[h({selector:"kyn-header-nav"})],U=[h()],$=[h({slot:"left"})],j=[m()],M=[m()],W=[g("header")],t(S,null,T,{kind:"accessor",name:"rootUrl",static:!1,private:!1,access:{has:e=>"rootUrl"in e,get:e=>e.rootUrl,set:(e,t)=>{e.rootUrl=t}},metadata:i},R,q),t(S,null,C,{kind:"accessor",name:"appTitle",static:!1,private:!1,access:{has:e=>"appTitle"in e,get:e=>e.appTitle,set:(e,t)=>{e.appTitle=t}},metadata:i},H,P),t(S,null,L,{kind:"accessor",name:"navEls",static:!1,private:!1,access:{has:e=>"navEls"in e,get:e=>e.navEls,set:(e,t)=>{e.navEls=t}},metadata:i},A,B),t(S,null,U,{kind:"accessor",name:"assignedElements",static:!1,private:!1,access:{has:e=>"assignedElements"in e,get:e=>e.assignedElements,set:(e,t)=>{e.assignedElements=t}},metadata:i},D,G),t(S,null,$,{kind:"accessor",name:"leftEls",static:!1,private:!1,access:{has:e=>"leftEls"in e,get:e=>e.leftEls,set:(e,t)=>{e.leftEls=t}},metadata:i},I,J),t(S,null,j,{kind:"accessor",name:"_navOpen",static:!1,private:!1,access:{has:e=>"_navOpen"in e,get:e=>e._navOpen,set:(e,t)=>{e._navOpen=t}},metadata:i},K,Q),t(S,null,M,{kind:"accessor",name:"_flyoutsOpen",static:!1,private:!1,access:{has:e=>"_flyoutsOpen"in e,get:e=>e._flyoutsOpen,set:(e,t)=>{e._flyoutsOpen=t}},metadata:i},V,X),t(S,null,W,{kind:"accessor",name:"_headerEl",static:!1,private:!1,access:{has:e=>"_headerEl"in e,get:e=>e._headerEl,set:(e,t)=>{e._headerEl=t}},metadata:i},Z,ee),t(null,O={value:S},Y,{kind:"class",name:S.name,metadata:i},null,F),S=O.value,i&&Object.defineProperty(S,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:i})})(),S.styles=l(f),i(S,F),S})();export{b as Header};
386
+ `}handleSlotChange(){this.requestUpdate()}handleRootLinkClick(e){const t=new CustomEvent("on-root-link-click",{detail:{origEvent:e}});this.dispatchEvent(t)}_handleNavToggle(e){this._navOpen=e.detail.open}_handleFlyoutsToggle(e){this._flyoutsOpen=e.detail.open||e.detail.childrenOpen}_handleScroll(){window.scrollY>0?this._headerEl.classList.add("scrolled"):this._headerEl.classList.remove("scrolled")}firstUpdated(){this._handleScroll()}connectedCallback(){super.connectedCallback(),document.addEventListener("on-nav-toggle",(e=>this._handleNavToggle(e))),document.addEventListener("on-flyouts-toggle",(e=>this._handleFlyoutsToggle(e))),window.addEventListener("scroll",this._debounceScroll)}disconnectedCallback(){document.removeEventListener("on-nav-toggle",(e=>this._handleNavToggle(e))),document.removeEventListener("on-flyouts-toggle",(e=>this._handleFlyoutsToggle(e))),window.removeEventListener("scroll",this._debounceScroll),super.disconnectedCallback()}},n=new WeakMap,b=new WeakMap,x=new WeakMap,y=new WeakMap,_=new WeakMap,w=new WeakMap,E=new WeakMap,z=new WeakMap,e(S,"Header"),(()=>{var e;const i="function"==typeof Symbol&&Symbol.metadata?Object.create(null!==(e=Y[Symbol.metadata])&&void 0!==e?e:null):void 0;T=[c({type:String})],C=[c({type:String})],L=[h({selector:"kyn-header-nav"})],U=[h()],$=[h({slot:"left"})],j=[m()],M=[m()],W=[p("header")],t(S,null,T,{kind:"accessor",name:"rootUrl",static:!1,private:!1,access:{has:e=>"rootUrl"in e,get:e=>e.rootUrl,set:(e,t)=>{e.rootUrl=t}},metadata:i},R,q),t(S,null,C,{kind:"accessor",name:"appTitle",static:!1,private:!1,access:{has:e=>"appTitle"in e,get:e=>e.appTitle,set:(e,t)=>{e.appTitle=t}},metadata:i},H,P),t(S,null,L,{kind:"accessor",name:"navEls",static:!1,private:!1,access:{has:e=>"navEls"in e,get:e=>e.navEls,set:(e,t)=>{e.navEls=t}},metadata:i},A,B),t(S,null,U,{kind:"accessor",name:"assignedElements",static:!1,private:!1,access:{has:e=>"assignedElements"in e,get:e=>e.assignedElements,set:(e,t)=>{e.assignedElements=t}},metadata:i},D,G),t(S,null,$,{kind:"accessor",name:"leftEls",static:!1,private:!1,access:{has:e=>"leftEls"in e,get:e=>e.leftEls,set:(e,t)=>{e.leftEls=t}},metadata:i},I,J),t(S,null,j,{kind:"accessor",name:"_navOpen",static:!1,private:!1,access:{has:e=>"_navOpen"in e,get:e=>e._navOpen,set:(e,t)=>{e._navOpen=t}},metadata:i},K,Q),t(S,null,M,{kind:"accessor",name:"_flyoutsOpen",static:!1,private:!1,access:{has:e=>"_flyoutsOpen"in e,get:e=>e._flyoutsOpen,set:(e,t)=>{e._flyoutsOpen=t}},metadata:i},V,X),t(S,null,W,{kind:"accessor",name:"_headerEl",static:!1,private:!1,access:{has:e=>"_headerEl"in e,get:e=>e._headerEl,set:(e,t)=>{e._headerEl=t}},metadata:i},Z,ee),t(null,O={value:S},F,{kind:"class",name:S.name,metadata:i},null,N),S=O.value,i&&Object.defineProperty(S,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:i})})(),S.styles=l(f),i(S,N),S})();export{b as Header};
384
387
  //# sourceMappingURL=header.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"header.js","sources":["../../../../src/components/global/header/header.ts"],"sourcesContent":["import { LitElement, html, unsafeCSS } from 'lit';\nimport {\n customElement,\n property,\n state,\n query,\n queryAssignedElements,\n} from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { unsafeHTML } from 'lit-html/directives/unsafe-html.js';\nimport { debounce } from '../../../common/helpers/helpers';\nimport HeaderScss from './header.scss?inline';\nimport logo from '@kyndryl-design-system/shidoka-foundation/assets/svg/kyndryl-logo.svg';\n\n/**\n * The global Header component.\n * @fires on-menu-toggle - Captures the menu toggle click event and emits the menu open state in the detail. `detail:{ origEvent: Event}`\n * @fires on-root-link-click - Captures the logo link click event and emits the original event details. `detail:{ origEvent: Event}`\n * @slot unnamed - The default slot for all empty space right of the logo/title.\n * @slot logo - Slot for the logo, will overwrite the default logo.\n * @slot left - Slot left of the logo, intended for the header nav.\n * @slot center - Slot between logo/title and right flyouts.\n */\n@customElement('kyn-header')\nexport class Header extends LitElement {\n static override styles = unsafeCSS(HeaderScss);\n\n /** URL for the header logo link. Should target the application home page. */\n @property({ type: String })\n accessor rootUrl = '/';\n\n /** App title text next to logo. Hidden on smaller screens. */\n @property({ type: String })\n accessor appTitle = '';\n\n /** Queries for slotted header-nav.\n * @internal\n */\n @queryAssignedElements({ selector: 'kyn-header-nav' })\n accessor navEls!: any;\n\n /** Queries for all slotted elements.\n * @internal\n */\n @queryAssignedElements()\n accessor assignedElements!: any;\n\n /** Queries for elements in left slot.\n * @internal\n */\n @queryAssignedElements({ slot: 'left' })\n accessor leftEls!: any;\n\n /** header-nav open state\n * @internal\n */\n @state()\n accessor _navOpen = false;\n\n /** header-flyouts open state\n * @internal\n */\n @state()\n accessor _flyoutsOpen = false;\n\n /** @internal */\n @query('header')\n accessor _headerEl!: HTMLElement;\n\n override render() {\n const classes = {\n header: true,\n 'left-slotted': this.leftEls.length,\n 'child-open': this._navOpen || this._flyoutsOpen,\n };\n\n return html`\n <header class=\"${classMap(classes)}\">\n <slot name=\"left\" @slotchange=${this.handleSlotChange}></slot>\n\n <a\n href=\"${this.rootUrl}\"\n class=\"logo-link interactive\"\n aria-label=\"${this.rootUrl}\"\n @click=\"${(e: Event) => this.handleRootLinkClick(e)}\"\n >\n <slot name=\"logo\" @slotchange=${this.handleSlotChange}>\n ${unsafeHTML(logo)}\n </slot>\n </a>\n\n <span class=\"title\">${this.appTitle}</span>\n\n <slot name=\"center\"></slot>\n\n <div class=\"header__right\">\n <slot @slotchange=${this.handleSlotChange}></slot>\n </div>\n\n <div class=\"background\"></div>\n </header>\n\n <div class=\"overlay\"></div>\n `;\n }\n\n private handleSlotChange() {\n this.requestUpdate();\n }\n\n private handleRootLinkClick(e: Event) {\n const event = new CustomEvent('on-root-link-click', {\n detail: { origEvent: e },\n });\n this.dispatchEvent(event);\n }\n\n private _handleNavToggle(e: any) {\n this._navOpen = e.detail.open;\n }\n\n private _handleFlyoutsToggle(e: any) {\n this._flyoutsOpen = e.detail.open || e.detail.childrenOpen;\n }\n\n /** Morph header on scroll.\n * @internal */\n private _handleScroll() {\n if (window.scrollY > 0) {\n this._headerEl.classList.add('scrolled');\n } else {\n this._headerEl.classList.remove('scrolled');\n }\n }\n\n /** @internal */\n private _debounceScroll = debounce(() => {\n this._handleScroll();\n });\n\n override firstUpdated() {\n this._handleScroll();\n }\n\n override connectedCallback() {\n super.connectedCallback();\n\n document.addEventListener('on-nav-toggle', (e: Event) =>\n this._handleNavToggle(e)\n );\n document.addEventListener('on-flyouts-toggle', (e: Event) =>\n this._handleFlyoutsToggle(e)\n );\n\n window.addEventListener('scroll', this._debounceScroll);\n }\n\n override disconnectedCallback() {\n document.removeEventListener('on-nav-toggle', (e: Event) =>\n this._handleNavToggle(e)\n );\n document.removeEventListener('on-flyouts-toggle', (e: Event) =>\n this._handleFlyoutsToggle(e)\n );\n\n window.removeEventListener('scroll', this._debounceScroll);\n\n super.disconnectedCallback();\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kyn-header': Header;\n }\n}\n"],"names":["Header","customElement","LitElement","_classThis","_classSuper","_Header_rootUrl_accessor_storage","set","this","__runInitializers","_rootUrl_initializers","_Header_appTitle_accessor_storage","_rootUrl_extraInitializers","_appTitle_initializers","_Header_navEls_accessor_storage","_appTitle_extraInitializers","_navEls_initializers","_Header_assignedElements_accessor_storage","_navEls_extraInitializers","_assignedElements_initializers","_Header_leftEls_accessor_storage","_assignedElements_extraInitializers","_leftEls_initializers","_Header__navOpen_accessor_storage","_leftEls_extraInitializers","__navOpen_initializers","_Header__flyoutsOpen_accessor_storage","__navOpen_extraInitializers","__flyoutsOpen_initializers","_Header__headerEl_accessor_storage","__flyoutsOpen_extraInitializers","__headerEl_initializers","_debounceScroll","__headerEl_extraInitializers","debounce","_handleScroll","rootUrl","__classPrivateFieldGet","value","__classPrivateFieldSet","appTitle","navEls","assignedElements","leftEls","_navOpen","_flyoutsOpen","_headerEl","render","classes","header","length","html","classMap","handleSlotChange","e","handleRootLinkClick","unsafeHTML","logo","requestUpdate","event","CustomEvent","detail","origEvent","dispatchEvent","_handleNavToggle","open","_handleFlyoutsToggle","childrenOpen","window","scrollY","classList","add","remove","firstUpdated","connectedCallback","super","document","addEventListener","disconnectedCallback","removeEventListener","_rootUrl_decorators","property","type","String","_appTitle_decorators","_navEls_decorators","queryAssignedElements","selector","_assignedElements_decorators","_leftEls_decorators","slot","__navOpen_decorators","state","__flyoutsOpen_decorators","query","__esDecorate","kind","name","static","private","access","has","obj","get","metadata","_metadata","__headerEl_decorators","_classDescriptor","_classDecorators","_classExtraInitializers","styles","unsafeCSS","HeaderScss"],"mappings":"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"}
1
+ {"version":3,"file":"header.js","sources":["../../../../src/components/global/header/header.ts"],"sourcesContent":["import { LitElement, html, unsafeCSS } from 'lit';\nimport {\n customElement,\n property,\n state,\n query,\n queryAssignedElements,\n} from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { unsafeHTML } from 'lit-html/directives/unsafe-html.js';\nimport { debounce } from '../../../common/helpers/helpers';\nimport HeaderScss from './header.scss?inline';\nimport logo from '@kyndryl-design-system/shidoka-foundation/assets/svg/kyndryl-logo.svg';\n\n/**\n * The global Header component.\n * @fires on-menu-toggle - Captures the menu toggle click event and emits the menu open state in the detail. `detail:{ origEvent: Event}`\n * @fires on-root-link-click - Captures the logo link click event and emits the original event details. `detail:{ origEvent: Event}`\n * @slot unnamed - The default slot for all empty space right of the logo/title.\n * @slot logo - Slot for the logo, will overwrite the default logo.\n * @slot left - Slot left of the logo, intended for the header nav.\n * @slot center - Slot between logo/title and right flyouts.\n */\n@customElement('kyn-header')\nexport class Header extends LitElement {\n static override styles = unsafeCSS(HeaderScss);\n\n /** URL for the header logo link. Should target the application home page. */\n @property({ type: String })\n accessor rootUrl = '/';\n\n /** App title text next to logo. Hidden on smaller screens. */\n @property({ type: String })\n accessor appTitle = '';\n\n /** Queries for slotted header-nav.\n * @internal\n */\n @queryAssignedElements({ selector: 'kyn-header-nav' })\n accessor navEls!: any;\n\n /** Queries for all slotted elements.\n * @internal\n */\n @queryAssignedElements()\n accessor assignedElements!: any;\n\n /** Queries for elements in left slot.\n * @internal\n */\n @queryAssignedElements({ slot: 'left' })\n accessor leftEls!: any;\n\n /** header-nav open state\n * @internal\n */\n @state()\n accessor _navOpen = false;\n\n /** header-flyouts open state\n * @internal\n */\n @state()\n accessor _flyoutsOpen = false;\n\n /** @internal */\n @query('header')\n accessor _headerEl!: HTMLElement;\n\n override render() {\n const classes = {\n header: true,\n 'left-slotted': this.leftEls.length,\n 'child-open': this._navOpen || this._flyoutsOpen,\n };\n\n return html`\n <header class=\"${classMap(classes)}\">\n <slot name=\"left\" @slotchange=${this.handleSlotChange}></slot>\n\n <a\n href=\"${this.rootUrl}\"\n class=\"logo-link interactive\"\n aria-label=\"${this.rootUrl}\"\n @click=\"${(e: Event) => this.handleRootLinkClick(e)}\"\n >\n <slot name=\"logo\" @slotchange=${this.handleSlotChange}>\n ${unsafeHTML(logo)}\n </slot>\n </a>\n\n <span class=\"title\">${this.appTitle}</span>\n\n <slot name=\"center\"></slot>\n\n <div class=\"header__right\">\n <slot @slotchange=${this.handleSlotChange}></slot>\n </div>\n\n <div class=\"background\"></div>\n </header>\n\n <div class=\"overlay\"></div>\n `;\n }\n\n private handleSlotChange() {\n this.requestUpdate();\n }\n\n private handleRootLinkClick(e: Event) {\n const event = new CustomEvent('on-root-link-click', {\n detail: { origEvent: e },\n });\n this.dispatchEvent(event);\n }\n\n private _handleNavToggle(e: any) {\n this._navOpen = e.detail.open;\n }\n\n private _handleFlyoutsToggle(e: any) {\n this._flyoutsOpen = e.detail.open || e.detail.childrenOpen;\n }\n\n /** Morph header on scroll.\n * @internal */\n private _handleScroll() {\n if (window.scrollY > 0) {\n this._headerEl.classList.add('scrolled');\n } else {\n this._headerEl.classList.remove('scrolled');\n }\n }\n\n /** @internal */\n private _debounceScroll = debounce(() => {\n this._handleScroll();\n });\n\n override firstUpdated() {\n this._handleScroll();\n }\n\n override connectedCallback() {\n super.connectedCallback();\n\n document.addEventListener('on-nav-toggle', (e: Event) =>\n this._handleNavToggle(e)\n );\n document.addEventListener('on-flyouts-toggle', (e: Event) =>\n this._handleFlyoutsToggle(e)\n );\n\n window.addEventListener('scroll', this._debounceScroll);\n }\n\n override disconnectedCallback() {\n document.removeEventListener('on-nav-toggle', (e: Event) =>\n this._handleNavToggle(e)\n );\n document.removeEventListener('on-flyouts-toggle', (e: Event) =>\n this._handleFlyoutsToggle(e)\n );\n\n window.removeEventListener('scroll', this._debounceScroll);\n\n super.disconnectedCallback();\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kyn-header': Header;\n }\n}\n"],"names":["Header","customElement","LitElement","_classThis","_classSuper","_Header_rootUrl_accessor_storage","set","this","__runInitializers","_rootUrl_initializers","_Header_appTitle_accessor_storage","_rootUrl_extraInitializers","_appTitle_initializers","_Header_navEls_accessor_storage","_appTitle_extraInitializers","_navEls_initializers","_Header_assignedElements_accessor_storage","_navEls_extraInitializers","_assignedElements_initializers","_Header_leftEls_accessor_storage","_assignedElements_extraInitializers","_leftEls_initializers","_Header__navOpen_accessor_storage","_leftEls_extraInitializers","__navOpen_initializers","_Header__flyoutsOpen_accessor_storage","__navOpen_extraInitializers","__flyoutsOpen_initializers","_Header__headerEl_accessor_storage","__flyoutsOpen_extraInitializers","__headerEl_initializers","_debounceScroll","__headerEl_extraInitializers","debounce","_handleScroll","rootUrl","__classPrivateFieldGet","value","__classPrivateFieldSet","appTitle","navEls","assignedElements","leftEls","_navOpen","_flyoutsOpen","_headerEl","render","classes","header","length","html","classMap","handleSlotChange","e","handleRootLinkClick","unsafeHTML","logo","requestUpdate","event","CustomEvent","detail","origEvent","dispatchEvent","_handleNavToggle","open","_handleFlyoutsToggle","childrenOpen","window","scrollY","classList","add","remove","firstUpdated","connectedCallback","super","document","addEventListener","disconnectedCallback","removeEventListener","_rootUrl_decorators","property","type","String","_appTitle_decorators","_navEls_decorators","queryAssignedElements","selector","_assignedElements_decorators","_leftEls_decorators","slot","__navOpen_decorators","state","__flyoutsOpen_decorators","query","__esDecorate","kind","name","static","private","access","has","obj","get","metadata","_metadata","__headerEl_decorators","_classDescriptor","_classDecorators","_classExtraInitializers","styles","unsafeCSS","HeaderScss"],"mappings":"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"}
@@ -0,0 +1,150 @@
1
+ import { LitElement, type PropertyValueMap } from 'lit';
2
+ import './headerCategory';
3
+ import '../../reusable/button/button';
4
+ import './headerLink';
5
+ declare const _defaultTextStrings: {
6
+ back: string;
7
+ more: string;
8
+ };
9
+ type HeaderTextStrings = typeof _defaultTextStrings;
10
+ export interface HeaderCategoryLinkType {
11
+ id: string;
12
+ label: string;
13
+ href?: string;
14
+ target?: '_blank' | '_self' | '_parent' | '_top';
15
+ rel?: string;
16
+ }
17
+ export interface HeaderCategoryType {
18
+ id: string;
19
+ heading: string;
20
+ links: HeaderCategoryLinkType[];
21
+ }
22
+ export interface HeaderLinkRendererContext {
23
+ tabId: string;
24
+ categoryId: string;
25
+ view: 'root' | 'detail';
26
+ }
27
+ export type HeaderMegaLinkRenderer = (link: HeaderCategoryLinkType, context?: HeaderLinkRendererContext) => string | null;
28
+ export interface MegaTabConfig {
29
+ categories: HeaderCategoryType[];
30
+ }
31
+ export interface MegaTabsConfig {
32
+ [tabId: string]: MegaTabConfig;
33
+ }
34
+ export interface HeaderMegaChangeDetail {
35
+ activeMegaTabId: string;
36
+ activeMegaCategoryId: string | null;
37
+ }
38
+ type HeaderView = 'root' | 'detail';
39
+ interface SlottedLinkData {
40
+ href: string;
41
+ inner: string;
42
+ target?: string;
43
+ rel?: string;
44
+ }
45
+ interface SlottedCategoryData {
46
+ id: string;
47
+ heading: string;
48
+ links: SlottedLinkData[];
49
+ }
50
+ /**
51
+ * Header categories wrapper for mega menu.
52
+ *
53
+ * @slot unnamed - Slot for header category elements.
54
+ *
55
+ * Controlled via `activeMegaTabId` / `activeMegaCategoryId` but encapsulates
56
+ * all categorical/mega-nav view behavior (root/detail, "More", "Back").
57
+ *
58
+ * Emits `on-nav-change` so parents can mirror state for tabs, routing, etc.
59
+ *
60
+ * Modes:
61
+ * - JSON mode
62
+ * - Provide `tabsConfig` and categories/links are rendered from config.
63
+ * - Each link may specify `href`, `target`, and `rel`.
64
+ * - Optional `linkRenderer` hook can be supplied to fully control the
65
+ * slotted content inside each `<kyn-header-link>`.
66
+ *
67
+ * - Slotted/manual mode
68
+ * - Omit `tabsConfig` and slot `<kyn-header-category>` / `<kyn-header-link>`
69
+ * elements directly in the light DOM.
70
+ * - Slotted `<kyn-header-link>` `href`, `target`, and `rel` attributes are
71
+ * preserved.
72
+ * - Root view will:
73
+ * - truncate visible links per category at `maxRootLinks`
74
+ * - inject a "More" link when there are additional links
75
+ * - "More" switches to a detail view for that category, and the Back button
76
+ * returns to the root view.
77
+ */
78
+ export declare class HeaderCategories extends LitElement {
79
+ static styles: import("lit").CSSResult;
80
+ /** Configuration object for the mega nav (tab id -> categories/links). */
81
+ accessor tabsConfig: MegaTabsConfig | null;
82
+ /** Currently active tab id. */
83
+ accessor activeMegaTabId: string;
84
+ /** Currently active category id in detail view, or null for root view (controlled). */
85
+ accessor activeMegaCategoryId: string | null;
86
+ /** Max number of links to render in root columns before showing "More". */
87
+ accessor maxRootLinks: number;
88
+ /**
89
+ * Optional text overrides, merged with defaults.
90
+ * e.g. <kyn-header-categories .textStrings=${{ more: 'More items' }}>
91
+ */
92
+ accessor textStrings: Partial<HeaderTextStrings> | null;
93
+ /** Resolved text strings (defaults + overrides). */
94
+ accessor _textStrings: HeaderTextStrings;
95
+ /** Number of links per column in the detail view (JSON mode only). */
96
+ accessor detailLinksPerColumn: number;
97
+ /**
98
+ * Current visual view for styling ('root' | 'detail').
99
+ * Derived from `activeMegaCategoryId` but reflected for CSS hooks.
100
+ */
101
+ accessor view: HeaderView;
102
+ /**
103
+ * Optional hook to render the entire link content slotted into <kyn-header-link>.
104
+ *
105
+ * IMPORTANT:
106
+ * - This must return an HTML string or null.
107
+ * - The string is rendered via unsafeHTML; consumers are responsible for sanitizing
108
+ * any dynamic content they inject here.
109
+ *
110
+ * This API is intentionally framework-agnostic: React, Vue, Angular, etc. can all
111
+ * build a string and pass it in.
112
+ *
113
+ * If not provided, a simple circle-icon + label placeholder is used.
114
+ */
115
+ accessor linkRenderer: HeaderMegaLinkRenderer | null;
116
+ /** Internal representation of slotted categories */
117
+ accessor _slottedCategories: SlottedCategoryData[];
118
+ private _buildSlottedTimeout?;
119
+ private readonly _boundHandleNavToggle;
120
+ private get _isJsonMode();
121
+ private get _tabConfig();
122
+ private chunkBy;
123
+ private normalizeHeaderLinkTarget;
124
+ private _emitChange;
125
+ setRootView(tabId?: string): void;
126
+ openCategoryDetail(tabId: string, categoryId: string, e?: Event): void;
127
+ handleBackClick(e?: Event): void;
128
+ private _handleNavToggle;
129
+ willUpdate(changed: PropertyValueMap<this>): void;
130
+ updated(changed: PropertyValueMap<this>): void;
131
+ private renderLinkContent;
132
+ private renderCategoryColumn;
133
+ private renderRootView;
134
+ private renderDetailView;
135
+ private _buildSlottedCategories;
136
+ private renderSlottedRoot;
137
+ private computeDetailColumns;
138
+ private renderSlottedDetail;
139
+ private _scheduleBuildSlottedCategories;
140
+ render(): import("lit-html").TemplateResult<1>;
141
+ connectedCallback(): void;
142
+ disconnectedCallback(): void;
143
+ }
144
+ declare global {
145
+ interface HTMLElementTagNameMap {
146
+ 'kyn-header-categories': HeaderCategories;
147
+ }
148
+ }
149
+ export {};
150
+ //# sourceMappingURL=headerCategories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"headerCategories.d.ts","sourceRoot":"","sources":["../../../../src/components/global/header/headerCategories.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,242 @@
1
+ import{__setFunctionName as e,__esDecorate as t,__runInitializers as i,__classPrivateFieldGet as a,__classPrivateFieldSet as n}from"tslib";import{unsafeSVG as s}from"lit-html/directives/unsafe-svg.js";import{unsafeHTML as r}from"lit-html/directives/unsafe-html.js";import{css as o,LitElement as l,unsafeCSS as d,html as h}from"lit";import{customElement as g,property as c,state as u}from"lit/decorators.js";import"./headerCategory.js";import"../../reusable/button/button.js";import"./headerLink.js";import{h as m,i as v}from"../../../vendor/@kyndryl-design-system/shidoka-icons-oqOblwTK.js";import{ifDefined as k}from"lit/directives/if-defined.js";import"lit-html/directives/class-map.js";import"../../../common/helpers/helpers.js";import"../../reusable/button/defs.js";import"lit/directives/class-map.js";import"../../reusable/textInput/textInput.js";import"deepmerge-ts";import"../../../common/mixins/form-input.js";var p=o`*,
2
+ *::before,
3
+ *::after {
4
+ box-sizing: border-box;
5
+ }
6
+
7
+ * {
8
+ -webkit-tap-highlight-color: transparent;
9
+ }
10
+
11
+ :host {
12
+ display: block;
13
+ box-sizing: border-box;
14
+ width: 100%;
15
+ }
16
+
17
+ @media (min-width: 672px) {
18
+ :host {
19
+ padding-right: 10%;
20
+ width: calc(100vw - 230px);
21
+ max-width: calc(100vw - 230px);
22
+ }
23
+ }
24
+ .header-categories {
25
+ width: 100%;
26
+ max-width: 100%;
27
+ box-sizing: border-box;
28
+ }
29
+ .header-categories__inner {
30
+ display: block;
31
+ column-width: 160px;
32
+ column-gap: 32px;
33
+ max-width: 100%;
34
+ box-sizing: border-box;
35
+ }
36
+ .header-categories__back-slot {
37
+ display: block;
38
+ margin-top: 16px;
39
+ }
40
+
41
+ .header-categories__inner > * {
42
+ break-inside: avoid;
43
+ -webkit-column-break-inside: avoid;
44
+ page-break-inside: avoid;
45
+ margin: 0 0 16px;
46
+ }
47
+
48
+ slot.header-categories__slot::slotted(*) {
49
+ display: block;
50
+ break-inside: avoid;
51
+ -webkit-column-break-inside: avoid;
52
+ page-break-inside: avoid;
53
+ margin: 0 0 16px;
54
+ }
55
+
56
+ /* ---------------------------------------------------------------------
57
+ ROOT VIEW (MASONRY)
58
+ ------------------------------------------------------------------ */
59
+ :host(:not([view=detail])) .header-categories__inner {
60
+ column-width: 160px;
61
+ }
62
+
63
+ @media (min-width: 896px) {
64
+ :host(:not([view=detail])) .header-categories__inner {
65
+ column-width: 180px;
66
+ }
67
+ }
68
+ @media (min-width: 1152px) {
69
+ :host(:not([view=detail])) .header-categories__inner {
70
+ column-width: 200px;
71
+ }
72
+ }
73
+ /* ---------------------------------------------------------------------
74
+ DETAIL VIEW
75
+ ------------------------------------------------------------------ */
76
+ :host([view=detail]) {
77
+ overflow-x: auto;
78
+ overflow-y: hidden;
79
+ -webkit-overflow-scrolling: touch;
80
+ }
81
+ :host([view=detail]) .header-categories__inner {
82
+ overflow: auto;
83
+ }
84
+
85
+ :host([view=detail]) .header-detail-columns {
86
+ display: flex;
87
+ align-items: flex-start;
88
+ gap: 0 32px;
89
+ width: max-content;
90
+ box-sizing: border-box;
91
+ }
92
+
93
+ :host([view=detail]) .header-detail-columns > div {
94
+ display: flex;
95
+ flex-direction: column;
96
+ gap: 8px;
97
+ flex: 0 0 200px;
98
+ }
99
+
100
+ :host([view=detail]) .header-detail-columns--single {
101
+ max-width: 360px;
102
+ width: auto;
103
+ }
104
+
105
+ :host([view=detail]) .header-detail-columns kyn-header-link {
106
+ width: 100%;
107
+ min-width: 0;
108
+ }
109
+
110
+ @media (min-width: 42rem) {
111
+ :host([view=detail]) .header-detail-columns > div {
112
+ min-width: 160px;
113
+ }
114
+ }`;const b={back:"Back",more:"More"},y="root",f="detail",w="#";let x=(()=>{var o,x,_,C,$,M,S,T,I,L;let R,D,j,A,W,z,E,H,P,V,B,N,O=[g("kyn-header-categories")],J=[],q=l,U=[],Y=[],F=[],G=[],K=[],Q=[],X=[],Z=[],ee=[],te=[],ie=[],ae=[],ne=[],se=[],re=[],oe=[],le=[],de=[],he=[],ge=[];return D=class extends q{constructor(){super(...arguments),o.set(this,i(this,U,null)),x.set(this,(i(this,Y),i(this,F,""))),_.set(this,(i(this,G),i(this,K,null))),C.set(this,(i(this,Q),i(this,X,4))),$.set(this,(i(this,Z),i(this,ee,null))),M.set(this,(i(this,te),i(this,ie,b))),S.set(this,(i(this,ae),i(this,ne,6))),T.set(this,(i(this,se),i(this,re,y))),I.set(this,(i(this,oe),i(this,le,null))),L.set(this,(i(this,de),i(this,he,[]))),this._buildSlottedTimeout=i(this,ge),this._boundHandleNavToggle=e=>this._handleNavToggle(e)}get tabsConfig(){return a(this,o,"f")}set tabsConfig(e){n(this,o,e,"f")}get activeMegaTabId(){return a(this,x,"f")}set activeMegaTabId(e){n(this,x,e,"f")}get activeMegaCategoryId(){return a(this,_,"f")}set activeMegaCategoryId(e){n(this,_,e,"f")}get maxRootLinks(){return a(this,C,"f")}set maxRootLinks(e){n(this,C,e,"f")}get textStrings(){return a(this,$,"f")}set textStrings(e){n(this,$,e,"f")}get _textStrings(){return a(this,M,"f")}set _textStrings(e){n(this,M,e,"f")}get detailLinksPerColumn(){return a(this,S,"f")}set detailLinksPerColumn(e){n(this,S,e,"f")}get view(){return a(this,T,"f")}set view(e){n(this,T,e,"f")}get linkRenderer(){return a(this,I,"f")}set linkRenderer(e){n(this,I,e,"f")}get _slottedCategories(){return a(this,L,"f")}set _slottedCategories(e){n(this,L,e,"f")}get _isJsonMode(){return null!=this.tabsConfig}get _tabConfig(){var e;return this.tabsConfig&&null!==(e=this.tabsConfig[this.activeMegaTabId])&&void 0!==e?e:null}chunkBy(e,t){if(!e||t<=0)return[[]];const i=[];for(let a=0;a<e.length;a+=t)i.push(e.slice(a,a+t));return i}normalizeHeaderLinkTarget(e){return"_blank"===e||"_parent"===e||"_top"===e?e:"_self"}_emitChange(){const e={activeMegaTabId:this.activeMegaTabId,activeMegaCategoryId:this.activeMegaCategoryId};this.dispatchEvent(new CustomEvent("on-nav-change",{detail:e,composed:!0,bubbles:!0}))}setRootView(e){this.activeMegaTabId=null!=e?e:this.activeMegaTabId,this.activeMegaCategoryId=null,this.view=y,this._emitChange(),this._isJsonMode||this._buildSlottedCategories()}openCategoryDetail(e,t,i){i&&(i.preventDefault(),i.stopPropagation()),this.activeMegaTabId=e,this.activeMegaCategoryId=t,this.view=f,this._emitChange(),this._isJsonMode||this._buildSlottedCategories()}handleBackClick(e){e&&(e.preventDefault(),e.stopPropagation()),this.setRootView(this.activeMegaTabId),this.updateComplete.then((()=>{const e=Array.from(this.querySelectorAll("kyn-header-link")).find((e=>e.hasAttribute("isactive")));e&&e.focus&&e.focus()}))}_handleNavToggle(e){var t;Boolean(null===(t=e.detail)||void 0===t?void 0:t.open)||this.setRootView(this.activeMegaTabId)}willUpdate(e){var t;e.has("textStrings")&&(this._textStrings={...b,...null!==(t=this.textStrings)&&void 0!==t?t:{}})}updated(e){if(e.has("activeMegaCategoryId")||e.has("activeMegaTabId")){const e=null==this.activeMegaCategoryId?y:f;this.view!==e&&(this.view=e)}}renderLinkContent(e,t){if(this.linkRenderer){const i=this.linkRenderer(e,t);if("string"==typeof i&&i.trim().length>0)return h`${r(i)}`;null!=i&&"string"!=typeof i&&console.warn("[kyn-header-categories] linkRenderer must return a string or null. Received: "+typeof i)}return h`${e.label}`}renderCategoryColumn(e,t){var i;if(!t)return null;const a=null!==(i=t.links)&&void 0!==i?i:[];return h`
115
+ <kyn-header-category heading=${t.heading}>
116
+ ${a.slice(0,this.maxRootLinks).map((i=>{var a;const n=this.normalizeHeaderLinkTarget(i.target);return h`
117
+ <kyn-header-link
118
+ href=${null!==(a=i.href)&&void 0!==a?a:w}
119
+ target=${n}
120
+ rel=${k(i.rel)}
121
+ >
122
+ ${this.renderLinkContent(i,{tabId:e,categoryId:t.id,view:y})}
123
+ </kyn-header-link>
124
+ `}))}
125
+ ${a.length>this.maxRootLinks?h`
126
+ <kyn-header-link
127
+ href=${w}
128
+ @click=${i=>this.openCategoryDetail(e,t.id,i)}
129
+ @keydown=${i=>{"Enter"!==i.key&&" "!==i.key||(i.preventDefault(),this.openCategoryDetail(e,t.id,i))}}
130
+ >
131
+ <span style="margin-right: 8px;">
132
+ ${s(m)}
133
+ </span>
134
+ <span>${this._textStrings.more}</span>
135
+ </kyn-header-link>
136
+ `:null}
137
+ </kyn-header-category>
138
+ `}renderRootView(){var e,t;const i=null!==(t=null===(e=this._tabConfig)||void 0===e?void 0:e.categories)&&void 0!==t?t:[];return h`${i.map((e=>this.renderCategoryColumn(this.activeMegaTabId,e)))}`}renderDetailView(){var e,t,i;const a=null!==(t=null===(e=this._tabConfig)||void 0===e?void 0:e.categories)&&void 0!==t?t:[],n=null!==(i=a.find((e=>e.id===this.activeMegaCategoryId)))&&void 0!==i?i:a[0];if(!n)return null;const s=this.computeDetailColumns(n.links),r=1===s.length;return h`
139
+ <kyn-header-category
140
+ heading=${`${n.heading} – ${this._textStrings.more}`}
141
+ >
142
+ <div
143
+ id=${`detail-${n.id}`}
144
+ class="header-detail-columns ${r?"header-detail-columns--single":""}"
145
+ role="region"
146
+ aria-label=${`${n.heading} – ${this._textStrings.more}`}
147
+ >
148
+ ${s.map((e=>h`
149
+ <div>
150
+ ${e.map((e=>{var t;const i=this.normalizeHeaderLinkTarget(e.target);return h`
151
+ <kyn-header-link
152
+ href=${null!==(t=e.href)&&void 0!==t?t:w}
153
+ target=${i}
154
+ rel=${k(e.rel)}
155
+ >
156
+ ${this.renderLinkContent(e,{tabId:this.activeMegaTabId,categoryId:n.id,view:f})}
157
+ </kyn-header-link>
158
+ `}))}
159
+ </div>
160
+ `))}
161
+ </div>
162
+ </kyn-header-category>
163
+ `}_buildSlottedCategories(){if(this._isJsonMode)return;const e=Array.from(this.querySelectorAll("kyn-header-category"));if(!e.length)return void(this._slottedCategories=[]);const t=e.map(((e,t)=>{var i,a;const n=null!==(i=e.getAttribute("id"))&&void 0!==i?i:`category-${t+1}`,s=null!==(a=e.getAttribute("heading"))&&void 0!==a?a:"",r=Array.from(e.querySelectorAll("kyn-header-link")).filter((t=>t.parentElement===e)).filter((e=>"true"!==e.dataset.kynMoreLink)).map((e=>{var t,i,a;return{href:null!==(t=e.getAttribute("href"))&&void 0!==t?t:w,target:null!==(i=e.getAttribute("target"))&&void 0!==i?i:void 0,rel:null!==(a=e.getAttribute("rel"))&&void 0!==a?a:void 0,inner:e.innerHTML}}));return{id:n,heading:s,links:r}}));this._slottedCategories=t}renderSlottedRoot(){const e=this._slottedCategories;return e.length?h`${e.map((e=>h`
164
+ <kyn-header-category heading=${e.heading}>
165
+ ${e.links.slice(0,this.maxRootLinks).map((e=>{const t=this.normalizeHeaderLinkTarget(e.target);return h`
166
+ <kyn-header-link
167
+ href=${e.href}
168
+ target=${t}
169
+ rel=${k(e.rel)}
170
+ >
171
+ ${r(e.inner)}
172
+ </kyn-header-link>
173
+ `}))}
174
+ ${e.links.length>this.maxRootLinks?h`
175
+ <kyn-header-link
176
+ href=${w}
177
+ @click=${t=>this.openCategoryDetail(this.activeMegaTabId,e.id,t)}
178
+ @keydown=${t=>{"Enter"!==t.key&&" "!==t.key||(t.preventDefault(),this.openCategoryDetail(this.activeMegaTabId,e.id,t))}}
179
+ >
180
+ <span style="margin-right: 8px;">
181
+ ${s(m)}
182
+ </span>
183
+ <span>${this._textStrings.more}</span>
184
+ </kyn-header-link>
185
+ `:null}
186
+ </kyn-header-category>
187
+ `))}`:null}computeDetailColumns(e){const t=null!=e?e:[];if(!t.length)return[];const i=Math.max(this.detailLinksPerColumn,1),a=Math.ceil(t.length/i),n=Math.min(4,Math.max(1,a)),s=Math.ceil(t.length/n);return this.chunkBy(t,s)}renderSlottedDetail(){var e;const t=this._slottedCategories;if(!t.length)return null;const i=null!==(e=t.find((e=>e.id===this.activeMegaCategoryId)))&&void 0!==e?e:t[0];if(!i)return null;const a=this.computeDetailColumns(i.links),n=1===a.length;return h`
188
+ <kyn-header-category
189
+ heading=${`${i.heading} – ${this._textStrings.more}`}
190
+ >
191
+ <div
192
+ id=${`detail-${i.id}`}
193
+ class="header-detail-columns ${n?"header-detail-columns--single":""}"
194
+ role="region"
195
+ aria-label=${`${i.heading} – ${this._textStrings.more}`}
196
+ >
197
+ ${a.map((e=>h`
198
+ <div>
199
+ ${e.map((e=>{const t=this.normalizeHeaderLinkTarget(e.target);return h`
200
+ <kyn-header-link
201
+ href=${e.href}
202
+ target=${t}
203
+ rel=${k(e.rel)}
204
+ >
205
+ ${r(e.inner)}
206
+ </kyn-header-link>
207
+ `}))}
208
+ </div>
209
+ `))}
210
+ </div>
211
+ </kyn-header-category>
212
+ `}_scheduleBuildSlottedCategories(){"undefined"!=typeof window?(this._buildSlottedTimeout&&window.clearTimeout(this._buildSlottedTimeout),this._buildSlottedTimeout=window.setTimeout((()=>{this._buildSlottedCategories(),this._buildSlottedTimeout=void 0}),40)):this._buildSlottedCategories()}render(){const e=this.view,t=this._isJsonMode?e===y?this.renderRootView():this.renderDetailView():e===y?this.renderSlottedRoot():this.renderSlottedDetail();return h`
213
+ <div class="header-categories" data-view=${e}>
214
+ <div class="header-categories__inner">${null!=t?t:h``}</div>
215
+
216
+ <!-- hidden slot used only to observe light DOM changes (edge case) -->
217
+ <slot
218
+ class="header-categories__slot"
219
+ style="display: none;"
220
+ @slotchange=${()=>this._scheduleBuildSlottedCategories()}
221
+ ></slot>
222
+
223
+ ${e===f?h`
224
+ <div class="header-categories__back-slot">
225
+ <kyn-button
226
+ size="small"
227
+ kind="tertiary"
228
+ @click=${e=>this.handleBackClick(e)}
229
+ style="display: inline-flex; align-items: center;"
230
+ >
231
+ <span
232
+ style="display: inline-flex; align-items: center; margin-right: 8px;"
233
+ >
234
+ ${s(v)}
235
+ </span>
236
+ ${this._textStrings.back}
237
+ </kyn-button>
238
+ </div>
239
+ `:null}
240
+ </div>
241
+ `}connectedCallback(){var e;super.connectedCallback(),null===(e=this.ownerDocument)||void 0===e||e.addEventListener("on-nav-toggle",this._boundHandleNavToggle),this._buildSlottedCategories()}disconnectedCallback(){var e;null===(e=this.ownerDocument)||void 0===e||e.removeEventListener("on-nav-toggle",this._boundHandleNavToggle),this._buildSlottedTimeout&&(window.clearTimeout(this._buildSlottedTimeout),this._buildSlottedTimeout=void 0),super.disconnectedCallback()}},o=new WeakMap,x=new WeakMap,_=new WeakMap,C=new WeakMap,$=new WeakMap,M=new WeakMap,S=new WeakMap,T=new WeakMap,I=new WeakMap,L=new WeakMap,e(D,"HeaderCategories"),(()=>{var e;const i="function"==typeof Symbol&&Symbol.metadata?Object.create(null!==(e=q[Symbol.metadata])&&void 0!==e?e:null):void 0;j=[c({attribute:!1})],A=[c({type:String})],W=[c({type:String})],z=[c({type:Number})],E=[c({type:Object})],H=[u()],P=[c({type:Number})],V=[c({type:String,reflect:!0})],B=[c({attribute:!1})],N=[u()],t(D,null,j,{kind:"accessor",name:"tabsConfig",static:!1,private:!1,access:{has:e=>"tabsConfig"in e,get:e=>e.tabsConfig,set:(e,t)=>{e.tabsConfig=t}},metadata:i},U,Y),t(D,null,A,{kind:"accessor",name:"activeMegaTabId",static:!1,private:!1,access:{has:e=>"activeMegaTabId"in e,get:e=>e.activeMegaTabId,set:(e,t)=>{e.activeMegaTabId=t}},metadata:i},F,G),t(D,null,W,{kind:"accessor",name:"activeMegaCategoryId",static:!1,private:!1,access:{has:e=>"activeMegaCategoryId"in e,get:e=>e.activeMegaCategoryId,set:(e,t)=>{e.activeMegaCategoryId=t}},metadata:i},K,Q),t(D,null,z,{kind:"accessor",name:"maxRootLinks",static:!1,private:!1,access:{has:e=>"maxRootLinks"in e,get:e=>e.maxRootLinks,set:(e,t)=>{e.maxRootLinks=t}},metadata:i},X,Z),t(D,null,E,{kind:"accessor",name:"textStrings",static:!1,private:!1,access:{has:e=>"textStrings"in e,get:e=>e.textStrings,set:(e,t)=>{e.textStrings=t}},metadata:i},ee,te),t(D,null,H,{kind:"accessor",name:"_textStrings",static:!1,private:!1,access:{has:e=>"_textStrings"in e,get:e=>e._textStrings,set:(e,t)=>{e._textStrings=t}},metadata:i},ie,ae),t(D,null,P,{kind:"accessor",name:"detailLinksPerColumn",static:!1,private:!1,access:{has:e=>"detailLinksPerColumn"in e,get:e=>e.detailLinksPerColumn,set:(e,t)=>{e.detailLinksPerColumn=t}},metadata:i},ne,se),t(D,null,V,{kind:"accessor",name:"view",static:!1,private:!1,access:{has:e=>"view"in e,get:e=>e.view,set:(e,t)=>{e.view=t}},metadata:i},re,oe),t(D,null,B,{kind:"accessor",name:"linkRenderer",static:!1,private:!1,access:{has:e=>"linkRenderer"in e,get:e=>e.linkRenderer,set:(e,t)=>{e.linkRenderer=t}},metadata:i},le,de),t(D,null,N,{kind:"accessor",name:"_slottedCategories",static:!1,private:!1,access:{has:e=>"_slottedCategories"in e,get:e=>e._slottedCategories,set:(e,t)=>{e._slottedCategories=t}},metadata:i},he,ge),t(null,R={value:D},O,{kind:"class",name:D.name,metadata:i},null,J),D=R.value,i&&Object.defineProperty(D,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:i})})(),D.styles=d(p),i(D,J),D})();export{x as HeaderCategories};
242
+ //# sourceMappingURL=headerCategories.js.map