@kyndryl-design-system/shidoka-applications 2.76.1 → 2.77.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/headerCategory.d.ts +2 -0
- package/components/global/header/headerCategory.d.ts.map +1 -1
- package/components/global/header/headerCategory.js +17 -6
- package/components/global/header/headerCategory.js.map +1 -1
- package/components/global/header/headerLink.js +1 -0
- package/components/global/header/headerLink.js.map +1 -1
- package/package.json +1 -1
|
@@ -10,6 +10,8 @@ export declare class HeaderCategory extends LitElement {
|
|
|
10
10
|
accessor heading: string;
|
|
11
11
|
/** Add left padding when icon is not provided to align text with links that do have icons. */
|
|
12
12
|
accessor leftPadding: boolean;
|
|
13
|
+
/** Show bottom border/divider. */
|
|
14
|
+
accessor showDivider: boolean;
|
|
13
15
|
render(): import("lit-html").TemplateResult<1>;
|
|
14
16
|
}
|
|
15
17
|
declare global {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"headerCategory.d.ts","sourceRoot":"","sources":["../../../../src/components/global/header/headerCategory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAmB,MAAM,KAAK,CAAC;AAIlD;;;;GAIG;AACH,qBACa,cAAe,SAAQ,UAAU;IAC5C,OAAgB,MAAM,0BAAiC;IAEvD,qBAAqB;IAErB,QAAQ,CAAC,OAAO,SAAM;IAEtB,8FAA8F;IAE9F,QAAQ,CAAC,WAAW,UAAS;IAEpB,MAAM;
|
|
1
|
+
{"version":3,"file":"headerCategory.d.ts","sourceRoot":"","sources":["../../../../src/components/global/header/headerCategory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAmB,MAAM,KAAK,CAAC;AAIlD;;;;GAIG;AACH,qBACa,cAAe,SAAQ,UAAU;IAC5C,OAAgB,MAAM,0BAAiC;IAEvD,qBAAqB;IAErB,QAAQ,CAAC,OAAO,SAAM;IAEtB,8FAA8F;IAE9F,QAAQ,CAAC,WAAW,UAAS;IAE7B,kCAAkC;IAElC,QAAQ,CAAC,WAAW,UAAS;IAEpB,MAAM;CAehB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,qBAAqB,EAAE,cAAc,CAAC;KACvC;CACF"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{__setFunctionName as e,__esDecorate as t,__runInitializers as i,__classPrivateFieldGet as a,__classPrivateFieldSet as n}from"tslib";import{css as
|
|
1
|
+
import{__setFunctionName as e,__esDecorate as t,__runInitializers as i,__classPrivateFieldGet as a,__classPrivateFieldSet as n}from"tslib";import{css as r,LitElement as d,unsafeCSS as l,html as o}from"lit";import{customElement as s,property as h}from"lit/decorators.js";var g=r`*,
|
|
2
2
|
*::before,
|
|
3
3
|
*::after {
|
|
4
4
|
box-sizing: border-box;
|
|
@@ -41,6 +41,15 @@ import{__setFunctionName as e,__esDecorate as t,__runInitializers as i,__classPr
|
|
|
41
41
|
flex-direction: column;
|
|
42
42
|
gap: 2px;
|
|
43
43
|
}
|
|
44
|
+
.category.divider::after {
|
|
45
|
+
content: "";
|
|
46
|
+
display: block;
|
|
47
|
+
background: none;
|
|
48
|
+
border: none;
|
|
49
|
+
margin: 6px 8px;
|
|
50
|
+
height: 1px;
|
|
51
|
+
background: var(--kd-color-border-level-tertiary);
|
|
52
|
+
}
|
|
44
53
|
|
|
45
54
|
.category__links {
|
|
46
55
|
display: flex;
|
|
@@ -60,7 +69,7 @@ import{__setFunctionName as e,__esDecorate as t,__runInitializers as i,__classPr
|
|
|
60
69
|
color: var(--kd-color-text-variant-brand);
|
|
61
70
|
font-weight: var(--kd-font-weight-medium);
|
|
62
71
|
text-transform: uppercase;
|
|
63
|
-
padding:
|
|
72
|
+
padding: 7px 6px 7px 8px;
|
|
64
73
|
}
|
|
65
74
|
@media (min-width: 42rem) {
|
|
66
75
|
.heading {
|
|
@@ -96,9 +105,11 @@ slot[name=icon]::slotted(*) {
|
|
|
96
105
|
justify-content: center;
|
|
97
106
|
width: 16px;
|
|
98
107
|
height: 16px;
|
|
99
|
-
}`;let m=(()=>{var
|
|
100
|
-
<div class="category">
|
|
101
|
-
<div
|
|
108
|
+
}`;let m=(()=>{var r,m,c;let p,f,v,u,k,y=[s("kyn-header-category")],x=[],b=d,w=[],z=[],P=[],D=[],S=[],j=[];return f=class extends b{get heading(){return a(this,r,"f")}set heading(e){n(this,r,e,"f")}get leftPadding(){return a(this,m,"f")}set leftPadding(e){n(this,m,e,"f")}get showDivider(){return a(this,c,"f")}set showDivider(e){n(this,c,e,"f")}render(){return o`
|
|
109
|
+
<div class="category ${this.showDivider?"divider":""}"">
|
|
110
|
+
<div
|
|
111
|
+
class="heading ${this.leftPadding?"left-padding":""}
|
|
112
|
+
>
|
|
102
113
|
<slot name="icon"></slot>
|
|
103
114
|
${this.heading}
|
|
104
115
|
</div>
|
|
@@ -106,5 +117,5 @@ slot[name=icon]::slotted(*) {
|
|
|
106
117
|
<slot></slot>
|
|
107
118
|
</div>
|
|
108
119
|
</div>
|
|
109
|
-
`}constructor(){super(...arguments),
|
|
120
|
+
`}constructor(){super(...arguments),r.set(this,i(this,w,"")),m.set(this,(i(this,z),i(this,P,!1))),c.set(this,(i(this,D),i(this,S,!1))),i(this,j)}},r=new WeakMap,m=new WeakMap,c=new WeakMap,e(f,"HeaderCategory"),(()=>{var e;const i="function"==typeof Symbol&&Symbol.metadata?Object.create(null!==(e=b[Symbol.metadata])&&void 0!==e?e:null):void 0;v=[h({type:String})],u=[h({type:Boolean})],k=[h({type:Boolean})],t(f,null,v,{kind:"accessor",name:"heading",static:!1,private:!1,access:{has:e=>"heading"in e,get:e=>e.heading,set:(e,t)=>{e.heading=t}},metadata:i},w,z),t(f,null,u,{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},P,D),t(f,null,k,{kind:"accessor",name:"showDivider",static:!1,private:!1,access:{has:e=>"showDivider"in e,get:e=>e.showDivider,set:(e,t)=>{e.showDivider=t}},metadata:i},S,j),t(null,p={value:f},y,{kind:"class",name:f.name,metadata:i},null,x),f=p.value,i&&Object.defineProperty(f,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:i})})(),f.styles=l(g),i(f,x),f})();export{m as HeaderCategory};
|
|
110
121
|
//# sourceMappingURL=headerCategory.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"headerCategory.js","sources":["../../../../src/components/global/header/headerCategory.ts"],"sourcesContent":["import { LitElement, html, unsafeCSS } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport HeaderCategoryScss from './headerCategory.scss?inline';\n\n/**\n * Header link category\n * @slot unnamed - Slot for links.\n * @slot icon - Slot for icon.\n */\n@customElement('kyn-header-category')\nexport class HeaderCategory extends LitElement {\n static override styles = unsafeCSS(HeaderCategoryScss);\n\n /** Category text. */\n @property({ type: String })\n accessor heading = '';\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 override render() {\n return html`\n <div class=\"category\">\n <div
|
|
1
|
+
{"version":3,"file":"headerCategory.js","sources":["../../../../src/components/global/header/headerCategory.ts"],"sourcesContent":["import { LitElement, html, unsafeCSS } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport HeaderCategoryScss from './headerCategory.scss?inline';\n\n/**\n * Header link category\n * @slot unnamed - Slot for links.\n * @slot icon - Slot for icon.\n */\n@customElement('kyn-header-category')\nexport class HeaderCategory extends LitElement {\n static override styles = unsafeCSS(HeaderCategoryScss);\n\n /** Category text. */\n @property({ type: String })\n accessor heading = '';\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 /** Show bottom border/divider. */\n @property({ type: Boolean })\n accessor showDivider = false;\n\n override render() {\n return html`\n <div class=\"category ${this.showDivider ? 'divider' : ''}\"\">\n <div\n class=\"heading ${this.leftPadding ? 'left-padding' : ''}\n >\n <slot name=\"icon\"></slot>\n ${this.heading}\n </div>\n <div class=\"category__links\">\n <slot></slot>\n </div>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kyn-header-category': HeaderCategory;\n }\n}\n"],"names":["HeaderCategory","customElement","LitElement","_classThis","_classSuper","heading","__classPrivateFieldGet","this","_HeaderCategory_heading_accessor_storage","value","__classPrivateFieldSet","leftPadding","_HeaderCategory_leftPadding_accessor_storage","showDivider","_HeaderCategory_showDivider_accessor_storage","render","html","set","__runInitializers","_heading_initializers","_heading_extraInitializers","_leftPadding_initializers","_leftPadding_extraInitializers","_showDivider_initializers","_heading_decorators","property","type","String","_leftPadding_decorators","Boolean","_showDivider_decorators","__esDecorate","kind","name","static","private","access","has","obj","get","metadata","_metadata","_showDivider_extraInitializers","_classDescriptor","_classDecorators","_classExtraInitializers","styles","unsafeCSS","HeaderCategoryScss"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAUaA,EAAc,iCAD1BC,EAAc,+BACqBC,uCAARC,EAAA,cAAQC,EAKlC,WAASC,GAAO,OAAAC,EAAAC,KAAAC,EAAA,IAAA,CAAhB,WAASH,CAAOI,GAAAC,EAAAH,KAAAC,EAAAC,EAAA,IAAA,CAIhB,eAASE,GAAW,OAAAL,EAAAC,KAAAK,EAAA,IAAA,CAApB,eAASD,CAAWF,GAAAC,EAAAH,KAAAK,EAAAH,EAAA,IAAA,CAIpB,eAASI,GAAW,OAAAP,EAAAC,KAAAO,EAAA,IAAA,CAApB,eAASD,CAAWJ,GAAAC,EAAAH,KAAAO,EAAAL,EAAA,IAAA,CAEX,MAAAM,GACP,OAAOC,CAAI;6BACcT,KAAKM,YAAc,UAAY;;2BAEjCN,KAAKI,YAAc,eAAiB;;;YAGnDJ,KAAKF;;;;;;wCAjBNG,EAAAS,IAAAV,KAAAW,EAAAX,KAAAY,EAAU,KAIVP,EAAAK,IAAAV,MAAAW,EAAAX,KAAAa,GAAAF,EAAAX,KAAAc,GAAc,KAIdP,EAAAG,IAAAV,MAAAW,EAAAX,KAAAe,GAAAJ,EAAAX,KAAAgB,GAAc,uNATtBC,EAAA,CAAAC,EAAS,CAAEC,KAAMC,UAIjBC,EAAA,CAAAH,EAAS,CAAEC,KAAMG,WAIjBC,EAAA,CAAAL,EAAS,CAAEC,KAAMG,WAPlBE,EAAA5B,EAAA,KAAAqB,EAAA,CAAAQ,KAAA,WAAAC,KAAA,UAAAC,QAAA,EAAAC,SAAA,EAAAC,OAAA,CAAAC,IAAAC,GAAA,YAAAA,EAAAC,IAAAD,GAAAA,EAASjC,QAAOY,IAAA,CAAAqB,EAAA7B,KAAA6B,EAAPjC,QAAOI,CAAA,GAAA+B,SAAAC,GAAAtB,EAAAC,GAIhBW,EAAA5B,EAAA,KAAAyB,EAAA,CAAAI,KAAA,WAAAC,KAAA,cAAAC,QAAA,EAAAC,SAAA,EAAAC,OAAA,CAAAC,IAAAC,GAAA,gBAAAA,EAAAC,IAAAD,GAAAA,EAAS3B,YAAWM,IAAA,CAAAqB,EAAA7B,KAAA6B,EAAX3B,YAAWF,CAAA,GAAA+B,SAAAC,GAAApB,EAAAC,GAIpBS,EAAA5B,EAAA,KAAA2B,EAAA,CAAAE,KAAA,WAAAC,KAAA,cAAAC,QAAA,EAAAC,SAAA,EAAAC,OAAA,CAAAC,IAAAC,GAAA,gBAAAA,EAAAC,IAAAD,GAAAA,EAASzB,YAAWI,IAAA,CAAAqB,EAAA7B,KAAA6B,EAAXzB,YAAWJ,CAAA,GAAA+B,SAAAC,GAAAlB,EAAAmB,GAbtBX,EAAA,KAAAY,EAAA,CAAAlC,MAAAN,GAAAyC,EAAA,CAAAZ,KAAA,QAAAC,KAAA9B,EAAA8B,KAAAO,SAAAC,GAAA,KAAAI,iHACkB1C,EAAA2C,OAASC,EAAUC,GADxB9B,EAAAf,EAAA0C,MAAc"}
|
|
@@ -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 { 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 /** 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 /** Text for mobile \"Back\" button. */\n @state()\n accessor _searchTerm = '';\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 /** 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 open: this.open || (this.level === 1 && this.isActive),\n };\n\n const linkClasses = {\n 'nav-link': true,\n active: this.isActive,\n interactive: this.level == 1,\n 'padding-left': this.leftPadding,\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 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 class=${classMap(linkClasses)}\n @click=${(e: Event) => this.handleClick(e)}\n @pointerenter=${(e: PointerEvent) => this.handlePointerEnter(e)}\n >\n <slot></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=\"wrapper\">\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 ${Links.length >= this.searchThreshold\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 <slot\n name=\"links\"\n @slotchange=${this._handleLinksSlotChange}\n ></slot>\n </div>\n </div>\n </div>\n `;\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 nodes: any = link.shadowRoot?.querySelector('slot')?.assignedNodes({\n flatten: true,\n });\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 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 this.requestUpdate();\n }\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 this._enterTimer = setTimeout(() => {\n this.open = true;\n }, 150);\n }\n }\n\n private handlePointerLeave(e: PointerEvent) {\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 private handleClick(e: Event) {\n let preventDefault = false;\n\n if (this.slottedEls.length) {\n preventDefault = true;\n e.preventDefault();\n this.open = !this.open;\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 // get the height of the level 1 menu to use as submenu min-height\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 });\n\n override firstUpdated() {\n this.determineLevel();\n }\n\n override willUpdate(changedProps: any) {\n if (changedProps.has('open') && this.open) {\n this._positionMenu();\n }\n }\n\n private _handleDocumentClick = (e: Event) => this.handleClickOut(e);\n\n override connectedCallback() {\n super.connectedCallback();\n document.addEventListener('click', this._handleDocumentClick);\n window.addEventListener('resize', this._debounceResize);\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 document.removeEventListener('click', this._handleDocumentClick);\n window.removeEventListener('resize', this._debounceResize);\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_backText_accessor_storage","_searchThreshold_extraInitializers","_backText_initializers","_HeaderLink_leftPadding_accessor_storage","_backText_extraInitializers","_leftPadding_initializers","_HeaderLink__searchTerm_accessor_storage","_leftPadding_extraInitializers","__searchTerm_initializers","_HeaderLink_slottedEls_accessor_storage","__searchTerm_extraInitializers","_slottedEls_initializers","_enterTimer","_slottedEls_extraInitializers","_HeaderLink__leaveTimer_accessor_storage","__leaveTimer_initializers","_HeaderLink_menuPosition_accessor_storage","__leaveTimer_extraInitializers","_menuPosition_initializers","_debounceResize","_menuPosition_extraInitializers","debounce","determineLevel","_handleDocumentClick","e","handleClickOut","open","__classPrivateFieldGet","value","__classPrivateFieldSet","href","target","rel","isActive","level","divider","searchLabel","searchThreshold","backText","leftPadding","_searchTerm","slottedEls","_leaveTimer","menuPosition","render","classes","menu","length","linkClasses","active","interactive","menuClasses","menu__content","slotted","Links","querySelectorAll","html","classMap","handlePointerLeave","handlePointerEnter","handleClick","unsafeSVG","arrowIcon","styleMap","_handleBack","backIcon","_handleSearch","searchIcon","_handleLinksSlotChange","detail","toLowerCase","_searchFilter","forEach","link","nodes","_b","_a","shadowRoot","querySelector","assignedNodes","flatten","linkText","i","textContent","trim","includes","style","display","_positionMenu","preventDefault","stopPropagation","headerCategories","closest","handleBackClick","removeAttribute","requestUpdate","_isDesktopViewport","window","innerWidth","pointerType","clearTimeout","setTimeout","event","CustomEvent","origEvent","defaultPrevented","dispatchEvent","composedPath","node","parentNode","nodeName","_c","linkBounds","getBoundingClientRect","menuEl","menuBounds","call","linkHalf","top","height","menuHalf","topCandidate","innerHeight","navMenuHeight","headerNav","navMenu","_d","offsetHeight","HeaderHeight","left","minHeight","right","firstUpdated","willUpdate","changedProps","has","connectedCallback","super","document","addEventListener","disconnectedCallback","undefined","removeEventListener","property","type","Boolean","reflect","_href_decorators","String","_target_decorators","_rel_decorators","_isActive_decorators","_level_decorators","state","_divider_decorators","_searchLabel_decorators","_searchThreshold_decorators","Number","_backText_decorators","_leftPadding_decorators","__searchTerm_decorators","_slottedEls_decorators","queryAssignedElements","slot","__leaveTimer_decorators","_menuPosition_decorators","__esDecorate","_open_decorators","kind","name","static","private","access","obj","get","metadata","_metadata","_classDescriptor","_classDecorators","_classExtraInitializers","styles","unsafeCSS","HeaderLinkScss"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BaA,EAAU,iFADtBC,EAAc,4BACiBC,6LAARC,EAAA,cAAQC,qCAOrBC,EAAAC,IAAAC,KAAAC,EAAAD,KAAAE,IAAO,IAIPC,EAAAJ,IAAAC,MAAAC,EAAAD,KAAAI,IAAAH,EAAAD,KAAAK,GAAO,MAIPC,EAAAP,IAAAC,MAAAC,EAAAD,KAAAO,IAAAN,EAAAD,KAAAQ,GAA2B,WAI3BC,EAAAV,IAAAC,MAAAC,EAAAD,KAAAU,IAAAT,EAAAD,KAAAW,GAAM,MAINC,EAAAb,IAAAC,MAAAC,EAAAD,KAAAa,IAAAZ,EAAAD,KAAAc,IAAW,KAMXC,EAAAhB,IAAAC,MAAAC,EAAAD,KAAAgB,IAAAf,EAAAD,KAAAiB,GAAQ,KAIRC,EAAAnB,IAAAC,MAAAC,EAAAD,KAAAmB,IAAAlB,EAAAD,KAAAoB,IAAU,KAIVC,EAAAtB,IAAAC,MAAAC,EAAAD,KAAAsB,IAAArB,EAAAD,KAAAuB,GAAc,YAIdC,EAAAzB,IAAAC,MAAAC,EAAAD,KAAAyB,IAAAxB,EAAAD,KAAA0B,GAAkB,KAIlBC,EAAA5B,IAAAC,MAAAC,EAAAD,KAAA4B,IAAA3B,EAAAD,KAAA6B,GAAW,UAIXC,EAAA/B,IAAAC,MAAAC,EAAAD,KAAA+B,IAAA9B,EAAAD,KAAAgC,IAAc,KAIdC,EAAAlC,IAAAC,MAAAC,EAAAD,KAAAkC,IAAAjC,EAAAD,KAAAmC,GAAc,MAOdC,EAAArC,IAAAC,MAAAC,EAAAD,KAAAqC,IAAApC,EAAAD,KAAAsC,QAAA,KAKTtC,KAAAuC,YAAWtC,EAAAD,KAAAwC,IAMFC,EAAA1C,IAAAC,KAAAC,EAAAD,KAAA0C,QAAA,IAMAC,EAAA5C,IAAAC,MAAAC,EAAAD,KAAA4C,IAAA3C,EAAAD,KAAA6C,GAAoB,CAAA,KA4SrB7C,KAAA8C,iBAAe7C,EAAAD,KAAA+C,IAAGC,GAAS,KACjChD,KAAKiD,gBAAgB,KAafjD,KAAAkD,qBAAwBC,GAAanD,KAAKoD,eAAeD,GAhYjE,QAASE,GAAI,OAAAC,EAAAtD,KAAAF,EAAA,IAAA,CAAb,QAASuD,CAAIE,GAAAC,EAAAxD,KAAAF,EAAAyD,EAAA,IAAA,CAIb,QAASE,GAAI,OAAAH,EAAAtD,KAAAG,EAAA,IAAA,CAAb,QAASsD,CAAIF,GAAAC,EAAAxD,KAAAG,EAAAoD,EAAA,IAAA,CAIb,UAASG,GAAM,OAAAJ,EAAAtD,KAAAM,EAAA,IAAA,CAAf,UAASoD,CAAMH,GAAAC,EAAAxD,KAAAM,EAAAiD,EAAA,IAAA,CAIf,OAASI,GAAG,OAAAL,EAAAtD,KAAAS,EAAA,IAAA,CAAZ,OAASkD,CAAGJ,GAAAC,EAAAxD,KAAAS,EAAA8C,EAAA,IAAA,CAIZ,YAASK,GAAQ,OAAAN,EAAAtD,KAAAY,EAAA,IAAA,CAAjB,YAASgD,CAAQL,GAAAC,EAAAxD,KAAAY,EAAA2C,EAAA,IAAA,CAMjB,SAASM,GAAK,OAAAP,EAAAtD,KAAAe,EAAA,IAAA,CAAd,SAAS8C,CAAKN,GAAAC,EAAAxD,KAAAe,EAAAwC,EAAA,IAAA,CAId,WAASO,GAAO,OAAAR,EAAAtD,KAAAkB,EAAA,IAAA,CAAhB,WAAS4C,CAAOP,GAAAC,EAAAxD,KAAAkB,EAAAqC,EAAA,IAAA,CAIhB,eAASQ,GAAW,OAAAT,EAAAtD,KAAAqB,EAAA,IAAA,CAApB,eAAS0C,CAAWR,GAAAC,EAAAxD,KAAAqB,EAAAkC,EAAA,IAAA,CAIpB,mBAASS,GAAe,OAAAV,EAAAtD,KAAAwB,EAAA,IAAA,CAAxB,mBAASwC,CAAeT,GAAAC,EAAAxD,KAAAwB,EAAA+B,EAAA,IAAA,CAIxB,YAASU,GAAQ,OAAAX,EAAAtD,KAAA2B,EAAA,IAAA,CAAjB,YAASsC,CAAQV,GAAAC,EAAAxD,KAAA2B,EAAA4B,EAAA,IAAA,CAIjB,eAASW,GAAW,OAAAZ,EAAAtD,KAAA8B,EAAA,IAAA,CAApB,eAASoC,CAAWX,GAAAC,EAAAxD,KAAA8B,EAAAyB,EAAA,IAAA,CAIpB,eAASY,GAAW,OAAAb,EAAAtD,KAAAiC,EAAA,IAAA,CAApB,eAASkC,CAAWZ,GAAAC,EAAAxD,KAAAiC,EAAAsB,EAAA,IAAA,CAOpB,cAASa,GAAU,OAAAd,EAAAtD,KAAAoC,EAAA,IAAA,CAAnB,cAASgC,CAAUb,GAAAC,EAAAxD,KAAAoC,EAAAmB,EAAA,IAAA,CAWnB,eAASc,GAAW,OAAAf,EAAAtD,KAAAyC,EAAA,IAAA,CAApB,eAAS4B,CAAWd,GAAAC,EAAAxD,KAAAyC,EAAAc,EAAA,IAAA,CAMpB,gBAASe,GAAY,OAAAhB,EAAAtD,KAAA2C,EAAA,IAAA,CAArB,gBAAS2B,CAAYf,GAAAC,EAAAxD,KAAA2C,EAAAY,EAAA,IAAA,CAEZ,MAAAgB,GACP,MAAMC,EAAU,CACdC,KAAMzE,KAAKoE,WAAWM,OACtB,CAAC,UAAU1E,KAAK6D,UAAU,EAC1BC,QAAS9D,KAAK8D,QACdT,KAAMrD,KAAKqD,MAAwB,IAAfrD,KAAK6D,OAAe7D,KAAK4D,UAGzCe,EAAc,CAClB,YAAY,EACZC,OAAQ5E,KAAK4D,SACbiB,YAA2B,GAAd7E,KAAK6D,MAClB,eAAgB7D,KAAKkE,aAGjBY,EAAc,CAClBC,eAAe,EACfC,QAAShF,KAAKoE,WAAWM,QAGrBO,EAAQjF,KAAKkF,iBACjB,4EAGF,OAAOC,CAAI;;iBAEEC,EAASZ;wBACDrB,GAAoBnD,KAAKqF,mBAAmBlC;wBAC5CA,GAAoBnD,KAAKsF,mBAAmBnC;;;mBAGlDnD,KAAK0D;gBACR1D,KAAK2D;iBACJ3D,KAAKyD;kBACJ2B,EAAST;mBACPxB,GAAanD,KAAKuF,YAAYpC;0BACvBA,GAAoBnD,KAAKsF,mBAAmBnC;;;;YAI3DnD,KAAKoE,WAAWM,OACdS,CAAI,wBAAwBK,EAAUC,aACtC;;;;kBAIIL,EAASN;kBACTY,EAAS1F,KAAKsE;;;;;;uBAMRnB,GAAanD,KAAK2F,YAAYxC;;sBAEhCqC,EAAUI;gBAChB5F,KAAKiE;;cAEPgB,EAAMP,QAAU1E,KAAKgE,gBACnBmB,CAAI;;;;;4BAKQnF,KAAK+D;kCACC/D,KAAK+D;4BACX/D,KAAKmE;gCACAhB,GAAanD,KAAK6F,cAAc1C;;;wBAGzCqC,EAAUM;;sBAEZ9F,KAAK+D;;kBAGX;;;;4BAIY/D,KAAK+F;;;;;MAQvB,aAAAF,CAAc1C,GACpBnD,KAAKmE,YAAchB,EAAE6C,OAAOzC,MAAM0C,cAClCjG,KAAKkG,gBAGC,aAAAA,GACalG,KAAKkF,iBACtB,4EAGIiB,SAASC,YAEb,MAAMC,EAAmD,QAAtCC,EAAe,QAAfC,EAAAH,EAAKI,kBAAU,IAAAD,OAAA,EAAAA,EAAEE,cAAc,eAAO,IAAAH,OAAA,EAAAA,EAAEI,cAAc,CACvEC,SAAS,IAEX,IAAIC,EAAW,GACf,IAAK,IAAIC,EAAI,EAAGA,EAAIR,EAAM3B,OAAQmC,IAChCD,GAAYP,EAAMQ,GAAGC,YAAYC,OAG/BH,EAASX,cAAce,SAAShH,KAAKmE,aACvCiC,EAAKa,MAAMC,QAAU,QAErBd,EAAKa,MAAMC,QAAU,UAIzBlH,KAAKmH,gBAGC,WAAAxB,CAAYxC,SACdA,IACFA,EAAEiE,iBACFjE,EAAEkE,mBAIJ,MAAMC,EAAmBtH,KAAKuH,QAAQ,yBAItC,GAAID,aAAgB,EAAhBA,EAAkBE,gBAAiB,CACrCF,EAAiBE,gBAAgBrE,GAsBjC,OAlBwD,QAAtDoD,EAACvG,KAAKuH,QAAQ,yBAAwC,IAAAhB,EAAAA,EACtDe,GAEoBpC,iBACpB,yBAGIiB,SAASC,IACbA,EAAKqB,gBAAgB,QACjB,SAAUrB,IACXA,EAAa/C,MAAO,MAKzBrD,KAAKmE,YAAc,QACnBnE,KAAKkG,gBAOPlG,KAAKqD,MAAO,EACZrD,KAAKmE,YAAc,GACnBnE,KAAKkG,gBAGC,sBAAAH,GACN/F,KAAK0H,gBAGP,sBAAYC,GACV,MAAsB,oBAAXC,QACJA,OAAOC,YAAc,IAGtB,kBAAAvC,CAAmBnC,GAEL,UAAlBA,EAAE2E,aACF9H,KAAKoE,WAAWM,QAChB1E,KAAK2H,qBAELI,aAAa/H,KAAKqE,aAElBrE,KAAKuC,YAAcyF,YAAW,KAC5BhI,KAAKqD,MAAO,CAAI,GACf,MAIC,kBAAAgC,CAAmBlC,GAEL,UAAlBA,EAAE2E,aACF9H,KAAKoE,WAAWM,QACK,KAArB1E,KAAKmE,aACLnE,KAAK2H,qBAELI,aAAa/H,KAAKuC,aAClBvC,KAAKqE,YAAc2D,YAAW,KAC5BhI,KAAKqD,MAAO,CAAK,GAChB,MAIC,WAAAkC,CAAYpC,GAClB,IAAIiE,GAAiB,EAEjBpH,KAAKoE,WAAWM,SAClB0C,GAAiB,EACjBjE,EAAEiE,iBACFpH,KAAKqD,MAAQrD,KAAKqD,MAGpB,MAAM4E,EAAQ,IAAIC,YAAY,WAAY,CACxClC,OAAQ,CAAEmC,UAAWhF,EAAGiF,iBAAkBhB,KAE5CpH,KAAKqI,cAAcJ,GAGb,cAAA7E,CAAeD,GAChBA,EAAEmF,eAAetB,SAAShH,QAC7BA,KAAKqD,MAAO,EACZrD,KAAKmE,YAAc,GACnBnE,KAAKkG,iBAID,cAAAjD,aACN,IAAIY,EAAQ,EACR0E,EAAYvI,KAAKwI,WAGrB,KAAOD,GAAM,CACX,GAAsB,oBAAlBA,EAAKE,SAAgC,CACvC5E,GAAmB,QAAV0C,EAAAgC,EAAK1E,aAAK,IAAA0C,EAAAA,EAAI,GAAK,EAC5B,MACK,GACa,wBAAlBgC,EAAKE,UACyB,6BAA9BnC,EAAAiC,EAAKC,iCAAYC,UACjB,CACA5E,GAA8B,QAArB6E,EAAAH,EAAKC,WAAW3E,aAAK,IAAA6E,EAAAA,EAAI,GAAK,EACvC,MACK,GACLd,OAAOC,WAAa,KACF,sBAAlBU,EAAKE,SACL,CACA5E,EAAQ,EACR,MAEF0E,EAAOA,EAAKC,WAGdxI,KAAK6D,MAAQA,EAGP,aAAAsD,eACN,MAAMwB,UAAapC,EAAAvG,KAAK4I,uDAClBC,EACW,QAAfvC,EAAAtG,KAAKwG,kBAAU,IAAAF,OAAA,EAAAA,EAAEG,cAA2B,kBACxCqC,EAA0C,QAA7BJ,EAAAG,aAAM,EAANA,EAAQD,6BAAqB,IAAAF,OAAA,EAAAA,EAAAK,KAAAF,GAEhD,IAAKF,IAAeG,EAClB,OAGF,MAGME,EAAWL,EAAWM,IAAMN,EAAWO,OAAS,EAChDC,EAAWL,EAAWI,OAAS,EAE/BE,EACJJ,EAAWG,EAAWvB,OAAOyB,YACzBL,EAAWG,GAAYH,EAAWG,EAAWvB,OAAOyB,aAAe,GACnEL,EAAWG,EAEjB,GAAmB,IAAfnJ,KAAK6D,MAAa,CAEpB,IAAIyF,EAAgB,EACpB,MAAMC,EAAYvJ,KAAKuH,QAAQ,kBAC/B,GAAIgC,EAAW,CACb,MAAMC,EAA8B,QAApBC,EAAAF,EAAU/C,kBAAU,IAAAiD,OAAA,EAAAA,EAAEhD,cACpC,kBAEE+C,IACFF,EAAgBE,EAAQE,cAI5B1J,KAAKsE,aAAe,CAClB2E,IAAKU,OACLC,KAAM,MACNC,UAAWP,EAAgB,UAExB,CACL,MAAML,EAAMG,EA7BO,MA6BsCA,EACzDpJ,KAAKsE,aAAe,CAClB2E,IAAKA,EAAM,KACXW,KAAMjB,EAAWmB,MAjCL,GAiCuB,OAUhC,YAAAC,GACP/J,KAAKiD,iBAGE,UAAA+G,CAAWC,GACdA,EAAaC,IAAI,SAAWlK,KAAKqD,MACnCrD,KAAKmH,gBAMA,iBAAAgD,GACPC,MAAMD,oBACNE,SAASC,iBAAiB,QAAStK,KAAKkD,sBACxC0E,OAAO0C,iBAAiB,SAAUtK,KAAK8C,iBAGhC,oBAAAyH,GAEHvK,KAAKuC,cACPwF,aAAa/H,KAAKuC,aAClBvC,KAAKuC,iBAAciI,GAEjBxK,KAAKqE,cACP0D,aAAa/H,KAAKqE,aAClBrE,KAAKqE,iBAAcmG,GAGrBH,SAASI,oBAAoB,QAASzK,KAAKkD,sBAC3C0E,OAAO6C,oBAAoB,SAAUzK,KAAK8C,iBAC1CsH,MAAMG,uYAtZPG,EAAS,CAAEC,KAAMC,QAASC,SAAS,KAInCC,EAAA,CAAAJ,EAAS,CAAEC,KAAMI,UAIjBC,EAAA,CAAAN,EAAS,CAAEC,KAAMI,UAIjBE,EAAA,CAAAP,EAAS,CAAEC,KAAMI,UAIjBG,EAAA,CAAAR,EAAS,CAAEC,KAAMC,WAMjBO,EAAA,CAAAC,KAIAC,EAAA,CAAAX,EAAS,CAAEC,KAAMC,WAIjBU,EAAA,CAAAZ,EAAS,CAAEC,KAAMI,UAIjBQ,EAAA,CAAAb,EAAS,CAAEC,KAAMa,UAIjBC,EAAA,CAAAf,EAAS,CAAEC,KAAMI,UAIjBW,EAAA,CAAAhB,EAAS,CAAEC,KAAMC,WAIjBe,EAAA,CAAAP,KAOAQ,EAAA,CAAAC,EAAsB,CAAEC,KAAM,WAW9BC,EAAA,CAAAX,KAMAY,EAAA,CAAAZ,KArEDa,EAAArM,EAAA,KAAAsM,EAAA,CAAAC,KAAA,WAAAC,KAAA,OAAAC,QAAA,EAAAC,SAAA,EAAAC,OAAA,CAAArC,IAAAsC,GAAA,SAAAA,EAAAC,IAAAD,GAAAA,EAASnJ,KAAItD,IAAA,CAAAyM,EAAAjJ,KAAAiJ,EAAJnJ,KAAIE,CAAA,GAAAmJ,SAAAC,GAAAzM,GAAAE,IAIb6L,EAAArM,EAAA,KAAAkL,EAAA,CAAAqB,KAAA,WAAAC,KAAA,OAAAC,QAAA,EAAAC,SAAA,EAAAC,OAAA,CAAArC,IAAAsC,GAAA,SAAAA,EAAAC,IAAAD,GAAAA,EAAS/I,KAAI1D,IAAA,CAAAyM,EAAAjJ,KAAAiJ,EAAJ/I,KAAIF,CAAA,GAAAmJ,SAAAC,GAAAtM,GAAAE,IAIb0L,EAAArM,EAAA,KAAAoL,EAAA,CAAAmB,KAAA,WAAAC,KAAA,SAAAC,QAAA,EAAAC,SAAA,EAAAC,OAAA,CAAArC,IAAAsC,GAAA,WAAAA,EAAAC,IAAAD,GAAAA,EAAS9I,OAAM3D,IAAA,CAAAyM,EAAAjJ,KAAAiJ,EAAN9I,OAAMH,CAAA,GAAAmJ,SAAAC,GAAAnM,GAAAE,IAIfuL,EAAArM,EAAA,KAAAqL,EAAA,CAAAkB,KAAA,WAAAC,KAAA,MAAAC,QAAA,EAAAC,SAAA,EAAAC,OAAA,CAAArC,IAAAsC,GAAA,QAAAA,EAAAC,IAAAD,GAAAA,EAAS7I,IAAG5D,IAAA,CAAAyM,EAAAjJ,KAAAiJ,EAAH7I,IAAGJ,CAAA,GAAAmJ,SAAAC,GAAAhM,GAAAE,IAIZoL,EAAArM,EAAA,KAAAsL,EAAA,CAAAiB,KAAA,WAAAC,KAAA,WAAAC,QAAA,EAAAC,SAAA,EAAAC,OAAA,CAAArC,IAAAsC,GAAA,aAAAA,EAAAC,IAAAD,GAAAA,EAAS5I,SAAQ7D,IAAA,CAAAyM,EAAAjJ,KAAAiJ,EAAR5I,SAAQL,CAAA,GAAAmJ,SAAAC,GAAA7L,GAAAE,IAMjBiL,EAAArM,EAAA,KAAAuL,EAAA,CAAAgB,KAAA,WAAAC,KAAA,QAAAC,QAAA,EAAAC,SAAA,EAAAC,OAAA,CAAArC,IAAAsC,GAAA,UAAAA,EAAAC,IAAAD,GAAAA,EAAS3I,MAAK9D,IAAA,CAAAyM,EAAAjJ,KAAAiJ,EAAL3I,MAAKN,CAAA,GAAAmJ,SAAAC,GAAA1L,GAAAE,IAId8K,EAAArM,EAAA,KAAAyL,EAAA,CAAAc,KAAA,WAAAC,KAAA,UAAAC,QAAA,EAAAC,SAAA,EAAAC,OAAA,CAAArC,IAAAsC,GAAA,YAAAA,EAAAC,IAAAD,GAAAA,EAAS1I,QAAO/D,IAAA,CAAAyM,EAAAjJ,KAAAiJ,EAAP1I,QAAOP,CAAA,GAAAmJ,SAAAC,GAAAvL,GAAAE,IAIhB2K,EAAArM,EAAA,KAAA0L,EAAA,CAAAa,KAAA,WAAAC,KAAA,cAAAC,QAAA,EAAAC,SAAA,EAAAC,OAAA,CAAArC,IAAAsC,GAAA,gBAAAA,EAAAC,IAAAD,GAAAA,EAASzI,YAAWhE,IAAA,CAAAyM,EAAAjJ,KAAAiJ,EAAXzI,YAAWR,CAAA,GAAAmJ,SAAAC,GAAApL,GAAAE,IAIpBwK,EAAArM,EAAA,KAAA2L,EAAA,CAAAY,KAAA,WAAAC,KAAA,kBAAAC,QAAA,EAAAC,SAAA,EAAAC,OAAA,CAAArC,IAAAsC,GAAA,oBAAAA,EAAAC,IAAAD,GAAAA,EAASxI,gBAAejE,IAAA,CAAAyM,EAAAjJ,KAAAiJ,EAAfxI,gBAAeT,CAAA,GAAAmJ,SAAAC,GAAAjL,GAAAE,IAIxBqK,EAAArM,EAAA,KAAA6L,EAAA,CAAAU,KAAA,WAAAC,KAAA,WAAAC,QAAA,EAAAC,SAAA,EAAAC,OAAA,CAAArC,IAAAsC,GAAA,aAAAA,EAAAC,IAAAD,GAAAA,EAASvI,SAAQlE,IAAA,CAAAyM,EAAAjJ,KAAAiJ,EAARvI,SAAQV,CAAA,GAAAmJ,SAAAC,GAAA9K,GAAAE,IAIjBkK,EAAArM,EAAA,KAAA8L,EAAA,CAAAS,KAAA,WAAAC,KAAA,cAAAC,QAAA,EAAAC,SAAA,EAAAC,OAAA,CAAArC,IAAAsC,GAAA,gBAAAA,EAAAC,IAAAD,GAAAA,EAAStI,YAAWnE,IAAA,CAAAyM,EAAAjJ,KAAAiJ,EAAXtI,YAAWX,CAAA,GAAAmJ,SAAAC,GAAA3K,GAAAE,IAIpB+J,EAAArM,EAAA,KAAA+L,EAAA,CAAAQ,KAAA,WAAAC,KAAA,cAAAC,QAAA,EAAAC,SAAA,EAAAC,OAAA,CAAArC,IAAAsC,GAAA,gBAAAA,EAAAC,IAAAD,GAAAA,EAASrI,YAAWpE,IAAA,CAAAyM,EAAAjJ,KAAAiJ,EAAXrI,YAAWZ,CAAA,GAAAmJ,SAAAC,GAAAxK,GAAAE,IAOpB4J,EAAArM,EAAA,KAAAgM,EAAA,CAAAO,KAAA,WAAAC,KAAA,aAAAC,QAAA,EAAAC,SAAA,EAAAC,OAAA,CAAArC,IAAAsC,GAAA,eAAAA,EAAAC,IAAAD,GAAAA,EAASpI,WAAUrE,IAAA,CAAAyM,EAAAjJ,KAAAiJ,EAAVpI,WAAUb,CAAA,GAAAmJ,SAAAC,GAAArK,GAAAE,IAWnByJ,EAAArM,EAAA,KAAAmM,EAAA,CAAAI,KAAA,WAAAC,KAAA,cAAAC,QAAA,EAAAC,SAAA,EAAAC,OAAA,CAAArC,IAAAsC,GAAA,gBAAAA,EAAAC,IAAAD,GAAAA,EAASnI,YAAWtE,IAAA,CAAAyM,EAAAjJ,KAAAiJ,EAAXnI,YAAWd,CAAA,GAAAmJ,SAAAC,GAAAjK,GAAAE,IAMpBqJ,EAAArM,EAAA,KAAAoM,EAAA,CAAAG,KAAA,WAAAC,KAAA,eAAAC,QAAA,EAAAC,SAAA,EAAAC,OAAA,CAAArC,IAAAsC,GAAA,iBAAAA,EAAAC,IAAAD,GAAAA,EAASlI,aAAYvE,IAAA,CAAAyM,EAAAjJ,KAAAiJ,EAAZlI,aAAYf,CAAA,GAAAmJ,SAAAC,GAAA9J,GAAAE,IA7EvBkJ,EAAA,KAAAW,EAAA,CAAArJ,MAAA3D,GAAAiN,EAAA,CAAAV,KAAA,QAAAC,KAAAxM,EAAAwM,KAAAM,SAAAC,GAAA,KAAAG,iHACkBlN,EAAAmN,OAASC,EAAUC,GADxBhN,EAAAL,EAAAkN,MAAU"}
|
|
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 { 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 /** 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 /** Text for mobile \"Back\" button. */\n @state()\n accessor _searchTerm = '';\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 /** 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 open: this.open || (this.level === 1 && this.isActive),\n };\n\n const linkClasses = {\n 'nav-link': true,\n active: this.isActive,\n interactive: this.level == 1,\n 'padding-left': this.leftPadding,\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 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 class=${classMap(linkClasses)}\n @click=${(e: Event) => this.handleClick(e)}\n @pointerenter=${(e: PointerEvent) => this.handlePointerEnter(e)}\n >\n <slot></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=\"wrapper\">\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 ${Links.length >= this.searchThreshold\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 <slot\n name=\"links\"\n @slotchange=${this._handleLinksSlotChange}\n ></slot>\n </div>\n </div>\n </div>\n `;\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 nodes: any = link.shadowRoot?.querySelector('slot')?.assignedNodes({\n flatten: true,\n });\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 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 this.requestUpdate();\n }\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 this._enterTimer = setTimeout(() => {\n this.open = true;\n }, 150);\n }\n }\n\n private handlePointerLeave(e: PointerEvent) {\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 private handleClick(e: Event) {\n let preventDefault = false;\n\n if (this.slottedEls.length) {\n preventDefault = true;\n e.preventDefault();\n this.open = !this.open;\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 // get the height of the level 1 menu to use as submenu min-height\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 });\n\n override firstUpdated() {\n this.determineLevel();\n }\n\n override willUpdate(changedProps: any) {\n if (changedProps.has('open') && this.open) {\n this._positionMenu();\n }\n }\n\n private _handleDocumentClick = (e: Event) => this.handleClickOut(e);\n\n override connectedCallback() {\n super.connectedCallback();\n document.addEventListener('click', this._handleDocumentClick);\n window.addEventListener('resize', this._debounceResize);\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 document.removeEventListener('click', this._handleDocumentClick);\n window.removeEventListener('resize', this._debounceResize);\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_backText_accessor_storage","_searchThreshold_extraInitializers","_backText_initializers","_HeaderLink_leftPadding_accessor_storage","_backText_extraInitializers","_leftPadding_initializers","_HeaderLink__searchTerm_accessor_storage","_leftPadding_extraInitializers","__searchTerm_initializers","_HeaderLink_slottedEls_accessor_storage","__searchTerm_extraInitializers","_slottedEls_initializers","_enterTimer","_slottedEls_extraInitializers","_HeaderLink__leaveTimer_accessor_storage","__leaveTimer_initializers","_HeaderLink_menuPosition_accessor_storage","__leaveTimer_extraInitializers","_menuPosition_initializers","_debounceResize","_menuPosition_extraInitializers","debounce","determineLevel","_handleDocumentClick","e","handleClickOut","open","__classPrivateFieldGet","value","__classPrivateFieldSet","href","target","rel","isActive","level","divider","searchLabel","searchThreshold","backText","leftPadding","_searchTerm","slottedEls","_leaveTimer","menuPosition","render","classes","menu","length","linkClasses","active","interactive","menuClasses","menu__content","slotted","Links","querySelectorAll","html","classMap","handlePointerLeave","handlePointerEnter","handleClick","unsafeSVG","arrowIcon","styleMap","_handleBack","backIcon","_handleSearch","searchIcon","_handleLinksSlotChange","detail","toLowerCase","_searchFilter","forEach","link","nodes","_b","_a","shadowRoot","querySelector","assignedNodes","flatten","linkText","i","textContent","trim","includes","style","display","_positionMenu","preventDefault","stopPropagation","headerCategories","closest","handleBackClick","removeAttribute","requestUpdate","_isDesktopViewport","window","innerWidth","pointerType","clearTimeout","setTimeout","event","CustomEvent","origEvent","defaultPrevented","dispatchEvent","composedPath","node","parentNode","nodeName","_c","linkBounds","getBoundingClientRect","menuEl","menuBounds","call","linkHalf","top","height","menuHalf","topCandidate","innerHeight","navMenuHeight","headerNav","navMenu","_d","offsetHeight","HeaderHeight","left","minHeight","right","firstUpdated","willUpdate","changedProps","has","connectedCallback","super","document","addEventListener","disconnectedCallback","undefined","removeEventListener","property","type","Boolean","reflect","_href_decorators","String","_target_decorators","_rel_decorators","_isActive_decorators","_level_decorators","state","_divider_decorators","_searchLabel_decorators","_searchThreshold_decorators","Number","_backText_decorators","_leftPadding_decorators","__searchTerm_decorators","_slottedEls_decorators","queryAssignedElements","slot","__leaveTimer_decorators","_menuPosition_decorators","__esDecorate","_open_decorators","kind","name","static","private","access","obj","get","metadata","_metadata","_classDescriptor","_classDecorators","_classExtraInitializers","styles","unsafeCSS","HeaderLinkScss"],"mappings":"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"}
|