@kyndryl-design-system/shidoka-applications 2.55.0 → 2.56.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/reusable/dropdown/dropdown.js +1 -1
- package/components/reusable/dropdown/dropdown.js.map +1 -1
- package/components/reusable/notification/notification.d.ts +3 -1
- package/components/reusable/notification/notification.d.ts.map +1 -1
- package/components/reusable/notification/notification.js +5 -5
- package/components/reusable/notification/notification.js.map +1 -1
- package/package.json +1 -1
|
@@ -970,5 +970,5 @@ kyn-tag-group {
|
|
|
970
970
|
${this.assistiveText}
|
|
971
971
|
</div>
|
|
972
972
|
</div>
|
|
973
|
-
`}firstUpdated(){""===this.placeholder&&(this.searchable?this.placeholder="Search":this.multiple?this.placeholder="Select items":this.placeholder="Select an option")}handleSlotChange(){this.updateChildOptions(),this._updateOptions(),this._updateSelectedText()}updateChildOptions(){var e;(null===(e=this.shadowRoot)||void 0===e?void 0:e.querySelector("#children")).assignedElements({flatten:!0}).forEach((e=>{"KYN-DROPDOWN-OPTION"!==e.tagName&&"KYN-ENHANCED-DROPDOWN-OPTION"!==e.tagName||(e.allowAddOption=this.allowAddOption)}))}handleClick(){this.disabled||(this.open=!this.open,this.searchable?this.searchEl.focus():this.buttonEl.focus())}handleButtonKeydown(e){this.handleKeyboard(e,e.keyCode,"button")}handleListKeydown(e){9!==e.keyCode&&e.preventDefault(),this.handleKeyboard(e,e.keyCode,"list")}handleListBlur(e){if(this.multiple)return;this.options.forEach((e=>e.highlighted=!1));const t=e.relatedTarget;t&&(t.closest("kyn-dropdown-option")||t.closest("kyn-enhanced-dropdown-option")||t.classList.contains("search")||t.closest(".add-option"))||(this.open=!1,this.assistiveText="Dropdown menu options.")}handleKeyboard(e,t,i){var s;const a=[0,32],l=[...Array.from((null===(s=this.shadowRoot)||void 0===s?void 0:s.querySelectorAll(".select-all"))||[]),...this.options.filter((e=>"none"!==e.style.display))],n=l.find((e=>e.highlighted)),o=l.find((e=>e.selected));let r=n?l.indexOf(n):o?l.indexOf(o):0;a.includes(t)&&e.preventDefault();const d=this.open;if("button"===i||"addOption"===i){let s=a.includes(t)||13===t||40==t||38==t;if(e.target===this.clearMultipleEl&&13===t&&(s=!1,l[r].highlighted=!1,l[r].selected=!l[r].selected,r=0,13!==t))return;s&&(this.open=!0,this.allowAddOption&&"button"===i&&13===t?setTimeout((()=>{var e;null===(e=this.addOptionInputEl)||void 0===e||e.focus()}),100):this.multiple||""===this.value||l[r].scrollIntoView({block:"nearest"}))}switch(t){case 0:case 32:case 13:return l[r].highlighted=!0,void(d&&(this.multiple?(l[r].selected=!l[r].selected,this._handleClick({detail:{value:l[r].value,selected:l[r].selected}})):(l.forEach((e=>e.selected=!1)),l[r].selected=!0,this.updateValue(l[r].value,!0),this.emitValue(),this.open=!1,this.assistiveText=`Selected ${l[r].value}`)));case 40:{let e=n||o?r===l.length-1?0:r+1:0;return l[e].disabled&&(e=e===l.length-1?0:e+1),l[e].focus(),l[r].highlighted=!1,l[e].highlighted=!0,l[e].scrollIntoView({block:"nearest"}),void(this.assistiveText=l[e].text)}case 38:{let e=0===r?l.length-1:r-1;return l[e].disabled&&(e=0===e?l.length-1:e-1),l[e].focus(),l[r].highlighted=!1,l[e].highlighted=!0,l[e].scrollIntoView({block:"nearest"}),void(this.assistiveText=l[e].text)}case 27:return this.open=!1,this.searchable?this.searchEl.focus():this.buttonEl.focus(),void(this.assistiveText="Dropdown menu options.");default:return}}handleClearMultiple(e){var t;if(e.stopPropagation(),this.multiple){const e=(null===(t=this.shadowRoot)||void 0===t?void 0:t.querySelector("slot#children")).assignedElements().filter((e=>e.selected&&e.disabled)).map((e=>e.value));this.value=e.length?e:[]}else this.value="";this._validate(!0,!1),this._updateSelectedOptions(),this.emitValue();const i=new CustomEvent("on-clear-all",{detail:{value:this.value}});this.dispatchEvent(i)}handleTagClear(e){this.updateValue(e.value,!1),this._updateSelectedOptions(),this.emitValue()}handleClear(e){e.stopPropagation(),this.text="",this.searchText="",this.searchEl.value="",this._emitSearch(),this.filterSearch&&this.options.map((e=>{e.style.display="block"})),this.multiple||(this.value="",this._validate(!0,!1),this._updateSelectedOptions(),this.emitValue())}handleSearchClick(e){e.stopPropagation(),this.open=!0}handleSearchKeydown(e){e.stopPropagation();const t=this.options.find((e=>e.highlighted)),i=this.options.findIndex((e=>e.highlighted));this.searchTextEntered=!1,13===e.keyCode&&(this.searchTextEntered=!0,t?(this.prevSearchKeydownIndex!==i&&(this.multiple?t.selected=!t.selected:(this.options.forEach((e=>e.selected=!1)),t.selected=!0,this.open=!1),this.updateValue(t.value,t.selected)),t.selected?(this.assistiveText=`Selected ${t.innerHTML}`,this.prevSearchKeydownIndex=i):this.assistiveText=`Deselected ${t.innerHTML}`):this.assistiveText="No item matched."),27===e.keyCode&&(this.open=!1,this.buttonEl.focus())}handleSearchInput(e){const t=e.target.value;if(this.searchText=t,this.open=!0,this._emitSearch(),this.filterSearch)this.options.map((e=>{let i=e.text;if("KYN-ENHANCED-DROPDOWN-OPTION"===e.tagName){const t=e.querySelector('[slot="title"]');i=t&&t.textContent.trim()?t.textContent.trim():e.displayText||e.value}i.toLowerCase().includes(t.toLowerCase())?e.style.display="block":e.style.display="none"}));else{const e=this.options.filter((e=>{let i=e.text;if("KYN-ENHANCED-DROPDOWN-OPTION"===e.tagName){const t=e.querySelector('[slot="title"]');i=t&&t.textContent.trim()?t.textContent.trim():e.displayText||e.value}return i.toLowerCase().startsWith(t.toLowerCase())}));this.options.forEach((e=>e.highlighted=!1)),""!==t&&e.length&&(e[0].highlighted=!0,e[0].scrollIntoView({block:"nearest"}),this.searchTextEntered&&(this.assistiveText="Option Matched"))}}_updateSelectedOptions(){this.options.forEach((e=>{this.multiple?e.selected=this.value.includes(e.value):e.selected=this.value===e.value}))}_handleClick(e){var t;if("selectAll"===e.detail.value){this.selectAllChecked=e.detail.selected;const i=(null===(t=this.shadowRoot)||void 0===t?void 0:t.querySelector("slot#children")).assignedElements().filter((e=>e.selected&&e.disabled)).map((e=>e.value));e.detail.selected?(this.value=this.options.filter((e=>!e.disabled||e.disabled&&e.selected)).map((e=>e.value)),this.assistiveText="Selected all items."):(this.value=i.length?i:[],this.assistiveText="Deselected all items."),this._validate(!0,!1)}else this.updateValue(e.detail.value,e.detail.selected),this.assistiveText=e.detail.selected?`Selected ${e.detail.value}`:`Deselected ${e.detail.value}`;this._updateSelectedOptions(),this.multiple&&(this.open=!1),this.emitValue()}_handleBlur(e){const t=e.detail.origEvent.relatedTarget;(!t||"kyn-dropdown-option"!==(null==t?void 0:t.localName)&&"kyn-enhanced-dropdown-option"!==(null==t?void 0:t.localName)&&"kyn-dropdown"!==t.localName)&&(this.open=!1)}_handleClickOut(e){e.composedPath().includes(this)||(this.open=!1)}connectedCallback(){super.connectedCallback(),this._onConnected(),document.addEventListener("click",(e=>this._handleClickOut(e))),this.addEventListener("on-click",(e=>this._handleClick(e))),this.addEventListener("on-remove-option",(()=>this._handleRemoveOption())),this.addEventListener("on-blur",(e=>this._handleBlur(e)))}disconnectedCallback(){this._onDisconnected(),document.removeEventListener("click",(e=>this._handleClickOut(e))),this.removeEventListener("on-click",(e=>this._handleClick(e))),this.removeEventListener("on-remove-option",(()=>this._handleRemoveOption())),this.removeEventListener("on-blur",(e=>this._handleBlur(e))),super.disconnectedCallback()}updateValue(e,t=!1){if(this.multiple){const i=""===this.value?[]:JSON.parse(JSON.stringify(this.value));if(t)i.push(e);else{const t=i.indexOf(e);i.splice(t,1)}this.value=i}else this.value=e;this._validate(!0,!1),this.multiple||(this.searchable?this.searchEl.focus():this.buttonEl.focus())}_validate(e,t){const i={customError:""!==this.invalidText,valueMissing:this.required&&(!this.value||this.multiple&&!this.value.length||!this.multiple&&""===this.value)},s=this.required&&!this.value.length?"Please fill out this field.":"",a=""!==this.invalidText?this.invalidText:s,l=this.buttonEl||this.listboxEl;l?this._internals.setValidity(i,a,l):this._internals.setValidity(i,a),e&&(this._internalValidationMsg=s),t&&this._internals.reportValidity()}emitValue(){const e=new CustomEvent("on-change",{detail:{value:this.value}});this.dispatchEvent(e)}_emitSearch(){const e=new CustomEvent("on-search",{detail:{searchText:this.searchText}});this.dispatchEvent(e)}willUpdate(e){e.has("textStrings")&&(this._textStrings=v(y,this.textStrings))}updated(e){super.updated(e);const t=this.shadowRoot;if(t){if(e.has("open")){const e=t.querySelector('slot[name="button"]'),i=null==e?void 0:e.assignedElements({flatten:!0}),s=null==i?void 0:i[0],a=null==s?void 0:s.querySelector('span[slot="icon"]');a&&(a.style.transition="transform 0.2s ease-in-out",a.style.transform=this.open?"rotate(180deg)":"rotate(0deg)")}if(this._onUpdated(e),e.has("value")){this._updateOptions();const e=t.querySelector("slot#children"),i=e?e.assignedElements().filter((e=>!e.hasAttribute("disabled"))):[],s=i.filter((e=>e.hasAttribute("selected")));this.selectAllChecked=s.length===i.length,this.selectAllIndeterminate=s.length>0&&s.length<i.length,this._updateTags(),this._updateSelectedText()}if(e.has("open")||e.has("openDirection")){if(this.open&&!this.searchable&&this.listboxEl&&(this.listboxEl.focus({preventScroll:!0}),this.assistiveText="Selecting items. Use up and down arrow keys to navigate."),"up"===this.openDirection)this._openUpwards=!0;else if("down"===this.openDirection)this._openUpwards=!1;else if(this.open){const e=this.buttonEl.getBoundingClientRect();this._openUpwards=e.top>.6*window.innerHeight}if(this.open&&!this.multiple){const e=this.options.find((e=>e.selected));null==e||e.scrollIntoView({block:"nearest"})}}e.has("multiple")&&this.options.forEach((e=>e.multiple=this.multiple)),e.has("searchText")&&this.searchEl&&(this.searchEl.value=this.searchText),e.has("allowAddOption")&&this.updateChildOptions()}}_updateTags(){if(this.multiple){const e=Array.from(this.querySelectorAll("kyn-dropdown-option, kyn-enhanced-dropdown-option")),t=[];e&&(e.forEach((e=>{if(e.selected){let i=e.textContent;if("KYN-ENHANCED-DROPDOWN-OPTION"===e.tagName){const t=e.querySelector('[slot="title"]');i=t&&t.textContent.trim()?t.textContent.trim():e.displayText||e.value}else i=e.textContent.trim();t.push({value:e.value,text:i,disabled:e.disabled})}})),this._tags=t)}}_updateOptions(){Array.from(this.querySelectorAll("kyn-dropdown-option, kyn-enhanced-dropdown-option")).forEach((e=>{if(e.multiple=this.multiple,this.multiple){const t=this.value.includes(e.value);e.selected=t}else e.selected=this.value===e.value}))}_handleInputNewOption(e){const t=e.target;this.newOptionValue=t.value}_handleRemoveOption(){this.assistiveText="MY option removed ",setTimeout((()=>{this.open=!1,this.buttonEl.focus()}),100)}_updateSelectedText(){const e=Array.from(this.querySelectorAll("kyn-dropdown-option, kyn-enhanced-dropdown-option"));if(!this.multiple){if(e.length&&""!==this.value){const t=e.find((e=>e.value===this.value));if(t)if("KYN-ENHANCED-DROPDOWN-OPTION"===t.tagName){const e=t.querySelector('[slot="title"]');e&&e.textContent.trim()?this.text=e.textContent.trim():this.text=t.displayText||this.value}else this.text=t.textContent.trim();else this.text="",console.warn(`No dropdown option found with value: ${this.value}`)}this.searchable&&this.text&&(this.searchText=this.text===this.placeholder?"":this.text,this.searchEl.value=this.searchText)}}},r=new WeakMap,S=new WeakMap,z=new WeakMap,T=new WeakMap,_=new WeakMap,A=new WeakMap,C=new WeakMap,M=new WeakMap,W=new WeakMap,I=new WeakMap,N=new WeakMap,D=new WeakMap,q=new WeakMap,V=new WeakMap,j=new WeakMap,L=new WeakMap,K=new WeakMap,B=new WeakMap,P=new WeakMap,R=new WeakMap,U=new WeakMap,Y=new WeakMap,H=new WeakMap,F=new WeakMap,G=new WeakMap,J=new WeakMap,Q=new WeakMap,X=new WeakMap,Z=new WeakMap,ee=new WeakMap,te=new WeakMap,ie=new WeakMap,se=new WeakMap,ae=new WeakMap,e(ne,"Dropdown"),(()=>{var e;const i="function"==typeof Symbol&&Symbol.metadata?Object.create(null!==(e=Pe[Symbol.metadata])&&void 0!==e?e:null):void 0;oe=[p({type:String})],re=[p({type:String})],de=[p({type:Boolean})],he=[p({type:String})],ce=[p({type:String})],pe=[p({type:Boolean,reflect:!0})],ue=[p({type:Boolean})],me=[p({type:Boolean})],ge=[p({type:Boolean})],ve=[p({type:Boolean})],fe=[p({type:Boolean})],be=[p({type:Boolean})],ke=[p({type:Boolean})],xe=[p({type:Boolean})],ye=[p({type:Boolean})],we=[p({type:String})],Ee=[p({type:String})],Oe=[p({type:String})],$e=[p({type:Boolean})],Se=[p({type:Boolean})],ze=[p({type:Object})],Te=[p({type:Boolean})],_e=[d()],Ae=[d()],Ce=[d()],Me=[p({type:String})],We=[d()],Ie=[u(".search")],Ne=[u(".select")],De=[u(".options")],qe=[u(".clear-multiple")],Ve=[u(".add-option-input")],je=[d()],Le=[d()],t(ne,null,oe,{kind:"accessor",name:"label",static:!1,private:!1,access:{has:e=>"label"in e,get:e=>e.label,set:(e,t)=>{e.label=t}},metadata:i},Re,Ue),t(ne,null,re,{kind:"accessor",name:"size",static:!1,private:!1,access:{has:e=>"size"in e,get:e=>e.size,set:(e,t)=>{e.size=t}},metadata:i},Ye,He),t(ne,null,de,{kind:"accessor",name:"inline",static:!1,private:!1,access:{has:e=>"inline"in e,get:e=>e.inline,set:(e,t)=>{e.inline=t}},metadata:i},Fe,Ge),t(ne,null,he,{kind:"accessor",name:"caption",static:!1,private:!1,access:{has:e=>"caption"in e,get:e=>e.caption,set:(e,t)=>{e.caption=t}},metadata:i},Je,Qe),t(ne,null,ce,{kind:"accessor",name:"placeholder",static:!1,private:!1,access:{has:e=>"placeholder"in e,get:e=>e.placeholder,set:(e,t)=>{e.placeholder=t}},metadata:i},Xe,Ze),t(ne,null,pe,{kind:"accessor",name:"open",static:!1,private:!1,access:{has:e=>"open"in e,get:e=>e.open,set:(e,t)=>{e.open=t}},metadata:i},et,tt),t(ne,null,ue,{kind:"accessor",name:"searchable",static:!1,private:!1,access:{has:e=>"searchable"in e,get:e=>e.searchable,set:(e,t)=>{e.searchable=t}},metadata:i},it,st),t(ne,null,me,{kind:"accessor",name:"enhanced",static:!1,private:!1,access:{has:e=>"enhanced"in e,get:e=>e.enhanced,set:(e,t)=>{e.enhanced=t}},metadata:i},at,lt),t(ne,null,ge,{kind:"accessor",name:"filterSearch",static:!1,private:!1,access:{has:e=>"filterSearch"in e,get:e=>e.filterSearch,set:(e,t)=>{e.filterSearch=t}},metadata:i},nt,ot),t(ne,null,ve,{kind:"accessor",name:"multiple",static:!1,private:!1,access:{has:e=>"multiple"in e,get:e=>e.multiple,set:(e,t)=>{e.multiple=t}},metadata:i},rt,dt),t(ne,null,fe,{kind:"accessor",name:"required",static:!1,private:!1,access:{has:e=>"required"in e,get:e=>e.required,set:(e,t)=>{e.required=t}},metadata:i},ht,ct),t(ne,null,be,{kind:"accessor",name:"hideLabel",static:!1,private:!1,access:{has:e=>"hideLabel"in e,get:e=>e.hideLabel,set:(e,t)=>{e.hideLabel=t}},metadata:i},pt,ut),t(ne,null,ke,{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},mt,gt),t(ne,null,xe,{kind:"accessor",name:"hideTags",static:!1,private:!1,access:{has:e=>"hideTags"in e,get:e=>e.hideTags,set:(e,t)=>{e.hideTags=t}},metadata:i},vt,ft),t(ne,null,ye,{kind:"accessor",name:"selectAll",static:!1,private:!1,access:{has:e=>"selectAll"in e,get:e=>e.selectAll,set:(e,t)=>{e.selectAll=t}},metadata:i},bt,kt),t(ne,null,we,{kind:"accessor",name:"selectAllText",static:!1,private:!1,access:{has:e=>"selectAllText"in e,get:e=>e.selectAllText,set:(e,t)=>{e.selectAllText=t}},metadata:i},xt,yt),t(ne,null,Ee,{kind:"accessor",name:"menuMinWidth",static:!1,private:!1,access:{has:e=>"menuMinWidth"in e,get:e=>e.menuMinWidth,set:(e,t)=>{e.menuMinWidth=t}},metadata:i},wt,Et),t(ne,null,Oe,{kind:"accessor",name:"openDirection",static:!1,private:!1,access:{has:e=>"openDirection"in e,get:e=>e.openDirection,set:(e,t)=>{e.openDirection=t}},metadata:i},Ot,$t),t(ne,null,$e,{kind:"accessor",name:"selectAllChecked",static:!1,private:!1,access:{has:e=>"selectAllChecked"in e,get:e=>e.selectAllChecked,set:(e,t)=>{e.selectAllChecked=t}},metadata:i},St,zt),t(ne,null,Se,{kind:"accessor",name:"selectAllIndeterminate",static:!1,private:!1,access:{has:e=>"selectAllIndeterminate"in e,get:e=>e.selectAllIndeterminate,set:(e,t)=>{e.selectAllIndeterminate=t}},metadata:i},Tt,_t),t(ne,null,ze,{kind:"accessor",name:"textStrings",static:!1,private:!1,access:{has:e=>"textStrings"in e,get:e=>e.textStrings,set:(e,t)=>{e.textStrings=t}},metadata:i},At,Ct),t(ne,null,Te,{kind:"accessor",name:"allowAddOption",static:!1,private:!1,access:{has:e=>"allowAddOption"in e,get:e=>e.allowAddOption,set:(e,t)=>{e.allowAddOption=t}},metadata:i},Mt,Wt),t(ne,null,_e,{kind:"accessor",name:"_textStrings",static:!1,private:!1,access:{has:e=>"_textStrings"in e,get:e=>e._textStrings,set:(e,t)=>{e._textStrings=t}},metadata:i},It,Nt),t(ne,null,Ae,{kind:"accessor",name:"newOptionValue",static:!1,private:!1,access:{has:e=>"newOptionValue"in e,get:e=>e.newOptionValue,set:(e,t)=>{e.newOptionValue=t}},metadata:i},Dt,qt),t(ne,null,Ce,{kind:"accessor",name:"text",static:!1,private:!1,access:{has:e=>"text"in e,get:e=>e.text,set:(e,t)=>{e.text=t}},metadata:i},Vt,jt),t(ne,null,Me,{kind:"accessor",name:"searchText",static:!1,private:!1,access:{has:e=>"searchText"in e,get:e=>e.searchText,set:(e,t)=>{e.searchText=t}},metadata:i},Lt,Kt),t(ne,null,We,{kind:"accessor",name:"assistiveText",static:!1,private:!1,access:{has:e=>"assistiveText"in e,get:e=>e.assistiveText,set:(e,t)=>{e.assistiveText=t}},metadata:i},Bt,Pt),t(ne,null,Ie,{kind:"accessor",name:"searchEl",static:!1,private:!1,access:{has:e=>"searchEl"in e,get:e=>e.searchEl,set:(e,t)=>{e.searchEl=t}},metadata:i},Rt,Ut),t(ne,null,Ne,{kind:"accessor",name:"buttonEl",static:!1,private:!1,access:{has:e=>"buttonEl"in e,get:e=>e.buttonEl,set:(e,t)=>{e.buttonEl=t}},metadata:i},Yt,Ht),t(ne,null,De,{kind:"accessor",name:"listboxEl",static:!1,private:!1,access:{has:e=>"listboxEl"in e,get:e=>e.listboxEl,set:(e,t)=>{e.listboxEl=t}},metadata:i},Ft,Gt),t(ne,null,qe,{kind:"accessor",name:"clearMultipleEl",static:!1,private:!1,access:{has:e=>"clearMultipleEl"in e,get:e=>e.clearMultipleEl,set:(e,t)=>{e.clearMultipleEl=t}},metadata:i},Jt,Qt),t(ne,null,Ve,{kind:"accessor",name:"addOptionInputEl",static:!1,private:!1,access:{has:e=>"addOptionInputEl"in e,get:e=>e.addOptionInputEl,set:(e,t)=>{e.addOptionInputEl=t}},metadata:i},Xt,Zt),t(ne,null,je,{kind:"accessor",name:"_openUpwards",static:!1,private:!1,access:{has:e=>"_openUpwards"in e,get:e=>e._openUpwards,set:(e,t)=>{e._openUpwards=t}},metadata:i},ei,ti),t(ne,null,Le,{kind:"accessor",name:"_tags",static:!1,private:!1,access:{has:e=>"_tags"in e,get:e=>e._tags,set:(e,t)=>{e._tags=t}},metadata:i},ii,si),t(null,le={value:ne},Ke,{kind:"class",name:ne.name,metadata:i},null,Be),ne=le.value,i&&Object.defineProperty(ne,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:i})})(),ne.styles=c(x),i(ne,Be),ne})();export{S as Dropdown};
|
|
973
|
+
`}firstUpdated(){""===this.placeholder&&(this.searchable?this.placeholder="Search":this.multiple?this.placeholder="Select items":this.placeholder="Select an option")}handleSlotChange(){this.updateChildOptions(),this._updateOptions(),this._updateSelectedText()}updateChildOptions(){var e;(null===(e=this.shadowRoot)||void 0===e?void 0:e.querySelector("#children")).assignedElements({flatten:!0}).forEach((e=>{"KYN-DROPDOWN-OPTION"!==e.tagName&&"KYN-ENHANCED-DROPDOWN-OPTION"!==e.tagName||(e.allowAddOption=this.allowAddOption)}))}handleClick(){this.disabled||(this.open=!this.open,this.searchable?this.searchEl.focus():this.buttonEl.focus())}handleButtonKeydown(e){this.handleKeyboard(e,e.keyCode,"button")}handleListKeydown(e){9!==e.keyCode&&e.preventDefault(),this.handleKeyboard(e,e.keyCode,"list")}handleListBlur(e){if(this.multiple)return;this.options.forEach((e=>e.highlighted=!1));const t=e.relatedTarget;t&&(t.closest("kyn-dropdown-option")||t.closest("kyn-enhanced-dropdown-option")||t.classList.contains("search")||t.closest(".add-option"))||(this.open=!1,this.assistiveText="Dropdown menu options.")}handleKeyboard(e,t,i){var s;const a=[0,32],l=[...Array.from((null===(s=this.shadowRoot)||void 0===s?void 0:s.querySelectorAll(".select-all"))||[]),...this.options.filter((e=>"none"!==e.style.display))],n=l.find((e=>e.highlighted)),o=l.find((e=>e.selected));let r=n?l.indexOf(n):o?l.indexOf(o):0;a.includes(t)&&e.preventDefault();const d=this.open;if("button"===i||"addOption"===i){let s=a.includes(t)||13===t||40==t||38==t;if(e.target===this.clearMultipleEl&&13===t&&(s=!1,l[r].highlighted=!1,l[r].selected=!l[r].selected,r=0,13!==t))return;s&&(this.open=!0,this.allowAddOption&&"button"===i&&13===t?setTimeout((()=>{var e;null===(e=this.addOptionInputEl)||void 0===e||e.focus()}),100):this.multiple||""===this.value||l[r].scrollIntoView({block:"nearest"}))}switch(t){case 0:case 32:case 13:return l[r].highlighted=!0,void(d&&(this.multiple?(l[r].selected=!l[r].selected,this._handleClick({detail:{value:l[r].value,selected:l[r].selected}})):(l.forEach((e=>e.selected=!1)),l[r].selected=!0,this.updateValue(l[r].value,!0),this.emitValue(),this.open=!1,this.assistiveText=`Selected ${l[r].value}`)));case 40:{let e=n||o?r===l.length-1?0:r+1:0;return l[e].disabled&&(e=e===l.length-1?0:e+1),l[e].focus(),l[r].highlighted=!1,l[e].highlighted=!0,l[e].scrollIntoView({block:"nearest"}),void(this.assistiveText=l[e].text)}case 38:{let e=0===r?l.length-1:r-1;return l[e].disabled&&(e=0===e?l.length-1:e-1),l[e].focus(),l[r].highlighted=!1,l[e].highlighted=!0,l[e].scrollIntoView({block:"nearest"}),void(this.assistiveText=l[e].text)}case 27:return this.open=!1,this.searchable?this.searchEl.focus():this.buttonEl.focus(),void(this.assistiveText="Dropdown menu options.");default:return}}handleClearMultiple(e){var t;if(e.stopPropagation(),this.multiple){const e=(null===(t=this.shadowRoot)||void 0===t?void 0:t.querySelector("slot#children")).assignedElements().filter((e=>e.selected&&e.disabled)).map((e=>e.value));this.value=e.length?e:[]}else this.value="";this._validate(!0,!1),this._updateSelectedOptions(),this.emitValue();const i=new CustomEvent("on-clear-all",{detail:{value:this.value}});this.dispatchEvent(i)}handleTagClear(e){this.updateValue(e.value,!1),this._updateSelectedOptions(),this.emitValue()}handleClear(e){e.stopPropagation(),this.text="",this.searchText="",this.searchEl.value="",this._emitSearch(),this.filterSearch&&this.options.map((e=>{e.style.display="block"})),this.multiple||(this.value="",this._validate(!0,!1),this._updateSelectedOptions(),this.emitValue())}handleSearchClick(e){e.stopPropagation(),this.open=!0}handleSearchKeydown(e){e.stopPropagation();const t=this.options.find((e=>e.highlighted)),i=this.options.findIndex((e=>e.highlighted));this.searchTextEntered=!1,13===e.keyCode&&(this.searchTextEntered=!0,t?(this.prevSearchKeydownIndex!==i&&(this.multiple?t.selected=!t.selected:(this.options.forEach((e=>e.selected=!1)),t.selected=!0,this.open=!1),this.updateValue(t.value,t.selected)),t.selected?(this.assistiveText=`Selected ${t.innerHTML}`,this.prevSearchKeydownIndex=i):this.assistiveText=`Deselected ${t.innerHTML}`):this.assistiveText="No item matched."),27===e.keyCode&&(this.open=!1,this.buttonEl.focus())}handleSearchInput(e){const t=e.target.value;if(this.searchText=t,this.open=!0,this._emitSearch(),this.filterSearch)this.options.map((e=>{let i=e.text;if("KYN-ENHANCED-DROPDOWN-OPTION"===e.tagName){const t=e.querySelector('[slot="title"]');i=t&&t.textContent.trim()?t.textContent.trim():e.displayText||e.value}i.toLowerCase().includes(t.toLowerCase())?e.style.display="block":e.style.display="none"}));else{const e=this.options.filter((e=>{let i=e.text;if("KYN-ENHANCED-DROPDOWN-OPTION"===e.tagName){const t=e.querySelector('[slot="title"]');i=t&&t.textContent.trim()?t.textContent.trim():e.displayText||e.value}return i.toLowerCase().startsWith(t.toLowerCase())}));this.options.forEach((e=>e.highlighted=!1)),""!==t&&e.length&&(e[0].highlighted=!0,e[0].scrollIntoView({block:"nearest"}),this.searchTextEntered&&(this.assistiveText="Option Matched"))}}_updateSelectedOptions(){this.options.forEach((e=>{this.multiple?e.selected=this.value.includes(e.value):e.selected=this.value===e.value}))}_handleClick(e){var t;if("selectAll"===e.detail.value){this.selectAllChecked=e.detail.selected;const i=(null===(t=this.shadowRoot)||void 0===t?void 0:t.querySelector("slot#children")).assignedElements().filter((e=>e.selected&&e.disabled)).map((e=>e.value));e.detail.selected?(this.value=this.options.filter((e=>!e.disabled||e.disabled&&e.selected)).map((e=>e.value)),this.assistiveText="Selected all items."):(this.value=i.length?i:[],this.assistiveText="Deselected all items."),this._validate(!0,!1)}else this.updateValue(e.detail.value,e.detail.selected),this.assistiveText=e.detail.selected?`Selected ${e.detail.value}`:`Deselected ${e.detail.value}`;this._updateSelectedOptions(),this.multiple&&(this.open=!1),this.emitValue()}_handleBlur(e){const t=e.detail.origEvent.relatedTarget;(!t||"kyn-dropdown-option"!==(null==t?void 0:t.localName)&&"kyn-enhanced-dropdown-option"!==(null==t?void 0:t.localName)&&"kyn-dropdown"!==t.localName)&&(this.open=!1)}_handleClickOut(e){e.composedPath().includes(this)||(this.open=!1)}connectedCallback(){super.connectedCallback(),this._onConnected(),document.addEventListener("click",(e=>this._handleClickOut(e))),this.addEventListener("on-click",(e=>this._handleClick(e))),this.addEventListener("on-remove-option",(()=>this._handleRemoveOption())),this.addEventListener("on-blur",(e=>this._handleBlur(e)))}disconnectedCallback(){this._onDisconnected(),document.removeEventListener("click",(e=>this._handleClickOut(e))),this.removeEventListener("on-click",(e=>this._handleClick(e))),this.removeEventListener("on-remove-option",(()=>this._handleRemoveOption())),this.removeEventListener("on-blur",(e=>this._handleBlur(e))),super.disconnectedCallback()}updateValue(e,t=!1){if(this.multiple){const i=""===this.value?[]:JSON.parse(JSON.stringify(this.value));if(t)i.push(e);else{const t=i.indexOf(e);i.splice(t,1)}this.value=i}else this.value=e;this._validate(!0,!1),this.multiple||(this.searchable?this.searchEl.focus():this.buttonEl.focus())}_validate(e,t){const i={customError:""!==this.invalidText,valueMissing:this.required&&(!this.value||this.multiple&&!this.value.length||!this.multiple&&""===this.value)},s=this.required&&!this.value.length?"Please fill out this field.":"",a=""!==this.invalidText?this.invalidText:s,l=this.buttonEl||this.listboxEl;l?this._internals.setValidity(i,a,l):this._internals.setValidity(i,a),e&&(this._internalValidationMsg=s),t&&this._internals.reportValidity()}emitValue(){const e=new CustomEvent("on-change",{detail:{value:this.value}});this.dispatchEvent(e)}_emitSearch(){const e=new CustomEvent("on-search",{detail:{searchText:this.searchText}});this.dispatchEvent(e)}willUpdate(e){e.has("textStrings")&&(this._textStrings=v(y,this.textStrings))}updated(e){super.updated(e);const t=this.shadowRoot;if(t){if(e.has("open")){const e=t.querySelector('slot[name="anchor"]'),i=null==e?void 0:e.assignedElements({flatten:!0}),s=null==i?void 0:i[0],a=null==s?void 0:s.querySelector('span[slot="icon"]');a&&(a.style.transition="transform 0.2s ease-in-out",a.style.transform=this.open?"rotate(180deg)":"rotate(0deg)")}if(this._onUpdated(e),e.has("value")){this._updateOptions();const e=t.querySelector("slot#children"),i=e?e.assignedElements().filter((e=>!e.hasAttribute("disabled"))):[],s=i.filter((e=>e.hasAttribute("selected")));this.selectAllChecked=s.length===i.length,this.selectAllIndeterminate=s.length>0&&s.length<i.length,this._updateTags(),this._updateSelectedText()}if(e.has("open")||e.has("openDirection")){if(this.open&&!this.searchable&&this.listboxEl&&(this.listboxEl.focus({preventScroll:!0}),this.assistiveText="Selecting items. Use up and down arrow keys to navigate."),"up"===this.openDirection)this._openUpwards=!0;else if("down"===this.openDirection)this._openUpwards=!1;else if(this.open){const e=this.buttonEl.getBoundingClientRect();this._openUpwards=e.top>.6*window.innerHeight}if(this.open&&!this.multiple){const e=this.options.find((e=>e.selected));null==e||e.scrollIntoView({block:"nearest"})}}e.has("multiple")&&this.options.forEach((e=>e.multiple=this.multiple)),e.has("searchText")&&this.searchEl&&(this.searchEl.value=this.searchText),e.has("allowAddOption")&&this.updateChildOptions()}}_updateTags(){if(this.multiple){const e=Array.from(this.querySelectorAll("kyn-dropdown-option, kyn-enhanced-dropdown-option")),t=[];e&&(e.forEach((e=>{if(e.selected){let i=e.textContent;if("KYN-ENHANCED-DROPDOWN-OPTION"===e.tagName){const t=e.querySelector('[slot="title"]');i=t&&t.textContent.trim()?t.textContent.trim():e.displayText||e.value}else i=e.textContent.trim();t.push({value:e.value,text:i,disabled:e.disabled})}})),this._tags=t)}}_updateOptions(){Array.from(this.querySelectorAll("kyn-dropdown-option, kyn-enhanced-dropdown-option")).forEach((e=>{if(e.multiple=this.multiple,this.multiple){const t=this.value.includes(e.value);e.selected=t}else e.selected=this.value===e.value}))}_handleInputNewOption(e){const t=e.target;this.newOptionValue=t.value}_handleRemoveOption(){this.assistiveText="MY option removed ",setTimeout((()=>{this.open=!1,this.buttonEl.focus()}),100)}_updateSelectedText(){const e=Array.from(this.querySelectorAll("kyn-dropdown-option, kyn-enhanced-dropdown-option"));if(!this.multiple){if(e.length&&""!==this.value){const t=e.find((e=>e.value===this.value));if(t)if("KYN-ENHANCED-DROPDOWN-OPTION"===t.tagName){const e=t.querySelector('[slot="title"]');e&&e.textContent.trim()?this.text=e.textContent.trim():this.text=t.displayText||this.value}else this.text=t.textContent.trim();else this.text="",console.warn(`No dropdown option found with value: ${this.value}`)}this.searchable&&this.text&&(this.searchText=this.text===this.placeholder?"":this.text,this.searchEl.value=this.searchText)}}},r=new WeakMap,S=new WeakMap,z=new WeakMap,T=new WeakMap,_=new WeakMap,A=new WeakMap,C=new WeakMap,M=new WeakMap,W=new WeakMap,I=new WeakMap,N=new WeakMap,D=new WeakMap,q=new WeakMap,V=new WeakMap,j=new WeakMap,L=new WeakMap,K=new WeakMap,B=new WeakMap,P=new WeakMap,R=new WeakMap,U=new WeakMap,Y=new WeakMap,H=new WeakMap,F=new WeakMap,G=new WeakMap,J=new WeakMap,Q=new WeakMap,X=new WeakMap,Z=new WeakMap,ee=new WeakMap,te=new WeakMap,ie=new WeakMap,se=new WeakMap,ae=new WeakMap,e(ne,"Dropdown"),(()=>{var e;const i="function"==typeof Symbol&&Symbol.metadata?Object.create(null!==(e=Pe[Symbol.metadata])&&void 0!==e?e:null):void 0;oe=[p({type:String})],re=[p({type:String})],de=[p({type:Boolean})],he=[p({type:String})],ce=[p({type:String})],pe=[p({type:Boolean,reflect:!0})],ue=[p({type:Boolean})],me=[p({type:Boolean})],ge=[p({type:Boolean})],ve=[p({type:Boolean})],fe=[p({type:Boolean})],be=[p({type:Boolean})],ke=[p({type:Boolean})],xe=[p({type:Boolean})],ye=[p({type:Boolean})],we=[p({type:String})],Ee=[p({type:String})],Oe=[p({type:String})],$e=[p({type:Boolean})],Se=[p({type:Boolean})],ze=[p({type:Object})],Te=[p({type:Boolean})],_e=[d()],Ae=[d()],Ce=[d()],Me=[p({type:String})],We=[d()],Ie=[u(".search")],Ne=[u(".select")],De=[u(".options")],qe=[u(".clear-multiple")],Ve=[u(".add-option-input")],je=[d()],Le=[d()],t(ne,null,oe,{kind:"accessor",name:"label",static:!1,private:!1,access:{has:e=>"label"in e,get:e=>e.label,set:(e,t)=>{e.label=t}},metadata:i},Re,Ue),t(ne,null,re,{kind:"accessor",name:"size",static:!1,private:!1,access:{has:e=>"size"in e,get:e=>e.size,set:(e,t)=>{e.size=t}},metadata:i},Ye,He),t(ne,null,de,{kind:"accessor",name:"inline",static:!1,private:!1,access:{has:e=>"inline"in e,get:e=>e.inline,set:(e,t)=>{e.inline=t}},metadata:i},Fe,Ge),t(ne,null,he,{kind:"accessor",name:"caption",static:!1,private:!1,access:{has:e=>"caption"in e,get:e=>e.caption,set:(e,t)=>{e.caption=t}},metadata:i},Je,Qe),t(ne,null,ce,{kind:"accessor",name:"placeholder",static:!1,private:!1,access:{has:e=>"placeholder"in e,get:e=>e.placeholder,set:(e,t)=>{e.placeholder=t}},metadata:i},Xe,Ze),t(ne,null,pe,{kind:"accessor",name:"open",static:!1,private:!1,access:{has:e=>"open"in e,get:e=>e.open,set:(e,t)=>{e.open=t}},metadata:i},et,tt),t(ne,null,ue,{kind:"accessor",name:"searchable",static:!1,private:!1,access:{has:e=>"searchable"in e,get:e=>e.searchable,set:(e,t)=>{e.searchable=t}},metadata:i},it,st),t(ne,null,me,{kind:"accessor",name:"enhanced",static:!1,private:!1,access:{has:e=>"enhanced"in e,get:e=>e.enhanced,set:(e,t)=>{e.enhanced=t}},metadata:i},at,lt),t(ne,null,ge,{kind:"accessor",name:"filterSearch",static:!1,private:!1,access:{has:e=>"filterSearch"in e,get:e=>e.filterSearch,set:(e,t)=>{e.filterSearch=t}},metadata:i},nt,ot),t(ne,null,ve,{kind:"accessor",name:"multiple",static:!1,private:!1,access:{has:e=>"multiple"in e,get:e=>e.multiple,set:(e,t)=>{e.multiple=t}},metadata:i},rt,dt),t(ne,null,fe,{kind:"accessor",name:"required",static:!1,private:!1,access:{has:e=>"required"in e,get:e=>e.required,set:(e,t)=>{e.required=t}},metadata:i},ht,ct),t(ne,null,be,{kind:"accessor",name:"hideLabel",static:!1,private:!1,access:{has:e=>"hideLabel"in e,get:e=>e.hideLabel,set:(e,t)=>{e.hideLabel=t}},metadata:i},pt,ut),t(ne,null,ke,{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},mt,gt),t(ne,null,xe,{kind:"accessor",name:"hideTags",static:!1,private:!1,access:{has:e=>"hideTags"in e,get:e=>e.hideTags,set:(e,t)=>{e.hideTags=t}},metadata:i},vt,ft),t(ne,null,ye,{kind:"accessor",name:"selectAll",static:!1,private:!1,access:{has:e=>"selectAll"in e,get:e=>e.selectAll,set:(e,t)=>{e.selectAll=t}},metadata:i},bt,kt),t(ne,null,we,{kind:"accessor",name:"selectAllText",static:!1,private:!1,access:{has:e=>"selectAllText"in e,get:e=>e.selectAllText,set:(e,t)=>{e.selectAllText=t}},metadata:i},xt,yt),t(ne,null,Ee,{kind:"accessor",name:"menuMinWidth",static:!1,private:!1,access:{has:e=>"menuMinWidth"in e,get:e=>e.menuMinWidth,set:(e,t)=>{e.menuMinWidth=t}},metadata:i},wt,Et),t(ne,null,Oe,{kind:"accessor",name:"openDirection",static:!1,private:!1,access:{has:e=>"openDirection"in e,get:e=>e.openDirection,set:(e,t)=>{e.openDirection=t}},metadata:i},Ot,$t),t(ne,null,$e,{kind:"accessor",name:"selectAllChecked",static:!1,private:!1,access:{has:e=>"selectAllChecked"in e,get:e=>e.selectAllChecked,set:(e,t)=>{e.selectAllChecked=t}},metadata:i},St,zt),t(ne,null,Se,{kind:"accessor",name:"selectAllIndeterminate",static:!1,private:!1,access:{has:e=>"selectAllIndeterminate"in e,get:e=>e.selectAllIndeterminate,set:(e,t)=>{e.selectAllIndeterminate=t}},metadata:i},Tt,_t),t(ne,null,ze,{kind:"accessor",name:"textStrings",static:!1,private:!1,access:{has:e=>"textStrings"in e,get:e=>e.textStrings,set:(e,t)=>{e.textStrings=t}},metadata:i},At,Ct),t(ne,null,Te,{kind:"accessor",name:"allowAddOption",static:!1,private:!1,access:{has:e=>"allowAddOption"in e,get:e=>e.allowAddOption,set:(e,t)=>{e.allowAddOption=t}},metadata:i},Mt,Wt),t(ne,null,_e,{kind:"accessor",name:"_textStrings",static:!1,private:!1,access:{has:e=>"_textStrings"in e,get:e=>e._textStrings,set:(e,t)=>{e._textStrings=t}},metadata:i},It,Nt),t(ne,null,Ae,{kind:"accessor",name:"newOptionValue",static:!1,private:!1,access:{has:e=>"newOptionValue"in e,get:e=>e.newOptionValue,set:(e,t)=>{e.newOptionValue=t}},metadata:i},Dt,qt),t(ne,null,Ce,{kind:"accessor",name:"text",static:!1,private:!1,access:{has:e=>"text"in e,get:e=>e.text,set:(e,t)=>{e.text=t}},metadata:i},Vt,jt),t(ne,null,Me,{kind:"accessor",name:"searchText",static:!1,private:!1,access:{has:e=>"searchText"in e,get:e=>e.searchText,set:(e,t)=>{e.searchText=t}},metadata:i},Lt,Kt),t(ne,null,We,{kind:"accessor",name:"assistiveText",static:!1,private:!1,access:{has:e=>"assistiveText"in e,get:e=>e.assistiveText,set:(e,t)=>{e.assistiveText=t}},metadata:i},Bt,Pt),t(ne,null,Ie,{kind:"accessor",name:"searchEl",static:!1,private:!1,access:{has:e=>"searchEl"in e,get:e=>e.searchEl,set:(e,t)=>{e.searchEl=t}},metadata:i},Rt,Ut),t(ne,null,Ne,{kind:"accessor",name:"buttonEl",static:!1,private:!1,access:{has:e=>"buttonEl"in e,get:e=>e.buttonEl,set:(e,t)=>{e.buttonEl=t}},metadata:i},Yt,Ht),t(ne,null,De,{kind:"accessor",name:"listboxEl",static:!1,private:!1,access:{has:e=>"listboxEl"in e,get:e=>e.listboxEl,set:(e,t)=>{e.listboxEl=t}},metadata:i},Ft,Gt),t(ne,null,qe,{kind:"accessor",name:"clearMultipleEl",static:!1,private:!1,access:{has:e=>"clearMultipleEl"in e,get:e=>e.clearMultipleEl,set:(e,t)=>{e.clearMultipleEl=t}},metadata:i},Jt,Qt),t(ne,null,Ve,{kind:"accessor",name:"addOptionInputEl",static:!1,private:!1,access:{has:e=>"addOptionInputEl"in e,get:e=>e.addOptionInputEl,set:(e,t)=>{e.addOptionInputEl=t}},metadata:i},Xt,Zt),t(ne,null,je,{kind:"accessor",name:"_openUpwards",static:!1,private:!1,access:{has:e=>"_openUpwards"in e,get:e=>e._openUpwards,set:(e,t)=>{e._openUpwards=t}},metadata:i},ei,ti),t(ne,null,Le,{kind:"accessor",name:"_tags",static:!1,private:!1,access:{has:e=>"_tags"in e,get:e=>e._tags,set:(e,t)=>{e._tags=t}},metadata:i},ii,si),t(null,le={value:ne},Ke,{kind:"class",name:ne.name,metadata:i},null,Be),ne=le.value,i&&Object.defineProperty(ne,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:i})})(),ne.styles=c(x),i(ne,Be),ne})();export{S as Dropdown};
|
|
974
974
|
//# sourceMappingURL=dropdown.js.map
|
|
@@ -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 DropdownScss from './dropdown.scss?inline';\nimport { FormMixin } from '../../../common/mixins/form-input';\nimport { deepmerge } from 'deepmerge-ts';\n\nimport './dropdownOption';\nimport './enhancedDropdownOption';\nimport '../tag';\nimport '../button';\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/20/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};\n\nconst KEY = {\n Enter: 'Enter',\n Escape: 'Escape',\n ArrowDown: 'ArrowDown',\n ArrowUp: 'ArrowUp',\n} as const;\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 * @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. \"sm\", \"md\", or \"lg\". */\n @property({ type: String })\n accessor size = 'md';\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 /** Makes the dropdown enhanced. */\n @property({ type: Boolean })\n accessor enhanced = 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 = 'initial';\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 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 * Queries any slotted selected options.\n * @ignore\n */\n protected get selectedOptions(): Array<\n DropdownOption | EnhancedDropdownOption\n > {\n return this.options.filter(\n (opt): opt is DropdownOption | EnhancedDropdownOption =>\n opt.hasAttribute('selected')\n );\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 DOM element.\n * @ignore\n */\n @query('.add-option-input')\n accessor addOptionInputEl!: HTMLInputElement;\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 override render() {\n return html`\n <div\n class=\"dropdown\"\n ?disabled=${this.disabled}\n ?open=${this.open}\n ?inline=${this.inline}\n ?searchable=${this.searchable}\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`<abbr\n class=\"required\"\n title=${this._textStrings.requiredText}\n role=\"img\"\n aria-label=${this._textStrings?.requiredText || 'Required'}\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=${() => this.handleAnchorClick()}\n @keydown=${(e: any) => this.handleAnchorKeydown(e)}\n >\n <slot name=\"anchor\">\n <div\n class=\"${classMap({\n select: true,\n 'input-custom': true,\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=${this.disabled ? '' : '0'}\n @mousedown=${(e: any) => {\n if (!this.searchable) {\n e.preventDefault();\n }\n }}\n @blur=${(e: any) => e.stopPropagation()}\n >\n ${this.multiple && this.value.length\n ? html`\n <button\n class=\"clear-multiple\"\n aria-label=\"${this.value\n .length} items selected. Clear selections\"\n ?disabled=${this.disabled}\n title=${this._textStrings.clear}\n @click=${(e: Event) => this.handleClearMultiple(e)}\n >\n ${this.value.length}\n <span style=\"display:flex;\" slot=\"icon\"\n >${unsafeSVG(clearIcon)}</span\n >\n </button>\n `\n : null}\n ${this.searchable\n ? html`\n <input\n class=\"search\"\n type=\"text\"\n placeholder=${this.placeholder}\n value=${this.searchText}\n ?disabled=${this.disabled}\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\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 aria-hidden=${!this.open}\n @keydown=${this.handleListKeydown}\n @blur=${this.handleListBlur}\n >\n ${this.allowAddOption\n ? html`\n <div class=\"add-option\">\n <input\n class=\"add-option-input\"\n type=\"text\"\n placeholder=${this._textStrings.addItem}\n .value=${this.newOptionValue}\n aria-label=\"Add new option\"\n @input=${this._handleInputNewOption}\n @keydown=${this._onAddOptionInputKeydown}\n @focus=${this._onAddOptionInputFocus}\n />\n <kyn-button\n type=\"button\"\n size=\"small\"\n kind=\"secondary\"\n @on-click=${this._handleAddOption}\n >\n ${this._textStrings.add}\n </kyn-button>\n </div>\n `\n : null}\n\n <div role=\"listbox\" aria-labelledby=\"label-${this.name}\">\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.searchText !== ''\n ? html`\n <kyn-button\n ?disabled=${this.disabled}\n class=\"clear-button dropdown-clear\"\n kind=\"ghost\"\n size=\"small\"\n description=${this._textStrings.clearAll}\n @click=${(e: Event) => this.handleClear(e)}\n >\n <span style=\"display:flex;\" slot=\"icon\"\n >${unsafeSVG(clearIcon)}</span\n >\n </kyn-button>\n `\n : null}\n </div>\n ${this.renderHelperContent()}\n </div>\n `;\n }\n\n private _onAddOptionInputKeydown(e: KeyboardEvent) {\n e.stopPropagation();\n switch (e.key) {\n case KEY.Enter:\n this._handleAddOption();\n break;\n case KEY.Escape:\n this.newOptionValue = '';\n this.open = false;\n this.buttonEl.focus();\n break;\n case KEY.ArrowDown:\n this.handleKeyboard(e, 40, 'addOption');\n break;\n case KEY.ArrowUp:\n this.handleKeyboard(e, 38, 'addOption');\n break;\n }\n }\n\n private _onAddOptionInputFocus() {\n this.assistiveText = 'Add new option input';\n }\n\n private handleAnchorClick() {\n this.handleClick();\n }\n\n private handleAnchorKeydown(e: any) {\n this.handleButtonKeydown(e);\n }\n\n private _handleAddOption() {\n const v = this.newOptionValue.trim();\n if (!v) return;\n this.dispatchEvent(\n new CustomEvent('on-add-option', { detail: { value: v } })\n );\n this.newOptionValue = '';\n }\n\n private renderHelperContent() {\n return html`\n ${\n this.multiple && !this.hideTags && this._tags.length\n ? html`\n <kyn-tag-group\n filter\n role=\"list\"\n aria-label=${this._textStrings.selectedOptions}\n >\n ${this._tags.map((tag: any) => {\n return html`\n <kyn-tag\n role=\"listitem\"\n label=${tag.text}\n ?disabled=${this.disabled || tag.disabled}\n @on-close=${() => this.handleTagClear(tag)}\n ></kyn-tag>\n `;\n })}\n </kyn-tag-group>\n `\n : null\n }\n ${\n this.caption !== ''\n ? html`\n <div class=\"caption\" aria-disabled=${this.disabled}>\n ${this.caption}\n </div>\n `\n : null\n }\n ${\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\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 </div>\n `;\n }\n\n override firstUpdated() {\n // set a default placeholder if none provided\n if (this.placeholder === '') {\n if (this.searchable) {\n this.placeholder = 'Search';\n } else {\n if (this.multiple) {\n this.placeholder = 'Select items';\n } else {\n this.placeholder = 'Select an option';\n }\n }\n }\n }\n\n private handleSlotChange() {\n this.updateChildOptions();\n this._updateOptions();\n this._updateSelectedText();\n }\n\n private updateChildOptions() {\n // Get all slotted kyn-dropdown-option elements\n const slot = this.shadowRoot?.querySelector('#children') as HTMLSlotElement;\n const options = slot.assignedElements({ flatten: true }) as HTMLElement[];\n\n // Pass allowAddOption to each kyn-dropdown-option\n options.forEach((option) => {\n if (\n option.tagName === 'KYN-DROPDOWN-OPTION' ||\n option.tagName === 'KYN-ENHANCED-DROPDOWN-OPTION'\n ) {\n (option as any).allowAddOption = this.allowAddOption;\n }\n });\n }\n\n private handleClick() {\n if (!this.disabled) {\n this.open = !this.open;\n\n // focus search input if searchable\n if (this.searchable) {\n this.searchEl.focus();\n } else {\n this.buttonEl.focus();\n }\n }\n }\n\n private handleButtonKeydown(e: any) {\n this.handleKeyboard(e, e.keyCode, 'button');\n }\n\n private handleListKeydown(e: any) {\n const TAB_KEY_CODE = 9;\n\n if (e.keyCode !== TAB_KEY_CODE) {\n e.preventDefault();\n }\n\n this.handleKeyboard(e, e.keyCode, 'list');\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(e: any, keyCode: number, target: string) {\n const SPACEBAR_KEY_CODE = [0, 32];\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 // get highlighted element + index and selected element\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 // visibleOptions.forEach((e) => (e.tabIndex = 0));\n\n const highlightedEl = visibleOptions.find(\n (option: any) => option.highlighted\n );\n const selectedEl = visibleOptions.find((option: any) => option.selected);\n let highlightedIndex = highlightedEl\n ? visibleOptions.indexOf(highlightedEl)\n : selectedEl\n ? visibleOptions.indexOf(selectedEl)\n : 0;\n\n // prevent page scroll on spacebar press\n if (SPACEBAR_KEY_CODE.includes(keyCode)) {\n e.preventDefault();\n }\n\n const isListboxElOpened = this.open;\n // open the listbox\n if (target === 'button' || target === 'addOption') {\n let openDropdown =\n SPACEBAR_KEY_CODE.includes(keyCode) ||\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 visibleOptions[highlightedIndex].highlighted = false;\n visibleOptions[highlightedIndex].selected =\n !visibleOptions[highlightedIndex].selected;\n highlightedIndex = 0;\n if (keyCode !== ENTER_KEY_CODE) 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 this.addOptionInputEl?.focus();\n }, 100);\n } else {\n // scroll to highlighted option\n if (!this.multiple && this.value !== '') {\n visibleOptions[highlightedIndex].scrollIntoView({\n block: 'nearest',\n });\n }\n }\n }\n }\n switch (keyCode) {\n case 0:\n case 32:\n case ENTER_KEY_CODE: {\n // select highlighted option\n visibleOptions[highlightedIndex].highlighted = true;\n if (isListboxElOpened) {\n if (this.multiple) {\n visibleOptions[highlightedIndex].selected =\n !visibleOptions[highlightedIndex].selected;\n this._handleClick({\n detail: {\n value: visibleOptions[highlightedIndex].value,\n selected: visibleOptions[highlightedIndex].selected,\n },\n });\n } else {\n visibleOptions.forEach((e) => (e.selected = false));\n visibleOptions[highlightedIndex].selected = true;\n this.updateValue(visibleOptions[highlightedIndex].value, true);\n this.emitValue();\n\n this.open = false;\n this.assistiveText = `Selected ${visibleOptions[highlightedIndex].value}`;\n }\n }\n return;\n }\n case DOWN_ARROW_KEY_CODE: {\n // go to next option\n let nextIndex =\n !highlightedEl && !selectedEl\n ? 0\n : highlightedIndex === visibleOptions.length - 1\n ? 0\n : highlightedIndex + 1;\n\n // skip disabled options\n if (visibleOptions[nextIndex].disabled) {\n nextIndex =\n nextIndex === visibleOptions.length - 1 ? 0 : nextIndex + 1;\n }\n\n visibleOptions[nextIndex].focus();\n visibleOptions[highlightedIndex].highlighted = false;\n visibleOptions[nextIndex].highlighted = true;\n\n // scroll to option\n visibleOptions[nextIndex].scrollIntoView({ block: 'nearest' });\n\n this.assistiveText = visibleOptions[nextIndex].text;\n return;\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].disabled) {\n nextIndex =\n nextIndex === 0 ? visibleOptions.length - 1 : nextIndex - 1;\n }\n\n visibleOptions[nextIndex].focus();\n visibleOptions[highlightedIndex].highlighted = false;\n visibleOptions[nextIndex].highlighted = true;\n\n // scroll to option\n visibleOptions[nextIndex].scrollIntoView({ block: 'nearest' });\n\n this.assistiveText = visibleOptions[nextIndex].text;\n return;\n }\n case ESCAPE_KEY_CODE: {\n // close listbox\n this.open = false;\n\n // restore focus\n if (this.searchable) {\n this.searchEl.focus();\n } else {\n this.buttonEl.focus();\n }\n\n this.assistiveText = 'Dropdown menu options.';\n return;\n }\n default: {\n return;\n }\n }\n }\n\n private handleClearMultiple(e: any) {\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 // remove value\n this.updateValue(tag.value, false);\n this._updateSelectedOptions();\n this.emitValue();\n }\n\n private handleClear(e: any) {\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: any) {\n e.stopPropagation();\n this.open = true;\n }\n\n private handleSearchKeydown(e: any) {\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 const value = e.target.value;\n this.searchText = value;\n this.open = true;\n\n this._emitSearch();\n\n if (this.filterSearch) {\n // hide items that don't match\n this.options.map((option: any) => {\n let searchText = option.text;\n\n if (option.tagName === 'KYN-ENHANCED-DROPDOWN-OPTION') {\n const titleSlot = option.querySelector('[slot=\"title\"]');\n if (titleSlot && titleSlot.textContent.trim()) {\n searchText = titleSlot.textContent.trim();\n } else {\n searchText = option.displayText || option.value;\n }\n }\n\n if (searchText.toLowerCase().includes(value.toLowerCase())) {\n option.style.display = 'block';\n } else {\n option.style.display = 'none';\n }\n });\n } else {\n // find matches\n const options = this.options.filter((option: any) => {\n let searchText = option.text;\n\n if (option.tagName === 'KYN-ENHANCED-DROPDOWN-OPTION') {\n const titleSlot = option.querySelector('[slot=\"title\"]');\n if (titleSlot && titleSlot.textContent.trim()) {\n searchText = titleSlot.textContent.trim();\n } else {\n searchText = option.displayText || option.value;\n }\n }\n\n return searchText.toLowerCase().startsWith(value.toLowerCase());\n });\n\n // reset options highlighted state\n this.options.forEach((option) => (option.highlighted = false));\n\n // option highlight and scroll\n if (value !== '' && options.length) {\n options[0].highlighted = true;\n options[0].scrollIntoView({ block: 'nearest' });\n if (this.searchTextEntered) this.assistiveText = 'Option Matched';\n }\n }\n }\n\n private _updateSelectedOptions() {\n // set selected state for each option\n this.options.forEach((option: any) => {\n if (this.multiple) {\n option.selected = this.value.includes(option.value);\n } else {\n option.selected = this.value === option.value;\n }\n });\n }\n\n private _handleClick(e: any) {\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) => {\n return option.value;\n });\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 const relatedTarget = e.detail.origEvent.relatedTarget;\n\n if (\n !relatedTarget ||\n (relatedTarget?.localName !== 'kyn-dropdown-option' &&\n relatedTarget?.localName !== 'kyn-enhanced-dropdown-option' &&\n relatedTarget.localName !== 'kyn-dropdown')\n ) {\n this.open = false;\n }\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\n // preserve FormMixin connectedCallback function\n this._onConnected();\n\n document.addEventListener('click', (e) => this._handleClickOut(e));\n\n // capture child options click event\n this.addEventListener('on-click', (e: any) => this._handleClick(e));\n this.addEventListener('on-remove-option', () => this._handleRemoveOption());\n\n // capture child options blur event\n this.addEventListener('on-blur', (e: any) => this._handleBlur(e));\n }\n\n override disconnectedCallback() {\n // preserve FormMixin disconnectedCallback function\n this._onDisconnected();\n\n document.removeEventListener('click', (e) => this._handleClickOut(e));\n this.removeEventListener('on-click', (e: any) => this._handleClick(e));\n this.removeEventListener('on-remove-option', () =>\n this._handleRemoveOption()\n );\n this.removeEventListener('on-blur', (e: any) => this._handleBlur(e));\n\n super.disconnectedCallback();\n }\n\n private updateValue(value: string, selected = false) {\n // set value\n if (this.multiple) {\n const values =\n this.value === '' ? [] : JSON.parse(JSON.stringify(this.value));\n\n // update array\n if (selected) {\n values.push(value);\n } else {\n const index = values.indexOf(value);\n values.splice(index, 1);\n }\n\n this.value = values;\n } else {\n this.value = value;\n }\n\n this._validate(true, false);\n\n // reset focus\n if (!this.multiple) {\n if (this.searchable) {\n this.searchEl.focus();\n } else {\n this.buttonEl.focus();\n }\n }\n }\n\n private _validate(interacted: Boolean, report: Boolean) {\n // set validity flags\n const Validity = {\n customError: this.invalidText !== '',\n valueMissing:\n this.required &&\n (!this.value ||\n (this.multiple && !this.value.length) ||\n (!this.multiple && this.value === '')),\n };\n\n // set validationMessage\n const InternalMsg =\n this.required && !this.value.length ? 'Please fill out this field.' : '';\n const ValidationMessage =\n this.invalidText !== '' ? this.invalidText : InternalMsg;\n\n const validationAnchor = this.buttonEl || this.listboxEl;\n\n if (validationAnchor) {\n this._internals.setValidity(\n Validity,\n ValidationMessage,\n validationAnchor\n );\n } else {\n this._internals.setValidity(Validity, ValidationMessage);\n }\n\n if (interacted) {\n this._internalValidationMsg = InternalMsg;\n }\n\n if (report) {\n this._internals.reportValidity();\n }\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 const root = this.shadowRoot;\n if (!root) return;\n\n if (changedProps.has('open')) {\n const slot = root.querySelector<HTMLSlotElement>('slot[name=\"button\"]');\n const assigned = slot?.assignedElements({ flatten: true }) as\n | HTMLElement[]\n | undefined;\n const btn = assigned?.[0];\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 = root.querySelector<HTMLSlotElement>('slot#children');\n const options = childrenSlot\n ? childrenSlot\n .assignedElements()\n .filter((o): o is HTMLElement => !o.hasAttribute('disabled'))\n : [];\n const selected = options.filter((o) => o.hasAttribute('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 && !this.searchable && 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 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 (changedProps.has('allowAddOption')) {\n this.updateChildOptions();\n }\n }\n\n // add selected options to Tags array\n private _updateTags() {\n if (this.multiple) {\n const Options: any = Array.from(\n this.querySelectorAll(\n 'kyn-dropdown-option, kyn-enhanced-dropdown-option'\n )\n );\n const Tags: Array<object> = [];\n\n if (Options) {\n Options.forEach((option: any) => {\n if (option.selected) {\n let text = option.textContent;\n\n if (option.tagName === 'KYN-ENHANCED-DROPDOWN-OPTION') {\n const titleSlot = option.querySelector('[slot=\"title\"]');\n if (titleSlot && titleSlot.textContent.trim()) {\n text = titleSlot.textContent.trim();\n } else {\n text = option.displayText || option.value;\n }\n } else {\n text = option.textContent.trim();\n }\n\n Tags.push({\n value: option.value,\n text: text,\n disabled: option.disabled,\n });\n }\n });\n\n this._tags = Tags;\n }\n }\n }\n\n private _updateOptions() {\n const Options: any = Array.from(\n this.querySelectorAll('kyn-dropdown-option, kyn-enhanced-dropdown-option')\n );\n\n Options.forEach((option: any) => {\n // set option multiple state\n option.multiple = this.multiple;\n\n if (this.multiple) {\n const Selected = this.value.includes(option.value);\n // set option selected state\n option.selected = Selected;\n } else {\n option.selected = this.value === option.value;\n }\n });\n }\n\n private _handleInputNewOption(e: Event) {\n const target = e.target as HTMLInputElement;\n this.newOptionValue = target.value;\n }\n\n private _handleRemoveOption() {\n this.assistiveText = 'MY option removed ';\n setTimeout(() => {\n this.open = false;\n this.buttonEl.focus();\n }, 100);\n }\n\n private _updateSelectedText() {\n // update selected option text\n const AllOptions: any = Array.from(\n this.querySelectorAll('kyn-dropdown-option, kyn-enhanced-dropdown-option')\n );\n\n if (!this.multiple) {\n if (AllOptions.length && this.value !== '') {\n const option = AllOptions.find(\n (option: any) => option.value === this.value\n );\n if (option) {\n if (option.tagName === 'KYN-ENHANCED-DROPDOWN-OPTION') {\n const titleSlot = option.querySelector('[slot=\"title\"]');\n if (titleSlot && titleSlot.textContent.trim()) {\n this.text = titleSlot.textContent.trim();\n } else {\n this.text = option.displayText || this.value;\n }\n } else {\n this.text = option.textContent.trim();\n }\n } else {\n this.text = '';\n console.warn(`No dropdown option found with value: ${this.value}`);\n }\n }\n\n if (this.searchable && this.text) {\n this.searchText = this.text === this.placeholder ? '' : this.text;\n this.searchEl.value = this.searchText;\n }\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","KEY","Dropdown","customElement","FormMixin","LitElement","_classThis","_classSuper","_Dropdown_label_accessor_storage","set","this","__runInitializers","_label_initializers","_Dropdown_size_accessor_storage","_label_extraInitializers","_size_initializers","_Dropdown_inline_accessor_storage","_size_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_enhanced_accessor_storage","_searchable_extraInitializers","_enhanced_initializers","_Dropdown_filterSearch_accessor_storage","_enhanced_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__textStrings_accessor_storage","_allowAddOption_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_addOptionInputEl_accessor_storage","_clearMultipleEl_extraInitializers","_addOptionInputEl_initializers","_Dropdown__openUpwards_accessor_storage","_addOptionInputEl_extraInitializers","__openUpwards_initializers","_Dropdown__tags_accessor_storage","__openUpwards_extraInitializers","__tags_initializers","searchTextEntered","__tags_extraInitializers","prevSearchKeydownIndex","label","__classPrivateFieldGet","value","__classPrivateFieldSet","size","inline","caption","placeholder","open","searchable","enhanced","filterSearch","multiple","required","hideLabel","disabled","hideTags","selectAll","selectAllText","menuMinWidth","openDirection","selectAllChecked","selectAllIndeterminate","textStrings","allowAddOption","_textStrings","newOptionValue","text","searchText","assistiveText","options","Array","from","querySelectorAll","filter","opt","hasAttribute","searchEl","buttonEl","listboxEl","clearMultipleEl","addOptionInputEl","_openUpwards","_tags","render","html","name","_a","classMap","wrapper","handleAnchorClick","e","handleAnchorKeydown","select","_isInvalid","preventDefault","stopPropagation","length","handleClearMultiple","unsafeSVG","clearIcon","handleSearchKeydown","handleSearchInput","handleSearchClick","downIcon","upwards","handleListKeydown","handleListBlur","_handleInputNewOption","_onAddOptionInputKeydown","_onAddOptionInputFocus","_handleAddOption","handleSlotChange","handleClear","renderHelperContent","key","focus","handleKeyboard","handleClick","handleButtonKeydown","v","trim","dispatchEvent","CustomEvent","detail","map","tag","handleTagClear","errorIcon","invalidText","_internalValidationMsg","firstUpdated","updateChildOptions","_updateOptions","_updateSelectedText","shadowRoot","querySelector","assignedElements","flatten","forEach","option","tagName","keyCode","o","highlighted","target","relatedTarget","closest","classList","contains","SPACEBAR_KEY_CODE","visibleOptions","style","display","highlightedEl","find","selectedEl","selected","highlightedIndex","indexOf","includes","isListboxElOpened","openDropdown","setTimeout","scrollIntoView","block","_handleClick","updateValue","emitValue","nextIndex","DisabledSelectedOptions","_validate","_updateSelectedOptions","event","_emitSearch","findIndex","innerHTML","titleSlot","textContent","displayText","toLowerCase","startsWith","_handleBlur","origEvent","localName","_handleClickOut","composedPath","connectedCallback","super","_onConnected","document","addEventListener","_handleRemoveOption","disconnectedCallback","_onDisconnected","removeEventListener","values","JSON","parse","stringify","push","index","splice","interacted","report","Validity","customError","valueMissing","InternalMsg","ValidationMessage","validationAnchor","_internals","setValidity","reportValidity","willUpdate","changedProps","has","deepmerge","updated","root","slot","assigned","btn","icon","transition","transform","_onUpdated","childrenSlot","_updateTags","preventScroll","rect","getBoundingClientRect","top","window","innerHeight","firstSelected","Options","Tags","Selected","AllOptions","console","warn","_label_decorators","property","type","String","_size_decorators","_inline_decorators","Boolean","_caption_decorators","_placeholder_decorators","reflect","_searchable_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","__textStrings_decorators","state","_newOptionValue_decorators","_text_decorators","_searchText_decorators","_assistiveText_decorators","query","__openUpwards_decorators","__tags_decorators","__esDecorate","kind","static","private","access","obj","get","metadata","_metadata","_open_decorators","_searchEl_decorators","_buttonEl_decorators","_listboxEl_decorators","_clearMultipleEl_decorators","_addOptionInputEl_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 DropdownScss from './dropdown.scss?inline';\nimport { FormMixin } from '../../../common/mixins/form-input';\nimport { deepmerge } from 'deepmerge-ts';\n\nimport './dropdownOption';\nimport './enhancedDropdownOption';\nimport '../tag';\nimport '../button';\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/20/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};\n\nconst KEY = {\n Enter: 'Enter',\n Escape: 'Escape',\n ArrowDown: 'ArrowDown',\n ArrowUp: 'ArrowUp',\n} as const;\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 * @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. \"sm\", \"md\", or \"lg\". */\n @property({ type: String })\n accessor size = 'md';\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 /** Makes the dropdown enhanced. */\n @property({ type: Boolean })\n accessor enhanced = 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 = 'initial';\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 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 * Queries any slotted selected options.\n * @ignore\n */\n protected get selectedOptions(): Array<\n DropdownOption | EnhancedDropdownOption\n > {\n return this.options.filter(\n (opt): opt is DropdownOption | EnhancedDropdownOption =>\n opt.hasAttribute('selected')\n );\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 DOM element.\n * @ignore\n */\n @query('.add-option-input')\n accessor addOptionInputEl!: HTMLInputElement;\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 override render() {\n return html`\n <div\n class=\"dropdown\"\n ?disabled=${this.disabled}\n ?open=${this.open}\n ?inline=${this.inline}\n ?searchable=${this.searchable}\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`<abbr\n class=\"required\"\n title=${this._textStrings.requiredText}\n role=\"img\"\n aria-label=${this._textStrings?.requiredText || 'Required'}\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=${() => this.handleAnchorClick()}\n @keydown=${(e: any) => this.handleAnchorKeydown(e)}\n >\n <slot name=\"anchor\">\n <div\n class=\"${classMap({\n select: true,\n 'input-custom': true,\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=${this.disabled ? '' : '0'}\n @mousedown=${(e: any) => {\n if (!this.searchable) {\n e.preventDefault();\n }\n }}\n @blur=${(e: any) => e.stopPropagation()}\n >\n ${this.multiple && this.value.length\n ? html`\n <button\n class=\"clear-multiple\"\n aria-label=\"${this.value\n .length} items selected. Clear selections\"\n ?disabled=${this.disabled}\n title=${this._textStrings.clear}\n @click=${(e: Event) => this.handleClearMultiple(e)}\n >\n ${this.value.length}\n <span style=\"display:flex;\" slot=\"icon\"\n >${unsafeSVG(clearIcon)}</span\n >\n </button>\n `\n : null}\n ${this.searchable\n ? html`\n <input\n class=\"search\"\n type=\"text\"\n placeholder=${this.placeholder}\n value=${this.searchText}\n ?disabled=${this.disabled}\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\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 aria-hidden=${!this.open}\n @keydown=${this.handleListKeydown}\n @blur=${this.handleListBlur}\n >\n ${this.allowAddOption\n ? html`\n <div class=\"add-option\">\n <input\n class=\"add-option-input\"\n type=\"text\"\n placeholder=${this._textStrings.addItem}\n .value=${this.newOptionValue}\n aria-label=\"Add new option\"\n @input=${this._handleInputNewOption}\n @keydown=${this._onAddOptionInputKeydown}\n @focus=${this._onAddOptionInputFocus}\n />\n <kyn-button\n type=\"button\"\n size=\"small\"\n kind=\"secondary\"\n @on-click=${this._handleAddOption}\n >\n ${this._textStrings.add}\n </kyn-button>\n </div>\n `\n : null}\n\n <div role=\"listbox\" aria-labelledby=\"label-${this.name}\">\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.searchText !== ''\n ? html`\n <kyn-button\n ?disabled=${this.disabled}\n class=\"clear-button dropdown-clear\"\n kind=\"ghost\"\n size=\"small\"\n description=${this._textStrings.clearAll}\n @click=${(e: Event) => this.handleClear(e)}\n >\n <span style=\"display:flex;\" slot=\"icon\"\n >${unsafeSVG(clearIcon)}</span\n >\n </kyn-button>\n `\n : null}\n </div>\n ${this.renderHelperContent()}\n </div>\n `;\n }\n\n private _onAddOptionInputKeydown(e: KeyboardEvent) {\n e.stopPropagation();\n switch (e.key) {\n case KEY.Enter:\n this._handleAddOption();\n break;\n case KEY.Escape:\n this.newOptionValue = '';\n this.open = false;\n this.buttonEl.focus();\n break;\n case KEY.ArrowDown:\n this.handleKeyboard(e, 40, 'addOption');\n break;\n case KEY.ArrowUp:\n this.handleKeyboard(e, 38, 'addOption');\n break;\n }\n }\n\n private _onAddOptionInputFocus() {\n this.assistiveText = 'Add new option input';\n }\n\n private handleAnchorClick() {\n this.handleClick();\n }\n\n private handleAnchorKeydown(e: any) {\n this.handleButtonKeydown(e);\n }\n\n private _handleAddOption() {\n const v = this.newOptionValue.trim();\n if (!v) return;\n this.dispatchEvent(\n new CustomEvent('on-add-option', { detail: { value: v } })\n );\n this.newOptionValue = '';\n }\n\n private renderHelperContent() {\n return html`\n ${\n this.multiple && !this.hideTags && this._tags.length\n ? html`\n <kyn-tag-group\n filter\n role=\"list\"\n aria-label=${this._textStrings.selectedOptions}\n >\n ${this._tags.map((tag: any) => {\n return html`\n <kyn-tag\n role=\"listitem\"\n label=${tag.text}\n ?disabled=${this.disabled || tag.disabled}\n @on-close=${() => this.handleTagClear(tag)}\n ></kyn-tag>\n `;\n })}\n </kyn-tag-group>\n `\n : null\n }\n ${\n this.caption !== ''\n ? html`\n <div class=\"caption\" aria-disabled=${this.disabled}>\n ${this.caption}\n </div>\n `\n : null\n }\n ${\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\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 </div>\n `;\n }\n\n override firstUpdated() {\n // set a default placeholder if none provided\n if (this.placeholder === '') {\n if (this.searchable) {\n this.placeholder = 'Search';\n } else {\n if (this.multiple) {\n this.placeholder = 'Select items';\n } else {\n this.placeholder = 'Select an option';\n }\n }\n }\n }\n\n private handleSlotChange() {\n this.updateChildOptions();\n this._updateOptions();\n this._updateSelectedText();\n }\n\n private updateChildOptions() {\n // Get all slotted kyn-dropdown-option elements\n const slot = this.shadowRoot?.querySelector('#children') as HTMLSlotElement;\n const options = slot.assignedElements({ flatten: true }) as HTMLElement[];\n\n // Pass allowAddOption to each kyn-dropdown-option\n options.forEach((option) => {\n if (\n option.tagName === 'KYN-DROPDOWN-OPTION' ||\n option.tagName === 'KYN-ENHANCED-DROPDOWN-OPTION'\n ) {\n (option as any).allowAddOption = this.allowAddOption;\n }\n });\n }\n\n private handleClick() {\n if (!this.disabled) {\n this.open = !this.open;\n\n // focus search input if searchable\n if (this.searchable) {\n this.searchEl.focus();\n } else {\n this.buttonEl.focus();\n }\n }\n }\n\n private handleButtonKeydown(e: any) {\n this.handleKeyboard(e, e.keyCode, 'button');\n }\n\n private handleListKeydown(e: any) {\n const TAB_KEY_CODE = 9;\n\n if (e.keyCode !== TAB_KEY_CODE) {\n e.preventDefault();\n }\n\n this.handleKeyboard(e, e.keyCode, 'list');\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(e: any, keyCode: number, target: string) {\n const SPACEBAR_KEY_CODE = [0, 32];\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 // get highlighted element + index and selected element\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 // visibleOptions.forEach((e) => (e.tabIndex = 0));\n\n const highlightedEl = visibleOptions.find(\n (option: any) => option.highlighted\n );\n const selectedEl = visibleOptions.find((option: any) => option.selected);\n let highlightedIndex = highlightedEl\n ? visibleOptions.indexOf(highlightedEl)\n : selectedEl\n ? visibleOptions.indexOf(selectedEl)\n : 0;\n\n // prevent page scroll on spacebar press\n if (SPACEBAR_KEY_CODE.includes(keyCode)) {\n e.preventDefault();\n }\n\n const isListboxElOpened = this.open;\n // open the listbox\n if (target === 'button' || target === 'addOption') {\n let openDropdown =\n SPACEBAR_KEY_CODE.includes(keyCode) ||\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 visibleOptions[highlightedIndex].highlighted = false;\n visibleOptions[highlightedIndex].selected =\n !visibleOptions[highlightedIndex].selected;\n highlightedIndex = 0;\n if (keyCode !== ENTER_KEY_CODE) 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 this.addOptionInputEl?.focus();\n }, 100);\n } else {\n // scroll to highlighted option\n if (!this.multiple && this.value !== '') {\n visibleOptions[highlightedIndex].scrollIntoView({\n block: 'nearest',\n });\n }\n }\n }\n }\n switch (keyCode) {\n case 0:\n case 32:\n case ENTER_KEY_CODE: {\n // select highlighted option\n visibleOptions[highlightedIndex].highlighted = true;\n if (isListboxElOpened) {\n if (this.multiple) {\n visibleOptions[highlightedIndex].selected =\n !visibleOptions[highlightedIndex].selected;\n this._handleClick({\n detail: {\n value: visibleOptions[highlightedIndex].value,\n selected: visibleOptions[highlightedIndex].selected,\n },\n });\n } else {\n visibleOptions.forEach((e) => (e.selected = false));\n visibleOptions[highlightedIndex].selected = true;\n this.updateValue(visibleOptions[highlightedIndex].value, true);\n this.emitValue();\n\n this.open = false;\n this.assistiveText = `Selected ${visibleOptions[highlightedIndex].value}`;\n }\n }\n return;\n }\n case DOWN_ARROW_KEY_CODE: {\n // go to next option\n let nextIndex =\n !highlightedEl && !selectedEl\n ? 0\n : highlightedIndex === visibleOptions.length - 1\n ? 0\n : highlightedIndex + 1;\n\n // skip disabled options\n if (visibleOptions[nextIndex].disabled) {\n nextIndex =\n nextIndex === visibleOptions.length - 1 ? 0 : nextIndex + 1;\n }\n\n visibleOptions[nextIndex].focus();\n visibleOptions[highlightedIndex].highlighted = false;\n visibleOptions[nextIndex].highlighted = true;\n\n // scroll to option\n visibleOptions[nextIndex].scrollIntoView({ block: 'nearest' });\n\n this.assistiveText = visibleOptions[nextIndex].text;\n return;\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].disabled) {\n nextIndex =\n nextIndex === 0 ? visibleOptions.length - 1 : nextIndex - 1;\n }\n\n visibleOptions[nextIndex].focus();\n visibleOptions[highlightedIndex].highlighted = false;\n visibleOptions[nextIndex].highlighted = true;\n\n // scroll to option\n visibleOptions[nextIndex].scrollIntoView({ block: 'nearest' });\n\n this.assistiveText = visibleOptions[nextIndex].text;\n return;\n }\n case ESCAPE_KEY_CODE: {\n // close listbox\n this.open = false;\n\n // restore focus\n if (this.searchable) {\n this.searchEl.focus();\n } else {\n this.buttonEl.focus();\n }\n\n this.assistiveText = 'Dropdown menu options.';\n return;\n }\n default: {\n return;\n }\n }\n }\n\n private handleClearMultiple(e: any) {\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 // remove value\n this.updateValue(tag.value, false);\n this._updateSelectedOptions();\n this.emitValue();\n }\n\n private handleClear(e: any) {\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: any) {\n e.stopPropagation();\n this.open = true;\n }\n\n private handleSearchKeydown(e: any) {\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 const value = e.target.value;\n this.searchText = value;\n this.open = true;\n\n this._emitSearch();\n\n if (this.filterSearch) {\n // hide items that don't match\n this.options.map((option: any) => {\n let searchText = option.text;\n\n if (option.tagName === 'KYN-ENHANCED-DROPDOWN-OPTION') {\n const titleSlot = option.querySelector('[slot=\"title\"]');\n if (titleSlot && titleSlot.textContent.trim()) {\n searchText = titleSlot.textContent.trim();\n } else {\n searchText = option.displayText || option.value;\n }\n }\n\n if (searchText.toLowerCase().includes(value.toLowerCase())) {\n option.style.display = 'block';\n } else {\n option.style.display = 'none';\n }\n });\n } else {\n // find matches\n const options = this.options.filter((option: any) => {\n let searchText = option.text;\n\n if (option.tagName === 'KYN-ENHANCED-DROPDOWN-OPTION') {\n const titleSlot = option.querySelector('[slot=\"title\"]');\n if (titleSlot && titleSlot.textContent.trim()) {\n searchText = titleSlot.textContent.trim();\n } else {\n searchText = option.displayText || option.value;\n }\n }\n\n return searchText.toLowerCase().startsWith(value.toLowerCase());\n });\n\n // reset options highlighted state\n this.options.forEach((option) => (option.highlighted = false));\n\n // option highlight and scroll\n if (value !== '' && options.length) {\n options[0].highlighted = true;\n options[0].scrollIntoView({ block: 'nearest' });\n if (this.searchTextEntered) this.assistiveText = 'Option Matched';\n }\n }\n }\n\n private _updateSelectedOptions() {\n // set selected state for each option\n this.options.forEach((option: any) => {\n if (this.multiple) {\n option.selected = this.value.includes(option.value);\n } else {\n option.selected = this.value === option.value;\n }\n });\n }\n\n private _handleClick(e: any) {\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) => {\n return option.value;\n });\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 const relatedTarget = e.detail.origEvent.relatedTarget;\n\n if (\n !relatedTarget ||\n (relatedTarget?.localName !== 'kyn-dropdown-option' &&\n relatedTarget?.localName !== 'kyn-enhanced-dropdown-option' &&\n relatedTarget.localName !== 'kyn-dropdown')\n ) {\n this.open = false;\n }\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\n // preserve FormMixin connectedCallback function\n this._onConnected();\n\n document.addEventListener('click', (e) => this._handleClickOut(e));\n\n // capture child options click event\n this.addEventListener('on-click', (e: any) => this._handleClick(e));\n this.addEventListener('on-remove-option', () => this._handleRemoveOption());\n\n // capture child options blur event\n this.addEventListener('on-blur', (e: any) => this._handleBlur(e));\n }\n\n override disconnectedCallback() {\n // preserve FormMixin disconnectedCallback function\n this._onDisconnected();\n\n document.removeEventListener('click', (e) => this._handleClickOut(e));\n this.removeEventListener('on-click', (e: any) => this._handleClick(e));\n this.removeEventListener('on-remove-option', () =>\n this._handleRemoveOption()\n );\n this.removeEventListener('on-blur', (e: any) => this._handleBlur(e));\n\n super.disconnectedCallback();\n }\n\n private updateValue(value: string, selected = false) {\n // set value\n if (this.multiple) {\n const values =\n this.value === '' ? [] : JSON.parse(JSON.stringify(this.value));\n\n // update array\n if (selected) {\n values.push(value);\n } else {\n const index = values.indexOf(value);\n values.splice(index, 1);\n }\n\n this.value = values;\n } else {\n this.value = value;\n }\n\n this._validate(true, false);\n\n // reset focus\n if (!this.multiple) {\n if (this.searchable) {\n this.searchEl.focus();\n } else {\n this.buttonEl.focus();\n }\n }\n }\n\n private _validate(interacted: Boolean, report: Boolean) {\n // set validity flags\n const Validity = {\n customError: this.invalidText !== '',\n valueMissing:\n this.required &&\n (!this.value ||\n (this.multiple && !this.value.length) ||\n (!this.multiple && this.value === '')),\n };\n\n // set validationMessage\n const InternalMsg =\n this.required && !this.value.length ? 'Please fill out this field.' : '';\n const ValidationMessage =\n this.invalidText !== '' ? this.invalidText : InternalMsg;\n\n const validationAnchor = this.buttonEl || this.listboxEl;\n\n if (validationAnchor) {\n this._internals.setValidity(\n Validity,\n ValidationMessage,\n validationAnchor\n );\n } else {\n this._internals.setValidity(Validity, ValidationMessage);\n }\n\n if (interacted) {\n this._internalValidationMsg = InternalMsg;\n }\n\n if (report) {\n this._internals.reportValidity();\n }\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 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?.[0];\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 = root.querySelector<HTMLSlotElement>('slot#children');\n const options = childrenSlot\n ? childrenSlot\n .assignedElements()\n .filter((o): o is HTMLElement => !o.hasAttribute('disabled'))\n : [];\n const selected = options.filter((o) => o.hasAttribute('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 && !this.searchable && 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 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 (changedProps.has('allowAddOption')) {\n this.updateChildOptions();\n }\n }\n\n // add selected options to Tags array\n private _updateTags() {\n if (this.multiple) {\n const Options: any = Array.from(\n this.querySelectorAll(\n 'kyn-dropdown-option, kyn-enhanced-dropdown-option'\n )\n );\n const Tags: Array<object> = [];\n\n if (Options) {\n Options.forEach((option: any) => {\n if (option.selected) {\n let text = option.textContent;\n\n if (option.tagName === 'KYN-ENHANCED-DROPDOWN-OPTION') {\n const titleSlot = option.querySelector('[slot=\"title\"]');\n if (titleSlot && titleSlot.textContent.trim()) {\n text = titleSlot.textContent.trim();\n } else {\n text = option.displayText || option.value;\n }\n } else {\n text = option.textContent.trim();\n }\n\n Tags.push({\n value: option.value,\n text: text,\n disabled: option.disabled,\n });\n }\n });\n\n this._tags = Tags;\n }\n }\n }\n\n private _updateOptions() {\n const Options: any = Array.from(\n this.querySelectorAll('kyn-dropdown-option, kyn-enhanced-dropdown-option')\n );\n\n Options.forEach((option: any) => {\n // set option multiple state\n option.multiple = this.multiple;\n\n if (this.multiple) {\n const Selected = this.value.includes(option.value);\n // set option selected state\n option.selected = Selected;\n } else {\n option.selected = this.value === option.value;\n }\n });\n }\n\n private _handleInputNewOption(e: Event) {\n const target = e.target as HTMLInputElement;\n this.newOptionValue = target.value;\n }\n\n private _handleRemoveOption() {\n this.assistiveText = 'MY option removed ';\n setTimeout(() => {\n this.open = false;\n this.buttonEl.focus();\n }, 100);\n }\n\n private _updateSelectedText() {\n // update selected option text\n const AllOptions: any = Array.from(\n this.querySelectorAll('kyn-dropdown-option, kyn-enhanced-dropdown-option')\n );\n\n if (!this.multiple) {\n if (AllOptions.length && this.value !== '') {\n const option = AllOptions.find(\n (option: any) => option.value === this.value\n );\n if (option) {\n if (option.tagName === 'KYN-ENHANCED-DROPDOWN-OPTION') {\n const titleSlot = option.querySelector('[slot=\"title\"]');\n if (titleSlot && titleSlot.textContent.trim()) {\n this.text = titleSlot.textContent.trim();\n } else {\n this.text = option.displayText || this.value;\n }\n } else {\n this.text = option.textContent.trim();\n }\n } else {\n this.text = '';\n console.warn(`No dropdown option found with value: ${this.value}`);\n }\n }\n\n if (this.searchable && this.text) {\n this.searchText = this.text === this.placeholder ? '' : this.text;\n this.searchEl.value = this.searchText;\n }\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","KEY","Dropdown","customElement","FormMixin","LitElement","_classThis","_classSuper","_Dropdown_label_accessor_storage","set","this","__runInitializers","_label_initializers","_Dropdown_size_accessor_storage","_label_extraInitializers","_size_initializers","_Dropdown_inline_accessor_storage","_size_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_enhanced_accessor_storage","_searchable_extraInitializers","_enhanced_initializers","_Dropdown_filterSearch_accessor_storage","_enhanced_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__textStrings_accessor_storage","_allowAddOption_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_addOptionInputEl_accessor_storage","_clearMultipleEl_extraInitializers","_addOptionInputEl_initializers","_Dropdown__openUpwards_accessor_storage","_addOptionInputEl_extraInitializers","__openUpwards_initializers","_Dropdown__tags_accessor_storage","__openUpwards_extraInitializers","__tags_initializers","searchTextEntered","__tags_extraInitializers","prevSearchKeydownIndex","label","__classPrivateFieldGet","value","__classPrivateFieldSet","size","inline","caption","placeholder","open","searchable","enhanced","filterSearch","multiple","required","hideLabel","disabled","hideTags","selectAll","selectAllText","menuMinWidth","openDirection","selectAllChecked","selectAllIndeterminate","textStrings","allowAddOption","_textStrings","newOptionValue","text","searchText","assistiveText","options","Array","from","querySelectorAll","filter","opt","hasAttribute","searchEl","buttonEl","listboxEl","clearMultipleEl","addOptionInputEl","_openUpwards","_tags","render","html","name","_a","classMap","wrapper","handleAnchorClick","e","handleAnchorKeydown","select","_isInvalid","preventDefault","stopPropagation","length","handleClearMultiple","unsafeSVG","clearIcon","handleSearchKeydown","handleSearchInput","handleSearchClick","downIcon","upwards","handleListKeydown","handleListBlur","_handleInputNewOption","_onAddOptionInputKeydown","_onAddOptionInputFocus","_handleAddOption","handleSlotChange","handleClear","renderHelperContent","key","focus","handleKeyboard","handleClick","handleButtonKeydown","v","trim","dispatchEvent","CustomEvent","detail","map","tag","handleTagClear","errorIcon","invalidText","_internalValidationMsg","firstUpdated","updateChildOptions","_updateOptions","_updateSelectedText","shadowRoot","querySelector","assignedElements","flatten","forEach","option","tagName","keyCode","o","highlighted","target","relatedTarget","closest","classList","contains","SPACEBAR_KEY_CODE","visibleOptions","style","display","highlightedEl","find","selectedEl","selected","highlightedIndex","indexOf","includes","isListboxElOpened","openDropdown","setTimeout","scrollIntoView","block","_handleClick","updateValue","emitValue","nextIndex","DisabledSelectedOptions","_validate","_updateSelectedOptions","event","_emitSearch","findIndex","innerHTML","titleSlot","textContent","displayText","toLowerCase","startsWith","_handleBlur","origEvent","localName","_handleClickOut","composedPath","connectedCallback","super","_onConnected","document","addEventListener","_handleRemoveOption","disconnectedCallback","_onDisconnected","removeEventListener","values","JSON","parse","stringify","push","index","splice","interacted","report","Validity","customError","valueMissing","InternalMsg","ValidationMessage","validationAnchor","_internals","setValidity","reportValidity","willUpdate","changedProps","has","deepmerge","updated","root","slot","assigned","btn","icon","transition","transform","_onUpdated","childrenSlot","_updateTags","preventScroll","rect","getBoundingClientRect","top","window","innerHeight","firstSelected","Options","Tags","Selected","AllOptions","console","warn","_label_decorators","property","type","String","_size_decorators","_inline_decorators","Boolean","_caption_decorators","_placeholder_decorators","reflect","_searchable_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","__textStrings_decorators","state","_newOptionValue_decorators","_text_decorators","_searchText_decorators","_assistiveText_decorators","query","__openUpwards_decorators","__tags_decorators","__esDecorate","kind","static","private","access","obj","get","metadata","_metadata","_open_decorators","_searchEl_decorators","_buttonEl_decorators","_listboxEl_decorators","_clearMultipleEl_decorators","_addOptionInputEl_decorators","_classDescriptor","_classDecorators","_classExtraInitializers","styles","unsafeCSS","DropdownScss"],"mappings":"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"}
|
|
@@ -21,8 +21,10 @@ export declare class Notification extends LitElement {
|
|
|
21
21
|
* It is recommended to add the context along with the timestamp. Example: `Updated 2 mins ago`.
|
|
22
22
|
*/
|
|
23
23
|
accessor timeStamp: string;
|
|
24
|
-
/** Card href link */
|
|
24
|
+
/** Card href link. */
|
|
25
25
|
accessor href: string;
|
|
26
|
+
/** Card link target. */
|
|
27
|
+
accessor target: string;
|
|
26
28
|
/** Notification status / tag type. `'default'`, `'info'`, `'warning'`, `'success'` & `'error'`. */
|
|
27
29
|
accessor tagStatus: string;
|
|
28
30
|
/** Notification type. `'normal'`, `'inline'`, `'toast'` and `'clickable'`. Clickable type can be use inside notification panel */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notification.d.ts","sourceRoot":"","sources":["../../../../src/components/reusable/notification/notification.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAmB,MAAM,KAAK,CAAC;AAKlD,OAAO,WAAW,CAAC;AAInB,OAAO,SAAS,CAAC;AAMjB,OAAO,UAAU,CAAC;AAClB;;;;;;;GAOG;AAEH,qBACa,YAAa,SAAQ,UAAU;IAC1C,OAAgB,MAAM,0BAA+B;IAErD,qCAAqC;IAErC,QAAQ,CAAC,iBAAiB,SAAM;IAEhC,uCAAuC;IAEvC,QAAQ,CAAC,oBAAoB,SAAM;IAEnC;;;OAGG;IAEH,QAAQ,CAAC,SAAS,SAAM;IAExB,
|
|
1
|
+
{"version":3,"file":"notification.d.ts","sourceRoot":"","sources":["../../../../src/components/reusable/notification/notification.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAmB,MAAM,KAAK,CAAC;AAKlD,OAAO,WAAW,CAAC;AAInB,OAAO,SAAS,CAAC;AAMjB,OAAO,UAAU,CAAC;AAClB;;;;;;;GAOG;AAEH,qBACa,YAAa,SAAQ,UAAU;IAC1C,OAAgB,MAAM,0BAA+B;IAErD,qCAAqC;IAErC,QAAQ,CAAC,iBAAiB,SAAM;IAEhC,uCAAuC;IAEvC,QAAQ,CAAC,oBAAoB,SAAM;IAEnC;;;OAGG;IAEH,QAAQ,CAAC,SAAS,SAAM;IAExB,sBAAsB;IAEtB,QAAQ,CAAC,IAAI,SAAM;IAEnB,wBAAwB;IAExB,QAAQ,CAAC,MAAM,SAAM;IAErB,mGAAmG;IAEnG,QAAQ,CAAC,SAAS,SAAa;IAE/B,kIAAkI;IAElI,QAAQ,CAAC,IAAI,SAAY;IAEzB,iCAAiC;IAEjC,QAAQ,CAAC,WAAW,EAAE,GAAG,CAKvB;IAEF,oEAAoE;IAEpE,QAAQ,CAAC,mBAAmB,SAAW;IAEvC;;;SAGK;IAEL,QAAQ,CAAC,6BAA6B,SAAM;IAE5C,6DAA6D;IAE7D,QAAQ,CAAC,gBAAgB,EAAE,OAAO,GAAG,KAAK,GAAG,QAAQ,GAAG,SAAS,CAAC;IAElE;;;SAGK;IAEL,QAAQ,CAAC,WAAW,SAAY;IAEhC;;OAEG;IAEH,QAAQ,CAAC,WAAW,EAAE,GAAG,CAKvB;IAEF,4EAA4E;IAE5E,QAAQ,CAAC,MAAM,UAAS;IAExB,6JAA6J;IAE7J,QAAQ,CAAC,eAAe,UAAS;IAEjC,uJAAuJ;IAEvJ,QAAQ,CAAC,OAAO,SAAK;IAErB;;OAEG;IAEH,QAAQ,CAAC,0BAA0B,UAAS;IAEnC,MAAM;IA6Df,OAAO,CAAC,aAAa;IA2FZ,OAAO,CAAC,iBAAiB,EAAE,GAAG;IAcvC,OAAO,CAAC,MAAM;IAed,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,iBAAiB;CA4B1B;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,kBAAkB,EAAE,YAAY,CAAC;KAClC;CACF"}
|
|
@@ -398,14 +398,14 @@ kyn-link::part(link) {
|
|
|
398
398
|
text-indent: 200%;
|
|
399
399
|
white-space: nowrap;
|
|
400
400
|
width: 1px;
|
|
401
|
-
}`;let b=(()=>{var c,b,x,S,z,C,$,_,T,j,D,B,M,N,R,
|
|
401
|
+
}`;let b=(()=>{var c,b,x,S,z,C,$,_,T,j,D,B,M,W,N,R,E;let I,L,O,U,X,q,P,Y,A,F,G,H,J,K,Q,V,Z,tt,it,et=[f("kyn-notification")],nt=[],at=m,ot=[],st=[],rt=[],lt=[],ct=[],dt=[],ft=[],ht=[],pt=[],mt=[],ut=[],gt=[],kt=[],vt=[],yt=[],wt=[],bt=[],xt=[],St=[],zt=[],Ct=[],$t=[],_t=[],Tt=[],jt=[],Dt=[],Bt=[],Mt=[],Wt=[],Nt=[],Rt=[],Et=[],It=[],Lt=[];return L=class extends at{get notificationTitle(){return n(this,c,"f")}set notificationTitle(t){a(this,c,t,"f")}get notificationSubtitle(){return n(this,b,"f")}set notificationSubtitle(t){a(this,b,t,"f")}get timeStamp(){return n(this,x,"f")}set timeStamp(t){a(this,x,t,"f")}get href(){return n(this,S,"f")}set href(t){a(this,S,t,"f")}get target(){return n(this,z,"f")}set target(t){a(this,z,t,"f")}get tagStatus(){return n(this,C,"f")}set tagStatus(t){a(this,C,t,"f")}get type(){return n(this,$,"f")}set type(t){a(this,$,t,"f")}get textStrings(){return n(this,_,"f")}set textStrings(t){a(this,_,t,"f")}get closeBtnDescription(){return n(this,T,"f")}set closeBtnDescription(t){a(this,T,t,"f")}get assistiveNotificationTypeText(){return n(this,j,"f")}set assistiveNotificationTypeText(t){a(this,j,t,"f")}get notificationRole(){return n(this,D,"f")}set notificationRole(t){a(this,D,t,"f")}get statusLabel(){return n(this,B,"f")}set statusLabel(t){a(this,B,t,"f")}get _badgeColor(){return n(this,M,"f")}set _badgeColor(t){a(this,M,t,"f")}get unRead(){return n(this,W,"f")}set unRead(t){a(this,W,t,"f")}get hideCloseButton(){return n(this,N,"f")}set hideCloseButton(t){a(this,N,t,"f")}get timeout(){return n(this,R,"f")}set timeout(t){a(this,R,t,"f")}get _hasDescriptionSlotContent(){return n(this,E,"f")}set _hasDescriptionSlotContent(t){a(this,E,t,"f")}render(){const t={"notification-normal":"normal"===this.type,"notification-inline":"inline"===this.type,"notification-toast":"toast"===this.type,"notification-error":("inline"===this.type||"toast"===this.type)&&"error"===this.tagStatus,"notification-success":("inline"===this.type||"toast"===this.type)&&"success"===this.tagStatus,"notification-warning":("inline"===this.type||"toast"===this.type)&&"warning"===this.tagStatus,"notification-info":("inline"===this.type||"toast"===this.type)&&"info"===this.tagStatus,"notification-ai":("inline"===this.type||"toast"===this.type)&&"ai"===this.tagStatus,"notification-default":("inline"===this.type||"toast"===this.type)&&"default"===this.tagStatus,"notification-no-description":!this._hasDescriptionSlotContent};return s`
|
|
402
402
|
${"clickable"===this.type?s`<kyn-card
|
|
403
403
|
class="notification-clickable"
|
|
404
404
|
?highlight=${this.unRead}
|
|
405
405
|
type=${this.type}
|
|
406
|
-
href=${this.href}
|
|
407
|
-
target
|
|
408
|
-
rel
|
|
406
|
+
href=${o(this.href||void 0)}
|
|
407
|
+
target=${o(this.target||void 0)}
|
|
408
|
+
rel=${o("_blank"===this.target?"noopener noreferrer":void 0)}
|
|
409
409
|
@on-card-click=${t=>this._handleCardClick(t)}
|
|
410
410
|
hideBorder
|
|
411
411
|
role=${o(this.notificationRole)}
|
|
@@ -489,5 +489,5 @@ kyn-link::part(link) {
|
|
|
489
489
|
<div class="timestamp-text">${this.timeStamp}</div>
|
|
490
490
|
</div>
|
|
491
491
|
</div>
|
|
492
|
-
</div>`}updated(t){"toast"===this.type&&t.has("timeout")&&this.timeout>0&&setTimeout((()=>{this._close()}),1e3*this.timeout)}_close(){this.animate([{opacity:"1"},{opacity:"0"}],{duration:500,easing:"ease-in-out",fill:"forwards"}).onfinish=()=>{var t;null===(t=this.parentNode)||void 0===t||t.removeChild(this)};const t=new CustomEvent("on-close");this.dispatchEvent(t)}_handleClose(){this._close()}_handleCardClick(t){const i=new CustomEvent("on-notification-click",{detail:t.detail.origEvent});this.dispatchEvent(i)}_handleSlotChange(t){this._checkSlotContent()}_checkSlotContent(){var t;const i=null===(t=this.shadowRoot)||void 0===t?void 0:t.querySelector("slot:not([name])");if(!i)return void(this._hasDescriptionSlotContent=!1);const e=i.assignedNodes().some((t=>{if(t.nodeType===Node.ELEMENT_NODE)return!0;if(t.nodeType===Node.TEXT_NODE){const i=t.textContent;return null!=i&&""!==i.trim()}return!1}));this._hasDescriptionSlotContent=e}constructor(){super(...arguments),c.set(this,e(this,
|
|
492
|
+
</div>`}updated(t){"toast"===this.type&&t.has("timeout")&&this.timeout>0&&setTimeout((()=>{this._close()}),1e3*this.timeout)}_close(){this.animate([{opacity:"1"},{opacity:"0"}],{duration:500,easing:"ease-in-out",fill:"forwards"}).onfinish=()=>{var t;null===(t=this.parentNode)||void 0===t||t.removeChild(this)};const t=new CustomEvent("on-close");this.dispatchEvent(t)}_handleClose(){this._close()}_handleCardClick(t){const i=new CustomEvent("on-notification-click",{detail:t.detail.origEvent});this.dispatchEvent(i)}_handleSlotChange(t){this._checkSlotContent()}_checkSlotContent(){var t;const i=null===(t=this.shadowRoot)||void 0===t?void 0:t.querySelector("slot:not([name])");if(!i)return void(this._hasDescriptionSlotContent=!1);const e=i.assignedNodes().some((t=>{if(t.nodeType===Node.ELEMENT_NODE)return!0;if(t.nodeType===Node.TEXT_NODE){const i=t.textContent;return null!=i&&""!==i.trim()}return!1}));this._hasDescriptionSlotContent=e}constructor(){super(...arguments),c.set(this,e(this,ot,"")),b.set(this,(e(this,st),e(this,rt,""))),x.set(this,(e(this,lt),e(this,ct,""))),S.set(this,(e(this,dt),e(this,ft,""))),z.set(this,(e(this,ht),e(this,pt,""))),C.set(this,(e(this,mt),e(this,ut,"default"))),$.set(this,(e(this,gt),e(this,kt,"normal"))),_.set(this,(e(this,vt),e(this,yt,{success:"Success",warning:"Warning",info:"Information",error:"Error"}))),T.set(this,(e(this,wt),e(this,bt,"Close"))),j.set(this,(e(this,xt),e(this,St,""))),D.set(this,(e(this,zt),e(this,Ct,void 0))),B.set(this,(e(this,$t),e(this,_t,"Status"))),M.set(this,(e(this,Tt),e(this,jt,{success:"success",warning:"warning",info:"information",error:"error"}))),W.set(this,(e(this,Dt),e(this,Bt,!1))),N.set(this,(e(this,Mt),e(this,Wt,!1))),R.set(this,(e(this,Nt),e(this,Rt,8))),E.set(this,(e(this,Et),e(this,It,!1))),e(this,Lt)}},c=new WeakMap,b=new WeakMap,x=new WeakMap,S=new WeakMap,z=new WeakMap,C=new WeakMap,$=new WeakMap,_=new WeakMap,T=new WeakMap,j=new WeakMap,D=new WeakMap,B=new WeakMap,M=new WeakMap,W=new WeakMap,N=new WeakMap,R=new WeakMap,E=new WeakMap,t(L,"Notification"),(()=>{var t;const e="function"==typeof Symbol&&Symbol.metadata?Object.create(null!==(t=at[Symbol.metadata])&&void 0!==t?t:null):void 0;O=[p({type:String})],U=[p({type:String})],X=[p({type:String})],q=[p({type:String})],P=[p({type:String})],Y=[p({type:String})],A=[p({type:String})],F=[p({type:Object})],G=[p({type:String})],H=[p({type:String})],J=[p({type:String})],K=[p({type:String})],Q=[d()],V=[p({type:Boolean,reflect:!0})],Z=[p({type:Boolean})],tt=[p({type:Number})],it=[d()],i(L,null,O,{kind:"accessor",name:"notificationTitle",static:!1,private:!1,access:{has:t=>"notificationTitle"in t,get:t=>t.notificationTitle,set:(t,i)=>{t.notificationTitle=i}},metadata:e},ot,st),i(L,null,U,{kind:"accessor",name:"notificationSubtitle",static:!1,private:!1,access:{has:t=>"notificationSubtitle"in t,get:t=>t.notificationSubtitle,set:(t,i)=>{t.notificationSubtitle=i}},metadata:e},rt,lt),i(L,null,X,{kind:"accessor",name:"timeStamp",static:!1,private:!1,access:{has:t=>"timeStamp"in t,get:t=>t.timeStamp,set:(t,i)=>{t.timeStamp=i}},metadata:e},ct,dt),i(L,null,q,{kind:"accessor",name:"href",static:!1,private:!1,access:{has:t=>"href"in t,get:t=>t.href,set:(t,i)=>{t.href=i}},metadata:e},ft,ht),i(L,null,P,{kind:"accessor",name:"target",static:!1,private:!1,access:{has:t=>"target"in t,get:t=>t.target,set:(t,i)=>{t.target=i}},metadata:e},pt,mt),i(L,null,Y,{kind:"accessor",name:"tagStatus",static:!1,private:!1,access:{has:t=>"tagStatus"in t,get:t=>t.tagStatus,set:(t,i)=>{t.tagStatus=i}},metadata:e},ut,gt),i(L,null,A,{kind:"accessor",name:"type",static:!1,private:!1,access:{has:t=>"type"in t,get:t=>t.type,set:(t,i)=>{t.type=i}},metadata:e},kt,vt),i(L,null,F,{kind:"accessor",name:"textStrings",static:!1,private:!1,access:{has:t=>"textStrings"in t,get:t=>t.textStrings,set:(t,i)=>{t.textStrings=i}},metadata:e},yt,wt),i(L,null,G,{kind:"accessor",name:"closeBtnDescription",static:!1,private:!1,access:{has:t=>"closeBtnDescription"in t,get:t=>t.closeBtnDescription,set:(t,i)=>{t.closeBtnDescription=i}},metadata:e},bt,xt),i(L,null,H,{kind:"accessor",name:"assistiveNotificationTypeText",static:!1,private:!1,access:{has:t=>"assistiveNotificationTypeText"in t,get:t=>t.assistiveNotificationTypeText,set:(t,i)=>{t.assistiveNotificationTypeText=i}},metadata:e},St,zt),i(L,null,J,{kind:"accessor",name:"notificationRole",static:!1,private:!1,access:{has:t=>"notificationRole"in t,get:t=>t.notificationRole,set:(t,i)=>{t.notificationRole=i}},metadata:e},Ct,$t),i(L,null,K,{kind:"accessor",name:"statusLabel",static:!1,private:!1,access:{has:t=>"statusLabel"in t,get:t=>t.statusLabel,set:(t,i)=>{t.statusLabel=i}},metadata:e},_t,Tt),i(L,null,Q,{kind:"accessor",name:"_badgeColor",static:!1,private:!1,access:{has:t=>"_badgeColor"in t,get:t=>t._badgeColor,set:(t,i)=>{t._badgeColor=i}},metadata:e},jt,Dt),i(L,null,V,{kind:"accessor",name:"unRead",static:!1,private:!1,access:{has:t=>"unRead"in t,get:t=>t.unRead,set:(t,i)=>{t.unRead=i}},metadata:e},Bt,Mt),i(L,null,Z,{kind:"accessor",name:"hideCloseButton",static:!1,private:!1,access:{has:t=>"hideCloseButton"in t,get:t=>t.hideCloseButton,set:(t,i)=>{t.hideCloseButton=i}},metadata:e},Wt,Nt),i(L,null,tt,{kind:"accessor",name:"timeout",static:!1,private:!1,access:{has:t=>"timeout"in t,get:t=>t.timeout,set:(t,i)=>{t.timeout=i}},metadata:e},Rt,Et),i(L,null,it,{kind:"accessor",name:"_hasDescriptionSlotContent",static:!1,private:!1,access:{has:t=>"_hasDescriptionSlotContent"in t,get:t=>t._hasDescriptionSlotContent,set:(t,i)=>{t._hasDescriptionSlotContent=i}},metadata:e},It,Lt),i(null,I={value:L},et,{kind:"class",name:L.name,metadata:e},null,nt),L=I.value,e&&Object.defineProperty(L,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:e})})(),L.styles=h(w),e(L,nt),L})();export{b as Notification};
|
|
493
493
|
//# sourceMappingURL=notification.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notification.js","sources":["../../../../src/components/reusable/notification/notification.ts"],"sourcesContent":["import { unsafeSVG } from 'lit-html/directives/unsafe-svg.js';\nimport { LitElement, html, unsafeCSS } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\n\nimport '../button';\nimport closeIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/close-simple.svg';\n\nimport NotificationScss from './notification.scss?inline';\nimport '../card';\nimport successIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/checkmark-filled.svg';\nimport warningIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/warning-filled.svg';\nimport errorIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/error-filled.svg';\nimport infoIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/information-filled.svg';\n\nimport '../badge';\n/**\n * Notification component.\n * @slot unnamed - Slot for notification message body.\n * @slot actions - Slot for menu.\n * @slot icon - Slot for an icon.\n * @fires on-notification-click - Emit event for clickable notification.`detail:{ origEvent: PointerEvent }`\n * @fires on-close - Emits when an inline/toast notification closes.\n */\n\n@customElement('kyn-notification')\nexport class Notification extends LitElement {\n static override styles = unsafeCSS(NotificationScss);\n\n /** Notification Title (Required). */\n @property({ type: String })\n accessor notificationTitle = '';\n\n /** Notification subtitle.(optional) */\n @property({ type: String })\n accessor notificationSubtitle = '';\n\n /**\n * Timestamp of notification.\n * It is recommended to add the context along with the timestamp. Example: `Updated 2 mins ago`.\n */\n @property({ type: String })\n accessor timeStamp = '';\n\n /** Card href link */\n @property({ type: String })\n accessor href = '';\n\n /** Notification status / tag type. `'default'`, `'info'`, `'warning'`, `'success'` & `'error'`. */\n @property({ type: String })\n accessor tagStatus = 'default'; // Need to change the name to badgeStatus, once old tags are removed.\n\n /** Notification type. `'normal'`, `'inline'`, `'toast'` and `'clickable'`. Clickable type can be use inside notification panel */\n @property({ type: String })\n accessor type = 'normal';\n\n /** Customizable text strings. */\n @property({ type: Object })\n accessor textStrings: any = {\n success: 'Success',\n warning: 'Warning',\n info: 'Information',\n error: 'Error',\n };\n\n /** Close button description (Required to support accessibility). */\n @property({ type: String })\n accessor closeBtnDescription = 'Close';\n\n /**\n * Assistive text for notification type.\n * Required for `'clickable'`, `'inline'` and `'toast'` notification types.\n * */\n @property({ type: String })\n accessor assistiveNotificationTypeText = '';\n\n /** Notification role (Required to support accessibility). */\n @property({ type: String })\n accessor notificationRole: 'alert' | 'log' | 'status' | undefined;\n\n /**\n * Status label (Required to support accessibility).\n * Assign the localized string value for the word **Status**.\n * */\n @property({ type: String })\n accessor statusLabel = 'Status';\n\n /** Set badgeColor based on provided tagStatus.\n * @internal\n */\n @state()\n accessor _badgeColor: any = {\n success: 'success',\n warning: 'warning',\n info: 'information',\n error: 'error',\n };\n\n /** Set notification mark read prop. Required ony for `type: 'clickable'`.*/\n @property({ type: Boolean, reflect: true })\n accessor unRead = false;\n\n /** Hide close (x) button. Useful only for `type='toast'`. This required `timeout > 0` otherwise toast remain as it is when `hideCloseButton` is set true. */\n @property({ type: Boolean })\n accessor hideCloseButton = false;\n\n /** Timeout (Default 8 seconds for Toast). Specify an optional duration the toast notification should be closed in. Only apply with `type = 'toast'` */\n @property({ type: Number })\n accessor timeout = 8;\n\n /** Track if slot has content to conditionally render description div\n * @internal\n */\n @state()\n accessor _hasDescriptionSlotContent = false;\n\n override render() {\n const cardBgClasses = {\n 'notification-normal': this.type === 'normal',\n 'notification-inline': this.type === 'inline',\n 'notification-toast': this.type === 'toast',\n 'notification-error':\n (this.type === 'inline' || this.type === 'toast') &&\n this.tagStatus === 'error',\n 'notification-success':\n (this.type === 'inline' || this.type === 'toast') &&\n this.tagStatus === 'success',\n 'notification-warning':\n (this.type === 'inline' || this.type === 'toast') &&\n this.tagStatus === 'warning',\n 'notification-info':\n (this.type === 'inline' || this.type === 'toast') &&\n this.tagStatus === 'info',\n 'notification-ai':\n (this.type === 'inline' || this.type === 'toast') &&\n this.tagStatus === 'ai',\n 'notification-default':\n (this.type === 'inline' || this.type === 'toast') &&\n this.tagStatus === 'default',\n 'notification-no-description': !this._hasDescriptionSlotContent,\n };\n\n return html`\n ${this.type === 'clickable'\n ? html`<kyn-card\n class=\"notification-clickable\"\n ?highlight=${this.unRead}\n type=${this.type}\n href=${this.href}\n target=\"_blank\"\n rel=\"noopener\"\n @on-card-click=${(e: any) => this._handleCardClick(e)}\n hideBorder\n role=${ifDefined(this.notificationRole)}\n >\n <span id=\"notificationType\"\n >${this.assistiveNotificationTypeText}</span\n >\n ${this.renderInnerUI()}\n </kyn-card>`\n : html` <kyn-card\n type=${this.type}\n role=${ifDefined(this.notificationRole)}\n class=\"${classMap(cardBgClasses)}\"\n >\n ${this.type === 'inline' || this.type === 'toast'\n ? html`<span id=\"notificationType\"\n >${this.assistiveNotificationTypeText}</span\n >`\n : null}\n ${this.renderInnerUI()}\n </kyn-card>`}\n `;\n }\n\n private renderInnerUI() {\n const notificationIcon: any = {\n success: successIcon,\n error: errorIcon,\n warning: warningIcon,\n info: infoIcon,\n ai: successIcon,\n default: successIcon,\n };\n\n return html`<div class=\"notification-wrapper\">\n <div class=\"notification-title-wrap\">\n <div class=\"notification-head\">\n ${this.type === 'inline' || this.type === 'toast'\n ? html` <span\n class=\"notification-state-icon ${this.tagStatus}\"\n role=\"img\"\n aria-label=${`${this.textStrings[this.tagStatus]} icon`}\n >\n <slot name=\"icon\">\n ${unsafeSVG(notificationIcon[this.tagStatus])}\n </slot>\n </span>`\n : null}\n\n <div class=\"notification-title\">${this.notificationTitle}</div>\n\n ${this.notificationSubtitle !== '' &&\n (this.type === 'normal' || this.type === 'clickable')\n ? html`\n <div class=\"notification-subtitle\">\n ${this.notificationSubtitle}\n </div>\n `\n : null}\n </div>\n\n <div>\n ${(this.type === 'toast' || this.type === 'inline') &&\n !this.hideCloseButton\n ? html` <kyn-button\n class=\"notification-toast-close-btn\"\n kind=\"ghost\"\n size=\"small\"\n description=${ifDefined(this.closeBtnDescription)}\n @on-click=\"${() => this._handleClose()}\"\n >\n <span\n slot=\"icon\"\n role=\"img\"\n aria-label=${ifDefined(this.closeBtnDescription)}\n >${unsafeSVG(closeIcon)}</span\n >\n </kyn-button>`\n : null}\n <!-- actions slot could be an overflow menu, close icon (for other notification types) etc. -->\n <slot name=\"actions\"></slot>\n </div>\n </div>\n\n ${this._hasDescriptionSlotContent\n ? html`<div class=\"notification-description\">\n <slot @slotchange=\"${this._handleSlotChange}\"></slot>\n </div>`\n : html`<slot\n @slotchange=\"${this._handleSlotChange}\"\n style=\"display: none;\"\n ></slot>`}\n\n <div class=\"notification-content-wrapper\">\n <div class=\"status-tag\">\n ${this.tagStatus !== 'default' &&\n (this.type === 'normal' || this.type === 'clickable')\n ? html`\n <span id=\"statusLabel\">${this.statusLabel}</span>\n <kyn-badge\n type=${'heavy'}\n ?hideIcon=${true}\n label=${this.textStrings[this.tagStatus]}\n status=${this._badgeColor[this.tagStatus]}\n ></kyn-badge>\n `\n : null}\n </div>\n <div class=\"timestamp-wrapper\">\n <div class=\"timestamp-text\">${this.timeStamp}</div>\n </div>\n </div>\n </div>`;\n }\n\n override updated(changedProperties: any) {\n // Close toast notification if timeout > 0\n if (\n this.type === 'toast' &&\n changedProperties.has('timeout') &&\n this.timeout > 0\n ) {\n setTimeout(() => {\n this._close();\n }, this.timeout * 1000);\n }\n }\n\n // Remove toast from DOM\n private _close() {\n const animation = this.animate([{ opacity: '1' }, { opacity: '0' }], {\n duration: 500,\n easing: 'ease-in-out',\n fill: 'forwards',\n });\n animation.onfinish = () => {\n this.parentNode?.removeChild(this);\n };\n\n // emit on-close event\n const event = new CustomEvent('on-close');\n this.dispatchEvent(event);\n }\n\n private _handleClose() {\n this._close();\n }\n\n private _handleCardClick(e: any) {\n const event = new CustomEvent('on-notification-click', {\n detail: e.detail.origEvent,\n });\n this.dispatchEvent(event);\n }\n\n private _handleSlotChange(e: Event) {\n this._checkSlotContent();\n }\n\n private _checkSlotContent() {\n const slot = this.shadowRoot?.querySelector(\n 'slot:not([name])'\n ) as HTMLSlotElement;\n if (!slot) {\n this._hasDescriptionSlotContent = false;\n return;\n }\n\n const assignedNodes = slot.assignedNodes();\n\n const hasContent = assignedNodes.some((node) => {\n if (node.nodeType === Node.ELEMENT_NODE) {\n return true;\n }\n if (node.nodeType === Node.TEXT_NODE) {\n const textContent = node.textContent;\n return (\n textContent !== null &&\n textContent !== undefined &&\n textContent.trim() !== ''\n );\n }\n return false;\n });\n\n this._hasDescriptionSlotContent = hasContent;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kyn-notification': Notification;\n }\n}\n"],"names":["Notification","customElement","LitElement","_classThis","_classSuper","notificationTitle","__classPrivateFieldGet","this","_Notification_notificationTitle_accessor_storage","value","__classPrivateFieldSet","notificationSubtitle","_Notification_notificationSubtitle_accessor_storage","timeStamp","_Notification_timeStamp_accessor_storage","href","_Notification_href_accessor_storage","tagStatus","_Notification_tagStatus_accessor_storage","type","_Notification_type_accessor_storage","textStrings","_Notification_textStrings_accessor_storage","closeBtnDescription","_Notification_closeBtnDescription_accessor_storage","assistiveNotificationTypeText","_Notification_assistiveNotificationTypeText_accessor_storage","notificationRole","_Notification_notificationRole_accessor_storage","statusLabel","_Notification_statusLabel_accessor_storage","_badgeColor","_Notification__badgeColor_accessor_storage","unRead","_Notification_unRead_accessor_storage","hideCloseButton","_Notification_hideCloseButton_accessor_storage","timeout","_Notification_timeout_accessor_storage","_hasDescriptionSlotContent","_Notification__hasDescriptionSlotContent_accessor_storage","render","cardBgClasses","html","e","_handleCardClick","ifDefined","renderInnerUI","classMap","notificationIcon","success","successIcon","error","errorIcon","warning","warningIcon","info","infoIcon","ai","default","unsafeSVG","_handleClose","closeIcon","_handleSlotChange","updated","changedProperties","has","setTimeout","_close","animate","opacity","duration","easing","fill","onfinish","_a","parentNode","removeChild","event","CustomEvent","dispatchEvent","detail","origEvent","_checkSlotContent","slot","shadowRoot","querySelector","hasContent","assignedNodes","some","node","nodeType","Node","ELEMENT_NODE","TEXT_NODE","textContent","trim","set","__runInitializers","_notificationTitle_initializers","_notificationTitle_extraInitializers","_notificationSubtitle_initializers","_notificationSubtitle_extraInitializers","_timeStamp_initializers","_timeStamp_extraInitializers","_href_initializers","_href_extraInitializers","_tagStatus_initializers","_tagStatus_extraInitializers","_type_initializers","_type_extraInitializers","_textStrings_initializers","_textStrings_extraInitializers","_closeBtnDescription_initializers","_closeBtnDescription_extraInitializers","_assistiveNotificationTypeText_initializers","_assistiveNotificationTypeText_extraInitializers","_notificationRole_initializers","_notificationRole_extraInitializers","_statusLabel_initializers","_statusLabel_extraInitializers","__badgeColor_initializers","__badgeColor_extraInitializers","_unRead_initializers","_unRead_extraInitializers","_hideCloseButton_initializers","_hideCloseButton_extraInitializers","_timeout_initializers","_timeout_extraInitializers","__hasDescriptionSlotContent_initializers","_notificationTitle_decorators","property","String","_notificationSubtitle_decorators","_timeStamp_decorators","_href_decorators","_tagStatus_decorators","_type_decorators","_textStrings_decorators","Object","_closeBtnDescription_decorators","_assistiveNotificationTypeText_decorators","_notificationRole_decorators","_statusLabel_decorators","__badgeColor_decorators","state","Boolean","reflect","_hideCloseButton_decorators","_timeout_decorators","Number","__hasDescriptionSlotContent_decorators","__esDecorate","kind","name","static","private","access","obj","get","metadata","_metadata","_unRead_decorators","__hasDescriptionSlotContent_extraInitializers","_classDescriptor","_classDecorators","_classExtraInitializers","styles","unsafeCSS","NotificationScss"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"notification.js","sources":["../../../../src/components/reusable/notification/notification.ts"],"sourcesContent":["import { unsafeSVG } from 'lit-html/directives/unsafe-svg.js';\nimport { LitElement, html, unsafeCSS } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\n\nimport '../button';\nimport closeIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/close-simple.svg';\n\nimport NotificationScss from './notification.scss?inline';\nimport '../card';\nimport successIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/checkmark-filled.svg';\nimport warningIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/warning-filled.svg';\nimport errorIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/error-filled.svg';\nimport infoIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/information-filled.svg';\n\nimport '../badge';\n/**\n * Notification component.\n * @slot unnamed - Slot for notification message body.\n * @slot actions - Slot for menu.\n * @slot icon - Slot for an icon.\n * @fires on-notification-click - Emit event for clickable notification.`detail:{ origEvent: PointerEvent }`\n * @fires on-close - Emits when an inline/toast notification closes.\n */\n\n@customElement('kyn-notification')\nexport class Notification extends LitElement {\n static override styles = unsafeCSS(NotificationScss);\n\n /** Notification Title (Required). */\n @property({ type: String })\n accessor notificationTitle = '';\n\n /** Notification subtitle.(optional) */\n @property({ type: String })\n accessor notificationSubtitle = '';\n\n /**\n * Timestamp of notification.\n * It is recommended to add the context along with the timestamp. Example: `Updated 2 mins ago`.\n */\n @property({ type: String })\n accessor timeStamp = '';\n\n /** Card href link. */\n @property({ type: String })\n accessor href = '';\n\n /** Card link target. */\n @property({ type: String })\n accessor target = '';\n\n /** Notification status / tag type. `'default'`, `'info'`, `'warning'`, `'success'` & `'error'`. */\n @property({ type: String })\n accessor tagStatus = 'default'; // Need to change the name to badgeStatus, once old tags are removed.\n\n /** Notification type. `'normal'`, `'inline'`, `'toast'` and `'clickable'`. Clickable type can be use inside notification panel */\n @property({ type: String })\n accessor type = 'normal';\n\n /** Customizable text strings. */\n @property({ type: Object })\n accessor textStrings: any = {\n success: 'Success',\n warning: 'Warning',\n info: 'Information',\n error: 'Error',\n };\n\n /** Close button description (Required to support accessibility). */\n @property({ type: String })\n accessor closeBtnDescription = 'Close';\n\n /**\n * Assistive text for notification type.\n * Required for `'clickable'`, `'inline'` and `'toast'` notification types.\n * */\n @property({ type: String })\n accessor assistiveNotificationTypeText = '';\n\n /** Notification role (Required to support accessibility). */\n @property({ type: String })\n accessor notificationRole: 'alert' | 'log' | 'status' | undefined;\n\n /**\n * Status label (Required to support accessibility).\n * Assign the localized string value for the word **Status**.\n * */\n @property({ type: String })\n accessor statusLabel = 'Status';\n\n /** Set badgeColor based on provided tagStatus.\n * @internal\n */\n @state()\n accessor _badgeColor: any = {\n success: 'success',\n warning: 'warning',\n info: 'information',\n error: 'error',\n };\n\n /** Set notification mark read prop. Required ony for `type: 'clickable'`.*/\n @property({ type: Boolean, reflect: true })\n accessor unRead = false;\n\n /** Hide close (x) button. Useful only for `type='toast'`. This required `timeout > 0` otherwise toast remain as it is when `hideCloseButton` is set true. */\n @property({ type: Boolean })\n accessor hideCloseButton = false;\n\n /** Timeout (Default 8 seconds for Toast). Specify an optional duration the toast notification should be closed in. Only apply with `type = 'toast'` */\n @property({ type: Number })\n accessor timeout = 8;\n\n /** Track if slot has content to conditionally render description div\n * @internal\n */\n @state()\n accessor _hasDescriptionSlotContent = false;\n\n override render() {\n const cardBgClasses = {\n 'notification-normal': this.type === 'normal',\n 'notification-inline': this.type === 'inline',\n 'notification-toast': this.type === 'toast',\n 'notification-error':\n (this.type === 'inline' || this.type === 'toast') &&\n this.tagStatus === 'error',\n 'notification-success':\n (this.type === 'inline' || this.type === 'toast') &&\n this.tagStatus === 'success',\n 'notification-warning':\n (this.type === 'inline' || this.type === 'toast') &&\n this.tagStatus === 'warning',\n 'notification-info':\n (this.type === 'inline' || this.type === 'toast') &&\n this.tagStatus === 'info',\n 'notification-ai':\n (this.type === 'inline' || this.type === 'toast') &&\n this.tagStatus === 'ai',\n 'notification-default':\n (this.type === 'inline' || this.type === 'toast') &&\n this.tagStatus === 'default',\n 'notification-no-description': !this._hasDescriptionSlotContent,\n };\n\n return html`\n ${this.type === 'clickable'\n ? html`<kyn-card\n class=\"notification-clickable\"\n ?highlight=${this.unRead}\n type=${this.type}\n href=${ifDefined(this.href || undefined)}\n target=${ifDefined(this.target || undefined)}\n rel=${ifDefined(\n this.target === '_blank' ? 'noopener noreferrer' : undefined\n )}\n @on-card-click=${(e: any) => this._handleCardClick(e)}\n hideBorder\n role=${ifDefined(this.notificationRole)}\n >\n <span id=\"notificationType\"\n >${this.assistiveNotificationTypeText}</span\n >\n ${this.renderInnerUI()}\n </kyn-card>`\n : html` <kyn-card\n type=${this.type}\n role=${ifDefined(this.notificationRole)}\n class=\"${classMap(cardBgClasses)}\"\n >\n ${this.type === 'inline' || this.type === 'toast'\n ? html`<span id=\"notificationType\"\n >${this.assistiveNotificationTypeText}</span\n >`\n : null}\n ${this.renderInnerUI()}\n </kyn-card>`}\n `;\n }\n\n private renderInnerUI() {\n const notificationIcon: any = {\n success: successIcon,\n error: errorIcon,\n warning: warningIcon,\n info: infoIcon,\n ai: successIcon,\n default: successIcon,\n };\n\n return html`<div class=\"notification-wrapper\">\n <div class=\"notification-title-wrap\">\n <div class=\"notification-head\">\n ${this.type === 'inline' || this.type === 'toast'\n ? html` <span\n class=\"notification-state-icon ${this.tagStatus}\"\n role=\"img\"\n aria-label=${`${this.textStrings[this.tagStatus]} icon`}\n >\n <slot name=\"icon\">\n ${unsafeSVG(notificationIcon[this.tagStatus])}\n </slot>\n </span>`\n : null}\n\n <div class=\"notification-title\">${this.notificationTitle}</div>\n\n ${this.notificationSubtitle !== '' &&\n (this.type === 'normal' || this.type === 'clickable')\n ? html`\n <div class=\"notification-subtitle\">\n ${this.notificationSubtitle}\n </div>\n `\n : null}\n </div>\n\n <div>\n ${(this.type === 'toast' || this.type === 'inline') &&\n !this.hideCloseButton\n ? html` <kyn-button\n class=\"notification-toast-close-btn\"\n kind=\"ghost\"\n size=\"small\"\n description=${ifDefined(this.closeBtnDescription)}\n @on-click=\"${() => this._handleClose()}\"\n >\n <span\n slot=\"icon\"\n role=\"img\"\n aria-label=${ifDefined(this.closeBtnDescription)}\n >${unsafeSVG(closeIcon)}</span\n >\n </kyn-button>`\n : null}\n <!-- actions slot could be an overflow menu, close icon (for other notification types) etc. -->\n <slot name=\"actions\"></slot>\n </div>\n </div>\n\n ${this._hasDescriptionSlotContent\n ? html`<div class=\"notification-description\">\n <slot @slotchange=\"${this._handleSlotChange}\"></slot>\n </div>`\n : html`<slot\n @slotchange=\"${this._handleSlotChange}\"\n style=\"display: none;\"\n ></slot>`}\n\n <div class=\"notification-content-wrapper\">\n <div class=\"status-tag\">\n ${this.tagStatus !== 'default' &&\n (this.type === 'normal' || this.type === 'clickable')\n ? html`\n <span id=\"statusLabel\">${this.statusLabel}</span>\n <kyn-badge\n type=${'heavy'}\n ?hideIcon=${true}\n label=${this.textStrings[this.tagStatus]}\n status=${this._badgeColor[this.tagStatus]}\n ></kyn-badge>\n `\n : null}\n </div>\n <div class=\"timestamp-wrapper\">\n <div class=\"timestamp-text\">${this.timeStamp}</div>\n </div>\n </div>\n </div>`;\n }\n\n override updated(changedProperties: any) {\n // Close toast notification if timeout > 0\n if (\n this.type === 'toast' &&\n changedProperties.has('timeout') &&\n this.timeout > 0\n ) {\n setTimeout(() => {\n this._close();\n }, this.timeout * 1000);\n }\n }\n\n // Remove toast from DOM\n private _close() {\n const animation = this.animate([{ opacity: '1' }, { opacity: '0' }], {\n duration: 500,\n easing: 'ease-in-out',\n fill: 'forwards',\n });\n animation.onfinish = () => {\n this.parentNode?.removeChild(this);\n };\n\n // emit on-close event\n const event = new CustomEvent('on-close');\n this.dispatchEvent(event);\n }\n\n private _handleClose() {\n this._close();\n }\n\n private _handleCardClick(e: any) {\n const event = new CustomEvent('on-notification-click', {\n detail: e.detail.origEvent,\n });\n this.dispatchEvent(event);\n }\n\n private _handleSlotChange(e: Event) {\n this._checkSlotContent();\n }\n\n private _checkSlotContent() {\n const slot = this.shadowRoot?.querySelector(\n 'slot:not([name])'\n ) as HTMLSlotElement;\n if (!slot) {\n this._hasDescriptionSlotContent = false;\n return;\n }\n\n const assignedNodes = slot.assignedNodes();\n\n const hasContent = assignedNodes.some((node) => {\n if (node.nodeType === Node.ELEMENT_NODE) {\n return true;\n }\n if (node.nodeType === Node.TEXT_NODE) {\n const textContent = node.textContent;\n return (\n textContent !== null &&\n textContent !== undefined &&\n textContent.trim() !== ''\n );\n }\n return false;\n });\n\n this._hasDescriptionSlotContent = hasContent;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kyn-notification': Notification;\n }\n}\n"],"names":["Notification","customElement","LitElement","_classThis","_classSuper","notificationTitle","__classPrivateFieldGet","this","_Notification_notificationTitle_accessor_storage","value","__classPrivateFieldSet","notificationSubtitle","_Notification_notificationSubtitle_accessor_storage","timeStamp","_Notification_timeStamp_accessor_storage","href","_Notification_href_accessor_storage","target","_Notification_target_accessor_storage","tagStatus","_Notification_tagStatus_accessor_storage","type","_Notification_type_accessor_storage","textStrings","_Notification_textStrings_accessor_storage","closeBtnDescription","_Notification_closeBtnDescription_accessor_storage","assistiveNotificationTypeText","_Notification_assistiveNotificationTypeText_accessor_storage","notificationRole","_Notification_notificationRole_accessor_storage","statusLabel","_Notification_statusLabel_accessor_storage","_badgeColor","_Notification__badgeColor_accessor_storage","unRead","_Notification_unRead_accessor_storage","hideCloseButton","_Notification_hideCloseButton_accessor_storage","timeout","_Notification_timeout_accessor_storage","_hasDescriptionSlotContent","_Notification__hasDescriptionSlotContent_accessor_storage","render","cardBgClasses","html","ifDefined","undefined","e","_handleCardClick","renderInnerUI","classMap","notificationIcon","success","successIcon","error","errorIcon","warning","warningIcon","info","infoIcon","ai","default","unsafeSVG","_handleClose","closeIcon","_handleSlotChange","updated","changedProperties","has","setTimeout","_close","animate","opacity","duration","easing","fill","onfinish","_a","parentNode","removeChild","event","CustomEvent","dispatchEvent","detail","origEvent","_checkSlotContent","slot","shadowRoot","querySelector","hasContent","assignedNodes","some","node","nodeType","Node","ELEMENT_NODE","TEXT_NODE","textContent","trim","set","__runInitializers","_notificationTitle_initializers","_notificationTitle_extraInitializers","_notificationSubtitle_initializers","_notificationSubtitle_extraInitializers","_timeStamp_initializers","_timeStamp_extraInitializers","_href_initializers","_href_extraInitializers","_target_initializers","_target_extraInitializers","_tagStatus_initializers","_tagStatus_extraInitializers","_type_initializers","_type_extraInitializers","_textStrings_initializers","_textStrings_extraInitializers","_closeBtnDescription_initializers","_closeBtnDescription_extraInitializers","_assistiveNotificationTypeText_initializers","_assistiveNotificationTypeText_extraInitializers","_notificationRole_initializers","_notificationRole_extraInitializers","_statusLabel_initializers","_statusLabel_extraInitializers","__badgeColor_initializers","__badgeColor_extraInitializers","_unRead_initializers","_unRead_extraInitializers","_hideCloseButton_initializers","_hideCloseButton_extraInitializers","_timeout_initializers","_timeout_extraInitializers","__hasDescriptionSlotContent_initializers","_notificationTitle_decorators","property","String","_notificationSubtitle_decorators","_timeStamp_decorators","_href_decorators","_target_decorators","_tagStatus_decorators","_type_decorators","_textStrings_decorators","Object","_closeBtnDescription_decorators","_assistiveNotificationTypeText_decorators","_notificationRole_decorators","_statusLabel_decorators","__badgeColor_decorators","state","Boolean","reflect","_hideCloseButton_decorators","_timeout_decorators","Number","__hasDescriptionSlotContent_decorators","__esDecorate","kind","name","static","private","access","obj","get","metadata","_metadata","_unRead_decorators","__hasDescriptionSlotContent_extraInitializers","_classDescriptor","_classDecorators","_classExtraInitializers","styles","unsafeCSS","NotificationScss"],"mappings":"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"}
|