@kyndryl-design-system/shidoka-applications 2.97.4 → 2.97.5
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/reusable/accordion/accordionItem.d.ts +7 -0
- package/components/reusable/accordion/accordionItem.d.ts.map +1 -1
- package/components/reusable/accordion/accordionItem.js +68 -15
- package/components/reusable/accordion/accordionItem.js.map +1 -1
- package/components/reusable/dropdown/dropdown.js +3 -0
- package/components/reusable/dropdown/dropdown.js.map +1 -1
- package/package.json +1 -1
|
@@ -37,10 +37,17 @@ export declare class AccordionItem extends LitElement {
|
|
|
37
37
|
* @ignore
|
|
38
38
|
*/
|
|
39
39
|
private accessor _compact;
|
|
40
|
+
/**
|
|
41
|
+
* Whether an icon is assigned to the icon slot.
|
|
42
|
+
* @ignore
|
|
43
|
+
*/
|
|
44
|
+
private accessor _hasIcon;
|
|
40
45
|
setIndex(index: number): void;
|
|
41
46
|
setShowNumbers(value: boolean): void;
|
|
42
47
|
setFilledHeader(value: boolean): void;
|
|
43
48
|
setCompact(value: boolean): void;
|
|
49
|
+
private _handleIconSlotChange;
|
|
50
|
+
firstUpdated(): void;
|
|
44
51
|
open(): void;
|
|
45
52
|
close(): void;
|
|
46
53
|
private _handleClick;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accordionItem.d.ts","sourceRoot":"","sources":["../../../../src/components/reusable/accordion/accordionItem.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAQ,UAAU,EAAa,MAAM,KAAK,CAAC;AAOlD;;;;;;;;GAQG;AACH,qBACa,aAAc,SAAQ,UAAU;IAC3C,OAAgB,MAAM,0BAAyB;IAE/C,mCAAmC;IAEnC,QAAQ,CAAC,MAAM,UAAS;IAExB,qCAAqC;IAErC,QAAQ,CAAC,QAAQ,UAAS;IAE1B;;;OAGG;IACM,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAK;IAErC;;;OAGG;IACM,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IAE9C;;;OAGG;IACM,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IAEhD;;;OAGG;IACM,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAE3C,QAAQ,CAAC,KAAK,EAAE,MAAM;IAItB,cAAc,CAAC,KAAK,EAAE,OAAO;IAI7B,eAAe,CAAC,KAAK,EAAE,OAAO;IAI9B,UAAU,CAAC,KAAK,EAAE,OAAO;IAIzB,IAAI;IAIJ,KAAK;IAIL,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,eAAe;IAKvB,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,gBAAgB;IASf,MAAM;
|
|
1
|
+
{"version":3,"file":"accordionItem.d.ts","sourceRoot":"","sources":["../../../../src/components/reusable/accordion/accordionItem.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAQ,UAAU,EAAa,MAAM,KAAK,CAAC;AAOlD;;;;;;;;GAQG;AACH,qBACa,aAAc,SAAQ,UAAU;IAC3C,OAAgB,MAAM,0BAAyB;IAE/C,mCAAmC;IAEnC,QAAQ,CAAC,MAAM,UAAS;IAExB,qCAAqC;IAErC,QAAQ,CAAC,QAAQ,UAAS;IAE1B;;;OAGG;IACM,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAK;IAErC;;;OAGG;IACM,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IAE9C;;;OAGG;IACM,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IAEhD;;;OAGG;IACM,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAE3C;;;OAGG;IACM,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAE3C,QAAQ,CAAC,KAAK,EAAE,MAAM;IAItB,cAAc,CAAC,KAAK,EAAE,OAAO;IAI7B,eAAe,CAAC,KAAK,EAAE,OAAO;IAI9B,UAAU,CAAC,KAAK,EAAE,OAAO;IAIzB,OAAO,CAAC,qBAAqB;IAKpB,YAAY;IAUrB,IAAI;IAIJ,KAAK;IAIL,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,eAAe;IAKvB,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,gBAAgB;IASf,MAAM;CAiEhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,oBAAoB,EAAE,aAAa,CAAC;KACrC;CACF"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{__setFunctionName as e,__esDecorate as t,__runInitializers as i,__classPrivateFieldGet as o,__classPrivateFieldSet as
|
|
1
|
+
import{__setFunctionName as e,__esDecorate as t,__runInitializers as i,__classPrivateFieldGet as o,__classPrivateFieldSet as n}from"tslib";import{css as a,LitElement as d,unsafeCSS as r,html as s}from"lit";import{customElement as c,property as l,state as m}from"lit/decorators.js";import{classMap as h}from"lit-html/directives/class-map.js";import{unsafeSVG as p}from"lit/directives/unsafe-svg.js";import{A as y}from"../../../vendor/@kyndryl-design-system/shidoka-icons-BX5ha5gR.js";var k=a`/**
|
|
2
2
|
* Copyright Kyndryl, Inc. 2023
|
|
3
3
|
*/
|
|
4
4
|
*,
|
|
@@ -43,6 +43,12 @@ import{__setFunctionName as e,__esDecorate as t,__runInitializers as i,__classPr
|
|
|
43
43
|
padding: 0px 0px;
|
|
44
44
|
display: block;
|
|
45
45
|
border-radius: inherit;
|
|
46
|
+
--kyn-accordion-item-body-padding-top: 24px;
|
|
47
|
+
--kyn-accordion-item-body-padding-right: 16px;
|
|
48
|
+
--kyn-accordion-item-body-padding-bottom: 24px;
|
|
49
|
+
--kyn-accordion-item-body-padding-left: 16px;
|
|
50
|
+
--kyn-accordion-item-body-icon-offset: 0px;
|
|
51
|
+
--kyn-accordion-item-body-number-offset: 0px;
|
|
46
52
|
}
|
|
47
53
|
.kyn-accordion-item.filled-header .kyn-accordion-item-title {
|
|
48
54
|
background-color: var(--kd-color-background-container-subtle);
|
|
@@ -51,30 +57,53 @@ import{__setFunctionName as e,__esDecorate as t,__runInitializers as i,__classPr
|
|
|
51
57
|
outline-width: 1px;
|
|
52
58
|
outline-color: var(--kd-color-border-ui-default);
|
|
53
59
|
}
|
|
54
|
-
.kyn-accordion-item.filled-header .kyn-accordion-item-body {
|
|
55
|
-
border-top: 1px solid var(--kd-color-border-variants-light);
|
|
56
|
-
}
|
|
57
60
|
.kyn-accordion-item.compact .kyn-accordion-item-title {
|
|
58
61
|
padding: 16px;
|
|
59
62
|
}
|
|
63
|
+
.kyn-accordion-item.compact {
|
|
64
|
+
--kyn-accordion-item-body-padding-top: 8px;
|
|
65
|
+
--kyn-accordion-item-body-padding-bottom: 16px;
|
|
66
|
+
}
|
|
67
|
+
.kyn-accordion-item.has-icon {
|
|
68
|
+
--kyn-accordion-item-body-icon-offset: 40px;
|
|
69
|
+
}
|
|
70
|
+
.kyn-accordion-item.compact.has-icon {
|
|
71
|
+
--kyn-accordion-item-body-icon-offset: 32px;
|
|
72
|
+
}
|
|
73
|
+
.kyn-accordion-item.show-number {
|
|
74
|
+
--kyn-accordion-item-body-number-offset: 24px;
|
|
75
|
+
}
|
|
76
|
+
.kyn-accordion-item.has-icon.show-number {
|
|
77
|
+
--kyn-accordion-item-body-number-offset: 25px;
|
|
78
|
+
}
|
|
79
|
+
.kyn-accordion-item.compact.show-number {
|
|
80
|
+
--kyn-accordion-item-body-number-offset: 17px;
|
|
81
|
+
}
|
|
82
|
+
.kyn-accordion-item.compact.has-icon.show-number {
|
|
83
|
+
--kyn-accordion-item-body-number-offset: 17px;
|
|
84
|
+
}
|
|
60
85
|
.kyn-accordion-item .kyn-accordion-item-body {
|
|
61
|
-
|
|
62
|
-
|
|
86
|
+
display: grid;
|
|
87
|
+
grid-template-rows: 0fr;
|
|
88
|
+
border-top: 0 solid transparent;
|
|
89
|
+
opacity: 0;
|
|
90
|
+
transition: grid-template-rows 220ms ease, opacity 180ms ease, border-color 180ms ease;
|
|
63
91
|
}
|
|
64
92
|
.kyn-accordion-item.opened.filled-header .kyn-accordion-item-title {
|
|
65
93
|
border-radius: 0;
|
|
66
94
|
}
|
|
67
95
|
.kyn-accordion-item.opened .kyn-accordion-item-body {
|
|
68
|
-
|
|
96
|
+
grid-template-rows: 1fr;
|
|
97
|
+
opacity: 1;
|
|
98
|
+
}
|
|
99
|
+
.kyn-accordion-item.opened.filled-header .kyn-accordion-item-body {
|
|
100
|
+
border-top-width: 1px;
|
|
101
|
+
border-top-color: var(--kd-color-border-variants-light);
|
|
69
102
|
}
|
|
70
103
|
.kyn-accordion-item .icon {
|
|
71
104
|
vertical-align: middle;
|
|
72
105
|
}
|
|
73
106
|
|
|
74
|
-
.compact .kyn-accordion-item-body {
|
|
75
|
-
padding-top: 0;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
107
|
.right {
|
|
79
108
|
display: flex;
|
|
80
109
|
align-items: center;
|
|
@@ -120,6 +149,8 @@ slot[name=icon]::slotted(span) {
|
|
|
120
149
|
outline-color: var(--kd-color-border-variants-focus);
|
|
121
150
|
}
|
|
122
151
|
.kyn-accordion-item-title .number {
|
|
152
|
+
display: flex;
|
|
153
|
+
align-items: center;
|
|
123
154
|
font-weight: var(--kd-font-weight-regular);
|
|
124
155
|
color: var(--kd-color-text-variant-placeholder);
|
|
125
156
|
padding-right: 16px;
|
|
@@ -186,9 +217,26 @@ slot[name=icon]::slotted(span) {
|
|
|
186
217
|
color: var(--kd-color-text-link-level-disabled);
|
|
187
218
|
}
|
|
188
219
|
|
|
220
|
+
.kyn-accordion-item-detail {
|
|
221
|
+
overflow: hidden;
|
|
222
|
+
padding: 0 var(--kyn-accordion-item-body-padding-right) 0 calc(var(--kyn-accordion-item-body-padding-left) + var(--kyn-accordion-item-body-icon-offset) + var(--kyn-accordion-item-body-number-offset));
|
|
223
|
+
transition: padding 220ms ease;
|
|
224
|
+
}
|
|
225
|
+
.opened .kyn-accordion-item-detail {
|
|
226
|
+
padding-top: var(--kyn-accordion-item-body-padding-top);
|
|
227
|
+
padding-bottom: var(--kyn-accordion-item-body-padding-bottom);
|
|
228
|
+
}
|
|
229
|
+
|
|
189
230
|
.disabled .kyn-accordion-item-body {
|
|
190
231
|
color: var(--kd-color-text-link-level-disabled);
|
|
191
|
-
}
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
@media (prefers-reduced-motion: reduce) {
|
|
235
|
+
.kyn-accordion-item-body,
|
|
236
|
+
.kyn-accordion-item-detail {
|
|
237
|
+
transition: none;
|
|
238
|
+
}
|
|
239
|
+
}`;let b=(()=>{var a,b,g,u,f,v,x;let _,w,$,I,S,z,N,H,j,C=[c("kyn-accordion-item")],E=[],M=d,O=[],W=[],K=[],A=[],B=[],D=[],T=[],q=[],F=[],P=[],R=[],U=[],G=[],J=[];return w=class extends M{get opened(){return o(this,a,"f")}set opened(e){n(this,a,e,"f")}get disabled(){return o(this,b,"f")}set disabled(e){n(this,b,e,"f")}get _index(){return o(this,g,"f")}set _index(e){n(this,g,e,"f")}get _showNumber(){return o(this,u,"f")}set _showNumber(e){n(this,u,e,"f")}get _filledHeader(){return o(this,f,"f")}set _filledHeader(e){n(this,f,e,"f")}get _compact(){return o(this,v,"f")}set _compact(e){n(this,v,e,"f")}get _hasIcon(){return o(this,x,"f")}set _hasIcon(e){n(this,x,e,"f")}setIndex(e){this._index=e}setShowNumbers(e){this._showNumber=e}setFilledHeader(e){this._filledHeader=e}setCompact(e){this._compact=e}_handleIconSlotChange(e){const t=e.target;this._hasIcon=t.assignedElements({flatten:!0}).length>0}firstUpdated(){const e=this.renderRoot.querySelector('slot[name="icon"]');e&&(this._hasIcon=e.assignedElements({flatten:!0}).length>0)}open(){this.opened||this._toggleOpenState()}close(){this.opened&&this._toggleOpenState()}_handleClick(e){e.preventDefault(),this._toggleOpenState()}_handleKeypress(e){e.preventDefault()," "!=e.key&&"Enter"!=e.key||this._toggleOpenState()}_toggleOpenState(){this.disabled||(this.opened=!this.opened,this._emitToggleEvent())}_emitToggleEvent(){const e=new CustomEvent("on-toggle",{bubbles:!0,composed:!0,detail:{opened:this.opened}});this.dispatchEvent(e)}render(){const e=h({"kyn-accordion-item":!0,opened:this.opened,disabled:this.disabled,"filled-header":this._filledHeader,compact:this._compact,"has-icon":this._hasIcon,"show-number":this._showNumber});return s`
|
|
192
240
|
<div class="${e}">
|
|
193
241
|
<div
|
|
194
242
|
class="kyn-accordion-item-title"
|
|
@@ -202,7 +250,10 @@ slot[name=icon]::slotted(span) {
|
|
|
202
250
|
id="kyn-accordion-item-title-${this._index}"
|
|
203
251
|
>
|
|
204
252
|
<div class="icon">
|
|
205
|
-
<slot
|
|
253
|
+
<slot
|
|
254
|
+
name="icon"
|
|
255
|
+
@slotchange=${e=>this._handleIconSlotChange(e)}
|
|
256
|
+
></slot>
|
|
206
257
|
</div>
|
|
207
258
|
|
|
208
259
|
${this._showNumber?s` <div class="number">${this._index}</div> `:null}
|
|
@@ -218,7 +269,7 @@ slot[name=icon]::slotted(span) {
|
|
|
218
269
|
</div>
|
|
219
270
|
|
|
220
271
|
<div class="right">
|
|
221
|
-
<div class="expand-icon">${p(
|
|
272
|
+
<div class="expand-icon">${p(y)}</div>
|
|
222
273
|
</div>
|
|
223
274
|
</div>
|
|
224
275
|
|
|
@@ -227,11 +278,13 @@ slot[name=icon]::slotted(span) {
|
|
|
227
278
|
id="kyn-accordion-item-body-${this._index}"
|
|
228
279
|
role="region"
|
|
229
280
|
aria-labelledby="kyn-accordion-item-title-${this._index}"
|
|
281
|
+
aria-hidden=${String(!this.opened)}
|
|
282
|
+
?inert=${!this.opened}
|
|
230
283
|
>
|
|
231
284
|
<div class="kyn-accordion-item-detail">
|
|
232
285
|
<slot name="body"></slot>
|
|
233
286
|
</div>
|
|
234
287
|
</div>
|
|
235
288
|
</div>
|
|
236
|
-
`}constructor(){super(...arguments),
|
|
289
|
+
`}constructor(){super(...arguments),a.set(this,i(this,O,!1)),b.set(this,(i(this,W),i(this,K,!1))),g.set(this,(i(this,A),i(this,B,1))),u.set(this,(i(this,D),i(this,T,!1))),f.set(this,(i(this,q),i(this,F,!1))),v.set(this,(i(this,P),i(this,R,!1))),x.set(this,(i(this,U),i(this,G,!1))),i(this,J)}},a=new WeakMap,b=new WeakMap,g=new WeakMap,u=new WeakMap,f=new WeakMap,v=new WeakMap,x=new WeakMap,e(w,"AccordionItem"),(()=>{var e;const i="function"==typeof Symbol&&Symbol.metadata?Object.create(null!==(e=M[Symbol.metadata])&&void 0!==e?e:null):void 0;$=[l({type:Boolean})],I=[l({type:Boolean})],S=[m()],z=[m()],N=[m()],H=[m()],j=[m()],t(w,null,$,{kind:"accessor",name:"opened",static:!1,private:!1,access:{has:e=>"opened"in e,get:e=>e.opened,set:(e,t)=>{e.opened=t}},metadata:i},O,W),t(w,null,I,{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:i},K,A),t(w,null,S,{kind:"accessor",name:"_index",static:!1,private:!1,access:{has:e=>"_index"in e,get:e=>e._index,set:(e,t)=>{e._index=t}},metadata:i},B,D),t(w,null,z,{kind:"accessor",name:"_showNumber",static:!1,private:!1,access:{has:e=>"_showNumber"in e,get:e=>e._showNumber,set:(e,t)=>{e._showNumber=t}},metadata:i},T,q),t(w,null,N,{kind:"accessor",name:"_filledHeader",static:!1,private:!1,access:{has:e=>"_filledHeader"in e,get:e=>e._filledHeader,set:(e,t)=>{e._filledHeader=t}},metadata:i},F,P),t(w,null,H,{kind:"accessor",name:"_compact",static:!1,private:!1,access:{has:e=>"_compact"in e,get:e=>e._compact,set:(e,t)=>{e._compact=t}},metadata:i},R,U),t(w,null,j,{kind:"accessor",name:"_hasIcon",static:!1,private:!1,access:{has:e=>"_hasIcon"in e,get:e=>e._hasIcon,set:(e,t)=>{e._hasIcon=t}},metadata:i},G,J),t(null,_={value:w},C,{kind:"class",name:w.name,metadata:i},null,E),w=_.value,i&&Object.defineProperty(w,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:i})})(),w.styles=r(k),i(w,E),w})();export{b as AccordionItem};
|
|
237
290
|
//# sourceMappingURL=accordionItem.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accordionItem.js","sources":["../../../../src/components/reusable/accordion/accordionItem.ts"],"sourcesContent":["/**\n * Copyright Kyndryl, Inc. 2022\n */\n\nimport { html, LitElement, unsafeCSS } from 'lit';\nimport { state, property, customElement } from 'lit/decorators.js';\nimport { classMap } from 'lit-html/directives/class-map.js';\nimport stylesheet from './accordionItem.scss?inline';\nimport { unsafeSVG } from 'lit/directives/unsafe-svg.js';\nimport chevronIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/24/chevron-down.svg';\n\n/**\n * Accordion Item component. *\n * @fires on-toggle - Emits the `opened` state when the accordion item opens/closes. `detail:{ opened: boolean }`.\n * @slot icon - Optional leading icon. 24px, or 16px for compact.\n * @slot body - Body of the accordion item.\n * @slot title - Title of the accordion item.\n * @slot subtitle - Optional subtitle of the accordion item.\n *\n */\n@customElement('kyn-accordion-item')\nexport class AccordionItem extends LitElement {\n static override styles = unsafeCSS(stylesheet);\n\n /** Accordion item opened state. */\n @property({ type: Boolean })\n accessor opened = false;\n\n /** Accordion item disabled state. */\n @property({ type: Boolean })\n accessor disabled = false;\n\n /**\n * The index of this item. Passed from the Accordion.\n * @ignore\n */\n @state() private accessor _index = 1;\n\n /**\n * Whether the number should be shown. Passed from the Accordion.\n * @ignore\n */\n @state() private accessor _showNumber = false;\n\n /**\n * Whether this item displays a filled header. Passed from the Accordion.\n * @ignore\n */\n @state() private accessor _filledHeader = false;\n\n /**\n * Whether this item is compact. Passed from the Accordion.\n * @ignore\n */\n @state() private accessor _compact = false;\n\n setIndex(index: number) {\n this._index = index;\n }\n\n setShowNumbers(value: boolean) {\n this._showNumber = value;\n }\n\n setFilledHeader(value: boolean) {\n this._filledHeader = value;\n }\n\n setCompact(value: boolean) {\n this._compact = value;\n }\n\n open() {\n if (!this.opened) this._toggleOpenState();\n }\n\n close() {\n if (this.opened) this._toggleOpenState();\n }\n\n private _handleClick(e: Event) {\n e.preventDefault();\n this._toggleOpenState();\n }\n\n private _handleKeypress(e: KeyboardEvent) {\n e.preventDefault();\n if (e.key == ' ' || e.key == 'Enter') this._toggleOpenState();\n }\n\n private _toggleOpenState() {\n if (!this.disabled) {\n this.opened = !this.opened;\n\n this._emitToggleEvent();\n }\n }\n\n private _emitToggleEvent() {\n const event = new CustomEvent('on-toggle', {\n bubbles: true,\n composed: true,\n detail: { opened: this.opened },\n });\n this.dispatchEvent(event);\n }\n\n override render() {\n const classes: any = classMap({\n 'kyn-accordion-item': true,\n opened: this.opened,\n disabled: this.disabled,\n 'filled-header': this._filledHeader,\n compact: this._compact,\n });\n\n return html`\n <div class=\"${classes}\">\n <div\n class=\"kyn-accordion-item-title\"\n aria-controls=\"kyn-accordion-item-body-${this._index}\"\n aria-expanded=${this.opened}\n aria-disabled=${this.disabled}\n tabindex=\"0\"\n role=\"button\"\n @click=\"${(e: Event) => this._handleClick(e)}\"\n @keypress=\"${(e: KeyboardEvent) => this._handleKeypress(e)}\"\n id=\"kyn-accordion-item-title-${this._index}\"\n >\n <div class=\"icon\">\n <slot name=\"icon\"></slot>\n </div>\n\n ${this._showNumber\n ? html` <div class=\"number\">${this._index}</div> `\n : null}\n\n <div>\n <div class=\"title\">\n <slot name=\"title\"></slot>\n </div>\n\n <div class=\"kyn-accordion-item-subtitle\">\n <slot name=\"subtitle\"></slot>\n </div>\n </div>\n\n <div class=\"right\">\n <div class=\"expand-icon\">${unsafeSVG(chevronIcon)}</div>\n </div>\n </div>\n\n <div\n class=\"kyn-accordion-item-body\"\n id=\"kyn-accordion-item-body-${this._index}\"\n role=\"region\"\n aria-labelledby=\"kyn-accordion-item-title-${this._index}\"\n >\n <div class=\"kyn-accordion-item-detail\">\n <slot name=\"body\"></slot>\n </div>\n </div>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kyn-accordion-item': AccordionItem;\n }\n}\n"],"names":["AccordionItem","customElement","LitElement","_classThis","_classSuper","opened","__classPrivateFieldGet","this","_AccordionItem_opened_accessor_storage","value","__classPrivateFieldSet","disabled","_AccordionItem_disabled_accessor_storage","_index","_AccordionItem__index_accessor_storage","_showNumber","_AccordionItem__showNumber_accessor_storage","_filledHeader","_AccordionItem__filledHeader_accessor_storage","_compact","_AccordionItem__compact_accessor_storage","setIndex","index","setShowNumbers","setFilledHeader","setCompact","open","_toggleOpenState","close","_handleClick","e","preventDefault","_handleKeypress","key","_emitToggleEvent","event","CustomEvent","bubbles","composed","detail","dispatchEvent","render","classes","classMap","compact","html","unsafeSVG","chevronIcon","set","__runInitializers","_opened_initializers","_opened_extraInitializers","_disabled_initializers","_disabled_extraInitializers","__index_initializers","__index_extraInitializers","__showNumber_initializers","__showNumber_extraInitializers","__filledHeader_initializers","__filledHeader_extraInitializers","__compact_initializers","_opened_decorators","property","type","Boolean","_disabled_decorators","__index_decorators","state","__showNumber_decorators","__filledHeader_decorators","__compact_decorators","__esDecorate","kind","name","static","private","access","has","obj","get","metadata","_metadata","__compact_extraInitializers","_classDescriptor","_classDecorators","_classExtraInitializers","styles","unsafeCSS","stylesheet"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"accordionItem.js","sources":["../../../../src/components/reusable/accordion/accordionItem.ts"],"sourcesContent":["/**\n * Copyright Kyndryl, Inc. 2022\n */\n\nimport { html, LitElement, unsafeCSS } from 'lit';\nimport { state, property, customElement } from 'lit/decorators.js';\nimport { classMap } from 'lit-html/directives/class-map.js';\nimport stylesheet from './accordionItem.scss?inline';\nimport { unsafeSVG } from 'lit/directives/unsafe-svg.js';\nimport chevronIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/24/chevron-down.svg';\n\n/**\n * Accordion Item component. *\n * @fires on-toggle - Emits the `opened` state when the accordion item opens/closes. `detail:{ opened: boolean }`.\n * @slot icon - Optional leading icon. 24px, or 16px for compact.\n * @slot body - Body of the accordion item.\n * @slot title - Title of the accordion item.\n * @slot subtitle - Optional subtitle of the accordion item.\n *\n */\n@customElement('kyn-accordion-item')\nexport class AccordionItem extends LitElement {\n static override styles = unsafeCSS(stylesheet);\n\n /** Accordion item opened state. */\n @property({ type: Boolean })\n accessor opened = false;\n\n /** Accordion item disabled state. */\n @property({ type: Boolean })\n accessor disabled = false;\n\n /**\n * The index of this item. Passed from the Accordion.\n * @ignore\n */\n @state() private accessor _index = 1;\n\n /**\n * Whether the number should be shown. Passed from the Accordion.\n * @ignore\n */\n @state() private accessor _showNumber = false;\n\n /**\n * Whether this item displays a filled header. Passed from the Accordion.\n * @ignore\n */\n @state() private accessor _filledHeader = false;\n\n /**\n * Whether this item is compact. Passed from the Accordion.\n * @ignore\n */\n @state() private accessor _compact = false;\n\n /**\n * Whether an icon is assigned to the icon slot.\n * @ignore\n */\n @state() private accessor _hasIcon = false;\n\n setIndex(index: number) {\n this._index = index;\n }\n\n setShowNumbers(value: boolean) {\n this._showNumber = value;\n }\n\n setFilledHeader(value: boolean) {\n this._filledHeader = value;\n }\n\n setCompact(value: boolean) {\n this._compact = value;\n }\n\n private _handleIconSlotChange(e: Event) {\n const slot = e.target as HTMLSlotElement;\n this._hasIcon = slot.assignedElements({ flatten: true }).length > 0;\n }\n\n override firstUpdated() {\n const iconSlot = this.renderRoot.querySelector(\n 'slot[name=\"icon\"]'\n ) as HTMLSlotElement | null;\n\n if (iconSlot) {\n this._hasIcon = iconSlot.assignedElements({ flatten: true }).length > 0;\n }\n }\n\n open() {\n if (!this.opened) this._toggleOpenState();\n }\n\n close() {\n if (this.opened) this._toggleOpenState();\n }\n\n private _handleClick(e: Event) {\n e.preventDefault();\n this._toggleOpenState();\n }\n\n private _handleKeypress(e: KeyboardEvent) {\n e.preventDefault();\n if (e.key == ' ' || e.key == 'Enter') this._toggleOpenState();\n }\n\n private _toggleOpenState() {\n if (!this.disabled) {\n this.opened = !this.opened;\n\n this._emitToggleEvent();\n }\n }\n\n private _emitToggleEvent() {\n const event = new CustomEvent('on-toggle', {\n bubbles: true,\n composed: true,\n detail: { opened: this.opened },\n });\n this.dispatchEvent(event);\n }\n\n override render() {\n const classes: any = classMap({\n 'kyn-accordion-item': true,\n opened: this.opened,\n disabled: this.disabled,\n 'filled-header': this._filledHeader,\n compact: this._compact,\n 'has-icon': this._hasIcon,\n 'show-number': this._showNumber,\n });\n\n return html`\n <div class=\"${classes}\">\n <div\n class=\"kyn-accordion-item-title\"\n aria-controls=\"kyn-accordion-item-body-${this._index}\"\n aria-expanded=${this.opened}\n aria-disabled=${this.disabled}\n tabindex=\"0\"\n role=\"button\"\n @click=\"${(e: Event) => this._handleClick(e)}\"\n @keypress=\"${(e: KeyboardEvent) => this._handleKeypress(e)}\"\n id=\"kyn-accordion-item-title-${this._index}\"\n >\n <div class=\"icon\">\n <slot\n name=\"icon\"\n @slotchange=${(e: Event) => this._handleIconSlotChange(e)}\n ></slot>\n </div>\n\n ${this._showNumber\n ? html` <div class=\"number\">${this._index}</div> `\n : null}\n\n <div>\n <div class=\"title\">\n <slot name=\"title\"></slot>\n </div>\n\n <div class=\"kyn-accordion-item-subtitle\">\n <slot name=\"subtitle\"></slot>\n </div>\n </div>\n\n <div class=\"right\">\n <div class=\"expand-icon\">${unsafeSVG(chevronIcon)}</div>\n </div>\n </div>\n\n <div\n class=\"kyn-accordion-item-body\"\n id=\"kyn-accordion-item-body-${this._index}\"\n role=\"region\"\n aria-labelledby=\"kyn-accordion-item-title-${this._index}\"\n aria-hidden=${String(!this.opened)}\n ?inert=${!this.opened}\n >\n <div class=\"kyn-accordion-item-detail\">\n <slot name=\"body\"></slot>\n </div>\n </div>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kyn-accordion-item': AccordionItem;\n }\n}\n"],"names":["AccordionItem","customElement","LitElement","_classThis","_classSuper","opened","__classPrivateFieldGet","this","_AccordionItem_opened_accessor_storage","value","__classPrivateFieldSet","disabled","_AccordionItem_disabled_accessor_storage","_index","_AccordionItem__index_accessor_storage","_showNumber","_AccordionItem__showNumber_accessor_storage","_filledHeader","_AccordionItem__filledHeader_accessor_storage","_compact","_AccordionItem__compact_accessor_storage","_hasIcon","_AccordionItem__hasIcon_accessor_storage","setIndex","index","setShowNumbers","setFilledHeader","setCompact","_handleIconSlotChange","e","slot","target","assignedElements","flatten","length","firstUpdated","iconSlot","renderRoot","querySelector","open","_toggleOpenState","close","_handleClick","preventDefault","_handleKeypress","key","_emitToggleEvent","event","CustomEvent","bubbles","composed","detail","dispatchEvent","render","classes","classMap","compact","html","unsafeSVG","chevronIcon","String","set","__runInitializers","_opened_initializers","_opened_extraInitializers","_disabled_initializers","_disabled_extraInitializers","__index_initializers","__index_extraInitializers","__showNumber_initializers","__showNumber_extraInitializers","__filledHeader_initializers","__filledHeader_extraInitializers","__compact_initializers","__compact_extraInitializers","__hasIcon_initializers","_opened_decorators","property","type","Boolean","_disabled_decorators","__index_decorators","state","__showNumber_decorators","__filledHeader_decorators","__compact_decorators","__hasIcon_decorators","__esDecorate","kind","name","static","private","access","has","obj","get","metadata","_metadata","__hasIcon_extraInitializers","_classDescriptor","_classDecorators","_classExtraInitializers","styles","unsafeCSS","stylesheet"],"mappings":"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"}
|
|
@@ -924,6 +924,9 @@ slot[name=add-option-button]::slotted(*) {
|
|
|
924
924
|
.placeholder-text {
|
|
925
925
|
color: var(--kd-color-text-level-primary);
|
|
926
926
|
}
|
|
927
|
+
.select[disabled] .placeholder-text {
|
|
928
|
+
color: var(--kd-color-text-level-disabled);
|
|
929
|
+
}
|
|
927
930
|
|
|
928
931
|
.dropdown.ai-connected .wrapper .custom .options {
|
|
929
932
|
box-shadow: var(--kd-elevation-level-1);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dropdown.js","sources":["../../../../src/components/reusable/dropdown/dropdown.ts"],"sourcesContent":["import { unsafeSVG } from 'lit-html/directives/unsafe-svg.js';\nimport { LitElement, PropertyValues, html, unsafeCSS } from 'lit';\nimport { customElement, property, state, query } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport DropdownScss from './dropdown.scss?inline';\nimport { FormMixin } from '../../../common/mixins/form-input';\nimport { deepmerge } from 'deepmerge-ts';\nimport { nothing } from 'lit';\n\nimport './dropdownOption';\nimport './enhancedDropdownOption';\nimport '../tag';\nimport '../button';\nimport '../textInput';\n\nimport { DropdownOption } from './dropdownOption';\nimport { EnhancedDropdownOption } from './enhancedDropdownOption';\n\nimport downIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/chevron-down.svg';\nimport errorIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/error-filled.svg';\nimport clearIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/close-simple.svg';\n\nconst _defaultTextStrings = {\n title: 'Dropdown',\n selectedOptions: 'List of selected options',\n requiredText: 'Required',\n errorText: 'Error',\n clearAll: 'Clear all',\n clear: 'Clear',\n addItem: 'Add item...',\n add: 'Add',\n duplicateOption: 'Duplicate option. Please select a unique option.',\n addOptionInvalid: 'Please check this value and try again.',\n};\n\n/**\n * Dropdown, single select.\n * @fires on-change - Captures the dropdown change event and emits the selected value and original event details. `detail:{ value: string/array }`\n * @fires on-search - Capture the search input event and emits the search text.`detail:{ searchText: string }`\n * @fires on-clear-all - Captures the the multi-select clear all button click event and emits the value. `detail:{ value: array }`\n * @fires on-add-option - Captures the add button click and emits the newly added option. `detail:{ value: string }`\n * @slot unnamed - Slot for dropdown options.\n * @slot tooltip - Slot for tooltip.\n * @slot anchor - Slot for custom dropdown anchor element. If not provided, defaults to standard input-style anchor.\n * @slot add-option-input - Slot for providing a custom “Add new option” input.\n * @slot add-option-button - Slot for providing a custom “Add new option” button.\n * @attr {string/array} [value=''/[]] - The selected value(s) of the input. For single select, it is a string. For multi-select, it is an array of strings.\n * @attr {string} [name=''] - The name of the input, used for form submission.\n * @attr {string} [invalidText=''] - The custom validation message when the input is invalid.\n */\n@customElement('kyn-dropdown')\nexport class Dropdown extends FormMixin(LitElement) {\n static override styles = unsafeCSS(DropdownScss);\n\n /** Label text. */\n @property({ type: String })\n accessor label = '';\n\n /** Dropdown size/height. \"xs\", \"sm\", \"md\", or \"lg\". */\n @property({ type: String })\n accessor size = 'md';\n\n /** Dropdown kind. */\n @property({ type: String, attribute: 'kind' })\n accessor kind: 'ai' | 'default' = 'default';\n\n /** Dropdown inline style type. */\n @property({ type: Boolean })\n accessor inline = false;\n\n /** Optional text beneath the input. */\n @property({ type: String })\n accessor caption = '';\n\n /** Dropdown placeholder. */\n @property({ type: String })\n accessor placeholder = '';\n\n /** Listbox/drawer open state. */\n @property({ type: Boolean, reflect: true })\n accessor open = false;\n\n /** Makes the dropdown searchable. */\n @property({ type: Boolean })\n accessor searchable = false;\n\n /**\n * Minimum number of options required before the search input is shown.\n * When set to a value greater than `0`, the search input will only\n * render if the number of slotted options meets or exceeds this\n * threshold — this implicitly enables search without needing\n * `searchable`. When `0` or not set, search visibility is controlled\n * solely by the `searchable` prop.\n */\n @property({ type: Number })\n accessor searchThreshold = 0;\n\n /** Makes the dropdown enhanced. */\n @property({ type: Boolean })\n accessor enhanced = false;\n\n /** Dropdown read-only state (focusable but not interactive). */\n @property({ type: Boolean, reflect: true })\n accessor readonly = false;\n\n /** Searchable variant filters results. */\n @property({ type: Boolean })\n accessor filterSearch = false;\n\n /** Enabled multi-select functionality. */\n @property({ type: Boolean })\n accessor multiple = false;\n\n /** Makes the dropdown required. */\n @property({ type: Boolean })\n accessor required = false;\n\n /** Visually hide the label. */\n @property({ type: Boolean })\n accessor hideLabel = false;\n\n /** Dropdown disabled state. */\n @property({ type: Boolean })\n accessor disabled = false;\n\n /** Hide the tags below multi-select. */\n @property({ type: Boolean })\n accessor hideTags = false;\n\n /** Adds a \"Select all\" option to the top of a multi-select dropdown. */\n @property({ type: Boolean })\n accessor selectAll = false;\n\n /** \"Select all\" text customization. */\n @property({ type: String })\n accessor selectAllText = 'Select all';\n\n /** Menu CSS min-width value. */\n @property({ type: String })\n accessor menuMinWidth = '120px';\n\n /** Controls direction that dropdown opens. */\n @property({ type: String })\n accessor openDirection: 'auto' | 'up' | 'down' = 'auto';\n\n /** Is \"Select All\" box checked.\n * @internal\n */\n @property({ type: Boolean })\n accessor selectAllChecked = false;\n\n /** Is \"Select All\" indeterminate.\n * @internal\n */\n @property({ type: Boolean })\n accessor selectAllIndeterminate = false;\n\n /** Text string customization. */\n @property({ type: Object })\n accessor textStrings = _defaultTextStrings;\n\n /** Enables the \"Add New Option\" feature. */\n @property({ type: Boolean })\n accessor allowAddOption = false;\n\n /** @internal */\n @state()\n accessor _hasSlottedAddOptionInput = false;\n\n /** @internal */\n @state()\n accessor _hasSlottedAddOptionButton = false;\n\n /** @internal */\n @state()\n accessor _lastAddOptionInvalidText = '';\n\n /** Enables duplicate prevention when adding new options. */\n @property({ type: Boolean })\n accessor preventDuplicateAddOption = true;\n\n /** Validator function for new option input.\n * @internal\n * Return a string to mark invalid and show that message.\n * Return `null`/`undefined` for valid.\n */\n @property({ attribute: false })\n accessor addOptionValidator:\n | ((value: string, ctx: { dropdown: Dropdown }) => string | null | void)\n | null = null;\n\n /** Allows duplicate selections in multi-select dropdowns. */\n @property({ type: Boolean })\n accessor allowDuplicateSelections = true;\n\n /** Internal text strings.\n * @internal\n */\n @state()\n accessor _textStrings = _defaultTextStrings;\n\n /**\n * New dropdown option value.\n * @ignore\n */\n @state()\n accessor newOptionValue = '';\n\n /**\n * Selected option text, automatically derived.\n * @ignore\n */\n @state()\n accessor text = '';\n\n /**\n * Search input value.\n */\n @property({ type: String })\n accessor searchText = '';\n\n /**\n * Assistive text for screen readers.\n * @ignore\n */\n @state()\n accessor assistiveText = 'Dropdown menu options.';\n\n /**\n * Queries any slotted options, default or enhanced.\n * @ignore\n */\n protected get options(): Array<DropdownOption | EnhancedDropdownOption> {\n return Array.from(\n this.querySelectorAll<DropdownOption | EnhancedDropdownOption>(\n 'kyn-dropdown-option, kyn-enhanced-dropdown-option'\n )\n );\n }\n\n /**\n * Whether the search input should be visible. Returns `true` when:\n * - `searchable` is `true` and no threshold is set (always show), or\n * - `searchable` is `true` and options count meets the threshold, or\n * - `searchThreshold` > 0 and options count meets the threshold\n * (implicitly enables search without needing `searchable`).\n * @ignore\n */\n protected get _isSearchVisible(): boolean {\n if (this.searchThreshold && this.options.length >= this.searchThreshold) {\n return true;\n }\n if (!this.searchable) return false;\n if (!this.searchThreshold) return true;\n return this.options.length >= this.searchThreshold;\n }\n\n /**\n * Queries any slotted selected options.\n * @ignore\n */\n protected get selectedOptions(): Array<\n DropdownOption | EnhancedDropdownOption\n > {\n return this.options.filter((opt) => opt.selected);\n }\n\n /**\n * Queries the .search DOM element.\n * @ignore\n */\n @query('.search')\n accessor searchEl!: HTMLInputElement;\n\n /**\n * Queries the .select DOM element.\n * @ignore\n */\n @query('.select')\n accessor buttonEl!: HTMLElement;\n\n /**\n * Queries the .options DOM element.\n * @ignore\n */\n @query('.options')\n accessor listboxEl!: HTMLElement;\n\n /**\n * Queries the .clear-multiple DOM element.\n * @ignore\n */\n @query('.clear-multiple')\n accessor clearMultipleEl!: HTMLElement;\n\n /**\n * Queries the add-option input slot (if provided).\n * @ignore\n */\n @query('slot[name=\"add-option-input\"]')\n accessor addOptionInputSlotEl!: HTMLSlotElement;\n\n /**\n * Queries the add-option button slot (if provided).\n * @ignore\n */\n @query('slot[name=\"add-option-button\"]')\n accessor addOptionButtonSlotEl!: HTMLSlotElement;\n\n private _getSlottedAddOptionInput(): HTMLElement | null {\n const assigned =\n this.addOptionInputSlotEl?.assignedElements({ flatten: true }) ?? [];\n\n return (assigned[0] as HTMLElement | undefined) ?? null;\n }\n\n private _getAddOptionInputEls(): {\n slottedEl: HTMLElement | null;\n slottedNative: HTMLInputElement | null;\n fallbackNative: HTMLInputElement | null;\n } {\n const slottedEl = this._getSlottedAddOptionInput();\n\n const slottedNative =\n (slottedEl as any)?.tagName === 'KYN-TEXT-INPUT'\n ? ((slottedEl as any).shadowRoot?.querySelector?.(\n 'input'\n ) as HTMLInputElement | null) ?? null\n : (slottedEl as HTMLInputElement | null);\n\n const fallbackNative =\n this.shadowRoot?.querySelector<HTMLInputElement>(\n 'kyn-text-input.add-option-input input, input.add-option-input, .add-option-input input'\n ) ?? null;\n\n return { slottedEl, slottedNative, fallbackNative };\n }\n\n private _getOptionDisplayText(\n option: DropdownOption | EnhancedDropdownOption\n ): string {\n if (option.tagName === 'KYN-ENHANCED-DROPDOWN-OPTION') {\n const titleSlot = option.querySelector('[slot=\"title\"]');\n const slotText = titleSlot?.textContent?.trim();\n return (\n slotText ||\n (option as any).displayText ||\n option.value ||\n ''\n ).trim();\n }\n\n return (option.textContent ?? '').trim();\n }\n\n /**\n * Open drawer upwards.\n * @ignore\n */\n @state()\n accessor _openUpwards = false;\n\n /**\n * Tags value/text reference.\n * @ignore\n */\n @state()\n accessor _tags: Array<object> = [];\n\n /** Toggles on clicking enter key in the search input.\n * @internal\n */\n searchTextEntered: any = false;\n\n /** Toggles on clicking enter key in the search input.\n * @internal\n */\n prevSearchKeydownIndex = -1;\n\n /** Event handlers for document click\n * @internal\n */\n private _onDocumentClick = (e: Event) => this._handleClickOut(e);\n\n /** Event handlers for child option events (click).\n * @internal\n */\n private _onChildClick = (e: Event) => this._handleClick(e as any);\n\n /** Event handlers for child option events (remove).\n * @internal\n */\n private _onChildRemove = (_e: Event) => this._handleRemoveOption();\n\n /** Event handlers for child option events (blur).\n * @internal\n */\n private _onChildBlur = (e: Event) => this._handleBlur(e as any);\n\n /** @internal */\n private _addOptionInputCleanup?: () => void;\n\n private _handleAddOptionSlotChange() {\n const hasInput =\n (this.addOptionInputSlotEl?.assignedElements({ flatten: true }) ?? [])\n .length > 0;\n const hasButton =\n (this.addOptionButtonSlotEl?.assignedElements({ flatten: true }) ?? [])\n .length > 0;\n\n this._hasSlottedAddOptionInput = hasInput;\n this._hasSlottedAddOptionButton = hasButton;\n\n // auto-enable when either slot is provided\n if ((hasInput || hasButton) && !this.allowAddOption) {\n this.allowAddOption = true;\n }\n this._addOptionInputCleanup?.();\n this._attachAddOptionInputListener();\n }\n\n private _attachAddOptionInputListener() {\n const textInput = this._getAddOptionTextInput();\n if (!textInput) return;\n\n const handler = (e: CustomEvent) => {\n this.newOptionValue = e.detail?.value ?? '';\n\n // clear invalid text on input change\n if (this._lastAddOptionInvalidText) {\n textInput.invalidText = '';\n this._lastAddOptionInvalidText = '';\n }\n };\n textInput.addEventListener('on-input', handler);\n this._addOptionInputCleanup = () => {\n textInput.removeEventListener('on-input', handler);\n };\n }\n\n private _getAddOptionTextInput() {\n const assigned =\n this.addOptionInputSlotEl?.assignedElements({ flatten: true }) ?? [];\n return assigned.find(\n (el) => el.tagName?.toLowerCase() === 'kyn-text-input'\n ) as any | undefined;\n }\n\n /** @ignore */\n private get _addOptionBlocked(): { blocked: boolean; message: string } {\n const v = this.newOptionValue.trim();\n\n if (!v) return { blocked: true, message: '' };\n\n const { valid, message } = this._validateNewOptionValue(v);\n if (!valid) {\n return {\n blocked: true,\n message: message || this._textStrings.addOptionInvalid,\n };\n }\n\n return { blocked: false, message: '' };\n }\n\n override render() {\n const mainDropdownClasses = {\n dropdown: true,\n 'ai-connected': this.kind === 'ai',\n };\n\n const selectedCount =\n this.multiple && Array.isArray(this.value) ? this.value.length : 0;\n\n const addBlocked = this.allowAddOption\n ? this._addOptionBlocked.blocked\n : false;\n\n return html`\n <div\n class=${classMap(mainDropdownClasses)}\n ?disabled=${this.disabled}\n ?readonly=${!this.disabled && this.readonly}\n ?open=${this.open}\n ?inline=${this.inline}\n ?searchable=${this._isSearchVisible}\n >\n <label\n id=\"label-${this.name}\"\n class=\"label-text ${this.hideLabel || this.inline ? 'sr-only' : ''}\"\n for=${this.name}\n >\n ${this.required\n ? html`\n <abbr\n class=\"required\"\n title=${this._textStrings.requiredText}\n role=\"img\"\n aria-label=${this._textStrings?.requiredText || 'Required'}\n >\n *\n </abbr>\n `\n : null}\n ${this.label}\n <slot name=\"tooltip\"></slot>\n </label>\n\n <div\n class=${classMap({\n wrapper: true,\n open: this.open,\n })}\n >\n <div\n class=\"custom\"\n @click=${(e: MouseEvent) => this.handleAnchorClick(e)}\n @keydown=${(e: KeyboardEvent) => this.handleAnchorKeydown(e)}\n >\n <slot name=\"anchor\">\n <div\n class=\"${classMap({\n select: true,\n 'is-readonly': !this.disabled && this.readonly,\n multiple: this.multiple,\n 'input-custom': true,\n 'size--xs': this.size === 'xs',\n 'size--sm': this.size === 'sm',\n 'size--lg': this.size === 'lg',\n inline: this.inline,\n })}\"\n aria-labelledby=\"label-${this.name}\"\n aria-expanded=${this.open}\n aria-controls=\"options\"\n role=\"combobox\"\n id=${this.name}\n name=${this.name}\n title=${this._textStrings.title}\n ?required=${this.required}\n ?disabled=${this.disabled}\n ?invalid=${this._isInvalid}\n tabindex=${ifDefined(\n this.disabled ? undefined : this._isSearchVisible ? -1 : 0\n )}\n @mousedown=${(e: MouseEvent) => {\n if (!this._isSearchVisible && !this.readonly)\n e.preventDefault();\n }}\n aria-readonly=${this.readonly}\n @blur=${(e: any) => e.stopPropagation()}\n >\n ${this.multiple && selectedCount > 0\n ? html`\n <button\n class=${classMap({\n 'clear-multiple': true,\n })}\n aria-label=\"${selectedCount} items selected. Clear selections\"\n ?disabled=${this.disabled || this.readonly}\n title=${this._textStrings.clear}\n @click=${(e: Event) => this.handleClearMultiple(e)}\n >\n ${selectedCount}\n <span style=\"display:flex;\" class=\"clear-multiple-icon\">\n ${unsafeSVG(clearIcon)}\n </span>\n </button>\n `\n : null}\n ${this._isSearchVisible\n ? html`\n <input\n class=\"search\"\n type=\"text\"\n placeholder=${this.placeholder}\n value=${this.searchText}\n ?disabled=${this.disabled}\n ?readonly=${!this.disabled && this.readonly}\n aria-disabled=${this.disabled}\n @keydown=${(e: any) => this.handleSearchKeydown(e)}\n @input=${(e: any) => this.handleSearchInput(e)}\n @blur=${(e: any) => e.stopPropagation()}\n @click=${(e: any) => this.handleSearchClick(e)}\n />\n `\n : html`\n <span\n class=\"${classMap({\n 'placeholder-text': this.text === '',\n })}\"\n >\n ${this.multiple\n ? this.placeholder\n : this.value === ''\n ? this.placeholder\n : this.text}\n </span>\n `}\n <span class=\"arrow-icon\">${unsafeSVG(downIcon)}</span>\n </div>\n </slot>\n\n <div\n id=\"options\"\n class=${classMap({\n options: true,\n open: this.open,\n upwards: this._openUpwards,\n })}\n style=\"min-width: ${this.menuMinWidth};\"\n aria-hidden=${!this.open}\n @keydown=${this.handleListKeydown}\n @blur=${this.handleListBlur}\n @focus=${this._handleListFocus}\n >\n ${this.allowAddOption\n ? html`\n <div class=\"add-option-container\">\n <div class=\"add-option\">\n <div\n class=\"add-option-row\"\n @click=${this._onAddOptionRowClick}\n @keydown=${(e: KeyboardEvent) => {\n this._addOptionRowKeydown(e);\n }}\n @mousedown=${(e: MouseEvent) => e.stopPropagation()}\n >\n <slot\n name=\"add-option-input\"\n @slotchange=${() =>\n this._handleAddOptionSlotChange()}\n >\n <kyn-text-input\n class=\"add-option-input\"\n type=\"text\"\n label=\"Add new option\"\n hideLabel\n placeholder=${this._textStrings.addItem}\n .value=${this.newOptionValue}\n @on-input=${this._handleInputNewOption as any}\n @input=${this._handleInputNewOption as any}\n @focus=${this._onAddOptionInputFocus}\n ?disabled=${this.disabled || this.readonly}\n ></kyn-text-input>\n </slot>\n\n <slot\n name=\"add-option-button\"\n @slotchange=${() =>\n this._handleAddOptionSlotChange()}\n >\n <kyn-button\n class=\"add-option-button\"\n type=\"button\"\n size=\"small\"\n kind=\"secondary\"\n ?disabled=${this.disabled ||\n this.readonly ||\n addBlocked}\n @on-click=${this._handleAddOption}\n >\n ${this._textStrings.add}\n </kyn-button>\n </slot>\n </div>\n </div>\n\n ${null}\n </div>\n `\n : null}\n\n <div\n role=\"listbox\"\n aria-labelledby=\"label-${this.name}\"\n class=${classMap({\n 'dropdown-listbox': true,\n 'ai-connected': this.kind === 'ai',\n })}\n >\n ${this.multiple && this.selectAll\n ? html`\n ${this.enhanced\n ? html`\n <kyn-enhanced-dropdown-option\n class=\"select-all\"\n value=\"selectAll\"\n multiple\n ?selected=${this.selectAllChecked}\n ?indeterminate=${this.selectAllIndeterminate}\n ?disabled=${this.disabled}\n >\n ${this.selectAllText}\n </kyn-enhanced-dropdown-option>\n `\n : html`\n <kyn-dropdown-option\n class=\"select-all\"\n value=\"selectAll\"\n multiple\n ?selected=${this.selectAllChecked}\n ?indeterminate=${this.selectAllIndeterminate}\n ?disabled=${this.disabled}\n >\n ${this.selectAllText}\n </kyn-dropdown-option>\n `}\n `\n : null}\n\n <slot\n id=\"children\"\n @slotchange=${() => this.handleSlotChange()}\n ></slot>\n </div>\n </div>\n </div>\n ${this.hasSearch\n ? html`\n <kyn-button\n ?disabled=${this.disabled || this.readonly}\n class=\"clear-button dropdown-clear\"\n kind=${this.kind === 'ai' ? 'ghost-ai' : 'ghost'}\n size=${this.size === 'xs' ? 'extra-small' : 'small'}\n description=${this._textStrings.clearAll}\n @click=${(e: Event) => this.handleClear(e)}\n >\n <span style=\"display:flex;\">${unsafeSVG(clearIcon)}</span>\n </kyn-button>\n `\n : null}\n </div>\n ${this.renderHelperContent()}\n </div>\n `;\n }\n\n /** @ignore */\n private _addOptionRowKeydown(e: KeyboardEvent) {\n if (e.key === 'Enter') {\n e.preventDefault();\n e.stopPropagation();\n this._handleAddOption();\n return;\n }\n\n if (e.key === 'Escape') {\n e.preventDefault();\n e.stopPropagation();\n this._clearAddOptionInput();\n this.open = false;\n this.buttonEl?.focus?.();\n return;\n }\n\n e.stopPropagation();\n }\n\n private canOpen(): boolean {\n return !this.disabled && !this.readonly;\n }\n\n private handleAnchorClick(e: MouseEvent) {\n if (!this.canOpen()) return;\n\n const path = (e.composedPath?.() || []) as Array<EventTarget>;\n const isInOptions =\n path.some((t) => (t as HTMLElement)?.classList?.contains('options')) ||\n (e.target as HTMLElement)?.closest?.(\n 'kyn-dropdown-option, kyn-enhanced-dropdown-option, .add-option'\n );\n\n if (isInOptions) return;\n\n this.handleClick();\n }\n\n /**\n * @ignore\n */\n private _onAddOptionInputFocus = () => {\n this.assistiveText = 'Add new option input';\n };\n\n private _clearAddOptionInput() {\n this.newOptionValue = '';\n\n const slottedInput = this._getSlottedAddOptionInput() as any;\n\n if (slottedInput?.tagName === 'KYN-TEXT-INPUT') {\n slottedInput.value = '';\n const nativeInput = slottedInput.shadowRoot?.querySelector?.(\n 'input'\n ) as HTMLInputElement | null;\n if (nativeInput) nativeInput.value = '';\n }\n\n const fallback =\n this.shadowRoot?.querySelector<HTMLInputElement>('.add-option-input');\n if (fallback) fallback.value = '';\n }\n\n private _validateNewOptionValue(valueRaw: string): {\n valid: boolean;\n message: string;\n } {\n const value = valueRaw.trim();\n\n if (value.length === 0) return { valid: true, message: '' };\n\n const { slottedEl, fallbackNative } = this._getAddOptionInputEls();\n\n const slottedAsAny = slottedEl as any;\n\n const pattern =\n typeof slottedAsAny?.pattern === 'string'\n ? slottedAsAny.pattern\n : typeof slottedEl?.getAttribute?.('pattern') === 'string'\n ? (slottedEl!.getAttribute('pattern') as string)\n : typeof fallbackNative?.getAttribute?.('pattern') === 'string'\n ? (fallbackNative!.getAttribute('pattern') as string)\n : '';\n\n const minLengthRaw = Number.isFinite(slottedAsAny?.minLength)\n ? Number(slottedAsAny.minLength)\n : slottedEl?.getAttribute?.('minlength')\n ? Number(slottedEl.getAttribute('minlength'))\n : fallbackNative?.getAttribute?.('minlength')\n ? Number(fallbackNative.getAttribute('minlength'))\n : undefined;\n\n const maxLengthRaw = Number.isFinite(slottedAsAny?.maxLength)\n ? Number(slottedAsAny.maxLength)\n : slottedEl?.getAttribute?.('maxlength')\n ? Number(slottedEl.getAttribute('maxlength'))\n : fallbackNative?.getAttribute?.('maxlength')\n ? Number(fallbackNative.getAttribute('maxlength'))\n : undefined;\n\n const minLength =\n Number.isFinite(minLengthRaw) && (minLengthRaw as number) > 0\n ? (minLengthRaw as number)\n : undefined;\n\n const maxLength =\n Number.isFinite(maxLengthRaw) && (maxLengthRaw as number) > 0\n ? (maxLengthRaw as number)\n : undefined;\n\n if (typeof minLength === 'number' && value.length < minLength) {\n return { valid: false, message: '' };\n }\n\n if (typeof maxLength === 'number' && value.length > maxLength) {\n return { valid: false, message: '' };\n }\n\n if (pattern) {\n try {\n const re = new RegExp(pattern);\n if (!re.test(value)) {\n return { valid: false, message: '' };\n }\n } catch {\n // Invalid regex pattern provided by consuming dev\n }\n }\n\n if (this.preventDuplicateAddOption) {\n const needle = value.toLowerCase();\n const exists = this.options.some(\n (opt) => opt.value.trim().toLowerCase() === needle\n );\n if (exists)\n return { valid: false, message: this._textStrings.duplicateOption };\n }\n\n if (this.addOptionValidator) {\n const result = this.addOptionValidator(value, { dropdown: this });\n const msg = typeof result === 'string' ? result : '';\n if (msg) return { valid: false, message: msg };\n }\n\n return { valid: true, message: '' };\n }\n\n private handleAnchorKeydown(e: KeyboardEvent) {\n if (!this.canOpen()) {\n const openKeys = [' ', 'Enter', 'ArrowDown', 'ArrowUp'];\n if (openKeys.includes(e.key)) e.preventDefault();\n return;\n }\n\n this.handleButtonKeydown(\n e as unknown as KeyboardEvent & { keyCode: number }\n );\n }\n\n override firstUpdated() {\n if (this.placeholder === '') {\n if (this._isSearchVisible) {\n this.placeholder = 'Search';\n } else {\n this.placeholder = this.multiple ? 'Select items' : 'Select an option';\n }\n }\n }\n\n private renderHelperContent() {\n return html`\n ${this.multiple && !this.hideTags && this._tags.length\n ? html`\n <kyn-tag-group\n ?filter=${this.disabled || this.readonly ? false : true}\n role=\"list\"\n aria-label=${this._textStrings.selectedOptions}\n data-readonly=${this.readonly ? '' : nothing}\n >\n ${this._tags.map(\n (tag: any) => html`\n <kyn-tag\n role=\"listitem\"\n tagColor=${this.kind === 'ai' ? 'ai' : 'default'}\n label=${tag.text}\n ?disabled=${this.disabled || tag.disabled || this.readonly}\n @on-close=${() => this.handleTagClear(tag)}\n ></kyn-tag>\n `\n )}\n </kyn-tag-group>\n `\n : null}\n ${this.caption !== ''\n ? html`<div class=\"caption\" aria-disabled=${this.disabled}>\n ${this.caption}\n </div>`\n : null}\n ${this._isInvalid\n ? html`\n <div class=\"error\">\n <span\n class=\"error-icon\"\n role=\"img\"\n title=${this._textStrings.errorText}\n aria-label=${this._textStrings.errorText}\n >${unsafeSVG(errorIcon)}</span\n >\n ${this.invalidText || this._internalValidationMsg}\n </div>\n `\n : null}\n\n <div\n class=\"assistive-text\"\n role=\"status\"\n aria-live=\"assertive\"\n aria-relevant=\"additions text\"\n >\n ${this.assistiveText}\n </div>\n `;\n }\n\n private handleSlotChange() {\n this.updateChildOptions();\n this._updateOptions();\n this._updateSelectedText();\n }\n\n private updateChildOptions() {\n const slot = this.shadowRoot?.querySelector('#children') as HTMLSlotElement;\n const options = slot.assignedElements({ flatten: true }) as HTMLElement[];\n\n options.forEach((option) => {\n const tag = option.tagName;\n if (\n tag === 'KYN-DROPDOWN-OPTION' ||\n tag === 'KYN-ENHANCED-DROPDOWN-OPTION'\n ) {\n (option as any).allowAddOption = this.allowAddOption;\n (option as any).multiple = this.multiple;\n (option as any).readonly = this.readonly;\n }\n });\n }\n\n private handleClick() {\n if (!this.canOpen()) return;\n\n this.open = !this.open;\n if (this._isSearchVisible) this.searchEl.focus();\n else this.buttonEl.focus();\n }\n\n private handleButtonKeydown(e: any) {\n if (this.readonly) {\n if (e.key === 'Escape') {\n this.open = false;\n this.buttonEl?.focus();\n }\n return;\n }\n this.handleKeyboard(e, e.keyCode, 'button');\n }\n\n private handleListKeydown(e: KeyboardEvent & { keyCode: number }) {\n const path = (e.composedPath?.() ?? []) as EventTarget[];\n\n const isFromAddOption = path.some((t) => {\n const el = t as HTMLElement | null;\n if (!el) return false;\n\n const tag = (el.tagName ?? '').toUpperCase();\n\n return (\n el.classList?.contains?.('add-option-row') ||\n el.classList?.contains?.('add-option-input') ||\n tag === 'KYN-TEXT-INPUT' ||\n tag === 'INPUT' ||\n Boolean(el.closest?.('.add-option'))\n );\n });\n\n if (isFromAddOption) {\n return;\n }\n\n const isFromOption = path.some((t) => {\n const el = t as HTMLElement | null;\n if (!el) return false;\n const tag = (el.tagName ?? '').toUpperCase();\n return (\n tag === 'KYN-DROPDOWN-OPTION' ||\n tag === 'KYN-ENHANCED-DROPDOWN-OPTION' ||\n Boolean(\n el.closest?.('kyn-dropdown-option, kyn-enhanced-dropdown-option')\n )\n );\n });\n\n if (isFromOption) {\n return;\n }\n\n if (this.readonly) {\n if ((e as KeyboardEvent).key === 'Escape') {\n e.preventDefault();\n this.open = false;\n this.buttonEl?.focus?.();\n }\n return;\n }\n\n const TAB_KEY_CODE = 9;\n\n if (e.keyCode !== TAB_KEY_CODE) {\n e.preventDefault();\n }\n\n this.handleKeyboard(e as any, e.keyCode, 'list');\n }\n\n private _handleListFocus() {\n const selectAllOptions = Array.from(\n this.shadowRoot?.querySelectorAll('.select-all') || []\n ) as any[];\n const filteredOptions = this.options.filter(\n (option: any) => option.style.display !== 'none'\n );\n const visibleOptions = [...selectAllOptions, ...filteredOptions] as any[];\n\n const firstEnabled = visibleOptions.find((o: any) => !o.disabled) as any;\n if (!firstEnabled) return;\n\n visibleOptions.forEach((o: any) => (o.highlighted = false));\n\n firstEnabled.focus?.({ preventScroll: true });\n firstEnabled.highlighted = true;\n firstEnabled.scrollIntoView({ block: 'nearest' });\n\n this.assistiveText = firstEnabled.text || 'Option';\n }\n\n private handleListBlur(e: FocusEvent): void {\n if (this.multiple) {\n return;\n }\n\n this.options.forEach((o) => (o.highlighted = false));\n const target = e.relatedTarget as HTMLElement | null;\n\n if (\n target &&\n (target.closest('kyn-dropdown-option') ||\n target.closest('kyn-enhanced-dropdown-option') ||\n target.classList.contains('search') ||\n target.closest('.add-option'))\n ) {\n return;\n }\n\n this.open = false;\n this.assistiveText = 'Dropdown menu options.';\n }\n\n private handleKeyboard(\n e: KeyboardEvent & { keyCode: number; target: EventTarget | null },\n keyCode: number,\n target: 'button' | 'list' | 'addOption'\n ) {\n const SPACEBAR_KEY_CODE = [0, 32] as const;\n const ENTER_KEY_CODE = 13;\n const DOWN_ARROW_KEY_CODE = 40;\n const UP_ARROW_KEY_CODE = 38;\n const ESCAPE_KEY_CODE = 27;\n\n const selectAllOptions = Array.from(\n this.shadowRoot?.querySelectorAll<HTMLElement>('.select-all') ?? []\n );\n\n const filteredOptions = this.options.filter(\n (option) => (option as unknown as HTMLElement).style.display !== 'none'\n );\n\n const visibleOptions = [...selectAllOptions, ...filteredOptions] as Array<\n | HTMLElement\n | (DropdownOption | EnhancedDropdownOption)\n | (HTMLElement & {\n value?: string;\n selected?: boolean;\n highlighted?: boolean;\n disabled?: boolean;\n text?: string;\n })\n >;\n\n const highlightedEl = visibleOptions.find(\n (option) => (option as any).highlighted\n ) as any;\n\n const selectedEl = visibleOptions.find(\n (option) => (option as any).selected\n ) as any;\n\n let highlightedIndex = highlightedEl\n ? visibleOptions.indexOf(highlightedEl)\n : selectedEl\n ? visibleOptions.indexOf(selectedEl)\n : 0;\n\n if (\n SPACEBAR_KEY_CODE.includes(keyCode as (typeof SPACEBAR_KEY_CODE)[number])\n ) {\n e.preventDefault();\n }\n\n if (this.readonly) {\n if (keyCode === DOWN_ARROW_KEY_CODE || keyCode === UP_ARROW_KEY_CODE) {\n e.preventDefault();\n\n let nextIndex =\n keyCode === DOWN_ARROW_KEY_CODE\n ? (highlightedIndex + 1) % visibleOptions.length\n : (highlightedIndex - 1 + visibleOptions.length) %\n visibleOptions.length;\n\n let guard = 0;\n while (\n (visibleOptions[nextIndex] as any)?.disabled &&\n guard++ < visibleOptions.length\n ) {\n nextIndex =\n keyCode === DOWN_ARROW_KEY_CODE\n ? (nextIndex + 1) % visibleOptions.length\n : (nextIndex - 1 + visibleOptions.length) % visibleOptions.length;\n }\n\n const next = visibleOptions[nextIndex] as any;\n const current = visibleOptions[highlightedIndex] as any;\n\n if (next) {\n if (current) current.highlighted = false;\n\n (next as HTMLElement).focus?.();\n next.highlighted = true;\n (next as HTMLElement).scrollIntoView?.({ block: 'nearest' });\n\n this.assistiveText = next.text || 'Option';\n }\n\n return;\n }\n\n if (\n SPACEBAR_KEY_CODE.includes(\n keyCode as (typeof SPACEBAR_KEY_CODE)[number]\n ) ||\n keyCode === ENTER_KEY_CODE\n ) {\n e.preventDefault();\n return;\n }\n\n if (keyCode === ESCAPE_KEY_CODE) {\n this.open = false;\n (this._isSearchVisible ? this.searchEl : this.buttonEl)?.focus?.();\n this.assistiveText = 'Dropdown menu options.';\n return;\n }\n\n return;\n }\n\n const isListboxElOpened = this.open;\n\n // open the listbox\n if (target === 'button' || target === 'addOption') {\n let openDropdown =\n SPACEBAR_KEY_CODE.includes(\n keyCode as (typeof SPACEBAR_KEY_CODE)[number]\n ) ||\n keyCode === ENTER_KEY_CODE ||\n keyCode === DOWN_ARROW_KEY_CODE ||\n keyCode === UP_ARROW_KEY_CODE;\n\n if (e.target === this.clearMultipleEl && keyCode === ENTER_KEY_CODE) {\n openDropdown = false;\n\n const current = visibleOptions[highlightedIndex] as any;\n if (current) {\n current.highlighted = false;\n current.selected = !current.selected;\n }\n\n highlightedIndex = 0;\n return;\n }\n\n if (openDropdown) {\n this.open = true;\n\n if (\n this.allowAddOption &&\n target === 'button' &&\n keyCode === ENTER_KEY_CODE\n ) {\n setTimeout(() => {\n (\n this.addOptionInputSlotEl\n ?.assignedElements({ flatten: true })\n ?.find(\n (el): el is HTMLElement =>\n typeof (el as any)?.focus === 'function'\n ) as HTMLElement | undefined\n )?.focus();\n }, 100);\n } else {\n // scroll to highlighted option\n if (\n !this.multiple &&\n typeof this.value === 'string' &&\n this.value !== ''\n ) {\n (visibleOptions[highlightedIndex] as HTMLElement)?.scrollIntoView?.(\n {\n block: 'nearest',\n }\n );\n }\n }\n }\n }\n\n switch (keyCode) {\n case 0:\n case 32:\n case ENTER_KEY_CODE: {\n const current = visibleOptions[highlightedIndex] as any;\n if (!current) return;\n\n // select highlighted option\n current.highlighted = true;\n\n if (isListboxElOpened) {\n if (this.multiple) {\n current.selected = !current.selected;\n\n this._handleClick({\n detail: {\n value: current.value,\n selected: current.selected,\n },\n });\n } else {\n visibleOptions.forEach((opt) => {\n (opt as any).selected = false;\n });\n\n current.selected = true;\n\n this.updateValue(current.value, true);\n this.emitValue();\n\n this.open = false;\n this.assistiveText = `Selected ${current.value}`;\n }\n }\n\n return;\n }\n\n case DOWN_ARROW_KEY_CODE: {\n const hasHighlightedOrSelected = Boolean(highlightedEl || selectedEl);\n\n let nextIndex = !hasHighlightedOrSelected\n ? 0\n : highlightedIndex === visibleOptions.length - 1\n ? 0\n : highlightedIndex + 1;\n\n // skip disabled options\n if ((visibleOptions[nextIndex] as any)?.disabled) {\n nextIndex =\n nextIndex === visibleOptions.length - 1 ? 0 : nextIndex + 1;\n }\n\n const next = visibleOptions[nextIndex] as any;\n const current = visibleOptions[highlightedIndex] as any;\n\n next?.focus?.();\n\n if (current) current.tabIndex = -1;\n if (next) next.tabIndex = 0;\n\n if (current) current.highlighted = false;\n if (next) next.highlighted = true;\n\n (next as HTMLElement)?.scrollIntoView?.({ block: 'nearest' });\n\n this.assistiveText = next?.text ?? '';\n\n return;\n }\n\n case UP_ARROW_KEY_CODE: {\n // go to previous option\n let nextIndex =\n highlightedIndex === 0\n ? visibleOptions.length - 1\n : highlightedIndex - 1;\n\n // skip disabled options\n if ((visibleOptions[nextIndex] as any)?.disabled) {\n nextIndex =\n nextIndex === 0 ? visibleOptions.length - 1 : nextIndex - 1;\n }\n\n const next = visibleOptions[nextIndex] as any;\n const current = visibleOptions[highlightedIndex] as any;\n\n next?.focus?.();\n\n if (current) current.tabIndex = -1;\n if (next) next.tabIndex = 0;\n\n if (current) current.highlighted = false;\n if (next) next.highlighted = true;\n\n (next as HTMLElement)?.scrollIntoView?.({ block: 'nearest' });\n\n this.assistiveText = next?.text ?? '';\n\n return;\n }\n\n case ESCAPE_KEY_CODE: {\n this.open = false;\n\n if (this._isSearchVisible) {\n this.searchEl?.focus?.();\n } else {\n this.buttonEl?.focus?.();\n }\n\n this.assistiveText = 'Dropdown menu options.';\n return;\n }\n\n default: {\n return;\n }\n }\n }\n\n private handleClearMultiple(e: any) {\n if (this.readonly) return;\n\n e.stopPropagation();\n\n // clear values\n if (this.multiple) {\n const Slot: any = this.shadowRoot?.querySelector('slot#children');\n const Options: Array<any> = Slot.assignedElements();\n const DisabledSelectedOptions: Array<any> = Options.filter(\n (option: any) => option.selected && option.disabled\n ).map((option: any) => option.value);\n\n this.value = DisabledSelectedOptions.length\n ? [...DisabledSelectedOptions]\n : [];\n } else {\n this.value = '';\n }\n\n this._validate(true, false);\n this._updateSelectedOptions();\n this.emitValue();\n\n const event = new CustomEvent('on-clear-all', {\n detail: {\n value: this.value,\n },\n });\n this.dispatchEvent(event);\n }\n\n private handleTagClear(tag: any) {\n if (this.readonly) return;\n // remove value\n this.updateValue(tag.value, false);\n this._updateSelectedOptions();\n this.emitValue();\n }\n\n private handleClear(e: any) {\n if (this.readonly) return;\n\n e.stopPropagation();\n\n // reset search input text\n this.text = '';\n this.searchText = '';\n this.searchEl.value = '';\n\n this._emitSearch();\n\n if (this.filterSearch) {\n // reveal all options\n this.options.map((option: any) => {\n option.style.display = 'block';\n });\n }\n\n // clear selection for single select\n if (!this.multiple) {\n this.value = '';\n this._validate(true, false);\n this._updateSelectedOptions();\n this.emitValue();\n }\n }\n\n private handleSearchClick(e: MouseEvent) {\n if (this.readonly) return;\n e.stopPropagation();\n this.open = true;\n if ((this.searchText ?? '').trim() === '') this.searchText = '';\n }\n\n private handleSearchKeydown(e: any) {\n if (this.readonly) {\n if (e.key === 'Escape') {\n this.open = false;\n this.buttonEl.focus();\n }\n e.stopPropagation();\n e.preventDefault();\n return;\n }\n\n e.stopPropagation();\n\n const ENTER_KEY_CODE = 13;\n const ESCAPE_KEY_CODE = 27;\n const option = this.options.find((option) => option.highlighted);\n const highlightedIndex = this.options.findIndex(\n (option) => option.highlighted\n );\n this.searchTextEntered = false;\n // select option\n if (e.keyCode === ENTER_KEY_CODE) {\n this.searchTextEntered = true;\n if (option) {\n if (this.prevSearchKeydownIndex !== highlightedIndex) {\n if (this.multiple) {\n option.selected = !option.selected;\n } else {\n this.options.forEach((e) => (e.selected = false));\n option.selected = true;\n this.open = false;\n }\n this.updateValue(option.value, option.selected);\n }\n\n if (option.selected) {\n this.assistiveText = `Selected ${option.innerHTML}`;\n this.prevSearchKeydownIndex = highlightedIndex;\n } else {\n this.assistiveText = `Deselected ${option.innerHTML}`;\n }\n } else {\n this.assistiveText = 'No item matched.';\n }\n }\n\n // close listbox\n if (e.keyCode === ESCAPE_KEY_CODE) {\n this.open = false;\n this.buttonEl.focus();\n }\n }\n\n private handleSearchInput(e: any) {\n if (this.readonly) return;\n\n const value = e.target.value;\n this.searchText = value;\n this.open = true;\n\n this._emitSearch();\n\n const needle = value.toLowerCase();\n\n if (this.filterSearch) {\n // hide items that don't match\n this.options.forEach((option: any) => {\n const searchText = this._getOptionDisplayText(option).toLowerCase();\n\n option.style.display = searchText.includes(needle) ? 'block' : 'none';\n });\n\n return;\n }\n\n const matches = this.options.filter((option: any) =>\n this._getOptionDisplayText(option).toLowerCase().startsWith(needle)\n );\n\n this.options.forEach((option) => (option.highlighted = false));\n\n if (value !== '' && matches.length) {\n matches[0].highlighted = true;\n matches[0].scrollIntoView({ block: 'nearest' });\n if (this.searchTextEntered) this.assistiveText = 'Option Matched';\n }\n }\n\n private _updateSelectedOptions() {\n // set selected state for each option\n this.options.forEach((option) => {\n if (this.multiple) {\n option.selected = this.valueArray.includes(option.value);\n } else {\n option.selected = this.value === option.value;\n }\n });\n }\n private _handleClick(e: any) {\n if (this.readonly) return;\n\n if (e.detail.value === 'selectAll') {\n this.selectAllChecked = e.detail.selected;\n\n const Slot: any = this.shadowRoot?.querySelector('slot#children');\n const Options: Array<any> = Slot.assignedElements();\n const DisabledSelectedOptions: Array<any> = Options.filter(\n (option: any) => option.selected && option.disabled\n ).map((option: any) => option.value);\n\n if (e.detail.selected) {\n this.value = this.options\n .filter(\n (option) => !option.disabled || (option.disabled && option.selected)\n )\n .map((option) => option.value);\n this.assistiveText = 'Selected all items.';\n } else {\n this.value = DisabledSelectedOptions.length\n ? DisabledSelectedOptions\n : [];\n this.assistiveText = 'Deselected all items.';\n }\n\n this._validate(true, false);\n } else {\n this.updateValue(e.detail.value, e.detail.selected);\n this.assistiveText = e.detail.selected\n ? `Selected ${e.detail.value}`\n : `Deselected ${e.detail.value}`;\n }\n\n this._updateSelectedOptions();\n\n if (!this.multiple) {\n this.open = false;\n }\n\n // emit selected value\n this.emitValue();\n }\n\n private _handleBlur(e: any) {\n // For multi-select, don't auto-close on option blur\n if (this.multiple) return;\n\n const relatedTarget = e.detail?.origEvent?.relatedTarget as\n | HTMLElement\n | null\n | undefined;\n\n if (relatedTarget?.closest?.('.remove-option')) {\n return;\n }\n\n if (\n !relatedTarget ||\n (!relatedTarget.closest('kyn-dropdown-option') &&\n !relatedTarget.closest('kyn-enhanced-dropdown-option') &&\n relatedTarget.localName !== 'kyn-dropdown')\n ) {\n this.open = false;\n }\n }\n\n /** @ignore */\n private _onAddOptionRowClick = (e: Event) => {\n if (this.readonly || this.disabled) return;\n\n const path = (e.composedPath?.() ?? []) as Array<EventTarget>;\n\n const inAddOptionRow = path.some((t) =>\n (t as HTMLElement)?.classList?.contains?.('add-option-row')\n );\n if (!inAddOptionRow) return;\n\n const isButton = path.some((t) => {\n const el = t as HTMLElement;\n if (!el) return false;\n if (el.classList?.contains?.('add-option-button')) return true;\n return (el.tagName ?? '').toUpperCase() === 'KYN-BUTTON';\n });\n\n if (!isButton) return;\n\n e.preventDefault();\n e.stopPropagation();\n this._handleAddOption();\n };\n\n private _handleClickOut(e: Event) {\n if (!e.composedPath().includes(this)) {\n this.open = false;\n }\n }\n\n override connectedCallback() {\n super.connectedCallback();\n this._onConnected();\n\n document.addEventListener('click', this._onDocumentClick);\n\n this.addEventListener('on-click', this._onChildClick);\n this.addEventListener('on-remove-option', this._onChildRemove);\n this.addEventListener('on-blur', this._onChildBlur);\n }\n\n override disconnectedCallback() {\n this._onDisconnected();\n\n document.removeEventListener('click', this._onDocumentClick);\n this.removeEventListener('on-click', this._onChildClick);\n this.removeEventListener('on-remove-option', this._onChildRemove);\n this.removeEventListener('on-blur', this._onChildBlur);\n this._addOptionInputCleanup?.();\n super.disconnectedCallback();\n }\n\n /**\n * @ignore\n */\n private get valueArray(): string[] {\n return Array.isArray(this.value) ? this.value : [];\n }\n\n private updateValue(value: string, selected = false) {\n if (this.readonly) return;\n\n // set value\n if (this.multiple) {\n const next = [...this.valueArray];\n\n // update array\n if (selected) {\n if (this.allowDuplicateSelections) {\n next.push(value);\n } else if (!next.includes(value)) {\n next.push(value);\n }\n } else {\n for (let i = next.length - 1; i >= 0; i--) {\n if (next[i] === value) next.splice(i, 1);\n }\n }\n\n this.value = next;\n } else {\n this.value = value;\n }\n\n this._validate(true, false);\n\n // reset focus\n if (!this.multiple)\n (this._isSearchVisible ? this.searchEl : this.buttonEl).focus();\n }\n\n private _validate(interacted: boolean, report: boolean) {\n const isMissing =\n this.required &&\n !this.readonly &&\n (this.multiple\n ? !Array.isArray(this.value) || this.value.length === 0\n : this.value === '');\n\n const validity = {\n customError: this.invalidText !== '',\n valueMissing: isMissing,\n };\n\n // set validationMessage\n const InternalMsg = isMissing ? 'Please fill out this field.' : '';\n const validationMessage =\n this.invalidText !== '' ? this.invalidText : InternalMsg;\n\n const validationAnchor = this.buttonEl || this.listboxEl;\n\n this._internals.setValidity(\n validity,\n validationMessage,\n validationAnchor ?? undefined\n );\n\n if (interacted) this._internalValidationMsg = InternalMsg;\n if (report) this._internals.reportValidity();\n }\n\n private emitValue() {\n const event = new CustomEvent('on-change', {\n detail: {\n value: this.value,\n },\n });\n this.dispatchEvent(event);\n }\n\n private _emitSearch() {\n const event = new CustomEvent('on-search', {\n detail: {\n searchText: this.searchText,\n },\n });\n this.dispatchEvent(event);\n }\n\n override willUpdate(changedProps: any) {\n if (changedProps.has('textStrings')) {\n this._textStrings = deepmerge(_defaultTextStrings, this.textStrings);\n }\n }\n\n override updated(changedProps: PropertyValues) {\n super.updated(changedProps);\n\n if (changedProps.has('readonly')) {\n this.clearMultipleEl?.classList.toggle('is-readonly', this.readonly);\n this.clearMultipleEl?.toggleAttribute('data-readonly', this.readonly);\n }\n\n if (changedProps.has('kind')) {\n this.dispatchEvent(\n new CustomEvent('kind-changed', {\n detail: this.kind,\n bubbles: true,\n composed: true,\n })\n );\n\n this.classList.toggle('ai-connected', this.kind === 'ai');\n }\n\n const root = this.shadowRoot;\n if (!root) return;\n\n if (changedProps.has('open')) {\n const slot = root.querySelector<HTMLSlotElement>('slot[name=\"anchor\"]');\n const assigned = slot?.assignedElements({ flatten: true }) as\n | HTMLElement[]\n | undefined;\n const btn = assigned?.find(\n (el) => !el.querySelector('.clear-multiple-icon')\n );\n const icon = btn?.querySelector<HTMLElement>('span[slot=\"icon\"]');\n if (icon) {\n icon.style.transition = 'transform 0.2s ease-in-out';\n icon.style.transform = this.open ? 'rotate(180deg)' : 'rotate(0deg)';\n }\n }\n\n this._onUpdated(changedProps);\n\n if (changedProps.has('value')) {\n this._updateOptions();\n\n const childrenSlot: any =\n root.querySelector<HTMLSlotElement>('slot#children');\n const options = childrenSlot\n .assignedElements()\n .filter((o: any): o is HTMLElement => !o.disabled);\n const selected = options.filter((o: any) => o.selected);\n\n this.selectAllChecked = selected.length === options.length;\n this.selectAllIndeterminate =\n selected.length > 0 && selected.length < options.length;\n\n this._updateTags();\n this._updateSelectedText();\n }\n\n if (changedProps.has('open') || changedProps.has('openDirection')) {\n if (this.open) {\n this.options.forEach((o) => (o.highlighted = false));\n\n if (!this._isSearchVisible && this.listboxEl) {\n this.listboxEl.focus({ preventScroll: true });\n this.assistiveText =\n 'Selecting items. Use up and down arrow keys to navigate.';\n }\n }\n\n if (this.openDirection === 'up') {\n this._openUpwards = true;\n } else if (this.openDirection === 'down') {\n this._openUpwards = false;\n } else if (this.open) {\n const rect = this.buttonEl.getBoundingClientRect();\n this._openUpwards = rect.top > window.innerHeight * 0.6;\n }\n\n if (this.open && !this.multiple) {\n const firstSelected = this.options.find((o) => o.selected);\n firstSelected?.scrollIntoView({ block: 'nearest' });\n }\n }\n\n if (changedProps.has('multiple')) {\n this.options.forEach((opt) => (opt.multiple = this.multiple));\n }\n\n if (changedProps.has('searchText') && this.searchEl) {\n this.searchEl.value = this.searchText;\n }\n\n if (\n changedProps.has('multiple') ||\n changedProps.has('allowAddOption') ||\n changedProps.has('readonly')\n ) {\n this.updateChildOptions();\n }\n\n if (changedProps.has('open') && this.open && !this._isSearchVisible) {\n this.listboxEl?.focus({ preventScroll: true });\n }\n }\n\n /**\n * @ignore\n */\n private get hasSearch(): boolean {\n return (this.searchText ?? '').trim().length > 0;\n }\n\n // add selected options to Tags array\n private _updateTags() {\n if (!this.multiple) return;\n\n const counts = new Map<string, number>();\n for (const v of this.valueArray) counts.set(v, (counts.get(v) ?? 0) + 1);\n\n const options = this.options;\n\n const tags: Array<{\n value: string;\n text: string;\n disabled: boolean;\n count: number;\n }> = [];\n\n for (const [value, count] of counts.entries()) {\n const opt = options.find((o) => o.value === value);\n if (!opt) continue;\n\n tags.push({\n value,\n text: this._getOptionDisplayText(opt) || value,\n disabled: (opt as any).disabled ?? false,\n count,\n });\n }\n\n this._tags = tags;\n }\n\n private _updateOptions() {\n const Options = Array.from(\n this.querySelectorAll<DropdownOption | EnhancedDropdownOption>(\n 'kyn-dropdown-option, kyn-enhanced-dropdown-option'\n )\n );\n\n Options.forEach((option) => {\n // set option multiple state\n option.multiple = this.multiple;\n\n if (this.multiple) {\n // set option selected state\n option.selected = this.valueArray.includes(option.value);\n } else {\n option.selected = this.value === option.value;\n }\n });\n }\n\n /**\n * @ignore\n */\n private _handleAddOption = () => {\n if (this.readonly || this.disabled) return;\n\n const { slottedEl, fallbackNative } = this._getAddOptionInputEls();\n\n // prefer slotted input value, then fallback.\n const currentValue =\n typeof (slottedEl as any)?.value === 'string'\n ? (slottedEl as any).value\n : typeof fallbackNative?.value === 'string'\n ? fallbackNative.value\n : '';\n\n if (currentValue !== this.newOptionValue) {\n this.newOptionValue = currentValue;\n }\n\n const v = this.newOptionValue.trim();\n if (!v) return;\n\n const { valid, message } = this._validateNewOptionValue(v);\n if (!valid) {\n const msg = message || this._textStrings.addOptionInvalid;\n if (slottedEl && 'invalidText' in (slottedEl as any)) {\n (slottedEl as any).invalidText = msg;\n this._lastAddOptionInvalidText = msg;\n }\n return;\n }\n\n this.dispatchEvent(\n new CustomEvent('on-add-option', { detail: { value: v } })\n );\n\n this._clearAddOptionInput();\n\n if (slottedEl && 'invalidText' in (slottedEl as any)) {\n (slottedEl as any).invalidText = '';\n this._lastAddOptionInvalidText = '';\n }\n };\n\n /** @ignore */\n private _handleInputNewOption = (e: Event) => {\n const path = (e.composedPath?.() || []) as Array<EventTarget>;\n const inAddOptionRow = path.some((t) =>\n (t as HTMLElement)?.classList?.contains?.('add-option-row')\n );\n if (!inAddOptionRow) return;\n\n const target = e.target as {\n value?: unknown;\n detail?: { value?: unknown };\n };\n\n this.newOptionValue =\n typeof target?.value === 'string'\n ? target.value\n : typeof target?.detail?.value === 'string'\n ? target.detail.value\n : '';\n\n // Clear only if we set it (don’t fight consumer-provided invalidText)\n const assigned =\n this.addOptionInputSlotEl?.assignedElements({ flatten: true }) ?? [];\n const slottedInputEl = (assigned[0] as HTMLElement | undefined) ?? null;\n\n if (\n slottedInputEl &&\n 'invalidText' in (slottedInputEl as any) &&\n typeof (slottedInputEl as any).invalidText === 'string' &&\n (slottedInputEl as any).invalidText === this._lastAddOptionInvalidText\n ) {\n (slottedInputEl as any).invalidText = '';\n this._lastAddOptionInvalidText = '';\n }\n };\n\n private _handleRemoveOption() {\n this.assistiveText = 'Option removed.';\n\n setTimeout(() => {\n if (this.open) {\n this.listboxEl?.focus?.({ preventScroll: true } as any);\n } else {\n this.buttonEl?.focus?.();\n }\n }, 0);\n }\n\n private _updateSelectedText() {\n if (this.multiple) return;\n\n // update selected option text\n if (this.value !== '') {\n const option = this.options.find((o) => o.value === this.value);\n\n if (option) {\n this.text = this._getOptionDisplayText(option);\n } else {\n this.text = '';\n console.warn(`No dropdown option found with value: ${this.value}`);\n }\n }\n\n if (this._isSearchVisible && this.text) {\n this.searchText = this.text === this.placeholder ? '' : this.text;\n this.searchEl.value = this.searchText;\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kyn-dropdown': Dropdown;\n }\n}\n"],"names":["_defaultTextStrings","title","selectedOptions","requiredText","errorText","clearAll","clear","addItem","add","duplicateOption","addOptionInvalid","Dropdown","customElement","FormMixin","LitElement","_classThis","_classSuper","_Dropdown_label_accessor_storage","set","this","__runInitializers","_label_initializers","_Dropdown_size_accessor_storage","_label_extraInitializers","_size_initializers","_Dropdown_kind_accessor_storage","_size_extraInitializers","_kind_initializers","_Dropdown_inline_accessor_storage","_kind_extraInitializers","_inline_initializers","_Dropdown_caption_accessor_storage","_inline_extraInitializers","_caption_initializers","_Dropdown_placeholder_accessor_storage","_caption_extraInitializers","_placeholder_initializers","_Dropdown_open_accessor_storage","_placeholder_extraInitializers","_open_initializers","_Dropdown_searchable_accessor_storage","_open_extraInitializers","_searchable_initializers","_Dropdown_searchThreshold_accessor_storage","_searchable_extraInitializers","_searchThreshold_initializers","_Dropdown_enhanced_accessor_storage","_searchThreshold_extraInitializers","_enhanced_initializers","_Dropdown_readonly_accessor_storage","_enhanced_extraInitializers","_readonly_initializers","_Dropdown_filterSearch_accessor_storage","_readonly_extraInitializers","_filterSearch_initializers","_Dropdown_multiple_accessor_storage","_filterSearch_extraInitializers","_multiple_initializers","_Dropdown_required_accessor_storage","_multiple_extraInitializers","_required_initializers","_Dropdown_hideLabel_accessor_storage","_required_extraInitializers","_hideLabel_initializers","_Dropdown_disabled_accessor_storage","_hideLabel_extraInitializers","_disabled_initializers","_Dropdown_hideTags_accessor_storage","_disabled_extraInitializers","_hideTags_initializers","_Dropdown_selectAll_accessor_storage","_hideTags_extraInitializers","_selectAll_initializers","_Dropdown_selectAllText_accessor_storage","_selectAll_extraInitializers","_selectAllText_initializers","_Dropdown_menuMinWidth_accessor_storage","_selectAllText_extraInitializers","_menuMinWidth_initializers","_Dropdown_openDirection_accessor_storage","_menuMinWidth_extraInitializers","_openDirection_initializers","_Dropdown_selectAllChecked_accessor_storage","_openDirection_extraInitializers","_selectAllChecked_initializers","_Dropdown_selectAllIndeterminate_accessor_storage","_selectAllChecked_extraInitializers","_selectAllIndeterminate_initializers","_Dropdown_textStrings_accessor_storage","_selectAllIndeterminate_extraInitializers","_textStrings_initializers","_Dropdown_allowAddOption_accessor_storage","_textStrings_extraInitializers","_allowAddOption_initializers","_Dropdown__hasSlottedAddOptionInput_accessor_storage","_allowAddOption_extraInitializers","__hasSlottedAddOptionInput_initializers","_Dropdown__hasSlottedAddOptionButton_accessor_storage","__hasSlottedAddOptionInput_extraInitializers","__hasSlottedAddOptionButton_initializers","_Dropdown__lastAddOptionInvalidText_accessor_storage","__hasSlottedAddOptionButton_extraInitializers","__lastAddOptionInvalidText_initializers","_Dropdown_preventDuplicateAddOption_accessor_storage","__lastAddOptionInvalidText_extraInitializers","_preventDuplicateAddOption_initializers","_Dropdown_addOptionValidator_accessor_storage","_preventDuplicateAddOption_extraInitializers","_addOptionValidator_initializers","_Dropdown_allowDuplicateSelections_accessor_storage","_addOptionValidator_extraInitializers","_allowDuplicateSelections_initializers","_Dropdown__textStrings_accessor_storage","_allowDuplicateSelections_extraInitializers","__textStrings_initializers","_Dropdown_newOptionValue_accessor_storage","__textStrings_extraInitializers","_newOptionValue_initializers","_Dropdown_text_accessor_storage","_newOptionValue_extraInitializers","_text_initializers","_Dropdown_searchText_accessor_storage","_text_extraInitializers","_searchText_initializers","_Dropdown_assistiveText_accessor_storage","_searchText_extraInitializers","_assistiveText_initializers","_Dropdown_searchEl_accessor_storage","_assistiveText_extraInitializers","_searchEl_initializers","_Dropdown_buttonEl_accessor_storage","_searchEl_extraInitializers","_buttonEl_initializers","_Dropdown_listboxEl_accessor_storage","_buttonEl_extraInitializers","_listboxEl_initializers","_Dropdown_clearMultipleEl_accessor_storage","_listboxEl_extraInitializers","_clearMultipleEl_initializers","_Dropdown_addOptionInputSlotEl_accessor_storage","_clearMultipleEl_extraInitializers","_addOptionInputSlotEl_initializers","_Dropdown_addOptionButtonSlotEl_accessor_storage","_addOptionInputSlotEl_extraInitializers","_addOptionButtonSlotEl_initializers","_Dropdown__openUpwards_accessor_storage","_addOptionButtonSlotEl_extraInitializers","__openUpwards_initializers","_Dropdown__tags_accessor_storage","__openUpwards_extraInitializers","__tags_initializers","searchTextEntered","__tags_extraInitializers","prevSearchKeydownIndex","_onDocumentClick","e","_handleClickOut","_onChildClick","_handleClick","_onChildRemove","_e","_handleRemoveOption","_onChildBlur","_handleBlur","_onAddOptionInputFocus","assistiveText","_onAddOptionRowClick","readonly","disabled","path","_b","_a","composedPath","call","inAddOptionRow","some","t","classList","contains","isButton","el","_c","tagName","toUpperCase","preventDefault","stopPropagation","_handleAddOption","slottedEl","fallbackNative","_getAddOptionInputEls","currentValue","value","newOptionValue","v","trim","valid","message","_validateNewOptionValue","dispatchEvent","CustomEvent","detail","_clearAddOptionInput","invalidText","_lastAddOptionInvalidText","msg","_textStrings","_handleInputNewOption","target","slottedInputEl","_f","_d","addOptionInputSlotEl","assignedElements","flatten","label","__classPrivateFieldGet","__classPrivateFieldSet","size","kind","inline","caption","placeholder","open","searchable","searchThreshold","enhanced","filterSearch","multiple","required","hideLabel","hideTags","selectAll","selectAllText","menuMinWidth","openDirection","selectAllChecked","selectAllIndeterminate","textStrings","allowAddOption","_hasSlottedAddOptionInput","_hasSlottedAddOptionButton","preventDuplicateAddOption","addOptionValidator","allowDuplicateSelections","text","searchText","options","Array","from","querySelectorAll","_isSearchVisible","length","filter","opt","selected","searchEl","buttonEl","listboxEl","clearMultipleEl","addOptionButtonSlotEl","_getSlottedAddOptionInput","slottedNative","shadowRoot","querySelector","_getOptionDisplayText","option","titleSlot","textContent","displayText","_openUpwards","_tags","_handleAddOptionSlotChange","hasInput","hasButton","_addOptionInputCleanup","_attachAddOptionInputListener","textInput","_getAddOptionTextInput","handler","addEventListener","removeEventListener","find","toLowerCase","_addOptionBlocked","blocked","render","mainDropdownClasses","dropdown","selectedCount","isArray","addBlocked","html","classMap","name","wrapper","handleAnchorClick","handleAnchorKeydown","select","_isInvalid","ifDefined","undefined","handleClearMultiple","unsafeSVG","clearIcon","handleSearchKeydown","handleSearchInput","handleSearchClick","downIcon","upwards","handleListKeydown","handleListBlur","_handleListFocus","_addOptionRowKeydown","handleSlotChange","hasSearch","handleClear","renderHelperContent","key","focus","canOpen","isInOptions","closest","handleClick","slottedInput","nativeInput","fallback","valueRaw","slottedAsAny","pattern","getAttribute","minLengthRaw","Number","isFinite","minLength","maxLengthRaw","maxLength","_g","RegExp","test","needle","result","handleButtonKeydown","includes","firstUpdated","nothing","map","tag","handleTagClear","errorIcon","_internalValidationMsg","updateChildOptions","_updateOptions","_updateSelectedText","forEach","handleKeyboard","keyCode","isFromAddOption","Boolean","isFromOption","visibleOptions","style","display","firstEnabled","o","highlighted","preventScroll","scrollIntoView","block","relatedTarget","SPACEBAR_KEY_CODE","highlightedEl","selectedEl","highlightedIndex","indexOf","nextIndex","guard","next","current","_h","_k","_j","isListboxElOpened","openDropdown","setTimeout","_m","_l","updateValue","emitValue","_o","_p","tabIndex","_q","_r","_s","_t","_u","_v","_x","_w","_z","_y","DisabledSelectedOptions","_validate","_updateSelectedOptions","event","_emitSearch","findIndex","innerHTML","matches","startsWith","valueArray","origEvent","localName","connectedCallback","super","_onConnected","document","disconnectedCallback","_onDisconnected","push","i","splice","interacted","report","isMissing","validity","customError","valueMissing","InternalMsg","validationMessage","validationAnchor","_internals","setValidity","reportValidity","willUpdate","changedProps","has","deepmerge","updated","toggle","toggleAttribute","bubbles","composed","root","slot","assigned","btn","icon","transition","transform","_onUpdated","_updateTags","rect","getBoundingClientRect","top","window","innerHeight","firstSelected","counts","Map","get","tags","count","entries","console","warn","_label_decorators","property","type","String","_size_decorators","attribute","_inline_decorators","_caption_decorators","_placeholder_decorators","reflect","_searchable_decorators","_searchThreshold_decorators","_enhanced_decorators","_filterSearch_decorators","_multiple_decorators","_required_decorators","_hideLabel_decorators","_disabled_decorators","_hideTags_decorators","_selectAll_decorators","_selectAllText_decorators","_menuMinWidth_decorators","_openDirection_decorators","_selectAllChecked_decorators","_selectAllIndeterminate_decorators","_textStrings_decorators","Object","_allowAddOption_decorators","__hasSlottedAddOptionInput_decorators","state","__hasSlottedAddOptionButton_decorators","__lastAddOptionInvalidText_decorators","_preventDuplicateAddOption_decorators","_addOptionValidator_decorators","_allowDuplicateSelections_decorators","__textStrings_decorators","_newOptionValue_decorators","_text_decorators","_searchText_decorators","_assistiveText_decorators","query","__openUpwards_decorators","__tags_decorators","__esDecorate","static","private","access","obj","metadata","_metadata","_kind_decorators","_open_decorators","_readonly_decorators","_searchEl_decorators","_buttonEl_decorators","_listboxEl_decorators","_clearMultipleEl_decorators","_addOptionInputSlotEl_decorators","_addOptionButtonSlotEl_decorators","_classDescriptor","_classDecorators","_classExtraInitializers","styles","unsafeCSS","DropdownScss"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"dropdown.js","sources":["../../../../src/components/reusable/dropdown/dropdown.ts"],"sourcesContent":["import { unsafeSVG } from 'lit-html/directives/unsafe-svg.js';\nimport { LitElement, PropertyValues, html, unsafeCSS } from 'lit';\nimport { customElement, property, state, query } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport DropdownScss from './dropdown.scss?inline';\nimport { FormMixin } from '../../../common/mixins/form-input';\nimport { deepmerge } from 'deepmerge-ts';\nimport { nothing } from 'lit';\n\nimport './dropdownOption';\nimport './enhancedDropdownOption';\nimport '../tag';\nimport '../button';\nimport '../textInput';\n\nimport { DropdownOption } from './dropdownOption';\nimport { EnhancedDropdownOption } from './enhancedDropdownOption';\n\nimport downIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/chevron-down.svg';\nimport errorIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/error-filled.svg';\nimport clearIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/close-simple.svg';\n\nconst _defaultTextStrings = {\n title: 'Dropdown',\n selectedOptions: 'List of selected options',\n requiredText: 'Required',\n errorText: 'Error',\n clearAll: 'Clear all',\n clear: 'Clear',\n addItem: 'Add item...',\n add: 'Add',\n duplicateOption: 'Duplicate option. Please select a unique option.',\n addOptionInvalid: 'Please check this value and try again.',\n};\n\n/**\n * Dropdown, single select.\n * @fires on-change - Captures the dropdown change event and emits the selected value and original event details. `detail:{ value: string/array }`\n * @fires on-search - Capture the search input event and emits the search text.`detail:{ searchText: string }`\n * @fires on-clear-all - Captures the the multi-select clear all button click event and emits the value. `detail:{ value: array }`\n * @fires on-add-option - Captures the add button click and emits the newly added option. `detail:{ value: string }`\n * @slot unnamed - Slot for dropdown options.\n * @slot tooltip - Slot for tooltip.\n * @slot anchor - Slot for custom dropdown anchor element. If not provided, defaults to standard input-style anchor.\n * @slot add-option-input - Slot for providing a custom “Add new option” input.\n * @slot add-option-button - Slot for providing a custom “Add new option” button.\n * @attr {string/array} [value=''/[]] - The selected value(s) of the input. For single select, it is a string. For multi-select, it is an array of strings.\n * @attr {string} [name=''] - The name of the input, used for form submission.\n * @attr {string} [invalidText=''] - The custom validation message when the input is invalid.\n */\n@customElement('kyn-dropdown')\nexport class Dropdown extends FormMixin(LitElement) {\n static override styles = unsafeCSS(DropdownScss);\n\n /** Label text. */\n @property({ type: String })\n accessor label = '';\n\n /** Dropdown size/height. \"xs\", \"sm\", \"md\", or \"lg\". */\n @property({ type: String })\n accessor size = 'md';\n\n /** Dropdown kind. */\n @property({ type: String, attribute: 'kind' })\n accessor kind: 'ai' | 'default' = 'default';\n\n /** Dropdown inline style type. */\n @property({ type: Boolean })\n accessor inline = false;\n\n /** Optional text beneath the input. */\n @property({ type: String })\n accessor caption = '';\n\n /** Dropdown placeholder. */\n @property({ type: String })\n accessor placeholder = '';\n\n /** Listbox/drawer open state. */\n @property({ type: Boolean, reflect: true })\n accessor open = false;\n\n /** Makes the dropdown searchable. */\n @property({ type: Boolean })\n accessor searchable = false;\n\n /**\n * Minimum number of options required before the search input is shown.\n * When set to a value greater than `0`, the search input will only\n * render if the number of slotted options meets or exceeds this\n * threshold — this implicitly enables search without needing\n * `searchable`. When `0` or not set, search visibility is controlled\n * solely by the `searchable` prop.\n */\n @property({ type: Number })\n accessor searchThreshold = 0;\n\n /** Makes the dropdown enhanced. */\n @property({ type: Boolean })\n accessor enhanced = false;\n\n /** Dropdown read-only state (focusable but not interactive). */\n @property({ type: Boolean, reflect: true })\n accessor readonly = false;\n\n /** Searchable variant filters results. */\n @property({ type: Boolean })\n accessor filterSearch = false;\n\n /** Enabled multi-select functionality. */\n @property({ type: Boolean })\n accessor multiple = false;\n\n /** Makes the dropdown required. */\n @property({ type: Boolean })\n accessor required = false;\n\n /** Visually hide the label. */\n @property({ type: Boolean })\n accessor hideLabel = false;\n\n /** Dropdown disabled state. */\n @property({ type: Boolean })\n accessor disabled = false;\n\n /** Hide the tags below multi-select. */\n @property({ type: Boolean })\n accessor hideTags = false;\n\n /** Adds a \"Select all\" option to the top of a multi-select dropdown. */\n @property({ type: Boolean })\n accessor selectAll = false;\n\n /** \"Select all\" text customization. */\n @property({ type: String })\n accessor selectAllText = 'Select all';\n\n /** Menu CSS min-width value. */\n @property({ type: String })\n accessor menuMinWidth = '120px';\n\n /** Controls direction that dropdown opens. */\n @property({ type: String })\n accessor openDirection: 'auto' | 'up' | 'down' = 'auto';\n\n /** Is \"Select All\" box checked.\n * @internal\n */\n @property({ type: Boolean })\n accessor selectAllChecked = false;\n\n /** Is \"Select All\" indeterminate.\n * @internal\n */\n @property({ type: Boolean })\n accessor selectAllIndeterminate = false;\n\n /** Text string customization. */\n @property({ type: Object })\n accessor textStrings = _defaultTextStrings;\n\n /** Enables the \"Add New Option\" feature. */\n @property({ type: Boolean })\n accessor allowAddOption = false;\n\n /** @internal */\n @state()\n accessor _hasSlottedAddOptionInput = false;\n\n /** @internal */\n @state()\n accessor _hasSlottedAddOptionButton = false;\n\n /** @internal */\n @state()\n accessor _lastAddOptionInvalidText = '';\n\n /** Enables duplicate prevention when adding new options. */\n @property({ type: Boolean })\n accessor preventDuplicateAddOption = true;\n\n /** Validator function for new option input.\n * @internal\n * Return a string to mark invalid and show that message.\n * Return `null`/`undefined` for valid.\n */\n @property({ attribute: false })\n accessor addOptionValidator:\n | ((value: string, ctx: { dropdown: Dropdown }) => string | null | void)\n | null = null;\n\n /** Allows duplicate selections in multi-select dropdowns. */\n @property({ type: Boolean })\n accessor allowDuplicateSelections = true;\n\n /** Internal text strings.\n * @internal\n */\n @state()\n accessor _textStrings = _defaultTextStrings;\n\n /**\n * New dropdown option value.\n * @ignore\n */\n @state()\n accessor newOptionValue = '';\n\n /**\n * Selected option text, automatically derived.\n * @ignore\n */\n @state()\n accessor text = '';\n\n /**\n * Search input value.\n */\n @property({ type: String })\n accessor searchText = '';\n\n /**\n * Assistive text for screen readers.\n * @ignore\n */\n @state()\n accessor assistiveText = 'Dropdown menu options.';\n\n /**\n * Queries any slotted options, default or enhanced.\n * @ignore\n */\n protected get options(): Array<DropdownOption | EnhancedDropdownOption> {\n return Array.from(\n this.querySelectorAll<DropdownOption | EnhancedDropdownOption>(\n 'kyn-dropdown-option, kyn-enhanced-dropdown-option'\n )\n );\n }\n\n /**\n * Whether the search input should be visible. Returns `true` when:\n * - `searchable` is `true` and no threshold is set (always show), or\n * - `searchable` is `true` and options count meets the threshold, or\n * - `searchThreshold` > 0 and options count meets the threshold\n * (implicitly enables search without needing `searchable`).\n * @ignore\n */\n protected get _isSearchVisible(): boolean {\n if (this.searchThreshold && this.options.length >= this.searchThreshold) {\n return true;\n }\n if (!this.searchable) return false;\n if (!this.searchThreshold) return true;\n return this.options.length >= this.searchThreshold;\n }\n\n /**\n * Queries any slotted selected options.\n * @ignore\n */\n protected get selectedOptions(): Array<\n DropdownOption | EnhancedDropdownOption\n > {\n return this.options.filter((opt) => opt.selected);\n }\n\n /**\n * Queries the .search DOM element.\n * @ignore\n */\n @query('.search')\n accessor searchEl!: HTMLInputElement;\n\n /**\n * Queries the .select DOM element.\n * @ignore\n */\n @query('.select')\n accessor buttonEl!: HTMLElement;\n\n /**\n * Queries the .options DOM element.\n * @ignore\n */\n @query('.options')\n accessor listboxEl!: HTMLElement;\n\n /**\n * Queries the .clear-multiple DOM element.\n * @ignore\n */\n @query('.clear-multiple')\n accessor clearMultipleEl!: HTMLElement;\n\n /**\n * Queries the add-option input slot (if provided).\n * @ignore\n */\n @query('slot[name=\"add-option-input\"]')\n accessor addOptionInputSlotEl!: HTMLSlotElement;\n\n /**\n * Queries the add-option button slot (if provided).\n * @ignore\n */\n @query('slot[name=\"add-option-button\"]')\n accessor addOptionButtonSlotEl!: HTMLSlotElement;\n\n private _getSlottedAddOptionInput(): HTMLElement | null {\n const assigned =\n this.addOptionInputSlotEl?.assignedElements({ flatten: true }) ?? [];\n\n return (assigned[0] as HTMLElement | undefined) ?? null;\n }\n\n private _getAddOptionInputEls(): {\n slottedEl: HTMLElement | null;\n slottedNative: HTMLInputElement | null;\n fallbackNative: HTMLInputElement | null;\n } {\n const slottedEl = this._getSlottedAddOptionInput();\n\n const slottedNative =\n (slottedEl as any)?.tagName === 'KYN-TEXT-INPUT'\n ? ((slottedEl as any).shadowRoot?.querySelector?.(\n 'input'\n ) as HTMLInputElement | null) ?? null\n : (slottedEl as HTMLInputElement | null);\n\n const fallbackNative =\n this.shadowRoot?.querySelector<HTMLInputElement>(\n 'kyn-text-input.add-option-input input, input.add-option-input, .add-option-input input'\n ) ?? null;\n\n return { slottedEl, slottedNative, fallbackNative };\n }\n\n private _getOptionDisplayText(\n option: DropdownOption | EnhancedDropdownOption\n ): string {\n if (option.tagName === 'KYN-ENHANCED-DROPDOWN-OPTION') {\n const titleSlot = option.querySelector('[slot=\"title\"]');\n const slotText = titleSlot?.textContent?.trim();\n return (\n slotText ||\n (option as any).displayText ||\n option.value ||\n ''\n ).trim();\n }\n\n return (option.textContent ?? '').trim();\n }\n\n /**\n * Open drawer upwards.\n * @ignore\n */\n @state()\n accessor _openUpwards = false;\n\n /**\n * Tags value/text reference.\n * @ignore\n */\n @state()\n accessor _tags: Array<object> = [];\n\n /** Toggles on clicking enter key in the search input.\n * @internal\n */\n searchTextEntered: any = false;\n\n /** Toggles on clicking enter key in the search input.\n * @internal\n */\n prevSearchKeydownIndex = -1;\n\n /** Event handlers for document click\n * @internal\n */\n private _onDocumentClick = (e: Event) => this._handleClickOut(e);\n\n /** Event handlers for child option events (click).\n * @internal\n */\n private _onChildClick = (e: Event) => this._handleClick(e as any);\n\n /** Event handlers for child option events (remove).\n * @internal\n */\n private _onChildRemove = (_e: Event) => this._handleRemoveOption();\n\n /** Event handlers for child option events (blur).\n * @internal\n */\n private _onChildBlur = (e: Event) => this._handleBlur(e as any);\n\n /** @internal */\n private _addOptionInputCleanup?: () => void;\n\n private _handleAddOptionSlotChange() {\n const hasInput =\n (this.addOptionInputSlotEl?.assignedElements({ flatten: true }) ?? [])\n .length > 0;\n const hasButton =\n (this.addOptionButtonSlotEl?.assignedElements({ flatten: true }) ?? [])\n .length > 0;\n\n this._hasSlottedAddOptionInput = hasInput;\n this._hasSlottedAddOptionButton = hasButton;\n\n // auto-enable when either slot is provided\n if ((hasInput || hasButton) && !this.allowAddOption) {\n this.allowAddOption = true;\n }\n this._addOptionInputCleanup?.();\n this._attachAddOptionInputListener();\n }\n\n private _attachAddOptionInputListener() {\n const textInput = this._getAddOptionTextInput();\n if (!textInput) return;\n\n const handler = (e: CustomEvent) => {\n this.newOptionValue = e.detail?.value ?? '';\n\n // clear invalid text on input change\n if (this._lastAddOptionInvalidText) {\n textInput.invalidText = '';\n this._lastAddOptionInvalidText = '';\n }\n };\n textInput.addEventListener('on-input', handler);\n this._addOptionInputCleanup = () => {\n textInput.removeEventListener('on-input', handler);\n };\n }\n\n private _getAddOptionTextInput() {\n const assigned =\n this.addOptionInputSlotEl?.assignedElements({ flatten: true }) ?? [];\n return assigned.find(\n (el) => el.tagName?.toLowerCase() === 'kyn-text-input'\n ) as any | undefined;\n }\n\n /** @ignore */\n private get _addOptionBlocked(): { blocked: boolean; message: string } {\n const v = this.newOptionValue.trim();\n\n if (!v) return { blocked: true, message: '' };\n\n const { valid, message } = this._validateNewOptionValue(v);\n if (!valid) {\n return {\n blocked: true,\n message: message || this._textStrings.addOptionInvalid,\n };\n }\n\n return { blocked: false, message: '' };\n }\n\n override render() {\n const mainDropdownClasses = {\n dropdown: true,\n 'ai-connected': this.kind === 'ai',\n };\n\n const selectedCount =\n this.multiple && Array.isArray(this.value) ? this.value.length : 0;\n\n const addBlocked = this.allowAddOption\n ? this._addOptionBlocked.blocked\n : false;\n\n return html`\n <div\n class=${classMap(mainDropdownClasses)}\n ?disabled=${this.disabled}\n ?readonly=${!this.disabled && this.readonly}\n ?open=${this.open}\n ?inline=${this.inline}\n ?searchable=${this._isSearchVisible}\n >\n <label\n id=\"label-${this.name}\"\n class=\"label-text ${this.hideLabel || this.inline ? 'sr-only' : ''}\"\n for=${this.name}\n >\n ${this.required\n ? html`\n <abbr\n class=\"required\"\n title=${this._textStrings.requiredText}\n role=\"img\"\n aria-label=${this._textStrings?.requiredText || 'Required'}\n >\n *\n </abbr>\n `\n : null}\n ${this.label}\n <slot name=\"tooltip\"></slot>\n </label>\n\n <div\n class=${classMap({\n wrapper: true,\n open: this.open,\n })}\n >\n <div\n class=\"custom\"\n @click=${(e: MouseEvent) => this.handleAnchorClick(e)}\n @keydown=${(e: KeyboardEvent) => this.handleAnchorKeydown(e)}\n >\n <slot name=\"anchor\">\n <div\n class=\"${classMap({\n select: true,\n 'is-readonly': !this.disabled && this.readonly,\n multiple: this.multiple,\n 'input-custom': true,\n 'size--xs': this.size === 'xs',\n 'size--sm': this.size === 'sm',\n 'size--lg': this.size === 'lg',\n inline: this.inline,\n })}\"\n aria-labelledby=\"label-${this.name}\"\n aria-expanded=${this.open}\n aria-controls=\"options\"\n role=\"combobox\"\n id=${this.name}\n name=${this.name}\n title=${this._textStrings.title}\n ?required=${this.required}\n ?disabled=${this.disabled}\n ?invalid=${this._isInvalid}\n tabindex=${ifDefined(\n this.disabled ? undefined : this._isSearchVisible ? -1 : 0\n )}\n @mousedown=${(e: MouseEvent) => {\n if (!this._isSearchVisible && !this.readonly)\n e.preventDefault();\n }}\n aria-readonly=${this.readonly}\n @blur=${(e: any) => e.stopPropagation()}\n >\n ${this.multiple && selectedCount > 0\n ? html`\n <button\n class=${classMap({\n 'clear-multiple': true,\n })}\n aria-label=\"${selectedCount} items selected. Clear selections\"\n ?disabled=${this.disabled || this.readonly}\n title=${this._textStrings.clear}\n @click=${(e: Event) => this.handleClearMultiple(e)}\n >\n ${selectedCount}\n <span style=\"display:flex;\" class=\"clear-multiple-icon\">\n ${unsafeSVG(clearIcon)}\n </span>\n </button>\n `\n : null}\n ${this._isSearchVisible\n ? html`\n <input\n class=\"search\"\n type=\"text\"\n placeholder=${this.placeholder}\n value=${this.searchText}\n ?disabled=${this.disabled}\n ?readonly=${!this.disabled && this.readonly}\n aria-disabled=${this.disabled}\n @keydown=${(e: any) => this.handleSearchKeydown(e)}\n @input=${(e: any) => this.handleSearchInput(e)}\n @blur=${(e: any) => e.stopPropagation()}\n @click=${(e: any) => this.handleSearchClick(e)}\n />\n `\n : html`\n <span\n class=\"${classMap({\n 'placeholder-text': this.text === '',\n })}\"\n >\n ${this.multiple\n ? this.placeholder\n : this.value === ''\n ? this.placeholder\n : this.text}\n </span>\n `}\n <span class=\"arrow-icon\">${unsafeSVG(downIcon)}</span>\n </div>\n </slot>\n\n <div\n id=\"options\"\n class=${classMap({\n options: true,\n open: this.open,\n upwards: this._openUpwards,\n })}\n style=\"min-width: ${this.menuMinWidth};\"\n aria-hidden=${!this.open}\n @keydown=${this.handleListKeydown}\n @blur=${this.handleListBlur}\n @focus=${this._handleListFocus}\n >\n ${this.allowAddOption\n ? html`\n <div class=\"add-option-container\">\n <div class=\"add-option\">\n <div\n class=\"add-option-row\"\n @click=${this._onAddOptionRowClick}\n @keydown=${(e: KeyboardEvent) => {\n this._addOptionRowKeydown(e);\n }}\n @mousedown=${(e: MouseEvent) => e.stopPropagation()}\n >\n <slot\n name=\"add-option-input\"\n @slotchange=${() =>\n this._handleAddOptionSlotChange()}\n >\n <kyn-text-input\n class=\"add-option-input\"\n type=\"text\"\n label=\"Add new option\"\n hideLabel\n placeholder=${this._textStrings.addItem}\n .value=${this.newOptionValue}\n @on-input=${this._handleInputNewOption as any}\n @input=${this._handleInputNewOption as any}\n @focus=${this._onAddOptionInputFocus}\n ?disabled=${this.disabled || this.readonly}\n ></kyn-text-input>\n </slot>\n\n <slot\n name=\"add-option-button\"\n @slotchange=${() =>\n this._handleAddOptionSlotChange()}\n >\n <kyn-button\n class=\"add-option-button\"\n type=\"button\"\n size=\"small\"\n kind=\"secondary\"\n ?disabled=${this.disabled ||\n this.readonly ||\n addBlocked}\n @on-click=${this._handleAddOption}\n >\n ${this._textStrings.add}\n </kyn-button>\n </slot>\n </div>\n </div>\n\n ${null}\n </div>\n `\n : null}\n\n <div\n role=\"listbox\"\n aria-labelledby=\"label-${this.name}\"\n class=${classMap({\n 'dropdown-listbox': true,\n 'ai-connected': this.kind === 'ai',\n })}\n >\n ${this.multiple && this.selectAll\n ? html`\n ${this.enhanced\n ? html`\n <kyn-enhanced-dropdown-option\n class=\"select-all\"\n value=\"selectAll\"\n multiple\n ?selected=${this.selectAllChecked}\n ?indeterminate=${this.selectAllIndeterminate}\n ?disabled=${this.disabled}\n >\n ${this.selectAllText}\n </kyn-enhanced-dropdown-option>\n `\n : html`\n <kyn-dropdown-option\n class=\"select-all\"\n value=\"selectAll\"\n multiple\n ?selected=${this.selectAllChecked}\n ?indeterminate=${this.selectAllIndeterminate}\n ?disabled=${this.disabled}\n >\n ${this.selectAllText}\n </kyn-dropdown-option>\n `}\n `\n : null}\n\n <slot\n id=\"children\"\n @slotchange=${() => this.handleSlotChange()}\n ></slot>\n </div>\n </div>\n </div>\n ${this.hasSearch\n ? html`\n <kyn-button\n ?disabled=${this.disabled || this.readonly}\n class=\"clear-button dropdown-clear\"\n kind=${this.kind === 'ai' ? 'ghost-ai' : 'ghost'}\n size=${this.size === 'xs' ? 'extra-small' : 'small'}\n description=${this._textStrings.clearAll}\n @click=${(e: Event) => this.handleClear(e)}\n >\n <span style=\"display:flex;\">${unsafeSVG(clearIcon)}</span>\n </kyn-button>\n `\n : null}\n </div>\n ${this.renderHelperContent()}\n </div>\n `;\n }\n\n /** @ignore */\n private _addOptionRowKeydown(e: KeyboardEvent) {\n if (e.key === 'Enter') {\n e.preventDefault();\n e.stopPropagation();\n this._handleAddOption();\n return;\n }\n\n if (e.key === 'Escape') {\n e.preventDefault();\n e.stopPropagation();\n this._clearAddOptionInput();\n this.open = false;\n this.buttonEl?.focus?.();\n return;\n }\n\n e.stopPropagation();\n }\n\n private canOpen(): boolean {\n return !this.disabled && !this.readonly;\n }\n\n private handleAnchorClick(e: MouseEvent) {\n if (!this.canOpen()) return;\n\n const path = (e.composedPath?.() || []) as Array<EventTarget>;\n const isInOptions =\n path.some((t) => (t as HTMLElement)?.classList?.contains('options')) ||\n (e.target as HTMLElement)?.closest?.(\n 'kyn-dropdown-option, kyn-enhanced-dropdown-option, .add-option'\n );\n\n if (isInOptions) return;\n\n this.handleClick();\n }\n\n /**\n * @ignore\n */\n private _onAddOptionInputFocus = () => {\n this.assistiveText = 'Add new option input';\n };\n\n private _clearAddOptionInput() {\n this.newOptionValue = '';\n\n const slottedInput = this._getSlottedAddOptionInput() as any;\n\n if (slottedInput?.tagName === 'KYN-TEXT-INPUT') {\n slottedInput.value = '';\n const nativeInput = slottedInput.shadowRoot?.querySelector?.(\n 'input'\n ) as HTMLInputElement | null;\n if (nativeInput) nativeInput.value = '';\n }\n\n const fallback =\n this.shadowRoot?.querySelector<HTMLInputElement>('.add-option-input');\n if (fallback) fallback.value = '';\n }\n\n private _validateNewOptionValue(valueRaw: string): {\n valid: boolean;\n message: string;\n } {\n const value = valueRaw.trim();\n\n if (value.length === 0) return { valid: true, message: '' };\n\n const { slottedEl, fallbackNative } = this._getAddOptionInputEls();\n\n const slottedAsAny = slottedEl as any;\n\n const pattern =\n typeof slottedAsAny?.pattern === 'string'\n ? slottedAsAny.pattern\n : typeof slottedEl?.getAttribute?.('pattern') === 'string'\n ? (slottedEl!.getAttribute('pattern') as string)\n : typeof fallbackNative?.getAttribute?.('pattern') === 'string'\n ? (fallbackNative!.getAttribute('pattern') as string)\n : '';\n\n const minLengthRaw = Number.isFinite(slottedAsAny?.minLength)\n ? Number(slottedAsAny.minLength)\n : slottedEl?.getAttribute?.('minlength')\n ? Number(slottedEl.getAttribute('minlength'))\n : fallbackNative?.getAttribute?.('minlength')\n ? Number(fallbackNative.getAttribute('minlength'))\n : undefined;\n\n const maxLengthRaw = Number.isFinite(slottedAsAny?.maxLength)\n ? Number(slottedAsAny.maxLength)\n : slottedEl?.getAttribute?.('maxlength')\n ? Number(slottedEl.getAttribute('maxlength'))\n : fallbackNative?.getAttribute?.('maxlength')\n ? Number(fallbackNative.getAttribute('maxlength'))\n : undefined;\n\n const minLength =\n Number.isFinite(minLengthRaw) && (minLengthRaw as number) > 0\n ? (minLengthRaw as number)\n : undefined;\n\n const maxLength =\n Number.isFinite(maxLengthRaw) && (maxLengthRaw as number) > 0\n ? (maxLengthRaw as number)\n : undefined;\n\n if (typeof minLength === 'number' && value.length < minLength) {\n return { valid: false, message: '' };\n }\n\n if (typeof maxLength === 'number' && value.length > maxLength) {\n return { valid: false, message: '' };\n }\n\n if (pattern) {\n try {\n const re = new RegExp(pattern);\n if (!re.test(value)) {\n return { valid: false, message: '' };\n }\n } catch {\n // Invalid regex pattern provided by consuming dev\n }\n }\n\n if (this.preventDuplicateAddOption) {\n const needle = value.toLowerCase();\n const exists = this.options.some(\n (opt) => opt.value.trim().toLowerCase() === needle\n );\n if (exists)\n return { valid: false, message: this._textStrings.duplicateOption };\n }\n\n if (this.addOptionValidator) {\n const result = this.addOptionValidator(value, { dropdown: this });\n const msg = typeof result === 'string' ? result : '';\n if (msg) return { valid: false, message: msg };\n }\n\n return { valid: true, message: '' };\n }\n\n private handleAnchorKeydown(e: KeyboardEvent) {\n if (!this.canOpen()) {\n const openKeys = [' ', 'Enter', 'ArrowDown', 'ArrowUp'];\n if (openKeys.includes(e.key)) e.preventDefault();\n return;\n }\n\n this.handleButtonKeydown(\n e as unknown as KeyboardEvent & { keyCode: number }\n );\n }\n\n override firstUpdated() {\n if (this.placeholder === '') {\n if (this._isSearchVisible) {\n this.placeholder = 'Search';\n } else {\n this.placeholder = this.multiple ? 'Select items' : 'Select an option';\n }\n }\n }\n\n private renderHelperContent() {\n return html`\n ${this.multiple && !this.hideTags && this._tags.length\n ? html`\n <kyn-tag-group\n ?filter=${this.disabled || this.readonly ? false : true}\n role=\"list\"\n aria-label=${this._textStrings.selectedOptions}\n data-readonly=${this.readonly ? '' : nothing}\n >\n ${this._tags.map(\n (tag: any) => html`\n <kyn-tag\n role=\"listitem\"\n tagColor=${this.kind === 'ai' ? 'ai' : 'default'}\n label=${tag.text}\n ?disabled=${this.disabled || tag.disabled || this.readonly}\n @on-close=${() => this.handleTagClear(tag)}\n ></kyn-tag>\n `\n )}\n </kyn-tag-group>\n `\n : null}\n ${this.caption !== ''\n ? html`<div class=\"caption\" aria-disabled=${this.disabled}>\n ${this.caption}\n </div>`\n : null}\n ${this._isInvalid\n ? html`\n <div class=\"error\">\n <span\n class=\"error-icon\"\n role=\"img\"\n title=${this._textStrings.errorText}\n aria-label=${this._textStrings.errorText}\n >${unsafeSVG(errorIcon)}</span\n >\n ${this.invalidText || this._internalValidationMsg}\n </div>\n `\n : null}\n\n <div\n class=\"assistive-text\"\n role=\"status\"\n aria-live=\"assertive\"\n aria-relevant=\"additions text\"\n >\n ${this.assistiveText}\n </div>\n `;\n }\n\n private handleSlotChange() {\n this.updateChildOptions();\n this._updateOptions();\n this._updateSelectedText();\n }\n\n private updateChildOptions() {\n const slot = this.shadowRoot?.querySelector('#children') as HTMLSlotElement;\n const options = slot.assignedElements({ flatten: true }) as HTMLElement[];\n\n options.forEach((option) => {\n const tag = option.tagName;\n if (\n tag === 'KYN-DROPDOWN-OPTION' ||\n tag === 'KYN-ENHANCED-DROPDOWN-OPTION'\n ) {\n (option as any).allowAddOption = this.allowAddOption;\n (option as any).multiple = this.multiple;\n (option as any).readonly = this.readonly;\n }\n });\n }\n\n private handleClick() {\n if (!this.canOpen()) return;\n\n this.open = !this.open;\n if (this._isSearchVisible) this.searchEl.focus();\n else this.buttonEl.focus();\n }\n\n private handleButtonKeydown(e: any) {\n if (this.readonly) {\n if (e.key === 'Escape') {\n this.open = false;\n this.buttonEl?.focus();\n }\n return;\n }\n this.handleKeyboard(e, e.keyCode, 'button');\n }\n\n private handleListKeydown(e: KeyboardEvent & { keyCode: number }) {\n const path = (e.composedPath?.() ?? []) as EventTarget[];\n\n const isFromAddOption = path.some((t) => {\n const el = t as HTMLElement | null;\n if (!el) return false;\n\n const tag = (el.tagName ?? '').toUpperCase();\n\n return (\n el.classList?.contains?.('add-option-row') ||\n el.classList?.contains?.('add-option-input') ||\n tag === 'KYN-TEXT-INPUT' ||\n tag === 'INPUT' ||\n Boolean(el.closest?.('.add-option'))\n );\n });\n\n if (isFromAddOption) {\n return;\n }\n\n const isFromOption = path.some((t) => {\n const el = t as HTMLElement | null;\n if (!el) return false;\n const tag = (el.tagName ?? '').toUpperCase();\n return (\n tag === 'KYN-DROPDOWN-OPTION' ||\n tag === 'KYN-ENHANCED-DROPDOWN-OPTION' ||\n Boolean(\n el.closest?.('kyn-dropdown-option, kyn-enhanced-dropdown-option')\n )\n );\n });\n\n if (isFromOption) {\n return;\n }\n\n if (this.readonly) {\n if ((e as KeyboardEvent).key === 'Escape') {\n e.preventDefault();\n this.open = false;\n this.buttonEl?.focus?.();\n }\n return;\n }\n\n const TAB_KEY_CODE = 9;\n\n if (e.keyCode !== TAB_KEY_CODE) {\n e.preventDefault();\n }\n\n this.handleKeyboard(e as any, e.keyCode, 'list');\n }\n\n private _handleListFocus() {\n const selectAllOptions = Array.from(\n this.shadowRoot?.querySelectorAll('.select-all') || []\n ) as any[];\n const filteredOptions = this.options.filter(\n (option: any) => option.style.display !== 'none'\n );\n const visibleOptions = [...selectAllOptions, ...filteredOptions] as any[];\n\n const firstEnabled = visibleOptions.find((o: any) => !o.disabled) as any;\n if (!firstEnabled) return;\n\n visibleOptions.forEach((o: any) => (o.highlighted = false));\n\n firstEnabled.focus?.({ preventScroll: true });\n firstEnabled.highlighted = true;\n firstEnabled.scrollIntoView({ block: 'nearest' });\n\n this.assistiveText = firstEnabled.text || 'Option';\n }\n\n private handleListBlur(e: FocusEvent): void {\n if (this.multiple) {\n return;\n }\n\n this.options.forEach((o) => (o.highlighted = false));\n const target = e.relatedTarget as HTMLElement | null;\n\n if (\n target &&\n (target.closest('kyn-dropdown-option') ||\n target.closest('kyn-enhanced-dropdown-option') ||\n target.classList.contains('search') ||\n target.closest('.add-option'))\n ) {\n return;\n }\n\n this.open = false;\n this.assistiveText = 'Dropdown menu options.';\n }\n\n private handleKeyboard(\n e: KeyboardEvent & { keyCode: number; target: EventTarget | null },\n keyCode: number,\n target: 'button' | 'list' | 'addOption'\n ) {\n const SPACEBAR_KEY_CODE = [0, 32] as const;\n const ENTER_KEY_CODE = 13;\n const DOWN_ARROW_KEY_CODE = 40;\n const UP_ARROW_KEY_CODE = 38;\n const ESCAPE_KEY_CODE = 27;\n\n const selectAllOptions = Array.from(\n this.shadowRoot?.querySelectorAll<HTMLElement>('.select-all') ?? []\n );\n\n const filteredOptions = this.options.filter(\n (option) => (option as unknown as HTMLElement).style.display !== 'none'\n );\n\n const visibleOptions = [...selectAllOptions, ...filteredOptions] as Array<\n | HTMLElement\n | (DropdownOption | EnhancedDropdownOption)\n | (HTMLElement & {\n value?: string;\n selected?: boolean;\n highlighted?: boolean;\n disabled?: boolean;\n text?: string;\n })\n >;\n\n const highlightedEl = visibleOptions.find(\n (option) => (option as any).highlighted\n ) as any;\n\n const selectedEl = visibleOptions.find(\n (option) => (option as any).selected\n ) as any;\n\n let highlightedIndex = highlightedEl\n ? visibleOptions.indexOf(highlightedEl)\n : selectedEl\n ? visibleOptions.indexOf(selectedEl)\n : 0;\n\n if (\n SPACEBAR_KEY_CODE.includes(keyCode as (typeof SPACEBAR_KEY_CODE)[number])\n ) {\n e.preventDefault();\n }\n\n if (this.readonly) {\n if (keyCode === DOWN_ARROW_KEY_CODE || keyCode === UP_ARROW_KEY_CODE) {\n e.preventDefault();\n\n let nextIndex =\n keyCode === DOWN_ARROW_KEY_CODE\n ? (highlightedIndex + 1) % visibleOptions.length\n : (highlightedIndex - 1 + visibleOptions.length) %\n visibleOptions.length;\n\n let guard = 0;\n while (\n (visibleOptions[nextIndex] as any)?.disabled &&\n guard++ < visibleOptions.length\n ) {\n nextIndex =\n keyCode === DOWN_ARROW_KEY_CODE\n ? (nextIndex + 1) % visibleOptions.length\n : (nextIndex - 1 + visibleOptions.length) % visibleOptions.length;\n }\n\n const next = visibleOptions[nextIndex] as any;\n const current = visibleOptions[highlightedIndex] as any;\n\n if (next) {\n if (current) current.highlighted = false;\n\n (next as HTMLElement).focus?.();\n next.highlighted = true;\n (next as HTMLElement).scrollIntoView?.({ block: 'nearest' });\n\n this.assistiveText = next.text || 'Option';\n }\n\n return;\n }\n\n if (\n SPACEBAR_KEY_CODE.includes(\n keyCode as (typeof SPACEBAR_KEY_CODE)[number]\n ) ||\n keyCode === ENTER_KEY_CODE\n ) {\n e.preventDefault();\n return;\n }\n\n if (keyCode === ESCAPE_KEY_CODE) {\n this.open = false;\n (this._isSearchVisible ? this.searchEl : this.buttonEl)?.focus?.();\n this.assistiveText = 'Dropdown menu options.';\n return;\n }\n\n return;\n }\n\n const isListboxElOpened = this.open;\n\n // open the listbox\n if (target === 'button' || target === 'addOption') {\n let openDropdown =\n SPACEBAR_KEY_CODE.includes(\n keyCode as (typeof SPACEBAR_KEY_CODE)[number]\n ) ||\n keyCode === ENTER_KEY_CODE ||\n keyCode === DOWN_ARROW_KEY_CODE ||\n keyCode === UP_ARROW_KEY_CODE;\n\n if (e.target === this.clearMultipleEl && keyCode === ENTER_KEY_CODE) {\n openDropdown = false;\n\n const current = visibleOptions[highlightedIndex] as any;\n if (current) {\n current.highlighted = false;\n current.selected = !current.selected;\n }\n\n highlightedIndex = 0;\n return;\n }\n\n if (openDropdown) {\n this.open = true;\n\n if (\n this.allowAddOption &&\n target === 'button' &&\n keyCode === ENTER_KEY_CODE\n ) {\n setTimeout(() => {\n (\n this.addOptionInputSlotEl\n ?.assignedElements({ flatten: true })\n ?.find(\n (el): el is HTMLElement =>\n typeof (el as any)?.focus === 'function'\n ) as HTMLElement | undefined\n )?.focus();\n }, 100);\n } else {\n // scroll to highlighted option\n if (\n !this.multiple &&\n typeof this.value === 'string' &&\n this.value !== ''\n ) {\n (visibleOptions[highlightedIndex] as HTMLElement)?.scrollIntoView?.(\n {\n block: 'nearest',\n }\n );\n }\n }\n }\n }\n\n switch (keyCode) {\n case 0:\n case 32:\n case ENTER_KEY_CODE: {\n const current = visibleOptions[highlightedIndex] as any;\n if (!current) return;\n\n // select highlighted option\n current.highlighted = true;\n\n if (isListboxElOpened) {\n if (this.multiple) {\n current.selected = !current.selected;\n\n this._handleClick({\n detail: {\n value: current.value,\n selected: current.selected,\n },\n });\n } else {\n visibleOptions.forEach((opt) => {\n (opt as any).selected = false;\n });\n\n current.selected = true;\n\n this.updateValue(current.value, true);\n this.emitValue();\n\n this.open = false;\n this.assistiveText = `Selected ${current.value}`;\n }\n }\n\n return;\n }\n\n case DOWN_ARROW_KEY_CODE: {\n const hasHighlightedOrSelected = Boolean(highlightedEl || selectedEl);\n\n let nextIndex = !hasHighlightedOrSelected\n ? 0\n : highlightedIndex === visibleOptions.length - 1\n ? 0\n : highlightedIndex + 1;\n\n // skip disabled options\n if ((visibleOptions[nextIndex] as any)?.disabled) {\n nextIndex =\n nextIndex === visibleOptions.length - 1 ? 0 : nextIndex + 1;\n }\n\n const next = visibleOptions[nextIndex] as any;\n const current = visibleOptions[highlightedIndex] as any;\n\n next?.focus?.();\n\n if (current) current.tabIndex = -1;\n if (next) next.tabIndex = 0;\n\n if (current) current.highlighted = false;\n if (next) next.highlighted = true;\n\n (next as HTMLElement)?.scrollIntoView?.({ block: 'nearest' });\n\n this.assistiveText = next?.text ?? '';\n\n return;\n }\n\n case UP_ARROW_KEY_CODE: {\n // go to previous option\n let nextIndex =\n highlightedIndex === 0\n ? visibleOptions.length - 1\n : highlightedIndex - 1;\n\n // skip disabled options\n if ((visibleOptions[nextIndex] as any)?.disabled) {\n nextIndex =\n nextIndex === 0 ? visibleOptions.length - 1 : nextIndex - 1;\n }\n\n const next = visibleOptions[nextIndex] as any;\n const current = visibleOptions[highlightedIndex] as any;\n\n next?.focus?.();\n\n if (current) current.tabIndex = -1;\n if (next) next.tabIndex = 0;\n\n if (current) current.highlighted = false;\n if (next) next.highlighted = true;\n\n (next as HTMLElement)?.scrollIntoView?.({ block: 'nearest' });\n\n this.assistiveText = next?.text ?? '';\n\n return;\n }\n\n case ESCAPE_KEY_CODE: {\n this.open = false;\n\n if (this._isSearchVisible) {\n this.searchEl?.focus?.();\n } else {\n this.buttonEl?.focus?.();\n }\n\n this.assistiveText = 'Dropdown menu options.';\n return;\n }\n\n default: {\n return;\n }\n }\n }\n\n private handleClearMultiple(e: any) {\n if (this.readonly) return;\n\n e.stopPropagation();\n\n // clear values\n if (this.multiple) {\n const Slot: any = this.shadowRoot?.querySelector('slot#children');\n const Options: Array<any> = Slot.assignedElements();\n const DisabledSelectedOptions: Array<any> = Options.filter(\n (option: any) => option.selected && option.disabled\n ).map((option: any) => option.value);\n\n this.value = DisabledSelectedOptions.length\n ? [...DisabledSelectedOptions]\n : [];\n } else {\n this.value = '';\n }\n\n this._validate(true, false);\n this._updateSelectedOptions();\n this.emitValue();\n\n const event = new CustomEvent('on-clear-all', {\n detail: {\n value: this.value,\n },\n });\n this.dispatchEvent(event);\n }\n\n private handleTagClear(tag: any) {\n if (this.readonly) return;\n // remove value\n this.updateValue(tag.value, false);\n this._updateSelectedOptions();\n this.emitValue();\n }\n\n private handleClear(e: any) {\n if (this.readonly) return;\n\n e.stopPropagation();\n\n // reset search input text\n this.text = '';\n this.searchText = '';\n this.searchEl.value = '';\n\n this._emitSearch();\n\n if (this.filterSearch) {\n // reveal all options\n this.options.map((option: any) => {\n option.style.display = 'block';\n });\n }\n\n // clear selection for single select\n if (!this.multiple) {\n this.value = '';\n this._validate(true, false);\n this._updateSelectedOptions();\n this.emitValue();\n }\n }\n\n private handleSearchClick(e: MouseEvent) {\n if (this.readonly) return;\n e.stopPropagation();\n this.open = true;\n if ((this.searchText ?? '').trim() === '') this.searchText = '';\n }\n\n private handleSearchKeydown(e: any) {\n if (this.readonly) {\n if (e.key === 'Escape') {\n this.open = false;\n this.buttonEl.focus();\n }\n e.stopPropagation();\n e.preventDefault();\n return;\n }\n\n e.stopPropagation();\n\n const ENTER_KEY_CODE = 13;\n const ESCAPE_KEY_CODE = 27;\n const option = this.options.find((option) => option.highlighted);\n const highlightedIndex = this.options.findIndex(\n (option) => option.highlighted\n );\n this.searchTextEntered = false;\n // select option\n if (e.keyCode === ENTER_KEY_CODE) {\n this.searchTextEntered = true;\n if (option) {\n if (this.prevSearchKeydownIndex !== highlightedIndex) {\n if (this.multiple) {\n option.selected = !option.selected;\n } else {\n this.options.forEach((e) => (e.selected = false));\n option.selected = true;\n this.open = false;\n }\n this.updateValue(option.value, option.selected);\n }\n\n if (option.selected) {\n this.assistiveText = `Selected ${option.innerHTML}`;\n this.prevSearchKeydownIndex = highlightedIndex;\n } else {\n this.assistiveText = `Deselected ${option.innerHTML}`;\n }\n } else {\n this.assistiveText = 'No item matched.';\n }\n }\n\n // close listbox\n if (e.keyCode === ESCAPE_KEY_CODE) {\n this.open = false;\n this.buttonEl.focus();\n }\n }\n\n private handleSearchInput(e: any) {\n if (this.readonly) return;\n\n const value = e.target.value;\n this.searchText = value;\n this.open = true;\n\n this._emitSearch();\n\n const needle = value.toLowerCase();\n\n if (this.filterSearch) {\n // hide items that don't match\n this.options.forEach((option: any) => {\n const searchText = this._getOptionDisplayText(option).toLowerCase();\n\n option.style.display = searchText.includes(needle) ? 'block' : 'none';\n });\n\n return;\n }\n\n const matches = this.options.filter((option: any) =>\n this._getOptionDisplayText(option).toLowerCase().startsWith(needle)\n );\n\n this.options.forEach((option) => (option.highlighted = false));\n\n if (value !== '' && matches.length) {\n matches[0].highlighted = true;\n matches[0].scrollIntoView({ block: 'nearest' });\n if (this.searchTextEntered) this.assistiveText = 'Option Matched';\n }\n }\n\n private _updateSelectedOptions() {\n // set selected state for each option\n this.options.forEach((option) => {\n if (this.multiple) {\n option.selected = this.valueArray.includes(option.value);\n } else {\n option.selected = this.value === option.value;\n }\n });\n }\n private _handleClick(e: any) {\n if (this.readonly) return;\n\n if (e.detail.value === 'selectAll') {\n this.selectAllChecked = e.detail.selected;\n\n const Slot: any = this.shadowRoot?.querySelector('slot#children');\n const Options: Array<any> = Slot.assignedElements();\n const DisabledSelectedOptions: Array<any> = Options.filter(\n (option: any) => option.selected && option.disabled\n ).map((option: any) => option.value);\n\n if (e.detail.selected) {\n this.value = this.options\n .filter(\n (option) => !option.disabled || (option.disabled && option.selected)\n )\n .map((option) => option.value);\n this.assistiveText = 'Selected all items.';\n } else {\n this.value = DisabledSelectedOptions.length\n ? DisabledSelectedOptions\n : [];\n this.assistiveText = 'Deselected all items.';\n }\n\n this._validate(true, false);\n } else {\n this.updateValue(e.detail.value, e.detail.selected);\n this.assistiveText = e.detail.selected\n ? `Selected ${e.detail.value}`\n : `Deselected ${e.detail.value}`;\n }\n\n this._updateSelectedOptions();\n\n if (!this.multiple) {\n this.open = false;\n }\n\n // emit selected value\n this.emitValue();\n }\n\n private _handleBlur(e: any) {\n // For multi-select, don't auto-close on option blur\n if (this.multiple) return;\n\n const relatedTarget = e.detail?.origEvent?.relatedTarget as\n | HTMLElement\n | null\n | undefined;\n\n if (relatedTarget?.closest?.('.remove-option')) {\n return;\n }\n\n if (\n !relatedTarget ||\n (!relatedTarget.closest('kyn-dropdown-option') &&\n !relatedTarget.closest('kyn-enhanced-dropdown-option') &&\n relatedTarget.localName !== 'kyn-dropdown')\n ) {\n this.open = false;\n }\n }\n\n /** @ignore */\n private _onAddOptionRowClick = (e: Event) => {\n if (this.readonly || this.disabled) return;\n\n const path = (e.composedPath?.() ?? []) as Array<EventTarget>;\n\n const inAddOptionRow = path.some((t) =>\n (t as HTMLElement)?.classList?.contains?.('add-option-row')\n );\n if (!inAddOptionRow) return;\n\n const isButton = path.some((t) => {\n const el = t as HTMLElement;\n if (!el) return false;\n if (el.classList?.contains?.('add-option-button')) return true;\n return (el.tagName ?? '').toUpperCase() === 'KYN-BUTTON';\n });\n\n if (!isButton) return;\n\n e.preventDefault();\n e.stopPropagation();\n this._handleAddOption();\n };\n\n private _handleClickOut(e: Event) {\n if (!e.composedPath().includes(this)) {\n this.open = false;\n }\n }\n\n override connectedCallback() {\n super.connectedCallback();\n this._onConnected();\n\n document.addEventListener('click', this._onDocumentClick);\n\n this.addEventListener('on-click', this._onChildClick);\n this.addEventListener('on-remove-option', this._onChildRemove);\n this.addEventListener('on-blur', this._onChildBlur);\n }\n\n override disconnectedCallback() {\n this._onDisconnected();\n\n document.removeEventListener('click', this._onDocumentClick);\n this.removeEventListener('on-click', this._onChildClick);\n this.removeEventListener('on-remove-option', this._onChildRemove);\n this.removeEventListener('on-blur', this._onChildBlur);\n this._addOptionInputCleanup?.();\n super.disconnectedCallback();\n }\n\n /**\n * @ignore\n */\n private get valueArray(): string[] {\n return Array.isArray(this.value) ? this.value : [];\n }\n\n private updateValue(value: string, selected = false) {\n if (this.readonly) return;\n\n // set value\n if (this.multiple) {\n const next = [...this.valueArray];\n\n // update array\n if (selected) {\n if (this.allowDuplicateSelections) {\n next.push(value);\n } else if (!next.includes(value)) {\n next.push(value);\n }\n } else {\n for (let i = next.length - 1; i >= 0; i--) {\n if (next[i] === value) next.splice(i, 1);\n }\n }\n\n this.value = next;\n } else {\n this.value = value;\n }\n\n this._validate(true, false);\n\n // reset focus\n if (!this.multiple)\n (this._isSearchVisible ? this.searchEl : this.buttonEl).focus();\n }\n\n private _validate(interacted: boolean, report: boolean) {\n const isMissing =\n this.required &&\n !this.readonly &&\n (this.multiple\n ? !Array.isArray(this.value) || this.value.length === 0\n : this.value === '');\n\n const validity = {\n customError: this.invalidText !== '',\n valueMissing: isMissing,\n };\n\n // set validationMessage\n const InternalMsg = isMissing ? 'Please fill out this field.' : '';\n const validationMessage =\n this.invalidText !== '' ? this.invalidText : InternalMsg;\n\n const validationAnchor = this.buttonEl || this.listboxEl;\n\n this._internals.setValidity(\n validity,\n validationMessage,\n validationAnchor ?? undefined\n );\n\n if (interacted) this._internalValidationMsg = InternalMsg;\n if (report) this._internals.reportValidity();\n }\n\n private emitValue() {\n const event = new CustomEvent('on-change', {\n detail: {\n value: this.value,\n },\n });\n this.dispatchEvent(event);\n }\n\n private _emitSearch() {\n const event = new CustomEvent('on-search', {\n detail: {\n searchText: this.searchText,\n },\n });\n this.dispatchEvent(event);\n }\n\n override willUpdate(changedProps: any) {\n if (changedProps.has('textStrings')) {\n this._textStrings = deepmerge(_defaultTextStrings, this.textStrings);\n }\n }\n\n override updated(changedProps: PropertyValues) {\n super.updated(changedProps);\n\n if (changedProps.has('readonly')) {\n this.clearMultipleEl?.classList.toggle('is-readonly', this.readonly);\n this.clearMultipleEl?.toggleAttribute('data-readonly', this.readonly);\n }\n\n if (changedProps.has('kind')) {\n this.dispatchEvent(\n new CustomEvent('kind-changed', {\n detail: this.kind,\n bubbles: true,\n composed: true,\n })\n );\n\n this.classList.toggle('ai-connected', this.kind === 'ai');\n }\n\n const root = this.shadowRoot;\n if (!root) return;\n\n if (changedProps.has('open')) {\n const slot = root.querySelector<HTMLSlotElement>('slot[name=\"anchor\"]');\n const assigned = slot?.assignedElements({ flatten: true }) as\n | HTMLElement[]\n | undefined;\n const btn = assigned?.find(\n (el) => !el.querySelector('.clear-multiple-icon')\n );\n const icon = btn?.querySelector<HTMLElement>('span[slot=\"icon\"]');\n if (icon) {\n icon.style.transition = 'transform 0.2s ease-in-out';\n icon.style.transform = this.open ? 'rotate(180deg)' : 'rotate(0deg)';\n }\n }\n\n this._onUpdated(changedProps);\n\n if (changedProps.has('value')) {\n this._updateOptions();\n\n const childrenSlot: any =\n root.querySelector<HTMLSlotElement>('slot#children');\n const options = childrenSlot\n .assignedElements()\n .filter((o: any): o is HTMLElement => !o.disabled);\n const selected = options.filter((o: any) => o.selected);\n\n this.selectAllChecked = selected.length === options.length;\n this.selectAllIndeterminate =\n selected.length > 0 && selected.length < options.length;\n\n this._updateTags();\n this._updateSelectedText();\n }\n\n if (changedProps.has('open') || changedProps.has('openDirection')) {\n if (this.open) {\n this.options.forEach((o) => (o.highlighted = false));\n\n if (!this._isSearchVisible && this.listboxEl) {\n this.listboxEl.focus({ preventScroll: true });\n this.assistiveText =\n 'Selecting items. Use up and down arrow keys to navigate.';\n }\n }\n\n if (this.openDirection === 'up') {\n this._openUpwards = true;\n } else if (this.openDirection === 'down') {\n this._openUpwards = false;\n } else if (this.open) {\n const rect = this.buttonEl.getBoundingClientRect();\n this._openUpwards = rect.top > window.innerHeight * 0.6;\n }\n\n if (this.open && !this.multiple) {\n const firstSelected = this.options.find((o) => o.selected);\n firstSelected?.scrollIntoView({ block: 'nearest' });\n }\n }\n\n if (changedProps.has('multiple')) {\n this.options.forEach((opt) => (opt.multiple = this.multiple));\n }\n\n if (changedProps.has('searchText') && this.searchEl) {\n this.searchEl.value = this.searchText;\n }\n\n if (\n changedProps.has('multiple') ||\n changedProps.has('allowAddOption') ||\n changedProps.has('readonly')\n ) {\n this.updateChildOptions();\n }\n\n if (changedProps.has('open') && this.open && !this._isSearchVisible) {\n this.listboxEl?.focus({ preventScroll: true });\n }\n }\n\n /**\n * @ignore\n */\n private get hasSearch(): boolean {\n return (this.searchText ?? '').trim().length > 0;\n }\n\n // add selected options to Tags array\n private _updateTags() {\n if (!this.multiple) return;\n\n const counts = new Map<string, number>();\n for (const v of this.valueArray) counts.set(v, (counts.get(v) ?? 0) + 1);\n\n const options = this.options;\n\n const tags: Array<{\n value: string;\n text: string;\n disabled: boolean;\n count: number;\n }> = [];\n\n for (const [value, count] of counts.entries()) {\n const opt = options.find((o) => o.value === value);\n if (!opt) continue;\n\n tags.push({\n value,\n text: this._getOptionDisplayText(opt) || value,\n disabled: (opt as any).disabled ?? false,\n count,\n });\n }\n\n this._tags = tags;\n }\n\n private _updateOptions() {\n const Options = Array.from(\n this.querySelectorAll<DropdownOption | EnhancedDropdownOption>(\n 'kyn-dropdown-option, kyn-enhanced-dropdown-option'\n )\n );\n\n Options.forEach((option) => {\n // set option multiple state\n option.multiple = this.multiple;\n\n if (this.multiple) {\n // set option selected state\n option.selected = this.valueArray.includes(option.value);\n } else {\n option.selected = this.value === option.value;\n }\n });\n }\n\n /**\n * @ignore\n */\n private _handleAddOption = () => {\n if (this.readonly || this.disabled) return;\n\n const { slottedEl, fallbackNative } = this._getAddOptionInputEls();\n\n // prefer slotted input value, then fallback.\n const currentValue =\n typeof (slottedEl as any)?.value === 'string'\n ? (slottedEl as any).value\n : typeof fallbackNative?.value === 'string'\n ? fallbackNative.value\n : '';\n\n if (currentValue !== this.newOptionValue) {\n this.newOptionValue = currentValue;\n }\n\n const v = this.newOptionValue.trim();\n if (!v) return;\n\n const { valid, message } = this._validateNewOptionValue(v);\n if (!valid) {\n const msg = message || this._textStrings.addOptionInvalid;\n if (slottedEl && 'invalidText' in (slottedEl as any)) {\n (slottedEl as any).invalidText = msg;\n this._lastAddOptionInvalidText = msg;\n }\n return;\n }\n\n this.dispatchEvent(\n new CustomEvent('on-add-option', { detail: { value: v } })\n );\n\n this._clearAddOptionInput();\n\n if (slottedEl && 'invalidText' in (slottedEl as any)) {\n (slottedEl as any).invalidText = '';\n this._lastAddOptionInvalidText = '';\n }\n };\n\n /** @ignore */\n private _handleInputNewOption = (e: Event) => {\n const path = (e.composedPath?.() || []) as Array<EventTarget>;\n const inAddOptionRow = path.some((t) =>\n (t as HTMLElement)?.classList?.contains?.('add-option-row')\n );\n if (!inAddOptionRow) return;\n\n const target = e.target as {\n value?: unknown;\n detail?: { value?: unknown };\n };\n\n this.newOptionValue =\n typeof target?.value === 'string'\n ? target.value\n : typeof target?.detail?.value === 'string'\n ? target.detail.value\n : '';\n\n // Clear only if we set it (don’t fight consumer-provided invalidText)\n const assigned =\n this.addOptionInputSlotEl?.assignedElements({ flatten: true }) ?? [];\n const slottedInputEl = (assigned[0] as HTMLElement | undefined) ?? null;\n\n if (\n slottedInputEl &&\n 'invalidText' in (slottedInputEl as any) &&\n typeof (slottedInputEl as any).invalidText === 'string' &&\n (slottedInputEl as any).invalidText === this._lastAddOptionInvalidText\n ) {\n (slottedInputEl as any).invalidText = '';\n this._lastAddOptionInvalidText = '';\n }\n };\n\n private _handleRemoveOption() {\n this.assistiveText = 'Option removed.';\n\n setTimeout(() => {\n if (this.open) {\n this.listboxEl?.focus?.({ preventScroll: true } as any);\n } else {\n this.buttonEl?.focus?.();\n }\n }, 0);\n }\n\n private _updateSelectedText() {\n if (this.multiple) return;\n\n // update selected option text\n if (this.value !== '') {\n const option = this.options.find((o) => o.value === this.value);\n\n if (option) {\n this.text = this._getOptionDisplayText(option);\n } else {\n this.text = '';\n console.warn(`No dropdown option found with value: ${this.value}`);\n }\n }\n\n if (this._isSearchVisible && this.text) {\n this.searchText = this.text === this.placeholder ? '' : this.text;\n this.searchEl.value = this.searchText;\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kyn-dropdown': Dropdown;\n }\n}\n"],"names":["_defaultTextStrings","title","selectedOptions","requiredText","errorText","clearAll","clear","addItem","add","duplicateOption","addOptionInvalid","Dropdown","customElement","FormMixin","LitElement","_classThis","_classSuper","_Dropdown_label_accessor_storage","set","this","__runInitializers","_label_initializers","_Dropdown_size_accessor_storage","_label_extraInitializers","_size_initializers","_Dropdown_kind_accessor_storage","_size_extraInitializers","_kind_initializers","_Dropdown_inline_accessor_storage","_kind_extraInitializers","_inline_initializers","_Dropdown_caption_accessor_storage","_inline_extraInitializers","_caption_initializers","_Dropdown_placeholder_accessor_storage","_caption_extraInitializers","_placeholder_initializers","_Dropdown_open_accessor_storage","_placeholder_extraInitializers","_open_initializers","_Dropdown_searchable_accessor_storage","_open_extraInitializers","_searchable_initializers","_Dropdown_searchThreshold_accessor_storage","_searchable_extraInitializers","_searchThreshold_initializers","_Dropdown_enhanced_accessor_storage","_searchThreshold_extraInitializers","_enhanced_initializers","_Dropdown_readonly_accessor_storage","_enhanced_extraInitializers","_readonly_initializers","_Dropdown_filterSearch_accessor_storage","_readonly_extraInitializers","_filterSearch_initializers","_Dropdown_multiple_accessor_storage","_filterSearch_extraInitializers","_multiple_initializers","_Dropdown_required_accessor_storage","_multiple_extraInitializers","_required_initializers","_Dropdown_hideLabel_accessor_storage","_required_extraInitializers","_hideLabel_initializers","_Dropdown_disabled_accessor_storage","_hideLabel_extraInitializers","_disabled_initializers","_Dropdown_hideTags_accessor_storage","_disabled_extraInitializers","_hideTags_initializers","_Dropdown_selectAll_accessor_storage","_hideTags_extraInitializers","_selectAll_initializers","_Dropdown_selectAllText_accessor_storage","_selectAll_extraInitializers","_selectAllText_initializers","_Dropdown_menuMinWidth_accessor_storage","_selectAllText_extraInitializers","_menuMinWidth_initializers","_Dropdown_openDirection_accessor_storage","_menuMinWidth_extraInitializers","_openDirection_initializers","_Dropdown_selectAllChecked_accessor_storage","_openDirection_extraInitializers","_selectAllChecked_initializers","_Dropdown_selectAllIndeterminate_accessor_storage","_selectAllChecked_extraInitializers","_selectAllIndeterminate_initializers","_Dropdown_textStrings_accessor_storage","_selectAllIndeterminate_extraInitializers","_textStrings_initializers","_Dropdown_allowAddOption_accessor_storage","_textStrings_extraInitializers","_allowAddOption_initializers","_Dropdown__hasSlottedAddOptionInput_accessor_storage","_allowAddOption_extraInitializers","__hasSlottedAddOptionInput_initializers","_Dropdown__hasSlottedAddOptionButton_accessor_storage","__hasSlottedAddOptionInput_extraInitializers","__hasSlottedAddOptionButton_initializers","_Dropdown__lastAddOptionInvalidText_accessor_storage","__hasSlottedAddOptionButton_extraInitializers","__lastAddOptionInvalidText_initializers","_Dropdown_preventDuplicateAddOption_accessor_storage","__lastAddOptionInvalidText_extraInitializers","_preventDuplicateAddOption_initializers","_Dropdown_addOptionValidator_accessor_storage","_preventDuplicateAddOption_extraInitializers","_addOptionValidator_initializers","_Dropdown_allowDuplicateSelections_accessor_storage","_addOptionValidator_extraInitializers","_allowDuplicateSelections_initializers","_Dropdown__textStrings_accessor_storage","_allowDuplicateSelections_extraInitializers","__textStrings_initializers","_Dropdown_newOptionValue_accessor_storage","__textStrings_extraInitializers","_newOptionValue_initializers","_Dropdown_text_accessor_storage","_newOptionValue_extraInitializers","_text_initializers","_Dropdown_searchText_accessor_storage","_text_extraInitializers","_searchText_initializers","_Dropdown_assistiveText_accessor_storage","_searchText_extraInitializers","_assistiveText_initializers","_Dropdown_searchEl_accessor_storage","_assistiveText_extraInitializers","_searchEl_initializers","_Dropdown_buttonEl_accessor_storage","_searchEl_extraInitializers","_buttonEl_initializers","_Dropdown_listboxEl_accessor_storage","_buttonEl_extraInitializers","_listboxEl_initializers","_Dropdown_clearMultipleEl_accessor_storage","_listboxEl_extraInitializers","_clearMultipleEl_initializers","_Dropdown_addOptionInputSlotEl_accessor_storage","_clearMultipleEl_extraInitializers","_addOptionInputSlotEl_initializers","_Dropdown_addOptionButtonSlotEl_accessor_storage","_addOptionInputSlotEl_extraInitializers","_addOptionButtonSlotEl_initializers","_Dropdown__openUpwards_accessor_storage","_addOptionButtonSlotEl_extraInitializers","__openUpwards_initializers","_Dropdown__tags_accessor_storage","__openUpwards_extraInitializers","__tags_initializers","searchTextEntered","__tags_extraInitializers","prevSearchKeydownIndex","_onDocumentClick","e","_handleClickOut","_onChildClick","_handleClick","_onChildRemove","_e","_handleRemoveOption","_onChildBlur","_handleBlur","_onAddOptionInputFocus","assistiveText","_onAddOptionRowClick","readonly","disabled","path","_b","_a","composedPath","call","inAddOptionRow","some","t","classList","contains","isButton","el","_c","tagName","toUpperCase","preventDefault","stopPropagation","_handleAddOption","slottedEl","fallbackNative","_getAddOptionInputEls","currentValue","value","newOptionValue","v","trim","valid","message","_validateNewOptionValue","dispatchEvent","CustomEvent","detail","_clearAddOptionInput","invalidText","_lastAddOptionInvalidText","msg","_textStrings","_handleInputNewOption","target","slottedInputEl","_f","_d","addOptionInputSlotEl","assignedElements","flatten","label","__classPrivateFieldGet","__classPrivateFieldSet","size","kind","inline","caption","placeholder","open","searchable","searchThreshold","enhanced","filterSearch","multiple","required","hideLabel","hideTags","selectAll","selectAllText","menuMinWidth","openDirection","selectAllChecked","selectAllIndeterminate","textStrings","allowAddOption","_hasSlottedAddOptionInput","_hasSlottedAddOptionButton","preventDuplicateAddOption","addOptionValidator","allowDuplicateSelections","text","searchText","options","Array","from","querySelectorAll","_isSearchVisible","length","filter","opt","selected","searchEl","buttonEl","listboxEl","clearMultipleEl","addOptionButtonSlotEl","_getSlottedAddOptionInput","slottedNative","shadowRoot","querySelector","_getOptionDisplayText","option","titleSlot","textContent","displayText","_openUpwards","_tags","_handleAddOptionSlotChange","hasInput","hasButton","_addOptionInputCleanup","_attachAddOptionInputListener","textInput","_getAddOptionTextInput","handler","addEventListener","removeEventListener","find","toLowerCase","_addOptionBlocked","blocked","render","mainDropdownClasses","dropdown","selectedCount","isArray","addBlocked","html","classMap","name","wrapper","handleAnchorClick","handleAnchorKeydown","select","_isInvalid","ifDefined","undefined","handleClearMultiple","unsafeSVG","clearIcon","handleSearchKeydown","handleSearchInput","handleSearchClick","downIcon","upwards","handleListKeydown","handleListBlur","_handleListFocus","_addOptionRowKeydown","handleSlotChange","hasSearch","handleClear","renderHelperContent","key","focus","canOpen","isInOptions","closest","handleClick","slottedInput","nativeInput","fallback","valueRaw","slottedAsAny","pattern","getAttribute","minLengthRaw","Number","isFinite","minLength","maxLengthRaw","maxLength","_g","RegExp","test","needle","result","handleButtonKeydown","includes","firstUpdated","nothing","map","tag","handleTagClear","errorIcon","_internalValidationMsg","updateChildOptions","_updateOptions","_updateSelectedText","forEach","handleKeyboard","keyCode","isFromAddOption","Boolean","isFromOption","visibleOptions","style","display","firstEnabled","o","highlighted","preventScroll","scrollIntoView","block","relatedTarget","SPACEBAR_KEY_CODE","highlightedEl","selectedEl","highlightedIndex","indexOf","nextIndex","guard","next","current","_h","_k","_j","isListboxElOpened","openDropdown","setTimeout","_m","_l","updateValue","emitValue","_o","_p","tabIndex","_q","_r","_s","_t","_u","_v","_x","_w","_z","_y","DisabledSelectedOptions","_validate","_updateSelectedOptions","event","_emitSearch","findIndex","innerHTML","matches","startsWith","valueArray","origEvent","localName","connectedCallback","super","_onConnected","document","disconnectedCallback","_onDisconnected","push","i","splice","interacted","report","isMissing","validity","customError","valueMissing","InternalMsg","validationMessage","validationAnchor","_internals","setValidity","reportValidity","willUpdate","changedProps","has","deepmerge","updated","toggle","toggleAttribute","bubbles","composed","root","slot","assigned","btn","icon","transition","transform","_onUpdated","_updateTags","rect","getBoundingClientRect","top","window","innerHeight","firstSelected","counts","Map","get","tags","count","entries","console","warn","_label_decorators","property","type","String","_size_decorators","attribute","_inline_decorators","_caption_decorators","_placeholder_decorators","reflect","_searchable_decorators","_searchThreshold_decorators","_enhanced_decorators","_filterSearch_decorators","_multiple_decorators","_required_decorators","_hideLabel_decorators","_disabled_decorators","_hideTags_decorators","_selectAll_decorators","_selectAllText_decorators","_menuMinWidth_decorators","_openDirection_decorators","_selectAllChecked_decorators","_selectAllIndeterminate_decorators","_textStrings_decorators","Object","_allowAddOption_decorators","__hasSlottedAddOptionInput_decorators","state","__hasSlottedAddOptionButton_decorators","__lastAddOptionInvalidText_decorators","_preventDuplicateAddOption_decorators","_addOptionValidator_decorators","_allowDuplicateSelections_decorators","__textStrings_decorators","_newOptionValue_decorators","_text_decorators","_searchText_decorators","_assistiveText_decorators","query","__openUpwards_decorators","__tags_decorators","__esDecorate","static","private","access","obj","metadata","_metadata","_kind_decorators","_open_decorators","_readonly_decorators","_searchEl_decorators","_buttonEl_decorators","_listboxEl_decorators","_clearMultipleEl_decorators","_addOptionInputSlotEl_decorators","_addOptionButtonSlotEl_decorators","_classDescriptor","_classDecorators","_classExtraInitializers","styles","unsafeCSS","DropdownScss"],"mappings":"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"}
|