@aquera/nile-elements 2.0.7 → 2.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/README.md +8 -0
  2. package/dist/index.js +627 -265
  3. package/dist/nile-chip/nile-chip.css.cjs.js +1 -1
  4. package/dist/nile-chip/nile-chip.css.cjs.js.map +1 -1
  5. package/dist/nile-chip/nile-chip.css.esm.js +4 -8
  6. package/dist/nile-input/nile-input.css.cjs.js +1 -1
  7. package/dist/nile-input/nile-input.css.cjs.js.map +1 -1
  8. package/dist/nile-input/nile-input.css.esm.js +4 -5
  9. package/dist/nile-select/index.cjs.js +1 -1
  10. package/dist/nile-select/index.esm.js +1 -1
  11. package/dist/nile-select/nile-select.cjs.js +2 -1
  12. package/dist/nile-select/nile-select.cjs.js.map +1 -1
  13. package/dist/nile-select/nile-select.css.cjs.js +1 -1
  14. package/dist/nile-select/nile-select.css.cjs.js.map +1 -1
  15. package/dist/nile-select/nile-select.css.esm.js +126 -6
  16. package/dist/nile-select/nile-select.esm.js +77 -11
  17. package/dist/nile-select/virtual-scroll-helper.cjs.js +1 -1
  18. package/dist/nile-select/virtual-scroll-helper.cjs.js.map +1 -1
  19. package/dist/nile-select/virtual-scroll-helper.esm.js +3 -1
  20. package/dist/nile-virtual-select/index.cjs.js +1 -1
  21. package/dist/nile-virtual-select/index.esm.js +1 -1
  22. package/dist/nile-virtual-select/nile-virtual-select.cjs.js +4 -3
  23. package/dist/nile-virtual-select/nile-virtual-select.cjs.js.map +1 -1
  24. package/dist/nile-virtual-select/nile-virtual-select.css.cjs.js +1 -1
  25. package/dist/nile-virtual-select/nile-virtual-select.css.cjs.js.map +1 -1
  26. package/dist/nile-virtual-select/nile-virtual-select.css.esm.js +126 -6
  27. package/dist/nile-virtual-select/nile-virtual-select.esm.js +71 -12
  28. package/dist/src/nile-chip/nile-chip.css.js +4 -8
  29. package/dist/src/nile-chip/nile-chip.css.js.map +1 -1
  30. package/dist/src/nile-input/nile-input.css.js +4 -5
  31. package/dist/src/nile-input/nile-input.css.js.map +1 -1
  32. package/dist/src/nile-input/nile-input.test.js +5 -0
  33. package/dist/src/nile-input/nile-input.test.js.map +1 -1
  34. package/dist/src/nile-select/nile-select.css.js +126 -6
  35. package/dist/src/nile-select/nile-select.css.js.map +1 -1
  36. package/dist/src/nile-select/nile-select.d.ts +43 -5
  37. package/dist/src/nile-select/nile-select.js +445 -106
  38. package/dist/src/nile-select/nile-select.js.map +1 -1
  39. package/dist/src/nile-select/nile-select.test.d.ts +1 -0
  40. package/dist/src/nile-select/nile-select.test.js +342 -1
  41. package/dist/src/nile-select/nile-select.test.js.map +1 -1
  42. package/dist/src/nile-select/virtual-scroll-helper.js +3 -1
  43. package/dist/src/nile-select/virtual-scroll-helper.js.map +1 -1
  44. package/dist/src/nile-virtual-select/nile-virtual-select.css.js +126 -6
  45. package/dist/src/nile-virtual-select/nile-virtual-select.css.js.map +1 -1
  46. package/dist/src/nile-virtual-select/nile-virtual-select.d.ts +45 -4
  47. package/dist/src/nile-virtual-select/nile-virtual-select.js +385 -59
  48. package/dist/src/nile-virtual-select/nile-virtual-select.js.map +1 -1
  49. package/dist/src/nile-virtual-select/nile-virtual-select.test.js +253 -1
  50. package/dist/src/nile-virtual-select/nile-virtual-select.test.js.map +1 -1
  51. package/dist/src/version.js +1 -1
  52. package/dist/src/version.js.map +1 -1
  53. package/dist/tsconfig.tsbuildinfo +1 -1
  54. package/package.json +1 -1
  55. package/src/nile-chip/nile-chip.css.ts +4 -8
  56. package/src/nile-input/nile-input.css.ts +4 -5
  57. package/src/nile-input/nile-input.test.ts +6 -0
  58. package/src/nile-select/nile-select.css.ts +126 -6
  59. package/src/nile-select/nile-select.test.ts +478 -1
  60. package/src/nile-select/nile-select.ts +499 -91
  61. package/src/nile-select/virtual-scroll-helper.ts +3 -1
  62. package/src/nile-virtual-select/nile-virtual-select.css.ts +126 -6
  63. package/src/nile-virtual-select/nile-virtual-select.test.ts +352 -1
  64. package/src/nile-virtual-select/nile-virtual-select.ts +460 -55
  65. package/vscode-html-custom-data.json +40 -6
