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