@kyndryl-design-system/shidoka-applications 2.98.1 → 2.98.2

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.
@@ -183,9 +183,12 @@ export declare class HeaderCategories extends LitElement {
183
183
  /** Resolve max root links. Disabling limiting, or using non-positive values, means "no limit". */
184
184
  private get _rootLinksLimit();
185
185
  private _sanitizeSlotKey;
186
+ private _resolveCategoryId;
186
187
  private _getRootSlotName;
187
188
  private _getDetailSlotName;
188
189
  private _getActiveSlottedCategory;
190
+ private _findSlottedCategoryFromEvent;
191
+ private _resolveSlottedMoreCategoryId;
189
192
  private _syncSlottedCategoryPresentation;
190
193
  private _resetSlottedCategoryPresentation;
191
194
  private _handleSlottedMoreClick;
@@ -1 +1 @@
1
- {"version":3,"file":"headerCategories.d.ts","sourceRoot":"","sources":["../../../../src/components/global/header/headerCategories.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"headerCategories.d.ts","sourceRoot":"","sources":["../../../../src/components/global/header/headerCategories.ts"],"names":[],"mappings":"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"}
@@ -417,7 +417,7 @@ slot.header-categories__projected::slotted(*) {
417
417
  :host([view=detail]) .header-detail-columns > div {
418
418
  min-width: 160px;
419
419
  }
420
- }`;const f={back:"Back",more:"More"},k="root",b="detail";let x=(()=>{var r,x,C,S,M,I,$,R,A,L,D,T,N,E,P,W;let j,z,O,V,B,F,H,Y,q,J,U,K,G,Z,Q,X,tt,et,it=[c("kyn-header-categories")],at=[],ot=d,st=[],nt=[],rt=[],dt=[],lt=[],ht=[],ct=[],ut=[],gt=[],mt=[],yt=[],vt=[],pt=[],wt=[],_t=[],ft=[],kt=[],bt=[],xt=[],Ct=[],St=[],Mt=[],It=[],$t=[],Rt=[],At=[],Lt=[],Dt=[],Tt=[],Nt=[],Et=[],Pt=[];return z=class extends ot{constructor(){super(...arguments),r.set(this,i(this,st,null)),x.set(this,(i(this,nt),i(this,rt,""))),C.set(this,(i(this,dt),i(this,lt,null))),S.set(this,(i(this,ht),i(this,ct,4))),M.set(this,(i(this,ut),i(this,gt,!0))),I.set(this,(i(this,mt),i(this,yt,""))),$.set(this,(i(this,vt),i(this,pt,3))),R.set(this,(i(this,wt),i(this,_t,!1))),A.set(this,(i(this,ft),i(this,kt,!1))),L.set(this,(i(this,bt),i(this,xt,!1))),D.set(this,(i(this,Ct),i(this,St,null))),T.set(this,(i(this,Mt),i(this,It,f))),N.set(this,(i(this,$t),i(this,Rt,6))),E.set(this,(i(this,At),i(this,Lt,k))),P.set(this,(i(this,Dt),i(this,Tt,null))),W.set(this,(i(this,Nt),i(this,Et,[]))),this._buildSlottedRaf=i(this,Pt),this._owningNav=null,this._debouncedUpdateDividers=w((t=>{this.view!==k||"grid"!==this.layout&&"masonry"!==this.layout||this._updateDividers()}),100),this._lastEmittedColumnCount=0,this._handleResize=()=>{this._debouncedUpdateDividers(new Event("resize"))},this._boundHandleNavToggle=t=>this._handleNavToggle(t)}get tabsConfig(){return a(this,r,"f")}set tabsConfig(t){o(this,r,t,"f")}get activeMegaTabId(){return a(this,x,"f")}set activeMegaTabId(t){o(this,x,t,"f")}get activeMegaCategoryId(){return a(this,C,"f")}set activeMegaCategoryId(t){o(this,C,t,"f")}get maxRootLinks(){return a(this,S,"f")}set maxRootLinks(t){o(this,S,t,"f")}get limitRootLinks(){return a(this,M,"f")}set limitRootLinks(t){o(this,M,t,"f")}get layout(){return a(this,I,"f")}set layout(t){o(this,I,t,"f")}get maxColumns(){return a(this,$,"f")}set maxColumns(t){o(this,$,t,"f")}get fixedColumnWidths(){return a(this,R,"f")}set fixedColumnWidths(t){o(this,R,t,"f")}get showCategoryIcons(){return a(this,A,"f")}set showCategoryIcons(t){o(this,A,t,"f")}get hideCategoryDividers(){return a(this,L,"f")}set hideCategoryDividers(t){o(this,L,t,"f")}get textStrings(){return a(this,D,"f")}set textStrings(t){o(this,D,t,"f")}get _textStrings(){return a(this,T,"f")}set _textStrings(t){o(this,T,t,"f")}get detailLinksPerColumn(){return a(this,N,"f")}set detailLinksPerColumn(t){o(this,N,t,"f")}get view(){return a(this,E,"f")}set view(t){o(this,E,t,"f")}get linkRenderer(){return a(this,P,"f")}set linkRenderer(t){o(this,P,t,"f")}get _slottedCategories(){return a(this,W,"f")}set _slottedCategories(t){o(this,W,t,"f")}_updateAndEmitColumnCount(){if("grid"!==this.layout&&"masonry"!==this.layout)return;const t=this.closest("kyn-tab-panel");if(t&&!t.hasAttribute("visible"))return;const e=this._getColumnCount();e!==this._lastEmittedColumnCount&&(this._lastEmittedColumnCount=e,this.dispatchEvent(new CustomEvent("on-column-count-change",{detail:{columnCount:e,fixedColumnWidths:this.fixedColumnWidths},composed:!0,bubbles:!0})))}_resolveOwningNav(){var t,e;const i=this.closest("kyn-header-nav");if(i)return i;let a=this.getRootNode();for(;a instanceof ShadowRoot;){const i=null===(e=(t=a.host).closest)||void 0===e?void 0:e.call(t,"kyn-header-nav");if(i)return i;a=a.host.getRootNode()}return null}get _isJsonMode(){return null!=this.tabsConfig}get _tabConfig(){var t;return this.tabsConfig&&null!==(t=this.tabsConfig[this.activeMegaTabId])&&void 0!==t?t:null}chunkBy(t,e){if(!t||e<=0)return[[]];const i=[];for(let a=0;a<t.length;a+=e)i.push(t.slice(a,a+e));return i}normalizeHeaderLinkTarget(t){return"_blank"===t||"_parent"===t||"_top"===t?t:"_self"}get _rootLinksLimit(){return!this.limitRootLinks||this.maxRootLinks<=0?Number.POSITIVE_INFINITY:this.maxRootLinks}_sanitizeSlotKey(t){return t.replace(/[^a-zA-Z0-9_-]/g,"-")}_getRootSlotName(t){return`manual-root-${t.slotKey}`}_getDetailSlotName(t){return`manual-detail-${t.slotKey}`}_getActiveSlottedCategory(){var t;return this._slottedCategories.length?null!==(t=this._slottedCategories.find((t=>t.id===this.activeMegaCategoryId)))&&void 0!==t?t:this._slottedCategories[0]:null}_syncSlottedCategoryPresentation(){if(this._isJsonMode)return;const t=this._getActiveSlottedCategory();this._slottedCategories.forEach((e=>{const{categoryEl:i,heading:a,noAutoDivider:o}=e,s=this.view===b&&(null==t?void 0:t.id)===e.id;i.maxVisibleLinks=this.view===k?this._rootLinksLimit:Number.POSITIVE_INFINITY,i.moreLabel=this._textStrings.more,i.detailView=s,i.detailHeading=s?`${a} – ${this._textStrings.more}`:"",i.detailLinksPerColumn=this.detailLinksPerColumn,i.slot=this.view===k?this._getRootSlotName(e):s?this._getDetailSlotName(e):"manual-hidden",this.view!==k||this.hideCategoryDividers?(i.removeAttribute("showdivider"),i.setAttribute("noautodivider","")):(i.setAttribute("showdivider",""),o?i.setAttribute("noautodivider",""):i.removeAttribute("noautodivider"))}))}_resetSlottedCategoryPresentation(){this._slottedCategories.forEach((({categoryEl:t})=>{t.maxVisibleLinks=Number.POSITIVE_INFINITY,t.detailView=!1,t.detailHeading="",t.removeAttribute("slot")}))}_handleSlottedMoreClick(t){var e;const i=t.detail.categoryId||(null===(e=this._getActiveSlottedCategory())||void 0===e?void 0:e.id)||"";i&&this.openCategoryDetail(this.activeMegaTabId,i,t)}_emitChange(){const t={activeMegaTabId:this.activeMegaTabId,activeMegaCategoryId:this.activeMegaCategoryId,view:this.view};this.dispatchEvent(new CustomEvent("on-nav-change",{detail:t,composed:!0,bubbles:!0}))}setRootView(t){this.activeMegaTabId=null!=t?t:this.activeMegaTabId,this.activeMegaCategoryId=null,this.view=k,this._emitChange(),this._isJsonMode||(this._buildSlottedCategories(),this._syncSlottedCategoryPresentation())}openCategoryDetail(t,e,i){i&&(i.preventDefault(),i.stopPropagation()),this.activeMegaTabId=t,this.activeMegaCategoryId=e,this.view=b,this._emitChange(),this._isJsonMode||(this._buildSlottedCategories(),this._syncSlottedCategoryPresentation())}handleBackClick(t){t&&(t.preventDefault(),t.stopPropagation()),this.setRootView(this.activeMegaTabId),this.updateComplete.then((()=>{const t=Array.from(this.querySelectorAll("kyn-header-link")).find((t=>t.hasAttribute("isactive")));t&&t.focus&&t.focus()}))}_handleNavToggle(t){var e;const i=Boolean(null===(e=t.detail)||void 0===e?void 0:e.open);i?this.view!==k||"grid"!==this.layout&&"masonry"!==this.layout||requestAnimationFrame((()=>{requestAnimationFrame((()=>{this.setAttribute("data-columns",String(this._getColumnCount())),this._updateDividers(),this._updateAndEmitColumnCount()}))})):i||this.setRootView(this.activeMegaTabId)}willUpdate(t){var e;t.has("textStrings")&&(this._textStrings={...f,...null!==(e=this.textStrings)&&void 0!==e?e:{}}),(t.has("activeMegaCategoryId")||t.has("activeMegaTabId"))&&(this.view=null==this.activeMegaCategoryId?k:b),"grid"!==this.layout&&"masonry"!==this.layout||this.setAttribute("data-columns",String(this._getColumnCount())),this._isJsonMode||this._syncSlottedCategoryPresentation()}updated(t){"grid"!==this.layout&&"masonry"!==this.layout||this.view===k&&requestAnimationFrame((()=>{requestAnimationFrame((()=>this._updateDividers()))})),this.view===k&&this._updateAndEmitColumnCount()}renderLinkContent(t,e){if(this.linkRenderer){const i=this.linkRenderer(t,e);if("string"==typeof i&&i.trim().length>0)return h`${n(i)}`;null!=i&&"string"!=typeof i&&console.warn("[kyn-header-categories] linkRenderer must return a string or null. Received: "+typeof i)}return h`${t.label}`}renderCategoryColumn(t,e){var i;if(!e)return null;const a=null!==(i=e.links)&&void 0!==i?i:[],o=this._rootLinksLimit;return h`
420
+ }`;const f={back:"Back",more:"More"},k="root",b="detail";let x=(()=>{var r,x,C,S,M,I,$,R,A,L,T,D,N,E,P,W;let j,z,O,V,B,F,H,Y,q,J,K,U,G,Z,Q,X,tt,et,it=[c("kyn-header-categories")],at=[],ot=d,st=[],nt=[],rt=[],dt=[],lt=[],ht=[],ct=[],ut=[],gt=[],mt=[],yt=[],vt=[],pt=[],wt=[],_t=[],ft=[],kt=[],bt=[],xt=[],Ct=[],St=[],Mt=[],It=[],$t=[],Rt=[],At=[],Lt=[],Tt=[],Dt=[],Nt=[],Et=[],Pt=[];return z=class extends ot{constructor(){super(...arguments),r.set(this,i(this,st,null)),x.set(this,(i(this,nt),i(this,rt,""))),C.set(this,(i(this,dt),i(this,lt,null))),S.set(this,(i(this,ht),i(this,ct,4))),M.set(this,(i(this,ut),i(this,gt,!0))),I.set(this,(i(this,mt),i(this,yt,""))),$.set(this,(i(this,vt),i(this,pt,3))),R.set(this,(i(this,wt),i(this,_t,!1))),A.set(this,(i(this,ft),i(this,kt,!1))),L.set(this,(i(this,bt),i(this,xt,!1))),T.set(this,(i(this,Ct),i(this,St,null))),D.set(this,(i(this,Mt),i(this,It,f))),N.set(this,(i(this,$t),i(this,Rt,6))),E.set(this,(i(this,At),i(this,Lt,k))),P.set(this,(i(this,Tt),i(this,Dt,null))),W.set(this,(i(this,Nt),i(this,Et,[]))),this._buildSlottedRaf=i(this,Pt),this._owningNav=null,this._debouncedUpdateDividers=w((t=>{this.view!==k||"grid"!==this.layout&&"masonry"!==this.layout||this._updateDividers()}),100),this._lastEmittedColumnCount=0,this._handleResize=()=>{this._debouncedUpdateDividers(new Event("resize"))},this._boundHandleNavToggle=t=>this._handleNavToggle(t)}get tabsConfig(){return a(this,r,"f")}set tabsConfig(t){o(this,r,t,"f")}get activeMegaTabId(){return a(this,x,"f")}set activeMegaTabId(t){o(this,x,t,"f")}get activeMegaCategoryId(){return a(this,C,"f")}set activeMegaCategoryId(t){o(this,C,t,"f")}get maxRootLinks(){return a(this,S,"f")}set maxRootLinks(t){o(this,S,t,"f")}get limitRootLinks(){return a(this,M,"f")}set limitRootLinks(t){o(this,M,t,"f")}get layout(){return a(this,I,"f")}set layout(t){o(this,I,t,"f")}get maxColumns(){return a(this,$,"f")}set maxColumns(t){o(this,$,t,"f")}get fixedColumnWidths(){return a(this,R,"f")}set fixedColumnWidths(t){o(this,R,t,"f")}get showCategoryIcons(){return a(this,A,"f")}set showCategoryIcons(t){o(this,A,t,"f")}get hideCategoryDividers(){return a(this,L,"f")}set hideCategoryDividers(t){o(this,L,t,"f")}get textStrings(){return a(this,T,"f")}set textStrings(t){o(this,T,t,"f")}get _textStrings(){return a(this,D,"f")}set _textStrings(t){o(this,D,t,"f")}get detailLinksPerColumn(){return a(this,N,"f")}set detailLinksPerColumn(t){o(this,N,t,"f")}get view(){return a(this,E,"f")}set view(t){o(this,E,t,"f")}get linkRenderer(){return a(this,P,"f")}set linkRenderer(t){o(this,P,t,"f")}get _slottedCategories(){return a(this,W,"f")}set _slottedCategories(t){o(this,W,t,"f")}_updateAndEmitColumnCount(){if("grid"!==this.layout&&"masonry"!==this.layout)return;const t=this.closest("kyn-tab-panel");if(t&&!t.hasAttribute("visible"))return;const e=this._getColumnCount();e!==this._lastEmittedColumnCount&&(this._lastEmittedColumnCount=e,this.dispatchEvent(new CustomEvent("on-column-count-change",{detail:{columnCount:e,fixedColumnWidths:this.fixedColumnWidths},composed:!0,bubbles:!0})))}_resolveOwningNav(){var t,e;const i=this.closest("kyn-header-nav");if(i)return i;let a=this.getRootNode();for(;a instanceof ShadowRoot;){const i=null===(e=(t=a.host).closest)||void 0===e?void 0:e.call(t,"kyn-header-nav");if(i)return i;a=a.host.getRootNode()}return null}get _isJsonMode(){return null!=this.tabsConfig}get _tabConfig(){var t;return this.tabsConfig&&null!==(t=this.tabsConfig[this.activeMegaTabId])&&void 0!==t?t:null}chunkBy(t,e){if(!t||e<=0)return[[]];const i=[];for(let a=0;a<t.length;a+=e)i.push(t.slice(a,a+e));return i}normalizeHeaderLinkTarget(t){return"_blank"===t||"_parent"===t||"_top"===t?t:"_self"}get _rootLinksLimit(){return!this.limitRootLinks||this.maxRootLinks<=0?Number.POSITIVE_INFINITY:this.maxRootLinks}_sanitizeSlotKey(t){return t.replace(/[^a-zA-Z0-9_-]/g,"-")}_resolveCategoryId(t,e){var i;return(null===(i=t.getAttribute("id"))||void 0===i?void 0:i.trim())||`category-${e+1}`}_getRootSlotName(t){return`manual-root-${t.slotKey}`}_getDetailSlotName(t){return`manual-detail-${t.slotKey}`}_getActiveSlottedCategory(){var t;return this._slottedCategories.length?null!==(t=this._slottedCategories.find((t=>t.id===this.activeMegaCategoryId)))&&void 0!==t?t:this._slottedCategories[0]:null}_findSlottedCategoryFromEvent(t){var e;const i=t.composedPath().find((t=>t instanceof HTMLElement&&"KYN-HEADER-CATEGORY"===t.tagName));return i&&null!==(e=this._slottedCategories.find((t=>t.categoryEl===i)))&&void 0!==e?e:null}_resolveSlottedMoreCategoryId(t){var e,i,a;const o=null===(e=t.detail.categoryId)||void 0===e?void 0:e.trim();if(o)return o;const s=this._findSlottedCategoryFromEvent(t);return s?s.id:this.view===b&&null!==(a=null===(i=this.activeMegaCategoryId)||void 0===i?void 0:i.trim())&&void 0!==a?a:""}_syncSlottedCategoryPresentation(){if(this._isJsonMode)return;const t=this._getActiveSlottedCategory();this._slottedCategories.forEach((e=>{const{categoryEl:i,heading:a,noAutoDivider:o}=e,s=this.view===b&&(null==t?void 0:t.id)===e.id;i.maxVisibleLinks=this.view===k?this._rootLinksLimit:Number.POSITIVE_INFINITY,i.categoryId=e.id,i.moreLabel=this._textStrings.more,i.detailView=s,i.detailHeading=s?`${a} – ${this._textStrings.more}`:"",i.detailLinksPerColumn=this.detailLinksPerColumn,i.slot=this.view===k?this._getRootSlotName(e):s?this._getDetailSlotName(e):"manual-hidden",this.view!==k||this.hideCategoryDividers?(i.removeAttribute("showdivider"),i.setAttribute("noautodivider","")):(i.setAttribute("showdivider",""),o?i.setAttribute("noautodivider",""):i.removeAttribute("noautodivider"))}))}_resetSlottedCategoryPresentation(){this._slottedCategories.forEach((({categoryEl:t})=>{t.categoryId="",t.maxVisibleLinks=Number.POSITIVE_INFINITY,t.detailView=!1,t.detailHeading="",t.removeAttribute("slot")}))}_handleSlottedMoreClick(t){const e=this._resolveSlottedMoreCategoryId(t);e&&this.openCategoryDetail(this.activeMegaTabId,e,t)}_emitChange(){const t={activeMegaTabId:this.activeMegaTabId,activeMegaCategoryId:this.activeMegaCategoryId,view:this.view};this.dispatchEvent(new CustomEvent("on-nav-change",{detail:t,composed:!0,bubbles:!0}))}setRootView(t){this.activeMegaTabId=null!=t?t:this.activeMegaTabId,this.activeMegaCategoryId=null,this.view=k,this._emitChange(),this._isJsonMode||(this._buildSlottedCategories(),this._syncSlottedCategoryPresentation())}openCategoryDetail(t,e,i){i&&(i.preventDefault(),i.stopPropagation()),this.activeMegaTabId=t,this.activeMegaCategoryId=e,this.view=b,this._emitChange(),this._isJsonMode||(this._buildSlottedCategories(),this._syncSlottedCategoryPresentation())}handleBackClick(t){t&&(t.preventDefault(),t.stopPropagation()),this.setRootView(this.activeMegaTabId),this.updateComplete.then((()=>{const t=Array.from(this.querySelectorAll("kyn-header-link")).find((t=>t.hasAttribute("isactive")));t&&t.focus&&t.focus()}))}_handleNavToggle(t){var e;const i=Boolean(null===(e=t.detail)||void 0===e?void 0:e.open);i?this.view!==k||"grid"!==this.layout&&"masonry"!==this.layout||requestAnimationFrame((()=>{requestAnimationFrame((()=>{this.setAttribute("data-columns",String(this._getColumnCount())),this._updateDividers(),this._updateAndEmitColumnCount()}))})):i||this.setRootView(this.activeMegaTabId)}willUpdate(t){var e;t.has("textStrings")&&(this._textStrings={...f,...null!==(e=this.textStrings)&&void 0!==e?e:{}}),(t.has("activeMegaCategoryId")||t.has("activeMegaTabId"))&&(this.view=null==this.activeMegaCategoryId?k:b),"grid"!==this.layout&&"masonry"!==this.layout||this.setAttribute("data-columns",String(this._getColumnCount())),this._isJsonMode||this._syncSlottedCategoryPresentation()}updated(t){"grid"!==this.layout&&"masonry"!==this.layout||this.view===k&&requestAnimationFrame((()=>{requestAnimationFrame((()=>this._updateDividers()))})),this.view===k&&this._updateAndEmitColumnCount()}renderLinkContent(t,e){if(this.linkRenderer){const i=this.linkRenderer(t,e);if("string"==typeof i&&i.trim().length>0)return h`${n(i)}`;null!=i&&"string"!=typeof i&&console.warn("[kyn-header-categories] linkRenderer must return a string or null. Received: "+typeof i)}return h`${t.label}`}renderCategoryColumn(t,e){var i;if(!e)return null;const a=null!==(i=e.links)&&void 0!==i?i:[],o=this._rootLinksLimit;return h`
421
421
  <kyn-header-category
422
422
  heading=${e.heading}
423
423
  ?showDivider=${!this.hideCategoryDividers}
@@ -476,7 +476,7 @@ slot.header-categories__projected::slotted(*) {
476
476
  `))}
477
477
  </div>
478
478
  </kyn-header-category>
479
- `}_buildSlottedCategories(){if(this._isJsonMode)return;const t=Array.from(this.children).filter((t=>"KYN-HEADER-CATEGORY"===t.tagName));if(!t.length)return void(this._slottedCategories=[]);const e=t.map(((t,e)=>{var i,a;const o=null!==(i=t.getAttribute("id"))&&void 0!==i?i:`category-${e+1}`,s=null!==(a=t.getAttribute("heading"))&&void 0!==a?a:"";return{id:o,slotKey:`${e+1}-${this._sanitizeSlotKey(o)}`,heading:s,categoryEl:t,noAutoDivider:t.hasAttribute("noautodivider")}}));this._slottedCategories=e}renderSlottedRoot(){const t=this._slottedCategories;return t.length?h`${t.map((t=>h`
479
+ `}_buildSlottedCategories(){if(this._isJsonMode)return;const t=Array.from(this.children).filter((t=>"KYN-HEADER-CATEGORY"===t.tagName));if(!t.length)return void(this._slottedCategories=[]);const e=t.map(((t,e)=>{var i;const a=this._resolveCategoryId(t,e),o=null!==(i=t.getAttribute("heading"))&&void 0!==i?i:"";return{id:a,slotKey:`${e+1}-${this._sanitizeSlotKey(a)}`,heading:o,categoryEl:t,noAutoDivider:t.hasAttribute("noautodivider")}}));this._slottedCategories=e}renderSlottedRoot(){const t=this._slottedCategories;return t.length?h`${t.map((t=>h`
480
480
  <slot
481
481
  class="header-categories__projected"
482
482
  name=${this._getRootSlotName(t)}
@@ -536,5 +536,5 @@ slot.header-categories__projected::slotted(*) {
536
536
  </div>
537
537
  `:null}
538
538
  </div>
539
- `}connectedCallback(){var t;super.connectedCallback(),this._owningNav=this._resolveOwningNav(),null===(t=this._owningNav)||void 0===t||t.addEventListener("on-nav-toggle",this._boundHandleNavToggle),this._buildSlottedCategories(),this._syncSlottedCategoryPresentation(),"undefined"!=typeof ResizeObserver&&(this._resizeObserver=new ResizeObserver(this._handleResize),this._resizeObserver.observe(this))}disconnectedCallback(){var t;null===(t=this._owningNav)||void 0===t||t.removeEventListener("on-nav-toggle",this._boundHandleNavToggle),this._owningNav=null,null!=this._buildSlottedRaf&&(window.cancelAnimationFrame(this._buildSlottedRaf),this._buildSlottedRaf=void 0),this._resizeObserver&&(this._resizeObserver.disconnect(),this._resizeObserver=void 0),this._resetSlottedCategoryPresentation(),super.disconnectedCallback()}},r=new WeakMap,x=new WeakMap,C=new WeakMap,S=new WeakMap,M=new WeakMap,I=new WeakMap,$=new WeakMap,R=new WeakMap,A=new WeakMap,L=new WeakMap,D=new WeakMap,T=new WeakMap,N=new WeakMap,E=new WeakMap,P=new WeakMap,W=new WeakMap,t(z,"HeaderCategories"),(()=>{var t;const i="function"==typeof Symbol&&Symbol.metadata?Object.create(null!==(t=ot[Symbol.metadata])&&void 0!==t?t:null):void 0;O=[u({attribute:!1})],V=[u({type:String})],B=[u({type:String})],F=[u({type:Number})],H=[u({type:Boolean,attribute:"limit-root-links"})],Y=[u({type:String,reflect:!0})],q=[u({type:Number})],J=[u({type:Boolean,reflect:!0,attribute:"fixed-column-widths"})],U=[u({type:Boolean,attribute:"show-category-icons"})],K=[u({type:Boolean,attribute:"hide-category-dividers"})],G=[u({type:Object})],Z=[g()],Q=[u({type:Number})],X=[u({type:String,reflect:!0})],tt=[u({attribute:!1})],et=[g()],e(z,null,O,{kind:"accessor",name:"tabsConfig",static:!1,private:!1,access:{has:t=>"tabsConfig"in t,get:t=>t.tabsConfig,set:(t,e)=>{t.tabsConfig=e}},metadata:i},st,nt),e(z,null,V,{kind:"accessor",name:"activeMegaTabId",static:!1,private:!1,access:{has:t=>"activeMegaTabId"in t,get:t=>t.activeMegaTabId,set:(t,e)=>{t.activeMegaTabId=e}},metadata:i},rt,dt),e(z,null,B,{kind:"accessor",name:"activeMegaCategoryId",static:!1,private:!1,access:{has:t=>"activeMegaCategoryId"in t,get:t=>t.activeMegaCategoryId,set:(t,e)=>{t.activeMegaCategoryId=e}},metadata:i},lt,ht),e(z,null,F,{kind:"accessor",name:"maxRootLinks",static:!1,private:!1,access:{has:t=>"maxRootLinks"in t,get:t=>t.maxRootLinks,set:(t,e)=>{t.maxRootLinks=e}},metadata:i},ct,ut),e(z,null,H,{kind:"accessor",name:"limitRootLinks",static:!1,private:!1,access:{has:t=>"limitRootLinks"in t,get:t=>t.limitRootLinks,set:(t,e)=>{t.limitRootLinks=e}},metadata:i},gt,mt),e(z,null,Y,{kind:"accessor",name:"layout",static:!1,private:!1,access:{has:t=>"layout"in t,get:t=>t.layout,set:(t,e)=>{t.layout=e}},metadata:i},yt,vt),e(z,null,q,{kind:"accessor",name:"maxColumns",static:!1,private:!1,access:{has:t=>"maxColumns"in t,get:t=>t.maxColumns,set:(t,e)=>{t.maxColumns=e}},metadata:i},pt,wt),e(z,null,J,{kind:"accessor",name:"fixedColumnWidths",static:!1,private:!1,access:{has:t=>"fixedColumnWidths"in t,get:t=>t.fixedColumnWidths,set:(t,e)=>{t.fixedColumnWidths=e}},metadata:i},_t,ft),e(z,null,U,{kind:"accessor",name:"showCategoryIcons",static:!1,private:!1,access:{has:t=>"showCategoryIcons"in t,get:t=>t.showCategoryIcons,set:(t,e)=>{t.showCategoryIcons=e}},metadata:i},kt,bt),e(z,null,K,{kind:"accessor",name:"hideCategoryDividers",static:!1,private:!1,access:{has:t=>"hideCategoryDividers"in t,get:t=>t.hideCategoryDividers,set:(t,e)=>{t.hideCategoryDividers=e}},metadata:i},xt,Ct),e(z,null,G,{kind:"accessor",name:"textStrings",static:!1,private:!1,access:{has:t=>"textStrings"in t,get:t=>t.textStrings,set:(t,e)=>{t.textStrings=e}},metadata:i},St,Mt),e(z,null,Z,{kind:"accessor",name:"_textStrings",static:!1,private:!1,access:{has:t=>"_textStrings"in t,get:t=>t._textStrings,set:(t,e)=>{t._textStrings=e}},metadata:i},It,$t),e(z,null,Q,{kind:"accessor",name:"detailLinksPerColumn",static:!1,private:!1,access:{has:t=>"detailLinksPerColumn"in t,get:t=>t.detailLinksPerColumn,set:(t,e)=>{t.detailLinksPerColumn=e}},metadata:i},Rt,At),e(z,null,X,{kind:"accessor",name:"view",static:!1,private:!1,access:{has:t=>"view"in t,get:t=>t.view,set:(t,e)=>{t.view=e}},metadata:i},Lt,Dt),e(z,null,tt,{kind:"accessor",name:"linkRenderer",static:!1,private:!1,access:{has:t=>"linkRenderer"in t,get:t=>t.linkRenderer,set:(t,e)=>{t.linkRenderer=e}},metadata:i},Tt,Nt),e(z,null,et,{kind:"accessor",name:"_slottedCategories",static:!1,private:!1,access:{has:t=>"_slottedCategories"in t,get:t=>t._slottedCategories,set:(t,e)=>{t._slottedCategories=e}},metadata:i},Et,Pt),e(null,j={value:z},it,{kind:"class",name:z.name,metadata:i},null,at),z=j.value,i&&Object.defineProperty(z,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:i})})(),z.styles=l(_),i(z,at),z})();export{x as HeaderCategories};
539
+ `}connectedCallback(){var t;super.connectedCallback(),this._owningNav=this._resolveOwningNav(),null===(t=this._owningNav)||void 0===t||t.addEventListener("on-nav-toggle",this._boundHandleNavToggle),this._buildSlottedCategories(),this._syncSlottedCategoryPresentation(),"undefined"!=typeof ResizeObserver&&(this._resizeObserver=new ResizeObserver(this._handleResize),this._resizeObserver.observe(this))}disconnectedCallback(){var t;null===(t=this._owningNav)||void 0===t||t.removeEventListener("on-nav-toggle",this._boundHandleNavToggle),this._owningNav=null,null!=this._buildSlottedRaf&&(window.cancelAnimationFrame(this._buildSlottedRaf),this._buildSlottedRaf=void 0),this._resizeObserver&&(this._resizeObserver.disconnect(),this._resizeObserver=void 0),this._resetSlottedCategoryPresentation(),super.disconnectedCallback()}},r=new WeakMap,x=new WeakMap,C=new WeakMap,S=new WeakMap,M=new WeakMap,I=new WeakMap,$=new WeakMap,R=new WeakMap,A=new WeakMap,L=new WeakMap,T=new WeakMap,D=new WeakMap,N=new WeakMap,E=new WeakMap,P=new WeakMap,W=new WeakMap,t(z,"HeaderCategories"),(()=>{var t;const i="function"==typeof Symbol&&Symbol.metadata?Object.create(null!==(t=ot[Symbol.metadata])&&void 0!==t?t:null):void 0;O=[u({attribute:!1})],V=[u({type:String})],B=[u({type:String})],F=[u({type:Number})],H=[u({type:Boolean,attribute:"limit-root-links"})],Y=[u({type:String,reflect:!0})],q=[u({type:Number})],J=[u({type:Boolean,reflect:!0,attribute:"fixed-column-widths"})],K=[u({type:Boolean,attribute:"show-category-icons"})],U=[u({type:Boolean,attribute:"hide-category-dividers"})],G=[u({type:Object})],Z=[g()],Q=[u({type:Number})],X=[u({type:String,reflect:!0})],tt=[u({attribute:!1})],et=[g()],e(z,null,O,{kind:"accessor",name:"tabsConfig",static:!1,private:!1,access:{has:t=>"tabsConfig"in t,get:t=>t.tabsConfig,set:(t,e)=>{t.tabsConfig=e}},metadata:i},st,nt),e(z,null,V,{kind:"accessor",name:"activeMegaTabId",static:!1,private:!1,access:{has:t=>"activeMegaTabId"in t,get:t=>t.activeMegaTabId,set:(t,e)=>{t.activeMegaTabId=e}},metadata:i},rt,dt),e(z,null,B,{kind:"accessor",name:"activeMegaCategoryId",static:!1,private:!1,access:{has:t=>"activeMegaCategoryId"in t,get:t=>t.activeMegaCategoryId,set:(t,e)=>{t.activeMegaCategoryId=e}},metadata:i},lt,ht),e(z,null,F,{kind:"accessor",name:"maxRootLinks",static:!1,private:!1,access:{has:t=>"maxRootLinks"in t,get:t=>t.maxRootLinks,set:(t,e)=>{t.maxRootLinks=e}},metadata:i},ct,ut),e(z,null,H,{kind:"accessor",name:"limitRootLinks",static:!1,private:!1,access:{has:t=>"limitRootLinks"in t,get:t=>t.limitRootLinks,set:(t,e)=>{t.limitRootLinks=e}},metadata:i},gt,mt),e(z,null,Y,{kind:"accessor",name:"layout",static:!1,private:!1,access:{has:t=>"layout"in t,get:t=>t.layout,set:(t,e)=>{t.layout=e}},metadata:i},yt,vt),e(z,null,q,{kind:"accessor",name:"maxColumns",static:!1,private:!1,access:{has:t=>"maxColumns"in t,get:t=>t.maxColumns,set:(t,e)=>{t.maxColumns=e}},metadata:i},pt,wt),e(z,null,J,{kind:"accessor",name:"fixedColumnWidths",static:!1,private:!1,access:{has:t=>"fixedColumnWidths"in t,get:t=>t.fixedColumnWidths,set:(t,e)=>{t.fixedColumnWidths=e}},metadata:i},_t,ft),e(z,null,K,{kind:"accessor",name:"showCategoryIcons",static:!1,private:!1,access:{has:t=>"showCategoryIcons"in t,get:t=>t.showCategoryIcons,set:(t,e)=>{t.showCategoryIcons=e}},metadata:i},kt,bt),e(z,null,U,{kind:"accessor",name:"hideCategoryDividers",static:!1,private:!1,access:{has:t=>"hideCategoryDividers"in t,get:t=>t.hideCategoryDividers,set:(t,e)=>{t.hideCategoryDividers=e}},metadata:i},xt,Ct),e(z,null,G,{kind:"accessor",name:"textStrings",static:!1,private:!1,access:{has:t=>"textStrings"in t,get:t=>t.textStrings,set:(t,e)=>{t.textStrings=e}},metadata:i},St,Mt),e(z,null,Z,{kind:"accessor",name:"_textStrings",static:!1,private:!1,access:{has:t=>"_textStrings"in t,get:t=>t._textStrings,set:(t,e)=>{t._textStrings=e}},metadata:i},It,$t),e(z,null,Q,{kind:"accessor",name:"detailLinksPerColumn",static:!1,private:!1,access:{has:t=>"detailLinksPerColumn"in t,get:t=>t.detailLinksPerColumn,set:(t,e)=>{t.detailLinksPerColumn=e}},metadata:i},Rt,At),e(z,null,X,{kind:"accessor",name:"view",static:!1,private:!1,access:{has:t=>"view"in t,get:t=>t.view,set:(t,e)=>{t.view=e}},metadata:i},Lt,Tt),e(z,null,tt,{kind:"accessor",name:"linkRenderer",static:!1,private:!1,access:{has:t=>"linkRenderer"in t,get:t=>t.linkRenderer,set:(t,e)=>{t.linkRenderer=e}},metadata:i},Dt,Nt),e(z,null,et,{kind:"accessor",name:"_slottedCategories",static:!1,private:!1,access:{has:t=>"_slottedCategories"in t,get:t=>t._slottedCategories,set:(t,e)=>{t._slottedCategories=e}},metadata:i},Et,Pt),e(null,j={value:z},it,{kind:"class",name:z.name,metadata:i},null,at),z=j.value,i&&Object.defineProperty(z,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:i})})(),z.styles=l(_),i(z,at),z})();export{x as HeaderCategories};
540
540
  //# sourceMappingURL=headerCategories.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"headerCategories.js","sources":["../../../../src/components/global/header/headerCategories.ts"],"sourcesContent":["import { unsafeSVG } from 'lit-html/directives/unsafe-svg.js';\nimport { unsafeHTML } from 'lit-html/directives/unsafe-html.js';\nimport { LitElement, html, unsafeCSS, type PropertyValueMap } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport Styles from './headerCategories.scss?inline';\n\nimport './headerCategory';\nimport '../../reusable/button/button';\nimport './headerLink';\n\nimport circleIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/circle-stroke.svg';\nimport chevronRightIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/chevron-right.svg';\nimport arrowLeftIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/arrow-left.svg';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { debounce } from '../../../common/helpers/helpers';\nimport type { HeaderCategory } from './headerCategory';\nimport type { HeaderLinkTarget } from './headerLink';\n\nconst _defaultTextStrings = {\n back: 'Back',\n more: 'More',\n};\n\ntype HeaderTextStrings = typeof _defaultTextStrings;\n\nexport interface HeaderCategoryLinkType {\n id: string;\n label: string;\n href?: string;\n target?: '_blank' | '_self' | '_parent' | '_top';\n rel?: string;\n}\n\nexport interface HeaderCategoryType {\n id: string;\n heading: string;\n links: HeaderCategoryLinkType[];\n}\n\nexport interface HeaderLinkRendererContext {\n tabId: string;\n categoryId: string;\n view: 'root' | 'detail';\n}\n\nexport type HeaderMegaLinkRenderer = (\n link: HeaderCategoryLinkType,\n context?: HeaderLinkRendererContext\n) => string | null;\n\nexport interface MegaTabConfig {\n categories: HeaderCategoryType[];\n}\n\nexport interface MegaTabsConfig {\n [tabId: string]: MegaTabConfig;\n}\n\nexport interface HeaderMegaChangeDetail {\n activeMegaTabId: string;\n activeMegaCategoryId: string | null;\n view: HeaderView;\n}\n\ntype HeaderView = 'root' | 'detail';\n\nconst ROOT_VIEW: HeaderView = 'root';\nconst DETAIL_VIEW: HeaderView = 'detail';\n\nconst VOID_HREF = '#';\n\n/**\n * Pixel tolerance for grouping categories into visual columns.\n * Accounts for sub-pixel rendering differences across browsers.\n */\nconst COLUMN_GROUPING_TOLERANCE_PX = 10;\n\ninterface SlottedCategoryData {\n id: string;\n slotKey: string;\n heading: string;\n categoryEl: HeaderCategory;\n noAutoDivider: boolean;\n}\n\n/**\n * Header categories wrapper for mega menu.\n *\n * @slot unnamed - Slot for header category elements.\n *\n * Controlled via `activeMegaTabId` / `activeMegaCategoryId` but encapsulates\n * all categorical/mega-nav view behavior (root/detail, \"More\", \"Back\").\n *\n * Emits `on-nav-change` so parents can mirror state for tabs, routing, etc.\n *\n * Modes:\n * - JSON mode\n * - Provide `tabsConfig` and categories/links are rendered from config.\n * - Each link may specify `href`, `target`, and `rel`.\n * - Optional `linkRenderer` hook can be supplied to fully control the\n * slotted content inside each `<kyn-header-link>`.\n *\n * - Slotted/manual mode\n * - Omit `tabsConfig` and slot `<kyn-header-category>` / `<kyn-header-link>`\n * elements directly in the light DOM.\n * - Slotted `<kyn-header-link>` `href`, `target`, and `rel` attributes are\n * preserved.\n * - Root view will:\n * - limit visible links per category at `maxRootLinks`\n * - inject a \"More\" link when there are additional links\n * - \"More\" switches to a detail view for that category, and the Back button\n * returns to the root view.\n *\n * @fires on-nav-change - Fires when the active category/tab view changes. Detail: `{ activeMegaTabId, activeMegaCategoryId, view }`.\n * @cssprop [--kyn-header-category-column-width=300px] - Width of each column. Applies to 1 and 2 column layouts. Also used for 3+ when `fixed-column-widths` is enabled.\n * @cssprop [--kyn-header-category-column-gap=32px] - Horizontal gap between columns.\n */\n\n@customElement('kyn-header-categories')\nexport class HeaderCategories extends LitElement {\n static override styles = unsafeCSS(Styles);\n\n /** Configuration object for the mega nav (tab id -> categories/links). */\n @property({ attribute: false })\n accessor tabsConfig: MegaTabsConfig | null = null;\n\n /** Currently active tab id. */\n @property({ type: String })\n accessor activeMegaTabId = '';\n\n /** Currently active category id in detail view, or null for root view (controlled). */\n @property({ type: String })\n accessor activeMegaCategoryId: string | null = null;\n\n /** Max number of links to render in root columns before showing \"More\". */\n @property({ type: Number })\n accessor maxRootLinks = 4;\n\n /** Controls whether root-view categories are limited by `maxRootLinks` before showing \"More\". */\n @property({ type: Boolean, attribute: 'limit-root-links' })\n accessor limitRootLinks = true;\n\n /**\n * Layout mode for categories.\n * - \"\" (default): Legacy responsive column-width layout for standard mega-nav\n * - \"masonry\": CSS multi-column with fixed column-count based on category count\n * - \"grid\": CSS Grid with fixed columns and row-based wrapping\n */\n @property({ type: String, reflect: true })\n accessor layout: 'masonry' | 'grid' | '' = '';\n\n /** Max number of columns to display when layout=\"grid\" or layout=\"masonry\". */\n @property({ type: Number })\n accessor maxColumns = 3;\n\n /**\n * When true, 3+ columns use fixed column widths instead of stretching to fill\n * the full flyout width. The flyout remains constrained by viewport max-width.\n */\n @property({ type: Boolean, reflect: true, attribute: 'fixed-column-widths' })\n accessor fixedColumnWidths = false;\n\n /** When true, category headings render with the default design-system icon when none is provided. */\n @property({ type: Boolean, attribute: 'show-category-icons' })\n accessor showCategoryIcons = false;\n\n /** When true, hide dividers in root-view categories. */\n @property({ type: Boolean, attribute: 'hide-category-dividers' })\n accessor hideCategoryDividers = false;\n\n /**\n * Optional text overrides, merged with defaults.\n * e.g. <kyn-header-categories .textStrings=${{ more: 'More items' }}>\n */\n @property({ type: Object })\n accessor textStrings: Partial<HeaderTextStrings> | null = null;\n\n /** Resolved text strings (defaults + overrides).\n * @internal\n */\n @state()\n accessor _textStrings: HeaderTextStrings = _defaultTextStrings;\n\n /** Number of links per column in the detail view (JSON mode only). */\n @property({ type: Number })\n accessor detailLinksPerColumn = 6;\n\n /**\n * Current visual view for styling ('root' | 'detail').\n * Derived from `activeMegaCategoryId` but reflected for CSS hooks.\n * @internal\n */\n @property({ type: String, reflect: true })\n accessor view: HeaderView = ROOT_VIEW;\n\n /**\n * Optional hook to render the entire link content slotted into <kyn-header-link>.\n *\n * IMPORTANT:\n * - This must return an HTML string or null.\n * - The string is rendered via unsafeHTML; consumers are responsible for sanitizing\n * any dynamic content they inject here.\n *\n * This API is intentionally framework-agnostic: React, Vue, Angular, etc. can all\n * build a string and pass it in.\n *\n * If not provided, a simple circle-icon + label placeholder is used.\n */\n @property({ attribute: false })\n accessor linkRenderer: HeaderMegaLinkRenderer | null = null;\n\n /** Internal representation of slotted categories\n * @internal\n */\n @state()\n accessor _slottedCategories: SlottedCategoryData[] = [];\n\n /** @internal */\n private _buildSlottedRaf?: number;\n\n /** @internal */\n private _resizeObserver?: ResizeObserver;\n\n /** Owning nav used for scoped on-nav-toggle subscription.\n * @internal\n */\n private _owningNav: HTMLElement | null = null;\n\n /** Debounced divider update to prevent jank during rapid resize (grid and masonry modes)\n * @internal\n */\n private _debouncedUpdateDividers = debounce((_e: Event) => {\n if (\n this.view === ROOT_VIEW &&\n (this.layout === 'grid' || this.layout === 'masonry')\n ) {\n this._updateDividers();\n }\n }, 100);\n\n /** Tracks the last emitted column count to avoid duplicate events\n * @internal\n */\n private _lastEmittedColumnCount = 0;\n\n /** Wrapper for ResizeObserver callback\n * @internal\n */\n private _handleResize = (): void => {\n // Create a synthetic event for the debounced function\n this._debouncedUpdateDividers(new Event('resize'));\n // Category count doesn't change on resize, so no need to re-emit\n };\n\n /**\n * Update category count and emit event if changed.\n * Emits for grid and masonry layouts so the parent flyout can adjust width.\n * @internal\n */\n private _updateAndEmitColumnCount(): void {\n if (this.layout !== 'grid' && this.layout !== 'masonry') return;\n\n // Only emit when visible. Multiple kyn-header-categories may exist inside\n // the same flyout (one per tab panel). Without this guard, a hidden tab's\n // smaller column count overwrites the visible tab's count, preventing the\n // flyout from stretching.\n const tabPanel = this.closest('kyn-tab-panel');\n if (tabPanel && !tabPanel.hasAttribute('visible')) return;\n\n const columnCount = this._getColumnCount();\n\n if (columnCount !== this._lastEmittedColumnCount) {\n this._lastEmittedColumnCount = columnCount;\n\n this.dispatchEvent(\n new CustomEvent('on-column-count-change', {\n detail: {\n columnCount,\n fixedColumnWidths: this.fixedColumnWidths,\n },\n composed: true,\n bubbles: true,\n })\n );\n }\n }\n\n /** @internal */\n private readonly _boundHandleNavToggle = (e: Event): void =>\n this._handleNavToggle(e as CustomEvent<{ open?: boolean }>);\n\n /** Find the closest owning header nav across shadow boundaries.\n * @internal\n */\n private _resolveOwningNav(): HTMLElement | null {\n const parentNav = this.closest('kyn-header-nav');\n if (parentNav) return parentNav as HTMLElement;\n\n let root = this.getRootNode();\n while (root instanceof ShadowRoot) {\n const nav = root.host.closest?.('kyn-header-nav');\n if (nav) {\n return nav as HTMLElement;\n }\n root = root.host.getRootNode();\n }\n\n return null;\n }\n\n /** @internal */\n private get _isJsonMode(): boolean {\n return this.tabsConfig != null;\n }\n\n /** @internal */\n private get _tabConfig(): MegaTabConfig | null {\n if (!this.tabsConfig) return null;\n return this.tabsConfig[this.activeMegaTabId] ?? null;\n }\n\n private chunkBy<T>(items: T[] | undefined, size: number): T[][] {\n if (!items || size <= 0) return [[]];\n const result: T[][] = [];\n for (let i = 0; i < items.length; i += size) {\n result.push(items.slice(i, i + size));\n }\n return result;\n }\n\n private normalizeHeaderLinkTarget(target?: string | null): HeaderLinkTarget {\n if (target === '_blank' || target === '_parent' || target === '_top') {\n return target;\n }\n return '_self';\n }\n\n /** Resolve max root links. Disabling limiting, or using non-positive values, means \"no limit\". */\n private get _rootLinksLimit(): number {\n return !this.limitRootLinks || this.maxRootLinks <= 0\n ? Number.POSITIVE_INFINITY\n : this.maxRootLinks;\n }\n\n private _sanitizeSlotKey(value: string): string {\n return value.replace(/[^a-zA-Z0-9_-]/g, '-');\n }\n\n private _getRootSlotName(category: SlottedCategoryData): string {\n return `manual-root-${category.slotKey}`;\n }\n\n private _getDetailSlotName(category: SlottedCategoryData): string {\n return `manual-detail-${category.slotKey}`;\n }\n\n private _getActiveSlottedCategory(): SlottedCategoryData | null {\n if (!this._slottedCategories.length) return null;\n\n return (\n this._slottedCategories.find((c) => c.id === this.activeMegaCategoryId) ??\n this._slottedCategories[0]\n );\n }\n\n private _syncSlottedCategoryPresentation(): void {\n if (this._isJsonMode) return;\n\n const activeCategory = this._getActiveSlottedCategory();\n\n this._slottedCategories.forEach((category) => {\n const { categoryEl, heading, noAutoDivider } = category;\n const isDetailCategory =\n this.view === DETAIL_VIEW && activeCategory?.id === category.id;\n\n categoryEl.maxVisibleLinks =\n this.view === ROOT_VIEW\n ? this._rootLinksLimit\n : Number.POSITIVE_INFINITY;\n categoryEl.moreLabel = this._textStrings.more;\n categoryEl.detailView = isDetailCategory;\n categoryEl.detailHeading = isDetailCategory\n ? `${heading} – ${this._textStrings.more}`\n : '';\n categoryEl.detailLinksPerColumn = this.detailLinksPerColumn;\n categoryEl.slot =\n this.view === ROOT_VIEW\n ? this._getRootSlotName(category)\n : isDetailCategory\n ? this._getDetailSlotName(category)\n : 'manual-hidden';\n\n if (this.view === ROOT_VIEW && !this.hideCategoryDividers) {\n categoryEl.setAttribute('showdivider', '');\n\n if (noAutoDivider) {\n categoryEl.setAttribute('noautodivider', '');\n } else {\n categoryEl.removeAttribute('noautodivider');\n }\n } else {\n categoryEl.removeAttribute('showdivider');\n categoryEl.setAttribute('noautodivider', '');\n }\n });\n }\n\n private _resetSlottedCategoryPresentation(): void {\n this._slottedCategories.forEach(({ categoryEl }) => {\n categoryEl.maxVisibleLinks = Number.POSITIVE_INFINITY;\n categoryEl.detailView = false;\n categoryEl.detailHeading = '';\n categoryEl.removeAttribute('slot');\n });\n }\n\n private _handleSlottedMoreClick(\n e: CustomEvent<{ categoryId: string }>\n ): void {\n const categoryId =\n e.detail.categoryId || this._getActiveSlottedCategory()?.id || '';\n\n if (!categoryId) return;\n\n this.openCategoryDetail(this.activeMegaTabId, categoryId, e);\n }\n\n private _emitChange(): void {\n const detail: HeaderMegaChangeDetail = {\n activeMegaTabId: this.activeMegaTabId,\n activeMegaCategoryId: this.activeMegaCategoryId,\n view: this.view,\n };\n\n this.dispatchEvent(\n new CustomEvent<HeaderMegaChangeDetail>('on-nav-change', {\n detail,\n composed: true,\n bubbles: true,\n })\n );\n }\n\n setRootView(tabId?: string): void {\n this.activeMegaTabId = tabId ?? this.activeMegaTabId;\n this.activeMegaCategoryId = null;\n this.view = ROOT_VIEW;\n this._emitChange();\n\n if (!this._isJsonMode) {\n this._buildSlottedCategories();\n this._syncSlottedCategoryPresentation();\n }\n }\n\n openCategoryDetail(tabId: string, categoryId: string, e?: Event): void {\n if (e) {\n e.preventDefault();\n e.stopPropagation();\n }\n this.activeMegaTabId = tabId;\n this.activeMegaCategoryId = categoryId;\n this.view = DETAIL_VIEW;\n this._emitChange();\n if (!this._isJsonMode) {\n this._buildSlottedCategories();\n this._syncSlottedCategoryPresentation();\n }\n }\n\n handleBackClick(e?: Event): void {\n if (e) {\n e.preventDefault();\n e.stopPropagation();\n }\n this.setRootView(this.activeMegaTabId);\n\n this.updateComplete.then(() => {\n const hostLinks = Array.from(\n this.querySelectorAll<HTMLElement>('kyn-header-link')\n );\n const activeLink = hostLinks.find((l) => l.hasAttribute('isactive'));\n if (activeLink && activeLink.focus) {\n activeLink.focus();\n }\n });\n }\n\n private _handleNavToggle(e: CustomEvent<{ open?: boolean }>): void {\n const isOpen = Boolean(e.detail?.open);\n\n if (isOpen) {\n if (\n this.view === ROOT_VIEW &&\n (this.layout === 'grid' || this.layout === 'masonry')\n ) {\n // Recompute once visible; hidden measurements can be stale/zero.\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n this.setAttribute('data-columns', String(this._getColumnCount()));\n this._updateDividers();\n this._updateAndEmitColumnCount();\n });\n });\n }\n return;\n }\n\n if (!isOpen) {\n this.setRootView(this.activeMegaTabId);\n }\n }\n\n override willUpdate(changed: PropertyValueMap<this>): void {\n if (changed.has('textStrings')) {\n this._textStrings = {\n ..._defaultTextStrings,\n ...(this.textStrings ?? {}),\n };\n }\n\n if (changed.has('activeMegaCategoryId') || changed.has('activeMegaTabId')) {\n this.view = this.activeMegaCategoryId == null ? ROOT_VIEW : DETAIL_VIEW;\n }\n\n // Keep data-columns in sync before render so layout CSS has the\n // correct column count on first paint.\n if (this.layout === 'grid' || this.layout === 'masonry') {\n this.setAttribute('data-columns', String(this._getColumnCount()));\n }\n\n if (!this._isJsonMode) {\n this._syncSlottedCategoryPresentation();\n }\n }\n\n override updated(_changed: PropertyValueMap<this>): void {\n if (this.layout === 'grid' || this.layout === 'masonry') {\n // Update dividers after render when in root view (grid and masonry modes).\n // Masonry dividers are layout-free (absolute positioned via CSS custom properties)\n // so post-render correction won't cause reflow.\n if (this.view === ROOT_VIEW) {\n // Use double requestAnimationFrame to ensure layout is fully computed\n // The first rAF runs after the browser paints, the second ensures layout reflow is complete\n requestAnimationFrame(() => {\n requestAnimationFrame(() => this._updateDividers());\n });\n }\n }\n\n // Always emit column count after render (for flyout width adjustment)\n if (this.view === ROOT_VIEW) {\n this._updateAndEmitColumnCount();\n }\n }\n\n private renderLinkContent(\n link: HeaderCategoryLinkType,\n ctx: HeaderLinkRendererContext\n ) {\n if (this.linkRenderer) {\n const rendered = this.linkRenderer(link, ctx);\n\n if (typeof rendered === 'string' && rendered.trim().length > 0) {\n return html`${unsafeHTML(rendered)}`;\n }\n\n if (rendered != null && typeof rendered !== 'string') {\n console.warn(\n '[kyn-header-categories] linkRenderer must return a string or null. ' +\n `Received: ${typeof rendered}`\n );\n }\n }\n\n return html`${link.label}`;\n }\n\n private renderCategoryColumn(\n tabId: string,\n category: HeaderCategoryType | undefined\n ) {\n if (!category) return null;\n\n const links = category.links ?? [];\n const rootLinksLimit = this._rootLinksLimit;\n\n return html`\n <kyn-header-category\n heading=${category.heading}\n ?showDivider=${!this.hideCategoryDividers}\n ?data-auto-divider=${!this.hideCategoryDividers}\n >\n ${this.showCategoryIcons\n ? html`<span slot=\"icon\">${unsafeSVG(circleIcon)}</span>`\n : null}\n ${links.slice(0, rootLinksLimit).map((link) => {\n const target = this.normalizeHeaderLinkTarget(link.target);\n return html`\n <kyn-header-link\n href=${link.href ?? VOID_HREF}\n target=${target}\n rel=${ifDefined(link.rel)}\n .linkTitle=${link.label}\n >\n ${this.renderLinkContent(link, {\n tabId,\n categoryId: category.id,\n view: ROOT_VIEW,\n })}\n </kyn-header-link>\n `;\n })}\n ${links.length > rootLinksLimit\n ? html`\n <kyn-header-link\n slot=\"more\"\n href=${VOID_HREF}\n @click=${(e: Event) =>\n this.openCategoryDetail(tabId, category.id, e)}\n @keydown=${(e: KeyboardEvent) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n this.openCategoryDetail(tabId, category.id, e);\n }\n }}\n >\n <span\n style=\"display: inline-flex; align-items: center; gap: 8px;\"\n >\n ${this._textStrings.more} ${unsafeSVG(chevronRightIcon)}\n </span>\n </kyn-header-link>\n `\n : null}\n </kyn-header-category>\n `;\n }\n\n private renderRootView() {\n const categories: HeaderCategoryType[] = this._tabConfig?.categories ?? [];\n return html`${categories.map((category) =>\n this.renderCategoryColumn(this.activeMegaTabId, category)\n )}`;\n }\n\n private renderDetailView() {\n const categories: HeaderCategoryType[] = this._tabConfig?.categories ?? [];\n const category =\n categories.find((cat) => cat.id === this.activeMegaCategoryId) ??\n categories[0];\n\n if (!category) return null;\n\n const linkColumns = this.computeDetailColumns(category.links);\n const isSingleColumn = linkColumns.length === 1;\n\n return html`\n <kyn-header-category\n heading=${`${category.heading} – ${this._textStrings.more}`}\n >\n ${this.showCategoryIcons\n ? html`<span slot=\"icon\">${unsafeSVG(circleIcon)}</span>`\n : null}\n <div\n id=${`detail-${category.id}`}\n class=\"header-detail-columns ${isSingleColumn\n ? 'header-detail-columns--single'\n : ''}\"\n role=\"region\"\n aria-label=${`${category.heading} – ${this._textStrings.more}`}\n >\n ${linkColumns.map(\n (column) => html`\n <div>\n ${column.map((link) => {\n const target = this.normalizeHeaderLinkTarget(link.target);\n return html`\n <kyn-header-link\n href=${link.href ?? VOID_HREF}\n target=${target}\n rel=${ifDefined(link.rel)}\n .linkTitle=${link.label}\n >\n ${this.renderLinkContent(link, {\n tabId: this.activeMegaTabId,\n categoryId: category.id,\n view: DETAIL_VIEW,\n })}\n </kyn-header-link>\n `;\n })}\n </div>\n `\n )}\n </div>\n </kyn-header-category>\n `;\n }\n\n private _buildSlottedCategories(): void {\n if (this._isJsonMode) return;\n\n const categories = Array.from(this.children).filter(\n (child): child is HeaderCategory =>\n child.tagName === 'KYN-HEADER-CATEGORY'\n );\n\n if (!categories.length) {\n this._slottedCategories = [];\n return;\n }\n\n const data = categories.map((categoryEl, index) => {\n const id = categoryEl.getAttribute('id') ?? `category-${index + 1}`;\n const heading = categoryEl.getAttribute('heading') ?? '';\n\n return {\n id,\n slotKey: `${index + 1}-${this._sanitizeSlotKey(id)}`,\n heading,\n categoryEl,\n noAutoDivider: categoryEl.hasAttribute('noautodivider'),\n } as SlottedCategoryData;\n });\n\n this._slottedCategories = data;\n }\n\n private renderSlottedRoot() {\n const categories = this._slottedCategories;\n if (!categories.length) return null;\n\n return html`${categories.map(\n (category) => html`\n <slot\n class=\"header-categories__projected\"\n name=${this._getRootSlotName(category)}\n ></slot>\n `\n )}`;\n }\n\n private computeDetailColumns<T>(links: T[] | undefined): T[][] {\n const list = links ?? [];\n if (!list.length) return [];\n\n const minPerColumn = Math.max(this.detailLinksPerColumn, 1);\n const maxColumns = 4;\n\n const idealColumns = Math.ceil(list.length / minPerColumn);\n const columnCount = Math.min(maxColumns, Math.max(1, idealColumns));\n\n const size = Math.ceil(list.length / columnCount);\n return this.chunkBy(list, size);\n }\n\n private renderSlottedDetail() {\n const categoryItem = this._getActiveSlottedCategory();\n if (!categoryItem) return null;\n\n return html`\n <div\n id=${`detail-${categoryItem.id}`}\n class=\"header-detail-category\"\n role=\"region\"\n aria-label=${`${categoryItem.heading} – ${this._textStrings.more}`}\n >\n <slot\n class=\"header-categories__projected\"\n name=${this._getDetailSlotName(categoryItem)}\n ></slot>\n </div>\n `;\n }\n\n private _scheduleBuildSlottedCategories(): void {\n if (typeof window === 'undefined') {\n this._buildSlottedCategories();\n this._syncSlottedCategoryPresentation();\n return;\n }\n\n if (this._buildSlottedRaf != null) {\n window.cancelAnimationFrame(this._buildSlottedRaf);\n }\n this._buildSlottedRaf = window.requestAnimationFrame(() => {\n this._buildSlottedCategories();\n this._syncSlottedCategoryPresentation();\n this._buildSlottedRaf = undefined;\n });\n }\n\n /**\n * After render, detect which categories are in the last visual row\n * and disable their dividers. CSS Grid determines row breaks dynamically,\n * so we must inspect rendered positions.\n * @internal\n */\n private _updateDividers(): void {\n if (this.view !== ROOT_VIEW) return;\n if (this.layout !== 'grid' && this.layout !== 'masonry') return;\n if (this.hideCategoryDividers) return;\n const hostRect = this.getBoundingClientRect();\n if (hostRect.width === 0 || hostRect.height === 0) return;\n\n const inner = this.shadowRoot?.querySelector('.header-categories__inner');\n if (!inner) return;\n\n const categories = this._isJsonMode\n ? Array.from(\n inner.querySelectorAll<HTMLElement>(\n 'kyn-header-category[data-auto-divider]'\n )\n )\n : this._slottedCategories.map(({ categoryEl, noAutoDivider }) => {\n categoryEl.setAttribute('showdivider', '');\n\n if (noAutoDivider) {\n categoryEl.setAttribute('noautodivider', '');\n } else {\n categoryEl.removeAttribute('noautodivider');\n }\n\n return categoryEl;\n });\n\n if (!categories.length) return;\n\n // Get bounding rects\n const categoryData = categories.map((cat) => ({\n el: cat,\n rect: cat.getBoundingClientRect(),\n }));\n\n if (this.layout === 'grid') {\n // Grid: group by row (Y-position), hide dividers on the last row\n const rowMap = new Map<number, typeof categoryData>();\n\n for (const item of categoryData) {\n const y = item.rect.top;\n let foundRow = false;\n\n for (const [rowY] of rowMap) {\n if (Math.abs(y - rowY) <= COLUMN_GROUPING_TOLERANCE_PX) {\n rowMap.get(rowY)!.push(item);\n foundRow = true;\n break;\n }\n }\n\n if (!foundRow) {\n rowMap.set(y, [item]);\n }\n }\n\n let lastRowY = -Infinity;\n for (const [rowY] of rowMap) {\n if (rowY > lastRowY) {\n lastRowY = rowY;\n }\n }\n\n const lastRowCategories = rowMap.get(lastRowY);\n if (lastRowCategories) {\n for (const item of lastRowCategories) {\n item.el.removeAttribute('showdivider');\n item.el.setAttribute('noautodivider', '');\n }\n }\n } else {\n // Masonry: group by column (X-position), hide dividers on the last item in each column.\n // Masonry dividers are layout-free (absolute positioned via CSS custom properties)\n // so this correction won't cause reflow.\n const colMap = new Map<number, typeof categoryData>();\n\n for (const item of categoryData) {\n const x = item.rect.left;\n let foundCol = false;\n\n for (const [colX] of colMap) {\n if (Math.abs(x - colX) <= COLUMN_GROUPING_TOLERANCE_PX) {\n colMap.get(colX)!.push(item);\n foundCol = true;\n break;\n }\n }\n\n if (!foundCol) {\n colMap.set(x, [item]);\n }\n }\n\n for (const [, colItems] of colMap) {\n let lastItem = colItems[0];\n for (const item of colItems) {\n if (item.rect.bottom > lastItem.rect.bottom) {\n lastItem = item;\n }\n }\n lastItem.el.removeAttribute('showdivider');\n lastItem.el.setAttribute('noautodivider', '');\n }\n }\n }\n\n /**\n * Get the number of columns to display (grid and masonry modes).\n * Returns the minimum of category count and maxColumns.\n * @internal\n */\n private _getColumnCount(): number {\n if (\n this.view !== ROOT_VIEW ||\n (this.layout !== 'grid' && this.layout !== 'masonry')\n )\n return 1;\n\n const categoryCount = this._isJsonMode\n ? this._tabConfig?.categories?.length ?? 0\n : this._slottedCategories.length ||\n this.querySelectorAll(':scope > kyn-header-category').length;\n\n // Return the minimum of actual category count and maxColumns\n return Math.min(Math.max(1, categoryCount), this.maxColumns);\n }\n\n override render() {\n const view = this.view;\n const columnCount =\n this.layout === 'grid' || this.layout === 'masonry'\n ? this._getColumnCount()\n : null;\n\n const inner = this._isJsonMode\n ? view === ROOT_VIEW\n ? this.renderRootView()\n : this.renderDetailView()\n : view === ROOT_VIEW\n ? this.renderSlottedRoot()\n : this.renderSlottedDetail();\n\n return html`\n <div\n class=\"header-categories\"\n data-view=${view}\n @on-more-click=${(e: Event) =>\n this._handleSlottedMoreClick(\n e as CustomEvent<{ categoryId: string }>\n )}\n >\n <div\n class=\"header-categories__inner\"\n data-columns=${ifDefined(columnCount ?? undefined)}\n >\n ${inner ?? html``}\n </div>\n\n <slot\n name=\"manual-hidden\"\n class=\"header-categories__observer\"\n style=\"display: none;\"\n ></slot>\n <!-- hidden slot used only to observe light DOM changes (edge case) -->\n <slot\n class=\"header-categories__observer\"\n style=\"display: none;\"\n @slotchange=${() => this._scheduleBuildSlottedCategories()}\n ></slot>\n\n ${view === DETAIL_VIEW\n ? html`\n <div class=\"header-categories__back-slot\">\n <kyn-button\n size=\"small\"\n kind=\"tertiary\"\n @click=${(e: Event) => this.handleBackClick(e)}\n style=\"display: inline-flex; align-items: center;\"\n >\n <span\n style=\"display: inline-flex; align-items: center; margin-right: 8px;\"\n >\n ${unsafeSVG(arrowLeftIcon)}\n </span>\n ${this._textStrings.back}\n </kyn-button>\n </div>\n `\n : null}\n </div>\n `;\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n this._owningNav = this._resolveOwningNav();\n this._owningNav?.addEventListener(\n 'on-nav-toggle',\n this._boundHandleNavToggle as EventListener\n );\n\n // initial build for slotted mode\n this._buildSlottedCategories();\n this._syncSlottedCategoryPresentation();\n\n // Set up ResizeObserver to update dividers when columns reflow (grid mode only, debounced)\n if (typeof ResizeObserver !== 'undefined') {\n this._resizeObserver = new ResizeObserver(this._handleResize);\n this._resizeObserver.observe(this);\n }\n }\n\n override disconnectedCallback(): void {\n this._owningNav?.removeEventListener(\n 'on-nav-toggle',\n this._boundHandleNavToggle as EventListener\n );\n this._owningNav = null;\n\n if (this._buildSlottedRaf != null) {\n window.cancelAnimationFrame(this._buildSlottedRaf);\n this._buildSlottedRaf = undefined;\n }\n\n if (this._resizeObserver) {\n this._resizeObserver.disconnect();\n this._resizeObserver = undefined;\n }\n\n this._resetSlottedCategoryPresentation();\n\n super.disconnectedCallback();\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kyn-header-categories': HeaderCategories;\n }\n}\n"],"names":["_defaultTextStrings","back","more","ROOT_VIEW","DETAIL_VIEW","HeaderCategories","customElement","LitElement","_classThis","_classSuper","_HeaderCategories_tabsConfig_accessor_storage","set","this","__runInitializers","_tabsConfig_initializers","_HeaderCategories_activeMegaTabId_accessor_storage","_tabsConfig_extraInitializers","_activeMegaTabId_initializers","_HeaderCategories_activeMegaCategoryId_accessor_storage","_activeMegaTabId_extraInitializers","_activeMegaCategoryId_initializers","_HeaderCategories_maxRootLinks_accessor_storage","_activeMegaCategoryId_extraInitializers","_maxRootLinks_initializers","_HeaderCategories_limitRootLinks_accessor_storage","_maxRootLinks_extraInitializers","_limitRootLinks_initializers","_HeaderCategories_layout_accessor_storage","_limitRootLinks_extraInitializers","_layout_initializers","_HeaderCategories_maxColumns_accessor_storage","_layout_extraInitializers","_maxColumns_initializers","_HeaderCategories_fixedColumnWidths_accessor_storage","_maxColumns_extraInitializers","_fixedColumnWidths_initializers","_HeaderCategories_showCategoryIcons_accessor_storage","_fixedColumnWidths_extraInitializers","_showCategoryIcons_initializers","_HeaderCategories_hideCategoryDividers_accessor_storage","_showCategoryIcons_extraInitializers","_hideCategoryDividers_initializers","_HeaderCategories_textStrings_accessor_storage","_hideCategoryDividers_extraInitializers","_textStrings_initializers","_HeaderCategories__textStrings_accessor_storage","_textStrings_extraInitializers","__textStrings_initializers","_HeaderCategories_detailLinksPerColumn_accessor_storage","__textStrings_extraInitializers","_detailLinksPerColumn_initializers","_HeaderCategories_view_accessor_storage","_detailLinksPerColumn_extraInitializers","_view_initializers","_HeaderCategories_linkRenderer_accessor_storage","_view_extraInitializers","_linkRenderer_initializers","_HeaderCategories__slottedCategories_accessor_storage","_linkRenderer_extraInitializers","__slottedCategories_initializers","_buildSlottedRaf","__slottedCategories_extraInitializers","_owningNav","_debouncedUpdateDividers","debounce","_e","view","layout","_updateDividers","_lastEmittedColumnCount","_handleResize","Event","_boundHandleNavToggle","e","_handleNavToggle","tabsConfig","__classPrivateFieldGet","value","__classPrivateFieldSet","activeMegaTabId","activeMegaCategoryId","maxRootLinks","limitRootLinks","maxColumns","fixedColumnWidths","showCategoryIcons","hideCategoryDividers","textStrings","_textStrings","detailLinksPerColumn","linkRenderer","_slottedCategories","_updateAndEmitColumnCount","tabPanel","closest","hasAttribute","columnCount","_getColumnCount","dispatchEvent","CustomEvent","detail","composed","bubbles","_resolveOwningNav","parentNav","root","getRootNode","ShadowRoot","nav","_b","_a","host","call","_isJsonMode","_tabConfig","chunkBy","items","size","result","i","length","push","slice","normalizeHeaderLinkTarget","target","_rootLinksLimit","Number","POSITIVE_INFINITY","_sanitizeSlotKey","replace","_getRootSlotName","category","slotKey","_getDetailSlotName","_getActiveSlottedCategory","find","c","id","_syncSlottedCategoryPresentation","activeCategory","forEach","categoryEl","heading","noAutoDivider","isDetailCategory","maxVisibleLinks","moreLabel","detailView","detailHeading","slot","removeAttribute","setAttribute","_resetSlottedCategoryPresentation","_handleSlottedMoreClick","categoryId","openCategoryDetail","_emitChange","setRootView","tabId","_buildSlottedCategories","preventDefault","stopPropagation","handleBackClick","updateComplete","then","activeLink","Array","from","querySelectorAll","l","focus","isOpen","Boolean","open","requestAnimationFrame","String","willUpdate","changed","has","updated","_changed","renderLinkContent","link","ctx","rendered","trim","html","unsafeHTML","console","warn","label","renderCategoryColumn","links","rootLinksLimit","unsafeSVG","circleIcon","map","href","ifDefined","rel","key","chevronRightIcon","renderRootView","categories","renderDetailView","_c","cat","linkColumns","computeDetailColumns","isSingleColumn","column","children","filter","child","tagName","data","index","getAttribute","renderSlottedRoot","list","minPerColumn","Math","max","idealColumns","ceil","min","renderSlottedDetail","categoryItem","_scheduleBuildSlottedCategories","window","cancelAnimationFrame","undefined","hostRect","getBoundingClientRect","width","height","inner","shadowRoot","querySelector","categoryData","el","rect","rowMap","Map","item","y","top","foundRow","rowY","abs","get","lastRowY","Infinity","lastRowCategories","colMap","x","left","foundCol","colX","colItems","lastItem","bottom","categoryCount","render","arrowLeftIcon","connectedCallback","super","addEventListener","ResizeObserver","_resizeObserver","observe","disconnectedCallback","removeEventListener","disconnect","_tabsConfig_decorators","property","attribute","_activeMegaTabId_decorators","type","_activeMegaCategoryId_decorators","_maxRootLinks_decorators","reflect","_maxColumns_decorators","_fixedColumnWidths_decorators","_textStrings_decorators","Object","__textStrings_decorators","state","_detailLinksPerColumn_decorators","_linkRenderer_decorators","__slottedCategories_decorators","__esDecorate","kind","name","static","private","access","obj","metadata","_metadata","_limitRootLinks_decorators","_layout_decorators","_showCategoryIcons_decorators","_hideCategoryDividers_decorators","_view_decorators","_classDescriptor","_classDecorators","_classExtraInitializers","styles","unsafeCSS","Styles"],"mappings":"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"}