@@ -1 +1 @@
1
- {"version":3,"file":"nile-virtual-select.cjs.js","sources":["../../../../node_modules/lit-html/async-directive.js","../../../../node_modules/lit-html/directive-helpers.js","../../../../node_modules/@lit-labs/observers/resize-controller.js","../../../src/nile-virtual-select/nile-virtual-select.ts"],"sourcesContent":["import{isSingleExpression as i}from\"./directive-helpers.js\";import{Directive as t,PartType as e}from\"./directive.js\";export{directive}from\"./directive.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const s=(i,t)=>{const e=i._$AN;if(void 0===e)return!1;for(const i of e)i._$AO?.(t,!1),s(i,t);return!0},o=i=>{let t,e;do{if(void 0===(t=i._$AM))break;e=t._$AN,e.delete(i),i=t}while(0===e?.size)},r=i=>{for(let t;t=i._$AM;i=t){let e=t._$AN;if(void 0===e)t._$AN=e=new Set;else if(e.has(i))break;e.add(i),c(t)}};function h(i){void 0!==this._$AN?(o(this),this._$AM=i,r(this)):this._$AM=i}function n(i,t=!1,e=0){const r=this._$AH,h=this._$AN;if(void 0!==h&&0!==h.size)if(t)if(Array.isArray(r))for(let i=e;i<r.length;i++)s(r[i],!1),o(r[i]);else null!=r&&(s(r,!1),o(r));else s(this,i)}const c=i=>{i.type==e.CHILD&&(i._$AP??=n,i._$AQ??=h)};class f extends t{constructor(){super(...arguments),this._$AN=void 0}_$AT(i,t,e){super._$AT(i,t,e),r(this),this.isConnected=i._$AU}_$AO(i,t=!0){i!==this.isConnected&&(this.isConnected=i,i?this.reconnected?.():this.disconnected?.()),t&&(s(this,i),o(this))}setValue(t){if(i(this._$Ct))this._$Ct._$AI(t,this);else{const i=[...this._$Ct._$AH];i[this._$Ci]=t,this._$Ct._$AI(i,this,0)}}disconnected(){}reconnected(){}}export{f as AsyncDirective,t as Directive,e as PartType};\n//# sourceMappingURL=async-directive.js.map\n","import{_$LH as o}from\"./lit-html.js\";\n/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const{I:t}=o,i=o=>null===o||\"object\"!=typeof o&&\"function\"!=typeof o,n={HTML:1,SVG:2,MATHML:3},e=(o,t)=>void 0===t?void 0!==o?._$litType$:o?._$litType$===t,l=o=>null!=o?._$litType$?.h,c=o=>void 0!==o?._$litDirective$,d=o=>o?._$litDirective$,f=o=>void 0===o.strings,s=()=>document.createComment(\"\"),r=(o,i,n)=>{const e=o._$AA.parentNode,l=void 0===i?o._$AB:i._$AA;if(void 0===n){const i=e.insertBefore(s(),l),c=e.insertBefore(s(),l);n=new t(i,c,o,o.options)}else{const t=n._$AB.nextSibling,i=n._$AM,c=i!==o;if(c){let t;n._$AQ?.(o),n._$AM=o,void 0!==n._$AP&&(t=o._$AU)!==i._$AU&&n._$AP(t)}if(t!==l||c){let o=n._$AA;for(;o!==t;){const t=o.nextSibling;e.insertBefore(o,l),o=t}}}return n},v=(o,t,i=o)=>(o._$AI(t,i),o),u={},m=(o,t=u)=>o._$AH=t,p=o=>o._$AH,M=o=>{o._$AP?.(!1,!0);let t=o._$AA;const i=o._$AB.nextSibling;for(;t!==i;){const o=t.nextSibling;t.remove(),t=o}},h=o=>{o._$AR()};export{n as TemplateResultType,h as clearPart,p as getCommittedValue,d as getDirectiveClass,r as insertPart,l as isCompiledTemplateResult,c as isDirectiveResult,i as isPrimitive,f as isSingleExpression,e as isTemplateResult,M as removePart,v as setChildPartValue,m as setCommittedValue};\n//# sourceMappingURL=directive-helpers.js.map\n","import{AsyncDirective as t}from\"lit-html/async-directive.js\";import{directive as s}from\"lit-html/directive.js\";import{isServer as i}from\"lit-html/is-server.js\";class h{constructor(t,{target:s,config:h,callback:e,skipInitial:r}){this.t=new Set,this.o=!1,this.i=!1,this.h=t,null!==s&&this.t.add(s??t),this.l=h,this.o=r??this.o,this.callback=e,i||(window.ResizeObserver?(this.u=new ResizeObserver(t=>{this.handleChanges(t),this.h.requestUpdate()}),t.addController(this)):console.warn(\"ResizeController error: browser does not support ResizeObserver.\"))}handleChanges(t){this.value=this.callback?.(t,this.u)}hostConnected(){for(const t of this.t)this.observe(t)}hostDisconnected(){this.disconnect()}async hostUpdated(){!this.o&&this.i&&this.handleChanges([]),this.i=!1}observe(t){this.t.add(t),this.u.observe(t,this.l),this.i=!0,this.h.requestUpdate()}unobserve(t){this.t.delete(t),this.u.unobserve(t)}disconnect(){this.u.disconnect()}target(t){return e(this,t)}}const e=s(class extends t{constructor(){super(...arguments),this.observing=!1}render(t,s){}update(t,[s,i]){this.controller=s,this.part=t,this.observe=i,!1===i?(s.unobserve(t.element),this.observing=!1):!1===this.observing&&(s.observe(t.element),this.observing=!0)}disconnected(){this.controller?.unobserve(this.part.element),this.observing=!1}reconnected(){!1!==this.observe&&!1===this.observing&&(this.controller?.observe(this.part.element),this.observing=!0)}});export{h 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\n import {\n LitElement,\n html,\n} from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { styles } from './nile-virtual-select.css';\n\nimport '../nile-icon';\nimport '../nile-popup/nile-popup';\nimport '../nile-tag/nile-tag';\nimport '../nile-checkbox/nile-checkbox';\nimport '../nile-loader/nile-loader';\nimport { animateTo, stopAnimations } from '../internal/animate';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { query, state } from 'lit/decorators.js';\nimport { defaultValue } from '../internal/default-value';\nimport { FormControlController } from '../internal/form';\nimport {\n getAnimation,\n setDefaultAnimation,\n} from '../utilities/animation-registry';\nimport { HasSlotController } from '../internal/slot';\nimport { waitForEvent } from '../internal/event';\nimport { watch } from '../internal/watch';\nimport NileElement from '../internal/nile-element';\nimport type { CSSResultGroup, PropertyValues, TemplateResult } from 'lit';\nimport type { NileFormControl } from '../internal/nile-element';\nimport type NileOption from '../nile-option/nile-option';\nimport type NilePopup from '../nile-popup/nile-popup';\nimport { ifDefined } from 'lit/directives/if-defined.js';\n\nimport type { VirtualOption, NileRemoveEvent, RenderItemConfig } from './types.js';\nimport { VirtualSelectSelectionManager } from './selection-manager.js';\nimport { VirtualSelectSearchManager } from './search-manager.js';\nimport { VirtualSelectRenderer } from './renderer.js';\nimport { PortalManager } from './portal-manager.js';\nimport { ResizeController } from '@lit-labs/observers/resize-controller.js';\nimport { VisibilityManager } from '../utilities/visibility-manager.js';\n\n/**\n * Nile Virtual Select component.\n *\n * @tag nile-virtual-select\n *\n */\n\n/**\n * @summary Virtual select component for handling large datasets with virtual scrolling.\n * @status stable\n * @since 2.0\n *\n * @dependency nile-icon\n * @dependency nile-popup\n * @dependency nile-tag\n * @dependency nile-checkbox\n *\n * @slot label - The input's label. Alternatively, you can use the `label` attribute.\n * @slot prefix - Used to prepend a presentational icon or similar element to the combobox.\n * @slot clear-icon - An icon to use in lieu of the default clear icon.\n * @slot expand-icon - The icon to show when the control is expanded and collapsed.\n * @slot help-text - Text that describes how to use the input. Alternatively, you can use the `help-text` attribute.\n *\n * @event nile-change - Emitted when the control's value changes.\n * @event nile-clear - Emitted when the control's value is cleared.\n * @event nile-input - Emitted when the control receives input.\n * @event nile-focus - Emitted when the control gains focus.\n * @event nile-blur - Emitted when the control loses focus.\n * @event nile-show - Emitted when the select's menu opens.\n * @event nile-after-show - Emitted after the select's menu opens and all animations are complete.\n * @event nile-hide - Emitted when the select's menu closes.\n * @event nile-after-hide - Emitted after the select's menu closes and all animations are complete.\n * @event nile-invalid - Emitted when the form control has been checked for validity and its constraints aren't satisfied.\n * @event nile-search - Emitted when the user types in the search input. The event payload includes the search query for backend search functionality.\n * @event nile-scroll - Emitted when the user scrolls within the virtualized container. The event payload includes scroll position information.\n * @event nile-scroll-start - Emitted when the user starts scrolling within the virtualized container.\n * @event nile-scroll-end - Emitted when the user stops scrolling and reaches the bottom of the virtualized container (debounced).\n *\n * @csspart form-control - The form control that wraps the label, input, and help text.\n * @csspart form-control-label - The label's wrapper.\n * @csspart form-control-input - The select's wrapper.\n * @csspart form-control-help-text - The help text's wrapper.\n * @csspart combobox - The container the wraps the prefix, combobox, clear icon, and expand button.\n * @csspart prefix - The container that wraps the prefix slot.\n * @csspart display-input - The element that displays the selected option's label, an `<input>` element.\n * @csspart listbox - The listbox container where options are slotted.\n * @csspart tags - The container that houses option tags when `multiple` is used.\n * @csspart tag - The individual tags that represent each multiselect option.\n * @csspart clear-button - The clear button.\n * @csspart expand-icon - The container that wraps the expand icon.\n * @csspart footer - The footer container with show selected and clear all options.\n */\n\n@customElement('nile-virtual-select')\nexport class NileVirtualSelect extends NileElement implements NileFormControl {\n static styles: CSSResultGroup = styles;\n\n private readonly formControlController = new FormControlController(this, {\n assumeInteractionOn: ['nile-blur', 'nile-input'],\n });\n private readonly hasSlotController = new HasSlotController(\n this,\n 'help-text',\n 'label'\n );\n private readonly portalManager = new PortalManager(this);\n\n @query('.select') popup: NilePopup;\n @query('.select__combobox') combobox: HTMLElement;\n @query('.select__display-input') displayInput: HTMLInputElement;\n @query('.select__value-input') valueInput: HTMLInputElement;\n @query('.virtualized') virtualizedContainer: HTMLElement;\n\n @state() private hasFocus = false;\n @state() displayLabel = '';\n @state() selectedOptions: VirtualOption[] = [];\n @state() oldValue: string | string[] = '';\n \n private scrollTimeout: number | undefined;\n private scrolling = false;\n private visibilityManager?: VisibilityManager;\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 @property({ type: Boolean, reflect: true, attribute: true }) enableVisibilityEffect = false;\n\n /** Search input placeholder */\n @property({attribute:'internal-search-placeholder'}) internalSearchPlaceHolder = 'Search...';\n\n /** Disable local search filtering */\n @property({ type: Boolean, reflect: true }) disableLocalSearch = false;\n\n /** Show loading state */\n @property({ type: Boolean, reflect: true }) optionsLoading = false;\n\n /** Show loading state using nile-loader */\n @property({ type: Boolean, reflect: true, attribute: true }) loading = false;\n\n /** Allows more than one option to be selected. */\n @property({ type: Boolean, reflect: true }) multiple = false;\n\n /** Help text */\n @property({ attribute: 'help-text', reflect: true }) helpText = '';\n\n /** Error message */\n @property({ attribute: 'error-message', reflect: true }) errorMessage = '';\n\n /** Sets the input to a warning state */\n @property({ type: Boolean }) warning = false;\n\n /** Sets the input to an error state */\n @property({ type: Boolean }) error = false;\n\n /** Sets the input to a success state */\n @property({ type: Boolean }) success = false;\n\n /** Disables the select control. */\n @property({ type: Boolean, reflect: true }) disabled = false;\n\n /** Adds a clear button when the select is not empty. */\n @property({ type: Boolean, reflect: true }) clearable = false;\n\n /** The select's open state. */\n @property({ type: Boolean, reflect: true }) open = false;\n\n /**\n * Enable this option to prevent the listbox from being clipped when the component is placed inside a container with\n * `overflow: auto|scroll`. Hoisting uses a fixed positioning strategy that works in many, but not all, scenarios.\n */\n @property({ type: Boolean }) hoist = false;\n\n /** Draws a filled select. */\n @property({ type: Boolean, reflect: true }) filled = false;\n\n /** Draws a pill-style select with rounded edges. */\n @property({ type: Boolean, reflect: true }) pill = false;\n\n /** The select's label. If you need to display HTML, use the `label` slot instead. */\n @property() label = '';\n\n /**\n * The preferred placement of the select's menu. Note that the actual placement may vary as needed to keep the listbox\n * inside of the viewport.\n */\n @property({ reflect: true }) placement: 'top' | 'bottom' = 'bottom';\n\n /**\n * By default, form controls are associated with the nearest containing `<form>` element. This attribute allows you\n * to place the form control outside of a form and associate it with the form that has this `id`. The form must be in\n * the same document or shadow root for this to work.\n */\n @property({ reflect: true }) form = '';\n\n /** The select's required attribute. */\n @property({ type: Boolean, reflect: true }) required = false;\n\n /** Show no results message */\n @property({ type: Boolean }) showNoResults: boolean = false;\n\n /** No results message */\n @property({ type: String }) noResultsMessage: string = 'No results found';\n\n /** Show selected options only */\n @property({ type: Boolean }) showSelected = false;\n\n /** Enhanced configuration for rendering items with support for display text, value, and search text */\n @property({ attribute:false}) renderItemConfig?: RenderItemConfig;\n\n /** Block value change events */\n @property({ type: Boolean, reflect: true }) blockValueChange = false;\n\n /** Disable width synchronization */\n @property({ type: Boolean, reflect: true }) noWidthSync = false;\n\n /** \n * When true, the listbox will be appended to the document body instead of the parent container.\n * This is useful when the parent has overflow: hidden, clip-path, or transform applied.\n */\n @property({ type: Boolean, reflect: true }) portal = false;\n\n /**\n * The maximum number of selected options to show when `multiple` is true. After the maximum, \"+n\" will be shown to\n * indicate the number of additional items that are selected. Set to 0 to remove the limit.\n */\n @property({ attribute: 'max-options-visible', type: Number })\n maxOptionsVisible = 3;\n\n @state() oldMaxOptionsVisible: number = 1;\n\n @property({ type: Boolean, reflect: true, attribute: true }) enableTabClose = false;\n\n @property({ type: Boolean, reflect: true, attribute: true }) descriptionSearchEnabled = false;\n\n @property({\n type: Boolean,\n reflect: true,\n attribute: true,\n converter: {\n fromAttribute: (value) => value === 'true',\n toAttribute: (value) => String(value),\n },\n }) allowHtmlLabel = true;\n\n @property({ type: Boolean, reflect: true, attribute: true }) enableDescription = false;\n\n /** Legacy: hide the option checkbox (the \"Show Selected\" footer is kept). */\n @property({ type: Boolean, reflect: true }) legacy = false;\n\n /** Variant: show a tick on the right of the selected option (single-select). */\n @property({ type: Boolean, reflect: true, attribute: true }) tickOnSelect = false;\n\n @state() showListbox: boolean = false;\n @state() private wasShowSelectedCheckedOnClose: boolean = false;\n\n /** Gets the validity state object */\n get validity() {\n return this.valueInput?.validity;\n }\n\n /** Gets the validation message */\n get validationMessage() {\n return this.valueInput?.validationMessage ?? '';\n }\n\n connectedCallback() {\n super.connectedCallback();\n this.initializeComponent();\n this.setupEventListeners();\n \n this.updateComplete.then(() => {\n if (this.value && this.data.length > 0) {\n this.selectionChanged();\n }\n });\n }\n\n disconnectedCallback() {\n this.removeOpenListeners();\n this.visibilityManager?.cleanup();\n // Clear any pending scroll timeout to prevent memory leaks\n if (this.scrollTimeout) {\n clearTimeout(this.scrollTimeout);\n this.scrollTimeout = undefined;\n }\n // Clean up body append elements\n this.portalManager.cleanupPortalAppend();\n }\n\n protected updated(changedProperties: PropertyValues): void {\n if(changedProperties.has('value')) {\n this.selectionChanged();\n }\n if (changedProperties.has('autoResize')) {\n const tagsDiv = this.shadowRoot?.querySelector('.select__tags') as HTMLElement;\n if (this.autoResize && tagsDiv) {\n this.resizeController.observe(tagsDiv);\n } else if (tagsDiv) {\n this.resizeController.unobserve(tagsDiv);\n }\n }\n }\n\n private initializeComponent(): void {\n this.open = false;\n this.emit('nile-init');\n }\n\n /**\n * Get display text for an item using renderItemConfig\n */\n private getDisplayText(item: any): string {\n if (this.renderItemConfig?.getDisplayText) {\n return this.renderItemConfig.getDisplayText(item);\n }\n // Fallback to basic display\n return item?.label || item?.name || item?.toString() || '';\n }\n\n /**\n * Get value for an item using renderItemConfig or fallback to item.value\n */\n private getItemValue(item: any): string {\n if (this.renderItemConfig?.getValue) {\n return this.renderItemConfig.getValue(item);\n }\n return item?.value || item;\n }\n\n /**\n * Get description for an item using renderItemConfig or fallback to item.description\n */\n private getItemDescription(item: any): string {\n if (this.renderItemConfig?.getDescription) {\n return this.renderItemConfig.getDescription(item);\n }\n return item?.description || item || '';\n }\n\n /**\n * Get description for an item using renderItemConfig or fallback to item.description\n */\n private getItemPrefix(item: any): string {\n if (this.renderItemConfig?.getPrefix) {\n return this.renderItemConfig.getPrefix(item);\n }\n return item?.prefix || item || '';\n }\n\n /**\n * Get suffix for an item using renderItemConfig or fallback to item.suffix\n */\n private getItemSuffix(item: any): string {\n if (this.renderItemConfig?.getSuffix) {\n return this.renderItemConfig.getSuffix(item);\n }\n return item?.suffix || item || '';\n }\n\n /**\n * Get search text for an item using renderItemConfig or fallback to display text\n */\n private getSearchText(item: any): string {\n if (this.renderItemConfig?.getSearchText) {\n return this.renderItemConfig.getSearchText(item);\n }\n return this.getDisplayText(item);\n }\n\n private setupEventListeners(): void {\n this.handleDocumentFocusIn = this.handleDocumentFocusIn.bind(this);\n this.handleDocumentKeyDown = this.handleDocumentKeyDown.bind(this);\n this.handleDocumentMouseDown = this.handleDocumentMouseDown.bind(this);\n this.handleWindowError = this.handleWindowError.bind(this);\n this.handleWindowResize = this.handleWindowResize.bind(this);\n this.handleWindowScroll = this.handleWindowScroll.bind(this);\n }\n\n private addOpenListeners(): void {\n document.addEventListener('focusin', this.handleDocumentFocusIn);\n document.addEventListener('keydown', this.handleDocumentKeyDown);\n document.addEventListener('mousedown', this.handleDocumentMouseDown);\n window.addEventListener('error', this.handleWindowError);\n \n if (this.portal) {\n window.addEventListener('resize', this.handleWindowResize);\n window.addEventListener('scroll', this.handleWindowScroll, true);\n }\n }\n\n private removeOpenListeners(): void {\n document.removeEventListener('focusin', this.handleDocumentFocusIn);\n document.removeEventListener('keydown', this.handleDocumentKeyDown);\n document.removeEventListener('mousedown', this.handleDocumentMouseDown);\n window.removeEventListener('error', this.handleWindowError);\n window.removeEventListener('resize', this.handleWindowResize);\n window.removeEventListener('scroll', this.handleWindowScroll, true);\n }\n\n private handleFocus(): void {\n this.hasFocus = true;\n this.emit('nile-focus');\n }\n\n private handleBlur(): void {\n this.hasFocus = false;\n this.emit('nile-blur');\n }\n\n \n protected firstUpdated(_changed: PropertyValues) {\n this.visibilityManager = new VisibilityManager({\n host: this,\n target: this.combobox, \n enableVisibilityEffect: this.enableVisibilityEffect,\n enableTabClose: this.enableTabClose,\n isOpen: () => this.open,\n onAnchorOutOfView: () => {\n this.hide();\n this.emit('nile-visibility-change', {\n visible: false,\n reason: 'anchor-out-of-view',\n name: this.name,\n });\n },\n onDocumentHidden: () => {\n this.hide();\n this.emit('nile-visibility-change', {\n visible: false,\n reason: 'document-hidden',\n name: this.name,\n });\n },\n emit: (event, detail) => this.emit(`nile-${event}`, detail),\n });\n }\n \n \n\n\n private handleDocumentFocusIn(event: FocusEvent): void {\n if (!this.open) return; \n const path = event.composedPath(); \n const hitSelf = path.includes(this);\n const hitPopup = this.popup && path.includes(this.popup);\n const hitPortalAppend = this.portal && this.portalManager.portalContainerElement && path.includes(this.portalManager.portalContainerElement);\n\n if (!hitSelf && !hitPopup && !hitPortalAppend) {\n this.hide();\n }\n }\n\n private handleDocumentKeyDown(event: KeyboardEvent): void {\n if (this.shouldIgnoreKeyPress(event)) {\n return;\n }\n\n if (this.isEscapeKey(event)) {\n this.handleEscapeKey(event);\n }\n\n if (this.isEnterOrSpaceKey(event)) {\n this.handleEnterOrSpaceKey(event);\n }\n }\n\n private shouldIgnoreKeyPress(event: KeyboardEvent): boolean {\n const target = event.target as HTMLElement;\n const isClearButton = target.closest('.select__clear') !== null;\n const isIconButton = target.closest('nile-icon-button') !== null;\n return isClearButton || isIconButton;\n }\n\n private isEscapeKey(event: KeyboardEvent): boolean {\n return event.key === 'Escape' && this.open;\n }\n\n private handleEscapeKey(event: KeyboardEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this.hide();\n this.displayInput.focus({ preventScroll: true });\n }\n\n private isEnterOrSpaceKey(event: KeyboardEvent): boolean {\n return event.key === 'Enter' || event.key === ' ';\n }\n\n private handleEnterOrSpaceKey(event: KeyboardEvent): void {\n event.preventDefault();\n event.stopImmediatePropagation();\n\n if (!this.open) {\n this.show();\n return;\n }\n\n if (!this.multiple) {\n this.hide();\n this.displayInput.focus({ preventScroll: true });\n }\n }\n\n private handleDocumentMouseDown = (event: MouseEvent): void => {\n if (!this.open) return; \n \n const path = event.composedPath();\n const hitSelf = path.includes(this);\n const hitPopup = this.popup && path.includes(this.popup);\n const hitPortalAppend = this.portal && this.portalManager.portalContainerElement && path.includes(this.portalManager.portalContainerElement);\n \n if (!hitSelf && !hitPopup && !hitPortalAppend) {\n this.hide();\n }\n };\n\n /**\n * This is a workaround for an error in the Lit Labs virtualizer.\n * Since there are no specific guidelines available to fix the issue,\n * we are catching only the error message related to the virtualizer.\n */\n private handleWindowError = (event: ErrorEvent): void => {\n const errorMessage = event.error?.message || event.message || '';\n if (errorMessage.includes('Cannot read properties of null (reading \\'insertBefore\\')')) {\n event.preventDefault();\n return;\n }\n };\n\n private handleWindowResize = (): void => {\n this.portalManager.updatePortalAppendPosition();\n };\n\n private handleWindowScroll = (): void => {\n this.portalManager.updatePortalAppendPosition();\n };\n\n private handleFooterClick(event: MouseEvent): void {\n event.stopPropagation();\n event.preventDefault();\n }\n\n private toggleShowSelected(event: Event): void {\n event.stopPropagation();\n event.preventDefault();\n if (this.selectedOptions?.length === 0) {\n return;\n }\n this.showSelected = !this.showSelected;\n\n if (this.showSelected) {\n this.searchValue = \"\";\n const selectedValues = Array.isArray(this.value) ? this.value : [this.value];\n this.data = this.originalOptionItems.filter((item: any) => {\n const itemValue = this.getItemValue(item);\n return selectedValues.some(val => String(val) === String(itemValue));\n });\n } else {\n this.data = [...this.originalOptionItems];\n }\n\n // Reset measured height when show selected toggles (content height may change)\n this.portalManager.resetMeasuredHeight();\n\n this.requestUpdate();\n this.repaintOptionsContainer();\n }\n\n private unSelectAll(): void {\n this.showSelected = false;\n this.value = this.multiple ? [] : '';\n this.data = [...this.originalOptionItems];\n this.selectionChanged();\n this.emit('nile-change', { value: this.value, name: this.name });\n this.emit('nile-clear', { value: this.multiple ? this.value : '', name: this.name });\n this.resetScrollPosition();\n }\n\n private handleLabelClick(): void {\n this.displayInput.focus();\n this.hide();\n }\n\n private handleComboboxMouseDown(event: MouseEvent): void {\n if (this.shouldIgnoreComboboxClick(event)) {\n return;\n }\n\n event.preventDefault();\n this.displayInput.focus({ preventScroll: true });\n this.open = !this.open;\n }\n\n private resizeController = new ResizeController(this, {\n callback: (entries: ResizeObserverEntry[]) => {\n for (const entry of entries) {\n if (entry.target.classList.contains('select__tags')) {\n this.calculateTotalWidthOfTags();\n }\n }\n }\n });\n\n private shouldIgnoreComboboxClick(event: MouseEvent): boolean {\n const path = event.composedPath();\n const isIconButton = path.some(\n el =>\n el instanceof Element && el.tagName.toLowerCase() === 'nile-icon-button'\n );\n return this.disabled || isIconButton;\n }\n\n private handleComboboxKeyDown(event: KeyboardEvent): void {\n if (this.isEnterOrSpaceKey(event)) {\n event.preventDefault();\n this.open = !this.open;\n }\n }\n\n private handleClearClick(event: MouseEvent): void {\n event.stopPropagation();\n this.clearSelection();\n }\n\n private clearSelection(): void {\n const oldValue = this.value;\n this.value = this.multiple ? [] : '';\n this.selectionChanged();\n\n this.updateComplete.then(() => {\n this.nileInput({ value: this.value, name: this.name });\n this.nileChange({ value: this.value, name: this.name });\n this.emit('nile-clear');\n });\n }\n\n private handleClearMouseDown(event: MouseEvent): void {\n event.stopPropagation();\n }\n\n private handleOptionClick(event: MouseEvent): void {\n const target = event.target as HTMLElement;\n const option = target.closest('nile-option');\n\n if (this.shouldBlockValueChange(option)) {\n return;\n }\n\n const oldValue = this.value;\n this.oldValue = oldValue;\n\n if (option && !option.disabled) {\n this.handleOptionSelection(option);\n }\n }\n\n private shouldBlockValueChange(option: Element | null): boolean {\n if (this.blockValueChange && option) {\n this.emit('nile-block-change', { value: (option as any)?.value, name: this.name });\n this.hide();\n return true;\n }\n return false;\n }\n\n private handleOptionSelection(option: Element): void {\n const optionValue = (option as any).value;\n \n if (this.multiple) {\n this.toggleOptionSelection(optionValue);\n } else {\n this.setSelectedOptions(optionValue);\n }\n\n this.updateComplete.then(() =>\n this.displayInput.focus({ preventScroll: true })\n );\n\n if (this.value !== this.oldValue) {\n this.updateComplete.then(() => {\n this.nileInput({ value: this.value, name: this.name });\n this.nileChange({ value: this.value, name: this.name });\n });\n }\n\n if (!this.multiple) {\n this.hide();\n this.displayInput.focus({ preventScroll: true });\n }\n }\n\n private setSelectedOptions(optionValue: string): void {\n this.value = optionValue;\n this.selectionChanged();\n }\n\n private toggleOptionSelection(optionValue: string): void {\n const currentValues = Array.isArray(this.value) ? this.value : [];\n \n if (currentValues.includes(optionValue)) {\n this.value = currentValues.filter(v => v !== optionValue);\n } else {\n this.value = [...currentValues, optionValue];\n }\n \n this.selectionChanged();\n }\n\n private handleTagRemove(event: NileRemoveEvent, option: VirtualOption): void {\n event.stopPropagation();\n\n if (!this.disabled) {\n this.removeTagFromSelection(option);\n this.emitTagRemovalEvent(option);\n }\n }\n\n private removeTagFromSelection(option: VirtualOption): void {\n let currentValue = this.value;\n if (!Array.isArray(currentValue)) {\n currentValue = currentValue ? [currentValue] : [];\n }\n const newValue = currentValue.filter((v: string) => v !== option.value);\n this.value = newValue;\n this.selectionChanged();\n }\n\n private emitTagRemovalEvent(option: VirtualOption): void {\n this.updateComplete.then(() => {\n this.nileInput({ value: this.value, name: this.name });\n this.nileChange({ value: this.value, name: this.name });\n this.emit('nile-tag-remove', { value: this.value, name: this.name, removedtagvalue: option.value });\n });\n }\n\n private selectionChanged(): void {\n const itemsToSearch = this.originalOptionItems.length > 0 ? this.originalOptionItems : this.data;\n this.selectedOptions = VirtualSelectSelectionManager.createVirtualOptionsFromValues(\n this.value, \n itemsToSearch, \n this.getDisplayText.bind(this),\n this.renderItemConfig?.getValue,\n this.allowHtmlLabel\n );\n\n if (this.multiple) {\n if (this.placeholder && this.value.length === 0) {\n this.displayLabel = '';\n } else {\n this.displayLabel = this.selectedOptions.length + ' selected';\n }\n } else {\n const currentValue = Array.isArray(this.value) ? this.value[0] : this.value;\n const label = this.selectedOptions[0]?.getTextLabel();\n this.displayLabel = label ? label : currentValue ?? '';\n }\n\n this.updateValidity();\n\n if (this.selectedOptions.length === 0) {\n this.showSelected = false;\n if(this.originalOptionItems?.length > 0 && !this.searchValue) {\n this.data = [...this.originalOptionItems];\n }\n this.repaintOptionsContainer();\n }\n\n this.calculateTotalWidthOfTags();\n }\n \n\n handleSearchFocus(): void {\n document.removeEventListener('keydown', this.handleDocumentKeyDown);\n }\n\n handleSearchBlur(): void {\n document.addEventListener('keydown', this.handleDocumentKeyDown);\n }\n\n handleSearchChange(e: any): void {\n this.searchValue = e.detail.value;\n if (this.portal) {\n this.portalManager.updatePortalAppendPosition();\n }\n \n this.emit('nile-search', { \n query: this.searchValue,\n name: this.name \n });\n \n if (!this.disableLocalSearch) {\n this.filterVirtualOptions(this.searchValue);\n this.repaintOptionsContainer();\n \n // Reset measured height when search changes (content height may change)\n this.portalManager.resetMeasuredHeight();\n }\n }\n \n repaintOptionsContainer() {\n this.resetScrollPosition();\n this.updateComplete.then(() => {\n const virtualized = this.shadowRoot?.querySelector('.virtualized') as HTMLElement;\n if (virtualized) {\n if (this.data.length < 5) {\n virtualized.classList.add('no-scroll');\n } else {\n virtualized.classList.remove('no-scroll');\n }\n }\n });\n }\n\n handleScroll(e: Event): void {\n if(this.showSelected) {\n return;\n }\n\n const target = e.target as HTMLElement;\n \n this.emit('nile-scroll', {\n scrollTop: target.scrollTop,\n scrollLeft: target.scrollLeft,\n name: this.name\n });\n\n if (!this.scrolling) {\n this.scrolling = true;\n this.emit('nile-scroll-start', {\n scrollTop: target.scrollTop,\n scrollLeft: target.scrollLeft,\n name: this.name\n });\n }\n\n clearTimeout(this.scrollTimeout);\n this.scrollTimeout = window.setTimeout(() => {\n if (this.scrolling) {\n this.scrolling = false;\n }\n }, 300);\n\n const isAtBottom = Math.ceil(target.scrollTop) >= Math.floor(target.scrollHeight - target.offsetHeight);\n if (isAtBottom && !this.searchValue) {\n this.emit('nile-scroll-end', {\n scrollTop: target.scrollTop,\n scrollLeft: target.scrollLeft,\n name: this.name,\n isAtBottom: true\n });\n }\n }\n\n filterVirtualOptions(searchValue: string): void {\n const result = VirtualSelectSearchManager.filterVirtualOptions(\n searchValue,\n this.originalOptionItems,\n this.data,\n this.getDisplayText.bind(this),\n this.getItemDescription.bind(this),\n this.descriptionSearchEnabled,\n this.renderItemConfig?.getSearchText\n );\n if (this.portal) {\n this.portalManager.updatePortalAppendPosition();\n this.updateComplete.then(() => {\n requestAnimationFrame(() => {\n this.resetScrollPosition();\n });\n });\n } else {\n this.resetScrollPosition();\n }\n this.data = result.filteredItems;\n this.showNoResults = result.showNoResults;\n this.showSelected = false;\n this.requestUpdate();\n }\n\n private handleInvalid(event: Event): void {\n this.formControlController.setValidity(false);\n this.formControlController.emitInvalidEvent(event);\n }\n\n @watch('disabled', { waitUntilFirstUpdate: true })\n handleDisabledChange(): void {\n if (this.disabled) {\n this.open = false;\n this.handleOpenChange();\n }\n }\n\n \n @watch('value', { waitUntilFirstUpdate: true })\n handleValueChange(): void {\n this.selectionChanged();\n this.requestUpdate();\n \n // Update body append content if it's active\n if (this.portal && this.portalManager.portalContainerElement) {\n this.portalManager.updatePortalAppendPosition();\n }\n }\n\n @watch('data', { waitUntilFirstUpdate: true })\n handleDataChange(): void {\n if (this.data.length > 0 && this.open && !this.showSelected && !this.searchValue) {\n this.originalOptionItems = [...this.data];\n }\n this.selectionChanged();\n // Show no results message when data is empty and not loading\n if (!this.optionsLoading && !this.loading && this.data.length === 0) {\n this.showNoResults = true;\n } else if (this.data.length > 0) {\n this.showNoResults = false;\n }\n this.requestUpdate();\n \n // Reset measured height when data changes (content height may change)\n this.portalManager.resetMeasuredHeight();\n \n // Update body append content if it's active\n if (this.portal && this.portalManager.portalContainerElement) {\n this.portalManager.updatePortalAppendPosition();\n }\n }\n\n @watch('renderItemConfig', { waitUntilFirstUpdate: true })\n handleRenderItemConfigChange(): void {\n if (this.value && this.data.length > 0) {\n this.selectionChanged();\n this.requestUpdate();\n }\n }\n\n @watch('optionsLoading', { waitUntilFirstUpdate: true })\n handleOptionsLoadingChange(): void {\n // Show no results message when loading stops and there are no results\n if (!this.optionsLoading && this.data.length === 0) {\n this.showNoResults = true;\n }\n this.requestUpdate();\n \n // Update body append content if it's active\n if (this.portal && this.portalManager.portalContainerElement) {\n this.portalManager.updatePortalAppendPosition();\n }\n }\n\n @watch('portal', { waitUntilFirstUpdate: true })\n handlePortalAppendChange(): void {\n if (this.open) {\n if (this.portal) {\n this.portalManager.setupPortalAppend();\n } else {\n this.portalManager.cleanupPortalAppend();\n }\n }\n }\n\n @watch('open', { waitUntilFirstUpdate: true })\n async handleOpenChange(): Promise<void> {\n if (this.open && !this.disabled) {\n this.visibilityManager?.setup();\n this.showListbox = true;\n await this.updateComplete;\n await this.handleOpen();\n \n if (this.portal) {\n this.portalManager.setupPortalAppend();\n }\n } else {\n this.visibilityManager?.cleanup();\n await this.handleClose();\n this.showListbox = false;\n \n if (this.portal) {\n this.portalManager.cleanupPortalAppend();\n }\n }\n }\n\n private async handleOpen(): Promise<void> {\n this.emit('nile-show', { value: this.value, name: this.name });\n this.addOpenListeners();\n this.showNoResults = !this.data?.length;\n\n await stopAnimations(this);\n \n // Hide popup initially to prevent flickering during positioning calculation\n // This allows content to be measured while invisible\n if (this.popup?.popup) {\n this.popup.popup.style.visibility = 'hidden';\n }\n \n this.popup.active = true;\n \n // Wait for positioning to complete before showing the popup\n await new Promise(resolve => requestAnimationFrame(resolve));\n // Wait for next frame to allow Floating UI to calculate position\n await new Promise(resolve => requestAnimationFrame(resolve));\n \n // Show popup after positioning is calculated\n if (this.popup?.popup) {\n this.popup.popup.style.visibility = '';\n }\n\n const { keyframes, options } = getAnimation(this, 'select.show', {\n dir: 'ltr',\n });\n await animateTo(this.popup.popup, keyframes, options);\n\n if (this.wasShowSelectedCheckedOnClose) {\n this.showSelected = false;\n this.data = [...this.originalOptionItems];\n this.wasShowSelectedCheckedOnClose = false;\n }\n \n this.filterVirtualOptions(\"\");\n this.resetScrollPosition();\n this.emit('nile-after-show', { value: this.value, name: this.name });\n }\n\n private async handleClose(): Promise<void> {\n this.emit('nile-hide', { value: this.value, name: this.name });\n this.removeOpenListeners();\n\n this.wasShowSelectedCheckedOnClose = this.showSelected;\n\n await stopAnimations(this);\n const { keyframes, options } = getAnimation(this, 'select.hide', {\n dir: 'ltr',\n });\n await animateTo(this.popup.popup, keyframes, options);\n this.popup.active = false;\n \n // Reset visibility style when closing\n if (this.popup?.popup) {\n this.popup.popup.style.visibility = '';\n }\n\n this.searchValue = '';\n \n // Reset measured height when popup closes (content may change on next open)\n this.portalManager.resetMeasuredHeight();\n \n this.emit('nile-after-hide', { value: this.value, name: this.name });\n }\n\n async show(): Promise<unknown> {\n if (this.open || this.disabled) {\n this.open = false;\n return undefined;\n }\n\n this.open = true;\n return waitForEvent(this, 'nile-after-show');\n }\n\n async hide(): Promise<unknown> {\n if (!this.open || this.disabled) {\n this.open = false;\n return undefined;\n }\n\n this.open = false;\n return waitForEvent(this, 'nile-after-hide');\n }\n\n checkValidity(): boolean {\n return this.valueInput.checkValidity();\n }\n\n getForm(): HTMLFormElement | null {\n return this.formControlController.getForm();\n }\n\n reportValidity(): boolean {\n return this.valueInput.reportValidity();\n }\n\n setCustomValidity(message: string): void {\n this.valueInput.setCustomValidity(message);\n this.formControlController.updateValidity();\n }\n\n focus(options?: FocusOptions): void {\n this.displayInput.focus(options);\n }\n\n blur(): void {\n this.displayInput.blur();\n }\n\n onInputChange(event: Event): void {\n event.stopPropagation();\n }\n\n render(): TemplateResult {\n const hasLabelSlot = this.hasSlotController.test('label');\n const hasHelpTextSlot = this.hasSlotController.test('help-text');\n const hasLabelSuffixSlot = this.hasSlotController.test('label-suffix');\n const hasCustomSelect = this.hasSlotController.test('custom-select');\n const hasLabel = this.label ? true : !!hasLabelSlot;\n const hasClearIcon =\n this.clearable && !this.disabled && this.value.length > 0;\n const isPlaceholderVisible = !!this.placeholder && this.value.length === 0;\n const hasHelpText = !!this.helpText;\n const hasErrorMessage = !!this.errorMessage;\n\n return html`\n <div\n part=\"form-control\"\n class=${classMap({\n 'form-control': true,\n 'form-control--small': this.size === 'small',\n 'form-control--medium': this.size === 'medium',\n 'form-control--large': this.size === 'large',\n 'form-control--has-label': hasLabel,\n 'form-control--has-help-text': hasHelpText,\n })}\n >\n ${this.renderLabel(hasLabel, hasLabelSuffixSlot)}\n ${this.renderFormControlInput(hasCustomSelect, hasClearIcon, isPlaceholderVisible, hasHelpText, hasErrorMessage)}\n </div>\n `;\n }\n\n private renderLabel(hasLabel: boolean, hasLabelSuffixSlot: boolean): TemplateResult {\n return html`\n <label\n id=\"label\"\n part=\"form-control-label\"\n class=\"form-control__label\"\n aria-hidden=${hasLabel ? 'false' : 'true'}\n @click=${this.handleLabelClick}\n >\n <slot name=\"label\">${this.label}</slot>\n </label>\n\n ${hasLabelSuffixSlot ? html` <slot name=\"label-suffix\"></slot> ` : ``}\n `;\n }\n\n private renderFormControlInput(\n hasCustomSelect: boolean, \n hasClearIcon: boolean, \n isPlaceholderVisible: boolean, \n hasHelpText: boolean, \n hasErrorMessage: boolean\n ): TemplateResult {\n return html`\n <div part=\"form-control-input\" class=\"form-control-input\">\n ${this.renderPopup(hasCustomSelect, hasClearIcon, isPlaceholderVisible)}\n ${this.renderHelpText(hasHelpText, hasErrorMessage)}\n </div>\n `;\n }\n\n private renderPopup(hasCustomSelect: boolean, hasClearIcon: boolean, isPlaceholderVisible: boolean): TemplateResult {\n return html`\n <nile-popup\n class=${classMap({\n select: true,\n 'select--warning': this.warning,\n 'select--error': this.error,\n 'select--success': this.success,\n 'select--standard': true,\n 'select--filled': this.filled,\n 'select--pill': this.pill,\n 'select--open': this.open,\n 'select--disabled': this.disabled,\n 'select--multiple': this.multiple,\n 'select--focused': this.hasFocus,\n 'select--placeholder-visible': isPlaceholderVisible,\n 'select--top': this.placement === 'top',\n 'select--bottom': this.placement === 'bottom',\n 'select--small': this.size === 'small',\n 'select--medium': this.size === 'medium',\n 'select--large': this.size === 'large',\n })}\n placement=${this.placement}\n strategy=${this.portal ? 'fixed' : (this.hoist ? 'fixed' : 'absolute')}\n distance=\"6\"\n ?flip=${!this.portal}\n ?shift=${!this.portal}\n sync=${ifDefined(!this.noWidthSync ? 'width' : undefined)}\n auto-size=\"vertical\"\n auto-size-padding=\"10\"\n exportparts=\"tag__content\"\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))\" size=\"var(--nile-height-14px, var(--ng-height-16px))\" method=\"var(--nile-svg-method-fill, var(--ng-svg-method-stroke))\" library=\"system\" color=\"var(--nile-colors-dark-500, var(--ng-colors-fg-quaternary-400))\"></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))\" color=\"var(--nile-colors-dark-500, var(--ng-colors-fg-quaternary-400))\"></nile-icon>\n </slot>\n `;\n }\n\n private renderListbox(): TemplateResult {\n return html`\n <div\n id=\"listbox\"\n role=\"listbox\"\n aria-expanded=${this.open ? 'true' : 'false'}\n aria-multiselectable=${this.multiple ? 'true' : 'false'}\n aria-labelledby=\"label\"\n part=\"listbox\"\n class=\"select__listbox ${this.searchEnabled\n ? 'select__search-enabled '\n : ''} ${this.portal ? 'select__portal-append-hidden' : ''}\"\n tabindex=\"-1\"\n @mouseup=${this.handleOptionClick}\n style=${this.portal ? 'display: none;' : ''}\n >\n ${this.renderSearch()}\n ${this.renderLoader()}\n ${this.getVirtualizedContent()}\n ${this.renderFooter()}\n </div>\n `;\n }\n\n private renderSearch(): TemplateResult {\n return this.searchEnabled\n ? html`\n <div part=\"search\" class=\"select__search\">\n <nile-input\n size=\"small\"\n clearable\n .value=${this.searchValue}\n placeholder=\"${this.internalSearchPlaceHolder}\"\n @nile-input=${this.handleSearchChange}\n @nile-focus=${this.handleSearchFocus}\n @nile-change=\"${this.onInputChange}\"\n >\n <nile-icon name=\"var(--nile-icon-search, var(--ng-icon-search-lg))\" method=\"var(--nile-svg-method-fill, var(--ng-svg-method-stroke))\" slot=\"suffix\"> </nile-icon>\n </nile-input>\n </div>\n `\n : html``;\n }\n\n private renderLoader(): TemplateResult {\n if (this.loading) {\n return html`\n <span part=\"loader\" class=\"virtual-select-loader\">\n <nile-loader size=\"sm\"></nile-loader>\n </span>\n `;\n }\n \n if (this.optionsLoading) {\n return html`\n <span part=\"loader\" class=\"select__loader\">\n <nile-icon\n class=\"select__loader--icon\"\n name=\"button-loading-blue\"\n ></nile-icon>\n </span>\n `;\n }\n \n return html``;\n }\n\n private renderFooter(): TemplateResult {\n return this.multiple\n ? html`\n <div\n part=\"footer\"\n class=\"select__footer ${this.loading ? 'loading' : ''}\"\n @click=\"${this.handleFooterClick}\"\n >\n <span\n @click=\"${this.toggleShowSelected}\"\n style=\"cursor: pointer;\"\n >\n <nile-checkbox\n ?disabled=\"${this.selectedOptions.length === 0}\"\n ?checked=\"${this.showSelected}\"\n >\n &nbsp; Show Selected</nile-checkbox\n >\n </span>\n ${this.selectedOptions.length !== 0\n ? html`\n <span\n class=\"select__clear\"\n @click=\"${this.unSelectAll}\"\n >\n Clear All\n </span>\n `\n : ``}\n </div>\n `\n : html``;\n }\n\n private renderHelpText(hasHelpText: boolean, hasErrorMessage: boolean): TemplateResult {\n return html`\n ${hasHelpText\n ? html` <nile-form-help-text>${this.helpText}</nile-form-help-text> `\n : ``}\n ${hasErrorMessage\n ? html`\n <nile-form-error-message\n >${this.errorMessage}</nile-form-error-message\n >\n `\n : ``}\n `;\n }\n\n getVirtualizedContent(): TemplateResult {\n return VirtualSelectRenderer.getVirtualizedContent(\n this.data,\n this.searchEnabled,\n this.getDisplayText.bind(this),\n this.value,\n this.multiple,\n this.renderItemConfig?.getDisplayText,\n this.renderItemConfig?.getValue,\n this.renderItemConfig?.getDescription,\n this.renderItemConfig?.getPrefix,\n this.renderItemConfig?.getSuffix,\n this.showNoResults,\n this.noResultsMessage,\n this.optionsLoading || this.loading,\n this.handleScroll.bind(this),\n this.allowHtmlLabel,\n this.enableDescription,\n this.tickOnSelect,\n this.legacy\n );\n }\n\n nileInput(value: any): void {\n this.emit('nile-input', value);\n }\n\n nileChange(value: any): void {\n this.emit('nile-change', value);\n }\n\n private updateValidity(): void {\n this.updateComplete.then(() => {\n this.formControlController.updateValidity();\n });\n }\n\n private calculateWidthOfSelectTagsDiv(): number | null {\n if (this.shadowRoot) {\n const selectTagsDiv = this.shadowRoot.querySelector('.select__tags') as HTMLElement;\n if (selectTagsDiv) {\n const width = selectTagsDiv.offsetWidth;\n return width - 70;\n }\n }\n return null;\n }\n\n private calculateTotalWidthOfTags(): void {\n if (this.maxOptionsVisible !== Infinity) {\n this.oldMaxOptionsVisible = this.maxOptionsVisible;\n }\n\n this.maxOptionsVisible = Infinity;\n setTimeout(() => {\n let widths: number[] = [];\n if (this.shadowRoot) {\n const tags = this.shadowRoot.querySelectorAll('nile-tag');\n tags.forEach(tag => {\n if (tag instanceof HTMLElement) {\n widths.push(tag.offsetWidth);\n }\n });\n }\n if (this.value.length !== widths.length) {\n return;\n }\n\n let sum = widths.reduce(\n (accumulator, currentValue) => accumulator + currentValue,\n 0\n );\n const widthOfSelectTagsDiv = this.calculateWidthOfSelectTagsDiv();\n if (!widthOfSelectTagsDiv) {\n return;\n }\n\n let summ = 0;\n let lastindex = 0;\n\n for (let i = 0; i < widths.length; i++) {\n summ += widths[i];\n\n if (summ > widthOfSelectTagsDiv) {\n lastindex = i;\n break;\n }\n }\n this.maxOptionsVisible = lastindex;\n }, 1);\n }\n\n private async resetScrollPosition(): Promise<void> {\n await this.portalManager.resetScrollPosition();\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\n"],"names":["h","i","this","_$AN","o","_$AM","r","n","t","arguments","length","undefined","e","_$AH","size","Array","isArray","s","setters","_tslib","_iterator","_createForOfIteratorHelper","_step","done","_$AO","err","f","_n","Set","has","add","c","type","CHILD","_$AP","_$AQ","A","super","_this","_inherits","_k","_createClass","key","value","_$AT","isConnected","_$AU","_this$reconnected","_this$disconnected","reconnected","disconnected","setValue","strings","_$Ct","_$AI","_$Ci","_export","q","target","config","callback","skipInitial","l","window","ResizeObserver","u","handleChanges","requestUpdate","addController","console","warn","hostConnected","_iterator2","_step2","observe","hostDisconnected","disconnect","_hostUpdated","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_callee$","_context2","prev","next","stop","hostUpdated","unobserve","_A","_class","observing","_this3","render","update","controller","part","element","_this$controller2","NileVirtualSelect","F","constructor","formControlController","FormControlController","assumeInteractionOn","hasSlotController","HasSlotController","portalManager","PortalManager","hasFocus","displayLabel","selectedOptions","oldValue","scrolling","name","data","originalOptionItems","defaultValue","placeholder","autoResize","searchValue","searchEnabled","enableVisibilityEffect","internalSearchPlaceHolder","disableLocalSearch","optionsLoading","loading","multiple","helpText","errorMessage","warning","error","success","disabled","clearable","open","hoist","filled","pill","label","placement","form","required","showNoResults","noResultsMessage","showSelected","blockValueChange","noWidthSync","portal","maxOptionsVisible","oldMaxOptionsVisible","enableTabClose","descriptionSearchEnabled","allowHtmlLabel","enableDescription","legacy","tickOnSelect","showListbox","wasShowSelectedCheckedOnClose","handleDocumentMouseDown","event","path","composedPath","hitSelf","includes","hitPopup","popup","hitPortalAppend","portalContainerElement","hide","handleWindowError","message","preventDefault","handleWindowResize","updatePortalAppendPosition","handleWindowScroll","resizeController","ResizeController","entries","_iterator3","_step3","entry","classList","contains","calculateTotalWidthOfTags","_this4","_u","get","_this$valueInput","valueInput","validity","_this$valueInput$vali","_this$valueInput2","validationMessage","connectedCallback","initializeComponent","setupEventListeners","updateComplete","then","selectionChanged","disconnectedCallback","removeOpenListeners","visibilityManager","cleanup","scrollTimeout","clearTimeout","cleanupPortalAppend","updated","changedProperties","_this$shadowRoot","tagsDiv","shadowRoot","querySelector","emit","getDisplayText","item","_this$renderItemConfi","renderItemConfig","toString","getItemValue","_this$renderItemConfi2","getValue","getItemDescription","getDescription","description","getItemPrefix","_this$renderItemConfi4","getPrefix","prefix","getItemSuffix","getSuffix","suffix","getSearchText","_this$renderItemConfi6","handleDocumentFocusIn","bind","handleDocumentKeyDown","addOpenListeners","document","addEventListener","removeEventListener","handleFocus","handleBlur","firstUpdated","_changed","VisibilityManager","host","combobox","isOpen","onAnchorOutOfView","visible","reason","onDocumentHidden","detail","concat","shouldIgnoreKeyPress","isEscapeKey","handleEscapeKey","isEnterOrSpaceKey","handleEnterOrSpaceKey","isClearButton","closest","isIconButton","stopPropagation","displayInput","focus","preventScroll","stopImmediatePropagation","show","handleFooterClick","toggleShowSelected","_this$selectedOptions","_this7","selectedValues","filter","itemValue","some","val","String","_toConsumableArray","resetMeasuredHeight","repaintOptionsContainer","unSelectAll","resetScrollPosition","handleLabelClick","handleComboboxMouseDown","shouldIgnoreComboboxClick","el","Element","tagName","toLowerCase","handleComboboxKeyDown","handleClearClick","clearSelection","nileInput","nileChange","handleClearMouseDown","handleOptionClick","option","shouldBlockValueChange","handleOptionSelection","_this9","optionValue","toggleOptionSelection","setSelectedOptions","currentValues","v","handleTagRemove","removeTagFromSelection","emitTagRemovalEvent","currentValue","newValue","removedtagvalue","itemsToSearch","VirtualSelectSelectionManager","createVirtualOptionsFromValues","_this$selectedOptions2","getTextLabel","updateValidity","handleSearchFocus","handleSearchBlur","handleSearchChange","query","filterVirtualOptions","_this11$shadowRoot","virtualized","remove","handleScroll","_this12","scrollTop","scrollLeft","setTimeout","Math","ceil","floor","scrollHeight","offsetHeight","isAtBottom","result","VirtualSelectSearchManager","requestAnimationFrame","filteredItems","handleInvalid","setValidity","emitInvalidEvent","handleDisabledChange","handleOpenChange","handleValueChange","handleDataChange","handleRenderItemConfigChange","handleOptionsLoadingChange","handlePortalAppendChange","setupPortalAppend","_handleOpenChange","_callee2","_this$visibilityManag2","_this$visibilityManag3","_callee2$","_context3","setup","handleOpen","handleClose","_callee3","_this$data","_this$popup","_this$popup2","_h","_callee3$","_context4","stopAnimations","style","visibility","active","Promise","resolve","getAnimation","dir","keyframes","options","animateTo","_callee4","_this$popup3","_h2","_callee4$","_context5","_callee5","_callee5$","_context6","abrupt","waitForEvent","_callee6","_callee6$","_context7","checkValidity","getForm","reportValidity","setCustomValidity","blur","onInputChange","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$renderItemConfi9","_this$renderItemConfi10","_this$renderItemConfi11","_this$renderItemConfi12","_this$renderItemConfi13","VirtualSelectRenderer","calculateWidthOfSelectTagsDiv","selectTagsDiv","offsetWidth","widths","querySelectorAll","forEach","tag","HTMLElement","push","widthOfSelectTagsDiv","summ","lastindex","_resetScrollPosition","_callee7","_callee7$","_context8","NileElement","styles","__decorate","prototype","state","property","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,2]}
1
+ {"version":3,"file":"nile-virtual-select.cjs.js","sources":["../../../../node_modules/lit-html/async-directive.js","../../../../node_modules/lit-html/directive-helpers.js","../../../../node_modules/@lit-labs/observers/resize-controller.js","../../../src/nile-virtual-select/nile-virtual-select.ts"],"sourcesContent":["import{isSingleExpression as i}from\"./directive-helpers.js\";import{Directive as t,PartType as e}from\"./directive.js\";export{directive}from\"./directive.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const s=(i,t)=>{const e=i._$AN;if(void 0===e)return!1;for(const i of e)i._$AO?.(t,!1),s(i,t);return!0},o=i=>{let t,e;do{if(void 0===(t=i._$AM))break;e=t._$AN,e.delete(i),i=t}while(0===e?.size)},r=i=>{for(let t;t=i._$AM;i=t){let e=t._$AN;if(void 0===e)t._$AN=e=new Set;else if(e.has(i))break;e.add(i),c(t)}};function h(i){void 0!==this._$AN?(o(this),this._$AM=i,r(this)):this._$AM=i}function n(i,t=!1,e=0){const r=this._$AH,h=this._$AN;if(void 0!==h&&0!==h.size)if(t)if(Array.isArray(r))for(let i=e;i<r.length;i++)s(r[i],!1),o(r[i]);else null!=r&&(s(r,!1),o(r));else s(this,i)}const c=i=>{i.type==e.CHILD&&(i._$AP??=n,i._$AQ??=h)};class f extends t{constructor(){super(...arguments),this._$AN=void 0}_$AT(i,t,e){super._$AT(i,t,e),r(this),this.isConnected=i._$AU}_$AO(i,t=!0){i!==this.isConnected&&(this.isConnected=i,i?this.reconnected?.():this.disconnected?.()),t&&(s(this,i),o(this))}setValue(t){if(i(this._$Ct))this._$Ct._$AI(t,this);else{const i=[...this._$Ct._$AH];i[this._$Ci]=t,this._$Ct._$AI(i,this,0)}}disconnected(){}reconnected(){}}export{f as AsyncDirective,t as Directive,e as PartType};\n//# sourceMappingURL=async-directive.js.map\n","import{_$LH as o}from\"./lit-html.js\";\n/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const{I:t}=o,i=o=>null===o||\"object\"!=typeof o&&\"function\"!=typeof o,n={HTML:1,SVG:2,MATHML:3},e=(o,t)=>void 0===t?void 0!==o?._$litType$:o?._$litType$===t,l=o=>null!=o?._$litType$?.h,c=o=>void 0!==o?._$litDirective$,d=o=>o?._$litDirective$,f=o=>void 0===o.strings,s=()=>document.createComment(\"\"),r=(o,i,n)=>{const e=o._$AA.parentNode,l=void 0===i?o._$AB:i._$AA;if(void 0===n){const i=e.insertBefore(s(),l),c=e.insertBefore(s(),l);n=new t(i,c,o,o.options)}else{const t=n._$AB.nextSibling,i=n._$AM,c=i!==o;if(c){let t;n._$AQ?.(o),n._$AM=o,void 0!==n._$AP&&(t=o._$AU)!==i._$AU&&n._$AP(t)}if(t!==l||c){let o=n._$AA;for(;o!==t;){const t=o.nextSibling;e.insertBefore(o,l),o=t}}}return n},v=(o,t,i=o)=>(o._$AI(t,i),o),u={},m=(o,t=u)=>o._$AH=t,p=o=>o._$AH,M=o=>{o._$AP?.(!1,!0);let t=o._$AA;const i=o._$AB.nextSibling;for(;t!==i;){const o=t.nextSibling;t.remove(),t=o}},h=o=>{o._$AR()};export{n as TemplateResultType,h as clearPart,p as getCommittedValue,d as getDirectiveClass,r as insertPart,l as isCompiledTemplateResult,c as isDirectiveResult,i as isPrimitive,f as isSingleExpression,e as isTemplateResult,M as removePart,v as setChildPartValue,m as setCommittedValue};\n//# sourceMappingURL=directive-helpers.js.map\n","import{AsyncDirective as t}from\"lit-html/async-directive.js\";import{directive as s}from\"lit-html/directive.js\";import{isServer as i}from\"lit-html/is-server.js\";class h{constructor(t,{target:s,config:h,callback:e,skipInitial:r}){this.t=new Set,this.o=!1,this.i=!1,this.h=t,null!==s&&this.t.add(s??t),this.l=h,this.o=r??this.o,this.callback=e,i||(window.ResizeObserver?(this.u=new ResizeObserver(t=>{this.handleChanges(t),this.h.requestUpdate()}),t.addController(this)):console.warn(\"ResizeController error: browser does not support ResizeObserver.\"))}handleChanges(t){this.value=this.callback?.(t,this.u)}hostConnected(){for(const t of this.t)this.observe(t)}hostDisconnected(){this.disconnect()}async hostUpdated(){!this.o&&this.i&&this.handleChanges([]),this.i=!1}observe(t){this.t.add(t),this.u.observe(t,this.l),this.i=!0,this.h.requestUpdate()}unobserve(t){this.t.delete(t),this.u.unobserve(t)}disconnect(){this.u.disconnect()}target(t){return e(this,t)}}const e=s(class extends t{constructor(){super(...arguments),this.observing=!1}render(t,s){}update(t,[s,i]){this.controller=s,this.part=t,this.observe=i,!1===i?(s.unobserve(t.element),this.observing=!1):!1===this.observing&&(s.observe(t.element),this.observing=!0)}disconnected(){this.controller?.unobserve(this.part.element),this.observing=!1}reconnected(){!1!==this.observe&&!1===this.observing&&(this.controller?.observe(this.part.element),this.observing=!0)}});export{h 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\n import {\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-lite-tooltip/nile-lite-tooltip';\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 { KeyCode } from '../internal/enum';\nimport { FormControlController } from '../internal/form';\nimport {\n getAnimation,\n setDefaultAnimation,\n} from '../utilities/animation-registry';\nimport { HasSlotController } from '../internal/slot';\nimport { waitForEvent } from '../internal/event';\nimport { watch } from '../internal/watch';\nimport NileElement from '../internal/nile-element';\nimport type { CSSResultGroup, PropertyValues, TemplateResult } from 'lit';\nimport type { NileFormControl } from '../internal/nile-element';\nimport type NileOption from '../nile-option/nile-option';\nimport type NilePopup from '../nile-popup/nile-popup';\nimport { ifDefined } from 'lit/directives/if-defined.js';\n\nimport type { VirtualOption, NileRemoveEvent, RenderItemConfig } from './types.js';\nimport { VirtualSelectSelectionManager } from './selection-manager.js';\nimport { VirtualSelectSearchManager } from './search-manager.js';\nimport { VirtualSelectRenderer } from './renderer.js';\nimport { PortalManager } from './portal-manager.js';\nimport { ResizeController } from '@lit-labs/observers/resize-controller.js';\nimport { VisibilityManager } from '../utilities/visibility-manager.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 tag__base - The tag's base part.\n * @csspart tag__content - The tag's content part.\n * @csspart tag__remove-button - The tag's remove button.\n * @csspart tag__remove-button__base - The tag's remove button base part.\n * @csspart clear-button - The clear button.\n * @csspart expand-icon - The container that wraps the expand icon.\n * @csspart footer - The footer container with show selected and clear all options.\n */\n\n@customElement('nile-virtual-select')\nexport class NileVirtualSelect extends NileElement implements NileFormControl {\n static styles: CSSResultGroup = styles;\n\n private readonly formControlController = new FormControlController(this, {\n assumeInteractionOn: ['nile-blur', 'nile-input'],\n });\n private readonly hasSlotController = new HasSlotController(\n this,\n 'help-text',\n 'label'\n );\n private readonly portalManager = new PortalManager(this);\n\n @query('.select') popup: NilePopup;\n @query('.select__combobox') combobox: HTMLElement;\n @query('.select__display-input') displayInput: HTMLInputElement;\n @query('.select__value-input') valueInput: HTMLInputElement;\n @query('.virtualized') virtualizedContainer: HTMLElement;\n\n @state() private hasFocus = false;\n @state() displayLabel = '';\n @state() selectedOptions: VirtualOption[] = [];\n @state() oldValue: string | string[] = '';\n \n private scrollTimeout: number | undefined;\n private scrolling = false;\n private visibilityManager?: VisibilityManager;\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 /** Re-runs the fitted-chip layout when the control's own width changes. */\n @property({ type: Boolean, attribute: true, reflect: true }) 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 @property({ type: Boolean, reflect: true, attribute: true }) enableVisibilityEffect = false;\n\n /** Search input placeholder */\n @property({attribute:'internal-search-placeholder'}) internalSearchPlaceHolder = 'Search...';\n\n /** Disable local search filtering */\n @property({ type: Boolean, reflect: true }) disableLocalSearch = false;\n\n /** Show loading state */\n @property({ type: Boolean, reflect: true }) optionsLoading = false;\n\n /** Show loading state using nile-loader */\n @property({ type: Boolean, reflect: true, attribute: true }) loading = false;\n\n /** Allows more than one option to be selected. */\n @property({ type: Boolean, reflect: true }) multiple = false;\n\n /** Help text */\n @property({ attribute: 'help-text', reflect: true }) helpText = '';\n\n /** Error message */\n @property({ attribute: 'error-message', reflect: true }) errorMessage = '';\n\n /** Sets the input to a warning state */\n @property({ type: Boolean }) warning = false;\n\n /** Sets the input to an error state */\n @property({ type: Boolean }) error = false;\n\n /** Sets the input to a success state */\n @property({ type: Boolean }) success = false;\n\n /** Disables the select control. */\n @property({ type: Boolean, reflect: true }) disabled = false;\n\n /** Adds a clear button when the select is not empty. */\n @property({ type: Boolean, reflect: true }) clearable = false;\n\n /** The select's open state. */\n @property({ type: Boolean, reflect: true }) open = false;\n\n /**\n * Enable this option to prevent the listbox from being clipped when the component is placed inside a container with\n * `overflow: auto|scroll`. Hoisting uses a fixed positioning strategy that works in many, but not all, scenarios.\n */\n @property({ type: Boolean }) hoist = false;\n\n /** Draws a filled select. */\n @property({ type: Boolean, reflect: true }) filled = false;\n\n /** Draws a pill-style select with rounded edges. */\n @property({ type: Boolean, reflect: true }) pill = false;\n\n /** The select's label. If you need to display HTML, use the `label` slot instead. */\n @property() label = '';\n\n /**\n * The preferred placement of the select's menu. Note that the actual placement may vary as needed to keep the listbox\n * inside of the viewport.\n */\n @property({ reflect: true }) placement: 'top' | 'bottom' = 'bottom';\n\n /**\n * By default, form controls are associated with the nearest containing `<form>` element. This attribute allows you\n * to place the form control outside of a form and associate it with the form that has this `id`. The form must be in\n * the same document or shadow root for this to work.\n */\n @property({ reflect: true }) form = '';\n\n /** The select's required attribute. */\n @property({ type: Boolean, reflect: true }) required = false;\n\n /** Show no results message */\n @property({ type: Boolean }) showNoResults: boolean = false;\n\n /** No results message */\n @property({ type: String }) noResultsMessage: string = 'No results found';\n\n /** Show selected options only */\n @property({ type: Boolean }) showSelected = false;\n\n /** Enhanced configuration for rendering items with support for display text, value, and search text */\n @property({ attribute:false}) renderItemConfig?: RenderItemConfig;\n\n /** Block value change events */\n @property({ type: Boolean, reflect: true }) blockValueChange = false;\n\n /** Disable width synchronization */\n @property({ type: Boolean, reflect: true }) noWidthSync = false;\n\n /** \n * When true, the listbox will be appended to the document body instead of the parent container.\n * This is useful when the parent has overflow: hidden, clip-path, or transform applied.\n */\n @property({ type: Boolean, reflect: true }) portal = false;\n\n /**\n * The maximum number of selected options to show when `multiple` is true. After the maximum, \"+n\" will be shown to\n * indicate the number of additional items that are selected. Set to 0 to remove the limit.\n */\n private _maxOptionsVisible = 3;\n\n private maxOptionsVisibleExplicit = false;\n\n @property({ attribute: 'max-options-visible', type: Number })\n get maxOptionsVisible(): number {\n return this._maxOptionsVisible;\n }\n\n set maxOptionsVisible(value: number) {\n const previous = this._maxOptionsVisible;\n this._maxOptionsVisible = value;\n // Any assignment opts this instance out of automatic chip fitting.\n this.maxOptionsVisibleExplicit = true;\n this.requestUpdate('maxOptionsVisible', previous);\n }\n\n private get chipFittingEnabled(): boolean {\n return !!this.multiple && !this.maxOptionsVisibleExplicit;\n }\n\n /** Minimum width, in px, of a squeezed chip. Needs `showtooltip`. */\n @property({ type: Number, reflect: true, attribute: true }) chipMinWidth = 110;\n\n /** Maximum width, in px, of a squeezed chip. Needs `showtooltip`. */\n @property({ type: Number, reflect: true, attribute: true }) chipMaxWidth = 180;\n\n /**\n * Shows a chip's full value in a tooltip when its text is clipped, and is\n * what allows a chip to be truncated at all.\n */\n @property({ type: Boolean, attribute: true, reflect: true }) showTooltip = false;\n\n\n @state() private hiddenChipCount = 0;\n\n /** Last measured width of the overflow button, in px. */\n private lastOverflowWidth = 0;\n\n private chipFitFrame = 0;\n private lastChipLayout = { hidden: -1, visible: -1 };\n @state() private clippedChips: boolean[] = [];\n private clipFrame = 0;\n\n @property({ type: Boolean, reflect: true, attribute: true }) enableTabClose = false;\n\n @property({ type: Boolean, reflect: true, attribute: true }) descriptionSearchEnabled = false;\n\n @property({\n type: Boolean,\n reflect: true,\n attribute: true,\n converter: {\n fromAttribute: (value) => value === 'true',\n toAttribute: (value) => String(value),\n },\n }) allowHtmlLabel = true;\n\n @property({ type: Boolean, reflect: true, attribute: true }) enableDescription = false;\n\n /** Legacy: hide the option checkbox (the \"Show Selected\" footer is kept). */\n @property({ type: Boolean, reflect: true }) legacy = false;\n\n /** Variant: show a tick on the right of the selected option (single-select). */\n @property({ type: Boolean, reflect: true, attribute: true }) tickOnSelect = false;\n\n @state() showListbox: boolean = false;\n @state() private wasShowSelectedCheckedOnClose: boolean = false;\n\n /** Gets the validity state object */\n get validity() {\n return this.valueInput?.validity;\n }\n\n /** Gets the validation message */\n get validationMessage() {\n return this.valueInput?.validationMessage ?? '';\n }\n\n connectedCallback() {\n super.connectedCallback();\n this.initializeComponent();\n this.setupEventListeners();\n \n this.updateComplete.then(() => {\n if (this.value && this.data.length > 0) {\n this.selectionChanged();\n }\n });\n }\n\n disconnectedCallback() {\n this.removeOpenListeners();\n this.visibilityManager?.cleanup();\n // Clear any pending scroll timeout to prevent memory leaks\n if (this.scrollTimeout) {\n clearTimeout(this.scrollTimeout);\n this.scrollTimeout = undefined;\n }\n // Clean up body append elements\n this.portalManager.cleanupPortalAppend();\n this.destroyChipFit();\n }\n\n protected updated(changedProperties: PropertyValues): void {\n if(changedProperties.has('value')) {\n this.selectionChanged();\n }\n if (\n changedProperties.has('autoResize') ||\n changedProperties.has('multiple') ||\n changedProperties.has('maxOptionsVisible')\n ) {\n this.setupResizeObserver();\n }\n if (\n changedProperties.has('chipMinWidth') ||\n changedProperties.has('chipMaxWidth')\n ) {\n this.destroyChipFit();\n }\n if (this.chipFittingEnabled) {\n this.calculateTotalWidthOfTags();\n }\n if (this.multiple && this.showTooltip) {\n this.scheduleClipCheck();\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 description for an item using renderItemConfig or fallback to item.description\n */\n private getItemDescription(item: any): string {\n if (this.renderItemConfig?.getDescription) {\n return this.renderItemConfig.getDescription(item);\n }\n return item?.description || item || '';\n }\n\n /**\n * Get description for an item using renderItemConfig or fallback to item.description\n */\n private getItemPrefix(item: any): string {\n if (this.renderItemConfig?.getPrefix) {\n return this.renderItemConfig.getPrefix(item);\n }\n return item?.prefix || item || '';\n }\n\n /**\n * Get suffix for an item using renderItemConfig or fallback to item.suffix\n */\n private getItemSuffix(item: any): string {\n if (this.renderItemConfig?.getSuffix) {\n return this.renderItemConfig.getSuffix(item);\n }\n return item?.suffix || item || '';\n }\n\n /**\n * Get search text for an item using renderItemConfig or fallback to display text\n */\n private getSearchText(item: any): string {\n if (this.renderItemConfig?.getSearchText) {\n return this.renderItemConfig.getSearchText(item);\n }\n return this.getDisplayText(item);\n }\n\n private setupEventListeners(): void {\n this.handleDocumentFocusIn = this.handleDocumentFocusIn.bind(this);\n this.handleDocumentKeyDown = this.handleDocumentKeyDown.bind(this);\n this.handleDocumentMouseDown = this.handleDocumentMouseDown.bind(this);\n this.handleWindowError = this.handleWindowError.bind(this);\n this.handleWindowResize = this.handleWindowResize.bind(this);\n this.handleWindowScroll = this.handleWindowScroll.bind(this);\n }\n\n private addOpenListeners(): void {\n document.addEventListener('focusin', this.handleDocumentFocusIn);\n document.addEventListener('keydown', this.handleDocumentKeyDown);\n document.addEventListener('mousedown', this.handleDocumentMouseDown);\n window.addEventListener('error', this.handleWindowError);\n \n if (this.portal) {\n window.addEventListener('resize', this.handleWindowResize);\n window.addEventListener('scroll', this.handleWindowScroll, true);\n }\n }\n\n private removeOpenListeners(): void {\n document.removeEventListener('focusin', this.handleDocumentFocusIn);\n document.removeEventListener('keydown', this.handleDocumentKeyDown);\n document.removeEventListener('mousedown', this.handleDocumentMouseDown);\n window.removeEventListener('error', this.handleWindowError);\n window.removeEventListener('resize', this.handleWindowResize);\n window.removeEventListener('scroll', this.handleWindowScroll, true);\n }\n\n private handleFocus(): void {\n this.hasFocus = true;\n this.emit('nile-focus');\n }\n\n private handleBlur(): void {\n this.hasFocus = false;\n this.emit('nile-blur');\n }\n\n \n protected firstUpdated(_changed: PropertyValues) {\n this.visibilityManager = new VisibilityManager({\n host: this,\n target: this.combobox, \n enableVisibilityEffect: this.enableVisibilityEffect,\n enableTabClose: this.enableTabClose,\n isOpen: () => this.open,\n onAnchorOutOfView: () => {\n this.hide();\n this.emit('nile-visibility-change', {\n visible: false,\n reason: 'anchor-out-of-view',\n name: this.name,\n });\n },\n onDocumentHidden: () => {\n this.hide();\n this.emit('nile-visibility-change', {\n visible: false,\n reason: 'document-hidden',\n name: this.name,\n });\n },\n emit: (event, detail) => this.emit(`nile-${event}`, detail),\n });\n }\n \n \n\n\n private handleDocumentFocusIn(event: FocusEvent): void {\n if (!this.open) return; \n const path = event.composedPath(); \n const hitSelf = path.includes(this);\n const hitPopup = this.popup && path.includes(this.popup);\n const hitPortalAppend = this.portal && this.portalManager.portalContainerElement && path.includes(this.portalManager.portalContainerElement);\n\n if (!hitSelf && !hitPopup && !hitPortalAppend) {\n this.hide();\n }\n }\n\n private handleDocumentKeyDown(event: KeyboardEvent): void {\n if (this.shouldIgnoreKeyPress(event)) {\n return;\n }\n\n if (this.isEscapeKey(event)) {\n this.handleEscapeKey(event);\n }\n\n if (this.isEnterOrSpaceKey(event)) {\n this.handleEnterOrSpaceKey(event);\n }\n }\n\n private shouldIgnoreKeyPress(event: KeyboardEvent): boolean {\n const target = event.target as HTMLElement;\n const isClearButton = target.closest('.select__clear') !== null;\n const isIconButton = target.closest('nile-icon-button') !== null;\n return isClearButton || isIconButton;\n }\n\n private isEscapeKey(event: KeyboardEvent): boolean {\n return event.key === 'Escape' && this.open;\n }\n\n private handleEscapeKey(event: KeyboardEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this.hide();\n this.displayInput.focus({ preventScroll: true });\n }\n\n private isEnterOrSpaceKey(event: KeyboardEvent): boolean {\n return event.key === 'Enter' || event.key === ' ';\n }\n\n private handleEnterOrSpaceKey(event: KeyboardEvent): void {\n event.preventDefault();\n event.stopImmediatePropagation();\n\n if (!this.open) {\n this.show();\n return;\n }\n\n if (!this.multiple) {\n this.hide();\n this.displayInput.focus({ preventScroll: true });\n }\n }\n\n private handleDocumentMouseDown = (event: MouseEvent): void => {\n if (!this.open) return; \n \n const path = event.composedPath();\n const hitSelf = path.includes(this);\n const hitPopup = this.popup && path.includes(this.popup);\n const hitPortalAppend = this.portal && this.portalManager.portalContainerElement && path.includes(this.portalManager.portalContainerElement);\n \n if (!hitSelf && !hitPopup && !hitPortalAppend) {\n this.hide();\n }\n };\n\n /**\n * This is a workaround for an error in the Lit Labs virtualizer.\n * Since there are no specific guidelines available to fix the issue,\n * we are catching only the error message related to the virtualizer.\n */\n private handleWindowError = (event: ErrorEvent): void => {\n const errorMessage = event.error?.message || event.message || '';\n if (errorMessage.includes('Cannot read properties of null (reading \\'insertBefore\\')')) {\n event.preventDefault();\n return;\n }\n };\n\n private handleWindowResize = (): void => {\n this.portalManager.updatePortalAppendPosition();\n };\n\n private handleWindowScroll = (): void => {\n this.portalManager.updatePortalAppendPosition();\n };\n\n private handleFooterClick(event: MouseEvent): void {\n event.stopPropagation();\n event.preventDefault();\n }\n\n private toggleShowSelected(event: Event): void {\n event.stopPropagation();\n event.preventDefault();\n if (this.selectedOptions?.length === 0) {\n return;\n }\n this.showSelected = !this.showSelected;\n\n if (this.showSelected) {\n this.searchValue = \"\";\n const selectedValues = Array.isArray(this.value) ? this.value : [this.value];\n this.data = this.originalOptionItems.filter((item: any) => {\n const itemValue = this.getItemValue(item);\n return selectedValues.some(val => String(val) === String(itemValue));\n });\n } else {\n this.data = [...this.originalOptionItems];\n }\n\n // Reset measured height when show selected toggles (content height may change)\n this.portalManager.resetMeasuredHeight();\n\n this.requestUpdate();\n this.repaintOptionsContainer();\n }\n\n private unSelectAll(): void {\n this.showSelected = false;\n this.value = this.multiple ? [] : '';\n this.data = [...this.originalOptionItems];\n this.selectionChanged();\n this.emit('nile-change', { value: this.value, name: this.name });\n this.emit('nile-clear', { value: this.multiple ? this.value : '', name: this.name });\n this.resetScrollPosition();\n }\n\n private handleLabelClick(): void {\n this.displayInput.focus();\n this.hide();\n }\n\n private handleComboboxMouseDown(event: MouseEvent): void {\n if (this.shouldIgnoreComboboxClick(event)) {\n return;\n }\n\n event.preventDefault();\n this.displayInput.focus({ preventScroll: true });\n this.open = !this.open;\n }\n\n private observedTagsContainer?: Element;\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 const isOverflowButton = path.some(\n el =>\n el instanceof HTMLButtonElement &&\n el.classList.contains('select__tags-count')\n );\n return this.disabled || isIconButton || isOverflowButton;\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 this.allowHtmlLabel\n );\n\n if (this.multiple) {\n if (this.placeholder && this.value.length === 0) {\n this.displayLabel = '';\n } else {\n this.displayLabel = this.selectedOptions.length + ' selected';\n }\n } else {\n const currentValue = Array.isArray(this.value) ? this.value[0] : this.value;\n const label = this.selectedOptions[0]?.getTextLabel();\n this.displayLabel = label ? label : currentValue ?? '';\n }\n\n this.updateValidity();\n\n if (this.selectedOptions.length === 0) {\n this.showSelected = false;\n if(this.originalOptionItems?.length > 0 && !this.searchValue) {\n this.data = [...this.originalOptionItems];\n }\n this.repaintOptionsContainer();\n }\n\n this.calculateTotalWidthOfTags();\n }\n \n\n handleSearchFocus(): void {\n document.removeEventListener('keydown', this.handleDocumentKeyDown);\n }\n\n handleSearchBlur(): void {\n document.addEventListener('keydown', this.handleDocumentKeyDown);\n }\n\n handleSearchChange(e: any): void {\n this.searchValue = e.detail.value;\n if (this.portal) {\n this.portalManager.updatePortalAppendPosition();\n }\n \n this.emit('nile-search', { \n query: this.searchValue,\n name: this.name \n });\n \n if (!this.disableLocalSearch) {\n this.filterVirtualOptions(this.searchValue);\n this.repaintOptionsContainer();\n \n // Reset measured height when search changes (content height may change)\n this.portalManager.resetMeasuredHeight();\n }\n }\n \n repaintOptionsContainer() {\n this.resetScrollPosition();\n this.updateComplete.then(() => {\n const virtualized = this.shadowRoot?.querySelector('.virtualized') as HTMLElement;\n if (virtualized) {\n if (this.data.length < 5) {\n virtualized.classList.add('no-scroll');\n } else {\n virtualized.classList.remove('no-scroll');\n }\n }\n });\n }\n\n handleScroll(e: Event): void {\n if(this.showSelected) {\n return;\n }\n\n const target = e.target as HTMLElement;\n \n this.emit('nile-scroll', {\n scrollTop: target.scrollTop,\n scrollLeft: target.scrollLeft,\n name: this.name\n });\n\n if (!this.scrolling) {\n this.scrolling = true;\n this.emit('nile-scroll-start', {\n scrollTop: target.scrollTop,\n scrollLeft: target.scrollLeft,\n name: this.name\n });\n }\n\n clearTimeout(this.scrollTimeout);\n this.scrollTimeout = window.setTimeout(() => {\n if (this.scrolling) {\n this.scrolling = false;\n }\n }, 300);\n\n const isAtBottom = Math.ceil(target.scrollTop) >= Math.floor(target.scrollHeight - target.offsetHeight);\n if (isAtBottom && !this.searchValue) {\n this.emit('nile-scroll-end', {\n scrollTop: target.scrollTop,\n scrollLeft: target.scrollLeft,\n name: this.name,\n isAtBottom: true\n });\n }\n }\n\n filterVirtualOptions(searchValue: string): void {\n const result = VirtualSelectSearchManager.filterVirtualOptions(\n searchValue,\n this.originalOptionItems,\n this.data,\n this.getDisplayText.bind(this),\n this.getItemDescription.bind(this),\n this.descriptionSearchEnabled,\n this.renderItemConfig?.getSearchText\n );\n if (this.portal) {\n this.portalManager.updatePortalAppendPosition();\n this.updateComplete.then(() => {\n requestAnimationFrame(() => {\n this.resetScrollPosition();\n });\n });\n } else {\n this.resetScrollPosition();\n }\n this.data = result.filteredItems;\n this.showNoResults = result.showNoResults;\n this.showSelected = false;\n this.requestUpdate();\n }\n\n private handleInvalid(event: Event): void {\n this.formControlController.setValidity(false);\n this.formControlController.emitInvalidEvent(event);\n }\n\n @watch('disabled', { waitUntilFirstUpdate: true })\n handleDisabledChange(): void {\n if (this.disabled) {\n this.open = false;\n this.handleOpenChange();\n }\n }\n\n \n @watch('value', { waitUntilFirstUpdate: true })\n handleValueChange(): void {\n this.selectionChanged();\n this.requestUpdate();\n \n // Update body append content if it's active\n if (this.portal && this.portalManager.portalContainerElement) {\n this.portalManager.updatePortalAppendPosition();\n }\n }\n\n @watch('data', { waitUntilFirstUpdate: true })\n handleDataChange(): void {\n if (this.data.length > 0 && this.open && !this.showSelected && !this.searchValue) {\n this.originalOptionItems = [...this.data];\n }\n this.selectionChanged();\n // Show no results message when data is empty and not loading\n if (!this.optionsLoading && !this.loading && this.data.length === 0) {\n this.showNoResults = true;\n } else if (this.data.length > 0) {\n this.showNoResults = false;\n }\n this.requestUpdate();\n \n // Reset measured height when data changes (content height may change)\n this.portalManager.resetMeasuredHeight();\n \n // Update body append content if it's active\n if (this.portal && this.portalManager.portalContainerElement) {\n this.portalManager.updatePortalAppendPosition();\n }\n }\n\n @watch('renderItemConfig', { waitUntilFirstUpdate: true })\n handleRenderItemConfigChange(): void {\n if (this.value && this.data.length > 0) {\n this.selectionChanged();\n this.requestUpdate();\n }\n }\n\n @watch('optionsLoading', { waitUntilFirstUpdate: true })\n handleOptionsLoadingChange(): void {\n // Show no results message when loading stops and there are no results\n if (!this.optionsLoading && this.data.length === 0) {\n this.showNoResults = true;\n }\n this.requestUpdate();\n \n // Update body append content if it's active\n if (this.portal && this.portalManager.portalContainerElement) {\n this.portalManager.updatePortalAppendPosition();\n }\n }\n\n @watch('portal', { waitUntilFirstUpdate: true })\n handlePortalAppendChange(): void {\n if (this.open) {\n if (this.portal) {\n this.portalManager.setupPortalAppend();\n } else {\n this.portalManager.cleanupPortalAppend();\n }\n }\n }\n\n @watch('open', { waitUntilFirstUpdate: true })\n async handleOpenChange(): Promise<void> {\n if (this.open && !this.disabled) {\n this.visibilityManager?.setup();\n this.showListbox = true;\n await this.updateComplete;\n await this.handleOpen();\n \n if (this.portal) {\n this.portalManager.setupPortalAppend();\n }\n } else {\n this.visibilityManager?.cleanup();\n await this.handleClose();\n this.showListbox = false;\n \n if (this.portal) {\n this.portalManager.cleanupPortalAppend();\n }\n }\n }\n\n private async handleOpen(): Promise<void> {\n this.emit('nile-show', { value: this.value, name: this.name });\n this.addOpenListeners();\n this.showNoResults = !this.data?.length;\n\n await stopAnimations(this);\n \n // Hide popup initially to prevent flickering during positioning calculation\n // This allows content to be measured while invisible\n if (this.popup?.popup) {\n this.popup.popup.style.visibility = 'hidden';\n }\n \n this.popup.active = true;\n \n // Wait for positioning to complete before showing the popup\n await new Promise(resolve => requestAnimationFrame(resolve));\n // Wait for next frame to allow Floating UI to calculate position\n await new Promise(resolve => requestAnimationFrame(resolve));\n \n // Show popup after positioning is calculated\n if (this.popup?.popup) {\n this.popup.popup.style.visibility = '';\n }\n\n const { keyframes, options } = getAnimation(this, 'select.show', {\n dir: 'ltr',\n });\n await animateTo(this.popup.popup, keyframes, options);\n\n if (this.wasShowSelectedCheckedOnClose) {\n this.showSelected = false;\n this.data = [...this.originalOptionItems];\n this.wasShowSelectedCheckedOnClose = false;\n }\n \n this.filterVirtualOptions(\"\");\n this.resetScrollPosition();\n this.emit('nile-after-show', { value: this.value, name: this.name });\n }\n\n private async handleClose(): Promise<void> {\n this.emit('nile-hide', { value: this.value, name: this.name });\n this.removeOpenListeners();\n\n this.wasShowSelectedCheckedOnClose = this.showSelected;\n\n await stopAnimations(this);\n const { keyframes, options } = getAnimation(this, 'select.hide', {\n dir: 'ltr',\n });\n await animateTo(this.popup.popup, keyframes, options);\n this.popup.active = false;\n \n // Reset visibility style when closing\n if (this.popup?.popup) {\n this.popup.popup.style.visibility = '';\n }\n\n this.searchValue = '';\n \n // Reset measured height when popup closes (content may change on next open)\n this.portalManager.resetMeasuredHeight();\n \n this.emit('nile-after-hide', { value: this.value, name: this.name });\n }\n\n async show(): Promise<unknown> {\n if (this.open || this.disabled) {\n this.open = false;\n return undefined;\n }\n\n this.open = true;\n return waitForEvent(this, 'nile-after-show');\n }\n\n async hide(): Promise<unknown> {\n if (!this.open || this.disabled) {\n this.open = false;\n return undefined;\n }\n\n this.open = false;\n return waitForEvent(this, 'nile-after-hide');\n }\n\n checkValidity(): boolean {\n return this.valueInput.checkValidity();\n }\n\n getForm(): HTMLFormElement | null {\n return this.formControlController.getForm();\n }\n\n reportValidity(): boolean {\n return this.valueInput.reportValidity();\n }\n\n setCustomValidity(message: string): void {\n this.valueInput.setCustomValidity(message);\n this.formControlController.updateValidity();\n }\n\n focus(options?: FocusOptions): void {\n this.displayInput.focus(options);\n }\n\n blur(): void {\n this.displayInput.blur();\n }\n\n onInputChange(event: Event): void {\n event.stopPropagation();\n }\n\n render(): TemplateResult {\n const hasLabelSlot = this.hasSlotController.test('label');\n const hasHelpTextSlot = this.hasSlotController.test('help-text');\n const hasLabelSuffixSlot = this.hasSlotController.test('label-suffix');\n const hasCustomSelect = this.hasSlotController.test('custom-select');\n const hasLabel = this.label ? true : !!hasLabelSlot;\n const hasClearIcon =\n this.clearable && !this.disabled && this.value.length > 0;\n const isPlaceholderVisible = !!this.placeholder && this.value.length === 0;\n const hasHelpText = !!this.helpText;\n const hasErrorMessage = !!this.errorMessage;\n\n return html`\n <div\n part=\"form-control\"\n class=${classMap({\n 'form-control': true,\n 'form-control--small': this.size === 'small',\n 'form-control--medium': this.size === 'medium',\n 'form-control--large': this.size === 'large',\n 'form-control--has-label': hasLabel,\n 'form-control--has-help-text': hasHelpText,\n })}\n >\n ${this.renderLabel(hasLabel, hasLabelSuffixSlot)}\n ${this.renderFormControlInput(hasCustomSelect, hasClearIcon, isPlaceholderVisible, hasHelpText, hasErrorMessage)}\n </div>\n `;\n }\n\n private renderLabel(hasLabel: boolean, hasLabelSuffixSlot: boolean): TemplateResult {\n return html`\n <label\n id=\"label\"\n part=\"form-control-label\"\n class=\"form-control__label\"\n aria-hidden=${hasLabel ? 'false' : 'true'}\n @click=${this.handleLabelClick}\n >\n <slot name=\"label\">${this.label}</slot>\n </label>\n\n ${hasLabelSuffixSlot ? html` <slot name=\"label-suffix\"></slot> ` : ``}\n `;\n }\n\n private renderFormControlInput(\n hasCustomSelect: boolean, \n hasClearIcon: boolean, \n isPlaceholderVisible: boolean, \n hasHelpText: boolean, \n hasErrorMessage: boolean\n ): TemplateResult {\n return html`\n <div part=\"form-control-input\" class=\"form-control-input\">\n ${this.renderPopup(hasCustomSelect, hasClearIcon, isPlaceholderVisible)}\n ${this.renderHelpText(hasHelpText, hasErrorMessage)}\n </div>\n `;\n }\n\n private renderPopup(hasCustomSelect: boolean, hasClearIcon: boolean, isPlaceholderVisible: boolean): TemplateResult {\n return html`\n <nile-popup\n class=${classMap({\n select: true,\n 'select--warning': this.warning,\n 'select--error': this.error,\n 'select--success': this.success,\n 'select--standard': true,\n 'select--filled': this.filled,\n 'select--pill': this.pill,\n 'select--open': this.open,\n 'select--disabled': this.disabled,\n 'select--multiple': this.multiple,\n 'select--focused': this.hasFocus,\n 'select--placeholder-visible': isPlaceholderVisible,\n 'select--top': this.placement === 'top',\n 'select--bottom': this.placement === 'bottom',\n 'select--small': this.size === 'small',\n 'select--medium': this.size === 'medium',\n 'select--large': this.size === 'large',\n })}\n placement=${this.placement}\n strategy=${this.portal ? 'fixed' : (this.hoist ? 'fixed' : 'absolute')}\n distance=\"6\"\n ?flip=${!this.portal}\n ?shift=${!this.portal}\n sync=${ifDefined(!this.noWidthSync ? 'width' : undefined)}\n auto-size=\"vertical\"\n auto-size-padding=\"10\"\n exportparts=\"tag__content\"\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 renderFittedTags(): TemplateResult {\n return html`\n <div part=\"tags\" class=\"select__tags select__tags--fitted\">\n ${this.selectedOptions.map((option, index) => {\n const label = this.getChipLabel(option);\n return html`\n <nile-lite-tooltip\n class=\"select__tag-tip\"\n .content=${label}\n ?disabled=${this.chipTooltipDisabled(index)}\n >\n <nile-tag\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 prefix:tag__prefix,\n prefix_content_wrapper:tag__prefix_content_wrapper\n \"\n ?pill=${this.pill}\n size=${this.size}\n removable\n tabindex=\"0\"\n aria-label=${`${label}. Press Backspace or Delete to remove.`}\n @nile-remove=${(event: NileRemoveEvent) =>\n this.handleTagRemove(event, option)}\n @keydown=${(event: KeyboardEvent) =>\n this.handleChipKeyDown(event, option)}\n >\n ${label}\n </nile-tag>\n </nile-lite-tooltip>\n `;\n })}\n ${this.hiddenChipCount > 0\n ? html`<button\n type=\"button\"\n class=\"select__tags-count\"\n ?disabled=${this.disabled}\n aria-controls=\"listbox\"\n aria-expanded=${this.open ? 'true' : 'false'}\n aria-haspopup=\"listbox\"\n aria-label=${`${this.hiddenChipCount} more selected`}\n @click=${this.handleOverflowActivate}\n @keydown=${this.handleOverflowKeyDown}\n >+${this.hiddenChipCount}</button\n >`\n : ''}\n </div>\n `;\n }\n\n private renderTags(): TemplateResult {\n if (this.chipFittingEnabled) {\n return this.renderFittedTags();\n }\n\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 return html`\n <nile-lite-tooltip\n class=\"select__tag-tip\"\n .content=${option.getTextLabel()}\n ?disabled=${this.chipTooltipDisabled(index)}\n >\n <nile-tag\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 style=\"max-width:${this.chipMaxWidth}px\"\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 </nile-lite-tooltip>\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))\" size=\"var(--nile-height-14px, var(--ng-height-16px))\" method=\"var(--nile-svg-method-fill, var(--ng-svg-method-stroke))\" library=\"system\" color=\"var(--nile-colors-dark-500, var(--ng-colors-fg-quaternary-400))\"></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))\" color=\"var(--nile-colors-dark-500, var(--ng-colors-fg-quaternary-400))\"></nile-icon>\n </slot>\n `;\n }\n\n private renderListbox(): TemplateResult {\n return html`\n <div\n id=\"listbox\"\n role=\"listbox\"\n aria-expanded=${this.open ? 'true' : 'false'}\n aria-multiselectable=${this.multiple ? 'true' : 'false'}\n aria-labelledby=\"label\"\n part=\"listbox\"\n class=\"select__listbox ${this.searchEnabled\n ? 'select__search-enabled '\n : ''} ${this.portal ? 'select__portal-append-hidden' : ''}\"\n tabindex=\"-1\"\n @mouseup=${this.handleOptionClick}\n style=${this.portal ? 'display: none;' : ''}\n >\n ${this.renderSearch()}\n ${this.renderLoader()}\n ${this.getVirtualizedContent()}\n ${this.renderFooter()}\n </div>\n `;\n }\n\n private renderSearch(): TemplateResult {\n return this.searchEnabled\n ? html`\n <div part=\"search\" class=\"select__search\">\n <nile-input\n size=\"small\"\n clearable\n .value=${this.searchValue}\n placeholder=\"${this.internalSearchPlaceHolder}\"\n @nile-input=${this.handleSearchChange}\n @nile-focus=${this.handleSearchFocus}\n @nile-change=\"${this.onInputChange}\"\n >\n <nile-icon name=\"var(--nile-icon-search, var(--ng-icon-search-lg))\" method=\"var(--nile-svg-method-fill, var(--ng-svg-method-stroke))\" slot=\"suffix\"> </nile-icon>\n </nile-input>\n </div>\n `\n : html``;\n }\n\n private renderLoader(): TemplateResult {\n if (this.loading) {\n return html`\n <span part=\"loader\" class=\"virtual-select-loader\">\n <nile-loader size=\"sm\"></nile-loader>\n </span>\n `;\n }\n \n if (this.optionsLoading) {\n return html`\n <span part=\"loader\" class=\"select__loader\">\n <nile-icon\n class=\"select__loader--icon\"\n name=\"button-loading-blue\"\n ></nile-icon>\n </span>\n `;\n }\n \n return html``;\n }\n\n private renderFooter(): TemplateResult {\n return this.multiple\n ? html`\n <div\n part=\"footer\"\n class=\"select__footer ${this.loading ? 'loading' : ''}\"\n @click=\"${this.handleFooterClick}\"\n >\n <span\n class=\"select__footer-action\"\n @click=\"${this.toggleShowSelected}\"\n style=\"cursor: pointer;\"\n title=\"Show selected\"\n >\n <nile-checkbox\n ?disabled=\"${this.selectedOptions.length === 0}\"\n ?checked=\"${this.showSelected}\"\n >\n <span class=\"select__footer-label\">Selected</span></nile-checkbox\n >\n </span>\n ${this.selectedOptions.length !== 0\n ? html`\n <span\n class=\"select__clear\"\n @click=\"${this.unSelectAll}\"\n title=\"Clear\"\n >\n <nile-glyph\n class=\"select__footer-glyph\"\n name=\"ng-eraser\"\n size=\"16\"\n method=\"var(--nile-svg-method-stroke, var(--ng-svg-method-stroke))\"\n color=\"var(--nile-colors-primary-600, var(--ng-colors-text-brand-secondary-700))\"\n ></nile-glyph\n ><span class=\"select__footer-label\">Clear</span>\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.renderItemConfig?.getDescription,\n this.renderItemConfig?.getPrefix,\n this.renderItemConfig?.getSuffix,\n this.showNoResults,\n this.noResultsMessage,\n this.optionsLoading || this.loading,\n this.handleScroll.bind(this),\n this.allowHtmlLabel,\n this.enableDescription,\n this.tickOnSelect,\n this.legacy\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 setupResizeObserver(): void {\n const wanted =\n this.autoResize && this.chipFittingEnabled\n ? (this.shadowRoot?.querySelector('.select__tags') as HTMLElement | null) ??\n undefined\n : undefined;\n\n if (wanted === this.observedTagsContainer) {\n if (!this.chipFittingEnabled) this.destroyChipFit();\n return;\n }\n\n if (this.observedTagsContainer) {\n this.resizeController.unobserve(this.observedTagsContainer);\n this.observedTagsContainer = undefined;\n }\n\n if (wanted) {\n this.resizeController.observe(wanted);\n this.observedTagsContainer = wanted;\n return;\n }\n\n if (!this.chipFittingEnabled) {\n this.destroyChipFit();\n }\n }\n\n private calculateTotalWidthOfTags(): void {\n if (!this.chipFittingEnabled) return;\n\n if (this.chipFitFrame) cancelAnimationFrame(this.chipFitFrame);\n this.chipFitFrame = requestAnimationFrame(() => {\n this.chipFitFrame = 0;\n this.layoutChips();\n });\n }\n\n private allocateChipWidths(\n natural: number[],\n available: number\n ): number[] | null {\n const min = this.chipMinWidth;\n const max = this.chipMaxWidth;\n const total = natural.reduce((sum, w) => sum + w, 0);\n\n if (total <= available) {\n return natural.slice();\n }\n\n // Nothing reveals a truncated value without a tooltip, so chips keep their\n // natural width and the surplus moves into the +N button instead.\n if (!this.showTooltip) return null;\n\n const capped = natural.map(w => Math.min(w, max));\n const cappedTotal = capped.reduce((sum, w) => sum + w, 0);\n if (cappedTotal <= available) {\n return capped;\n }\n\n const widths = new Array<number>(natural.length).fill(0);\n let pool = capped.map((_, i) => i);\n let remaining = available;\n\n for (;;) {\n if (pool.length === 0) break;\n const share = remaining / pool.length;\n const settled = pool.filter(i => capped[i] <= share);\n if (settled.length === 0) break;\n for (const i of settled) {\n widths[i] = capped[i];\n remaining -= capped[i];\n }\n pool = pool.filter(i => capped[i] > share);\n }\n\n if (pool.length > 0) {\n const share = remaining / pool.length;\n\n if (share < min) {\n return null;\n }\n\n const width = Math.floor(share);\n for (const i of pool) {\n widths[i] = width;\n }\n }\n\n return widths;\n }\n\n private computeChipFit(\n natural: number[],\n available: number,\n overflowWidth: number,\n gap: number\n ): { visibleCount: number; widths: number[]; hiddenCount: number } {\n const total = natural.length;\n\n if (total === 0) {\n return { visibleCount: 0, widths: [], hiddenCount: 0 };\n }\n\n for (let count = total; count >= 1; count--) {\n const hidden = total - count;\n const reserved = hidden > 0 ? overflowWidth + gap : 0;\n const row = available - reserved - gap * (count - 1);\n\n if (row <= 0) continue;\n\n const widths = this.allocateChipWidths(natural.slice(0, count), row);\n if (widths) {\n return { visibleCount: count, widths, hiddenCount: hidden };\n }\n }\n\n const room = available - overflowWidth - gap;\n const fallback = Math.max(\n 0,\n // A single chip too wide for the row has to be clipped either way; only\n // the tooltip variant squeezes it to chipMinWidth.\n Math.min(natural[0], this.showTooltip ? Math.max(this.chipMinWidth, room) : room)\n );\n return { visibleCount: 1, widths: [fallback], hiddenCount: total - 1 };\n }\n\n private layoutChips(): void {\n const root = this.shadowRoot;\n if (!root) return;\n\n const container = root.querySelector('.select__tags') as HTMLElement | null;\n if (!container) return;\n\n const chips = Array.from(\n container.querySelectorAll('nile-tag')\n ) as HTMLElement[];\n if (chips.length === 0) {\n this.hiddenChipCount = 0;\n return;\n }\n\n const overflowEl = container.querySelector(\n '.select__tags-count'\n ) as HTMLElement | null;\n\n for (const chip of chips) {\n chip.style.display = '';\n chip.style.width = 'auto';\n chip.style.maxWidth = 'none';\n chip.style.minWidth = '0';\n chip.style.flex = '0 0 auto';\n }\n const natural = chips.map(chip =>\n Math.ceil(chip.getBoundingClientRect().width)\n );\n // Not rendered yet on the pass that first finds an overflow; reuse the last width.\n const overflowWidth = overflowEl\n ? Math.ceil(overflowEl.getBoundingClientRect().width)\n : this.lastOverflowWidth;\n if (overflowEl) this.lastOverflowWidth = overflowWidth;\n\n const containerStyles = getComputedStyle(container);\n const gap =\n parseFloat(containerStyles.columnGap || containerStyles.gap || '0') || 0;\n\n const fit = this.computeChipFit(\n natural,\n container.clientWidth,\n overflowWidth,\n gap\n );\n\n chips.forEach((chip, index) => {\n if (index < fit.visibleCount) {\n // Never squeeze a chip below chipMinWidth: narrower than that it is\n // also narrower than the tag's own box - the label is already at zero\n // while the remove button is fixed - so the box overflows the chip and\n // paints the X over the next chip or the +N button. A chip whose\n // natural width is already smaller is left alone, not padded out.\n const width = Math.min(\n natural[index],\n Math.max(fit.widths[index], this.chipMinWidth)\n );\n chip.style.display = '';\n chip.style.width = `${width}px`;\n chip.style.maxWidth = `${width}px`;\n chip.style.flex = '0 0 auto';\n } else {\n chip.style.display = 'none';\n }\n });\n\n if (\n this.lastChipLayout.hidden !== fit.hiddenCount ||\n this.lastChipLayout.visible !== fit.visibleCount\n ) {\n this.lastChipLayout = {\n hidden: fit.hiddenCount,\n visible: fit.visibleCount\n };\n this.hiddenChipCount = fit.hiddenCount;\n }\n\n this.refreshClippedChips();\n }\n\n private isChipClipped(el: HTMLElement | null | undefined): boolean {\n if (!el) return false;\n\n const root = el.shadowRoot;\n if (root) {\n const content = root.querySelector(\n '[part=\"content\"]'\n ) as HTMLElement | null;\n if (content && content.scrollWidth > content.clientWidth + 1) return true;\n\n const inner = root.querySelector(\n '[part=\"prefix_content_wrapper\"]'\n ) as HTMLElement | null;\n if (inner && inner.scrollWidth > inner.clientWidth + 1) return true;\n }\n\n return el.scrollWidth > el.clientWidth + 1;\n }\n\n private refreshClippedChips(): void {\n if (!this.multiple) return;\n\n const root = this.shadowRoot;\n if (!root) return;\n\n const chips = Array.from(\n root.querySelectorAll('.select__tags nile-tag')\n ) as HTMLElement[];\n\n const next = chips.map(chip => this.isChipClipped(chip));\n\n const same =\n next.length === this.clippedChips.length &&\n next.every((v, i) => v === this.clippedChips[i]);\n\n if (!same) {\n this.clippedChips = next;\n }\n }\n\n private scheduleClipCheck(): void {\n if (this.clipFrame) cancelAnimationFrame(this.clipFrame);\n this.clipFrame = requestAnimationFrame(() => {\n this.clipFrame = 0;\n this.refreshClippedChips();\n });\n }\n\n /** A chip gets a tooltip only while its text is measured as clipped. */\n private chipTooltipDisabled(index: number): boolean {\n return !this.showTooltip || !(this.clippedChips[index] ?? false);\n }\n\n private destroyChipFit(): void {\n if (this.chipFitFrame) cancelAnimationFrame(this.chipFitFrame);\n this.chipFitFrame = 0;\n if (this.clipFrame) cancelAnimationFrame(this.clipFrame);\n this.clipFrame = 0;\n this.lastChipLayout = { hidden: -1, visible: -1 };\n }\n\n private getChipLabel(option: VirtualOption): string {\n return (option.getTextLabel?.() ?? '').trim();\n }\n\n private handleChipKeyDown(event: KeyboardEvent, option: VirtualOption): void {\n if (event.key !== KeyCode.BACKSPACE && event.key !== KeyCode.DELETE) return;\n if (this.disabled) return;\n\n event.preventDefault();\n event.stopPropagation();\n\n const removedIndex = this.selectedOptions.indexOf(option);\n\n this.handleTagRemove(\n new CustomEvent('nile-remove') as unknown as NileRemoveEvent,\n option\n );\n\n this.restoreFocusAfterChipRemoval(removedIndex);\n }\n\n /** Moves focus to the next chip, the last chip, or the field after a removal. */\n private async restoreFocusAfterChipRemoval(\n removedIndex: number\n ): Promise<void> {\n if (removedIndex < 0) return;\n\n await this.updateComplete;\n\n // Wait for the fit pass so hidden chips are not focused.\n await new Promise<void>(resolve => requestAnimationFrame(() => resolve()));\n\n const visibleChips = Array.from(\n this.shadowRoot?.querySelectorAll<HTMLElement>('.select__tags nile-tag') ??\n []\n ).filter(chip => chip.style.display !== 'none');\n\n const target =\n visibleChips[removedIndex] ?? visibleChips[visibleChips.length - 1];\n\n if (target) {\n target.focus({ preventScroll: true });\n } else {\n this.displayInput?.focus({ preventScroll: true });\n }\n }\n\n private handleOverflowActivate(event: Event): void {\n event.preventDefault();\n event.stopPropagation();\n if (this.disabled) return;\n this.open = !this.open;\n }\n\n private handleOverflowKeyDown(event: KeyboardEvent): void {\n if (event.key !== KeyCode.ENTER && event.key !== KeyCode.SPACE) return;\n this.handleOverflowActivate(event);\n }\n\n private async resetScrollPosition(): Promise<void> {\n await this.portalManager.resetScrollPosition();\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\n"],"names":["h","i","this","_$AN","o","_$AM","r","n","t","e","_$AH","size","Array","isArray","length","s","setters","_tslib","_iterator","_createForOfIteratorHelper","_step","done","_$AO","err","f","_n","Set","has","add","c","type","CHILD","_$AP","_$AQ","q","constructor","super","arguments","_this","_inherits","_k","_createClass","key","value","_$AT","isConnected","_$AU","reconnected","disconnected","setValue","strings","_$Ct","_$AI","_$Ci","I","config","target","callback","skipInitial","l","window","ResizeObserver","u","handleChanges","requestUpdate","addController","console","warn","hostConnected","_iterator2","_step2","observe","hostDisconnected","disconnect","_hostUpdated","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_callee$","_context2","prev","next","stop","hostUpdated","unobserve","_class","observing","_this3","_q","render","update","controller","part","element","_export","NileVirtualSelect","T","formControlController","FormControlController","assumeInteractionOn","hasSlotController","HasSlotController","portalManager","PortalManager","hasFocus","displayLabel","selectedOptions","oldValue","scrolling","name","data","originalOptionItems","defaultValue","placeholder","autoResize","searchValue","searchEnabled","enableVisibilityEffect","internalSearchPlaceHolder","disableLocalSearch","optionsLoading","loading","multiple","helpText","errorMessage","warning","error","success","disabled","clearable","open","hoist","filled","pill","label","placement","form","required","showNoResults","noResultsMessage","showSelected","blockValueChange","noWidthSync","portal","_maxOptionsVisible","maxOptionsVisibleExplicit","chipMinWidth","chipMaxWidth","showTooltip","hiddenChipCount","lastOverflowWidth","chipFitFrame","lastChipLayout","hidden","visible","clippedChips","clipFrame","enableTabClose","descriptionSearchEnabled","allowHtmlLabel","enableDescription","legacy","tickOnSelect","showListbox","wasShowSelectedCheckedOnClose","handleDocumentMouseDown","event","path","composedPath","hitSelf","includes","hitPopup","popup","hitPortalAppend","portalContainerElement","hide","handleWindowError","message","preventDefault","handleWindowResize","updatePortalAppendPosition","handleWindowScroll","resizeController","ResizeController","entries","_iterator3","_step3","entry","classList","contains","calculateTotalWidthOfTags","_this4","_f","get","set","previous","_this$valueInput","valueInput","validity","_this$valueInput$vali","_this$valueInput2","validationMessage","connectedCallback","initializeComponent","setupEventListeners","updateComplete","then","selectionChanged","disconnectedCallback","removeOpenListeners","visibilityManager","cleanup","scrollTimeout","clearTimeout","undefined","cleanupPortalAppend","destroyChipFit","updated","changedProperties","setupResizeObserver","chipFittingEnabled","scheduleClipCheck","emit","getDisplayText","item","renderItemConfig","toString","getItemValue","_this$renderItemConfi2","getValue","getItemDescription","_this$renderItemConfi3","getDescription","description","getItemPrefix","getPrefix","prefix","getItemSuffix","getSuffix","suffix","getSearchText","_this$renderItemConfi6","handleDocumentFocusIn","bind","handleDocumentKeyDown","addOpenListeners","document","addEventListener","removeEventListener","handleFocus","handleBlur","firstUpdated","_changed","VisibilityManager","host","combobox","isOpen","onAnchorOutOfView","reason","onDocumentHidden","detail","shouldIgnoreKeyPress","isEscapeKey","handleEscapeKey","isEnterOrSpaceKey","handleEnterOrSpaceKey","isClearButton","closest","isIconButton","stopPropagation","displayInput","focus","preventScroll","stopImmediatePropagation","show","handleFooterClick","toggleShowSelected","_this$selectedOptions","_this7","selectedValues","filter","itemValue","some","val","String","_toConsumableArray","resetMeasuredHeight","repaintOptionsContainer","unSelectAll","resetScrollPosition","handleLabelClick","handleComboboxMouseDown","shouldIgnoreComboboxClick","el","Element","tagName","toLowerCase","isOverflowButton","HTMLButtonElement","handleComboboxKeyDown","handleClearClick","clearSelection","nileInput","nileChange","handleClearMouseDown","handleOptionClick","option","shouldBlockValueChange","handleOptionSelection","optionValue","toggleOptionSelection","setSelectedOptions","currentValues","v","handleTagRemove","removeTagFromSelection","emitTagRemovalEvent","currentValue","newValue","removedtagvalue","_this$renderItemConfi7","_this$originalOptionI","itemsToSearch","VirtualSelectSelectionManager","createVirtualOptionsFromValues","_this$selectedOptions2","getTextLabel","updateValidity","handleSearchFocus","handleSearchBlur","handleSearchChange","query","filterVirtualOptions","_this11$shadowRoot","virtualized","shadowRoot","querySelector","remove","handleScroll","scrollTop","scrollLeft","setTimeout","Math","ceil","floor","scrollHeight","offsetHeight","isAtBottom","result","VirtualSelectSearchManager","requestAnimationFrame","filteredItems","handleInvalid","setValidity","emitInvalidEvent","handleDisabledChange","handleOpenChange","handleValueChange","handleDataChange","handleRenderItemConfigChange","handleOptionsLoadingChange","handlePortalAppendChange","setupPortalAppend","_handleOpenChange","_callee2","_this$visibilityManag2","_this$visibilityManag3","_callee2$","_context3","setup","handleOpen","handleClose","_callee3","_this$data","_this$popup","_this$popup2","_g","_callee3$","_context4","stopAnimations","style","visibility","active","Promise","resolve","getAnimation","dir","keyframes","options","animateTo","_callee4","_this$popup3","_g2","_callee4$","_context5","_callee5","_callee5$","_context6","waitForEvent","_callee6","_callee6$","_context7","checkValidity","getForm","reportValidity","setCustomValidity","blur","onInputChange","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","renderFittedTags","_this14","_templateObject12","map","index","getChipLabel","_templateObject13","chipTooltipDisabled","handleChipKeyDown","_templateObject14","concat","handleOverflowActivate","handleOverflowKeyDown","_templateObject15","maxOptionsVisible","_templateObject16","_templateObject17","_templateObject18","_templateObject19","join","_templateObject20","_templateObject21","_templateObject22","select__suffix","_templateObject23","_templateObject24","renderSearch","renderLoader","getVirtualizedContent","renderFooter","_templateObject25","_templateObject26","_templateObject27","_templateObject28","_templateObject29","_templateObject30","_templateObject31","_templateObject32","_templateObject33","_templateObject34","_templateObject35","VirtualSelectRenderer","wanted","_this$shadowRoot$quer","observedTagsContainer","cancelAnimationFrame","layoutChips","allocateChipWidths","natural","available","min","max","reduce","sum","w","slice","capped","widths","fill","pool","_","remaining","_loop","share","settled","_iterator5","_step5","width","_iterator4","_step4","computeChipFit","overflowWidth","gap","total","visibleCount","hiddenCount","count","row","room","_this19","root","container","chips","from","querySelectorAll","overflowEl","_i9","_n3","chip","display","maxWidth","minWidth","flex","getBoundingClientRect","containerStyles","getComputedStyle","parseFloat","columnGap","fit","clientWidth","forEach","refreshClippedChips","isChipClipped","content","scrollWidth","inner","same","every","trim","KeyCode","BACKSPACE","DELETE","removedIndex","indexOf","CustomEvent","restoreFocusAfterChipRemoval","_restoreFocusAfterChipRemoval","_callee7","_context8","abrupt","visibleChips","_this$shadowRoot$quer2","ENTER","SPACE","_resetScrollPosition","_callee8","_callee8$","_context9","NileElement","styles","__decorate","prototype","state","property","converter","fromAttribute","split","toAttribute","Boolean","attribute","reflect","Number","watch","waitUntilFirstUpdate","customElement","setDefaultAnimation","opacity","scale","duration","easing"],"mappings":"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","x_google_ignoreList":[0,1,2]}