@zanichelli/albe-web-components 19.2.8-RC2 → 19.2.9

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/CHANGELOG.md CHANGED
@@ -2,6 +2,23 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines.
4
4
 
5
+ ## [19.2.9](https://github.com/ZanichelliEditore/design-system/compare/v19.2.8...v19.2.9) (2026-04-29)
6
+
7
+ ## [19.2.8](https://github.com/ZanichelliEditore/design-system/compare/v19.2.7...v19.2.8) (2026-04-29)
8
+
9
+
10
+ ### Features
11
+
12
+ * **DS-985:** add searchButtonLabel prop to z-app-header and z-searchbar ([2d4406a](https://github.com/ZanichelliEditore/design-system/commit/2d4406ae8f280d322e5877b722e65e8350f9c8f3))
13
+
14
+
15
+ ### Bug Fixes
16
+
17
+ * upgrade Storybook to v9 ([ecd0023](https://github.com/ZanichelliEditore/design-system/commit/ecd00237dffb18ef9ae9430b9404e1e2acfe6ed5))
18
+ * upgrade Vite to v6 ([7c163cb](https://github.com/ZanichelliEditore/design-system/commit/7c163cbcbda9e0d593094c133abd53beef15b173))
19
+ * upgrade Vite to v7 ([931e240](https://github.com/ZanichelliEditore/design-system/commit/931e240abb28256d2eaf6f092c819e8daea96f4f))
20
+ * upgrade Vite to v8 ([25dc359](https://github.com/ZanichelliEditore/design-system/commit/25dc359601b00eb7ed1c00c307f9384c29efcd28))
21
+
5
22
  ## [19.2.7](https://github.com/ZanichelliEditore/design-system/compare/v19.2.6...v19.2.7) (2026-04-15)
6
23
 
7
24
 
@@ -69,8 +69,8 @@ const ZCombobox = class {
69
69
  return index$1.ListSize.LARGE;
70
70
  }
71
71
  }
72
- getOptionId(itemId) {
73
- return `${this.inputid}-option-${utils.encodeString(itemId || utils.randomId())}`;
72
+ getOptionId(item) {
73
+ return `${this.inputid}-option-${item.id ? utils.encodeString(`${item.id}`) : utils.encodeString(`${item.name}`)}`;
74
74
  }
75
75
  getCheckAllOptionId() {
76
76
  return `${this.inputid}-check-all`;
@@ -140,7 +140,7 @@ const ZCombobox = class {
140
140
  }
141
141
  else {
142
142
  this.itemsList = this.itemsList.map((i) => {
143
- if (optionId === this.getOptionId(i.id)) {
143
+ if (optionId === this.getOptionId(i)) {
144
144
  i.checked = !i.checked;
145
145
  }
146
146
  return i;
@@ -244,13 +244,13 @@ const ZCombobox = class {
244
244
  : undefined }, this.label, index.h("span", null, this.selectedCounter > 0 && ` (${this.selectedCounter})`)), index.h("z-icon", { name: "caret-down", class: this.size })));
245
245
  }
246
246
  renderContent() {
247
- return (index.h("div", { id: "open-combo-data", class: "open-combo-data" }, this.hassearch && this.renderSearchInput(), index.h("div", { role: "listbox", "aria-label": this.label, "aria-multiselectable": "true", id: `${this.inputid}_list`, "aria-owns": `${this.hascheckall ? `${this.getCheckAllOptionId()} ` : ``}${this.itemsList.map((item) => this.getOptionId(item.id)).join(" ")}` }, this.renderItems())));
247
+ return (index.h("div", { id: "open-combo-data", class: "open-combo-data" }, this.hassearch && this.renderSearchInput(), index.h("div", { role: "listbox", "aria-label": this.label, "aria-multiselectable": "true", id: `${this.inputid}_list`, "aria-owns": `${this.hascheckall ? `${this.getCheckAllOptionId()} ` : ``}${this.itemsList.map((item) => this.getOptionId(item)).join(" ")}` }, this.renderItems())));
248
248
  }
249
249
  renderItems() {
250
250
  return (index.h("div", { class: this.searchValue && "search", tabIndex: -1, role: "presentation" }, this.renderList(this.renderItemsList)));
251
251
  }
252
252
  renderItem(item, index$2, length) {
253
- const optionId = this.getOptionId(item.id);
253
+ const optionId = this.getOptionId(item);
254
254
  const isDisabled = !item.checked && this.hasReachedMaxSelections();
255
255
  return (index.h("z-list-element", { htmlTabindex: -1, dividerType: index$2 !== length - 1 ? index$1.ListDividerType.ELEMENT : index$1.ListDividerType.NONE, size: this.getControlToListSize(), role: "presentation", disabled: !!isDisabled }, index.h("span", { class: "option-wrap", role: "presentation", onClick: () => {
256
256
  this.focusedItemId = "";
@@ -304,7 +304,7 @@ const ZCombobox = class {
304
304
  return (index.h("z-list-element", { class: "check-all-wrapper", role: "presentation", htmlTabindex: -1, dividerType: index$1.ListDividerType.ELEMENT, dividerColor: "gray800", size: this.getControlToListSize(), disabled: !!isDisabled }, index.h("span", { class: "option-wrap", role: "presentation", onClick: () => this.checkOption(optionId) }, index.h("z-icon", { name: allChecked ? "checkbox-checked" : "checkbox", class: this.focusedItemId === optionId ? "focused" : "" }), index.h("span", { id: optionId, role: isDisabled ? "presentation" : "option", "aria-selected": allChecked ? "true" : "false" }, allChecked ? this.uncheckalltext : this.checkalltext))));
305
305
  }
306
306
  render() {
307
- return (index.h("div", { key: '9abef20bcd118d5aaf14caf7e92978df7a4ec73b', "data-action": `combo-${this.inputid}`, class: { open: this.isopen, fixed: this.isfixed, disabled: this.disabled }, id: this.inputid }, this.renderHeader(), !this.disabled && this.renderContent()));
307
+ return (index.h("div", { key: 'c5938c6fd47c302b44fb4be8be7355dafe60c37a', "data-action": `combo-${this.inputid}`, class: { open: this.isopen, fixed: this.isfixed, disabled: this.disabled }, id: this.inputid }, this.renderHeader(), !this.disabled && this.renderContent()));
308
308
  }
309
309
  get element() { return index.getElement(this); }
310
310
  static get watchers() { return {
@@ -96,7 +96,7 @@ const ZSelect = class {
96
96
  return (_a = this.selectedItem) === null || _a === void 0 ? void 0 : _a.id;
97
97
  }
98
98
  getOptionId(item) {
99
- return `${this.htmlid}_key_${utils.encodeString(item.id || utils.randomId())}`;
99
+ return `${this.htmlid}_key_${item.id ? utils.encodeString(`${item.id}`) : utils.encodeString(`${item.name}`)}`;
100
100
  }
101
101
  getResetOptionId() {
102
102
  return `${this.htmlid}_key_reset`;
@@ -474,7 +474,7 @@ const ZSelect = class {
474
474
  return (index.h("z-input-message", { message: utils.boolean(this.message) === true ? undefined : this.message, status: this.status, class: this.size, disabled: this.disabled }));
475
475
  }
476
476
  render() {
477
- return (index.h("div", { key: '3a7af215bd74e5ac48cd7f9711ab019456eb0735', class: "select-wrapper" }, this.renderInput(), this.renderSelectUl(), this.renderMessage()));
477
+ return (index.h("div", { key: '0e8ad3052e2f0fadd2f26bb30be5ec4de8935936', class: "select-wrapper" }, this.renderInput(), this.renderSelectUl(), this.renderMessage()));
478
478
  }
479
479
  get host() { return index.getElement(this); }
480
480
  static get watchers() { return {
@@ -59,8 +59,8 @@ export class ZCombobox {
59
59
  return ListSize.LARGE;
60
60
  }
61
61
  }
62
- getOptionId(itemId) {
63
- return `${this.inputid}-option-${encodeString(itemId || randomId())}`;
62
+ getOptionId(item) {
63
+ return `${this.inputid}-option-${item.id ? encodeString(`${item.id}`) : encodeString(`${item.name}`)}`;
64
64
  }
65
65
  getCheckAllOptionId() {
66
66
  return `${this.inputid}-check-all`;
@@ -130,7 +130,7 @@ export class ZCombobox {
130
130
  }
131
131
  else {
132
132
  this.itemsList = this.itemsList.map((i) => {
133
- if (optionId === this.getOptionId(i.id)) {
133
+ if (optionId === this.getOptionId(i)) {
134
134
  i.checked = !i.checked;
135
135
  }
136
136
  return i;
@@ -234,13 +234,13 @@ export class ZCombobox {
234
234
  : undefined }, this.label, h("span", null, this.selectedCounter > 0 && ` (${this.selectedCounter})`)), h("z-icon", { name: "caret-down", class: this.size })));
235
235
  }
236
236
  renderContent() {
237
- return (h("div", { id: "open-combo-data", class: "open-combo-data" }, this.hassearch && this.renderSearchInput(), h("div", { role: "listbox", "aria-label": this.label, "aria-multiselectable": "true", id: `${this.inputid}_list`, "aria-owns": `${this.hascheckall ? `${this.getCheckAllOptionId()} ` : ``}${this.itemsList.map((item) => this.getOptionId(item.id)).join(" ")}` }, this.renderItems())));
237
+ return (h("div", { id: "open-combo-data", class: "open-combo-data" }, this.hassearch && this.renderSearchInput(), h("div", { role: "listbox", "aria-label": this.label, "aria-multiselectable": "true", id: `${this.inputid}_list`, "aria-owns": `${this.hascheckall ? `${this.getCheckAllOptionId()} ` : ``}${this.itemsList.map((item) => this.getOptionId(item)).join(" ")}` }, this.renderItems())));
238
238
  }
239
239
  renderItems() {
240
240
  return (h("div", { class: this.searchValue && "search", tabIndex: -1, role: "presentation" }, this.renderList(this.renderItemsList)));
241
241
  }
242
242
  renderItem(item, index, length) {
243
- const optionId = this.getOptionId(item.id);
243
+ const optionId = this.getOptionId(item);
244
244
  const isDisabled = !item.checked && this.hasReachedMaxSelections();
245
245
  return (h("z-list-element", { htmlTabindex: -1, dividerType: index !== length - 1 ? ListDividerType.ELEMENT : ListDividerType.NONE, size: this.getControlToListSize(), role: "presentation", disabled: !!isDisabled }, h("span", { class: "option-wrap", role: "presentation", onClick: () => {
246
246
  this.focusedItemId = "";
@@ -294,7 +294,7 @@ export class ZCombobox {
294
294
  return (h("z-list-element", { class: "check-all-wrapper", role: "presentation", htmlTabindex: -1, dividerType: ListDividerType.ELEMENT, dividerColor: "gray800", size: this.getControlToListSize(), disabled: !!isDisabled }, h("span", { class: "option-wrap", role: "presentation", onClick: () => this.checkOption(optionId) }, h("z-icon", { name: allChecked ? "checkbox-checked" : "checkbox", class: this.focusedItemId === optionId ? "focused" : "" }), h("span", { id: optionId, role: isDisabled ? "presentation" : "option", "aria-selected": allChecked ? "true" : "false" }, allChecked ? this.uncheckalltext : this.checkalltext))));
295
295
  }
296
296
  render() {
297
- return (h("div", { key: '9abef20bcd118d5aaf14caf7e92978df7a4ec73b', "data-action": `combo-${this.inputid}`, class: { open: this.isopen, fixed: this.isfixed, disabled: this.disabled }, id: this.inputid }, this.renderHeader(), !this.disabled && this.renderContent()));
297
+ return (h("div", { key: 'c5938c6fd47c302b44fb4be8be7355dafe60c37a', "data-action": `combo-${this.inputid}`, class: { open: this.isopen, fixed: this.isfixed, disabled: this.disabled }, id: this.inputid }, this.renderHeader(), !this.disabled && this.renderContent()));
298
298
  }
299
299
  static get is() { return "z-combobox"; }
300
300
  static get encapsulation() { return "shadow"; }
@@ -87,7 +87,7 @@ export class ZSelect {
87
87
  return (_a = this.selectedItem) === null || _a === void 0 ? void 0 : _a.id;
88
88
  }
89
89
  getOptionId(item) {
90
- return `${this.htmlid}_key_${encodeString(item.id || randomId())}`;
90
+ return `${this.htmlid}_key_${item.id ? encodeString(`${item.id}`) : encodeString(`${item.name}`)}`;
91
91
  }
92
92
  getResetOptionId() {
93
93
  return `${this.htmlid}_key_reset`;
@@ -465,7 +465,7 @@ export class ZSelect {
465
465
  return (h("z-input-message", { message: boolean(this.message) === true ? undefined : this.message, status: this.status, class: this.size, disabled: this.disabled }));
466
466
  }
467
467
  render() {
468
- return (h("div", { key: '3a7af215bd74e5ac48cd7f9711ab019456eb0735', class: "select-wrapper" }, this.renderInput(), this.renderSelectUl(), this.renderMessage()));
468
+ return (h("div", { key: '0e8ad3052e2f0fadd2f26bb30be5ec4de8935936', class: "select-wrapper" }, this.renderInput(), this.renderSelectUl(), this.renderMessage()));
469
469
  }
470
470
  static get is() { return "z-select"; }
471
471
  static get encapsulation() { return "scoped"; }
@@ -1 +1 @@
1
- import{proxyCustomElement as e,HTMLElement as t,createEvent as i,h as s,transformTag as o}from"@stencil/core/internal/client";import{e as a,I as r,i as n,g as l,l as c}from"./index2.js";import{r as h,e as d,b as p}from"./utils.js";import{d as m}from"./index6.js";import{d as u}from"./index3.js";import{d as b}from"./index7.js";import{d as v}from"./index8.js";import{d as f}from"./index10.js";import{d as g}from"./index11.js";const x=e(class extends t{watchItems(){this.itemsList="string"==typeof this.items?JSON.parse(this.items):this.items,this.selectedCounter=this.itemsList.filter((e=>e.checked)).length,this.updateRenderItemsList()}watchSearchValue(){this.filterItems(this.searchValue)}emitComboboxChange(){this.comboboxChange.emit({id:this.inputid,items:this.itemsList})}constructor(e){super(),!1!==e&&this.__registerHost(),this.__attachShadow(),this.comboboxChange=i(this,"comboboxChange",7),this.inputid="combo-"+h(),this.disabled=!1,this.hassearch=!1,this.noresultslabel="Nessun risultato",this.isopen=!1,this.isfixed=!1,this.hascheckall=!1,this.checkalltext="Seleziona tutti",this.uncheckalltext="Deseleziona tutti",this.maxcheckableitems=0,this.size=a.BIG,this.renderItemsList=[],this.focusedItemId="",this.itemsList=[],this.inputType=r.TEXT,this.toggleComboBox=this.toggleComboBox.bind(this),this.closeFilterItems=this.closeFilterItems.bind(this)}componentWillLoad(){this.watchItems()}componentWillRender(){this.selectedCounter=this.itemsList.filter((e=>e.checked)).length}getControlToListSize(){switch(this.size){case a.X_SMALL:return n.SMALL;case a.SMALL:return n.MEDIUM;default:return n.LARGE}}getOptionId(e){return`${this.inputid}-option-${d(e||h())}`}getCheckAllOptionId(){return this.inputid+"-check-all"}allOptionsSelected(){return this.selectedCounter===this.itemsList.length}hasReachedMaxSelections(){return!!(this.maxcheckableitems&&this.selectedCounter>=this.maxcheckableitems)}handleHeaderKeyDown(e){if(e.code!==l.ENTER||this.focusedItemId||this.toggleComboBox(),this.isopen&&!this.hassearch)switch(e.code){case l.SPACE:case l.ENTER:this.focusedItemId&&(e.preventDefault(),this.checkOption(this.focusedItemId));break;case l.ESC:this.focusedItemId&&(this.focusedItemId="");break;case l.ARROW_DOWN:case l.ARROW_UP:this.handleArrowsNavigation(e)}}handleInputKeyDown(e){switch(e.code){case l.ENTER:case l.SPACE:if(this.focusedItemId){e.preventDefault(),this.checkOption(this.focusedItemId);break}break;case l.ARROW_DOWN:case l.ARROW_UP:this.handleArrowsNavigation(e);break;case l.ESC:if(this.focusedItemId){this.focusedItemId="";break}this.closeFilterItems();break;case l.TAB:this.focusedItemId=""}}checkOption(e){e===this.getCheckAllOptionId()?(this.itemsList=this.itemsList.map((e=>Object.assign(Object.assign({},e),{checked:!this.allOptionsSelected()}))),this.focusedItemId=this.getCheckAllOptionId()):this.itemsList=this.itemsList.map((t=>(e===this.getOptionId(t.id)&&(t.checked=!t.checked),t))),this.updateRenderItemsList(),this.emitComboboxChange()}handleArrowsNavigation(e){if(![l.ARROW_DOWN,l.ARROW_UP].includes(e.code)||!this.isopen)return;e.preventDefault(),e.stopPropagation();const t=this.focusedItemId?this.element.shadowRoot.querySelector("#"+this.focusedItemId):null,i=Array.from(this.element.shadowRoot.querySelectorAll('[role="option"]'));if(!i.length)return;const s=t?i.indexOf(t):null,o=i.length-1;let a=null;e.code===l.ARROW_DOWN?a=null===s?i[0]:i[s+1]||i[o]:e.code===l.ARROW_UP&&(a=null===s?i[o]:i[s-1]||i[0]),this.focusedItemId=a.id,a.scrollIntoView({block:"nearest",container:"nearest"})}updateRenderItemsList(){this.searchValue?this.filterItems(this.searchValue):this.resetRenderItemsList()}resetRenderItemsList(){const e=[];this.itemsList.forEach((t=>{e.push(Object.assign({},t))})),this.renderItemsList=e}filterItems(e){if(!e)return this.closeFilterItems();this.resetRenderItemsList(),this.renderItemsList=this.renderItemsList.filter((t=>{const i=t.name.toUpperCase().indexOf(e.toUpperCase()),s=i+e.length,o=t.name.substring(0,i)+"<strong>"+t.name.substring(i,s)+"</strong>"+t.name.substring(s,t.name.length);return t.name=o,i>=0}))}closeFilterItems(){this.searchValue="",this.resetRenderItemsList()}toggleComboBox(){this.isopen=!this.isopen}getComboboxA11yAttributes(e){const t="combobox",i=this.htmlAriaLabel,s=this.isopen?"true":"false",o=this.isopen?this.focusedItemId:"",a=this.inputid+"_list";return e?{role:t,"aria-label":i,"html-aria-expanded":s,"html-aria-activedescendant":o,"html-aria-controls":a}:{role:t,"aria-label":i,"aria-expanded":s,"aria-activedescendant":o,"aria-controls":a}}renderHeader(){const e=this.hassearch?{}:this.getComboboxA11yAttributes(!1);return s("div",Object.assign({class:"header",onClick:()=>this.toggleComboBox(),onKeyDown:e=>this.handleHeaderKeyDown(e),role:"button",tabindex:0,"aria-controls":"open-combo-data","aria-expanded":this.isopen?"true":"false"},e),s("span",{class:"body-3","aria-label":this.label?`${this.label}${this.selectedCounter>0?` - ${this.selectedCounter} selezionati`:""}`:void 0},this.label,s("span",null,this.selectedCounter>0&&` (${this.selectedCounter})`)),s("z-icon",{name:"caret-down",class:this.size}))}renderContent(){return s("div",{id:"open-combo-data",class:"open-combo-data"},this.hassearch&&this.renderSearchInput(),s("div",{role:"listbox","aria-label":this.label,"aria-multiselectable":"true",id:this.inputid+"_list","aria-owns":`${this.hascheckall?this.getCheckAllOptionId()+" ":""}${this.itemsList.map((e=>this.getOptionId(e.id))).join(" ")}`},this.renderItems()))}renderItems(){return s("div",{class:this.searchValue&&"search",tabIndex:-1,role:"presentation"},this.renderList(this.renderItemsList))}renderItem(e,t,i){const o=this.getOptionId(e.id),a=!e.checked&&this.hasReachedMaxSelections();return s("z-list-element",{htmlTabindex:-1,dividerType:t!==i-1?c.ELEMENT:c.NONE,size:this.getControlToListSize(),role:"presentation",disabled:!!a},s("span",{class:"option-wrap",role:"presentation",onClick:()=>{this.focusedItemId="",this.checkOption(o)}},s("z-icon",{name:e.checked?"checkbox-checked":"checkbox",class:this.focusedItemId===o?"focused":""}),s("span",{id:o,role:a?"presentation":"option","aria-selected":e.checked?"true":"false","aria-label":a?void 0:p(e.name)},s("span",{"aria-hidden":"true",innerHTML:e.name}))))}renderList(e){if(e)return!e.length&&this.searchValue?this.renderNoSearchResults():this.hasgroupitems?this.renderGroups(e):s("ul",{role:"presentation"},this.renderCheckAll(),e.map(((t,i)=>this.renderItem(t,i,e.length))))}renderGroups(e){const t=e.reduce(((t,i,s)=>{var o;const a=i.category||"Altra categoria",r=this.renderItem(i,s,e.length);return t[a]=null!==(o=t[a])&&void 0!==o?o:[],t[a].push(r),t}),{}),i=Object.entries(t).map((([e,t],i)=>s("z-list-group",{size:this.getControlToListSize(),"divider-type":c.ELEMENT,"aria-labelledby":`${this.inputid}_list_group_${i}`},s("span",{class:"body-3-sb z-list-group-title",slot:"header-title",id:`${this.inputid}_list_group_${i}`,"aria-hidden":"true"},e),t.map((e=>e)))));return s("ul",{role:"presentation"},this.renderCheckAll(),i)}renderNoSearchResults(){return s("div",{class:"no-results"},s("span",null,this.noresultslabel))}renderSearchInput(){return s("z-input",Object.assign({htmlid:this.inputid+"_search",label:this.searchlabel,placeholder:this.searchplaceholder,htmltitle:this.searchtitle,type:this.inputType,value:this.searchValue,message:!1,size:this.size,"html-aria-autocomplete":"list"},this.getComboboxA11yAttributes(!0),{onKeyDown:e=>this.handleInputKeyDown(e),onInputChange:e=>{this.searchValue=e.detail.value,this.focusedItemId=""}}))}renderCheckAll(){if(!this.hascheckall||this.searchValue)return;const e=this.getCheckAllOptionId(),t=this.allOptionsSelected(),i=this.hasReachedMaxSelections()||this.maxcheckableitems&&this.maxcheckableitems<this.itemsList.length;return s("z-list-element",{class:"check-all-wrapper",role:"presentation",htmlTabindex:-1,dividerType:c.ELEMENT,dividerColor:"gray800",size:this.getControlToListSize(),disabled:!!i},s("span",{class:"option-wrap",role:"presentation",onClick:()=>this.checkOption(e)},s("z-icon",{name:t?"checkbox-checked":"checkbox",class:this.focusedItemId===e?"focused":""}),s("span",{id:e,role:i?"presentation":"option","aria-selected":t?"true":"false"},t?this.uncheckalltext:this.checkalltext)))}render(){return s("div",{key:"9abef20bcd118d5aaf14caf7e92978df7a4ec73b","data-action":"combo-"+this.inputid,class:{open:this.isopen,fixed:this.isfixed,disabled:this.disabled},id:this.inputid},this.renderHeader(),!this.disabled&&this.renderContent())}get element(){return this}static get watchers(){return{items:[{watchItems:0}],searchValue:[{watchSearchValue:0}]}}static get style(){return'.z-label{display:block;padding-bottom:var(--space-unit);color:var(--color-default-text);font-family:var(--font-family-sans);font-size:var(--font-size-1);font-weight:var(--font-sb);text-align:left;text-transform:uppercase}:host{display:block;min-width:290px;color:var(--color-form-default-text);fill:var(--color-form-default-icon);font-family:var(--font-family-sans)}:host>div.fixed{position:relative}:host>div>.header{position:relative;z-index:10;display:flex;min-height:42px;align-items:center;justify-content:space-between;padding:0 calc(var(--space-unit) * 1.5);border:var(--border-size-small) solid var(--color-form-surface04);margin:0;background-color:var(--color-form-background);border-radius:var(--border-radius-small);cursor:pointer}:host([size="small"])>div>.header{min-height:34px;font-size:var(--font-size-2)}:host([size="x-small"])>div>.header{min-height:30px;font-size:var(--font-size-2)}:host>div>.header:hover{outline:var(--border-size-medium) solid var(--color-form-surface04);outline-offset:-2px}:host>div>div.header:focus:focus-visible{z-index:16;box-shadow:var(--shadow-focus-primary);outline:none}:host>div>.header>span.body-3>span{font-weight:var(--font-sb)}:host>div>.header>z-icon{fill:var(--color-form-default-icon);transform:rotate(360deg);transition:all 200ms linear}:host>div>.header>z-icon.small,:host>div>.header>z-icon.x-small{--z-icon-width:16px;--z-icon-height:16px}:host>div.open>.header{border:var(--border-size-small) solid var(--color-form-active-primary);border-radius:var(--border-radius-small) var(--border-radius-small) 0 0}:host>div.disabled{pointer-events:none}:host>div.disabled .header{border-color:var(--color-form-disabled03);fill:var(--color-form-disabled01-icon)}:host>div.disabled .header>span.body-3{color:var(--color-form-disabled03)}:host>div.disabled .header>z-icon:last-child{fill:var(--color-form-disabled01-icon)}:host>div.open>.header>z-icon{fill:var(--color-form-default-icon);transform:rotate(180deg);transition:all 200ms linear}:host>div>div.open-combo-data{display:none}:host>div.open>div.open-combo-data{position:relative;z-index:12;display:block;padding:var(--space-unit) calc(var(--space-unit) * 2);border:var(--border-size-small) solid var(--color-form-surface03);border-top:0;background-color:var(--color-form-background);border-radius:0;box-shadow:var(--shadow-2)}:host .open .open-combo-data z-input .z-label{color:var(--color-form-default-text)}:host>div.open>div.open-combo-data>div>div{overflow:auto;max-height:235px;padding:0;padding-left:var(--space-unit);margin-left:calc(var(--space-unit) * -1);}:host>div.open>div.open-combo-data>z-input{width:100%;margin-bottom:calc(var(--space-unit) * 2)}:host>div.open>div.open-combo-data>div>div>ul{max-height:235px;padding:0 calc(var(--space-unit) * 0.5);margin:0}:host .open-combo-data z-list-element{--background-color-list-element:var(--color-form-background);--background-hover-color-list-element:var(--color-form-surface03);--background-active-color-list-element:var(--color-form-surface03)}:host .open-combo-data z-list-element[disabled]{pointer-events:none}:host .open-combo-data z-list-element .option-wrap{display:flex;flex-direction:row;align-items:center;cursor:pointer;gap:var(--space-unit)}:host .open-combo-data z-list-element[size="medium"] .option-wrap,:host .open-combo-data z-list-element[size="small"] .option-wrap{--z-icon-width:16px;--z-icon-height:16px;font-size:var(--font-size-2);gap:calc(var(--space-unit) / 2)}:host .open-combo-data z-list-element .option-wrap>z-icon{fill:var(--color-primary01)}:host .open-combo-data z-list-element[disabled] .option-wrap>z-icon{fill:var(--color-disabled01)}:host .open-combo-data z-list-element .option-wrap>z-icon.focused{border-radius:var(--border-radius-small);box-shadow:var(--shadow-focus-primary);outline:none}:host .open-combo-data z-list-element .option-wrap>[role="option"]:focus,:host .open-combo-data z-list-element .option-wrap>[role="option"]:focus-visible{outline:none}::-webkit-scrollbar{width:6px;background:linear-gradient(to right, transparent 0 1px, var(--gray200) 1px 5px, transparent 5px 6px)}::-webkit-scrollbar-thumb{background-color:var(--color-primary01)}::-webkit-scrollbar-thumb:hover{background-color:var(--color-hover-primary)}@supports not selector(::-webkit-scrollbar-track){:host{scrollbar-color:var(--color-primary01) transparent}}:host>div.open>z-input{position:relative;z-index:1;width:238px;margin:0 calc(var(--space-unit) * 2);color:var(--color-form-active-primary)}:host>div.open>div.open-combo-data>div>div.search{overflow:hidden;max-height:none;margin-top:0}:host>div.open>div.open-combo-data>div>div.search>ul{overflow:auto;max-height:180px;padding:var(--space-unit) calc(var(--space-unit) * 2)}:host .open .open-combo-data .search .no-results{display:flex;align-items:center;column-gap:var(--space-unit)}:host>.open>.open-combo-data .search .close-search{display:flex;justify-content:center}:host>div.open>div.open-combo-data>div>div.search .close-search>a{display:inline-block;height:44px;color:var(--color-form-active-primary);cursor:pointer;font-size:14px;font-weight:var(--font-sb);line-height:44px;text-align:center;text-transform:uppercase}:host>div.open>div.open-combo-data>div>div.search .close-search>a:focus:focus-visible{box-shadow:var(--shadow-focus-primary);outline:none}:host>div.open>div.open-combo-data>div>div.check-all-wrapper{padding:calc(var(--space-unit) * 2) calc(var(--space-unit) * 0.5) calc(var(--space-unit) * 2) calc(var(--space-unit) * 1.5);border-bottom:var(--border-size-small) solid var(--gray800);margin-bottom:var(--space-unit);margin-left:calc(var(--space-unit) * -1);text-align:left}:host([size="small"])>div.open>div.open-combo-data>div>div.check-all-wrapper{padding:calc(var(--space-unit) * 1.5) calc(var(--space-unit) * 0.5)}:host([size="x-small"])>div.open>div.open-combo-data>div>div.check-all-wrapper{padding:var(--space-unit) calc(var(--space-unit) * 0.5)}'}},[1,"z-combobox",{inputid:[1],items:[1],label:[1],disabled:[516],hassearch:[4],searchlabel:[1],searchplaceholder:[1],searchtitle:[1],noresultslabel:[1],isopen:[1028],isfixed:[4],hascheckall:[4],checkalltext:[1],uncheckalltext:[1],maxcheckableitems:[2],hasgroupitems:[4],size:[1],htmlAriaLabel:[1,"html-aria-label"],searchValue:[32],selectedCounter:[32],renderItemsList:[32],focusedItemId:[32]},void 0,{items:[{watchItems:0}],searchValue:[{watchSearchValue:0}]}]),z=x,w=function(){"undefined"!=typeof customElements&&["z-combobox","z-divider","z-icon","z-input","z-input-message","z-list-element","z-list-group"].forEach((e=>{switch(e){case"z-combobox":customElements.get(o(e))||customElements.define(o(e),x);break;case"z-divider":customElements.get(o(e))||m();break;case"z-icon":customElements.get(o(e))||u();break;case"z-input":customElements.get(o(e))||b();break;case"z-input-message":customElements.get(o(e))||v();break;case"z-list-element":customElements.get(o(e))||f();break;case"z-list-group":customElements.get(o(e))||g()}}))};export{z as ZCombobox,w as defineCustomElement}
1
+ import{proxyCustomElement as e,HTMLElement as t,createEvent as i,h as s,transformTag as o}from"@stencil/core/internal/client";import{e as a,I as r,i as n,g as l,l as c}from"./index2.js";import{r as h,e as d,b as p}from"./utils.js";import{d as m}from"./index6.js";import{d as u}from"./index3.js";import{d as b}from"./index7.js";import{d as v}from"./index8.js";import{d as f}from"./index10.js";import{d as g}from"./index11.js";const x=e(class extends t{watchItems(){this.itemsList="string"==typeof this.items?JSON.parse(this.items):this.items,this.selectedCounter=this.itemsList.filter((e=>e.checked)).length,this.updateRenderItemsList()}watchSearchValue(){this.filterItems(this.searchValue)}emitComboboxChange(){this.comboboxChange.emit({id:this.inputid,items:this.itemsList})}constructor(e){super(),!1!==e&&this.__registerHost(),this.__attachShadow(),this.comboboxChange=i(this,"comboboxChange",7),this.inputid="combo-"+h(),this.disabled=!1,this.hassearch=!1,this.noresultslabel="Nessun risultato",this.isopen=!1,this.isfixed=!1,this.hascheckall=!1,this.checkalltext="Seleziona tutti",this.uncheckalltext="Deseleziona tutti",this.maxcheckableitems=0,this.size=a.BIG,this.renderItemsList=[],this.focusedItemId="",this.itemsList=[],this.inputType=r.TEXT,this.toggleComboBox=this.toggleComboBox.bind(this),this.closeFilterItems=this.closeFilterItems.bind(this)}componentWillLoad(){this.watchItems()}componentWillRender(){this.selectedCounter=this.itemsList.filter((e=>e.checked)).length}getControlToListSize(){switch(this.size){case a.X_SMALL:return n.SMALL;case a.SMALL:return n.MEDIUM;default:return n.LARGE}}getOptionId(e){return`${this.inputid}-option-${d(e.id?""+e.id:""+e.name)}`}getCheckAllOptionId(){return this.inputid+"-check-all"}allOptionsSelected(){return this.selectedCounter===this.itemsList.length}hasReachedMaxSelections(){return!!(this.maxcheckableitems&&this.selectedCounter>=this.maxcheckableitems)}handleHeaderKeyDown(e){if(e.code!==l.ENTER||this.focusedItemId||this.toggleComboBox(),this.isopen&&!this.hassearch)switch(e.code){case l.SPACE:case l.ENTER:this.focusedItemId&&(e.preventDefault(),this.checkOption(this.focusedItemId));break;case l.ESC:this.focusedItemId&&(this.focusedItemId="");break;case l.ARROW_DOWN:case l.ARROW_UP:this.handleArrowsNavigation(e)}}handleInputKeyDown(e){switch(e.code){case l.ENTER:case l.SPACE:if(this.focusedItemId){e.preventDefault(),this.checkOption(this.focusedItemId);break}break;case l.ARROW_DOWN:case l.ARROW_UP:this.handleArrowsNavigation(e);break;case l.ESC:if(this.focusedItemId){this.focusedItemId="";break}this.closeFilterItems();break;case l.TAB:this.focusedItemId=""}}checkOption(e){e===this.getCheckAllOptionId()?(this.itemsList=this.itemsList.map((e=>Object.assign(Object.assign({},e),{checked:!this.allOptionsSelected()}))),this.focusedItemId=this.getCheckAllOptionId()):this.itemsList=this.itemsList.map((t=>(e===this.getOptionId(t)&&(t.checked=!t.checked),t))),this.updateRenderItemsList(),this.emitComboboxChange()}handleArrowsNavigation(e){if(![l.ARROW_DOWN,l.ARROW_UP].includes(e.code)||!this.isopen)return;e.preventDefault(),e.stopPropagation();const t=this.focusedItemId?this.element.shadowRoot.querySelector("#"+this.focusedItemId):null,i=Array.from(this.element.shadowRoot.querySelectorAll('[role="option"]'));if(!i.length)return;const s=t?i.indexOf(t):null,o=i.length-1;let a=null;e.code===l.ARROW_DOWN?a=null===s?i[0]:i[s+1]||i[o]:e.code===l.ARROW_UP&&(a=null===s?i[o]:i[s-1]||i[0]),this.focusedItemId=a.id,a.scrollIntoView({block:"nearest",container:"nearest"})}updateRenderItemsList(){this.searchValue?this.filterItems(this.searchValue):this.resetRenderItemsList()}resetRenderItemsList(){const e=[];this.itemsList.forEach((t=>{e.push(Object.assign({},t))})),this.renderItemsList=e}filterItems(e){if(!e)return this.closeFilterItems();this.resetRenderItemsList(),this.renderItemsList=this.renderItemsList.filter((t=>{const i=t.name.toUpperCase().indexOf(e.toUpperCase()),s=i+e.length,o=t.name.substring(0,i)+"<strong>"+t.name.substring(i,s)+"</strong>"+t.name.substring(s,t.name.length);return t.name=o,i>=0}))}closeFilterItems(){this.searchValue="",this.resetRenderItemsList()}toggleComboBox(){this.isopen=!this.isopen}getComboboxA11yAttributes(e){const t="combobox",i=this.htmlAriaLabel,s=this.isopen?"true":"false",o=this.isopen?this.focusedItemId:"",a=this.inputid+"_list";return e?{role:t,"aria-label":i,"html-aria-expanded":s,"html-aria-activedescendant":o,"html-aria-controls":a}:{role:t,"aria-label":i,"aria-expanded":s,"aria-activedescendant":o,"aria-controls":a}}renderHeader(){const e=this.hassearch?{}:this.getComboboxA11yAttributes(!1);return s("div",Object.assign({class:"header",onClick:()=>this.toggleComboBox(),onKeyDown:e=>this.handleHeaderKeyDown(e),role:"button",tabindex:0,"aria-controls":"open-combo-data","aria-expanded":this.isopen?"true":"false"},e),s("span",{class:"body-3","aria-label":this.label?`${this.label}${this.selectedCounter>0?` - ${this.selectedCounter} selezionati`:""}`:void 0},this.label,s("span",null,this.selectedCounter>0&&` (${this.selectedCounter})`)),s("z-icon",{name:"caret-down",class:this.size}))}renderContent(){return s("div",{id:"open-combo-data",class:"open-combo-data"},this.hassearch&&this.renderSearchInput(),s("div",{role:"listbox","aria-label":this.label,"aria-multiselectable":"true",id:this.inputid+"_list","aria-owns":`${this.hascheckall?this.getCheckAllOptionId()+" ":""}${this.itemsList.map((e=>this.getOptionId(e))).join(" ")}`},this.renderItems()))}renderItems(){return s("div",{class:this.searchValue&&"search",tabIndex:-1,role:"presentation"},this.renderList(this.renderItemsList))}renderItem(e,t,i){const o=this.getOptionId(e),a=!e.checked&&this.hasReachedMaxSelections();return s("z-list-element",{htmlTabindex:-1,dividerType:t!==i-1?c.ELEMENT:c.NONE,size:this.getControlToListSize(),role:"presentation",disabled:!!a},s("span",{class:"option-wrap",role:"presentation",onClick:()=>{this.focusedItemId="",this.checkOption(o)}},s("z-icon",{name:e.checked?"checkbox-checked":"checkbox",class:this.focusedItemId===o?"focused":""}),s("span",{id:o,role:a?"presentation":"option","aria-selected":e.checked?"true":"false","aria-label":a?void 0:p(e.name)},s("span",{"aria-hidden":"true",innerHTML:e.name}))))}renderList(e){if(e)return!e.length&&this.searchValue?this.renderNoSearchResults():this.hasgroupitems?this.renderGroups(e):s("ul",{role:"presentation"},this.renderCheckAll(),e.map(((t,i)=>this.renderItem(t,i,e.length))))}renderGroups(e){const t=e.reduce(((t,i,s)=>{var o;const a=i.category||"Altra categoria",r=this.renderItem(i,s,e.length);return t[a]=null!==(o=t[a])&&void 0!==o?o:[],t[a].push(r),t}),{}),i=Object.entries(t).map((([e,t],i)=>s("z-list-group",{size:this.getControlToListSize(),"divider-type":c.ELEMENT,"aria-labelledby":`${this.inputid}_list_group_${i}`},s("span",{class:"body-3-sb z-list-group-title",slot:"header-title",id:`${this.inputid}_list_group_${i}`,"aria-hidden":"true"},e),t.map((e=>e)))));return s("ul",{role:"presentation"},this.renderCheckAll(),i)}renderNoSearchResults(){return s("div",{class:"no-results"},s("span",null,this.noresultslabel))}renderSearchInput(){return s("z-input",Object.assign({htmlid:this.inputid+"_search",label:this.searchlabel,placeholder:this.searchplaceholder,htmltitle:this.searchtitle,type:this.inputType,value:this.searchValue,message:!1,size:this.size,"html-aria-autocomplete":"list"},this.getComboboxA11yAttributes(!0),{onKeyDown:e=>this.handleInputKeyDown(e),onInputChange:e=>{this.searchValue=e.detail.value,this.focusedItemId=""}}))}renderCheckAll(){if(!this.hascheckall||this.searchValue)return;const e=this.getCheckAllOptionId(),t=this.allOptionsSelected(),i=this.hasReachedMaxSelections()||this.maxcheckableitems&&this.maxcheckableitems<this.itemsList.length;return s("z-list-element",{class:"check-all-wrapper",role:"presentation",htmlTabindex:-1,dividerType:c.ELEMENT,dividerColor:"gray800",size:this.getControlToListSize(),disabled:!!i},s("span",{class:"option-wrap",role:"presentation",onClick:()=>this.checkOption(e)},s("z-icon",{name:t?"checkbox-checked":"checkbox",class:this.focusedItemId===e?"focused":""}),s("span",{id:e,role:i?"presentation":"option","aria-selected":t?"true":"false"},t?this.uncheckalltext:this.checkalltext)))}render(){return s("div",{key:"c5938c6fd47c302b44fb4be8be7355dafe60c37a","data-action":"combo-"+this.inputid,class:{open:this.isopen,fixed:this.isfixed,disabled:this.disabled},id:this.inputid},this.renderHeader(),!this.disabled&&this.renderContent())}get element(){return this}static get watchers(){return{items:[{watchItems:0}],searchValue:[{watchSearchValue:0}]}}static get style(){return'.z-label{display:block;padding-bottom:var(--space-unit);color:var(--color-default-text);font-family:var(--font-family-sans);font-size:var(--font-size-1);font-weight:var(--font-sb);text-align:left;text-transform:uppercase}:host{display:block;min-width:290px;color:var(--color-form-default-text);fill:var(--color-form-default-icon);font-family:var(--font-family-sans)}:host>div.fixed{position:relative}:host>div>.header{position:relative;z-index:10;display:flex;min-height:42px;align-items:center;justify-content:space-between;padding:0 calc(var(--space-unit) * 1.5);border:var(--border-size-small) solid var(--color-form-surface04);margin:0;background-color:var(--color-form-background);border-radius:var(--border-radius-small);cursor:pointer}:host([size="small"])>div>.header{min-height:34px;font-size:var(--font-size-2)}:host([size="x-small"])>div>.header{min-height:30px;font-size:var(--font-size-2)}:host>div>.header:hover{outline:var(--border-size-medium) solid var(--color-form-surface04);outline-offset:-2px}:host>div>div.header:focus:focus-visible{z-index:16;box-shadow:var(--shadow-focus-primary);outline:none}:host>div>.header>span.body-3>span{font-weight:var(--font-sb)}:host>div>.header>z-icon{fill:var(--color-form-default-icon);transform:rotate(360deg);transition:all 200ms linear}:host>div>.header>z-icon.small,:host>div>.header>z-icon.x-small{--z-icon-width:16px;--z-icon-height:16px}:host>div.open>.header{border:var(--border-size-small) solid var(--color-form-active-primary);border-radius:var(--border-radius-small) var(--border-radius-small) 0 0}:host>div.disabled{pointer-events:none}:host>div.disabled .header{border-color:var(--color-form-disabled03);fill:var(--color-form-disabled01-icon)}:host>div.disabled .header>span.body-3{color:var(--color-form-disabled03)}:host>div.disabled .header>z-icon:last-child{fill:var(--color-form-disabled01-icon)}:host>div.open>.header>z-icon{fill:var(--color-form-default-icon);transform:rotate(180deg);transition:all 200ms linear}:host>div>div.open-combo-data{display:none}:host>div.open>div.open-combo-data{position:relative;z-index:12;display:block;padding:var(--space-unit) calc(var(--space-unit) * 2);border:var(--border-size-small) solid var(--color-form-surface03);border-top:0;background-color:var(--color-form-background);border-radius:0;box-shadow:var(--shadow-2)}:host .open .open-combo-data z-input .z-label{color:var(--color-form-default-text)}:host>div.open>div.open-combo-data>div>div{overflow:auto;max-height:235px;padding:0;padding-left:var(--space-unit);margin-left:calc(var(--space-unit) * -1);}:host>div.open>div.open-combo-data>z-input{width:100%;margin-bottom:calc(var(--space-unit) * 2)}:host>div.open>div.open-combo-data>div>div>ul{max-height:235px;padding:0 calc(var(--space-unit) * 0.5);margin:0}:host .open-combo-data z-list-element{--background-color-list-element:var(--color-form-background);--background-hover-color-list-element:var(--color-form-surface03);--background-active-color-list-element:var(--color-form-surface03)}:host .open-combo-data z-list-element[disabled]{pointer-events:none}:host .open-combo-data z-list-element .option-wrap{display:flex;flex-direction:row;align-items:center;cursor:pointer;gap:var(--space-unit)}:host .open-combo-data z-list-element[size="medium"] .option-wrap,:host .open-combo-data z-list-element[size="small"] .option-wrap{--z-icon-width:16px;--z-icon-height:16px;font-size:var(--font-size-2);gap:calc(var(--space-unit) / 2)}:host .open-combo-data z-list-element .option-wrap>z-icon{fill:var(--color-primary01)}:host .open-combo-data z-list-element[disabled] .option-wrap>z-icon{fill:var(--color-disabled01)}:host .open-combo-data z-list-element .option-wrap>z-icon.focused{border-radius:var(--border-radius-small);box-shadow:var(--shadow-focus-primary);outline:none}:host .open-combo-data z-list-element .option-wrap>[role="option"]:focus,:host .open-combo-data z-list-element .option-wrap>[role="option"]:focus-visible{outline:none}::-webkit-scrollbar{width:6px;background:linear-gradient(to right, transparent 0 1px, var(--gray200) 1px 5px, transparent 5px 6px)}::-webkit-scrollbar-thumb{background-color:var(--color-primary01)}::-webkit-scrollbar-thumb:hover{background-color:var(--color-hover-primary)}@supports not selector(::-webkit-scrollbar-track){:host{scrollbar-color:var(--color-primary01) transparent}}:host>div.open>z-input{position:relative;z-index:1;width:238px;margin:0 calc(var(--space-unit) * 2);color:var(--color-form-active-primary)}:host>div.open>div.open-combo-data>div>div.search{overflow:hidden;max-height:none;margin-top:0}:host>div.open>div.open-combo-data>div>div.search>ul{overflow:auto;max-height:180px;padding:var(--space-unit) calc(var(--space-unit) * 2)}:host .open .open-combo-data .search .no-results{display:flex;align-items:center;column-gap:var(--space-unit)}:host>.open>.open-combo-data .search .close-search{display:flex;justify-content:center}:host>div.open>div.open-combo-data>div>div.search .close-search>a{display:inline-block;height:44px;color:var(--color-form-active-primary);cursor:pointer;font-size:14px;font-weight:var(--font-sb);line-height:44px;text-align:center;text-transform:uppercase}:host>div.open>div.open-combo-data>div>div.search .close-search>a:focus:focus-visible{box-shadow:var(--shadow-focus-primary);outline:none}:host>div.open>div.open-combo-data>div>div.check-all-wrapper{padding:calc(var(--space-unit) * 2) calc(var(--space-unit) * 0.5) calc(var(--space-unit) * 2) calc(var(--space-unit) * 1.5);border-bottom:var(--border-size-small) solid var(--gray800);margin-bottom:var(--space-unit);margin-left:calc(var(--space-unit) * -1);text-align:left}:host([size="small"])>div.open>div.open-combo-data>div>div.check-all-wrapper{padding:calc(var(--space-unit) * 1.5) calc(var(--space-unit) * 0.5)}:host([size="x-small"])>div.open>div.open-combo-data>div>div.check-all-wrapper{padding:var(--space-unit) calc(var(--space-unit) * 0.5)}'}},[1,"z-combobox",{inputid:[1],items:[1],label:[1],disabled:[516],hassearch:[4],searchlabel:[1],searchplaceholder:[1],searchtitle:[1],noresultslabel:[1],isopen:[1028],isfixed:[4],hascheckall:[4],checkalltext:[1],uncheckalltext:[1],maxcheckableitems:[2],hasgroupitems:[4],size:[1],htmlAriaLabel:[1,"html-aria-label"],searchValue:[32],selectedCounter:[32],renderItemsList:[32],focusedItemId:[32]},void 0,{items:[{watchItems:0}],searchValue:[{watchSearchValue:0}]}]),z=x,w=function(){"undefined"!=typeof customElements&&["z-combobox","z-divider","z-icon","z-input","z-input-message","z-list-element","z-list-group"].forEach((e=>{switch(e){case"z-combobox":customElements.get(o(e))||customElements.define(o(e),x);break;case"z-divider":customElements.get(o(e))||m();break;case"z-icon":customElements.get(o(e))||u();break;case"z-input":customElements.get(o(e))||b();break;case"z-input-message":customElements.get(o(e))||v();break;case"z-list-element":customElements.get(o(e))||f();break;case"z-list-group":customElements.get(o(e))||g()}}))};export{z as ZCombobox,w as defineCustomElement}
@@ -1 +1 @@
1
- import{proxyCustomElement as e,HTMLElement as t,createEvent as s,h as i,transformTag as l}from"@stencil/core/internal/client";import{e as c,g as r,i as n,l as a}from"./index2.js";import{r as o,e as h,b as d,d as z,f as p,i as m}from"./utils.js";import{d as u}from"./index6.js";import{d as f}from"./index3.js";import{d as v}from"./index7.js";import{d as b}from"./index8.js";import{d as g}from"./index9.js";import{d as w}from"./index10.js";import{d as x}from"./index11.js";import{d as y}from"./index14.js";const k=e(class extends t{constructor(e){super(),!1!==e&&this.__registerHost(),this.optionSelect=s(this,"optionSelect",7),this.resetSelect=s(this,"resetSelect",7),this.htmlid="id-"+o(),this.items=[],this.ariaLabel="",this.disabled=!1,this.readonly=!1,this.message=!0,this.autocomplete=!1,this.noresultslabel="Nessun risultato",this.isfixed=!1,this.size=c.BIG,this.isOpen=!1,this.selectedItem=null,this.itemsList=[],this.toggleSelectUl=this.toggleSelectUl.bind(this),this.handleSelectFocus=this.handleSelectFocus.bind(this)}watchItems(){this.itemsList=this.getInitialItemsArray(),this.selectedItem=this.findSelectedItem(this.itemsList)}async getSelectedItem(){return this.selectedItem}async getValue(){return this.getSelectedValue()}async setValue(e){let t=[];"string"==typeof e?t.push(e):t=e,this.itemsList=this.getInitialItemsArray(),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)}getInitialItemsArray(){return"string"==typeof this.items?JSON.parse(this.items):this.items}mapSelectedItemToItemsArray(){var e;const t=this.getInitialItemsArray();return this.updateSelection(t,null===(e=this.selectedItem)||void 0===e?void 0:e.id),t}getSelectedValue(){var e;return null===(e=this.selectedItem)||void 0===e?void 0:e.id}getOptionId(e){return`${this.htmlid}_key_${h(e.id||o())}`}getResetOptionId(){return this.htmlid+"_key_reset"}getGroupedItems(){return this.itemsList.length?Object.entries(this.itemsList.reduce(((e,t)=>{const s=t.category||"Altra categoria";return e[s]=e[s]||[],e[s].push(t),e}),{})):[]}filterItems(e){let t=this.mapSelectedItemToItemsArray();(null==e?void 0:e.length)?(t=t.map((e=>Object.assign(Object.assign({},e),{name:d(e.name)}))),this.itemsList=this.hasTreeItems?this.filterTree(t,e,!1):t.filter((t=>t.name.toUpperCase().includes(e.toUpperCase()))).map((t=>(t.name=this.getHighlightedText(t.name,e),t)))):this.itemsList=t}filterTree(e,t,s){return e?e.map((e=>{const i=e.name.toUpperCase().includes(t.toUpperCase()),l=Object.assign({},e);return l.children&&l.children.length>0&&(l.children=this.filterTree(l.children.map((e=>Object.assign(Object.assign({},e),{name:d(e.name)}))),t,i)),i&&(l.name=this.getHighlightedText(l.name,t)),i||l.children&&l.children.length>0||this.showChildrenOfMatchingParent&&s?l:null})).filter((e=>null!==e)):[]}getHighlightedText(e,t){const s=e.toUpperCase(),i=t.toUpperCase(),l=s.indexOf(i);if(-1===l)return e;const c=l+t.length;return e.substring(0,l)+`<strong>${e.substring(l,c)}</strong>`+e.substring(c)}hasAutocomplete(){return!0===z(this.autocomplete)}handleInputChange(e){this.searchString=e.detail.value,this.isOpen||this.toggleSelectUl()}updateSelection(e,t){e&&e.forEach((e=>{e.selected=e.id===t,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){(null==e?void 0:e.disabled)||(this.itemsList=this.getInitialItemsArray(),e&&this.updateSelection(this.itemsList,e.id),this.selectedItem=this.findSelectedItem(this.itemsList),this.emitOptionSelect(),this.toggleSelectUl(),this.searchString&&(this.searchString=null))}handleResetClick(){this.selectedItem=null,this.searchString=null,this.focusedItemId="",this.emitResetSelect(),this.toggleSelectUl()}handleInputKeyDown(e){switch(e.code){case r.ENTER:case r.SPACE:if(this.focusedItemId)if(this.focusedItemId===this.getResetOptionId())this.handleResetClick();else{const e=this.itemsList.find((e=>this.getOptionId(e)===this.focusedItemId))||null;e&&(this.selectedItem=e,this.emitOptionSelect(),this.toggleSelectUl())}break;case r.ARROW_DOWN:case r.ARROW_UP:this.arrowsSelectNav(e)}}arrowsSelectNav(e){if(![r.ARROW_DOWN,r.ARROW_UP].includes(e.key))return;e.preventDefault(),e.stopPropagation();const t=this.focusedItemId?this.host.querySelector("#"+this.focusedItemId):null,s=Array.from(this.host.querySelectorAll('[role="option"]'));if(!s.length)return;const i=t?s.indexOf(t):null,l=s.length-1;if(!this.isOpen&&(this.toggleSelectUl(),this.selectedItem))return void this.focusSelectItem(this.getOptionId(this.selectedItem));let c=null;e.code===r.ARROW_DOWN?c=null===i?s[0]:s[i+1]||s[l]:e.code===r.ARROW_UP&&(c=null===i?s[l]:s[i-1]||s[0]),this.focusSelectItem(c.id)}focusSelectItem(e){this.focusedItemId=e,this.host.querySelector("#"+e).scrollIntoView({block:"nearest",container:"nearest"})}toggleSelectUl(e=!1){var t;this.disabled||this.readonly||(this.isOpen?(document.removeEventListener("click",this.handleSelectFocus),document.removeEventListener("keyup",this.handleSelectFocus),e&&(null===(t=this.host.querySelector(`#${this.htmlid}_select_input`))||void 0===t||t.focus()),this.selectedItem&&this.searchString&&(this.searchString=null,this.filterItems(this.searchString))):(document.addEventListener("click",this.handleSelectFocus),document.addEventListener("keyup",this.handleSelectFocus)),this.focusedItemId="",this.isOpen=!this.isOpen)}handleInputClick(e){e.target.closest(".reset-icon")?e.stopPropagation():this.toggleSelectUl()}handleSelectFocus(e){if(e instanceof KeyboardEvent&&e.key===r.ESC)return e.stopPropagation(),this.toggleSelectUl(!0);if(e instanceof KeyboardEvent&&e.key!==r.TAB)return;const t=p();if(!(null==t?void 0:t.hasAttribute("disabled"))&&!m(t).find((e=>"z-input"===e.nodeName.toLowerCase()&&e.id===this.htmlid+"_input"))){const e=m(t).find((e=>"Z-SELECT"===e.nodeName));this.toggleSelectUl(e===this.host)}}scrollToLetter(e){if(!this.itemsList.length)return;const t=this.itemsList.find((t=>t.name.toLowerCase().charAt(0)===e.toLowerCase()));t&&(this.isOpen||this.toggleSelectUl(),this.focusSelectItem(this.getOptionId(t)))}renderInput(){let e=null;return this.selectedItem&&(e=d(this.selectedItem.name)),this.isOpen&&void 0!==this.searchString&&(e=this.searchString),[i("z-input",{class:{"active-select":this.isOpen,"cursor-select":!this.autocomplete},id:this.htmlid+"_input",htmlid:this.htmlid+"_select_input",placeholder:this.placeholder,value:e,label:this.label,autocomplete:"off","aria-label":this.ariaLabel,icon:this.isOpen?"caret-up":"caret-down",hasclearicon:!1,message:!1,name:this.name,disabled:this.disabled,readonly:this.readonly||!this.hasAutocomplete()&&this.isOpen,status:this.isOpen?void 0:this.status,size:this.size,role:"combobox","html-aria-expanded":this.isOpen?"true":"false","html-aria-controls":this.htmlid+"_list","html-aria-activedescendant":this.isOpen?this.focusedItemId:"","html-aria-autocomplete":this.hasAutocomplete()?"list":void 0,onClick:e=>this.handleInputClick(e),onKeyDown:e=>this.handleInputKeyDown(e),onInputChange:e=>this.handleInputChange(e),onKeyPress:e=>{this.hasAutocomplete()||(e.preventDefault(),this.scrollToLetter(e.key))}})]}renderSelectUl(){return i("div",{class:this.isOpen?"open":"closed"},i("div",{class:{"ul-scroll-wrapper":!0,fixed:this.isfixed}},i("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":!1,size:this.listSizeType(),class:{disabled:this.disabled,readonly:this.readonly,["input-"+this.status]:!this.isOpen&&!!this.status,"z-scrollbar":!0}},this.resetItem&&this.renderResetItem(),this.renderSelectUlItems())))}renderResetItem(){const e=!this.selectedItem||!this.resetItem;return i("z-list-element",{class:{hide:e,"reset-item":!0,"reset-item-margin":!this.hasGroupItems},clickable:!0,disabled:!1,dividerType:a.ELEMENT,role:e?"presentation":"option","html-tabindex":0,"aria-selected":"false","aria-label":e?void 0:this.resetItem,id:this.getResetOptionId(),size:this.hasTreeItems?n.MEDIUM:this.listSizeType(),onClickItem:()=>this.handleResetClick()},i("div",{class:{"reset-item-content":!0,"tree-list-reset-item":this.hasTreeItems,active:this.focusedItemId===this.getResetOptionId()},"aria-hidden":"true"},i("z-icon",{name:"multiply-circled"}),i("span",null,this.resetItem)))}renderItem(e,t){return i("z-list-element",{clickable:!e.disabled,disabled:e.disabled,dividerType:t?a.HEADER:a.ELEMENT,role:e.disabled?"presentation":"option","html-tabindex":-1,"aria-selected":e.selected?"true":"false","aria-label":e.disabled?void 0:d(e.name),id:this.getOptionId(e),size:this.listSizeType(),onClickItem:()=>this.selectItem(e)},i("div",{class:{"list-element-container":!0,active:this.focusedItemId===this.getOptionId(e)},"aria-hidden":"true"},i("div",{class:{selected:!!e.selected,"list-element-content":!0},innerHTML:e.name}),e.icon&&i("z-tag",{icon:e.icon})))}listSizeType(){return this.hasTreeItems?n.NONE:this.size===c.SMALL||this.size===c.X_SMALL?n.SMALL:n.MEDIUM}renderSelectUlItems(){return this.itemsList.length?this.hasGroupItems?this.hasTreeItems?this.renderGroupedTree():this.renderSelectGroupItems():this.itemsList.map(((e,t,s)=>{const i=t===s.length-1;return this.hasTreeItems?this.renderTreeItems(e,i,s.length>1,!0,e.disabled):this.renderItem(e,i)})):this.renderNoSearchResults()}renderTreeItems(e,t,s,l,c){var r,n;const o=e.disabled||c,h=this.hasGroupItems?void 0:this.hasGroupItems?t&&!s?a.ELEMENT:void 0:l&&s&&!t?a.ELEMENT:void 0;return i("z-list-element",{clickable:!e.disabled,disabled:o,class:{"grouped-tree-parent-node":this.hasGroupItems&&!!(null===(r=e.children)||void 0===r?void 0:r.length),"tree-search-item":this.hasGroupItems&&l&&!(null===(n=e.children)||void 0===n?void 0:n.length)&&!!this.searchString},size:this.listSizeType(),dividerType:h,hasTreeItems:this.hasTreeItems,"html-tabindex":null,role:"presentation"},i("div",{id:this.getOptionId(e),role:o?"presentation":"option","aria-label":o?void 0:d(e.name),class:{"list-element":!0,active:this.focusedItemId===this.getOptionId(e)},onClick:()=>this.selectItem(e)},i("span",{class:"item ellipsis","aria-hidden":"true"},i("span",{class:{"item-label":!0,selected:!!e.selected},title:e.name,innerHTML:e.name})),e.icon&&i("z-tag",{icon:e.icon})),e.children&&e.children.length>0?i("z-list",{role:"presentation"},i("div",{class:"children-node"},e.children.map(((e,t,s)=>this.renderTreeItems(e,t===s.length-1,s.length>1,!1,o))))):null)}renderGroupedTree(){const e=this.getGroupedItems();return e.map((([t,s],l,c)=>{const r=Object.values(e).some((e=>e.length>1));return i("z-list-group",{"divider-type":l===c.length-1?void 0:a.ELEMENT,hasTreeItems:!0,"aria-labelledby":`${this.htmlid}_tree_${l}`},i("span",{class:"body-3-sb z-list-group-title",slot:"header-title",id:`${this.htmlid}_tree_${l}`,"aria-hidden":"true"},t),i("z-list",{role:"presentation"},s.map(((e,t,s)=>[this.renderTreeItems(e,t===s.length-1,r,!0,e.disabled),t<s.length-1?i("z-divider",{key:"divider-"+t,style:{zIndex:"100",height:"var(--border-size-small)"}}):null]))),l!==c.length-1&&i("z-divider",{style:{zIndex:"100",height:"var(--border-size-small)"}}))}))}renderSelectGroupItems(){const e=this.getGroupedItems();return e.map((([t,s],l)=>{const c=e.length===l+1;return i("z-list-group",{"divider-type":a.ELEMENT,"aria-labelledby":`${this.htmlid}_group_${l}`},i("span",{class:"body-3-sb z-list-group-title",slot:"header-title",id:`${this.htmlid}_group_${l}`,"aria-hidden":"true"},t),s.map(((e,t)=>this.renderItem(e,c&&s.length===t+1))))}))}renderNoSearchResults(){return i("z-list-element",{class:"no-results",size:this.hasTreeItems?n.MEDIUM:this.listSizeType(),"html-tabindex":null,role:"presentation"},this.noresultslabel)}renderMessage(){if(!1!==z(this.message))return i("z-input-message",{message:!0===z(this.message)?void 0:this.message,status:this.status,class:this.size,disabled:this.disabled})}render(){return i("div",{key:"3a7af215bd74e5ac48cd7f9711ab019456eb0735",class:"select-wrapper"},this.renderInput(),this.renderSelectUl(),this.renderMessage())}get host(){return this}static get watchers(){return{items:[{watchItems:0}]}}static get style(){return'.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: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.active.sc-z-select{box-shadow:var(--shadow-focus-primary)}.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.sc-z-select .reset-item-content.active.sc-z-select{box-shadow:var(--shadow-focus-primary)}.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.active.sc-z-select{box-shadow:var(--shadow-focus-primary)}z-list-element.sc-z-select:not([disabled])>.list-element.sc-z-select:hover,z-list-element.sc-z-select:not([disabled])>.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}'}},[2,"z-select",{htmlid:[1],items:[1],name:[1],label:[1],ariaLabel:[1,"aria-label"],disabled:[4],readonly:[4],placeholder:[1],htmltitle:[1],status:[1],message:[8],autocomplete:[4],noresultslabel:[1],hasGroupItems:[4,"has-group-items"],hasTreeItems:[4,"has-tree-items"],showChildrenOfMatchingParent:[4,"show-children-of-matching-parent"],isfixed:[4],resetItem:[1,"reset-item"],size:[1],isOpen:[32],selectedItem:[32],focusedItemId:[32],searchString:[32],getSelectedItem:[64],getValue:[64],setValue:[64]},void 0,{items:[{watchItems:0}]}]),I=k,S=function(){"undefined"!=typeof customElements&&["z-select","z-divider","z-icon","z-input","z-input-message","z-list","z-list-element","z-list-group","z-tag"].forEach((e=>{switch(e){case"z-select":customElements.get(l(e))||customElements.define(l(e),k);break;case"z-divider":customElements.get(l(e))||u();break;case"z-icon":customElements.get(l(e))||f();break;case"z-input":customElements.get(l(e))||v();break;case"z-input-message":customElements.get(l(e))||b();break;case"z-list":customElements.get(l(e))||g();break;case"z-list-element":customElements.get(l(e))||w();break;case"z-list-group":customElements.get(l(e))||x();break;case"z-tag":customElements.get(l(e))||y()}}))};export{I as ZSelect,S as defineCustomElement}
1
+ import{proxyCustomElement as e,HTMLElement as t,createEvent as s,h as i,transformTag as l}from"@stencil/core/internal/client";import{e as c,g as r,i as n,l as a}from"./index2.js";import{r as o,e as h,b as d,d as z,f as p,i as m}from"./utils.js";import{d as u}from"./index6.js";import{d as f}from"./index3.js";import{d as v}from"./index7.js";import{d as b}from"./index8.js";import{d as g}from"./index9.js";import{d as w}from"./index10.js";import{d as x}from"./index11.js";import{d as y}from"./index14.js";const k=e(class extends t{constructor(e){super(),!1!==e&&this.__registerHost(),this.optionSelect=s(this,"optionSelect",7),this.resetSelect=s(this,"resetSelect",7),this.htmlid="id-"+o(),this.items=[],this.ariaLabel="",this.disabled=!1,this.readonly=!1,this.message=!0,this.autocomplete=!1,this.noresultslabel="Nessun risultato",this.isfixed=!1,this.size=c.BIG,this.isOpen=!1,this.selectedItem=null,this.itemsList=[],this.toggleSelectUl=this.toggleSelectUl.bind(this),this.handleSelectFocus=this.handleSelectFocus.bind(this)}watchItems(){this.itemsList=this.getInitialItemsArray(),this.selectedItem=this.findSelectedItem(this.itemsList)}async getSelectedItem(){return this.selectedItem}async getValue(){return this.getSelectedValue()}async setValue(e){let t=[];"string"==typeof e?t.push(e):t=e,this.itemsList=this.getInitialItemsArray(),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)}getInitialItemsArray(){return"string"==typeof this.items?JSON.parse(this.items):this.items}mapSelectedItemToItemsArray(){var e;const t=this.getInitialItemsArray();return this.updateSelection(t,null===(e=this.selectedItem)||void 0===e?void 0:e.id),t}getSelectedValue(){var e;return null===(e=this.selectedItem)||void 0===e?void 0:e.id}getOptionId(e){return`${this.htmlid}_key_${h(e.id?""+e.id:""+e.name)}`}getResetOptionId(){return this.htmlid+"_key_reset"}getGroupedItems(){return this.itemsList.length?Object.entries(this.itemsList.reduce(((e,t)=>{const s=t.category||"Altra categoria";return e[s]=e[s]||[],e[s].push(t),e}),{})):[]}filterItems(e){let t=this.mapSelectedItemToItemsArray();(null==e?void 0:e.length)?(t=t.map((e=>Object.assign(Object.assign({},e),{name:d(e.name)}))),this.itemsList=this.hasTreeItems?this.filterTree(t,e,!1):t.filter((t=>t.name.toUpperCase().includes(e.toUpperCase()))).map((t=>(t.name=this.getHighlightedText(t.name,e),t)))):this.itemsList=t}filterTree(e,t,s){return e?e.map((e=>{const i=e.name.toUpperCase().includes(t.toUpperCase()),l=Object.assign({},e);return l.children&&l.children.length>0&&(l.children=this.filterTree(l.children.map((e=>Object.assign(Object.assign({},e),{name:d(e.name)}))),t,i)),i&&(l.name=this.getHighlightedText(l.name,t)),i||l.children&&l.children.length>0||this.showChildrenOfMatchingParent&&s?l:null})).filter((e=>null!==e)):[]}getHighlightedText(e,t){const s=e.toUpperCase(),i=t.toUpperCase(),l=s.indexOf(i);if(-1===l)return e;const c=l+t.length;return e.substring(0,l)+`<strong>${e.substring(l,c)}</strong>`+e.substring(c)}hasAutocomplete(){return!0===z(this.autocomplete)}handleInputChange(e){this.searchString=e.detail.value,this.isOpen||this.toggleSelectUl()}updateSelection(e,t){e&&e.forEach((e=>{e.selected=e.id===t,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){(null==e?void 0:e.disabled)||(this.itemsList=this.getInitialItemsArray(),e&&this.updateSelection(this.itemsList,e.id),this.selectedItem=this.findSelectedItem(this.itemsList),this.emitOptionSelect(),this.toggleSelectUl(),this.searchString&&(this.searchString=null))}handleResetClick(){this.selectedItem=null,this.searchString=null,this.focusedItemId="",this.emitResetSelect(),this.toggleSelectUl()}handleInputKeyDown(e){switch(e.code){case r.ENTER:case r.SPACE:if(this.focusedItemId)if(this.focusedItemId===this.getResetOptionId())this.handleResetClick();else{const e=this.itemsList.find((e=>this.getOptionId(e)===this.focusedItemId))||null;e&&(this.selectedItem=e,this.emitOptionSelect(),this.toggleSelectUl())}break;case r.ARROW_DOWN:case r.ARROW_UP:this.arrowsSelectNav(e)}}arrowsSelectNav(e){if(![r.ARROW_DOWN,r.ARROW_UP].includes(e.key))return;e.preventDefault(),e.stopPropagation();const t=this.focusedItemId?this.host.querySelector("#"+this.focusedItemId):null,s=Array.from(this.host.querySelectorAll('[role="option"]'));if(!s.length)return;const i=t?s.indexOf(t):null,l=s.length-1;if(!this.isOpen&&(this.toggleSelectUl(),this.selectedItem))return void this.focusSelectItem(this.getOptionId(this.selectedItem));let c=null;e.code===r.ARROW_DOWN?c=null===i?s[0]:s[i+1]||s[l]:e.code===r.ARROW_UP&&(c=null===i?s[l]:s[i-1]||s[0]),this.focusSelectItem(c.id)}focusSelectItem(e){this.focusedItemId=e,this.host.querySelector("#"+e).scrollIntoView({block:"nearest",container:"nearest"})}toggleSelectUl(e=!1){var t;this.disabled||this.readonly||(this.isOpen?(document.removeEventListener("click",this.handleSelectFocus),document.removeEventListener("keyup",this.handleSelectFocus),e&&(null===(t=this.host.querySelector(`#${this.htmlid}_select_input`))||void 0===t||t.focus()),this.selectedItem&&this.searchString&&(this.searchString=null,this.filterItems(this.searchString))):(document.addEventListener("click",this.handleSelectFocus),document.addEventListener("keyup",this.handleSelectFocus)),this.focusedItemId="",this.isOpen=!this.isOpen)}handleInputClick(e){e.target.closest(".reset-icon")?e.stopPropagation():this.toggleSelectUl()}handleSelectFocus(e){if(e instanceof KeyboardEvent&&e.key===r.ESC)return e.stopPropagation(),this.toggleSelectUl(!0);if(e instanceof KeyboardEvent&&e.key!==r.TAB)return;const t=p();if(!(null==t?void 0:t.hasAttribute("disabled"))&&!m(t).find((e=>"z-input"===e.nodeName.toLowerCase()&&e.id===this.htmlid+"_input"))){const e=m(t).find((e=>"Z-SELECT"===e.nodeName));this.toggleSelectUl(e===this.host)}}scrollToLetter(e){if(!this.itemsList.length)return;const t=this.itemsList.find((t=>t.name.toLowerCase().charAt(0)===e.toLowerCase()));t&&(this.isOpen||this.toggleSelectUl(),this.focusSelectItem(this.getOptionId(t)))}renderInput(){let e=null;return this.selectedItem&&(e=d(this.selectedItem.name)),this.isOpen&&void 0!==this.searchString&&(e=this.searchString),[i("z-input",{class:{"active-select":this.isOpen,"cursor-select":!this.autocomplete},id:this.htmlid+"_input",htmlid:this.htmlid+"_select_input",placeholder:this.placeholder,value:e,label:this.label,autocomplete:"off","aria-label":this.ariaLabel,icon:this.isOpen?"caret-up":"caret-down",hasclearicon:!1,message:!1,name:this.name,disabled:this.disabled,readonly:this.readonly||!this.hasAutocomplete()&&this.isOpen,status:this.isOpen?void 0:this.status,size:this.size,role:"combobox","html-aria-expanded":this.isOpen?"true":"false","html-aria-controls":this.htmlid+"_list","html-aria-activedescendant":this.isOpen?this.focusedItemId:"","html-aria-autocomplete":this.hasAutocomplete()?"list":void 0,onClick:e=>this.handleInputClick(e),onKeyDown:e=>this.handleInputKeyDown(e),onInputChange:e=>this.handleInputChange(e),onKeyPress:e=>{this.hasAutocomplete()||(e.preventDefault(),this.scrollToLetter(e.key))}})]}renderSelectUl(){return i("div",{class:this.isOpen?"open":"closed"},i("div",{class:{"ul-scroll-wrapper":!0,fixed:this.isfixed}},i("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":!1,size:this.listSizeType(),class:{disabled:this.disabled,readonly:this.readonly,["input-"+this.status]:!this.isOpen&&!!this.status,"z-scrollbar":!0}},this.resetItem&&this.renderResetItem(),this.renderSelectUlItems())))}renderResetItem(){const e=!this.selectedItem||!this.resetItem;return i("z-list-element",{class:{hide:e,"reset-item":!0,"reset-item-margin":!this.hasGroupItems},clickable:!0,disabled:!1,dividerType:a.ELEMENT,role:e?"presentation":"option","html-tabindex":0,"aria-selected":"false","aria-label":e?void 0:this.resetItem,id:this.getResetOptionId(),size:this.hasTreeItems?n.MEDIUM:this.listSizeType(),onClickItem:()=>this.handleResetClick()},i("div",{class:{"reset-item-content":!0,"tree-list-reset-item":this.hasTreeItems,active:this.focusedItemId===this.getResetOptionId()},"aria-hidden":"true"},i("z-icon",{name:"multiply-circled"}),i("span",null,this.resetItem)))}renderItem(e,t){return i("z-list-element",{clickable:!e.disabled,disabled:e.disabled,dividerType:t?a.HEADER:a.ELEMENT,role:e.disabled?"presentation":"option","html-tabindex":-1,"aria-selected":e.selected?"true":"false","aria-label":e.disabled?void 0:d(e.name),id:this.getOptionId(e),size:this.listSizeType(),onClickItem:()=>this.selectItem(e)},i("div",{class:{"list-element-container":!0,active:this.focusedItemId===this.getOptionId(e)},"aria-hidden":"true"},i("div",{class:{selected:!!e.selected,"list-element-content":!0},innerHTML:e.name}),e.icon&&i("z-tag",{icon:e.icon})))}listSizeType(){return this.hasTreeItems?n.NONE:this.size===c.SMALL||this.size===c.X_SMALL?n.SMALL:n.MEDIUM}renderSelectUlItems(){return this.itemsList.length?this.hasGroupItems?this.hasTreeItems?this.renderGroupedTree():this.renderSelectGroupItems():this.itemsList.map(((e,t,s)=>{const i=t===s.length-1;return this.hasTreeItems?this.renderTreeItems(e,i,s.length>1,!0,e.disabled):this.renderItem(e,i)})):this.renderNoSearchResults()}renderTreeItems(e,t,s,l,c){var r,n;const o=e.disabled||c,h=this.hasGroupItems?void 0:this.hasGroupItems?t&&!s?a.ELEMENT:void 0:l&&s&&!t?a.ELEMENT:void 0;return i("z-list-element",{clickable:!e.disabled,disabled:o,class:{"grouped-tree-parent-node":this.hasGroupItems&&!!(null===(r=e.children)||void 0===r?void 0:r.length),"tree-search-item":this.hasGroupItems&&l&&!(null===(n=e.children)||void 0===n?void 0:n.length)&&!!this.searchString},size:this.listSizeType(),dividerType:h,hasTreeItems:this.hasTreeItems,"html-tabindex":null,role:"presentation"},i("div",{id:this.getOptionId(e),role:o?"presentation":"option","aria-label":o?void 0:d(e.name),class:{"list-element":!0,active:this.focusedItemId===this.getOptionId(e)},onClick:()=>this.selectItem(e)},i("span",{class:"item ellipsis","aria-hidden":"true"},i("span",{class:{"item-label":!0,selected:!!e.selected},title:e.name,innerHTML:e.name})),e.icon&&i("z-tag",{icon:e.icon})),e.children&&e.children.length>0?i("z-list",{role:"presentation"},i("div",{class:"children-node"},e.children.map(((e,t,s)=>this.renderTreeItems(e,t===s.length-1,s.length>1,!1,o))))):null)}renderGroupedTree(){const e=this.getGroupedItems();return e.map((([t,s],l,c)=>{const r=Object.values(e).some((e=>e.length>1));return i("z-list-group",{"divider-type":l===c.length-1?void 0:a.ELEMENT,hasTreeItems:!0,"aria-labelledby":`${this.htmlid}_tree_${l}`},i("span",{class:"body-3-sb z-list-group-title",slot:"header-title",id:`${this.htmlid}_tree_${l}`,"aria-hidden":"true"},t),i("z-list",{role:"presentation"},s.map(((e,t,s)=>[this.renderTreeItems(e,t===s.length-1,r,!0,e.disabled),t<s.length-1?i("z-divider",{key:"divider-"+t,style:{zIndex:"100",height:"var(--border-size-small)"}}):null]))),l!==c.length-1&&i("z-divider",{style:{zIndex:"100",height:"var(--border-size-small)"}}))}))}renderSelectGroupItems(){const e=this.getGroupedItems();return e.map((([t,s],l)=>{const c=e.length===l+1;return i("z-list-group",{"divider-type":a.ELEMENT,"aria-labelledby":`${this.htmlid}_group_${l}`},i("span",{class:"body-3-sb z-list-group-title",slot:"header-title",id:`${this.htmlid}_group_${l}`,"aria-hidden":"true"},t),s.map(((e,t)=>this.renderItem(e,c&&s.length===t+1))))}))}renderNoSearchResults(){return i("z-list-element",{class:"no-results",size:this.hasTreeItems?n.MEDIUM:this.listSizeType(),"html-tabindex":null,role:"presentation"},this.noresultslabel)}renderMessage(){if(!1!==z(this.message))return i("z-input-message",{message:!0===z(this.message)?void 0:this.message,status:this.status,class:this.size,disabled:this.disabled})}render(){return i("div",{key:"0e8ad3052e2f0fadd2f26bb30be5ec4de8935936",class:"select-wrapper"},this.renderInput(),this.renderSelectUl(),this.renderMessage())}get host(){return this}static get watchers(){return{items:[{watchItems:0}]}}static get style(){return'.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: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.active.sc-z-select{box-shadow:var(--shadow-focus-primary)}.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.sc-z-select .reset-item-content.active.sc-z-select{box-shadow:var(--shadow-focus-primary)}.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.active.sc-z-select{box-shadow:var(--shadow-focus-primary)}z-list-element.sc-z-select:not([disabled])>.list-element.sc-z-select:hover,z-list-element.sc-z-select:not([disabled])>.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}'}},[2,"z-select",{htmlid:[1],items:[1],name:[1],label:[1],ariaLabel:[1,"aria-label"],disabled:[4],readonly:[4],placeholder:[1],htmltitle:[1],status:[1],message:[8],autocomplete:[4],noresultslabel:[1],hasGroupItems:[4,"has-group-items"],hasTreeItems:[4,"has-tree-items"],showChildrenOfMatchingParent:[4,"show-children-of-matching-parent"],isfixed:[4],resetItem:[1,"reset-item"],size:[1],isOpen:[32],selectedItem:[32],focusedItemId:[32],searchString:[32],getSelectedItem:[64],getValue:[64],setValue:[64]},void 0,{items:[{watchItems:0}]}]),I=k,S=function(){"undefined"!=typeof customElements&&["z-select","z-divider","z-icon","z-input","z-input-message","z-list","z-list-element","z-list-group","z-tag"].forEach((e=>{switch(e){case"z-select":customElements.get(l(e))||customElements.define(l(e),k);break;case"z-divider":customElements.get(l(e))||u();break;case"z-icon":customElements.get(l(e))||f();break;case"z-input":customElements.get(l(e))||v();break;case"z-input-message":customElements.get(l(e))||b();break;case"z-list":customElements.get(l(e))||g();break;case"z-list-element":customElements.get(l(e))||w();break;case"z-list-group":customElements.get(l(e))||x();break;case"z-tag":customElements.get(l(e))||y()}}))};export{I as ZSelect,S as defineCustomElement}
@@ -67,8 +67,8 @@ const ZCombobox = class {
67
67
  return ListSize.LARGE;
68
68
  }
69
69
  }
70
- getOptionId(itemId) {
71
- return `${this.inputid}-option-${encodeString(itemId || randomId())}`;
70
+ getOptionId(item) {
71
+ return `${this.inputid}-option-${item.id ? encodeString(`${item.id}`) : encodeString(`${item.name}`)}`;
72
72
  }
73
73
  getCheckAllOptionId() {
74
74
  return `${this.inputid}-check-all`;
@@ -138,7 +138,7 @@ const ZCombobox = class {
138
138
  }
139
139
  else {
140
140
  this.itemsList = this.itemsList.map((i) => {
141
- if (optionId === this.getOptionId(i.id)) {
141
+ if (optionId === this.getOptionId(i)) {
142
142
  i.checked = !i.checked;
143
143
  }
144
144
  return i;
@@ -242,13 +242,13 @@ const ZCombobox = class {
242
242
  : undefined }, this.label, h("span", null, this.selectedCounter > 0 && ` (${this.selectedCounter})`)), h("z-icon", { name: "caret-down", class: this.size })));
243
243
  }
244
244
  renderContent() {
245
- return (h("div", { id: "open-combo-data", class: "open-combo-data" }, this.hassearch && this.renderSearchInput(), h("div", { role: "listbox", "aria-label": this.label, "aria-multiselectable": "true", id: `${this.inputid}_list`, "aria-owns": `${this.hascheckall ? `${this.getCheckAllOptionId()} ` : ``}${this.itemsList.map((item) => this.getOptionId(item.id)).join(" ")}` }, this.renderItems())));
245
+ return (h("div", { id: "open-combo-data", class: "open-combo-data" }, this.hassearch && this.renderSearchInput(), h("div", { role: "listbox", "aria-label": this.label, "aria-multiselectable": "true", id: `${this.inputid}_list`, "aria-owns": `${this.hascheckall ? `${this.getCheckAllOptionId()} ` : ``}${this.itemsList.map((item) => this.getOptionId(item)).join(" ")}` }, this.renderItems())));
246
246
  }
247
247
  renderItems() {
248
248
  return (h("div", { class: this.searchValue && "search", tabIndex: -1, role: "presentation" }, this.renderList(this.renderItemsList)));
249
249
  }
250
250
  renderItem(item, index, length) {
251
- const optionId = this.getOptionId(item.id);
251
+ const optionId = this.getOptionId(item);
252
252
  const isDisabled = !item.checked && this.hasReachedMaxSelections();
253
253
  return (h("z-list-element", { htmlTabindex: -1, dividerType: index !== length - 1 ? ListDividerType.ELEMENT : ListDividerType.NONE, size: this.getControlToListSize(), role: "presentation", disabled: !!isDisabled }, h("span", { class: "option-wrap", role: "presentation", onClick: () => {
254
254
  this.focusedItemId = "";
@@ -302,7 +302,7 @@ const ZCombobox = class {
302
302
  return (h("z-list-element", { class: "check-all-wrapper", role: "presentation", htmlTabindex: -1, dividerType: ListDividerType.ELEMENT, dividerColor: "gray800", size: this.getControlToListSize(), disabled: !!isDisabled }, h("span", { class: "option-wrap", role: "presentation", onClick: () => this.checkOption(optionId) }, h("z-icon", { name: allChecked ? "checkbox-checked" : "checkbox", class: this.focusedItemId === optionId ? "focused" : "" }), h("span", { id: optionId, role: isDisabled ? "presentation" : "option", "aria-selected": allChecked ? "true" : "false" }, allChecked ? this.uncheckalltext : this.checkalltext))));
303
303
  }
304
304
  render() {
305
- return (h("div", { key: '9abef20bcd118d5aaf14caf7e92978df7a4ec73b', "data-action": `combo-${this.inputid}`, class: { open: this.isopen, fixed: this.isfixed, disabled: this.disabled }, id: this.inputid }, this.renderHeader(), !this.disabled && this.renderContent()));
305
+ return (h("div", { key: 'c5938c6fd47c302b44fb4be8be7355dafe60c37a', "data-action": `combo-${this.inputid}`, class: { open: this.isopen, fixed: this.isfixed, disabled: this.disabled }, id: this.inputid }, this.renderHeader(), !this.disabled && this.renderContent()));
306
306
  }
307
307
  get element() { return getElement(this); }
308
308
  static get watchers() { return {
@@ -94,7 +94,7 @@ const ZSelect = class {
94
94
  return (_a = this.selectedItem) === null || _a === void 0 ? void 0 : _a.id;
95
95
  }
96
96
  getOptionId(item) {
97
- return `${this.htmlid}_key_${encodeString(item.id || randomId())}`;
97
+ return `${this.htmlid}_key_${item.id ? encodeString(`${item.id}`) : encodeString(`${item.name}`)}`;
98
98
  }
99
99
  getResetOptionId() {
100
100
  return `${this.htmlid}_key_reset`;
@@ -472,7 +472,7 @@ const ZSelect = class {
472
472
  return (h("z-input-message", { message: boolean(this.message) === true ? undefined : this.message, status: this.status, class: this.size, disabled: this.disabled }));
473
473
  }
474
474
  render() {
475
- return (h("div", { key: '3a7af215bd74e5ac48cd7f9711ab019456eb0735', class: "select-wrapper" }, this.renderInput(), this.renderSelectUl(), this.renderMessage()));
475
+ return (h("div", { key: '0e8ad3052e2f0fadd2f26bb30be5ec4de8935936', class: "select-wrapper" }, this.renderInput(), this.renderSelectUl(), this.renderMessage()));
476
476
  }
477
477
  get host() { return getElement(this); }
478
478
  static get watchers() { return {
@@ -0,0 +1 @@
1
+ import{r as t,c as e,h as i,d as o}from"./p-DPdXlnVe.js";import{e as s,I as a,i as r,g as n,l}from"./p-BKCj6NR2.js";import{r as h,e as c,b as d}from"./p-B0bOjMSb.js";import"./p-Q-tWjk7P.js";const p=class{watchItems(){this.itemsList="string"==typeof this.items?JSON.parse(this.items):this.items,this.selectedCounter=this.itemsList.filter((t=>t.checked)).length,this.updateRenderItemsList()}watchSearchValue(){this.filterItems(this.searchValue)}emitComboboxChange(){this.comboboxChange.emit({id:this.inputid,items:this.itemsList})}constructor(i){t(this,i),this.comboboxChange=e(this,"comboboxChange",7),this.inputid=`combo-${h()}`,this.disabled=!1,this.hassearch=!1,this.noresultslabel="Nessun risultato",this.isopen=!1,this.isfixed=!1,this.hascheckall=!1,this.checkalltext="Seleziona tutti",this.uncheckalltext="Deseleziona tutti",this.maxcheckableitems=0,this.size=s.BIG,this.renderItemsList=[],this.focusedItemId="",this.itemsList=[],this.inputType=a.TEXT,this.toggleComboBox=this.toggleComboBox.bind(this),this.closeFilterItems=this.closeFilterItems.bind(this)}componentWillLoad(){this.watchItems()}componentWillRender(){this.selectedCounter=this.itemsList.filter((t=>t.checked)).length}getControlToListSize(){switch(this.size){case s.X_SMALL:return r.SMALL;case s.SMALL:return r.MEDIUM;default:return r.LARGE}}getOptionId(t){return`${this.inputid}-option-${c(t.id?`${t.id}`:`${t.name}`)}`}getCheckAllOptionId(){return`${this.inputid}-check-all`}allOptionsSelected(){return this.selectedCounter===this.itemsList.length}hasReachedMaxSelections(){return!!(this.maxcheckableitems&&this.selectedCounter>=this.maxcheckableitems)}handleHeaderKeyDown(t){if(t.code!==n.ENTER||this.focusedItemId||this.toggleComboBox(),this.isopen&&!this.hassearch)switch(t.code){case n.SPACE:case n.ENTER:this.focusedItemId&&(t.preventDefault(),this.checkOption(this.focusedItemId));break;case n.ESC:this.focusedItemId&&(this.focusedItemId="");break;case n.ARROW_DOWN:case n.ARROW_UP:this.handleArrowsNavigation(t)}}handleInputKeyDown(t){switch(t.code){case n.ENTER:case n.SPACE:if(this.focusedItemId){t.preventDefault(),this.checkOption(this.focusedItemId);break}break;case n.ARROW_DOWN:case n.ARROW_UP:this.handleArrowsNavigation(t);break;case n.ESC:if(this.focusedItemId){this.focusedItemId="";break}this.closeFilterItems();break;case n.TAB:this.focusedItemId=""}}checkOption(t){t===this.getCheckAllOptionId()?(this.itemsList=this.itemsList.map((t=>Object.assign(Object.assign({},t),{checked:!this.allOptionsSelected()}))),this.focusedItemId=this.getCheckAllOptionId()):this.itemsList=this.itemsList.map((e=>(t===this.getOptionId(e)&&(e.checked=!e.checked),e))),this.updateRenderItemsList(),this.emitComboboxChange()}handleArrowsNavigation(t){if(![n.ARROW_DOWN,n.ARROW_UP].includes(t.code)||!this.isopen)return;t.preventDefault(),t.stopPropagation();const e=this.focusedItemId?this.element.shadowRoot.querySelector(`#${this.focusedItemId}`):null,i=Array.from(this.element.shadowRoot.querySelectorAll('[role="option"]'));if(!i.length)return;const o=e?i.indexOf(e):null,s=i.length-1;let a=null;t.code===n.ARROW_DOWN?a=null===o?i[0]:i[o+1]||i[s]:t.code===n.ARROW_UP&&(a=null===o?i[s]:i[o-1]||i[0]),this.focusedItemId=a.id,a.scrollIntoView({block:"nearest",container:"nearest"})}updateRenderItemsList(){this.searchValue?this.filterItems(this.searchValue):this.resetRenderItemsList()}resetRenderItemsList(){const t=[];this.itemsList.forEach((e=>{t.push(Object.assign({},e))})),this.renderItemsList=t}filterItems(t){if(!t)return this.closeFilterItems();this.resetRenderItemsList(),this.renderItemsList=this.renderItemsList.filter((e=>{const i=e.name.toUpperCase().indexOf(t.toUpperCase()),o=i+t.length,s=e.name.substring(0,i)+"<strong>"+e.name.substring(i,o)+"</strong>"+e.name.substring(o,e.name.length);return e.name=s,i>=0}))}closeFilterItems(){this.searchValue="",this.resetRenderItemsList()}toggleComboBox(){this.isopen=!this.isopen}getComboboxA11yAttributes(t){const e="combobox",i=this.htmlAriaLabel,o=this.isopen?"true":"false",s=this.isopen?this.focusedItemId:"",a=`${this.inputid}_list`;return t?{role:e,"aria-label":i,"html-aria-expanded":o,"html-aria-activedescendant":s,"html-aria-controls":a}:{role:e,"aria-label":i,"aria-expanded":o,"aria-activedescendant":s,"aria-controls":a}}renderHeader(){const t=this.hassearch?{}:this.getComboboxA11yAttributes(!1);return i("div",Object.assign({class:"header",onClick:()=>this.toggleComboBox(),onKeyDown:t=>this.handleHeaderKeyDown(t),role:"button",tabindex:0,"aria-controls":"open-combo-data","aria-expanded":this.isopen?"true":"false"},t),i("span",{class:"body-3","aria-label":this.label?`${this.label}${this.selectedCounter>0?` - ${this.selectedCounter} selezionati`:""}`:void 0},this.label,i("span",null,this.selectedCounter>0&&` (${this.selectedCounter})`)),i("z-icon",{name:"caret-down",class:this.size}))}renderContent(){return i("div",{id:"open-combo-data",class:"open-combo-data"},this.hassearch&&this.renderSearchInput(),i("div",{role:"listbox","aria-label":this.label,"aria-multiselectable":"true",id:`${this.inputid}_list`,"aria-owns":`${this.hascheckall?`${this.getCheckAllOptionId()} `:""}${this.itemsList.map((t=>this.getOptionId(t))).join(" ")}`},this.renderItems()))}renderItems(){return i("div",{class:this.searchValue&&"search",tabIndex:-1,role:"presentation"},this.renderList(this.renderItemsList))}renderItem(t,e,o){const s=this.getOptionId(t),a=!t.checked&&this.hasReachedMaxSelections();return i("z-list-element",{htmlTabindex:-1,dividerType:e!==o-1?l.ELEMENT:l.NONE,size:this.getControlToListSize(),role:"presentation",disabled:!!a},i("span",{class:"option-wrap",role:"presentation",onClick:()=>{this.focusedItemId="",this.checkOption(s)}},i("z-icon",{name:t.checked?"checkbox-checked":"checkbox",class:this.focusedItemId===s?"focused":""}),i("span",{id:s,role:a?"presentation":"option","aria-selected":t.checked?"true":"false","aria-label":a?void 0:d(t.name)},i("span",{"aria-hidden":"true",innerHTML:t.name}))))}renderList(t){if(t)return!t.length&&this.searchValue?this.renderNoSearchResults():this.hasgroupitems?this.renderGroups(t):i("ul",{role:"presentation"},this.renderCheckAll(),t.map(((e,i)=>this.renderItem(e,i,t.length))))}renderGroups(t){const e=t.reduce(((e,i,o)=>{var s;const a=i.category||"Altra categoria",r=this.renderItem(i,o,t.length);return e[a]=null!==(s=e[a])&&void 0!==s?s:[],e[a].push(r),e}),{}),o=Object.entries(e).map((([t,e],o)=>i("z-list-group",{size:this.getControlToListSize(),"divider-type":l.ELEMENT,"aria-labelledby":`${this.inputid}_list_group_${o}`},i("span",{class:"body-3-sb z-list-group-title",slot:"header-title",id:`${this.inputid}_list_group_${o}`,"aria-hidden":"true"},t),e.map((t=>t)))));return i("ul",{role:"presentation"},this.renderCheckAll(),o)}renderNoSearchResults(){return i("div",{class:"no-results"},i("span",null,this.noresultslabel))}renderSearchInput(){return i("z-input",Object.assign({htmlid:`${this.inputid}_search`,label:this.searchlabel,placeholder:this.searchplaceholder,htmltitle:this.searchtitle,type:this.inputType,value:this.searchValue,message:!1,size:this.size,"html-aria-autocomplete":"list"},this.getComboboxA11yAttributes(!0),{onKeyDown:t=>this.handleInputKeyDown(t),onInputChange:t=>{this.searchValue=t.detail.value,this.focusedItemId=""}}))}renderCheckAll(){if(!this.hascheckall||this.searchValue)return;const t=this.getCheckAllOptionId(),e=this.allOptionsSelected(),o=this.hasReachedMaxSelections()||this.maxcheckableitems&&this.maxcheckableitems<this.itemsList.length;return i("z-list-element",{class:"check-all-wrapper",role:"presentation",htmlTabindex:-1,dividerType:l.ELEMENT,dividerColor:"gray800",size:this.getControlToListSize(),disabled:!!o},i("span",{class:"option-wrap",role:"presentation",onClick:()=>this.checkOption(t)},i("z-icon",{name:e?"checkbox-checked":"checkbox",class:this.focusedItemId===t?"focused":""}),i("span",{id:t,role:o?"presentation":"option","aria-selected":e?"true":"false"},e?this.uncheckalltext:this.checkalltext)))}render(){return i("div",{key:"c5938c6fd47c302b44fb4be8be7355dafe60c37a","data-action":`combo-${this.inputid}`,class:{open:this.isopen,fixed:this.isfixed,disabled:this.disabled},id:this.inputid},this.renderHeader(),!this.disabled&&this.renderContent())}get element(){return o(this)}static get watchers(){return{items:[{watchItems:0}],searchValue:[{watchSearchValue:0}]}}};p.style='.z-label{display:block;padding-bottom:var(--space-unit);color:var(--color-default-text);font-family:var(--font-family-sans);font-size:var(--font-size-1);font-weight:var(--font-sb);text-align:left;text-transform:uppercase}:host{display:block;min-width:290px;color:var(--color-form-default-text);fill:var(--color-form-default-icon);font-family:var(--font-family-sans)}:host>div.fixed{position:relative}:host>div>.header{position:relative;z-index:10;display:flex;min-height:42px;align-items:center;justify-content:space-between;padding:0 calc(var(--space-unit) * 1.5);border:var(--border-size-small) solid var(--color-form-surface04);margin:0;background-color:var(--color-form-background);border-radius:var(--border-radius-small);cursor:pointer}:host([size="small"])>div>.header{min-height:34px;font-size:var(--font-size-2)}:host([size="x-small"])>div>.header{min-height:30px;font-size:var(--font-size-2)}:host>div>.header:hover{outline:var(--border-size-medium) solid var(--color-form-surface04);outline-offset:-2px}:host>div>div.header:focus:focus-visible{z-index:16;box-shadow:var(--shadow-focus-primary);outline:none}:host>div>.header>span.body-3>span{font-weight:var(--font-sb)}:host>div>.header>z-icon{fill:var(--color-form-default-icon);transform:rotate(360deg);transition:all 200ms linear}:host>div>.header>z-icon.small,:host>div>.header>z-icon.x-small{--z-icon-width:16px;--z-icon-height:16px}:host>div.open>.header{border:var(--border-size-small) solid var(--color-form-active-primary);border-radius:var(--border-radius-small) var(--border-radius-small) 0 0}:host>div.disabled{pointer-events:none}:host>div.disabled .header{border-color:var(--color-form-disabled03);fill:var(--color-form-disabled01-icon)}:host>div.disabled .header>span.body-3{color:var(--color-form-disabled03)}:host>div.disabled .header>z-icon:last-child{fill:var(--color-form-disabled01-icon)}:host>div.open>.header>z-icon{fill:var(--color-form-default-icon);transform:rotate(180deg);transition:all 200ms linear}:host>div>div.open-combo-data{display:none}:host>div.open>div.open-combo-data{position:relative;z-index:12;display:block;padding:var(--space-unit) calc(var(--space-unit) * 2);border:var(--border-size-small) solid var(--color-form-surface03);border-top:0;background-color:var(--color-form-background);border-radius:0;box-shadow:var(--shadow-2)}:host .open .open-combo-data z-input .z-label{color:var(--color-form-default-text)}:host>div.open>div.open-combo-data>div>div{overflow:auto;max-height:235px;padding:0;padding-left:var(--space-unit);margin-left:calc(var(--space-unit) * -1);}:host>div.open>div.open-combo-data>z-input{width:100%;margin-bottom:calc(var(--space-unit) * 2)}:host>div.open>div.open-combo-data>div>div>ul{max-height:235px;padding:0 calc(var(--space-unit) * 0.5);margin:0}:host .open-combo-data z-list-element{--background-color-list-element:var(--color-form-background);--background-hover-color-list-element:var(--color-form-surface03);--background-active-color-list-element:var(--color-form-surface03)}:host .open-combo-data z-list-element[disabled]{pointer-events:none}:host .open-combo-data z-list-element .option-wrap{display:flex;flex-direction:row;align-items:center;cursor:pointer;gap:var(--space-unit)}:host .open-combo-data z-list-element[size="medium"] .option-wrap,:host .open-combo-data z-list-element[size="small"] .option-wrap{--z-icon-width:16px;--z-icon-height:16px;font-size:var(--font-size-2);gap:calc(var(--space-unit) / 2)}:host .open-combo-data z-list-element .option-wrap>z-icon{fill:var(--color-primary01)}:host .open-combo-data z-list-element[disabled] .option-wrap>z-icon{fill:var(--color-disabled01)}:host .open-combo-data z-list-element .option-wrap>z-icon.focused{border-radius:var(--border-radius-small);box-shadow:var(--shadow-focus-primary);outline:none}:host .open-combo-data z-list-element .option-wrap>[role="option"]:focus,:host .open-combo-data z-list-element .option-wrap>[role="option"]:focus-visible{outline:none}::-webkit-scrollbar{width:6px;background:linear-gradient(to right, transparent 0 1px, var(--gray200) 1px 5px, transparent 5px 6px)}::-webkit-scrollbar-thumb{background-color:var(--color-primary01)}::-webkit-scrollbar-thumb:hover{background-color:var(--color-hover-primary)}@supports not selector(::-webkit-scrollbar-track){:host{scrollbar-color:var(--color-primary01) transparent}}:host>div.open>z-input{position:relative;z-index:1;width:238px;margin:0 calc(var(--space-unit) * 2);color:var(--color-form-active-primary)}:host>div.open>div.open-combo-data>div>div.search{overflow:hidden;max-height:none;margin-top:0}:host>div.open>div.open-combo-data>div>div.search>ul{overflow:auto;max-height:180px;padding:var(--space-unit) calc(var(--space-unit) * 2)}:host .open .open-combo-data .search .no-results{display:flex;align-items:center;column-gap:var(--space-unit)}:host>.open>.open-combo-data .search .close-search{display:flex;justify-content:center}:host>div.open>div.open-combo-data>div>div.search .close-search>a{display:inline-block;height:44px;color:var(--color-form-active-primary);cursor:pointer;font-size:14px;font-weight:var(--font-sb);line-height:44px;text-align:center;text-transform:uppercase}:host>div.open>div.open-combo-data>div>div.search .close-search>a:focus:focus-visible{box-shadow:var(--shadow-focus-primary);outline:none}:host>div.open>div.open-combo-data>div>div.check-all-wrapper{padding:calc(var(--space-unit) * 2) calc(var(--space-unit) * 0.5) calc(var(--space-unit) * 2) calc(var(--space-unit) * 1.5);border-bottom:var(--border-size-small) solid var(--gray800);margin-bottom:var(--space-unit);margin-left:calc(var(--space-unit) * -1);text-align:left}:host([size="small"])>div.open>div.open-combo-data>div>div.check-all-wrapper{padding:calc(var(--space-unit) * 1.5) calc(var(--space-unit) * 0.5)}:host([size="x-small"])>div.open>div.open-combo-data>div>div.check-all-wrapper{padding:var(--space-unit) calc(var(--space-unit) * 0.5)}';export{p as z_combobox}
@@ -0,0 +1 @@
1
+ import{r as e,c as t,h as s,d as i}from"./p-DPdXlnVe.js";import{e as l,g as c,i as r,l as n}from"./p-BKCj6NR2.js";import{r as o,e as a,b as h,d,f as z,i as p}from"./p-B0bOjMSb.js";import"./p-Q-tWjk7P.js";const u=class{constructor(s){e(this,s),this.optionSelect=t(this,"optionSelect",7),this.resetSelect=t(this,"resetSelect",7),this.htmlid=`id-${o()}`,this.items=[],this.ariaLabel="",this.disabled=!1,this.readonly=!1,this.message=!0,this.autocomplete=!1,this.noresultslabel="Nessun risultato",this.isfixed=!1,this.size=l.BIG,this.isOpen=!1,this.selectedItem=null,this.itemsList=[],this.toggleSelectUl=this.toggleSelectUl.bind(this),this.handleSelectFocus=this.handleSelectFocus.bind(this)}watchItems(){this.itemsList=this.getInitialItemsArray(),this.selectedItem=this.findSelectedItem(this.itemsList)}async getSelectedItem(){return this.selectedItem}async getValue(){return this.getSelectedValue()}async setValue(e){let t=[];"string"==typeof e?t.push(e):t=e,this.itemsList=this.getInitialItemsArray(),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)}getInitialItemsArray(){return"string"==typeof this.items?JSON.parse(this.items):this.items}mapSelectedItemToItemsArray(){var e;const t=this.getInitialItemsArray();return this.updateSelection(t,null===(e=this.selectedItem)||void 0===e?void 0:e.id),t}getSelectedValue(){var e;return null===(e=this.selectedItem)||void 0===e?void 0:e.id}getOptionId(e){return`${this.htmlid}_key_${a(e.id?`${e.id}`:`${e.name}`)}`}getResetOptionId(){return`${this.htmlid}_key_reset`}getGroupedItems(){return this.itemsList.length?Object.entries(this.itemsList.reduce(((e,t)=>{const s=t.category||"Altra categoria";return e[s]=e[s]||[],e[s].push(t),e}),{})):[]}filterItems(e){let t=this.mapSelectedItemToItemsArray();(null==e?void 0:e.length)?(t=t.map((e=>Object.assign(Object.assign({},e),{name:h(e.name)}))),this.itemsList=this.hasTreeItems?this.filterTree(t,e,!1):t.filter((t=>t.name.toUpperCase().includes(e.toUpperCase()))).map((t=>(t.name=this.getHighlightedText(t.name,e),t)))):this.itemsList=t}filterTree(e,t,s){return e?e.map((e=>{const i=e.name.toUpperCase().includes(t.toUpperCase()),l=Object.assign({},e);return l.children&&l.children.length>0&&(l.children=this.filterTree(l.children.map((e=>Object.assign(Object.assign({},e),{name:h(e.name)}))),t,i)),i&&(l.name=this.getHighlightedText(l.name,t)),i||l.children&&l.children.length>0||this.showChildrenOfMatchingParent&&s?l:null})).filter((e=>null!==e)):[]}getHighlightedText(e,t){const s=e.toUpperCase(),i=t.toUpperCase(),l=s.indexOf(i);if(-1===l)return e;const c=l+t.length;return e.substring(0,l)+`<strong>${e.substring(l,c)}</strong>`+e.substring(c)}hasAutocomplete(){return!0===d(this.autocomplete)}handleInputChange(e){this.searchString=e.detail.value,this.isOpen||this.toggleSelectUl()}updateSelection(e,t){e&&e.forEach((e=>{e.selected=e.id===t,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){(null==e?void 0:e.disabled)||(this.itemsList=this.getInitialItemsArray(),e&&this.updateSelection(this.itemsList,e.id),this.selectedItem=this.findSelectedItem(this.itemsList),this.emitOptionSelect(),this.toggleSelectUl(),this.searchString&&(this.searchString=null))}handleResetClick(){this.selectedItem=null,this.searchString=null,this.focusedItemId="",this.emitResetSelect(),this.toggleSelectUl()}handleInputKeyDown(e){switch(e.code){case c.ENTER:case c.SPACE:if(this.focusedItemId)if(this.focusedItemId===this.getResetOptionId())this.handleResetClick();else{const e=this.itemsList.find((e=>this.getOptionId(e)===this.focusedItemId))||null;e&&(this.selectedItem=e,this.emitOptionSelect(),this.toggleSelectUl())}break;case c.ARROW_DOWN:case c.ARROW_UP:this.arrowsSelectNav(e)}}arrowsSelectNav(e){if(![c.ARROW_DOWN,c.ARROW_UP].includes(e.key))return;e.preventDefault(),e.stopPropagation();const t=this.focusedItemId?this.host.querySelector(`#${this.focusedItemId}`):null,s=Array.from(this.host.querySelectorAll('[role="option"]'));if(!s.length)return;const i=t?s.indexOf(t):null,l=s.length-1;if(!this.isOpen&&(this.toggleSelectUl(),this.selectedItem))return void this.focusSelectItem(this.getOptionId(this.selectedItem));let r=null;e.code===c.ARROW_DOWN?r=null===i?s[0]:s[i+1]||s[l]:e.code===c.ARROW_UP&&(r=null===i?s[l]:s[i-1]||s[0]),this.focusSelectItem(r.id)}focusSelectItem(e){this.focusedItemId=e,this.host.querySelector(`#${e}`).scrollIntoView({block:"nearest",container:"nearest"})}toggleSelectUl(e=!1){var t;this.disabled||this.readonly||(this.isOpen?(document.removeEventListener("click",this.handleSelectFocus),document.removeEventListener("keyup",this.handleSelectFocus),e&&(null===(t=this.host.querySelector(`#${this.htmlid}_select_input`))||void 0===t||t.focus()),this.selectedItem&&this.searchString&&(this.searchString=null,this.filterItems(this.searchString))):(document.addEventListener("click",this.handleSelectFocus),document.addEventListener("keyup",this.handleSelectFocus)),this.focusedItemId="",this.isOpen=!this.isOpen)}handleInputClick(e){e.target.closest(".reset-icon")?e.stopPropagation():this.toggleSelectUl()}handleSelectFocus(e){if(e instanceof KeyboardEvent&&e.key===c.ESC)return e.stopPropagation(),this.toggleSelectUl(!0);if(e instanceof KeyboardEvent&&e.key!==c.TAB)return;const t=z();if(!(null==t?void 0:t.hasAttribute("disabled"))&&!p(t).find((e=>"z-input"===e.nodeName.toLowerCase()&&e.id===`${this.htmlid}_input`))){const e=p(t).find((e=>"Z-SELECT"===e.nodeName));this.toggleSelectUl(e===this.host)}}scrollToLetter(e){if(!this.itemsList.length)return;const t=this.itemsList.find((t=>t.name.toLowerCase().charAt(0)===e.toLowerCase()));t&&(this.isOpen||this.toggleSelectUl(),this.focusSelectItem(this.getOptionId(t)))}renderInput(){let e=null;return this.selectedItem&&(e=h(this.selectedItem.name)),this.isOpen&&void 0!==this.searchString&&(e=this.searchString),[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:e,label:this.label,autocomplete:"off","aria-label":this.ariaLabel,icon:this.isOpen?"caret-up":"caret-down",hasclearicon:!1,message:!1,name:this.name,disabled:this.disabled,readonly:this.readonly||!this.hasAutocomplete()&&this.isOpen,status:this.isOpen?void 0:this.status,size:this.size,role:"combobox","html-aria-expanded":this.isOpen?"true":"false","html-aria-controls":`${this.htmlid}_list`,"html-aria-activedescendant":this.isOpen?this.focusedItemId:"","html-aria-autocomplete":this.hasAutocomplete()?"list":void 0,onClick:e=>this.handleInputClick(e),onKeyDown:e=>this.handleInputKeyDown(e),onInputChange:e=>this.handleInputChange(e),onKeyPress:e=>{this.hasAutocomplete()||(e.preventDefault(),this.scrollToLetter(e.key))}})]}renderSelectUl(){return s("div",{class:this.isOpen?"open":"closed"},s("div",{class:{"ul-scroll-wrapper":!0,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":!1,size:this.listSizeType(),class:{disabled:this.disabled,readonly:this.readonly,[`input-${this.status}`]:!this.isOpen&&!!this.status,"z-scrollbar":!0}},this.resetItem&&this.renderResetItem(),this.renderSelectUlItems())))}renderResetItem(){const e=!this.selectedItem||!this.resetItem;return s("z-list-element",{class:{hide:e,"reset-item":!0,"reset-item-margin":!this.hasGroupItems},clickable:!0,disabled:!1,dividerType:n.ELEMENT,role:e?"presentation":"option","html-tabindex":0,"aria-selected":"false","aria-label":e?void 0:this.resetItem,id:this.getResetOptionId(),size:this.hasTreeItems?r.MEDIUM:this.listSizeType(),onClickItem:()=>this.handleResetClick()},s("div",{class:{"reset-item-content":!0,"tree-list-reset-item":this.hasTreeItems,active:this.focusedItemId===this.getResetOptionId()},"aria-hidden":"true"},s("z-icon",{name:"multiply-circled"}),s("span",null,this.resetItem)))}renderItem(e,t){return s("z-list-element",{clickable:!e.disabled,disabled:e.disabled,dividerType:t?n.HEADER:n.ELEMENT,role:e.disabled?"presentation":"option","html-tabindex":-1,"aria-selected":e.selected?"true":"false","aria-label":e.disabled?void 0:h(e.name),id:this.getOptionId(e),size:this.listSizeType(),onClickItem:()=>this.selectItem(e)},s("div",{class:{"list-element-container":!0,active:this.focusedItemId===this.getOptionId(e)},"aria-hidden":"true"},s("div",{class:{selected:!!e.selected,"list-element-content":!0},innerHTML:e.name}),e.icon&&s("z-tag",{icon:e.icon})))}listSizeType(){return this.hasTreeItems?r.NONE:this.size===l.SMALL||this.size===l.X_SMALL?r.SMALL:r.MEDIUM}renderSelectUlItems(){return this.itemsList.length?this.hasGroupItems?this.hasTreeItems?this.renderGroupedTree():this.renderSelectGroupItems():this.itemsList.map(((e,t,s)=>{const i=t===s.length-1;return this.hasTreeItems?this.renderTreeItems(e,i,s.length>1,!0,e.disabled):this.renderItem(e,i)})):this.renderNoSearchResults()}renderTreeItems(e,t,i,l,c){var r,o;const a=e.disabled||c,d=this.hasGroupItems?void 0:this.hasGroupItems?t&&!i?n.ELEMENT:void 0:l&&i&&!t?n.ELEMENT:void 0;return s("z-list-element",{clickable:!e.disabled,disabled:a,class:{"grouped-tree-parent-node":this.hasGroupItems&&!!(null===(r=e.children)||void 0===r?void 0:r.length),"tree-search-item":this.hasGroupItems&&l&&!(null===(o=e.children)||void 0===o?void 0:o.length)&&!!this.searchString},size:this.listSizeType(),dividerType:d,hasTreeItems:this.hasTreeItems,"html-tabindex":null,role:"presentation"},s("div",{id:this.getOptionId(e),role:a?"presentation":"option","aria-label":a?void 0:h(e.name),class:{"list-element":!0,active:this.focusedItemId===this.getOptionId(e)},onClick:()=>this.selectItem(e)},s("span",{class:"item ellipsis","aria-hidden":"true"},s("span",{class:{"item-label":!0,selected:!!e.selected},title:e.name,innerHTML:e.name})),e.icon&&s("z-tag",{icon:e.icon})),e.children&&e.children.length>0?s("z-list",{role:"presentation"},s("div",{class:"children-node"},e.children.map(((e,t,s)=>this.renderTreeItems(e,t===s.length-1,s.length>1,!1,a))))):null)}renderGroupedTree(){const e=this.getGroupedItems();return e.map((([t,i],l,c)=>{const r=Object.values(e).some((e=>e.length>1));return s("z-list-group",{"divider-type":l===c.length-1?void 0:n.ELEMENT,hasTreeItems:!0,"aria-labelledby":`${this.htmlid}_tree_${l}`},s("span",{class:"body-3-sb z-list-group-title",slot:"header-title",id:`${this.htmlid}_tree_${l}`,"aria-hidden":"true"},t),s("z-list",{role:"presentation"},i.map(((e,t,i)=>[this.renderTreeItems(e,t===i.length-1,r,!0,e.disabled),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":n.ELEMENT,"aria-labelledby":`${this.htmlid}_group_${l}`},s("span",{class:"body-3-sb z-list-group-title",slot:"header-title",id:`${this.htmlid}_group_${l}`,"aria-hidden":"true"},t),i.map(((e,t)=>this.renderItem(e,c&&i.length===t+1))))}))}renderNoSearchResults(){return s("z-list-element",{class:"no-results",size:this.hasTreeItems?r.MEDIUM:this.listSizeType(),"html-tabindex":null,role:"presentation"},this.noresultslabel)}renderMessage(){if(!1!==d(this.message))return s("z-input-message",{message:!0===d(this.message)?void 0:this.message,status:this.status,class:this.size,disabled:this.disabled})}render(){return s("div",{key:"0e8ad3052e2f0fadd2f26bb30be5ec4de8935936",class:"select-wrapper"},this.renderInput(),this.renderSelectUl(),this.renderMessage())}get host(){return i(this)}static get watchers(){return{items:[{watchItems:0}]}}};u.style='.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: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.active.sc-z-select{box-shadow:var(--shadow-focus-primary)}.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.sc-z-select .reset-item-content.active.sc-z-select{box-shadow:var(--shadow-focus-primary)}.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.active.sc-z-select{box-shadow:var(--shadow-focus-primary)}z-list-element.sc-z-select:not([disabled])>.list-element.sc-z-select:hover,z-list-element.sc-z-select:not([disabled])>.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}';export{u as z_select}