@kyndryl-design-system/shidoka-applications 2.118.2 → 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.
- package/components/global/header/headerLink.js +21 -6
- package/components/global/header/headerLink.js.map +1 -1
- package/components/reusable/dropdown/enhancedDropdownOption.js +31 -28
- package/components/reusable/dropdown/enhancedDropdownOption.js.map +1 -1
- package/components/reusable/iconSelector/iconSelector.js +1 -0
- package/components/reusable/iconSelector/iconSelector.js.map +1 -1
- package/components/reusable/popover/popover.js +1 -0
- package/components/reusable/popover/popover.js.map +1 -1
- package/package.json +1 -1
|
@@ -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,4 +1,4 @@
|
|
|
1
|
-
import{__setFunctionName as e,__esDecorate as t,__runInitializers as n,__classPrivateFieldGet as
|
|
1
|
+
import{__setFunctionName as e,__esDecorate as t,__runInitializers as n,__classPrivateFieldGet as i,__classPrivateFieldSet as o}from"tslib";import{unsafeSVG as a}from"lit-html/directives/unsafe-svg.js";import{css as d,LitElement as r,unsafeCSS as l,html as s}from"lit";import{customElement as c,property as m,state as u}from"lit/decorators.js";import{classMap as h}from"lit/directives/class-map.js";import"../checkbox/checkbox.js";import"../checkbox/checkboxGroup.js";import"../checkbox/checkboxSubgroup.js";import"../button/button.js";import{q as v,c as p}from"../../../vendor/@kyndryl-design-system/shidoka-icons-DG_R4Jwh.js";import"lit-html/directives/class-map.js";import"lit/directives/if-defined.js";import"deepmerge-ts";import"../../../common/mixins/form-input.js";import"../textInput/textInput.js";import"../../../common/helpers/helpers.js";import"../button/defs.js";var b=d`*,
|
|
2
2
|
*::before,
|
|
3
3
|
*::after {
|
|
4
4
|
box-sizing: border-box;
|
|
@@ -381,52 +381,54 @@ dialog.ai-connected.gradient-bkg {
|
|
|
381
381
|
.enhanced-option .icon-container:empty {
|
|
382
382
|
display: none;
|
|
383
383
|
}
|
|
384
|
-
.enhanced-option .text
|
|
384
|
+
.enhanced-option .text {
|
|
385
385
|
flex: 1;
|
|
386
386
|
min-width: 0;
|
|
387
387
|
}
|
|
388
|
-
.enhanced-option .title {
|
|
388
|
+
.enhanced-option .title-content {
|
|
389
389
|
font-family: var(--kd-font-family-secondary);
|
|
390
|
-
font-size: var(--kd-font-size-
|
|
391
|
-
line-height: var(--kd-line-height-
|
|
390
|
+
font-size: var(--kd-font-size-utility-2-sm);
|
|
391
|
+
line-height: var(--kd-line-height-utility-2-sm);
|
|
392
392
|
font-weight: var(--kd-font-weight-regular);
|
|
393
|
-
letter-spacing: var(--kd-letter-spacing-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
393
|
+
letter-spacing: var(--kd-letter-spacing-5);
|
|
394
|
+
font-weight: var(--kd-font-weight-medium);
|
|
395
|
+
display: flex;
|
|
396
|
+
align-items: center;
|
|
397
|
+
gap: 8px;
|
|
398
|
+
min-width: 0;
|
|
397
399
|
margin-bottom: 0;
|
|
398
400
|
}
|
|
399
401
|
@media (min-width: 42rem) {
|
|
400
|
-
.enhanced-option .title {
|
|
401
|
-
font-size: var(--kd-font-size-
|
|
402
|
-
line-height: var(--kd-line-height-
|
|
402
|
+
.enhanced-option .title-content {
|
|
403
|
+
font-size: var(--kd-font-size-utility-2-md);
|
|
404
|
+
line-height: var(--kd-line-height-utility-2-md);
|
|
403
405
|
}
|
|
404
406
|
}
|
|
405
407
|
@media (min-width: 74rem) {
|
|
406
|
-
.enhanced-option .title {
|
|
407
|
-
font-size: var(--kd-font-size-
|
|
408
|
-
line-height: var(--kd-line-height-
|
|
408
|
+
.enhanced-option .title-content {
|
|
409
|
+
font-size: var(--kd-font-size-utility-2-lg);
|
|
410
|
+
line-height: var(--kd-line-height-utility-2-lg);
|
|
409
411
|
}
|
|
410
412
|
}
|
|
411
413
|
@media (min-width: 82rem) {
|
|
412
|
-
.enhanced-option .title {
|
|
413
|
-
font-size: var(--kd-font-size-
|
|
414
|
-
line-height: var(--kd-line-height-
|
|
414
|
+
.enhanced-option .title-content {
|
|
415
|
+
font-size: var(--kd-font-size-utility-2-xlg);
|
|
416
|
+
line-height: var(--kd-line-height-utility-2-xlg);
|
|
415
417
|
}
|
|
416
418
|
}
|
|
417
419
|
@media (min-width: 99rem) {
|
|
418
|
-
.enhanced-option .title {
|
|
419
|
-
font-size: var(--kd-font-size-
|
|
420
|
-
line-height: var(--kd-line-height-
|
|
420
|
+
.enhanced-option .title-content {
|
|
421
|
+
font-size: var(--kd-font-size-utility-2-max);
|
|
422
|
+
line-height: var(--kd-line-height-utility-2-max);
|
|
421
423
|
}
|
|
422
424
|
}
|
|
423
|
-
.enhanced-option .title
|
|
424
|
-
display: flex;
|
|
425
|
-
align-items: center;
|
|
426
|
-
gap: 8px;
|
|
425
|
+
.enhanced-option .title-content slot[name=title]::slotted(*) {
|
|
427
426
|
min-width: 0;
|
|
427
|
+
overflow: hidden;
|
|
428
|
+
text-overflow: ellipsis;
|
|
429
|
+
white-space: nowrap;
|
|
428
430
|
}
|
|
429
|
-
.enhanced-option .title .tag-container {
|
|
431
|
+
.enhanced-option .title-content .tag-container {
|
|
430
432
|
flex-shrink: 0;
|
|
431
433
|
margin-bottom: 4px;
|
|
432
434
|
}
|
|
@@ -444,6 +446,7 @@ dialog.ai-connected.gradient-bkg {
|
|
|
444
446
|
line-height: var(--kd-line-height-utility-3-sm);
|
|
445
447
|
font-weight: var(--kd-font-weight-regular);
|
|
446
448
|
letter-spacing: var(--kd-letter-spacing-5);
|
|
449
|
+
font-weight: var(--kd-font-weight-regular);
|
|
447
450
|
line-height: 16px;
|
|
448
451
|
margin-top: 4px;
|
|
449
452
|
overflow: hidden;
|
|
@@ -543,7 +546,7 @@ dialog.ai-connected.gradient-bkg {
|
|
|
543
546
|
|
|
544
547
|
.enhanced-option[multiple] .content {
|
|
545
548
|
align-items: flex-start;
|
|
546
|
-
}`;let g=(()=>{var d,g,k,y,f,x,w,z,S,$,E,j,I,M,W;let T,A,C,D,O,B,q,P,R,F,N,U,K,L,G,H,J,Q=[c("kyn-enhanced-dropdown-option")],V=[],X=r,Y=[],Z=[],_=[],ee=[],te=[],ne=[],
|
|
549
|
+
}`;let g=(()=>{var d,g,k,y,f,x,w,z,S,$,E,j,I,M,W;let T,A,C,D,O,B,q,P,R,F,N,U,K,L,G,H,J,Q=[c("kyn-enhanced-dropdown-option")],V=[],X=r,Y=[],Z=[],_=[],ee=[],te=[],ne=[],ie=[],oe=[],ae=[],de=[],re=[],le=[],se=[],ce=[],me=[],ue=[],he=[],ve=[],pe=[],be=[],ge=[],ke=[],ye=[],fe=[],xe=[],we=[],ze=[],Se=[],$e=[],Ee=[];return A=class extends X{get value(){return i(this,d,"f")}set value(e){o(this,d,e,"f")}get selected(){return i(this,g,"f")}set selected(e){o(this,g,e,"f")}get disabled(){return i(this,k,"f")}set disabled(e){o(this,k,e,"f")}get readonly(){return i(this,y,"f")}set readonly(e){o(this,y,e,"f")}get allowAddOption(){return i(this,f,"f")}set allowAddOption(e){o(this,f,e,"f")}get highlighted(){return i(this,x,"f")}set highlighted(e){o(this,x,e,"f")}get multiple(){return i(this,w,"f")}set multiple(e){o(this,w,e,"f")}get removable(){return i(this,z,"f")}set removable(e){o(this,z,e,"f")}get indeterminate(){return i(this,S,"f")}set indeterminate(e){o(this,S,e,"f")}get role(){return i(this,$,"f")}set role(e){o(this,$,e,"f")}get ariaSelected(){return i(this,E,"f")}set ariaSelected(e){o(this,E,e,"f")}get text(){return i(this,j,"f")}set text(e){o(this,j,e,"f")}get displayText(){return i(this,I,"f")}set displayText(e){o(this,I,e,"f")}get hasIcon(){return i(this,M,"f")}set hasIcon(e){o(this,M,e,"f")}get kind(){return i(this,W,"f")}set kind(e){o(this,W,e,"f")}render(){const e={"enhanced-option":!0,"menu-item":!0,"option-is-readonly":this.readonly,"ai-connected":"ai"===this.kind};return s`
|
|
547
550
|
<div
|
|
548
551
|
class=${h(e)}
|
|
549
552
|
role="option"
|
|
@@ -614,5 +617,5 @@ dialog.ai-connected.gradient-bkg {
|
|
|
614
617
|
`:null}
|
|
615
618
|
</div>
|
|
616
619
|
</div>
|
|
617
|
-
`}firstUpdated(){this.hasIcon=this.iconSlot.assignedNodes({flatten:!0}).length>0;const e=this.closest("kyn-dropdown");e&&(this.kind=e.kind,e.addEventListener("kind-changed",(e=>{this.kind=e.detail})))}willUpdate(e){var t;if(e.has("selected")&&(this.ariaSelected=this.selected.toString()),e.has("disabled")||e.has("readonly")){const e=null===(t=this.shadowRoot)||void 0===t?void 0:t.querySelector(".menu-item");e&&(e.tabIndex=this.disabled||this.readonly?-1:0)}}focus(e){var t,n;null===(n=null===(t=this.shadowRoot)||void 0===t?void 0:t.querySelector(".menu-item"))||void 0===n||n.focus(e)}onKeyDown(e){if(e.stopPropagation(),!this.disabled&&!this.readonly)switch(e.key){case"Enter":case" ":e.preventDefault(),this.onClick(e);break;case"ArrowDown":e.preventDefault(),this.moveFocus(1);break;case"ArrowUp":e.preventDefault(),this.moveFocus(-1);break;case"Home":e.preventDefault(),this.moveToEdge("start");break;case"End":e.preventDefault(),this.moveToEdge("end")}}moveFocus(e){var t;let n=e>0?this.nextElementSibling:this.previousElementSibling;for(;n;){const
|
|
620
|
+
`}firstUpdated(){this.hasIcon=this.iconSlot.assignedNodes({flatten:!0}).length>0;const e=this.closest("kyn-dropdown");e&&(this.kind=e.kind,e.addEventListener("kind-changed",(e=>{this.kind=e.detail})))}willUpdate(e){var t;if(e.has("selected")&&(this.ariaSelected=this.selected.toString()),e.has("disabled")||e.has("readonly")){const e=null===(t=this.shadowRoot)||void 0===t?void 0:t.querySelector(".menu-item");e&&(e.tabIndex=this.disabled||this.readonly?-1:0)}}focus(e){var t,n;null===(n=null===(t=this.shadowRoot)||void 0===t?void 0:t.querySelector(".menu-item"))||void 0===n||n.focus(e)}onKeyDown(e){if(e.stopPropagation(),!this.disabled&&!this.readonly)switch(e.key){case"Enter":case" ":e.preventDefault(),this.onClick(e);break;case"ArrowDown":e.preventDefault(),this.moveFocus(1);break;case"ArrowUp":e.preventDefault(),this.moveFocus(-1);break;case"Home":e.preventDefault(),this.moveToEdge("start");break;case"End":e.preventDefault(),this.moveToEdge("end")}}moveFocus(e){var t;let n=e>0?this.nextElementSibling:this.previousElementSibling;for(;n;){const i=n.tagName.toLowerCase();if("kyn-enhanced-dropdown-option"===i||"kyn-dropdown-option"===i){const e=n;if(!e.disabled&&!e.readonly){this.highlighted=!1,e.highlighted=!0;const n=null===(t=e.shadowRoot)||void 0===t?void 0:t.querySelector(".menu-item");null==n||n.focus();break}}n=e>0?n.nextElementSibling:n.previousElementSibling}}moveToEdge(e){var t;const n=this.parentElement;if(!n)return;const i=n.querySelectorAll("kyn-enhanced-dropdown-option, kyn-dropdown-option"),o=Array.from(i),a="start"===e?o[0]:o[o.length-1];if(a&&!a.disabled&&!a.readonly){this.highlighted=!1,a.highlighted=!0;const e=null===(t=a.shadowRoot)||void 0===t?void 0:t.querySelector(".menu-item");null==e||e.focus()}}onIconSlotChange(){this.hasIcon=this.iconSlot.assignedNodes({flatten:!0}).length>0}get iconSlot(){return this.shadowRoot.querySelector('slot[name="icon"]')}onTitleSlotChange(e){const t=e.target.assignedNodes({flatten:!0}).map((e=>{var t,n;return null!==(n=null===(t=e.textContent)||void 0===t?void 0:t.trim())&&void 0!==n?n:""})).join(" ");this.displayText=t,this.text=t}onClick(e){this.disabled||this.readonly?e.stopPropagation():(this.selected=!this.multiple||!this.selected,this.dispatchEvent(new CustomEvent("on-click",{bubbles:!0,composed:!0,detail:{selected:this.selected,value:this.value,origEvent:e}})))}onRemove(e){e.stopPropagation(),this.dispatchEvent(new CustomEvent("on-remove-option",{bubbles:!0,composed:!0,detail:{value:this.value}}))}onBlur(e){this.highlighted=!1,this.dispatchEvent(new CustomEvent("on-blur",{bubbles:!0,composed:!0,detail:{origEvent:e}}))}constructor(){super(...arguments),d.set(this,n(this,Y,"")),g.set(this,(n(this,Z),n(this,_,!1))),k.set(this,(n(this,ee),n(this,te,!1))),y.set(this,(n(this,ne),n(this,ie,!1))),f.set(this,(n(this,oe),n(this,ae,!1))),x.set(this,(n(this,de),n(this,re,!1))),w.set(this,(n(this,le),n(this,se,!1))),z.set(this,(n(this,ce),n(this,me,!1))),S.set(this,(n(this,ue),n(this,he,!1))),$.set(this,(n(this,ve),n(this,pe,"option"))),E.set(this,(n(this,be),n(this,ge,"false"))),j.set(this,(n(this,ke),n(this,ye,""))),I.set(this,(n(this,fe),n(this,xe,""))),M.set(this,(n(this,we),n(this,ze,!1))),W.set(this,(n(this,Se),n(this,$e,"default"))),n(this,Ee)}},d=new WeakMap,g=new WeakMap,k=new WeakMap,y=new WeakMap,f=new WeakMap,x=new WeakMap,w=new WeakMap,z=new WeakMap,S=new WeakMap,$=new WeakMap,E=new WeakMap,j=new WeakMap,I=new WeakMap,M=new WeakMap,W=new WeakMap,e(A,"EnhancedDropdownOption"),(()=>{var e;const n="function"==typeof Symbol&&Symbol.metadata?Object.create(null!==(e=X[Symbol.metadata])&&void 0!==e?e:null):void 0;C=[m({type:String})],D=[m({type:Boolean,reflect:!0})],O=[m({type:Boolean})],B=[m({type:Boolean,reflect:!0})],q=[m({type:Boolean})],P=[u()],R=[m({type:Boolean})],F=[m({type:Boolean})],N=[m({type:Boolean,reflect:!0})],U=[m({type:String,reflect:!0})],K=[m({type:String,reflect:!0,attribute:"aria-selected"})],L=[u()],G=[u()],H=[u()],J=[u()],t(A,null,C,{kind:"accessor",name:"value",static:!1,private:!1,access:{has:e=>"value"in e,get:e=>e.value,set:(e,t)=>{e.value=t}},metadata:n},Y,Z),t(A,null,D,{kind:"accessor",name:"selected",static:!1,private:!1,access:{has:e=>"selected"in e,get:e=>e.selected,set:(e,t)=>{e.selected=t}},metadata:n},_,ee),t(A,null,O,{kind:"accessor",name:"disabled",static:!1,private:!1,access:{has:e=>"disabled"in e,get:e=>e.disabled,set:(e,t)=>{e.disabled=t}},metadata:n},te,ne),t(A,null,B,{kind:"accessor",name:"readonly",static:!1,private:!1,access:{has:e=>"readonly"in e,get:e=>e.readonly,set:(e,t)=>{e.readonly=t}},metadata:n},ie,oe),t(A,null,q,{kind:"accessor",name:"allowAddOption",static:!1,private:!1,access:{has:e=>"allowAddOption"in e,get:e=>e.allowAddOption,set:(e,t)=>{e.allowAddOption=t}},metadata:n},ae,de),t(A,null,P,{kind:"accessor",name:"highlighted",static:!1,private:!1,access:{has:e=>"highlighted"in e,get:e=>e.highlighted,set:(e,t)=>{e.highlighted=t}},metadata:n},re,le),t(A,null,R,{kind:"accessor",name:"multiple",static:!1,private:!1,access:{has:e=>"multiple"in e,get:e=>e.multiple,set:(e,t)=>{e.multiple=t}},metadata:n},se,ce),t(A,null,F,{kind:"accessor",name:"removable",static:!1,private:!1,access:{has:e=>"removable"in e,get:e=>e.removable,set:(e,t)=>{e.removable=t}},metadata:n},me,ue),t(A,null,N,{kind:"accessor",name:"indeterminate",static:!1,private:!1,access:{has:e=>"indeterminate"in e,get:e=>e.indeterminate,set:(e,t)=>{e.indeterminate=t}},metadata:n},he,ve),t(A,null,U,{kind:"accessor",name:"role",static:!1,private:!1,access:{has:e=>"role"in e,get:e=>e.role,set:(e,t)=>{e.role=t}},metadata:n},pe,be),t(A,null,K,{kind:"accessor",name:"ariaSelected",static:!1,private:!1,access:{has:e=>"ariaSelected"in e,get:e=>e.ariaSelected,set:(e,t)=>{e.ariaSelected=t}},metadata:n},ge,ke),t(A,null,L,{kind:"accessor",name:"text",static:!1,private:!1,access:{has:e=>"text"in e,get:e=>e.text,set:(e,t)=>{e.text=t}},metadata:n},ye,fe),t(A,null,G,{kind:"accessor",name:"displayText",static:!1,private:!1,access:{has:e=>"displayText"in e,get:e=>e.displayText,set:(e,t)=>{e.displayText=t}},metadata:n},xe,we),t(A,null,H,{kind:"accessor",name:"hasIcon",static:!1,private:!1,access:{has:e=>"hasIcon"in e,get:e=>e.hasIcon,set:(e,t)=>{e.hasIcon=t}},metadata:n},ze,Se),t(A,null,J,{kind:"accessor",name:"kind",static:!1,private:!1,access:{has:e=>"kind"in e,get:e=>e.kind,set:(e,t)=>{e.kind=t}},metadata:n},$e,Ee),t(null,T={value:A},Q,{kind:"class",name:A.name,metadata:n},null,V),A=T.value,n&&Object.defineProperty(A,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:n})})(),A.styles=l(b),n(A,V),A})();export{g as EnhancedDropdownOption};
|
|
618
621
|
//# sourceMappingURL=enhancedDropdownOption.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enhancedDropdownOption.js","sources":["../../../../src/components/reusable/dropdown/enhancedDropdownOption.ts"],"sourcesContent":["import { unsafeSVG } from 'lit-html/directives/unsafe-svg.js';\nimport { LitElement, html, unsafeCSS } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\n\nimport '../checkbox';\nimport '../button';\n\nimport checkIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/check.svg';\nimport clearIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/close-simple.svg';\n\nimport EnhancedDropdownOptionScss from './enhancedDropdownOption.scss?inline';\n\n/**\n * Enhanced Dropdown option with rich content support.\n * @fires on-click - Emits the option details to the parent dropdown. `detail:{ selected: boolean, value: string, origEvent: PointerEvent }`\n * @fires on-remove-option - Emits the option that is removed. `detail:{ selected: boolean, value: string, origEvent: PointerEvent }`\n * @slot icon - Slot for option icon. Icon size should be 16px only.\n * @slot title - Slot for option title text.\n * @slot tag - Slot for inline tag appended to title.\n * @slot description - Slot for option description text.\n * @slot optionType - Slot for option type label.\n * @slot unnamed - Fallback slot for simple text content.\n */\n@customElement('kyn-enhanced-dropdown-option')\nexport class EnhancedDropdownOption extends LitElement {\n static override styles = unsafeCSS(EnhancedDropdownOptionScss);\n\n /** Option value. */\n @property({ type: String })\n accessor value = '';\n\n /** Internal text strings.\n * @internal\n */\n @property({ type: Boolean, reflect: true })\n accessor selected = false;\n\n /** Option disabled state. */\n @property({ type: Boolean })\n accessor disabled = false;\n\n /** Readonly state (from parent). Option stays focusable but not selectable. */\n @property({ type: Boolean, reflect: true })\n accessor readonly = false;\n\n /** Allow Add Option state, derived from parent. */\n @property({ type: Boolean })\n accessor allowAddOption = false;\n\n /**\n * Option highlighted state for keyboard navigation, automatically derived.\n * @ignore\n */\n @state()\n accessor highlighted = false;\n\n /** Multi-select state, derived from parent.\n * @ignore\n */\n @property({ type: Boolean })\n accessor multiple = false;\n\n /** Removable option. */\n @property({ type: Boolean })\n accessor removable = false;\n\n /** Determines whether the checkbox is in an indeterminate state. */\n @property({ type: Boolean, reflect: true })\n accessor indeterminate = false;\n\n /** ARIA role for the option, defaults to 'option'. */\n @property({ type: String, reflect: true })\n override accessor role = 'option';\n\n /** ARIA selected must mirror `selected`. */\n @property({ type: String, reflect: true, attribute: 'aria-selected' })\n override accessor ariaSelected = 'false';\n\n /**\n * Option text, automatically derived.\n * @ignore\n */\n @state()\n accessor text: any = '';\n\n /**\n * Title text for display purposes, automatically derived.\n * @ignore\n */\n @state()\n accessor displayText: any = '';\n\n /**\n * Whether the icon slot has content.\n * @ignore\n */\n @state()\n accessor hasIcon = false;\n\n /** Kind of the item, derived from parent. */\n @state()\n accessor kind: 'ai' | 'default' = 'default';\n\n override render() {\n const classes = {\n 'enhanced-option': true,\n 'menu-item': true,\n 'option-is-readonly': this.readonly,\n 'ai-connected': this.kind === 'ai',\n };\n\n return html`\n <div\n class=${classMap(classes)}\n role=\"option\"\n aria-selected=${this.selected ? 'true' : 'false'}\n aria-disabled=${this.disabled || this.readonly ? 'true' : 'false'}\n ?highlighted=${this.highlighted}\n ?selected=${this.selected}\n ?disabled=${this.disabled}\n ?readonly=${!this.disabled && this.readonly}\n title=${this.text}\n tabindex=${this.disabled || this.readonly ? -1 : 0}\n @mousedown=${(e: MouseEvent) => {\n if (this.readonly) e.preventDefault();\n }}\n @pointerup=${(e: Event) => this.onClick(e as PointerEvent)}\n @focus=${() => {\n this.highlighted = true;\n }}\n @blur=${(e: Event) => this.onBlur(e as FocusEvent)}\n @keydown=${(e: KeyboardEvent) => this.onKeyDown(e)}\n >\n ${this.multiple\n ? html`\n <kyn-checkbox\n .checked=${this.selected}\n .indeterminate=${this.indeterminate}\n ?disabled=${this.disabled}\n notFocusable\n value=${this.value}\n ></kyn-checkbox>\n `\n : null}\n\n <div class=\"content\">\n <div\n class=\"menu-item-inner-el icon-container\"\n style=${this.hasIcon ? '' : 'display:none'}\n >\n <slot name=\"icon\" @slotchange=${this.onIconSlotChange}></slot>\n </div>\n\n <div class=\"menu-item-inner-el text\">\n <div class=\"title-content\">\n <slot name=\"title\" @slotchange=${this.onTitleSlotChange}></slot>\n ${!this.selected\n ? html`<span class=\"tag-container\"\n ><slot name=\"tag\"></slot\n ></span>`\n : null}\n </div>\n <div class=\"description-container\">\n <slot name=\"description\"></slot>\n </div>\n <div class=\"option-type-container\">\n <slot name=\"optionType\"></slot>\n </div>\n </div>\n </div>\n\n <div class=\"status-icons\">\n ${!this.multiple && this.selected\n ? html`<span class=\"menu-item-inner-el check-icon\"\n >${unsafeSVG(checkIcon)}</span\n >`\n : this.allowAddOption && this.removable\n ? html`\n <kyn-button\n kind=${this.kind === 'ai' ? 'ghost-ai' : 'ghost'}\n size=\"small\"\n aria-label=\"Delete ${this.value}\"\n ?disabled=${this.disabled}\n @click=${this.onRemove}\n @mousedown=${(e: Event) => e.stopPropagation()}\n @keydown=${(e: KeyboardEvent) => e.stopPropagation()}\n @focus=${(e: FocusEvent) => e.stopPropagation()}\n >\n <span slot=\"icon\">${unsafeSVG(clearIcon)}</span>\n </kyn-button>\n `\n : null}\n </div>\n </div>\n `;\n }\n\n override firstUpdated() {\n // derive whether icon slot has content\n this.hasIcon = this.iconSlot.assignedNodes({ flatten: true }).length > 0;\n\n // sync kind from parent and listen for changes\n const parent = this.closest('kyn-dropdown') as any;\n if (parent) {\n this.kind = parent.kind;\n parent.addEventListener('kind-changed', (e: Event) => {\n this.kind = (e as CustomEvent<'ai' | 'default'>).detail;\n });\n }\n }\n\n override willUpdate(changed: Map<string, unknown>) {\n if (changed.has('selected')) {\n this.ariaSelected = this.selected.toString();\n }\n\n if (changed.has('disabled') || changed.has('readonly')) {\n const el = this.shadowRoot?.querySelector(\n '.menu-item'\n ) as HTMLElement | null;\n if (el) el.tabIndex = this.disabled || this.readonly ? -1 : 0;\n }\n }\n\n override focus(options?: FocusOptions) {\n (this.shadowRoot?.querySelector('.menu-item') as HTMLElement | null)?.focus(\n options\n );\n }\n\n private onKeyDown(e: KeyboardEvent) {\n e.stopPropagation();\n if (this.disabled || this.readonly) return;\n\n switch (e.key) {\n case 'Enter':\n case ' ': {\n e.preventDefault();\n this.onClick(e as any);\n break;\n }\n case 'ArrowDown': {\n e.preventDefault();\n this.moveFocus(1);\n break;\n }\n case 'ArrowUp': {\n e.preventDefault();\n this.moveFocus(-1);\n break;\n }\n case 'Home': {\n e.preventDefault();\n this.moveToEdge('start');\n break;\n }\n case 'End': {\n e.preventDefault();\n this.moveToEdge('end');\n break;\n }\n }\n }\n\n private moveFocus(delta: number) {\n let node: Element | null =\n delta > 0 ? this.nextElementSibling : this.previousElementSibling;\n while (node) {\n const tag = node.tagName.toLowerCase();\n if (\n tag === 'kyn-enhanced-dropdown-option' ||\n tag === 'kyn-dropdown-option'\n ) {\n const opt = node as any;\n if (!opt.disabled && !opt.readonly) {\n this.highlighted = false;\n opt.highlighted = true;\n const target = opt.shadowRoot?.querySelector(\n '.menu-item'\n ) as HTMLElement | null;\n target?.focus();\n break;\n }\n }\n node = delta > 0 ? node.nextElementSibling : node.previousElementSibling;\n }\n }\n\n private moveToEdge(where: 'start' | 'end') {\n const parent = this.parentElement;\n if (!parent) return;\n const all = parent.querySelectorAll(\n 'kyn-enhanced-dropdown-option, kyn-dropdown-option'\n );\n const list = Array.from(all) as any[];\n const candidate = where === 'start' ? list[0] : list[list.length - 1];\n if (candidate && !candidate.disabled && !candidate.readonly) {\n this.highlighted = false;\n candidate.highlighted = true;\n const target = candidate.shadowRoot?.querySelector(\n '.menu-item'\n ) as HTMLElement | null;\n target?.focus();\n }\n }\n\n private onIconSlotChange() {\n this.hasIcon = this.iconSlot.assignedNodes({ flatten: true }).length > 0;\n }\n\n private get iconSlot(): HTMLSlotElement {\n return this.shadowRoot!.querySelector(\n 'slot[name=\"icon\"]'\n )! as HTMLSlotElement;\n }\n\n private onTitleSlotChange(e: Event) {\n const titleText = (e.target as HTMLSlotElement)\n .assignedNodes({ flatten: true })\n .map((n) => n.textContent?.trim() ?? '')\n .join(' ');\n this.displayText = titleText;\n this.text = titleText;\n }\n\n private onClick(e: PointerEvent) {\n if (this.disabled || this.readonly) {\n e.stopPropagation();\n return;\n }\n this.selected = this.multiple ? !this.selected : true;\n this.dispatchEvent(\n new CustomEvent('on-click', {\n bubbles: true,\n composed: true,\n detail: { selected: this.selected, value: this.value, origEvent: e },\n })\n );\n }\n\n private onRemove(e: Event) {\n e.stopPropagation();\n this.dispatchEvent(\n new CustomEvent('on-remove-option', {\n bubbles: true,\n composed: true,\n detail: { value: this.value },\n })\n );\n }\n\n private onBlur(e: FocusEvent) {\n this.highlighted = false;\n\n this.dispatchEvent(\n new CustomEvent('on-blur', {\n bubbles: true,\n composed: true,\n detail: { origEvent: e },\n })\n );\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kyn-enhanced-dropdown-option': EnhancedDropdownOption;\n }\n}\n"],"names":["EnhancedDropdownOption","customElement","LitElement","_classThis","_classSuper","value","__classPrivateFieldGet","this","_EnhancedDropdownOption_value_accessor_storage","__classPrivateFieldSet","selected","_EnhancedDropdownOption_selected_accessor_storage","disabled","_EnhancedDropdownOption_disabled_accessor_storage","readonly","_EnhancedDropdownOption_readonly_accessor_storage","allowAddOption","_EnhancedDropdownOption_allowAddOption_accessor_storage","highlighted","_EnhancedDropdownOption_highlighted_accessor_storage","multiple","_EnhancedDropdownOption_multiple_accessor_storage","removable","_EnhancedDropdownOption_removable_accessor_storage","indeterminate","_EnhancedDropdownOption_indeterminate_accessor_storage","role","_EnhancedDropdownOption_role_accessor_storage","ariaSelected","_EnhancedDropdownOption_ariaSelected_accessor_storage","text","_EnhancedDropdownOption_text_accessor_storage","displayText","_EnhancedDropdownOption_displayText_accessor_storage","hasIcon","_EnhancedDropdownOption_hasIcon_accessor_storage","kind","_EnhancedDropdownOption_kind_accessor_storage","render","classes","html","classMap","e","preventDefault","onClick","onBlur","onKeyDown","onIconSlotChange","onTitleSlotChange","unsafeSVG","checkIcon","onRemove","stopPropagation","clearIcon","firstUpdated","iconSlot","assignedNodes","flatten","length","parent","closest","addEventListener","detail","willUpdate","changed","has","toString","el","_a","shadowRoot","querySelector","tabIndex","focus","options","_b","key","moveFocus","moveToEdge","delta","node","nextElementSibling","previousElementSibling","tag","tagName","toLowerCase","opt","target","where","parentElement","all","querySelectorAll","list","Array","from","candidate","titleText","map","n","textContent","trim","join","dispatchEvent","CustomEvent","bubbles","composed","origEvent","set","__runInitializers","_value_initializers","_value_extraInitializers","_selected_initializers","_selected_extraInitializers","_disabled_initializers","_disabled_extraInitializers","_readonly_initializers","_readonly_extraInitializers","_allowAddOption_initializers","_allowAddOption_extraInitializers","_highlighted_initializers","_highlighted_extraInitializers","_multiple_initializers","_multiple_extraInitializers","_removable_initializers","_removable_extraInitializers","_indeterminate_initializers","_indeterminate_extraInitializers","_role_initializers","_role_extraInitializers","_ariaSelected_initializers","_ariaSelected_extraInitializers","_text_initializers","_text_extraInitializers","_displayText_initializers","_displayText_extraInitializers","_hasIcon_initializers","_hasIcon_extraInitializers","_kind_initializers","_value_decorators","property","type","String","Boolean","reflect","_disabled_decorators","_allowAddOption_decorators","_highlighted_decorators","state","_multiple_decorators","_removable_decorators","_ariaSelected_decorators","attribute","_text_decorators","_displayText_decorators","_hasIcon_decorators","_kind_decorators","__esDecorate","name","static","private","access","obj","get","metadata","_metadata","_selected_decorators","_readonly_decorators","_indeterminate_decorators","_role_decorators","_kind_extraInitializers","_classDescriptor","_classDecorators","_classExtraInitializers","styles","unsafeCSS","EnhancedDropdownOptionScss"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"enhancedDropdownOption.js","sources":["../../../../src/components/reusable/dropdown/enhancedDropdownOption.ts"],"sourcesContent":["import { unsafeSVG } from 'lit-html/directives/unsafe-svg.js';\nimport { LitElement, html, unsafeCSS } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\n\nimport '../checkbox';\nimport '../button';\n\nimport checkIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/check.svg';\nimport clearIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/close-simple.svg';\n\nimport EnhancedDropdownOptionScss from './enhancedDropdownOption.scss?inline';\n\n/**\n * Enhanced Dropdown option with rich content support.\n * @fires on-click - Emits the option details to the parent dropdown. `detail:{ selected: boolean, value: string, origEvent: PointerEvent }`\n * @fires on-remove-option - Emits the option that is removed. `detail:{ selected: boolean, value: string, origEvent: PointerEvent }`\n * @slot icon - Slot for option icon. Icon size should be 16px only.\n * @slot title - Slot for option title text.\n * @slot tag - Slot for inline tag appended to title.\n * @slot description - Slot for option description text.\n * @slot optionType - Slot for option type label.\n * @slot unnamed - Fallback slot for simple text content.\n */\n@customElement('kyn-enhanced-dropdown-option')\nexport class EnhancedDropdownOption extends LitElement {\n static override styles = unsafeCSS(EnhancedDropdownOptionScss);\n\n /** Option value. */\n @property({ type: String })\n accessor value = '';\n\n /** Internal text strings.\n * @internal\n */\n @property({ type: Boolean, reflect: true })\n accessor selected = false;\n\n /** Option disabled state. */\n @property({ type: Boolean })\n accessor disabled = false;\n\n /** Readonly state (from parent). Option stays focusable but not selectable. */\n @property({ type: Boolean, reflect: true })\n accessor readonly = false;\n\n /** Allow Add Option state, derived from parent. */\n @property({ type: Boolean })\n accessor allowAddOption = false;\n\n /**\n * Option highlighted state for keyboard navigation, automatically derived.\n * @ignore\n */\n @state()\n accessor highlighted = false;\n\n /** Multi-select state, derived from parent.\n * @ignore\n */\n @property({ type: Boolean })\n accessor multiple = false;\n\n /** Removable option. */\n @property({ type: Boolean })\n accessor removable = false;\n\n /** Determines whether the checkbox is in an indeterminate state. */\n @property({ type: Boolean, reflect: true })\n accessor indeterminate = false;\n\n /** ARIA role for the option, defaults to 'option'. */\n @property({ type: String, reflect: true })\n override accessor role = 'option';\n\n /** ARIA selected must mirror `selected`. */\n @property({ type: String, reflect: true, attribute: 'aria-selected' })\n override accessor ariaSelected = 'false';\n\n /**\n * Option text, automatically derived.\n * @ignore\n */\n @state()\n accessor text: any = '';\n\n /**\n * Title text for display purposes, automatically derived.\n * @ignore\n */\n @state()\n accessor displayText: any = '';\n\n /**\n * Whether the icon slot has content.\n * @ignore\n */\n @state()\n accessor hasIcon = false;\n\n /** Kind of the item, derived from parent. */\n @state()\n accessor kind: 'ai' | 'default' = 'default';\n\n override render() {\n const classes = {\n 'enhanced-option': true,\n 'menu-item': true,\n 'option-is-readonly': this.readonly,\n 'ai-connected': this.kind === 'ai',\n };\n\n return html`\n <div\n class=${classMap(classes)}\n role=\"option\"\n aria-selected=${this.selected ? 'true' : 'false'}\n aria-disabled=${this.disabled || this.readonly ? 'true' : 'false'}\n ?highlighted=${this.highlighted}\n ?selected=${this.selected}\n ?disabled=${this.disabled}\n ?readonly=${!this.disabled && this.readonly}\n title=${this.text}\n tabindex=${this.disabled || this.readonly ? -1 : 0}\n @mousedown=${(e: MouseEvent) => {\n if (this.readonly) e.preventDefault();\n }}\n @pointerup=${(e: Event) => this.onClick(e as PointerEvent)}\n @focus=${() => {\n this.highlighted = true;\n }}\n @blur=${(e: Event) => this.onBlur(e as FocusEvent)}\n @keydown=${(e: KeyboardEvent) => this.onKeyDown(e)}\n >\n ${this.multiple\n ? html`\n <kyn-checkbox\n .checked=${this.selected}\n .indeterminate=${this.indeterminate}\n ?disabled=${this.disabled}\n notFocusable\n value=${this.value}\n ></kyn-checkbox>\n `\n : null}\n\n <div class=\"content\">\n <div\n class=\"menu-item-inner-el icon-container\"\n style=${this.hasIcon ? '' : 'display:none'}\n >\n <slot name=\"icon\" @slotchange=${this.onIconSlotChange}></slot>\n </div>\n\n <div class=\"menu-item-inner-el text\">\n <div class=\"title-content\">\n <slot name=\"title\" @slotchange=${this.onTitleSlotChange}></slot>\n ${!this.selected\n ? html`<span class=\"tag-container\"\n ><slot name=\"tag\"></slot\n ></span>`\n : null}\n </div>\n <div class=\"description-container\">\n <slot name=\"description\"></slot>\n </div>\n <div class=\"option-type-container\">\n <slot name=\"optionType\"></slot>\n </div>\n </div>\n </div>\n\n <div class=\"status-icons\">\n ${!this.multiple && this.selected\n ? html`<span class=\"menu-item-inner-el check-icon\"\n >${unsafeSVG(checkIcon)}</span\n >`\n : this.allowAddOption && this.removable\n ? html`\n <kyn-button\n kind=${this.kind === 'ai' ? 'ghost-ai' : 'ghost'}\n size=\"small\"\n aria-label=\"Delete ${this.value}\"\n ?disabled=${this.disabled}\n @click=${this.onRemove}\n @mousedown=${(e: Event) => e.stopPropagation()}\n @keydown=${(e: KeyboardEvent) => e.stopPropagation()}\n @focus=${(e: FocusEvent) => e.stopPropagation()}\n >\n <span slot=\"icon\">${unsafeSVG(clearIcon)}</span>\n </kyn-button>\n `\n : null}\n </div>\n </div>\n `;\n }\n\n override firstUpdated() {\n // derive whether icon slot has content\n this.hasIcon = this.iconSlot.assignedNodes({ flatten: true }).length > 0;\n\n // sync kind from parent and listen for changes\n const parent = this.closest('kyn-dropdown') as any;\n if (parent) {\n this.kind = parent.kind;\n parent.addEventListener('kind-changed', (e: Event) => {\n this.kind = (e as CustomEvent<'ai' | 'default'>).detail;\n });\n }\n }\n\n override willUpdate(changed: Map<string, unknown>) {\n if (changed.has('selected')) {\n this.ariaSelected = this.selected.toString();\n }\n\n if (changed.has('disabled') || changed.has('readonly')) {\n const el = this.shadowRoot?.querySelector(\n '.menu-item'\n ) as HTMLElement | null;\n if (el) el.tabIndex = this.disabled || this.readonly ? -1 : 0;\n }\n }\n\n override focus(options?: FocusOptions) {\n (this.shadowRoot?.querySelector('.menu-item') as HTMLElement | null)?.focus(\n options\n );\n }\n\n private onKeyDown(e: KeyboardEvent) {\n e.stopPropagation();\n if (this.disabled || this.readonly) return;\n\n switch (e.key) {\n case 'Enter':\n case ' ': {\n e.preventDefault();\n this.onClick(e as any);\n break;\n }\n case 'ArrowDown': {\n e.preventDefault();\n this.moveFocus(1);\n break;\n }\n case 'ArrowUp': {\n e.preventDefault();\n this.moveFocus(-1);\n break;\n }\n case 'Home': {\n e.preventDefault();\n this.moveToEdge('start');\n break;\n }\n case 'End': {\n e.preventDefault();\n this.moveToEdge('end');\n break;\n }\n }\n }\n\n private moveFocus(delta: number) {\n let node: Element | null =\n delta > 0 ? this.nextElementSibling : this.previousElementSibling;\n while (node) {\n const tag = node.tagName.toLowerCase();\n if (\n tag === 'kyn-enhanced-dropdown-option' ||\n tag === 'kyn-dropdown-option'\n ) {\n const opt = node as any;\n if (!opt.disabled && !opt.readonly) {\n this.highlighted = false;\n opt.highlighted = true;\n const target = opt.shadowRoot?.querySelector(\n '.menu-item'\n ) as HTMLElement | null;\n target?.focus();\n break;\n }\n }\n node = delta > 0 ? node.nextElementSibling : node.previousElementSibling;\n }\n }\n\n private moveToEdge(where: 'start' | 'end') {\n const parent = this.parentElement;\n if (!parent) return;\n const all = parent.querySelectorAll(\n 'kyn-enhanced-dropdown-option, kyn-dropdown-option'\n );\n const list = Array.from(all) as any[];\n const candidate = where === 'start' ? list[0] : list[list.length - 1];\n if (candidate && !candidate.disabled && !candidate.readonly) {\n this.highlighted = false;\n candidate.highlighted = true;\n const target = candidate.shadowRoot?.querySelector(\n '.menu-item'\n ) as HTMLElement | null;\n target?.focus();\n }\n }\n\n private onIconSlotChange() {\n this.hasIcon = this.iconSlot.assignedNodes({ flatten: true }).length > 0;\n }\n\n private get iconSlot(): HTMLSlotElement {\n return this.shadowRoot!.querySelector(\n 'slot[name=\"icon\"]'\n )! as HTMLSlotElement;\n }\n\n private onTitleSlotChange(e: Event) {\n const titleText = (e.target as HTMLSlotElement)\n .assignedNodes({ flatten: true })\n .map((n) => n.textContent?.trim() ?? '')\n .join(' ');\n this.displayText = titleText;\n this.text = titleText;\n }\n\n private onClick(e: PointerEvent) {\n if (this.disabled || this.readonly) {\n e.stopPropagation();\n return;\n }\n this.selected = this.multiple ? !this.selected : true;\n this.dispatchEvent(\n new CustomEvent('on-click', {\n bubbles: true,\n composed: true,\n detail: { selected: this.selected, value: this.value, origEvent: e },\n })\n );\n }\n\n private onRemove(e: Event) {\n e.stopPropagation();\n this.dispatchEvent(\n new CustomEvent('on-remove-option', {\n bubbles: true,\n composed: true,\n detail: { value: this.value },\n })\n );\n }\n\n private onBlur(e: FocusEvent) {\n this.highlighted = false;\n\n this.dispatchEvent(\n new CustomEvent('on-blur', {\n bubbles: true,\n composed: true,\n detail: { origEvent: e },\n })\n );\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kyn-enhanced-dropdown-option': EnhancedDropdownOption;\n }\n}\n"],"names":["EnhancedDropdownOption","customElement","LitElement","_classThis","_classSuper","value","__classPrivateFieldGet","this","_EnhancedDropdownOption_value_accessor_storage","__classPrivateFieldSet","selected","_EnhancedDropdownOption_selected_accessor_storage","disabled","_EnhancedDropdownOption_disabled_accessor_storage","readonly","_EnhancedDropdownOption_readonly_accessor_storage","allowAddOption","_EnhancedDropdownOption_allowAddOption_accessor_storage","highlighted","_EnhancedDropdownOption_highlighted_accessor_storage","multiple","_EnhancedDropdownOption_multiple_accessor_storage","removable","_EnhancedDropdownOption_removable_accessor_storage","indeterminate","_EnhancedDropdownOption_indeterminate_accessor_storage","role","_EnhancedDropdownOption_role_accessor_storage","ariaSelected","_EnhancedDropdownOption_ariaSelected_accessor_storage","text","_EnhancedDropdownOption_text_accessor_storage","displayText","_EnhancedDropdownOption_displayText_accessor_storage","hasIcon","_EnhancedDropdownOption_hasIcon_accessor_storage","kind","_EnhancedDropdownOption_kind_accessor_storage","render","classes","html","classMap","e","preventDefault","onClick","onBlur","onKeyDown","onIconSlotChange","onTitleSlotChange","unsafeSVG","checkIcon","onRemove","stopPropagation","clearIcon","firstUpdated","iconSlot","assignedNodes","flatten","length","parent","closest","addEventListener","detail","willUpdate","changed","has","toString","el","_a","shadowRoot","querySelector","tabIndex","focus","options","_b","key","moveFocus","moveToEdge","delta","node","nextElementSibling","previousElementSibling","tag","tagName","toLowerCase","opt","target","where","parentElement","all","querySelectorAll","list","Array","from","candidate","titleText","map","n","textContent","trim","join","dispatchEvent","CustomEvent","bubbles","composed","origEvent","set","__runInitializers","_value_initializers","_value_extraInitializers","_selected_initializers","_selected_extraInitializers","_disabled_initializers","_disabled_extraInitializers","_readonly_initializers","_readonly_extraInitializers","_allowAddOption_initializers","_allowAddOption_extraInitializers","_highlighted_initializers","_highlighted_extraInitializers","_multiple_initializers","_multiple_extraInitializers","_removable_initializers","_removable_extraInitializers","_indeterminate_initializers","_indeterminate_extraInitializers","_role_initializers","_role_extraInitializers","_ariaSelected_initializers","_ariaSelected_extraInitializers","_text_initializers","_text_extraInitializers","_displayText_initializers","_displayText_extraInitializers","_hasIcon_initializers","_hasIcon_extraInitializers","_kind_initializers","_value_decorators","property","type","String","Boolean","reflect","_disabled_decorators","_allowAddOption_decorators","_highlighted_decorators","state","_multiple_decorators","_removable_decorators","_ariaSelected_decorators","attribute","_text_decorators","_displayText_decorators","_hasIcon_decorators","_kind_decorators","__esDecorate","name","static","private","access","obj","get","metadata","_metadata","_selected_decorators","_readonly_decorators","_indeterminate_decorators","_role_decorators","_kind_extraInitializers","_classDescriptor","_classDecorators","_classExtraInitializers","styles","unsafeCSS","EnhancedDropdownOptionScss"],"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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"}
|
|
@@ -207,6 +207,7 @@ import{__setFunctionName as t,__esDecorate as e,__runInitializers as i,__classPr
|
|
|
207
207
|
line-height: var(--kd-line-height-utility-2-sm);
|
|
208
208
|
font-weight: var(--kd-font-weight-regular);
|
|
209
209
|
letter-spacing: var(--kd-letter-spacing-5);
|
|
210
|
+
font-weight: var(--kd-font-weight-medium);
|
|
210
211
|
color: var(--kd-color-text-level-secondary);
|
|
211
212
|
white-space: nowrap;
|
|
212
213
|
overflow: hidden;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"popover.js","sources":["../../../../src/components/reusable/popover/popover.ts"],"sourcesContent":["import { unsafeSVG } from 'lit-html/directives/unsafe-svg.js';\nimport { LitElement, html, TemplateResult, unsafeCSS } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { Placement, autoUpdate } from '@floating-ui/dom';\n\nimport {\n autoPosition,\n PositionType,\n Coords,\n handleFocusKeyboardEvents,\n removeFocusListener,\n getPanelStyle,\n} from '../../../common/helpers/popoverHelper';\n\nimport '../button';\nimport '../link';\n\nimport PopoverScss from './popover.scss?inline';\n\nimport closeIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/close-simple.svg';\n\n/**\n * Popover component.\n *\n * Two positioning modes are available:\n * - anchor: positioned relative to an anchor slot element\n * - floating: manually positioned via top/left/bottom/right properties\n *\n * For anchor mode, the popover will be positioned relative to the anchor element\n * based on the direction property. The position can be fixed or absolute.\n *\n * For floating (manual) mode, set triggerType=\"none\" and use top/left/bottom/right\n * properties to position the popover.\n *\n * @slot unnamed - The main popover slotted body content\n * @slot anchor - The trigger element (icon, button, link, etc.)\n * @slot footerLink - Optional link to be displayed in the footer\n *\n * @fires on-close - Emitted when any action closes the popover.`detail:{ action: string }`\n * @fires on-open - Emitted when popover opens. `detail:{ origEvent: Event }`\n */\n@customElement('kyn-popover')\nexport class Popover extends LitElement {\n static override styles = unsafeCSS(PopoverScss);\n\n /**\n * Manual direction or auto (anchor mode only)\n */\n @property({ type: String, reflect: true })\n accessor direction: 'top' | 'right' | 'bottom' | 'left' | 'auto' = 'auto';\n\n /**\n * Position type: fixed (default) or absolute\n * - fixed: positions relative to the viewport\n * - absolute: positions relative to the nearest positioned ancestor\n */\n @property({ type: String })\n accessor positionType: PositionType = 'fixed';\n\n /**\n * Popover launch behavior.\n * - default: click to launch/open popover\n * - hover: opens on hover and closes on mouse leave\n * - link: click to navigate to an externally linked URL + hover to open\n */\n @property({ type: String })\n accessor launchBehavior: 'default' | 'hover' | 'link' = 'default';\n\n /**\n * URL for link behavior (when launchBehavior is 'link')\n */\n @property({ type: String })\n accessor linkHref = '';\n\n /**\n * When true, render only the footer link/slot and hide all footer buttons.\n */\n @property({ type: Boolean })\n accessor footerLinkOnly = false;\n\n /**\n * Target for link behavior (when launchBehavior is 'link')\n */\n @property({ type: String })\n accessor linkTarget: '_self' | '_blank' | '_parent' | '_top' = '_self';\n\n /**\n * Size variants for the popover.\n */\n @property({ type: String })\n accessor size: 'mini' | 'narrow' | 'wide' = 'mini';\n\n // Following two props map directly to Floating-UI's offset(), shift(), and arrow() middleware\n /**\n * Distance between anchor and popover (px)\n * Controls how far the popover is positioned from its anchor element\n */\n @property({ type: Number, reflect: true })\n accessor offsetDistance: number | undefined;\n\n /**\n * Padding from viewport edges (px)\n */\n @property({ type: Number, reflect: true })\n accessor shiftPadding: number | undefined;\n ////**//// */\n\n /** how we style the anchor slot */\n @property({ type: String, reflect: true })\n accessor triggerType: 'icon' | 'link' | 'button' | 'none' = 'button';\n\n /** Optional manual offset for tooltip-like triangular shaped arrow.\n * When set, this will override the automatic arrow positioning.\n */\n @property({ type: String, reflect: true })\n accessor arrowPosition: string | undefined;\n\n /**\n * Controls the popover's open state.\n *\n * @remarks\n * Setting to `true`:\n * - dispatches `on-open`\n * - starts Floating-UI `autoUpdate` to track repositioning\n * - saves the anchor element for focus restoration\n *\n * Setting to `false`:\n * - dispatches `on-close`\n * - stops floating-ui `autoUpdate`\n * - restores focus to the saved anchor element\n */\n get open() {\n return this._open;\n }\n set open(value: boolean) {\n const old = this._open;\n this._open = value;\n this.requestUpdate('open', old);\n\n if (value && !old) {\n const anchorHost = this.shadowRoot?.querySelector(\n '.anchor'\n ) as HTMLElement;\n\n if (!anchorHost) return;\n\n const slot = anchorHost.querySelector(\n 'slot[name=\"anchor\"]'\n ) as HTMLSlotElement;\n const slotted = slot?.assignedElements();\n const anchorEl = (\n slotted?.length ? slotted[0] : anchorHost\n ) as HTMLElement;\n\n if (!anchorEl) return;\n\n this.dispatchEvent(new CustomEvent('on-open'));\n\n const panel = this.shadowRoot!.querySelector(\n '.popover-inner'\n ) as HTMLElement;\n\n if (!panel) return;\n\n this._autoUpdateCleanup = autoUpdate(anchorEl, panel, () =>\n this._position()\n );\n }\n\n if (!value && old) {\n this.dispatchEvent(new CustomEvent('on-close'));\n\n if (this._autoUpdateCleanup) {\n this._autoUpdateCleanup();\n this._autoUpdateCleanup = null;\n }\n }\n }\n\n /**\n * Animation duration in milliseconds\n */\n @property({ type: Number })\n accessor animationDuration = 200;\n\n // Floating-only offset props\n /** Top position value. */\n @property({ type: String })\n accessor top: string | undefined;\n\n /** Left position value. */\n @property({ type: String })\n accessor left: string | undefined;\n\n /** Bottom position value. */\n @property({ type: String })\n accessor bottom: string | undefined;\n\n /** Right position value. */\n @property({ type: String })\n accessor right: string | undefined;\n //\n\n /**\n * Changes the primary button styles to indicate a destructive action\n */\n @property({ type: Boolean })\n accessor destructive = false;\n\n /**\n * Z-index for the popover.\n */\n @property({ type: Number })\n accessor zIndex: number | undefined;\n\n /**\n * Responsive breakpoints for adjusting position.\n */\n @property({ type: String })\n accessor responsivePosition: string | undefined;\n\n /**\n * Body title text\n */\n @property({ type: String })\n accessor titleText = '';\n\n /**\n * Body subtitle/label\n */\n @property({ type: String })\n accessor labelText = '';\n\n /**\n * OK button label\n */\n @property({ type: String })\n accessor okText = 'OK';\n\n /**\n * Cancel button label\n */\n @property({ type: String })\n accessor cancelText = 'Cancel';\n\n /**\n * Close button description text\n */\n @property({ type: String })\n accessor closeText = 'Close';\n\n /**\n * Accessible name for the popover dialog\n * Used as aria-label when no title is present\n */\n @property({ type: String })\n accessor popoverAriaLabel = 'Popover';\n\n /**\n * Secondary button text\n */\n @property({ type: String })\n accessor secondaryButtonText = 'Secondary';\n\n /**\n * Show or hide the secondary button\n */\n @property({ type: Boolean })\n accessor showSecondaryButton = false;\n\n /**\n * Tertiary button text\n */\n @property({ type: String })\n accessor tertiaryButtonText = 'Tertiary';\n\n /**\n * Show or hide the tertiary button\n */\n @property({ type: Boolean })\n accessor showTertiaryButton = false;\n\n /**\n * Text to display for an optional link in the footer.\n */\n @property({ type: String })\n accessor footerLinkText = '';\n\n /**\n * URL for the optional footer link.\n */\n @property({ type: String })\n accessor footerLinkHref = '';\n\n /**\n * Target for the footer link (ex: \"_blank\" for new tab).\n * If empty, defaults to same tab.\n */\n @property({ type: String })\n accessor footerLinkTarget: '_self' | '_blank' | '_parent' | '_top' = '_self';\n\n /**\n * Hide the entire footer\n */\n @property({ type: Boolean })\n accessor hideFooter = false;\n\n /**\n * The computed panel coordinates for positioning.\n * Contains `top` and `left` in pixels.\n * @internal\n */\n @state()\n accessor _panelCoords: Coords = { top: 0, left: 0 };\n\n /**\n * The computed direction of the popover panel when `direction=\"auto\"`.\n * 'top', 'bottom', 'left', or 'right'.\n * @internal\n */\n @state()\n accessor _calculatedDirection = 'bottom';\n\n /**\n * The computed anchor alignment relative to the trigger element.\n * 'start', 'center', or 'end'.\n * @internal\n */\n @state()\n accessor _anchorPosition = 'center';\n\n /**\n * Keyboard event listener attached to trap focus within the popover.\n * @internal\n */\n private _keyboardListener: ((e: Event) => void) | null = null;\n\n /**\n * Cleanup callback for any automatic update routines.\n * @internal\n */\n private _autoUpdateCleanup: (() => void) | null = null;\n\n /**\n * Popover open state.\n * @internal\n */\n private _open = false;\n\n /**\n * Timer for delayed hover close to prevent flickering\n * @internal\n */\n private _hoverCloseTimer: number | null = null;\n\n /**\n * Flag to track if mouse is over the popover area (anchor or panel)\n * @internal\n */\n private _isMouseOverPopover = false;\n\n override render(): TemplateResult {\n const isLinkMode = this.launchBehavior === 'link';\n const isHoverMode = this.launchBehavior === 'hover';\n const hasHeader = !!(this.titleText || this.labelText);\n const dir =\n this.direction === 'auto' ? this._calculatedDirection : this.direction;\n\n const panelClasses = {\n [`direction--${dir}`]: true,\n 'no-anchor': this.triggerType === 'none',\n ...(this.triggerType !== 'none' && {\n [`anchor--${this._anchorPosition}`]: true,\n }),\n [`popover-size--${this.size}`]: true,\n 'popover-inner': true,\n open: this.open,\n 'no-header-text': !hasHeader,\n [`has-footer-${!this.hideFooter}`]: true,\n 'fullscreen-mobile': true,\n [`position-type--${this.positionType}`]: true,\n };\n\n const panelStyles = this._getPanelStyle();\n const overlayStyles = `\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n background: transparent;\n z-index: ${this.zIndex ? this.zIndex - 1 : 999};\n pointer-events: none;\n `;\n\n return html`\n <div class=\"popover\">\n ${isLinkMode\n ? html`\n <a\n class=\"anchor ${this.triggerType}-anchor launch-behavior-link\"\n href=${this.linkHref}\n target=${this.linkTarget}\n tabindex=\"0\"\n aria-haspopup=\"dialog\"\n @mouseenter=${this._handleMouseEnter}\n @mouseleave=${this._handleMouseLeave}\n style=\"text-decoration: none; color: inherit; display: inline-block; cursor: pointer !important;\"\n >\n <slot name=\"anchor\"></slot>\n </a>\n `\n : html`\n <span\n class=\"anchor ${this.triggerType}-anchor launch-behavior-${this\n .launchBehavior}\"\n tabindex=\"0\"\n aria-haspopup=\"dialog\"\n @click=${this._handleAnchorClick}\n @keydown=${this._handleAnchorKeydown}\n @mouseenter=${this._handleMouseEnter}\n @mouseleave=${this._handleMouseLeave}\n style=\"${this.launchBehavior === 'hover'\n ? 'cursor: pointer !important;'\n : ''}\"\n >\n <slot name=\"anchor\"></slot>\n </span>\n `}\n ${this.open\n ? html`\n ${!isLinkMode && !isHoverMode\n ? html`\n <div\n class=\"popover-overlay\"\n style=${overlayStyles}\n @click=${this._close}\n ></div>\n `\n : ''}\n <div\n id=\"popover-panel\"\n part=\"panel\"\n role=\"dialog\"\n aria-modal=\"false\"\n aria-label=\"${hasHeader && this.titleText\n ? this.titleText\n : this.popoverAriaLabel}\"\n aria-describedby=\"${this.size === 'mini'\n ? 'mini-popover-content'\n : 'popover-content'}\"\n title=\"${this.size === 'mini' ? this.popoverAriaLabel : ''}\"\n class=${classMap(panelClasses)}\n style=${panelStyles}\n @mouseenter=${this._handlePanelMouseEnter}\n @mouseleave=${this._handlePanelMouseLeave}\n >\n <div part=\"arrow\" class=\"arrow\"></div>\n ${this.size === 'mini'\n ? this._renderMini()\n : this._renderStandard()}\n </div>\n `\n : null}\n </div>\n `;\n }\n\n private _renderMini(): TemplateResult {\n return html`\n <div class=\"mini-header\">\n <div id=\"mini-popover-content\" class=\"mini-content\">\n <slot></slot>\n </div>\n <kyn-button\n class=\"close\"\n kind=\"ghost\"\n size=\"small\"\n description=${this.closeText}\n @on-click=${() => this._handleAction('cancel')}\n >\n ${unsafeSVG(closeIcon)}\n </kyn-button>\n </div>\n `;\n }\n\n private _renderStandard(): TemplateResult {\n const hasHeader = !!(this.titleText || this.labelText);\n\n const hasFooterLinkSlot = !!this.querySelector('[slot=\"footerLink\"]');\n const hasFooterLinkProps = !!this.footerLinkText || !!this.footerLinkHref;\n const hasFooterLink = hasFooterLinkSlot || hasFooterLinkProps;\n\n const hasFooterSlot = !!this.querySelector('[slot=\"footer\"]');\n\n const shouldRenderPrimary = !this.footerLinkOnly;\n const shouldRenderSecondary =\n !this.footerLinkOnly && this.showSecondaryButton;\n const shouldRenderTertiary =\n !this.footerLinkOnly && this.showTertiaryButton;\n\n const hasAnyFooterButtons =\n shouldRenderPrimary || shouldRenderSecondary || shouldRenderTertiary;\n\n const shouldRenderFooter =\n !this.hideFooter &&\n (hasAnyFooterButtons || hasFooterLink || hasFooterSlot);\n\n return html`\n ${hasHeader\n ? html`\n <header>\n ${this.titleText ? html`<h2>${this.titleText}</h2>` : null}\n ${this.labelText\n ? html`<span class=\"label\">${this.labelText}</span>`\n : null}\n <kyn-button\n class=\"close\"\n kind=\"ghost\"\n size=\"small\"\n description=${this.closeText}\n @on-click=${() => this._handleAction('cancel')}\n >\n ${unsafeSVG(closeIcon)}\n </kyn-button>\n </header>\n `\n : null}\n <div class=\"body\" id=\"popover-content\"><slot></slot></div>\n\n ${shouldRenderFooter\n ? html`\n <div class=\"footer\">\n ${hasFooterSlot\n ? html`<slot name=\"footer\"></slot>`\n : html`\n ${shouldRenderPrimary\n ? html`\n <kyn-button\n class=\"action-button\"\n value=\"ok\"\n size=\"small\"\n kind=${this.destructive\n ? 'primary-destructive'\n : 'primary'}\n @on-click=${() => this._handleAction('ok')}\n >\n ${this.okText}\n </kyn-button>\n `\n : null}\n ${shouldRenderSecondary\n ? html`\n <kyn-button\n class=\"action-button\"\n value=\"secondary\"\n size=\"small\"\n kind=\"secondary\"\n @on-click=${() => this._handleAction('secondary')}\n >\n ${this.secondaryButtonText}\n </kyn-button>\n `\n : null}\n ${shouldRenderTertiary\n ? html`\n <kyn-button\n class=\"action-button\"\n value=\"tertiary\"\n size=\"small\"\n kind=\"tertiary\"\n @on-click=${() => this._handleAction('tertiary')}\n >\n ${this.tertiaryButtonText}\n </kyn-button>\n `\n : null}\n ${hasFooterLink\n ? hasFooterLinkSlot\n ? html`<slot name=\"footerLink\"></slot>`\n : html`\n <kyn-link\n class=\"footer-link\"\n href=${this.footerLinkHref}\n target=${this.footerLinkTarget}\n >\n ${this.footerLinkText}\n </kyn-link>\n `\n : null}\n `}\n </div>\n `\n : null}\n `;\n }\n\n override connectedCallback() {\n super.connectedCallback();\n document.addEventListener('keydown', this._onKeyDown as EventListener);\n\n if (this.open) {\n const anchorHost = this.shadowRoot!.querySelector(\n '.anchor'\n ) as HTMLElement;\n const slotted = (\n anchorHost.querySelector('slot[name=\"anchor\"]') as HTMLSlotElement\n )?.assignedElements();\n const anchorEl = (\n slotted?.length ? slotted[0] : anchorHost\n ) as HTMLElement;\n const panel = this.shadowRoot!.querySelector(\n '.popover-inner'\n ) as HTMLElement;\n\n this._autoUpdateCleanup = autoUpdate(anchorEl, panel, () =>\n this._position()\n );\n }\n }\n\n override disconnectedCallback() {\n super.disconnectedCallback();\n document.removeEventListener('keydown', this._onKeyDown as EventListener);\n\n if (this._autoUpdateCleanup) {\n this._autoUpdateCleanup();\n this._autoUpdateCleanup = null;\n }\n\n if (this._hoverCloseTimer) {\n clearTimeout(this._hoverCloseTimer);\n this._hoverCloseTimer = null;\n }\n\n this._isMouseOverPopover = false;\n this._removeFocusListener();\n }\n\n override updated(changed: Map<string, unknown>) {\n if (\n (changed.has('open') && this.open) ||\n changed.has('arrowPosition') ||\n changed.has('offsetDistance') ||\n changed.has('shiftPadding') ||\n changed.has('positionType')\n ) {\n this.updateComplete.then(() => {\n this._position();\n this._handleFocusKeyboardEvents();\n });\n }\n\n if (changed.has('arrowPosition') && this.arrowPosition) {\n this.style.setProperty('--arrow-offset', this.arrowPosition);\n }\n }\n\n /**\n * @internal\n */\n private _getPanelStyle = (): string => {\n const base = getPanelStyle(\n this.positionType,\n this.zIndex,\n this.triggerType,\n this._panelCoords,\n this.top,\n this.left,\n this.bottom,\n this.right\n );\n\n const arrowOff = this.arrowPosition\n ? `--arrow-offset: ${this.arrowPosition};`\n : '';\n\n return `${base}${arrowOff}`;\n };\n\n /**\n * @internal\n */\n private _onKeyDown = (e: Event) => {\n if ((e as KeyboardEvent).key === 'Escape' && this.open) this._close();\n };\n\n /**\n * @internal\n */\n private _handleAction = (\n action: 'ok' | 'cancel' | 'secondary' | 'tertiary'\n ): void => {\n this.open = false;\n this.dispatchEvent(new CustomEvent('on-close', { detail: { action } }));\n };\n\n private _toggle() {\n this.open = !this.open;\n }\n\n private _close() {\n this.open = false;\n }\n\n /**\n * @internal\n */\n private _handleAnchorClick(e: MouseEvent) {\n if (this.launchBehavior === 'default') {\n this._toggle();\n }\n }\n\n /**\n * @internal\n */\n private _handleMouseEnter() {\n if (this.launchBehavior === 'hover' || this.launchBehavior === 'link') {\n this._isMouseOverPopover = true;\n if (this._hoverCloseTimer) {\n clearTimeout(this._hoverCloseTimer);\n this._hoverCloseTimer = null;\n }\n this.open = true;\n }\n }\n\n /**\n * @internal\n */\n private _handleMouseLeave() {\n if (this.launchBehavior === 'hover' || this.launchBehavior === 'link') {\n this._isMouseOverPopover = false;\n this._hoverCloseTimer = setTimeout(() => {\n if (!this._isMouseOverPopover) {\n this.open = false;\n this._hoverCloseTimer = null;\n }\n }, 300) as unknown as number;\n }\n }\n\n /**\n * @internal\n */\n private _handlePanelMouseEnter() {\n if (this.launchBehavior === 'hover' || this.launchBehavior === 'link') {\n this._isMouseOverPopover = true;\n if (this._hoverCloseTimer) {\n clearTimeout(this._hoverCloseTimer);\n this._hoverCloseTimer = null;\n }\n }\n }\n\n /**\n * @internal\n */\n private _handlePanelMouseLeave() {\n if (this.launchBehavior === 'hover' || this.launchBehavior === 'link') {\n this._isMouseOverPopover = false;\n this._hoverCloseTimer = setTimeout(() => {\n if (!this._isMouseOverPopover) {\n this.open = false;\n this._hoverCloseTimer = null;\n }\n }, 300) as unknown as number;\n }\n }\n\n /**\n * @internal\n */\n private _handleAnchorKeydown(e: KeyboardEvent) {\n if (e.key === 'Enter' || e.key === ' ' || e.key === 'Spacebar') {\n e.preventDefault();\n if (this.launchBehavior === 'link' && this.linkHref) {\n if (this.linkTarget === '_blank') {\n window.open(this.linkHref, '_blank');\n } else {\n window.location.href = this.linkHref;\n }\n } else if (this.launchBehavior === 'default') {\n this._toggle();\n } else if (this.launchBehavior === 'hover') {\n this._toggle();\n }\n }\n }\n\n private _handleFocusKeyboardEvents() {\n const panel = this.shadowRoot!.querySelector(\n '.popover-inner'\n ) as HTMLElement;\n if (!panel) return;\n const res = handleFocusKeyboardEvents(panel);\n this._keyboardListener = res.keyboardListener;\n }\n\n private _removeFocusListener() {\n const panel = this.shadowRoot!.querySelector(\n '.popover-inner'\n ) as HTMLElement;\n removeFocusListener(panel, this._keyboardListener, null);\n this._keyboardListener = null;\n }\n\n private async _position() {\n await this.updateComplete;\n\n const panel = this.shadowRoot!.querySelector(\n '.popover-inner'\n ) as HTMLElement;\n if (!panel) return;\n\n if (this.triggerType === 'none') {\n const baseStyle = this._getPanelStyle();\n const arrowStyle = this.arrowPosition\n ? `; --arrow-offset-x: ${this.arrowPosition}; --arrow-offset-y: ${this.arrowPosition};`\n : '';\n panel.setAttribute('style', baseStyle + arrowStyle);\n this._calculatedDirection =\n this.direction === 'auto' ? 'bottom' : this.direction;\n return;\n }\n\n const anchorHost = this.shadowRoot!.querySelector('.anchor') as HTMLElement;\n const slotted = (\n anchorHost.querySelector('slot[name=\"anchor\"]') as HTMLSlotElement\n )?.assignedElements();\n const anchorEl = slotted?.length ? (slotted[0] as HTMLElement) : anchorHost;\n const arrowEl = panel.querySelector<HTMLElement>('.arrow')!;\n\n const override: Placement | undefined =\n this.direction !== 'auto' ? this.direction : undefined;\n\n const baseOpts = {\n offsetDistance: this.offsetDistance,\n shiftPadding: this.shiftPadding,\n positionType: this.positionType,\n };\n\n const { x, y, placement, arrowX, arrowY } = await autoPosition(\n anchorEl,\n panel,\n arrowEl,\n override,\n baseOpts\n );\n\n const [dir, anchorPos] = (\n placement.includes('-') ? placement.split('-') : [placement, 'center']\n ) as ['top' | 'bottom' | 'left' | 'right', 'start' | 'center' | 'end'];\n this._calculatedDirection = dir;\n this._anchorPosition = anchorPos;\n\n const numericTopOffset = this.top\n ? parseInt(this.top.replace(/[^0-9-]/g, ''), 10)\n : 0;\n const numericLeftOffset = this.left\n ? parseInt(this.left.replace(/[^0-9-]/g, ''), 10)\n : 0;\n this._panelCoords = {\n top: Math.round(y) + numericTopOffset,\n left: Math.round(x) + numericLeftOffset,\n };\n panel.style.top = `${this._panelCoords.top}px`;\n panel.style.left = `${this._panelCoords.left}px`;\n\n if (this.size === 'wide') {\n panel.style.maxWidth = 'var(--kyn-popover-wide-max-width)';\n } else if (this.size === 'narrow') {\n panel.style.maxWidth = 'var(--kyn-popover-narrow-max-width)';\n } else if (this.size === 'mini') {\n panel.style.maxWidth = 'var(--kyn-popover-mini-max-width)';\n }\n\n if (this.arrowPosition) {\n panel.style.setProperty('--arrow-offset-x', this.arrowPosition);\n } else {\n requestAnimationFrame(() => {\n const anchorRect = anchorEl.getBoundingClientRect();\n const panelRect = panel.getBoundingClientRect();\n\n if (dir === 'top' || dir === 'bottom') {\n const anchorCenterX = anchorRect.left + anchorRect.width / 2;\n const panelLeftX = panelRect.left;\n const arrowOffsetX = anchorCenterX - panelLeftX - 8;\n const arrowPadding = 16;\n const minOffsetX = arrowPadding;\n const maxOffsetX = panelRect.width - arrowPadding - 16;\n const clampedArrowX = Math.max(\n minOffsetX,\n Math.min(maxOffsetX, arrowOffsetX)\n );\n\n panel.style.setProperty(\n '--arrow-offset',\n `${Math.round(clampedArrowX)}px`\n );\n } else if (dir === 'left' || dir === 'right') {\n const anchorCenterY = anchorRect.top + anchorRect.height / 2;\n const panelTopY = panelRect.top;\n const arrowOffsetY = anchorCenterY - panelTopY - 8;\n const arrowPadding = 16;\n const minOffsetY = arrowPadding;\n const maxOffsetY = panelRect.height - arrowPadding - 16;\n const clampedArrowY = Math.max(\n minOffsetY,\n Math.min(maxOffsetY, arrowOffsetY)\n );\n\n panel.style.setProperty(\n '--arrow-offset',\n `${Math.round(clampedArrowY)}px`\n );\n }\n });\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kyn-popover': Popover;\n }\n}\n"],"names":["Popover","customElement","LitElement","_classThis","_classSuper","_Popover_direction_accessor_storage","set","this","__runInitializers","_direction_initializers","_Popover_positionType_accessor_storage","_direction_extraInitializers","_positionType_initializers","_Popover_launchBehavior_accessor_storage","_positionType_extraInitializers","_launchBehavior_initializers","_Popover_linkHref_accessor_storage","_launchBehavior_extraInitializers","_linkHref_initializers","_Popover_footerLinkOnly_accessor_storage","_linkHref_extraInitializers","_footerLinkOnly_initializers","_Popover_linkTarget_accessor_storage","_footerLinkOnly_extraInitializers","_linkTarget_initializers","_Popover_size_accessor_storage","_linkTarget_extraInitializers","_size_initializers","_Popover_offsetDistance_accessor_storage","_size_extraInitializers","_offsetDistance_initializers","_Popover_shiftPadding_accessor_storage","_offsetDistance_extraInitializers","_shiftPadding_initializers","_Popover_triggerType_accessor_storage","_shiftPadding_extraInitializers","_triggerType_initializers","_Popover_arrowPosition_accessor_storage","_triggerType_extraInitializers","_arrowPosition_initializers","_Popover_animationDuration_accessor_storage","_arrowPosition_extraInitializers","_animationDuration_initializers","_Popover_top_accessor_storage","_animationDuration_extraInitializers","_top_initializers","_Popover_left_accessor_storage","_top_extraInitializers","_left_initializers","_Popover_bottom_accessor_storage","_left_extraInitializers","_bottom_initializers","_Popover_right_accessor_storage","_bottom_extraInitializers","_right_initializers","_Popover_destructive_accessor_storage","_right_extraInitializers","_destructive_initializers","_Popover_zIndex_accessor_storage","_destructive_extraInitializers","_zIndex_initializers","_Popover_responsivePosition_accessor_storage","_zIndex_extraInitializers","_responsivePosition_initializers","_Popover_titleText_accessor_storage","_responsivePosition_extraInitializers","_titleText_initializers","_Popover_labelText_accessor_storage","_titleText_extraInitializers","_labelText_initializers","_Popover_okText_accessor_storage","_labelText_extraInitializers","_okText_initializers","_Popover_cancelText_accessor_storage","_okText_extraInitializers","_cancelText_initializers","_Popover_closeText_accessor_storage","_cancelText_extraInitializers","_closeText_initializers","_Popover_popoverAriaLabel_accessor_storage","_closeText_extraInitializers","_popoverAriaLabel_initializers","_Popover_secondaryButtonText_accessor_storage","_popoverAriaLabel_extraInitializers","_secondaryButtonText_initializers","_Popover_showSecondaryButton_accessor_storage","_secondaryButtonText_extraInitializers","_showSecondaryButton_initializers","_Popover_tertiaryButtonText_accessor_storage","_showSecondaryButton_extraInitializers","_tertiaryButtonText_initializers","_Popover_showTertiaryButton_accessor_storage","_tertiaryButtonText_extraInitializers","_showTertiaryButton_initializers","_Popover_footerLinkText_accessor_storage","_showTertiaryButton_extraInitializers","_footerLinkText_initializers","_Popover_footerLinkHref_accessor_storage","_footerLinkText_extraInitializers","_footerLinkHref_initializers","_Popover_footerLinkTarget_accessor_storage","_footerLinkHref_extraInitializers","_footerLinkTarget_initializers","_Popover_hideFooter_accessor_storage","_footerLinkTarget_extraInitializers","_hideFooter_initializers","_Popover__panelCoords_accessor_storage","_hideFooter_extraInitializers","__panelCoords_initializers","top","left","_Popover__calculatedDirection_accessor_storage","__panelCoords_extraInitializers","__calculatedDirection_initializers","_Popover__anchorPosition_accessor_storage","__calculatedDirection_extraInitializers","__anchorPosition_initializers","_keyboardListener","__anchorPosition_extraInitializers","_autoUpdateCleanup","_open","_hoverCloseTimer","_isMouseOverPopover","_getPanelStyle","getPanelStyle","positionType","zIndex","triggerType","_panelCoords","bottom","right","arrowPosition","_onKeyDown","e","key","open","_close","_handleAction","action","dispatchEvent","CustomEvent","detail","direction","__classPrivateFieldGet","value","__classPrivateFieldSet","launchBehavior","linkHref","footerLinkOnly","linkTarget","size","offsetDistance","shiftPadding","old","requestUpdate","anchorHost","_a","shadowRoot","querySelector","slot","slotted","assignedElements","anchorEl","length","panel","autoUpdate","_position","animationDuration","destructive","responsivePosition","titleText","labelText","okText","cancelText","closeText","popoverAriaLabel","secondaryButtonText","showSecondaryButton","tertiaryButtonText","showTertiaryButton","footerLinkText","footerLinkHref","footerLinkTarget","hideFooter","_calculatedDirection","_anchorPosition","render","isLinkMode","isHoverMode","hasHeader","dir","panelClasses","panelStyles","overlayStyles","html","_handleMouseEnter","_handleMouseLeave","_handleAnchorClick","_handleAnchorKeydown","classMap","_handlePanelMouseEnter","_handlePanelMouseLeave","_renderMini","_renderStandard","unsafeSVG","closeIcon","hasFooterLinkSlot","hasFooterLinkProps","hasFooterLink","hasFooterSlot","shouldRenderPrimary","shouldRenderSecondary","shouldRenderTertiary","hasAnyFooterButtons","shouldRenderFooter","connectedCallback","super","document","addEventListener","disconnectedCallback","removeEventListener","clearTimeout","_removeFocusListener","updated","changed","has","updateComplete","then","_handleFocusKeyboardEvents","style","setProperty","_toggle","setTimeout","preventDefault","window","location","href","res","handleFocusKeyboardEvents","keyboardListener","removeFocusListener","baseStyle","arrowStyle","setAttribute","arrowEl","override","undefined","baseOpts","x","y","placement","arrowX","arrowY","autoPosition","anchorPos","includes","split","numericTopOffset","parseInt","replace","numericLeftOffset","Math","round","maxWidth","requestAnimationFrame","anchorRect","getBoundingClientRect","panelRect","arrowOffsetX","width","arrowPadding","minOffsetX","maxOffsetX","clampedArrowX","max","min","arrowOffsetY","height","minOffsetY","maxOffsetY","clampedArrowY","property","type","String","reflect","_positionType_decorators","_launchBehavior_decorators","_linkHref_decorators","_footerLinkOnly_decorators","Boolean","_linkTarget_decorators","_size_decorators","Number","_animationDuration_decorators","_top_decorators","_left_decorators","_bottom_decorators","_right_decorators","_destructive_decorators","_zIndex_decorators","_responsivePosition_decorators","_titleText_decorators","_labelText_decorators","_okText_decorators","_cancelText_decorators","_closeText_decorators","_popoverAriaLabel_decorators","_secondaryButtonText_decorators","_showSecondaryButton_decorators","_tertiaryButtonText_decorators","_showTertiaryButton_decorators","_footerLinkText_decorators","_footerLinkHref_decorators","_footerLinkTarget_decorators","_hideFooter_decorators","__panelCoords_decorators","state","__calculatedDirection_decorators","__anchorPosition_decorators","__esDecorate","_direction_decorators","kind","name","static","private","access","obj","get","metadata","_metadata","_offsetDistance_decorators","_shiftPadding_decorators","_triggerType_decorators","_arrowPosition_decorators","_classDescriptor","_classDecorators","_classExtraInitializers","styles","unsafeCSS","PopoverScss"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"popover.js","sources":["../../../../src/components/reusable/popover/popover.ts"],"sourcesContent":["import { unsafeSVG } from 'lit-html/directives/unsafe-svg.js';\nimport { LitElement, html, TemplateResult, unsafeCSS } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { Placement, autoUpdate } from '@floating-ui/dom';\n\nimport {\n autoPosition,\n PositionType,\n Coords,\n handleFocusKeyboardEvents,\n removeFocusListener,\n getPanelStyle,\n} from '../../../common/helpers/popoverHelper';\n\nimport '../button';\nimport '../link';\n\nimport PopoverScss from './popover.scss?inline';\n\nimport closeIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/close-simple.svg';\n\n/**\n * Popover component.\n *\n * Two positioning modes are available:\n * - anchor: positioned relative to an anchor slot element\n * - floating: manually positioned via top/left/bottom/right properties\n *\n * For anchor mode, the popover will be positioned relative to the anchor element\n * based on the direction property. The position can be fixed or absolute.\n *\n * For floating (manual) mode, set triggerType=\"none\" and use top/left/bottom/right\n * properties to position the popover.\n *\n * @slot unnamed - The main popover slotted body content\n * @slot anchor - The trigger element (icon, button, link, etc.)\n * @slot footerLink - Optional link to be displayed in the footer\n *\n * @fires on-close - Emitted when any action closes the popover.`detail:{ action: string }`\n * @fires on-open - Emitted when popover opens. `detail:{ origEvent: Event }`\n */\n@customElement('kyn-popover')\nexport class Popover extends LitElement {\n static override styles = unsafeCSS(PopoverScss);\n\n /**\n * Manual direction or auto (anchor mode only)\n */\n @property({ type: String, reflect: true })\n accessor direction: 'top' | 'right' | 'bottom' | 'left' | 'auto' = 'auto';\n\n /**\n * Position type: fixed (default) or absolute\n * - fixed: positions relative to the viewport\n * - absolute: positions relative to the nearest positioned ancestor\n */\n @property({ type: String })\n accessor positionType: PositionType = 'fixed';\n\n /**\n * Popover launch behavior.\n * - default: click to launch/open popover\n * - hover: opens on hover and closes on mouse leave\n * - link: click to navigate to an externally linked URL + hover to open\n */\n @property({ type: String })\n accessor launchBehavior: 'default' | 'hover' | 'link' = 'default';\n\n /**\n * URL for link behavior (when launchBehavior is 'link')\n */\n @property({ type: String })\n accessor linkHref = '';\n\n /**\n * When true, render only the footer link/slot and hide all footer buttons.\n */\n @property({ type: Boolean })\n accessor footerLinkOnly = false;\n\n /**\n * Target for link behavior (when launchBehavior is 'link')\n */\n @property({ type: String })\n accessor linkTarget: '_self' | '_blank' | '_parent' | '_top' = '_self';\n\n /**\n * Size variants for the popover.\n */\n @property({ type: String })\n accessor size: 'mini' | 'narrow' | 'wide' = 'mini';\n\n // Following two props map directly to Floating-UI's offset(), shift(), and arrow() middleware\n /**\n * Distance between anchor and popover (px)\n * Controls how far the popover is positioned from its anchor element\n */\n @property({ type: Number, reflect: true })\n accessor offsetDistance: number | undefined;\n\n /**\n * Padding from viewport edges (px)\n */\n @property({ type: Number, reflect: true })\n accessor shiftPadding: number | undefined;\n ////**//// */\n\n /** how we style the anchor slot */\n @property({ type: String, reflect: true })\n accessor triggerType: 'icon' | 'link' | 'button' | 'none' = 'button';\n\n /** Optional manual offset for tooltip-like triangular shaped arrow.\n * When set, this will override the automatic arrow positioning.\n */\n @property({ type: String, reflect: true })\n accessor arrowPosition: string | undefined;\n\n /**\n * Controls the popover's open state.\n *\n * @remarks\n * Setting to `true`:\n * - dispatches `on-open`\n * - starts Floating-UI `autoUpdate` to track repositioning\n * - saves the anchor element for focus restoration\n *\n * Setting to `false`:\n * - dispatches `on-close`\n * - stops floating-ui `autoUpdate`\n * - restores focus to the saved anchor element\n */\n get open() {\n return this._open;\n }\n set open(value: boolean) {\n const old = this._open;\n this._open = value;\n this.requestUpdate('open', old);\n\n if (value && !old) {\n const anchorHost = this.shadowRoot?.querySelector(\n '.anchor'\n ) as HTMLElement;\n\n if (!anchorHost) return;\n\n const slot = anchorHost.querySelector(\n 'slot[name=\"anchor\"]'\n ) as HTMLSlotElement;\n const slotted = slot?.assignedElements();\n const anchorEl = (\n slotted?.length ? slotted[0] : anchorHost\n ) as HTMLElement;\n\n if (!anchorEl) return;\n\n this.dispatchEvent(new CustomEvent('on-open'));\n\n const panel = this.shadowRoot!.querySelector(\n '.popover-inner'\n ) as HTMLElement;\n\n if (!panel) return;\n\n this._autoUpdateCleanup = autoUpdate(anchorEl, panel, () =>\n this._position()\n );\n }\n\n if (!value && old) {\n this.dispatchEvent(new CustomEvent('on-close'));\n\n if (this._autoUpdateCleanup) {\n this._autoUpdateCleanup();\n this._autoUpdateCleanup = null;\n }\n }\n }\n\n /**\n * Animation duration in milliseconds\n */\n @property({ type: Number })\n accessor animationDuration = 200;\n\n // Floating-only offset props\n /** Top position value. */\n @property({ type: String })\n accessor top: string | undefined;\n\n /** Left position value. */\n @property({ type: String })\n accessor left: string | undefined;\n\n /** Bottom position value. */\n @property({ type: String })\n accessor bottom: string | undefined;\n\n /** Right position value. */\n @property({ type: String })\n accessor right: string | undefined;\n //\n\n /**\n * Changes the primary button styles to indicate a destructive action\n */\n @property({ type: Boolean })\n accessor destructive = false;\n\n /**\n * Z-index for the popover.\n */\n @property({ type: Number })\n accessor zIndex: number | undefined;\n\n /**\n * Responsive breakpoints for adjusting position.\n */\n @property({ type: String })\n accessor responsivePosition: string | undefined;\n\n /**\n * Body title text\n */\n @property({ type: String })\n accessor titleText = '';\n\n /**\n * Body subtitle/label\n */\n @property({ type: String })\n accessor labelText = '';\n\n /**\n * OK button label\n */\n @property({ type: String })\n accessor okText = 'OK';\n\n /**\n * Cancel button label\n */\n @property({ type: String })\n accessor cancelText = 'Cancel';\n\n /**\n * Close button description text\n */\n @property({ type: String })\n accessor closeText = 'Close';\n\n /**\n * Accessible name for the popover dialog\n * Used as aria-label when no title is present\n */\n @property({ type: String })\n accessor popoverAriaLabel = 'Popover';\n\n /**\n * Secondary button text\n */\n @property({ type: String })\n accessor secondaryButtonText = 'Secondary';\n\n /**\n * Show or hide the secondary button\n */\n @property({ type: Boolean })\n accessor showSecondaryButton = false;\n\n /**\n * Tertiary button text\n */\n @property({ type: String })\n accessor tertiaryButtonText = 'Tertiary';\n\n /**\n * Show or hide the tertiary button\n */\n @property({ type: Boolean })\n accessor showTertiaryButton = false;\n\n /**\n * Text to display for an optional link in the footer.\n */\n @property({ type: String })\n accessor footerLinkText = '';\n\n /**\n * URL for the optional footer link.\n */\n @property({ type: String })\n accessor footerLinkHref = '';\n\n /**\n * Target for the footer link (ex: \"_blank\" for new tab).\n * If empty, defaults to same tab.\n */\n @property({ type: String })\n accessor footerLinkTarget: '_self' | '_blank' | '_parent' | '_top' = '_self';\n\n /**\n * Hide the entire footer\n */\n @property({ type: Boolean })\n accessor hideFooter = false;\n\n /**\n * The computed panel coordinates for positioning.\n * Contains `top` and `left` in pixels.\n * @internal\n */\n @state()\n accessor _panelCoords: Coords = { top: 0, left: 0 };\n\n /**\n * The computed direction of the popover panel when `direction=\"auto\"`.\n * 'top', 'bottom', 'left', or 'right'.\n * @internal\n */\n @state()\n accessor _calculatedDirection = 'bottom';\n\n /**\n * The computed anchor alignment relative to the trigger element.\n * 'start', 'center', or 'end'.\n * @internal\n */\n @state()\n accessor _anchorPosition = 'center';\n\n /**\n * Keyboard event listener attached to trap focus within the popover.\n * @internal\n */\n private _keyboardListener: ((e: Event) => void) | null = null;\n\n /**\n * Cleanup callback for any automatic update routines.\n * @internal\n */\n private _autoUpdateCleanup: (() => void) | null = null;\n\n /**\n * Popover open state.\n * @internal\n */\n private _open = false;\n\n /**\n * Timer for delayed hover close to prevent flickering\n * @internal\n */\n private _hoverCloseTimer: number | null = null;\n\n /**\n * Flag to track if mouse is over the popover area (anchor or panel)\n * @internal\n */\n private _isMouseOverPopover = false;\n\n override render(): TemplateResult {\n const isLinkMode = this.launchBehavior === 'link';\n const isHoverMode = this.launchBehavior === 'hover';\n const hasHeader = !!(this.titleText || this.labelText);\n const dir =\n this.direction === 'auto' ? this._calculatedDirection : this.direction;\n\n const panelClasses = {\n [`direction--${dir}`]: true,\n 'no-anchor': this.triggerType === 'none',\n ...(this.triggerType !== 'none' && {\n [`anchor--${this._anchorPosition}`]: true,\n }),\n [`popover-size--${this.size}`]: true,\n 'popover-inner': true,\n open: this.open,\n 'no-header-text': !hasHeader,\n [`has-footer-${!this.hideFooter}`]: true,\n 'fullscreen-mobile': true,\n [`position-type--${this.positionType}`]: true,\n };\n\n const panelStyles = this._getPanelStyle();\n const overlayStyles = `\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n background: transparent;\n z-index: ${this.zIndex ? this.zIndex - 1 : 999};\n pointer-events: none;\n `;\n\n return html`\n <div class=\"popover\">\n ${isLinkMode\n ? html`\n <a\n class=\"anchor ${this.triggerType}-anchor launch-behavior-link\"\n href=${this.linkHref}\n target=${this.linkTarget}\n tabindex=\"0\"\n aria-haspopup=\"dialog\"\n @mouseenter=${this._handleMouseEnter}\n @mouseleave=${this._handleMouseLeave}\n style=\"text-decoration: none; color: inherit; display: inline-block; cursor: pointer !important;\"\n >\n <slot name=\"anchor\"></slot>\n </a>\n `\n : html`\n <span\n class=\"anchor ${this.triggerType}-anchor launch-behavior-${this\n .launchBehavior}\"\n tabindex=\"0\"\n aria-haspopup=\"dialog\"\n @click=${this._handleAnchorClick}\n @keydown=${this._handleAnchorKeydown}\n @mouseenter=${this._handleMouseEnter}\n @mouseleave=${this._handleMouseLeave}\n style=\"${this.launchBehavior === 'hover'\n ? 'cursor: pointer !important;'\n : ''}\"\n >\n <slot name=\"anchor\"></slot>\n </span>\n `}\n ${this.open\n ? html`\n ${!isLinkMode && !isHoverMode\n ? html`\n <div\n class=\"popover-overlay\"\n style=${overlayStyles}\n @click=${this._close}\n ></div>\n `\n : ''}\n <div\n id=\"popover-panel\"\n part=\"panel\"\n role=\"dialog\"\n aria-modal=\"false\"\n aria-label=\"${hasHeader && this.titleText\n ? this.titleText\n : this.popoverAriaLabel}\"\n aria-describedby=\"${this.size === 'mini'\n ? 'mini-popover-content'\n : 'popover-content'}\"\n title=\"${this.size === 'mini' ? this.popoverAriaLabel : ''}\"\n class=${classMap(panelClasses)}\n style=${panelStyles}\n @mouseenter=${this._handlePanelMouseEnter}\n @mouseleave=${this._handlePanelMouseLeave}\n >\n <div part=\"arrow\" class=\"arrow\"></div>\n ${this.size === 'mini'\n ? this._renderMini()\n : this._renderStandard()}\n </div>\n `\n : null}\n </div>\n `;\n }\n\n private _renderMini(): TemplateResult {\n return html`\n <div class=\"mini-header\">\n <div id=\"mini-popover-content\" class=\"mini-content\">\n <slot></slot>\n </div>\n <kyn-button\n class=\"close\"\n kind=\"ghost\"\n size=\"small\"\n description=${this.closeText}\n @on-click=${() => this._handleAction('cancel')}\n >\n ${unsafeSVG(closeIcon)}\n </kyn-button>\n </div>\n `;\n }\n\n private _renderStandard(): TemplateResult {\n const hasHeader = !!(this.titleText || this.labelText);\n\n const hasFooterLinkSlot = !!this.querySelector('[slot=\"footerLink\"]');\n const hasFooterLinkProps = !!this.footerLinkText || !!this.footerLinkHref;\n const hasFooterLink = hasFooterLinkSlot || hasFooterLinkProps;\n\n const hasFooterSlot = !!this.querySelector('[slot=\"footer\"]');\n\n const shouldRenderPrimary = !this.footerLinkOnly;\n const shouldRenderSecondary =\n !this.footerLinkOnly && this.showSecondaryButton;\n const shouldRenderTertiary =\n !this.footerLinkOnly && this.showTertiaryButton;\n\n const hasAnyFooterButtons =\n shouldRenderPrimary || shouldRenderSecondary || shouldRenderTertiary;\n\n const shouldRenderFooter =\n !this.hideFooter &&\n (hasAnyFooterButtons || hasFooterLink || hasFooterSlot);\n\n return html`\n ${hasHeader\n ? html`\n <header>\n ${this.titleText ? html`<h2>${this.titleText}</h2>` : null}\n ${this.labelText\n ? html`<span class=\"label\">${this.labelText}</span>`\n : null}\n <kyn-button\n class=\"close\"\n kind=\"ghost\"\n size=\"small\"\n description=${this.closeText}\n @on-click=${() => this._handleAction('cancel')}\n >\n ${unsafeSVG(closeIcon)}\n </kyn-button>\n </header>\n `\n : null}\n <div class=\"body\" id=\"popover-content\"><slot></slot></div>\n\n ${shouldRenderFooter\n ? html`\n <div class=\"footer\">\n ${hasFooterSlot\n ? html`<slot name=\"footer\"></slot>`\n : html`\n ${shouldRenderPrimary\n ? html`\n <kyn-button\n class=\"action-button\"\n value=\"ok\"\n size=\"small\"\n kind=${this.destructive\n ? 'primary-destructive'\n : 'primary'}\n @on-click=${() => this._handleAction('ok')}\n >\n ${this.okText}\n </kyn-button>\n `\n : null}\n ${shouldRenderSecondary\n ? html`\n <kyn-button\n class=\"action-button\"\n value=\"secondary\"\n size=\"small\"\n kind=\"secondary\"\n @on-click=${() => this._handleAction('secondary')}\n >\n ${this.secondaryButtonText}\n </kyn-button>\n `\n : null}\n ${shouldRenderTertiary\n ? html`\n <kyn-button\n class=\"action-button\"\n value=\"tertiary\"\n size=\"small\"\n kind=\"tertiary\"\n @on-click=${() => this._handleAction('tertiary')}\n >\n ${this.tertiaryButtonText}\n </kyn-button>\n `\n : null}\n ${hasFooterLink\n ? hasFooterLinkSlot\n ? html`<slot name=\"footerLink\"></slot>`\n : html`\n <kyn-link\n class=\"footer-link\"\n href=${this.footerLinkHref}\n target=${this.footerLinkTarget}\n >\n ${this.footerLinkText}\n </kyn-link>\n `\n : null}\n `}\n </div>\n `\n : null}\n `;\n }\n\n override connectedCallback() {\n super.connectedCallback();\n document.addEventListener('keydown', this._onKeyDown as EventListener);\n\n if (this.open) {\n const anchorHost = this.shadowRoot!.querySelector(\n '.anchor'\n ) as HTMLElement;\n const slotted = (\n anchorHost.querySelector('slot[name=\"anchor\"]') as HTMLSlotElement\n )?.assignedElements();\n const anchorEl = (\n slotted?.length ? slotted[0] : anchorHost\n ) as HTMLElement;\n const panel = this.shadowRoot!.querySelector(\n '.popover-inner'\n ) as HTMLElement;\n\n this._autoUpdateCleanup = autoUpdate(anchorEl, panel, () =>\n this._position()\n );\n }\n }\n\n override disconnectedCallback() {\n super.disconnectedCallback();\n document.removeEventListener('keydown', this._onKeyDown as EventListener);\n\n if (this._autoUpdateCleanup) {\n this._autoUpdateCleanup();\n this._autoUpdateCleanup = null;\n }\n\n if (this._hoverCloseTimer) {\n clearTimeout(this._hoverCloseTimer);\n this._hoverCloseTimer = null;\n }\n\n this._isMouseOverPopover = false;\n this._removeFocusListener();\n }\n\n override updated(changed: Map<string, unknown>) {\n if (\n (changed.has('open') && this.open) ||\n changed.has('arrowPosition') ||\n changed.has('offsetDistance') ||\n changed.has('shiftPadding') ||\n changed.has('positionType')\n ) {\n this.updateComplete.then(() => {\n this._position();\n this._handleFocusKeyboardEvents();\n });\n }\n\n if (changed.has('arrowPosition') && this.arrowPosition) {\n this.style.setProperty('--arrow-offset', this.arrowPosition);\n }\n }\n\n /**\n * @internal\n */\n private _getPanelStyle = (): string => {\n const base = getPanelStyle(\n this.positionType,\n this.zIndex,\n this.triggerType,\n this._panelCoords,\n this.top,\n this.left,\n this.bottom,\n this.right\n );\n\n const arrowOff = this.arrowPosition\n ? `--arrow-offset: ${this.arrowPosition};`\n : '';\n\n return `${base}${arrowOff}`;\n };\n\n /**\n * @internal\n */\n private _onKeyDown = (e: Event) => {\n if ((e as KeyboardEvent).key === 'Escape' && this.open) this._close();\n };\n\n /**\n * @internal\n */\n private _handleAction = (\n action: 'ok' | 'cancel' | 'secondary' | 'tertiary'\n ): void => {\n this.open = false;\n this.dispatchEvent(new CustomEvent('on-close', { detail: { action } }));\n };\n\n private _toggle() {\n this.open = !this.open;\n }\n\n private _close() {\n this.open = false;\n }\n\n /**\n * @internal\n */\n private _handleAnchorClick(e: MouseEvent) {\n if (this.launchBehavior === 'default') {\n this._toggle();\n }\n }\n\n /**\n * @internal\n */\n private _handleMouseEnter() {\n if (this.launchBehavior === 'hover' || this.launchBehavior === 'link') {\n this._isMouseOverPopover = true;\n if (this._hoverCloseTimer) {\n clearTimeout(this._hoverCloseTimer);\n this._hoverCloseTimer = null;\n }\n this.open = true;\n }\n }\n\n /**\n * @internal\n */\n private _handleMouseLeave() {\n if (this.launchBehavior === 'hover' || this.launchBehavior === 'link') {\n this._isMouseOverPopover = false;\n this._hoverCloseTimer = setTimeout(() => {\n if (!this._isMouseOverPopover) {\n this.open = false;\n this._hoverCloseTimer = null;\n }\n }, 300) as unknown as number;\n }\n }\n\n /**\n * @internal\n */\n private _handlePanelMouseEnter() {\n if (this.launchBehavior === 'hover' || this.launchBehavior === 'link') {\n this._isMouseOverPopover = true;\n if (this._hoverCloseTimer) {\n clearTimeout(this._hoverCloseTimer);\n this._hoverCloseTimer = null;\n }\n }\n }\n\n /**\n * @internal\n */\n private _handlePanelMouseLeave() {\n if (this.launchBehavior === 'hover' || this.launchBehavior === 'link') {\n this._isMouseOverPopover = false;\n this._hoverCloseTimer = setTimeout(() => {\n if (!this._isMouseOverPopover) {\n this.open = false;\n this._hoverCloseTimer = null;\n }\n }, 300) as unknown as number;\n }\n }\n\n /**\n * @internal\n */\n private _handleAnchorKeydown(e: KeyboardEvent) {\n if (e.key === 'Enter' || e.key === ' ' || e.key === 'Spacebar') {\n e.preventDefault();\n if (this.launchBehavior === 'link' && this.linkHref) {\n if (this.linkTarget === '_blank') {\n window.open(this.linkHref, '_blank');\n } else {\n window.location.href = this.linkHref;\n }\n } else if (this.launchBehavior === 'default') {\n this._toggle();\n } else if (this.launchBehavior === 'hover') {\n this._toggle();\n }\n }\n }\n\n private _handleFocusKeyboardEvents() {\n const panel = this.shadowRoot!.querySelector(\n '.popover-inner'\n ) as HTMLElement;\n if (!panel) return;\n const res = handleFocusKeyboardEvents(panel);\n this._keyboardListener = res.keyboardListener;\n }\n\n private _removeFocusListener() {\n const panel = this.shadowRoot!.querySelector(\n '.popover-inner'\n ) as HTMLElement;\n removeFocusListener(panel, this._keyboardListener, null);\n this._keyboardListener = null;\n }\n\n private async _position() {\n await this.updateComplete;\n\n const panel = this.shadowRoot!.querySelector(\n '.popover-inner'\n ) as HTMLElement;\n if (!panel) return;\n\n if (this.triggerType === 'none') {\n const baseStyle = this._getPanelStyle();\n const arrowStyle = this.arrowPosition\n ? `; --arrow-offset-x: ${this.arrowPosition}; --arrow-offset-y: ${this.arrowPosition};`\n : '';\n panel.setAttribute('style', baseStyle + arrowStyle);\n this._calculatedDirection =\n this.direction === 'auto' ? 'bottom' : this.direction;\n return;\n }\n\n const anchorHost = this.shadowRoot!.querySelector('.anchor') as HTMLElement;\n const slotted = (\n anchorHost.querySelector('slot[name=\"anchor\"]') as HTMLSlotElement\n )?.assignedElements();\n const anchorEl = slotted?.length ? (slotted[0] as HTMLElement) : anchorHost;\n const arrowEl = panel.querySelector<HTMLElement>('.arrow')!;\n\n const override: Placement | undefined =\n this.direction !== 'auto' ? this.direction : undefined;\n\n const baseOpts = {\n offsetDistance: this.offsetDistance,\n shiftPadding: this.shiftPadding,\n positionType: this.positionType,\n };\n\n const { x, y, placement, arrowX, arrowY } = await autoPosition(\n anchorEl,\n panel,\n arrowEl,\n override,\n baseOpts\n );\n\n const [dir, anchorPos] = (\n placement.includes('-') ? placement.split('-') : [placement, 'center']\n ) as ['top' | 'bottom' | 'left' | 'right', 'start' | 'center' | 'end'];\n this._calculatedDirection = dir;\n this._anchorPosition = anchorPos;\n\n const numericTopOffset = this.top\n ? parseInt(this.top.replace(/[^0-9-]/g, ''), 10)\n : 0;\n const numericLeftOffset = this.left\n ? parseInt(this.left.replace(/[^0-9-]/g, ''), 10)\n : 0;\n this._panelCoords = {\n top: Math.round(y) + numericTopOffset,\n left: Math.round(x) + numericLeftOffset,\n };\n panel.style.top = `${this._panelCoords.top}px`;\n panel.style.left = `${this._panelCoords.left}px`;\n\n if (this.size === 'wide') {\n panel.style.maxWidth = 'var(--kyn-popover-wide-max-width)';\n } else if (this.size === 'narrow') {\n panel.style.maxWidth = 'var(--kyn-popover-narrow-max-width)';\n } else if (this.size === 'mini') {\n panel.style.maxWidth = 'var(--kyn-popover-mini-max-width)';\n }\n\n if (this.arrowPosition) {\n panel.style.setProperty('--arrow-offset-x', this.arrowPosition);\n } else {\n requestAnimationFrame(() => {\n const anchorRect = anchorEl.getBoundingClientRect();\n const panelRect = panel.getBoundingClientRect();\n\n if (dir === 'top' || dir === 'bottom') {\n const anchorCenterX = anchorRect.left + anchorRect.width / 2;\n const panelLeftX = panelRect.left;\n const arrowOffsetX = anchorCenterX - panelLeftX - 8;\n const arrowPadding = 16;\n const minOffsetX = arrowPadding;\n const maxOffsetX = panelRect.width - arrowPadding - 16;\n const clampedArrowX = Math.max(\n minOffsetX,\n Math.min(maxOffsetX, arrowOffsetX)\n );\n\n panel.style.setProperty(\n '--arrow-offset',\n `${Math.round(clampedArrowX)}px`\n );\n } else if (dir === 'left' || dir === 'right') {\n const anchorCenterY = anchorRect.top + anchorRect.height / 2;\n const panelTopY = panelRect.top;\n const arrowOffsetY = anchorCenterY - panelTopY - 8;\n const arrowPadding = 16;\n const minOffsetY = arrowPadding;\n const maxOffsetY = panelRect.height - arrowPadding - 16;\n const clampedArrowY = Math.max(\n minOffsetY,\n Math.min(maxOffsetY, arrowOffsetY)\n );\n\n panel.style.setProperty(\n '--arrow-offset',\n `${Math.round(clampedArrowY)}px`\n );\n }\n });\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kyn-popover': Popover;\n }\n}\n"],"names":["Popover","customElement","LitElement","_classThis","_classSuper","_Popover_direction_accessor_storage","set","this","__runInitializers","_direction_initializers","_Popover_positionType_accessor_storage","_direction_extraInitializers","_positionType_initializers","_Popover_launchBehavior_accessor_storage","_positionType_extraInitializers","_launchBehavior_initializers","_Popover_linkHref_accessor_storage","_launchBehavior_extraInitializers","_linkHref_initializers","_Popover_footerLinkOnly_accessor_storage","_linkHref_extraInitializers","_footerLinkOnly_initializers","_Popover_linkTarget_accessor_storage","_footerLinkOnly_extraInitializers","_linkTarget_initializers","_Popover_size_accessor_storage","_linkTarget_extraInitializers","_size_initializers","_Popover_offsetDistance_accessor_storage","_size_extraInitializers","_offsetDistance_initializers","_Popover_shiftPadding_accessor_storage","_offsetDistance_extraInitializers","_shiftPadding_initializers","_Popover_triggerType_accessor_storage","_shiftPadding_extraInitializers","_triggerType_initializers","_Popover_arrowPosition_accessor_storage","_triggerType_extraInitializers","_arrowPosition_initializers","_Popover_animationDuration_accessor_storage","_arrowPosition_extraInitializers","_animationDuration_initializers","_Popover_top_accessor_storage","_animationDuration_extraInitializers","_top_initializers","_Popover_left_accessor_storage","_top_extraInitializers","_left_initializers","_Popover_bottom_accessor_storage","_left_extraInitializers","_bottom_initializers","_Popover_right_accessor_storage","_bottom_extraInitializers","_right_initializers","_Popover_destructive_accessor_storage","_right_extraInitializers","_destructive_initializers","_Popover_zIndex_accessor_storage","_destructive_extraInitializers","_zIndex_initializers","_Popover_responsivePosition_accessor_storage","_zIndex_extraInitializers","_responsivePosition_initializers","_Popover_titleText_accessor_storage","_responsivePosition_extraInitializers","_titleText_initializers","_Popover_labelText_accessor_storage","_titleText_extraInitializers","_labelText_initializers","_Popover_okText_accessor_storage","_labelText_extraInitializers","_okText_initializers","_Popover_cancelText_accessor_storage","_okText_extraInitializers","_cancelText_initializers","_Popover_closeText_accessor_storage","_cancelText_extraInitializers","_closeText_initializers","_Popover_popoverAriaLabel_accessor_storage","_closeText_extraInitializers","_popoverAriaLabel_initializers","_Popover_secondaryButtonText_accessor_storage","_popoverAriaLabel_extraInitializers","_secondaryButtonText_initializers","_Popover_showSecondaryButton_accessor_storage","_secondaryButtonText_extraInitializers","_showSecondaryButton_initializers","_Popover_tertiaryButtonText_accessor_storage","_showSecondaryButton_extraInitializers","_tertiaryButtonText_initializers","_Popover_showTertiaryButton_accessor_storage","_tertiaryButtonText_extraInitializers","_showTertiaryButton_initializers","_Popover_footerLinkText_accessor_storage","_showTertiaryButton_extraInitializers","_footerLinkText_initializers","_Popover_footerLinkHref_accessor_storage","_footerLinkText_extraInitializers","_footerLinkHref_initializers","_Popover_footerLinkTarget_accessor_storage","_footerLinkHref_extraInitializers","_footerLinkTarget_initializers","_Popover_hideFooter_accessor_storage","_footerLinkTarget_extraInitializers","_hideFooter_initializers","_Popover__panelCoords_accessor_storage","_hideFooter_extraInitializers","__panelCoords_initializers","top","left","_Popover__calculatedDirection_accessor_storage","__panelCoords_extraInitializers","__calculatedDirection_initializers","_Popover__anchorPosition_accessor_storage","__calculatedDirection_extraInitializers","__anchorPosition_initializers","_keyboardListener","__anchorPosition_extraInitializers","_autoUpdateCleanup","_open","_hoverCloseTimer","_isMouseOverPopover","_getPanelStyle","getPanelStyle","positionType","zIndex","triggerType","_panelCoords","bottom","right","arrowPosition","_onKeyDown","e","key","open","_close","_handleAction","action","dispatchEvent","CustomEvent","detail","direction","__classPrivateFieldGet","value","__classPrivateFieldSet","launchBehavior","linkHref","footerLinkOnly","linkTarget","size","offsetDistance","shiftPadding","old","requestUpdate","anchorHost","_a","shadowRoot","querySelector","slot","slotted","assignedElements","anchorEl","length","panel","autoUpdate","_position","animationDuration","destructive","responsivePosition","titleText","labelText","okText","cancelText","closeText","popoverAriaLabel","secondaryButtonText","showSecondaryButton","tertiaryButtonText","showTertiaryButton","footerLinkText","footerLinkHref","footerLinkTarget","hideFooter","_calculatedDirection","_anchorPosition","render","isLinkMode","isHoverMode","hasHeader","dir","panelClasses","panelStyles","overlayStyles","html","_handleMouseEnter","_handleMouseLeave","_handleAnchorClick","_handleAnchorKeydown","classMap","_handlePanelMouseEnter","_handlePanelMouseLeave","_renderMini","_renderStandard","unsafeSVG","closeIcon","hasFooterLinkSlot","hasFooterLinkProps","hasFooterLink","hasFooterSlot","shouldRenderPrimary","shouldRenderSecondary","shouldRenderTertiary","hasAnyFooterButtons","shouldRenderFooter","connectedCallback","super","document","addEventListener","disconnectedCallback","removeEventListener","clearTimeout","_removeFocusListener","updated","changed","has","updateComplete","then","_handleFocusKeyboardEvents","style","setProperty","_toggle","setTimeout","preventDefault","window","location","href","res","handleFocusKeyboardEvents","keyboardListener","removeFocusListener","baseStyle","arrowStyle","setAttribute","arrowEl","override","undefined","baseOpts","x","y","placement","arrowX","arrowY","autoPosition","anchorPos","includes","split","numericTopOffset","parseInt","replace","numericLeftOffset","Math","round","maxWidth","requestAnimationFrame","anchorRect","getBoundingClientRect","panelRect","arrowOffsetX","width","arrowPadding","minOffsetX","maxOffsetX","clampedArrowX","max","min","arrowOffsetY","height","minOffsetY","maxOffsetY","clampedArrowY","property","type","String","reflect","_positionType_decorators","_launchBehavior_decorators","_linkHref_decorators","_footerLinkOnly_decorators","Boolean","_linkTarget_decorators","_size_decorators","Number","_animationDuration_decorators","_top_decorators","_left_decorators","_bottom_decorators","_right_decorators","_destructive_decorators","_zIndex_decorators","_responsivePosition_decorators","_titleText_decorators","_labelText_decorators","_okText_decorators","_cancelText_decorators","_closeText_decorators","_popoverAriaLabel_decorators","_secondaryButtonText_decorators","_showSecondaryButton_decorators","_tertiaryButtonText_decorators","_showTertiaryButton_decorators","_footerLinkText_decorators","_footerLinkHref_decorators","_footerLinkTarget_decorators","_hideFooter_decorators","__panelCoords_decorators","state","__calculatedDirection_decorators","__anchorPosition_decorators","__esDecorate","_direction_decorators","kind","name","static","private","access","obj","get","metadata","_metadata","_offsetDistance_decorators","_shiftPadding_decorators","_triggerType_decorators","_arrowPosition_decorators","_classDescriptor","_classDecorators","_classExtraInitializers","styles","unsafeCSS","PopoverScss"],"mappings":"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"}
|