@kyndryl-design-system/shidoka-applications 2.118.3 → 2.119.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{__setFunctionName as e,__esDecorate as t,__runInitializers as i,__classPrivateFieldGet as n,__classPrivateFieldSet as a}from"tslib";import{unsafeSVG as o}from"lit-html/directives/unsafe-svg.js";import{css as r,LitElement as s,unsafeCSS as l,html as
|
|
1
|
+
import{__setFunctionName as e,__esDecorate as t,__runInitializers as i,__classPrivateFieldGet as n,__classPrivateFieldSet as a}from"tslib";import{unsafeSVG as o}from"lit-html/directives/unsafe-svg.js";import{css as r,LitElement as s,unsafeCSS as l,html as d}from"lit";import{customElement as h,property as c,state as u,queryAssignedElements as m}from"lit/decorators.js";import{classMap as p}from"lit/directives/class-map.js";import{styleMap as v}from"lit/directives/style-map.js";import{ifDefined as k}from"lit/directives/if-defined.js";import{debounce as g}from"../../../common/helpers/helpers.js";import"../../reusable/textInput/textInput.js";import{d as f,f as y,g as x}from"../../../vendor/@kyndryl-design-system/shidoka-icons-DG_R4Jwh.js";import"deepmerge-ts";import"../../reusable/button/button.js";import"lit-html/directives/class-map.js";import"../../reusable/button/defs.js";import"../../../common/mixins/form-input.js";var w=r`*,
|
|
2
2
|
*::before,
|
|
3
3
|
*::after {
|
|
4
4
|
box-sizing: border-box;
|
|
@@ -301,8 +301,9 @@ import{__setFunctionName as e,__esDecorate as t,__runInitializers as i,__classPr
|
|
|
301
301
|
transition: background-color 150ms ease-out, color 150ms ease-out, outline-color 150ms ease-out;
|
|
302
302
|
outline: 2px solid transparent;
|
|
303
303
|
outline-offset: -2px;
|
|
304
|
-
padding:
|
|
304
|
+
padding: 8px 12px 8px 8px;
|
|
305
305
|
width: 100%;
|
|
306
|
+
height: 36px;
|
|
306
307
|
box-sizing: border-box;
|
|
307
308
|
min-width: 0;
|
|
308
309
|
--kyn-icon-selector-hover-opacity: 0;
|
|
@@ -324,10 +325,12 @@ import{__setFunctionName as e,__esDecorate as t,__runInitializers as i,__classPr
|
|
|
324
325
|
.nav-link:hover {
|
|
325
326
|
background: var(--kd-color-background-menu-state-hover);
|
|
326
327
|
color: var(--kd-color-text-button-dark-primary);
|
|
328
|
+
--kyn-icon-selector-checked-color: var(--kd-color-text-button-dark-primary);
|
|
327
329
|
}
|
|
328
330
|
.nav-link:active {
|
|
329
331
|
background: var(--kd-color-background-menu-state-pressed);
|
|
330
332
|
color: var(--kd-color-text-button-dark-primary);
|
|
333
|
+
--kyn-icon-selector-checked-color: var(--kd-color-text-button-dark-primary);
|
|
331
334
|
}
|
|
332
335
|
.nav-link.active {
|
|
333
336
|
color: var(--kd-color-text-link-level-default);
|
|
@@ -335,6 +338,9 @@ import{__setFunctionName as e,__esDecorate as t,__runInitializers as i,__classPr
|
|
|
335
338
|
.nav-link.active:hover {
|
|
336
339
|
background: var(--kd-color-background-menu-state-hover);
|
|
337
340
|
color: var(--kd-color-text-button-dark-primary);
|
|
341
|
+
--kyn-icon-selector-checked-color: var(
|
|
342
|
+
--kd-color-text-button-dark-primary
|
|
343
|
+
);
|
|
338
344
|
}
|
|
339
345
|
.open .nav-link {
|
|
340
346
|
font-weight: var(--kd-font-weight-medium);
|
|
@@ -344,6 +350,9 @@ import{__setFunctionName as e,__esDecorate as t,__runInitializers as i,__classPr
|
|
|
344
350
|
.open .nav-link:hover {
|
|
345
351
|
background: var(--kd-color-background-menu-state-hover);
|
|
346
352
|
color: var(--kd-color-text-button-dark-primary);
|
|
353
|
+
--kyn-icon-selector-checked-color: var(
|
|
354
|
+
--kd-color-text-button-dark-primary
|
|
355
|
+
);
|
|
347
356
|
}
|
|
348
357
|
.nav-link ::slotted(svg) {
|
|
349
358
|
display: flex;
|
|
@@ -453,10 +462,16 @@ import{__setFunctionName as e,__esDecorate as t,__runInitializers as i,__classPr
|
|
|
453
462
|
.menu.open .interactive:hover {
|
|
454
463
|
background-color: var(--kd-color-background-menu-state-hover);
|
|
455
464
|
color: var(--kd-color-text-button-dark-primary);
|
|
465
|
+
--kyn-icon-selector-checked-color: var(
|
|
466
|
+
--kd-color-text-button-dark-primary
|
|
467
|
+
);
|
|
456
468
|
}
|
|
457
469
|
.menu.open .interactive:active {
|
|
458
470
|
background: var(--kd-color-background-menu-state-pressed);
|
|
459
471
|
color: var(--kd-color-text-button-dark-primary);
|
|
472
|
+
--kyn-icon-selector-checked-color: var(
|
|
473
|
+
--kd-color-text-button-dark-primary
|
|
474
|
+
);
|
|
460
475
|
}
|
|
461
476
|
@media (min-width: 42rem) {
|
|
462
477
|
.menu.level--1 .wrapper {
|
|
@@ -705,7 +720,7 @@ kyn-text-input {
|
|
|
705
720
|
overflow: visible;
|
|
706
721
|
text-overflow: clip;
|
|
707
722
|
white-space: normal;
|
|
708
|
-
}`;let b=(()=>{var r,b,_,T,C,S,L,W,N,M,z,E,P,O,A,$,j,q,B,F,R,I,D,H,G,K,U,Y;let V,X,J,Q,Z,ee,te,ie,ne,ae,oe,re,se,le,he,
|
|
723
|
+
}`;let b=(()=>{var r,b,_,T,C,S,L,W,N,M,z,E,P,O,A,$,j,q,B,F,R,I,D,H,G,K,U,Y;let V,X,J,Q,Z,ee,te,ie,ne,ae,oe,re,se,le,de,he,ce,ue,me,pe,ve,ke,ge,fe,ye,xe,we,be,_e,Te,Ce=[h("kyn-header-link")],Se=[],Le=s,We=[],Ne=[],Me=[],ze=[],Ee=[],Pe=[],Oe=[],Ae=[],$e=[],je=[],qe=[],Be=[],Fe=[],Re=[],Ie=[],De=[],He=[],Ge=[],Ke=[],Ue=[],Ye=[],Ve=[],Xe=[],Je=[],Qe=[],Ze=[],et=[],tt=[],it=[],nt=[],at=[],ot=[],rt=[],st=[],lt=[],dt=[],ht=[],ct=[],ut=[],mt=[],pt=[],vt=[],kt=[],gt=[],ft=[],yt=[],xt=[],wt=[],bt=[],_t=[],Tt=[],Ct=[],St=[],Lt=[],Wt=[],Nt=[];return X=class extends Le{constructor(){super(...arguments),r.set(this,i(this,We,!1)),b.set(this,(i(this,Ne),i(this,Me,""))),_.set(this,(i(this,ze),i(this,Ee,"_self"))),T.set(this,(i(this,Pe),i(this,Oe,""))),C.set(this,(i(this,Ae),i(this,$e,!1))),S.set(this,(i(this,je),i(this,qe,1))),L.set(this,(i(this,Be),i(this,Fe,!1))),W.set(this,(i(this,Re),i(this,Ie,"Search"))),N.set(this,(i(this,De),i(this,He,6))),M.set(this,(i(this,Ge),i(this,Ke,0))),z.set(this,(i(this,Ue),i(this,Ye,!1))),E.set(this,(i(this,Ve),i(this,Xe,"Back"))),P.set(this,(i(this,Je),i(this,Qe,!1))),O.set(this,(i(this,Ze),i(this,et,""))),A.set(this,(i(this,tt),i(this,it,!1))),$.set(this,(i(this,nt),i(this,at,""))),j.set(this,(i(this,ot),i(this,rt,!1))),q.set(this,(i(this,st),i(this,lt,!1))),B.set(this,(i(this,dt),i(this,ht,0))),F.set(this,(i(this,ct),i(this,ut,!1))),R.set(this,(i(this,mt),i(this,pt,!1))),I.set(this,(i(this,vt),i(this,kt,""))),D.set(this,(i(this,gt),i(this,ft,0))),H.set(this,(i(this,yt),i(this,xt,void 0))),this._enterTimer=i(this,wt),G.set(this,i(this,bt,void 0)),this._viewChangeInProgress=(i(this,_t),!1),K.set(this,i(this,Tt,!1)),U.set(this,(i(this,Ct),i(this,St,!1))),this._truncateObserver=i(this,Lt),this._observedNav=null,Y.set(this,i(this,Wt,{})),this._handleColumnCountChange=(i(this,Nt),e=>{const t=e.detail;void 0!==(null==t?void 0:t.columnCount)&&(this.flyoutColumns=t.columnCount,this.fixedColumnWidths=Boolean(t.fixedColumnWidths))}),this._debounceResize=g((()=>{this.determineLevel(),this.open&&this._positionMenu()})),this._handleDocumentClick=e=>this.handleClickOut(e),this._handleNavChange=()=>{this._viewChangeInProgress=!0,clearTimeout(this._viewChangeTimer),this._viewChangeTimer=setTimeout((()=>{this._viewChangeInProgress=!1}),500)},this._syncInheritedTruncate=()=>{var e,t;this._inheritedTruncate=this._isInTruncatingNav(),this._inGlobalSwitcherNav=null!==(t=null===(e=this._resolveOwningNav())||void 0===e?void 0:e.classList.contains("global-switcher-nav"))&&void 0!==t&&t}}get open(){return n(this,r,"f")}set open(e){a(this,r,e,"f")}get href(){return n(this,b,"f")}set href(e){a(this,b,e,"f")}get target(){return n(this,_,"f")}set target(e){a(this,_,e,"f")}get rel(){return n(this,T,"f")}set rel(e){a(this,T,e,"f")}get isActive(){return n(this,C,"f")}set isActive(e){a(this,C,e,"f")}get level(){return n(this,S,"f")}set level(e){a(this,S,e,"f")}get divider(){return n(this,L,"f")}set divider(e){a(this,L,e,"f")}get searchLabel(){return n(this,W,"f")}set searchLabel(e){a(this,W,e,"f")}get searchThreshold(){return n(this,N,"f")}set searchThreshold(e){a(this,N,e,"f")}get linksPerColumn(){return n(this,M,"f")}set linksPerColumn(e){a(this,M,e,"f")}get hideSearch(){return n(this,z,"f")}set hideSearch(e){a(this,z,e,"f")}get backText(){return n(this,E,"f")}set backText(e){a(this,E,e,"f")}get leftPadding(){return n(this,P,"f")}set leftPadding(e){a(this,P,e,"f")}get linkTitle(){return n(this,O,"f")}set linkTitle(e){a(this,O,e,"f")}get truncate(){return n(this,A,"f")}set truncate(e){a(this,A,e,"f")}get _autoTitle(){return n(this,$,"f")}set _autoTitle(e){a(this,$,e,"f")}get hasCategorical(){return n(this,j,"f")}set hasCategorical(e){a(this,j,e,"f")}get hasMultiColumn(){return n(this,q,"f")}set hasMultiColumn(e){a(this,q,e,"f")}get flyoutColumns(){return n(this,B,"f")}set flyoutColumns(e){a(this,B,e,"f")}get fixedColumnWidths(){return n(this,F,"f")}set fixedColumnWidths(e){a(this,F,e,"f")}get fullWidthFlyout(){return n(this,R,"f")}set fullWidthFlyout(e){a(this,R,e,"f")}get _searchTerm(){return n(this,I,"f")}set _searchTerm(e){a(this,I,e,"f")}get _slottedLinkCount(){return n(this,D,"f")}set _slottedLinkCount(e){a(this,D,e,"f")}get slottedEls(){return n(this,H,"f")}set slottedEls(e){a(this,H,e,"f")}get _leaveTimer(){return n(this,G,"f")}set _leaveTimer(e){a(this,G,e,"f")}get _inheritedTruncate(){return n(this,K,"f")}set _inheritedTruncate(e){a(this,K,e,"f")}get _inGlobalSwitcherNav(){return n(this,U,"f")}set _inGlobalSwitcherNav(e){a(this,U,e,"f")}get menuPosition(){return n(this,Y,"f")}set menuPosition(e){a(this,Y,e,"f")}render(){const e={menu:this.slottedEls.length,[`level--${this.level}`]:!0,divider:this.divider,"full-width-flyout":this.fullWidthFlyout,open:this.open||1===this.level&&this.isActive},t=this.truncate||this._inheritedTruncate,i={"nav-link":!0,active:this.isActive,interactive:1==this.level,"padding-left":this.leftPadding,truncate:t},n={menu__content:!0,slotted:this.slottedEls.length},a=this.querySelectorAll(":scope > kyn-header-link, :scope > kyn-header-category > kyn-header-link"),r=!this.hideSearch&&a.length>=this.searchThreshold,s={wrapper:!0,"no-search":!r};return d`
|
|
709
724
|
<div
|
|
710
725
|
class="${p(e)}"
|
|
711
726
|
@pointerleave=${e=>this.handlePointerLeave(e)}
|
|
@@ -723,7 +738,7 @@ kyn-text-input {
|
|
|
723
738
|
<slot name="icon"></slot>
|
|
724
739
|
<slot @slotchange=${this._handleDefaultSlotChange}></slot>
|
|
725
740
|
|
|
726
|
-
${this.slottedEls.length?
|
|
741
|
+
${this.slottedEls.length?d` <span class="arrow">${o(f)}</span> `:null}
|
|
727
742
|
</a>
|
|
728
743
|
|
|
729
744
|
<div
|
|
@@ -739,7 +754,7 @@ kyn-text-input {
|
|
|
739
754
|
<span>${o(y)}</span>
|
|
740
755
|
${this.backText}
|
|
741
756
|
</button>
|
|
742
|
-
${r?
|
|
757
|
+
${r?d`
|
|
743
758
|
<kyn-text-input
|
|
744
759
|
hideLabel
|
|
745
760
|
size="sm"
|
|
@@ -768,5 +783,5 @@ kyn-text-input {
|
|
|
768
783
|
</div>
|
|
769
784
|
</div>
|
|
770
785
|
</div>
|
|
771
|
-
`}get _linksColumnStyles(){if(!this.hasCategorical&&this.linksPerColumn>0&&this._slottedLinkCount>this.linksPerColumn){return{"column-count":Math.ceil(this._slottedLinkCount/this.linksPerColumn).toString()}}return{}}_handleSearch(e){this._searchTerm=e.detail.value.toLowerCase(),this._searchFilter()}_searchFilter(){this.querySelectorAll(":scope > kyn-header-link, :scope > kyn-header-category > kyn-header-link").forEach((e=>{var t,i;const n=null===(t=e.shadowRoot)||void 0===t?void 0:t.querySelector("slot:not([name])"),a=null!==(i=null==n?void 0:n.assignedNodes({flatten:!0}))&&void 0!==i?i:[];let o="";for(let e=0;e<a.length;e++)o+=a[e].textContent.trim();o.toLowerCase().includes(this._searchTerm)?e.style.display="block":e.style.display="none"})),this._positionMenu()}_handleDefaultSlotChange(e){var t,i;const n=e.target.assignedNodes({flatten:!0});let a="";for(const e of n)a+=null!==(i=null===(t=e.textContent)||void 0===t?void 0:t.trim())&&void 0!==i?i:"";this._autoTitle=a.trim()}_handleBack(e){var t;e&&(e.preventDefault(),e.stopPropagation());const i=this.closest("kyn-header-categories");if(null==i?void 0:i.handleBackClick){i.handleBackClick(e);return(null!==(t=this.closest("kyn-header-nav"))&&void 0!==t?t:i).querySelectorAll("kyn-header-link[open]").forEach((e=>{e.removeAttribute("open"),"open"in e&&(e.open=!1)})),this._searchTerm="",void this._searchFilter()}this.open=!1,this._searchTerm="",this._searchFilter()}_handleLinksSlotChange(){var e;const t=null!==this.querySelector("kyn-header-categories"),i=null!==this.querySelector("kyn-header-category"),n=this.querySelector("kyn-tab-panel[visible] kyn-header-categories")||this.querySelector("kyn-header-categories");if(this.hasCategorical=t||i,this.hasMultiColumn=t,this.fixedColumnWidths=null!==(e=null==n?void 0:n.hasAttribute("fixed-column-widths"))&&void 0!==e&&e,n){const e=n.getAttribute("data-columns");this.flyoutColumns=e&&parseInt(e,10)||0}else this.flyoutColumns=0;const a=this.querySelectorAll(":scope > kyn-header-link");this._slottedLinkCount=a.length,this.requestUpdate()}get _isDesktopViewport(){return"undefined"==typeof window||window.innerWidth>=672}handlePointerEnter(e){"mouse"===e.pointerType&&this.slottedEls.length&&this._isDesktopViewport&&(clearTimeout(this._leaveTimer),this._closeOtherOpenLinks(),this._enterTimer=setTimeout((()=>{this._closeOtherOpenLinks(),this.open=!0}),150))}_closeOtherOpenLinks(){if(1===this.level){const e=this.parentElement;if(e){e.querySelectorAll(":scope > kyn-header-link").forEach((e=>{var t,i;e!==this&&(e._enterTimer&&(clearTimeout(e._enterTimer),e._enterTimer=void 0),e._leaveTimer&&(clearTimeout(e._leaveTimer),e._leaveTimer=void 0),e.open&&(e.open=!1,e.removeAttribute("open"),null===(i=(t=e).requestUpdate)||void 0===i||i.call(t)))}))}return}const e=this.closest("kyn-header-nav")||this.closest("kyn-tab-panel")||this.closest(".menu__content");if(e){e.querySelectorAll("kyn-header-link").forEach((e=>{var t,i;e!==this&&e.level===this.level&&(e._enterTimer&&(clearTimeout(e._enterTimer),e._enterTimer=void 0),e._leaveTimer&&(clearTimeout(e._leaveTimer),e._leaveTimer=void 0),e.open&&(e.open=!1,e.removeAttribute("open"),null===(i=(t=e).requestUpdate)||void 0===i||i.call(t)))}))}}handlePointerLeave(e){if(this._viewChangeInProgress)return;this._shouldAutoCollapse()&&"mouse"===e.pointerType&&this.slottedEls.length&&""===this._searchTerm&&this._isDesktopViewport&&(clearTimeout(this._enterTimer),this._leaveTimer=setTimeout((()=>{this.open=!1}),150))}_shouldAutoCollapse(){if(!this.hasCategorical&&!this.fullWidthFlyout)return!0;const e=this.closest("kyn-header-nav");return!(null==e?void 0:e.autoOpenFlyout)}handleClick(e){let t=!1;this.slottedEls.length?(t=!0,e.preventDefault(),this.open||this._closeOtherOpenLinks(),this.open=!this.open):this._closeOtherOpenLinks();const i=new CustomEvent("on-click",{detail:{origEvent:e,defaultPrevented:t}});this.dispatchEvent(i)}handleClickOut(e){e.composedPath().includes(this)||(this.open=!1,this._searchTerm="",this._searchFilter())}determineLevel(){var e,t,i;let n=1,a=this.parentNode;for(;a;){if("KYN-HEADER-LINK"===a.nodeName){n=(null!==(e=a.level)&&void 0!==e?e:1)+1;break}if("KYN-HEADER-CATEGORY"===a.nodeName&&"KYN-HEADER-LINK"===(null===(t=a.parentNode)||void 0===t?void 0:t.nodeName)){n=(null!==(i=a.parentNode.level)&&void 0!==i?i:1)+1;break}if(window.innerWidth<672&&"KYN-HEADER-FLYOUT"===a.nodeName){n=2;break}a=a.parentNode}this.level=n}_positionMenu(){var e,t,i,n;const a=null===(e=this.getBoundingClientRect)||void 0===e?void 0:e.call(this),o=null===(t=this.shadowRoot)||void 0===t?void 0:t.querySelector(".menu__content"),r=null===(i=null==o?void 0:o.getBoundingClientRect)||void 0===i?void 0:i.call(o);if(!a||!r)return;const s=a.top+a.height/2,l=r.height/2,h=s+l>window.innerHeight?s-l-(s+l-window.innerHeight)-16:s-l;if(1===this.level){let e=0;const t=this.closest("kyn-header-nav");if(t){const i=null===(n=t.shadowRoot)||void 0===n?void 0:n.querySelector(".menu__content");i&&(e=i.offsetHeight)}this.menuPosition={top:"64px",left:"0px",minHeight:e+"px"}}else{const e=h<64?64:h;this.menuPosition={top:e+"px",left:a.right+12+"px"}}}firstUpdated(){this.determineLevel(),this._handleLinksSlotChange()}updated(e){e.has("open")&&this.open&&requestAnimationFrame((()=>{this._positionMenu()})),e.has("flyoutColumns")&&this.open&&requestAnimationFrame((()=>{this._positionMenu()}))}connectedCallback(){super.connectedCallback(),document.addEventListener("click",this._handleDocumentClick),window.addEventListener("resize",this._debounceResize),this.addEventListener("on-column-count-change",this._handleColumnCountChange),this.addEventListener("on-nav-change",this._handleNavChange),queueMicrotask((()=>{this._observeParentNavTruncate()}))}_resolveOwningNav(){var e,t;const i=this.closest("kyn-header-nav");if(i)return i;let n=this.getRootNode();for(;n instanceof ShadowRoot;){const i=null===(t=(e=n.host).closest)||void 0===t?void 0:t.call(e,"kyn-header-nav");if(i)return i;n=n.host.getRootNode()}return null}_observeParentNavTruncate(){const e=this._resolveOwningNav();this._observedNav!==e?(this._truncateObserver&&(this._truncateObserver.disconnect(),this._truncateObserver=void 0),this._observedNav=e,e&&(this._truncateObserver=new MutationObserver((()=>{this._syncInheritedTruncate()})),this._truncateObserver.observe(e,{attributes:!0,attributeFilter:["truncate-links"]})),this._syncInheritedTruncate()):this._syncInheritedTruncate()}_isInTruncatingNav(){var e,t;return null!==(t=null===(e=this._resolveOwningNav())||void 0===e?void 0:e.hasAttribute("truncate-links"))&&void 0!==t&&t}disconnectedCallback(){this._enterTimer&&(clearTimeout(this._enterTimer),this._enterTimer=void 0),this._leaveTimer&&(clearTimeout(this._leaveTimer),this._leaveTimer=void 0),this._viewChangeTimer&&(clearTimeout(this._viewChangeTimer),this._viewChangeTimer=void 0),document.removeEventListener("click",this._handleDocumentClick),window.removeEventListener("resize",this._debounceResize),this.removeEventListener("on-column-count-change",this._handleColumnCountChange),this.removeEventListener("on-nav-change",this._handleNavChange),this._truncateObserver&&(this._truncateObserver.disconnect(),this._truncateObserver=void 0),this._observedNav=null,super.disconnectedCallback()}},r=new WeakMap,b=new WeakMap,_=new WeakMap,T=new WeakMap,C=new WeakMap,S=new WeakMap,L=new WeakMap,W=new WeakMap,N=new WeakMap,M=new WeakMap,z=new WeakMap,E=new WeakMap,P=new WeakMap,O=new WeakMap,A=new WeakMap,$=new WeakMap,j=new WeakMap,q=new WeakMap,B=new WeakMap,F=new WeakMap,R=new WeakMap,I=new WeakMap,D=new WeakMap,H=new WeakMap,G=new WeakMap,K=new WeakMap,U=new WeakMap,Y=new WeakMap,e(X,"HeaderLink"),(()=>{var e;const i="function"==typeof Symbol&&Symbol.metadata?Object.create(null!==(e=Le[Symbol.metadata])&&void 0!==e?e:null):void 0;J=[c({type:Boolean,reflect:!0})],Q=[c({type:String})],Z=[c({type:String})],ee=[c({type:String})],te=[c({type:Boolean})],ie=[u()],ne=[c({type:Boolean})],ae=[c({type:String})],oe=[c({type:Number})],re=[c({type:Number})],se=[c({type:Boolean})],le=[c({type:String})],he=[c({type:Boolean})],de=[c({type:String,attribute:"link-title"})],ce=[c({type:Boolean,reflect:!0})],ue=[u()],me=[c({type:Boolean,reflect:!0,attribute:"has-categorical"})],pe=[c({type:Boolean,reflect:!0,attribute:"has-multi-column"})],ve=[c({type:Number,reflect:!0,attribute:"data-flyout-columns"})],ke=[c({type:Boolean,reflect:!0,attribute:"fixed-column-widths"})],ge=[c({type:Boolean,reflect:!0,attribute:"full-width-flyout"})],fe=[u()],ye=[u()],xe=[m({slot:"links"})],we=[u()],be=[u()],_e=[c({type:Boolean,reflect:!0,attribute:"global-switcher-nav"})],Te=[u()],t(X,null,J,{kind:"accessor",name:"open",static:!1,private:!1,access:{has:e=>"open"in e,get:e=>e.open,set:(e,t)=>{e.open=t}},metadata:i},We,Ne),t(X,null,Q,{kind:"accessor",name:"href",static:!1,private:!1,access:{has:e=>"href"in e,get:e=>e.href,set:(e,t)=>{e.href=t}},metadata:i},Me,ze),t(X,null,Z,{kind:"accessor",name:"target",static:!1,private:!1,access:{has:e=>"target"in e,get:e=>e.target,set:(e,t)=>{e.target=t}},metadata:i},Ee,Pe),t(X,null,ee,{kind:"accessor",name:"rel",static:!1,private:!1,access:{has:e=>"rel"in e,get:e=>e.rel,set:(e,t)=>{e.rel=t}},metadata:i},Oe,Ae),t(X,null,te,{kind:"accessor",name:"isActive",static:!1,private:!1,access:{has:e=>"isActive"in e,get:e=>e.isActive,set:(e,t)=>{e.isActive=t}},metadata:i},$e,je),t(X,null,ie,{kind:"accessor",name:"level",static:!1,private:!1,access:{has:e=>"level"in e,get:e=>e.level,set:(e,t)=>{e.level=t}},metadata:i},qe,Be),t(X,null,ne,{kind:"accessor",name:"divider",static:!1,private:!1,access:{has:e=>"divider"in e,get:e=>e.divider,set:(e,t)=>{e.divider=t}},metadata:i},Fe,Re),t(X,null,ae,{kind:"accessor",name:"searchLabel",static:!1,private:!1,access:{has:e=>"searchLabel"in e,get:e=>e.searchLabel,set:(e,t)=>{e.searchLabel=t}},metadata:i},Ie,De),t(X,null,oe,{kind:"accessor",name:"searchThreshold",static:!1,private:!1,access:{has:e=>"searchThreshold"in e,get:e=>e.searchThreshold,set:(e,t)=>{e.searchThreshold=t}},metadata:i},He,Ge),t(X,null,re,{kind:"accessor",name:"linksPerColumn",static:!1,private:!1,access:{has:e=>"linksPerColumn"in e,get:e=>e.linksPerColumn,set:(e,t)=>{e.linksPerColumn=t}},metadata:i},Ke,Ue),t(X,null,se,{kind:"accessor",name:"hideSearch",static:!1,private:!1,access:{has:e=>"hideSearch"in e,get:e=>e.hideSearch,set:(e,t)=>{e.hideSearch=t}},metadata:i},Ye,Ve),t(X,null,le,{kind:"accessor",name:"backText",static:!1,private:!1,access:{has:e=>"backText"in e,get:e=>e.backText,set:(e,t)=>{e.backText=t}},metadata:i},Xe,Je),t(X,null,he,{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},Qe,Ze),t(X,null,de,{kind:"accessor",name:"linkTitle",static:!1,private:!1,access:{has:e=>"linkTitle"in e,get:e=>e.linkTitle,set:(e,t)=>{e.linkTitle=t}},metadata:i},et,tt),t(X,null,ce,{kind:"accessor",name:"truncate",static:!1,private:!1,access:{has:e=>"truncate"in e,get:e=>e.truncate,set:(e,t)=>{e.truncate=t}},metadata:i},it,nt),t(X,null,ue,{kind:"accessor",name:"_autoTitle",static:!1,private:!1,access:{has:e=>"_autoTitle"in e,get:e=>e._autoTitle,set:(e,t)=>{e._autoTitle=t}},metadata:i},at,ot),t(X,null,me,{kind:"accessor",name:"hasCategorical",static:!1,private:!1,access:{has:e=>"hasCategorical"in e,get:e=>e.hasCategorical,set:(e,t)=>{e.hasCategorical=t}},metadata:i},rt,st),t(X,null,pe,{kind:"accessor",name:"hasMultiColumn",static:!1,private:!1,access:{has:e=>"hasMultiColumn"in e,get:e=>e.hasMultiColumn,set:(e,t)=>{e.hasMultiColumn=t}},metadata:i},lt,ht),t(X,null,ve,{kind:"accessor",name:"flyoutColumns",static:!1,private:!1,access:{has:e=>"flyoutColumns"in e,get:e=>e.flyoutColumns,set:(e,t)=>{e.flyoutColumns=t}},metadata:i},dt,ct),t(X,null,ke,{kind:"accessor",name:"fixedColumnWidths",static:!1,private:!1,access:{has:e=>"fixedColumnWidths"in e,get:e=>e.fixedColumnWidths,set:(e,t)=>{e.fixedColumnWidths=t}},metadata:i},ut,mt),t(X,null,ge,{kind:"accessor",name:"fullWidthFlyout",static:!1,private:!1,access:{has:e=>"fullWidthFlyout"in e,get:e=>e.fullWidthFlyout,set:(e,t)=>{e.fullWidthFlyout=t}},metadata:i},pt,vt),t(X,null,fe,{kind:"accessor",name:"_searchTerm",static:!1,private:!1,access:{has:e=>"_searchTerm"in e,get:e=>e._searchTerm,set:(e,t)=>{e._searchTerm=t}},metadata:i},kt,gt),t(X,null,ye,{kind:"accessor",name:"_slottedLinkCount",static:!1,private:!1,access:{has:e=>"_slottedLinkCount"in e,get:e=>e._slottedLinkCount,set:(e,t)=>{e._slottedLinkCount=t}},metadata:i},ft,yt),t(X,null,xe,{kind:"accessor",name:"slottedEls",static:!1,private:!1,access:{has:e=>"slottedEls"in e,get:e=>e.slottedEls,set:(e,t)=>{e.slottedEls=t}},metadata:i},xt,wt),t(X,null,we,{kind:"accessor",name:"_leaveTimer",static:!1,private:!1,access:{has:e=>"_leaveTimer"in e,get:e=>e._leaveTimer,set:(e,t)=>{e._leaveTimer=t}},metadata:i},bt,_t),t(X,null,be,{kind:"accessor",name:"_inheritedTruncate",static:!1,private:!1,access:{has:e=>"_inheritedTruncate"in e,get:e=>e._inheritedTruncate,set:(e,t)=>{e._inheritedTruncate=t}},metadata:i},Tt,Ct),t(X,null,_e,{kind:"accessor",name:"_inGlobalSwitcherNav",static:!1,private:!1,access:{has:e=>"_inGlobalSwitcherNav"in e,get:e=>e._inGlobalSwitcherNav,set:(e,t)=>{e._inGlobalSwitcherNav=t}},metadata:i},St,Lt),t(X,null,Te,{kind:"accessor",name:"menuPosition",static:!1,private:!1,access:{has:e=>"menuPosition"in e,get:e=>e.menuPosition,set:(e,t)=>{e.menuPosition=t}},metadata:i},Wt,Nt),t(null,V={value:X},Ce,{kind:"class",name:X.name,metadata:i},null,Se),X=V.value,i&&Object.defineProperty(X,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:i})})(),X.styles=l(w),i(X,Se),X})();export{b as HeaderLink};
|
|
786
|
+
`}get _linksColumnStyles(){if(!this.hasCategorical&&this.linksPerColumn>0&&this._slottedLinkCount>this.linksPerColumn){return{"column-count":Math.ceil(this._slottedLinkCount/this.linksPerColumn).toString()}}return{}}_handleSearch(e){this._searchTerm=e.detail.value.toLowerCase(),this._searchFilter()}_searchFilter(){this.querySelectorAll(":scope > kyn-header-link, :scope > kyn-header-category > kyn-header-link").forEach((e=>{var t,i;const n=null===(t=e.shadowRoot)||void 0===t?void 0:t.querySelector("slot:not([name])"),a=null!==(i=null==n?void 0:n.assignedNodes({flatten:!0}))&&void 0!==i?i:[];let o="";for(let e=0;e<a.length;e++)o+=a[e].textContent.trim();o.toLowerCase().includes(this._searchTerm)?e.style.display="block":e.style.display="none"})),this._positionMenu()}_handleDefaultSlotChange(e){var t,i;const n=e.target.assignedNodes({flatten:!0});let a="";for(const e of n)a+=null!==(i=null===(t=e.textContent)||void 0===t?void 0:t.trim())&&void 0!==i?i:"";this._autoTitle=a.trim()}_handleBack(e){var t;e&&(e.preventDefault(),e.stopPropagation());const i=this.closest("kyn-header-categories");if(null==i?void 0:i.handleBackClick){i.handleBackClick(e);return(null!==(t=this.closest("kyn-header-nav"))&&void 0!==t?t:i).querySelectorAll("kyn-header-link[open]").forEach((e=>{e.removeAttribute("open"),"open"in e&&(e.open=!1)})),this._searchTerm="",void this._searchFilter()}this.open=!1,this._searchTerm="",this._searchFilter()}_handleLinksSlotChange(){var e;const t=null!==this.querySelector("kyn-header-categories"),i=null!==this.querySelector("kyn-header-category"),n=this.querySelector("kyn-tab-panel[visible] kyn-header-categories")||this.querySelector("kyn-header-categories");if(this.hasCategorical=t||i,this.hasMultiColumn=t,this.fixedColumnWidths=null!==(e=null==n?void 0:n.hasAttribute("fixed-column-widths"))&&void 0!==e&&e,n){const e=n.getAttribute("data-columns");this.flyoutColumns=e&&parseInt(e,10)||0}else this.flyoutColumns=0;const a=this.querySelectorAll(":scope > kyn-header-link");this._slottedLinkCount=a.length,this.requestUpdate()}get _isDesktopViewport(){return"undefined"==typeof window||window.innerWidth>=672}handlePointerEnter(e){"mouse"===e.pointerType&&this.slottedEls.length&&this._isDesktopViewport&&(clearTimeout(this._leaveTimer),this._closeOtherOpenLinks(),this._enterTimer=setTimeout((()=>{this._closeOtherOpenLinks(),this.open=!0}),150))}_closeOtherOpenLinks(){if(1===this.level){const e=this.parentElement;if(e){e.querySelectorAll(":scope > kyn-header-link").forEach((e=>{var t,i;e!==this&&(e._enterTimer&&(clearTimeout(e._enterTimer),e._enterTimer=void 0),e._leaveTimer&&(clearTimeout(e._leaveTimer),e._leaveTimer=void 0),e.open&&(e.open=!1,e.removeAttribute("open"),null===(i=(t=e).requestUpdate)||void 0===i||i.call(t)))}))}return}const e=this.closest("kyn-header-nav")||this.closest("kyn-tab-panel")||this.closest(".menu__content");if(e){e.querySelectorAll("kyn-header-link").forEach((e=>{var t,i;e!==this&&e.level===this.level&&(e._enterTimer&&(clearTimeout(e._enterTimer),e._enterTimer=void 0),e._leaveTimer&&(clearTimeout(e._leaveTimer),e._leaveTimer=void 0),e.open&&(e.open=!1,e.removeAttribute("open"),null===(i=(t=e).requestUpdate)||void 0===i||i.call(t)))}))}}handlePointerLeave(e){if(this._viewChangeInProgress)return;this._shouldAutoCollapse()&&"mouse"===e.pointerType&&this.slottedEls.length&&""===this._searchTerm&&this._isDesktopViewport&&(clearTimeout(this._enterTimer),this._leaveTimer=setTimeout((()=>{this.open=!1}),150))}_shouldAutoCollapse(){if(!this.hasCategorical&&!this.fullWidthFlyout)return!0;const e=this.closest("kyn-header-nav");return!(null==e?void 0:e.autoOpenFlyout)}handleClick(e){let t=!1;this.slottedEls.length?(t=!0,e.preventDefault(),this.open||this._closeOtherOpenLinks(),this.open=!this.open):this._closeOtherOpenLinks();const i=new CustomEvent("on-click",{detail:{origEvent:e,defaultPrevented:t}});this.dispatchEvent(i)}handleClickOut(e){e.composedPath().includes(this)||(this.open=!1,this._searchTerm="",this._searchFilter())}determineLevel(){var e,t,i;let n=1,a=this.parentNode;for(;a;){if("KYN-HEADER-LINK"===a.nodeName){n=(null!==(e=a.level)&&void 0!==e?e:1)+1;break}if("KYN-HEADER-CATEGORY"===a.nodeName&&"KYN-HEADER-LINK"===(null===(t=a.parentNode)||void 0===t?void 0:t.nodeName)){n=(null!==(i=a.parentNode.level)&&void 0!==i?i:1)+1;break}if(window.innerWidth<672&&"KYN-HEADER-FLYOUT"===a.nodeName){n=2;break}a=a.parentNode}this.level=n}_positionMenu(){var e,t,i,n;const a=null===(e=this.getBoundingClientRect)||void 0===e?void 0:e.call(this),o=null===(t=this.shadowRoot)||void 0===t?void 0:t.querySelector(".menu__content"),r=null===(i=null==o?void 0:o.getBoundingClientRect)||void 0===i?void 0:i.call(o);if(!a||!r)return;const s=a.top+a.height/2,l=r.height/2,d=s+l>window.innerHeight?s-l-(s+l-window.innerHeight)-16:s-l;if(1===this.level){let e=0;const t=this.closest("kyn-header-nav");if(t){const i=null===(n=t.shadowRoot)||void 0===n?void 0:n.querySelector(".menu__content");i&&(e=i.offsetHeight)}this.menuPosition={top:"64px",left:"0px",minHeight:e+"px"}}else{const e=d<64?64:d;this.menuPosition={top:e+"px",left:a.right+12+"px"}}}firstUpdated(){this.determineLevel(),this._handleLinksSlotChange()}updated(e){e.has("open")&&this.open&&requestAnimationFrame((()=>{this._positionMenu()})),e.has("flyoutColumns")&&this.open&&requestAnimationFrame((()=>{this._positionMenu()}))}connectedCallback(){super.connectedCallback(),document.addEventListener("click",this._handleDocumentClick),window.addEventListener("resize",this._debounceResize),this.addEventListener("on-column-count-change",this._handleColumnCountChange),this.addEventListener("on-nav-change",this._handleNavChange),queueMicrotask((()=>{this._observeParentNavTruncate()}))}_resolveOwningNav(){var e,t;const i=this.closest("kyn-header-nav");if(i)return i;let n=this.getRootNode();for(;n instanceof ShadowRoot;){const i=null===(t=(e=n.host).closest)||void 0===t?void 0:t.call(e,"kyn-header-nav");if(i)return i;n=n.host.getRootNode()}return null}_observeParentNavTruncate(){const e=this._resolveOwningNav();this._observedNav!==e?(this._truncateObserver&&(this._truncateObserver.disconnect(),this._truncateObserver=void 0),this._observedNav=e,e&&(this._truncateObserver=new MutationObserver((()=>{this._syncInheritedTruncate()})),this._truncateObserver.observe(e,{attributes:!0,attributeFilter:["truncate-links"]})),this._syncInheritedTruncate()):this._syncInheritedTruncate()}_isInTruncatingNav(){var e,t;return null!==(t=null===(e=this._resolveOwningNav())||void 0===e?void 0:e.hasAttribute("truncate-links"))&&void 0!==t&&t}disconnectedCallback(){this._enterTimer&&(clearTimeout(this._enterTimer),this._enterTimer=void 0),this._leaveTimer&&(clearTimeout(this._leaveTimer),this._leaveTimer=void 0),this._viewChangeTimer&&(clearTimeout(this._viewChangeTimer),this._viewChangeTimer=void 0),document.removeEventListener("click",this._handleDocumentClick),window.removeEventListener("resize",this._debounceResize),this.removeEventListener("on-column-count-change",this._handleColumnCountChange),this.removeEventListener("on-nav-change",this._handleNavChange),this._truncateObserver&&(this._truncateObserver.disconnect(),this._truncateObserver=void 0),this._observedNav=null,super.disconnectedCallback()}},r=new WeakMap,b=new WeakMap,_=new WeakMap,T=new WeakMap,C=new WeakMap,S=new WeakMap,L=new WeakMap,W=new WeakMap,N=new WeakMap,M=new WeakMap,z=new WeakMap,E=new WeakMap,P=new WeakMap,O=new WeakMap,A=new WeakMap,$=new WeakMap,j=new WeakMap,q=new WeakMap,B=new WeakMap,F=new WeakMap,R=new WeakMap,I=new WeakMap,D=new WeakMap,H=new WeakMap,G=new WeakMap,K=new WeakMap,U=new WeakMap,Y=new WeakMap,e(X,"HeaderLink"),(()=>{var e;const i="function"==typeof Symbol&&Symbol.metadata?Object.create(null!==(e=Le[Symbol.metadata])&&void 0!==e?e:null):void 0;J=[c({type:Boolean,reflect:!0})],Q=[c({type:String})],Z=[c({type:String})],ee=[c({type:String})],te=[c({type:Boolean})],ie=[u()],ne=[c({type:Boolean})],ae=[c({type:String})],oe=[c({type:Number})],re=[c({type:Number})],se=[c({type:Boolean})],le=[c({type:String})],de=[c({type:Boolean})],he=[c({type:String,attribute:"link-title"})],ce=[c({type:Boolean,reflect:!0})],ue=[u()],me=[c({type:Boolean,reflect:!0,attribute:"has-categorical"})],pe=[c({type:Boolean,reflect:!0,attribute:"has-multi-column"})],ve=[c({type:Number,reflect:!0,attribute:"data-flyout-columns"})],ke=[c({type:Boolean,reflect:!0,attribute:"fixed-column-widths"})],ge=[c({type:Boolean,reflect:!0,attribute:"full-width-flyout"})],fe=[u()],ye=[u()],xe=[m({slot:"links"})],we=[u()],be=[u()],_e=[c({type:Boolean,reflect:!0,attribute:"global-switcher-nav"})],Te=[u()],t(X,null,J,{kind:"accessor",name:"open",static:!1,private:!1,access:{has:e=>"open"in e,get:e=>e.open,set:(e,t)=>{e.open=t}},metadata:i},We,Ne),t(X,null,Q,{kind:"accessor",name:"href",static:!1,private:!1,access:{has:e=>"href"in e,get:e=>e.href,set:(e,t)=>{e.href=t}},metadata:i},Me,ze),t(X,null,Z,{kind:"accessor",name:"target",static:!1,private:!1,access:{has:e=>"target"in e,get:e=>e.target,set:(e,t)=>{e.target=t}},metadata:i},Ee,Pe),t(X,null,ee,{kind:"accessor",name:"rel",static:!1,private:!1,access:{has:e=>"rel"in e,get:e=>e.rel,set:(e,t)=>{e.rel=t}},metadata:i},Oe,Ae),t(X,null,te,{kind:"accessor",name:"isActive",static:!1,private:!1,access:{has:e=>"isActive"in e,get:e=>e.isActive,set:(e,t)=>{e.isActive=t}},metadata:i},$e,je),t(X,null,ie,{kind:"accessor",name:"level",static:!1,private:!1,access:{has:e=>"level"in e,get:e=>e.level,set:(e,t)=>{e.level=t}},metadata:i},qe,Be),t(X,null,ne,{kind:"accessor",name:"divider",static:!1,private:!1,access:{has:e=>"divider"in e,get:e=>e.divider,set:(e,t)=>{e.divider=t}},metadata:i},Fe,Re),t(X,null,ae,{kind:"accessor",name:"searchLabel",static:!1,private:!1,access:{has:e=>"searchLabel"in e,get:e=>e.searchLabel,set:(e,t)=>{e.searchLabel=t}},metadata:i},Ie,De),t(X,null,oe,{kind:"accessor",name:"searchThreshold",static:!1,private:!1,access:{has:e=>"searchThreshold"in e,get:e=>e.searchThreshold,set:(e,t)=>{e.searchThreshold=t}},metadata:i},He,Ge),t(X,null,re,{kind:"accessor",name:"linksPerColumn",static:!1,private:!1,access:{has:e=>"linksPerColumn"in e,get:e=>e.linksPerColumn,set:(e,t)=>{e.linksPerColumn=t}},metadata:i},Ke,Ue),t(X,null,se,{kind:"accessor",name:"hideSearch",static:!1,private:!1,access:{has:e=>"hideSearch"in e,get:e=>e.hideSearch,set:(e,t)=>{e.hideSearch=t}},metadata:i},Ye,Ve),t(X,null,le,{kind:"accessor",name:"backText",static:!1,private:!1,access:{has:e=>"backText"in e,get:e=>e.backText,set:(e,t)=>{e.backText=t}},metadata:i},Xe,Je),t(X,null,de,{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},Qe,Ze),t(X,null,he,{kind:"accessor",name:"linkTitle",static:!1,private:!1,access:{has:e=>"linkTitle"in e,get:e=>e.linkTitle,set:(e,t)=>{e.linkTitle=t}},metadata:i},et,tt),t(X,null,ce,{kind:"accessor",name:"truncate",static:!1,private:!1,access:{has:e=>"truncate"in e,get:e=>e.truncate,set:(e,t)=>{e.truncate=t}},metadata:i},it,nt),t(X,null,ue,{kind:"accessor",name:"_autoTitle",static:!1,private:!1,access:{has:e=>"_autoTitle"in e,get:e=>e._autoTitle,set:(e,t)=>{e._autoTitle=t}},metadata:i},at,ot),t(X,null,me,{kind:"accessor",name:"hasCategorical",static:!1,private:!1,access:{has:e=>"hasCategorical"in e,get:e=>e.hasCategorical,set:(e,t)=>{e.hasCategorical=t}},metadata:i},rt,st),t(X,null,pe,{kind:"accessor",name:"hasMultiColumn",static:!1,private:!1,access:{has:e=>"hasMultiColumn"in e,get:e=>e.hasMultiColumn,set:(e,t)=>{e.hasMultiColumn=t}},metadata:i},lt,dt),t(X,null,ve,{kind:"accessor",name:"flyoutColumns",static:!1,private:!1,access:{has:e=>"flyoutColumns"in e,get:e=>e.flyoutColumns,set:(e,t)=>{e.flyoutColumns=t}},metadata:i},ht,ct),t(X,null,ke,{kind:"accessor",name:"fixedColumnWidths",static:!1,private:!1,access:{has:e=>"fixedColumnWidths"in e,get:e=>e.fixedColumnWidths,set:(e,t)=>{e.fixedColumnWidths=t}},metadata:i},ut,mt),t(X,null,ge,{kind:"accessor",name:"fullWidthFlyout",static:!1,private:!1,access:{has:e=>"fullWidthFlyout"in e,get:e=>e.fullWidthFlyout,set:(e,t)=>{e.fullWidthFlyout=t}},metadata:i},pt,vt),t(X,null,fe,{kind:"accessor",name:"_searchTerm",static:!1,private:!1,access:{has:e=>"_searchTerm"in e,get:e=>e._searchTerm,set:(e,t)=>{e._searchTerm=t}},metadata:i},kt,gt),t(X,null,ye,{kind:"accessor",name:"_slottedLinkCount",static:!1,private:!1,access:{has:e=>"_slottedLinkCount"in e,get:e=>e._slottedLinkCount,set:(e,t)=>{e._slottedLinkCount=t}},metadata:i},ft,yt),t(X,null,xe,{kind:"accessor",name:"slottedEls",static:!1,private:!1,access:{has:e=>"slottedEls"in e,get:e=>e.slottedEls,set:(e,t)=>{e.slottedEls=t}},metadata:i},xt,wt),t(X,null,we,{kind:"accessor",name:"_leaveTimer",static:!1,private:!1,access:{has:e=>"_leaveTimer"in e,get:e=>e._leaveTimer,set:(e,t)=>{e._leaveTimer=t}},metadata:i},bt,_t),t(X,null,be,{kind:"accessor",name:"_inheritedTruncate",static:!1,private:!1,access:{has:e=>"_inheritedTruncate"in e,get:e=>e._inheritedTruncate,set:(e,t)=>{e._inheritedTruncate=t}},metadata:i},Tt,Ct),t(X,null,_e,{kind:"accessor",name:"_inGlobalSwitcherNav",static:!1,private:!1,access:{has:e=>"_inGlobalSwitcherNav"in e,get:e=>e._inGlobalSwitcherNav,set:(e,t)=>{e._inGlobalSwitcherNav=t}},metadata:i},St,Lt),t(X,null,Te,{kind:"accessor",name:"menuPosition",static:!1,private:!1,access:{has:e=>"menuPosition"in e,get:e=>e.menuPosition,set:(e,t)=>{e.menuPosition=t}},metadata:i},Wt,Nt),t(null,V={value:X},Ce,{kind:"class",name:X.name,metadata:i},null,Se),X=V.value,i&&Object.defineProperty(X,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:i})})(),X.styles=l(w),i(X,Se),X})();export{b as HeaderLink};
|
|
772
787
|
//# sourceMappingURL=headerLink.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"headerLink.js","sources":["../../../../src/components/global/header/headerLink.ts"],"sourcesContent":["import { unsafeSVG } from 'lit-html/directives/unsafe-svg.js';\nimport { LitElement, html, unsafeCSS } from 'lit';\nimport {\n customElement,\n property,\n state,\n queryAssignedElements,\n} from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { styleMap } from 'lit/directives/style-map.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { debounce } from '../../../common/helpers/helpers';\nimport HeaderLinkScss from './headerLink.scss?inline';\nimport '../../reusable/textInput';\nimport arrowIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/chevron-right.svg';\nimport backIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/arrow-left.svg';\nimport searchIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/search.svg';\n\nexport type HeaderLinkTarget = '_self' | '_blank' | '_parent' | '_top';\n\n/**\n * Component for navigation links within the Header.\n * @fires on-click - Captures the click event and emits the original event details. `detail:{ origEvent: Event ,defaultPrevented: boolean}`\n * @slot unnamed - Slot for link text/content.\n * @slot links - Slot for sublinks (up to two levels).\n * @slot icon - Slot for icon.\n */\n@customElement('kyn-header-link')\nexport class HeaderLink extends LitElement {\n static override styles = unsafeCSS(HeaderLinkScss);\n\n /** Link open state.\n * @internal\n */\n @property({ type: Boolean, reflect: true })\n accessor open = false;\n\n /** Link url. */\n @property({ type: String })\n accessor href = '';\n\n /** Defines a target attribute for where to load the URL. Possible options include \"_self\" (default), \"_blank\", \"_parent\", \"_top\" */\n @property({ type: String })\n accessor target: HeaderLinkTarget = '_self';\n\n /** Defines a relationship between a linked resource and the document. An empty string (default) means no particular relationship */\n @property({ type: String })\n accessor rel = '';\n\n /** Link active state, for example when URL path matches link href. */\n @property({ type: Boolean })\n accessor isActive = false;\n\n /** Link level, supports two levels.\n * @ignore\n */\n @state()\n accessor level = 1;\n\n /** DEPRECATED. Adds a 1px shadow to the bottom of the link. */\n @property({ type: Boolean })\n accessor divider = false;\n\n /** Label for sub-menu link search input, which is visible with > 5 sub-links. */\n @property({ type: String })\n accessor searchLabel = 'Search';\n\n /** Number of child links required to show search input. */\n @property({ type: Number })\n accessor searchThreshold = 6;\n\n /** Maximum number of links per column in plain (non-categorical) flyouts.\n * When set to a positive number and the slotted link count exceeds this value,\n * additional columns are created automatically. Default 0 (auto — no column splitting).\n */\n @property({ type: Number })\n accessor linksPerColumn = 0;\n\n /** Hide the search input regardless of the number of child links. */\n @property({ type: Boolean })\n accessor hideSearch = false;\n\n /** Text for mobile \"Back\" button. */\n @property({ type: String })\n accessor backText = 'Back';\n\n /** Add left padding when icon is not provided to align text with links that do have icons. */\n @property({ type: Boolean })\n accessor leftPadding = false;\n\n /** Title attribute for the link, shown as a tooltip on hover. Useful for truncated text.\n * @internal\n */\n @property({ type: String, attribute: 'link-title' })\n accessor linkTitle = '';\n\n /** When true, long text truncates with ellipsis. Default: false (text wraps normally). */\n @property({ type: Boolean, reflect: true })\n accessor truncate = false;\n\n /** Auto-derived title from slot content, used if linkTitle is not set.\n * @internal\n */\n @state()\n accessor _autoTitle = '';\n\n /** Indicates whether this link contains categorical navigation (kyn-header-categories or kyn-header-category).\n * @internal\n */\n @property({ type: Boolean, reflect: true, attribute: 'has-categorical' })\n accessor hasCategorical = false;\n\n /** Indicates whether this link contains multi-column categorical navigation (kyn-header-categories wrapper).\n * Used to distinguish multi-column flyouts from single-column category lists.\n * @internal\n */\n @property({ type: Boolean, reflect: true, attribute: 'has-multi-column' })\n accessor hasMultiColumn = false;\n\n /** Number of columns in the categorical flyout (for width adjustment).\n * @internal\n */\n @property({ type: Number, reflect: true, attribute: 'data-flyout-columns' })\n accessor flyoutColumns = 0;\n\n /** Mirrors `fixed-column-widths` from nested kyn-header-categories.\n * @internal\n */\n @property({ type: Boolean, reflect: true, attribute: 'fixed-column-widths' })\n accessor fixedColumnWidths = false;\n\n /** Forces the desktop flyout to use the full-width categorical Global Switcher layout. */\n @property({ type: Boolean, reflect: true, attribute: 'full-width-flyout' })\n accessor fullWidthFlyout = false;\n\n /** Current search term for filtering links in the flyout.\n * @internal\n */\n @state()\n accessor _searchTerm = '';\n\n /** Number of slotted plain links (non-categorical), used for column calculation.\n * @internal\n */\n @state()\n accessor _slottedLinkCount = 0;\n\n /**\n * Queries any slotted HTML elements.\n * @ignore\n */\n @queryAssignedElements({ slot: 'links' })\n accessor slottedEls!: Array<HTMLElement>;\n\n /** Timeout function to delay flyout open.\n * @internal\n */\n _enterTimer: any;\n\n /** Timeout function to delay flyout close.\n * @internal\n */\n @state()\n accessor _leaveTimer: any;\n\n /** Suppresses pointer-leave close during internal view transitions (e.g. \"More\" click).\n * @internal\n */\n private _viewChangeInProgress = false;\n\n /**\n * @internal\n */\n private _viewChangeTimer: any;\n\n /** Cached truncation state from parent nav\n * @internal\n */\n @state()\n accessor _inheritedTruncate = false;\n\n /** Reflects whether the owning nav has the `global-switcher-nav` class.\n * @ignore\n */\n @property({ type: Boolean, reflect: true, attribute: 'global-switcher-nav' })\n accessor _inGlobalSwitcherNav = false;\n\n /** Observer for `truncate-links` changes on the owning nav.\n * @internal\n */\n private _truncateObserver?: MutationObserver;\n\n /**\n * @internal\n */\n private _observedNav: HTMLElement | null = null;\n\n /** Menu positioning\n * @internal\n */\n @state()\n accessor menuPosition: any = {};\n\n override render() {\n const classes = {\n menu: this.slottedEls.length,\n [`level--${this.level}`]: true,\n divider: this.divider,\n 'full-width-flyout': this.fullWidthFlyout,\n open: this.open || (this.level === 1 && this.isActive),\n };\n\n // Check if truncation should be applied (individual prop or inherited from nav)\n const shouldTruncate = this.truncate || this._inheritedTruncate;\n\n const linkClasses = {\n 'nav-link': true,\n active: this.isActive,\n interactive: this.level == 1,\n 'padding-left': this.leftPadding,\n truncate: shouldTruncate,\n };\n\n const menuClasses = {\n menu__content: true,\n slotted: this.slottedEls.length,\n };\n\n const Links = this.querySelectorAll(\n ':scope > kyn-header-link, :scope > kyn-header-category > kyn-header-link'\n );\n\n const showSearch = !this.hideSearch && Links.length >= this.searchThreshold;\n\n const wrapperClasses = {\n wrapper: true,\n 'no-search': !showSearch,\n };\n\n return html`\n <div\n class=\"${classMap(classes)}\"\n @pointerleave=${(e: PointerEvent) => this.handlePointerLeave(e)}\n @pointerenter=${(e: PointerEvent) => this.handlePointerEnter(e)}\n >\n <a\n target=${this.target}\n rel=${this.rel}\n href=${this.href}\n title=${ifDefined(\n this.linkTitle ||\n (this.slottedEls.length === 0 ? this._autoTitle : '') ||\n undefined\n )}\n class=${classMap(linkClasses)}\n @click=${(e: Event) => this.handleClick(e)}\n @pointerenter=${(e: PointerEvent) => this.handlePointerEnter(e)}\n >\n <slot name=\"icon\"></slot>\n <slot @slotchange=${this._handleDefaultSlotChange}></slot>\n\n ${this.slottedEls.length\n ? html` <span class=\"arrow\">${unsafeSVG(arrowIcon)}</span> `\n : null}\n </a>\n\n <div\n class=${classMap(menuClasses)}\n style=${styleMap(this.menuPosition)}\n >\n <div class=${classMap(wrapperClasses)}>\n <button\n class=\"go-back\"\n type=\"button\"\n @click=${(e: Event) => this._handleBack(e)}\n >\n <span>${unsafeSVG(backIcon)}</span>\n ${this.backText}\n </button>\n ${showSearch\n ? html`\n <kyn-text-input\n hideLabel\n size=\"sm\"\n type=\"search\"\n label=${this.searchLabel}\n placeholder=${this.searchLabel}\n value=${this._searchTerm}\n @on-input=${(e: Event) => this._handleSearch(e)}\n >\n <span slot=\"icon\" class=\"search-icon\">\n ${unsafeSVG(searchIcon)}\n </span>\n ${this.searchLabel}\n </kyn-text-input>\n `\n : null}\n\n <div\n class=\"links-columns\"\n style=${styleMap(this._linksColumnStyles)}\n >\n <slot\n name=\"links\"\n @slotchange=${this._handleLinksSlotChange}\n ></slot>\n </div>\n </div>\n </div>\n </div>\n `;\n }\n\n /** Compute inline styles for the links-columns wrapper.\n * Only applies multi-column layout for plain (non-categorical) flyouts\n * when the number of links exceeds linksPerColumn.\n * @internal\n */\n private get _linksColumnStyles() {\n if (\n !this.hasCategorical &&\n this.linksPerColumn > 0 &&\n this._slottedLinkCount > this.linksPerColumn\n ) {\n const columnCount = Math.ceil(\n this._slottedLinkCount / this.linksPerColumn\n );\n return { 'column-count': columnCount.toString() };\n }\n return {};\n }\n\n private _handleSearch(e: any) {\n this._searchTerm = e.detail.value.toLowerCase();\n this._searchFilter();\n }\n\n private _searchFilter() {\n const Links: any = this.querySelectorAll(\n ':scope > kyn-header-link, :scope > kyn-header-category > kyn-header-link'\n );\n\n Links.forEach((link: any) => {\n // get link text\n const textSlot = link.shadowRoot?.querySelector(\n 'slot:not([name])'\n ) as HTMLSlotElement | null;\n const nodes: any = textSlot?.assignedNodes({ flatten: true }) ?? [];\n let linkText = '';\n for (let i = 0; i < nodes.length; i++) {\n linkText += nodes[i].textContent.trim();\n }\n\n if (linkText.toLowerCase().includes(this._searchTerm)) {\n link.style.display = 'block';\n } else {\n link.style.display = 'none';\n }\n });\n\n this._positionMenu();\n }\n\n /** Extract text content from the default slot to use as auto-title */\n private _handleDefaultSlotChange(e: Event) {\n const slot = e.target as HTMLSlotElement;\n const nodes = slot.assignedNodes({ flatten: true });\n let textContent = '';\n for (const node of nodes) {\n textContent += node.textContent?.trim() ?? '';\n }\n this._autoTitle = textContent.trim();\n }\n\n private _handleBack(e?: Event) {\n if (e) {\n e.preventDefault();\n e.stopPropagation();\n }\n\n // detect if we're inside the categorized/mega nav variant\n const headerCategories = this.closest('kyn-header-categories') as\n | (HTMLElement & { handleBackClick?: (evt?: Event) => void })\n | null;\n\n if (headerCategories?.handleBackClick) {\n headerCategories.handleBackClick(e);\n\n // Close any open header links under this nav\n const navRoot =\n (this.closest('kyn-header-nav') as HTMLElement | null) ??\n headerCategories;\n\n const links = navRoot.querySelectorAll<HTMLElement & { open?: boolean }>(\n 'kyn-header-link[open]'\n );\n\n links.forEach((link) => {\n link.removeAttribute('open');\n if ('open' in link) {\n (link as any).open = false;\n }\n });\n\n // Clear local search for this column\n this._searchTerm = '';\n this._searchFilter();\n\n return;\n }\n\n // BASIC NAV:\n // Preserve original behavior: go up one level\n this.open = false;\n this._searchTerm = '';\n this._searchFilter();\n }\n\n private _handleLinksSlotChange() {\n // Detect if this link contains categorical navigation\n const hasCategories = this.querySelector('kyn-header-categories') !== null;\n const hasCategory = this.querySelector('kyn-header-category') !== null;\n const categoriesEl =\n this.querySelector('kyn-tab-panel[visible] kyn-header-categories') ||\n this.querySelector('kyn-header-categories');\n\n this.hasCategorical = hasCategories || hasCategory;\n this.hasMultiColumn = hasCategories; // Only true for multi-column wrapper\n this.fixedColumnWidths =\n categoriesEl?.hasAttribute('fixed-column-widths') ?? false;\n\n // Prime flyout column count before open so width/layout CSS can apply\n // without a second-pass visual snap.\n if (categoriesEl) {\n const dataCol = categoriesEl.getAttribute('data-columns');\n this.flyoutColumns = dataCol ? parseInt(dataCol, 10) || 0 : 0;\n } else {\n this.flyoutColumns = 0;\n }\n\n // Count direct child plain links for column wrapping\n const plainLinks = this.querySelectorAll(':scope > kyn-header-link');\n this._slottedLinkCount = plainLinks.length;\n\n this.requestUpdate();\n }\n\n /** Handle column count changes from slotted kyn-header-categories\n * @internal\n */\n private _handleColumnCountChange = (e: Event) => {\n const detail = (\n e as CustomEvent<{\n columnCount: number;\n fixedColumnWidths?: boolean;\n }>\n ).detail;\n if (detail?.columnCount !== undefined) {\n this.flyoutColumns = detail.columnCount;\n this.fixedColumnWidths = Boolean(detail.fixedColumnWidths);\n }\n };\n\n /**\n * @internal\n */\n private get _isDesktopViewport(): boolean {\n if (typeof window === 'undefined') return true;\n return window.innerWidth >= 672;\n }\n\n private handlePointerEnter(e: PointerEvent) {\n if (\n e.pointerType === 'mouse' &&\n this.slottedEls.length &&\n this._isDesktopViewport\n ) {\n clearTimeout(this._leaveTimer);\n\n // close other open sibling links immediately when entering any link with submenus\n this._closeOtherOpenLinks();\n\n this._enterTimer = setTimeout(() => {\n // Close siblings again right before opening to prevent race conditions\n this._closeOtherOpenLinks();\n this.open = true;\n }, 150);\n }\n }\n\n /** close other open header links at the same level\n * @internal\n */\n private _closeOtherOpenLinks(): void {\n // Strategy: Close all sibling header-links that are currently open\n // This handles the sidebar nav where links are direct children of header-nav\n\n // For level 1 links (main sidebar), find siblings via parent\n if (this.level === 1) {\n const parent = this.parentElement;\n if (parent) {\n // Find ALL level 1 links (not just open ones) to clear pending timers\n const siblingLinks = parent.querySelectorAll<\n HTMLElement & { open?: boolean; _enterTimer?: any }\n >(':scope > kyn-header-link');\n\n siblingLinks.forEach((link) => {\n if (link !== this) {\n // Clear any pending timers\n if ((link as any)._enterTimer) {\n clearTimeout((link as any)._enterTimer);\n (link as any)._enterTimer = undefined;\n }\n if ((link as any)._leaveTimer) {\n clearTimeout((link as any)._leaveTimer);\n (link as any)._leaveTimer = undefined;\n }\n // Force close - set property, remove attribute, and force re-render\n if ((link as any).open) {\n (link as any).open = false;\n link.removeAttribute('open');\n (link as any).requestUpdate?.();\n }\n }\n });\n }\n return;\n }\n\n // For nested links, find the nearest container and close same-level links\n const navContainer =\n this.closest('kyn-header-nav') ||\n this.closest('kyn-tab-panel') ||\n this.closest('.menu__content');\n\n if (navContainer) {\n const allLinks = navContainer.querySelectorAll<\n HTMLElement & { open?: boolean; level?: number; _enterTimer?: any }\n >('kyn-header-link');\n\n allLinks.forEach((link) => {\n if (link !== this && (link as any).level === this.level) {\n // Clear any pending timers\n if ((link as any)._enterTimer) {\n clearTimeout((link as any)._enterTimer);\n (link as any)._enterTimer = undefined;\n }\n if ((link as any)._leaveTimer) {\n clearTimeout((link as any)._leaveTimer);\n (link as any)._leaveTimer = undefined;\n }\n // Force close - set property, remove attribute, and force re-render\n if ((link as any).open) {\n (link as any).open = false;\n link.removeAttribute('open');\n (link as any).requestUpdate?.();\n }\n }\n });\n }\n }\n\n private handlePointerLeave(e: PointerEvent) {\n // Suppress close during internal view transitions (e.g. \"More\" → detail view).\n // The flyout resizes and the cursor may end up outside, but the user's intent\n // was to drill in — not to leave.\n if (this._viewChangeInProgress) {\n return;\n }\n\n // check both the link's own prop and parent nav's prop\n // if either is false, don't auto-close the flyout\n const shouldAutoCollapse = this._shouldAutoCollapse();\n if (!shouldAutoCollapse) {\n return;\n }\n\n if (\n e.pointerType === 'mouse' &&\n this.slottedEls.length &&\n this._searchTerm === '' &&\n this._isDesktopViewport\n ) {\n clearTimeout(this._enterTimer);\n this._leaveTimer = setTimeout(() => {\n this.open = false;\n }, 150);\n }\n }\n\n /** Check if flyout should auto-collapse based on parent nav's autoOpenFlyout.\n * Only applies to links containing categorical nav (kyn-header-categories).\n * @internal\n */\n private _shouldAutoCollapse(): boolean {\n // Non-categorical links always auto-collapse (preserve original behavior)\n if (!this.hasCategorical && !this.fullWidthFlyout) {\n return true;\n }\n\n const parentNav = this.closest('kyn-header-nav') as\n | (HTMLElement & { autoOpenFlyout?: string })\n | null;\n\n // If parent nav has autoOpenFlyout set (truthy), don't auto-collapse\n if (parentNav?.autoOpenFlyout) {\n return false;\n }\n\n return true;\n }\n\n private handleClick(e: Event) {\n let preventDefault = false;\n\n if (this.slottedEls.length) {\n preventDefault = true;\n e.preventDefault();\n // Close other open links before toggling this one\n if (!this.open) {\n this._closeOtherOpenLinks();\n }\n this.open = !this.open;\n } else {\n this._closeOtherOpenLinks();\n }\n\n const event = new CustomEvent('on-click', {\n detail: { origEvent: e, defaultPrevented: preventDefault },\n });\n this.dispatchEvent(event);\n }\n\n private handleClickOut(e: Event) {\n if (!e.composedPath().includes(this)) {\n this.open = false;\n this._searchTerm = '';\n this._searchFilter();\n }\n }\n\n private determineLevel() {\n let level = 1;\n let node: any = this.parentNode;\n\n // Traverse up the DOM tree\n while (node) {\n if (node.nodeName === 'KYN-HEADER-LINK') {\n level = (node.level ?? 1) + 1;\n break;\n } else if (\n node.nodeName === 'KYN-HEADER-CATEGORY' &&\n node.parentNode?.nodeName === 'KYN-HEADER-LINK'\n ) {\n level = (node.parentNode.level ?? 1) + 1;\n break;\n } else if (\n window.innerWidth < 672 &&\n node.nodeName === 'KYN-HEADER-FLYOUT'\n ) {\n level = 2;\n break;\n }\n node = node.parentNode;\n }\n\n this.level = level;\n }\n\n private _positionMenu() {\n const linkBounds = this.getBoundingClientRect?.();\n const menuEl =\n this.shadowRoot?.querySelector<HTMLElement>('.menu__content');\n const menuBounds = menuEl?.getBoundingClientRect?.();\n\n if (!linkBounds || !menuBounds) {\n return;\n }\n\n const Padding = 12;\n const HeaderHeight = 64;\n\n const linkHalf = linkBounds.top + linkBounds.height / 2;\n const menuHalf = menuBounds.height / 2;\n\n const topCandidate =\n linkHalf + menuHalf > window.innerHeight\n ? linkHalf - menuHalf - (linkHalf + menuHalf - window.innerHeight) - 16\n : linkHalf - menuHalf;\n\n if (this.level === 1) {\n // Keep level-1 flyouts pinned to the nav rail origin (legacy behavior).\n // This avoids viewport/header bound drift and keeps panels consistently aligned.\n let navMenuHeight = 0;\n const headerNav = this.closest('kyn-header-nav') as HTMLElement | null;\n if (headerNav) {\n const navMenu = headerNav.shadowRoot?.querySelector(\n '.menu__content'\n ) as HTMLElement | null;\n if (navMenu) {\n navMenuHeight = navMenu.offsetHeight;\n }\n }\n\n this.menuPosition = {\n top: HeaderHeight + 'px',\n left: '0px',\n minHeight: navMenuHeight + 'px',\n };\n } else {\n const top = topCandidate < HeaderHeight ? HeaderHeight : topCandidate;\n this.menuPosition = {\n top: top + 'px',\n left: linkBounds.right + Padding + 'px',\n };\n }\n }\n\n /** @internal */\n private _debounceResize = debounce(() => {\n this.determineLevel();\n if (this.open) {\n this._positionMenu();\n }\n });\n\n override firstUpdated() {\n this.determineLevel();\n this._handleLinksSlotChange();\n }\n\n override updated(changedProps: any) {\n // Re-position after render when the menu has its actual dimensions\n if (changedProps.has('open') && this.open) {\n // Use rAF to ensure the DOM has painted\n requestAnimationFrame(() => {\n this._positionMenu();\n });\n }\n\n // Re-position when column count changes (categories may render after flyout opens)\n if (changedProps.has('flyoutColumns') && this.open) {\n requestAnimationFrame(() => {\n this._positionMenu();\n });\n }\n }\n\n /**\n * @internal\n */\n private _handleDocumentClick = (e: Event) => this.handleClickOut(e);\n\n /** Suppress pointer-leave close when categories switch views (root ↔ detail).\n * @internal\n */\n private _handleNavChange = () => {\n this._viewChangeInProgress = true;\n clearTimeout(this._viewChangeTimer);\n // Allow enough time for the flyout to finish resizing before re-enabling close\n this._viewChangeTimer = setTimeout(() => {\n this._viewChangeInProgress = false;\n }, 500);\n };\n\n override connectedCallback() {\n super.connectedCallback();\n document.addEventListener('click', this._handleDocumentClick);\n window.addEventListener('resize', this._debounceResize);\n // Listen for column count changes from slotted kyn-header-categories\n this.addEventListener(\n 'on-column-count-change',\n this._handleColumnCountChange\n );\n // Suppress flyout close during internal view transitions (e.g. \"More\" click)\n this.addEventListener('on-nav-change', this._handleNavChange);\n // Check for truncation inheritance after DOM is ready\n queueMicrotask(() => {\n this._observeParentNavTruncate();\n });\n }\n\n /** Find the closest owning 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 /** Sync inherited truncate state with the owning nav.\n * @internal\n */\n private _syncInheritedTruncate = (): void => {\n this._inheritedTruncate = this._isInTruncatingNav();\n this._inGlobalSwitcherNav =\n this._resolveOwningNav()?.classList.contains('global-switcher-nav') ??\n false;\n };\n\n /** Observe `truncate-links` changes on the owning nav.\n * @internal\n */\n private _observeParentNavTruncate(): void {\n const nav = this._resolveOwningNav();\n\n if (this._observedNav === nav) {\n this._syncInheritedTruncate();\n return;\n }\n\n if (this._truncateObserver) {\n this._truncateObserver.disconnect();\n this._truncateObserver = undefined;\n }\n\n this._observedNav = nav;\n\n if (nav) {\n this._truncateObserver = new MutationObserver(() => {\n this._syncInheritedTruncate();\n });\n this._truncateObserver.observe(nav, {\n attributes: true,\n attributeFilter: ['truncate-links'],\n });\n }\n\n this._syncInheritedTruncate();\n }\n\n /** Check if this link is inside a nav with truncate-links attribute\n * Uses getRootNode to traverse up through shadow DOM boundaries\n * @internal\n */\n private _isInTruncatingNav(): boolean {\n return this._resolveOwningNav()?.hasAttribute('truncate-links') ?? false;\n }\n\n override disconnectedCallback() {\n // clear timers to avoid callbacks after unmount\n if (this._enterTimer) {\n clearTimeout(this._enterTimer);\n this._enterTimer = undefined;\n }\n if (this._leaveTimer) {\n clearTimeout(this._leaveTimer);\n this._leaveTimer = undefined;\n }\n\n if (this._viewChangeTimer) {\n clearTimeout(this._viewChangeTimer);\n this._viewChangeTimer = undefined;\n }\n\n document.removeEventListener('click', this._handleDocumentClick);\n window.removeEventListener('resize', this._debounceResize);\n this.removeEventListener(\n 'on-column-count-change',\n this._handleColumnCountChange\n );\n this.removeEventListener('on-nav-change', this._handleNavChange);\n if (this._truncateObserver) {\n this._truncateObserver.disconnect();\n this._truncateObserver = undefined;\n }\n this._observedNav = null;\n super.disconnectedCallback();\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kyn-header-link': HeaderLink;\n }\n}\n"],"names":["HeaderLink","customElement","LitElement","_classThis","_classSuper","_HeaderLink_open_accessor_storage","set","this","__runInitializers","_open_initializers","_HeaderLink_href_accessor_storage","_open_extraInitializers","_href_initializers","_HeaderLink_target_accessor_storage","_href_extraInitializers","_target_initializers","_HeaderLink_rel_accessor_storage","_target_extraInitializers","_rel_initializers","_HeaderLink_isActive_accessor_storage","_rel_extraInitializers","_isActive_initializers","_HeaderLink_level_accessor_storage","_isActive_extraInitializers","_level_initializers","_HeaderLink_divider_accessor_storage","_level_extraInitializers","_divider_initializers","_HeaderLink_searchLabel_accessor_storage","_divider_extraInitializers","_searchLabel_initializers","_HeaderLink_searchThreshold_accessor_storage","_searchLabel_extraInitializers","_searchThreshold_initializers","_HeaderLink_linksPerColumn_accessor_storage","_searchThreshold_extraInitializers","_linksPerColumn_initializers","_HeaderLink_hideSearch_accessor_storage","_linksPerColumn_extraInitializers","_hideSearch_initializers","_HeaderLink_backText_accessor_storage","_hideSearch_extraInitializers","_backText_initializers","_HeaderLink_leftPadding_accessor_storage","_backText_extraInitializers","_leftPadding_initializers","_HeaderLink_linkTitle_accessor_storage","_leftPadding_extraInitializers","_linkTitle_initializers","_HeaderLink_truncate_accessor_storage","_linkTitle_extraInitializers","_truncate_initializers","_HeaderLink__autoTitle_accessor_storage","_truncate_extraInitializers","__autoTitle_initializers","_HeaderLink_hasCategorical_accessor_storage","__autoTitle_extraInitializers","_hasCategorical_initializers","_HeaderLink_hasMultiColumn_accessor_storage","_hasCategorical_extraInitializers","_hasMultiColumn_initializers","_HeaderLink_flyoutColumns_accessor_storage","_hasMultiColumn_extraInitializers","_flyoutColumns_initializers","_HeaderLink_fixedColumnWidths_accessor_storage","_flyoutColumns_extraInitializers","_fixedColumnWidths_initializers","_HeaderLink_fullWidthFlyout_accessor_storage","_fixedColumnWidths_extraInitializers","_fullWidthFlyout_initializers","_HeaderLink__searchTerm_accessor_storage","_fullWidthFlyout_extraInitializers","__searchTerm_initializers","_HeaderLink__slottedLinkCount_accessor_storage","__searchTerm_extraInitializers","__slottedLinkCount_initializers","_HeaderLink_slottedEls_accessor_storage","__slottedLinkCount_extraInitializers","_slottedEls_initializers","_enterTimer","_slottedEls_extraInitializers","_HeaderLink__leaveTimer_accessor_storage","__leaveTimer_initializers","_viewChangeInProgress","__leaveTimer_extraInitializers","_HeaderLink__inheritedTruncate_accessor_storage","__inheritedTruncate_initializers","_HeaderLink__inGlobalSwitcherNav_accessor_storage","__inheritedTruncate_extraInitializers","__inGlobalSwitcherNav_initializers","_truncateObserver","__inGlobalSwitcherNav_extraInitializers","_observedNav","_HeaderLink_menuPosition_accessor_storage","_menuPosition_initializers","_handleColumnCountChange","_menuPosition_extraInitializers","e","detail","undefined","columnCount","flyoutColumns","fixedColumnWidths","Boolean","_debounceResize","debounce","determineLevel","open","_positionMenu","_handleDocumentClick","handleClickOut","_handleNavChange","clearTimeout","_viewChangeTimer","setTimeout","_syncInheritedTruncate","_inheritedTruncate","_isInTruncatingNav","_inGlobalSwitcherNav","_b","_a","_resolveOwningNav","classList","contains","__classPrivateFieldGet","value","__classPrivateFieldSet","href","target","rel","isActive","level","divider","searchLabel","searchThreshold","linksPerColumn","hideSearch","backText","leftPadding","linkTitle","truncate","_autoTitle","hasCategorical","hasMultiColumn","fullWidthFlyout","_searchTerm","_slottedLinkCount","slottedEls","_leaveTimer","menuPosition","render","classes","menu","length","shouldTruncate","linkClasses","active","interactive","menuClasses","menu__content","slotted","Links","querySelectorAll","showSearch","wrapperClasses","wrapper","html","classMap","handlePointerLeave","handlePointerEnter","ifDefined","handleClick","_handleDefaultSlotChange","unsafeSVG","arrowIcon","styleMap","_handleBack","backIcon","_handleSearch","searchIcon","_linksColumnStyles","_handleLinksSlotChange","Math","ceil","toString","toLowerCase","_searchFilter","forEach","link","textSlot","shadowRoot","querySelector","nodes","assignedNodes","flatten","linkText","i","textContent","trim","includes","style","display","node","preventDefault","stopPropagation","headerCategories","closest","handleBackClick","removeAttribute","hasCategories","hasCategory","categoriesEl","hasAttribute","dataCol","getAttribute","parseInt","plainLinks","requestUpdate","_isDesktopViewport","window","innerWidth","pointerType","_closeOtherOpenLinks","parent","parentElement","navContainer","_shouldAutoCollapse","parentNav","autoOpenFlyout","event","CustomEvent","origEvent","defaultPrevented","dispatchEvent","composedPath","parentNode","nodeName","_c","linkBounds","getBoundingClientRect","menuEl","menuBounds","call","linkHalf","top","height","menuHalf","topCandidate","innerHeight","navMenuHeight","headerNav","navMenu","_d","offsetHeight","HeaderHeight","left","minHeight","right","firstUpdated","updated","changedProps","has","requestAnimationFrame","connectedCallback","super","document","addEventListener","queueMicrotask","_observeParentNavTruncate","root","getRootNode","ShadowRoot","nav","host","disconnect","MutationObserver","observe","attributes","attributeFilter","disconnectedCallback","removeEventListener","property","type","reflect","_href_decorators","String","_target_decorators","_rel_decorators","_isActive_decorators","_level_decorators","state","_divider_decorators","_searchLabel_decorators","_searchThreshold_decorators","Number","_linksPerColumn_decorators","_hideSearch_decorators","_backText_decorators","_leftPadding_decorators","attribute","__autoTitle_decorators","_hasCategorical_decorators","_hasMultiColumn_decorators","_flyoutColumns_decorators","_fixedColumnWidths_decorators","_fullWidthFlyout_decorators","__searchTerm_decorators","__slottedLinkCount_decorators","_slottedEls_decorators","queryAssignedElements","slot","__leaveTimer_decorators","__inheritedTruncate_decorators","__inGlobalSwitcherNav_decorators","_menuPosition_decorators","__esDecorate","_open_decorators","kind","name","static","private","access","obj","get","metadata","_metadata","_linkTitle_decorators","_truncate_decorators","_classDescriptor","_classDecorators","_classExtraInitializers","styles","unsafeCSS","HeaderLinkScss"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"headerLink.js","sources":["../../../../src/components/global/header/headerLink.ts"],"sourcesContent":["import { unsafeSVG } from 'lit-html/directives/unsafe-svg.js';\nimport { LitElement, html, unsafeCSS } from 'lit';\nimport {\n customElement,\n property,\n state,\n queryAssignedElements,\n} from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { styleMap } from 'lit/directives/style-map.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { debounce } from '../../../common/helpers/helpers';\nimport HeaderLinkScss from './headerLink.scss?inline';\nimport '../../reusable/textInput';\nimport arrowIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/chevron-right.svg';\nimport backIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/arrow-left.svg';\nimport searchIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/search.svg';\n\nexport type HeaderLinkTarget = '_self' | '_blank' | '_parent' | '_top';\n\n/**\n * Component for navigation links within the Header.\n * @fires on-click - Captures the click event and emits the original event details. `detail:{ origEvent: Event ,defaultPrevented: boolean}`\n * @slot unnamed - Slot for link text/content.\n * @slot links - Slot for sublinks (up to two levels).\n * @slot icon - Slot for icon.\n */\n@customElement('kyn-header-link')\nexport class HeaderLink extends LitElement {\n static override styles = unsafeCSS(HeaderLinkScss);\n\n /** Link open state.\n * @internal\n */\n @property({ type: Boolean, reflect: true })\n accessor open = false;\n\n /** Link url. */\n @property({ type: String })\n accessor href = '';\n\n /** Defines a target attribute for where to load the URL. Possible options include \"_self\" (default), \"_blank\", \"_parent\", \"_top\" */\n @property({ type: String })\n accessor target: HeaderLinkTarget = '_self';\n\n /** Defines a relationship between a linked resource and the document. An empty string (default) means no particular relationship */\n @property({ type: String })\n accessor rel = '';\n\n /** Link active state, for example when URL path matches link href. */\n @property({ type: Boolean })\n accessor isActive = false;\n\n /** Link level, supports two levels.\n * @ignore\n */\n @state()\n accessor level = 1;\n\n /** DEPRECATED. Adds a 1px shadow to the bottom of the link. */\n @property({ type: Boolean })\n accessor divider = false;\n\n /** Label for sub-menu link search input, which is visible with > 5 sub-links. */\n @property({ type: String })\n accessor searchLabel = 'Search';\n\n /** Number of child links required to show search input. */\n @property({ type: Number })\n accessor searchThreshold = 6;\n\n /** Maximum number of links per column in plain (non-categorical) flyouts.\n * When set to a positive number and the slotted link count exceeds this value,\n * additional columns are created automatically. Default 0 (auto — no column splitting).\n */\n @property({ type: Number })\n accessor linksPerColumn = 0;\n\n /** Hide the search input regardless of the number of child links. */\n @property({ type: Boolean })\n accessor hideSearch = false;\n\n /** Text for mobile \"Back\" button. */\n @property({ type: String })\n accessor backText = 'Back';\n\n /** Add left padding when icon is not provided to align text with links that do have icons. */\n @property({ type: Boolean })\n accessor leftPadding = false;\n\n /** Title attribute for the link, shown as a tooltip on hover. Useful for truncated text.\n * @internal\n */\n @property({ type: String, attribute: 'link-title' })\n accessor linkTitle = '';\n\n /** When true, long text truncates with ellipsis. Default: false (text wraps normally). */\n @property({ type: Boolean, reflect: true })\n accessor truncate = false;\n\n /** Auto-derived title from slot content, used if linkTitle is not set.\n * @internal\n */\n @state()\n accessor _autoTitle = '';\n\n /** Indicates whether this link contains categorical navigation (kyn-header-categories or kyn-header-category).\n * @internal\n */\n @property({ type: Boolean, reflect: true, attribute: 'has-categorical' })\n accessor hasCategorical = false;\n\n /** Indicates whether this link contains multi-column categorical navigation (kyn-header-categories wrapper).\n * Used to distinguish multi-column flyouts from single-column category lists.\n * @internal\n */\n @property({ type: Boolean, reflect: true, attribute: 'has-multi-column' })\n accessor hasMultiColumn = false;\n\n /** Number of columns in the categorical flyout (for width adjustment).\n * @internal\n */\n @property({ type: Number, reflect: true, attribute: 'data-flyout-columns' })\n accessor flyoutColumns = 0;\n\n /** Mirrors `fixed-column-widths` from nested kyn-header-categories.\n * @internal\n */\n @property({ type: Boolean, reflect: true, attribute: 'fixed-column-widths' })\n accessor fixedColumnWidths = false;\n\n /** Forces the desktop flyout to use the full-width categorical Global Switcher layout. */\n @property({ type: Boolean, reflect: true, attribute: 'full-width-flyout' })\n accessor fullWidthFlyout = false;\n\n /** Current search term for filtering links in the flyout.\n * @internal\n */\n @state()\n accessor _searchTerm = '';\n\n /** Number of slotted plain links (non-categorical), used for column calculation.\n * @internal\n */\n @state()\n accessor _slottedLinkCount = 0;\n\n /**\n * Queries any slotted HTML elements.\n * @ignore\n */\n @queryAssignedElements({ slot: 'links' })\n accessor slottedEls!: Array<HTMLElement>;\n\n /** Timeout function to delay flyout open.\n * @internal\n */\n _enterTimer: any;\n\n /** Timeout function to delay flyout close.\n * @internal\n */\n @state()\n accessor _leaveTimer: any;\n\n /** Suppresses pointer-leave close during internal view transitions (e.g. \"More\" click).\n * @internal\n */\n private _viewChangeInProgress = false;\n\n /**\n * @internal\n */\n private _viewChangeTimer: any;\n\n /** Cached truncation state from parent nav\n * @internal\n */\n @state()\n accessor _inheritedTruncate = false;\n\n /** Reflects whether the owning nav has the `global-switcher-nav` class.\n * @ignore\n */\n @property({ type: Boolean, reflect: true, attribute: 'global-switcher-nav' })\n accessor _inGlobalSwitcherNav = false;\n\n /** Observer for `truncate-links` changes on the owning nav.\n * @internal\n */\n private _truncateObserver?: MutationObserver;\n\n /**\n * @internal\n */\n private _observedNav: HTMLElement | null = null;\n\n /** Menu positioning\n * @internal\n */\n @state()\n accessor menuPosition: any = {};\n\n override render() {\n const classes = {\n menu: this.slottedEls.length,\n [`level--${this.level}`]: true,\n divider: this.divider,\n 'full-width-flyout': this.fullWidthFlyout,\n open: this.open || (this.level === 1 && this.isActive),\n };\n\n // Check if truncation should be applied (individual prop or inherited from nav)\n const shouldTruncate = this.truncate || this._inheritedTruncate;\n\n const linkClasses = {\n 'nav-link': true,\n active: this.isActive,\n interactive: this.level == 1,\n 'padding-left': this.leftPadding,\n truncate: shouldTruncate,\n };\n\n const menuClasses = {\n menu__content: true,\n slotted: this.slottedEls.length,\n };\n\n const Links = this.querySelectorAll(\n ':scope > kyn-header-link, :scope > kyn-header-category > kyn-header-link'\n );\n\n const showSearch = !this.hideSearch && Links.length >= this.searchThreshold;\n\n const wrapperClasses = {\n wrapper: true,\n 'no-search': !showSearch,\n };\n\n return html`\n <div\n class=\"${classMap(classes)}\"\n @pointerleave=${(e: PointerEvent) => this.handlePointerLeave(e)}\n @pointerenter=${(e: PointerEvent) => this.handlePointerEnter(e)}\n >\n <a\n target=${this.target}\n rel=${this.rel}\n href=${this.href}\n title=${ifDefined(\n this.linkTitle ||\n (this.slottedEls.length === 0 ? this._autoTitle : '') ||\n undefined\n )}\n class=${classMap(linkClasses)}\n @click=${(e: Event) => this.handleClick(e)}\n @pointerenter=${(e: PointerEvent) => this.handlePointerEnter(e)}\n >\n <slot name=\"icon\"></slot>\n <slot @slotchange=${this._handleDefaultSlotChange}></slot>\n\n ${this.slottedEls.length\n ? html` <span class=\"arrow\">${unsafeSVG(arrowIcon)}</span> `\n : null}\n </a>\n\n <div\n class=${classMap(menuClasses)}\n style=${styleMap(this.menuPosition)}\n >\n <div class=${classMap(wrapperClasses)}>\n <button\n class=\"go-back\"\n type=\"button\"\n @click=${(e: Event) => this._handleBack(e)}\n >\n <span>${unsafeSVG(backIcon)}</span>\n ${this.backText}\n </button>\n ${showSearch\n ? html`\n <kyn-text-input\n hideLabel\n size=\"sm\"\n type=\"search\"\n label=${this.searchLabel}\n placeholder=${this.searchLabel}\n value=${this._searchTerm}\n @on-input=${(e: Event) => this._handleSearch(e)}\n >\n <span slot=\"icon\" class=\"search-icon\">\n ${unsafeSVG(searchIcon)}\n </span>\n ${this.searchLabel}\n </kyn-text-input>\n `\n : null}\n\n <div\n class=\"links-columns\"\n style=${styleMap(this._linksColumnStyles)}\n >\n <slot\n name=\"links\"\n @slotchange=${this._handleLinksSlotChange}\n ></slot>\n </div>\n </div>\n </div>\n </div>\n `;\n }\n\n /** Compute inline styles for the links-columns wrapper.\n * Only applies multi-column layout for plain (non-categorical) flyouts\n * when the number of links exceeds linksPerColumn.\n * @internal\n */\n private get _linksColumnStyles() {\n if (\n !this.hasCategorical &&\n this.linksPerColumn > 0 &&\n this._slottedLinkCount > this.linksPerColumn\n ) {\n const columnCount = Math.ceil(\n this._slottedLinkCount / this.linksPerColumn\n );\n return { 'column-count': columnCount.toString() };\n }\n return {};\n }\n\n private _handleSearch(e: any) {\n this._searchTerm = e.detail.value.toLowerCase();\n this._searchFilter();\n }\n\n private _searchFilter() {\n const Links: any = this.querySelectorAll(\n ':scope > kyn-header-link, :scope > kyn-header-category > kyn-header-link'\n );\n\n Links.forEach((link: any) => {\n // get link text\n const textSlot = link.shadowRoot?.querySelector(\n 'slot:not([name])'\n ) as HTMLSlotElement | null;\n const nodes: any = textSlot?.assignedNodes({ flatten: true }) ?? [];\n let linkText = '';\n for (let i = 0; i < nodes.length; i++) {\n linkText += nodes[i].textContent.trim();\n }\n\n if (linkText.toLowerCase().includes(this._searchTerm)) {\n link.style.display = 'block';\n } else {\n link.style.display = 'none';\n }\n });\n\n this._positionMenu();\n }\n\n /** Extract text content from the default slot to use as auto-title */\n private _handleDefaultSlotChange(e: Event) {\n const slot = e.target as HTMLSlotElement;\n const nodes = slot.assignedNodes({ flatten: true });\n let textContent = '';\n for (const node of nodes) {\n textContent += node.textContent?.trim() ?? '';\n }\n this._autoTitle = textContent.trim();\n }\n\n private _handleBack(e?: Event) {\n if (e) {\n e.preventDefault();\n e.stopPropagation();\n }\n\n // detect if we're inside the categorized/mega nav variant\n const headerCategories = this.closest('kyn-header-categories') as\n | (HTMLElement & { handleBackClick?: (evt?: Event) => void })\n | null;\n\n if (headerCategories?.handleBackClick) {\n headerCategories.handleBackClick(e);\n\n // Close any open header links under this nav\n const navRoot =\n (this.closest('kyn-header-nav') as HTMLElement | null) ??\n headerCategories;\n\n const links = navRoot.querySelectorAll<HTMLElement & { open?: boolean }>(\n 'kyn-header-link[open]'\n );\n\n links.forEach((link) => {\n link.removeAttribute('open');\n if ('open' in link) {\n (link as any).open = false;\n }\n });\n\n // Clear local search for this column\n this._searchTerm = '';\n this._searchFilter();\n\n return;\n }\n\n // BASIC NAV:\n // Preserve original behavior: go up one level\n this.open = false;\n this._searchTerm = '';\n this._searchFilter();\n }\n\n private _handleLinksSlotChange() {\n // Detect if this link contains categorical navigation\n const hasCategories = this.querySelector('kyn-header-categories') !== null;\n const hasCategory = this.querySelector('kyn-header-category') !== null;\n const categoriesEl =\n this.querySelector('kyn-tab-panel[visible] kyn-header-categories') ||\n this.querySelector('kyn-header-categories');\n\n this.hasCategorical = hasCategories || hasCategory;\n this.hasMultiColumn = hasCategories; // Only true for multi-column wrapper\n this.fixedColumnWidths =\n categoriesEl?.hasAttribute('fixed-column-widths') ?? false;\n\n // Prime flyout column count before open so width/layout CSS can apply\n // without a second-pass visual snap.\n if (categoriesEl) {\n const dataCol = categoriesEl.getAttribute('data-columns');\n this.flyoutColumns = dataCol ? parseInt(dataCol, 10) || 0 : 0;\n } else {\n this.flyoutColumns = 0;\n }\n\n // Count direct child plain links for column wrapping\n const plainLinks = this.querySelectorAll(':scope > kyn-header-link');\n this._slottedLinkCount = plainLinks.length;\n\n this.requestUpdate();\n }\n\n /** Handle column count changes from slotted kyn-header-categories\n * @internal\n */\n private _handleColumnCountChange = (e: Event) => {\n const detail = (\n e as CustomEvent<{\n columnCount: number;\n fixedColumnWidths?: boolean;\n }>\n ).detail;\n if (detail?.columnCount !== undefined) {\n this.flyoutColumns = detail.columnCount;\n this.fixedColumnWidths = Boolean(detail.fixedColumnWidths);\n }\n };\n\n /**\n * @internal\n */\n private get _isDesktopViewport(): boolean {\n if (typeof window === 'undefined') return true;\n return window.innerWidth >= 672;\n }\n\n private handlePointerEnter(e: PointerEvent) {\n if (\n e.pointerType === 'mouse' &&\n this.slottedEls.length &&\n this._isDesktopViewport\n ) {\n clearTimeout(this._leaveTimer);\n\n // close other open sibling links immediately when entering any link with submenus\n this._closeOtherOpenLinks();\n\n this._enterTimer = setTimeout(() => {\n // Close siblings again right before opening to prevent race conditions\n this._closeOtherOpenLinks();\n this.open = true;\n }, 150);\n }\n }\n\n /** close other open header links at the same level\n * @internal\n */\n private _closeOtherOpenLinks(): void {\n // Strategy: Close all sibling header-links that are currently open\n // This handles the sidebar nav where links are direct children of header-nav\n\n // For level 1 links (main sidebar), find siblings via parent\n if (this.level === 1) {\n const parent = this.parentElement;\n if (parent) {\n // Find ALL level 1 links (not just open ones) to clear pending timers\n const siblingLinks = parent.querySelectorAll<\n HTMLElement & { open?: boolean; _enterTimer?: any }\n >(':scope > kyn-header-link');\n\n siblingLinks.forEach((link) => {\n if (link !== this) {\n // Clear any pending timers\n if ((link as any)._enterTimer) {\n clearTimeout((link as any)._enterTimer);\n (link as any)._enterTimer = undefined;\n }\n if ((link as any)._leaveTimer) {\n clearTimeout((link as any)._leaveTimer);\n (link as any)._leaveTimer = undefined;\n }\n // Force close - set property, remove attribute, and force re-render\n if ((link as any).open) {\n (link as any).open = false;\n link.removeAttribute('open');\n (link as any).requestUpdate?.();\n }\n }\n });\n }\n return;\n }\n\n // For nested links, find the nearest container and close same-level links\n const navContainer =\n this.closest('kyn-header-nav') ||\n this.closest('kyn-tab-panel') ||\n this.closest('.menu__content');\n\n if (navContainer) {\n const allLinks = navContainer.querySelectorAll<\n HTMLElement & { open?: boolean; level?: number; _enterTimer?: any }\n >('kyn-header-link');\n\n allLinks.forEach((link) => {\n if (link !== this && (link as any).level === this.level) {\n // Clear any pending timers\n if ((link as any)._enterTimer) {\n clearTimeout((link as any)._enterTimer);\n (link as any)._enterTimer = undefined;\n }\n if ((link as any)._leaveTimer) {\n clearTimeout((link as any)._leaveTimer);\n (link as any)._leaveTimer = undefined;\n }\n // Force close - set property, remove attribute, and force re-render\n if ((link as any).open) {\n (link as any).open = false;\n link.removeAttribute('open');\n (link as any).requestUpdate?.();\n }\n }\n });\n }\n }\n\n private handlePointerLeave(e: PointerEvent) {\n // Suppress close during internal view transitions (e.g. \"More\" → detail view).\n // The flyout resizes and the cursor may end up outside, but the user's intent\n // was to drill in — not to leave.\n if (this._viewChangeInProgress) {\n return;\n }\n\n // check both the link's own prop and parent nav's prop\n // if either is false, don't auto-close the flyout\n const shouldAutoCollapse = this._shouldAutoCollapse();\n if (!shouldAutoCollapse) {\n return;\n }\n\n if (\n e.pointerType === 'mouse' &&\n this.slottedEls.length &&\n this._searchTerm === '' &&\n this._isDesktopViewport\n ) {\n clearTimeout(this._enterTimer);\n this._leaveTimer = setTimeout(() => {\n this.open = false;\n }, 150);\n }\n }\n\n /** Check if flyout should auto-collapse based on parent nav's autoOpenFlyout.\n * Only applies to links containing categorical nav (kyn-header-categories).\n * @internal\n */\n private _shouldAutoCollapse(): boolean {\n // Non-categorical links always auto-collapse (preserve original behavior)\n if (!this.hasCategorical && !this.fullWidthFlyout) {\n return true;\n }\n\n const parentNav = this.closest('kyn-header-nav') as\n | (HTMLElement & { autoOpenFlyout?: string })\n | null;\n\n // If parent nav has autoOpenFlyout set (truthy), don't auto-collapse\n if (parentNav?.autoOpenFlyout) {\n return false;\n }\n\n return true;\n }\n\n private handleClick(e: Event) {\n let preventDefault = false;\n\n if (this.slottedEls.length) {\n preventDefault = true;\n e.preventDefault();\n // Close other open links before toggling this one\n if (!this.open) {\n this._closeOtherOpenLinks();\n }\n this.open = !this.open;\n } else {\n this._closeOtherOpenLinks();\n }\n\n const event = new CustomEvent('on-click', {\n detail: { origEvent: e, defaultPrevented: preventDefault },\n });\n this.dispatchEvent(event);\n }\n\n private handleClickOut(e: Event) {\n if (!e.composedPath().includes(this)) {\n this.open = false;\n this._searchTerm = '';\n this._searchFilter();\n }\n }\n\n private determineLevel() {\n let level = 1;\n let node: any = this.parentNode;\n\n // Traverse up the DOM tree\n while (node) {\n if (node.nodeName === 'KYN-HEADER-LINK') {\n level = (node.level ?? 1) + 1;\n break;\n } else if (\n node.nodeName === 'KYN-HEADER-CATEGORY' &&\n node.parentNode?.nodeName === 'KYN-HEADER-LINK'\n ) {\n level = (node.parentNode.level ?? 1) + 1;\n break;\n } else if (\n window.innerWidth < 672 &&\n node.nodeName === 'KYN-HEADER-FLYOUT'\n ) {\n level = 2;\n break;\n }\n node = node.parentNode;\n }\n\n this.level = level;\n }\n\n private _positionMenu() {\n const linkBounds = this.getBoundingClientRect?.();\n const menuEl =\n this.shadowRoot?.querySelector<HTMLElement>('.menu__content');\n const menuBounds = menuEl?.getBoundingClientRect?.();\n\n if (!linkBounds || !menuBounds) {\n return;\n }\n\n const Padding = 12;\n const HeaderHeight = 64;\n\n const linkHalf = linkBounds.top + linkBounds.height / 2;\n const menuHalf = menuBounds.height / 2;\n\n const topCandidate =\n linkHalf + menuHalf > window.innerHeight\n ? linkHalf - menuHalf - (linkHalf + menuHalf - window.innerHeight) - 16\n : linkHalf - menuHalf;\n\n if (this.level === 1) {\n // Keep level-1 flyouts pinned to the nav rail origin (legacy behavior).\n // This avoids viewport/header bound drift and keeps panels consistently aligned.\n let navMenuHeight = 0;\n const headerNav = this.closest('kyn-header-nav') as HTMLElement | null;\n if (headerNav) {\n const navMenu = headerNav.shadowRoot?.querySelector(\n '.menu__content'\n ) as HTMLElement | null;\n if (navMenu) {\n navMenuHeight = navMenu.offsetHeight;\n }\n }\n\n this.menuPosition = {\n top: HeaderHeight + 'px',\n left: '0px',\n minHeight: navMenuHeight + 'px',\n };\n } else {\n const top = topCandidate < HeaderHeight ? HeaderHeight : topCandidate;\n this.menuPosition = {\n top: top + 'px',\n left: linkBounds.right + Padding + 'px',\n };\n }\n }\n\n /** @internal */\n private _debounceResize = debounce(() => {\n this.determineLevel();\n if (this.open) {\n this._positionMenu();\n }\n });\n\n override firstUpdated() {\n this.determineLevel();\n this._handleLinksSlotChange();\n }\n\n override updated(changedProps: any) {\n // Re-position after render when the menu has its actual dimensions\n if (changedProps.has('open') && this.open) {\n // Use rAF to ensure the DOM has painted\n requestAnimationFrame(() => {\n this._positionMenu();\n });\n }\n\n // Re-position when column count changes (categories may render after flyout opens)\n if (changedProps.has('flyoutColumns') && this.open) {\n requestAnimationFrame(() => {\n this._positionMenu();\n });\n }\n }\n\n /**\n * @internal\n */\n private _handleDocumentClick = (e: Event) => this.handleClickOut(e);\n\n /** Suppress pointer-leave close when categories switch views (root ↔ detail).\n * @internal\n */\n private _handleNavChange = () => {\n this._viewChangeInProgress = true;\n clearTimeout(this._viewChangeTimer);\n // Allow enough time for the flyout to finish resizing before re-enabling close\n this._viewChangeTimer = setTimeout(() => {\n this._viewChangeInProgress = false;\n }, 500);\n };\n\n override connectedCallback() {\n super.connectedCallback();\n document.addEventListener('click', this._handleDocumentClick);\n window.addEventListener('resize', this._debounceResize);\n // Listen for column count changes from slotted kyn-header-categories\n this.addEventListener(\n 'on-column-count-change',\n this._handleColumnCountChange\n );\n // Suppress flyout close during internal view transitions (e.g. \"More\" click)\n this.addEventListener('on-nav-change', this._handleNavChange);\n // Check for truncation inheritance after DOM is ready\n queueMicrotask(() => {\n this._observeParentNavTruncate();\n });\n }\n\n /** Find the closest owning 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 /** Sync inherited truncate state with the owning nav.\n * @internal\n */\n private _syncInheritedTruncate = (): void => {\n this._inheritedTruncate = this._isInTruncatingNav();\n this._inGlobalSwitcherNav =\n this._resolveOwningNav()?.classList.contains('global-switcher-nav') ??\n false;\n };\n\n /** Observe `truncate-links` changes on the owning nav.\n * @internal\n */\n private _observeParentNavTruncate(): void {\n const nav = this._resolveOwningNav();\n\n if (this._observedNav === nav) {\n this._syncInheritedTruncate();\n return;\n }\n\n if (this._truncateObserver) {\n this._truncateObserver.disconnect();\n this._truncateObserver = undefined;\n }\n\n this._observedNav = nav;\n\n if (nav) {\n this._truncateObserver = new MutationObserver(() => {\n this._syncInheritedTruncate();\n });\n this._truncateObserver.observe(nav, {\n attributes: true,\n attributeFilter: ['truncate-links'],\n });\n }\n\n this._syncInheritedTruncate();\n }\n\n /** Check if this link is inside a nav with truncate-links attribute\n * Uses getRootNode to traverse up through shadow DOM boundaries\n * @internal\n */\n private _isInTruncatingNav(): boolean {\n return this._resolveOwningNav()?.hasAttribute('truncate-links') ?? false;\n }\n\n override disconnectedCallback() {\n // clear timers to avoid callbacks after unmount\n if (this._enterTimer) {\n clearTimeout(this._enterTimer);\n this._enterTimer = undefined;\n }\n if (this._leaveTimer) {\n clearTimeout(this._leaveTimer);\n this._leaveTimer = undefined;\n }\n\n if (this._viewChangeTimer) {\n clearTimeout(this._viewChangeTimer);\n this._viewChangeTimer = undefined;\n }\n\n document.removeEventListener('click', this._handleDocumentClick);\n window.removeEventListener('resize', this._debounceResize);\n this.removeEventListener(\n 'on-column-count-change',\n this._handleColumnCountChange\n );\n this.removeEventListener('on-nav-change', this._handleNavChange);\n if (this._truncateObserver) {\n this._truncateObserver.disconnect();\n this._truncateObserver = undefined;\n }\n this._observedNav = null;\n super.disconnectedCallback();\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kyn-header-link': HeaderLink;\n }\n}\n"],"names":["HeaderLink","customElement","LitElement","_classThis","_classSuper","_HeaderLink_open_accessor_storage","set","this","__runInitializers","_open_initializers","_HeaderLink_href_accessor_storage","_open_extraInitializers","_href_initializers","_HeaderLink_target_accessor_storage","_href_extraInitializers","_target_initializers","_HeaderLink_rel_accessor_storage","_target_extraInitializers","_rel_initializers","_HeaderLink_isActive_accessor_storage","_rel_extraInitializers","_isActive_initializers","_HeaderLink_level_accessor_storage","_isActive_extraInitializers","_level_initializers","_HeaderLink_divider_accessor_storage","_level_extraInitializers","_divider_initializers","_HeaderLink_searchLabel_accessor_storage","_divider_extraInitializers","_searchLabel_initializers","_HeaderLink_searchThreshold_accessor_storage","_searchLabel_extraInitializers","_searchThreshold_initializers","_HeaderLink_linksPerColumn_accessor_storage","_searchThreshold_extraInitializers","_linksPerColumn_initializers","_HeaderLink_hideSearch_accessor_storage","_linksPerColumn_extraInitializers","_hideSearch_initializers","_HeaderLink_backText_accessor_storage","_hideSearch_extraInitializers","_backText_initializers","_HeaderLink_leftPadding_accessor_storage","_backText_extraInitializers","_leftPadding_initializers","_HeaderLink_linkTitle_accessor_storage","_leftPadding_extraInitializers","_linkTitle_initializers","_HeaderLink_truncate_accessor_storage","_linkTitle_extraInitializers","_truncate_initializers","_HeaderLink__autoTitle_accessor_storage","_truncate_extraInitializers","__autoTitle_initializers","_HeaderLink_hasCategorical_accessor_storage","__autoTitle_extraInitializers","_hasCategorical_initializers","_HeaderLink_hasMultiColumn_accessor_storage","_hasCategorical_extraInitializers","_hasMultiColumn_initializers","_HeaderLink_flyoutColumns_accessor_storage","_hasMultiColumn_extraInitializers","_flyoutColumns_initializers","_HeaderLink_fixedColumnWidths_accessor_storage","_flyoutColumns_extraInitializers","_fixedColumnWidths_initializers","_HeaderLink_fullWidthFlyout_accessor_storage","_fixedColumnWidths_extraInitializers","_fullWidthFlyout_initializers","_HeaderLink__searchTerm_accessor_storage","_fullWidthFlyout_extraInitializers","__searchTerm_initializers","_HeaderLink__slottedLinkCount_accessor_storage","__searchTerm_extraInitializers","__slottedLinkCount_initializers","_HeaderLink_slottedEls_accessor_storage","__slottedLinkCount_extraInitializers","_slottedEls_initializers","_enterTimer","_slottedEls_extraInitializers","_HeaderLink__leaveTimer_accessor_storage","__leaveTimer_initializers","_viewChangeInProgress","__leaveTimer_extraInitializers","_HeaderLink__inheritedTruncate_accessor_storage","__inheritedTruncate_initializers","_HeaderLink__inGlobalSwitcherNav_accessor_storage","__inheritedTruncate_extraInitializers","__inGlobalSwitcherNav_initializers","_truncateObserver","__inGlobalSwitcherNav_extraInitializers","_observedNav","_HeaderLink_menuPosition_accessor_storage","_menuPosition_initializers","_handleColumnCountChange","_menuPosition_extraInitializers","e","detail","undefined","columnCount","flyoutColumns","fixedColumnWidths","Boolean","_debounceResize","debounce","determineLevel","open","_positionMenu","_handleDocumentClick","handleClickOut","_handleNavChange","clearTimeout","_viewChangeTimer","setTimeout","_syncInheritedTruncate","_inheritedTruncate","_isInTruncatingNav","_inGlobalSwitcherNav","_b","_a","_resolveOwningNav","classList","contains","__classPrivateFieldGet","value","__classPrivateFieldSet","href","target","rel","isActive","level","divider","searchLabel","searchThreshold","linksPerColumn","hideSearch","backText","leftPadding","linkTitle","truncate","_autoTitle","hasCategorical","hasMultiColumn","fullWidthFlyout","_searchTerm","_slottedLinkCount","slottedEls","_leaveTimer","menuPosition","render","classes","menu","length","shouldTruncate","linkClasses","active","interactive","menuClasses","menu__content","slotted","Links","querySelectorAll","showSearch","wrapperClasses","wrapper","html","classMap","handlePointerLeave","handlePointerEnter","ifDefined","handleClick","_handleDefaultSlotChange","unsafeSVG","arrowIcon","styleMap","_handleBack","backIcon","_handleSearch","searchIcon","_linksColumnStyles","_handleLinksSlotChange","Math","ceil","toString","toLowerCase","_searchFilter","forEach","link","textSlot","shadowRoot","querySelector","nodes","assignedNodes","flatten","linkText","i","textContent","trim","includes","style","display","node","preventDefault","stopPropagation","headerCategories","closest","handleBackClick","removeAttribute","hasCategories","hasCategory","categoriesEl","hasAttribute","dataCol","getAttribute","parseInt","plainLinks","requestUpdate","_isDesktopViewport","window","innerWidth","pointerType","_closeOtherOpenLinks","parent","parentElement","navContainer","_shouldAutoCollapse","parentNav","autoOpenFlyout","event","CustomEvent","origEvent","defaultPrevented","dispatchEvent","composedPath","parentNode","nodeName","_c","linkBounds","getBoundingClientRect","menuEl","menuBounds","call","linkHalf","top","height","menuHalf","topCandidate","innerHeight","navMenuHeight","headerNav","navMenu","_d","offsetHeight","HeaderHeight","left","minHeight","right","firstUpdated","updated","changedProps","has","requestAnimationFrame","connectedCallback","super","document","addEventListener","queueMicrotask","_observeParentNavTruncate","root","getRootNode","ShadowRoot","nav","host","disconnect","MutationObserver","observe","attributes","attributeFilter","disconnectedCallback","removeEventListener","property","type","reflect","_href_decorators","String","_target_decorators","_rel_decorators","_isActive_decorators","_level_decorators","state","_divider_decorators","_searchLabel_decorators","_searchThreshold_decorators","Number","_linksPerColumn_decorators","_hideSearch_decorators","_backText_decorators","_leftPadding_decorators","attribute","__autoTitle_decorators","_hasCategorical_decorators","_hasMultiColumn_decorators","_flyoutColumns_decorators","_fixedColumnWidths_decorators","_fullWidthFlyout_decorators","__searchTerm_decorators","__slottedLinkCount_decorators","_slottedEls_decorators","queryAssignedElements","slot","__leaveTimer_decorators","__inheritedTruncate_decorators","__inGlobalSwitcherNav_decorators","_menuPosition_decorators","__esDecorate","_open_decorators","kind","name","static","private","access","obj","get","metadata","_metadata","_linkTitle_decorators","_truncate_decorators","_classDescriptor","_classDecorators","_classExtraInitializers","styles","unsafeCSS","HeaderLinkScss"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"iconSelector.js","sources":["../../../../src/components/reusable/iconSelector/iconSelector.ts"],"sourcesContent":["import { LitElement, html, unsafeCSS } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { classMap } from 'lit-html/directives/class-map.js';\nimport { unsafeSVG } from 'lit-html/directives/unsafe-svg.js';\nimport IconSelectorScss from './iconSelector.scss?inline';\n\nimport defaultUncheckedIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/recommend.svg';\nimport defaultCheckedIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/recommend-filled.svg';\n\n/**\n * Icon Selector - A checkbox-style toggle using icons for visual states.\n * Primarily designed for favorite/unfavorite functionality.\n *\n * @fires on-change - Emits when the checked state changes. Detail includes checked (boolean), value (string), and origEvent.\n * @slot icon-unchecked - Optional icon for unchecked state. Defaults to star outline.\n * @slot icon-checked - Optional icon for checked state. Defaults to filled star.\n */\n@customElement('kyn-icon-selector')\nexport class IconSelector extends LitElement {\n static override styles = unsafeCSS(IconSelectorScss);\n\n /** @ignore */\n static override shadowRootOptions = {\n ...LitElement.shadowRootOptions,\n delegatesFocus: true,\n };\n\n /** Checked/selected state. */\n @property({ type: Boolean, reflect: true })\n accessor checked = false;\n\n /** Value associated with this selector, useful for identifying the item. */\n @property({ type: String })\n accessor value = '';\n\n /** Accessible label when checked. */\n @property({ type: String })\n accessor checkedLabel = 'Remove from favorites';\n\n /** Accessible label when unchecked. */\n @property({ type: String })\n accessor uncheckedLabel = 'Add to favorites';\n\n /** Disabled state. */\n @property({ type: Boolean, reflect: true })\n accessor disabled = false;\n\n /**\n * When true, the icon is only visible when the parent element is hovered.\n * Visibility is controlled via CSS on the parent component.\n * Can also be set via `--kyn-icon-selector-only-visible-on-hover: 1` on an ancestor.\n */\n @property({ type: Boolean, reflect: true })\n accessor onlyVisibleOnHover = false;\n\n /**\n * When true, checked items remain visible even when onlyVisibleOnHover is enabled.\n * Useful for showing users which items they've already favorited.\n * Can also be set via `--kyn-icon-selector-persist-when-checked: 1` on an ancestor.\n */\n @property({ type: Boolean })\n accessor persistWhenChecked = false;\n\n /**\n * Enables a subtle pop/crossfade animation when toggling checked state.\n * Can also be enabled for all descendants by setting the CSS custom property\n * `--kyn-icon-selector-animate-selection: 1` on any ancestor element.\n */\n @property({ type: Boolean })\n accessor animateSelection = false;\n\n /** @internal Resolved flags (prop OR inherited CSS custom property). */\n private _shouldAnimate = false;\n /** @internal Resolved flags (prop OR inherited CSS custom property). */\n private _shouldOnlyVisibleOnHover = false;\n /** @internal Resolved flags (prop OR inherited CSS custom property). */\n private _shouldPersistWhenChecked = false;\n\n /** @internal Suppresses opacity transition until initial state is painted. */\n private _transitionsReady = false;\n\n /** @internal Set on user interaction so animation only plays on deliberate toggles. */\n private _justToggled = false;\n\n override render() {\n const classes = {\n 'icon-selector': true,\n 'icon-selector--checked': this.checked,\n 'only-visible-on-hover': this._shouldOnlyVisibleOnHover,\n 'persist-when-checked': this._shouldPersistWhenChecked,\n 'animate-selection': this._shouldAnimate,\n 'transitions-ready': this._transitionsReady,\n 'just-toggled': this._justToggled,\n };\n\n const currentLabel = this.checked ? this.checkedLabel : this.uncheckedLabel;\n\n return html`\n <button\n type=\"button\"\n class=${classMap(classes)}\n role=\"checkbox\"\n aria-checked=${this.checked}\n aria-label=${currentLabel}\n title=${currentLabel}\n ?disabled=${this.disabled}\n @click=${this._handleClick}\n @keydown=${this._handleKeydown}\n >\n <span class=\"icon icon--unchecked\">\n <slot name=\"icon-unchecked\">${unsafeSVG(defaultUncheckedIcon)}</slot>\n </span>\n <span class=\"icon icon--checked\">\n <slot name=\"icon-checked\">${unsafeSVG(defaultCheckedIcon)}</slot>\n </span>\n </button>\n `;\n }\n\n private _handleClick(e: Event) {\n if (this.disabled) return;\n\n e.preventDefault();\n e.stopPropagation();\n\n this.checked = !this.checked;\n this._justToggled = true;\n this._emitChange(e);\n }\n\n private _handleKeydown(e: KeyboardEvent) {\n if (this.disabled) return;\n\n if (e.key === ' ' || e.key === 'Enter') {\n e.preventDefault();\n e.stopPropagation();\n this.checked = !this.checked;\n this._justToggled = true;\n this._emitChange(e);\n }\n }\n\n private _emitChange(origEvent: Event) {\n this.dispatchEvent(\n new CustomEvent('on-change', {\n bubbles: true,\n composed: true,\n detail: {\n checked: this.checked,\n value: this.value,\n origEvent,\n },\n })\n );\n }\n\n /**\n * Stop click events from bubbling up to parent elements (e.g., anchor tags).\n * This ensures clicking the icon-selector doesn't trigger navigation.\n * @internal\n */\n private _handleHostClick = (e: Event) => {\n e.stopPropagation();\n };\n\n override firstUpdated() {\n // Re-resolve in case connectedCallback ran before styles were computed.\n this._readCSSFlags();\n this._resolveFlags();\n this.requestUpdate();\n }\n\n override updated() {\n // Enable opacity transitions one frame after the first render that includes\n // the only-visible-on-hover class, so the initial opacity:0 is applied\n // instantly (no flash) and subsequent hover interactions get smooth transitions.\n if (this._shouldOnlyVisibleOnHover && !this._transitionsReady) {\n requestAnimationFrame(() => {\n this._transitionsReady = true;\n this.requestUpdate();\n });\n }\n }\n\n private _readCSSFlags() {\n const styles = getComputedStyle(this);\n const cssFlag = (prop: string) => {\n const val = styles.getPropertyValue(prop).trim();\n return val === '1' || val === 'true';\n };\n this._cssAnimate = cssFlag('--kyn-icon-selector-animate-selection');\n this._cssOnlyVisibleOnHover = cssFlag(\n '--kyn-icon-selector-only-visible-on-hover'\n );\n this._cssPersistWhenChecked = cssFlag(\n '--kyn-icon-selector-persist-when-checked'\n );\n }\n\n override willUpdate(changedProps: Map<string, unknown>) {\n if (\n changedProps.has('animateSelection') ||\n changedProps.has('onlyVisibleOnHover') ||\n changedProps.has('persistWhenChecked')\n ) {\n this._resolveFlags();\n }\n }\n\n /** @internal Cached CSS custom property values (read once in firstUpdated). */\n private _cssAnimate = false;\n\n /** @internal Cached CSS custom property values (read once in firstUpdated). */\n private _cssOnlyVisibleOnHover = false;\n\n /** @internal Cached CSS custom property values (read once in firstUpdated). */\n private _cssPersistWhenChecked = false;\n\n private _resolveFlags() {\n this._shouldAnimate = this.animateSelection || this._cssAnimate;\n this._shouldOnlyVisibleOnHover =\n this.onlyVisibleOnHover || this._cssOnlyVisibleOnHover;\n this._shouldPersistWhenChecked =\n this.persistWhenChecked || this._cssPersistWhenChecked;\n }\n\n override connectedCallback() {\n super.connectedCallback();\n this.addEventListener('click', this._handleHostClick);\n // Read CSS custom properties early so the first render has correct classes.\n // Prevents blink where icons are briefly visible before only-visible-on-hover applies.\n this._readCSSFlags();\n this._resolveFlags();\n }\n\n override disconnectedCallback() {\n this.removeEventListener('click', this._handleHostClick);\n super.disconnectedCallback();\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kyn-icon-selector': IconSelector;\n }\n}\n"],"names":["IconSelector","customElement","LitElement","_classThis","_classSuper","_IconSelector_checked_accessor_storage","set","this","__runInitializers","_checked_initializers","_IconSelector_value_accessor_storage","_checked_extraInitializers","_value_initializers","_IconSelector_checkedLabel_accessor_storage","_value_extraInitializers","_checkedLabel_initializers","_IconSelector_uncheckedLabel_accessor_storage","_checkedLabel_extraInitializers","_uncheckedLabel_initializers","_IconSelector_disabled_accessor_storage","_uncheckedLabel_extraInitializers","_disabled_initializers","_IconSelector_onlyVisibleOnHover_accessor_storage","_disabled_extraInitializers","_onlyVisibleOnHover_initializers","_IconSelector_persistWhenChecked_accessor_storage","_onlyVisibleOnHover_extraInitializers","_persistWhenChecked_initializers","_IconSelector_animateSelection_accessor_storage","_persistWhenChecked_extraInitializers","_animateSelection_initializers","_shouldAnimate","_animateSelection_extraInitializers","_shouldOnlyVisibleOnHover","_shouldPersistWhenChecked","_transitionsReady","_justToggled","_handleHostClick","e","stopPropagation","_cssAnimate","_cssOnlyVisibleOnHover","_cssPersistWhenChecked","checked","__classPrivateFieldGet","value","__classPrivateFieldSet","checkedLabel","uncheckedLabel","disabled","onlyVisibleOnHover","persistWhenChecked","animateSelection","render","classes","currentLabel","html","classMap","_handleClick","_handleKeydown","unsafeSVG","defaultUncheckedIcon","defaultCheckedIcon","preventDefault","_emitChange","key","origEvent","dispatchEvent","CustomEvent","bubbles","composed","detail","firstUpdated","_readCSSFlags","_resolveFlags","requestUpdate","updated","requestAnimationFrame","styles","getComputedStyle","cssFlag","prop","val","getPropertyValue","trim","willUpdate","changedProps","has","connectedCallback","super","addEventListener","disconnectedCallback","removeEventListener","property","type","Boolean","reflect","_value_decorators","String","_checkedLabel_decorators","_uncheckedLabel_decorators","_persistWhenChecked_decorators","_animateSelection_decorators","__esDecorate","_checked_decorators","kind","name","static","private","access","obj","get","metadata","_metadata","_disabled_decorators","_onlyVisibleOnHover_decorators","_classDescriptor","_classDecorators","_classExtraInitializers","unsafeCSS","IconSelectorScss","shadowRootOptions","delegatesFocus"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"iconSelector.js","sources":["../../../../src/components/reusable/iconSelector/iconSelector.ts"],"sourcesContent":["import { LitElement, html, unsafeCSS } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { classMap } from 'lit-html/directives/class-map.js';\nimport { unsafeSVG } from 'lit-html/directives/unsafe-svg.js';\nimport IconSelectorScss from './iconSelector.scss?inline';\n\nimport defaultUncheckedIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/recommend.svg';\nimport defaultCheckedIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/recommend-filled.svg';\n\n/**\n * Icon Selector - A checkbox-style toggle using icons for visual states.\n * Primarily designed for favorite/unfavorite functionality.\n *\n * @fires on-change - Emits when the checked state changes. Detail includes checked (boolean), value (string), and origEvent.\n * @slot icon-unchecked - Optional icon for unchecked state. Defaults to star outline.\n * @slot icon-checked - Optional icon for checked state. Defaults to filled star.\n */\n@customElement('kyn-icon-selector')\nexport class IconSelector extends LitElement {\n static override styles = unsafeCSS(IconSelectorScss);\n\n /** @ignore */\n static override shadowRootOptions = {\n ...LitElement.shadowRootOptions,\n delegatesFocus: true,\n };\n\n /** Checked/selected state. */\n @property({ type: Boolean, reflect: true })\n accessor checked = false;\n\n /** Value associated with this selector, useful for identifying the item. */\n @property({ type: String })\n accessor value = '';\n\n /** Accessible label when checked. */\n @property({ type: String })\n accessor checkedLabel = 'Remove from favorites';\n\n /** Accessible label when unchecked. */\n @property({ type: String })\n accessor uncheckedLabel = 'Add to favorites';\n\n /** Disabled state. */\n @property({ type: Boolean, reflect: true })\n accessor disabled = false;\n\n /**\n * When true, the icon is only visible when the parent element is hovered.\n * Visibility is controlled via CSS on the parent component.\n * Can also be set via `--kyn-icon-selector-only-visible-on-hover: 1` on an ancestor.\n */\n @property({ type: Boolean, reflect: true })\n accessor onlyVisibleOnHover = false;\n\n /**\n * When true, checked items remain visible even when onlyVisibleOnHover is enabled.\n * Useful for showing users which items they've already favorited.\n * Can also be set via `--kyn-icon-selector-persist-when-checked: 1` on an ancestor.\n */\n @property({ type: Boolean })\n accessor persistWhenChecked = false;\n\n /**\n * Enables a subtle pop/crossfade animation when toggling checked state.\n * Can also be enabled for all descendants by setting the CSS custom property\n * `--kyn-icon-selector-animate-selection: 1` on any ancestor element.\n */\n @property({ type: Boolean })\n accessor animateSelection = false;\n\n /** @internal Resolved flags (prop OR inherited CSS custom property). */\n private _shouldAnimate = false;\n /** @internal Resolved flags (prop OR inherited CSS custom property). */\n private _shouldOnlyVisibleOnHover = false;\n /** @internal Resolved flags (prop OR inherited CSS custom property). */\n private _shouldPersistWhenChecked = false;\n\n /** @internal Suppresses opacity transition until initial state is painted. */\n private _transitionsReady = false;\n\n /** @internal Set on user interaction so animation only plays on deliberate toggles. */\n private _justToggled = false;\n\n override render() {\n const classes = {\n 'icon-selector': true,\n 'icon-selector--checked': this.checked,\n 'only-visible-on-hover': this._shouldOnlyVisibleOnHover,\n 'persist-when-checked': this._shouldPersistWhenChecked,\n 'animate-selection': this._shouldAnimate,\n 'transitions-ready': this._transitionsReady,\n 'just-toggled': this._justToggled,\n };\n\n const currentLabel = this.checked ? this.checkedLabel : this.uncheckedLabel;\n\n return html`\n <button\n type=\"button\"\n class=${classMap(classes)}\n role=\"checkbox\"\n aria-checked=${this.checked}\n aria-label=${currentLabel}\n title=${currentLabel}\n ?disabled=${this.disabled}\n @click=${this._handleClick}\n @keydown=${this._handleKeydown}\n >\n <span class=\"icon icon--unchecked\">\n <slot name=\"icon-unchecked\">${unsafeSVG(defaultUncheckedIcon)}</slot>\n </span>\n <span class=\"icon icon--checked\">\n <slot name=\"icon-checked\">${unsafeSVG(defaultCheckedIcon)}</slot>\n </span>\n </button>\n `;\n }\n\n private _handleClick(e: Event) {\n if (this.disabled) return;\n\n e.preventDefault();\n e.stopPropagation();\n\n this.checked = !this.checked;\n this._justToggled = true;\n this._emitChange(e);\n }\n\n private _handleKeydown(e: KeyboardEvent) {\n if (this.disabled) return;\n\n if (e.key === ' ' || e.key === 'Enter') {\n e.preventDefault();\n e.stopPropagation();\n this.checked = !this.checked;\n this._justToggled = true;\n this._emitChange(e);\n }\n }\n\n private _emitChange(origEvent: Event) {\n this.dispatchEvent(\n new CustomEvent('on-change', {\n bubbles: true,\n composed: true,\n detail: {\n checked: this.checked,\n value: this.value,\n origEvent,\n },\n })\n );\n }\n\n /**\n * Stop click events from bubbling up to parent elements (e.g., anchor tags).\n * This ensures clicking the icon-selector doesn't trigger navigation.\n * @internal\n */\n private _handleHostClick = (e: Event) => {\n e.stopPropagation();\n };\n\n override firstUpdated() {\n // Re-resolve in case connectedCallback ran before styles were computed.\n this._readCSSFlags();\n this._resolveFlags();\n this.requestUpdate();\n }\n\n override updated() {\n // Enable opacity transitions one frame after the first render that includes\n // the only-visible-on-hover class, so the initial opacity:0 is applied\n // instantly (no flash) and subsequent hover interactions get smooth transitions.\n if (this._shouldOnlyVisibleOnHover && !this._transitionsReady) {\n requestAnimationFrame(() => {\n this._transitionsReady = true;\n this.requestUpdate();\n });\n }\n }\n\n private _readCSSFlags() {\n const styles = getComputedStyle(this);\n const cssFlag = (prop: string) => {\n const val = styles.getPropertyValue(prop).trim();\n return val === '1' || val === 'true';\n };\n this._cssAnimate = cssFlag('--kyn-icon-selector-animate-selection');\n this._cssOnlyVisibleOnHover = cssFlag(\n '--kyn-icon-selector-only-visible-on-hover'\n );\n this._cssPersistWhenChecked = cssFlag(\n '--kyn-icon-selector-persist-when-checked'\n );\n }\n\n override willUpdate(changedProps: Map<string, unknown>) {\n if (\n changedProps.has('animateSelection') ||\n changedProps.has('onlyVisibleOnHover') ||\n changedProps.has('persistWhenChecked')\n ) {\n this._resolveFlags();\n }\n }\n\n /** @internal Cached CSS custom property values (read once in firstUpdated). */\n private _cssAnimate = false;\n\n /** @internal Cached CSS custom property values (read once in firstUpdated). */\n private _cssOnlyVisibleOnHover = false;\n\n /** @internal Cached CSS custom property values (read once in firstUpdated). */\n private _cssPersistWhenChecked = false;\n\n private _resolveFlags() {\n this._shouldAnimate = this.animateSelection || this._cssAnimate;\n this._shouldOnlyVisibleOnHover =\n this.onlyVisibleOnHover || this._cssOnlyVisibleOnHover;\n this._shouldPersistWhenChecked =\n this.persistWhenChecked || this._cssPersistWhenChecked;\n }\n\n override connectedCallback() {\n super.connectedCallback();\n this.addEventListener('click', this._handleHostClick);\n // Read CSS custom properties early so the first render has correct classes.\n // Prevents blink where icons are briefly visible before only-visible-on-hover applies.\n this._readCSSFlags();\n this._resolveFlags();\n }\n\n override disconnectedCallback() {\n this.removeEventListener('click', this._handleHostClick);\n super.disconnectedCallback();\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kyn-icon-selector': IconSelector;\n }\n}\n"],"names":["IconSelector","customElement","LitElement","_classThis","_classSuper","_IconSelector_checked_accessor_storage","set","this","__runInitializers","_checked_initializers","_IconSelector_value_accessor_storage","_checked_extraInitializers","_value_initializers","_IconSelector_checkedLabel_accessor_storage","_value_extraInitializers","_checkedLabel_initializers","_IconSelector_uncheckedLabel_accessor_storage","_checkedLabel_extraInitializers","_uncheckedLabel_initializers","_IconSelector_disabled_accessor_storage","_uncheckedLabel_extraInitializers","_disabled_initializers","_IconSelector_onlyVisibleOnHover_accessor_storage","_disabled_extraInitializers","_onlyVisibleOnHover_initializers","_IconSelector_persistWhenChecked_accessor_storage","_onlyVisibleOnHover_extraInitializers","_persistWhenChecked_initializers","_IconSelector_animateSelection_accessor_storage","_persistWhenChecked_extraInitializers","_animateSelection_initializers","_shouldAnimate","_animateSelection_extraInitializers","_shouldOnlyVisibleOnHover","_shouldPersistWhenChecked","_transitionsReady","_justToggled","_handleHostClick","e","stopPropagation","_cssAnimate","_cssOnlyVisibleOnHover","_cssPersistWhenChecked","checked","__classPrivateFieldGet","value","__classPrivateFieldSet","checkedLabel","uncheckedLabel","disabled","onlyVisibleOnHover","persistWhenChecked","animateSelection","render","classes","currentLabel","html","classMap","_handleClick","_handleKeydown","unsafeSVG","defaultUncheckedIcon","defaultCheckedIcon","preventDefault","_emitChange","key","origEvent","dispatchEvent","CustomEvent","bubbles","composed","detail","firstUpdated","_readCSSFlags","_resolveFlags","requestUpdate","updated","requestAnimationFrame","styles","getComputedStyle","cssFlag","prop","val","getPropertyValue","trim","willUpdate","changedProps","has","connectedCallback","super","addEventListener","disconnectedCallback","removeEventListener","property","type","Boolean","reflect","_value_decorators","String","_checkedLabel_decorators","_uncheckedLabel_decorators","_persistWhenChecked_decorators","_animateSelection_decorators","__esDecorate","_checked_decorators","kind","name","static","private","access","obj","get","metadata","_metadata","_disabled_decorators","_onlyVisibleOnHover_decorators","_classDescriptor","_classDecorators","_classExtraInitializers","unsafeCSS","IconSelectorScss","shadowRootOptions","delegatesFocus"],"mappings":"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"}
|