@infineon/infineon-design-system-stencil 36.0.0--canary.1926.93564ae7fe6a009520fd283251f8fda4bf28a1d5.0 → 36.0.0--canary.1926.89e102ab50f43d510e7b9312dc5bc975589b12f6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/ifx-basic-table.cjs.entry.js +3 -3
- package/dist/cjs/ifx-basic-table.cjs.entry.js.map +1 -1
- package/dist/cjs/ifx-multiselect_2.cjs.entry.js +12 -6
- package/dist/cjs/ifx-multiselect_2.cjs.entry.js.map +1 -1
- package/dist/cjs/ifx-table.cjs.entry.js +3 -3
- package/dist/cjs/ifx-table.cjs.entry.js.map +1 -1
- package/dist/collection/components/select/multi-select/multiselect-option.js +12 -6
- package/dist/collection/components/select/multi-select/multiselect-option.js.map +1 -1
- package/dist/collection/components/table-advanced-version/table.js +3 -3
- package/dist/collection/components/table-advanced-version/table.js.map +1 -1
- package/dist/collection/components/table-basic-version/table.js +3 -3
- package/dist/collection/components/table-basic-version/table.js.map +1 -1
- package/dist/components/ifx-basic-table.js +3 -3
- package/dist/components/ifx-basic-table.js.map +1 -1
- package/dist/components/ifx-multiselect-option.js +1 -1
- package/dist/components/ifx-set-filter.js +1 -1
- package/dist/components/ifx-table.js +3 -3
- package/dist/components/ifx-table.js.map +1 -1
- package/dist/components/p-1c516dc9.js.map +1 -1
- package/dist/components/{p-bd94b562.js → p-b5ab8dee.js} +13 -7
- package/dist/components/p-b5ab8dee.js.map +1 -0
- package/dist/esm/ifx-basic-table.entry.js +3 -3
- package/dist/esm/ifx-basic-table.entry.js.map +1 -1
- package/dist/esm/ifx-multiselect_2.entry.js +12 -6
- package/dist/esm/ifx-multiselect_2.entry.js.map +1 -1
- package/dist/esm/ifx-table.entry.js +3 -3
- package/dist/esm/ifx-table.entry.js.map +1 -1
- package/dist/infineon-design-system-stencil/infineon-design-system-stencil.esm.js +1 -1
- package/dist/infineon-design-system-stencil/{p-787ebf1b.entry.js → p-cd07f70b.entry.js} +2 -2
- package/dist/infineon-design-system-stencil/p-cd07f70b.entry.js.map +1 -0
- package/dist/infineon-design-system-stencil/{p-4f82fcfd.entry.js → p-cf937da8.entry.js} +2 -2
- package/dist/infineon-design-system-stencil/{p-4f82fcfd.entry.js.map → p-cf937da8.entry.js.map} +1 -1
- package/dist/infineon-design-system-stencil/{p-70f4fd1b.entry.js → p-d7b49615.entry.js} +2 -2
- package/dist/infineon-design-system-stencil/{p-70f4fd1b.entry.js.map → p-d7b49615.entry.js.map} +1 -1
- package/package.json +1 -1
- package/dist/components/p-bd94b562.js.map +0 -1
- package/dist/infineon-design-system-stencil/p-787ebf1b.entry.js.map +0 -1
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"names":["multiselectCss","IfxMultiselectStyle0","debounce","func","wait","timeout","executedFunction","args","later","clearTimeout","setTimeout","Multiselect","constructor","hostRef","this","disabled","error","errorMessage","label","placeholder","showSearch","showSelectAll","showClearButton","showExpandCollapse","noResultsMessage","showNoResultsMessage","searchPlaceholder","selectAllLabel","expandLabel","collapseLabel","ariaMultiSelectLabel","ariaMultiSelectLabelledBy","ariaMultiSelectDescribedBy","ariaSearchLabel","ariaClearLabel","ariaToggleLabel","ariaSelectAllLabel","ariaExpandAllLabel","ariaCollapseAllLabel","internalError","persistentSelectedOptions","dropdownOpen","searchTerm","handleSearch","targetElement","value","toLowerCase","isSearchActive","wrapper","el","shadowRoot","querySelector","classList","remove","searchField","searchFieldHasFocus","matches","add","optionsContainer","requestAnimationFrame","allOptions","querySelectorAll","forEach","option","searchEvent","CustomEvent","detail","isActive","dispatchEvent","visibleCount","style","window","getComputedStyle","rect","getBoundingClientRect","display","visibility","opacity","height","handleDocumentClick","event","path","composedPath","includes","dropdownElement","document","removeEventListener","resetSearch","ifxOpen","emit","parseChildOptions","options","childElements","Array","from","children","child","index","tagName","parseOptionElement","push","element","getAttribute","selected","hasAttribute","indeterminate","nestedOptions","filter","map","childIndex","opt","length","loadInitialOptions","internalErrorMessage","initiallySelected","collectSelectedOptions","initiallySelectedNotInState","init","some","selectedOptions","concat","collectLeafOptions","existingOption","leafOptions","handleSearchFocus","hasFocus","positionDropdown","wrapperRect","_a","spaceBelow","innerHeight","bottom","spaceAbove","top","dropdownFlipped","updateSlotBasedSelections","emitEvent","allOptionElements","selectedLeafOptions","optionEl","instance","hasChildren","ifxSelect","updateInitialParentStates","optionsByDepth","depth","parseInt","item","sort","a","b","updateParentState","parentInstance","directChildren","selectedCount","indeterminateCount","totalCount","componentDidLoad","addEventListener","componentWillLoad","updateInternalError","updateInternalErrorMessage","onSelectionChange","newValue","_","formData","FormData","append","name","internals","setFormValue","collapseAll","isExpanded","expandAll","selectAll","clearSelection","toggleDropdown","handleWrapperClick","currentTarget","target","handleKeyDown","code","preventDefault","closest","focusFirstOption","firstOption","labelElement","focus","renderSelectAll","allSelected","toggleSelectAll","stopPropagation","h","class","id","checked","size","onClick","onKeyDown","e","key","renderNoResultsMessage","render","selectedOptionsLabels","optionElement","textContent","trim","join","hasSelections","isFlatMultiselect","every","ref","role","undefined","tabindex","onIfxInput","onFocus","onBlur","tabIndex","icon","multiselectOptionCss","IfxMultiselectOptionStyle0","MultiselectOption","isSearchDisabled","handleSearchFilter","updateSearchClasses","handleCheckboxClick","newSelectedState","selectAllChildren","expandAllChildren","updateParentStates","notifyMultiselect","handleHeaderClick","handleClick","calculateDepth","setAttribute","toString","hasSelectedChildren","hasAnySelectedChildren","disconnectedCallback","optionDiv","removeHighlighting","getTextContent","matchesSearch","hasMatchingParent","hasMatchingChildren","highlightSearchTerm","slotElement","originalText","searchTermLower","originalTextLower","searchIndex","indexOf","beforeMatch","substring","matchText","afterMatch","highlightedContent","createElement","className","appendChild","createTextNode","boldElement","highlightedElement","removeChild","removeAttribute","text","childNodes","node","nodeType","Node","TEXT_NODE","childOptions","childInstance","childText","childMatches","grandChildrenMatch","parent","parentElement","parentText","type","toggleExpansion","updateEvent","bubbles","call","expanded","siblings","sibling","hasSelected","hasSelectedDescendants","checkForSelectedDescendants","nestedChild","isSelected","hasSelectedNested","parentMultiselect","basePadding","additionalPadding","totalPadding","optionItemStyle","paddingLeft","Host"],"sources":["src/components/select/multi-select/multiselect.scss?tag=ifx-multiselect&encapsulation=shadow","src/components/select/multi-select/multiselect.tsx","src/components/select/multi-select/multiselect-option.scss?tag=ifx-multiselect-option&encapsulation=shadow","src/components/select/multi-select/multiselect-option.tsx"],"sourcesContent":["// @import '~choices.js/public/assets/styles/choices.css';\n@use \"~@infineon/design-system-tokens/dist/tokens\";\n@use \"../../../global/font.scss\";\n\n.ifx-multiselect-container {\n position: relative;\n box-sizing: border-box;\n font-family: var(--ifx-font-family); // tokens.$ifxFontFamilyBody;\n\n\n\n &:hover {\n cursor: pointer;\n }\n\n .ifx-label-wrapper {\n font-size: tokens.$ifxFontSizeM;\n line-height: tokens.$ifxLineHeightM;\n white-space: pre-wrap;\n word-wrap: break-word;\n overflow-wrap: anywhere;\n max-width: 100%;\n }\n\n .ifx-error-message-wrapper {\n color: #CD002F;\n font-size: tokens.$ifxFontSizeXs;\n line-height: tokens.$ifxLineHeightXs;\n white-space: pre-wrap;\n word-wrap: break-word;\n overflow-wrap: anywhere;\n max-width: 100%;\n }\n\n .ifx-multiselect-wrapper {\n background-color: tokens.$ifxColorBaseWhite;\n box-sizing: border-box;\n display: flex;\n align-items: center;\n border: 1px solid tokens.$ifxColorEngineering400;\n border-radius: tokens.$ifxBorderRadius12;\n width: 100%;\n font-weight: 400;\n font-style: normal;\n height: 40px;\n line-height: 24px;\n padding: 8px 16px;\n font-size: tokens.$ifxFontSizeM;\n line-height: tokens.$ifxLineHeightM;\n\n &:focus-visible {\n outline: none;\n }\n\n &:focus-visible:not(.active):not(:active) {\n outline: none;\n\n &::before {\n content: '';\n position: absolute;\n width: calc(100% + 4px);\n height: calc(100% + 4px);\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n border: 2px solid tokens.$ifxColorOcean500;\n border-radius: 2px;\n\n }\n }\n\n &.disabled {\n background: tokens.$ifxColorEngineering200;\n color: #575352;\n border-color: #575352;\n cursor: default;\n -webkit-user-select: none;\n -ms-user-select: none;\n user-select: none;\n }\n\n &.error {\n border-color: #CD002F;\n }\n\n &:hover:not(.focus, :focus) {\n border-color: tokens.$ifxColorEngineering500;\n }\n\n &.active {\n border-color: tokens.$ifxColorOcean500 !important; // Active border color\n\n & .icon-wrapper-up {\n display: flex;\n align-items: center;\n justify-content: center;\n padding-left: tokens.$ifxSpace100;\n }\n\n & .icon-wrapper-down {\n display: none\n }\n }\n\n\n & .icon-wrapper-up {\n display: none;\n }\n\n & .icon-wrapper-down {\n display: flex;\n align-items: center;\n justify-content: center;\n padding-left: tokens.$ifxSpace100;\n }\n\n &.is-flipped {\n .ifx-multiselect-dropdown-menu {\n top: auto;\n bottom: 100%;\n }\n }\n }\n\n .ifx-multiselect-input {\n flex-grow: 1;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n\n &.placeholder {\n opacity: 0.5;\n }\n\n }\n\n\n .ifx-multiselect-icon-container {\n margin-left: auto;\n display: flex;\n align-items: center;\n gap: tokens.$ifxSpace100;\n\n .ifx-multiselect-icon-container {\n display: flex;\n }\n\n .icon-wrapper {\n display: flex;\n align-items: center;\n transition: transform 0.2s ease-in-out;\n }\n\n .icon-wrapper--open {\n transform: rotate(180deg);\n }\n }\n\n .ifx-clear-button {\n display: flex;\n align-items: center;\n\n &.hide {\n display: none;\n }\n }\n\n .ifx-multiselect-dropdown-menu {\n box-sizing: border-box;\n position: absolute;\n top: 100%;\n left: 0;\n width: 100%;\n margin-top: tokens.$ifxSpace50;\n border: 1px solid tokens.$ifxColorEngineering200;\n background-color: #fff;\n box-shadow: 0px 6px 9px 0px rgba(29, 29, 29, 0.10);\n max-height: 300px;\n z-index: 1000;\n display: flex;\n flex-direction: column;\n }\n}\n\n.ifx-multiselect-dropdown-functions {\n padding: tokens.$ifxSpace150 tokens.$ifxSpace200;\n border-bottom: 1px solid tokens.$ifxColorEngineering200;\n flex-shrink: 0;\n}\n\n.ifx-multiselect-dropdown-search {\n margin-bottom: tokens.$ifxSpace150;\n}\n\n.ifx-multiselect-dropdown-controls {\n display: flex;\n flex-wrap: wrap;\n justify-content: space-between;\n gap: tokens.$ifxSpace100;\n\n .select-all-wrapper {\n display: flex;\n }\n\n .expand-collapse-controls {\n display: flex;\n gap: tokens.$ifxSpace150;\n }\n\n .control-item {\n font-size: tokens.$ifxFontSizeS;\n line-height: tokens.$ifxLineHeightS;\n\n &:focus {\n outline: none;\n }\n\n &:focus-visible {\n outline: 2px solid tokens.$ifxColorOcean500;\n outline-offset: 2px;\n border-radius: tokens.$ifxBorderRadius12;\n }\n }\n}\n\n.ifx-multiselect-options {\n flex: 1;\n overflow-y: auto;\n padding-top: tokens.$ifxSpace150;\n padding-bottom: tokens.$ifxSpace150;\n\n &.show-no-results {\n .ifx-multiselect-no-results {\n display: block;\n }\n }\n}\n\n.ifx-multiselect-no-results {\n padding-left: tokens.$ifxSpace200;\n padding-right: tokens.$ifxSpace200;\n display: none;\n}\n\n","import { Component, Prop, State, Event, EventEmitter, Element, AttachInternals, h, Watch, Method } from '@stencil/core';\nimport { Option } from './interfaces';\n\nfunction debounce(func, wait) {\n let timeout;\n return function executedFunction(...args) {\n const later = () => {\n clearTimeout(timeout);\n func(...args);\n };\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n };\n}\n\n@Component({\n tag: 'ifx-multiselect',\n styleUrl: 'multiselect.scss',\n shadow: true,\n formAssociated: true\n})\n\nexport class Multiselect {\n @Prop() name: string;\n @Prop() disabled: boolean = false;\n @Prop() error: boolean = false;\n @Prop() errorMessage: string = \"Error\";\n @Prop() label: string = \"\";\n @Prop() placeholder: string = \"\";\n @Prop() showSearch: boolean = true;\n @Prop() showSelectAll: boolean = true;\n @Prop() showClearButton: boolean = true;\n @Prop() showExpandCollapse: boolean = true;\n @Prop() noResultsMessage: string = \"No results found.\";\n @Prop() showNoResultsMessage: boolean = true;\n @Prop() searchPlaceholder: string = \"Search\";\n @Prop() selectAllLabel: string = \"Select all\";\n @Prop() expandLabel: string = \"Expand\";\n @Prop() collapseLabel: string = \"Collapse\";\n @Prop() ariaMultiSelectLabel: string = \"Multi-select dropdown\";\n @Prop() ariaMultiSelectLabelledBy: string = \"\";\n @Prop() ariaMultiSelectDescribedBy: string = \"\";\n @Prop() ariaSearchLabel: string = \"Search options\";\n @Prop() ariaClearLabel: string = \"Clear all selections\";\n @Prop() ariaToggleLabel: string = \"Toggle dropdown\";\n @Prop() ariaSelectAllLabel: string = \"Select all options\";\n @Prop() ariaExpandAllLabel: string = \"Expand all categories\";\n @Prop() ariaCollapseAllLabel: string = \"Collapse all categories\";\n\n @State() internalError: boolean = false;\n @State() internalErrorMessage: string;\n @State() persistentSelectedOptions: Option[] = [];\n @State() dropdownOpen = false;\n @State() dropdownFlipped: boolean;\n @State() searchTerm: string = '';\n\n @Event() ifxSelect: EventEmitter;\n @Event() ifxOpen: EventEmitter;\n\n @Element() el: HTMLElement;\n dropdownElement!: HTMLElement;\n\n @AttachInternals() internals: ElementInternals;\n private parseChildOptions(): Option[] {\n const options: Option[] = [];\n const childElements = Array.from(this.el.children);\n\n childElements.forEach((child, index) => {\n if (child.tagName === 'IFX-MULTISELECT-OPTION') {\n const option = this.parseOptionElement(child as HTMLElement, index);\n if (option) {\n options.push(option);\n }\n }\n });\n\n return options;\n }\n\n private parseOptionElement(element: HTMLElement, index: number): Option | null {\n const value = element.getAttribute('value') || `option-${index}`;\n const selected = element.hasAttribute('selected');\n const disabled = element.hasAttribute('disabled');\n const indeterminate = element.hasAttribute('indeterminate');\n\n const option: Option = {\n value,\n selected,\n disabled,\n indeterminate\n };\n\n const nestedOptions = Array.from(element.children)\n .filter(child => child.tagName === 'IFX-MULTISELECT-OPTION')\n .map((child, childIndex) => this.parseOptionElement(child as HTMLElement, childIndex))\n .filter(opt => opt !== null) as Option[];\n\n if (nestedOptions.length > 0) {\n option.children = nestedOptions;\n }\n\n return option;\n }\n\n loadInitialOptions() {\n this.internalError = this.error;\n this.internalErrorMessage = this.errorMessage;\n\n const allOptions = this.parseChildOptions();\n const initiallySelected = this.collectSelectedOptions(allOptions);\n const initiallySelectedNotInState = initiallySelected.filter(init =>\n !this.persistentSelectedOptions.some(opt => opt.value == init.value)\n );\n this.persistentSelectedOptions = [...this.persistentSelectedOptions, ...initiallySelectedNotInState];\n }\n\n private collectSelectedOptions(options: Option[]): Option[] {\n let selectedOptions: Option[] = [];\n\n for (const option of options) {\n if (option.selected) {\n if (option.children && option.children.length > 0) {\n selectedOptions = selectedOptions.concat(this.collectLeafOptions(option.children));\n } else {\n if (!selectedOptions.some(existingOption => existingOption.value === option.value)) {\n selectedOptions.push(option);\n }\n }\n } else {\n if (option.children && option.children.length > 0) {\n selectedOptions = selectedOptions.concat(this.collectSelectedOptions(option.children));\n }\n }\n }\n\n return selectedOptions;\n }\n\n private collectLeafOptions(children: Option[]): Option[] {\n let leafOptions = [];\n\n for (const child of children) {\n if (child.children && child.children.length > 0) {\n leafOptions = leafOptions.concat(this.collectLeafOptions(child.children));\n } else {\n leafOptions.push(child);\n }\n }\n return leafOptions;\n }\n\n handleSearch = debounce((targetElement: HTMLInputElement) => {\n const searchTerm = targetElement.value.toLowerCase();\n const isSearchActive = searchTerm !== '';\n\n this.searchTerm = searchTerm;\n\n const wrapper = this.el.shadowRoot.querySelector('.ifx-multiselect-wrapper');\n if (wrapper) {\n if (isSearchActive) {\n wrapper.classList.remove('active');\n } else {\n const searchField = this.el.shadowRoot.querySelector('ifx-search-field');\n const searchFieldHasFocus = searchField && searchField.matches(':focus-within');\n if (!searchFieldHasFocus) {\n wrapper.classList.add('active');\n }\n }\n }\n\n const optionsContainer = this.el.shadowRoot.querySelector('.ifx-multiselect-options');\n if (optionsContainer) {\n if (isSearchActive) {\n optionsContainer.classList.add('has-search-filter');\n } else {\n optionsContainer.classList.remove('has-search-filter');\n }\n }\n\n requestAnimationFrame(() => {\n const allOptions = this.el.querySelectorAll('ifx-multiselect-option');\n allOptions.forEach(option => {\n const searchEvent = new CustomEvent('ifx-search-filter', {\n detail: { searchTerm, isActive: isSearchActive }\n });\n option.dispatchEvent(searchEvent);\n });\n\n if (isSearchActive) {\n setTimeout(() => {\n const allOptions = this.el.querySelectorAll('ifx-multiselect-option');\n let visibleCount = 0;\n\n allOptions.forEach(option => {\n const style = window.getComputedStyle(option);\n const rect = option.getBoundingClientRect();\n\n if (style.display !== 'none' &&\n style.visibility !== 'hidden' &&\n style.opacity !== '0' &&\n rect.height > 0) {\n visibleCount++;\n }\n });\n\n const optionsContainer = this.el.shadowRoot.querySelector('.ifx-multiselect-options');\n if (optionsContainer) {\n if (visibleCount === 0) {\n optionsContainer.classList.add('show-no-results');\n } else {\n optionsContainer.classList.remove('show-no-results');\n }\n }\n }, 200);\n } else {\n const optionsContainer = this.el.shadowRoot.querySelector('.ifx-multiselect-options');\n if (optionsContainer) {\n optionsContainer.classList.remove('show-no-results');\n }\n }\n });\n }, 150);\n\n private handleSearchFocus(hasFocus: boolean) {\n const wrapper = this.el.shadowRoot.querySelector('.ifx-multiselect-wrapper');\n if (wrapper) {\n if (hasFocus || this.searchTerm !== '') {\n wrapper.classList.remove('active');\n } else {\n wrapper.classList.add('active');\n }\n }\n }\n\n positionDropdown() {\n const wrapperRect = this.el.shadowRoot.querySelector('.ifx-multiselect-wrapper')?.getBoundingClientRect();\n const spaceBelow = window.innerHeight - wrapperRect.bottom;\n const spaceAbove = wrapperRect.top;\n\n if ((spaceAbove > spaceBelow && wrapperRect.height > spaceBelow) || (wrapperRect.bottom > window.innerHeight)) {\n this.dropdownFlipped = true;\n } else {\n this.dropdownFlipped = false;\n }\n }\n\n public updateSlotBasedSelections(emitEvent: boolean = false) {\n const allOptionElements = this.el.querySelectorAll('ifx-multiselect-option');\n const selectedLeafOptions: Option[] = [];\n\n allOptionElements.forEach((optionEl: any) => {\n const instance = optionEl['__stencil_instance'];\n if (instance && instance.selected && !instance.hasChildren) {\n selectedLeafOptions.push({\n value: instance.value,\n selected: true,\n disabled: instance.disabled\n });\n }\n });\n\n this.persistentSelectedOptions = selectedLeafOptions;\n\n if (emitEvent) {\n this.ifxSelect.emit(this.persistentSelectedOptions);\n }\n }\n\n private updateInitialParentStates() {\n const allOptionElements = this.el.querySelectorAll('ifx-multiselect-option');\n const optionsByDepth = Array.from(allOptionElements)\n .map(el => ({\n element: el,\n instance: (el as any)['__stencil_instance'],\n depth: parseInt(el.getAttribute('data-level') || '0')\n }))\n .filter(item => item.instance)\n .sort((a, b) => b.depth - a.depth);\n\n optionsByDepth.forEach(({ instance }) => {\n if (instance.hasChildren) {\n this.updateParentState(instance);\n }\n });\n }\n\n private updateParentState(parentInstance: any) {\n const directChildren = Array.from(parentInstance.el.children as HTMLCollection)\n .filter((child: Element) => child.tagName === 'IFX-MULTISELECT-OPTION')\n .map(child => (child as any)['__stencil_instance'])\n .filter(instance => instance !== null);\n\n const selectedCount = directChildren.filter(child => child.selected).length;\n const indeterminateCount = directChildren.filter(child => child.indeterminate).length;\n const totalCount = directChildren.length;\n\n if (selectedCount === totalCount && indeterminateCount === 0) {\n parentInstance.selected = true;\n parentInstance.indeterminate = false;\n } else if (selectedCount === 0 && indeterminateCount === 0) {\n parentInstance.selected = false;\n parentInstance.indeterminate = false;\n } else {\n parentInstance.selected = false;\n parentInstance.indeterminate = true;\n }\n }\n\n componentDidLoad() {\n setTimeout(() => {\n this.positionDropdown();\n }, 500);\n\n this.el.addEventListener('ifx-option-changed', () => {\n requestAnimationFrame(() => {\n this.updateSlotBasedSelections(true);\n });\n });\n\n setTimeout(() => {\n this.updateSlotBasedSelections(false);\n this.updateInitialParentStates();\n }, 100);\n }\n\n componentWillLoad() {\n this.loadInitialOptions();\n }\n\n @Watch('error')\n updateInternalError() {\n this.internalError = this.error;\n }\n\n @Watch('errorMessage')\n updateInternalErrorMessage() {\n this.internalErrorMessage = this.errorMessage;\n }\n\n @Watch('persistentSelectedOptions')\n onSelectionChange(newValue: Option[], _: Option[]) {\n const formData = new FormData();\n newValue.forEach(option => formData.append(this.name, option.value));\n this.internals.setFormValue(formData);\n }\n collapseAll() {\n const allOptionElements = this.el.querySelectorAll('ifx-multiselect-option');\n allOptionElements.forEach((optionEl: any) => {\n const instance = optionEl['__stencil_instance'];\n if (instance && instance.hasChildren) {\n instance.isExpanded = false;\n }\n });\n }\n\n expandAll() {\n const allOptionElements = this.el.querySelectorAll('ifx-multiselect-option');\n allOptionElements.forEach((optionEl: any) => {\n const instance = optionEl['__stencil_instance'];\n if (instance && instance.hasChildren) {\n instance.isExpanded = true;\n }\n });\n }\n\n selectAll() {\n this.resetSearch();\n\n const allOptionElements = this.el.querySelectorAll('ifx-multiselect-option');\n\n allOptionElements.forEach((optionEl: any) => {\n const instance = optionEl['__stencil_instance'];\n if (instance) {\n if (instance.hasChildren) {\n instance.isExpanded = true;\n } else {\n instance.selected = true;\n }\n }\n });\n\n setTimeout(() => {\n this.updateInitialParentStates();\n this.updateSlotBasedSelections(false);\n this.ifxSelect.emit(this.persistentSelectedOptions);\n }, 0);\n }\n\n @Method()\n async clearSelection() {\n const allOptionElements = this.el.querySelectorAll('ifx-multiselect-option');\n allOptionElements.forEach((optionEl: any) => {\n const instance = optionEl['__stencil_instance'];\n if (instance) {\n instance.selected = false;\n instance.indeterminate = false;\n if (instance.hasChildren) {\n instance.isExpanded = false;\n }\n }\n });\n\n this.persistentSelectedOptions = [];\n\n setTimeout(() => {\n this.updateSlotBasedSelections(false);\n this.ifxSelect.emit(this.persistentSelectedOptions);\n }, 0);\n }\n\n handleDocumentClick = (event: Event) => {\n const path = event.composedPath();\n if (!path.includes(this.dropdownElement)) {\n this.dropdownOpen = false;\n document.removeEventListener('click', this.handleDocumentClick);\n this.resetSearch();\n this.ifxOpen.emit(this.dropdownOpen);\n }\n }\n\n toggleDropdown() {\n this.dropdownOpen = !this.dropdownOpen;\n setTimeout(() => {\n if (this.dropdownOpen) {\n document.addEventListener('click', this.handleDocumentClick);\n } else {\n this.resetSearch();\n }\n this.ifxOpen.emit(this.dropdownOpen);\n }, 0);\n }\n\n private resetSearch() {\n this.searchTerm = '';\n\n const searchField = this.el.shadowRoot.querySelector('ifx-search-field') as any;\n if (searchField) {\n searchField.value = '';\n }\n\n const optionsContainer = this.el.shadowRoot.querySelector('.ifx-multiselect-options');\n if (optionsContainer) {\n optionsContainer.classList.remove('has-search-filter');\n }\n\n const allOptions = this.el.querySelectorAll('ifx-multiselect-option');\n allOptions.forEach(option => {\n const searchEvent = new CustomEvent('ifx-search-filter', {\n detail: { searchTerm: '', isActive: false }\n });\n option.dispatchEvent(searchEvent);\n });\n }\n\n handleWrapperClick(event: MouseEvent) {\n this.positionDropdown();\n\n if (event.currentTarget === event.target) {\n this.toggleDropdown();\n }\n }\n\n handleKeyDown(event: KeyboardEvent) {\n if (this.disabled) return;\n\n // If dropdown is closed, only allow opening\n if (!this.dropdownOpen) {\n switch (event.code) {\n case 'Enter':\n case 'Space':\n case 'ArrowDown':\n event.preventDefault();\n this.toggleDropdown();\n break;\n }\n return;\n }\n\n // Dropdown is open - handle navigation and controls\n switch (event.code) {\n case 'Escape':\n event.preventDefault();\n this.toggleDropdown();\n break;\n case 'Enter':\n case 'Space':\n // Don't close dropdown when pressing space/enter in controls area\n const target = event.target as HTMLElement;\n if (!target.closest('.ifx-multiselect-dropdown-functions')) {\n event.preventDefault();\n this.toggleDropdown();\n }\n break;\n case 'ArrowDown':\n case 'ArrowUp':\n // Focus first/last option for navigation\n event.preventDefault();\n this.focusFirstOption();\n break;\n }\n }\n\n private focusFirstOption() {\n const firstOption = this.el.querySelector('ifx-multiselect-option:not(.search-hidden)');\n if (firstOption) {\n const labelElement = firstOption.shadowRoot?.querySelector('.option-label') as HTMLElement;\n labelElement?.focus();\n }\n }\n\n private renderSelectAll() {\n const allOptionElements = this.el.querySelectorAll('ifx-multiselect-option');\n const leafOptions = Array.from(allOptionElements).filter((el: any) => !el.hasChildren);\n const selectedLeafOptions = Array.from(allOptionElements).filter((el: any) => !el.hasChildren && el.selected);\n\n const allSelected = leafOptions.length > 0 && selectedLeafOptions.length === leafOptions.length;\n\n const toggleSelectAll = (event?: Event) => {\n if (event) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n if (allSelected) {\n this.clearSelection();\n } else {\n this.selectAll();\n }\n };\n\n return (\n <div class=\"select-all-wrapper\">\n <ifx-checkbox\n id='selectAll'\n checked={allSelected}\n size=\"s\"\n aria-label={this.ariaSelectAllLabel}\n onClick={toggleSelectAll}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n e.stopPropagation();\n toggleSelectAll(e);\n }\n }}\n >\n {this.selectAllLabel}\n </ifx-checkbox>\n </div>\n );\n }\n\n private renderNoResultsMessage() {\n return (\n <div class=\"ifx-multiselect-no-results\">\n <div class=\"no-results-content\">\n <span class=\"no-results-text\">{this.noResultsMessage}</span>\n </div>\n </div>\n );\n }\n\n render() {\n const selectedOptionsLabels = this.persistentSelectedOptions\n .map((option) => {\n const optionElement = this.el.querySelector(`ifx-multiselect-option[value=\"${option.value}\"]`);\n return optionElement?.textContent?.trim() || option.value;\n })\n .join(', ');\n\n const hasSelections = this.persistentSelectedOptions.length > 0;\n\n let isFlatMultiselect = false;\n const allOptionElements = this.el.querySelectorAll('ifx-multiselect-option');\n if (allOptionElements.length > 0) {\n isFlatMultiselect = Array.from(allOptionElements).every(option => option.children.length === 0);\n }\n\n return (\n <div class={`ifx-multiselect-container`} ref={el => this.dropdownElement = el as HTMLElement}>\n {\n this.label ?\n <div class=\"ifx-label-wrapper\">\n <span>{this.label}</span>\n </div> : null\n }\n <div class={`ifx-multiselect-wrapper\n ${this.dropdownOpen ? 'active' : ''}\n ${this.dropdownFlipped ? 'is-flipped' : ''}\n ${this.internalError ? 'error' : \"\"}\n ${this.disabled ? 'disabled' : \"\"}`}\n role=\"combobox\"\n aria-label={this.ariaMultiSelectLabel}\n aria-labelledby={this.ariaMultiSelectLabelledBy || undefined}\n aria-describedby={this.ariaMultiSelectDescribedBy || undefined}\n aria-expanded={this.dropdownOpen}\n aria-haspopup=\"listbox\"\n aria-disabled={this.disabled}\n tabindex=\"0\"\n onClick={this.disabled ? undefined : (event) => this.handleWrapperClick(event)}\n onKeyDown={this.disabled ? undefined : (event) => this.handleKeyDown(event)} >\n <div class={`ifx-multiselect-input\n ${hasSelections ? '' : 'placeholder'}\n `}\n onClick={this.disabled ? undefined : () => this.toggleDropdown()}\n >\n {hasSelections ? selectedOptionsLabels : this.placeholder}\n </div>\n {this.dropdownOpen && (\n <div class=\"ifx-multiselect-dropdown-menu\">\n\n {(this.showSearch || this.showSelectAll || (this.showExpandCollapse && !isFlatMultiselect)) && (\n <div class=\"ifx-multiselect-dropdown-functions\" onClick={(e) => e.stopPropagation()}>\n {this.showSearch && (\n <div class=\"ifx-multiselect-dropdown-search\">\n <ifx-search-field\n class=\"search-input\"\n placeholder={this.searchPlaceholder}\n size=\"s\"\n show-delete-icon=\"true\"\n aria-label={this.ariaSearchLabel}\n onKeyDown={(e) => { e.stopPropagation() }}\n onIfxInput={(event) => this.handleSearch(event.target)}\n onFocus={() => this.handleSearchFocus(true)}\n onBlur={() => this.handleSearchFocus(false)}\n ></ifx-search-field>\n </div>\n )}\n\n <div class=\"ifx-multiselect-dropdown-controls\">\n {this.showSelectAll && this.renderSelectAll()}\n {this.showExpandCollapse && !isFlatMultiselect && (\n <div class=\"expand-collapse-controls\">\n <span\n class=\"control-item\"\n role=\"button\"\n tabIndex={0}\n aria-label={this.ariaExpandAllLabel}\n onClick={(e) => { e.stopPropagation(); this.expandAll(); }}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n e.stopPropagation();\n this.expandAll();\n }\n }}\n >\n {this.expandLabel}\n </span>\n <span\n class=\"control-item\"\n role=\"button\"\n tabIndex={0}\n aria-label={this.ariaCollapseAllLabel}\n onClick={(e) => { e.stopPropagation(); this.collapseAll(); }}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n e.stopPropagation();\n this.collapseAll();\n }\n }}\n >\n {this.collapseLabel}\n </span>\n </div>\n )}\n </div>\n </div>\n )}\n\n <div class=\"ifx-multiselect-options\" role=\"listbox\" aria-multiselectable=\"true\">\n <slot />\n {this.searchTerm && this.showNoResultsMessage && this.renderNoResultsMessage()}\n </div>\n </div>\n )}\n <div class='ifx-multiselect-icon-container'>\n\n {/* Clear Button - will show only if there's a selection */}\n {hasSelections && (\n <div class={`ifx-clear-button ${!this.showClearButton ? 'hide' : ''}`}\n aria-label={this.ariaClearLabel}\n role=\"button\"\n tabIndex={0}\n onClick={this.disabled ? undefined : (e) => { e.stopPropagation(); this.clearSelection(); }}\n onKeyDown={this.disabled ? undefined : (e) => { if (e.key === 'Enter' || e.key === ' ') { e.stopPropagation(); this.clearSelection(); } }}>\n <ifx-icon icon=\"c-remove-16\" key=\"clear-icon\"></ifx-icon>\n </div>\n )}\n <div class={`icon-wrapper ${this.dropdownOpen ? 'icon-wrapper--open' : 'icon-wrapper--closed'}`}\n aria-label={this.ariaToggleLabel}\n role=\"button\"\n tabIndex={0}\n onClick={this.disabled ? undefined : (e) => { e.stopPropagation(); this.toggleDropdown(); }}\n onKeyDown={this.disabled ? undefined : (e) => { if (e.key === 'Enter' || e.key === ' ') { e.stopPropagation(); this.toggleDropdown(); } }}>\n <ifx-icon icon='chevron-down-16' key=\"chevron-icon\"></ifx-icon>\n </div>\n </div>\n\n </div>\n {\n this.internalError ?\n <div class=\"ifx-error-message-wrapper\">\n <span>{this.internalErrorMessage}</span>\n </div> : null\n }\n </div>\n );\n }\n}\n","@use \"~@infineon/design-system-tokens/dist/tokens\";\n\n:host {\n display: block;\n width: 100%;\n}\n\n.option {\n display: flex;\n flex-direction: column;\n position: relative;\n cursor: pointer;\n list-style: none;\n\n &.option--expanded {\n position: relative;\n }\n\n &.option--has-children {\n position: relative;\n\n .option-item > .chevron-wrapper {\n display: flex;\n }\n }\n\n &--disabled {\n cursor: not-allowed;\n pointer-events: none;\n color: tokens.$ifxColorEngineering300;\n }\n\n &--selected {\n // Additional styles for selected state if needed\n // .option-item {\n // background: red;\n // }\n }\n\n &.search-hidden {\n display: none !important;\n }\n\n &.search-match {\n .option-item {\n .option-label {\n .search-highlight {\n font-weight: bold;\n // color: tokens.$ifxColorOcean400;\n }\n }\n }\n }\n}\n\n.option-item {\n display: flex;\n flex-direction: row;\n align-items: center;\n white-space: nowrap;\n min-height: tokens.$ifxSize250;\n padding: tokens.$ifxSize50 tokens.$ifxSpace200;\n background-color: tokens.$ifxColorBaseWhite;\n transition: background-color 0.2s ease-in-out;\n\n &:hover {\n background-color: tokens.$ifxColorEngineering100;\n }\n\n .option--disabled & {\n &:hover {\n background-color: transparent;\n }\n }\n}\n\n.option-children {\n display: block;\n}\n\n.chevron-wrapper {\n display: none;\n align-items: center;\n justify-content: center;\n margin-right: tokens.$ifxSpace100;\n width: tokens.$ifxSize250;\n height: tokens.$ifxSize250;\n flex-shrink: 0;\n\n &:focus {\n outline: none;\n }\n\n &:focus-visible {\n outline: 2px solid tokens.$ifxColorOcean500;\n outline-offset: 2px;\n border-radius: tokens.$ifxBorderRadius12;\n }\n\n .option--has-children & {\n display: flex;\n }\n\n .chevron {\n transition: transform 0.2s ease-in-out;\n color: tokens.$ifxColorEngineering600;\n\n &.chevron--expanded {\n transform: rotate(90deg);\n }\n\n &.chevron--collapsed {\n transform: rotate(0deg);\n }\n }\n}\n\n.checkbox-wrapper {\n display: flex;\n align-items: center;\n margin-right: tokens.$ifxSpace100;\n flex-shrink: 0;\n}\n\n.option-label {\n flex-grow: 1;\n display: flex;\n align-items: center;\n cursor: pointer;\n padding: tokens.$ifxSpace25 0;\n font-size: tokens.$ifxFontSizeS;\n\n &:focus {\n outline: none;\n }\n\n &:focus-visible {\n outline: 2px solid tokens.$ifxColorOcean500;\n outline-offset: 2px;\n border-radius: tokens.$ifxBorderRadius12;\n }\n\n .option--disabled & {\n cursor: not-allowed;\n color: tokens.$ifxColorEngineering300;\n }\n}\n","import { Component, Prop, Element, h, Host, State, Listen } from '@stencil/core';\n\n@Component({\n tag: 'ifx-multiselect-option',\n styleUrl: 'multiselect-option.scss',\n shadow: true,\n})\nexport class MultiselectOption {\n @Element() el: HTMLElement;\n\n @Prop() value: string;\n @Prop({ reflect: true, mutable: true }) selected: boolean = false;\n @Prop({ reflect: true, mutable: true }) disabled: boolean = false;\n @Prop({ reflect: true, mutable: true }) indeterminate: boolean = false;\n\n @State() private isExpanded: boolean = false;\n @State() private hasChildren: boolean = false;\n @State() private depth: number = 0;\n @State() private searchTerm: string = '';\n @State() private isSearchActive: boolean = false;\n @State() private isSearchDisabled: boolean = false;\n\n componentWillLoad() {\n this.hasChildren = this.el.children.length > 0;\n this.depth = this.calculateDepth();\n\n this.el.setAttribute('data-level', this.depth.toString());\n\n if (this.hasChildren) {\n const hasSelectedChildren = this.hasAnySelectedChildren();\n if (hasSelectedChildren) {\n this.isExpanded = true;\n }\n }\n }\n\n componentDidLoad() {\n // if (this.hasChildren) {\n // const hasSelectedChildren = this.hasAnySelectedChildren();\n // if (hasSelectedChildren) {\n // this.isExpanded = true;\n // }\n // }\n\n (this.el as any)['__stencil_instance'] = this;\n this.notifyMultiselect();\n this.el.addEventListener('ifx-search-filter', this.handleSearchFilter);\n }\n\n disconnectedCallback() {\n this.el.removeEventListener('ifx-search-filter', this.handleSearchFilter);\n }\n\n private handleSearchFilter = (event: CustomEvent) => {\n const { searchTerm, isActive } = event.detail;\n this.searchTerm = searchTerm.toLowerCase();\n this.isSearchActive = isActive;\n\n requestAnimationFrame(() => {\n this.updateSearchClasses();\n });\n }\n\n private updateSearchClasses() {\n const optionDiv = this.el.shadowRoot?.querySelector('.option');\n if (!optionDiv) return;\n\n if (!this.isSearchActive) {\n optionDiv.classList.remove('search-hidden', 'search-parent', 'search-match');\n this.removeHighlighting();\n this.isSearchDisabled = false;\n return;\n }\n\n const textContent = this.getTextContent().toLowerCase();\n const matchesSearch = textContent.includes(this.searchTerm);\n const hasMatchingParent = this.hasMatchingParent();\n\n requestAnimationFrame(() => {\n const hasMatchingChildren = this.hasMatchingChildren();\n\n optionDiv.classList.remove('search-hidden', 'search-parent', 'search-match');\n this.isSearchDisabled = false;\n\n if (matchesSearch && !this.hasChildren) {\n optionDiv.classList.add('search-match');\n this.highlightSearchTerm();\n } else if (matchesSearch && this.hasChildren) {\n optionDiv.classList.add('search-match');\n this.highlightSearchTerm();\n this.isExpanded = true;\n } else if (!matchesSearch && this.hasChildren && hasMatchingChildren) {\n optionDiv.classList.add('search-parent');\n this.removeHighlighting();\n this.isExpanded = true;\n this.isSearchDisabled = true;\n } else if (hasMatchingParent) {\n optionDiv.classList.add('search-match');\n this.removeHighlighting();\n } else {\n optionDiv.classList.add('search-hidden');\n this.removeHighlighting();\n }\n });\n }\n\n private highlightSearchTerm() {\n if (!this.searchTerm) return;\n\n const labelElement = this.el.shadowRoot?.querySelector('.option-label');\n if (!labelElement) return;\n\n const slotElement = labelElement.querySelector('slot');\n if (!slotElement) return;\n\n this.removeHighlighting();\n\n const originalText = this.getTextContent();\n const searchTermLower = this.searchTerm.toLowerCase();\n const originalTextLower = originalText.toLowerCase();\n\n if (!originalTextLower.includes(searchTermLower)) return;\n\n const searchIndex = originalTextLower.indexOf(searchTermLower);\n\n if (searchIndex === -1) return;\n\n const beforeMatch = originalText.substring(0, searchIndex);\n const matchText = originalText.substring(searchIndex, searchIndex + searchTermLower.length);\n const afterMatch = originalText.substring(searchIndex + searchTermLower.length);\n\n const highlightedContent = document.createElement('span');\n highlightedContent.className = 'highlighted-text';\n\n if (beforeMatch) {\n highlightedContent.appendChild(document.createTextNode(beforeMatch));\n }\n\n const boldElement = document.createElement('strong');\n boldElement.className = 'search-highlight';\n boldElement.textContent = matchText;\n highlightedContent.appendChild(boldElement);\n\n if (afterMatch) {\n highlightedContent.appendChild(document.createTextNode(afterMatch));\n }\n\n labelElement.setAttribute('data-original-content', 'true');\n slotElement.style.display = 'none';\n labelElement.appendChild(highlightedContent);\n }\n\n private removeHighlighting() {\n const labelElement = this.el.shadowRoot?.querySelector('.option-label');\n if (!labelElement) return;\n\n const slotElement = labelElement.querySelector('slot');\n const highlightedElement = labelElement.querySelector('.highlighted-text');\n\n if (highlightedElement) {\n labelElement.removeChild(highlightedElement);\n }\n\n if (slotElement) {\n slotElement.style.display = '';\n }\n\n labelElement.removeAttribute('data-original-content');\n }\n\n private getTextContent(): string {\n let text = '';\n Array.from(this.el.childNodes).forEach(node => {\n if (node.nodeType === Node.TEXT_NODE) {\n text += node.textContent?.trim() || '';\n }\n });\n return text || this.value || '';\n }\n\n private hasMatchingChildren(): boolean {\n if (!this.hasChildren) return false;\n\n const childOptions = Array.from(this.el.children)\n .filter(child => child.tagName === 'IFX-MULTISELECT-OPTION') as HTMLElement[];\n\n return childOptions.some(child => {\n const childInstance = (child as any)['__stencil_instance'];\n if (!childInstance) return false;\n\n const childText = childInstance.getTextContent().toLowerCase();\n const childMatches = childText.includes(this.searchTerm);\n const grandChildrenMatch = childInstance.hasMatchingChildren();\n\n return childMatches || grandChildrenMatch;\n });\n }\n\n private hasMatchingParent(): boolean {\n let parent = this.el.parentElement;\n while (parent && parent.tagName === 'IFX-MULTISELECT-OPTION') {\n const parentInstance = (parent as any)['__stencil_instance'];\n if (parentInstance) {\n const parentText = parentInstance.getTextContent().toLowerCase();\n if (parentText.includes(this.searchTerm)) {\n return true;\n }\n }\n parent = parent.parentElement;\n }\n return false;\n }\n\n private calculateDepth(): number {\n let depth = 0;\n let parent = this.el.parentElement;\n while (parent && parent.tagName !== 'IFX-MULTISELECT') {\n if (parent.tagName === 'IFX-MULTISELECT-OPTION') {\n depth++;\n }\n parent = parent.parentElement;\n }\n return depth;\n }\n\n @Listen('click')\n handleClick(event: Event) {\n if (this.disabled || (this.isSearchActive && this.isSearchDisabled)) return;\n\n event.stopPropagation();\n\n if (event.type === 'click' && (event.target as HTMLElement).closest('.chevron-wrapper')) {\n this.toggleExpansion();\n return;\n }\n\n let newSelectedState: boolean;\n\n if (this.indeterminate) {\n newSelectedState = true;\n } else {\n newSelectedState = !this.selected;\n }\n\n this.selected = newSelectedState;\n this.indeterminate = false;\n\n if (this.hasChildren) {\n this.isExpanded = newSelectedState;\n\n requestAnimationFrame(() => {\n this.selectAllChildren(newSelectedState);\n this.expandAllChildren(newSelectedState);\n });\n }\n\n this.updateParentStates();\n this.notifyMultiselect();\n }\n\n @Listen('keydown')\n handleKeyDown(event: KeyboardEvent) {\n if (this.disabled || (this.isSearchActive && this.isSearchDisabled)) return;\n\n const target = event.target as HTMLElement;\n\n if (target.closest('.chevron-wrapper') || target.closest('.checkbox-wrapper')) {\n return;\n }\n\n if (event.key !== 'ArrowUp' && event.key !== 'ArrowDown') {\n event.stopPropagation();\n }\n\n if (event.key === 'ArrowRight' && this.hasChildren) {\n this.isExpanded = true;\n }\n\n if (event.key === 'ArrowLeft' && this.hasChildren) {\n this.isExpanded = false;\n }\n }\n\n private notifyMultiselect() {\n const updateEvent = new CustomEvent('ifx-option-changed', {\n bubbles: true,\n detail: {\n value: this.value,\n selected: this.selected,\n indeterminate: this.indeterminate\n }\n });\n this.el.dispatchEvent(updateEvent);\n }\n\n private selectAllChildren(selected: boolean) {\n const directChildren = Array.from(this.el.children)\n .filter(child => child.tagName === 'IFX-MULTISELECT-OPTION') as any[];\n\n directChildren.forEach((child: any) => {\n const childInstance = child['__stencil_instance'];\n if (childInstance) {\n childInstance.selected = selected;\n childInstance.indeterminate = false;\n\n if (childInstance.hasChildren) {\n childInstance.isExpanded = selected;\n childInstance.selectAllChildren(selected);\n }\n childInstance.notifyMultiselect?.();\n }\n });\n }\n\n private expandAllChildren(expanded: boolean) {\n const directChildren = Array.from(this.el.children)\n .filter(child => child.tagName === 'IFX-MULTISELECT-OPTION') as any[];\n\n directChildren.forEach((child: any) => {\n const childInstance = child['__stencil_instance'];\n if (childInstance && childInstance.hasChildren) {\n childInstance.isExpanded = expanded;\n childInstance.expandAllChildren(expanded);\n }\n });\n }\n\n private updateParentStates() {\n let parent = this.el.parentElement;\n while (parent && parent.tagName === 'IFX-MULTISELECT-OPTION') {\n const parentInstance = (parent as any)['__stencil_instance'];\n if (!parentInstance) {\n parent = parent.parentElement;\n continue;\n }\n\n const siblings = Array.from(parent.children)\n .filter(child => child.tagName === 'IFX-MULTISELECT-OPTION')\n .map(child => (child as any)['__stencil_instance'])\n .filter(instance => instance !== null);\n\n const selectedCount = siblings.filter(sibling => sibling.selected).length;\n const indeterminateCount = siblings.filter(sibling => sibling.indeterminate).length;\n const totalCount = siblings.length;\n\n if (selectedCount === totalCount && indeterminateCount === 0) {\n parentInstance.selected = true;\n parentInstance.indeterminate = false;\n } else if (selectedCount === 0 && indeterminateCount === 0) {\n parentInstance.selected = false;\n parentInstance.indeterminate = false;\n } else {\n parentInstance.selected = false;\n parentInstance.indeterminate = true;\n }\n\n parentInstance.notifyMultiselect?.();\n parent = parent.parentElement;\n }\n }\n\n private toggleExpansion() {\n this.isExpanded = !this.isExpanded;\n }\n\n private handleCheckboxClick = (event: Event) => {\n if (this.disabled || (this.isSearchActive && this.isSearchDisabled)) return;\n\n event.stopPropagation();\n\n let newSelectedState: boolean;\n\n if (this.indeterminate) {\n newSelectedState = true;\n } else {\n newSelectedState = !this.selected;\n }\n\n this.selected = newSelectedState;\n this.indeterminate = false;\n\n if (this.hasChildren) {\n this.isExpanded = newSelectedState;\n\n requestAnimationFrame(() => {\n this.selectAllChildren(newSelectedState);\n this.expandAllChildren(newSelectedState);\n });\n }\n\n this.updateParentStates();\n this.notifyMultiselect();\n }\n\n private handleHeaderClick = (event: Event) => {\n event.stopPropagation();\n if (!this.disabled && !(this.isSearchActive && this.isSearchDisabled)) {\n this.handleClick(event);\n }\n }\n\n private hasAnySelectedChildren(): boolean {\n const childOptions = Array.from(this.el.children)\n .filter(child => child.tagName === 'IFX-MULTISELECT-OPTION') as HTMLElement[];\n\n return childOptions.some(child => {\n const hasSelected = child.hasAttribute('selected');\n const hasSelectedDescendants = this.checkForSelectedDescendants(child);\n\n return hasSelected || hasSelectedDescendants;\n });\n }\n\n private checkForSelectedDescendants(element: HTMLElement): boolean {\n const nestedOptions = Array.from(element.children)\n .filter(child => child.tagName === 'IFX-MULTISELECT-OPTION') as HTMLElement[];\n\n return nestedOptions.some(nestedChild => {\n const isSelected = nestedChild.hasAttribute('selected');\n const hasSelectedNested = this.checkForSelectedDescendants(nestedChild);\n\n return isSelected || hasSelectedNested;\n });\n }\n\n render() {\n let isFlatMultiselect = false;\n const parentMultiselect = this.el.closest('ifx-multiselect');\n if (parentMultiselect) {\n const allOptions = Array.from(parentMultiselect.querySelectorAll('ifx-multiselect-option'));\n isFlatMultiselect = allOptions.every(option => option.children.length === 0);\n }\n\n const basePadding = this.depth * 28 + 16;\n const additionalPadding = this.hasChildren ? 0 : 28;\n let totalPadding = basePadding + additionalPadding;\n\n const optionItemStyle = isFlatMultiselect ? undefined : { paddingLeft: `${totalPadding}px` };\n\n return (\n <Host>\n <div\n class={{\n 'option': true,\n 'option--has-children': this.hasChildren,\n 'option--expanded': this.isExpanded,\n 'option--disabled': this.disabled,\n 'option--selected': this.selected,\n }}\n role=\"option\"\n aria-expanded={this.hasChildren ? (this.isExpanded ? 'true' : 'false') : undefined}\n aria-selected={this.selected ? 'true' : 'false'}\n aria-disabled={this.disabled ? 'true' : 'false'}\n data-level={this.depth}\n data-value={this.value}\n >\n <div\n class=\"option-item\"\n style={optionItemStyle}\n >\n <div\n class=\"chevron-wrapper\"\n tabIndex={this.hasChildren ? 0 : -1}\n role={this.hasChildren ? \"button\" : undefined}\n aria-label={this.hasChildren ? (this.isExpanded ? \"Collapse\" : \"Expand\") : undefined}\n onClick={(e) => { e.stopPropagation(); this.toggleExpansion(); }}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n e.stopPropagation();\n this.toggleExpansion();\n }\n }}\n >\n {this.hasChildren && (\n <ifx-icon\n class={`chevron ${this.isExpanded ? 'chevron--expanded' : 'chevron--collapsed'}`}\n icon=\"chevron-right-16\"\n />\n )}\n </div>\n\n <div class=\"checkbox-wrapper\" onClick={(e) => e.stopPropagation()}>\n <ifx-checkbox\n size='s'\n checked={(this.isSearchActive && this.isSearchDisabled) ? false : (this.indeterminate ? false : this.selected)}\n indeterminate={(this.isSearchActive && this.isSearchDisabled) ? false : this.indeterminate}\n onClick={this.handleCheckboxClick}\n disabled={this.disabled || (this.isSearchActive && this.isSearchDisabled)}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n e.stopPropagation();\n this.handleCheckboxClick(e);\n }\n }}\n />\n </div>\n\n <div\n class=\"option-label\"\n onClick={this.handleHeaderClick}\n tabIndex={-1}\n >\n <slot/>\n </div>\n </div>\n\n {this.isExpanded && <div class=\"option-children\"><slot name=\"children\"/></div>}\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|