1
+ {"version":3,"file":"headerCategories.js","sources":["../../../../src/components/global/header/headerCategories.ts"],"sourcesContent":["import { unsafeSVG } from 'lit-html/directives/unsafe-svg.js';\nimport { unsafeHTML } from 'lit-html/directives/unsafe-html.js';\nimport { LitElement, html, unsafeCSS, type PropertyValueMap } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport Styles from './headerCategories.scss?inline';\n\nimport './headerCategory';\nimport '../../reusable/button/button';\nimport './headerLink';\n\nimport circleIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/circle-stroke.svg';\nimport chevronRightIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/chevron-right.svg';\nimport arrowLeftIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/arrow-left.svg';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { debounce } from '../../../common/helpers/helpers';\nimport type { HeaderCategory } from './headerCategory';\nimport type { HeaderLinkTarget } from './headerLink';\n\nconst _defaultTextStrings = {\n back: 'Back',\n more: 'More',\n};\n\ntype HeaderTextStrings = typeof _defaultTextStrings;\n\nexport interface HeaderCategoryLinkType {\n id: string;\n label: string;\n href?: string;\n target?: '_blank' | '_self' | '_parent' | '_top';\n rel?: string;\n}\n\nexport interface HeaderCategoryType {\n id: string;\n heading: string;\n links: HeaderCategoryLinkType[];\n}\n\nexport interface HeaderLinkRendererContext {\n tabId: string;\n categoryId: string;\n view: 'root' | 'detail';\n}\n\nexport type HeaderMegaLinkRenderer = (\n link: HeaderCategoryLinkType,\n context?: HeaderLinkRendererContext\n) => string | null;\n\nexport interface MegaTabConfig {\n categories: HeaderCategoryType[];\n}\n\nexport interface MegaTabsConfig {\n [tabId: string]: MegaTabConfig;\n}\n\nexport interface HeaderMegaChangeDetail {\n activeMegaTabId: string;\n activeMegaCategoryId: string | null;\n view: HeaderView;\n}\n\ntype HeaderView = 'root' | 'detail';\n\nconst ROOT_VIEW: HeaderView = 'root';\nconst DETAIL_VIEW: HeaderView = 'detail';\n\nconst VOID_HREF = '#';\n\n/**\n * Pixel tolerance for grouping categories into visual columns.\n * Accounts for sub-pixel rendering differences across browsers.\n */\nconst COLUMN_GROUPING_TOLERANCE_PX = 10;\n\ninterface SlottedCategoryData {\n id: string;\n slotKey: string;\n heading: string;\n categoryEl: HeaderCategory;\n noAutoDivider: boolean;\n}\n\n/**\n * Header categories wrapper for mega menu.\n *\n * @slot unnamed - Slot for header category elements.\n *\n * Controlled via `activeMegaTabId` / `activeMegaCategoryId` but encapsulates\n * all categorical/mega-nav view behavior (root/detail, \"More\", \"Back\").\n *\n * Emits `on-nav-change` so parents can mirror state for tabs, routing, etc.\n *\n * Modes:\n * - JSON mode\n * - Provide `tabsConfig` and categories/links are rendered from config.\n * - Each link may specify `href`, `target`, and `rel`.\n * - Optional `linkRenderer` hook can be supplied to fully control the\n * slotted content inside each `<kyn-header-link>`.\n *\n * - Slotted/manual mode\n * - Omit `tabsConfig` and slot `<kyn-header-category>` / `<kyn-header-link>`\n * elements directly in the light DOM.\n * - Slotted `<kyn-header-link>` `href`, `target`, and `rel` attributes are\n * preserved.\n * - Root view will:\n * - limit visible links per category at `maxRootLinks`\n * - inject a \"More\" link when there are additional links\n * - \"More\" switches to a detail view for that category, and the Back button\n * returns to the root view.\n *\n * @fires on-nav-change - Fires when the active category/tab view changes. Detail: `{ activeMegaTabId, activeMegaCategoryId, view }`.\n * @cssprop [--kyn-header-category-column-width=300px] - Width of each column. Applies to 1 and 2 column layouts. Also used for 3+ when `fixed-column-widths` is enabled.\n * @cssprop [--kyn-header-category-column-gap=32px] - Horizontal gap between columns.\n */\n\n@customElement('kyn-header-categories')\nexport class HeaderCategories extends LitElement {\n static override styles = unsafeCSS(Styles);\n\n /** Configuration object for the mega nav (tab id -> categories/links). */\n @property({ attribute: false })\n accessor tabsConfig: MegaTabsConfig | null = null;\n\n /** Currently active tab id. */\n @property({ type: String })\n accessor activeMegaTabId = '';\n\n /** Currently active category id in detail view, or null for root view (controlled). */\n @property({ type: String })\n accessor activeMegaCategoryId: string | null = null;\n\n /** Max number of links to render in root columns before showing \"More\". */\n @property({ type: Number })\n accessor maxRootLinks = 4;\n\n /** Controls whether root-view categories are limited by `maxRootLinks` before showing \"More\". */\n @property({ type: Boolean, attribute: 'limit-root-links' })\n accessor limitRootLinks = true;\n\n /**\n * Layout mode for categories.\n * - \"\" (default): Legacy responsive column-width layout for standard mega-nav\n * - \"masonry\": CSS multi-column with fixed column-count based on category count\n * - \"grid\": CSS Grid with fixed columns and row-based wrapping\n */\n @property({ type: String, reflect: true })\n accessor layout: 'masonry' | 'grid' | '' = '';\n\n /** Max number of columns to display when layout=\"grid\" or layout=\"masonry\". */\n @property({ type: Number })\n accessor maxColumns = 3;\n\n /**\n * When true, 3+ columns use fixed column widths instead of stretching to fill\n * the full flyout width. The flyout remains constrained by viewport max-width.\n */\n @property({ type: Boolean, reflect: true, attribute: 'fixed-column-widths' })\n accessor fixedColumnWidths = false;\n\n /** When true, category headings render with the default design-system icon when none is provided. */\n @property({ type: Boolean, attribute: 'show-category-icons' })\n accessor showCategoryIcons = false;\n\n /** When true, hide dividers in root-view categories. */\n @property({ type: Boolean, attribute: 'hide-category-dividers' })\n accessor hideCategoryDividers = false;\n\n /**\n * Optional text overrides, merged with defaults.\n * e.g. <kyn-header-categories .textStrings=${{ more: 'More items' }}>\n */\n @property({ type: Object })\n accessor textStrings: Partial<HeaderTextStrings> | null = null;\n\n /** Resolved text strings (defaults + overrides).\n * @internal\n */\n @state()\n accessor _textStrings: HeaderTextStrings = _defaultTextStrings;\n\n /** Number of links per column in the detail view (JSON mode only). */\n @property({ type: Number })\n accessor detailLinksPerColumn = 6;\n\n /**\n * Current visual view for styling ('root' | 'detail').\n * Derived from `activeMegaCategoryId` but reflected for CSS hooks.\n * @internal\n */\n @property({ type: String, reflect: true })\n accessor view: HeaderView = ROOT_VIEW;\n\n /**\n * Optional hook to render the entire link content slotted into <kyn-header-link>.\n *\n * IMPORTANT:\n * - This must return an HTML string or null.\n * - The string is rendered via unsafeHTML; consumers are responsible for sanitizing\n * any dynamic content they inject here.\n *\n * This API is intentionally framework-agnostic: React, Vue, Angular, etc. can all\n * build a string and pass it in.\n *\n * If not provided, a simple circle-icon + label placeholder is used.\n */\n @property({ attribute: false })\n accessor linkRenderer: HeaderMegaLinkRenderer | null = null;\n\n /** Internal representation of slotted categories\n * @internal\n */\n @state()\n accessor _slottedCategories: SlottedCategoryData[] = [];\n\n /** @internal */\n private _buildSlottedRaf?: number;\n\n /** @internal */\n private _resizeObserver?: ResizeObserver;\n\n /** Owning nav used for scoped on-nav-toggle subscription.\n * @internal\n */\n private _owningNav: HTMLElement | null = null;\n\n /** Debounced divider update to prevent jank during rapid resize (grid and masonry modes)\n * @internal\n */\n private _debouncedUpdateDividers = debounce((_e: Event) => {\n if (\n this.view === ROOT_VIEW &&\n (this.layout === 'grid' || this.layout === 'masonry')\n ) {\n this._updateDividers();\n }\n }, 100);\n\n /** Tracks the last emitted column count to avoid duplicate events\n * @internal\n */\n private _lastEmittedColumnCount = 0;\n\n /** Wrapper for ResizeObserver callback\n * @internal\n */\n private _handleResize = (): void => {\n // Create a synthetic event for the debounced function\n this._debouncedUpdateDividers(new Event('resize'));\n // Category count doesn't change on resize, so no need to re-emit\n };\n\n /**\n * Update category count and emit event if changed.\n * Emits for grid and masonry layouts so the parent flyout can adjust width.\n * @internal\n */\n private _updateAndEmitColumnCount(): void {\n if (this.layout !== 'grid' && this.layout !== 'masonry') return;\n\n // Only emit when visible. Multiple kyn-header-categories may exist inside\n // the same flyout (one per tab panel). Without this guard, a hidden tab's\n // smaller column count overwrites the visible tab's count, preventing the\n // flyout from stretching.\n const tabPanel = this.closest('kyn-tab-panel');\n if (tabPanel && !tabPanel.hasAttribute('visible')) return;\n\n const columnCount = this._getColumnCount();\n\n if (columnCount !== this._lastEmittedColumnCount) {\n this._lastEmittedColumnCount = columnCount;\n\n this.dispatchEvent(\n new CustomEvent('on-column-count-change', {\n detail: {\n columnCount,\n fixedColumnWidths: this.fixedColumnWidths,\n },\n composed: true,\n bubbles: true,\n })\n );\n }\n }\n\n /** @internal */\n private readonly _boundHandleNavToggle = (e: Event): void =>\n this._handleNavToggle(e as CustomEvent<{ open?: boolean }>);\n\n /** Find the closest owning header nav across shadow boundaries.\n * @internal\n */\n private _resolveOwningNav(): HTMLElement | null {\n const parentNav = this.closest('kyn-header-nav');\n if (parentNav) return parentNav as HTMLElement;\n\n let root = this.getRootNode();\n while (root instanceof ShadowRoot) {\n const nav = root.host.closest?.('kyn-header-nav');\n if (nav) {\n return nav as HTMLElement;\n }\n root = root.host.getRootNode();\n }\n\n return null;\n }\n\n /** @internal */\n private get _isJsonMode(): boolean {\n return this.tabsConfig != null;\n }\n\n /** @internal */\n private get _tabConfig(): MegaTabConfig | null {\n if (!this.tabsConfig) return null;\n return this.tabsConfig[this.activeMegaTabId] ?? null;\n }\n\n private chunkBy<T>(items: T[] | undefined, size: number): T[][] {\n if (!items || size <= 0) return [[]];\n const result: T[][] = [];\n for (let i = 0; i < items.length; i += size) {\n result.push(items.slice(i, i + size));\n }\n return result;\n }\n\n private normalizeHeaderLinkTarget(target?: string | null): HeaderLinkTarget {\n if (target === '_blank' || target === '_parent' || target === '_top') {\n return target;\n }\n return '_self';\n }\n\n /** Resolve max root links. Disabling limiting, or using non-positive values, means \"no limit\". */\n private get _rootLinksLimit(): number {\n return !this.limitRootLinks || this.maxRootLinks <= 0\n ? Number.POSITIVE_INFINITY\n : this.maxRootLinks;\n }\n\n private _sanitizeSlotKey(value: string): string {\n return value.replace(/[^a-zA-Z0-9_-]/g, '-');\n }\n\n private _resolveCategoryId(\n categoryEl: HeaderCategory,\n index: number\n ): string {\n return categoryEl.getAttribute('id')?.trim() || `category-${index + 1}`;\n }\n\n private _getRootSlotName(category: SlottedCategoryData): string {\n return `manual-root-${category.slotKey}`;\n }\n\n private _getDetailSlotName(category: SlottedCategoryData): string {\n return `manual-detail-${category.slotKey}`;\n }\n\n private _getActiveSlottedCategory(): SlottedCategoryData | null {\n if (!this._slottedCategories.length) return null;\n\n return (\n this._slottedCategories.find((c) => c.id === this.activeMegaCategoryId) ??\n this._slottedCategories[0]\n );\n }\n\n private _findSlottedCategoryFromEvent(e: Event): SlottedCategoryData | null {\n const categoryEl = e\n .composedPath()\n .find(\n (node): node is HeaderCategory =>\n node instanceof HTMLElement && node.tagName === 'KYN-HEADER-CATEGORY'\n );\n\n if (!categoryEl) return null;\n\n return (\n this._slottedCategories.find(\n (category) => category.categoryEl === categoryEl\n ) ?? null\n );\n }\n\n private _resolveSlottedMoreCategoryId(\n e: CustomEvent<{ categoryId: string }>\n ): string {\n const emittedCategoryId = e.detail.categoryId?.trim();\n if (emittedCategoryId) return emittedCategoryId;\n\n const categoryFromEvent = this._findSlottedCategoryFromEvent(e);\n if (categoryFromEvent) return categoryFromEvent.id;\n\n return this.view === DETAIL_VIEW\n ? this.activeMegaCategoryId?.trim() ?? ''\n : '';\n }\n\n private _syncSlottedCategoryPresentation(): void {\n if (this._isJsonMode) return;\n\n const activeCategory = this._getActiveSlottedCategory();\n\n this._slottedCategories.forEach((category) => {\n const { categoryEl, heading, noAutoDivider } = category;\n const isDetailCategory =\n this.view === DETAIL_VIEW && activeCategory?.id === category.id;\n\n categoryEl.maxVisibleLinks =\n this.view === ROOT_VIEW\n ? this._rootLinksLimit\n : Number.POSITIVE_INFINITY;\n categoryEl.categoryId = category.id;\n categoryEl.moreLabel = this._textStrings.more;\n categoryEl.detailView = isDetailCategory;\n categoryEl.detailHeading = isDetailCategory\n ? `${heading} – ${this._textStrings.more}`\n : '';\n categoryEl.detailLinksPerColumn = this.detailLinksPerColumn;\n categoryEl.slot =\n this.view === ROOT_VIEW\n ? this._getRootSlotName(category)\n : isDetailCategory\n ? this._getDetailSlotName(category)\n : 'manual-hidden';\n\n if (this.view === ROOT_VIEW && !this.hideCategoryDividers) {\n categoryEl.setAttribute('showdivider', '');\n\n if (noAutoDivider) {\n categoryEl.setAttribute('noautodivider', '');\n } else {\n categoryEl.removeAttribute('noautodivider');\n }\n } else {\n categoryEl.removeAttribute('showdivider');\n categoryEl.setAttribute('noautodivider', '');\n }\n });\n }\n\n private _resetSlottedCategoryPresentation(): void {\n this._slottedCategories.forEach(({ categoryEl }) => {\n categoryEl.categoryId = '';\n categoryEl.maxVisibleLinks = Number.POSITIVE_INFINITY;\n categoryEl.detailView = false;\n categoryEl.detailHeading = '';\n categoryEl.removeAttribute('slot');\n });\n }\n\n private _handleSlottedMoreClick(\n e: CustomEvent<{ categoryId: string }>\n ): void {\n const categoryId = this._resolveSlottedMoreCategoryId(e);\n\n if (!categoryId) return;\n\n this.openCategoryDetail(this.activeMegaTabId, categoryId, e);\n }\n\n private _emitChange(): void {\n const detail: HeaderMegaChangeDetail = {\n activeMegaTabId: this.activeMegaTabId,\n activeMegaCategoryId: this.activeMegaCategoryId,\n view: this.view,\n };\n\n this.dispatchEvent(\n new CustomEvent<HeaderMegaChangeDetail>('on-nav-change', {\n detail,\n composed: true,\n bubbles: true,\n })\n );\n }\n\n setRootView(tabId?: string): void {\n this.activeMegaTabId = tabId ?? this.activeMegaTabId;\n this.activeMegaCategoryId = null;\n this.view = ROOT_VIEW;\n this._emitChange();\n\n if (!this._isJsonMode) {\n this._buildSlottedCategories();\n this._syncSlottedCategoryPresentation();\n }\n }\n\n openCategoryDetail(tabId: string, categoryId: string, e?: Event): void {\n if (e) {\n e.preventDefault();\n e.stopPropagation();\n }\n this.activeMegaTabId = tabId;\n this.activeMegaCategoryId = categoryId;\n this.view = DETAIL_VIEW;\n this._emitChange();\n if (!this._isJsonMode) {\n this._buildSlottedCategories();\n this._syncSlottedCategoryPresentation();\n }\n }\n\n handleBackClick(e?: Event): void {\n if (e) {\n e.preventDefault();\n e.stopPropagation();\n }\n this.setRootView(this.activeMegaTabId);\n\n this.updateComplete.then(() => {\n const hostLinks = Array.from(\n this.querySelectorAll<HTMLElement>('kyn-header-link')\n );\n const activeLink = hostLinks.find((l) => l.hasAttribute('isactive'));\n if (activeLink && activeLink.focus) {\n activeLink.focus();\n }\n });\n }\n\n private _handleNavToggle(e: CustomEvent<{ open?: boolean }>): void {\n const isOpen = Boolean(e.detail?.open);\n\n if (isOpen) {\n if (\n this.view === ROOT_VIEW &&\n (this.layout === 'grid' || this.layout === 'masonry')\n ) {\n // Recompute once visible; hidden measurements can be stale/zero.\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n this.setAttribute('data-columns', String(this._getColumnCount()));\n this._updateDividers();\n this._updateAndEmitColumnCount();\n });\n });\n }\n return;\n }\n\n if (!isOpen) {\n this.setRootView(this.activeMegaTabId);\n }\n }\n\n override willUpdate(changed: PropertyValueMap<this>): void {\n if (changed.has('textStrings')) {\n this._textStrings = {\n ..._defaultTextStrings,\n ...(this.textStrings ?? {}),\n };\n }\n\n if (changed.has('activeMegaCategoryId') || changed.has('activeMegaTabId')) {\n this.view = this.activeMegaCategoryId == null ? ROOT_VIEW : DETAIL_VIEW;\n }\n\n // Keep data-columns in sync before render so layout CSS has the\n // correct column count on first paint.\n if (this.layout === 'grid' || this.layout === 'masonry') {\n this.setAttribute('data-columns', String(this._getColumnCount()));\n }\n\n if (!this._isJsonMode) {\n this._syncSlottedCategoryPresentation();\n }\n }\n\n override updated(_changed: PropertyValueMap<this>): void {\n if (this.layout === 'grid' || this.layout === 'masonry') {\n // Update dividers after render when in root view (grid and masonry modes).\n // Masonry dividers are layout-free (absolute positioned via CSS custom properties)\n // so post-render correction won't cause reflow.\n if (this.view === ROOT_VIEW) {\n // Use double requestAnimationFrame to ensure layout is fully computed\n // The first rAF runs after the browser paints, the second ensures layout reflow is complete\n requestAnimationFrame(() => {\n requestAnimationFrame(() => this._updateDividers());\n });\n }\n }\n\n // Always emit column count after render (for flyout width adjustment)\n if (this.view === ROOT_VIEW) {\n this._updateAndEmitColumnCount();\n }\n }\n\n private renderLinkContent(\n link: HeaderCategoryLinkType,\n ctx: HeaderLinkRendererContext\n ) {\n if (this.linkRenderer) {\n const rendered = this.linkRenderer(link, ctx);\n\n if (typeof rendered === 'string' && rendered.trim().length > 0) {\n return html`${unsafeHTML(rendered)}`;\n }\n\n if (rendered != null && typeof rendered !== 'string') {\n console.warn(\n '[kyn-header-categories] linkRenderer must return a string or null. ' +\n `Received: ${typeof rendered}`\n );\n }\n }\n\n return html`${link.label}`;\n }\n\n private renderCategoryColumn(\n tabId: string,\n category: HeaderCategoryType | undefined\n ) {\n if (!category) return null;\n\n const links = category.links ?? [];\n const rootLinksLimit = this._rootLinksLimit;\n\n return html`\n <kyn-header-category\n heading=${category.heading}\n ?showDivider=${!this.hideCategoryDividers}\n ?data-auto-divider=${!this.hideCategoryDividers}\n >\n ${this.showCategoryIcons\n ? html`<span slot=\"icon\">${unsafeSVG(circleIcon)}</span>`\n : null}\n ${links.slice(0, rootLinksLimit).map((link) => {\n const target = this.normalizeHeaderLinkTarget(link.target);\n return html`\n <kyn-header-link\n href=${link.href ?? VOID_HREF}\n target=${target}\n rel=${ifDefined(link.rel)}\n .linkTitle=${link.label}\n >\n ${this.renderLinkContent(link, {\n tabId,\n categoryId: category.id,\n view: ROOT_VIEW,\n })}\n </kyn-header-link>\n `;\n })}\n ${links.length > rootLinksLimit\n ? html`\n <kyn-header-link\n slot=\"more\"\n href=${VOID_HREF}\n @click=${(e: Event) =>\n this.openCategoryDetail(tabId, category.id, e)}\n @keydown=${(e: KeyboardEvent) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n this.openCategoryDetail(tabId, category.id, e);\n }\n }}\n >\n <span\n style=\"display: inline-flex; align-items: center; gap: 8px;\"\n >\n ${this._textStrings.more} ${unsafeSVG(chevronRightIcon)}\n </span>\n </kyn-header-link>\n `\n : null}\n </kyn-header-category>\n `;\n }\n\n private renderRootView() {\n const categories: HeaderCategoryType[] = this._tabConfig?.categories ?? [];\n return html`${categories.map((category) =>\n this.renderCategoryColumn(this.activeMegaTabId, category)\n )}`;\n }\n\n private renderDetailView() {\n const categories: HeaderCategoryType[] = this._tabConfig?.categories ?? [];\n const category =\n categories.find((cat) => cat.id === this.activeMegaCategoryId) ??\n categories[0];\n\n if (!category) return null;\n\n const linkColumns = this.computeDetailColumns(category.links);\n const isSingleColumn = linkColumns.length === 1;\n\n return html`\n <kyn-header-category\n heading=${`${category.heading} – ${this._textStrings.more}`}\n >\n ${this.showCategoryIcons\n ? html`<span slot=\"icon\">${unsafeSVG(circleIcon)}</span>`\n : null}\n <div\n id=${`detail-${category.id}`}\n class=\"header-detail-columns ${isSingleColumn\n ? 'header-detail-columns--single'\n : ''}\"\n role=\"region\"\n aria-label=${`${category.heading} – ${this._textStrings.more}`}\n >\n ${linkColumns.map(\n (column) => html`\n <div>\n ${column.map((link) => {\n const target = this.normalizeHeaderLinkTarget(link.target);\n return html`\n <kyn-header-link\n href=${link.href ?? VOID_HREF}\n target=${target}\n rel=${ifDefined(link.rel)}\n .linkTitle=${link.label}\n >\n ${this.renderLinkContent(link, {\n tabId: this.activeMegaTabId,\n categoryId: category.id,\n view: DETAIL_VIEW,\n })}\n </kyn-header-link>\n `;\n })}\n </div>\n `\n )}\n </div>\n </kyn-header-category>\n `;\n }\n\n private _buildSlottedCategories(): void {\n if (this._isJsonMode) return;\n\n const categories = Array.from(this.children).filter(\n (child): child is HeaderCategory =>\n child.tagName === 'KYN-HEADER-CATEGORY'\n );\n\n if (!categories.length) {\n this._slottedCategories = [];\n return;\n }\n\n const data = categories.map((categoryEl, index) => {\n const id = this._resolveCategoryId(categoryEl, index);\n const heading = categoryEl.getAttribute('heading') ?? '';\n\n return {\n id,\n slotKey: `${index + 1}-${this._sanitizeSlotKey(id)}`,\n heading,\n categoryEl,\n noAutoDivider: categoryEl.hasAttribute('noautodivider'),\n } as SlottedCategoryData;\n });\n\n this._slottedCategories = data;\n }\n\n private renderSlottedRoot() {\n const categories = this._slottedCategories;\n if (!categories.length) return null;\n\n return html`${categories.map(\n (category) => html`\n <slot\n class=\"header-categories__projected\"\n name=${this._getRootSlotName(category)}\n ></slot>\n `\n )}`;\n }\n\n private computeDetailColumns<T>(links: T[] | undefined): T[][] {\n const list = links ?? [];\n if (!list.length) return [];\n\n const minPerColumn = Math.max(this.detailLinksPerColumn, 1);\n const maxColumns = 4;\n\n const idealColumns = Math.ceil(list.length / minPerColumn);\n const columnCount = Math.min(maxColumns, Math.max(1, idealColumns));\n\n const size = Math.ceil(list.length / columnCount);\n return this.chunkBy(list, size);\n }\n\n private renderSlottedDetail() {\n const categoryItem = this._getActiveSlottedCategory();\n if (!categoryItem) return null;\n\n return html`\n <div\n id=${`detail-${categoryItem.id}`}\n class=\"header-detail-category\"\n role=\"region\"\n aria-label=${`${categoryItem.heading} – ${this._textStrings.more}`}\n >\n <slot\n class=\"header-categories__projected\"\n name=${this._getDetailSlotName(categoryItem)}\n ></slot>\n </div>\n `;\n }\n\n private _scheduleBuildSlottedCategories(): void {\n if (typeof window === 'undefined') {\n this._buildSlottedCategories();\n this._syncSlottedCategoryPresentation();\n return;\n }\n\n if (this._buildSlottedRaf != null) {\n window.cancelAnimationFrame(this._buildSlottedRaf);\n }\n this._buildSlottedRaf = window.requestAnimationFrame(() => {\n this._buildSlottedCategories();\n this._syncSlottedCategoryPresentation();\n this._buildSlottedRaf = undefined;\n });\n }\n\n /**\n * After render, detect which categories are in the last visual row\n * and disable their dividers. CSS Grid determines row breaks dynamically,\n * so we must inspect rendered positions.\n * @internal\n */\n private _updateDividers(): void {\n if (this.view !== ROOT_VIEW) return;\n if (this.layout !== 'grid' && this.layout !== 'masonry') return;\n if (this.hideCategoryDividers) return;\n const hostRect = this.getBoundingClientRect();\n if (hostRect.width === 0 || hostRect.height === 0) return;\n\n const inner = this.shadowRoot?.querySelector('.header-categories__inner');\n if (!inner) return;\n\n const categories = this._isJsonMode\n ? Array.from(\n inner.querySelectorAll<HTMLElement>(\n 'kyn-header-category[data-auto-divider]'\n )\n )\n : this._slottedCategories.map(({ categoryEl, noAutoDivider }) => {\n categoryEl.setAttribute('showdivider', '');\n\n if (noAutoDivider) {\n categoryEl.setAttribute('noautodivider', '');\n } else {\n categoryEl.removeAttribute('noautodivider');\n }\n\n return categoryEl;\n });\n\n if (!categories.length) return;\n\n // Get bounding rects\n const categoryData = categories.map((cat) => ({\n el: cat,\n rect: cat.getBoundingClientRect(),\n }));\n\n if (this.layout === 'grid') {\n // Grid: group by row (Y-position), hide dividers on the last row\n const rowMap = new Map<number, typeof categoryData>();\n\n for (const item of categoryData) {\n const y = item.rect.top;\n let foundRow = false;\n\n for (const [rowY] of rowMap) {\n if (Math.abs(y - rowY) <= COLUMN_GROUPING_TOLERANCE_PX) {\n rowMap.get(rowY)!.push(item);\n foundRow = true;\n break;\n }\n }\n\n if (!foundRow) {\n rowMap.set(y, [item]);\n }\n }\n\n let lastRowY = -Infinity;\n for (const [rowY] of rowMap) {\n if (rowY > lastRowY) {\n lastRowY = rowY;\n }\n }\n\n const lastRowCategories = rowMap.get(lastRowY);\n if (lastRowCategories) {\n for (const item of lastRowCategories) {\n item.el.removeAttribute('showdivider');\n item.el.setAttribute('noautodivider', '');\n }\n }\n } else {\n // Masonry: group by column (X-position), hide dividers on the last item in each column.\n // Masonry dividers are layout-free (absolute positioned via CSS custom properties)\n // so this correction won't cause reflow.\n const colMap = new Map<number, typeof categoryData>();\n\n for (const item of categoryData) {\n const x = item.rect.left;\n let foundCol = false;\n\n for (const [colX] of colMap) {\n if (Math.abs(x - colX) <= COLUMN_GROUPING_TOLERANCE_PX) {\n colMap.get(colX)!.push(item);\n foundCol = true;\n break;\n }\n }\n\n if (!foundCol) {\n colMap.set(x, [item]);\n }\n }\n\n for (const [, colItems] of colMap) {\n let lastItem = colItems[0];\n for (const item of colItems) {\n if (item.rect.bottom > lastItem.rect.bottom) {\n lastItem = item;\n }\n }\n lastItem.el.removeAttribute('showdivider');\n lastItem.el.setAttribute('noautodivider', '');\n }\n }\n }\n\n /**\n * Get the number of columns to display (grid and masonry modes).\n * Returns the minimum of category count and maxColumns.\n * @internal\n */\n private _getColumnCount(): number {\n if (\n this.view !== ROOT_VIEW ||\n (this.layout !== 'grid' && this.layout !== 'masonry')\n )\n return 1;\n\n const categoryCount = this._isJsonMode\n ? this._tabConfig?.categories?.length ?? 0\n : this._slottedCategories.length ||\n this.querySelectorAll(':scope > kyn-header-category').length;\n\n // Return the minimum of actual category count and maxColumns\n return Math.min(Math.max(1, categoryCount), this.maxColumns);\n }\n\n override render() {\n const view = this.view;\n const columnCount =\n this.layout === 'grid' || this.layout === 'masonry'\n ? this._getColumnCount()\n : null;\n\n const inner = this._isJsonMode\n ? view === ROOT_VIEW\n ? this.renderRootView()\n : this.renderDetailView()\n : view === ROOT_VIEW\n ? this.renderSlottedRoot()\n : this.renderSlottedDetail();\n\n return html`\n <div\n class=\"header-categories\"\n data-view=${view}\n @on-more-click=${(e: Event) =>\n this._handleSlottedMoreClick(\n e as CustomEvent<{ categoryId: string }>\n )}\n >\n <div\n class=\"header-categories__inner\"\n data-columns=${ifDefined(columnCount ?? undefined)}\n >\n ${inner ?? html``}\n </div>\n\n <slot\n name=\"manual-hidden\"\n class=\"header-categories__observer\"\n style=\"display: none;\"\n ></slot>\n <!-- hidden slot used only to observe light DOM changes (edge case) -->\n <slot\n class=\"header-categories__observer\"\n style=\"display: none;\"\n @slotchange=${() => this._scheduleBuildSlottedCategories()}\n ></slot>\n\n ${view === DETAIL_VIEW\n ? html`\n <div class=\"header-categories__back-slot\">\n <kyn-button\n size=\"small\"\n kind=\"tertiary\"\n @click=${(e: Event) => this.handleBackClick(e)}\n style=\"display: inline-flex; align-items: center;\"\n >\n <span\n style=\"display: inline-flex; align-items: center; margin-right: 8px;\"\n >\n ${unsafeSVG(arrowLeftIcon)}\n </span>\n ${this._textStrings.back}\n </kyn-button>\n </div>\n `\n : null}\n </div>\n `;\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n this._owningNav = this._resolveOwningNav();\n this._owningNav?.addEventListener(\n 'on-nav-toggle',\n this._boundHandleNavToggle as EventListener\n );\n\n // initial build for slotted mode\n this._buildSlottedCategories();\n this._syncSlottedCategoryPresentation();\n\n // Set up ResizeObserver to update dividers when columns reflow (grid mode only, debounced)\n if (typeof ResizeObserver !== 'undefined') {\n this._resizeObserver = new ResizeObserver(this._handleResize);\n this._resizeObserver.observe(this);\n }\n }\n\n override disconnectedCallback(): void {\n this._owningNav?.removeEventListener(\n 'on-nav-toggle',\n this._boundHandleNavToggle as EventListener\n );\n this._owningNav = null;\n\n if (this._buildSlottedRaf != null) {\n window.cancelAnimationFrame(this._buildSlottedRaf);\n this._buildSlottedRaf = undefined;\n }\n\n if (this._resizeObserver) {\n this._resizeObserver.disconnect();\n this._resizeObserver = undefined;\n }\n\n this._resetSlottedCategoryPresentation();\n\n super.disconnectedCallback();\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kyn-header-categories': HeaderCategories;\n }\n}\n"],"names":["_defaultTextStrings","back","more","ROOT_VIEW","DETAIL_VIEW","HeaderCategories","customElement","LitElement","_classThis","_classSuper","_HeaderCategories_tabsConfig_accessor_storage","set","this","__runInitializers","_tabsConfig_initializers","_HeaderCategories_activeMegaTabId_accessor_storage","_tabsConfig_extraInitializers","_activeMegaTabId_initializers","_HeaderCategories_activeMegaCategoryId_accessor_storage","_activeMegaTabId_extraInitializers","_activeMegaCategoryId_initializers","_HeaderCategories_maxRootLinks_accessor_storage","_activeMegaCategoryId_extraInitializers","_maxRootLinks_initializers","_HeaderCategories_limitRootLinks_accessor_storage","_maxRootLinks_extraInitializers","_limitRootLinks_initializers","_HeaderCategories_layout_accessor_storage","_limitRootLinks_extraInitializers","_layout_initializers","_HeaderCategories_maxColumns_accessor_storage","_layout_extraInitializers","_maxColumns_initializers","_HeaderCategories_fixedColumnWidths_accessor_storage","_maxColumns_extraInitializers","_fixedColumnWidths_initializers","_HeaderCategories_showCategoryIcons_accessor_storage","_fixedColumnWidths_extraInitializers","_showCategoryIcons_initializers","_HeaderCategories_hideCategoryDividers_accessor_storage","_showCategoryIcons_extraInitializers","_hideCategoryDividers_initializers","_HeaderCategories_textStrings_accessor_storage","_hideCategoryDividers_extraInitializers","_textStrings_initializers","_HeaderCategories__textStrings_accessor_storage","_textStrings_extraInitializers","__textStrings_initializers","_HeaderCategories_detailLinksPerColumn_accessor_storage","__textStrings_extraInitializers","_detailLinksPerColumn_initializers","_HeaderCategories_view_accessor_storage","_detailLinksPerColumn_extraInitializers","_view_initializers","_HeaderCategories_linkRenderer_accessor_storage","_view_extraInitializers","_linkRenderer_initializers","_HeaderCategories__slottedCategories_accessor_storage","_linkRenderer_extraInitializers","__slottedCategories_initializers","_buildSlottedRaf","__slottedCategories_extraInitializers","_owningNav","_debouncedUpdateDividers","debounce","_e","view","layout","_updateDividers","_lastEmittedColumnCount","_handleResize","Event","_boundHandleNavToggle","e","_handleNavToggle","tabsConfig","__classPrivateFieldGet","value","__classPrivateFieldSet","activeMegaTabId","activeMegaCategoryId","maxRootLinks","limitRootLinks","maxColumns","fixedColumnWidths","showCategoryIcons","hideCategoryDividers","textStrings","_textStrings","detailLinksPerColumn","linkRenderer","_slottedCategories","_updateAndEmitColumnCount","tabPanel","closest","hasAttribute","columnCount","_getColumnCount","dispatchEvent","CustomEvent","detail","composed","bubbles","_resolveOwningNav","parentNav","root","getRootNode","ShadowRoot","nav","_b","_a","host","call","_isJsonMode","_tabConfig","chunkBy","items","size","result","i","length","push","slice","normalizeHeaderLinkTarget","target","_rootLinksLimit","Number","POSITIVE_INFINITY","_sanitizeSlotKey","replace","_resolveCategoryId","categoryEl","index","getAttribute","trim","_getRootSlotName","category","slotKey","_getDetailSlotName","_getActiveSlottedCategory","find","c","id","_findSlottedCategoryFromEvent","composedPath","node","HTMLElement","tagName","_resolveSlottedMoreCategoryId","emittedCategoryId","categoryId","categoryFromEvent","_c","_syncSlottedCategoryPresentation","activeCategory","forEach","heading","noAutoDivider","isDetailCategory","maxVisibleLinks","moreLabel","detailView","detailHeading","slot","removeAttribute","setAttribute","_resetSlottedCategoryPresentation","_handleSlottedMoreClick","openCategoryDetail","_emitChange","setRootView","tabId","_buildSlottedCategories","preventDefault","stopPropagation","handleBackClick","updateComplete","then","activeLink","Array","from","querySelectorAll","l","focus","isOpen","Boolean","open","requestAnimationFrame","String","willUpdate","changed","has","updated","_changed","renderLinkContent","link","ctx","rendered","html","unsafeHTML","console","warn","label","renderCategoryColumn","links","rootLinksLimit","unsafeSVG","circleIcon","map","href","ifDefined","rel","key","chevronRightIcon","renderRootView","categories","renderDetailView","cat","linkColumns","computeDetailColumns","isSingleColumn","column","children","filter","child","data","renderSlottedRoot","list","minPerColumn","Math","max","idealColumns","ceil","min","renderSlottedDetail","categoryItem","_scheduleBuildSlottedCategories","window","cancelAnimationFrame","undefined","hostRect","getBoundingClientRect","width","height","inner","shadowRoot","querySelector","categoryData","el","rect","rowMap","Map","item","y","top","foundRow","rowY","abs","get","lastRowY","Infinity","lastRowCategories","colMap","x","left","foundCol","colX","colItems","lastItem","bottom","categoryCount","render","arrowLeftIcon","connectedCallback","super","addEventListener","ResizeObserver","_resizeObserver","observe","disconnectedCallback","removeEventListener","disconnect","_tabsConfig_decorators","property","attribute","_activeMegaTabId_decorators","type","_activeMegaCategoryId_decorators","_maxRootLinks_decorators","reflect","_maxColumns_decorators","_fixedColumnWidths_decorators","_textStrings_decorators","Object","__textStrings_decorators","state","_detailLinksPerColumn_decorators","_linkRenderer_decorators","__slottedCategories_decorators","__esDecorate","kind","name","static","private","access","obj","metadata","_metadata","_limitRootLinks_decorators","_layout_decorators","_showCategoryIcons_decorators","_hideCategoryDividers_decorators","_view_decorators","_classDescriptor","_classDecorators","_classExtraInitializers","styles","unsafeCSS","Styles"],"mappings":"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"}
@@ -36,6 +36,11 @@ export declare class HeaderCategory extends LitElement {
36
36
  * @internal
37
37
  */
38
38
  accessor moreLabel: string;
39
+ /** Resolved category id provided by the parent wrapper.
40
+ * Falls back to the host `id` attribute when unset.
41
+ * @internal
42
+ */
43
+ accessor categoryId: string;
39
44
  /** Minimum desired links per detail column.
40
45
  * @internal
41
46
  */
@@ -54,6 +59,7 @@ export declare class HeaderCategory extends LitElement {
54
59
  private _getCustomMoreNodes;
55
60
  private _computeDetailColumnCount;
56
61
  private _syncLinks;
62
+ private _getResolvedCategoryId;
57
63
  private _emitMoreClick;
58
64
  private _handleGeneratedMoreClick;
59
65
  private _handleGeneratedMoreKeydown;
@@ -1 +1 @@
1
- {"version":3,"file":"headerCategory.d.ts","sourceRoot":"","sources":["../../../../src/components/global/header/headerCategory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAmB,KAAK,gBAAgB,EAAE,MAAM,KAAK,CAAC;AAMzE,OAAO,cAAc,CAAC;AAEtB;;;;;GAKG;AACH,qBACa,cAAe,SAAQ,UAAU;IAC5C,OAAgB,MAAM,0BAAiC;IAEvD,qBAAqB;IAErB,QAAQ,CAAC,OAAO,SAAM;IAEtB,8FAA8F;IAE9F,QAAQ,CAAC,WAAW,UAAS;IAE7B,kKAAkK;IAElK,QAAQ,CAAC,WAAW,UAAS;IAE7B;;;;OAIG;IAEH,QAAQ,CAAC,aAAa,UAAQ;IAE9B;;OAEG;IAEH,QAAQ,CAAC,eAAe,SAA4B;IAEpD;;OAEG;IAEH,QAAQ,CAAC,UAAU,UAAS;IAE5B;;OAEG;IAEH,QAAQ,CAAC,aAAa,SAAM;IAE5B;;OAEG;IAEH,QAAQ,CAAC,SAAS,SAAU;IAE5B;;OAEG;IAEH,QAAQ,CAAC,oBAAoB,SAAK;IAElC,gBAAgB;IAEhB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAElC,gBAAgB;IAEhB,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAS;IAEjD,gBAAgB;IAEhB,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAS;IAE5C,gBAAgB;IAEhB,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAK;IAExC,OAAO,CAAC,qBAAqB;IAM7B,OAAO,CAAC,4BAA4B;IAKpC,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,mBAAmB;IAM3B,OAAO,CAAC,yBAAyB;IAUjC,OAAO,CAAC,UAAU;IAwBlB,OAAO,CAAC,cAAc;IAetB,OAAO,CAAC,yBAAyB;IAIjC,OAAO,CAAC,2BAA2B;IAMnC,OAAO,CAAC,sBAAsB;IAI9B,OAAO,CAAC,qBAAqB;IAIpB,iBAAiB;IAMjB,OAAO,CAAC,OAAO,EAAE,gBAAgB,CAAC,IAAI,CAAC;IAUvC,MAAM;CA0DhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,qBAAqB,EAAE,cAAc,CAAC;KACvC;CACF"}
1
+ {"version":3,"file":"headerCategory.d.ts","sourceRoot":"","sources":["../../../../src/components/global/header/headerCategory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAmB,KAAK,gBAAgB,EAAE,MAAM,KAAK,CAAC;AAMzE,OAAO,cAAc,CAAC;AAEtB;;;;;GAKG;AACH,qBACa,cAAe,SAAQ,UAAU;IAC5C,OAAgB,MAAM,0BAAiC;IAEvD,qBAAqB;IAErB,QAAQ,CAAC,OAAO,SAAM;IAEtB,8FAA8F;IAE9F,QAAQ,CAAC,WAAW,UAAS;IAE7B,kKAAkK;IAElK,QAAQ,CAAC,WAAW,UAAS;IAE7B;;;;OAIG;IAEH,QAAQ,CAAC,aAAa,UAAQ;IAE9B;;OAEG;IAEH,QAAQ,CAAC,eAAe,SAA4B;IAEpD;;OAEG;IAEH,QAAQ,CAAC,UAAU,UAAS;IAE5B;;OAEG;IAEH,QAAQ,CAAC,aAAa,SAAM;IAE5B;;OAEG;IAEH,QAAQ,CAAC,SAAS,SAAU;IAE5B;;;OAGG;IAEH,QAAQ,CAAC,UAAU,SAAM;IAEzB;;OAEG;IAEH,QAAQ,CAAC,oBAAoB,SAAK;IAElC,gBAAgB;IAEhB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAElC,gBAAgB;IAEhB,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAS;IAEjD,gBAAgB;IAEhB,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAS;IAE5C,gBAAgB;IAEhB,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAK;IAExC,OAAO,CAAC,qBAAqB;IAM7B,OAAO,CAAC,4BAA4B;IAKpC,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,mBAAmB;IAM3B,OAAO,CAAC,yBAAyB;IAUjC,OAAO,CAAC,UAAU;IAwBlB,OAAO,CAAC,sBAAsB;IAI9B,OAAO,CAAC,cAAc;IAetB,OAAO,CAAC,yBAAyB;IAIjC,OAAO,CAAC,2BAA2B;IAMnC,OAAO,CAAC,sBAAsB;IAI9B,OAAO,CAAC,qBAAqB;IAIpB,iBAAiB;IAMjB,OAAO,CAAC,OAAO,EAAE,gBAAgB,CAAC,IAAI,CAAC;IAUvC,MAAM;CA0DhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,qBAAqB,EAAE,cAAc,CAAC;KACvC;CACF"}
@@ -151,7 +151,7 @@ slot[name=icon]::slotted(*) {
151
151
  width: 16px;
152
152
  height: 16px;
153
153
  color: var(--kd-color-icon-primary);
154
- }`;let p=(()=>{var s,p,y,v,f,b,_,w,x,C,M,L,N;let S,I,V,D,P,j,A,$,z,G,W,E,H,F,K,O=[d("kyn-header-category")],R=[],T=r,Y=[],B=[],q=[],J=[],Q=[],U=[],X=[],Z=[],ee=[],te=[],ie=[],ae=[],ne=[],se=[],re=[],oe=[],le=[],de=[],he=[],ce=[],me=[],ge=[],ue=[],ke=[],pe=[],ye=[];return I=class extends T{get heading(){return a(this,s,"f")}set heading(e){n(this,s,e,"f")}get leftPadding(){return a(this,p,"f")}set leftPadding(e){n(this,p,e,"f")}get showDivider(){return a(this,y,"f")}set showDivider(e){n(this,y,e,"f")}get noAutoDivider(){return a(this,v,"f")}set noAutoDivider(e){n(this,v,e,"f")}get maxVisibleLinks(){return a(this,f,"f")}set maxVisibleLinks(e){n(this,f,e,"f")}get detailView(){return a(this,b,"f")}set detailView(e){n(this,b,e,"f")}get detailHeading(){return a(this,_,"f")}set detailHeading(e){n(this,_,e,"f")}get moreLabel(){return a(this,w,"f")}set moreLabel(e){n(this,w,e,"f")}get detailLinksPerColumn(){return a(this,x,"f")}set detailLinksPerColumn(e){n(this,x,e,"f")}get _hasIcon(){return a(this,C,"f")}set _hasIcon(e){n(this,C,e,"f")}get _hasNextCategorySibling(){return a(this,M,"f")}set _hasNextCategorySibling(e){n(this,M,e,"f")}get _showGeneratedMore(){return a(this,L,"f")}set _showGeneratedMore(e){n(this,L,e,"f")}get _detailColumnCount(){return a(this,N,"f")}set _detailColumnCount(e){n(this,N,e,"f")}_handleIconSlotChange(e){const t=e.target.assignedNodes({flatten:!0});this._hasIcon=t.length>0}_checkForNextCategorySibling(){var e;this._hasNextCategorySibling="KYN-HEADER-CATEGORY"===(null===(e=this.nextElementSibling)||void 0===e?void 0:e.tagName)||!1}_getRegularLinks(){return Array.from(this.children).filter((e=>"KYN-HEADER-LINK"===e.tagName&&"more"!==e.getAttribute("slot")))}_getCustomMoreNodes(){return Array.from(this.children).filter((e=>"more"===e.getAttribute("slot")))}_computeDetailColumnCount(e){if(e<=0)return 1;const t=Math.max(this.detailLinksPerColumn,1),i=Math.ceil(e/t);return Math.min(4,Math.max(1,i))}_syncLinks(){const e=this._getRegularLinks(),t=Number.isFinite(this.maxVisibleLinks)&&this.maxVisibleLinks>0,i=!this.detailView&&t?this.maxVisibleLinks:Number.POSITIVE_INFINITY;e.forEach(((e,t)=>{const a=t>=i;e.toggleAttribute("hidden",a)})),this._detailColumnCount=this.detailView?this._computeDetailColumnCount(e.length):1,this._showGeneratedMore=!this.detailView&&t&&e.length>i&&0===this._getCustomMoreNodes().length}_emitMoreClick(e){var t;e.preventDefault(),e.stopPropagation(),this.dispatchEvent(new CustomEvent("on-more-click",{detail:{categoryId:null!==(t=this.getAttribute("id"))&&void 0!==t?t:""},bubbles:!0,composed:!0}))}_handleGeneratedMoreClick(e){this._emitMoreClick(e)}_handleGeneratedMoreKeydown(e){"Enter"!==e.key&&" "!==e.key||this._emitMoreClick(e)}_handleLinksSlotChange(){this._syncLinks()}_handleMoreSlotChange(){this._syncLinks()}connectedCallback(){super.connectedCallback(),this._checkForNextCategorySibling(),this._syncLinks()}updated(e){(e.has("maxVisibleLinks")||e.has("detailView")||e.has("detailLinksPerColumn"))&&this._syncLinks()}render(){const e=this.leftPadding&&!this._hasIcon,t=this._hasIcon,i=this.showDivider||!this.noAutoDivider&&this._hasNextCategorySibling,a=this.detailHeading||this.heading,n=!a&&!this._hasIcon,s=this.detailView?{"column-count":String(this._detailColumnCount)}:{};return l`
154
+ }`;let p=(()=>{var s,p,y,v,f,b,_,w,x,C,M,L,I,S;let N,V,D,P,j,A,$,W,z,G,E,H,R,F,K,O,T=[d("kyn-header-category")],Y=[],B=r,q=[],J=[],Q=[],U=[],X=[],Z=[],ee=[],te=[],ie=[],ae=[],ne=[],se=[],re=[],oe=[],le=[],de=[],he=[],ce=[],me=[],ge=[],ue=[],ke=[],pe=[],ye=[],ve=[],fe=[],be=[],_e=[];return V=class extends B{get heading(){return a(this,s,"f")}set heading(e){n(this,s,e,"f")}get leftPadding(){return a(this,p,"f")}set leftPadding(e){n(this,p,e,"f")}get showDivider(){return a(this,y,"f")}set showDivider(e){n(this,y,e,"f")}get noAutoDivider(){return a(this,v,"f")}set noAutoDivider(e){n(this,v,e,"f")}get maxVisibleLinks(){return a(this,f,"f")}set maxVisibleLinks(e){n(this,f,e,"f")}get detailView(){return a(this,b,"f")}set detailView(e){n(this,b,e,"f")}get detailHeading(){return a(this,_,"f")}set detailHeading(e){n(this,_,e,"f")}get moreLabel(){return a(this,w,"f")}set moreLabel(e){n(this,w,e,"f")}get categoryId(){return a(this,x,"f")}set categoryId(e){n(this,x,e,"f")}get detailLinksPerColumn(){return a(this,C,"f")}set detailLinksPerColumn(e){n(this,C,e,"f")}get _hasIcon(){return a(this,M,"f")}set _hasIcon(e){n(this,M,e,"f")}get _hasNextCategorySibling(){return a(this,L,"f")}set _hasNextCategorySibling(e){n(this,L,e,"f")}get _showGeneratedMore(){return a(this,I,"f")}set _showGeneratedMore(e){n(this,I,e,"f")}get _detailColumnCount(){return a(this,S,"f")}set _detailColumnCount(e){n(this,S,e,"f")}_handleIconSlotChange(e){const t=e.target.assignedNodes({flatten:!0});this._hasIcon=t.length>0}_checkForNextCategorySibling(){var e;this._hasNextCategorySibling="KYN-HEADER-CATEGORY"===(null===(e=this.nextElementSibling)||void 0===e?void 0:e.tagName)||!1}_getRegularLinks(){return Array.from(this.children).filter((e=>"KYN-HEADER-LINK"===e.tagName&&"more"!==e.getAttribute("slot")))}_getCustomMoreNodes(){return Array.from(this.children).filter((e=>"more"===e.getAttribute("slot")))}_computeDetailColumnCount(e){if(e<=0)return 1;const t=Math.max(this.detailLinksPerColumn,1),i=Math.ceil(e/t);return Math.min(4,Math.max(1,i))}_syncLinks(){const e=this._getRegularLinks(),t=Number.isFinite(this.maxVisibleLinks)&&this.maxVisibleLinks>0,i=!this.detailView&&t?this.maxVisibleLinks:Number.POSITIVE_INFINITY;e.forEach(((e,t)=>{const a=t>=i;e.toggleAttribute("hidden",a)})),this._detailColumnCount=this.detailView?this._computeDetailColumnCount(e.length):1,this._showGeneratedMore=!this.detailView&&t&&e.length>i&&0===this._getCustomMoreNodes().length}_getResolvedCategoryId(){var e;return this.categoryId.trim()||(null===(e=this.getAttribute("id"))||void 0===e?void 0:e.trim())||""}_emitMoreClick(e){e.preventDefault(),e.stopPropagation(),this.dispatchEvent(new CustomEvent("on-more-click",{detail:{categoryId:this._getResolvedCategoryId()},bubbles:!0,composed:!0}))}_handleGeneratedMoreClick(e){this._emitMoreClick(e)}_handleGeneratedMoreKeydown(e){"Enter"!==e.key&&" "!==e.key||this._emitMoreClick(e)}_handleLinksSlotChange(){this._syncLinks()}_handleMoreSlotChange(){this._syncLinks()}connectedCallback(){super.connectedCallback(),this._checkForNextCategorySibling(),this._syncLinks()}updated(e){(e.has("maxVisibleLinks")||e.has("detailView")||e.has("detailLinksPerColumn"))&&this._syncLinks()}render(){const e=this.leftPadding&&!this._hasIcon,t=this._hasIcon,i=this.showDivider||!this.noAutoDivider&&this._hasNextCategorySibling,a=this.detailHeading||this.heading,n=!a&&!this._hasIcon,s=this.detailView?{"column-count":String(this._detailColumnCount)}:{};return l`
155
155
  <div
156
156
  class="category ${i?"divider":""} ${this.detailView?"detail-view":""} ${1===this._detailColumnCount?"detail-single-column":""}"
157
157
  >
@@ -182,5 +182,5 @@ slot[name=icon]::slotted(*) {
182
182
  <slot name="more" @slotchange=${this._handleMoreSlotChange}></slot>
183
183
  </div>
184
184
  </div>
185
- `}constructor(){super(...arguments),s.set(this,i(this,Y,"")),p.set(this,(i(this,B),i(this,q,!1))),y.set(this,(i(this,J),i(this,Q,!1))),v.set(this,(i(this,U),i(this,X,!0))),f.set(this,(i(this,Z),i(this,ee,Number.POSITIVE_INFINITY))),b.set(this,(i(this,te),i(this,ie,!1))),_.set(this,(i(this,ae),i(this,ne,""))),w.set(this,(i(this,se),i(this,re,"More"))),x.set(this,(i(this,oe),i(this,le,6))),C.set(this,(i(this,de),i(this,he,!1))),M.set(this,(i(this,ce),i(this,me,!1))),L.set(this,(i(this,ge),i(this,ue,!1))),N.set(this,(i(this,ke),i(this,pe,1))),i(this,ye)}},s=new WeakMap,p=new WeakMap,y=new WeakMap,v=new WeakMap,f=new WeakMap,b=new WeakMap,_=new WeakMap,w=new WeakMap,x=new WeakMap,C=new WeakMap,M=new WeakMap,L=new WeakMap,N=new WeakMap,e(I,"HeaderCategory"),(()=>{var e;const i="function"==typeof Symbol&&Symbol.metadata?Object.create(null!==(e=T[Symbol.metadata])&&void 0!==e?e:null):void 0;V=[h({type:String})],D=[h({type:Boolean})],P=[h({type:Boolean})],j=[h({type:Boolean})],A=[h({type:Number,attribute:!1})],$=[h({type:Boolean,attribute:!1})],z=[h({type:String,attribute:!1})],G=[h({type:String,attribute:!1})],W=[h({type:Number,attribute:!1})],E=[c()],H=[c()],F=[c()],K=[c()],t(I,null,V,{kind:"accessor",name:"heading",static:!1,private:!1,access:{has:e=>"heading"in e,get:e=>e.heading,set:(e,t)=>{e.heading=t}},metadata:i},Y,B),t(I,null,D,{kind:"accessor",name:"leftPadding",static:!1,private:!1,access:{has:e=>"leftPadding"in e,get:e=>e.leftPadding,set:(e,t)=>{e.leftPadding=t}},metadata:i},q,J),t(I,null,P,{kind:"accessor",name:"showDivider",static:!1,private:!1,access:{has:e=>"showDivider"in e,get:e=>e.showDivider,set:(e,t)=>{e.showDivider=t}},metadata:i},Q,U),t(I,null,j,{kind:"accessor",name:"noAutoDivider",static:!1,private:!1,access:{has:e=>"noAutoDivider"in e,get:e=>e.noAutoDivider,set:(e,t)=>{e.noAutoDivider=t}},metadata:i},X,Z),t(I,null,A,{kind:"accessor",name:"maxVisibleLinks",static:!1,private:!1,access:{has:e=>"maxVisibleLinks"in e,get:e=>e.maxVisibleLinks,set:(e,t)=>{e.maxVisibleLinks=t}},metadata:i},ee,te),t(I,null,$,{kind:"accessor",name:"detailView",static:!1,private:!1,access:{has:e=>"detailView"in e,get:e=>e.detailView,set:(e,t)=>{e.detailView=t}},metadata:i},ie,ae),t(I,null,z,{kind:"accessor",name:"detailHeading",static:!1,private:!1,access:{has:e=>"detailHeading"in e,get:e=>e.detailHeading,set:(e,t)=>{e.detailHeading=t}},metadata:i},ne,se),t(I,null,G,{kind:"accessor",name:"moreLabel",static:!1,private:!1,access:{has:e=>"moreLabel"in e,get:e=>e.moreLabel,set:(e,t)=>{e.moreLabel=t}},metadata:i},re,oe),t(I,null,W,{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},le,de),t(I,null,E,{kind:"accessor",name:"_hasIcon",static:!1,private:!1,access:{has:e=>"_hasIcon"in e,get:e=>e._hasIcon,set:(e,t)=>{e._hasIcon=t}},metadata:i},he,ce),t(I,null,H,{kind:"accessor",name:"_hasNextCategorySibling",static:!1,private:!1,access:{has:e=>"_hasNextCategorySibling"in e,get:e=>e._hasNextCategorySibling,set:(e,t)=>{e._hasNextCategorySibling=t}},metadata:i},me,ge),t(I,null,F,{kind:"accessor",name:"_showGeneratedMore",static:!1,private:!1,access:{has:e=>"_showGeneratedMore"in e,get:e=>e._showGeneratedMore,set:(e,t)=>{e._showGeneratedMore=t}},metadata:i},ue,ke),t(I,null,K,{kind:"accessor",name:"_detailColumnCount",static:!1,private:!1,access:{has:e=>"_detailColumnCount"in e,get:e=>e._detailColumnCount,set:(e,t)=>{e._detailColumnCount=t}},metadata:i},pe,ye),t(null,S={value:I},O,{kind:"class",name:I.name,metadata:i},null,R),I=S.value,i&&Object.defineProperty(I,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:i})})(),I.styles=o(k),i(I,R),I})();export{p as HeaderCategory};
185
+ `}constructor(){super(...arguments),s.set(this,i(this,q,"")),p.set(this,(i(this,J),i(this,Q,!1))),y.set(this,(i(this,U),i(this,X,!1))),v.set(this,(i(this,Z),i(this,ee,!0))),f.set(this,(i(this,te),i(this,ie,Number.POSITIVE_INFINITY))),b.set(this,(i(this,ae),i(this,ne,!1))),_.set(this,(i(this,se),i(this,re,""))),w.set(this,(i(this,oe),i(this,le,"More"))),x.set(this,(i(this,de),i(this,he,""))),C.set(this,(i(this,ce),i(this,me,6))),M.set(this,(i(this,ge),i(this,ue,!1))),L.set(this,(i(this,ke),i(this,pe,!1))),I.set(this,(i(this,ye),i(this,ve,!1))),S.set(this,(i(this,fe),i(this,be,1))),i(this,_e)}},s=new WeakMap,p=new WeakMap,y=new WeakMap,v=new WeakMap,f=new WeakMap,b=new WeakMap,_=new WeakMap,w=new WeakMap,x=new WeakMap,C=new WeakMap,M=new WeakMap,L=new WeakMap,I=new WeakMap,S=new WeakMap,e(V,"HeaderCategory"),(()=>{var e;const i="function"==typeof Symbol&&Symbol.metadata?Object.create(null!==(e=B[Symbol.metadata])&&void 0!==e?e:null):void 0;D=[h({type:String})],P=[h({type:Boolean})],j=[h({type:Boolean})],A=[h({type:Boolean})],$=[h({type:Number,attribute:!1})],W=[h({type:Boolean,attribute:!1})],z=[h({type:String,attribute:!1})],G=[h({type:String,attribute:!1})],E=[h({type:String,attribute:!1})],H=[h({type:Number,attribute:!1})],R=[c()],F=[c()],K=[c()],O=[c()],t(V,null,D,{kind:"accessor",name:"heading",static:!1,private:!1,access:{has:e=>"heading"in e,get:e=>e.heading,set:(e,t)=>{e.heading=t}},metadata:i},q,J),t(V,null,P,{kind:"accessor",name:"leftPadding",static:!1,private:!1,access:{has:e=>"leftPadding"in e,get:e=>e.leftPadding,set:(e,t)=>{e.leftPadding=t}},metadata:i},Q,U),t(V,null,j,{kind:"accessor",name:"showDivider",static:!1,private:!1,access:{has:e=>"showDivider"in e,get:e=>e.showDivider,set:(e,t)=>{e.showDivider=t}},metadata:i},X,Z),t(V,null,A,{kind:"accessor",name:"noAutoDivider",static:!1,private:!1,access:{has:e=>"noAutoDivider"in e,get:e=>e.noAutoDivider,set:(e,t)=>{e.noAutoDivider=t}},metadata:i},ee,te),t(V,null,$,{kind:"accessor",name:"maxVisibleLinks",static:!1,private:!1,access:{has:e=>"maxVisibleLinks"in e,get:e=>e.maxVisibleLinks,set:(e,t)=>{e.maxVisibleLinks=t}},metadata:i},ie,ae),t(V,null,W,{kind:"accessor",name:"detailView",static:!1,private:!1,access:{has:e=>"detailView"in e,get:e=>e.detailView,set:(e,t)=>{e.detailView=t}},metadata:i},ne,se),t(V,null,z,{kind:"accessor",name:"detailHeading",static:!1,private:!1,access:{has:e=>"detailHeading"in e,get:e=>e.detailHeading,set:(e,t)=>{e.detailHeading=t}},metadata:i},re,oe),t(V,null,G,{kind:"accessor",name:"moreLabel",static:!1,private:!1,access:{has:e=>"moreLabel"in e,get:e=>e.moreLabel,set:(e,t)=>{e.moreLabel=t}},metadata:i},le,de),t(V,null,E,{kind:"accessor",name:"categoryId",static:!1,private:!1,access:{has:e=>"categoryId"in e,get:e=>e.categoryId,set:(e,t)=>{e.categoryId=t}},metadata:i},he,ce),t(V,null,H,{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},me,ge),t(V,null,R,{kind:"accessor",name:"_hasIcon",static:!1,private:!1,access:{has:e=>"_hasIcon"in e,get:e=>e._hasIcon,set:(e,t)=>{e._hasIcon=t}},metadata:i},ue,ke),t(V,null,F,{kind:"accessor",name:"_hasNextCategorySibling",static:!1,private:!1,access:{has:e=>"_hasNextCategorySibling"in e,get:e=>e._hasNextCategorySibling,set:(e,t)=>{e._hasNextCategorySibling=t}},metadata:i},pe,ye),t(V,null,K,{kind:"accessor",name:"_showGeneratedMore",static:!1,private:!1,access:{has:e=>"_showGeneratedMore"in e,get:e=>e._showGeneratedMore,set:(e,t)=>{e._showGeneratedMore=t}},metadata:i},ve,fe),t(V,null,O,{kind:"accessor",name:"_detailColumnCount",static:!1,private:!1,access:{has:e=>"_detailColumnCount"in e,get:e=>e._detailColumnCount,set:(e,t)=>{e._detailColumnCount=t}},metadata:i},be,_e),t(null,N={value:V},T,{kind:"class",name:V.name,metadata:i},null,Y),V=N.value,i&&Object.defineProperty(V,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:i})})(),V.styles=o(k),i(V,Y),V})();export{p as HeaderCategory};
186
186
  //# sourceMappingURL=headerCategory.js.map