@aquera/nile-elements 2.0.12 → 2.0.14

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 (83) hide show
  1. package/README.md +13 -0
  2. package/dist/index.js +132 -134
  3. package/dist/nile-auto-complete/nile-auto-complete.css.cjs.js +1 -1
  4. package/dist/nile-auto-complete/nile-auto-complete.css.cjs.js.map +1 -1
  5. package/dist/nile-auto-complete/nile-auto-complete.css.esm.js +5 -2
  6. package/dist/nile-chip/nile-chip.css.cjs.js +1 -1
  7. package/dist/nile-chip/nile-chip.css.cjs.js.map +1 -1
  8. package/dist/nile-chip/nile-chip.css.esm.js +2 -0
  9. package/dist/nile-combobox/nile-combobox.css.cjs.js +1 -1
  10. package/dist/nile-combobox/nile-combobox.css.cjs.js.map +1 -1
  11. package/dist/nile-combobox/nile-combobox.css.esm.js +9 -9
  12. package/dist/nile-command-menu/nile-command-menu.css.cjs.js +1 -1
  13. package/dist/nile-command-menu/nile-command-menu.css.cjs.js.map +1 -1
  14. package/dist/nile-command-menu/nile-command-menu.css.esm.js +5 -5
  15. package/dist/nile-command-menu-item/nile-command-menu-item.css.cjs.js +1 -1
  16. package/dist/nile-command-menu-item/nile-command-menu-item.css.cjs.js.map +1 -1
  17. package/dist/nile-command-menu-item/nile-command-menu-item.css.esm.js +2 -2
  18. package/dist/nile-option/nile-option.css.cjs.js +1 -1
  19. package/dist/nile-option/nile-option.css.cjs.js.map +1 -1
  20. package/dist/nile-option/nile-option.css.esm.js +1 -1
  21. package/dist/nile-select/nile-select.cjs.js +2 -2
  22. package/dist/nile-select/nile-select.cjs.js.map +1 -1
  23. package/dist/nile-select/nile-select.css.cjs.js +1 -1
  24. package/dist/nile-select/nile-select.css.cjs.js.map +1 -1
  25. package/dist/nile-select/nile-select.css.esm.js +19 -24
  26. package/dist/nile-select/nile-select.esm.js +43 -42
  27. package/dist/nile-select/virtual-scroll-helper.cjs.js +1 -1
  28. package/dist/nile-select/virtual-scroll-helper.cjs.js.map +1 -1
  29. package/dist/nile-select/virtual-scroll-helper.esm.js +2 -0
  30. package/dist/nile-virtual-select/nile-virtual-select.cjs.js +4 -4
  31. package/dist/nile-virtual-select/nile-virtual-select.cjs.js.map +1 -1
  32. package/dist/nile-virtual-select/nile-virtual-select.css.cjs.js +1 -1
  33. package/dist/nile-virtual-select/nile-virtual-select.css.cjs.js.map +1 -1
  34. package/dist/nile-virtual-select/nile-virtual-select.css.esm.js +20 -25
  35. package/dist/nile-virtual-select/nile-virtual-select.esm.js +26 -26
  36. package/dist/src/nile-auto-complete/nile-auto-complete.css.js +3 -0
  37. package/dist/src/nile-auto-complete/nile-auto-complete.css.js.map +1 -1
  38. package/dist/src/nile-chip/nile-chip.css.js +2 -0
  39. package/dist/src/nile-chip/nile-chip.css.js.map +1 -1
  40. package/dist/src/nile-combobox/nile-combobox.css.js +9 -9
  41. package/dist/src/nile-combobox/nile-combobox.css.js.map +1 -1
  42. package/dist/src/nile-command-menu/nile-command-menu.css.js +5 -5
  43. package/dist/src/nile-command-menu/nile-command-menu.css.js.map +1 -1
  44. package/dist/src/nile-command-menu-item/nile-command-menu-item.css.js +2 -2
  45. package/dist/src/nile-command-menu-item/nile-command-menu-item.css.js.map +1 -1
  46. package/dist/src/nile-option/nile-option.css.js +1 -1
  47. package/dist/src/nile-option/nile-option.css.js.map +1 -1
  48. package/dist/src/nile-select/nile-select.css.js +19 -24
  49. package/dist/src/nile-select/nile-select.css.js.map +1 -1
  50. package/dist/src/nile-select/nile-select.d.ts +18 -2
  51. package/dist/src/nile-select/nile-select.js +226 -64
  52. package/dist/src/nile-select/nile-select.js.map +1 -1
  53. package/dist/src/nile-select/nile-select.test.d.ts +1 -0
  54. package/dist/src/nile-select/nile-select.test.js +896 -17
  55. package/dist/src/nile-select/nile-select.test.js.map +1 -1
  56. package/dist/src/nile-select/virtual-scroll-helper.js +2 -0
  57. package/dist/src/nile-select/virtual-scroll-helper.js.map +1 -1
  58. package/dist/src/nile-virtual-select/nile-virtual-select.css.js +20 -25
  59. package/dist/src/nile-virtual-select/nile-virtual-select.css.js.map +1 -1
  60. package/dist/src/nile-virtual-select/nile-virtual-select.d.ts +10 -2
  61. package/dist/src/nile-virtual-select/nile-virtual-select.js +142 -30
  62. package/dist/src/nile-virtual-select/nile-virtual-select.js.map +1 -1
  63. package/dist/src/nile-virtual-select/nile-virtual-select.test.d.ts +1 -0
  64. package/dist/src/nile-virtual-select/nile-virtual-select.test.js +331 -16
  65. package/dist/src/nile-virtual-select/nile-virtual-select.test.js.map +1 -1
  66. package/dist/src/version.js +1 -1
  67. package/dist/src/version.js.map +1 -1
  68. package/dist/tsconfig.tsbuildinfo +1 -1
  69. package/package.json +1 -1
  70. package/src/nile-auto-complete/nile-auto-complete.css.ts +3 -0
  71. package/src/nile-chip/nile-chip.css.ts +2 -0
  72. package/src/nile-combobox/nile-combobox.css.ts +9 -9
  73. package/src/nile-command-menu/nile-command-menu.css.ts +5 -5
  74. package/src/nile-command-menu-item/nile-command-menu-item.css.ts +2 -2
  75. package/src/nile-option/nile-option.css.ts +1 -1
  76. package/src/nile-select/nile-select.css.ts +19 -24
  77. package/src/nile-select/nile-select.test.ts +1112 -17
  78. package/src/nile-select/nile-select.ts +237 -67
  79. package/src/nile-select/virtual-scroll-helper.ts +2 -0
  80. package/src/nile-virtual-select/nile-virtual-select.css.ts +20 -25
  81. package/src/nile-virtual-select/nile-virtual-select.test.ts +404 -16
  82. package/src/nile-virtual-select/nile-virtual-select.ts +200 -79
  83. package/vscode-html-custom-data.json +9 -4
