@kyndryl-design-system/shidoka-applications 2.80.1 → 2.80.3
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/header.js +1 -0
- package/components/global/header/header.js.map +1 -1
- package/components/global/header/headerFlyout.js +1 -0
- package/components/global/header/headerFlyout.js.map +1 -1
- package/components/global/header/headerFlyouts.js +1 -0
- package/components/global/header/headerFlyouts.js.map +1 -1
- package/components/global/header/headerLink.js +1 -0
- package/components/global/header/headerLink.js.map +1 -1
- package/components/global/header/headerNav.js +5 -4
- package/components/global/header/headerNav.js.map +1 -1
- package/components/reusable/iconSelector/iconSelector.d.ts +9 -1
- package/components/reusable/iconSelector/iconSelector.d.ts.map +1 -1
- package/components/reusable/iconSelector/iconSelector.js +7 -3
- package/components/reusable/iconSelector/iconSelector.js.map +1 -1
- package/components/reusable/iconSelector/iconSelectorGroup.d.ts +3 -0
- package/components/reusable/iconSelector/iconSelectorGroup.d.ts.map +1 -1
- package/components/reusable/iconSelector/iconSelectorGroup.js.map +1 -1
- package/package.json +1 -1
|
@@ -121,6 +121,7 @@ import{__setFunctionName as e,__esDecorate as t,__runInitializers as i,__classPr
|
|
|
121
121
|
border-radius: 8px;
|
|
122
122
|
background: var(--kd-color-background-container-default);
|
|
123
123
|
max-height: calc(100vh - var(--kd-header-reserved-space) - 16px);
|
|
124
|
+
min-width: 180px;
|
|
124
125
|
box-shadow: var(--kd-elevation-level-1);
|
|
125
126
|
}
|
|
126
127
|
.menu__content.left {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"header.js","sources":["../../../../src/components/global/header/header.ts"],"sourcesContent":["import { LitElement, html, unsafeCSS } from 'lit';\nimport {\n customElement,\n property,\n state,\n query,\n queryAssignedElements,\n} from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { unsafeHTML } from 'lit-html/directives/unsafe-html.js';\nimport { debounce } from '../../../common/helpers/helpers';\nimport HeaderScss from './header.scss?inline';\nimport logo from '@kyndryl-design-system/shidoka-foundation/assets/svg/kyndryl-logo.svg';\n\n/**\n * The global Header component.\n * @fires on-menu-toggle - Captures the menu toggle click event and emits the menu open state in the detail. `detail:{ origEvent: Event}`\n * @fires on-root-link-click - Captures the logo link click event and emits the original event details. `detail:{ origEvent: Event}`\n * @slot unnamed - The default slot for all empty space right of the logo/title.\n * @slot logo - Slot for the logo, will overwrite the default logo.\n * @slot left - Slot left of the logo, intended for the header nav.\n * @slot center - Slot between logo/title and right flyouts.\n */\n@customElement('kyn-header')\nexport class Header extends LitElement {\n static override styles = unsafeCSS(HeaderScss);\n\n /** URL for the header logo link. Should target the application home page. */\n @property({ type: String })\n accessor rootUrl = '/';\n\n /** App title text next to logo. Hidden on smaller screens. */\n @property({ type: String })\n accessor appTitle = '';\n\n /** Queries for slotted header-nav.\n * @internal\n */\n @queryAssignedElements({ selector: 'kyn-header-nav' })\n accessor navEls!: any;\n\n /** Queries for all slotted elements.\n * @internal\n */\n @queryAssignedElements()\n accessor assignedElements!: any;\n\n /** Queries for elements in left slot.\n * @internal\n */\n @queryAssignedElements({ slot: 'left' })\n accessor leftEls!: any;\n\n /** header-nav open state\n * @internal\n */\n @state()\n accessor _navOpen = false;\n\n /** header-flyouts open state\n * @internal\n */\n @state()\n accessor _flyoutsOpen = false;\n\n /** @internal */\n @query('header')\n accessor _headerEl!: HTMLElement;\n\n override render() {\n const classes = {\n header: true,\n 'left-slotted': this.leftEls.length,\n 'child-open': this._navOpen || this._flyoutsOpen,\n };\n\n return html`\n <header class=\"${classMap(classes)}\">\n <slot name=\"left\" @slotchange=${this.handleSlotChange}></slot>\n\n <a\n href=\"${this.rootUrl}\"\n class=\"logo-link interactive\"\n aria-label=\"${this.rootUrl}\"\n @click=\"${(e: Event) => this.handleRootLinkClick(e)}\"\n >\n <slot name=\"logo\" @slotchange=${this.handleSlotChange}>\n ${unsafeHTML(logo)}\n </slot>\n </a>\n\n <span class=\"title\">${this.appTitle}</span>\n\n <slot name=\"center\"></slot>\n\n <div class=\"header__right\">\n <slot @slotchange=${this.handleSlotChange}></slot>\n </div>\n\n <div class=\"background\"></div>\n </header>\n\n <div class=\"overlay\"></div>\n `;\n }\n\n private handleSlotChange() {\n this.requestUpdate();\n }\n\n private handleRootLinkClick(e: Event) {\n const event = new CustomEvent('on-root-link-click', {\n detail: { origEvent: e },\n });\n this.dispatchEvent(event);\n }\n\n private _handleNavToggle(e: any) {\n this._navOpen = e.detail.open;\n }\n\n private _handleFlyoutsToggle(e: any) {\n this._flyoutsOpen = e.detail.open || e.detail.childrenOpen;\n }\n\n /** Morph header on scroll.\n * @internal */\n private _handleScroll() {\n if (window.scrollY > 0) {\n this._headerEl.classList.add('scrolled');\n } else {\n this._headerEl.classList.remove('scrolled');\n }\n }\n\n /** @internal */\n private _debounceScroll = debounce(() => {\n this._handleScroll();\n });\n\n override firstUpdated() {\n this._handleScroll();\n }\n\n override connectedCallback() {\n super.connectedCallback();\n\n document.addEventListener('on-nav-toggle', (e: Event) =>\n this._handleNavToggle(e)\n );\n document.addEventListener('on-flyouts-toggle', (e: Event) =>\n this._handleFlyoutsToggle(e)\n );\n\n window.addEventListener('scroll', this._debounceScroll);\n }\n\n override disconnectedCallback() {\n document.removeEventListener('on-nav-toggle', (e: Event) =>\n this._handleNavToggle(e)\n );\n document.removeEventListener('on-flyouts-toggle', (e: Event) =>\n this._handleFlyoutsToggle(e)\n );\n\n window.removeEventListener('scroll', this._debounceScroll);\n\n super.disconnectedCallback();\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kyn-header': Header;\n }\n}\n"],"names":["Header","customElement","LitElement","_classThis","_classSuper","_Header_rootUrl_accessor_storage","set","this","__runInitializers","_rootUrl_initializers","_Header_appTitle_accessor_storage","_rootUrl_extraInitializers","_appTitle_initializers","_Header_navEls_accessor_storage","_appTitle_extraInitializers","_navEls_initializers","_Header_assignedElements_accessor_storage","_navEls_extraInitializers","_assignedElements_initializers","_Header_leftEls_accessor_storage","_assignedElements_extraInitializers","_leftEls_initializers","_Header__navOpen_accessor_storage","_leftEls_extraInitializers","__navOpen_initializers","_Header__flyoutsOpen_accessor_storage","__navOpen_extraInitializers","__flyoutsOpen_initializers","_Header__headerEl_accessor_storage","__flyoutsOpen_extraInitializers","__headerEl_initializers","_debounceScroll","__headerEl_extraInitializers","debounce","_handleScroll","rootUrl","__classPrivateFieldGet","value","__classPrivateFieldSet","appTitle","navEls","assignedElements","leftEls","_navOpen","_flyoutsOpen","_headerEl","render","classes","header","length","html","classMap","handleSlotChange","e","handleRootLinkClick","unsafeHTML","logo","requestUpdate","event","CustomEvent","detail","origEvent","dispatchEvent","_handleNavToggle","open","_handleFlyoutsToggle","childrenOpen","window","scrollY","classList","add","remove","firstUpdated","connectedCallback","super","document","addEventListener","disconnectedCallback","removeEventListener","_rootUrl_decorators","property","type","String","_appTitle_decorators","_navEls_decorators","queryAssignedElements","selector","_assignedElements_decorators","_leftEls_decorators","slot","__navOpen_decorators","state","__flyoutsOpen_decorators","query","__esDecorate","kind","name","static","private","access","has","obj","get","metadata","_metadata","__headerEl_decorators","_classDescriptor","_classDecorators","_classExtraInitializers","styles","unsafeCSS","HeaderScss"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"header.js","sources":["../../../../src/components/global/header/header.ts"],"sourcesContent":["import { LitElement, html, unsafeCSS } from 'lit';\nimport {\n customElement,\n property,\n state,\n query,\n queryAssignedElements,\n} from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { unsafeHTML } from 'lit-html/directives/unsafe-html.js';\nimport { debounce } from '../../../common/helpers/helpers';\nimport HeaderScss from './header.scss?inline';\nimport logo from '@kyndryl-design-system/shidoka-foundation/assets/svg/kyndryl-logo.svg';\n\n/**\n * The global Header component.\n * @fires on-menu-toggle - Captures the menu toggle click event and emits the menu open state in the detail. `detail:{ origEvent: Event}`\n * @fires on-root-link-click - Captures the logo link click event and emits the original event details. `detail:{ origEvent: Event}`\n * @slot unnamed - The default slot for all empty space right of the logo/title.\n * @slot logo - Slot for the logo, will overwrite the default logo.\n * @slot left - Slot left of the logo, intended for the header nav.\n * @slot center - Slot between logo/title and right flyouts.\n */\n@customElement('kyn-header')\nexport class Header extends LitElement {\n static override styles = unsafeCSS(HeaderScss);\n\n /** URL for the header logo link. Should target the application home page. */\n @property({ type: String })\n accessor rootUrl = '/';\n\n /** App title text next to logo. Hidden on smaller screens. */\n @property({ type: String })\n accessor appTitle = '';\n\n /** Queries for slotted header-nav.\n * @internal\n */\n @queryAssignedElements({ selector: 'kyn-header-nav' })\n accessor navEls!: any;\n\n /** Queries for all slotted elements.\n * @internal\n */\n @queryAssignedElements()\n accessor assignedElements!: any;\n\n /** Queries for elements in left slot.\n * @internal\n */\n @queryAssignedElements({ slot: 'left' })\n accessor leftEls!: any;\n\n /** header-nav open state\n * @internal\n */\n @state()\n accessor _navOpen = false;\n\n /** header-flyouts open state\n * @internal\n */\n @state()\n accessor _flyoutsOpen = false;\n\n /** @internal */\n @query('header')\n accessor _headerEl!: HTMLElement;\n\n override render() {\n const classes = {\n header: true,\n 'left-slotted': this.leftEls.length,\n 'child-open': this._navOpen || this._flyoutsOpen,\n };\n\n return html`\n <header class=\"${classMap(classes)}\">\n <slot name=\"left\" @slotchange=${this.handleSlotChange}></slot>\n\n <a\n href=\"${this.rootUrl}\"\n class=\"logo-link interactive\"\n aria-label=\"${this.rootUrl}\"\n @click=\"${(e: Event) => this.handleRootLinkClick(e)}\"\n >\n <slot name=\"logo\" @slotchange=${this.handleSlotChange}>\n ${unsafeHTML(logo)}\n </slot>\n </a>\n\n <span class=\"title\">${this.appTitle}</span>\n\n <slot name=\"center\"></slot>\n\n <div class=\"header__right\">\n <slot @slotchange=${this.handleSlotChange}></slot>\n </div>\n\n <div class=\"background\"></div>\n </header>\n\n <div class=\"overlay\"></div>\n `;\n }\n\n private handleSlotChange() {\n this.requestUpdate();\n }\n\n private handleRootLinkClick(e: Event) {\n const event = new CustomEvent('on-root-link-click', {\n detail: { origEvent: e },\n });\n this.dispatchEvent(event);\n }\n\n private _handleNavToggle(e: any) {\n this._navOpen = e.detail.open;\n }\n\n private _handleFlyoutsToggle(e: any) {\n this._flyoutsOpen = e.detail.open || e.detail.childrenOpen;\n }\n\n /** Morph header on scroll.\n * @internal */\n private _handleScroll() {\n if (window.scrollY > 0) {\n this._headerEl.classList.add('scrolled');\n } else {\n this._headerEl.classList.remove('scrolled');\n }\n }\n\n /** @internal */\n private _debounceScroll = debounce(() => {\n this._handleScroll();\n });\n\n override firstUpdated() {\n this._handleScroll();\n }\n\n override connectedCallback() {\n super.connectedCallback();\n\n document.addEventListener('on-nav-toggle', (e: Event) =>\n this._handleNavToggle(e)\n );\n document.addEventListener('on-flyouts-toggle', (e: Event) =>\n this._handleFlyoutsToggle(e)\n );\n\n window.addEventListener('scroll', this._debounceScroll);\n }\n\n override disconnectedCallback() {\n document.removeEventListener('on-nav-toggle', (e: Event) =>\n this._handleNavToggle(e)\n );\n document.removeEventListener('on-flyouts-toggle', (e: Event) =>\n this._handleFlyoutsToggle(e)\n );\n\n window.removeEventListener('scroll', this._debounceScroll);\n\n super.disconnectedCallback();\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kyn-header': Header;\n }\n}\n"],"names":["Header","customElement","LitElement","_classThis","_classSuper","_Header_rootUrl_accessor_storage","set","this","__runInitializers","_rootUrl_initializers","_Header_appTitle_accessor_storage","_rootUrl_extraInitializers","_appTitle_initializers","_Header_navEls_accessor_storage","_appTitle_extraInitializers","_navEls_initializers","_Header_assignedElements_accessor_storage","_navEls_extraInitializers","_assignedElements_initializers","_Header_leftEls_accessor_storage","_assignedElements_extraInitializers","_leftEls_initializers","_Header__navOpen_accessor_storage","_leftEls_extraInitializers","__navOpen_initializers","_Header__flyoutsOpen_accessor_storage","__navOpen_extraInitializers","__flyoutsOpen_initializers","_Header__headerEl_accessor_storage","__flyoutsOpen_extraInitializers","__headerEl_initializers","_debounceScroll","__headerEl_extraInitializers","debounce","_handleScroll","rootUrl","__classPrivateFieldGet","value","__classPrivateFieldSet","appTitle","navEls","assignedElements","leftEls","_navOpen","_flyoutsOpen","_headerEl","render","classes","header","length","html","classMap","handleSlotChange","e","handleRootLinkClick","unsafeHTML","logo","requestUpdate","event","CustomEvent","detail","origEvent","dispatchEvent","_handleNavToggle","open","_handleFlyoutsToggle","childrenOpen","window","scrollY","classList","add","remove","firstUpdated","connectedCallback","super","document","addEventListener","disconnectedCallback","removeEventListener","_rootUrl_decorators","property","type","String","_appTitle_decorators","_navEls_decorators","queryAssignedElements","selector","_assignedElements_decorators","_leftEls_decorators","slot","__navOpen_decorators","state","__flyoutsOpen_decorators","query","__esDecorate","kind","name","static","private","access","has","obj","get","metadata","_metadata","__headerEl_decorators","_classDescriptor","_classDecorators","_classExtraInitializers","styles","unsafeCSS","HeaderScss"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAwBaA,EAAM,qDADlBC,EAAc,sBACaC,0FAARC,EAAA,cAAQC,oCAKjBC,EAAAC,IAAAC,KAAAC,EAAAD,KAAAE,EAAU,MAIVC,EAAAJ,IAAAC,MAAAC,EAAAD,KAAAI,GAAAH,EAAAD,KAAAK,EAAW,MAMXC,EAAAP,IAAAC,MAAAC,EAAAD,KAAAO,GAAAN,EAAAD,KAAAQ,OAAA,KAMAC,EAAAV,IAAAC,MAAAC,EAAAD,KAAAU,GAAAT,EAAAD,KAAAW,OAAA,KAMAC,EAAAb,IAAAC,MAAAC,EAAAD,KAAAa,GAAAZ,EAAAD,KAAAc,OAAA,KAMAC,EAAAhB,IAAAC,MAAAC,EAAAD,KAAAgB,GAAAf,EAAAD,KAAAiB,GAAW,KAMXC,EAAAnB,IAAAC,MAAAC,EAAAD,KAAAmB,GAAAlB,EAAAD,KAAAoB,GAAe,KAIfC,EAAAtB,IAAAC,MAAAC,EAAAD,KAAAsB,GAAArB,EAAAD,KAAAuB,OAAA,KAqEDvB,KAAAwB,iBAAevB,EAAAD,KAAAyB,IAAGC,GAAS,KACjC1B,KAAK2B,eAAe,KA5GtB,WAASC,GAAO,OAAAC,EAAA7B,KAAAF,EAAA,IAAA,CAAhB,WAAS8B,CAAOE,GAAAC,EAAA/B,KAAAF,EAAAgC,EAAA,IAAA,CAIhB,YAASE,GAAQ,OAAAH,EAAA7B,KAAAG,EAAA,IAAA,CAAjB,YAAS6B,CAAQF,GAAAC,EAAA/B,KAAAG,EAAA2B,EAAA,IAAA,CAMjB,UAASG,GAAM,OAAAJ,EAAA7B,KAAAM,EAAA,IAAA,CAAf,UAAS2B,CAAMH,GAAAC,EAAA/B,KAAAM,EAAAwB,EAAA,IAAA,CAMf,oBAASI,GAAgB,OAAAL,EAAA7B,KAAAS,EAAA,IAAA,CAAzB,oBAASyB,CAAgBJ,GAAAC,EAAA/B,KAAAS,EAAAqB,EAAA,IAAA,CAMzB,WAASK,GAAO,OAAAN,EAAA7B,KAAAY,EAAA,IAAA,CAAhB,WAASuB,CAAOL,GAAAC,EAAA/B,KAAAY,EAAAkB,EAAA,IAAA,CAMhB,YAASM,GAAQ,OAAAP,EAAA7B,KAAAe,EAAA,IAAA,CAAjB,YAASqB,CAAQN,GAAAC,EAAA/B,KAAAe,EAAAe,EAAA,IAAA,CAMjB,gBAASO,GAAY,OAAAR,EAAA7B,KAAAkB,EAAA,IAAA,CAArB,gBAASmB,CAAYP,GAAAC,EAAA/B,KAAAkB,EAAAY,EAAA,IAAA,CAIrB,aAASQ,GAAS,OAAAT,EAAA7B,KAAAqB,EAAA,IAAA,CAAlB,aAASiB,CAASR,GAAAC,EAAA/B,KAAAqB,EAAAS,EAAA,IAAA,CAET,MAAAS,GACP,MAAMC,EAAU,CACdC,QAAQ,EACR,eAAgBzC,KAAKmC,QAAQO,OAC7B,aAAc1C,KAAKoC,UAAYpC,KAAKqC,cAGtC,OAAOM,CAAI;uBACQC,EAASJ;wCACQxC,KAAK6C;;;kBAG3B7C,KAAK4B;;wBAEC5B,KAAK4B;oBACRkB,GAAa9C,KAAK+C,oBAAoBD;;0CAEjB9C,KAAK6C;cACjCG,EAAWC;;;;8BAIKjD,KAAKgC;;;;;8BAKLhC,KAAK6C;;;;;;;MAUzB,gBAAAA,GACN7C,KAAKkD,gBAGC,mBAAAH,CAAoBD,GAC1B,MAAMK,EAAQ,IAAIC,YAAY,qBAAsB,CAClDC,OAAQ,CAAEC,UAAWR,KAEvB9C,KAAKuD,cAAcJ,GAGb,gBAAAK,CAAiBV,GACvB9C,KAAKoC,SAAWU,EAAEO,OAAOI,KAGnB,oBAAAC,CAAqBZ,GAC3B9C,KAAKqC,aAAeS,EAAEO,OAAOI,MAAQX,EAAEO,OAAOM,aAKxC,aAAAhC,GACFiC,OAAOC,QAAU,EACnB7D,KAAKsC,UAAUwB,UAAUC,IAAI,YAE7B/D,KAAKsC,UAAUwB,UAAUE,OAAO,YAS3B,YAAAC,GACPjE,KAAK2B,gBAGE,iBAAAuC,GACPC,MAAMD,oBAENE,SAASC,iBAAiB,iBAAkBvB,GAC1C9C,KAAKwD,iBAAiBV,KAExBsB,SAASC,iBAAiB,qBAAsBvB,GAC9C9C,KAAK0D,qBAAqBZ,KAG5Bc,OAAOS,iBAAiB,SAAUrE,KAAKwB,iBAGhC,oBAAA8C,GACPF,SAASG,oBAAoB,iBAAkBzB,GAC7C9C,KAAKwD,iBAAiBV,KAExBsB,SAASG,oBAAoB,qBAAsBzB,GACjD9C,KAAK0D,qBAAqBZ,KAG5Bc,OAAOW,oBAAoB,SAAUvE,KAAKwB,iBAE1C2C,MAAMG,6RA3IPE,EAAA,CAAAC,EAAS,CAAEC,KAAMC,UAIjBC,EAAA,CAAAH,EAAS,CAAEC,KAAMC,UAMjBE,EAAA,CAAAC,EAAsB,CAAEC,SAAU,oBAMlCC,EAAA,CAAAF,KAMAG,EAAA,CAAAH,EAAsB,CAAEI,KAAM,UAM9BC,EAAA,CAAAC,KAMAC,EAAA,CAAAD,QAIAE,EAAM,WArCPC,EAAA3F,EAAA,KAAA4E,EAAA,CAAAgB,KAAA,WAAAC,KAAA,UAAAC,QAAA,EAAAC,SAAA,EAAAC,OAAA,CAAAC,IAAAC,GAAA,YAAAA,EAAAC,IAAAD,GAAAA,EAASlE,QAAO7B,IAAA,CAAA+F,EAAAhE,KAAAgE,EAAPlE,QAAOE,CAAA,GAAAkE,SAAAC,GAAA/F,EAAAE,GAIhBmF,EAAA3F,EAAA,KAAAgF,EAAA,CAAAY,KAAA,WAAAC,KAAA,WAAAC,QAAA,EAAAC,SAAA,EAAAC,OAAA,CAAAC,IAAAC,GAAA,aAAAA,EAAAC,IAAAD,GAAAA,EAAS9D,SAAQjC,IAAA,CAAA+F,EAAAhE,KAAAgE,EAAR9D,SAAQF,CAAA,GAAAkE,SAAAC,GAAA5F,EAAAE,GAMjBgF,EAAA3F,EAAA,KAAAiF,EAAA,CAAAW,KAAA,WAAAC,KAAA,SAAAC,QAAA,EAAAC,SAAA,EAAAC,OAAA,CAAAC,IAAAC,GAAA,WAAAA,EAAAC,IAAAD,GAAAA,EAAS7D,OAAMlC,IAAA,CAAA+F,EAAAhE,KAAAgE,EAAN7D,OAAMH,CAAA,GAAAkE,SAAAC,GAAAzF,EAAAE,GAMf6E,EAAA3F,EAAA,KAAAoF,EAAA,CAAAQ,KAAA,WAAAC,KAAA,mBAAAC,QAAA,EAAAC,SAAA,EAAAC,OAAA,CAAAC,IAAAC,GAAA,qBAAAA,EAAAC,IAAAD,GAAAA,EAAS5D,iBAAgBnC,IAAA,CAAA+F,EAAAhE,KAAAgE,EAAhB5D,iBAAgBJ,CAAA,GAAAkE,SAAAC,GAAAtF,EAAAE,GAMzB0E,EAAA3F,EAAA,KAAAqF,EAAA,CAAAO,KAAA,WAAAC,KAAA,UAAAC,QAAA,EAAAC,SAAA,EAAAC,OAAA,CAAAC,IAAAC,GAAA,YAAAA,EAAAC,IAAAD,GAAAA,EAAS3D,QAAOpC,IAAA,CAAA+F,EAAAhE,KAAAgE,EAAP3D,QAAOL,CAAA,GAAAkE,SAAAC,GAAAnF,EAAAE,GAMhBuE,EAAA3F,EAAA,KAAAuF,EAAA,CAAAK,KAAA,WAAAC,KAAA,WAAAC,QAAA,EAAAC,SAAA,EAAAC,OAAA,CAAAC,IAAAC,GAAA,aAAAA,EAAAC,IAAAD,GAAAA,EAAS1D,SAAQrC,IAAA,CAAA+F,EAAAhE,KAAAgE,EAAR1D,SAAQN,CAAA,GAAAkE,SAAAC,GAAAhF,EAAAE,GAMjBoE,EAAA3F,EAAA,KAAAyF,EAAA,CAAAG,KAAA,WAAAC,KAAA,eAAAC,QAAA,EAAAC,SAAA,EAAAC,OAAA,CAAAC,IAAAC,GAAA,iBAAAA,EAAAC,IAAAD,GAAAA,EAASzD,aAAYtC,IAAA,CAAA+F,EAAAhE,KAAAgE,EAAZzD,aAAYP,CAAA,GAAAkE,SAAAC,GAAA7E,EAAAE,GAIrBiE,EAAA3F,EAAA,KAAAsG,EAAA,CAAAV,KAAA,WAAAC,KAAA,YAAAC,QAAA,EAAAC,SAAA,EAAAC,OAAA,CAAAC,IAAAC,GAAA,cAAAA,EAAAC,IAAAD,GAAAA,EAASxD,UAASvC,IAAA,CAAA+F,EAAAhE,KAAAgE,EAATxD,UAASR,CAAA,GAAAkE,SAAAC,GAAA1E,EAAAE,IA3CpB8D,EAAA,KAAAY,EAAA,CAAArE,MAAAlC,GAAAwG,EAAA,CAAAZ,KAAA,QAAAC,KAAA7F,EAAA6F,KAAAO,SAAAC,GAAA,KAAAI,iHACkBzG,EAAA0G,OAASC,EAAUC,GADxBvG,EAAAL,EAAAyG,MAAM"}
|
|
@@ -121,6 +121,7 @@ import{__setFunctionName as t,__esDecorate as e,__runInitializers as i,__classPr
|
|
|
121
121
|
border-radius: 8px;
|
|
122
122
|
background: var(--kd-color-background-container-default);
|
|
123
123
|
max-height: calc(100vh - var(--kd-header-reserved-space) - 16px);
|
|
124
|
+
min-width: 180px;
|
|
124
125
|
box-shadow: var(--kd-elevation-level-1);
|
|
125
126
|
}
|
|
126
127
|
.menu__content.left {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"headerFlyout.js","sources":["../../../../src/components/global/header/headerFlyout.ts"],"sourcesContent":["import { unsafeSVG } from 'lit-html/directives/unsafe-svg.js';\nimport { LitElement, html, unsafeCSS } from 'lit';\nimport {\n customElement,\n property,\n queryAssignedElements,\n} from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport HeaderFlyoutScss from './headerFlyout.scss?inline';\nimport chevronIcon 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';\n\n/**\n * Component for header flyout items.\n * @slot unnamed - Slot for flyout menu content.\n * @slot button - Slot for button/toggle content.\n */\n@customElement('kyn-header-flyout')\nexport class HeaderFlyout extends LitElement {\n static override styles = unsafeCSS(HeaderFlyoutScss);\n\n /** Flyout open state. */\n @property({ type: Boolean, reflect: true })\n accessor open = false;\n\n /** Anchor flyout menu to the left edge of the button instead of the right edge. */\n @property({ type: Boolean })\n accessor anchorLeft = false;\n\n /** Hides the arrow. */\n @property({ type: Boolean })\n accessor hideArrow = false;\n\n /** Menu & button label. */\n @property({ type: String })\n accessor label = '';\n\n /** Hide the label at the top of the flyout menu. */\n @property({ type: Boolean })\n accessor hideMenuLabel = false;\n\n /** Hide the label in the mobile button. */\n @property({ type: Boolean })\n accessor hideButtonLabel = false;\n\n /**\n * DEPRECATED. Use `label` instead.\n * Button assistive text, title + aria-label.\n */\n @property({ type: String })\n accessor assistiveText = '';\n\n /** Turns the button into a link. */\n @property({ type: String })\n accessor href = '';\n\n /** Text for mobile \"Back\" button. */\n @property({ type: String })\n accessor backText = 'Back';\n\n /**\n * Queries any slotted HTML elements.\n * @ignore\n */\n @queryAssignedElements()\n accessor slottedElements!: Array<HTMLElement>;\n\n override render() {\n const classes = {\n menu: true,\n open: this.open,\n };\n\n const contentClasses = {\n menu__content: true,\n 'menu__content--left': this.anchorLeft,\n slotted: this.slottedElements.length,\n };\n\n return html`\n <div class=\"${classMap(classes)}\">\n ${this.href !== ''\n ? html`\n <a\n class=\"btn interactive\"\n href=${this.href}\n title=${this.label || this.assistiveText}\n aria-label=${this.label || this.assistiveText}\n @click=${this.handleClick}\n >\n <slot name=\"button\"></slot>\n\n ${!this.hideButtonLabel\n ? html`\n <span class=\"label\">\n ${this.label || this.assistiveText}\n </span>\n `\n : null}\n\n <span slot=\"button\" class=\"arrow\">\n ${unsafeSVG(chevronIcon)}\n </span>\n </a>\n `\n : html`\n <button\n class=\"btn interactive\"\n title=${this.label || this.assistiveText}\n aria-label=${this.label || this.assistiveText}\n @click=${this.handleClick}\n >\n <slot name=\"button\"></slot>\n\n ${!this.hideButtonLabel\n ? html`\n <span class=\"label\">\n ${this.label || this.assistiveText}\n </span>\n `\n : null}\n\n <span slot=\"button\" class=\"arrow\">\n ${unsafeSVG(chevronIcon)}\n </span>\n </button>\n `}\n\n <div class=${classMap(contentClasses)}>\n <button class=\"go-back\" @click=${() => this._handleBack()}>\n <span>${unsafeSVG(backIcon)}</span>\n ${this.backText}\n </button>\n\n ${!this.hideMenuLabel\n ? html`\n <div class=\"menu-label\">\n ${this.label || this.assistiveText}\n </div>\n `\n : null}\n\n <slot></slot>\n </div>\n </div>\n `;\n }\n\n private _handleBack() {\n this.open = false;\n }\n\n private handleClick() {\n this.open = !this.open;\n }\n\n private handleClickOut(e: Event) {\n if (!e.composedPath().includes(this)) {\n this.open = false;\n }\n }\n\n override willUpdate(changedProps: any) {\n if (changedProps.has('open')) {\n const event = new CustomEvent('on-flyout-toggle', {\n composed: true,\n bubbles: true,\n detail: { open: this.open },\n });\n this.dispatchEvent(event);\n }\n }\n\n override connectedCallback() {\n super.connectedCallback();\n\n document.addEventListener('click', (e) => this.handleClickOut(e));\n }\n\n override disconnectedCallback() {\n document.removeEventListener('click', (e) => this.handleClickOut(e));\n\n super.disconnectedCallback();\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kyn-header-flyout': HeaderFlyout;\n }\n}\n"],"names":["HeaderFlyout","customElement","LitElement","_classThis","_classSuper","open","__classPrivateFieldGet","this","_HeaderFlyout_open_accessor_storage","value","__classPrivateFieldSet","anchorLeft","_HeaderFlyout_anchorLeft_accessor_storage","hideArrow","_HeaderFlyout_hideArrow_accessor_storage","label","_HeaderFlyout_label_accessor_storage","hideMenuLabel","_HeaderFlyout_hideMenuLabel_accessor_storage","hideButtonLabel","_HeaderFlyout_hideButtonLabel_accessor_storage","assistiveText","_HeaderFlyout_assistiveText_accessor_storage","href","_HeaderFlyout_href_accessor_storage","backText","_HeaderFlyout_backText_accessor_storage","slottedElements","_HeaderFlyout_slottedElements_accessor_storage","render","classes","menu","contentClasses","menu__content","slotted","length","html","classMap","handleClick","unsafeSVG","chevronIcon","_handleBack","backIcon","handleClickOut","e","composedPath","includes","willUpdate","changedProps","has","event","CustomEvent","composed","bubbles","detail","dispatchEvent","connectedCallback","super","document","addEventListener","disconnectedCallback","removeEventListener","set","__runInitializers","_open_initializers","_open_extraInitializers","_anchorLeft_initializers","_anchorLeft_extraInitializers","_hideArrow_initializers","_hideArrow_extraInitializers","_label_initializers","_label_extraInitializers","_hideMenuLabel_initializers","_hideMenuLabel_extraInitializers","_hideButtonLabel_initializers","_hideButtonLabel_extraInitializers","_assistiveText_initializers","_assistiveText_extraInitializers","_href_initializers","_href_extraInitializers","_backText_initializers","_backText_extraInitializers","_slottedElements_initializers","property","type","Boolean","reflect","_anchorLeft_decorators","_hideArrow_decorators","_label_decorators","String","_hideMenuLabel_decorators","_hideButtonLabel_decorators","_assistiveText_decorators","_href_decorators","_backText_decorators","_slottedElements_decorators","queryAssignedElements","__esDecorate","_open_decorators","kind","name","static","private","access","obj","get","metadata","_metadata","_slottedElements_extraInitializers","_classDescriptor","_classDecorators","_classExtraInitializers","styles","unsafeCSS","HeaderFlyoutScss"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"headerFlyout.js","sources":["../../../../src/components/global/header/headerFlyout.ts"],"sourcesContent":["import { unsafeSVG } from 'lit-html/directives/unsafe-svg.js';\nimport { LitElement, html, unsafeCSS } from 'lit';\nimport {\n customElement,\n property,\n queryAssignedElements,\n} from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport HeaderFlyoutScss from './headerFlyout.scss?inline';\nimport chevronIcon 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';\n\n/**\n * Component for header flyout items.\n * @slot unnamed - Slot for flyout menu content.\n * @slot button - Slot for button/toggle content.\n */\n@customElement('kyn-header-flyout')\nexport class HeaderFlyout extends LitElement {\n static override styles = unsafeCSS(HeaderFlyoutScss);\n\n /** Flyout open state. */\n @property({ type: Boolean, reflect: true })\n accessor open = false;\n\n /** Anchor flyout menu to the left edge of the button instead of the right edge. */\n @property({ type: Boolean })\n accessor anchorLeft = false;\n\n /** Hides the arrow. */\n @property({ type: Boolean })\n accessor hideArrow = false;\n\n /** Menu & button label. */\n @property({ type: String })\n accessor label = '';\n\n /** Hide the label at the top of the flyout menu. */\n @property({ type: Boolean })\n accessor hideMenuLabel = false;\n\n /** Hide the label in the mobile button. */\n @property({ type: Boolean })\n accessor hideButtonLabel = false;\n\n /**\n * DEPRECATED. Use `label` instead.\n * Button assistive text, title + aria-label.\n */\n @property({ type: String })\n accessor assistiveText = '';\n\n /** Turns the button into a link. */\n @property({ type: String })\n accessor href = '';\n\n /** Text for mobile \"Back\" button. */\n @property({ type: String })\n accessor backText = 'Back';\n\n /**\n * Queries any slotted HTML elements.\n * @ignore\n */\n @queryAssignedElements()\n accessor slottedElements!: Array<HTMLElement>;\n\n override render() {\n const classes = {\n menu: true,\n open: this.open,\n };\n\n const contentClasses = {\n menu__content: true,\n 'menu__content--left': this.anchorLeft,\n slotted: this.slottedElements.length,\n };\n\n return html`\n <div class=\"${classMap(classes)}\">\n ${this.href !== ''\n ? html`\n <a\n class=\"btn interactive\"\n href=${this.href}\n title=${this.label || this.assistiveText}\n aria-label=${this.label || this.assistiveText}\n @click=${this.handleClick}\n >\n <slot name=\"button\"></slot>\n\n ${!this.hideButtonLabel\n ? html`\n <span class=\"label\">\n ${this.label || this.assistiveText}\n </span>\n `\n : null}\n\n <span slot=\"button\" class=\"arrow\">\n ${unsafeSVG(chevronIcon)}\n </span>\n </a>\n `\n : html`\n <button\n class=\"btn interactive\"\n title=${this.label || this.assistiveText}\n aria-label=${this.label || this.assistiveText}\n @click=${this.handleClick}\n >\n <slot name=\"button\"></slot>\n\n ${!this.hideButtonLabel\n ? html`\n <span class=\"label\">\n ${this.label || this.assistiveText}\n </span>\n `\n : null}\n\n <span slot=\"button\" class=\"arrow\">\n ${unsafeSVG(chevronIcon)}\n </span>\n </button>\n `}\n\n <div class=${classMap(contentClasses)}>\n <button class=\"go-back\" @click=${() => this._handleBack()}>\n <span>${unsafeSVG(backIcon)}</span>\n ${this.backText}\n </button>\n\n ${!this.hideMenuLabel\n ? html`\n <div class=\"menu-label\">\n ${this.label || this.assistiveText}\n </div>\n `\n : null}\n\n <slot></slot>\n </div>\n </div>\n `;\n }\n\n private _handleBack() {\n this.open = false;\n }\n\n private handleClick() {\n this.open = !this.open;\n }\n\n private handleClickOut(e: Event) {\n if (!e.composedPath().includes(this)) {\n this.open = false;\n }\n }\n\n override willUpdate(changedProps: any) {\n if (changedProps.has('open')) {\n const event = new CustomEvent('on-flyout-toggle', {\n composed: true,\n bubbles: true,\n detail: { open: this.open },\n });\n this.dispatchEvent(event);\n }\n }\n\n override connectedCallback() {\n super.connectedCallback();\n\n document.addEventListener('click', (e) => this.handleClickOut(e));\n }\n\n override disconnectedCallback() {\n document.removeEventListener('click', (e) => this.handleClickOut(e));\n\n super.disconnectedCallback();\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kyn-header-flyout': HeaderFlyout;\n }\n}\n"],"names":["HeaderFlyout","customElement","LitElement","_classThis","_classSuper","open","__classPrivateFieldGet","this","_HeaderFlyout_open_accessor_storage","value","__classPrivateFieldSet","anchorLeft","_HeaderFlyout_anchorLeft_accessor_storage","hideArrow","_HeaderFlyout_hideArrow_accessor_storage","label","_HeaderFlyout_label_accessor_storage","hideMenuLabel","_HeaderFlyout_hideMenuLabel_accessor_storage","hideButtonLabel","_HeaderFlyout_hideButtonLabel_accessor_storage","assistiveText","_HeaderFlyout_assistiveText_accessor_storage","href","_HeaderFlyout_href_accessor_storage","backText","_HeaderFlyout_backText_accessor_storage","slottedElements","_HeaderFlyout_slottedElements_accessor_storage","render","classes","menu","contentClasses","menu__content","slotted","length","html","classMap","handleClick","unsafeSVG","chevronIcon","_handleBack","backIcon","handleClickOut","e","composedPath","includes","willUpdate","changedProps","has","event","CustomEvent","composed","bubbles","detail","dispatchEvent","connectedCallback","super","document","addEventListener","disconnectedCallback","removeEventListener","set","__runInitializers","_open_initializers","_open_extraInitializers","_anchorLeft_initializers","_anchorLeft_extraInitializers","_hideArrow_initializers","_hideArrow_extraInitializers","_label_initializers","_label_extraInitializers","_hideMenuLabel_initializers","_hideMenuLabel_extraInitializers","_hideButtonLabel_initializers","_hideButtonLabel_extraInitializers","_assistiveText_initializers","_assistiveText_extraInitializers","_href_initializers","_href_extraInitializers","_backText_initializers","_backText_extraInitializers","_slottedElements_initializers","property","type","Boolean","reflect","_anchorLeft_decorators","_hideArrow_decorators","_label_decorators","String","_hideMenuLabel_decorators","_hideButtonLabel_decorators","_assistiveText_decorators","_href_decorators","_backText_decorators","_slottedElements_decorators","queryAssignedElements","__esDecorate","_open_decorators","kind","name","static","private","access","obj","get","metadata","_metadata","_slottedElements_extraInitializers","_classDescriptor","_classDecorators","_classExtraInitializers","styles","unsafeCSS","HeaderFlyoutScss"],"mappings":"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"}
|
|
@@ -121,6 +121,7 @@ import{__setFunctionName as e,__esDecorate as t,__runInitializers as o,__classPr
|
|
|
121
121
|
border-radius: 8px;
|
|
122
122
|
background: var(--kd-color-background-container-default);
|
|
123
123
|
max-height: calc(100vh - var(--kd-header-reserved-space) - 16px);
|
|
124
|
+
min-width: 180px;
|
|
124
125
|
box-shadow: var(--kd-elevation-level-1);
|
|
125
126
|
}
|
|
126
127
|
.menu__content.left {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"headerFlyouts.js","sources":["../../../../src/components/global/header/headerFlyouts.ts"],"sourcesContent":["import { unsafeSVG } from 'lit-html/directives/unsafe-svg.js';\nimport { LitElement, html, unsafeCSS } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { querySelectorAllDeep } from 'query-selector-shadow-dom';\nimport HeaderFlyoutsScss from './headerFlyouts.scss?inline';\n\nimport overflowIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/20/overflow.svg';\n\n/**\n * Container for header-flyout components.\n * @slot unnamed - Slot for header-flyout components.\n */\n@customElement('kyn-header-flyouts')\nexport class HeaderFlyouts extends LitElement {\n static override styles = unsafeCSS(HeaderFlyoutsScss);\n\n /* Menu open state (small breakpoint). */\n @property({ type: Boolean })\n accessor open = false;\n\n override render() {\n return html`\n <div class=\"header-flyouts menu ${this.open ? 'open' : ''}\">\n <button\n class=\"btn interactive\"\n aria-label=\"Toggle Menu\"\n title=\"Toggle Menu\"\n @click=${() => this._toggleOpen()}\n >\n <span class=\"overflow-icon\">${unsafeSVG(overflowIcon)}</span>\n </button>\n\n <div class=\"menu__content\">\n <slot></slot>\n </div>\n </div>\n `;\n }\n\n private _toggleOpen() {\n this.open = !this.open;\n }\n\n private _handleClickOut(e: Event) {\n if (!e.composedPath().includes(this)) {\n this.open = false;\n }\n }\n\n private _handleFlyoutToggle() {\n this._emitFlyoutsToggle();\n }\n\n private _emitFlyoutsToggle() {\n const Flyouts: Array<any> = querySelectorAllDeep('kyn-header-flyout', this);\n\n const event = new CustomEvent('on-flyouts-toggle', {\n composed: true,\n bubbles: true,\n detail: {\n open: this.open,\n childrenOpen: Flyouts.some((flyout: any) => flyout.open),\n },\n });\n this.dispatchEvent(event);\n }\n\n override willUpdate(changedProps: any) {\n if (changedProps.has('open')) {\n this._emitFlyoutsToggle();\n }\n }\n\n override connectedCallback() {\n super.connectedCallback();\n\n document.addEventListener('click', (e) => this._handleClickOut(e));\n document.addEventListener('on-flyout-toggle', () =>\n this._handleFlyoutToggle()\n );\n }\n\n override disconnectedCallback() {\n document.removeEventListener('click', (e) => this._handleClickOut(e));\n document.removeEventListener('on-flyout-toggle', () =>\n this._handleFlyoutToggle()\n );\n\n super.disconnectedCallback();\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kyn-header-flyouts': HeaderFlyouts;\n }\n}\n"],"names":["HeaderFlyouts","customElement","LitElement","_classThis","_classSuper","open","__classPrivateFieldGet","this","_HeaderFlyouts_open_accessor_storage","value","__classPrivateFieldSet","render","html","_toggleOpen","unsafeSVG","overflowIcon","_handleClickOut","e","composedPath","includes","_handleFlyoutToggle","_emitFlyoutsToggle","Flyouts","querySelectorAllDeep","event","CustomEvent","composed","bubbles","detail","childrenOpen","some","flyout","dispatchEvent","willUpdate","changedProps","has","connectedCallback","super","document","addEventListener","disconnectedCallback","removeEventListener","set","__runInitializers","_open_initializers","_open_decorators","property","type","Boolean","__esDecorate","kind","name","static","private","access","obj","get","metadata","_metadata","_open_extraInitializers","_classDescriptor","_classDecorators","_classExtraInitializers","styles","unsafeCSS","HeaderFlyoutsScss"],"mappings":"
|
|
1
|
+
{"version":3,"file":"headerFlyouts.js","sources":["../../../../src/components/global/header/headerFlyouts.ts"],"sourcesContent":["import { unsafeSVG } from 'lit-html/directives/unsafe-svg.js';\nimport { LitElement, html, unsafeCSS } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { querySelectorAllDeep } from 'query-selector-shadow-dom';\nimport HeaderFlyoutsScss from './headerFlyouts.scss?inline';\n\nimport overflowIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/20/overflow.svg';\n\n/**\n * Container for header-flyout components.\n * @slot unnamed - Slot for header-flyout components.\n */\n@customElement('kyn-header-flyouts')\nexport class HeaderFlyouts extends LitElement {\n static override styles = unsafeCSS(HeaderFlyoutsScss);\n\n /* Menu open state (small breakpoint). */\n @property({ type: Boolean })\n accessor open = false;\n\n override render() {\n return html`\n <div class=\"header-flyouts menu ${this.open ? 'open' : ''}\">\n <button\n class=\"btn interactive\"\n aria-label=\"Toggle Menu\"\n title=\"Toggle Menu\"\n @click=${() => this._toggleOpen()}\n >\n <span class=\"overflow-icon\">${unsafeSVG(overflowIcon)}</span>\n </button>\n\n <div class=\"menu__content\">\n <slot></slot>\n </div>\n </div>\n `;\n }\n\n private _toggleOpen() {\n this.open = !this.open;\n }\n\n private _handleClickOut(e: Event) {\n if (!e.composedPath().includes(this)) {\n this.open = false;\n }\n }\n\n private _handleFlyoutToggle() {\n this._emitFlyoutsToggle();\n }\n\n private _emitFlyoutsToggle() {\n const Flyouts: Array<any> = querySelectorAllDeep('kyn-header-flyout', this);\n\n const event = new CustomEvent('on-flyouts-toggle', {\n composed: true,\n bubbles: true,\n detail: {\n open: this.open,\n childrenOpen: Flyouts.some((flyout: any) => flyout.open),\n },\n });\n this.dispatchEvent(event);\n }\n\n override willUpdate(changedProps: any) {\n if (changedProps.has('open')) {\n this._emitFlyoutsToggle();\n }\n }\n\n override connectedCallback() {\n super.connectedCallback();\n\n document.addEventListener('click', (e) => this._handleClickOut(e));\n document.addEventListener('on-flyout-toggle', () =>\n this._handleFlyoutToggle()\n );\n }\n\n override disconnectedCallback() {\n document.removeEventListener('click', (e) => this._handleClickOut(e));\n document.removeEventListener('on-flyout-toggle', () =>\n this._handleFlyoutToggle()\n );\n\n super.disconnectedCallback();\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kyn-header-flyouts': HeaderFlyouts;\n }\n}\n"],"names":["HeaderFlyouts","customElement","LitElement","_classThis","_classSuper","open","__classPrivateFieldGet","this","_HeaderFlyouts_open_accessor_storage","value","__classPrivateFieldSet","render","html","_toggleOpen","unsafeSVG","overflowIcon","_handleClickOut","e","composedPath","includes","_handleFlyoutToggle","_emitFlyoutsToggle","Flyouts","querySelectorAllDeep","event","CustomEvent","composed","bubbles","detail","childrenOpen","some","flyout","dispatchEvent","willUpdate","changedProps","has","connectedCallback","super","document","addEventListener","disconnectedCallback","removeEventListener","set","__runInitializers","_open_initializers","_open_decorators","property","type","Boolean","__esDecorate","kind","name","static","private","access","obj","get","metadata","_metadata","_open_extraInitializers","_classDescriptor","_classDecorators","_classExtraInitializers","styles","unsafeCSS","HeaderFlyoutsScss"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAaaA,EAAa,yBADzBC,EAAc,8BACoBC,mBAARC,EAAA,cAAQC,EAKjC,QAASC,GAAI,OAAAC,EAAAC,KAAAC,EAAA,IAAA,CAAb,QAASH,CAAII,GAAAC,EAAAH,KAAAC,EAAAC,EAAA,IAAA,CAEJ,MAAAE,GACP,OAAOC,CAAI;wCACyBL,KAAKF,KAAO,OAAS;;;;;mBAK1C,IAAME,KAAKM;;wCAEUC,EAAUC;;;;;;;MAUxC,WAAAF,GACNN,KAAKF,MAAQE,KAAKF,KAGZ,eAAAW,CAAgBC,GACjBA,EAAEC,eAAeC,SAASZ,QAC7BA,KAAKF,MAAO,GAIR,mBAAAe,GACNb,KAAKc,qBAGC,kBAAAA,GACN,MAAMC,EAAsBC,EAAqB,oBAAqBhB,MAEhEiB,EAAQ,IAAIC,YAAY,oBAAqB,CACjDC,UAAU,EACVC,SAAS,EACTC,OAAQ,CACNvB,KAAME,KAAKF,KACXwB,aAAcP,EAAQQ,MAAMC,GAAgBA,EAAO1B,UAGvDE,KAAKyB,cAAcR,GAGZ,UAAAS,CAAWC,GACdA,EAAaC,IAAI,SACnB5B,KAAKc,qBAIA,iBAAAe,GACPC,MAAMD,oBAENE,SAASC,iBAAiB,SAAUtB,GAAMV,KAAKS,gBAAgBC,KAC/DqB,SAASC,iBAAiB,oBAAoB,IAC5ChC,KAAKa,wBAIA,oBAAAoB,GACPF,SAASG,oBAAoB,SAAUxB,GAAMV,KAAKS,gBAAgBC,KAClEqB,SAASG,oBAAoB,oBAAoB,IAC/ClC,KAAKa,wBAGPiB,MAAMG,yDAtEChC,EAAAkC,IAAAnC,KAAAoC,EAAApC,KAAAqC,GAAO,yLADfC,EAAA,CAAAC,EAAS,CAAEC,KAAMC,WAClBC,EAAA9C,EAAA,KAAA0C,EAAA,CAAAK,KAAA,WAAAC,KAAA,OAAAC,QAAA,EAAAC,SAAA,EAAAC,OAAA,CAAAnB,IAAAoB,GAAA,SAAAA,EAAAC,IAAAD,GAAAA,EAASlD,KAAIqC,IAAA,CAAAa,EAAA9C,KAAA8C,EAAJlD,KAAII,CAAA,GAAAgD,SAAAC,GAAAd,EAAAe,GALfV,EAAA,KAAAW,EAAA,CAAAnD,MAAAN,GAAA0D,EAAA,CAAAX,KAAA,QAAAC,KAAAhD,EAAAgD,KAAAM,SAAAC,GAAA,KAAAI,iHACkB3D,EAAA4D,OAASC,EAAUC,GADxBtB,EAAAxC,EAAA2D,MAAa"}
|
|
@@ -121,6 +121,7 @@ import{__setFunctionName as e,__esDecorate as t,__runInitializers as i,__classPr
|
|
|
121
121
|
border-radius: 8px;
|
|
122
122
|
background: var(--kd-color-background-container-default);
|
|
123
123
|
max-height: calc(100vh - var(--kd-header-reserved-space) - 16px);
|
|
124
|
+
min-width: 180px;
|
|
124
125
|
box-shadow: var(--kd-elevation-level-1);
|
|
125
126
|
}
|
|
126
127
|
.menu__content.left {
|
|
@@ -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":"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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 { 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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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{__setFunctionName as e,__esDecorate as t,__runInitializers as i,__classPrivateFieldGet as o,__classPrivateFieldSet as r}from"tslib";import{unsafeSVG as
|
|
1
|
+
import{__setFunctionName as e,__esDecorate as t,__runInitializers as i,__classPrivateFieldGet as o,__classPrivateFieldSet as r}from"tslib";import{unsafeSVG as n}from"lit-html/directives/unsafe-svg.js";import{css as a,LitElement as s,unsafeCSS as l,html as d}from"lit";import{customElement as c,state as u,property as m}from"lit/decorators.js";import{classMap as h}from"lit/directives/class-map.js";import{querySelectorAllDeep as p,querySelectorDeep as g}from"query-selector-shadow-dom";import{k as v,m as b}from"../../../vendor/@kyndryl-design-system/shidoka-icons-Bn8RHT_T.js";var k=a`*,
|
|
2
2
|
*::before,
|
|
3
3
|
*::after {
|
|
4
4
|
box-sizing: border-box;
|
|
@@ -121,6 +121,7 @@ import{__setFunctionName as e,__esDecorate as t,__runInitializers as i,__classPr
|
|
|
121
121
|
border-radius: 8px;
|
|
122
122
|
background: var(--kd-color-background-container-default);
|
|
123
123
|
max-height: calc(100vh - var(--kd-header-reserved-space) - 16px);
|
|
124
|
+
min-width: 180px;
|
|
124
125
|
box-shadow: var(--kd-elevation-level-1);
|
|
125
126
|
}
|
|
126
127
|
.menu__content.left {
|
|
@@ -251,7 +252,7 @@ import{__setFunctionName as e,__esDecorate as t,__runInitializers as i,__classPr
|
|
|
251
252
|
.menu__content {
|
|
252
253
|
width: 230px;
|
|
253
254
|
}
|
|
254
|
-
}`;let f=(()=>{var
|
|
255
|
+
}`;let f=(()=>{var a,f,x;let y,w,_,O,C,z=[c("kyn-header-nav")],j=[],M=s,S=[],$=[],E=[],H=[],L=[],V=[];return w=class extends M{constructor(){super(...arguments),a.set(this,i(this,S,!1)),f.set(this,(i(this,$),i(this,E,"left"))),x.set(this,(i(this,H),i(this,L,!1))),this._attrObserver=i(this,V),this._boundHandleClickOut=e=>this._handleClickOut(e)}get menuOpen(){return o(this,a,"f")}set menuOpen(e){r(this,a,e,"f")}get slot(){return o(this,f,"f")}set slot(e){r(this,f,e,"f")}get hasCategories(){return o(this,x,"f")}set hasCategories(e){r(this,x,e,"f")}get _isDesktop(){return"undefined"==typeof window||window.innerWidth>=672}render(){const e={"header-nav":!0,menu:!0,open:this.menuOpen},t={menu__content:!0,left:!0,"categories-open":this.hasCategories};return d`
|
|
255
256
|
<div class=${h(e)}>
|
|
256
257
|
<button
|
|
257
258
|
class="btn interactive"
|
|
@@ -259,12 +260,12 @@ import{__setFunctionName as e,__esDecorate as t,__runInitializers as i,__classPr
|
|
|
259
260
|
title="Toggle Menu"
|
|
260
261
|
@click=${()=>this._toggleMenuOpen()}
|
|
261
262
|
>
|
|
262
|
-
${this.menuOpen?d`<span>${
|
|
263
|
+
${this.menuOpen?d`<span>${n(v)}</span>`:d`<span>${n(b)}</span>`}
|
|
263
264
|
</button>
|
|
264
265
|
|
|
265
266
|
<div class=${h(t)}>
|
|
266
267
|
<slot @slotchange=${this._handleSlotChange}></slot>
|
|
267
268
|
</div>
|
|
268
269
|
</div>
|
|
269
|
-
`}_toggleMenuOpen(){this.menuOpen=!this.menuOpen}_updateCategoriesVisibility(){const e=p("kyn-header-link",this),t=Array.from(e).some((e=>e.hasAttribute("open")||e.hasAttribute("isactive"))),i=Boolean(g("kyn-header-categories",this)),o=t||i;this.hasCategories!==o&&(this.hasCategories=o)}_handleSlotChange(){this._updateCategoriesVisibility()}_handleClickOut(e){e.composedPath().includes(this)||(this.menuOpen=!1)}firstUpdated(e){this._updateCategoriesVisibility()}willUpdate(e){var t;if(e.has("menuOpen")){const e={open:this.menuOpen};this.dispatchEvent(new CustomEvent("on-nav-toggle",{composed:!0,bubbles:!0,detail:e})),null===(t=this.ownerDocument)||void 0===t||t.dispatchEvent(new CustomEvent("on-nav-toggle",{detail:e}))}}updated(e){e.has("hasCategories")&&this.classList.toggle("categories-open",this.hasCategories)}connectedCallback(){super.connectedCallback(),document.addEventListener("click",this._boundHandleClickOut),this._attrObserver=new MutationObserver((()=>{this._updateCategoriesVisibility()})),this._attrObserver.observe(this,{attributes:!0,subtree:!0,attributeFilter:["open"],childList:!0})}disconnectedCallback(){document.removeEventListener("click",this._boundHandleClickOut),this._attrObserver&&(this._attrObserver.disconnect(),this._attrObserver=void 0),super.disconnectedCallback()}},
|
|
270
|
+
`}_toggleMenuOpen(){this.menuOpen=!this.menuOpen}_updateCategoriesVisibility(){const e=p("kyn-header-link",this),t=Array.from(e).some((e=>e.hasAttribute("open")||e.hasAttribute("isactive"))),i=Boolean(g("kyn-header-categories",this)),o=t||i;this.hasCategories!==o&&(this.hasCategories=o)}_handleSlotChange(){this._updateCategoriesVisibility()}_handleClickOut(e){e.composedPath().includes(this)||(this.menuOpen=!1)}firstUpdated(e){this._updateCategoriesVisibility()}willUpdate(e){var t;if(e.has("menuOpen")){const e={open:this.menuOpen};this.dispatchEvent(new CustomEvent("on-nav-toggle",{composed:!0,bubbles:!0,detail:e})),null===(t=this.ownerDocument)||void 0===t||t.dispatchEvent(new CustomEvent("on-nav-toggle",{detail:e}))}}updated(e){e.has("hasCategories")&&this.classList.toggle("categories-open",this.hasCategories)}connectedCallback(){super.connectedCallback(),document.addEventListener("click",this._boundHandleClickOut),this._attrObserver=new MutationObserver((()=>{this._updateCategoriesVisibility()})),this._attrObserver.observe(this,{attributes:!0,subtree:!0,attributeFilter:["open"],childList:!0})}disconnectedCallback(){document.removeEventListener("click",this._boundHandleClickOut),this._attrObserver&&(this._attrObserver.disconnect(),this._attrObserver=void 0),super.disconnectedCallback()}},a=new WeakMap,f=new WeakMap,x=new WeakMap,e(w,"HeaderNav"),(()=>{var e;const i="function"==typeof Symbol&&Symbol.metadata?Object.create(null!==(e=M[Symbol.metadata])&&void 0!==e?e:null):void 0;_=[u()],O=[m({type:String,reflect:!0})],C=[u()],t(w,null,_,{kind:"accessor",name:"menuOpen",static:!1,private:!1,access:{has:e=>"menuOpen"in e,get:e=>e.menuOpen,set:(e,t)=>{e.menuOpen=t}},metadata:i},S,$),t(w,null,O,{kind:"accessor",name:"slot",static:!1,private:!1,access:{has:e=>"slot"in e,get:e=>e.slot,set:(e,t)=>{e.slot=t}},metadata:i},E,H),t(w,null,C,{kind:"accessor",name:"hasCategories",static:!1,private:!1,access:{has:e=>"hasCategories"in e,get:e=>e.hasCategories,set:(e,t)=>{e.hasCategories=t}},metadata:i},L,V),t(null,y={value:w},z,{kind:"class",name:w.name,metadata:i},null,j),w=y.value,i&&Object.defineProperty(w,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:i})})(),w.styles=l(k),i(w,j),w})();export{f as HeaderNav};
|
|
270
271
|
//# sourceMappingURL=headerNav.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"headerNav.js","sources":["../../../../src/components/global/header/headerNav.ts"],"sourcesContent":["import { unsafeSVG } from 'lit-html/directives/unsafe-svg.js';\nimport { LitElement, html, unsafeCSS, type PropertyValueMap } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport {\n querySelectorAllDeep,\n querySelectorDeep,\n} from 'query-selector-shadow-dom';\nimport HeaderNavScss from './headerNav.scss?inline';\n\nimport menuIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/20/hamburger-menu.svg';\nimport closeIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/20/close-simple.svg';\n\n/**\n * Container for header navigation links.\n * @slot unnamed - This element has a slot.\n */\n@customElement('kyn-header-nav')\nexport class HeaderNav extends LitElement {\n static override styles = unsafeCSS(HeaderNavScss);\n\n /** Small screen header nav visibility.\n * @ignore\n */\n @state()\n accessor menuOpen = false;\n\n /** Force correct slot\n * @internal\n */\n @property({ type: String, reflect: true })\n override accessor slot = 'left';\n\n /** Boolean value reflecting whether the navigation has categories.\n * @internal\n */\n @state()\n accessor hasCategories = false;\n\n /** Mutation observer for attribute changes.\n * @internal\n */\n private _attrObserver?: MutationObserver;\n\n /** Bound document click handler to allow proper add/remove of listener\n * @internal\n */\n private _boundHandleClickOut = (e: Event) => this._handleClickOut(e);\n\n /** @internal */\n private get _isDesktop(): boolean {\n if (typeof window === 'undefined') return true;\n return window.innerWidth >= 672;\n }\n\n override render() {\n const classes = {\n 'header-nav': true,\n menu: true,\n open: this.menuOpen,\n };\n\n const menuContentClasses = {\n menu__content: true,\n left: true,\n 'categories-open': this.hasCategories,\n };\n\n return html`\n <div class=${classMap(classes)}>\n <button\n class=\"btn interactive\"\n aria-label=\"Toggle Menu\"\n title=\"Toggle Menu\"\n @click=${() => this._toggleMenuOpen()}\n >\n ${this.menuOpen\n ? html`<span>${unsafeSVG(closeIcon)}</span>`\n : html`<span>${unsafeSVG(menuIcon)}</span>`}\n </button>\n\n <div class=${classMap(menuContentClasses)}>\n <slot @slotchange=${this._handleSlotChange}></slot>\n </div>\n </div>\n `;\n }\n\n private _toggleMenuOpen() {\n this.menuOpen = !this.menuOpen;\n }\n\n private _updateCategoriesVisibility(): void {\n const links = querySelectorAllDeep('kyn-header-link', this);\n\n const hasOpenCategory = Array.from(links).some((link) => {\n return link.hasAttribute('open') || link.hasAttribute('isactive');\n });\n\n const hasCategoriesElement = Boolean(\n querySelectorDeep('kyn-header-categories', this)\n );\n\n const nextHasCategories = hasOpenCategory || hasCategoriesElement;\n\n if (this.hasCategories !== nextHasCategories) {\n this.hasCategories = nextHasCategories;\n }\n }\n\n private _handleSlotChange() {\n this._updateCategoriesVisibility();\n }\n\n private _handleClickOut(e: Event) {\n if (!e.composedPath().includes(this)) {\n this.menuOpen = false;\n }\n }\n\n protected override firstUpdated(_changed: PropertyValueMap<this>): void {\n this._updateCategoriesVisibility();\n }\n\n override willUpdate(changedProps: PropertyValueMap<this>): void {\n if (changedProps.has('menuOpen')) {\n const detail = { open: this.menuOpen };\n\n this.dispatchEvent(\n new CustomEvent('on-nav-toggle', {\n composed: true,\n bubbles: true,\n detail,\n })\n );\n\n // dispatch to document for other components to listen\n this.ownerDocument?.dispatchEvent(\n new CustomEvent('on-nav-toggle', { detail })\n );\n }\n }\n\n override updated(changedProps: PropertyValueMap<this>): void {\n if (changedProps.has('hasCategories')) {\n this.classList.toggle('categories-open', this.hasCategories);\n }\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n document.addEventListener('click', this._boundHandleClickOut);\n\n this._attrObserver = new MutationObserver(() => {\n this._updateCategoriesVisibility();\n });\n\n this._attrObserver.observe(this, {\n attributes: true,\n subtree: true,\n attributeFilter: ['open'],\n childList: true,\n });\n }\n\n override disconnectedCallback(): void {\n document.removeEventListener('click', this._boundHandleClickOut);\n\n if (this._attrObserver) {\n this._attrObserver.disconnect();\n this._attrObserver = undefined;\n }\n\n super.disconnectedCallback();\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kyn-header-nav': HeaderNav;\n }\n}\n"],"names":["HeaderNav","customElement","LitElement","_classThis","_classSuper","_HeaderNav_menuOpen_accessor_storage","set","this","__runInitializers","_menuOpen_initializers","_HeaderNav_slot_accessor_storage","_menuOpen_extraInitializers","_slot_initializers","_HeaderNav_hasCategories_accessor_storage","_slot_extraInitializers","_hasCategories_initializers","_attrObserver","_hasCategories_extraInitializers","_boundHandleClickOut","e","_handleClickOut","menuOpen","__classPrivateFieldGet","value","__classPrivateFieldSet","slot","hasCategories","_isDesktop","window","innerWidth","render","classes","menu","open","menuContentClasses","menu__content","left","html","classMap","_toggleMenuOpen","unsafeSVG","closeIcon","menuIcon","_handleSlotChange","_updateCategoriesVisibility","links","querySelectorAllDeep","hasOpenCategory","Array","from","some","link","hasAttribute","hasCategoriesElement","Boolean","querySelectorDeep","nextHasCategories","composedPath","includes","firstUpdated","_changed","willUpdate","changedProps","has","detail","dispatchEvent","CustomEvent","composed","bubbles","_a","ownerDocument","updated","classList","toggle","connectedCallback","super","document","addEventListener","MutationObserver","observe","attributes","subtree","attributeFilter","childList","disconnectedCallback","removeEventListener","disconnect","undefined","_menuOpen_decorators","state","property","type","String","reflect","_hasCategories_decorators","__esDecorate","kind","name","static","private","access","obj","get","metadata","_metadata","_slot_decorators","_classDescriptor","_classDecorators","_classExtraInitializers","styles","unsafeCSS","HeaderNavScss"],"mappings":"
|
|
1
|
+
{"version":3,"file":"headerNav.js","sources":["../../../../src/components/global/header/headerNav.ts"],"sourcesContent":["import { unsafeSVG } from 'lit-html/directives/unsafe-svg.js';\nimport { LitElement, html, unsafeCSS, type PropertyValueMap } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport {\n querySelectorAllDeep,\n querySelectorDeep,\n} from 'query-selector-shadow-dom';\nimport HeaderNavScss from './headerNav.scss?inline';\n\nimport menuIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/20/hamburger-menu.svg';\nimport closeIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/20/close-simple.svg';\n\n/**\n * Container for header navigation links.\n * @slot unnamed - This element has a slot.\n */\n@customElement('kyn-header-nav')\nexport class HeaderNav extends LitElement {\n static override styles = unsafeCSS(HeaderNavScss);\n\n /** Small screen header nav visibility.\n * @ignore\n */\n @state()\n accessor menuOpen = false;\n\n /** Force correct slot\n * @internal\n */\n @property({ type: String, reflect: true })\n override accessor slot = 'left';\n\n /** Boolean value reflecting whether the navigation has categories.\n * @internal\n */\n @state()\n accessor hasCategories = false;\n\n /** Mutation observer for attribute changes.\n * @internal\n */\n private _attrObserver?: MutationObserver;\n\n /** Bound document click handler to allow proper add/remove of listener\n * @internal\n */\n private _boundHandleClickOut = (e: Event) => this._handleClickOut(e);\n\n /** @internal */\n private get _isDesktop(): boolean {\n if (typeof window === 'undefined') return true;\n return window.innerWidth >= 672;\n }\n\n override render() {\n const classes = {\n 'header-nav': true,\n menu: true,\n open: this.menuOpen,\n };\n\n const menuContentClasses = {\n menu__content: true,\n left: true,\n 'categories-open': this.hasCategories,\n };\n\n return html`\n <div class=${classMap(classes)}>\n <button\n class=\"btn interactive\"\n aria-label=\"Toggle Menu\"\n title=\"Toggle Menu\"\n @click=${() => this._toggleMenuOpen()}\n >\n ${this.menuOpen\n ? html`<span>${unsafeSVG(closeIcon)}</span>`\n : html`<span>${unsafeSVG(menuIcon)}</span>`}\n </button>\n\n <div class=${classMap(menuContentClasses)}>\n <slot @slotchange=${this._handleSlotChange}></slot>\n </div>\n </div>\n `;\n }\n\n private _toggleMenuOpen() {\n this.menuOpen = !this.menuOpen;\n }\n\n private _updateCategoriesVisibility(): void {\n const links = querySelectorAllDeep('kyn-header-link', this);\n\n const hasOpenCategory = Array.from(links).some((link) => {\n return link.hasAttribute('open') || link.hasAttribute('isactive');\n });\n\n const hasCategoriesElement = Boolean(\n querySelectorDeep('kyn-header-categories', this)\n );\n\n const nextHasCategories = hasOpenCategory || hasCategoriesElement;\n\n if (this.hasCategories !== nextHasCategories) {\n this.hasCategories = nextHasCategories;\n }\n }\n\n private _handleSlotChange() {\n this._updateCategoriesVisibility();\n }\n\n private _handleClickOut(e: Event) {\n if (!e.composedPath().includes(this)) {\n this.menuOpen = false;\n }\n }\n\n protected override firstUpdated(_changed: PropertyValueMap<this>): void {\n this._updateCategoriesVisibility();\n }\n\n override willUpdate(changedProps: PropertyValueMap<this>): void {\n if (changedProps.has('menuOpen')) {\n const detail = { open: this.menuOpen };\n\n this.dispatchEvent(\n new CustomEvent('on-nav-toggle', {\n composed: true,\n bubbles: true,\n detail,\n })\n );\n\n // dispatch to document for other components to listen\n this.ownerDocument?.dispatchEvent(\n new CustomEvent('on-nav-toggle', { detail })\n );\n }\n }\n\n override updated(changedProps: PropertyValueMap<this>): void {\n if (changedProps.has('hasCategories')) {\n this.classList.toggle('categories-open', this.hasCategories);\n }\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n document.addEventListener('click', this._boundHandleClickOut);\n\n this._attrObserver = new MutationObserver(() => {\n this._updateCategoriesVisibility();\n });\n\n this._attrObserver.observe(this, {\n attributes: true,\n subtree: true,\n attributeFilter: ['open'],\n childList: true,\n });\n }\n\n override disconnectedCallback(): void {\n document.removeEventListener('click', this._boundHandleClickOut);\n\n if (this._attrObserver) {\n this._attrObserver.disconnect();\n this._attrObserver = undefined;\n }\n\n super.disconnectedCallback();\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kyn-header-nav': HeaderNav;\n }\n}\n"],"names":["HeaderNav","customElement","LitElement","_classThis","_classSuper","_HeaderNav_menuOpen_accessor_storage","set","this","__runInitializers","_menuOpen_initializers","_HeaderNav_slot_accessor_storage","_menuOpen_extraInitializers","_slot_initializers","_HeaderNav_hasCategories_accessor_storage","_slot_extraInitializers","_hasCategories_initializers","_attrObserver","_hasCategories_extraInitializers","_boundHandleClickOut","e","_handleClickOut","menuOpen","__classPrivateFieldGet","value","__classPrivateFieldSet","slot","hasCategories","_isDesktop","window","innerWidth","render","classes","menu","open","menuContentClasses","menu__content","left","html","classMap","_toggleMenuOpen","unsafeSVG","closeIcon","menuIcon","_handleSlotChange","_updateCategoriesVisibility","links","querySelectorAllDeep","hasOpenCategory","Array","from","some","link","hasAttribute","hasCategoriesElement","Boolean","querySelectorDeep","nextHasCategories","composedPath","includes","firstUpdated","_changed","willUpdate","changedProps","has","detail","dispatchEvent","CustomEvent","composed","bubbles","_a","ownerDocument","updated","classList","toggle","connectedCallback","super","document","addEventListener","MutationObserver","observe","attributes","subtree","attributeFilter","childList","disconnectedCallback","removeEventListener","disconnect","undefined","_menuOpen_decorators","state","property","type","String","reflect","_hasCategories_decorators","__esDecorate","kind","name","static","private","access","obj","get","metadata","_metadata","_slot_decorators","_classDescriptor","_classDecorators","_classExtraInitializers","styles","unsafeCSS","HeaderNavScss"],"mappings":"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"}
|
|
@@ -46,8 +46,14 @@ export declare class IconSelector extends LitElement {
|
|
|
46
46
|
accessor animateSelection: boolean;
|
|
47
47
|
/** @internal Resolved flags (prop OR inherited CSS custom property). */
|
|
48
48
|
private _shouldAnimate;
|
|
49
|
+
/** @internal Resolved flags (prop OR inherited CSS custom property). */
|
|
49
50
|
private _shouldOnlyVisibleOnHover;
|
|
51
|
+
/** @internal Resolved flags (prop OR inherited CSS custom property). */
|
|
50
52
|
private _shouldPersistWhenChecked;
|
|
53
|
+
/** @internal Suppresses opacity transition until initial state is painted. */
|
|
54
|
+
private _transitionsReady;
|
|
55
|
+
/** @internal Set on user interaction so animation only plays on deliberate toggles. */
|
|
56
|
+
private _justToggled;
|
|
51
57
|
render(): import("lit-html").TemplateResult<1>;
|
|
52
58
|
private _handleClick;
|
|
53
59
|
private _handleKeydown;
|
|
@@ -59,12 +65,14 @@ export declare class IconSelector extends LitElement {
|
|
|
59
65
|
*/
|
|
60
66
|
private _handleHostClick;
|
|
61
67
|
firstUpdated(): void;
|
|
62
|
-
|
|
68
|
+
updated(): void;
|
|
63
69
|
private _readCSSFlags;
|
|
64
70
|
willUpdate(changedProps: Map<string, unknown>): void;
|
|
65
71
|
/** @internal Cached CSS custom property values (read once in firstUpdated). */
|
|
66
72
|
private _cssAnimate;
|
|
73
|
+
/** @internal Cached CSS custom property values (read once in firstUpdated). */
|
|
67
74
|
private _cssOnlyVisibleOnHover;
|
|
75
|
+
/** @internal Cached CSS custom property values (read once in firstUpdated). */
|
|
68
76
|
private _cssPersistWhenChecked;
|
|
69
77
|
private _resolveFlags;
|
|
70
78
|
connectedCallback(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"iconSelector.d.ts","sourceRoot":"","sources":["../../../../src/components/reusable/iconSelector/iconSelector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAmB,MAAM,KAAK,CAAC;AASlD;;;;;;;GAOG;AACH,qBACa,YAAa,SAAQ,UAAU;IAC1C,OAAgB,MAAM,0BAA+B;IAErD,cAAc;IACd,OAAgB,iBAAiB;;;;;MAG/B;IAEF,8BAA8B;IAE9B,QAAQ,CAAC,OAAO,UAAS;IAEzB,4EAA4E;IAE5E,QAAQ,CAAC,KAAK,SAAM;IAEpB,qCAAqC;IAErC,QAAQ,CAAC,YAAY,SAA2B;IAEhD,uCAAuC;IAEvC,QAAQ,CAAC,cAAc,SAAsB;IAE7C,sBAAsB;IAEtB,QAAQ,CAAC,QAAQ,UAAS;IAE1B;;;;OAIG;IAEH,QAAQ,CAAC,kBAAkB,UAAS;IAEpC;;;;OAIG;IAEH,QAAQ,CAAC,kBAAkB,UAAS;IAEpC;;;;OAIG;IAEH,QAAQ,CAAC,gBAAgB,UAAS;IAElC,wEAAwE;IACxE,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,yBAAyB,CAAS;IAC1C,OAAO,CAAC,yBAAyB,CAAS;
|
|
1
|
+
{"version":3,"file":"iconSelector.d.ts","sourceRoot":"","sources":["../../../../src/components/reusable/iconSelector/iconSelector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAmB,MAAM,KAAK,CAAC;AASlD;;;;;;;GAOG;AACH,qBACa,YAAa,SAAQ,UAAU;IAC1C,OAAgB,MAAM,0BAA+B;IAErD,cAAc;IACd,OAAgB,iBAAiB;;;;;MAG/B;IAEF,8BAA8B;IAE9B,QAAQ,CAAC,OAAO,UAAS;IAEzB,4EAA4E;IAE5E,QAAQ,CAAC,KAAK,SAAM;IAEpB,qCAAqC;IAErC,QAAQ,CAAC,YAAY,SAA2B;IAEhD,uCAAuC;IAEvC,QAAQ,CAAC,cAAc,SAAsB;IAE7C,sBAAsB;IAEtB,QAAQ,CAAC,QAAQ,UAAS;IAE1B;;;;OAIG;IAEH,QAAQ,CAAC,kBAAkB,UAAS;IAEpC;;;;OAIG;IAEH,QAAQ,CAAC,kBAAkB,UAAS;IAEpC;;;;OAIG;IAEH,QAAQ,CAAC,gBAAgB,UAAS;IAElC,wEAAwE;IACxE,OAAO,CAAC,cAAc,CAAS;IAC/B,wEAAwE;IACxE,OAAO,CAAC,yBAAyB,CAAS;IAC1C,wEAAwE;IACxE,OAAO,CAAC,yBAAyB,CAAS;IAE1C,8EAA8E;IAC9E,OAAO,CAAC,iBAAiB,CAAS;IAElC,uFAAuF;IACvF,OAAO,CAAC,YAAY,CAAS;IAEpB,MAAM;IAmCf,OAAO,CAAC,YAAY;IAWpB,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,WAAW;IAcnB;;;;OAIG;IACH,OAAO,CAAC,gBAAgB,CAEtB;IAEO,YAAY;IAOZ,OAAO;IAYhB,OAAO,CAAC,aAAa;IAeZ,UAAU,CAAC,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAUtD,+EAA+E;IAC/E,OAAO,CAAC,WAAW,CAAS;IAE5B,+EAA+E;IAC/E,OAAO,CAAC,sBAAsB,CAAS;IAEvC,+EAA+E;IAC/E,OAAO,CAAC,sBAAsB,CAAS;IAEvC,OAAO,CAAC,aAAa;IAQZ,iBAAiB;IASjB,oBAAoB;CAI9B;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,mBAAmB,EAAE,YAAY,CAAC;KACnC;CACF"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{__setFunctionName as e,__esDecorate as t,__runInitializers as s,__classPrivateFieldGet as i,__classPrivateFieldSet as
|
|
1
|
+
import{__setFunctionName as e,__esDecorate as t,__runInitializers as s,__classPrivateFieldGet as i,__classPrivateFieldSet as n}from"tslib";import{css as c,LitElement as a,unsafeCSS as o,html as l}from"lit";import{customElement as r,property as h}from"lit/decorators.js";import{classMap as d}from"lit-html/directives/class-map.js";import{unsafeSVG as k}from"lit-html/directives/unsafe-svg.js";import{a1 as p,a2 as m}from"../../../vendor/@kyndryl-design-system/shidoka-icons-Bn8RHT_T.js";var u=c`*,
|
|
2
2
|
*::before,
|
|
3
3
|
*::after {
|
|
4
4
|
box-sizing: border-box;
|
|
@@ -53,6 +53,8 @@ import{__setFunctionName as e,__esDecorate as t,__runInitializers as s,__classPr
|
|
|
53
53
|
}
|
|
54
54
|
.icon-selector.only-visible-on-hover {
|
|
55
55
|
opacity: var(--kyn-icon-selector-hover-opacity, 0);
|
|
56
|
+
}
|
|
57
|
+
.icon-selector.only-visible-on-hover.transitions-ready {
|
|
56
58
|
transition: opacity 150ms ease-out;
|
|
57
59
|
}
|
|
58
60
|
.icon-selector.only-visible-on-hover.persist-when-checked.icon-selector--checked {
|
|
@@ -108,6 +110,8 @@ import{__setFunctionName as e,__esDecorate as t,__runInitializers as s,__classPr
|
|
|
108
110
|
display: flex;
|
|
109
111
|
opacity: 1;
|
|
110
112
|
transform: scale(1);
|
|
113
|
+
}
|
|
114
|
+
.animate-selection.just-toggled .icon-selector--checked .icon--checked, .animate-selection.just-toggled.icon-selector--checked .icon--checked {
|
|
111
115
|
animation: icon-pop 450ms cubic-bezier(0.34, 1.56, 0.64, 1);
|
|
112
116
|
}
|
|
113
117
|
|
|
@@ -127,7 +131,7 @@ import{__setFunctionName as e,__esDecorate as t,__runInitializers as s,__classPr
|
|
|
127
131
|
transform: scale(1);
|
|
128
132
|
opacity: 1;
|
|
129
133
|
}
|
|
130
|
-
}`;let
|
|
134
|
+
}`;let y=(()=>{var c,y,b,v,g,f,_,C;let O,S,W,w,x,H,j,L,V,P,F=[r("kyn-icon-selector")],$=[],A=a,M=[],R=[],E=[],B=[],T=[],U=[],q=[],z=[],D=[],K=[],I=[],G=[],J=[],N=[],Q=[],X=[];return S=class extends A{constructor(){super(...arguments),c.set(this,s(this,M,!1)),y.set(this,(s(this,R),s(this,E,""))),b.set(this,(s(this,B),s(this,T,"Remove from favorites"))),v.set(this,(s(this,U),s(this,q,"Add to favorites"))),g.set(this,(s(this,z),s(this,D,!1))),f.set(this,(s(this,K),s(this,I,!1))),_.set(this,(s(this,G),s(this,J,!1))),C.set(this,(s(this,N),s(this,Q,!1))),this._shouldAnimate=(s(this,X),!1),this._shouldOnlyVisibleOnHover=!1,this._shouldPersistWhenChecked=!1,this._transitionsReady=!1,this._justToggled=!1,this._handleHostClick=e=>{e.stopPropagation()},this._cssAnimate=!1,this._cssOnlyVisibleOnHover=!1,this._cssPersistWhenChecked=!1}get checked(){return i(this,c,"f")}set checked(e){n(this,c,e,"f")}get value(){return i(this,y,"f")}set value(e){n(this,y,e,"f")}get checkedLabel(){return i(this,b,"f")}set checkedLabel(e){n(this,b,e,"f")}get uncheckedLabel(){return i(this,v,"f")}set uncheckedLabel(e){n(this,v,e,"f")}get disabled(){return i(this,g,"f")}set disabled(e){n(this,g,e,"f")}get onlyVisibleOnHover(){return i(this,f,"f")}set onlyVisibleOnHover(e){n(this,f,e,"f")}get persistWhenChecked(){return i(this,_,"f")}set persistWhenChecked(e){n(this,_,e,"f")}get animateSelection(){return i(this,C,"f")}set animateSelection(e){n(this,C,e,"f")}render(){const e={"icon-selector":!0,"icon-selector--checked":this.checked,"only-visible-on-hover":this._shouldOnlyVisibleOnHover,"persist-when-checked":this._shouldPersistWhenChecked,"animate-selection":this._shouldAnimate,"transitions-ready":this._transitionsReady,"just-toggled":this._justToggled},t=this.checked?this.checkedLabel:this.uncheckedLabel;return l`
|
|
131
135
|
<button
|
|
132
136
|
type="button"
|
|
133
137
|
class=${d(e)}
|
|
@@ -146,5 +150,5 @@ import{__setFunctionName as e,__esDecorate as t,__runInitializers as s,__classPr
|
|
|
146
150
|
<slot name="icon-checked">${k(m)}</slot>
|
|
147
151
|
</span>
|
|
148
152
|
</button>
|
|
149
|
-
`}_handleClick(e){this.disabled||(e.preventDefault(),e.stopPropagation(),this.checked=!this.checked,this._emitChange(e))}_handleKeydown(e){this.disabled||" "!==e.key&&"Enter"!==e.key||(e.preventDefault(),e.stopPropagation(),this.checked=!this.checked,this._emitChange(e))}_emitChange(e){this.dispatchEvent(new CustomEvent("on-change",{bubbles:!0,composed:!0,detail:{checked:this.checked,value:this.value,origEvent:e}}))}firstUpdated(){this.
|
|
153
|
+
`}_handleClick(e){this.disabled||(e.preventDefault(),e.stopPropagation(),this.checked=!this.checked,this._justToggled=!0,this._emitChange(e))}_handleKeydown(e){this.disabled||" "!==e.key&&"Enter"!==e.key||(e.preventDefault(),e.stopPropagation(),this.checked=!this.checked,this._justToggled=!0,this._emitChange(e))}_emitChange(e){this.dispatchEvent(new CustomEvent("on-change",{bubbles:!0,composed:!0,detail:{checked:this.checked,value:this.value,origEvent:e}}))}firstUpdated(){this._readCSSFlags(),this._resolveFlags(),this.requestUpdate()}updated(){this._shouldOnlyVisibleOnHover&&!this._transitionsReady&&requestAnimationFrame((()=>{this._transitionsReady=!0,this.requestUpdate()}))}_readCSSFlags(){const e=getComputedStyle(this),t=t=>{const s=e.getPropertyValue(t).trim();return"1"===s||"true"===s};this._cssAnimate=t("--kyn-icon-selector-animate-selection"),this._cssOnlyVisibleOnHover=t("--kyn-icon-selector-only-visible-on-hover"),this._cssPersistWhenChecked=t("--kyn-icon-selector-persist-when-checked")}willUpdate(e){(e.has("animateSelection")||e.has("onlyVisibleOnHover")||e.has("persistWhenChecked"))&&this._resolveFlags()}_resolveFlags(){this._shouldAnimate=this.animateSelection||this._cssAnimate,this._shouldOnlyVisibleOnHover=this.onlyVisibleOnHover||this._cssOnlyVisibleOnHover,this._shouldPersistWhenChecked=this.persistWhenChecked||this._cssPersistWhenChecked}connectedCallback(){super.connectedCallback(),this.addEventListener("click",this._handleHostClick),this._readCSSFlags(),this._resolveFlags()}disconnectedCallback(){this.removeEventListener("click",this._handleHostClick),super.disconnectedCallback()}},c=new WeakMap,y=new WeakMap,b=new WeakMap,v=new WeakMap,g=new WeakMap,f=new WeakMap,_=new WeakMap,C=new WeakMap,e(S,"IconSelector"),(()=>{var e;const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null!==(e=A[Symbol.metadata])&&void 0!==e?e:null):void 0;W=[h({type:Boolean,reflect:!0})],w=[h({type:String})],x=[h({type:String})],H=[h({type:String})],j=[h({type:Boolean,reflect:!0})],L=[h({type:Boolean,reflect:!0})],V=[h({type:Boolean})],P=[h({type:Boolean})],t(S,null,W,{kind:"accessor",name:"checked",static:!1,private:!1,access:{has:e=>"checked"in e,get:e=>e.checked,set:(e,t)=>{e.checked=t}},metadata:s},M,R),t(S,null,w,{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:s},E,B),t(S,null,x,{kind:"accessor",name:"checkedLabel",static:!1,private:!1,access:{has:e=>"checkedLabel"in e,get:e=>e.checkedLabel,set:(e,t)=>{e.checkedLabel=t}},metadata:s},T,U),t(S,null,H,{kind:"accessor",name:"uncheckedLabel",static:!1,private:!1,access:{has:e=>"uncheckedLabel"in e,get:e=>e.uncheckedLabel,set:(e,t)=>{e.uncheckedLabel=t}},metadata:s},q,z),t(S,null,j,{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:s},D,K),t(S,null,L,{kind:"accessor",name:"onlyVisibleOnHover",static:!1,private:!1,access:{has:e=>"onlyVisibleOnHover"in e,get:e=>e.onlyVisibleOnHover,set:(e,t)=>{e.onlyVisibleOnHover=t}},metadata:s},I,G),t(S,null,V,{kind:"accessor",name:"persistWhenChecked",static:!1,private:!1,access:{has:e=>"persistWhenChecked"in e,get:e=>e.persistWhenChecked,set:(e,t)=>{e.persistWhenChecked=t}},metadata:s},J,N),t(S,null,P,{kind:"accessor",name:"animateSelection",static:!1,private:!1,access:{has:e=>"animateSelection"in e,get:e=>e.animateSelection,set:(e,t)=>{e.animateSelection=t}},metadata:s},Q,X),t(null,O={value:S},F,{kind:"class",name:S.name,metadata:s},null,$),S=O.value,s&&Object.defineProperty(S,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s})})(),S.styles=o(u),S.shadowRootOptions={...a.shadowRootOptions,delegatesFocus:!0},s(S,$),S})();export{y as IconSelector};
|
|
150
154
|
//# sourceMappingURL=iconSelector.js.map
|
|
@@ -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 private _shouldOnlyVisibleOnHover = false;\n private _shouldPersistWhenChecked = 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 };\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._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._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 // Resolve again after first paint in case connectedCallback was too early.\n if (!this._cssResolved) {\n this._readCSSFlags();\n this._resolveFlags();\n this.requestUpdate();\n }\n }\n\n private _cssResolved = false;\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 this._cssResolved = true;\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 private _cssOnlyVisibleOnHover = false;\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","_handleHostClick","e","stopPropagation","_cssResolved","_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","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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAkBaA,EAAY,qDADxBC,EAAc,6BACmBC,yFAARC,EAAA,cAAQC,oCAWvBC,EAAAC,IAAAC,KAAAC,EAAAD,KAAAE,GAAU,IAIVC,EAAAJ,IAAAC,MAAAC,EAAAD,KAAAI,GAAAH,EAAAD,KAAAK,EAAQ,MAIRC,EAAAP,IAAAC,MAAAC,EAAAD,KAAAO,GAAAN,EAAAD,KAAAQ,EAAe,2BAIfC,EAAAV,IAAAC,MAAAC,EAAAD,KAAAU,GAAAT,EAAAD,KAAAW,EAAiB,sBAIjBC,EAAAb,IAAAC,MAAAC,EAAAD,KAAAa,GAAAZ,EAAAD,KAAAc,GAAW,KAQXC,EAAAhB,IAAAC,MAAAC,EAAAD,KAAAgB,GAAAf,EAAAD,KAAAiB,GAAqB,KAQrBC,EAAAnB,IAAAC,MAAAC,EAAAD,KAAAmB,GAAAlB,EAAAD,KAAAoB,GAAqB,KAQrBC,EAAAtB,IAAAC,MAAAC,EAAAD,KAAAsB,GAAArB,EAAAD,KAAAuB,GAAmB,KAGpBvB,KAAAwB,gBAAcvB,EAAAD,KAAAyB,IAAG,GACjBzB,KAAA0B,2BAA4B,EAC5B1B,KAAA2B,2BAA4B,EA2E5B3B,KAAA4B,iBAAoBC,IAC1BA,EAAEC,iBAAiB,EAYb9B,KAAA+B,cAAe,EA6Bf/B,KAAAgC,aAAc,EACdhC,KAAAiC,wBAAyB,EACzBjC,KAAAkC,wBAAyB,EApKjC,WAASC,GAAO,OAAAC,EAAApC,KAAAF,EAAA,IAAA,CAAhB,WAASqC,CAAOE,GAAAC,EAAAtC,KAAAF,EAAAuC,EAAA,IAAA,CAIhB,SAASA,GAAK,OAAAD,EAAApC,KAAAG,EAAA,IAAA,CAAd,SAASkC,CAAKA,GAAAC,EAAAtC,KAAAG,EAAAkC,EAAA,IAAA,CAId,gBAASE,GAAY,OAAAH,EAAApC,KAAAM,EAAA,IAAA,CAArB,gBAASiC,CAAYF,GAAAC,EAAAtC,KAAAM,EAAA+B,EAAA,IAAA,CAIrB,kBAASG,GAAc,OAAAJ,EAAApC,KAAAS,EAAA,IAAA,CAAvB,kBAAS+B,CAAcH,GAAAC,EAAAtC,KAAAS,EAAA4B,EAAA,IAAA,CAIvB,YAASI,GAAQ,OAAAL,EAAApC,KAAAY,EAAA,IAAA,CAAjB,YAAS6B,CAAQJ,GAAAC,EAAAtC,KAAAY,EAAAyB,EAAA,IAAA,CAQjB,sBAASK,GAAkB,OAAAN,EAAApC,KAAAe,EAAA,IAAA,CAA3B,sBAAS2B,CAAkBL,GAAAC,EAAAtC,KAAAe,EAAAsB,EAAA,IAAA,CAQ3B,sBAASM,GAAkB,OAAAP,EAAApC,KAAAkB,EAAA,IAAA,CAA3B,sBAASyB,CAAkBN,GAAAC,EAAAtC,KAAAkB,EAAAmB,EAAA,IAAA,CAQ3B,oBAASO,GAAgB,OAAAR,EAAApC,KAAAqB,EAAA,IAAA,CAAzB,oBAASuB,CAAgBP,GAAAC,EAAAtC,KAAAqB,EAAAgB,EAAA,IAAA,CAOhB,MAAAQ,GACP,MAAMC,EAAU,CACd,iBAAiB,EACjB,yBAA0B9C,KAAKmC,QAC/B,wBAAyBnC,KAAK0B,0BAC9B,uBAAwB1B,KAAK2B,0BAC7B,oBAAqB3B,KAAKwB,gBAGtBuB,EAAe/C,KAAKmC,QAAUnC,KAAKuC,aAAevC,KAAKwC,eAE7D,OAAOQ,CAAI;;;gBAGCC,EAASH;;uBAEF9C,KAAKmC;qBACPY;gBACLA;oBACI/C,KAAKyC;iBACRzC,KAAKkD;mBACHlD,KAAKmD;;;wCAGgBC,EAAUC;;;sCAGZD,EAAUE;;;MAMtC,YAAAJ,CAAarB,GACf7B,KAAKyC,WAETZ,EAAE0B,iBACF1B,EAAEC,kBAEF9B,KAAKmC,SAAWnC,KAAKmC,QACrBnC,KAAKwD,YAAY3B,IAGX,cAAAsB,CAAetB,GACjB7B,KAAKyC,UAEK,MAAVZ,EAAE4B,KAAyB,UAAV5B,EAAE4B,MACrB5B,EAAE0B,iBACF1B,EAAEC,kBACF9B,KAAKmC,SAAWnC,KAAKmC,QACrBnC,KAAKwD,YAAY3B,IAIb,WAAA2B,CAAYE,GAClB1D,KAAK2D,cACH,IAAIC,YAAY,YAAa,CAC3BC,SAAS,EACTC,UAAU,EACVC,OAAQ,CACN5B,QAASnC,KAAKmC,QACdE,MAAOrC,KAAKqC,MACZqB,gBAeC,YAAAM,GAEFhE,KAAK+B,eACR/B,KAAKiE,gBACLjE,KAAKkE,gBACLlE,KAAKmE,iBAMD,aAAAF,GACN,MAAMG,EAASC,iBAAiBrE,MAC1BsE,EAAWC,IACf,MAAMC,EAAMJ,EAAOK,iBAAiBF,GAAMG,OAC1C,MAAe,MAARF,GAAuB,SAARA,CAAc,EAEtCxE,KAAKgC,YAAcsC,EAAQ,yCAC3BtE,KAAKiC,uBAAyBqC,EAC5B,6CAEFtE,KAAKkC,uBAAyBoC,EAC5B,4CAEFtE,KAAK+B,cAAe,EAGb,UAAA4C,CAAWC,IAEhBA,EAAaC,IAAI,qBACjBD,EAAaC,IAAI,uBACjBD,EAAaC,IAAI,wBAEjB7E,KAAKkE,gBASD,aAAAA,GACNlE,KAAKwB,eAAiBxB,KAAK4C,kBAAoB5C,KAAKgC,YACpDhC,KAAK0B,0BACH1B,KAAK0C,oBAAsB1C,KAAKiC,uBAClCjC,KAAK2B,0BACH3B,KAAK2C,oBAAsB3C,KAAKkC,uBAG3B,iBAAA4C,GACPC,MAAMD,oBACN9E,KAAKgF,iBAAiB,QAAShF,KAAK4B,kBAGpC5B,KAAKiE,gBACLjE,KAAKkE,gBAGE,oBAAAe,GACPjF,KAAKkF,oBAAoB,QAASlF,KAAK4B,kBACvCmD,MAAME,sSA1LPE,EAAS,CAAEC,KAAMC,QAASC,SAAS,KAInCC,EAAA,CAAAJ,EAAS,CAAEC,KAAMI,UAIjBC,EAAA,CAAAN,EAAS,CAAEC,KAAMI,UAIjBE,EAAA,CAAAP,EAAS,CAAEC,KAAMI,aAIjBL,EAAS,CAAEC,KAAMC,QAASC,SAAS,QAQnCH,EAAS,CAAEC,KAAMC,QAASC,SAAS,KAQnCK,EAAA,CAAAR,EAAS,CAAEC,KAAMC,WAQjBO,EAAA,CAAAT,EAAS,CAAEC,KAAMC,WAvClBQ,EAAAjG,EAAA,KAAAkG,EAAA,CAAAC,KAAA,WAAAC,KAAA,UAAAC,QAAA,EAAAC,SAAA,EAAAC,OAAA,CAAAtB,IAAAuB,GAAA,YAAAA,EAAAC,IAAAD,GAAAA,EAASjE,QAAOpC,IAAA,CAAAqG,EAAA/D,KAAA+D,EAAPjE,QAAOE,CAAA,GAAAiE,SAAAC,GAAArG,EAAAE,GAIhByF,EAAAjG,EAAA,KAAA2F,EAAA,CAAAQ,KAAA,WAAAC,KAAA,QAAAC,QAAA,EAAAC,SAAA,EAAAC,OAAA,CAAAtB,IAAAuB,GAAA,UAAAA,EAAAC,IAAAD,GAAAA,EAAS/D,MAAKtC,IAAA,CAAAqG,EAAA/D,KAAA+D,EAAL/D,MAAKA,CAAA,GAAAiE,SAAAC,GAAAlG,EAAAE,GAIdsF,EAAAjG,EAAA,KAAA6F,EAAA,CAAAM,KAAA,WAAAC,KAAA,eAAAC,QAAA,EAAAC,SAAA,EAAAC,OAAA,CAAAtB,IAAAuB,GAAA,iBAAAA,EAAAC,IAAAD,GAAAA,EAAS7D,aAAYxC,IAAA,CAAAqG,EAAA/D,KAAA+D,EAAZ7D,aAAYF,CAAA,GAAAiE,SAAAC,GAAA/F,EAAAE,GAIrBmF,EAAAjG,EAAA,KAAA8F,EAAA,CAAAK,KAAA,WAAAC,KAAA,iBAAAC,QAAA,EAAAC,SAAA,EAAAC,OAAA,CAAAtB,IAAAuB,GAAA,mBAAAA,EAAAC,IAAAD,GAAAA,EAAS5D,eAAczC,IAAA,CAAAqG,EAAA/D,KAAA+D,EAAd5D,eAAcH,CAAA,GAAAiE,SAAAC,GAAA5F,EAAAE,GAIvBgF,EAAAjG,EAAA,KAAA4G,EAAA,CAAAT,KAAA,WAAAC,KAAA,WAAAC,QAAA,EAAAC,SAAA,EAAAC,OAAA,CAAAtB,IAAAuB,GAAA,aAAAA,EAAAC,IAAAD,GAAAA,EAAS3D,SAAQ1C,IAAA,CAAAqG,EAAA/D,KAAA+D,EAAR3D,SAAQJ,CAAA,GAAAiE,SAAAC,GAAAzF,EAAAE,GAQjB6E,EAAAjG,EAAA,KAAA6G,EAAA,CAAAV,KAAA,WAAAC,KAAA,qBAAAC,QAAA,EAAAC,SAAA,EAAAC,OAAA,CAAAtB,IAAAuB,GAAA,uBAAAA,EAAAC,IAAAD,GAAAA,EAAS1D,mBAAkB3C,IAAA,CAAAqG,EAAA/D,KAAA+D,EAAlB1D,mBAAkBL,CAAA,GAAAiE,SAAAC,GAAAtF,EAAAE,GAQ3B0E,EAAAjG,EAAA,KAAA+F,EAAA,CAAAI,KAAA,WAAAC,KAAA,qBAAAC,QAAA,EAAAC,SAAA,EAAAC,OAAA,CAAAtB,IAAAuB,GAAA,uBAAAA,EAAAC,IAAAD,GAAAA,EAASzD,mBAAkB5C,IAAA,CAAAqG,EAAA/D,KAAA+D,EAAlBzD,mBAAkBN,CAAA,GAAAiE,SAAAC,GAAAnF,EAAAE,GAQ3BuE,EAAAjG,EAAA,KAAAgG,EAAA,CAAAG,KAAA,WAAAC,KAAA,mBAAAC,QAAA,EAAAC,SAAA,EAAAC,OAAA,CAAAtB,IAAAuB,GAAA,qBAAAA,EAAAC,IAAAD,GAAAA,EAASxD,iBAAgB7C,IAAA,CAAAqG,EAAA/D,KAAA+D,EAAhBxD,iBAAgBP,CAAA,GAAAiE,SAAAC,GAAAhF,EAAAE,GAnD3BoE,EAAA,KAAAa,EAAA,CAAArE,MAAAzC,GAAA+G,EAAA,CAAAZ,KAAA,QAAAC,KAAApG,EAAAoG,KAAAM,SAAAC,GAAA,KAAAK,iHACkBhH,EAAAwE,OAASyC,EAAUC,GAGnBlH,EAAAmH,kBAAoB,IAC/BpH,EAAWoH,kBACdC,gBAAgB,GANP/G,EAAAL,EAAAgH,MAAY"}
|
|
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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"iconSelectorGroup.d.ts","sourceRoot":"","sources":["../../../../src/components/reusable/iconSelector/iconSelectorGroup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAmB,MAAM,KAAK,CAAC;AAMlD;;;;;;GAMG;AACH,qBACa,iBAAkB,SAAQ,UAAU;IAC/C,OAAgB,MAAM,0BAAoC;IAE1D,6BAA6B;IAE7B,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,CAAM;IAE9B,wCAAwC;IAExC,QAAQ,CAAC,QAAQ,UAAS;IAE1B,mDAAmD;IAEnD,QAAQ,CAAC,SAAS,EAAE,UAAU,GAAG,YAAY,CAAc;IAE3D;;;OAGG;IAEH,QAAQ,CAAC,kBAAkB,UAAS;IAEpC;;OAEG;IAEH,QAAQ,CAAC,kBAAkB,UAAS;IAEpC,4FAA4F;IAE5F,QAAQ,CAAC,gBAAgB,UAAS;IAElC;;OAEG;IAEH,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAsB;IAExC,iBAAiB;IAQjB,oBAAoB;IAQpB,MAAM;IAQf;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,kBAAkB;IAU1B;;;OAGG;IACH,OAAO,CAAC,YAAY,CAAS;IAE7B,OAAO,CAAC,kBAAkB,CA+BxB;IAEO,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;CAWzD;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,yBAAyB,EAAE,iBAAiB,CAAC;KAC9C;CACF"}
|
|
1
|
+
{"version":3,"file":"iconSelectorGroup.d.ts","sourceRoot":"","sources":["../../../../src/components/reusable/iconSelector/iconSelectorGroup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAmB,MAAM,KAAK,CAAC;AAMlD;;;;;;GAMG;AACH,qBACa,iBAAkB,SAAQ,UAAU;IAC/C,OAAgB,MAAM,0BAAoC;IAE1D,6BAA6B;IAE7B,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,CAAM;IAE9B,wCAAwC;IAExC,QAAQ,CAAC,QAAQ,UAAS;IAE1B,mDAAmD;IAEnD,QAAQ,CAAC,SAAS,EAAE,UAAU,GAAG,YAAY,CAAc;IAE3D;;;OAGG;IAEH,QAAQ,CAAC,kBAAkB,UAAS;IAEpC;;OAEG;IAEH,QAAQ,CAAC,kBAAkB,UAAS;IAEpC,4FAA4F;IAE5F,QAAQ,CAAC,gBAAgB,UAAS;IAElC;;OAEG;IAEH,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAsB;IAExC,iBAAiB;IAQjB,oBAAoB;IAQpB,MAAM;IAQf;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,kBAAkB;IAU1B;;;OAGG;IACH,OAAO,CAAC,YAAY,CAAS;IAE7B;;OAEG;IACH,OAAO,CAAC,kBAAkB,CA+BxB;IAEO,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;CAWzD;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,yBAAyB,EAAE,iBAAiB,CAAC;KAC9C;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"iconSelectorGroup.js","sources":["../../../../src/components/reusable/iconSelector/iconSelectorGroup.ts"],"sourcesContent":["import { LitElement, html, unsafeCSS } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport IconSelectorGroupScss from './iconSelectorGroup.scss?inline';\n\nimport type { IconSelector } from './iconSelector';\n\n/**\n * Icon Selector Group - A container for managing multiple icon selectors with multi-select functionality.\n *\n * @fires on-change - Emits when any icon selector's state changes.\n * `detail: { value: string[], origEvent: Event }`\n * @slot unnamed - Slot for icon-selector elements.\n */\n@customElement('kyn-icon-selector-group')\nexport class IconSelectorGroup extends LitElement {\n static override styles = unsafeCSS(IconSelectorGroupScss);\n\n /** Selected values array. */\n @property({ type: Array })\n accessor value: string[] = [];\n\n /** Disabled state for all selectors. */\n @property({ type: Boolean, reflect: true })\n accessor disabled = false;\n\n /** Stack direction: 'vertical' or 'horizontal'. */\n @property({ type: String, reflect: true })\n accessor direction: 'vertical' | 'horizontal' = 'vertical';\n\n /**\n * When true, all child icon-selectors are only visible when the parent element is hovered.\n * This propagates the onlyVisibleOnHover attribute to all children.\n */\n @property({ type: Boolean, reflect: true })\n accessor onlyVisibleOnHover = false;\n\n /**\n * When true, checked child icon-selectors remain visible even when onlyVisibleOnHover is enabled.\n */\n @property({ type: Boolean })\n accessor persistWhenChecked = false;\n\n /** Enables a subtle pop/crossfade animation when toggling checked state on all children. */\n @property({ type: Boolean })\n accessor animateSelection = false;\n\n /** Slotted icon selectors.\n * @internal\n */\n @state()\n private accessor _selectors: IconSelector[] = [];\n\n override connectedCallback() {\n super.connectedCallback();\n this.addEventListener(\n 'on-change',\n this._handleChildChange as EventListener\n );\n }\n\n override disconnectedCallback() {\n this.removeEventListener(\n 'on-change',\n this._handleChildChange as EventListener\n );\n super.disconnectedCallback();\n }\n\n override render() {\n return html`\n <div class=\"icon-selector-group icon-selector-group--${this.direction}\">\n <slot @slotchange=${this._handleSlotChange}></slot>\n </div>\n `;\n }\n\n /**\n * @internal\n */\n private _handleSlotChange() {\n this._selectors = Array.from(\n this.querySelectorAll('kyn-icon-selector')\n ) as IconSelector[];\n this._syncChildrenState();\n }\n\n private _syncChildrenState() {\n this._selectors.forEach((selector) => {\n selector.disabled = this.disabled;\n selector.onlyVisibleOnHover = this.onlyVisibleOnHover;\n selector.persistWhenChecked = this.persistWhenChecked;\n selector.animateSelection = this.animateSelection;\n selector.checked = this.value.includes(selector.value);\n });\n }\n\n /**\n * @internal\n * Re-entrancy guard for event dispatch.\n */\n private _dispatching = false;\n\n private _handleChildChange = (e: CustomEvent) => {\n // prevent re-entrancy: the group's own dispatched on-change\n // re-triggers this listener since it fires on the same element.\n if (this._dispatching) return;\n\n // Stop the child event from bubbling further\n e.stopPropagation();\n\n const { checked, value: selectorValue } = e.detail;\n let newValue = [...this.value];\n\n if (checked && !newValue.includes(selectorValue)) {\n newValue.push(selectorValue);\n } else if (!checked) {\n newValue = newValue.filter((v) => v !== selectorValue);\n }\n\n this.value = newValue;\n\n // Emit group change event\n this._dispatching = true;\n this.dispatchEvent(\n new CustomEvent('on-change', {\n composed: true,\n detail: {\n value: this.value,\n origEvent: e,\n },\n })\n );\n this._dispatching = false;\n };\n\n override updated(changedProperties: Map<string, unknown>) {\n if (\n changedProperties.has('value') ||\n changedProperties.has('disabled') ||\n changedProperties.has('onlyVisibleOnHover') ||\n changedProperties.has('persistWhenChecked') ||\n changedProperties.has('animateSelection')\n ) {\n this._syncChildrenState();\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kyn-icon-selector-group': IconSelectorGroup;\n }\n}\n"],"names":["IconSelectorGroup","customElement","LitElement","_classThis","_classSuper","_IconSelectorGroup_value_accessor_storage","set","this","__runInitializers","_value_initializers","_IconSelectorGroup_disabled_accessor_storage","_value_extraInitializers","_disabled_initializers","_IconSelectorGroup_direction_accessor_storage","_disabled_extraInitializers","_direction_initializers","_IconSelectorGroup_onlyVisibleOnHover_accessor_storage","_direction_extraInitializers","_onlyVisibleOnHover_initializers","_IconSelectorGroup_persistWhenChecked_accessor_storage","_onlyVisibleOnHover_extraInitializers","_persistWhenChecked_initializers","_IconSelectorGroup_animateSelection_accessor_storage","_persistWhenChecked_extraInitializers","_animateSelection_initializers","_IconSelectorGroup__selectors_accessor_storage","_animateSelection_extraInitializers","__selectors_initializers","_dispatching","__selectors_extraInitializers","_handleChildChange","e","stopPropagation","checked","value","selectorValue","detail","newValue","includes","push","filter","v","dispatchEvent","CustomEvent","composed","origEvent","__classPrivateFieldGet","__classPrivateFieldSet","disabled","direction","onlyVisibleOnHover","persistWhenChecked","animateSelection","_selectors","connectedCallback","super","addEventListener","disconnectedCallback","removeEventListener","render","html","_handleSlotChange","Array","from","querySelectorAll","_syncChildrenState","forEach","selector","updated","changedProperties","has","_value_decorators","property","type","Boolean","reflect","String","_persistWhenChecked_decorators","_animateSelection_decorators","__selectors_decorators","state","__esDecorate","kind","name","static","private","access","obj","get","metadata","_metadata","_disabled_decorators","_direction_decorators","_onlyVisibleOnHover_decorators","_classDescriptor","_classDecorators","_classExtraInitializers","styles","unsafeCSS","IconSelectorGroupScss"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"iconSelectorGroup.js","sources":["../../../../src/components/reusable/iconSelector/iconSelectorGroup.ts"],"sourcesContent":["import { LitElement, html, unsafeCSS } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport IconSelectorGroupScss from './iconSelectorGroup.scss?inline';\n\nimport type { IconSelector } from './iconSelector';\n\n/**\n * Icon Selector Group - A container for managing multiple icon selectors with multi-select functionality.\n *\n * @fires on-change - Emits when any icon selector's state changes.\n * `detail: { value: string[], origEvent: Event }`\n * @slot unnamed - Slot for icon-selector elements.\n */\n@customElement('kyn-icon-selector-group')\nexport class IconSelectorGroup extends LitElement {\n static override styles = unsafeCSS(IconSelectorGroupScss);\n\n /** Selected values array. */\n @property({ type: Array })\n accessor value: string[] = [];\n\n /** Disabled state for all selectors. */\n @property({ type: Boolean, reflect: true })\n accessor disabled = false;\n\n /** Stack direction: 'vertical' or 'horizontal'. */\n @property({ type: String, reflect: true })\n accessor direction: 'vertical' | 'horizontal' = 'vertical';\n\n /**\n * When true, all child icon-selectors are only visible when the parent element is hovered.\n * This propagates the onlyVisibleOnHover attribute to all children.\n */\n @property({ type: Boolean, reflect: true })\n accessor onlyVisibleOnHover = false;\n\n /**\n * When true, checked child icon-selectors remain visible even when onlyVisibleOnHover is enabled.\n */\n @property({ type: Boolean })\n accessor persistWhenChecked = false;\n\n /** Enables a subtle pop/crossfade animation when toggling checked state on all children. */\n @property({ type: Boolean })\n accessor animateSelection = false;\n\n /** Slotted icon selectors.\n * @internal\n */\n @state()\n private accessor _selectors: IconSelector[] = [];\n\n override connectedCallback() {\n super.connectedCallback();\n this.addEventListener(\n 'on-change',\n this._handleChildChange as EventListener\n );\n }\n\n override disconnectedCallback() {\n this.removeEventListener(\n 'on-change',\n this._handleChildChange as EventListener\n );\n super.disconnectedCallback();\n }\n\n override render() {\n return html`\n <div class=\"icon-selector-group icon-selector-group--${this.direction}\">\n <slot @slotchange=${this._handleSlotChange}></slot>\n </div>\n `;\n }\n\n /**\n * @internal\n */\n private _handleSlotChange() {\n this._selectors = Array.from(\n this.querySelectorAll('kyn-icon-selector')\n ) as IconSelector[];\n this._syncChildrenState();\n }\n\n private _syncChildrenState() {\n this._selectors.forEach((selector) => {\n selector.disabled = this.disabled;\n selector.onlyVisibleOnHover = this.onlyVisibleOnHover;\n selector.persistWhenChecked = this.persistWhenChecked;\n selector.animateSelection = this.animateSelection;\n selector.checked = this.value.includes(selector.value);\n });\n }\n\n /**\n * @internal\n * Re-entrancy guard for event dispatch.\n */\n private _dispatching = false;\n\n /**\n * @internal\n */\n private _handleChildChange = (e: CustomEvent) => {\n // prevent re-entrancy: the group's own dispatched on-change\n // re-triggers this listener since it fires on the same element.\n if (this._dispatching) return;\n\n // Stop the child event from bubbling further\n e.stopPropagation();\n\n const { checked, value: selectorValue } = e.detail;\n let newValue = [...this.value];\n\n if (checked && !newValue.includes(selectorValue)) {\n newValue.push(selectorValue);\n } else if (!checked) {\n newValue = newValue.filter((v) => v !== selectorValue);\n }\n\n this.value = newValue;\n\n // Emit group change event\n this._dispatching = true;\n this.dispatchEvent(\n new CustomEvent('on-change', {\n composed: true,\n detail: {\n value: this.value,\n origEvent: e,\n },\n })\n );\n this._dispatching = false;\n };\n\n override updated(changedProperties: Map<string, unknown>) {\n if (\n changedProperties.has('value') ||\n changedProperties.has('disabled') ||\n changedProperties.has('onlyVisibleOnHover') ||\n changedProperties.has('persistWhenChecked') ||\n changedProperties.has('animateSelection')\n ) {\n this._syncChildrenState();\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kyn-icon-selector-group': IconSelectorGroup;\n }\n}\n"],"names":["IconSelectorGroup","customElement","LitElement","_classThis","_classSuper","_IconSelectorGroup_value_accessor_storage","set","this","__runInitializers","_value_initializers","_IconSelectorGroup_disabled_accessor_storage","_value_extraInitializers","_disabled_initializers","_IconSelectorGroup_direction_accessor_storage","_disabled_extraInitializers","_direction_initializers","_IconSelectorGroup_onlyVisibleOnHover_accessor_storage","_direction_extraInitializers","_onlyVisibleOnHover_initializers","_IconSelectorGroup_persistWhenChecked_accessor_storage","_onlyVisibleOnHover_extraInitializers","_persistWhenChecked_initializers","_IconSelectorGroup_animateSelection_accessor_storage","_persistWhenChecked_extraInitializers","_animateSelection_initializers","_IconSelectorGroup__selectors_accessor_storage","_animateSelection_extraInitializers","__selectors_initializers","_dispatching","__selectors_extraInitializers","_handleChildChange","e","stopPropagation","checked","value","selectorValue","detail","newValue","includes","push","filter","v","dispatchEvent","CustomEvent","composed","origEvent","__classPrivateFieldGet","__classPrivateFieldSet","disabled","direction","onlyVisibleOnHover","persistWhenChecked","animateSelection","_selectors","connectedCallback","super","addEventListener","disconnectedCallback","removeEventListener","render","html","_handleSlotChange","Array","from","querySelectorAll","_syncChildrenState","forEach","selector","updated","changedProperties","has","_value_decorators","property","type","Boolean","reflect","String","_persistWhenChecked_decorators","_animateSelection_decorators","__selectors_decorators","state","__esDecorate","kind","name","static","private","access","obj","get","metadata","_metadata","_disabled_decorators","_direction_decorators","_onlyVisibleOnHover_decorators","_classDescriptor","_classDecorators","_classExtraInitializers","styles","unsafeCSS","IconSelectorGroupScss"],"mappings":"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"}
|