@aquera/nile-elements 1.1.3-beta-1.4 → 1.1.3-beta-2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/demo/index.html +124 -24
- package/dist/index.js +728 -770
- package/dist/nile-grid/nile-grid.cjs.js +1 -1
- package/dist/nile-grid/nile-grid.cjs.js.map +1 -1
- package/dist/nile-grid/nile-grid.css.cjs.js +1 -1
- package/dist/nile-grid/nile-grid.css.cjs.js.map +1 -1
- package/dist/nile-grid/nile-grid.css.esm.js +4 -8
- package/dist/nile-grid/nile-grid.esm.js +6 -6
- package/dist/nile-grid/nile-grid.utils.cjs.js +1 -1
- package/dist/nile-grid/nile-grid.utils.cjs.js.map +1 -1
- package/dist/nile-grid/nile-grid.utils.esm.js +1 -1
- package/dist/nile-grid-body/nile-grid-body.cjs.js +1 -1
- package/dist/nile-grid-body/nile-grid-body.cjs.js.map +1 -1
- package/dist/nile-grid-body/nile-grid-body.css.cjs.js +1 -1
- package/dist/nile-grid-body/nile-grid-body.css.cjs.js.map +1 -1
- package/dist/nile-grid-body/nile-grid-body.css.esm.js +4 -0
- package/dist/nile-grid-body/nile-grid-body.esm.js +3 -3
- package/dist/nile-grid-cell-item/nile-grid-cell-item.cjs.js +1 -1
- package/dist/nile-grid-cell-item/nile-grid-cell-item.cjs.js.map +1 -1
- package/dist/nile-grid-cell-item/nile-grid-cell-item.css.cjs.js +1 -1
- package/dist/nile-grid-cell-item/nile-grid-cell-item.css.cjs.js.map +1 -1
- package/dist/nile-grid-cell-item/nile-grid-cell-item.css.esm.js +3 -18
- package/dist/nile-grid-cell-item/nile-grid-cell-item.esm.js +3 -3
- package/dist/nile-grid-head/nile-grid-head.cjs.js +1 -1
- package/dist/nile-grid-head/nile-grid-head.cjs.js.map +1 -1
- package/dist/nile-grid-head/nile-grid-head.css.cjs.js +1 -1
- package/dist/nile-grid-head/nile-grid-head.css.cjs.js.map +1 -1
- package/dist/nile-grid-head/nile-grid-head.css.esm.js +1 -1
- package/dist/nile-grid-head/nile-grid-head.esm.js +3 -3
- package/dist/nile-grid-head-item/nile-grid-head-item.cjs.js +1 -1
- package/dist/nile-grid-head-item/nile-grid-head-item.cjs.js.map +1 -1
- package/dist/nile-grid-head-item/nile-grid-head-item.css.cjs.js +1 -1
- package/dist/nile-grid-head-item/nile-grid-head-item.css.cjs.js.map +1 -1
- package/dist/nile-grid-head-item/nile-grid-head-item.css.esm.js +5 -20
- package/dist/nile-grid-head-item/nile-grid-head-item.esm.js +3 -4
- package/dist/nile-grid-row/nile-grid-row.cjs.js +1 -1
- package/dist/nile-grid-row/nile-grid-row.cjs.js.map +1 -1
- package/dist/nile-grid-row/nile-grid-row.css.cjs.js +1 -1
- package/dist/nile-grid-row/nile-grid-row.css.cjs.js.map +1 -1
- package/dist/nile-grid-row/nile-grid-row.css.esm.js +5 -17
- package/dist/nile-grid-row/nile-grid-row.esm.js +5 -4
- package/dist/nile-virtual-select/nile-virtual-select.cjs.js +2 -2
- package/dist/nile-virtual-select/nile-virtual-select.cjs.js.map +1 -1
- package/dist/nile-virtual-select/nile-virtual-select.esm.js +7 -6
- package/dist/src/nile-grid/nile-grid.css.js +2 -6
- package/dist/src/nile-grid/nile-grid.css.js.map +1 -1
- package/dist/src/nile-grid/nile-grid.d.ts +3 -9
- package/dist/src/nile-grid/nile-grid.js +20 -96
- package/dist/src/nile-grid/nile-grid.js.map +1 -1
- package/dist/src/nile-grid/nile-grid.utils.d.ts +2 -3
- package/dist/src/nile-grid/nile-grid.utils.js +81 -223
- package/dist/src/nile-grid/nile-grid.utils.js.map +1 -1
- package/dist/src/nile-grid-body/nile-grid-body.css.js +4 -0
- package/dist/src/nile-grid-body/nile-grid-body.css.js.map +1 -1
- package/dist/src/nile-grid-body/nile-grid-body.js +1 -1
- package/dist/src/nile-grid-body/nile-grid-body.js.map +1 -1
- package/dist/src/nile-grid-cell-item/nile-grid-cell-item.css.js +2 -17
- package/dist/src/nile-grid-cell-item/nile-grid-cell-item.css.js.map +1 -1
- package/dist/src/nile-grid-cell-item/nile-grid-cell-item.d.ts +3 -0
- package/dist/src/nile-grid-cell-item/nile-grid-cell-item.js +11 -1
- package/dist/src/nile-grid-cell-item/nile-grid-cell-item.js.map +1 -1
- package/dist/src/nile-grid-head/nile-grid-head.css.js +1 -1
- package/dist/src/nile-grid-head/nile-grid-head.css.js.map +1 -1
- package/dist/src/nile-grid-head/nile-grid-head.js +1 -1
- package/dist/src/nile-grid-head/nile-grid-head.js.map +1 -1
- package/dist/src/nile-grid-head-item/nile-grid-head-item.css.js +3 -18
- package/dist/src/nile-grid-head-item/nile-grid-head-item.css.js.map +1 -1
- package/dist/src/nile-grid-head-item/nile-grid-head-item.d.ts +2 -3
- package/dist/src/nile-grid-head-item/nile-grid-head-item.js +11 -14
- package/dist/src/nile-grid-head-item/nile-grid-head-item.js.map +1 -1
- package/dist/src/nile-grid-row/nile-grid-row.css.js +5 -17
- package/dist/src/nile-grid-row/nile-grid-row.css.js.map +1 -1
- package/dist/src/nile-grid-row/nile-grid-row.d.ts +1 -4
- package/dist/src/nile-grid-row/nile-grid-row.js +4 -19
- package/dist/src/nile-grid-row/nile-grid-row.js.map +1 -1
- package/dist/src/nile-virtual-select/nile-virtual-select.d.ts +18 -0
- package/dist/src/nile-virtual-select/nile-virtual-select.js +230 -3
- package/dist/src/nile-virtual-select/nile-virtual-select.js.map +1 -1
- package/dist/src/version.js +1 -1
- package/dist/src/version.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/nile-grid/nile-grid.css.ts +2 -6
- package/src/nile-grid/nile-grid.ts +21 -124
- package/src/nile-grid/nile-grid.utils.ts +98 -353
- package/src/nile-grid-body/nile-grid-body.css.ts +4 -0
- package/src/nile-grid-body/nile-grid-body.ts +2 -2
- package/src/nile-grid-cell-item/nile-grid-cell-item.css.ts +2 -17
- package/src/nile-grid-cell-item/nile-grid-cell-item.ts +11 -3
- package/src/nile-grid-head/nile-grid-head.css.ts +1 -1
- package/src/nile-grid-head/nile-grid-head.ts +2 -2
- package/src/nile-grid-head-item/nile-grid-head-item.css.ts +3 -18
- package/src/nile-grid-head-item/nile-grid-head-item.ts +16 -8
- package/src/nile-grid-row/nile-grid-row.css.ts +5 -17
- package/src/nile-grid-row/nile-grid-row.ts +6 -9
- package/src/nile-virtual-select/nile-virtual-select.ts +257 -3
- package/vscode-html-custom-data.json +69 -37
- package/src/nile-grid/nile-grid.types.ts +0 -1
|
@@ -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 { 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\n @query('.select') popup: NilePopup;\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 * 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\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 }\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 }\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\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 }\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\n if (!hitSelf && !hitPopup) {\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 \n if (!hitSelf && !hitPopup) {\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 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 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 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 this.filterVirtualOptions('');\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 \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 }\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\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\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 \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\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\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 } else {\n await this.handleClose();\n this.showListbox = false;\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 this.initializeOriginalItems();\n this.filterVirtualOptions(this.searchValue);\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 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 this.emit('nile-after-hide', { value: this.value, name: this.name });\n }\n\n private initializeOriginalItems(): void {\n if (this.data.length > 0) {\n this.originalOptionItems = [...this.data];\n }\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.hoist ? 'fixed' : 'absolute'}\n distance=\"6\"\n flip\n shift\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 : ''}\"\n tabindex=\"-1\"\n @mouseup=${this.handleOptionClick}\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 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 resetScrollPosition(): void {\n this.updateComplete.then(() => {\n if (this.virtualizedContainer && this.virtualizedContainer.isConnected) {\n this.virtualizedContainer.scrollTop = 0;\n \n const listbox = this.shadowRoot?.querySelector('.select__listbox') as HTMLElement;\n if (listbox && listbox.isConnected) {\n listbox.scrollTop = 0;\n }\n \n const virtualizer = this.virtualizedContainer.querySelector('lit-virtualizer') as HTMLElement;\n if (virtualizer && virtualizer.isConnected) {\n virtualizer.scrollTop = 0;\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","_","target","o","i","h","config","e","callback","skipInitial","this","Set","add","l","window","ResizeObserver","u","s","handleChanges","requestUpdate","addController","console","warn","_createClass","key","value","hostConnected","_iterator","_step","n","done","observe","err","f","hostDisconnected","disconnect","_hostUpdated","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_callee$","_context2","prev","next","hostUpdated","stop","unobserve","_export","NileVirtualSelect","_u","x","formControlController","FormControlController","assumeInteractionOn","hasSlotController","HasSlotController","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","maxOptionsVisible","oldMaxOptionsVisible","showListbox","handleDocumentMouseDown","event","path","composedPath","hitSelf","includes","hitPopup","popup","hide","handleWindowError","message","preventDefault","resizeController","ResizeController","entries","_iterator2","_createForOfIteratorHelper","_step2","entry","classList","contains","calculateTotalWidthOfTags","_this2","_inherits","get","validity","_this$valueInput","valueInput","validationMessage","_this$valueInput$vali","_this$valueInput2","connectedCallback","super","initializeComponent","setupEventListeners","updateComplete","then","length","selectionChanged","disconnectedCallback","removeOpenListeners","scrollTimeout","clearTimeout","undefined","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","_toConsumableArray","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","itemsToSearch","VirtualSelectSelectionManager","createVirtualOptionsFromValues","_this$selectedOptions2","getTextLabel","updateValidity","filterVirtualOptions","handleSearchFocus","handleSearchBlur","handleSearchChange","detail","query","virtualized","remove","handleScroll","scrollTop","scrollLeft","setTimeout","Math","ceil","floor","scrollHeight","offsetHeight","isAtBottom","_this$renderItemConfi5","result","VirtualSelectSearchManager","filteredItems","handleInvalid","setValidity","emitInvalidEvent","handleDisabledChange","handleOpenChange","handleValueChange","handleDataChange","handleRenderItemConfigChange","handleOptionsLoadingChange","_handleOpenChange","_callee2","_callee2$","_context3","handleOpen","handleClose","_callee3","_this$data","_g","_callee3$","_context4","stopAnimations","active","getAnimation","dir","animateTo","keyframes","options","initializeOriginalItems","_callee4","_g2","_callee4$","_context5","_show","_callee5","_callee5$","_context6","abrupt","waitForEvent","_callee6","_callee6$","_context7","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","virtualizedContainer","isConnected","_this14$shadowRoot","listbox","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 { 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\n @query('.select') popup: NilePopup;\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 }) bodyAppend = 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 \n // Body append-related state\n @state() private bodyAppendContainer: HTMLElement | null = null;\n @state() private bodyAppendListbox: HTMLElement | null = null;\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.cleanupBodyAppend();\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.bodyAppend) {\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 hitBodyAppend = this.bodyAppend && this.bodyAppendContainer && path.includes(this.bodyAppendContainer);\n\n if (!hitSelf && !hitPopup && !hitBodyAppend) {\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 hitBodyAppend = this.bodyAppend && this.bodyAppendContainer && path.includes(this.bodyAppendContainer);\n \n if (!hitSelf && !hitPopup && !hitBodyAppend) {\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.updateBodyAppendPosition();\n };\n\n private handleWindowScroll = (): void => {\n this.updateBodyAppendPosition();\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 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 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 this.filterVirtualOptions('');\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 \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 }\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\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\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 \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 // Update body append content if it's active\n if (this.bodyAppend && this.bodyAppendContainer) {\n this.updateBodyAppendContent();\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.bodyAppend && this.bodyAppendContainer) {\n this.updateBodyAppendContent();\n }\n }\n\n @watch('bodyAppend', { waitUntilFirstUpdate: true })\n handleBodyAppendChange(): void {\n if (this.open) {\n if (this.bodyAppend) {\n this.setupBodyAppend();\n } else {\n this.cleanupBodyAppend();\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.bodyAppend) {\n this.setupBodyAppend();\n }\n } else {\n await this.handleClose();\n this.showListbox = false;\n \n if (this.bodyAppend) {\n this.cleanupBodyAppend();\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 this.initializeOriginalItems();\n this.filterVirtualOptions(this.searchValue);\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 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 this.emit('nile-after-hide', { value: this.value, name: this.name });\n }\n\n private initializeOriginalItems(): void {\n if (this.data.length > 0) {\n this.originalOptionItems = [...this.data];\n }\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.hoist ? 'fixed' : 'absolute'}\n distance=\"6\"\n flip\n shift\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.bodyAppend ? 'select__body-append-hidden' : ''}\"\n tabindex=\"-1\"\n @mouseup=${this.handleOptionClick}\n style=${this.bodyAppend ? '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 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 resetScrollPosition(): void {\n this.updateComplete.then(() => {\n if (this.virtualizedContainer && this.virtualizedContainer.isConnected) {\n this.virtualizedContainer.scrollTop = 0;\n \n const listbox = this.shadowRoot?.querySelector('.select__listbox') as HTMLElement;\n if (listbox && listbox.isConnected) {\n listbox.scrollTop = 0;\n }\n \n const virtualizer = this.virtualizedContainer.querySelector('lit-virtualizer') as HTMLElement;\n if (virtualizer && virtualizer.isConnected) {\n virtualizer.scrollTop = 0;\n }\n }\n });\n }\n\n private createBodyAppendContainer(): HTMLElement {\n const container = document.createElement('div');\n container.style.position = 'absolute';\n container.style.zIndex = '9999';\n container.style.pointerEvents = 'none';\n container.className = 'nile-virtual-select-body-append';\n \n // Apply additional styling to match the original popup\n container.style.background = 'white';\n container.style.border = '1px solid #e0e0e0';\n container.style.borderRadius = '4px';\n container.style.boxShadow = '0 4px 6px rgba(0, 0, 0, 0.1)';\n container.style.maxHeight = '300px';\n container.style.overflow = 'hidden';\n \n return container;\n }\n\n private createBodyAppendListbox(): HTMLElement {\n const listbox = document.createElement('div');\n listbox.id = 'listbox';\n listbox.setAttribute('role', 'listbox');\n listbox.setAttribute('aria-expanded', this.open ? 'true' : 'false');\n listbox.setAttribute('aria-multiselectable', this.multiple ? 'true' : 'false');\n listbox.setAttribute('aria-labelledby', 'label');\n listbox.setAttribute('part', 'listbox');\n listbox.className = `select__listbox ${this.searchEnabled ? 'select__search-enabled ' : ''}`;\n listbox.setAttribute('tabindex', '-1');\n \n // Apply styling to match the original listbox\n listbox.style.background = 'white';\n listbox.style.border = 'none';\n listbox.style.borderRadius = '4px';\n listbox.style.maxHeight = '300px';\n listbox.style.overflowY = 'auto';\n \n listbox.addEventListener('mouseup', this.handleOptionClick.bind(this));\n return listbox;\n }\n\n private positionBodyAppend(): void {\n if (!this.bodyAppendContainer || !this.popup) return;\n\n const rect = this.getBoundingClientRect();\n \n // Position the body append container to match the popup position\n this.bodyAppendContainer.style.left = `${rect.left}px`;\n this.bodyAppendContainer.style.top = `${rect.bottom + 6}px`; // 6px is the distance from the popup\n this.bodyAppendContainer.style.width = `${rect.width}px`;\n this.bodyAppendContainer.style.pointerEvents = 'auto';\n }\n\n private updateBodyAppendPosition(): void {\n if (this.bodyAppend && this.bodyAppendContainer) {\n this.positionBodyAppend();\n }\n }\n\n private async updateBodyAppendContent(): Promise<void> {\n if (!this.bodyAppendListbox) return;\n\n // Clear the body append listbox\n this.bodyAppendListbox.innerHTML = '';\n \n // Create a new listbox element\n const listbox = document.createElement('div');\n listbox.id = 'listbox';\n listbox.setAttribute('role', 'listbox');\n listbox.setAttribute('aria-expanded', this.open ? 'true' : 'false');\n listbox.setAttribute('aria-multiselectable', this.multiple ? 'true' : 'false');\n listbox.setAttribute('aria-labelledby', 'label');\n listbox.setAttribute('part', 'listbox');\n listbox.className = `select__listbox ${this.searchEnabled ? 'select__search-enabled ' : ''}`;\n listbox.setAttribute('tabindex', '-1');\n \n // Render the content using Lit's render function\n const { render } = await import('lit');\n \n // Render search\n if (this.searchEnabled) {\n const searchContent = this.renderSearch();\n const searchDiv = document.createElement('div');\n render(searchContent, searchDiv);\n listbox.appendChild(searchDiv.firstElementChild as HTMLElement);\n }\n \n // Render loader\n const loaderContent = this.renderLoader();\n const loaderDiv = document.createElement('div');\n render(loaderContent, loaderDiv);\n if (loaderDiv.firstElementChild) {\n listbox.appendChild(loaderDiv.firstElementChild as HTMLElement);\n }\n \n // Render virtualized content\n const virtualizedContent = this.getVirtualizedContent();\n const virtualizedDiv = document.createElement('div');\n render(virtualizedContent, virtualizedDiv);\n if (virtualizedDiv.firstElementChild) {\n listbox.appendChild(virtualizedDiv.firstElementChild as HTMLElement);\n }\n \n // Render footer\n if (this.multiple) {\n const footerContent = this.renderFooter();\n const footerDiv = document.createElement('div');\n render(footerContent, footerDiv);\n if (footerDiv.firstElementChild) {\n listbox.appendChild(footerDiv.firstElementChild as HTMLElement);\n }\n }\n \n // Append the listbox to the body append container\n this.bodyAppendListbox.appendChild(listbox);\n \n // Re-attach event listeners\n this.attachBodyAppendEventListeners();\n }\n\n private attachBodyAppendEventListeners(): void {\n if (!this.bodyAppendListbox) return;\n\n // Find the cloned listbox within the body append container\n const clonedListbox = this.bodyAppendListbox.querySelector('.select__listbox') as HTMLElement;\n if (!clonedListbox) return;\n\n // Re-attach the option click handler - use event delegation for better performance\n clonedListbox.addEventListener('mouseup', this.handleOptionClick.bind(this));\n \n // Also add click handler for nile-option elements specifically\n clonedListbox.addEventListener('click', (event) => {\n const target = event.target as HTMLElement;\n const option = target.closest('nile-option');\n if (option) {\n event.preventDefault();\n event.stopPropagation();\n this.handleOptionClick(event);\n }\n });\n \n // Re-attach search handlers if search is enabled\n const searchInput = clonedListbox.querySelector('nile-input');\n if (searchInput) {\n searchInput.addEventListener('nile-input', this.handleSearchChange.bind(this));\n searchInput.addEventListener('nile-focus', this.handleSearchFocus.bind(this));\n searchInput.addEventListener('nile-change', this.onInputChange.bind(this));\n }\n\n // Re-attach scroll handler\n const virtualizedContainer = clonedListbox.querySelector('.virtualized') as HTMLElement;\n if (virtualizedContainer) {\n virtualizedContainer.addEventListener('scroll', this.handleScroll.bind(this));\n }\n\n // Re-attach footer handlers if multiple\n if (this.multiple) {\n const showSelectedSpan = clonedListbox.querySelector('.select__footer span[style*=\"cursor: pointer\"]');\n if (showSelectedSpan) {\n showSelectedSpan.addEventListener('click', this.toggleShowSelected.bind(this));\n }\n\n const clearSpan = clonedListbox.querySelector('.select__clear');\n if (clearSpan) {\n clearSpan.addEventListener('click', this.unSelectAll.bind(this));\n }\n }\n }\n\n private setupBodyAppend(): void {\n if (!this.bodyAppend) return;\n\n this.bodyAppendContainer = this.createBodyAppendContainer();\n this.bodyAppendListbox = this.createBodyAppendListbox();\n \n this.bodyAppendContainer.appendChild(this.bodyAppendListbox);\n document.body.appendChild(this.bodyAppendContainer);\n \n this.positionBodyAppend();\n \n // Wait for the next tick to ensure the original listbox is rendered\n this.updateComplete.then(async () => {\n await this.updateBodyAppendContent();\n });\n }\n\n private cleanupBodyAppend(): void {\n if (this.bodyAppendContainer && this.bodyAppendContainer.parentNode) {\n this.bodyAppendContainer.parentNode.removeChild(this.bodyAppendContainer);\n }\n this.bodyAppendContainer = null;\n this.bodyAppendListbox = null;\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","hostUpdated","stop","unobserve","delete","_export","NileVirtualSelect","_u","_","formControlController","FormControlController","assumeInteractionOn","hasSlotController","HasSlotController","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","bodyAppend","maxOptionsVisible","oldMaxOptionsVisible","showListbox","bodyAppendContainer","bodyAppendListbox","handleDocumentMouseDown","event","path","composedPath","hitSelf","includes","hitPopup","popup","hitBodyAppend","hide","handleWindowError","message","preventDefault","handleWindowResize","updateBodyAppendPosition","handleWindowScroll","resizeController","ResizeController","entries","entry","_iterator2","_step2","classList","contains","calculateTotalWidthOfTags","_this2","_inherits","get","validity","_this$valueInput","valueInput","validationMessage","_this$valueInput$vali","_this$valueInput2","connectedCallback","super","initializeComponent","setupEventListeners","updateComplete","then","length","selectionChanged","disconnectedCallback","removeOpenListeners","scrollTimeout","clearTimeout","undefined","cleanupBodyAppend","updated","changedProperties","has","_this$shadowRoot","tagsDiv","shadowRoot","querySelector","emit","getDisplayText","item","renderItemConfig","toString","getItemValue","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","_this$selectedOptions","selectedValues","Array","isArray","filter","itemValue","some","val","String","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","itemsToSearch","VirtualSelectSelectionManager","createVirtualOptionsFromValues","_this$selectedOptions2","getTextLabel","updateValidity","filterVirtualOptions","handleSearchFocus","handleSearchBlur","handleSearchChange","detail","query","_this8$shadowRoot","virtualized","remove","handleScroll","scrollTop","scrollLeft","setTimeout","Math","ceil","floor","scrollHeight","offsetHeight","isAtBottom","result","VirtualSelectSearchManager","filteredItems","handleInvalid","setValidity","emitInvalidEvent","handleDisabledChange","handleOpenChange","handleValueChange","handleDataChange","updateBodyAppendContent","handleRenderItemConfigChange","handleOptionsLoadingChange","handleBodyAppendChange","setupBodyAppend","_handleOpenChange","_callee2","_callee2$","_context3","handleOpen","handleClose","_callee3","_this$data","_m","_callee3$","_context4","stopAnimations","active","getAnimation","dir","keyframes","options","animateTo","initializeOriginalItems","_callee4","_m2","_callee4$","_context5","_show","_callee5","_callee5$","_context6","abrupt","waitForEvent","_callee6","_callee6$","_context7","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","_this$renderItemConfi6","_this$renderItemConfi7","VirtualSelectRenderer","calculateWidthOfSelectTagsDiv","selectTagsDiv","offsetWidth","widths","querySelectorAll","forEach","tag","HTMLElement","push","widthOfSelectTagsDiv","summ","lastindex","virtualizedContainer","isConnected","_this14$shadowRoot","listbox","virtualizer","createBodyAppendContainer","container","createElement","style","position","zIndex","pointerEvents","className","background","border","borderRadius","boxShadow","maxHeight","overflow","createBodyAppendListbox","id","setAttribute","overflowY","positionBodyAppend","rect","getBoundingClientRect","left","top","bottom","width","concat","_updateBodyAppendContent","_callee7","_yield$import","_n","_o2","c","_n2","_o3","_callee7$","_context8","innerHTML","_context","import","searchContent","searchDiv","appendChild","firstElementChild","loaderContent","loaderDiv","virtualizedContent","virtualizedDiv","footerContent","footerDiv","attachBodyAppendEventListeners","clonedListbox","searchInput","showSelectedSpan","clearSpan","body","async","_context9","_callee8","parentNode","removeChild","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]}
|