@zanichelli/albe-web-components 18.8.0 → 18.8.1-RC2
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/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/web-components-library.cjs.js +1 -1
- package/dist/cjs/z-app-header_12.cjs.entry.js +13 -11
- package/dist/cjs/z-app-header_12.cjs.entry.js.map +1 -1
- package/dist/cjs/z-select.cjs.entry.js +43 -41
- package/dist/cjs/z-select.cjs.entry.js.map +1 -1
- package/dist/collection/components/list/z-list-element/styles.css +1 -1
- package/dist/collection/components/list/z-list-group/styles.css +3 -3
- package/dist/collection/components/z-input/index.js +19 -17
- package/dist/collection/components/z-input/index.js.map +1 -1
- package/dist/collection/components/z-select/index.js +43 -42
- package/dist/collection/components/z-select/index.js.map +1 -1
- package/dist/collection/components/z-select/styles.css +20 -22
- package/dist/components/index12.js +15 -13
- package/dist/components/index12.js.map +1 -1
- package/dist/components/index15.js +1 -1
- package/dist/components/index15.js.map +1 -1
- package/dist/components/index16.js +1 -1
- package/dist/components/index16.js.map +1 -1
- package/dist/components/z-select.js +43 -42
- package/dist/components/z-select.js.map +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/web-components-library.js +1 -1
- package/dist/esm/z-app-header_12.entry.js +13 -11
- package/dist/esm/z-app-header_12.entry.js.map +1 -1
- package/dist/esm/z-select.entry.js +43 -41
- package/dist/esm/z-select.entry.js.map +1 -1
- package/dist/types/components/z-input/index.d.ts +4 -4
- package/dist/types/components/z-select/index.d.ts +2 -0
- package/dist/types/components.d.ts +32 -32
- package/dist/web-components-library/p-0df27983.entry.js +2 -0
- package/dist/web-components-library/p-0df27983.entry.js.map +1 -0
- package/{www/build/p-d60684d5.entry.js → dist/web-components-library/p-739ba71b.entry.js} +2 -2
- package/dist/web-components-library/p-739ba71b.entry.js.map +1 -0
- package/dist/web-components-library/web-components-library.esm.js +1 -1
- package/dist/web-components-library/web-components-library.esm.js.map +1 -1
- package/package.json +3 -2
- package/www/build/p-0df27983.entry.js +2 -0
- package/www/build/p-0df27983.entry.js.map +1 -0
- package/www/build/p-69904e5f.js +2 -0
- package/{dist/web-components-library/p-d60684d5.entry.js → www/build/p-739ba71b.entry.js} +2 -2
- package/www/build/p-739ba71b.entry.js.map +1 -0
- package/www/build/web-components-library.esm.js +1 -1
- package/www/build/web-components-library.esm.js.map +1 -1
- package/www/index.html +1 -1
- package/dist/web-components-library/p-0990d475.entry.js +0 -2
- package/dist/web-components-library/p-0990d475.entry.js.map +0 -1
- package/dist/web-components-library/p-d60684d5.entry.js.map +0 -1
- package/www/build/p-0990d475.entry.js +0 -2
- package/www/build/p-0990d475.entry.js.map +0 -1
- package/www/build/p-b716b49c.js +0 -2
- package/www/build/p-d60684d5.entry.js.map +0 -1
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{r as e,c as t,h as s,g as i}from"./p-75c4a726.js";import{e as l,g as c,l as r,i as n}from"./p-17af7fb2.js";import{r as o,b as a,e as h,f as d}from"./p-625e2cee.js";import"./p-5145a606.js";const z='.sc-z-select-h{display:inline-block;width:inherit;color:var(--color-form-default-text);font-family:var(--font-family-sans);font-size:var(--font-size-3);font-weight:var(--font-rg)}[size="small"].sc-z-select-h,[size="x-small"].sc-z-select-h{font-size:var(--font-size-2)}.select-wrapper.sc-z-select>z-input.sc-z-select{width:100%}.select-wrapper.sc-z-select>z-input.sc-z-select .input-icon.sc-z-select{cursor:pointer}.select-wrapper.sc-z-select>div.sc-z-select{position:relative}.select-wrapper.sc-z-select>div.closed.sc-z-select{overflow:hidden;height:0}.select-wrapper.sc-z-select .ul-scroll-wrapper.sc-z-select{position:absolute;width:100%;box-sizing:border-box;border-top:none;background:var(--color-form-background);box-shadow:var(--shadow-2);outline:none}.select-wrapper.sc-z-select .closed.sc-z-select .ul-scroll-wrapper.sc-z-select{z-index:10}.select-wrapper.sc-z-select .open.sc-z-select .ul-scroll-wrapper.sc-z-select{z-index:20}.select-wrapper.sc-z-select .ul-scroll-wrapper.fixed.sc-z-select{position:static}.select-wrapper.sc-z-select z-list.sc-z-select{--background-color-list-element:var(--color-form-background);--background-hover-color-list-element:var(--color-surface02);--background-active-color-list-element:var(--color-surface02)}.select-wrapper.sc-z-select .ul-scroll-wrapper.sc-z-select>z-list.sc-z-select{position:relative;overflow:auto;max-height:240px;padding:var(--space-unit) calc(var(--space-unit) * 1.5);margin:calc(var(--space-unit) * -1) 0;margin:0;outline:none}.select-wrapper.sc-z-select .ul-scroll-wrapper.sc-z-select z-list.sc-z-select z-list-element[disabled].sc-z-select{color:var(--color-form-disabled03)}.select-wrapper.sc-z-select .ul-scroll-wrapper.sc-z-select z-list.sc-z-select z-list-element.sc-z-select .list-element-container.sc-z-select{display:flex;align-items:center;padding:calc(var(--space-unit) / 2) var(--space-unit);column-gap:var(--space-unit)}.select-wrapper.sc-z-select .ul-scroll-wrapper.sc-z-select z-list.sc-z-select z-list-element.sc-z-select .list-element-container.sc-z-select .list-element-content.sc-z-select{margin-right:auto}.select-wrapper.sc-z-select .ul-scroll-wrapper.sc-z-select z-list.sc-z-select z-list-element.sc-z-select .list-element-container.sc-z-select>z-icon.sc-z-select+.list-element-content.sc-z-select{padding:calc(var(--space-unit) * 0.5) var(--space-unit)}[size="x-small"].sc-z-select-h .select-wrapper.sc-z-select .ul-scroll-wrapper.sc-z-select z-list.sc-z-select z-list-element.sc-z-select .list-element-container.sc-z-select .list-element-content.sc-z-select{padding:0}[size="small"].sc-z-select-h .select-wrapper.sc-z-select .ul-scroll-wrapper.sc-z-select z-list.sc-z-select z-list-element.sc-z-select .list-element-container.sc-z-select>z-icon.sc-z-select{--z-icon-width:16px;--z-icon-height:16px}[size="x-small"].sc-z-select-h .select-wrapper.sc-z-select .ul-scroll-wrapper.sc-z-select z-list.sc-z-select z-list-element.sc-z-select .list-element-container.sc-z-select>z-icon.sc-z-select{--z-icon-width:14px;--z-icon-height:14px}[size="x-small"].sc-z-select-h .select-wrapper.sc-z-select .ul-scroll-wrapper.sc-z-select z-list.sc-z-select z-list-element.sc-z-select .list-element-container.sc-z-select>z-icon.sc-z-select+.list-element-content.sc-z-select{padding:0 var(--space-unit)}.select-wrapper.sc-z-select .ul-scroll-wrapper.sc-z-select z-list.sc-z-select z-list-element.sc-z-select .list-element-container.sc-z-select .list-element-content.selected.sc-z-select{font-weight:var(--font-sb)}.select-wrapper.sc-z-select .ul-scroll-wrapper.sc-z-select .no-results.sc-z-select z-icon.sc-z-select{margin-right:var(--space-unit)}.z-list-group-title.sc-z-select{color:var(--color-form-default-text)}.reset-item.sc-z-select{color:var(--color-form-active-primary);fill:var(--color-form-active-primary)}.reset-item-content.sc-z-select{display:flex;align-items:center}.reset-item.reset-item-margin.sc-z-select .reset-item-content.sc-z-select{margin-left:var(--space-unit)}.reset-item.sc-z-select .reset-item-content.sc-z-select>z-icon.sc-z-select{margin-right:var(--space-unit)}.reset-item.hide.sc-z-select{display:none}.tree-list-reset-item.sc-z-select{padding:var(--space-unit) 0}z-list-element.sc-z-select{position:relative;display:block}z-list.sc-z-select z-list-element.sc-z-select::before{position:absolute;z-index:100;top:3px;left:-8px;width:8px;height:1em;border-bottom:1px solid var(--color-form-disabled01-icon);border-left:1px solid var(--color-form-disabled01-icon);content:"";cursor:pointer}z-list.sc-z-select z-list-element.sc-z-select::after{position:absolute;z-index:100;top:5px;left:-8px;width:8px;height:100%;border-left:1px solid var(--color-form-disabled01-icon);content:"";cursor:pointer}z-list.sc-z-select z-list-element.sc-z-select:last-child::after{display:none}z-list.sc-z-select>z-list-element.sc-z-select::before,z-list.sc-z-select>z-list-element.sc-z-select::after,z-list.sc-z-select>z-list-group.sc-z-select>z-list-element.sc-z-select::before,z-list.sc-z-select>z-list-group.sc-z-select>z-list-element.sc-z-select::after{display:none}z-list.sc-z-select>div.children-node.sc-z-select{padding-left:calc(var(--space-unit) * 2)}z-list-element.sc-z-select>.list-element.sc-z-select{display:flex;justify-content:space-between;padding:calc(var(--space-unit) * 1.5) var(--space-unit);cursor:pointer}z-list-element.sc-z-select>.list-element.sc-z-select:focus:focus-visible{box-shadow:var(--shadow-focus-primary);outline:none}z-list-element.sc-z-select>.list-element.sc-z-select:hover,z-list-element.sc-z-select>.list-element.sc-z-select:hover::after{background-color:var(--background-hover-color-list-element, var(--color-background))}z-list-element.sc-z-select>.list-element.sc-z-select .item.ellipsis.sc-z-select{overflow:hidden}z-list-element.sc-z-select .list-element.sc-z-select::after{position:absolute;top:0;right:-1px;display:block;width:100%;height:45px;content:"";transform:translateX(-100%)}z-list-element.tree-search-item.sc-z-select{padding-top:0}z-list-element.tree-search-item.sc-z-select .list-element.sc-z-select::after{position:absolute;right:-25px;display:block;width:100%;height:45px;content:"";transform:translateX(-100%)}z-list-element.grouped-tree-parent-node.sc-z-select .list-element.sc-z-select::after{position:absolute;right:-25px;display:block;width:100%;height:45px;content:"";transform:translateX(-100%)}.item-label.selected.sc-z-select{font-weight:bold}.item.ellipsis.sc-z-select{display:inline-block;overflow:hidden;max-width:100%;text-overflow:ellipsis;white-space:nowrap}z-list.sc-z-select>z-list-element.grouped-tree-parent-node.sc-z-select>.list-element.sc-z-select:hover::after,z-list-element.tree-search-item.sc-z-select .list-element.sc-z-select:hover::after,z-list.sc-z-select>z-list-group.sc-z-select>z-list-element.grouped-tree-parent-node.sc-z-select>.list-element.sc-z-select:hover::after{position:absolute;z-index:-1;right:-18px;display:block;width:100%;height:45px;content:"";transform:translateX(-100%)}z-list-element.sc-z-select>.list-element.sc-z-select:hover::after{position:absolute;z-index:-1;top:0;right:0;display:block;width:100%;height:45px;content:"";transform:translateX(-100%)}.children-node.sc-z-select z-list-element.sc-z-select::before,.children-node.sc-z-select z-list-element.sc-z-select::after{left:-8px}.children-node.sc-z-select .children-node.sc-z-select z-list-element.sc-z-select::before,.children-node.sc-z-select .children-node.sc-z-select z-list-element.sc-z-select::after{left:-8px}.children-node.sc-z-select>z-list-element.sc-z-select{padding:0}';const p=z;const u=class{constructor(s){e(this,s);this.optionSelect=t(this,"optionSelect",7);this.resetSelect=t(this,"resetSelect",7);this.flattenedList=[];this.itemsList=[];this.itemIdKeyMap={};this.resetKey=-1;this.htmlid=`id-${o()}`;this.items=undefined;this.name=undefined;this.label=undefined;this.ariaLabel="";this.disabled=false;this.readonly=false;this.placeholder=undefined;this.htmltitle=undefined;this.status=undefined;this.message=true;this.autocomplete=false;this.noresultslabel="Nessun risultato";this.hasGroupItems=undefined;this.hasTreeItems=undefined;this.showChildrenOfMatchingParent=undefined;this.isfixed=false;this.resetItem=undefined;this.size=l.BIG;this.isOpen=false;this.selectedItem=null;this.focusedItemId=undefined;this.searchString=undefined;this.toggleSelectUl=this.toggleSelectUl.bind(this);this.handleSelectFocus=this.handleSelectFocus.bind(this)}watchItems(){this.itemsList=this.getInitialItemsArray();this.selectedItem=this.findSelectedItem(this.itemsList)}getFocusedItemHandler(e){this.focusedItemId=e.target.id}async getSelectedItem(){return this.selectedItem}async getValue(){return this.getSelectedValue()}async setValue(e){let t=[];if(typeof e==="string"){t.push(e)}else{t=e}this.itemsList=this.getInitialItemsArray();if(t.length){this.updateSelection(this.itemsList,t[0])}this.selectedItem=this.findSelectedItem(this.itemsList)}emitOptionSelect(){this.optionSelect.emit({id:this.htmlid,selected:this.getSelectedValue()})}emitResetSelect(){this.resetSelect.emit({id:this.htmlid})}componentWillLoad(){this.watchItems()}componentWillRender(){this.filterItems(this.searchString);this.updateFlattenedList()}getInitialItemsArray(){return typeof this.items==="string"?JSON.parse(this.items):this.items}mapSelectedItemToItemsArray(){const e=this.getInitialItemsArray();return e.map((e=>{var t;e.selected=e.id===((t=this.selectedItem)===null||t===void 0?void 0:t.id);return e}))}getSelectedValue(){var e;return(e=this.selectedItem)===null||e===void 0?void 0:e.id}getGroupedItems(){return Object.entries(this.itemsList.reduce(((e,t)=>{const s=t.category||"Altra categoria";e[s]=e[s]||[];e[s].push(t);return e}),{}))}updateFlattenedList(){let e=this.itemsList;if(this.hasGroupItems){e=this.getGroupedItems().map((e=>e[1])).flat()}this.flattenedList=this.flattenTreeItems(e);this.itemIdKeyMap={};this.flattenedList.forEach((({item:e,key:t})=>{this.itemIdKeyMap[e.id]=t}))}filterItems(e){const t=this.mapSelectedItemToItemsArray();if(!(e===null||e===void 0?void 0:e.length)){this.itemsList=t;return}if(this.hasTreeItems){this.itemsList=this.filterTree(t,e,false)}else{this.itemsList=t.filter((t=>t.name.toUpperCase().includes(e.toUpperCase()))).map((t=>{t.name=this.getHighlightedText(t.name,e);return t}))}}filterTree(e,t,s){if(!e){return[]}return e.map((e=>{const i=e.name.toUpperCase().includes(t.toUpperCase());const l=Object.assign({},e);if(l.children&&l.children.length>0){l.children=this.filterTree(l.children,t,i)}if(i){l.name=this.getHighlightedText(l.name,t)}if(i||l.children&&l.children.length>0||this.showChildrenOfMatchingParent&&s){return l}return null})).filter((e=>e!==null))}getHighlightedText(e,t){const s=e.toUpperCase();const i=t.toUpperCase();const l=s.indexOf(i);if(l===-1){return e}const c=l+t.length;return e.substring(0,l)+`<strong>${e.substring(l,c)}</strong>`+e.substring(c)}hasAutocomplete(){return a(this.autocomplete)===true}handleInputChange(e){this.searchString=e.detail.value;if(!this.isOpen){this.toggleSelectUl()}}updateSelection(e,t){if(e){e.forEach((e=>{e.selected=e.id===t;if(e.children&&e.children.length>0){this.updateSelection(e.children,t)}}))}}findSelectedItem(e){if(e){for(const t of e){if(t.selected){return t}if(t.children&&t.children.length>0){const e=this.findSelectedItem(t.children);if(e){return e}}}}return null}selectItem(e){if(e===null||e===void 0?void 0:e.disabled){return}this.itemsList=this.getInitialItemsArray();if(e){this.updateSelection(this.itemsList,e.id)}this.selectedItem=this.findSelectedItem(this.itemsList);this.emitOptionSelect();this.toggleSelectUl();if(this.searchString){this.searchString=null}}flattenTreeItems(e){const t=[];let s=0;const i=e=>{e.forEach((e=>{t.push({item:e,key:s++});if(e.children&&e.children.length>0){i(e.children)}}))};if(e){i(e)}return t}arrowsSelectNav(e,t){const s=this.resetItem&&!!this.selectedItem;const i=[c.ARROW_DOWN,c.ARROW_UP];if(!i.includes(e.key)){return}e.preventDefault();e.stopPropagation();const l=[...this.flattenedList].filter((e=>!e.item.disabled));if(this.resetItem&&s){l.unshift({item:{id:"__RESET_ITEM__"},key:this.resetKey})}let r;if(typeof t==="number"){r=l.findIndex((e=>e.key===t))}else{const e=this.itemIdKeyMap[t];r=l.findIndex((t=>t.key===e))}if(!this.isOpen){this.toggleSelectUl();if(r===-1){r=-1}}const n=l.length-1;let o=r;if(e.key===c.ARROW_DOWN){do{o=o===n?0:o+1}while(l[o].item.disabled)}else{do{o=o<=0?n:o-1}while(l[o].item.disabled)}this.focusSelectItem(l[o].key)}focusSelectItem(e){var t;(t=this.host.querySelector(`#${this.htmlid}_key_${e}`))===null||t===void 0?void 0:t.focus()}toggleSelectUl(e=false){var t;if(this.disabled||this.readonly){return}if(!this.isOpen){document.addEventListener("click",this.handleSelectFocus);document.addEventListener("keyup",this.handleSelectFocus)}else{document.removeEventListener("click",this.handleSelectFocus);document.removeEventListener("keyup",this.handleSelectFocus);if(e){(t=this.host.querySelector(`#${this.htmlid}_input`))===null||t===void 0?void 0:t.focus()}if(this.selectedItem&&this.searchString){this.searchString=null;this.filterItems(this.searchString)}}this.focusedItemId="";this.isOpen=!this.isOpen}handleInputClick(e){if(e.target.closest(".reset-icon")){e.stopPropagation();return}this.toggleSelectUl()}handleSelectFocus(e){const t=d();if(t===null||t===void 0?void 0:t.hasAttribute("disabled")){return}if(e instanceof KeyboardEvent&&e.key===c.ESC){e.stopPropagation();return this.toggleSelectUl(true)}if(e instanceof KeyboardEvent&&(e.key===c.ENTER||e.key!==c.TAB)){return}if(!h(t).find((e=>e.nodeName.toLowerCase()==="z-input"&&e.id===`${this.htmlid}_input`))){this.toggleSelectUl(e instanceof MouseEvent)}}scrollToLetter(e){const t=this.itemsList.findIndex((t=>t.name.toLowerCase().charAt(0)===e.toLowerCase()));if(t>-1){this.focusSelectItem(this.itemIdKeyMap[this.itemsList[t].id])}}renderInput(){return s("z-input",{class:{"active-select":this.isOpen,"cursor-select":!this.autocomplete},id:`${this.htmlid}_input`,htmlid:`${this.htmlid}_select_input`,placeholder:this.placeholder,value:!this.isOpen&&this.selectedItem?this.selectedItem.name.replace(/<[^>]+>/g,""):null,label:this.label,autocomplete:"off","aria-label":this.ariaLabel,"html-aria-expanded":this.isOpen?"true":"false","html-aria-controls":`${this.htmlid}_list`,"html-aria-autocomplete":this.hasAutocomplete()?"list":"none","html-aria-activedescendant":this.isOpen?this.focusedItemId:"",icon:this.isOpen?"caret-up":"caret-down",hasclearicon:false,message:false,name:this.name,disabled:this.disabled,readonly:this.readonly||!this.hasAutocomplete()&&this.isOpen,status:this.isOpen?undefined:this.status,role:"combobox",size:this.size,onClick:e=>{this.handleInputClick(e)},onKeyUp:e=>{e.preventDefault();if(this.hasAutocomplete()){if(!this.isOpen){this.toggleSelectUl()}}},onKeyDown:e=>{const t=this.selectedItem?this.itemIdKeyMap[this.selectedItem.id]:this.resetItem?this.resetKey:"";return this.arrowsSelectNav(e,t)},onInputChange:e=>{this.handleInputChange(e)},onKeyPress:e=>{if(!this.hasAutocomplete()){e.preventDefault();this.scrollToLetter(e.key)}}})}renderSelectUl(){return s("div",{class:this.isOpen?"open":"closed"},s("div",{class:{"ul-scroll-wrapper":true,fixed:this.isfixed}},s("z-list",{role:"listbox","aria-label":this.ariaLabel||this.label,tabindex:this.disabled||this.readonly||!this.isOpen?-1:0,id:`${this.htmlid}_list`,"aria-multiselectable":false,size:this.listSizeType(),class:{disabled:this.disabled,readonly:this.readonly,[`input-${this.status}`]:!this.isOpen&&!!this.status,"z-scrollbar":true}},this.resetItem&&this.renderResetItem(),this.renderSelectUlItems())))}renderResetItem(){return s("z-list-element",{class:{hide:!this.selectedItem||!this.resetItem,"reset-item":true,"reset-item-margin":!this.hasGroupItems},clickable:true,disabled:false,dividerType:r.ELEMENT,role:"option",tabindex:"0","aria-selected":"false",id:`${this.htmlid}_key_${this.resetKey}`,size:this.hasTreeItems?n.MEDIUM:this.listSizeType(),onClickItem:()=>{this.selectedItem=null;this.searchString=null;this.emitResetSelect()},onKeyDown:e=>this.arrowsSelectNav(e,this.resetKey)},s("div",{class:{"reset-item-content":true,"tree-list-reset-item":this.hasTreeItems}},s("z-icon",{name:"multiply-circled"}),s("span",null,this.resetItem)))}renderItem(e,t){const i=this.itemIdKeyMap[e.id];return s("z-list-element",{clickable:!e.disabled,disabled:e.disabled,dividerType:t?r.HEADER:r.ELEMENT,role:"option",tabindex:e.disabled||!this.isOpen?-1:0,"aria-selected":e.selected?"true":"false",id:`${this.htmlid}_key_${i}`,size:this.listSizeType(),onClickItem:()=>this.selectItem(e),onKeyDown:e=>this.arrowsSelectNav(e,i)},s("div",{class:"list-element-container"},s("div",{class:{selected:!!e.selected,"list-element-content":true},innerHTML:e.name}),e.icon&&s("z-tag",{icon:e.icon})))}listSizeType(){if(this.hasTreeItems){return n.NONE}if(this.size===l.SMALL||this.size===l.X_SMALL){return n.SMALL}return n.MEDIUM}renderSelectUlItems(){if(!this.itemsList.length){return this.renderNoSearchResults()}if(this.hasGroupItems){if(this.hasTreeItems){return this.renderGroupedTree()}return this.renderSelectGroupItems()}return this.itemsList.map(((e,t,s)=>{const i=t===s.length-1;const l=s.length>1;if(this.hasTreeItems){return this.renderTreeItems(e,i,l,true)}return this.renderItem(e,i)}))}renderTreeItems(e,t,i,l){var n,o;const a=this.itemIdKeyMap[e.id];const h=this.hasGroupItems?undefined:this.hasGroupItems?t&&!i?r.ELEMENT:undefined:l&&i&&!t?r.ELEMENT:undefined;return s("z-list-element",{clickable:!e.disabled,disabled:e.disabled,class:{"grouped-tree-parent-node":this.hasGroupItems&&!!((n=e.children)===null||n===void 0?void 0:n.length),"tree-search-item":this.hasGroupItems&&l&&!((o=e.children)===null||o===void 0?void 0:o.length)&&!!this.searchString},size:this.listSizeType(),dividerType:h,hasTreeItems:this.hasTreeItems},s("div",{id:`${this.htmlid}_key_${a}`,role:"option",class:"list-element",tabIndex:!this.isOpen?-1:0,onClick:()=>this.selectItem(e),onKeyDown:t=>{this.arrowsSelectNav(t,a);if(t.key===c.ENTER){this.selectItem(e)}}},s("span",{class:"item ellipsis"},s("span",{class:{"item-label":true,selected:!!e.selected},title:e.name,innerHTML:e.selected?`<strong>${e.name}</strong>`:e.name})),e.icon&&s("z-tag",{icon:e.icon})),e.children&&e.children.length>0?s("z-list",null,s("div",{class:"children-node"},e.children.map(((e,t,s)=>this.renderTreeItems(e,t===s.length-1,s.length>1,false))))):null)}renderGroupedTree(){const e=this.getGroupedItems();return e.map((([t,i],l,c)=>{const n=Object.values(e).some((e=>e.length>1));return s("z-list-group",{"divider-type":l===c.length-1?undefined:r.ELEMENT,hasTreeItems:true},s("span",{class:"body-3-sb z-list-group-title",slot:"header-title"},t),s("z-list",null,i.map(((e,t,i)=>[this.renderTreeItems(e,t===i.length-1,n,true),t<i.length-1?s("z-divider",{key:`divider-${t}`,style:{zIndex:"100",height:"var(--border-size-small)"}}):null]))),l!==c.length-1&&s("z-divider",{style:{zIndex:"100",height:"var(--border-size-small)"}}))}))}renderSelectGroupItems(){const e=this.getGroupedItems();return e.map((([t,i],l)=>{const c=e.length===l+1;return s("z-list-group",{"divider-type":r.ELEMENT},s("span",{class:"body-3-sb z-list-group-title",slot:"header-title"},t),i.map(((e,t)=>{const s=i.length===t+1;return this.renderItem(e,c&&s)})))}))}renderNoSearchResults(){return s("z-list-element",{class:"no-results",size:this.hasTreeItems?n.MEDIUM:this.listSizeType()},this.noresultslabel)}renderMessage(){if(a(this.message)===false){return}return s("z-input-message",{message:a(this.message)===true?undefined:this.message,status:this.status,class:this.size,disabled:this.disabled})}render(){return s("div",{key:"aad1df5535147ac421c14557beb17d727f1f1810",class:"select-wrapper"},this.renderInput(),this.renderSelectUl(),this.renderMessage())}get host(){return i(this)}static get watchers(){return{items:["watchItems"]}}};u.style=p;export{u as z_select};
|
|
2
|
+
//# sourceMappingURL=p-0df27983.entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["stylesCss","ZSelectStyle0","ZSelect","constructor","hostRef","this","flattenedList","itemsList","itemIdKeyMap","resetKey","randomId","ControlSize","BIG","toggleSelectUl","bind","handleSelectFocus","watchItems","getInitialItemsArray","selectedItem","findSelectedItem","getFocusedItemHandler","e","focusedItemId","target","id","getSelectedItem","getValue","getSelectedValue","setValue","value","values","push","length","updateSelection","emitOptionSelect","optionSelect","emit","htmlid","selected","emitResetSelect","resetSelect","componentWillLoad","componentWillRender","filterItems","searchString","updateFlattenedList","items","JSON","parse","mapSelectedItemToItemsArray","initialItemsList","map","item","_a","getGroupedItems","Object","entries","reduce","group","category","orderedItems","hasGroupItems","flat","flattenTreeItems","forEach","key","prevList","hasTreeItems","filterTree","filter","name","toUpperCase","includes","getHighlightedText","matchingParent","match","newItem","assign","children","showChildrenOfMatchingParent","text","search","upperText","upperSearch","start","indexOf","end","substring","hasAutocomplete","boolean","autocomplete","handleInputChange","detail","isOpen","selectedId","found","selectItem","disabled","flatItems","index","flatten","subItems","itm","arrowsSelectNav","idOrReset","showResetIcon","resetItem","arrows","KeyboardCode","ARROW_DOWN","ARROW_UP","preventDefault","stopPropagation","f","unshift","currentIndex","findIndex","k","lastIndex","newIndex","focusSelectItem","host","querySelector","focus","selfFocusOnClose","readonly","document","addEventListener","removeEventListener","handleInputClick","closest","clickedElement","getClickedElement","hasAttribute","KeyboardEvent","ESC","ENTER","TAB","getElementTree","find","elem","nodeName","toLowerCase","MouseEvent","scrollToLetter","letter","foundItem","charAt","renderInput","h","class","placeholder","replace","label","ariaLabel","icon","hasclearicon","message","status","undefined","role","size","onClick","onKeyUp","onKeyDown","current","onInputChange","onKeyPress","renderSelectUl","fixed","isfixed","tabindex","listSizeType","renderResetItem","renderSelectUlItems","hide","clickable","dividerType","ListDividerType","ELEMENT","ListSize","MEDIUM","onClickItem","renderItem","lastItem","thisItemKey","HEADER","innerHTML","NONE","SMALL","X_SMALL","renderNoSearchResults","renderGroupedTree","renderSelectGroupItems","array","isLastItem","parentHasSiblings","renderTreeItems","isLastChild","isTopLevel","hasDivider","_b","tabIndex","title","child","arr","groupedItems","some","groupItems","slot","i","style","zIndex","height","isLastGroup","subindex","noresultslabel","renderMessage","render"],"sources":["src/components/z-select/styles.css?tag=z-select&encapsulation=scoped","src/components/z-select/index.tsx"],"sourcesContent":[":host {\n display: inline-block;\n width: inherit;\n color: var(--color-form-default-text);\n font-family: var(--font-family-sans);\n font-size: var(--font-size-3);\n font-weight: var(--font-rg);\n}\n\n:host([size=\"small\"]),\n:host([size=\"x-small\"]) {\n font-size: var(--font-size-2);\n}\n\n.select-wrapper > z-input {\n width: 100%;\n}\n\n.select-wrapper > z-input .input-icon {\n cursor: pointer;\n}\n\n.select-wrapper > div {\n position: relative;\n}\n\n.select-wrapper > div.closed {\n overflow: hidden;\n height: 0;\n}\n\n.select-wrapper .ul-scroll-wrapper {\n position: absolute;\n width: 100%;\n box-sizing: border-box;\n border-top: none;\n background: var(--color-form-background);\n box-shadow: var(--shadow-2);\n outline: none;\n}\n\n.select-wrapper .closed .ul-scroll-wrapper {\n z-index: 10;\n}\n\n.select-wrapper .open .ul-scroll-wrapper {\n z-index: 20;\n}\n\n.select-wrapper .ul-scroll-wrapper.fixed {\n position: static;\n}\n\n.select-wrapper z-list {\n --background-color-list-element: var(--color-form-background);\n --background-hover-color-list-element: var(--color-surface02);\n --background-active-color-list-element: var(--color-surface02);\n}\n\n.select-wrapper .ul-scroll-wrapper > z-list {\n position: relative;\n overflow: auto;\n max-height: 240px;\n padding: var(--space-unit) calc(var(--space-unit) * 1.5);\n margin: calc(var(--space-unit) * -1) 0;\n margin: 0;\n outline: none;\n}\n\n.select-wrapper .ul-scroll-wrapper z-list z-list-element[disabled] {\n color: var(--color-form-disabled03);\n}\n\n.select-wrapper .ul-scroll-wrapper z-list z-list-element .list-element-container {\n display: flex;\n align-items: center;\n padding: calc(var(--space-unit) / 2) var(--space-unit);\n column-gap: var(--space-unit);\n}\n\n.select-wrapper .ul-scroll-wrapper z-list z-list-element .list-element-container .list-element-content {\n margin-right: auto;\n}\n\n.select-wrapper .ul-scroll-wrapper z-list z-list-element .list-element-container > z-icon + .list-element-content {\n padding: calc(var(--space-unit) * 0.5) var(--space-unit);\n}\n\n:host([size=\"x-small\"])\n .select-wrapper\n .ul-scroll-wrapper\n z-list\n z-list-element\n .list-element-container\n .list-element-content {\n padding: 0;\n}\n\n:host([size=\"small\"]) .select-wrapper .ul-scroll-wrapper z-list z-list-element .list-element-container > z-icon {\n --z-icon-width: 16px;\n --z-icon-height: 16px;\n}\n\n:host([size=\"x-small\"]) .select-wrapper .ul-scroll-wrapper z-list z-list-element .list-element-container > z-icon {\n --z-icon-width: 14px;\n --z-icon-height: 14px;\n}\n\n:host([size=\"x-small\"])\n .select-wrapper\n .ul-scroll-wrapper\n z-list\n z-list-element\n .list-element-container\n > z-icon\n + .list-element-content {\n padding: 0 var(--space-unit);\n}\n\n.select-wrapper .ul-scroll-wrapper z-list z-list-element .list-element-container .list-element-content.selected {\n font-weight: var(--font-sb);\n}\n\n.select-wrapper .ul-scroll-wrapper .no-results z-icon {\n margin-right: var(--space-unit);\n}\n\n.z-list-group-title {\n color: var(--color-form-default-text);\n}\n\n.reset-item {\n color: var(--color-form-active-primary);\n fill: var(--color-form-active-primary);\n}\n\n.reset-item-content {\n display: flex;\n align-items: center;\n}\n\n.reset-item.reset-item-margin .reset-item-content {\n margin-left: var(--space-unit);\n}\n\n.reset-item .reset-item-content > z-icon {\n margin-right: var(--space-unit);\n}\n\n.reset-item.hide {\n display: none;\n}\n\n.tree-list-reset-item {\n padding: var(--space-unit) 0;\n}\n\nz-list-element {\n position: relative;\n display: block;\n}\n\nz-list z-list-element::before {\n position: absolute;\n z-index: 100;\n top: 3px;\n left: -8px;\n width: 8px;\n height: 1em;\n border-bottom: 1px solid var(--color-form-disabled01-icon);\n border-left: 1px solid var(--color-form-disabled01-icon);\n content: \"\";\n cursor: pointer;\n}\n\nz-list z-list-element::after {\n position: absolute;\n z-index: 100;\n top: 5px;\n left: -8px;\n width: 8px;\n height: 100%;\n border-left: 1px solid var(--color-form-disabled01-icon);\n content: \"\";\n cursor: pointer;\n}\n\nz-list z-list-element:last-child::after {\n display: none;\n}\n\nz-list > z-list-element::before,\nz-list > z-list-element::after,\nz-list > z-list-group > z-list-element::before,\nz-list > z-list-group > z-list-element::after {\n display: none;\n}\n\nz-list > div.children-node {\n padding-left: calc(var(--space-unit) * 2);\n}\n\nz-list-element > .list-element {\n display: flex;\n justify-content: space-between;\n padding: calc(var(--space-unit) * 1.5) var(--space-unit);\n cursor: pointer;\n}\n\nz-list-element > .list-element:focus:focus-visible {\n box-shadow: var(--shadow-focus-primary);\n outline: none;\n}\n\nz-list-element > .list-element:hover,\nz-list-element > .list-element:hover::after {\n background-color: var(--background-hover-color-list-element, var(--color-background));\n}\n\nz-list-element > .list-element .item.ellipsis {\n overflow: hidden;\n}\n\nz-list-element .list-element::after {\n position: absolute;\n top: 0;\n right: -1px;\n display: block;\n width: 100%;\n height: 45px;\n content: \"\";\n transform: translateX(-100%);\n}\n\nz-list-element.tree-search-item {\n padding-top: 0;\n}\n\nz-list-element.tree-search-item .list-element::after {\n position: absolute;\n right: -25px;\n display: block;\n width: 100%;\n height: 45px;\n content: \"\";\n transform: translateX(-100%);\n}\n\nz-list-element.grouped-tree-parent-node .list-element::after {\n position: absolute;\n right: -25px;\n display: block;\n width: 100%;\n height: 45px;\n content: \"\";\n transform: translateX(-100%);\n}\n\n/* z-list-element:not([disabled]) > .list-element:hover,\nz-list-element:not([disabled]) > .list-element:hover::after {\n z-index: -1;\n background-color: var(--color-form-surface03);\n cursor: pointer;\n} */\n\n.item-label.selected {\n font-weight: bold;\n}\n\n.item.ellipsis {\n display: inline-block;\n overflow: hidden;\n max-width: 100%;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\nz-list > z-list-element.grouped-tree-parent-node > .list-element:hover::after,\nz-list-element.tree-search-item .list-element:hover::after,\nz-list > z-list-group > z-list-element.grouped-tree-parent-node > .list-element:hover::after {\n position: absolute;\n z-index: -1;\n right: -18px;\n display: block;\n width: 100%;\n height: 45px;\n content: \"\";\n transform: translateX(-100%);\n}\n\nz-list-element > .list-element:hover::after {\n position: absolute;\n z-index: -1;\n top: 0;\n right: 0;\n display: block;\n width: 100%;\n height: 45px;\n content: \"\";\n transform: translateX(-100%);\n}\n\n.children-node z-list-element::before,\n.children-node z-list-element::after {\n left: -8px;\n}\n\n.children-node .children-node z-list-element::before,\n.children-node .children-node z-list-element::after {\n left: -8px;\n}\n\n.children-node > z-list-element {\n padding: 0;\n}\n","import {Component, Element, Event, EventEmitter, Listen, Method, Prop, State, Watch, h} from \"@stencil/core\";\nimport {ControlSize, InputStatus, KeyboardCode, ListDividerType, ListSize, SelectItem} from \"../../beans\";\nimport {boolean, getClickedElement, getElementTree, randomId} from \"../../utils/utils\";\n\n@Component({\n tag: \"z-select\",\n styleUrl: \"styles.css\",\n shadow: false,\n scoped: true,\n})\nexport class ZSelect {\n @Element() host: HTMLZSelectElement;\n\n /** the id of the input element */\n @Prop()\n htmlid = `id-${randomId()}`;\n\n /** the input select options */\n @Prop()\n items: SelectItem[] | string;\n\n /** the input name */\n @Prop()\n name?: string;\n\n /** the input label */\n @Prop()\n label?: string;\n\n /** the input aria-label */\n @Prop()\n ariaLabel = \"\";\n\n /** the input is disabled */\n @Prop()\n disabled?: boolean = false;\n\n /** the input is readonly */\n @Prop()\n readonly?: boolean = false;\n\n /** the input placeholder (optional) */\n @Prop()\n placeholder?: string;\n\n /** the input html title (optional) */\n @Prop()\n htmltitle?: string;\n\n /** the input status (optional) */\n @Prop()\n status?: InputStatus;\n\n /** input helper message (optional) - if set to `false` message won't be displayed */\n @Prop()\n message?: string | boolean = true;\n\n /** the input has autocomplete option */\n @Prop()\n autocomplete?: boolean = false;\n\n /** no result text message */\n @Prop()\n noresultslabel?: string = \"Nessun risultato\";\n\n /** */\n @Prop()\n hasGroupItems?: boolean;\n\n /** */\n @Prop()\n hasTreeItems?: boolean;\n\n /** If true and an item matches the search string, children of matching item are shown even if they don't match the search string */\n @Prop()\n showChildrenOfMatchingParent?: boolean;\n\n /** When fixed, it occupies space and pushes down next elements. */\n @Prop()\n isfixed?: boolean = false;\n\n /** */\n @Prop()\n resetItem?: string;\n\n /** Available sizes: `big`, `small` and `x-small`. Defaults to `big`. */\n @Prop()\n size?: ControlSize = ControlSize.BIG;\n\n @State()\n isOpen = false;\n\n @State()\n selectedItem: null | SelectItem = null;\n\n @State()\n focusedItemId: string;\n\n @State()\n searchString: null | string;\n\n private flattenedList: {item: SelectItem; key: number}[] = [];\n\n private itemsList: SelectItem[] = [];\n\n private itemIdKeyMap: Record<string, number> = {};\n\n private readonly resetKey = -1;\n\n constructor() {\n this.toggleSelectUl = this.toggleSelectUl.bind(this);\n this.handleSelectFocus = this.handleSelectFocus.bind(this);\n }\n\n @Watch(\"items\")\n watchItems(): void {\n this.itemsList = this.getInitialItemsArray();\n\n this.selectedItem = this.findSelectedItem(this.itemsList);\n }\n\n @Listen(\"ariaDescendantFocus\")\n getFocusedItemHandler(e: CustomEvent): void {\n this.focusedItemId = (e.target as Element).id;\n }\n\n /** get the input selected options */\n @Method()\n async getSelectedItem(): Promise<SelectItem> {\n return this.selectedItem;\n }\n\n /** get the input value */\n @Method()\n async getValue(): Promise<string> {\n return this.getSelectedValue();\n }\n\n /** set the input value */\n @Method()\n async setValue(value: string | string[]): Promise<void> {\n let values: string[] = [];\n if (typeof value === \"string\") {\n values.push(value);\n } else {\n values = value;\n }\n\n this.itemsList = this.getInitialItemsArray();\n if (values.length) {\n this.updateSelection(this.itemsList, values[0]);\n }\n this.selectedItem = this.findSelectedItem(this.itemsList);\n }\n\n /** Emitted on select option selection, returns select id, selected item id */\n @Event()\n optionSelect: EventEmitter;\n\n private emitOptionSelect(): void {\n this.optionSelect.emit({\n id: this.htmlid,\n selected: this.getSelectedValue(),\n });\n }\n\n /** Emitted on reset selected item, returns select id, selected item id */\n @Event()\n resetSelect: EventEmitter;\n\n private emitResetSelect(): void {\n this.resetSelect.emit({\n id: this.htmlid,\n });\n }\n\n componentWillLoad(): void {\n this.watchItems();\n }\n\n componentWillRender(): void {\n this.filterItems(this.searchString);\n this.updateFlattenedList();\n }\n\n private getInitialItemsArray(): SelectItem[] {\n return typeof this.items === \"string\" ? JSON.parse(this.items) : this.items;\n }\n\n private mapSelectedItemToItemsArray(): SelectItem[] {\n const initialItemsList = this.getInitialItemsArray();\n\n return initialItemsList.map((item: SelectItem) => {\n item.selected = item.id === this.selectedItem?.id;\n\n return item;\n });\n }\n\n private getSelectedValue(): string {\n return this.selectedItem?.id;\n }\n\n private getGroupedItems(): [string, SelectItem[]][] {\n return Object.entries(\n this.itemsList.reduce(\n (group, item) => {\n const category = item.category || \"Altra categoria\";\n group[category] = group[category] || [];\n group[category].push(item);\n\n return group;\n },\n {} as Record<string, SelectItem[]>\n )\n );\n }\n\n private updateFlattenedList(): void {\n let orderedItems = this.itemsList;\n if (this.hasGroupItems) {\n orderedItems = this.getGroupedItems()\n .map((item) => item[1])\n .flat();\n }\n\n this.flattenedList = this.flattenTreeItems(orderedItems);\n this.itemIdKeyMap = {};\n this.flattenedList.forEach(({item, key}) => {\n this.itemIdKeyMap[item.id] = key;\n });\n }\n\n private filterItems(searchString: string): void {\n const prevList = this.mapSelectedItemToItemsArray();\n\n if (!searchString?.length) {\n this.itemsList = prevList;\n\n return;\n }\n\n if (this.hasTreeItems) {\n this.itemsList = this.filterTree(prevList, searchString, false);\n } else {\n this.itemsList = prevList\n .filter((item: SelectItem) => item.name.toUpperCase().includes(searchString.toUpperCase()))\n .map((item: SelectItem) => {\n item.name = this.getHighlightedText(item.name, searchString);\n\n return item;\n });\n }\n }\n\n private filterTree(items: SelectItem[], searchString: string, matchingParent: boolean): SelectItem[] {\n if (!items) {\n return [];\n }\n\n return items\n .map((item) => {\n const match = item.name.toUpperCase().includes(searchString.toUpperCase());\n\n const newItem: SelectItem = {...item};\n if (newItem.children && newItem.children.length > 0) {\n newItem.children = this.filterTree(newItem.children, searchString, match);\n }\n\n if (match) {\n newItem.name = this.getHighlightedText(newItem.name, searchString);\n }\n if (\n match ||\n (newItem.children && newItem.children.length > 0) ||\n (this.showChildrenOfMatchingParent && matchingParent)\n ) {\n return newItem;\n }\n\n return null;\n })\n .filter((item) => item !== null) as SelectItem[];\n }\n\n private getHighlightedText(text: string, search: string): string {\n const upperText = text.toUpperCase();\n const upperSearch = search.toUpperCase();\n const start = upperText.indexOf(upperSearch);\n\n if (start === -1) {\n return text;\n }\n\n const end = start + search.length;\n\n return text.substring(0, start) + `<strong>${text.substring(start, end)}</strong>` + text.substring(end);\n }\n\n private hasAutocomplete(): boolean {\n return boolean(this.autocomplete) === true;\n }\n\n private handleInputChange(e: CustomEvent): void {\n this.searchString = e.detail.value;\n if (!this.isOpen) {\n this.toggleSelectUl();\n }\n }\n\n private updateSelection(items: SelectItem[], selectedId: string): void {\n if (items) {\n items.forEach((item) => {\n item.selected = item.id === selectedId;\n if (item.children && item.children.length > 0) {\n this.updateSelection(item.children, selectedId);\n }\n });\n }\n }\n\n private findSelectedItem(items: SelectItem[]): SelectItem | null {\n if (items) {\n for (const item of items) {\n if (item.selected) {\n return item;\n }\n if (item.children && item.children.length > 0) {\n const found = this.findSelectedItem(item.children);\n if (found) {\n return found;\n }\n }\n }\n }\n\n return null;\n }\n\n private selectItem(selected: null | SelectItem): void {\n if (selected?.disabled) {\n return;\n }\n\n this.itemsList = this.getInitialItemsArray();\n\n if (selected) {\n this.updateSelection(this.itemsList, selected.id);\n }\n\n this.selectedItem = this.findSelectedItem(this.itemsList);\n this.emitOptionSelect();\n this.toggleSelectUl();\n if (this.searchString) {\n this.searchString = null;\n }\n }\n\n private flattenTreeItems(items: SelectItem[]): {item: SelectItem; key: number}[] {\n const flatItems: {item: SelectItem; key: number}[] = [];\n let index = 0;\n\n const flatten = (subItems: SelectItem[]): void => {\n subItems.forEach((itm) => {\n flatItems.push({item: itm, key: index++});\n if (itm.children && itm.children.length > 0) {\n flatten(itm.children);\n }\n });\n };\n\n if (items) {\n flatten(items);\n }\n\n return flatItems;\n }\n\n private arrowsSelectNav(e: KeyboardEvent, idOrReset: string | number): void {\n const showResetIcon = this.resetItem && !!this.selectedItem;\n const arrows = [KeyboardCode.ARROW_DOWN, KeyboardCode.ARROW_UP];\n\n if (!arrows.includes(e.key as KeyboardCode)) {\n return;\n }\n\n e.preventDefault();\n e.stopPropagation();\n\n const flatItems = [...this.flattenedList].filter((f) => !f.item.disabled);\n\n if (this.resetItem && showResetIcon) {\n flatItems.unshift({\n item: {id: \"__RESET_ITEM__\"} as SelectItem,\n key: this.resetKey,\n });\n }\n\n let currentIndex: number;\n if (typeof idOrReset === \"number\") {\n currentIndex = flatItems.findIndex((f) => f.key === idOrReset);\n } else {\n const k = this.itemIdKeyMap[idOrReset];\n currentIndex = flatItems.findIndex((f) => f.key === k);\n }\n\n if (!this.isOpen) {\n this.toggleSelectUl();\n\n if (currentIndex === -1) {\n currentIndex = -1;\n }\n }\n\n const lastIndex = flatItems.length - 1;\n\n let newIndex = currentIndex;\n\n if (e.key === KeyboardCode.ARROW_DOWN) {\n do {\n newIndex = newIndex === lastIndex ? 0 : newIndex + 1;\n } while (flatItems[newIndex].item.disabled);\n } else {\n do {\n newIndex = newIndex <= 0 ? lastIndex : newIndex - 1;\n } while (flatItems[newIndex].item.disabled);\n }\n\n this.focusSelectItem(flatItems[newIndex].key);\n }\n\n private focusSelectItem(key: number): void {\n this.host.querySelector<HTMLDivElement>(`#${this.htmlid}_key_${key}`)?.focus();\n }\n\n private toggleSelectUl(selfFocusOnClose = false): void {\n if (this.disabled || this.readonly) {\n return;\n }\n\n if (!this.isOpen) {\n document.addEventListener(\"click\", this.handleSelectFocus);\n document.addEventListener(\"keyup\", this.handleSelectFocus);\n } else {\n document.removeEventListener(\"click\", this.handleSelectFocus);\n document.removeEventListener(\"keyup\", this.handleSelectFocus);\n if (selfFocusOnClose) {\n (this.host.querySelector(`#${this.htmlid}_input`) as HTMLInputElement)?.focus();\n }\n\n if (this.selectedItem && this.searchString) {\n this.searchString = null;\n this.filterItems(this.searchString);\n }\n }\n\n this.focusedItemId = \"\";\n this.isOpen = !this.isOpen;\n }\n\n private handleInputClick(e: MouseEvent | KeyboardEvent): void {\n if ((e.target as HTMLElement).closest(\".reset-icon\")) {\n e.stopPropagation();\n\n return;\n }\n\n this.toggleSelectUl();\n }\n\n private handleSelectFocus(e: MouseEvent | KeyboardEvent): void {\n const clickedElement = getClickedElement();\n if (clickedElement?.hasAttribute(\"disabled\")) {\n return;\n }\n\n if (e instanceof KeyboardEvent && e.key === KeyboardCode.ESC) {\n e.stopPropagation();\n\n return this.toggleSelectUl(true);\n }\n\n if (e instanceof KeyboardEvent && (e.key === KeyboardCode.ENTER || e.key !== KeyboardCode.TAB)) {\n return;\n }\n\n if (\n !getElementTree(clickedElement).find(\n (elem: HTMLElement) => elem.nodeName.toLowerCase() === \"z-input\" && elem.id === `${this.htmlid}_input`\n )\n ) {\n this.toggleSelectUl(e instanceof MouseEvent);\n }\n }\n\n private scrollToLetter(letter: string): void {\n const foundItem = this.itemsList.findIndex(\n (item: SelectItem) => item.name.toLowerCase().charAt(0) === letter.toLowerCase()\n );\n if (foundItem > -1) {\n this.focusSelectItem(this.itemIdKeyMap[this.itemsList[foundItem].id]);\n }\n }\n\n private renderInput(): HTMLZInputElement {\n return (\n <z-input\n class={{\n \"active-select\": this.isOpen,\n \"cursor-select\": !this.autocomplete,\n }}\n id={`${this.htmlid}_input`}\n htmlid={`${this.htmlid}_select_input`}\n placeholder={this.placeholder}\n value={!this.isOpen && this.selectedItem ? this.selectedItem.name.replace(/<[^>]+>/g, \"\") : null}\n label={this.label}\n autocomplete=\"off\"\n aria-label={this.ariaLabel}\n html-aria-expanded={this.isOpen ? \"true\" : \"false\"}\n html-aria-controls={`${this.htmlid}_list`}\n html-aria-autocomplete={this.hasAutocomplete() ? \"list\" : \"none\"}\n html-aria-activedescendant={this.isOpen ? this.focusedItemId : \"\"}\n icon={this.isOpen ? \"caret-up\" : \"caret-down\"}\n hasclearicon={false}\n message={false}\n name={this.name}\n disabled={this.disabled}\n readonly={this.readonly || (!this.hasAutocomplete() && this.isOpen)}\n status={this.isOpen ? undefined : this.status}\n role=\"combobox\"\n size={this.size}\n onClick={(e: MouseEvent) => {\n this.handleInputClick(e);\n }}\n onKeyUp={(e: KeyboardEvent) => {\n e.preventDefault();\n if (this.hasAutocomplete()) {\n if (!this.isOpen) {\n this.toggleSelectUl();\n }\n }\n }}\n onKeyDown={(e: KeyboardEvent) => {\n const current = this.selectedItem\n ? this.itemIdKeyMap[this.selectedItem.id]\n : this.resetItem\n ? this.resetKey\n : \"\";\n\n return this.arrowsSelectNav(e, current);\n }}\n onInputChange={(e: CustomEvent) => {\n this.handleInputChange(e);\n }}\n onKeyPress={(e: KeyboardEvent) => {\n if (!this.hasAutocomplete()) {\n e.preventDefault();\n this.scrollToLetter(e.key);\n }\n }}\n />\n );\n }\n\n private renderSelectUl(): HTMLDivElement {\n return (\n <div class={this.isOpen ? \"open\" : \"closed\"}>\n <div\n class={{\n \"ul-scroll-wrapper\": true,\n \"fixed\": this.isfixed,\n }}\n >\n <z-list\n role=\"listbox\"\n aria-label={this.ariaLabel || this.label}\n tabindex={this.disabled || this.readonly || !this.isOpen ? -1 : 0}\n id={`${this.htmlid}_list`}\n aria-multiselectable={false}\n size={this.listSizeType()}\n class={{\n \"disabled\": this.disabled,\n \"readonly\": this.readonly,\n [`input-${this.status}`]: !this.isOpen && !!this.status,\n \"z-scrollbar\": true,\n }}\n >\n {this.resetItem && this.renderResetItem()}\n {this.renderSelectUlItems()}\n </z-list>\n </div>\n </div>\n );\n }\n\n private renderResetItem(): HTMLZListElementElement {\n return (\n <z-list-element\n class={{\n \"hide\": !this.selectedItem || !this.resetItem,\n \"reset-item\": true,\n \"reset-item-margin\": !this.hasGroupItems,\n }}\n clickable={true}\n disabled={false}\n dividerType={ListDividerType.ELEMENT}\n role=\"option\"\n tabindex=\"0\"\n aria-selected=\"false\"\n id={`${this.htmlid}_key_${this.resetKey}`}\n size={this.hasTreeItems ? ListSize.MEDIUM : this.listSizeType()}\n onClickItem={() => {\n this.selectedItem = null;\n this.searchString = null;\n this.emitResetSelect();\n }}\n onKeyDown={(e: KeyboardEvent) => this.arrowsSelectNav(e, this.resetKey)}\n >\n <div\n class={{\n \"reset-item-content\": true,\n \"tree-list-reset-item\": this.hasTreeItems,\n }}\n >\n <z-icon name=\"multiply-circled\" />\n <span>{this.resetItem}</span>\n </div>\n </z-list-element>\n );\n }\n\n private renderItem(item: SelectItem, lastItem: boolean): HTMLZListElementElement {\n const thisItemKey = this.itemIdKeyMap[item.id];\n\n return (\n <z-list-element\n clickable={!item.disabled}\n disabled={item.disabled}\n dividerType={lastItem ? ListDividerType.HEADER : ListDividerType.ELEMENT}\n role=\"option\"\n tabindex={item.disabled || !this.isOpen ? -1 : 0}\n aria-selected={item.selected ? \"true\" : \"false\"}\n id={`${this.htmlid}_key_${thisItemKey}`}\n size={this.listSizeType()}\n onClickItem={() => this.selectItem(item)}\n onKeyDown={(e: KeyboardEvent) => this.arrowsSelectNav(e, thisItemKey)}\n >\n <div class=\"list-element-container\">\n <div\n class={{\n \"selected\": !!item.selected,\n \"list-element-content\": true,\n }}\n innerHTML={item.name}\n />\n {item.icon && <z-tag icon={item.icon}></z-tag>}\n </div>\n </z-list-element>\n );\n }\n\n private listSizeType(): ListSize {\n if (this.hasTreeItems) {\n return ListSize.NONE;\n }\n\n if (this.size === ControlSize.SMALL || this.size === ControlSize.X_SMALL) {\n return ListSize.SMALL;\n }\n\n return ListSize.MEDIUM;\n }\n\n private renderSelectUlItems():\n | HTMLZListElementElement\n | (HTMLZListElementElement | HTMLZListElementElement[])[]\n | HTMLZListGroupElement[] {\n if (!this.itemsList.length) {\n return this.renderNoSearchResults();\n }\n\n if (this.hasGroupItems) {\n if (this.hasTreeItems) {\n return this.renderGroupedTree();\n }\n\n return this.renderSelectGroupItems();\n }\n\n return this.itemsList.map((item: SelectItem, index, array) => {\n const isLastItem = index === array.length - 1;\n const parentHasSiblings = array.length > 1;\n\n if (this.hasTreeItems) {\n return this.renderTreeItems(item, isLastItem, parentHasSiblings, true);\n }\n\n return this.renderItem(item, isLastItem);\n });\n }\n\n private renderTreeItems(\n item: SelectItem,\n isLastChild: boolean,\n parentHasSiblings: boolean,\n isTopLevel?: boolean\n ): HTMLZListElementElement[] {\n const thisItemKey = this.itemIdKeyMap[item.id];\n\n const hasDivider = this.hasGroupItems\n ? undefined\n : this.hasGroupItems\n ? isLastChild && !parentHasSiblings\n ? ListDividerType.ELEMENT\n : undefined\n : isTopLevel && parentHasSiblings && !isLastChild\n ? ListDividerType.ELEMENT\n : undefined;\n\n return (\n <z-list-element\n clickable={!item.disabled}\n disabled={item.disabled}\n class={{\n \"grouped-tree-parent-node\": this.hasGroupItems && !!item.children?.length,\n \"tree-search-item\": this.hasGroupItems && isTopLevel && !item.children?.length && !!this.searchString,\n }}\n size={this.listSizeType()}\n dividerType={hasDivider}\n hasTreeItems={this.hasTreeItems}\n >\n <div\n id={`${this.htmlid}_key_${thisItemKey}`}\n role=\"option\"\n class=\"list-element\"\n tabIndex={!this.isOpen ? -1 : 0}\n onClick={() => this.selectItem(item)}\n onKeyDown={(e: KeyboardEvent) => {\n this.arrowsSelectNav(e, thisItemKey);\n if (e.key === KeyboardCode.ENTER) {\n this.selectItem(item);\n }\n }}\n >\n <span class=\"item ellipsis\">\n <span\n class={{\n \"item-label\": true,\n \"selected\": !!item.selected,\n }}\n title={item.name}\n innerHTML={item.selected ? `<strong>${item.name}</strong>` : item.name}\n />\n </span>\n {item.icon && <z-tag icon={item.icon}></z-tag>}\n </div>\n {item.children && item.children.length > 0 ? (\n <z-list>\n <div class=\"children-node\">\n {item.children.map((child, index, arr) =>\n this.renderTreeItems(\n child,\n index === arr.length - 1,\n arr.length > 1,\n false // isTopLevel = false for children\n )\n )}\n </div>\n </z-list>\n ) : null}\n </z-list-element>\n );\n }\n\n private renderGroupedTree(): HTMLZListGroupElement[] {\n const groupedItems = this.getGroupedItems();\n\n return groupedItems.map(([category, items], index, entries) => {\n const parentHasSiblings = Object.values(groupedItems).some((groupItems) => groupItems.length > 1);\n // const parentHasSiblings = items.length > 1;\n\n return (\n <z-list-group\n divider-type={index === entries.length - 1 ? undefined : ListDividerType.ELEMENT}\n hasTreeItems={true}\n >\n <span\n class=\"body-3-sb z-list-group-title\"\n slot=\"header-title\"\n >\n {category}\n </span>\n <z-list>\n {items.map((item, i, arr) => [\n this.renderTreeItems(item, i === arr.length - 1, parentHasSiblings, true),\n i < arr.length - 1 ? (\n <z-divider\n key={`divider-${i}`}\n style={{zIndex: \"100\", height: \"var(--border-size-small)\"}}\n />\n ) : null,\n ])}\n </z-list>\n {index !== entries.length - 1 && <z-divider style={{zIndex: \"100\", height: \"var(--border-size-small)\"}} />}\n </z-list-group>\n );\n });\n }\n\n private renderSelectGroupItems(): HTMLZListElementElement[] {\n const groupedItems = this.getGroupedItems();\n\n return groupedItems.map(([key, items], index) => {\n const isLastGroup = groupedItems.length === index + 1;\n\n return (\n <z-list-group divider-type={ListDividerType.ELEMENT}>\n <span\n class=\"body-3-sb z-list-group-title\"\n slot=\"header-title\"\n >\n {key}\n </span>\n {items.map((item, subindex) => {\n const isLastItem = items.length === subindex + 1;\n\n return this.renderItem(item, isLastGroup && isLastItem);\n })}\n </z-list-group>\n );\n });\n }\n\n private renderNoSearchResults(): HTMLZListElementElement {\n return (\n <z-list-element\n class=\"no-results\"\n size={this.hasTreeItems ? ListSize.MEDIUM : this.listSizeType()}\n >\n {this.noresultslabel}\n </z-list-element>\n );\n }\n\n private renderMessage(): HTMLZInputMessageElement {\n if (boolean(this.message) === false) {\n return;\n }\n\n return (\n <z-input-message\n message={boolean(this.message) === true ? undefined : (this.message as string)}\n status={this.status}\n class={this.size}\n disabled={this.disabled}\n />\n );\n }\n\n render(): HTMLDivElement {\n return (\n <div class=\"select-wrapper\">\n {this.renderInput()}\n {this.renderSelectUl()}\n {this.renderMessage()}\n </div>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|