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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "description": "Webcomponent nile-elements following open-wc recommendations",
4
4
  "license": "MIT",
5
5
  "author": "nile-elements",
6
- "version": "1.2.6-beta-1.0",
6
+ "version": "1.2.6-beta-1.1",
7
7
  "main": "dist/src/index.js",
8
8
  "type": "module",
9
9
  "module": "dist/src/index.js",
@@ -167,8 +167,6 @@ export class NileSelect extends NileElement implements NileFormControl{
167
167
 
168
168
  @property({attribute:'internal-search-placeholder'}) internalSearchPlaceHolder = 'Search...';
169
169
 
170
- @property({ type: Boolean, reflect: true, attribute: true }) enableVisibilityEffect = false;
171
-
172
170
  @property({ type: Boolean, reflect: true }) blockValueChange = false;
173
171
 
174
172
  @property({ type: Boolean, reflect: true }) disableLocalSearch = false;
@@ -269,10 +267,6 @@ export class NileSelect extends NileElement implements NileFormControl{
269
267
 
270
268
  @state() oldMaxOptionsVisible: number = 1;
271
269
 
272
-
273
- @property({ type: Boolean, reflect: true, attribute: true }) enableTabClose = false;
274
-
275
-
276
270
  @property({ type: Boolean }) showNoResults: boolean = false;
277
271
 
278
272
  @property({ type: String }) noResultsMessage: string = 'No results found';
@@ -426,100 +420,6 @@ export class NileSelect extends NileElement implements NileFormControl{
426
420
  }
427
421
  }
428
422
 
429
-
430
- /** All active IntersectionObservers for visibility detection */
431
- private anchorVisibilityObservers: IntersectionObserver[] = [];
432
-
433
- /** Utility: find ALL scrollable ancestors (not just the nearest) */
434
- private getScrollableAncestors(element: HTMLElement): HTMLElement[] {
435
- const scrollables: HTMLElement[] = [];
436
- let parent = element.parentElement;
437
- while (parent) {
438
- const style = getComputedStyle(parent);
439
- const canScroll =
440
- /(auto|scroll)/.test(style.overflow + style.overflowY + style.overflowX);
441
- if (canScroll) {
442
- scrollables.push(parent);
443
- }
444
- parent = parent.parentElement;
445
- }
446
- return scrollables;
447
- }
448
-
449
- /** Handles tab visibility (page hidden / tab switched) */
450
- private handleDocumentVisibilityChange = (): void => {
451
- if (!this.enableTabClose) return;
452
- if (document.visibilityState === 'hidden' && this.open) {
453
- this.hide();
454
- this.emit('nile-visibility-change', {
455
- visible: false,
456
- reason: 'document-hidden',
457
- name: this.name,
458
- });
459
- }
460
- };
461
-
462
- /** Sets up visibility tracking for all relevant contexts */
463
- private setupAnchorVisibilityObserver(): void {
464
- if (!this.enableVisibilityEffect) return;
465
-
466
- this.cleanupAnchorVisibilityObserver();
467
-
468
- const combobox = this.combobox;
469
- if (!combobox) return;
470
-
471
- // Get all scrollable ancestors and viewport
472
- const scrollContainers = [...this.getScrollableAncestors(this), null];
473
-
474
- scrollContainers.forEach((rootContainer) => {
475
- const observer = new IntersectionObserver(
476
- (entries) => {
477
- for (const entry of entries) {
478
- if (!entry.isIntersecting && this.open) {
479
- this.hide();
480
- this.emit('nile-visibility-change', {
481
- visible: false,
482
- reason: 'anchor-out-of-view',
483
- name: this.name,
484
- root: rootContainer,
485
- });
486
- return; // stop further triggers
487
- }
488
- }
489
- },
490
- {
491
- root: rootContainer,
492
- threshold: 0.1, // 10% visible = visible
493
- }
494
- );
495
-
496
- observer.observe(combobox);
497
- this.anchorVisibilityObservers.push(observer);
498
- });
499
-
500
- // Attach tab visibility listener only if property enabled
501
- if (this.enableTabClose) {
502
- document.addEventListener(
503
- 'visibilitychange',
504
- this.handleDocumentVisibilityChange
505
- );
506
- }
507
- }
508
-
509
- /** Cleans up all visibility observers and listeners */
510
- private cleanupAnchorVisibilityObserver(): void {
511
- this.anchorVisibilityObservers.forEach((o) => o.disconnect());
512
- this.anchorVisibilityObservers = [];
513
-
514
- // Always remove listener to avoid stale callbacks
515
- document.removeEventListener(
516
- 'visibilitychange',
517
- this.handleDocumentVisibilityChange
518
- );
519
- }
520
-
521
-
522
-
523
423
  /**
524
424
  * Handles the click event on the footer.
525
425
  * @param event - The click event.
@@ -1180,10 +1080,6 @@ export class NileSelect extends NileElement implements NileFormControl{
1180
1080
  this.setCurrentOption(this.currentOption);
1181
1081
  });
1182
1082
 
1183
- if (this.enableVisibilityEffect) {
1184
- this.setupAnchorVisibilityObserver();
1185
- }
1186
-
1187
1083
  const { keyframes, options } = getAnimation(this, 'select.show', {
1188
1084
  dir: 'ltr',
1189
1085
  });
@@ -27,11 +27,9 @@ export class VirtualScrollHelper {
27
27
  .disableLocalSearch=${component.disableLocalSearch}
28
28
  .optionsLoading=${component.optionsLoading}
29
29
  .multiple=${component.multiple}
30
- .enableTabClose=${component.enableTabClose}
31
30
  .helpText=${component.helpText}
32
31
  .errorMessage=${component.errorMessage}
33
32
  .warning=${component.warning}
34
- .enableVisibilityEffect=${component.enableVisibilityEffect}
35
33
  .error=${component.error}
36
34
  .success=${component.success}
37
35
  .disabled=${component.disabled}
@@ -162,8 +162,6 @@ export class NileVirtualSelect extends NileElement implements NileFormControl {
162
162
  /** Enable search functionality */
163
163
  @property({ type: Boolean, reflect: true }) searchEnabled = false;
164
164
 
165
- @property({ type: Boolean, reflect: true, attribute: true }) enableVisibilityEffect = false;
166
-
167
165
  /** Search input placeholder */
168
166
  @property({attribute:'internal-search-placeholder'}) internalSearchPlaceHolder = 'Search...';
169
167
 
@@ -266,10 +264,6 @@ export class NileVirtualSelect extends NileElement implements NileFormControl {
266
264
  maxOptionsVisible = 3;
267
265
 
268
266
  @state() oldMaxOptionsVisible: number = 1;
269
-
270
- @property({ type: Boolean, reflect: true, attribute: true }) enableTabClose = false;
271
-
272
-
273
267
  @state() showListbox: boolean = false;
274
268
  @state() private wasShowSelectedCheckedOnClose: boolean = false;
275
269
 
@@ -396,101 +390,6 @@ export class NileVirtualSelect extends NileElement implements NileFormControl {
396
390
  this.emit('nile-blur');
397
391
  }
398
392
 
399
- /** All active IntersectionObservers for visibility detection */
400
- private anchorVisibilityObservers: IntersectionObserver[] = [];
401
-
402
- /** Utility: find ALL scrollable ancestors (not just the nearest) */
403
- private getScrollableAncestors(element: HTMLElement): HTMLElement[] {
404
- const scrollables: HTMLElement[] = [];
405
- let parent = element.parentElement;
406
- while (parent) {
407
- const style = getComputedStyle(parent);
408
- const canScroll =
409
- /(auto|scroll)/.test(style.overflow + style.overflowY + style.overflowX);
410
- if (canScroll) {
411
- scrollables.push(parent);
412
- }
413
- parent = parent.parentElement;
414
- }
415
- return scrollables;
416
- }
417
-
418
- /** Handles tab visibility (page hidden / tab switched) */
419
- private handleDocumentVisibilityChange = (): void => {
420
- if (!this.enableTabClose) return;
421
- if (document.visibilityState === 'hidden' && this.open) {
422
- this.hide();
423
- this.emit('nile-visibility-change', {
424
- visible: false,
425
- reason: 'document-hidden',
426
- name: this.name,
427
- });
428
- }
429
- };
430
-
431
- /** Sets up visibility tracking for all relevant contexts */
432
- private setupAnchorVisibilityObserver(): void {
433
- if (!this.enableVisibilityEffect) return;
434
-
435
- this.cleanupAnchorVisibilityObserver();
436
-
437
- const combobox = this.combobox;
438
- if (!combobox) return;
439
-
440
- // Get all scrollable ancestors and viewport
441
- const scrollContainers = [...this.getScrollableAncestors(this), null];
442
-
443
- scrollContainers.forEach((rootContainer) => {
444
- const observer = new IntersectionObserver(
445
- (entries) => {
446
- for (const entry of entries) {
447
- if (!entry.isIntersecting && this.open) {
448
- this.hide();
449
- this.emit('nile-visibility-change', {
450
- visible: false,
451
- reason: 'anchor-out-of-view',
452
- name: this.name,
453
- root: rootContainer,
454
- });
455
- return; // stop further triggers
456
- }
457
- }
458
- },
459
- {
460
- root: rootContainer,
461
- threshold: 0.1, // 10% visible = visible
462
- }
463
- );
464
-
465
- observer.observe(combobox);
466
- this.anchorVisibilityObservers.push(observer);
467
- });
468
-
469
- // Attach tab visibility listener only if property enabled
470
- if (this.enableTabClose) {
471
- document.addEventListener(
472
- 'visibilitychange',
473
- this.handleDocumentVisibilityChange
474
- );
475
- }
476
- }
477
-
478
- /** Cleans up all visibility observers and listeners */
479
- private cleanupAnchorVisibilityObserver(): void {
480
- this.anchorVisibilityObservers.forEach((o) => o.disconnect());
481
- this.anchorVisibilityObservers = [];
482
-
483
- // Always remove listener to avoid stale callbacks
484
- document.removeEventListener(
485
- 'visibilitychange',
486
- this.handleDocumentVisibilityChange
487
- );
488
- }
489
-
490
-
491
-
492
-
493
-
494
393
  private handleDocumentFocusIn(event: FocusEvent): void {
495
394
  if (!this.open) return;
496
395
  const path = event.composedPath();
@@ -831,6 +730,9 @@ export class NileVirtualSelect extends NileElement implements NileFormControl {
831
730
 
832
731
  handleSearchChange(e: any): void {
833
732
  this.searchValue = e.detail.value;
733
+ if (this.portal) {
734
+ this.portalManager.updatePortalAppendPosition();
735
+ }
834
736
 
835
737
  this.emit('nile-search', {
836
738
  query: this.searchValue,
@@ -908,7 +810,18 @@ export class NileVirtualSelect extends NileElement implements NileFormControl {
908
810
  this.getDisplayText.bind(this),
909
811
  this.renderItemConfig?.getSearchText
910
812
  );
911
-
813
+ if (this.portal) {
814
+ this.portalManager.updatePortalAppendPosition();
815
+ this.updateComplete.then(() => {
816
+ requestAnimationFrame(() => {
817
+ requestAnimationFrame(() => {
818
+ this.resetScrollPosition();
819
+ });
820
+ });
821
+ });
822
+ } else {
823
+ this.resetScrollPosition();
824
+ }
912
825
  this.data = result.filteredItems;
913
826
  this.showNoResults = result.showNoResults;
914
827
  this.showSelected = false;
@@ -928,7 +841,6 @@ export class NileVirtualSelect extends NileElement implements NileFormControl {
928
841
  }
929
842
  }
930
843
 
931
-
932
844
  @watch('value', { waitUntilFirstUpdate: true })
933
845
  handleValueChange(): void {
934
846
  this.selectionChanged();
@@ -1033,10 +945,6 @@ export class NileVirtualSelect extends NileElement implements NileFormControl {
1033
945
  this.data = [...this.originalOptionItems];
1034
946
  this.wasShowSelectedCheckedOnClose = false;
1035
947
  }
1036
-
1037
- if (this.enableVisibilityEffect) {
1038
- this.setupAnchorVisibilityObserver();
1039
- }
1040
948
 
1041
949
  this.filterVirtualOptions("");
1042
950
  this.resetScrollPosition();
@@ -1044,7 +952,6 @@ export class NileVirtualSelect extends NileElement implements NileFormControl {
1044
952
  }
1045
953
 
1046
954
  private async handleClose(): Promise<void> {
1047
- this.cleanupAnchorVisibilityObserver();
1048
955
  this.emit('nile-hide', { value: this.value, name: this.name });
1049
956
  this.removeOpenListeners();
1050
957
 
@@ -1597,23 +1504,55 @@ export class NileVirtualSelect extends NileElement implements NileFormControl {
1597
1504
  }, 1);
1598
1505
  }
1599
1506
 
1600
- private resetScrollPosition(): void {
1601
- this.updateComplete.then(() => {
1602
- if (this.virtualizedContainer && this.virtualizedContainer.isConnected) {
1603
- this.virtualizedContainer.scrollTop = 0;
1604
-
1605
- const listbox = this.shadowRoot?.querySelector('.select__listbox') as HTMLElement;
1606
- if (listbox && listbox.isConnected) {
1607
- listbox.scrollTop = 0;
1507
+ private async resetScrollPosition(): Promise<void> {
1508
+ await this.updateComplete;
1509
+ requestAnimationFrame(() => {
1510
+ requestAnimationFrame(() => {
1511
+ let listbox: HTMLElement | null = null;
1512
+
1513
+ // Select listbox (portal vs non-portal)
1514
+ if (this.portal && this.portalManager.portalContainerElement) {
1515
+ listbox = this.portalManager.portalContainerElement.querySelector('#listbox') as HTMLElement;
1516
+ } else {
1517
+ listbox = this.shadowRoot?.querySelector('#listbox') as HTMLElement;
1608
1518
  }
1609
-
1610
- const virtualizer = this.virtualizedContainer.querySelector('lit-virtualizer') as HTMLElement;
1519
+
1520
+ if (!listbox || !listbox.isConnected) return;
1521
+
1522
+ // Always reset scroll position
1523
+ listbox.scrollTop = 0;
1524
+
1525
+ // When very few items, collapse overflow completely
1526
+ const virtualized = listbox.querySelector('.virtualized') as HTMLElement;
1527
+ if (virtualized && virtualized.isConnected) {
1528
+ const fewItems = this.data.length <= 5;
1529
+
1530
+ if (fewItems) {
1531
+ // 👇 Prevent *any* scrolling and let height shrink
1532
+ virtualized.style.overflowY = 'hidden';
1533
+ virtualized.style.maxHeight = 'none';
1534
+ listbox.style.overflowY = 'hidden';
1535
+ listbox.style.maxHeight = 'fit-content';
1536
+ } else {
1537
+ // 👇 Re-enable scrolling when many items
1538
+ virtualized.style.overflowY = 'auto';
1539
+ virtualized.style.maxHeight = '';
1540
+ listbox.style.overflowY = 'auto';
1541
+ listbox.style.maxHeight = '';
1542
+ }
1543
+
1544
+ virtualized.scrollTop = 0;
1545
+ }
1546
+
1547
+ // lit-virtualizer (if used)
1548
+ const virtualizer = listbox.querySelector('lit-virtualizer') as HTMLElement;
1611
1549
  if (virtualizer && virtualizer.isConnected) {
1612
1550
  virtualizer.scrollTop = 0;
1613
1551
  }
1614
- }
1552
+ });
1615
1553
  });
1616
1554
  }
1555
+
1617
1556
 
1618
1557
  }
1619
1558
 
@@ -3465,7 +3465,7 @@
3465
3465
  },
3466
3466
  {
3467
3467
  "name": "nile-select",
3468
- "description": "Events:\n\n * `nile-change` {} - Emitted when the control's value changes.\n\n * `nile-clear` {} - Emitted when the control's value is cleared.\n\n * `nile-input` {} - Emitted when the control receives input.\n\n * `nile-focus` {} - Emitted when the control gains focus.\n\n * `nile-blur` {} - Emitted when the control loses focus.\n\n * `nile-show` {} - Emitted when the select's menu opens.\n\n * `nile-after-show` {} - Emitted after the select's menu opens and all animations are complete.\n\n * `nile-hide` {} - Emitted when the select's menu closes.\n\n * `nile-after-hide` {} - Emitted after the select's menu closes and all animations are complete.\n\n * `nile-invalid` {} - Emitted when the form control has been checked for validity and its constraints aren't satisfied.\n\n * `nile-search` {} - Emitted when the user types in the search input. The event payload includes the search query for backend search functionality.\n\n * `nile-scroll` {} - Emitted when the user scrolls within the listbox. The event payload includes scroll position information.\n\n * `nile-scroll-start` {} - Emitted when the user starts scrolling within the listbox.\n\n * `nile-scroll-end` {} - Emitted when the user stops scrolling and reaches the bottom of the listbox (debounced).\n\nSlots:\n\n * ` ` {} - The listbox options. Must be `<nile-option>` elements. You can use `<nile-divider>` to group items visually.\n\n * `label` {} - The input's label. Alternatively, you can use the `label` attribute.\n\n * `prefix` {} - Used to prepend a presentational icon or similar element to the combobox.\n\n * `clear-icon` {} - An icon to use in lieu of the default clear icon.\n\n * `expand-icon` {} - The icon to show when the control is expanded and collapsed. Rotates on open and close.\n\n * `help-text` {} - Text that describes how to use the input. Alternatively, you can use the `help-text` attribute.\n\nAttributes:\n\n * `size` {`\"small\" | \"medium\" | \"large\"`} - The select's size.\n\n * `placeholder` {`string`} - Placeholder text to show as a hint when the select is empty.\n\n * `searchEnabled` {`boolean`} - \n\n * `internal-search-placeholder` {`string`} - \n\n * `enableVisibilityEffect` {`boolean`} - \n\n * `blockValueChange` {`boolean`} - \n\n * `disableLocalSearch` {`boolean`} - \n\n * `optionsLoading` {`boolean`} - \n\n * `noWidthSync` {`boolean`} - \n\n * `portal` {`boolean`} - When true, the listbox will be appended to the document body instead of the parent container.\nThis is useful when the parent has overflow: hidden, clip-path, or transform applied.\n\n * `multiple` {`string | boolean`} - Allows more than one option to be selected.\n\n * `helpText` {`string`} - \n\n * `help-text` {`string`} - \n\n * `autoResize` {`boolean`} - \n\n * `error-message` {`string`} - \n\n * `warning` {`boolean`} - Sets the input to a warning state, changing its visual appearance.\n\n * `error` {`boolean`} - Sets the input to an error state, changing its visual appearance.\n\n * `success` {`boolean`} - Sets the input to a success state, changing its visual appearance.\n\n * `max-options-visible` {`number`} - The maximum number of selected options to show when `multiple` is true. After the maximum, \"+n\" will be shown to\nindicate the number of additional items that are selected. Set to 0 to remove the limit.\n\n * `clearable` {`boolean`} - Adds a clear button when the select is not empty.\n\n * `open` {`boolean`} - Indicates whether or not the select is open. You can toggle this attribute to show and hide the menu, or you can\nuse the `show()` and `hide()` methods and this attribute will reflect the select's open state.\n\n * `hoist` {`boolean`} - 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 * `filled` {`boolean`} - Draws a filled select.\n\n * `pill` {`boolean`} - Draws a pill-style select with rounded edges.\n\n * `label` {`string`} - The select's label. If you need to display HTML, use the `label` slot instead.\n\n * `placement` {`\"top\" | \"bottom\"`} - The preferred placement of the select's menu. Note that the actual placement may vary as needed to keep the listbox\ninside of the viewport.\n\n * `showSelected` {`boolean`} - \n\n * `enableTabClose` {`boolean`} - \n\n * `showNoResults` {`boolean`} - \n\n * `noResultsMessage` {`string`} - \n\n * `data` - \n\n * `enableVirtualScroll` {`boolean`} - \n\n * `enableGroupHeader` {`boolean`} - To enable the group header in the select\n\n * `autoFocusSearch` {`boolean`} - To auto focus the search input when the select is opened\n\n * `loading` {`boolean`} - loading indicator for virtual select\n\n * `name` {`string`} - The name of the select, submitted as a name/value pair with form data.\n\n * `value` {`string | string[]`} - The current value of the select, submitted as a name/value pair with form data. When `multiple` is enabled, the\nvalue will be a space-delimited list of values based on the options selected.\n\n * `disabled` {`boolean`} - Disables the select control.\n\n * `form` {`string`} - By default, form controls are associated with the nearest containing `<form>` element. This attribute allows you\nto place the form control outside of a form and associate it with the form that has this `id`. The form must be in\nthe same document or shadow root for this to work.\n\n * `required` {`boolean`} - The select's required attribute.\n\nProperties:\n\n * `styles` - \n\n * `formControlController` - \n\n * `virtualScrollHelper` - \n\n * `portalManager` - \n\n * `hasSlotController` - \n\n * `typeToSelectString` {`string`} - \n\n * `typeToSelectTimeout` {`number`} - \n\n * `scrollTimeout` {`number | undefined`} - \n\n * `scrolling` {`boolean`} - \n\n * `options` {`NileOption[]`} - \n\n * `resizeController` - \n\n * `popup` - \n\n * `combobox` {`HTMLSlotElement`} - \n\n * `displayInput` {`HTMLInputElement`} - \n\n * `valueInput` {`HTMLInputElement`} - \n\n * `listbox` {`HTMLSlotElement`} - \n\n * `hasFocus` {`boolean`} - \n\n * `displayLabel` {`string`} - \n\n * `currentOption` - \n\n * `selectedOptions` {`NileOption[]`} - \n\n * `oldValue` {`string | string[]`} - \n\n * `size` {`\"small\" | \"medium\" | \"large\"`} - The select's size.\n\n * `placeholder` {`string`} - Placeholder text to show as a hint when the select is empty.\n\n * `searchValue` {`string`} - Placeholder text to show as a hint when the select is empty.\n\n * `searchEnabled` {`boolean`} - \n\n * `internalSearchPlaceHolder` {`string`} - \n\n * `enableVisibilityEffect` {`boolean`} - \n\n * `blockValueChange` {`boolean`} - \n\n * `disableLocalSearch` {`boolean`} - \n\n * `optionsLoading` {`boolean`} - \n\n * `noWidthSync` {`boolean`} - \n\n * `portal` {`boolean`} - When true, the listbox will be appended to the document body instead of the parent container.\nThis is useful when the parent has overflow: hidden, clip-path, or transform applied.\n\n * `multiple` {`string | boolean`} - Allows more than one option to be selected.\n\n * `helpText` {`string`} - \n\n * `help_text` {`string`} - \n\n * `autoResize` {`boolean`} - \n\n * `errorMessage` {`string`} - \n\n * `warning` {`boolean`} - Sets the input to a warning state, changing its visual appearance.\n\n * `error` {`boolean`} - Sets the input to an error state, changing its visual appearance.\n\n * `success` {`boolean`} - Sets the input to a success state, changing its visual appearance.\n\n * `maxOptionsVisible` {`number`} - The maximum number of selected options to show when `multiple` is true. After the maximum, \"+n\" will be shown to\nindicate the number of additional items that are selected. Set to 0 to remove the limit.\n\n * `clearable` {`boolean`} - Adds a clear button when the select is not empty.\n\n * `open` {`boolean`} - Indicates whether or not the select is open. You can toggle this attribute to show and hide the menu, or you can\nuse the `show()` and `hide()` methods and this attribute will reflect the select's open state.\n\n * `hoist` {`boolean`} - 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 * `filled` {`boolean`} - Draws a filled select.\n\n * `pill` {`boolean`} - Draws a pill-style select with rounded edges.\n\n * `label` {`string`} - The select's label. If you need to display HTML, use the `label` slot instead.\n\n * `placement` {`\"top\" | \"bottom\"`} - The preferred placement of the select's menu. Note that the actual placement may vary as needed to keep the listbox\ninside of the viewport.\n\n * `showSelected` {`boolean`} - \n\n * `oldMaxOptionsVisible` {`number`} - \n\n * `enableTabClose` {`boolean`} - \n\n * `showNoResults` {`boolean`} - \n\n * `noResultsMessage` {`string`} - \n\n * `renderItemConfig` {`RenderItemConfig | undefined`} - Enhanced configuration for rendering items with support for display text, value, and search text\n\n * `data` - \n\n * `enableVirtualScroll` {`boolean`} - \n\n * `enableGroupHeader` {`boolean`} - To enable the group header in the select\n\n * `autoFocusSearch` {`boolean`} - To auto focus the search input when the select is opened\n\n * `loading` {`boolean`} - loading indicator for virtual select\n\n * `anchorVisibilityObservers` {`IntersectionObserver[]`} - All active IntersectionObservers for visibility detection\n\n * `handleDocumentVisibilityChange` - Handles tab visibility (page hidden / tab switched)\n\n * `handleWindowResize` - \n\n * `handleWindowScroll` - \n\n * `name` {`string`} - The name of the select, submitted as a name/value pair with form data.\n\n * `value` {`string | string[]`} - The current value of the select, submitted as a name/value pair with form data. When `multiple` is enabled, the\nvalue will be a space-delimited list of values based on the options selected.\n\n * `disabled` {`boolean`} - Disables the select control.\n\n * `defaultValue` {`string | string[]`} - The default value of the form control. Primarily used for resetting the form control.\n\n * `defaultChecked` {`boolean | undefined`} - \n\n * `form` {`string`} - By default, form controls are associated with the nearest containing `<form>` element. This attribute allows you\nto place the form control outside of a form and associate it with the form that has this `id`. The form must be in\nthe same document or shadow root for this to work.\n\n * `pattern` {`string | undefined`} - \n\n * `min` {`string | number | Date | undefined`} - \n\n * `max` {`string | number | Date | undefined`} - \n\n * `step` {`number | \"any\" | undefined`} - \n\n * `required` {`boolean`} - The select's required attribute.\n\n * `minlength` {`number | undefined`} - \n\n * `maxlength` {`number | undefined`} - \n\n * `validity` {`ValidityState`} - Gets the validity state object\n\n * `validationMessage` {`string`} - Gets the validation message\n\n * `checkValidity` - \n\n * `getForm` - \n\n * `reportValidity` - \n\n * `setCustomValidity` - \n\n * `BUBBLES` {`boolean`} - \n\n * `COMPOSED` {`boolean`} - \n\n * `CANCELABLE` {`boolean`} - ",
3468
+ "description": "Events:\n\n * `nile-change` {} - Emitted when the control's value changes.\n\n * `nile-clear` {} - Emitted when the control's value is cleared.\n\n * `nile-input` {} - Emitted when the control receives input.\n\n * `nile-focus` {} - Emitted when the control gains focus.\n\n * `nile-blur` {} - Emitted when the control loses focus.\n\n * `nile-show` {} - Emitted when the select's menu opens.\n\n * `nile-after-show` {} - Emitted after the select's menu opens and all animations are complete.\n\n * `nile-hide` {} - Emitted when the select's menu closes.\n\n * `nile-after-hide` {} - Emitted after the select's menu closes and all animations are complete.\n\n * `nile-invalid` {} - Emitted when the form control has been checked for validity and its constraints aren't satisfied.\n\n * `nile-search` {} - Emitted when the user types in the search input. The event payload includes the search query for backend search functionality.\n\n * `nile-scroll` {} - Emitted when the user scrolls within the listbox. The event payload includes scroll position information.\n\n * `nile-scroll-start` {} - Emitted when the user starts scrolling within the listbox.\n\n * `nile-scroll-end` {} - Emitted when the user stops scrolling and reaches the bottom of the listbox (debounced).\n\nSlots:\n\n * ` ` {} - The listbox options. Must be `<nile-option>` elements. You can use `<nile-divider>` to group items visually.\n\n * `label` {} - The input's label. Alternatively, you can use the `label` attribute.\n\n * `prefix` {} - Used to prepend a presentational icon or similar element to the combobox.\n\n * `clear-icon` {} - An icon to use in lieu of the default clear icon.\n\n * `expand-icon` {} - The icon to show when the control is expanded and collapsed. Rotates on open and close.\n\n * `help-text` {} - Text that describes how to use the input. Alternatively, you can use the `help-text` attribute.\n\nAttributes:\n\n * `size` {`\"small\" | \"medium\" | \"large\"`} - The select's size.\n\n * `placeholder` {`string`} - Placeholder text to show as a hint when the select is empty.\n\n * `searchEnabled` {`boolean`} - \n\n * `internal-search-placeholder` {`string`} - \n\n * `blockValueChange` {`boolean`} - \n\n * `disableLocalSearch` {`boolean`} - \n\n * `optionsLoading` {`boolean`} - \n\n * `noWidthSync` {`boolean`} - \n\n * `portal` {`boolean`} - When true, the listbox will be appended to the document body instead of the parent container.\nThis is useful when the parent has overflow: hidden, clip-path, or transform applied.\n\n * `multiple` {`string | boolean`} - Allows more than one option to be selected.\n\n * `helpText` {`string`} - \n\n * `help-text` {`string`} - \n\n * `autoResize` {`boolean`} - \n\n * `error-message` {`string`} - \n\n * `warning` {`boolean`} - Sets the input to a warning state, changing its visual appearance.\n\n * `error` {`boolean`} - Sets the input to an error state, changing its visual appearance.\n\n * `success` {`boolean`} - Sets the input to a success state, changing its visual appearance.\n\n * `max-options-visible` {`number`} - The maximum number of selected options to show when `multiple` is true. After the maximum, \"+n\" will be shown to\nindicate the number of additional items that are selected. Set to 0 to remove the limit.\n\n * `clearable` {`boolean`} - Adds a clear button when the select is not empty.\n\n * `open` {`boolean`} - Indicates whether or not the select is open. You can toggle this attribute to show and hide the menu, or you can\nuse the `show()` and `hide()` methods and this attribute will reflect the select's open state.\n\n * `hoist` {`boolean`} - 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 * `filled` {`boolean`} - Draws a filled select.\n\n * `pill` {`boolean`} - Draws a pill-style select with rounded edges.\n\n * `label` {`string`} - The select's label. If you need to display HTML, use the `label` slot instead.\n\n * `placement` {`\"top\" | \"bottom\"`} - The preferred placement of the select's menu. Note that the actual placement may vary as needed to keep the listbox\ninside of the viewport.\n\n * `showSelected` {`boolean`} - \n\n * `showNoResults` {`boolean`} - \n\n * `noResultsMessage` {`string`} - \n\n * `data` - \n\n * `enableVirtualScroll` {`boolean`} - \n\n * `enableGroupHeader` {`boolean`} - To enable the group header in the select\n\n * `autoFocusSearch` {`boolean`} - To auto focus the search input when the select is opened\n\n * `loading` {`boolean`} - loading indicator for virtual select\n\n * `name` {`string`} - The name of the select, submitted as a name/value pair with form data.\n\n * `value` {`string | string[]`} - The current value of the select, submitted as a name/value pair with form data. When `multiple` is enabled, the\nvalue will be a space-delimited list of values based on the options selected.\n\n * `disabled` {`boolean`} - Disables the select control.\n\n * `form` {`string`} - By default, form controls are associated with the nearest containing `<form>` element. This attribute allows you\nto place the form control outside of a form and associate it with the form that has this `id`. The form must be in\nthe same document or shadow root for this to work.\n\n * `required` {`boolean`} - The select's required attribute.\n\nProperties:\n\n * `styles` - \n\n * `formControlController` - \n\n * `virtualScrollHelper` - \n\n * `portalManager` - \n\n * `hasSlotController` - \n\n * `typeToSelectString` {`string`} - \n\n * `typeToSelectTimeout` {`number`} - \n\n * `scrollTimeout` {`number | undefined`} - \n\n * `scrolling` {`boolean`} - \n\n * `options` {`NileOption[]`} - \n\n * `resizeController` - \n\n * `popup` - \n\n * `combobox` {`HTMLSlotElement`} - \n\n * `displayInput` {`HTMLInputElement`} - \n\n * `valueInput` {`HTMLInputElement`} - \n\n * `listbox` {`HTMLSlotElement`} - \n\n * `hasFocus` {`boolean`} - \n\n * `displayLabel` {`string`} - \n\n * `currentOption` - \n\n * `selectedOptions` {`NileOption[]`} - \n\n * `oldValue` {`string | string[]`} - \n\n * `size` {`\"small\" | \"medium\" | \"large\"`} - The select's size.\n\n * `placeholder` {`string`} - Placeholder text to show as a hint when the select is empty.\n\n * `searchValue` {`string`} - Placeholder text to show as a hint when the select is empty.\n\n * `searchEnabled` {`boolean`} - \n\n * `internalSearchPlaceHolder` {`string`} - \n\n * `blockValueChange` {`boolean`} - \n\n * `disableLocalSearch` {`boolean`} - \n\n * `optionsLoading` {`boolean`} - \n\n * `noWidthSync` {`boolean`} - \n\n * `portal` {`boolean`} - When true, the listbox will be appended to the document body instead of the parent container.\nThis is useful when the parent has overflow: hidden, clip-path, or transform applied.\n\n * `multiple` {`string | boolean`} - Allows more than one option to be selected.\n\n * `helpText` {`string`} - \n\n * `help_text` {`string`} - \n\n * `autoResize` {`boolean`} - \n\n * `errorMessage` {`string`} - \n\n * `warning` {`boolean`} - Sets the input to a warning state, changing its visual appearance.\n\n * `error` {`boolean`} - Sets the input to an error state, changing its visual appearance.\n\n * `success` {`boolean`} - Sets the input to a success state, changing its visual appearance.\n\n * `maxOptionsVisible` {`number`} - The maximum number of selected options to show when `multiple` is true. After the maximum, \"+n\" will be shown to\nindicate the number of additional items that are selected. Set to 0 to remove the limit.\n\n * `clearable` {`boolean`} - Adds a clear button when the select is not empty.\n\n * `open` {`boolean`} - Indicates whether or not the select is open. You can toggle this attribute to show and hide the menu, or you can\nuse the `show()` and `hide()` methods and this attribute will reflect the select's open state.\n\n * `hoist` {`boolean`} - 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 * `filled` {`boolean`} - Draws a filled select.\n\n * `pill` {`boolean`} - Draws a pill-style select with rounded edges.\n\n * `label` {`string`} - The select's label. If you need to display HTML, use the `label` slot instead.\n\n * `placement` {`\"top\" | \"bottom\"`} - The preferred placement of the select's menu. Note that the actual placement may vary as needed to keep the listbox\ninside of the viewport.\n\n * `showSelected` {`boolean`} - \n\n * `oldMaxOptionsVisible` {`number`} - \n\n * `showNoResults` {`boolean`} - \n\n * `noResultsMessage` {`string`} - \n\n * `renderItemConfig` {`RenderItemConfig | undefined`} - Enhanced configuration for rendering items with support for display text, value, and search text\n\n * `data` - \n\n * `enableVirtualScroll` {`boolean`} - \n\n * `enableGroupHeader` {`boolean`} - To enable the group header in the select\n\n * `autoFocusSearch` {`boolean`} - To auto focus the search input when the select is opened\n\n * `loading` {`boolean`} - loading indicator for virtual select\n\n * `handleWindowResize` - \n\n * `handleWindowScroll` - \n\n * `name` {`string`} - The name of the select, submitted as a name/value pair with form data.\n\n * `value` {`string | string[]`} - The current value of the select, submitted as a name/value pair with form data. When `multiple` is enabled, the\nvalue will be a space-delimited list of values based on the options selected.\n\n * `disabled` {`boolean`} - Disables the select control.\n\n * `defaultValue` {`string | string[]`} - The default value of the form control. Primarily used for resetting the form control.\n\n * `defaultChecked` {`boolean | undefined`} - \n\n * `form` {`string`} - By default, form controls are associated with the nearest containing `<form>` element. This attribute allows you\nto place the form control outside of a form and associate it with the form that has this `id`. The form must be in\nthe same document or shadow root for this to work.\n\n * `pattern` {`string | undefined`} - \n\n * `min` {`string | number | Date | undefined`} - \n\n * `max` {`string | number | Date | undefined`} - \n\n * `step` {`number | \"any\" | undefined`} - \n\n * `required` {`boolean`} - The select's required attribute.\n\n * `minlength` {`number | undefined`} - \n\n * `maxlength` {`number | undefined`} - \n\n * `validity` {`ValidityState`} - Gets the validity state object\n\n * `validationMessage` {`string`} - Gets the validation message\n\n * `checkValidity` - \n\n * `getForm` - \n\n * `reportValidity` - \n\n * `setCustomValidity` - \n\n * `BUBBLES` {`boolean`} - \n\n * `COMPOSED` {`boolean`} - \n\n * `CANCELABLE` {`boolean`} - ",
3469
3469
  "attributes": [
3470
3470
  {
3471
3471
  "name": "size",
@@ -3495,11 +3495,6 @@
3495
3495
  "name": "internal-search-placeholder",
3496
3496
  "description": "`internal-search-placeholder` {`string`} - \n\nProperty: internalSearchPlaceHolder\n\nDefault: Search..."
3497
3497
  },
3498
- {
3499
- "name": "enableVisibilityEffect",
3500
- "description": "`enableVisibilityEffect` {`boolean`} - \n\nProperty: enableVisibilityEffect\n\nDefault: false",
3501
- "valueSet": "v"
3502
- },
3503
3498
  {
3504
3499
  "name": "blockValueChange",
3505
3500
  "description": "`blockValueChange` {`boolean`} - \n\nProperty: blockValueChange\n\nDefault: false",
@@ -3612,11 +3607,6 @@
3612
3607
  "description": "`showSelected` {`boolean`} - \n\nProperty: showSelected\n\nDefault: false",
3613
3608
  "valueSet": "v"
3614
3609
  },
3615
- {
3616
- "name": "enableTabClose",
3617
- "description": "`enableTabClose` {`boolean`} - \n\nProperty: enableTabClose\n\nDefault: false",
3618
- "valueSet": "v"
3619
- },
3620
3610
  {
3621
3611
  "name": "showNoResults",
3622
3612
  "description": "`showNoResults` {`boolean`} - \n\nProperty: showNoResults\n\nDefault: false",
@@ -5179,7 +5169,7 @@
5179
5169
  },
5180
5170
  {
5181
5171
  "name": "nile-virtual-select",
5182
- "description": "Events:\n\n * `nile-change` {} - Emitted when the control's value changes.\n\n * `nile-clear` {} - Emitted when the control's value is cleared.\n\n * `nile-input` {} - Emitted when the control receives input.\n\n * `nile-focus` {} - Emitted when the control gains focus.\n\n * `nile-blur` {} - Emitted when the control loses focus.\n\n * `nile-show` {} - Emitted when the select's menu opens.\n\n * `nile-after-show` {} - Emitted after the select's menu opens and all animations are complete.\n\n * `nile-hide` {} - Emitted when the select's menu closes.\n\n * `nile-after-hide` {} - Emitted after the select's menu closes and all animations are complete.\n\n * `nile-invalid` {} - Emitted when the form control has been checked for validity and its constraints aren't satisfied.\n\n * `nile-search` {} - Emitted when the user types in the search input. The event payload includes the search query for backend search functionality.\n\n * `nile-scroll` {} - Emitted when the user scrolls within the virtualized container. The event payload includes scroll position information.\n\n * `nile-scroll-start` {} - Emitted when the user starts scrolling within the virtualized container.\n\n * `nile-scroll-end` {} - Emitted when the user stops scrolling and reaches the bottom of the virtualized container (debounced).\n\nSlots:\n\n * `label` {} - The input's label. Alternatively, you can use the `label` attribute.\n\n * `prefix` {} - Used to prepend a presentational icon or similar element to the combobox.\n\n * `clear-icon` {} - An icon to use in lieu of the default clear icon.\n\n * `expand-icon` {} - The icon to show when the control is expanded and collapsed.\n\n * `help-text` {} - Text that describes how to use the input. Alternatively, you can use the `help-text` attribute.\n\nAttributes:\n\n * `data` - Array of all option items for virtual scrolling\n\n * `size` {`\"small\" | \"medium\" | \"large\"`} - The select's size.\n\n * `placeholder` {`string`} - Placeholder text to show as a hint when the select is empty.\n\n * `autoResize` {`boolean`} - Enable automatic resizing of tags area\n\n * `searchEnabled` {`boolean`} - Enable search functionality\n\n * `enableVisibilityEffect` {`boolean`} - \n\n * `internal-search-placeholder` {`string`} - Search input placeholder\n\n * `disableLocalSearch` {`boolean`} - Disable local search filtering\n\n * `optionsLoading` {`boolean`} - Show loading state\n\n * `loading` {`boolean`} - Show loading state using nile-loader\n\n * `multiple` {`boolean`} - Allows more than one option to be selected.\n\n * `help-text` {`string`} - Help text\n\n * `error-message` {`string`} - Error message\n\n * `warning` {`boolean`} - Sets the input to a warning state\n\n * `error` {`boolean`} - Sets the input to an error state\n\n * `success` {`boolean`} - Sets the input to a success state\n\n * `clearable` {`boolean`} - Adds a clear button when the select is not empty.\n\n * `open` {`boolean`} - The select's open state.\n\n * `hoist` {`boolean`} - 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 * `filled` {`boolean`} - Draws a filled select.\n\n * `pill` {`boolean`} - Draws a pill-style select with rounded edges.\n\n * `label` {`string`} - The select's label. If you need to display HTML, use the `label` slot instead.\n\n * `placement` {`\"top\" | \"bottom\"`} - The preferred placement of the select's menu. Note that the actual placement may vary as needed to keep the listbox\ninside of the viewport.\n\n * `showNoResults` {`boolean`} - Show no results message\n\n * `noResultsMessage` {`string`} - No results message\n\n * `showSelected` {`boolean`} - Show selected options only\n\n * `blockValueChange` {`boolean`} - Block value change events\n\n * `noWidthSync` {`boolean`} - Disable width synchronization\n\n * `portal` {`boolean`} - When true, the listbox will be appended to the document body instead of the parent container.\nThis is useful when the parent has overflow: hidden, clip-path, or transform applied.\n\n * `max-options-visible` {`number`} - The maximum number of selected options to show when `multiple` is true. After the maximum, \"+n\" will be shown to\nindicate the number of additional items that are selected. Set to 0 to remove the limit.\n\n * `enableTabClose` {`boolean`} - \n\n * `name` {`string`} - The name of the select, submitted as a name/value pair with form data.\n\n * `value` {`string | string[]`} - The current value of the select. When `multiple` is enabled, the value will be an array of selected values.\n\n * `disabled` {`boolean`} - Disables the select control.\n\n * `form` {`string`} - By default, form controls are associated with the nearest containing `<form>` element. This attribute allows you\nto place the form control outside of a form and associate it with the form that has this `id`. The form must be in\nthe same document or shadow root for this to work.\n\n * `required` {`boolean`} - The select's required attribute.\n\nProperties:\n\n * `styles` - \n\n * `formControlController` - \n\n * `hasSlotController` - \n\n * `portalManager` - \n\n * `popup` - \n\n * `combobox` {`HTMLElement`} - \n\n * `displayInput` {`HTMLInputElement`} - \n\n * `valueInput` {`HTMLInputElement`} - \n\n * `virtualizedContainer` {`HTMLElement`} - \n\n * `hasFocus` {`boolean`} - \n\n * `displayLabel` {`string`} - \n\n * `selectedOptions` {`VirtualOption[]`} - \n\n * `oldValue` {`string | string[]`} - \n\n * `scrollTimeout` {`number | undefined`} - \n\n * `scrolling` {`boolean`} - \n\n * `data` - Array of all option items for virtual scrolling\n\n * `originalOptionItems` - Original unfiltered option items for search functionality\n\n * `size` {`\"small\" | \"medium\" | \"large\"`} - The select's size.\n\n * `placeholder` {`string`} - Placeholder text to show as a hint when the select is empty.\n\n * `autoResize` {`boolean`} - Enable automatic resizing of tags area\n\n * `searchValue` {`string`} - Current search value\n\n * `searchEnabled` {`boolean`} - Enable search functionality\n\n * `enableVisibilityEffect` {`boolean`} - \n\n * `internalSearchPlaceHolder` {`string`} - Search input placeholder\n\n * `disableLocalSearch` {`boolean`} - Disable local search filtering\n\n * `optionsLoading` {`boolean`} - Show loading state\n\n * `loading` {`boolean`} - Show loading state using nile-loader\n\n * `multiple` {`boolean`} - Allows more than one option to be selected.\n\n * `helpText` {`string`} - Help text\n\n * `errorMessage` {`string`} - Error message\n\n * `warning` {`boolean`} - Sets the input to a warning state\n\n * `error` {`boolean`} - Sets the input to an error state\n\n * `success` {`boolean`} - Sets the input to a success state\n\n * `clearable` {`boolean`} - Adds a clear button when the select is not empty.\n\n * `open` {`boolean`} - The select's open state.\n\n * `hoist` {`boolean`} - 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 * `filled` {`boolean`} - Draws a filled select.\n\n * `pill` {`boolean`} - Draws a pill-style select with rounded edges.\n\n * `label` {`string`} - The select's label. If you need to display HTML, use the `label` slot instead.\n\n * `placement` {`\"top\" | \"bottom\"`} - The preferred placement of the select's menu. Note that the actual placement may vary as needed to keep the listbox\ninside of the viewport.\n\n * `showNoResults` {`boolean`} - Show no results message\n\n * `noResultsMessage` {`string`} - No results message\n\n * `showSelected` {`boolean`} - Show selected options only\n\n * `renderItemConfig` {`RenderItemConfig | undefined`} - Enhanced configuration for rendering items with support for display text, value, and search text\n\n * `blockValueChange` {`boolean`} - Block value change events\n\n * `noWidthSync` {`boolean`} - Disable width synchronization\n\n * `portal` {`boolean`} - When true, the listbox will be appended to the document body instead of the parent container.\nThis is useful when the parent has overflow: hidden, clip-path, or transform applied.\n\n * `maxOptionsVisible` {`number`} - The maximum number of selected options to show when `multiple` is true. After the maximum, \"+n\" will be shown to\nindicate the number of additional items that are selected. Set to 0 to remove the limit.\n\n * `oldMaxOptionsVisible` {`number`} - \n\n * `enableTabClose` {`boolean`} - \n\n * `showListbox` {`boolean`} - \n\n * `wasShowSelectedCheckedOnClose` {`boolean`} - \n\n * `anchorVisibilityObservers` {`IntersectionObserver[]`} - All active IntersectionObservers for visibility detection\n\n * `handleDocumentVisibilityChange` - Handles tab visibility (page hidden / tab switched)\n\n * `handleDocumentMouseDown` - \n\n * `handleWindowError` - This is a workaround for an error in the Lit Labs virtualizer.\nSince there are no specific guidelines available to fix the issue,\nwe are catching only the error message related to the virtualizer.\n\n * `handleWindowResize` - \n\n * `handleWindowScroll` - \n\n * `resizeController` - \n\n * `name` {`string`} - The name of the select, submitted as a name/value pair with form data.\n\n * `value` {`string | string[]`} - The current value of the select. When `multiple` is enabled, the value will be an array of selected values.\n\n * `disabled` {`boolean`} - Disables the select control.\n\n * `defaultValue` {`string | string[]`} - The default value of the form control. Primarily used for resetting the form control.\n\n * `defaultChecked` {`boolean | undefined`} - \n\n * `form` {`string`} - By default, form controls are associated with the nearest containing `<form>` element. This attribute allows you\nto place the form control outside of a form and associate it with the form that has this `id`. The form must be in\nthe same document or shadow root for this to work.\n\n * `pattern` {`string | undefined`} - \n\n * `min` {`string | number | Date | undefined`} - \n\n * `max` {`string | number | Date | undefined`} - \n\n * `step` {`number | \"any\" | undefined`} - \n\n * `required` {`boolean`} - The select's required attribute.\n\n * `minlength` {`number | undefined`} - \n\n * `maxlength` {`number | undefined`} - \n\n * `validity` {`ValidityState`} - Gets the validity state object\n\n * `validationMessage` {`string`} - Gets the validation message\n\n * `checkValidity` - \n\n * `getForm` - \n\n * `reportValidity` - \n\n * `setCustomValidity` - \n\n * `BUBBLES` {`boolean`} - \n\n * `COMPOSED` {`boolean`} - \n\n * `CANCELABLE` {`boolean`} - ",
5172
+ "description": "Events:\n\n * `nile-change` {} - Emitted when the control's value changes.\n\n * `nile-clear` {} - Emitted when the control's value is cleared.\n\n * `nile-input` {} - Emitted when the control receives input.\n\n * `nile-focus` {} - Emitted when the control gains focus.\n\n * `nile-blur` {} - Emitted when the control loses focus.\n\n * `nile-show` {} - Emitted when the select's menu opens.\n\n * `nile-after-show` {} - Emitted after the select's menu opens and all animations are complete.\n\n * `nile-hide` {} - Emitted when the select's menu closes.\n\n * `nile-after-hide` {} - Emitted after the select's menu closes and all animations are complete.\n\n * `nile-invalid` {} - Emitted when the form control has been checked for validity and its constraints aren't satisfied.\n\n * `nile-search` {} - Emitted when the user types in the search input. The event payload includes the search query for backend search functionality.\n\n * `nile-scroll` {} - Emitted when the user scrolls within the virtualized container. The event payload includes scroll position information.\n\n * `nile-scroll-start` {} - Emitted when the user starts scrolling within the virtualized container.\n\n * `nile-scroll-end` {} - Emitted when the user stops scrolling and reaches the bottom of the virtualized container (debounced).\n\nSlots:\n\n * `label` {} - The input's label. Alternatively, you can use the `label` attribute.\n\n * `prefix` {} - Used to prepend a presentational icon or similar element to the combobox.\n\n * `clear-icon` {} - An icon to use in lieu of the default clear icon.\n\n * `expand-icon` {} - The icon to show when the control is expanded and collapsed.\n\n * `help-text` {} - Text that describes how to use the input. Alternatively, you can use the `help-text` attribute.\n\nAttributes:\n\n * `data` - Array of all option items for virtual scrolling\n\n * `size` {`\"small\" | \"medium\" | \"large\"`} - The select's size.\n\n * `placeholder` {`string`} - Placeholder text to show as a hint when the select is empty.\n\n * `autoResize` {`boolean`} - Enable automatic resizing of tags area\n\n * `searchEnabled` {`boolean`} - Enable search functionality\n\n * `internal-search-placeholder` {`string`} - Search input placeholder\n\n * `disableLocalSearch` {`boolean`} - Disable local search filtering\n\n * `optionsLoading` {`boolean`} - Show loading state\n\n * `loading` {`boolean`} - Show loading state using nile-loader\n\n * `multiple` {`boolean`} - Allows more than one option to be selected.\n\n * `help-text` {`string`} - Help text\n\n * `error-message` {`string`} - Error message\n\n * `warning` {`boolean`} - Sets the input to a warning state\n\n * `error` {`boolean`} - Sets the input to an error state\n\n * `success` {`boolean`} - Sets the input to a success state\n\n * `clearable` {`boolean`} - Adds a clear button when the select is not empty.\n\n * `open` {`boolean`} - The select's open state.\n\n * `hoist` {`boolean`} - 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 * `filled` {`boolean`} - Draws a filled select.\n\n * `pill` {`boolean`} - Draws a pill-style select with rounded edges.\n\n * `label` {`string`} - The select's label. If you need to display HTML, use the `label` slot instead.\n\n * `placement` {`\"top\" | \"bottom\"`} - The preferred placement of the select's menu. Note that the actual placement may vary as needed to keep the listbox\ninside of the viewport.\n\n * `showNoResults` {`boolean`} - Show no results message\n\n * `noResultsMessage` {`string`} - No results message\n\n * `showSelected` {`boolean`} - Show selected options only\n\n * `blockValueChange` {`boolean`} - Block value change events\n\n * `noWidthSync` {`boolean`} - Disable width synchronization\n\n * `portal` {`boolean`} - When true, the listbox will be appended to the document body instead of the parent container.\nThis is useful when the parent has overflow: hidden, clip-path, or transform applied.\n\n * `max-options-visible` {`number`} - The maximum number of selected options to show when `multiple` is true. After the maximum, \"+n\" will be shown to\nindicate the number of additional items that are selected. Set to 0 to remove the limit.\n\n * `name` {`string`} - The name of the select, submitted as a name/value pair with form data.\n\n * `value` {`string | string[]`} - The current value of the select. When `multiple` is enabled, the value will be an array of selected values.\n\n * `disabled` {`boolean`} - Disables the select control.\n\n * `form` {`string`} - By default, form controls are associated with the nearest containing `<form>` element. This attribute allows you\nto place the form control outside of a form and associate it with the form that has this `id`. The form must be in\nthe same document or shadow root for this to work.\n\n * `required` {`boolean`} - The select's required attribute.\n\nProperties:\n\n * `styles` - \n\n * `formControlController` - \n\n * `hasSlotController` - \n\n * `portalManager` - \n\n * `popup` - \n\n * `combobox` {`HTMLElement`} - \n\n * `displayInput` {`HTMLInputElement`} - \n\n * `valueInput` {`HTMLInputElement`} - \n\n * `virtualizedContainer` {`HTMLElement`} - \n\n * `hasFocus` {`boolean`} - \n\n * `displayLabel` {`string`} - \n\n * `selectedOptions` {`VirtualOption[]`} - \n\n * `oldValue` {`string | string[]`} - \n\n * `scrollTimeout` {`number | undefined`} - \n\n * `scrolling` {`boolean`} - \n\n * `data` - Array of all option items for virtual scrolling\n\n * `originalOptionItems` - Original unfiltered option items for search functionality\n\n * `size` {`\"small\" | \"medium\" | \"large\"`} - The select's size.\n\n * `placeholder` {`string`} - Placeholder text to show as a hint when the select is empty.\n\n * `autoResize` {`boolean`} - Enable automatic resizing of tags area\n\n * `searchValue` {`string`} - Current search value\n\n * `searchEnabled` {`boolean`} - Enable search functionality\n\n * `internalSearchPlaceHolder` {`string`} - Search input placeholder\n\n * `disableLocalSearch` {`boolean`} - Disable local search filtering\n\n * `optionsLoading` {`boolean`} - Show loading state\n\n * `loading` {`boolean`} - Show loading state using nile-loader\n\n * `multiple` {`boolean`} - Allows more than one option to be selected.\n\n * `helpText` {`string`} - Help text\n\n * `errorMessage` {`string`} - Error message\n\n * `warning` {`boolean`} - Sets the input to a warning state\n\n * `error` {`boolean`} - Sets the input to an error state\n\n * `success` {`boolean`} - Sets the input to a success state\n\n * `clearable` {`boolean`} - Adds a clear button when the select is not empty.\n\n * `open` {`boolean`} - The select's open state.\n\n * `hoist` {`boolean`} - 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 * `filled` {`boolean`} - Draws a filled select.\n\n * `pill` {`boolean`} - Draws a pill-style select with rounded edges.\n\n * `label` {`string`} - The select's label. If you need to display HTML, use the `label` slot instead.\n\n * `placement` {`\"top\" | \"bottom\"`} - The preferred placement of the select's menu. Note that the actual placement may vary as needed to keep the listbox\ninside of the viewport.\n\n * `showNoResults` {`boolean`} - Show no results message\n\n * `noResultsMessage` {`string`} - No results message\n\n * `showSelected` {`boolean`} - Show selected options only\n\n * `renderItemConfig` {`RenderItemConfig | undefined`} - Enhanced configuration for rendering items with support for display text, value, and search text\n\n * `blockValueChange` {`boolean`} - Block value change events\n\n * `noWidthSync` {`boolean`} - Disable width synchronization\n\n * `portal` {`boolean`} - When true, the listbox will be appended to the document body instead of the parent container.\nThis is useful when the parent has overflow: hidden, clip-path, or transform applied.\n\n * `maxOptionsVisible` {`number`} - The maximum number of selected options to show when `multiple` is true. After the maximum, \"+n\" will be shown to\nindicate the number of additional items that are selected. Set to 0 to remove the limit.\n\n * `oldMaxOptionsVisible` {`number`} - \n\n * `showListbox` {`boolean`} - \n\n * `wasShowSelectedCheckedOnClose` {`boolean`} - \n\n * `handleDocumentMouseDown` - \n\n * `handleWindowError` - This is a workaround for an error in the Lit Labs virtualizer.\nSince there are no specific guidelines available to fix the issue,\nwe are catching only the error message related to the virtualizer.\n\n * `handleWindowResize` - \n\n * `handleWindowScroll` - \n\n * `resizeController` - \n\n * `name` {`string`} - The name of the select, submitted as a name/value pair with form data.\n\n * `value` {`string | string[]`} - The current value of the select. When `multiple` is enabled, the value will be an array of selected values.\n\n * `disabled` {`boolean`} - Disables the select control.\n\n * `defaultValue` {`string | string[]`} - The default value of the form control. Primarily used for resetting the form control.\n\n * `defaultChecked` {`boolean | undefined`} - \n\n * `form` {`string`} - By default, form controls are associated with the nearest containing `<form>` element. This attribute allows you\nto place the form control outside of a form and associate it with the form that has this `id`. The form must be in\nthe same document or shadow root for this to work.\n\n * `pattern` {`string | undefined`} - \n\n * `min` {`string | number | Date | undefined`} - \n\n * `max` {`string | number | Date | undefined`} - \n\n * `step` {`number | \"any\" | undefined`} - \n\n * `required` {`boolean`} - The select's required attribute.\n\n * `minlength` {`number | undefined`} - \n\n * `maxlength` {`number | undefined`} - \n\n * `validity` {`ValidityState`} - Gets the validity state object\n\n * `validationMessage` {`string`} - Gets the validation message\n\n * `checkValidity` - \n\n * `getForm` - \n\n * `reportValidity` - \n\n * `setCustomValidity` - \n\n * `BUBBLES` {`boolean`} - \n\n * `COMPOSED` {`boolean`} - \n\n * `CANCELABLE` {`boolean`} - ",
5183
5173
  "attributes": [
5184
5174
  {
5185
5175
  "name": "data",
@@ -5214,11 +5204,6 @@
5214
5204
  "description": "`searchEnabled` {`boolean`} - Enable search functionality\n\nProperty: searchEnabled\n\nDefault: false",
5215
5205
  "valueSet": "v"
5216
5206
  },
5217
- {
5218
- "name": "enableVisibilityEffect",
5219
- "description": "`enableVisibilityEffect` {`boolean`} - \n\nProperty: enableVisibilityEffect\n\nDefault: false",
5220
- "valueSet": "v"
5221
- },
5222
5207
  {
5223
5208
  "name": "internal-search-placeholder",
5224
5209
  "description": "`internal-search-placeholder` {`string`} - Search input placeholder\n\nProperty: internalSearchPlaceHolder\n\nDefault: Search..."
@@ -5340,11 +5325,6 @@
5340
5325
  "name": "max-options-visible",
5341
5326
  "description": "`max-options-visible` {`number`} - The maximum number of selected options to show when `multiple` is true. After the maximum, \"+n\" will be shown to\nindicate the number of additional items that are selected. Set to 0 to remove the limit.\n\nProperty: maxOptionsVisible\n\nDefault: 3"
5342
5327
  },
5343
- {
5344
- "name": "enableTabClose",
5345
- "description": "`enableTabClose` {`boolean`} - \n\nProperty: enableTabClose\n\nDefault: false",
5346
- "valueSet": "v"
5347
- },
5348
5328
  {
5349
5329
  "name": "name",
5350
5330
  "description": "`name` {`string`} - The name of the select, submitted as a name/value pair with form data.\n\nProperty: name\n\nDefault: "