ng-primitives 0.101.0 → 0.101.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.
@@ -874,8 +874,11 @@ class NgpCombobox {
874
874
  return false;
875
875
  }
876
876
  // Handle both NgpComboboxOption and T types
877
- const optionValue = option.value?.() ?? option;
877
+ const optionValue = isOption(option) ? option.value() : option;
878
878
  const value = this.state.value();
879
+ if (!optionValue) {
880
+ return false;
881
+ }
879
882
  // Handle select all functionality - only works in multiple selection mode
880
883
  if (optionValue === 'all') {
881
884
  if (!this.state.multiple()) {
@@ -1151,6 +1154,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImpor
1151
1154
  type: HostListener,
1152
1155
  args: ['blur', ['$event']]
1153
1156
  }] } });
1157
+ function isOption(value) {
1158
+ return (value && typeof value === 'object' && 'value' in value && typeof value.value === 'function');
1159
+ }
1154
1160
 
1155
1161
  /**
1156
1162
  * Generated bundle index. Do not edit.
@@ -1 +1 @@
1
- {"version":3,"file":"ng-primitives-combobox.mjs","sources":["../../../../packages/ng-primitives/combobox/src/combobox/combobox-state.ts","../../../../packages/ng-primitives/combobox/src/combobox-button/combobox-button.ts","../../../../packages/ng-primitives/combobox/src/combobox-dropdown/combobox-dropdown.ts","../../../../packages/ng-primitives/combobox/src/combobox-input/combobox-input.ts","../../../../packages/ng-primitives/combobox/src/utils.ts","../../../../packages/ng-primitives/combobox/src/combobox-option/combobox-option.ts","../../../../packages/ng-primitives/combobox/src/combobox-portal/combobox-portal.ts","../../../../packages/ng-primitives/combobox/src/config/combobox-config.ts","../../../../packages/ng-primitives/combobox/src/combobox/combobox.ts","../../../../packages/ng-primitives/combobox/src/ng-primitives-combobox.ts"],"sourcesContent":["import {\n createState,\n createStateInjector,\n createStateProvider,\n createStateToken,\n} from 'ng-primitives/state';\nimport type { NgpCombobox } from './combobox';\n\n/**\n * The state token for the Combobox primitive.\n */\nexport const NgpComboboxStateToken = createStateToken<NgpCombobox>('Combobox');\n\n/**\n * Provides the Combobox state.\n */\nexport const provideComboboxState = createStateProvider(NgpComboboxStateToken);\n\n/**\n * Injects the Combobox state.\n */\nexport const injectComboboxState = createStateInjector<NgpCombobox>(NgpComboboxStateToken);\n\n/**\n * The Combobox state registration function.\n */\nexport const comboboxState = createState(NgpComboboxStateToken);\n","import { computed, Directive, HostListener, input } from '@angular/core';\nimport { ngpInteractions } from 'ng-primitives/interactions';\nimport { injectElementRef } from 'ng-primitives/internal';\nimport { uniqueId } from 'ng-primitives/utils';\nimport { injectComboboxState } from '../combobox/combobox-state';\n\n@Directive({\n selector: 'button[ngpComboboxButton]',\n exportAs: 'ngpComboboxButton',\n host: {\n type: 'button',\n tabindex: '-1',\n 'aria-haspopup': 'listbox',\n '[id]': 'id()',\n '[attr.aria-controls]': 'dropdownId()',\n '[attr.aria-expanded]': 'state().open()',\n '[attr.data-open]': 'state().open() ? \"\" : undefined',\n '[attr.data-disabled]': 'state().disabled() ? \"\" : undefined',\n '[attr.data-multiple]': 'state().multiple() ? \"\" : undefined',\n '[disabled]': 'state().disabled()',\n },\n})\nexport class NgpComboboxButton {\n /** Access the combobox state. */\n protected readonly state = injectComboboxState();\n\n /**\n * Access the element reference.\n * @internal\n */\n readonly elementRef = injectElementRef<HTMLButtonElement>();\n\n /** The id of the button. */\n readonly id = input<string>(uniqueId('ngp-combobox-button'));\n\n /** The id of the dropdown. */\n readonly dropdownId = computed(() => this.state().dropdown()?.id());\n\n constructor() {\n ngpInteractions({\n hover: true,\n press: true,\n disabled: this.state().disabled,\n });\n\n this.state().registerButton(this);\n }\n\n @HostListener('click')\n protected async toggleDropdown(): Promise<void> {\n await this.state().toggleDropdown();\n this.state().input()?.focus();\n }\n}\n","import { Directive, input } from '@angular/core';\nimport { injectElementRef, observeResize } from 'ng-primitives/internal';\nimport { uniqueId } from 'ng-primitives/utils';\nimport { injectComboboxState } from '../combobox/combobox-state';\n\n@Directive({\n selector: '[ngpComboboxDropdown]',\n exportAs: 'ngpComboboxDropdown',\n host: {\n role: 'listbox',\n '[id]': 'id()',\n '[style.left.px]': 'state().overlay()?.position()?.x',\n '[style.top.px]': 'state().overlay()?.position()?.y',\n '[style.--ngp-combobox-transform-origin]': 'state().overlay()?.transformOrigin()',\n '[style.--ngp-combobox-width.px]': 'comboboxDimensions().width',\n '[style.--ngp-combobox-input-width.px]': 'inputDimensions().width',\n '[style.--ngp-combobox-button-width.px]': 'buttonDimensions().width',\n },\n})\nexport class NgpComboboxDropdown {\n /** Access the combobox state. */\n protected readonly state = injectComboboxState();\n\n /** The dimensions of the combobox. */\n protected readonly comboboxDimensions = observeResize(\n () => this.state().elementRef.nativeElement,\n );\n\n /** The dimensions of the combobox. */\n protected readonly inputDimensions = observeResize(\n () => this.state().input()?.elementRef.nativeElement,\n );\n\n /** Store the combobox button dimensions. */\n protected readonly buttonDimensions = observeResize(\n () => this.state().button()?.elementRef.nativeElement,\n );\n\n /**\n * Access the element reference.\n * @internal\n */\n readonly elementRef = injectElementRef();\n\n /** The id of the dropdown. */\n readonly id = input<string>(uniqueId('ngp-combobox-dropdown'));\n\n constructor() {\n this.state().registerDropdown(this);\n }\n}\n","import { computed, Directive, HostListener, input } from '@angular/core';\nimport { ngpFormControl } from 'ng-primitives/form-field';\nimport { ngpInteractions } from 'ng-primitives/interactions';\nimport { injectElementRef } from 'ng-primitives/internal';\nimport { uniqueId } from 'ng-primitives/utils';\nimport { injectComboboxState } from '../combobox/combobox-state';\n\n@Directive({\n selector: 'input[ngpComboboxInput]',\n exportAs: 'ngpComboboxInput',\n host: {\n role: 'combobox',\n type: 'text',\n autocomplete: 'off',\n autocorrect: 'off',\n spellcheck: 'false',\n 'aria-haspopup': 'listbox',\n 'aria-autocomplete': 'list',\n '[id]': 'id()',\n '[attr.aria-controls]': 'state().open() ? dropdownId() : undefined',\n '[attr.aria-expanded]': 'state().open()',\n '[attr.data-open]': 'state().open() ? \"\" : undefined',\n '[attr.data-disabled]': 'state().disabled() ? \"\" : undefined',\n '[attr.data-multiple]': 'state().multiple() ? \"\" : undefined',\n '[attr.aria-activedescendant]': 'activeDescendant()',\n '[disabled]': 'state().disabled()',\n },\n})\nexport class NgpComboboxInput {\n /** Access the combobox state. */\n protected readonly state = injectComboboxState();\n\n /**\n * Access the element reference.\n * @internal\n */\n readonly elementRef = injectElementRef<HTMLInputElement>();\n\n /** The id of the input. */\n readonly id = input<string>(uniqueId('ngp-combobox-input'));\n\n /** The id of the dropdown. */\n readonly dropdownId = computed(() => this.state().dropdown()?.id());\n\n /** The id of the active descendant. */\n protected readonly activeDescendant = computed(() => this.state().activeDescendantManager.id());\n\n /** Determine if the pointer was used to focus the input. */\n protected pointerFocused = false;\n\n /**\n * The control status - this is required as we apply them to the combobox element as well as the input element.\n * @internal\n */\n readonly controlStatus = ngpFormControl({ id: this.id, disabled: this.state().disabled });\n\n constructor() {\n ngpInteractions({\n focus: true,\n hover: true,\n press: true,\n disabled: this.state().disabled,\n });\n\n this.state().registerInput(this);\n }\n\n /** Handle keydown events for accessibility. */\n @HostListener('keydown', ['$event'])\n protected handleKeydown(event: KeyboardEvent): void {\n switch (event.key) {\n case 'ArrowDown':\n if (this.state().open()) {\n this.state().activateNextOption();\n } else {\n this.state().openDropdown();\n }\n event.preventDefault();\n break;\n case 'ArrowUp':\n if (this.state().open()) {\n this.state().activatePreviousOption();\n } else {\n this.state().openDropdown();\n this.state().activeDescendantManager.last();\n }\n event.preventDefault();\n break;\n case 'Home':\n if (this.state().open()) {\n this.state().activeDescendantManager.first();\n }\n event.preventDefault();\n break;\n case 'End':\n if (this.state().open()) {\n this.state().activeDescendantManager.last();\n }\n event.preventDefault();\n break;\n case 'Enter':\n if (this.state().open()) {\n const activeItem = this.state().activeDescendantManager.id();\n\n if (activeItem) {\n this.state().toggleOption(activeItem);\n }\n }\n event.preventDefault();\n break;\n case 'Escape':\n this.state().closeDropdown();\n event.preventDefault();\n break;\n case 'Backspace':\n // if the input is not empty then open the dropdown\n if (this.elementRef.nativeElement.value.length > 0) {\n this.state().openDropdown();\n }\n break;\n default:\n // Ignore keys with length > 1 (e.g., 'Shift', 'ArrowLeft', 'Enter', etc.)\n // Filter out control/meta key combos (e.g., Ctrl+C)\n if (\n event.key !== 'Unidentified' &&\n (event.key.length > 1 || event.ctrlKey || event.metaKey || event.altKey)\n ) {\n return;\n }\n\n // if this was a character key, we want to open the dropdown\n this.state().openDropdown();\n }\n }\n\n @HostListener('blur', ['$event'])\n protected closeDropdown(event: FocusEvent): void {\n const relatedTarget = event.relatedTarget as HTMLElement;\n\n // if the blur was caused by focus moving to the dropdown, don't close\n if (\n relatedTarget &&\n this.state().dropdown()?.elementRef.nativeElement.contains(relatedTarget)\n ) {\n return;\n }\n\n // if the blur was caused by focus moving to the button, don't close\n if (relatedTarget && this.state().button()?.elementRef.nativeElement.contains(relatedTarget)) {\n return;\n }\n\n this.state().closeDropdown();\n event.preventDefault();\n }\n\n /**\n * Focus the input field\n * @internal\n */\n focus(): void {\n this.elementRef.nativeElement.focus({ preventScroll: true });\n }\n\n @HostListener('focus')\n protected highlightText(): void {\n if (this.pointerFocused) {\n this.pointerFocused = false;\n return;\n }\n\n // highlight the text in the input\n this.elementRef.nativeElement.setSelectionRange(0, this.elementRef.nativeElement.value.length);\n }\n\n @HostListener('pointerdown')\n protected handlePointerDown(): void {\n this.pointerFocused = true;\n }\n}\n","import type { NgpComboboxOption } from './combobox-option/combobox-option';\n\n/**\n * Check if all regular options (excluding 'all' and undefined) are selected.\n * @param options All available options\n * @param selectedValues Currently selected values\n * @param compareWith Comparison function\n * @returns true if all regular options are selected\n */\nexport function areAllOptionsSelected(\n options: NgpComboboxOption[],\n selectedValues: any[],\n compareWith: (a: any, b: any) => boolean,\n): boolean {\n const regularOptions = options.filter(opt => opt.value() !== 'all' && opt.value() !== undefined);\n return (\n regularOptions.length > 0 &&\n regularOptions.every(opt => selectedValues.some(val => compareWith(val, opt.value())))\n );\n}\n","import { BooleanInput, NumberInput } from '@angular/cdk/coercion';\nimport {\n booleanAttribute,\n computed,\n Directive,\n HostListener,\n input,\n numberAttribute,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport { ngpInteractions } from 'ng-primitives/interactions';\nimport { injectElementRef, scrollIntoViewIfNeeded } from 'ng-primitives/internal';\nimport { uniqueId } from 'ng-primitives/utils';\nimport { injectComboboxState } from '../combobox/combobox-state';\nimport { areAllOptionsSelected } from '../utils';\n\ntype T = any;\n\n@Directive({\n selector: '[ngpComboboxOption]',\n exportAs: 'ngpComboboxOption',\n host: {\n role: 'option',\n '[id]': 'id()',\n '[attr.tabindex]': '-1',\n '[attr.aria-selected]': 'selected() ? \"true\" : undefined',\n '[attr.data-selected]': 'selected() ? \"\" : undefined',\n '[attr.data-active]': 'active() ? \"\" : undefined',\n '[attr.data-disabled]': 'disabled() ? \"\" : undefined',\n '(click)': 'select()',\n },\n})\nexport class NgpComboboxOption implements OnInit, OnDestroy {\n /** Access the combobox state. */\n protected readonly state = injectComboboxState();\n\n /**\n * The element reference of the option.\n * @internal\n */\n readonly elementRef = injectElementRef();\n\n /** The id of the option. */\n readonly id = input<string>(uniqueId('ngp-combobox-option'));\n\n /** @required The value of the option. */\n readonly value = input<T>(undefined, {\n alias: 'ngpComboboxOptionValue',\n });\n\n /** The disabled state of the option. */\n readonly disabled = input<boolean, BooleanInput>(false, {\n alias: 'ngpComboboxOptionDisabled',\n transform: booleanAttribute,\n });\n\n /**\n * The index of the option in the combobox. This can be used to define the order of options\n * when virtual scrolling is used or when the order is not determined by DOM order.\n */\n readonly index = input<number, NumberInput>(undefined, {\n alias: 'ngpComboboxOptionIndex',\n transform: numberAttribute,\n });\n\n /**\n * Whether this option is the active descendant.\n * @internal\n */\n protected readonly active = computed(() => {\n // if the option has an index, use that to determine if it's active because this\n // is required for virtual scrolling scenarios\n const index = this.index();\n\n if (index !== undefined) {\n return this.state().activeDescendantManager.index() === index;\n }\n\n return this.state().activeDescendantManager.id() === this.id();\n });\n\n /** Whether this option is selected. */\n protected readonly selected = computed(() => {\n const value = this.value();\n const stateValue = this.state().value();\n\n if (!value) {\n return false;\n }\n\n // Handle select all functionality - only works in multiple selection mode\n if (value === 'all') {\n if (!this.state().multiple()) {\n return false; // Never selected in single selection mode\n }\n\n const selectedValues = Array.isArray(stateValue) ? stateValue : [];\n return areAllOptionsSelected(\n this.state().options(),\n selectedValues,\n this.state().compareWith(),\n );\n }\n\n if (!stateValue) {\n return false;\n }\n\n if (this.state().multiple()) {\n return (\n Array.isArray(stateValue) && stateValue.some(v => this.state().compareWith()(value, v))\n );\n }\n\n return this.state().compareWith()(value, stateValue);\n });\n\n constructor() {\n this.state().registerOption(this);\n\n ngpInteractions({\n hover: true,\n press: true,\n disabled: this.disabled,\n });\n }\n\n ngOnInit(): void {\n if (this.value() === undefined) {\n throw new Error(\n 'ngpComboboxOption: The value input is required. Please provide a value for the option.',\n );\n }\n }\n\n ngOnDestroy(): void {\n this.state().unregisterOption(this);\n }\n\n /**\n * Select the option.\n * @internal\n */\n select(): void {\n if (this.disabled()) {\n return;\n }\n\n this.state().toggleOption(this.id());\n }\n\n /**\n * Scroll the option into view.\n * @internal\n */\n scrollIntoView(): void {\n scrollIntoViewIfNeeded(this.elementRef.nativeElement);\n }\n\n /**\n * Whenever the pointer enters the option, activate it.\n * @internal\n */\n @HostListener('pointerenter')\n protected onPointerEnter(): void {\n // if we have a known index, use that to activate the option (required for virtual scrolling)\n const index = this.index();\n\n if (index !== undefined) {\n this.state().activeDescendantManager.activateByIndex(index, {\n scroll: false,\n origin: 'pointer',\n });\n return;\n }\n\n // otherwise, activate by id\n this.state().activeDescendantManager.activateById(this.id(), {\n scroll: false,\n origin: 'pointer',\n });\n }\n\n /**\n * Whenever the pointer leaves the option, deactivate it.\n * @internal\n */\n @HostListener('pointerleave')\n protected onPointerLeave(): void {\n if (this.state().activeDescendantManager.id() === this.id()) {\n this.state().activeDescendantManager.reset({ origin: 'pointer' });\n }\n }\n}\n","import {\n Directive,\n inject,\n Injector,\n OnDestroy,\n signal,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\nimport { createOverlay, NgpOverlay, NgpOverlayConfig } from 'ng-primitives/portal';\nimport { injectComboboxState } from '../combobox/combobox-state';\n\n@Directive({\n selector: '[ngpComboboxPortal]',\n exportAs: 'ngpComboboxPortal',\n})\nexport class NgpComboboxPortal implements OnDestroy {\n /** Access the combobox state. */\n private readonly state = injectComboboxState();\n /** Access the view container reference. */\n private readonly viewContainerRef = inject(ViewContainerRef);\n\n /** Access the template reference. */\n private readonly templateRef = inject(TemplateRef);\n\n /** Access the injector. */\n private readonly injector = inject(Injector);\n\n /**\n * The overlay that manages the popover\n * @internal\n */\n readonly overlay = signal<NgpOverlay<void> | null>(null);\n\n constructor() {\n this.state().registerPortal(this);\n }\n\n /** Cleanup the portal. */\n ngOnDestroy(): void {\n this.overlay()?.destroy();\n }\n\n /**\n * Attach the portal.\n * @internal\n */\n show(): Promise<void> {\n // Create the overlay if it doesn't exist yet\n if (!this.overlay()) {\n this.createOverlay();\n }\n\n // Show the overlay\n return this.overlay()!.show();\n }\n\n /**\n * Detach the portal.\n * @internal\n */\n async detach(): Promise<void> {\n this.overlay()?.hide();\n }\n\n /**\n * Create the overlay that will contain the dropdown\n */\n private createOverlay(): void {\n // Create config for the overlay\n const config: NgpOverlayConfig<void> = {\n content: this.templateRef,\n viewContainerRef: this.viewContainerRef,\n triggerElement: this.state().elementRef.nativeElement,\n injector: this.injector,\n placement: this.state().placement,\n closeOnOutsideClick: true,\n closeOnEscape: true,\n restoreFocus: false,\n scrollBehaviour: 'reposition',\n container: this.state().container(),\n };\n\n this.overlay.set(createOverlay(config));\n }\n}\n","import { InjectionToken, Provider, inject } from '@angular/core';\nimport { type NgpComboboxPlacement } from '../combobox/combobox';\n\nexport interface NgpComboboxConfig {\n /**\n * The default placement for the combobox dropdown.\n * @default 'bottom'\n */\n placement: NgpComboboxPlacement;\n\n /**\n * The container element or selector for the combobox dropdown.\n * This can be used to control where the dropdown is rendered in the DOM.\n * @default 'body'\n */\n container: HTMLElement | string | null;\n}\n\nexport const defaultComboboxConfig: NgpComboboxConfig = {\n placement: 'bottom',\n container: 'body',\n};\n\nexport const NgpComboboxConfigToken = new InjectionToken<NgpComboboxConfig>(\n 'NgpComboboxConfigToken',\n);\n\n/**\n * Provide the default Combobox configuration\n * @param config The Combobox configuration\n * @returns The provider\n */\nexport function provideComboboxConfig(config: Partial<NgpComboboxConfig>): Provider[] {\n return [\n {\n provide: NgpComboboxConfigToken,\n useValue: { ...defaultComboboxConfig, ...config },\n },\n ];\n}\n\n/**\n * Inject the Combobox configuration\n * @returns The global Combobox configuration\n */\nexport function injectComboboxConfig(): NgpComboboxConfig {\n return inject(NgpComboboxConfigToken, { optional: true }) ?? defaultComboboxConfig;\n}\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport {\n booleanAttribute,\n computed,\n Directive,\n HostListener,\n inject,\n Injector,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { activeDescendantManager } from 'ng-primitives/a11y';\nimport { ngpInteractions } from 'ng-primitives/interactions';\nimport { domSort, injectElementRef } from 'ng-primitives/internal';\nimport type { NgpComboboxButton } from '../combobox-button/combobox-button';\nimport type { NgpComboboxDropdown } from '../combobox-dropdown/combobox-dropdown';\nimport type { NgpComboboxInput } from '../combobox-input/combobox-input';\nimport { NgpComboboxOption } from '../combobox-option/combobox-option';\nimport type { NgpComboboxPortal } from '../combobox-portal/combobox-portal';\nimport { injectComboboxConfig } from '../config/combobox-config';\nimport { areAllOptionsSelected } from '../utils';\nimport { comboboxState, provideComboboxState } from './combobox-state';\n\n/**\n * Ideally we would use a generic type here, unfortunately, unlike in React,\n * we cannot infer the type based on another input. For example, if multiple\n * is true, we cannot infer that the value is an array of T. Using a union\n * type is not ideal either because it requires the user to handle multiple cases.\n * Using a generic also isn't ideal because we need to use T as both an array and\n * a single value.\n *\n * Any seems to be used by Angular Material, ng-select, and other libraries\n * so we will use it here as well.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype T = any;\n\n@Directive({\n selector: '[ngpCombobox]',\n exportAs: 'ngpCombobox',\n providers: [provideComboboxState()],\n host: {\n '[attr.tabindex]': 'input() ? -1 : (state.disabled() ? -1 : 0)',\n '[attr.data-open]': 'open() ? \"\" : undefined',\n '[attr.data-disabled]': 'state.disabled() ? \"\" : undefined',\n '[attr.data-multiple]': 'state.multiple() ? \"\" : undefined',\n '[attr.data-invalid]': 'controlStatus()?.invalid ? \"\" : undefined',\n '[attr.data-valid]': 'controlStatus()?.valid ? \"\" : undefined',\n '[attr.data-touched]': 'controlStatus()?.touched ? \"\" : undefined',\n '[attr.data-pristine]': 'controlStatus()?.pristine ? \"\" : undefined',\n '[attr.data-dirty]': 'controlStatus()?.dirty ? \"\" : undefined',\n '[attr.data-pending]': 'controlStatus()?.pending ? \"\" : undefined',\n },\n})\nexport class NgpCombobox {\n /** Access the combobox configuration. */\n protected readonly config = injectComboboxConfig();\n\n /** @internal Access the combobox element. */\n readonly elementRef = injectElementRef();\n\n /** Access the injector. */\n protected readonly injector = inject(Injector);\n\n /** The value of the combobox. */\n readonly value = input<T>(undefined, {\n alias: 'ngpComboboxValue',\n });\n\n /** Event emitted when the value changes. */\n readonly valueChange = output<T>({\n alias: 'ngpComboboxValueChange',\n });\n\n /** Whether the combobox is multiple selection. */\n readonly multiple = input<boolean, BooleanInput>(false, {\n alias: 'ngpComboboxMultiple',\n transform: booleanAttribute,\n });\n\n /** Whether the combobox is disabled. */\n readonly disabled = input<boolean, BooleanInput>(false, {\n alias: 'ngpComboboxDisabled',\n transform: booleanAttribute,\n });\n\n /** Whether the combobox allows deselection in single selection mode. */\n readonly allowDeselect = input<boolean, BooleanInput>(false, {\n alias: 'ngpComboboxAllowDeselect',\n transform: booleanAttribute,\n });\n\n /** Emit when the dropdown open state changes. */\n readonly openChange = output<boolean>({\n alias: 'ngpComboboxOpenChange',\n });\n\n /** The comparator function used to compare options. */\n readonly compareWith = input<(a: T | undefined, b: T | undefined) => boolean>(Object.is, {\n alias: 'ngpComboboxCompareWith',\n });\n\n /** The position of the dropdown. */\n readonly placement = input<NgpComboboxPlacement>(this.config.placement, {\n alias: 'ngpComboboxDropdownPlacement',\n });\n\n /** The container for the dropdown. */\n readonly container = input<HTMLElement | string | null>(this.config.container, {\n alias: 'ngpComboboxDropdownContainer',\n });\n\n /**\n * A function that will scroll the active option into view. This can be overridden\n * for cases such as virtual scrolling where we cannot scroll the option directly because\n * it may not be rendered.\n */\n readonly scrollToOption = input<(index: number) => void>(undefined, {\n alias: 'ngpComboboxScrollToOption',\n });\n\n /**\n * Provide all the option values to the combobox. This is useful for virtual scrolling scenarios\n * where not all options are rendered in the DOM. This is not an alternative to adding the options\n * in the DOM, it is only to provide the combobox with the full list of options. This list should match\n * the order of the options as they would appear in the DOM.\n */\n readonly allOptions = input<T[]>(undefined, { alias: 'ngpComboboxOptions' });\n\n /**\n * Store the combobox input\n * @internal\n */\n readonly input = signal<NgpComboboxInput | undefined>(undefined);\n\n /**\n * Store the combobox button.\n * @internal\n */\n readonly button = signal<NgpComboboxButton | undefined>(undefined);\n\n /**\n * Store the combobox portal.\n * @internal\n */\n readonly portal = signal<NgpComboboxPortal | undefined>(undefined);\n\n /**\n * Store the combobox dropdown.\n * @internal\n */\n readonly dropdown = signal<NgpComboboxDropdown | undefined>(undefined);\n\n /**\n * Store the combobox options.\n * @internal\n */\n readonly options = signal<NgpComboboxOption[]>([]);\n\n /**\n * Access the overlay\n * @internal\n */\n readonly overlay = computed(() => this.portal()?.overlay());\n\n /**\n * The open state of the combobox.\n * @internal\n */\n readonly open = computed(() => this.overlay()?.isOpen() ?? false);\n\n /**\n * The options sorted by their index or DOM position.\n * @internal\n */\n readonly sortedOptions = computed(() =>\n domSort(\n this.options(),\n option => option.elementRef.nativeElement,\n option => option.index(),\n ),\n );\n\n /**\n * The active key descendant manager.\n * @internal\n */\n readonly activeDescendantManager = activeDescendantManager({\n // we must wrap the signal in a computed to ensure it is not used before it is defined\n disabled: computed(() => this.state.disabled()),\n wrap: signal(true),\n count: computed(() => this.state.allOptions()?.length ?? this.options().length),\n getItemId: index => this.getOptionAtIndex(index)?.id(),\n isItemDisabled: index => this.getOptionAtIndex(index)?.disabled() ?? false,\n scrollIntoView: index => {\n const isPositioned = this.portal()?.overlay()?.isPositioned() ?? false;\n\n if (!isPositioned || index === -1) {\n return;\n }\n\n this.scrollTo(index);\n },\n });\n\n /** The control status */\n protected readonly controlStatus = computed(() => this.input()?.controlStatus());\n\n /** The state of the combobox. */\n protected readonly state = comboboxState<NgpCombobox>(this);\n\n constructor() {\n ngpInteractions({\n focus: true,\n focusWithin: true,\n hover: true,\n press: true,\n disabled: this.state.disabled,\n });\n }\n\n /**\n * Open the dropdown.\n * @internal\n */\n async openDropdown(): Promise<void> {\n if (this.state.disabled() || this.open()) {\n return;\n }\n\n this.openChange.emit(true);\n await this.portal()?.show();\n\n let selectedOptionIdx = -1;\n\n // if we have been provided with allOptions, we need to find the selected option(s) from that list\n if (this.state.allOptions()) {\n selectedOptionIdx = this.state\n .allOptions()!\n .findIndex(option => this.isOptionSelected(option));\n }\n\n // if we don't have allOptions, find the selected option(s) from the registered options\n if (selectedOptionIdx === -1) {\n // if there is a selected option(s), set the active descendant to the first selected option\n selectedOptionIdx = this.sortedOptions().findIndex(option =>\n this.isOptionSelected(option.value()),\n );\n }\n\n // if after checking there is a selected option, set the active descendant to the first option\n if (selectedOptionIdx !== -1) {\n // scroll to and activate the selected option\n this.scrollTo(selectedOptionIdx);\n this.activeDescendantManager.activateByIndex(selectedOptionIdx);\n return;\n }\n\n // activate the selected option or the first option\n this.activeDescendantManager.first();\n }\n\n /**\n * Close the dropdown.\n * @internal\n */\n closeDropdown(): void {\n if (!this.open()) {\n return;\n }\n\n this.openChange.emit(false);\n this.portal()?.detach();\n\n // clear the active descendant\n this.activeDescendantManager.reset();\n }\n\n /**\n * Toggle the dropdown.\n * @internal\n */\n async toggleDropdown(): Promise<void> {\n if (this.open()) {\n this.closeDropdown();\n } else {\n await this.openDropdown();\n }\n }\n\n /**\n * Select an option.\n * @param option The option to select.\n * @internal\n */\n selectOption(option: NgpComboboxOption | undefined): void {\n if (this.state.disabled()) {\n return;\n }\n\n if (!option) {\n this.state.value.set(undefined);\n this.closeDropdown();\n return;\n }\n\n // Handle select all functionality - only works in multiple selection mode\n if (option.value() === 'all') {\n if (!this.state.multiple()) {\n return; // Do nothing in single selection mode\n }\n\n // Get currently visible regular options (respects filtering)\n const regularOptions = this.sortedOptions().filter(\n opt => opt.value() !== 'all' && opt.value() !== undefined,\n );\n const allValues = regularOptions.map(opt => opt.value());\n\n this.state.value.set(allValues as T);\n this.valueChange.emit(allValues as T);\n return;\n }\n\n if (this.state.multiple()) {\n // if the option is already selected, do nothing\n if (this.isOptionSelected(option.value())) {\n return;\n }\n\n const value = [...(this.state.value() as T[]), option.value() as T];\n\n // add the option to the value\n this.state.value.set(value as T);\n this.valueChange.emit(value as T);\n } else {\n this.state.value.set(option.value() as T);\n this.valueChange.emit(option.value() as T);\n\n // close the dropdown on single selection\n this.closeDropdown();\n }\n }\n\n /**\n * Deselect an option.\n * @param option The option to deselect.\n * @internal\n */\n deselectOption(option: NgpComboboxOption): void {\n // if the combobox is disabled or the option is not selected, do nothing\n if (this.state.disabled() || !this.isOptionSelected(option.value())) {\n return;\n }\n\n // in single selection mode, only allow deselecting if allowDeselect is true\n if (!this.state.multiple() && !this.state.allowDeselect()) {\n return;\n }\n\n // Handle select all for deselect all functionality - only works in multiple selection mode\n if (option.value() === 'all') {\n if (!this.state.multiple()) {\n return; // Do nothing in single selection mode\n }\n\n this.state.value.set([] as T);\n this.valueChange.emit([] as T);\n return;\n }\n\n if (this.state.multiple()) {\n const values = (this.state.value() as T[]) ?? [];\n const newValue = values.filter(v => !this.state.compareWith()(v, option.value() as T));\n\n // remove the option from the value\n this.state.value.set(newValue as T);\n this.valueChange.emit(newValue as T);\n } else {\n // in single selection mode with allowDeselect enabled, set value to undefined\n this.state.value.set(undefined);\n this.valueChange.emit(undefined);\n }\n }\n\n /**\n * Toggle the selection of an option.\n * @param id The id of the option to toggle.\n * @internal\n */\n toggleOption(id: string): void {\n if (this.state.disabled()) {\n return;\n }\n\n const option = this.sortedOptions().find(opt => opt.id() === id);\n\n if (!option) {\n return;\n }\n\n // Handle select all for select/deselect all functionality - only works in multiple selection mode\n if (option.value() === 'all') {\n if (!this.state.multiple()) {\n return; // Do nothing in single selection mode\n }\n\n if (this.isOptionSelected(option.value())) {\n this.deselectOption(option);\n } else {\n this.selectOption(option);\n }\n return;\n }\n\n if (this.state.multiple()) {\n // In multiple selection mode, always allow toggling\n if (this.isOptionSelected(option.value())) {\n this.deselectOption(option);\n } else {\n this.selectOption(option);\n }\n } else {\n // In single selection mode, check if deselection is allowed\n if (this.isOptionSelected(option.value()) && this.state.allowDeselect()) {\n // Deselect the option by setting value to undefined\n this.state.value.set(undefined);\n this.valueChange.emit(undefined);\n } else {\n // Select the option (works even if already selected to update the input)\n this.selectOption(option);\n }\n }\n }\n\n /**\n * Determine if an option is selected.\n * @param option The option to check.\n * @internal\n */\n isOptionSelected(option: T): boolean {\n if (this.state.disabled()) {\n return false;\n }\n\n // Handle both NgpComboboxOption and T types\n const optionValue = (option as NgpComboboxOption).value?.() ?? (option as T);\n const value = this.state.value();\n\n // Handle select all functionality - only works in multiple selection mode\n if (optionValue === 'all') {\n if (!this.state.multiple()) {\n return false; // Never selected in single selection mode\n }\n\n const selectedValues = Array.isArray(value) ? value : [];\n return areAllOptionsSelected(this.sortedOptions(), selectedValues, this.state.compareWith());\n }\n\n if (!value) {\n return false;\n }\n\n if (this.state.multiple()) {\n return value && (value as T[]).some(v => this.state.compareWith()(optionValue, v));\n }\n\n return this.state.compareWith()(optionValue, value);\n }\n\n /**\n * Activate the next option in the list if there is one.\n * If there is no option currently active, activate the selected option or the first option.\n * @internal\n */\n activateNextOption(): void {\n if (this.state.disabled()) {\n return;\n }\n\n const options = this.sortedOptions();\n\n // if there are no options, do nothing\n if (options.length === 0) {\n return;\n }\n\n // if there is no active option, activate the first option\n if (this.activeDescendantManager.index() === -1) {\n const selectedOption = options.findIndex(option => this.isOptionSelected(option.value()));\n\n // if there is a selected option(s), set the active descendant to the first selected option\n const targetOption = selectedOption !== -1 ? selectedOption : 0;\n\n this.activeDescendantManager.activateByIndex(targetOption, { origin: 'keyboard' });\n return;\n }\n\n // otherwise activate the next option\n this.activeDescendantManager.next({ origin: 'keyboard' });\n }\n\n /**\n * Activate the previous option in the list if there is one.\n * @internal\n */\n activatePreviousOption(): void {\n if (this.state.disabled()) {\n return;\n }\n const options = this.sortedOptions();\n // if there are no options, do nothing\n if (options.length === 0) {\n return;\n }\n // if there is no active option, activate the last option\n if (this.activeDescendantManager.index() === -1) {\n const selectedOption = options.findIndex(option => this.isOptionSelected(option.value()));\n // if there is a selected option(s), set the active descendant to the first selected option\n const targetOption = selectedOption !== -1 ? selectedOption : options.length - 1;\n this.activeDescendantManager.activateByIndex(targetOption, { origin: 'keyboard' });\n return;\n }\n // otherwise activate the previous option\n this.activeDescendantManager.previous({ origin: 'keyboard' });\n }\n\n /**\n * Register the dropdown portal with the combobox.\n * @param portal The dropdown portal.\n * @internal\n */\n registerPortal(portal: NgpComboboxPortal): void {\n this.portal.set(portal);\n }\n\n /**\n * Register the combobox input with the combobox.\n * @param input The combobox input.\n * @internal\n */\n registerInput(input: NgpComboboxInput): void {\n this.input.set(input);\n }\n\n /**\n * Register the combobox button with the combobox.\n * @param button The combobox button.\n * @internal\n */\n registerButton(button: NgpComboboxButton): void {\n this.button.set(button);\n }\n\n /**\n * Register the dropdown with the combobox.\n * @param dropdown The dropdown to register.\n * @internal\n */\n registerDropdown(dropdown: NgpComboboxDropdown): void {\n this.dropdown.set(dropdown);\n }\n\n /**\n * Register an option with the combobox.\n * @param option The option to register.\n * @internal\n */\n registerOption(option: NgpComboboxOption): void {\n this.options.update(options => [...options, option]);\n }\n\n /**\n * Unregister an option from the combobox.\n * @param option The option to unregister.\n * @internal\n */\n unregisterOption(option: NgpComboboxOption): void {\n this.options.update(options => options.filter(o => o !== option));\n }\n\n /**\n * Focus the combobox.\n * When an input element is present, it will be focused.\n * Otherwise, the combobox element itself will be focused.\n * This enables keyboard navigation for comboboxes without input elements.\n * @internal\n */\n focus(): void {\n if (this.input()) {\n this.input()?.focus();\n } else {\n this.elementRef.nativeElement.focus();\n }\n }\n\n /**\n * Handle keydown events for keyboard navigation and accessibility.\n * Supports:\n * - Arrow Down: Open dropdown or navigate to next option\n * - Arrow Up: Open dropdown or navigate to previous option\n * - Home: Navigate to first option\n * - End: Navigate to last option\n * - Enter: Select the currently active option\n * - Escape: Close the dropdown\n * @param event - The keyboard event\n * @internal\n */\n @HostListener('keydown', ['$event'])\n protected handleKeydown(event: KeyboardEvent): void {\n // If the event originated from the input element, let the input handle it\n if (this.input() && event.target === this.input()?.elementRef.nativeElement) {\n return;\n }\n\n switch (event.key) {\n case 'ArrowDown':\n if (this.open()) {\n this.activateNextOption();\n } else {\n this.openDropdown();\n }\n event.preventDefault();\n break;\n case 'ArrowUp':\n if (this.open()) {\n this.activatePreviousOption();\n } else {\n this.openDropdown();\n // Use setTimeout to ensure dropdown is rendered before selecting last item\n setTimeout(() => this.activeDescendantManager.last());\n }\n event.preventDefault();\n break;\n case 'Home':\n if (this.open()) {\n this.activeDescendantManager.first({ origin: 'keyboard' });\n }\n event.preventDefault();\n break;\n case 'End':\n if (this.open()) {\n this.activeDescendantManager.last({ origin: 'keyboard' });\n }\n event.preventDefault();\n break;\n case 'Enter':\n if (this.open()) {\n const activeId = this.activeDescendantManager.id();\n\n if (activeId) {\n this.toggleOption(activeId);\n }\n }\n event.preventDefault();\n break;\n case 'Escape':\n if (this.open()) {\n this.closeDropdown();\n }\n event.preventDefault();\n break;\n case ' ':\n if (!this.input()) {\n this.toggleDropdown();\n event.preventDefault();\n }\n break;\n }\n }\n\n /**\n * Handle blur events to manage dropdown closing behavior.\n * The dropdown will remain open if focus moves to:\n * - The dropdown itself\n * - The combobox button\n * - The combobox input\n * Otherwise, the dropdown will be closed.\n * @param event - The focus event\n * @internal\n */\n @HostListener('blur', ['$event'])\n protected onBlur(event: FocusEvent): void {\n const relatedTarget = event.relatedTarget as HTMLElement;\n\n // if the blur was caused by focus moving to the dropdown, don't close\n if (relatedTarget && this.dropdown()?.elementRef.nativeElement.contains(relatedTarget)) {\n return;\n }\n\n // if the blur was caused by focus moving to the button, don't close\n if (relatedTarget && this.button()?.elementRef.nativeElement.contains(relatedTarget)) {\n return;\n }\n\n // if the blur was caused by focus moving to the input, don't close\n if (relatedTarget && this.input()?.elementRef.nativeElement === relatedTarget) {\n return;\n }\n\n this.closeDropdown();\n }\n\n private scrollTo(index: number): void {\n const scrollToOption = this.state.scrollToOption();\n\n if (scrollToOption) {\n scrollToOption(index);\n return;\n }\n\n const option = this.getOptionAtIndex(index);\n if (option) {\n option.scrollIntoView();\n }\n }\n\n private getOptionAtIndex(index: number): NgpComboboxOption | undefined {\n // if the option has an index, use that to get the option because this is required for virtual scrolling scenarios\n const optionIndex = this.options().findIndex(opt => opt.index() === index);\n\n if (optionIndex !== -1) {\n return this.options()[optionIndex];\n }\n\n return this.sortedOptions()[index];\n }\n}\n\nexport type NgpComboboxPlacement =\n | 'top'\n | 'right'\n | 'bottom'\n | 'left'\n | 'top-start'\n | 'top-end'\n | 'right-start'\n | 'right-end'\n | 'bottom-start'\n | 'bottom-end'\n | 'left-start'\n | 'left-end';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ng-primitives-combobox.mjs","sources":["../../../../packages/ng-primitives/combobox/src/combobox/combobox-state.ts","../../../../packages/ng-primitives/combobox/src/combobox-button/combobox-button.ts","../../../../packages/ng-primitives/combobox/src/combobox-dropdown/combobox-dropdown.ts","../../../../packages/ng-primitives/combobox/src/combobox-input/combobox-input.ts","../../../../packages/ng-primitives/combobox/src/utils.ts","../../../../packages/ng-primitives/combobox/src/combobox-option/combobox-option.ts","../../../../packages/ng-primitives/combobox/src/combobox-portal/combobox-portal.ts","../../../../packages/ng-primitives/combobox/src/config/combobox-config.ts","../../../../packages/ng-primitives/combobox/src/combobox/combobox.ts","../../../../packages/ng-primitives/combobox/src/ng-primitives-combobox.ts"],"sourcesContent":["import {\n createState,\n createStateInjector,\n createStateProvider,\n createStateToken,\n} from 'ng-primitives/state';\nimport type { NgpCombobox } from './combobox';\n\n/**\n * The state token for the Combobox primitive.\n */\nexport const NgpComboboxStateToken = createStateToken<NgpCombobox>('Combobox');\n\n/**\n * Provides the Combobox state.\n */\nexport const provideComboboxState = createStateProvider(NgpComboboxStateToken);\n\n/**\n * Injects the Combobox state.\n */\nexport const injectComboboxState = createStateInjector<NgpCombobox>(NgpComboboxStateToken);\n\n/**\n * The Combobox state registration function.\n */\nexport const comboboxState = createState(NgpComboboxStateToken);\n","import { computed, Directive, HostListener, input } from '@angular/core';\nimport { ngpInteractions } from 'ng-primitives/interactions';\nimport { injectElementRef } from 'ng-primitives/internal';\nimport { uniqueId } from 'ng-primitives/utils';\nimport { injectComboboxState } from '../combobox/combobox-state';\n\n@Directive({\n selector: 'button[ngpComboboxButton]',\n exportAs: 'ngpComboboxButton',\n host: {\n type: 'button',\n tabindex: '-1',\n 'aria-haspopup': 'listbox',\n '[id]': 'id()',\n '[attr.aria-controls]': 'dropdownId()',\n '[attr.aria-expanded]': 'state().open()',\n '[attr.data-open]': 'state().open() ? \"\" : undefined',\n '[attr.data-disabled]': 'state().disabled() ? \"\" : undefined',\n '[attr.data-multiple]': 'state().multiple() ? \"\" : undefined',\n '[disabled]': 'state().disabled()',\n },\n})\nexport class NgpComboboxButton {\n /** Access the combobox state. */\n protected readonly state = injectComboboxState();\n\n /**\n * Access the element reference.\n * @internal\n */\n readonly elementRef = injectElementRef<HTMLButtonElement>();\n\n /** The id of the button. */\n readonly id = input<string>(uniqueId('ngp-combobox-button'));\n\n /** The id of the dropdown. */\n readonly dropdownId = computed(() => this.state().dropdown()?.id());\n\n constructor() {\n ngpInteractions({\n hover: true,\n press: true,\n disabled: this.state().disabled,\n });\n\n this.state().registerButton(this);\n }\n\n @HostListener('click')\n protected async toggleDropdown(): Promise<void> {\n await this.state().toggleDropdown();\n this.state().input()?.focus();\n }\n}\n","import { Directive, input } from '@angular/core';\nimport { injectElementRef, observeResize } from 'ng-primitives/internal';\nimport { uniqueId } from 'ng-primitives/utils';\nimport { injectComboboxState } from '../combobox/combobox-state';\n\n@Directive({\n selector: '[ngpComboboxDropdown]',\n exportAs: 'ngpComboboxDropdown',\n host: {\n role: 'listbox',\n '[id]': 'id()',\n '[style.left.px]': 'state().overlay()?.position()?.x',\n '[style.top.px]': 'state().overlay()?.position()?.y',\n '[style.--ngp-combobox-transform-origin]': 'state().overlay()?.transformOrigin()',\n '[style.--ngp-combobox-width.px]': 'comboboxDimensions().width',\n '[style.--ngp-combobox-input-width.px]': 'inputDimensions().width',\n '[style.--ngp-combobox-button-width.px]': 'buttonDimensions().width',\n },\n})\nexport class NgpComboboxDropdown {\n /** Access the combobox state. */\n protected readonly state = injectComboboxState();\n\n /** The dimensions of the combobox. */\n protected readonly comboboxDimensions = observeResize(\n () => this.state().elementRef.nativeElement,\n );\n\n /** The dimensions of the combobox. */\n protected readonly inputDimensions = observeResize(\n () => this.state().input()?.elementRef.nativeElement,\n );\n\n /** Store the combobox button dimensions. */\n protected readonly buttonDimensions = observeResize(\n () => this.state().button()?.elementRef.nativeElement,\n );\n\n /**\n * Access the element reference.\n * @internal\n */\n readonly elementRef = injectElementRef();\n\n /** The id of the dropdown. */\n readonly id = input<string>(uniqueId('ngp-combobox-dropdown'));\n\n constructor() {\n this.state().registerDropdown(this);\n }\n}\n","import { computed, Directive, HostListener, input } from '@angular/core';\nimport { ngpFormControl } from 'ng-primitives/form-field';\nimport { ngpInteractions } from 'ng-primitives/interactions';\nimport { injectElementRef } from 'ng-primitives/internal';\nimport { uniqueId } from 'ng-primitives/utils';\nimport { injectComboboxState } from '../combobox/combobox-state';\n\n@Directive({\n selector: 'input[ngpComboboxInput]',\n exportAs: 'ngpComboboxInput',\n host: {\n role: 'combobox',\n type: 'text',\n autocomplete: 'off',\n autocorrect: 'off',\n spellcheck: 'false',\n 'aria-haspopup': 'listbox',\n 'aria-autocomplete': 'list',\n '[id]': 'id()',\n '[attr.aria-controls]': 'state().open() ? dropdownId() : undefined',\n '[attr.aria-expanded]': 'state().open()',\n '[attr.data-open]': 'state().open() ? \"\" : undefined',\n '[attr.data-disabled]': 'state().disabled() ? \"\" : undefined',\n '[attr.data-multiple]': 'state().multiple() ? \"\" : undefined',\n '[attr.aria-activedescendant]': 'activeDescendant()',\n '[disabled]': 'state().disabled()',\n },\n})\nexport class NgpComboboxInput {\n /** Access the combobox state. */\n protected readonly state = injectComboboxState();\n\n /**\n * Access the element reference.\n * @internal\n */\n readonly elementRef = injectElementRef<HTMLInputElement>();\n\n /** The id of the input. */\n readonly id = input<string>(uniqueId('ngp-combobox-input'));\n\n /** The id of the dropdown. */\n readonly dropdownId = computed(() => this.state().dropdown()?.id());\n\n /** The id of the active descendant. */\n protected readonly activeDescendant = computed(() => this.state().activeDescendantManager.id());\n\n /** Determine if the pointer was used to focus the input. */\n protected pointerFocused = false;\n\n /**\n * The control status - this is required as we apply them to the combobox element as well as the input element.\n * @internal\n */\n readonly controlStatus = ngpFormControl({ id: this.id, disabled: this.state().disabled });\n\n constructor() {\n ngpInteractions({\n focus: true,\n hover: true,\n press: true,\n disabled: this.state().disabled,\n });\n\n this.state().registerInput(this);\n }\n\n /** Handle keydown events for accessibility. */\n @HostListener('keydown', ['$event'])\n protected handleKeydown(event: KeyboardEvent): void {\n switch (event.key) {\n case 'ArrowDown':\n if (this.state().open()) {\n this.state().activateNextOption();\n } else {\n this.state().openDropdown();\n }\n event.preventDefault();\n break;\n case 'ArrowUp':\n if (this.state().open()) {\n this.state().activatePreviousOption();\n } else {\n this.state().openDropdown();\n this.state().activeDescendantManager.last();\n }\n event.preventDefault();\n break;\n case 'Home':\n if (this.state().open()) {\n this.state().activeDescendantManager.first();\n }\n event.preventDefault();\n break;\n case 'End':\n if (this.state().open()) {\n this.state().activeDescendantManager.last();\n }\n event.preventDefault();\n break;\n case 'Enter':\n if (this.state().open()) {\n const activeItem = this.state().activeDescendantManager.id();\n\n if (activeItem) {\n this.state().toggleOption(activeItem);\n }\n }\n event.preventDefault();\n break;\n case 'Escape':\n this.state().closeDropdown();\n event.preventDefault();\n break;\n case 'Backspace':\n // if the input is not empty then open the dropdown\n if (this.elementRef.nativeElement.value.length > 0) {\n this.state().openDropdown();\n }\n break;\n default:\n // Ignore keys with length > 1 (e.g., 'Shift', 'ArrowLeft', 'Enter', etc.)\n // Filter out control/meta key combos (e.g., Ctrl+C)\n if (\n event.key !== 'Unidentified' &&\n (event.key.length > 1 || event.ctrlKey || event.metaKey || event.altKey)\n ) {\n return;\n }\n\n // if this was a character key, we want to open the dropdown\n this.state().openDropdown();\n }\n }\n\n @HostListener('blur', ['$event'])\n protected closeDropdown(event: FocusEvent): void {\n const relatedTarget = event.relatedTarget as HTMLElement;\n\n // if the blur was caused by focus moving to the dropdown, don't close\n if (\n relatedTarget &&\n this.state().dropdown()?.elementRef.nativeElement.contains(relatedTarget)\n ) {\n return;\n }\n\n // if the blur was caused by focus moving to the button, don't close\n if (relatedTarget && this.state().button()?.elementRef.nativeElement.contains(relatedTarget)) {\n return;\n }\n\n this.state().closeDropdown();\n event.preventDefault();\n }\n\n /**\n * Focus the input field\n * @internal\n */\n focus(): void {\n this.elementRef.nativeElement.focus({ preventScroll: true });\n }\n\n @HostListener('focus')\n protected highlightText(): void {\n if (this.pointerFocused) {\n this.pointerFocused = false;\n return;\n }\n\n // highlight the text in the input\n this.elementRef.nativeElement.setSelectionRange(0, this.elementRef.nativeElement.value.length);\n }\n\n @HostListener('pointerdown')\n protected handlePointerDown(): void {\n this.pointerFocused = true;\n }\n}\n","import type { NgpComboboxOption } from './combobox-option/combobox-option';\n\n/**\n * Check if all regular options (excluding 'all' and undefined) are selected.\n * @param options All available options\n * @param selectedValues Currently selected values\n * @param compareWith Comparison function\n * @returns true if all regular options are selected\n */\nexport function areAllOptionsSelected(\n options: NgpComboboxOption[],\n selectedValues: any[],\n compareWith: (a: any, b: any) => boolean,\n): boolean {\n const regularOptions = options.filter(opt => opt.value() !== 'all' && opt.value() !== undefined);\n return (\n regularOptions.length > 0 &&\n regularOptions.every(opt => selectedValues.some(val => compareWith(val, opt.value())))\n );\n}\n","import { BooleanInput, NumberInput } from '@angular/cdk/coercion';\nimport {\n booleanAttribute,\n computed,\n Directive,\n HostListener,\n input,\n numberAttribute,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport { ngpInteractions } from 'ng-primitives/interactions';\nimport { injectElementRef, scrollIntoViewIfNeeded } from 'ng-primitives/internal';\nimport { uniqueId } from 'ng-primitives/utils';\nimport { injectComboboxState } from '../combobox/combobox-state';\nimport { areAllOptionsSelected } from '../utils';\n\ntype T = any;\n\n@Directive({\n selector: '[ngpComboboxOption]',\n exportAs: 'ngpComboboxOption',\n host: {\n role: 'option',\n '[id]': 'id()',\n '[attr.tabindex]': '-1',\n '[attr.aria-selected]': 'selected() ? \"true\" : undefined',\n '[attr.data-selected]': 'selected() ? \"\" : undefined',\n '[attr.data-active]': 'active() ? \"\" : undefined',\n '[attr.data-disabled]': 'disabled() ? \"\" : undefined',\n '(click)': 'select()',\n },\n})\nexport class NgpComboboxOption implements OnInit, OnDestroy {\n /** Access the combobox state. */\n protected readonly state = injectComboboxState();\n\n /**\n * The element reference of the option.\n * @internal\n */\n readonly elementRef = injectElementRef();\n\n /** The id of the option. */\n readonly id = input<string>(uniqueId('ngp-combobox-option'));\n\n /** @required The value of the option. */\n readonly value = input<T>(undefined, {\n alias: 'ngpComboboxOptionValue',\n });\n\n /** The disabled state of the option. */\n readonly disabled = input<boolean, BooleanInput>(false, {\n alias: 'ngpComboboxOptionDisabled',\n transform: booleanAttribute,\n });\n\n /**\n * The index of the option in the combobox. This can be used to define the order of options\n * when virtual scrolling is used or when the order is not determined by DOM order.\n */\n readonly index = input<number, NumberInput>(undefined, {\n alias: 'ngpComboboxOptionIndex',\n transform: numberAttribute,\n });\n\n /**\n * Whether this option is the active descendant.\n * @internal\n */\n protected readonly active = computed(() => {\n // if the option has an index, use that to determine if it's active because this\n // is required for virtual scrolling scenarios\n const index = this.index();\n\n if (index !== undefined) {\n return this.state().activeDescendantManager.index() === index;\n }\n\n return this.state().activeDescendantManager.id() === this.id();\n });\n\n /** Whether this option is selected. */\n protected readonly selected = computed(() => {\n const value = this.value();\n const stateValue = this.state().value();\n\n if (!value) {\n return false;\n }\n\n // Handle select all functionality - only works in multiple selection mode\n if (value === 'all') {\n if (!this.state().multiple()) {\n return false; // Never selected in single selection mode\n }\n\n const selectedValues = Array.isArray(stateValue) ? stateValue : [];\n return areAllOptionsSelected(\n this.state().options(),\n selectedValues,\n this.state().compareWith(),\n );\n }\n\n if (!stateValue) {\n return false;\n }\n\n if (this.state().multiple()) {\n return (\n Array.isArray(stateValue) && stateValue.some(v => this.state().compareWith()(value, v))\n );\n }\n\n return this.state().compareWith()(value, stateValue);\n });\n\n constructor() {\n this.state().registerOption(this);\n\n ngpInteractions({\n hover: true,\n press: true,\n disabled: this.disabled,\n });\n }\n\n ngOnInit(): void {\n if (this.value() === undefined) {\n throw new Error(\n 'ngpComboboxOption: The value input is required. Please provide a value for the option.',\n );\n }\n }\n\n ngOnDestroy(): void {\n this.state().unregisterOption(this);\n }\n\n /**\n * Select the option.\n * @internal\n */\n select(): void {\n if (this.disabled()) {\n return;\n }\n\n this.state().toggleOption(this.id());\n }\n\n /**\n * Scroll the option into view.\n * @internal\n */\n scrollIntoView(): void {\n scrollIntoViewIfNeeded(this.elementRef.nativeElement);\n }\n\n /**\n * Whenever the pointer enters the option, activate it.\n * @internal\n */\n @HostListener('pointerenter')\n protected onPointerEnter(): void {\n // if we have a known index, use that to activate the option (required for virtual scrolling)\n const index = this.index();\n\n if (index !== undefined) {\n this.state().activeDescendantManager.activateByIndex(index, {\n scroll: false,\n origin: 'pointer',\n });\n return;\n }\n\n // otherwise, activate by id\n this.state().activeDescendantManager.activateById(this.id(), {\n scroll: false,\n origin: 'pointer',\n });\n }\n\n /**\n * Whenever the pointer leaves the option, deactivate it.\n * @internal\n */\n @HostListener('pointerleave')\n protected onPointerLeave(): void {\n if (this.state().activeDescendantManager.id() === this.id()) {\n this.state().activeDescendantManager.reset({ origin: 'pointer' });\n }\n }\n}\n","import {\n Directive,\n inject,\n Injector,\n OnDestroy,\n signal,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\nimport { createOverlay, NgpOverlay, NgpOverlayConfig } from 'ng-primitives/portal';\nimport { injectComboboxState } from '../combobox/combobox-state';\n\n@Directive({\n selector: '[ngpComboboxPortal]',\n exportAs: 'ngpComboboxPortal',\n})\nexport class NgpComboboxPortal implements OnDestroy {\n /** Access the combobox state. */\n private readonly state = injectComboboxState();\n /** Access the view container reference. */\n private readonly viewContainerRef = inject(ViewContainerRef);\n\n /** Access the template reference. */\n private readonly templateRef = inject(TemplateRef);\n\n /** Access the injector. */\n private readonly injector = inject(Injector);\n\n /**\n * The overlay that manages the popover\n * @internal\n */\n readonly overlay = signal<NgpOverlay<void> | null>(null);\n\n constructor() {\n this.state().registerPortal(this);\n }\n\n /** Cleanup the portal. */\n ngOnDestroy(): void {\n this.overlay()?.destroy();\n }\n\n /**\n * Attach the portal.\n * @internal\n */\n show(): Promise<void> {\n // Create the overlay if it doesn't exist yet\n if (!this.overlay()) {\n this.createOverlay();\n }\n\n // Show the overlay\n return this.overlay()!.show();\n }\n\n /**\n * Detach the portal.\n * @internal\n */\n async detach(): Promise<void> {\n this.overlay()?.hide();\n }\n\n /**\n * Create the overlay that will contain the dropdown\n */\n private createOverlay(): void {\n // Create config for the overlay\n const config: NgpOverlayConfig<void> = {\n content: this.templateRef,\n viewContainerRef: this.viewContainerRef,\n triggerElement: this.state().elementRef.nativeElement,\n injector: this.injector,\n placement: this.state().placement,\n closeOnOutsideClick: true,\n closeOnEscape: true,\n restoreFocus: false,\n scrollBehaviour: 'reposition',\n container: this.state().container(),\n };\n\n this.overlay.set(createOverlay(config));\n }\n}\n","import { InjectionToken, Provider, inject } from '@angular/core';\nimport { type NgpComboboxPlacement } from '../combobox/combobox';\n\nexport interface NgpComboboxConfig {\n /**\n * The default placement for the combobox dropdown.\n * @default 'bottom'\n */\n placement: NgpComboboxPlacement;\n\n /**\n * The container element or selector for the combobox dropdown.\n * This can be used to control where the dropdown is rendered in the DOM.\n * @default 'body'\n */\n container: HTMLElement | string | null;\n}\n\nexport const defaultComboboxConfig: NgpComboboxConfig = {\n placement: 'bottom',\n container: 'body',\n};\n\nexport const NgpComboboxConfigToken = new InjectionToken<NgpComboboxConfig>(\n 'NgpComboboxConfigToken',\n);\n\n/**\n * Provide the default Combobox configuration\n * @param config The Combobox configuration\n * @returns The provider\n */\nexport function provideComboboxConfig(config: Partial<NgpComboboxConfig>): Provider[] {\n return [\n {\n provide: NgpComboboxConfigToken,\n useValue: { ...defaultComboboxConfig, ...config },\n },\n ];\n}\n\n/**\n * Inject the Combobox configuration\n * @returns The global Combobox configuration\n */\nexport function injectComboboxConfig(): NgpComboboxConfig {\n return inject(NgpComboboxConfigToken, { optional: true }) ?? defaultComboboxConfig;\n}\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport {\n booleanAttribute,\n computed,\n Directive,\n HostListener,\n inject,\n Injector,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { activeDescendantManager } from 'ng-primitives/a11y';\nimport { ngpInteractions } from 'ng-primitives/interactions';\nimport { domSort, injectElementRef } from 'ng-primitives/internal';\nimport type { NgpComboboxButton } from '../combobox-button/combobox-button';\nimport type { NgpComboboxDropdown } from '../combobox-dropdown/combobox-dropdown';\nimport type { NgpComboboxInput } from '../combobox-input/combobox-input';\nimport { NgpComboboxOption } from '../combobox-option/combobox-option';\nimport type { NgpComboboxPortal } from '../combobox-portal/combobox-portal';\nimport { injectComboboxConfig } from '../config/combobox-config';\nimport { areAllOptionsSelected } from '../utils';\nimport { comboboxState, provideComboboxState } from './combobox-state';\n\n/**\n * Ideally we would use a generic type here, unfortunately, unlike in React,\n * we cannot infer the type based on another input. For example, if multiple\n * is true, we cannot infer that the value is an array of T. Using a union\n * type is not ideal either because it requires the user to handle multiple cases.\n * Using a generic also isn't ideal because we need to use T as both an array and\n * a single value.\n *\n * Any seems to be used by Angular Material, ng-select, and other libraries\n * so we will use it here as well.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype T = any;\n\n@Directive({\n selector: '[ngpCombobox]',\n exportAs: 'ngpCombobox',\n providers: [provideComboboxState()],\n host: {\n '[attr.tabindex]': 'input() ? -1 : (state.disabled() ? -1 : 0)',\n '[attr.data-open]': 'open() ? \"\" : undefined',\n '[attr.data-disabled]': 'state.disabled() ? \"\" : undefined',\n '[attr.data-multiple]': 'state.multiple() ? \"\" : undefined',\n '[attr.data-invalid]': 'controlStatus()?.invalid ? \"\" : undefined',\n '[attr.data-valid]': 'controlStatus()?.valid ? \"\" : undefined',\n '[attr.data-touched]': 'controlStatus()?.touched ? \"\" : undefined',\n '[attr.data-pristine]': 'controlStatus()?.pristine ? \"\" : undefined',\n '[attr.data-dirty]': 'controlStatus()?.dirty ? \"\" : undefined',\n '[attr.data-pending]': 'controlStatus()?.pending ? \"\" : undefined',\n },\n})\nexport class NgpCombobox {\n /** Access the combobox configuration. */\n protected readonly config = injectComboboxConfig();\n\n /** @internal Access the combobox element. */\n readonly elementRef = injectElementRef();\n\n /** Access the injector. */\n protected readonly injector = inject(Injector);\n\n /** The value of the combobox. */\n readonly value = input<T>(undefined, {\n alias: 'ngpComboboxValue',\n });\n\n /** Event emitted when the value changes. */\n readonly valueChange = output<T>({\n alias: 'ngpComboboxValueChange',\n });\n\n /** Whether the combobox is multiple selection. */\n readonly multiple = input<boolean, BooleanInput>(false, {\n alias: 'ngpComboboxMultiple',\n transform: booleanAttribute,\n });\n\n /** Whether the combobox is disabled. */\n readonly disabled = input<boolean, BooleanInput>(false, {\n alias: 'ngpComboboxDisabled',\n transform: booleanAttribute,\n });\n\n /** Whether the combobox allows deselection in single selection mode. */\n readonly allowDeselect = input<boolean, BooleanInput>(false, {\n alias: 'ngpComboboxAllowDeselect',\n transform: booleanAttribute,\n });\n\n /** Emit when the dropdown open state changes. */\n readonly openChange = output<boolean>({\n alias: 'ngpComboboxOpenChange',\n });\n\n /** The comparator function used to compare options. */\n readonly compareWith = input<(a: T | undefined, b: T | undefined) => boolean>(Object.is, {\n alias: 'ngpComboboxCompareWith',\n });\n\n /** The position of the dropdown. */\n readonly placement = input<NgpComboboxPlacement>(this.config.placement, {\n alias: 'ngpComboboxDropdownPlacement',\n });\n\n /** The container for the dropdown. */\n readonly container = input<HTMLElement | string | null>(this.config.container, {\n alias: 'ngpComboboxDropdownContainer',\n });\n\n /**\n * A function that will scroll the active option into view. This can be overridden\n * for cases such as virtual scrolling where we cannot scroll the option directly because\n * it may not be rendered.\n */\n readonly scrollToOption = input<(index: number) => void>(undefined, {\n alias: 'ngpComboboxScrollToOption',\n });\n\n /**\n * Provide all the option values to the combobox. This is useful for virtual scrolling scenarios\n * where not all options are rendered in the DOM. This is not an alternative to adding the options\n * in the DOM, it is only to provide the combobox with the full list of options. This list should match\n * the order of the options as they would appear in the DOM.\n */\n readonly allOptions = input<T[]>(undefined, { alias: 'ngpComboboxOptions' });\n\n /**\n * Store the combobox input\n * @internal\n */\n readonly input = signal<NgpComboboxInput | undefined>(undefined);\n\n /**\n * Store the combobox button.\n * @internal\n */\n readonly button = signal<NgpComboboxButton | undefined>(undefined);\n\n /**\n * Store the combobox portal.\n * @internal\n */\n readonly portal = signal<NgpComboboxPortal | undefined>(undefined);\n\n /**\n * Store the combobox dropdown.\n * @internal\n */\n readonly dropdown = signal<NgpComboboxDropdown | undefined>(undefined);\n\n /**\n * Store the combobox options.\n * @internal\n */\n readonly options = signal<NgpComboboxOption[]>([]);\n\n /**\n * Access the overlay\n * @internal\n */\n readonly overlay = computed(() => this.portal()?.overlay());\n\n /**\n * The open state of the combobox.\n * @internal\n */\n readonly open = computed(() => this.overlay()?.isOpen() ?? false);\n\n /**\n * The options sorted by their index or DOM position.\n * @internal\n */\n readonly sortedOptions = computed(() =>\n domSort(\n this.options(),\n option => option.elementRef.nativeElement,\n option => option.index(),\n ),\n );\n\n /**\n * The active key descendant manager.\n * @internal\n */\n readonly activeDescendantManager = activeDescendantManager({\n // we must wrap the signal in a computed to ensure it is not used before it is defined\n disabled: computed(() => this.state.disabled()),\n wrap: signal(true),\n count: computed(() => this.state.allOptions()?.length ?? this.options().length),\n getItemId: index => this.getOptionAtIndex(index)?.id(),\n isItemDisabled: index => this.getOptionAtIndex(index)?.disabled() ?? false,\n scrollIntoView: index => {\n const isPositioned = this.portal()?.overlay()?.isPositioned() ?? false;\n\n if (!isPositioned || index === -1) {\n return;\n }\n\n this.scrollTo(index);\n },\n });\n\n /** The control status */\n protected readonly controlStatus = computed(() => this.input()?.controlStatus());\n\n /** The state of the combobox. */\n protected readonly state = comboboxState<NgpCombobox>(this);\n\n constructor() {\n ngpInteractions({\n focus: true,\n focusWithin: true,\n hover: true,\n press: true,\n disabled: this.state.disabled,\n });\n }\n\n /**\n * Open the dropdown.\n * @internal\n */\n async openDropdown(): Promise<void> {\n if (this.state.disabled() || this.open()) {\n return;\n }\n\n this.openChange.emit(true);\n await this.portal()?.show();\n\n let selectedOptionIdx = -1;\n\n // if we have been provided with allOptions, we need to find the selected option(s) from that list\n if (this.state.allOptions()) {\n selectedOptionIdx = this.state\n .allOptions()!\n .findIndex(option => this.isOptionSelected(option));\n }\n\n // if we don't have allOptions, find the selected option(s) from the registered options\n if (selectedOptionIdx === -1) {\n // if there is a selected option(s), set the active descendant to the first selected option\n selectedOptionIdx = this.sortedOptions().findIndex(option =>\n this.isOptionSelected(option.value()),\n );\n }\n\n // if after checking there is a selected option, set the active descendant to the first option\n if (selectedOptionIdx !== -1) {\n // scroll to and activate the selected option\n this.scrollTo(selectedOptionIdx);\n this.activeDescendantManager.activateByIndex(selectedOptionIdx);\n return;\n }\n\n // activate the selected option or the first option\n this.activeDescendantManager.first();\n }\n\n /**\n * Close the dropdown.\n * @internal\n */\n closeDropdown(): void {\n if (!this.open()) {\n return;\n }\n\n this.openChange.emit(false);\n this.portal()?.detach();\n\n // clear the active descendant\n this.activeDescendantManager.reset();\n }\n\n /**\n * Toggle the dropdown.\n * @internal\n */\n async toggleDropdown(): Promise<void> {\n if (this.open()) {\n this.closeDropdown();\n } else {\n await this.openDropdown();\n }\n }\n\n /**\n * Select an option.\n * @param option The option to select.\n * @internal\n */\n selectOption(option: NgpComboboxOption | undefined): void {\n if (this.state.disabled()) {\n return;\n }\n\n if (!option) {\n this.state.value.set(undefined);\n this.closeDropdown();\n return;\n }\n\n // Handle select all functionality - only works in multiple selection mode\n if (option.value() === 'all') {\n if (!this.state.multiple()) {\n return; // Do nothing in single selection mode\n }\n\n // Get currently visible regular options (respects filtering)\n const regularOptions = this.sortedOptions().filter(\n opt => opt.value() !== 'all' && opt.value() !== undefined,\n );\n const allValues = regularOptions.map(opt => opt.value());\n\n this.state.value.set(allValues as T);\n this.valueChange.emit(allValues as T);\n return;\n }\n\n if (this.state.multiple()) {\n // if the option is already selected, do nothing\n if (this.isOptionSelected(option.value())) {\n return;\n }\n\n const value = [...(this.state.value() as T[]), option.value() as T];\n\n // add the option to the value\n this.state.value.set(value as T);\n this.valueChange.emit(value as T);\n } else {\n this.state.value.set(option.value() as T);\n this.valueChange.emit(option.value() as T);\n\n // close the dropdown on single selection\n this.closeDropdown();\n }\n }\n\n /**\n * Deselect an option.\n * @param option The option to deselect.\n * @internal\n */\n deselectOption(option: NgpComboboxOption): void {\n // if the combobox is disabled or the option is not selected, do nothing\n if (this.state.disabled() || !this.isOptionSelected(option.value())) {\n return;\n }\n\n // in single selection mode, only allow deselecting if allowDeselect is true\n if (!this.state.multiple() && !this.state.allowDeselect()) {\n return;\n }\n\n // Handle select all for deselect all functionality - only works in multiple selection mode\n if (option.value() === 'all') {\n if (!this.state.multiple()) {\n return; // Do nothing in single selection mode\n }\n\n this.state.value.set([] as T);\n this.valueChange.emit([] as T);\n return;\n }\n\n if (this.state.multiple()) {\n const values = (this.state.value() as T[]) ?? [];\n const newValue = values.filter(v => !this.state.compareWith()(v, option.value() as T));\n\n // remove the option from the value\n this.state.value.set(newValue as T);\n this.valueChange.emit(newValue as T);\n } else {\n // in single selection mode with allowDeselect enabled, set value to undefined\n this.state.value.set(undefined);\n this.valueChange.emit(undefined);\n }\n }\n\n /**\n * Toggle the selection of an option.\n * @param id The id of the option to toggle.\n * @internal\n */\n toggleOption(id: string): void {\n if (this.state.disabled()) {\n return;\n }\n\n const option = this.sortedOptions().find(opt => opt.id() === id);\n\n if (!option) {\n return;\n }\n\n // Handle select all for select/deselect all functionality - only works in multiple selection mode\n if (option.value() === 'all') {\n if (!this.state.multiple()) {\n return; // Do nothing in single selection mode\n }\n\n if (this.isOptionSelected(option.value())) {\n this.deselectOption(option);\n } else {\n this.selectOption(option);\n }\n return;\n }\n\n if (this.state.multiple()) {\n // In multiple selection mode, always allow toggling\n if (this.isOptionSelected(option.value())) {\n this.deselectOption(option);\n } else {\n this.selectOption(option);\n }\n } else {\n // In single selection mode, check if deselection is allowed\n if (this.isOptionSelected(option.value()) && this.state.allowDeselect()) {\n // Deselect the option by setting value to undefined\n this.state.value.set(undefined);\n this.valueChange.emit(undefined);\n } else {\n // Select the option (works even if already selected to update the input)\n this.selectOption(option);\n }\n }\n }\n\n /**\n * Determine if an option is selected.\n * @param option The option to check.\n * @internal\n */\n isOptionSelected(option: T): boolean {\n if (this.state.disabled()) {\n return false;\n }\n\n // Handle both NgpComboboxOption and T types\n const optionValue = isOption(option) ? option.value() : (option as T);\n const value = this.state.value();\n\n if (!optionValue) {\n return false;\n }\n\n // Handle select all functionality - only works in multiple selection mode\n if (optionValue === 'all') {\n if (!this.state.multiple()) {\n return false; // Never selected in single selection mode\n }\n\n const selectedValues = Array.isArray(value) ? value : [];\n return areAllOptionsSelected(this.sortedOptions(), selectedValues, this.state.compareWith());\n }\n\n if (!value) {\n return false;\n }\n\n if (this.state.multiple()) {\n return value && (value as T[]).some(v => this.state.compareWith()(optionValue, v));\n }\n\n return this.state.compareWith()(optionValue, value);\n }\n\n /**\n * Activate the next option in the list if there is one.\n * If there is no option currently active, activate the selected option or the first option.\n * @internal\n */\n activateNextOption(): void {\n if (this.state.disabled()) {\n return;\n }\n\n const options = this.sortedOptions();\n\n // if there are no options, do nothing\n if (options.length === 0) {\n return;\n }\n\n // if there is no active option, activate the first option\n if (this.activeDescendantManager.index() === -1) {\n const selectedOption = options.findIndex(option => this.isOptionSelected(option.value()));\n\n // if there is a selected option(s), set the active descendant to the first selected option\n const targetOption = selectedOption !== -1 ? selectedOption : 0;\n\n this.activeDescendantManager.activateByIndex(targetOption, { origin: 'keyboard' });\n return;\n }\n\n // otherwise activate the next option\n this.activeDescendantManager.next({ origin: 'keyboard' });\n }\n\n /**\n * Activate the previous option in the list if there is one.\n * @internal\n */\n activatePreviousOption(): void {\n if (this.state.disabled()) {\n return;\n }\n const options = this.sortedOptions();\n // if there are no options, do nothing\n if (options.length === 0) {\n return;\n }\n // if there is no active option, activate the last option\n if (this.activeDescendantManager.index() === -1) {\n const selectedOption = options.findIndex(option => this.isOptionSelected(option.value()));\n // if there is a selected option(s), set the active descendant to the first selected option\n const targetOption = selectedOption !== -1 ? selectedOption : options.length - 1;\n this.activeDescendantManager.activateByIndex(targetOption, { origin: 'keyboard' });\n return;\n }\n // otherwise activate the previous option\n this.activeDescendantManager.previous({ origin: 'keyboard' });\n }\n\n /**\n * Register the dropdown portal with the combobox.\n * @param portal The dropdown portal.\n * @internal\n */\n registerPortal(portal: NgpComboboxPortal): void {\n this.portal.set(portal);\n }\n\n /**\n * Register the combobox input with the combobox.\n * @param input The combobox input.\n * @internal\n */\n registerInput(input: NgpComboboxInput): void {\n this.input.set(input);\n }\n\n /**\n * Register the combobox button with the combobox.\n * @param button The combobox button.\n * @internal\n */\n registerButton(button: NgpComboboxButton): void {\n this.button.set(button);\n }\n\n /**\n * Register the dropdown with the combobox.\n * @param dropdown The dropdown to register.\n * @internal\n */\n registerDropdown(dropdown: NgpComboboxDropdown): void {\n this.dropdown.set(dropdown);\n }\n\n /**\n * Register an option with the combobox.\n * @param option The option to register.\n * @internal\n */\n registerOption(option: NgpComboboxOption): void {\n this.options.update(options => [...options, option]);\n }\n\n /**\n * Unregister an option from the combobox.\n * @param option The option to unregister.\n * @internal\n */\n unregisterOption(option: NgpComboboxOption): void {\n this.options.update(options => options.filter(o => o !== option));\n }\n\n /**\n * Focus the combobox.\n * When an input element is present, it will be focused.\n * Otherwise, the combobox element itself will be focused.\n * This enables keyboard navigation for comboboxes without input elements.\n * @internal\n */\n focus(): void {\n if (this.input()) {\n this.input()?.focus();\n } else {\n this.elementRef.nativeElement.focus();\n }\n }\n\n /**\n * Handle keydown events for keyboard navigation and accessibility.\n * Supports:\n * - Arrow Down: Open dropdown or navigate to next option\n * - Arrow Up: Open dropdown or navigate to previous option\n * - Home: Navigate to first option\n * - End: Navigate to last option\n * - Enter: Select the currently active option\n * - Escape: Close the dropdown\n * @param event - The keyboard event\n * @internal\n */\n @HostListener('keydown', ['$event'])\n protected handleKeydown(event: KeyboardEvent): void {\n // If the event originated from the input element, let the input handle it\n if (this.input() && event.target === this.input()?.elementRef.nativeElement) {\n return;\n }\n\n switch (event.key) {\n case 'ArrowDown':\n if (this.open()) {\n this.activateNextOption();\n } else {\n this.openDropdown();\n }\n event.preventDefault();\n break;\n case 'ArrowUp':\n if (this.open()) {\n this.activatePreviousOption();\n } else {\n this.openDropdown();\n // Use setTimeout to ensure dropdown is rendered before selecting last item\n setTimeout(() => this.activeDescendantManager.last());\n }\n event.preventDefault();\n break;\n case 'Home':\n if (this.open()) {\n this.activeDescendantManager.first({ origin: 'keyboard' });\n }\n event.preventDefault();\n break;\n case 'End':\n if (this.open()) {\n this.activeDescendantManager.last({ origin: 'keyboard' });\n }\n event.preventDefault();\n break;\n case 'Enter':\n if (this.open()) {\n const activeId = this.activeDescendantManager.id();\n\n if (activeId) {\n this.toggleOption(activeId);\n }\n }\n event.preventDefault();\n break;\n case 'Escape':\n if (this.open()) {\n this.closeDropdown();\n }\n event.preventDefault();\n break;\n case ' ':\n if (!this.input()) {\n this.toggleDropdown();\n event.preventDefault();\n }\n break;\n }\n }\n\n /**\n * Handle blur events to manage dropdown closing behavior.\n * The dropdown will remain open if focus moves to:\n * - The dropdown itself\n * - The combobox button\n * - The combobox input\n * Otherwise, the dropdown will be closed.\n * @param event - The focus event\n * @internal\n */\n @HostListener('blur', ['$event'])\n protected onBlur(event: FocusEvent): void {\n const relatedTarget = event.relatedTarget as HTMLElement;\n\n // if the blur was caused by focus moving to the dropdown, don't close\n if (relatedTarget && this.dropdown()?.elementRef.nativeElement.contains(relatedTarget)) {\n return;\n }\n\n // if the blur was caused by focus moving to the button, don't close\n if (relatedTarget && this.button()?.elementRef.nativeElement.contains(relatedTarget)) {\n return;\n }\n\n // if the blur was caused by focus moving to the input, don't close\n if (relatedTarget && this.input()?.elementRef.nativeElement === relatedTarget) {\n return;\n }\n\n this.closeDropdown();\n }\n\n private scrollTo(index: number): void {\n const scrollToOption = this.state.scrollToOption();\n\n if (scrollToOption) {\n scrollToOption(index);\n return;\n }\n\n const option = this.getOptionAtIndex(index);\n if (option) {\n option.scrollIntoView();\n }\n }\n\n private getOptionAtIndex(index: number): NgpComboboxOption | undefined {\n // if the option has an index, use that to get the option because this is required for virtual scrolling scenarios\n const optionIndex = this.options().findIndex(opt => opt.index() === index);\n\n if (optionIndex !== -1) {\n return this.options()[optionIndex];\n }\n\n return this.sortedOptions()[index];\n }\n}\n\nexport type NgpComboboxPlacement =\n | 'top'\n | 'right'\n | 'bottom'\n | 'left'\n | 'top-start'\n | 'top-end'\n | 'right-start'\n | 'right-end'\n | 'bottom-start'\n | 'bottom-end'\n | 'left-start'\n | 'left-end';\n\nfunction isOption(value: any): value is NgpComboboxOption {\n return (\n value && typeof value === 'object' && 'value' in value && typeof value.value === 'function'\n );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "ng-primitives",
3
3
  "description": "Angular Primitives is a low-level headless UI component library with a focus on accessibility, customization, and developer experience. ",
4
4
  "license": "Apache-2.0",
5
- "version": "0.101.0",
5
+ "version": "0.101.1",
6
6
  "keywords": [
7
7
  "angular",
8
8
  "primitives",