@aquera/nile-elements 1.2.6-beta-1.1 → 1.2.6-beta-1.3

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.
@@ -1 +1 @@
1
- {"version":3,"file":"nile-virtual-select.cjs.js","sources":["../../../../node_modules/@lit-labs/observers/resize-controller.js","../../../src/nile-virtual-select/nile-virtual-select.ts"],"sourcesContent":["import{isServer as s}from\"lit-html/is-server.js\";\n/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */class t{constructor(t,{target:i,config:h,callback:e,skipInitial:o}){this.t=new Set,this.o=!1,this.i=!1,this.h=t,null!==i&&this.t.add(i??t),this.l=h,this.o=o??this.o,this.callback=e,s||(window.ResizeObserver?(this.u=new ResizeObserver((s=>{this.handleChanges(s),this.h.requestUpdate()})),t.addController(this)):console.warn(\"ResizeController error: browser does not support ResizeObserver.\"))}handleChanges(s){this.value=this.callback?.(s,this.u)}hostConnected(){for(const s of this.t)this.observe(s)}hostDisconnected(){this.disconnect()}async hostUpdated(){!this.o&&this.i&&this.handleChanges([]),this.i=!1}observe(s){this.t.add(s),this.u.observe(s,this.l),this.i=!0,this.h.requestUpdate()}unobserve(s){this.t.delete(s),this.u.unobserve(s)}disconnect(){this.u.disconnect()}}export{t as ResizeController};\n//# sourceMappingURL=resize-controller.js.map\n"," /**\n * Copyright Aquera Inc 2025\n *\n * This source code is licensed under the BSD-3-Clause license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport {\n LitElement,\n html,\n} from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { styles } from './nile-virtual-select.css';\n\nimport '../nile-icon';\nimport '../nile-popup/nile-popup';\nimport '../nile-tag/nile-tag';\nimport '../nile-checkbox/nile-checkbox';\nimport '../nile-loader/nile-loader';\nimport { animateTo, stopAnimations } from '../internal/animate';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { query, state } from 'lit/decorators.js';\nimport { defaultValue } from '../internal/default-value';\nimport { FormControlController } from '../internal/form';\nimport {\n getAnimation,\n setDefaultAnimation,\n} from '../utilities/animation-registry';\nimport { HasSlotController } from '../internal/slot';\nimport { waitForEvent } from '../internal/event';\nimport { watch } from '../internal/watch';\nimport NileElement from '../internal/nile-element';\nimport type { CSSResultGroup, PropertyValues, TemplateResult } from 'lit';\nimport type { NileFormControl } from '../internal/nile-element';\nimport type NileOption from '../nile-option/nile-option';\nimport type NilePopup from '../nile-popup/nile-popup';\nimport { ifDefined } from 'lit/directives/if-defined.js';\n\nimport type { VirtualOption, NileRemoveEvent, RenderItemConfig } from './types.js';\nimport { VirtualSelectSelectionManager } from './selection-manager.js';\nimport { VirtualSelectSearchManager } from './search-manager.js';\nimport { VirtualSelectRenderer } from './renderer.js';\nimport { PortalManager } from './portal-manager.js';\nimport { ResizeController } from '@lit-labs/observers/resize-controller.js';\n\n/**\n * Nile Virtual Select component.\n *\n * @tag nile-virtual-select\n *\n */\n\n/**\n * @summary Virtual select component for handling large datasets with virtual scrolling.\n * @status stable\n * @since 2.0\n *\n * @dependency nile-icon\n * @dependency nile-popup\n * @dependency nile-tag\n * @dependency nile-checkbox\n *\n * @slot label - The input's label. Alternatively, you can use the `label` attribute.\n * @slot prefix - Used to prepend a presentational icon or similar element to the combobox.\n * @slot clear-icon - An icon to use in lieu of the default clear icon.\n * @slot expand-icon - The icon to show when the control is expanded and collapsed.\n * @slot help-text - Text that describes how to use the input. Alternatively, you can use the `help-text` attribute.\n *\n * @event nile-change - Emitted when the control's value changes.\n * @event nile-clear - Emitted when the control's value is cleared.\n * @event nile-input - Emitted when the control receives input.\n * @event nile-focus - Emitted when the control gains focus.\n * @event nile-blur - Emitted when the control loses focus.\n * @event nile-show - Emitted when the select's menu opens.\n * @event nile-after-show - Emitted after the select's menu opens and all animations are complete.\n * @event nile-hide - Emitted when the select's menu closes.\n * @event nile-after-hide - Emitted after the select's menu closes and all animations are complete.\n * @event nile-invalid - Emitted when the form control has been checked for validity and its constraints aren't satisfied.\n * @event nile-search - Emitted when the user types in the search input. The event payload includes the search query for backend search functionality.\n * @event nile-scroll - Emitted when the user scrolls within the virtualized container. The event payload includes scroll position information.\n * @event nile-scroll-start - Emitted when the user starts scrolling within the virtualized container.\n * @event nile-scroll-end - Emitted when the user stops scrolling and reaches the bottom of the virtualized container (debounced).\n *\n * @csspart form-control - The form control that wraps the label, input, and help text.\n * @csspart form-control-label - The label's wrapper.\n * @csspart form-control-input - The select's wrapper.\n * @csspart form-control-help-text - The help text's wrapper.\n * @csspart combobox - The container the wraps the prefix, combobox, clear icon, and expand button.\n * @csspart prefix - The container that wraps the prefix slot.\n * @csspart display-input - The element that displays the selected option's label, an `<input>` element.\n * @csspart listbox - The listbox container where options are slotted.\n * @csspart tags - The container that houses option tags when `multiple` is used.\n * @csspart tag - The individual tags that represent each multiselect option.\n * @csspart clear-button - The clear button.\n * @csspart expand-icon - The container that wraps the expand icon.\n * @csspart footer - The footer container with show selected and clear all options.\n */\n\n@customElement('nile-virtual-select')\nexport class NileVirtualSelect extends NileElement implements NileFormControl {\n static styles: CSSResultGroup = styles;\n\n private readonly formControlController = new FormControlController(this, {\n assumeInteractionOn: ['nile-blur', 'nile-input'],\n });\n private readonly hasSlotController = new HasSlotController(\n this,\n 'help-text',\n 'label'\n );\n private readonly portalManager = new PortalManager(this);\n\n @query('.select') popup: NilePopup;\n @query('.select__combobox') combobox: HTMLElement;\n @query('.select__display-input') displayInput: HTMLInputElement;\n @query('.select__value-input') valueInput: HTMLInputElement;\n @query('.virtualized') virtualizedContainer: HTMLElement;\n\n @state() private hasFocus = false;\n @state() displayLabel = '';\n @state() selectedOptions: VirtualOption[] = [];\n @state() oldValue: string | string[] = '';\n \n private scrollTimeout: number | undefined;\n private scrolling = false;\n\n /** The name of the select, submitted as a name/value pair with form data. */\n @property() name = '';\n\n /** Array of all option items for virtual scrolling */\n @property({ type: Array }) data: any = [];\n\n /** Original unfiltered option items for search functionality */\n @state() private originalOptionItems: any = [];\n\n /**\n * The current value of the select. When `multiple` is enabled, the value will be an array of selected values.\n */\n @property({\n converter: {\n fromAttribute: (value: string) => value.split(' '),\n toAttribute: (value: string[]) => value.join(' '),\n },\n })\n value: string | string[] = '';\n\n /** The default value of the form control. Primarily used for resetting the form control. */\n @defaultValue() defaultValue: string | string[] = '';\n\n /** The select's size. */\n @property() size: 'small' | 'medium' | 'large' = 'medium';\n\n /** Placeholder text to show as a hint when the select is empty. */\n @property() placeholder = 'Select...';\n\n /** Enable automatic resizing of tags area */\n @property({ type: Boolean }) autoResize = false;\n\n /** Current search value */\n @state() searchValue: string = '';\n\n /** Enable search functionality */\n @property({ type: Boolean, reflect: true }) searchEnabled = false;\n\n /** Search input placeholder */\n @property({attribute:'internal-search-placeholder'}) internalSearchPlaceHolder = 'Search...';\n\n /** Disable local search filtering */\n @property({ type: Boolean, reflect: true }) disableLocalSearch = false;\n\n /** Show loading state */\n @property({ type: Boolean, reflect: true }) optionsLoading = false;\n\n /** Show loading state using nile-loader */\n @property({ type: Boolean, reflect: true, attribute: true }) loading = false;\n\n /** Allows more than one option to be selected. */\n @property({ type: Boolean, reflect: true }) multiple = false;\n\n /** Help text */\n @property({ attribute: 'help-text', reflect: true }) helpText = '';\n\n /** Error message */\n @property({ attribute: 'error-message', reflect: true }) errorMessage = '';\n\n /** Sets the input to a warning state */\n @property({ type: Boolean }) warning = false;\n\n /** Sets the input to an error state */\n @property({ type: Boolean }) error = false;\n\n /** Sets the input to a success state */\n @property({ type: Boolean }) success = false;\n\n /** Disables the select control. */\n @property({ type: Boolean, reflect: true }) disabled = false;\n\n /** Adds a clear button when the select is not empty. */\n @property({ type: Boolean, reflect: true }) clearable = false;\n\n /** The select's open state. */\n @property({ type: Boolean, reflect: true }) open = false;\n\n /**\n * Enable this option to prevent the listbox from being clipped when the component is placed inside a container with\n * `overflow: auto|scroll`. Hoisting uses a fixed positioning strategy that works in many, but not all, scenarios.\n */\n @property({ type: Boolean }) hoist = false;\n\n /** Draws a filled select. */\n @property({ type: Boolean, reflect: true }) filled = false;\n\n /** Draws a pill-style select with rounded edges. */\n @property({ type: Boolean, reflect: true }) pill = false;\n\n /** The select's label. If you need to display HTML, use the `label` slot instead. */\n @property() label = '';\n\n /**\n * The preferred placement of the select's menu. Note that the actual placement may vary as needed to keep the listbox\n * inside of the viewport.\n */\n @property({ reflect: true }) placement: 'top' | 'bottom' = 'bottom';\n\n /**\n * By default, form controls are associated with the nearest containing `<form>` element. This attribute allows you\n * to place the form control outside of a form and associate it with the form that has this `id`. The form must be in\n * the same document or shadow root for this to work.\n */\n @property({ reflect: true }) form = '';\n\n /** The select's required attribute. */\n @property({ type: Boolean, reflect: true }) required = false;\n\n /** Show no results message */\n @property({ type: Boolean }) showNoResults: boolean = false;\n\n /** No results message */\n @property({ type: String }) noResultsMessage: string = 'No results found';\n\n /** Show selected options only */\n @property({ type: Boolean }) showSelected = false;\n\n /** Enhanced configuration for rendering items with support for display text, value, and search text */\n @property({ attribute:false}) renderItemConfig?: RenderItemConfig;\n\n /** Block value change events */\n @property({ type: Boolean, reflect: true }) blockValueChange = false;\n\n /** Disable width synchronization */\n @property({ type: Boolean, reflect: true }) noWidthSync = false;\n\n /** \n * When true, the listbox will be appended to the document body instead of the parent container.\n * This is useful when the parent has overflow: hidden, clip-path, or transform applied.\n */\n @property({ type: Boolean, reflect: true }) portal = false;\n\n /**\n * The maximum number of selected options to show when `multiple` is true. After the maximum, \"+n\" will be shown to\n * indicate the number of additional items that are selected. Set to 0 to remove the limit.\n */\n @property({ attribute: 'max-options-visible', type: Number })\n maxOptionsVisible = 3;\n\n @state() oldMaxOptionsVisible: number = 1;\n @state() showListbox: boolean = false;\n @state() private wasShowSelectedCheckedOnClose: boolean = false;\n\n /** Gets the validity state object */\n get validity() {\n return this.valueInput?.validity;\n }\n\n /** Gets the validation message */\n get validationMessage() {\n return this.valueInput?.validationMessage ?? '';\n }\n\n connectedCallback() {\n super.connectedCallback();\n this.initializeComponent();\n this.setupEventListeners();\n \n this.updateComplete.then(() => {\n if (this.value && this.data.length > 0) {\n this.selectionChanged();\n }\n });\n }\n\n disconnectedCallback() {\n this.removeOpenListeners();\n // Clear any pending scroll timeout to prevent memory leaks\n if (this.scrollTimeout) {\n clearTimeout(this.scrollTimeout);\n this.scrollTimeout = undefined;\n }\n // Clean up body append elements\n this.portalManager.cleanupPortalAppend();\n }\n\n protected updated(changedProperties: PropertyValues): void {\n if(changedProperties.has('value')) {\n this.selectionChanged();\n }\n if (changedProperties.has('autoResize')) {\n const tagsDiv = this.shadowRoot?.querySelector('.select__tags') as HTMLElement;\n if (this.autoResize && tagsDiv) {\n this.resizeController.observe(tagsDiv);\n } else if (tagsDiv) {\n this.resizeController.unobserve(tagsDiv);\n }\n }\n }\n\n private initializeComponent(): void {\n this.open = false;\n this.emit('nile-init');\n }\n\n /**\n * Get display text for an item using renderItemConfig\n */\n private getDisplayText(item: any): string {\n if (this.renderItemConfig?.getDisplayText) {\n return this.renderItemConfig.getDisplayText(item);\n }\n // Fallback to basic display\n return item?.label || item?.name || item?.toString() || '';\n }\n\n /**\n * Get value for an item using renderItemConfig or fallback to item.value\n */\n private getItemValue(item: any): string {\n if (this.renderItemConfig?.getValue) {\n return this.renderItemConfig.getValue(item);\n }\n return item?.value || item;\n }\n\n /**\n * Get search text for an item using renderItemConfig or fallback to display text\n */\n private getSearchText(item: any): string {\n if (this.renderItemConfig?.getSearchText) {\n return this.renderItemConfig.getSearchText(item);\n }\n return this.getDisplayText(item);\n }\n\n private setupEventListeners(): void {\n this.handleDocumentFocusIn = this.handleDocumentFocusIn.bind(this);\n this.handleDocumentKeyDown = this.handleDocumentKeyDown.bind(this);\n this.handleDocumentMouseDown = this.handleDocumentMouseDown.bind(this);\n this.handleWindowError = this.handleWindowError.bind(this);\n this.handleWindowResize = this.handleWindowResize.bind(this);\n this.handleWindowScroll = this.handleWindowScroll.bind(this);\n }\n\n private addOpenListeners(): void {\n document.addEventListener('focusin', this.handleDocumentFocusIn);\n document.addEventListener('keydown', this.handleDocumentKeyDown);\n document.addEventListener('mousedown', this.handleDocumentMouseDown);\n window.addEventListener('error', this.handleWindowError);\n \n if (this.portal) {\n window.addEventListener('resize', this.handleWindowResize);\n window.addEventListener('scroll', this.handleWindowScroll, true);\n }\n }\n\n private removeOpenListeners(): void {\n document.removeEventListener('focusin', this.handleDocumentFocusIn);\n document.removeEventListener('keydown', this.handleDocumentKeyDown);\n document.removeEventListener('mousedown', this.handleDocumentMouseDown);\n window.removeEventListener('error', this.handleWindowError);\n window.removeEventListener('resize', this.handleWindowResize);\n window.removeEventListener('scroll', this.handleWindowScroll, true);\n }\n\n private handleFocus(): void {\n this.hasFocus = true;\n this.emit('nile-focus');\n }\n\n private handleBlur(): void {\n this.hasFocus = false;\n this.emit('nile-blur');\n }\n\n private handleDocumentFocusIn(event: FocusEvent): void {\n if (!this.open) return; \n const path = event.composedPath(); \n const hitSelf = path.includes(this);\n const hitPopup = this.popup && path.includes(this.popup);\n const hitPortalAppend = this.portal && this.portalManager.portalContainerElement && path.includes(this.portalManager.portalContainerElement);\n\n if (!hitSelf && !hitPopup && !hitPortalAppend) {\n this.hide();\n }\n }\n\n private handleDocumentKeyDown(event: KeyboardEvent): void {\n if (this.shouldIgnoreKeyPress(event)) {\n return;\n }\n\n if (this.isEscapeKey(event)) {\n this.handleEscapeKey(event);\n }\n\n if (this.isEnterOrSpaceKey(event)) {\n this.handleEnterOrSpaceKey(event);\n }\n }\n\n private shouldIgnoreKeyPress(event: KeyboardEvent): boolean {\n const target = event.target as HTMLElement;\n const isClearButton = target.closest('.select__clear') !== null;\n const isIconButton = target.closest('nile-icon-button') !== null;\n return isClearButton || isIconButton;\n }\n\n private isEscapeKey(event: KeyboardEvent): boolean {\n return event.key === 'Escape' && this.open;\n }\n\n private handleEscapeKey(event: KeyboardEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this.hide();\n this.displayInput.focus({ preventScroll: true });\n }\n\n private isEnterOrSpaceKey(event: KeyboardEvent): boolean {\n return event.key === 'Enter' || event.key === ' ';\n }\n\n private handleEnterOrSpaceKey(event: KeyboardEvent): void {\n event.preventDefault();\n event.stopImmediatePropagation();\n\n if (!this.open) {\n this.show();\n return;\n }\n\n if (!this.multiple) {\n this.hide();\n this.displayInput.focus({ preventScroll: true });\n }\n }\n\n private handleDocumentMouseDown = (event: MouseEvent): void => {\n if (!this.open) return; \n \n const path = event.composedPath();\n const hitSelf = path.includes(this);\n const hitPopup = this.popup && path.includes(this.popup);\n const hitPortalAppend = this.portal && this.portalManager.portalContainerElement && path.includes(this.portalManager.portalContainerElement);\n \n if (!hitSelf && !hitPopup && !hitPortalAppend) {\n this.hide();\n }\n };\n\n /**\n * This is a workaround for an error in the Lit Labs virtualizer.\n * Since there are no specific guidelines available to fix the issue,\n * we are catching only the error message related to the virtualizer.\n */\n private handleWindowError = (event: ErrorEvent): void => {\n const errorMessage = event.error?.message || event.message || '';\n if (errorMessage.includes('Cannot read properties of null (reading \\'insertBefore\\')')) {\n event.preventDefault();\n return;\n }\n };\n\n private handleWindowResize = (): void => {\n this.portalManager.updatePortalAppendPosition();\n };\n\n private handleWindowScroll = (): void => {\n this.portalManager.updatePortalAppendPosition();\n };\n\n private handleFooterClick(event: MouseEvent): void {\n event.stopPropagation();\n event.preventDefault();\n }\n\n private toggleShowSelected(event: Event): void {\n event.stopPropagation();\n event.preventDefault();\n if (this.selectedOptions?.length === 0) {\n return;\n }\n this.showSelected = !this.showSelected;\n\n if (this.showSelected) {\n this.searchValue = \"\";\n const selectedValues = Array.isArray(this.value) ? this.value : [this.value];\n this.data = this.originalOptionItems.filter((item: any) => {\n const itemValue = this.getItemValue(item);\n return selectedValues.some(val => String(val) === String(itemValue));\n });\n } else {\n this.data = [...this.originalOptionItems];\n }\n\n // Reset measured height when show selected toggles (content height may change)\n this.portalManager.resetMeasuredHeight();\n\n this.requestUpdate();\n this.repaintOptionsContainer();\n }\n\n private unSelectAll(): void {\n this.showSelected = false;\n this.value = this.multiple ? [] : '';\n this.data = [...this.originalOptionItems];\n this.selectionChanged();\n this.emit('nile-change', { value: this.value, name: this.name });\n this.emit('nile-clear', { value: this.multiple ? this.value : '', name: this.name });\n this.resetScrollPosition();\n }\n\n private handleLabelClick(): void {\n this.displayInput.focus();\n this.hide();\n }\n\n private handleComboboxMouseDown(event: MouseEvent): void {\n if (this.shouldIgnoreComboboxClick(event)) {\n return;\n }\n\n event.preventDefault();\n this.displayInput.focus({ preventScroll: true });\n this.open = !this.open;\n }\n\n private resizeController = new ResizeController(this, {\n callback: (entries: ResizeObserverEntry[]) => {\n for (const entry of entries) {\n if (entry.target.classList.contains('select__tags')) {\n this.calculateTotalWidthOfTags();\n }\n }\n }\n });\n\n private shouldIgnoreComboboxClick(event: MouseEvent): boolean {\n const path = event.composedPath();\n const isIconButton = path.some(\n el =>\n el instanceof Element && el.tagName.toLowerCase() === 'nile-icon-button'\n );\n return this.disabled || isIconButton;\n }\n\n private handleComboboxKeyDown(event: KeyboardEvent): void {\n if (this.isEnterOrSpaceKey(event)) {\n event.preventDefault();\n this.open = !this.open;\n }\n }\n\n private handleClearClick(event: MouseEvent): void {\n event.stopPropagation();\n this.clearSelection();\n }\n\n private clearSelection(): void {\n const oldValue = this.value;\n this.value = this.multiple ? [] : '';\n this.selectionChanged();\n\n this.updateComplete.then(() => {\n this.nileInput({ value: this.value, name: this.name });\n this.nileChange({ value: this.value, name: this.name });\n this.emit('nile-clear');\n });\n }\n\n private handleClearMouseDown(event: MouseEvent): void {\n event.stopPropagation();\n }\n\n private handleOptionClick(event: MouseEvent): void {\n const target = event.target as HTMLElement;\n const option = target.closest('nile-option');\n\n if (this.shouldBlockValueChange(option)) {\n return;\n }\n\n const oldValue = this.value;\n this.oldValue = oldValue;\n\n if (option && !option.disabled) {\n this.handleOptionSelection(option);\n }\n }\n\n private shouldBlockValueChange(option: Element | null): boolean {\n if (this.blockValueChange && option) {\n this.emit('nile-block-change', { value: (option as any)?.value, name: this.name });\n this.hide();\n return true;\n }\n return false;\n }\n\n private handleOptionSelection(option: Element): void {\n const optionValue = (option as any).value;\n \n if (this.multiple) {\n this.toggleOptionSelection(optionValue);\n } else {\n this.setSelectedOptions(optionValue);\n }\n\n this.updateComplete.then(() =>\n this.displayInput.focus({ preventScroll: true })\n );\n\n if (this.value !== this.oldValue) {\n this.updateComplete.then(() => {\n this.nileInput({ value: this.value, name: this.name });\n this.nileChange({ value: this.value, name: this.name });\n });\n }\n\n if (!this.multiple) {\n this.hide();\n this.displayInput.focus({ preventScroll: true });\n }\n }\n\n private setSelectedOptions(optionValue: string): void {\n this.value = optionValue;\n this.selectionChanged();\n }\n\n private toggleOptionSelection(optionValue: string): void {\n const currentValues = Array.isArray(this.value) ? this.value : [];\n \n if (currentValues.includes(optionValue)) {\n this.value = currentValues.filter(v => v !== optionValue);\n } else {\n this.value = [...currentValues, optionValue];\n }\n \n this.selectionChanged();\n }\n\n private handleTagRemove(event: NileRemoveEvent, option: VirtualOption): void {\n event.stopPropagation();\n\n if (!this.disabled) {\n this.removeTagFromSelection(option);\n this.emitTagRemovalEvent(option);\n }\n }\n\n private removeTagFromSelection(option: VirtualOption): void {\n let currentValue = this.value;\n if (!Array.isArray(currentValue)) {\n currentValue = currentValue ? [currentValue] : [];\n }\n const newValue = currentValue.filter((v: string) => v !== option.value);\n this.value = newValue;\n this.selectionChanged();\n }\n\n private emitTagRemovalEvent(option: VirtualOption): void {\n this.updateComplete.then(() => {\n this.nileInput({ value: this.value, name: this.name });\n this.nileChange({ value: this.value, name: this.name });\n this.emit('nile-tag-remove', { value: this.value, name: this.name, removedtagvalue: option.value });\n });\n }\n\n private selectionChanged(): void {\n const itemsToSearch = this.originalOptionItems.length > 0 ? this.originalOptionItems : this.data;\n this.selectedOptions = VirtualSelectSelectionManager.createVirtualOptionsFromValues(\n this.value, \n itemsToSearch, \n this.getDisplayText.bind(this),\n this.renderItemConfig?.getValue\n );\n\n if (this.multiple) {\n if (this.placeholder && this.value.length === 0) {\n this.displayLabel = '';\n } else {\n this.displayLabel = this.selectedOptions.length + ' selected';\n }\n } else {\n const currentValue = Array.isArray(this.value) ? this.value[0] : this.value;\n const label = this.selectedOptions[0]?.getTextLabel();\n this.displayLabel = label ? label : currentValue ?? '';\n }\n\n this.updateValidity();\n\n if (this.selectedOptions.length === 0) {\n this.showSelected = false;\n if(this.originalOptionItems?.length > 0 && !this.searchValue) {\n this.data = [...this.originalOptionItems];\n }\n this.repaintOptionsContainer();\n }\n\n this.calculateTotalWidthOfTags();\n }\n \n\n handleSearchFocus(): void {\n document.removeEventListener('keydown', this.handleDocumentKeyDown);\n }\n\n handleSearchBlur(): void {\n document.addEventListener('keydown', this.handleDocumentKeyDown);\n }\n\n handleSearchChange(e: any): void {\n this.searchValue = e.detail.value;\n if (this.portal) {\n this.portalManager.updatePortalAppendPosition();\n }\n \n this.emit('nile-search', { \n query: this.searchValue,\n name: this.name \n });\n \n if (!this.disableLocalSearch) {\n this.filterVirtualOptions(this.searchValue);\n this.repaintOptionsContainer();\n \n // Reset measured height when search changes (content height may change)\n this.portalManager.resetMeasuredHeight();\n }\n }\n \n repaintOptionsContainer() {\n this.resetScrollPosition();\n this.updateComplete.then(() => {\n const virtualized = this.shadowRoot?.querySelector('.virtualized') as HTMLElement;\n if (virtualized) {\n if (this.data.length <= 5) {\n virtualized.classList.add('no-scroll');\n } else {\n virtualized.classList.remove('no-scroll');\n }\n }\n });\n }\n\n handleScroll(e: Event): void {\n if(this.showSelected) {\n return;\n }\n\n const target = e.target as HTMLElement;\n \n this.emit('nile-scroll', {\n scrollTop: target.scrollTop,\n scrollLeft: target.scrollLeft,\n name: this.name\n });\n\n if (!this.scrolling) {\n this.scrolling = true;\n this.emit('nile-scroll-start', {\n scrollTop: target.scrollTop,\n scrollLeft: target.scrollLeft,\n name: this.name\n });\n }\n\n clearTimeout(this.scrollTimeout);\n this.scrollTimeout = window.setTimeout(() => {\n if (this.scrolling) {\n this.scrolling = false;\n }\n }, 300);\n\n const isAtBottom = Math.ceil(target.scrollTop) >= Math.floor(target.scrollHeight - target.offsetHeight);\n if (isAtBottom && !this.searchValue) {\n this.emit('nile-scroll-end', {\n scrollTop: target.scrollTop,\n scrollLeft: target.scrollLeft,\n name: this.name,\n isAtBottom: true\n });\n }\n }\n\n filterVirtualOptions(searchValue: string): void {\n const result = VirtualSelectSearchManager.filterVirtualOptions(\n searchValue,\n this.originalOptionItems,\n this.data,\n this.getDisplayText.bind(this),\n this.renderItemConfig?.getSearchText\n );\n if (this.portal) {\n this.portalManager.updatePortalAppendPosition();\n this.updateComplete.then(() => {\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n this.resetScrollPosition();\n });\n });\n });\n } else {\n this.resetScrollPosition();\n }\n this.data = result.filteredItems;\n this.showNoResults = result.showNoResults;\n this.showSelected = false;\n this.requestUpdate();\n }\n\n private handleInvalid(event: Event): void {\n this.formControlController.setValidity(false);\n this.formControlController.emitInvalidEvent(event);\n }\n\n @watch('disabled', { waitUntilFirstUpdate: true })\n handleDisabledChange(): void {\n if (this.disabled) {\n this.open = false;\n this.handleOpenChange();\n }\n }\n\n @watch('value', { waitUntilFirstUpdate: true })\n handleValueChange(): void {\n this.selectionChanged();\n this.requestUpdate();\n \n // Update body append content if it's active\n if (this.portal && this.portalManager.portalContainerElement) {\n this.portalManager.updatePortalAppendPosition();\n }\n }\n\n @watch('data', { waitUntilFirstUpdate: true })\n handleDataChange(): void {\n if (this.data.length > 0 && this.open && !this.showSelected && !this.searchValue) {\n this.originalOptionItems = [...this.data];\n }\n this.selectionChanged();\n // Show no results message when data is empty and not loading\n if (!this.optionsLoading && !this.loading && this.data.length === 0) {\n this.showNoResults = true;\n } else if (this.data.length > 0) {\n this.showNoResults = false;\n }\n this.requestUpdate();\n \n // Reset measured height when data changes (content height may change)\n this.portalManager.resetMeasuredHeight();\n \n // Update body append content if it's active\n if (this.portal && this.portalManager.portalContainerElement) {\n this.portalManager.updatePortalAppendPosition();\n }\n }\n\n @watch('renderItemConfig', { waitUntilFirstUpdate: true })\n handleRenderItemConfigChange(): void {\n if (this.value && this.data.length > 0) {\n this.selectionChanged();\n this.requestUpdate();\n }\n }\n\n @watch('optionsLoading', { waitUntilFirstUpdate: true })\n handleOptionsLoadingChange(): void {\n // Show no results message when loading stops and there are no results\n if (!this.optionsLoading && this.data.length === 0) {\n this.showNoResults = true;\n }\n this.requestUpdate();\n \n // Update body append content if it's active\n if (this.portal && this.portalManager.portalContainerElement) {\n this.portalManager.updatePortalAppendPosition();\n }\n }\n\n @watch('portal', { waitUntilFirstUpdate: true })\n handlePortalAppendChange(): void {\n if (this.open) {\n if (this.portal) {\n this.portalManager.setupPortalAppend();\n } else {\n this.portalManager.cleanupPortalAppend();\n }\n }\n }\n\n @watch('open', { waitUntilFirstUpdate: true })\n async handleOpenChange(): Promise<void> {\n if (this.open && !this.disabled) {\n await this.handleOpen();\n this.showListbox = true;\n \n if (this.portal) {\n this.portalManager.setupPortalAppend();\n }\n } else {\n await this.handleClose();\n this.showListbox = false;\n \n if (this.portal) {\n this.portalManager.cleanupPortalAppend();\n }\n }\n }\n\n private async handleOpen(): Promise<void> {\n this.emit('nile-show', { value: this.value, name: this.name });\n this.addOpenListeners();\n this.showNoResults = !this.data?.length;\n\n await stopAnimations(this);\n this.popup.active = true;\n\n const { keyframes, options } = getAnimation(this, 'select.show', {\n dir: 'ltr',\n });\n await animateTo(this.popup.popup, keyframes, options);\n\n if (this.wasShowSelectedCheckedOnClose) {\n this.showSelected = false;\n this.data = [...this.originalOptionItems];\n this.wasShowSelectedCheckedOnClose = false;\n }\n\n this.filterVirtualOptions(\"\");\n this.resetScrollPosition();\n this.emit('nile-after-show', { value: this.value, name: this.name });\n }\n\n private async handleClose(): Promise<void> {\n this.emit('nile-hide', { value: this.value, name: this.name });\n this.removeOpenListeners();\n\n this.wasShowSelectedCheckedOnClose = this.showSelected;\n\n await stopAnimations(this);\n const { keyframes, options } = getAnimation(this, 'select.hide', {\n dir: 'ltr',\n });\n await animateTo(this.popup.popup, keyframes, options);\n this.popup.active = false;\n\n this.searchValue = '';\n \n // Reset measured height when popup closes (content may change on next open)\n this.portalManager.resetMeasuredHeight();\n \n this.emit('nile-after-hide', { value: this.value, name: this.name });\n }\n\n async show(): Promise<unknown> {\n if (this.open || this.disabled) {\n this.open = false;\n return undefined;\n }\n\n this.open = true;\n return waitForEvent(this, 'nile-after-show');\n }\n\n async hide(): Promise<unknown> {\n if (!this.open || this.disabled) {\n this.open = false;\n return undefined;\n }\n\n this.open = false;\n return waitForEvent(this, 'nile-after-hide');\n }\n\n checkValidity(): boolean {\n return this.valueInput.checkValidity();\n }\n\n getForm(): HTMLFormElement | null {\n return this.formControlController.getForm();\n }\n\n reportValidity(): boolean {\n return this.valueInput.reportValidity();\n }\n\n setCustomValidity(message: string): void {\n this.valueInput.setCustomValidity(message);\n this.formControlController.updateValidity();\n }\n\n focus(options?: FocusOptions): void {\n this.displayInput.focus(options);\n }\n\n blur(): void {\n this.displayInput.blur();\n }\n\n onInputChange(event: Event): void {\n event.stopPropagation();\n }\n\n render(): TemplateResult {\n const hasLabelSlot = this.hasSlotController.test('label');\n const hasHelpTextSlot = this.hasSlotController.test('help-text');\n const hasLabelSuffixSlot = this.hasSlotController.test('label-suffix');\n const hasCustomSelect = this.hasSlotController.test('custom-select');\n const hasLabel = this.label ? true : !!hasLabelSlot;\n const hasClearIcon =\n this.clearable && !this.disabled && this.value.length > 0;\n const isPlaceholderVisible = !!this.placeholder && this.value.length === 0;\n const hasHelpText = !!this.helpText;\n const hasErrorMessage = !!this.errorMessage;\n\n return html`\n <div\n part=\"form-control\"\n class=${classMap({\n 'form-control': true,\n 'form-control--small': this.size === 'small',\n 'form-control--medium': this.size === 'medium',\n 'form-control--large': this.size === 'large',\n 'form-control--has-label': hasLabel,\n 'form-control--has-help-text': hasHelpText,\n })}\n >\n ${this.renderLabel(hasLabel, hasLabelSuffixSlot)}\n ${this.renderFormControlInput(hasCustomSelect, hasClearIcon, isPlaceholderVisible, hasHelpText, hasErrorMessage)}\n </div>\n `;\n }\n\n private renderLabel(hasLabel: boolean, hasLabelSuffixSlot: boolean): TemplateResult {\n return html`\n <label\n id=\"label\"\n part=\"form-control-label\"\n class=\"form-control__label\"\n aria-hidden=${hasLabel ? 'false' : 'true'}\n @click=${this.handleLabelClick}\n >\n <slot name=\"label\">${this.label}</slot>\n </label>\n\n ${hasLabelSuffixSlot ? html` <slot name=\"label-suffix\"></slot> ` : ``}\n `;\n }\n\n private renderFormControlInput(\n hasCustomSelect: boolean, \n hasClearIcon: boolean, \n isPlaceholderVisible: boolean, \n hasHelpText: boolean, \n hasErrorMessage: boolean\n ): TemplateResult {\n return html`\n <div part=\"form-control-input\" class=\"form-control-input\">\n ${this.renderPopup(hasCustomSelect, hasClearIcon, isPlaceholderVisible)}\n ${this.renderHelpText(hasHelpText, hasErrorMessage)}\n </div>\n `;\n }\n\n private renderPopup(hasCustomSelect: boolean, hasClearIcon: boolean, isPlaceholderVisible: boolean): TemplateResult {\n return html`\n <nile-popup\n class=${classMap({\n select: true,\n 'select--warning': this.warning,\n 'select--error': this.error,\n 'select--success': this.success,\n 'select--standard': true,\n 'select--filled': this.filled,\n 'select--pill': this.pill,\n 'select--open': this.open,\n 'select--disabled': this.disabled,\n 'select--multiple': this.multiple,\n 'select--focused': this.hasFocus,\n 'select--placeholder-visible': isPlaceholderVisible,\n 'select--top': this.placement === 'top',\n 'select--bottom': this.placement === 'bottom',\n 'select--small': this.size === 'small',\n 'select--medium': this.size === 'medium',\n 'select--large': this.size === 'large',\n })}\n placement=${this.placement}\n strategy=${this.portal ? 'fixed' : (this.hoist ? 'fixed' : 'absolute')}\n distance=\"6\"\n ?flip=${!this.portal}\n ?shift=${!this.portal}\n sync=${ifDefined(!this.noWidthSync ? 'width' : undefined)}\n auto-size=\"vertical\"\n auto-size-padding=\"10\"\n >\n ${this.renderCustomSelect(hasCustomSelect)}\n ${this.renderCombobox(hasCustomSelect, hasClearIcon)}\n ${this.showListbox ? this.renderListbox() : html``}\n </nile-popup>\n `;\n }\n\n private renderCustomSelect(hasCustomSelect: boolean): TemplateResult {\n return hasCustomSelect\n ? html`<slot\n slot=\"anchor\"\n name=\"custom-select\"\n class=\"custom-select\"\n @keydown=${this.handleComboboxKeyDown}\n @mousedown=${this.handleComboboxMouseDown}\n ></slot>`\n : html``;\n }\n\n private renderCombobox(hasCustomSelect: boolean, hasClearIcon: boolean): TemplateResult {\n return html`\n <div\n part=\"combobox\"\n class=${classMap({\n select__combobox: true,\n 'select__hide-default': hasCustomSelect,\n })}\n slot=\"anchor\"\n @keydown=${this.handleComboboxKeyDown}\n @mousedown=${this.handleComboboxMouseDown}\n >\n ${this.renderPrefix()}\n ${this.renderDisplayInput()}\n ${this.renderTags()}\n ${this.renderValueInput()}\n ${this.renderClearButton(hasClearIcon)}\n ${this.renderSuffix()}\n ${this.renderExpandIcon()}\n </div>\n `;\n }\n\n private renderPrefix(): TemplateResult {\n return html`\n <slot\n part=\"prefix\"\n name=\"prefix\"\n class=${classMap({\n select__prefix: true,\n multiple: this.multiple,\n })}\n ></slot>\n `;\n }\n\n private renderDisplayInput(): TemplateResult {\n return html`\n <input\n part=\"display-input\"\n class=\"select__display-input\"\n type=\"text\"\n placeholder=${this.placeholder}\n .disabled=${this.disabled}\n .value=${this.displayLabel}\n autocomplete=\"off\"\n spellcheck=\"false\"\n autocapitalize=\"off\"\n readonly\n aria-controls=\"listbox\"\n aria-expanded=${this.open ? 'true' : 'false'}\n aria-haspopup=\"listbox\"\n aria-labelledby=\"label\"\n aria-disabled=${this.disabled ? 'true' : 'false'}\n aria-describedby=\"help-text\"\n role=\"combobox\"\n tabindex=\"0\"\n />\n `;\n }\n\n private renderTags(): TemplateResult {\n return this.multiple\n ? html`\n <div part=\"tags\" class=\"select__tags\">\n ${this.selectedOptions.map((option, index) => {\n if (\n index < this.maxOptionsVisible ||\n this.maxOptionsVisible <= 0\n ) {\n const classes = {\n select__invisible:\n index + 1 > this.oldMaxOptionsVisible &&\n this.maxOptionsVisible === Infinity,\n };\n return html`\n <nile-tag\n class=${classMap(classes)}\n part=\"tag\"\n exportparts=\"\n base:tag__base,\n content:tag__content,\n remove-button:tag__remove-button,\n remove-button__base:tag__remove-button__base\n \"\n ?pill=${this.pill}\n size=${this.size}\n removable\n @nile-remove=${(event: NileRemoveEvent) =>\n this.handleTagRemove(event, option)}\n >\n ${option.getTextLabel()}\n </nile-tag>\n `;\n } else if (index === this.maxOptionsVisible) {\n return html`\n <span class=\"select__tags-count\"\n >+${this.selectedOptions.length - index} More\n </span>\n `;\n } else {\n return null;\n }\n })}\n </div>\n `\n : html``;\n }\n\n private renderValueInput(): TemplateResult {\n return html`\n <input\n class=\"select__value-input\"\n type=\"text\"\n ?disabled=${this.disabled}\n ?required=${this.required}\n .value=${Array.isArray(this.value)\n ? this.value.join(', ')\n : this.value}\n tabindex=\"-1\"\n aria-hidden=\"true\"\n @focus=${() => this.focus()}\n @invalid=${this.handleInvalid}\n />\n `;\n }\n\n private renderClearButton(hasClearIcon: boolean): TemplateResult {\n return hasClearIcon\n ? html`\n <button\n part=\"clear-button\"\n class=\"select__clear\"\n type=\"button\"\n aria-label=\"clearEntry\"\n @mousedown=${this.handleClearMouseDown}\n @click=${this.handleClearClick}\n tabindex=\"-1\"\n >\n <slot name=\"clear-icon\">\n <nile-icon name=\"var(--nile-icon-close, var(--ng-icon-x-close))\" method=\"var(--nile-svg-method-fill, var(--ng-svg-method-stroke))\" library=\"system\"></nile-icon>\n </slot>\n </button>\n `\n : html``;\n }\n\n private renderSuffix(): TemplateResult {\n return html`\n <slot\n part=\"suffix\"\n name=\"suffix\"\n class=${classMap({\n select__suffix: true,\n })}\n ></slot>\n `;\n }\n\n private renderExpandIcon(): TemplateResult {\n return html`\n <slot\n name=\"expand-icon\"\n part=\"expand-icon\"\n class=\"select__expand-icon\"\n >\n <nile-icon library=\"system\" name=\"var(--nile-icon-arrow-down, var(--ng-icon-chevron-down))\" method=\"var(--nile-svg-method-fill, var(--ng-svg-method-stroke))\"></nile-icon>\n </slot>\n `;\n }\n\n private renderListbox(): TemplateResult {\n return html`\n <div\n id=\"listbox\"\n role=\"listbox\"\n aria-expanded=${this.open ? 'true' : 'false'}\n aria-multiselectable=${this.multiple ? 'true' : 'false'}\n aria-labelledby=\"label\"\n part=\"listbox\"\n class=\"select__listbox ${this.searchEnabled\n ? 'select__search-enabled '\n : ''} ${this.portal ? 'select__portal-append-hidden' : ''}\"\n tabindex=\"-1\"\n @mouseup=${this.handleOptionClick}\n style=${this.portal ? 'display: none;' : ''}\n >\n ${this.renderSearch()}\n ${this.renderLoader()}\n ${this.getVirtualizedContent()}\n ${this.renderFooter()}\n </div>\n `;\n }\n\n private renderSearch(): TemplateResult {\n return this.searchEnabled\n ? html`\n <div part=\"search\" class=\"select__search\">\n <nile-input\n size=\"small\"\n clearable\n .value=${this.searchValue}\n placeholder=\"${this.internalSearchPlaceHolder}\"\n @nile-input=${this.handleSearchChange}\n @nile-focus=${this.handleSearchFocus}\n @nile-change=\"${this.onInputChange}\"\n >\n <nile-icon name=\"var(--nile-icon-search, var(--ng-icon-search-lg))\" method=\"var(--nile-svg-method-fill, var(--ng-svg-method-stroke))\" slot=\"suffix\"> </nile-icon>\n </nile-input>\n </div>\n `\n : html``;\n }\n\n private renderLoader(): TemplateResult {\n if (this.loading) {\n return html`\n <span part=\"loader\" class=\"virtual-select-loader\">\n <nile-loader size=\"sm\"></nile-loader>\n </span>\n `;\n }\n \n if (this.optionsLoading) {\n return html`\n <span part=\"loader\" class=\"select__loader\">\n <nile-icon\n class=\"select__loader--icon\"\n name=\"button-loading-blue\"\n ></nile-icon>\n </span>\n `;\n }\n \n return html``;\n }\n\n private renderFooter(): TemplateResult {\n return this.multiple\n ? html`\n <div\n part=\"footer\"\n class=\"select__footer ${this.loading ? 'loading' : ''}\"\n @click=\"${this.handleFooterClick}\"\n >\n <span\n @click=\"${this.toggleShowSelected}\"\n style=\"cursor: pointer;\"\n >\n <nile-checkbox\n ?disabled=\"${this.selectedOptions.length === 0}\"\n ?checked=\"${this.showSelected}\"\n >\n &nbsp; Show Selected</nile-checkbox\n >\n </span>\n ${this.selectedOptions.length !== 0\n ? html`\n <span\n class=\"select__clear\"\n @click=\"${this.unSelectAll}\"\n >\n Clear All\n </span>\n `\n : ``}\n </div>\n `\n : html``;\n }\n\n private renderHelpText(hasHelpText: boolean, hasErrorMessage: boolean): TemplateResult {\n return html`\n ${hasHelpText\n ? html` <nile-form-help-text>${this.helpText}</nile-form-help-text> `\n : ``}\n ${hasErrorMessage\n ? html`\n <nile-form-error-message\n >${this.errorMessage}</nile-form-error-message\n >\n `\n : ``}\n `;\n }\n\n getVirtualizedContent(): TemplateResult {\n return VirtualSelectRenderer.getVirtualizedContent(\n this.data,\n this.searchEnabled,\n this.getDisplayText.bind(this),\n this.value,\n this.multiple,\n this.renderItemConfig?.getDisplayText,\n this.renderItemConfig?.getValue,\n this.showNoResults,\n this.noResultsMessage,\n this.optionsLoading || this.loading,\n this.handleScroll.bind(this)\n );\n }\n\n nileInput(value: any): void {\n this.emit('nile-input', value);\n }\n\n nileChange(value: any): void {\n this.emit('nile-change', value);\n }\n\n private updateValidity(): void {\n this.updateComplete.then(() => {\n this.formControlController.updateValidity();\n });\n }\n\n private calculateWidthOfSelectTagsDiv(): number | null {\n if (this.shadowRoot) {\n const selectTagsDiv = this.shadowRoot.querySelector('.select__tags') as HTMLElement;\n if (selectTagsDiv) {\n const width = selectTagsDiv.offsetWidth;\n return width - 70;\n }\n }\n return null;\n }\n\n private calculateTotalWidthOfTags(): void {\n if (this.maxOptionsVisible !== Infinity) {\n this.oldMaxOptionsVisible = this.maxOptionsVisible;\n }\n\n this.maxOptionsVisible = Infinity;\n setTimeout(() => {\n let widths: number[] = [];\n if (this.shadowRoot) {\n const tags = this.shadowRoot.querySelectorAll('nile-tag');\n tags.forEach(tag => {\n if (tag instanceof HTMLElement) {\n widths.push(tag.offsetWidth);\n }\n });\n }\n if (this.value.length !== widths.length) {\n return;\n }\n\n let sum = widths.reduce(\n (accumulator, currentValue) => accumulator + currentValue,\n 0\n );\n const widthOfSelectTagsDiv = this.calculateWidthOfSelectTagsDiv();\n if (!widthOfSelectTagsDiv) {\n return;\n }\n\n let summ = 0;\n let lastindex = 0;\n\n for (let i = 0; i < widths.length; i++) {\n summ += widths[i];\n\n if (summ > widthOfSelectTagsDiv) {\n lastindex = i;\n break;\n }\n }\n this.maxOptionsVisible = lastindex;\n }, 1);\n }\n\n private async resetScrollPosition(): Promise<void> {\n await this.updateComplete;\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n let listbox: HTMLElement | null = null;\n \n // Select listbox (portal vs non-portal)\n if (this.portal && this.portalManager.portalContainerElement) {\n listbox = this.portalManager.portalContainerElement.querySelector('#listbox') as HTMLElement;\n } else {\n listbox = this.shadowRoot?.querySelector('#listbox') as HTMLElement;\n }\n \n if (!listbox || !listbox.isConnected) return;\n \n // Always reset scroll position\n listbox.scrollTop = 0;\n \n // When very few items, collapse overflow completely\n const virtualized = listbox.querySelector('.virtualized') as HTMLElement;\n if (virtualized && virtualized.isConnected) {\n const fewItems = this.data.length <= 5;\n \n if (fewItems) {\n // 👇 Prevent *any* scrolling and let height shrink\n virtualized.style.overflowY = 'hidden';\n virtualized.style.maxHeight = 'none';\n listbox.style.overflowY = 'hidden';\n listbox.style.maxHeight = 'fit-content';\n } else {\n // 👇 Re-enable scrolling when many items\n virtualized.style.overflowY = 'auto';\n virtualized.style.maxHeight = '';\n listbox.style.overflowY = 'auto';\n listbox.style.maxHeight = '';\n }\n \n virtualized.scrollTop = 0;\n }\n \n // lit-virtualizer (if used)\n const virtualizer = listbox.querySelector('lit-virtualizer') as HTMLElement;\n if (virtualizer && virtualizer.isConnected) {\n virtualizer.scrollTop = 0;\n }\n });\n });\n }\n \n\n}\n\nsetDefaultAnimation('select.show', {\n keyframes: [\n { opacity: 0, scale: 0.9 },\n { opacity: 1, scale: 1 },\n ],\n options: { duration: 100, easing: 'ease' },\n});\n\nsetDefaultAnimation('select.hide', {\n keyframes: [\n { opacity: 1, scale: 1 },\n { opacity: 0, scale: 0.9 },\n ],\n options: { duration: 100, easing: 'ease' },\n});\n\nexport default NileVirtualSelect;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nile-virtual-select': NileVirtualSelect;\n }\n}\n"],"names":["t","x","target","this","i","config","h","callback","e","skipInitial","o","Set","add","l","window","ResizeObserver","u","s","handleChanges","requestUpdate","addController","console","warn","_createClass","key","value","hostConnected","_iterator","_createForOfIteratorHelper","_step","n","done","observe","err","f","hostDisconnected","disconnect","_hostUpdated","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_callee$","_context2","prev","next","stop","hostUpdated","unobserve","_export","NileVirtualSelect","_u","k","formControlController","FormControlController","assumeInteractionOn","hasSlotController","HasSlotController","portalManager","PortalManager","hasFocus","displayLabel","selectedOptions","oldValue","scrolling","name","data","originalOptionItems","defaultValue","size","placeholder","autoResize","searchValue","searchEnabled","internalSearchPlaceHolder","disableLocalSearch","optionsLoading","loading","multiple","helpText","errorMessage","warning","error","success","disabled","clearable","open","hoist","filled","pill","label","placement","form","required","showNoResults","noResultsMessage","showSelected","blockValueChange","noWidthSync","portal","maxOptionsVisible","oldMaxOptionsVisible","showListbox","wasShowSelectedCheckedOnClose","handleDocumentMouseDown","event","path","composedPath","hitSelf","includes","hitPopup","popup","hitPortalAppend","portalContainerElement","hide","handleWindowError","message","preventDefault","handleWindowResize","updatePortalAppendPosition","handleWindowScroll","resizeController","ResizeController","entries","_iterator2","entry","_step2","classList","contains","calculateTotalWidthOfTags","_this2","_inherits","get","validity","_this$valueInput","valueInput","_this$valueInput$vali","_this$valueInput2","validationMessage","connectedCallback","super","initializeComponent","setupEventListeners","updateComplete","then","length","selectionChanged","disconnectedCallback","removeOpenListeners","scrollTimeout","clearTimeout","undefined","cleanupPortalAppend","updated","changedProperties","has","_this$shadowRoot","tagsDiv","shadowRoot","querySelector","emit","getDisplayText","item","_this$renderItemConfi","renderItemConfig","toString","getItemValue","_this$renderItemConfi2","getValue","getSearchText","handleDocumentFocusIn","bind","handleDocumentKeyDown","addOpenListeners","document","addEventListener","removeEventListener","handleFocus","handleBlur","shouldIgnoreKeyPress","isEscapeKey","handleEscapeKey","isEnterOrSpaceKey","handleEnterOrSpaceKey","isClearButton","closest","isIconButton","stopPropagation","displayInput","focus","preventScroll","stopImmediatePropagation","show","handleFooterClick","toggleShowSelected","selectedValues","Array","isArray","filter","itemValue","some","val","String","resetMeasuredHeight","repaintOptionsContainer","unSelectAll","resetScrollPosition","handleLabelClick","handleComboboxMouseDown","shouldIgnoreComboboxClick","el","Element","tagName","toLowerCase","handleComboboxKeyDown","handleClearClick","clearSelection","nileInput","nileChange","handleClearMouseDown","handleOptionClick","option","shouldBlockValueChange","handleOptionSelection","optionValue","toggleOptionSelection","setSelectedOptions","currentValues","v","handleTagRemove","removeTagFromSelection","emitTagRemovalEvent","currentValue","newValue","removedtagvalue","itemsToSearch","VirtualSelectSelectionManager","createVirtualOptionsFromValues","_this$selectedOptions2","getTextLabel","updateValidity","_toConsumableArray","handleSearchFocus","handleSearchBlur","handleSearchChange","detail","query","filterVirtualOptions","_this8$shadowRoot","virtualized","remove","handleScroll","scrollTop","scrollLeft","setTimeout","Math","ceil","floor","scrollHeight","offsetHeight","isAtBottom","result","VirtualSelectSearchManager","requestAnimationFrame","filteredItems","handleInvalid","setValidity","emitInvalidEvent","handleDisabledChange","handleOpenChange","handleValueChange","handleDataChange","handleRenderItemConfigChange","handleOptionsLoadingChange","handlePortalAppendChange","setupPortalAppend","_handleOpenChange","_callee2","_callee2$","_context3","handleOpen","handleClose","_callee3","_this$data","_g","_callee3$","_context4","stopAnimations","active","getAnimation","dir","animateTo","keyframes","options","_callee4","_g2","_callee4$","_context5","_callee5","_callee5$","_context6","waitForEvent","_callee6","_callee6$","_context7","abrupt","checkValidity","getForm","reportValidity","setCustomValidity","blur","onInputChange","render","hasLabelSlot","test","hasLabelSuffixSlot","hasCustomSelect","hasLabel","hasClearIcon","isPlaceholderVisible","hasHelpText","hasErrorMessage","html","_templateObject","_taggedTemplateLiteral","classMap","renderLabel","renderFormControlInput","_templateObject2","_templateObject3","_templateObject4","renderPopup","renderHelpText","_templateObject5","select","ifDefined","renderCustomSelect","renderCombobox","renderListbox","_templateObject6","_templateObject7","_templateObject8","_templateObject9","select__combobox","renderPrefix","renderDisplayInput","renderTags","renderValueInput","renderClearButton","renderSuffix","renderExpandIcon","_templateObject10","select__prefix","_templateObject11","_templateObject12","map","index","classes","select__invisible","Infinity","_templateObject13","_templateObject14","_templateObject15","_templateObject16","join","_templateObject17","_templateObject18","_templateObject19","select__suffix","_templateObject20","_templateObject21","renderSearch","renderLoader","getVirtualizedContent","renderFooter","_templateObject22","_templateObject23","_templateObject24","_templateObject25","_templateObject26","_templateObject27","_templateObject28","_templateObject29","_templateObject30","_templateObject31","_templateObject32","VirtualSelectRenderer","calculateWidthOfSelectTagsDiv","selectTagsDiv","offsetWidth","widths","querySelectorAll","forEach","tag","HTMLElement","push","widthOfSelectTagsDiv","summ","lastindex","_resetScrollPosition","_callee7","_this15","_callee7$","_context8","_this15$shadowRoot","listbox","isConnected","style","overflowY","maxHeight","virtualizer","NileElement","styles","__decorate","prototype","state","property","type","converter","fromAttribute","split","toAttribute","Boolean","reflect","attribute","Number","watch","waitUntilFirstUpdate","customElement","setDefaultAnimation","opacity","scale","duration","easing"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"nile-virtual-select.cjs.js","sources":["../../../../node_modules/@lit-labs/observers/resize-controller.js","../../../src/nile-virtual-select/nile-virtual-select.ts"],"sourcesContent":["import{isServer as s}from\"lit-html/is-server.js\";\n/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */class t{constructor(t,{target:i,config:h,callback:e,skipInitial:o}){this.t=new Set,this.o=!1,this.i=!1,this.h=t,null!==i&&this.t.add(i??t),this.l=h,this.o=o??this.o,this.callback=e,s||(window.ResizeObserver?(this.u=new ResizeObserver((s=>{this.handleChanges(s),this.h.requestUpdate()})),t.addController(this)):console.warn(\"ResizeController error: browser does not support ResizeObserver.\"))}handleChanges(s){this.value=this.callback?.(s,this.u)}hostConnected(){for(const s of this.t)this.observe(s)}hostDisconnected(){this.disconnect()}async hostUpdated(){!this.o&&this.i&&this.handleChanges([]),this.i=!1}observe(s){this.t.add(s),this.u.observe(s,this.l),this.i=!0,this.h.requestUpdate()}unobserve(s){this.t.delete(s),this.u.unobserve(s)}disconnect(){this.u.disconnect()}}export{t as ResizeController};\n//# sourceMappingURL=resize-controller.js.map\n"," /**\n * Copyright Aquera Inc 2025\n *\n * This source code is licensed under the BSD-3-Clause license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport {\n LitElement,\n html,\n} from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { styles } from './nile-virtual-select.css';\n\nimport '../nile-icon';\nimport '../nile-popup/nile-popup';\nimport '../nile-tag/nile-tag';\nimport '../nile-checkbox/nile-checkbox';\nimport '../nile-loader/nile-loader';\nimport { animateTo, stopAnimations } from '../internal/animate';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { query, state } from 'lit/decorators.js';\nimport { defaultValue } from '../internal/default-value';\nimport { FormControlController } from '../internal/form';\nimport {\n getAnimation,\n setDefaultAnimation,\n} from '../utilities/animation-registry';\nimport { HasSlotController } from '../internal/slot';\nimport { waitForEvent } from '../internal/event';\nimport { watch } from '../internal/watch';\nimport NileElement from '../internal/nile-element';\nimport type { CSSResultGroup, PropertyValues, TemplateResult } from 'lit';\nimport type { NileFormControl } from '../internal/nile-element';\nimport type NileOption from '../nile-option/nile-option';\nimport type NilePopup from '../nile-popup/nile-popup';\nimport { ifDefined } from 'lit/directives/if-defined.js';\n\nimport type { VirtualOption, NileRemoveEvent, RenderItemConfig } from './types.js';\nimport { VirtualSelectSelectionManager } from './selection-manager.js';\nimport { VirtualSelectSearchManager } from './search-manager.js';\nimport { VirtualSelectRenderer } from './renderer.js';\nimport { PortalManager } from './portal-manager.js';\nimport { ResizeController } from '@lit-labs/observers/resize-controller.js';\n\n/**\n * Nile Virtual Select component.\n *\n * @tag nile-virtual-select\n *\n */\n\n/**\n * @summary Virtual select component for handling large datasets with virtual scrolling.\n * @status stable\n * @since 2.0\n *\n * @dependency nile-icon\n * @dependency nile-popup\n * @dependency nile-tag\n * @dependency nile-checkbox\n *\n * @slot label - The input's label. Alternatively, you can use the `label` attribute.\n * @slot prefix - Used to prepend a presentational icon or similar element to the combobox.\n * @slot clear-icon - An icon to use in lieu of the default clear icon.\n * @slot expand-icon - The icon to show when the control is expanded and collapsed.\n * @slot help-text - Text that describes how to use the input. Alternatively, you can use the `help-text` attribute.\n *\n * @event nile-change - Emitted when the control's value changes.\n * @event nile-clear - Emitted when the control's value is cleared.\n * @event nile-input - Emitted when the control receives input.\n * @event nile-focus - Emitted when the control gains focus.\n * @event nile-blur - Emitted when the control loses focus.\n * @event nile-show - Emitted when the select's menu opens.\n * @event nile-after-show - Emitted after the select's menu opens and all animations are complete.\n * @event nile-hide - Emitted when the select's menu closes.\n * @event nile-after-hide - Emitted after the select's menu closes and all animations are complete.\n * @event nile-invalid - Emitted when the form control has been checked for validity and its constraints aren't satisfied.\n * @event nile-search - Emitted when the user types in the search input. The event payload includes the search query for backend search functionality.\n * @event nile-scroll - Emitted when the user scrolls within the virtualized container. The event payload includes scroll position information.\n * @event nile-scroll-start - Emitted when the user starts scrolling within the virtualized container.\n * @event nile-scroll-end - Emitted when the user stops scrolling and reaches the bottom of the virtualized container (debounced).\n *\n * @csspart form-control - The form control that wraps the label, input, and help text.\n * @csspart form-control-label - The label's wrapper.\n * @csspart form-control-input - The select's wrapper.\n * @csspart form-control-help-text - The help text's wrapper.\n * @csspart combobox - The container the wraps the prefix, combobox, clear icon, and expand button.\n * @csspart prefix - The container that wraps the prefix slot.\n * @csspart display-input - The element that displays the selected option's label, an `<input>` element.\n * @csspart listbox - The listbox container where options are slotted.\n * @csspart tags - The container that houses option tags when `multiple` is used.\n * @csspart tag - The individual tags that represent each multiselect option.\n * @csspart clear-button - The clear button.\n * @csspart expand-icon - The container that wraps the expand icon.\n * @csspart footer - The footer container with show selected and clear all options.\n */\n\n@customElement('nile-virtual-select')\nexport class NileVirtualSelect extends NileElement implements NileFormControl {\n static styles: CSSResultGroup = styles;\n\n private readonly formControlController = new FormControlController(this, {\n assumeInteractionOn: ['nile-blur', 'nile-input'],\n });\n private readonly hasSlotController = new HasSlotController(\n this,\n 'help-text',\n 'label'\n );\n private readonly portalManager = new PortalManager(this);\n\n @query('.select') popup: NilePopup;\n @query('.select__combobox') combobox: HTMLElement;\n @query('.select__display-input') displayInput: HTMLInputElement;\n @query('.select__value-input') valueInput: HTMLInputElement;\n @query('.virtualized') virtualizedContainer: HTMLElement;\n\n @state() private hasFocus = false;\n @state() displayLabel = '';\n @state() selectedOptions: VirtualOption[] = [];\n @state() oldValue: string | string[] = '';\n \n private scrollTimeout: number | undefined;\n private scrolling = false;\n\n /** The name of the select, submitted as a name/value pair with form data. */\n @property() name = '';\n\n /** Array of all option items for virtual scrolling */\n @property({ type: Array }) data: any = [];\n\n /** Original unfiltered option items for search functionality */\n @state() private originalOptionItems: any = [];\n\n /**\n * The current value of the select. When `multiple` is enabled, the value will be an array of selected values.\n */\n @property({\n converter: {\n fromAttribute: (value: string) => value.split(' '),\n toAttribute: (value: string[]) => value.join(' '),\n },\n })\n value: string | string[] = '';\n\n /** The default value of the form control. Primarily used for resetting the form control. */\n @defaultValue() defaultValue: string | string[] = '';\n\n /** The select's size. */\n @property() size: 'small' | 'medium' | 'large' = 'medium';\n\n /** Placeholder text to show as a hint when the select is empty. */\n @property() placeholder = 'Select...';\n\n /** Enable automatic resizing of tags area */\n @property({ type: Boolean }) autoResize = false;\n\n /** Current search value */\n @state() searchValue: string = '';\n\n /** Enable search functionality */\n @property({ type: Boolean, reflect: true }) searchEnabled = false;\n\n /** Search input placeholder */\n @property({attribute:'internal-search-placeholder'}) internalSearchPlaceHolder = 'Search...';\n\n /** Disable local search filtering */\n @property({ type: Boolean, reflect: true }) disableLocalSearch = false;\n\n /** Show loading state */\n @property({ type: Boolean, reflect: true }) optionsLoading = false;\n\n /** Show loading state using nile-loader */\n @property({ type: Boolean, reflect: true, attribute: true }) loading = false;\n\n /** Allows more than one option to be selected. */\n @property({ type: Boolean, reflect: true }) multiple = false;\n\n /** Help text */\n @property({ attribute: 'help-text', reflect: true }) helpText = '';\n\n /** Error message */\n @property({ attribute: 'error-message', reflect: true }) errorMessage = '';\n\n /** Sets the input to a warning state */\n @property({ type: Boolean }) warning = false;\n\n @property({ type: Boolean, reflect: true, attribute: true }) enableVisibilityEffect = false;\n\n @property({ type: Boolean, reflect: true, attribute: true }) enableTabClose = false;\n\n /** Sets the input to an error state */\n @property({ type: Boolean }) error = false;\n\n /** Sets the input to a success state */\n @property({ type: Boolean }) success = false;\n\n /** Disables the select control. */\n @property({ type: Boolean, reflect: true }) disabled = false;\n\n /** Adds a clear button when the select is not empty. */\n @property({ type: Boolean, reflect: true }) clearable = false;\n\n /** The select's open state. */\n @property({ type: Boolean, reflect: true }) open = false;\n\n /**\n * Enable this option to prevent the listbox from being clipped when the component is placed inside a container with\n * `overflow: auto|scroll`. Hoisting uses a fixed positioning strategy that works in many, but not all, scenarios.\n */\n @property({ type: Boolean }) hoist = false;\n\n /** Draws a filled select. */\n @property({ type: Boolean, reflect: true }) filled = false;\n\n /** Draws a pill-style select with rounded edges. */\n @property({ type: Boolean, reflect: true }) pill = false;\n\n /** The select's label. If you need to display HTML, use the `label` slot instead. */\n @property() label = '';\n\n /**\n * The preferred placement of the select's menu. Note that the actual placement may vary as needed to keep the listbox\n * inside of the viewport.\n */\n @property({ reflect: true }) placement: 'top' | 'bottom' = 'bottom';\n\n /**\n * By default, form controls are associated with the nearest containing `<form>` element. This attribute allows you\n * to place the form control outside of a form and associate it with the form that has this `id`. The form must be in\n * the same document or shadow root for this to work.\n */\n @property({ reflect: true }) form = '';\n\n /** The select's required attribute. */\n @property({ type: Boolean, reflect: true }) required = false;\n\n /** Show no results message */\n @property({ type: Boolean }) showNoResults: boolean = false;\n\n /** No results message */\n @property({ type: String }) noResultsMessage: string = 'No results found';\n\n /** Show selected options only */\n @property({ type: Boolean }) showSelected = false;\n\n /** Enhanced configuration for rendering items with support for display text, value, and search text */\n @property({ attribute:false}) renderItemConfig?: RenderItemConfig;\n\n /** Block value change events */\n @property({ type: Boolean, reflect: true }) blockValueChange = false;\n\n /** Disable width synchronization */\n @property({ type: Boolean, reflect: true }) noWidthSync = false;\n\n /** \n * When true, the listbox will be appended to the document body instead of the parent container.\n * This is useful when the parent has overflow: hidden, clip-path, or transform applied.\n */\n @property({ type: Boolean, reflect: true }) portal = false;\n\n /**\n * The maximum number of selected options to show when `multiple` is true. After the maximum, \"+n\" will be shown to\n * indicate the number of additional items that are selected. Set to 0 to remove the limit.\n */\n @property({ attribute: 'max-options-visible', type: Number })\n maxOptionsVisible = 3;\n\n @state() oldMaxOptionsVisible: number = 1;\n @state() showListbox: boolean = false;\n @state() private wasShowSelectedCheckedOnClose: boolean = false;\n\n /** Gets the validity state object */\n get validity() {\n return this.valueInput?.validity;\n }\n\n /** Gets the validation message */\n get validationMessage() {\n return this.valueInput?.validationMessage ?? '';\n }\n\n connectedCallback() {\n super.connectedCallback();\n this.initializeComponent();\n this.setupEventListeners();\n \n this.updateComplete.then(() => {\n if (this.value && this.data.length > 0) {\n this.selectionChanged();\n }\n });\n }\n\n disconnectedCallback() {\n this.removeOpenListeners();\n // Clear any pending scroll timeout to prevent memory leaks\n if (this.scrollTimeout) {\n clearTimeout(this.scrollTimeout);\n this.scrollTimeout = undefined;\n }\n // Clean up body append elements\n this.portalManager.cleanupPortalAppend();\n }\n\n protected updated(changedProperties: PropertyValues): void {\n if(changedProperties.has('value')) {\n this.selectionChanged();\n }\n if (changedProperties.has('autoResize')) {\n const tagsDiv = this.shadowRoot?.querySelector('.select__tags') as HTMLElement;\n if (this.autoResize && tagsDiv) {\n this.resizeController.observe(tagsDiv);\n } else if (tagsDiv) {\n this.resizeController.unobserve(tagsDiv);\n }\n }\n }\n\n private initializeComponent(): void {\n this.open = false;\n this.emit('nile-init');\n }\n\n /**\n * Get display text for an item using renderItemConfig\n */\n private getDisplayText(item: any): string {\n if (this.renderItemConfig?.getDisplayText) {\n return this.renderItemConfig.getDisplayText(item);\n }\n // Fallback to basic display\n return item?.label || item?.name || item?.toString() || '';\n }\n\n /**\n * Get value for an item using renderItemConfig or fallback to item.value\n */\n private getItemValue(item: any): string {\n if (this.renderItemConfig?.getValue) {\n return this.renderItemConfig.getValue(item);\n }\n return item?.value || item;\n }\n\n /**\n * Get search text for an item using renderItemConfig or fallback to display text\n */\n private getSearchText(item: any): string {\n if (this.renderItemConfig?.getSearchText) {\n return this.renderItemConfig.getSearchText(item);\n }\n return this.getDisplayText(item);\n }\n\n private setupEventListeners(): void {\n this.handleDocumentFocusIn = this.handleDocumentFocusIn.bind(this);\n this.handleDocumentKeyDown = this.handleDocumentKeyDown.bind(this);\n this.handleDocumentMouseDown = this.handleDocumentMouseDown.bind(this);\n this.handleWindowError = this.handleWindowError.bind(this);\n this.handleWindowResize = this.handleWindowResize.bind(this);\n this.handleWindowScroll = this.handleWindowScroll.bind(this);\n }\n\n private addOpenListeners(): void {\n document.addEventListener('focusin', this.handleDocumentFocusIn);\n document.addEventListener('keydown', this.handleDocumentKeyDown);\n document.addEventListener('mousedown', this.handleDocumentMouseDown);\n window.addEventListener('error', this.handleWindowError);\n \n if (this.portal) {\n window.addEventListener('resize', this.handleWindowResize);\n window.addEventListener('scroll', this.handleWindowScroll, true);\n }\n }\n\n private removeOpenListeners(): void {\n document.removeEventListener('focusin', this.handleDocumentFocusIn);\n document.removeEventListener('keydown', this.handleDocumentKeyDown);\n document.removeEventListener('mousedown', this.handleDocumentMouseDown);\n window.removeEventListener('error', this.handleWindowError);\n window.removeEventListener('resize', this.handleWindowResize);\n window.removeEventListener('scroll', this.handleWindowScroll, true);\n }\n\n private handleFocus(): void {\n this.hasFocus = true;\n this.emit('nile-focus');\n }\n\n private handleBlur(): void {\n this.hasFocus = false;\n this.emit('nile-blur');\n }\n\n private handleDocumentFocusIn(event: FocusEvent): void {\n if (!this.open) return; \n const path = event.composedPath(); \n const hitSelf = path.includes(this);\n const hitPopup = this.popup && path.includes(this.popup);\n const hitPortalAppend = this.portal && this.portalManager.portalContainerElement && path.includes(this.portalManager.portalContainerElement);\n\n if (!hitSelf && !hitPopup && !hitPortalAppend) {\n this.hide();\n }\n }\n\n private handleDocumentKeyDown(event: KeyboardEvent): void {\n if (this.shouldIgnoreKeyPress(event)) {\n return;\n }\n\n if (this.isEscapeKey(event)) {\n this.handleEscapeKey(event);\n }\n\n if (this.isEnterOrSpaceKey(event)) {\n this.handleEnterOrSpaceKey(event);\n }\n }\n\n private shouldIgnoreKeyPress(event: KeyboardEvent): boolean {\n const target = event.target as HTMLElement;\n const isClearButton = target.closest('.select__clear') !== null;\n const isIconButton = target.closest('nile-icon-button') !== null;\n return isClearButton || isIconButton;\n }\n\n private isEscapeKey(event: KeyboardEvent): boolean {\n return event.key === 'Escape' && this.open;\n }\n\n private handleEscapeKey(event: KeyboardEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this.hide();\n this.displayInput.focus({ preventScroll: true });\n }\n\n private isEnterOrSpaceKey(event: KeyboardEvent): boolean {\n return event.key === 'Enter' || event.key === ' ';\n }\n\n private handleEnterOrSpaceKey(event: KeyboardEvent): void {\n event.preventDefault();\n event.stopImmediatePropagation();\n\n if (!this.open) {\n this.show();\n return;\n }\n\n if (!this.multiple) {\n this.hide();\n this.displayInput.focus({ preventScroll: true });\n }\n }\n\n private handleDocumentMouseDown = (event: MouseEvent): void => {\n if (!this.open) return; \n \n const path = event.composedPath();\n const hitSelf = path.includes(this);\n const hitPopup = this.popup && path.includes(this.popup);\n const hitPortalAppend = this.portal && this.portalManager.portalContainerElement && path.includes(this.portalManager.portalContainerElement);\n \n if (!hitSelf && !hitPopup && !hitPortalAppend) {\n this.hide();\n }\n };\n\n /** All active IntersectionObservers for visibility detection */\n private anchorVisibilityObservers: IntersectionObserver[] = [];\n\n /** Utility: find ALL scrollable ancestors (not just the nearest) */\n private getScrollableAncestors(element: HTMLElement): HTMLElement[] {\n const scrollables: HTMLElement[] = [];\n let parent = element.parentElement;\n while (parent) {\n const style = getComputedStyle(parent);\n const canScroll =\n /(auto|scroll)/.test(style.overflow + style.overflowY + style.overflowX);\n if (canScroll) {\n scrollables.push(parent);\n }\n parent = parent.parentElement;\n }\n return scrollables;\n }\n\n /** Handles tab visibility (page hidden / tab switched) */\n private handleDocumentVisibilityChange = (): void => {\n if (!this.enableTabClose) return;\n if (document.visibilityState === 'hidden' && this.open) {\n this.hide();\n this.emit('nile-visibility-change', {\n visible: false,\n reason: 'document-hidden',\n name: this.name,\n });\n }\n };\n\n /** Sets up visibility tracking for all relevant contexts */\n private setupAnchorVisibilityObserver(): void {\n if (!this.enableVisibilityEffect) return;\n\n this.cleanupAnchorVisibilityObserver();\n\n const combobox = this.combobox;\n if (!combobox) return;\n\n // Get all scrollable ancestors and viewport\n const scrollContainers = [...this.getScrollableAncestors(this), null];\n\n scrollContainers.forEach((rootContainer) => {\n const observer = new IntersectionObserver(\n (entries) => {\n for (const entry of entries) {\n if (!entry.isIntersecting && this.open) {\n this.hide();\n this.emit('nile-visibility-change', {\n visible: false,\n reason: 'anchor-out-of-view',\n name: this.name,\n root: rootContainer,\n });\n return; // stop further triggers\n }\n }\n },\n {\n root: rootContainer,\n threshold: 0.1, // 10% visible = visible\n }\n );\n\n observer.observe(combobox);\n this.anchorVisibilityObservers.push(observer);\n });\n\n // Attach tab visibility listener only if property enabled\n if (this.enableTabClose) {\n document.addEventListener(\n 'visibilitychange',\n this.handleDocumentVisibilityChange\n );\n }\n }\n\n /** Cleans up all visibility observers and listeners */\n private cleanupAnchorVisibilityObserver(): void {\n this.anchorVisibilityObservers.forEach((o) => o.disconnect());\n this.anchorVisibilityObservers = [];\n\n // Always remove listener to avoid stale callbacks\n document.removeEventListener(\n 'visibilitychange',\n this.handleDocumentVisibilityChange\n );\n }\n\n\n /**\n * This is a workaround for an error in the Lit Labs virtualizer.\n * Since there are no specific guidelines available to fix the issue,\n * we are catching only the error message related to the virtualizer.\n */\n private handleWindowError = (event: ErrorEvent): void => {\n const errorMessage = event.error?.message || event.message || '';\n if (errorMessage.includes('Cannot read properties of null (reading \\'insertBefore\\')')) {\n event.preventDefault();\n return;\n }\n };\n\n private handleWindowResize = (): void => {\n this.portalManager.updatePortalAppendPosition();\n };\n\n private handleWindowScroll = (): void => {\n this.portalManager.updatePortalAppendPosition();\n };\n\n private handleFooterClick(event: MouseEvent): void {\n event.stopPropagation();\n event.preventDefault();\n }\n\n private toggleShowSelected(event: Event): void {\n event.stopPropagation();\n event.preventDefault();\n if (this.selectedOptions?.length === 0) {\n return;\n }\n this.showSelected = !this.showSelected;\n\n if (this.showSelected) {\n this.searchValue = \"\";\n const selectedValues = Array.isArray(this.value) ? this.value : [this.value];\n this.data = this.originalOptionItems.filter((item: any) => {\n const itemValue = this.getItemValue(item);\n return selectedValues.some(val => String(val) === String(itemValue));\n });\n } else {\n this.data = [...this.originalOptionItems];\n }\n\n // Reset measured height when show selected toggles (content height may change)\n this.portalManager.resetMeasuredHeight();\n\n this.requestUpdate();\n this.repaintOptionsContainer();\n }\n\n private unSelectAll(): void {\n this.showSelected = false;\n this.value = this.multiple ? [] : '';\n this.data = [...this.originalOptionItems];\n this.selectionChanged();\n this.emit('nile-change', { value: this.value, name: this.name });\n this.emit('nile-clear', { value: this.multiple ? this.value : '', name: this.name });\n this.resetScrollPosition();\n }\n\n private handleLabelClick(): void {\n this.displayInput.focus();\n this.hide();\n }\n\n private handleComboboxMouseDown(event: MouseEvent): void {\n if (this.shouldIgnoreComboboxClick(event)) {\n return;\n }\n\n event.preventDefault();\n this.displayInput.focus({ preventScroll: true });\n this.open = !this.open;\n }\n\n private resizeController = new ResizeController(this, {\n callback: (entries: ResizeObserverEntry[]) => {\n for (const entry of entries) {\n if (entry.target.classList.contains('select__tags')) {\n this.calculateTotalWidthOfTags();\n }\n }\n }\n });\n\n private shouldIgnoreComboboxClick(event: MouseEvent): boolean {\n const path = event.composedPath();\n const isIconButton = path.some(\n el =>\n el instanceof Element && el.tagName.toLowerCase() === 'nile-icon-button'\n );\n return this.disabled || isIconButton;\n }\n\n private handleComboboxKeyDown(event: KeyboardEvent): void {\n if (this.isEnterOrSpaceKey(event)) {\n event.preventDefault();\n this.open = !this.open;\n }\n }\n\n private handleClearClick(event: MouseEvent): void {\n event.stopPropagation();\n this.clearSelection();\n }\n\n private clearSelection(): void {\n const oldValue = this.value;\n this.value = this.multiple ? [] : '';\n this.selectionChanged();\n\n this.updateComplete.then(() => {\n this.nileInput({ value: this.value, name: this.name });\n this.nileChange({ value: this.value, name: this.name });\n this.emit('nile-clear');\n });\n }\n\n private handleClearMouseDown(event: MouseEvent): void {\n event.stopPropagation();\n }\n\n private handleOptionClick(event: MouseEvent): void {\n const target = event.target as HTMLElement;\n const option = target.closest('nile-option');\n\n if (this.shouldBlockValueChange(option)) {\n return;\n }\n\n const oldValue = this.value;\n this.oldValue = oldValue;\n\n if (option && !option.disabled) {\n this.handleOptionSelection(option);\n }\n }\n\n private shouldBlockValueChange(option: Element | null): boolean {\n if (this.blockValueChange && option) {\n this.emit('nile-block-change', { value: (option as any)?.value, name: this.name });\n this.hide();\n return true;\n }\n return false;\n }\n\n private handleOptionSelection(option: Element): void {\n const optionValue = (option as any).value;\n \n if (this.multiple) {\n this.toggleOptionSelection(optionValue);\n } else {\n this.setSelectedOptions(optionValue);\n }\n\n this.updateComplete.then(() =>\n this.displayInput.focus({ preventScroll: true })\n );\n\n if (this.value !== this.oldValue) {\n this.updateComplete.then(() => {\n this.nileInput({ value: this.value, name: this.name });\n this.nileChange({ value: this.value, name: this.name });\n });\n }\n\n if (!this.multiple) {\n this.hide();\n this.displayInput.focus({ preventScroll: true });\n }\n }\n\n private setSelectedOptions(optionValue: string): void {\n this.value = optionValue;\n this.selectionChanged();\n }\n\n private toggleOptionSelection(optionValue: string): void {\n const currentValues = Array.isArray(this.value) ? this.value : [];\n \n if (currentValues.includes(optionValue)) {\n this.value = currentValues.filter(v => v !== optionValue);\n } else {\n this.value = [...currentValues, optionValue];\n }\n \n this.selectionChanged();\n }\n\n private handleTagRemove(event: NileRemoveEvent, option: VirtualOption): void {\n event.stopPropagation();\n\n if (!this.disabled) {\n this.removeTagFromSelection(option);\n this.emitTagRemovalEvent(option);\n }\n }\n\n private removeTagFromSelection(option: VirtualOption): void {\n let currentValue = this.value;\n if (!Array.isArray(currentValue)) {\n currentValue = currentValue ? [currentValue] : [];\n }\n const newValue = currentValue.filter((v: string) => v !== option.value);\n this.value = newValue;\n this.selectionChanged();\n }\n\n private emitTagRemovalEvent(option: VirtualOption): void {\n this.updateComplete.then(() => {\n this.nileInput({ value: this.value, name: this.name });\n this.nileChange({ value: this.value, name: this.name });\n this.emit('nile-tag-remove', { value: this.value, name: this.name, removedtagvalue: option.value });\n });\n }\n\n private selectionChanged(): void {\n const itemsToSearch = this.originalOptionItems.length > 0 ? this.originalOptionItems : this.data;\n this.selectedOptions = VirtualSelectSelectionManager.createVirtualOptionsFromValues(\n this.value, \n itemsToSearch, \n this.getDisplayText.bind(this),\n this.renderItemConfig?.getValue\n );\n\n if (this.multiple) {\n if (this.placeholder && this.value.length === 0) {\n this.displayLabel = '';\n } else {\n this.displayLabel = this.selectedOptions.length + ' selected';\n }\n } else {\n const currentValue = Array.isArray(this.value) ? this.value[0] : this.value;\n const label = this.selectedOptions[0]?.getTextLabel();\n this.displayLabel = label ? label : currentValue ?? '';\n }\n\n this.updateValidity();\n\n if (this.selectedOptions.length === 0) {\n this.showSelected = false;\n if(this.originalOptionItems?.length > 0 && !this.searchValue) {\n this.data = [...this.originalOptionItems];\n }\n this.repaintOptionsContainer();\n }\n\n this.calculateTotalWidthOfTags();\n }\n \n\n handleSearchFocus(): void {\n document.removeEventListener('keydown', this.handleDocumentKeyDown);\n }\n\n handleSearchBlur(): void {\n document.addEventListener('keydown', this.handleDocumentKeyDown);\n }\n\n handleSearchChange(e: any): void {\n this.searchValue = e.detail.value;\n if (this.portal) {\n this.portalManager.updatePortalAppendPosition();\n }\n \n this.emit('nile-search', { \n query: this.searchValue,\n name: this.name \n });\n \n if (!this.disableLocalSearch) {\n this.filterVirtualOptions(this.searchValue);\n this.repaintOptionsContainer();\n \n // Reset measured height when search changes (content height may change)\n this.portalManager.resetMeasuredHeight();\n }\n }\n \n repaintOptionsContainer() {\n this.resetScrollPosition();\n this.updateComplete.then(() => {\n const virtualized = this.shadowRoot?.querySelector('.virtualized') as HTMLElement;\n if (virtualized) {\n if (this.data.length <= 5) {\n virtualized.classList.add('no-scroll');\n } else {\n virtualized.classList.remove('no-scroll');\n }\n }\n });\n }\n\n handleScroll(e: Event): void {\n if(this.showSelected) {\n return;\n }\n\n const target = e.target as HTMLElement;\n \n this.emit('nile-scroll', {\n scrollTop: target.scrollTop,\n scrollLeft: target.scrollLeft,\n name: this.name\n });\n\n if (!this.scrolling) {\n this.scrolling = true;\n this.emit('nile-scroll-start', {\n scrollTop: target.scrollTop,\n scrollLeft: target.scrollLeft,\n name: this.name\n });\n }\n\n clearTimeout(this.scrollTimeout);\n this.scrollTimeout = window.setTimeout(() => {\n if (this.scrolling) {\n this.scrolling = false;\n }\n }, 300);\n\n const isAtBottom = Math.ceil(target.scrollTop) >= Math.floor(target.scrollHeight - target.offsetHeight);\n if (isAtBottom && !this.searchValue) {\n this.emit('nile-scroll-end', {\n scrollTop: target.scrollTop,\n scrollLeft: target.scrollLeft,\n name: this.name,\n isAtBottom: true\n });\n }\n }\n\n filterVirtualOptions(searchValue: string): void {\n const result = VirtualSelectSearchManager.filterVirtualOptions(\n searchValue,\n this.originalOptionItems,\n this.data,\n this.getDisplayText.bind(this),\n this.renderItemConfig?.getSearchText\n );\n if (this.portal) {\n this.portalManager.updatePortalAppendPosition();\n this.updateComplete.then(() => {\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n this.resetScrollPosition();\n });\n });\n });\n } else {\n this.resetScrollPosition();\n }\n this.data = result.filteredItems;\n this.showNoResults = result.showNoResults;\n this.showSelected = false;\n this.requestUpdate();\n }\n\n private handleInvalid(event: Event): void {\n this.formControlController.setValidity(false);\n this.formControlController.emitInvalidEvent(event);\n }\n\n @watch('disabled', { waitUntilFirstUpdate: true })\n handleDisabledChange(): void {\n if (this.disabled) {\n this.open = false;\n this.handleOpenChange();\n }\n }\n\n @watch('value', { waitUntilFirstUpdate: true })\n handleValueChange(): void {\n this.selectionChanged();\n this.requestUpdate();\n \n // Update body append content if it's active\n if (this.portal && this.portalManager.portalContainerElement) {\n this.portalManager.updatePortalAppendPosition();\n }\n }\n\n @watch('data', { waitUntilFirstUpdate: true })\n handleDataChange(): void {\n if (this.data.length > 0 && this.open && !this.showSelected && !this.searchValue) {\n this.originalOptionItems = [...this.data];\n }\n this.selectionChanged();\n // Show no results message when data is empty and not loading\n if (!this.optionsLoading && !this.loading && this.data.length === 0) {\n this.showNoResults = true;\n } else if (this.data.length > 0) {\n this.showNoResults = false;\n }\n this.requestUpdate();\n \n // Reset measured height when data changes (content height may change)\n this.portalManager.resetMeasuredHeight();\n \n // Update body append content if it's active\n if (this.portal && this.portalManager.portalContainerElement) {\n this.portalManager.updatePortalAppendPosition();\n }\n }\n\n @watch('renderItemConfig', { waitUntilFirstUpdate: true })\n handleRenderItemConfigChange(): void {\n if (this.value && this.data.length > 0) {\n this.selectionChanged();\n this.requestUpdate();\n }\n }\n\n @watch('optionsLoading', { waitUntilFirstUpdate: true })\n handleOptionsLoadingChange(): void {\n // Show no results message when loading stops and there are no results\n if (!this.optionsLoading && this.data.length === 0) {\n this.showNoResults = true;\n }\n this.requestUpdate();\n \n // Update body append content if it's active\n if (this.portal && this.portalManager.portalContainerElement) {\n this.portalManager.updatePortalAppendPosition();\n }\n }\n\n @watch('portal', { waitUntilFirstUpdate: true })\n handlePortalAppendChange(): void {\n if (this.open) {\n if (this.portal) {\n this.portalManager.setupPortalAppend();\n } else {\n this.portalManager.cleanupPortalAppend();\n }\n }\n }\n\n @watch('open', { waitUntilFirstUpdate: true })\n async handleOpenChange(): Promise<void> {\n if (this.open && !this.disabled) {\n await this.handleOpen();\n this.showListbox = true;\n \n if (this.portal) {\n this.portalManager.setupPortalAppend();\n }\n } else {\n await this.handleClose();\n this.showListbox = false;\n \n if (this.portal) {\n this.portalManager.cleanupPortalAppend();\n }\n }\n }\n\n private async handleOpen(): Promise<void> {\n this.emit('nile-show', { value: this.value, name: this.name });\n this.addOpenListeners();\n this.showNoResults = !this.data?.length;\n\n await stopAnimations(this);\n this.popup.active = true;\n\n const { keyframes, options } = getAnimation(this, 'select.show', {\n dir: 'ltr',\n });\n await animateTo(this.popup.popup, keyframes, options);\n\n if (this.wasShowSelectedCheckedOnClose) {\n this.showSelected = false;\n this.data = [...this.originalOptionItems];\n this.wasShowSelectedCheckedOnClose = false;\n }\n\n if (this.enableVisibilityEffect) {\n this.setupAnchorVisibilityObserver();\n }\n\n\n this.filterVirtualOptions(\"\");\n this.resetScrollPosition();\n this.emit('nile-after-show', { value: this.value, name: this.name });\n }\n\n private async handleClose(): Promise<void> {\n this.cleanupAnchorVisibilityObserver();\n this.emit('nile-hide', { value: this.value, name: this.name });\n this.removeOpenListeners();\n\n this.wasShowSelectedCheckedOnClose = this.showSelected;\n\n await stopAnimations(this);\n const { keyframes, options } = getAnimation(this, 'select.hide', {\n dir: 'ltr',\n });\n await animateTo(this.popup.popup, keyframes, options);\n this.popup.active = false;\n\n this.searchValue = '';\n \n // Reset measured height when popup closes (content may change on next open)\n this.portalManager.resetMeasuredHeight();\n \n this.emit('nile-after-hide', { value: this.value, name: this.name });\n }\n\n async show(): Promise<unknown> {\n if (this.open || this.disabled) {\n this.open = false;\n return undefined;\n }\n\n this.open = true;\n return waitForEvent(this, 'nile-after-show');\n }\n\n async hide(): Promise<unknown> {\n if (!this.open || this.disabled) {\n this.open = false;\n return undefined;\n }\n\n this.open = false;\n return waitForEvent(this, 'nile-after-hide');\n }\n\n checkValidity(): boolean {\n return this.valueInput.checkValidity();\n }\n\n getForm(): HTMLFormElement | null {\n return this.formControlController.getForm();\n }\n\n reportValidity(): boolean {\n return this.valueInput.reportValidity();\n }\n\n setCustomValidity(message: string): void {\n this.valueInput.setCustomValidity(message);\n this.formControlController.updateValidity();\n }\n\n focus(options?: FocusOptions): void {\n this.displayInput.focus(options);\n }\n\n blur(): void {\n this.displayInput.blur();\n }\n\n onInputChange(event: Event): void {\n event.stopPropagation();\n }\n\n render(): TemplateResult {\n const hasLabelSlot = this.hasSlotController.test('label');\n const hasHelpTextSlot = this.hasSlotController.test('help-text');\n const hasLabelSuffixSlot = this.hasSlotController.test('label-suffix');\n const hasCustomSelect = this.hasSlotController.test('custom-select');\n const hasLabel = this.label ? true : !!hasLabelSlot;\n const hasClearIcon =\n this.clearable && !this.disabled && this.value.length > 0;\n const isPlaceholderVisible = !!this.placeholder && this.value.length === 0;\n const hasHelpText = !!this.helpText;\n const hasErrorMessage = !!this.errorMessage;\n\n return html`\n <div\n part=\"form-control\"\n class=${classMap({\n 'form-control': true,\n 'form-control--small': this.size === 'small',\n 'form-control--medium': this.size === 'medium',\n 'form-control--large': this.size === 'large',\n 'form-control--has-label': hasLabel,\n 'form-control--has-help-text': hasHelpText,\n })}\n >\n ${this.renderLabel(hasLabel, hasLabelSuffixSlot)}\n ${this.renderFormControlInput(hasCustomSelect, hasClearIcon, isPlaceholderVisible, hasHelpText, hasErrorMessage)}\n </div>\n `;\n }\n\n private renderLabel(hasLabel: boolean, hasLabelSuffixSlot: boolean): TemplateResult {\n return html`\n <label\n id=\"label\"\n part=\"form-control-label\"\n class=\"form-control__label\"\n aria-hidden=${hasLabel ? 'false' : 'true'}\n @click=${this.handleLabelClick}\n >\n <slot name=\"label\">${this.label}</slot>\n </label>\n\n ${hasLabelSuffixSlot ? html` <slot name=\"label-suffix\"></slot> ` : ``}\n `;\n }\n\n private renderFormControlInput(\n hasCustomSelect: boolean, \n hasClearIcon: boolean, \n isPlaceholderVisible: boolean, \n hasHelpText: boolean, \n hasErrorMessage: boolean\n ): TemplateResult {\n return html`\n <div part=\"form-control-input\" class=\"form-control-input\">\n ${this.renderPopup(hasCustomSelect, hasClearIcon, isPlaceholderVisible)}\n ${this.renderHelpText(hasHelpText, hasErrorMessage)}\n </div>\n `;\n }\n\n private renderPopup(hasCustomSelect: boolean, hasClearIcon: boolean, isPlaceholderVisible: boolean): TemplateResult {\n return html`\n <nile-popup\n class=${classMap({\n select: true,\n 'select--warning': this.warning,\n 'select--error': this.error,\n 'select--success': this.success,\n 'select--standard': true,\n 'select--filled': this.filled,\n 'select--pill': this.pill,\n 'select--open': this.open,\n 'select--disabled': this.disabled,\n 'select--multiple': this.multiple,\n 'select--focused': this.hasFocus,\n 'select--placeholder-visible': isPlaceholderVisible,\n 'select--top': this.placement === 'top',\n 'select--bottom': this.placement === 'bottom',\n 'select--small': this.size === 'small',\n 'select--medium': this.size === 'medium',\n 'select--large': this.size === 'large',\n })}\n placement=${this.placement}\n strategy=${this.portal ? 'fixed' : (this.hoist ? 'fixed' : 'absolute')}\n distance=\"6\"\n ?flip=${!this.portal}\n ?shift=${!this.portal}\n sync=${ifDefined(!this.noWidthSync ? 'width' : undefined)}\n auto-size=\"vertical\"\n auto-size-padding=\"10\"\n >\n ${this.renderCustomSelect(hasCustomSelect)}\n ${this.renderCombobox(hasCustomSelect, hasClearIcon)}\n ${this.showListbox ? this.renderListbox() : html``}\n </nile-popup>\n `;\n }\n\n private renderCustomSelect(hasCustomSelect: boolean): TemplateResult {\n return hasCustomSelect\n ? html`<slot\n slot=\"anchor\"\n name=\"custom-select\"\n class=\"custom-select\"\n @keydown=${this.handleComboboxKeyDown}\n @mousedown=${this.handleComboboxMouseDown}\n ></slot>`\n : html``;\n }\n\n private renderCombobox(hasCustomSelect: boolean, hasClearIcon: boolean): TemplateResult {\n return html`\n <div\n part=\"combobox\"\n class=${classMap({\n select__combobox: true,\n 'select__hide-default': hasCustomSelect,\n })}\n slot=\"anchor\"\n @keydown=${this.handleComboboxKeyDown}\n @mousedown=${this.handleComboboxMouseDown}\n >\n ${this.renderPrefix()}\n ${this.renderDisplayInput()}\n ${this.renderTags()}\n ${this.renderValueInput()}\n ${this.renderClearButton(hasClearIcon)}\n ${this.renderSuffix()}\n ${this.renderExpandIcon()}\n </div>\n `;\n }\n\n private renderPrefix(): TemplateResult {\n return html`\n <slot\n part=\"prefix\"\n name=\"prefix\"\n class=${classMap({\n select__prefix: true,\n multiple: this.multiple,\n })}\n ></slot>\n `;\n }\n\n private renderDisplayInput(): TemplateResult {\n return html`\n <input\n part=\"display-input\"\n class=\"select__display-input\"\n type=\"text\"\n placeholder=${this.placeholder}\n .disabled=${this.disabled}\n .value=${this.displayLabel}\n autocomplete=\"off\"\n spellcheck=\"false\"\n autocapitalize=\"off\"\n readonly\n aria-controls=\"listbox\"\n aria-expanded=${this.open ? 'true' : 'false'}\n aria-haspopup=\"listbox\"\n aria-labelledby=\"label\"\n aria-disabled=${this.disabled ? 'true' : 'false'}\n aria-describedby=\"help-text\"\n role=\"combobox\"\n tabindex=\"0\"\n />\n `;\n }\n\n private renderTags(): TemplateResult {\n return this.multiple\n ? html`\n <div part=\"tags\" class=\"select__tags\">\n ${this.selectedOptions.map((option, index) => {\n if (\n index < this.maxOptionsVisible ||\n this.maxOptionsVisible <= 0\n ) {\n const classes = {\n select__invisible:\n index + 1 > this.oldMaxOptionsVisible &&\n this.maxOptionsVisible === Infinity,\n };\n return html`\n <nile-tag\n class=${classMap(classes)}\n part=\"tag\"\n exportparts=\"\n base:tag__base,\n content:tag__content,\n remove-button:tag__remove-button,\n remove-button__base:tag__remove-button__base\n \"\n ?pill=${this.pill}\n size=${this.size}\n removable\n @nile-remove=${(event: NileRemoveEvent) =>\n this.handleTagRemove(event, option)}\n >\n ${option.getTextLabel()}\n </nile-tag>\n `;\n } else if (index === this.maxOptionsVisible) {\n return html`\n <span class=\"select__tags-count\"\n >+${this.selectedOptions.length - index} More\n </span>\n `;\n } else {\n return null;\n }\n })}\n </div>\n `\n : html``;\n }\n\n private renderValueInput(): TemplateResult {\n return html`\n <input\n class=\"select__value-input\"\n type=\"text\"\n ?disabled=${this.disabled}\n ?required=${this.required}\n .value=${Array.isArray(this.value)\n ? this.value.join(', ')\n : this.value}\n tabindex=\"-1\"\n aria-hidden=\"true\"\n @focus=${() => this.focus()}\n @invalid=${this.handleInvalid}\n />\n `;\n }\n\n private renderClearButton(hasClearIcon: boolean): TemplateResult {\n return hasClearIcon\n ? html`\n <button\n part=\"clear-button\"\n class=\"select__clear\"\n type=\"button\"\n aria-label=\"clearEntry\"\n @mousedown=${this.handleClearMouseDown}\n @click=${this.handleClearClick}\n tabindex=\"-1\"\n >\n <slot name=\"clear-icon\">\n <nile-icon name=\"var(--nile-icon-close, var(--ng-icon-x-close))\" method=\"var(--nile-svg-method-fill, var(--ng-svg-method-stroke))\" library=\"system\"></nile-icon>\n </slot>\n </button>\n `\n : html``;\n }\n\n private renderSuffix(): TemplateResult {\n return html`\n <slot\n part=\"suffix\"\n name=\"suffix\"\n class=${classMap({\n select__suffix: true,\n })}\n ></slot>\n `;\n }\n\n private renderExpandIcon(): TemplateResult {\n return html`\n <slot\n name=\"expand-icon\"\n part=\"expand-icon\"\n class=\"select__expand-icon\"\n >\n <nile-icon library=\"system\" name=\"var(--nile-icon-arrow-down, var(--ng-icon-chevron-down))\" method=\"var(--nile-svg-method-fill, var(--ng-svg-method-stroke))\"></nile-icon>\n </slot>\n `;\n }\n\n private renderListbox(): TemplateResult {\n return html`\n <div\n id=\"listbox\"\n role=\"listbox\"\n aria-expanded=${this.open ? 'true' : 'false'}\n aria-multiselectable=${this.multiple ? 'true' : 'false'}\n aria-labelledby=\"label\"\n part=\"listbox\"\n class=\"select__listbox ${this.searchEnabled\n ? 'select__search-enabled '\n : ''} ${this.portal ? 'select__portal-append-hidden' : ''}\"\n tabindex=\"-1\"\n @mouseup=${this.handleOptionClick}\n style=${this.portal ? 'display: none;' : ''}\n >\n ${this.renderSearch()}\n ${this.renderLoader()}\n ${this.getVirtualizedContent()}\n ${this.renderFooter()}\n </div>\n `;\n }\n\n private renderSearch(): TemplateResult {\n return this.searchEnabled\n ? html`\n <div part=\"search\" class=\"select__search\">\n <nile-input\n size=\"small\"\n clearable\n .value=${this.searchValue}\n placeholder=\"${this.internalSearchPlaceHolder}\"\n @nile-input=${this.handleSearchChange}\n @nile-focus=${this.handleSearchFocus}\n @nile-change=\"${this.onInputChange}\"\n >\n <nile-icon name=\"var(--nile-icon-search, var(--ng-icon-search-lg))\" method=\"var(--nile-svg-method-fill, var(--ng-svg-method-stroke))\" slot=\"suffix\"> </nile-icon>\n </nile-input>\n </div>\n `\n : html``;\n }\n\n private renderLoader(): TemplateResult {\n if (this.loading) {\n return html`\n <span part=\"loader\" class=\"virtual-select-loader\">\n <nile-loader size=\"sm\"></nile-loader>\n </span>\n `;\n }\n \n if (this.optionsLoading) {\n return html`\n <span part=\"loader\" class=\"select__loader\">\n <nile-icon\n class=\"select__loader--icon\"\n name=\"button-loading-blue\"\n ></nile-icon>\n </span>\n `;\n }\n \n return html``;\n }\n\n private renderFooter(): TemplateResult {\n return this.multiple\n ? html`\n <div\n part=\"footer\"\n class=\"select__footer ${this.loading ? 'loading' : ''}\"\n @click=\"${this.handleFooterClick}\"\n >\n <span\n @click=\"${this.toggleShowSelected}\"\n style=\"cursor: pointer;\"\n >\n <nile-checkbox\n ?disabled=\"${this.selectedOptions.length === 0}\"\n ?checked=\"${this.showSelected}\"\n >\n &nbsp; Show Selected</nile-checkbox\n >\n </span>\n ${this.selectedOptions.length !== 0\n ? html`\n <span\n class=\"select__clear\"\n @click=\"${this.unSelectAll}\"\n >\n Clear All\n </span>\n `\n : ``}\n </div>\n `\n : html``;\n }\n\n private renderHelpText(hasHelpText: boolean, hasErrorMessage: boolean): TemplateResult {\n return html`\n ${hasHelpText\n ? html` <nile-form-help-text>${this.helpText}</nile-form-help-text> `\n : ``}\n ${hasErrorMessage\n ? html`\n <nile-form-error-message\n >${this.errorMessage}</nile-form-error-message\n >\n `\n : ``}\n `;\n }\n\n getVirtualizedContent(): TemplateResult {\n return VirtualSelectRenderer.getVirtualizedContent(\n this.data,\n this.searchEnabled,\n this.getDisplayText.bind(this),\n this.value,\n this.multiple,\n this.renderItemConfig?.getDisplayText,\n this.renderItemConfig?.getValue,\n this.showNoResults,\n this.noResultsMessage,\n this.optionsLoading || this.loading,\n this.handleScroll.bind(this)\n );\n }\n\n nileInput(value: any): void {\n this.emit('nile-input', value);\n }\n\n nileChange(value: any): void {\n this.emit('nile-change', value);\n }\n\n private updateValidity(): void {\n this.updateComplete.then(() => {\n this.formControlController.updateValidity();\n });\n }\n\n private calculateWidthOfSelectTagsDiv(): number | null {\n if (this.shadowRoot) {\n const selectTagsDiv = this.shadowRoot.querySelector('.select__tags') as HTMLElement;\n if (selectTagsDiv) {\n const width = selectTagsDiv.offsetWidth;\n return width - 70;\n }\n }\n return null;\n }\n\n private calculateTotalWidthOfTags(): void {\n if (this.maxOptionsVisible !== Infinity) {\n this.oldMaxOptionsVisible = this.maxOptionsVisible;\n }\n\n this.maxOptionsVisible = Infinity;\n setTimeout(() => {\n let widths: number[] = [];\n if (this.shadowRoot) {\n const tags = this.shadowRoot.querySelectorAll('nile-tag');\n tags.forEach(tag => {\n if (tag instanceof HTMLElement) {\n widths.push(tag.offsetWidth);\n }\n });\n }\n if (this.value.length !== widths.length) {\n return;\n }\n\n let sum = widths.reduce(\n (accumulator, currentValue) => accumulator + currentValue,\n 0\n );\n const widthOfSelectTagsDiv = this.calculateWidthOfSelectTagsDiv();\n if (!widthOfSelectTagsDiv) {\n return;\n }\n\n let summ = 0;\n let lastindex = 0;\n\n for (let i = 0; i < widths.length; i++) {\n summ += widths[i];\n\n if (summ > widthOfSelectTagsDiv) {\n lastindex = i;\n break;\n }\n }\n this.maxOptionsVisible = lastindex;\n }, 1);\n }\n\n private async resetScrollPosition(): Promise<void> {\n await this.updateComplete;\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n let listbox: HTMLElement | null = null;\n \n\n if (this.portal && this.portalManager.portalContainerElement) {\n listbox = this.portalManager.portalContainerElement.querySelector('#listbox') as HTMLElement;\n } else {\n listbox = this.shadowRoot?.querySelector('#listbox') as HTMLElement;\n }\n \n if (!listbox || !listbox.isConnected) return;\n \n listbox.scrollTop = 0;\n const virtualized = listbox.querySelector('.virtualized') as HTMLElement;\n if (virtualized && virtualized.isConnected) {\n const fewItems = this.data.length <= 5;\n \n if (fewItems) {\n virtualized.style.overflowY = 'hidden';\n virtualized.style.maxHeight = 'none';\n listbox.style.overflowY = 'hidden';\n listbox.style.maxHeight = 'fit-content';\n } else {\n virtualized.style.overflowY = 'auto';\n virtualized.style.maxHeight = '';\n listbox.style.overflowY = 'auto';\n listbox.style.maxHeight = '';\n }\n \n virtualized.scrollTop = 0;\n }\n const virtualizer = listbox.querySelector('lit-virtualizer') as HTMLElement;\n if (virtualizer && virtualizer.isConnected) {\n virtualizer.scrollTop = 0;\n }\n });\n });\n }\n \n\n}\n\nsetDefaultAnimation('select.show', {\n keyframes: [\n { opacity: 0, scale: 0.9 },\n { opacity: 1, scale: 1 },\n ],\n options: { duration: 100, easing: 'ease' },\n});\n\nsetDefaultAnimation('select.hide', {\n keyframes: [\n { opacity: 1, scale: 1 },\n { opacity: 0, scale: 0.9 },\n ],\n options: { duration: 100, easing: 'ease' },\n});\n\nexport default NileVirtualSelect;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nile-virtual-select': NileVirtualSelect;\n }\n}\n"],"names":["t","x","o","i","target","h","config","e","callback","skipInitial","this","Set","add","l","window","ResizeObserver","u","s","handleChanges","requestUpdate","addController","console","warn","_createClass","key","value","hostConnected","_iterator","_createForOfIteratorHelper","_step","n","done","observe","err","f","hostDisconnected","disconnect","_hostUpdated","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_callee$","_context2","prev","next","hostUpdated","stop","unobserve","_export","NileVirtualSelect","k","constructor","formControlController","FormControlController","assumeInteractionOn","hasSlotController","HasSlotController","portalManager","PortalManager","hasFocus","displayLabel","selectedOptions","oldValue","scrolling","name","data","originalOptionItems","defaultValue","size","placeholder","autoResize","searchValue","searchEnabled","internalSearchPlaceHolder","disableLocalSearch","optionsLoading","loading","multiple","helpText","errorMessage","warning","enableVisibilityEffect","enableTabClose","error","success","disabled","clearable","open","hoist","filled","pill","label","placement","form","required","showNoResults","noResultsMessage","showSelected","blockValueChange","noWidthSync","portal","maxOptionsVisible","oldMaxOptionsVisible","showListbox","wasShowSelectedCheckedOnClose","handleDocumentMouseDown","event","path","composedPath","hitSelf","includes","hitPopup","popup","hitPortalAppend","portalContainerElement","hide","anchorVisibilityObservers","handleDocumentVisibilityChange","document","visibilityState","emit","visible","reason","handleWindowError","message","preventDefault","handleWindowResize","updatePortalAppendPosition","handleWindowScroll","resizeController","ResizeController","entries","_iterator2","entry","_step2","classList","contains","calculateTotalWidthOfTags","_this2","_inherits","_u","get","_this$valueInput","valueInput","validity","validationMessage","_this$valueInput$vali","_this$valueInput2","connectedCallback","super","initializeComponent","setupEventListeners","updateComplete","then","length","selectionChanged","disconnectedCallback","removeOpenListeners","scrollTimeout","clearTimeout","undefined","cleanupPortalAppend","updated","changedProperties","has","_this$shadowRoot","tagsDiv","shadowRoot","querySelector","getDisplayText","item","_this$renderItemConfi","renderItemConfig","toString","getItemValue","getValue","getSearchText","handleDocumentFocusIn","bind","handleDocumentKeyDown","addOpenListeners","addEventListener","removeEventListener","handleFocus","handleBlur","shouldIgnoreKeyPress","isEscapeKey","handleEscapeKey","isEnterOrSpaceKey","handleEnterOrSpaceKey","isClearButton","closest","isIconButton","stopPropagation","displayInput","focus","preventScroll","stopImmediatePropagation","show","getScrollableAncestors","element","scrollables","parent","parentElement","style","getComputedStyle","test","overflow","overflowY","overflowX","push","setupAnchorVisibilityObserver","_this4","cleanupAnchorVisibilityObserver","combobox","concat","_toConsumableArray","forEach","rootContainer","observer","IntersectionObserver","_iterator3","_step3","isIntersecting","root","threshold","handleFooterClick","toggleShowSelected","_this$selectedOptions","_this5","selectedValues","Array","isArray","filter","itemValue","some","val","String","resetMeasuredHeight","repaintOptionsContainer","unSelectAll","resetScrollPosition","handleLabelClick","handleComboboxMouseDown","shouldIgnoreComboboxClick","el","Element","tagName","toLowerCase","handleComboboxKeyDown","handleClearClick","clearSelection","nileInput","nileChange","handleClearMouseDown","handleOptionClick","option","shouldBlockValueChange","handleOptionSelection","optionValue","toggleOptionSelection","setSelectedOptions","currentValues","v","handleTagRemove","removeTagFromSelection","emitTagRemovalEvent","currentValue","newValue","removedtagvalue","_this$renderItemConfi4","_this$originalOptionI","itemsToSearch","VirtualSelectSelectionManager","createVirtualOptionsFromValues","_this$selectedOptions2","getTextLabel","updateValidity","handleSearchFocus","handleSearchBlur","handleSearchChange","detail","query","filterVirtualOptions","_this9$shadowRoot","virtualized","remove","handleScroll","scrollTop","scrollLeft","setTimeout","Math","ceil","floor","scrollHeight","offsetHeight","isAtBottom","_this$renderItemConfi5","_this11","result","VirtualSelectSearchManager","requestAnimationFrame","filteredItems","handleInvalid","setValidity","emitInvalidEvent","handleDisabledChange","handleOpenChange","handleValueChange","handleDataChange","handleRenderItemConfigChange","handleOptionsLoadingChange","handlePortalAppendChange","setupPortalAppend","_handleOpenChange","_callee2","_callee2$","_context3","handleOpen","handleClose","_callee3","_this$data","_h","_callee3$","_context4","stopAnimations","active","getAnimation","dir","keyframes","options","animateTo","_callee4","_h2","_callee4$","_context5","_callee5","_callee5$","_context6","waitForEvent","_callee6","_callee6$","_context7","abrupt","checkValidity","getForm","reportValidity","setCustomValidity","blur","onInputChange","render","hasLabelSlot","hasLabelSuffixSlot","hasCustomSelect","hasLabel","hasClearIcon","isPlaceholderVisible","hasHelpText","hasErrorMessage","html","_templateObject","_taggedTemplateLiteral","classMap","renderLabel","renderFormControlInput","_templateObject2","_templateObject3","_templateObject4","renderPopup","renderHelpText","_templateObject5","select","ifDefined","renderCustomSelect","renderCombobox","renderListbox","_templateObject6","_templateObject7","_templateObject8","_templateObject9","select__combobox","renderPrefix","renderDisplayInput","renderTags","renderValueInput","renderClearButton","renderSuffix","renderExpandIcon","_templateObject10","select__prefix","_templateObject11","_templateObject12","map","index","classes","select__invisible","Infinity","_templateObject13","_templateObject14","_templateObject15","_templateObject16","join","_templateObject17","_templateObject18","_templateObject19","select__suffix","_templateObject20","_templateObject21","renderSearch","renderLoader","getVirtualizedContent","renderFooter","_templateObject22","_templateObject23","_templateObject24","_templateObject25","_templateObject26","_templateObject27","_templateObject28","_templateObject29","_templateObject30","_templateObject31","_templateObject32","_this$renderItemConfi6","_this$renderItemConfi7","VirtualSelectRenderer","calculateWidthOfSelectTagsDiv","selectTagsDiv","offsetWidth","widths","querySelectorAll","tag","HTMLElement","widthOfSelectTagsDiv","summ","lastindex","_resetScrollPosition","_callee7","_this16","_callee7$","_context8","_this16$shadowRoot","listbox","isConnected","maxHeight","virtualizer","NileElement","styles","__decorate","prototype","state","property","type","converter","fromAttribute","split","toAttribute","Boolean","reflect","attribute","Number","watch","waitUntilFirstUpdate","customElement","setDefaultAnimation","opacity","scale","duration","easing"],"mappings":"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","x_google_ignoreList":[0]}