@@ -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-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]}
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.showTooltip && !this.maxOptionsVisibleExplicit;\n }\n\n private get legacyTagFitEnabled(): boolean {\n return !!this.multiple && !this.showTooltip;\n }\n\n private setFittedMaxOptionsVisible(value: number): void {\n const previous = this._maxOptionsVisible;\n this._maxOptionsVisible = value;\n this.requestUpdate('maxOptionsVisible', previous);\n }\n\n /** Minimum width, in px, of a squeezed chip. Needs `showtooltip`. */\n @property({ type: Number, attribute: true }) chipMinWidth = 110;\n\n /** Maximum width, in px, of a squeezed chip. Needs `showtooltip`. */\n @property({ type: Number, attribute: true }) chipMaxWidth = 180;\n\n /**\n * Opts into the fitted chip row: chips are sized between chipMinWidth and chipMaxWidth, the\n * rest collapse into a +N button, and a clipped chip shows its full value in a tooltip.\n * Off by default, which keeps the pre-2.0.9 chip row.\n */\n @property({ type: Boolean, attribute: true, reflect: true }) showTooltip = false;\n\n\n @state() private hiddenChipCount = 0;\n @state() oldMaxOptionsVisible: number = 1;\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 changedProperties.has('showTooltip')\n ) {\n this.setupResizeObserver();\n }\n if (\n changedProperties.has('showTooltip') &&\n changedProperties.get('showTooltip') !== undefined &&\n this.legacyTagFitEnabled\n ) {\n this.calculateTotalWidthOfTags();\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 this.showTooltip\n ? html`<nile-lite-tooltip\n class=\"select__tag-tip\"\n .content=${option.getTextLabel()}\n ?disabled=${this.chipTooltipDisabled(index)}\n >${this.renderLegacyTag(option, index)}</nile-lite-tooltip\n >`\n : this.renderLegacyTag(option, index);\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 renderLegacyTag(option: VirtualOption, index: number): TemplateResult {\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 style=${ifDefined(\n this.showTooltip ? `max-width:${this.chipMaxWidth}px` : undefined\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 }\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=${classMap({\n 'select__footer': true,\n loading: !!this.loading,\n 'select__footer--query': !this.noWidthSync || this.portal,\n })}\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 || this.legacyTagFitEnabled)\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.legacyTagFitEnabled) {\n this.fitTagsLegacy();\n return;\n }\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 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 fitTagsLegacy(): void {\n if (this.maxOptionsVisible !== Infinity) {\n this.oldMaxOptionsVisible = this.maxOptionsVisible;\n }\n\n this.setFittedMaxOptionsVisible(Infinity);\n setTimeout(() => {\n const 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 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.setFittedMaxOptionsVisible(lastindex);\n }, 1);\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 labelOverflows(content: HTMLSlotElement): boolean {\n let left = Infinity;\n let right = -Infinity;\n const range = document.createRange();\n for (const node of content.assignedNodes({ flatten: true })) {\n let rect: DOMRect;\n if (node.nodeType === Node.TEXT_NODE) {\n if (!node.textContent?.trim()) continue;\n range.selectNodeContents(node);\n rect = range.getBoundingClientRect();\n } else if (node instanceof Element) {\n rect = node.getBoundingClientRect();\n } else {\n continue;\n }\n if (rect.width === 0) continue;\n left = Math.min(left, rect.left);\n right = Math.max(right, rect.right);\n }\n if (right < left) return false;\n\n const box = content.getBoundingClientRect();\n const styles = getComputedStyle(content);\n const boxLeft = box.left + parseFloat(styles.borderLeftWidth) + parseFloat(styles.paddingLeft);\n const boxRight = box.right - parseFloat(styles.borderRightWidth) - parseFloat(styles.paddingRight);\n const epsilon = 1 / 64;\n return right > boxRight + epsilon || left < boxLeft - epsilon;\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 HTMLSlotElement | null;\n if (content && this.labelOverflows(content)) 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","arguments","length","undefined","_$AH","size","Array","isArray","s","setters","_tslib","_iterator","_createForOfIteratorHelper","_step","done","_$AO","err","f","_n","Set","has","add","c","type","CHILD","_$AP","_$AQ","V","super","_this","_inherits","_k","_createClass","key","value","_$AT","isConnected","_$AU","reconnected","disconnected","setValue","strings","_$Ct","_$AI","_$Ci","_export","M","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","hostUpdated","stop","unobserve","_V","_class","constructor","observing","_this3","render","update","controller","part","element","_this$controller2","NileVirtualSelect","_f","I","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","oldMaxOptionsVisible","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","get","set","previous","setFittedMaxOptionsVisible","validity","_this$valueInput","valueInput","_this$valueInput$vali","_this$valueInput2","validationMessage","connectedCallback","initializeComponent","setupEventListeners","updateComplete","then","selectionChanged","disconnectedCallback","removeOpenListeners","visibilityManager","cleanup","scrollTimeout","clearTimeout","cleanupPortalAppend","destroyChipFit","updated","changedProperties","setupResizeObserver","legacyTagFitEnabled","chipFittingEnabled","scheduleClipCheck","emit","getDisplayText","item","renderItemConfig","toString","getItemValue","_this$renderItemConfi2","getValue","getItemDescription","_this$renderItemConfi3","getDescription","description","getItemPrefix","getPrefix","prefix","getItemSuffix","_this$renderItemConfi5","getSuffix","suffix","getSearchText","_this$renderItemConfi6","handleDocumentFocusIn","bind","handleDocumentKeyDown","addOpenListeners","document","addEventListener","removeEventListener","handleFocus","handleBlur","firstUpdated","_changed","VisibilityManager","host","combobox","isOpen","onAnchorOutOfView","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","resetMeasuredHeight","repaintOptionsContainer","unSelectAll","resetScrollPosition","handleLabelClick","handleComboboxMouseDown","shouldIgnoreComboboxClick","el","Element","tagName","toLowerCase","isOverflowButton","HTMLButtonElement","handleComboboxKeyDown","handleClearClick","clearSelection","nileInput","nileChange","handleClearMouseDown","handleOptionClick","option","shouldBlockValueChange","handleOptionSelection","_this9","optionValue","toggleOptionSelection","setSelectedOptions","currentValues","v","_toConsumableArray","handleTagRemove","removeTagFromSelection","emitTagRemovalEvent","currentValue","newValue","removedtagvalue","itemsToSearch","VirtualSelectSelectionManager","createVirtualOptionsFromValues","_this$selectedOptions2","getTextLabel","updateValidity","handleSearchFocus","handleSearchBlur","handleSearchChange","query","filterVirtualOptions","_this11$shadowRoot","virtualized","shadowRoot","querySelector","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","_m","_callee3$","_context4","stopAnimations","style","visibility","active","Promise","resolve","getAnimation","dir","keyframes","options","animateTo","_callee4","_this$popup3","_m2","_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","handleOverflowActivate","handleOverflowKeyDown","_templateObject15","maxOptionsVisible","_templateObject16","renderLegacyTag","_templateObject17","_templateObject18","classes","select__invisible","Infinity","_templateObject19","_this17","_templateObject20","join","_templateObject21","_templateObject22","_templateObject23","select__suffix","_templateObject24","_templateObject25","renderSearch","renderLoader","getVirtualizedContent","renderFooter","_templateObject26","_templateObject27","_templateObject28","_templateObject29","_templateObject30","_templateObject31","select__footer","_templateObject32","_templateObject33","_templateObject34","_templateObject35","_templateObject36","_this$renderItemConfi9","_this$renderItemConfi10","_this$renderItemConfi11","_this$renderItemConfi12","_this$renderItemConfi13","VirtualSelectRenderer","wanted","_this$shadowRoot$quer","observedTagsContainer","fitTagsLegacy","cancelAnimationFrame","layoutChips","calculateWidthOfSelectTagsDiv","selectTagsDiv","offsetWidth","widths","querySelectorAll","forEach","tag","HTMLElement","push","widthOfSelectTagsDiv","summ","lastindex","allocateChipWidths","natural","available","min","max","reduce","sum","w","slice","capped","fill","pool","_","remaining","_loop","share","settled","_iterator5","_step5","width","_iterator4","_step4","computeChipFit","overflowWidth","gap","total","visibleCount","hiddenCount","count","row","room","root","container","chips","from","overflowEl","_i10","_n3","chip","display","maxWidth","minWidth","flex","getBoundingClientRect","containerStyles","getComputedStyle","parseFloat","columnGap","fit","clientWidth","refreshClippedChips","labelOverflows","content","left","right","range","createRange","_iterator6","assignedNodes","flatten","_step6","node","rect","nodeType","Node","TEXT_NODE","_t2$textContent","textContent","trim","selectNodeContents","box","styles","boxLeft","borderLeftWidth","paddingLeft","epsilon","borderRightWidth","paddingRight","isChipClipped","inner","scrollWidth","_this22","same","every","_i$getTextLabel","_i$getTextLabel2","KeyCode","BACKSPACE","DELETE","removedIndex","indexOf","CustomEvent","restoreFocusAfterChipRemoval","_restoreFocusAfterChipRemoval","_callee7","_context8","abrupt","visibleChips","_this$shadowRoot$quer2","_this$displayInput","ENTER","SPACE","_resetScrollPosition","_callee8","_callee8$","_context9","NileElement","__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]}