ng-primitives 0.120.4 → 0.121.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/example-theme/index.css +9 -0
- package/fesm2022/ng-primitives-a11y.mjs +5 -5
- package/fesm2022/ng-primitives-a11y.mjs.map +1 -1
- package/fesm2022/ng-primitives-accordion.mjs +34 -51
- package/fesm2022/ng-primitives-accordion.mjs.map +1 -1
- package/fesm2022/ng-primitives-ai.mjs +39 -52
- package/fesm2022/ng-primitives-ai.mjs.map +1 -1
- package/fesm2022/ng-primitives-autofill.mjs +4 -4
- package/fesm2022/ng-primitives-autofill.mjs.map +1 -1
- package/fesm2022/ng-primitives-avatar.mjs +14 -17
- package/fesm2022/ng-primitives-avatar.mjs.map +1 -1
- package/fesm2022/ng-primitives-breadcrumbs.mjs +21 -21
- package/fesm2022/ng-primitives-breadcrumbs.mjs.map +1 -1
- package/fesm2022/ng-primitives-button.mjs +7 -9
- package/fesm2022/ng-primitives-button.mjs.map +1 -1
- package/fesm2022/ng-primitives-checkbox.mjs +15 -30
- package/fesm2022/ng-primitives-checkbox.mjs.map +1 -1
- package/fesm2022/ng-primitives-combobox.mjs +60 -92
- package/fesm2022/ng-primitives-combobox.mjs.map +1 -1
- package/fesm2022/ng-primitives-common.mjs +4 -4
- package/fesm2022/ng-primitives-common.mjs.map +1 -1
- package/fesm2022/ng-primitives-context-menu.mjs +68 -121
- package/fesm2022/ng-primitives-context-menu.mjs.map +1 -1
- package/fesm2022/ng-primitives-date-picker.mjs +91 -115
- package/fesm2022/ng-primitives-date-picker.mjs.map +1 -1
- package/fesm2022/ng-primitives-dialog.mjs +35 -51
- package/fesm2022/ng-primitives-dialog.mjs.map +1 -1
- package/fesm2022/ng-primitives-file-upload.mjs +26 -53
- package/fesm2022/ng-primitives-file-upload.mjs.map +1 -1
- package/fesm2022/ng-primitives-focus-trap.mjs +5 -8
- package/fesm2022/ng-primitives-focus-trap.mjs.map +1 -1
- package/fesm2022/ng-primitives-form-field.mjs +39 -44
- package/fesm2022/ng-primitives-form-field.mjs.map +1 -1
- package/fesm2022/ng-primitives-input-otp.mjs +30 -43
- package/fesm2022/ng-primitives-input-otp.mjs.map +1 -1
- package/fesm2022/ng-primitives-input.mjs +6 -8
- package/fesm2022/ng-primitives-input.mjs.map +1 -1
- package/fesm2022/ng-primitives-interactions.mjs +31 -48
- package/fesm2022/ng-primitives-interactions.mjs.map +1 -1
- package/fesm2022/ng-primitives-internal.mjs +39 -35
- package/fesm2022/ng-primitives-internal.mjs.map +1 -1
- package/fesm2022/ng-primitives-listbox.mjs +34 -48
- package/fesm2022/ng-primitives-listbox.mjs.map +1 -1
- package/fesm2022/ng-primitives-menu.mjs +85 -151
- package/fesm2022/ng-primitives-menu.mjs.map +1 -1
- package/fesm2022/ng-primitives-meter.mjs +25 -36
- package/fesm2022/ng-primitives-meter.mjs.map +1 -1
- package/fesm2022/ng-primitives-navigation-menu.mjs +60 -108
- package/fesm2022/ng-primitives-navigation-menu.mjs.map +1 -1
- package/fesm2022/ng-primitives-number-field.mjs +35 -59
- package/fesm2022/ng-primitives-number-field.mjs.map +1 -1
- package/fesm2022/ng-primitives-pagination.mjs +270 -297
- package/fesm2022/ng-primitives-pagination.mjs.map +1 -1
- package/fesm2022/ng-primitives-popover.mjs +209 -223
- package/fesm2022/ng-primitives-popover.mjs.map +1 -1
- package/fesm2022/ng-primitives-portal.mjs +88 -59
- package/fesm2022/ng-primitives-portal.mjs.map +1 -1
- package/fesm2022/ng-primitives-progress.mjs +30 -41
- package/fesm2022/ng-primitives-progress.mjs.map +1 -1
- package/fesm2022/ng-primitives-radio.mjs +20 -30
- package/fesm2022/ng-primitives-radio.mjs.map +1 -1
- package/fesm2022/ng-primitives-resize.mjs +3 -3
- package/fesm2022/ng-primitives-resize.mjs.map +1 -1
- package/fesm2022/ng-primitives-roving-focus.mjs +20 -34
- package/fesm2022/ng-primitives-roving-focus.mjs.map +1 -1
- package/fesm2022/ng-primitives-search.mjs +9 -9
- package/fesm2022/ng-primitives-search.mjs.map +1 -1
- package/fesm2022/ng-primitives-select.mjs +720 -620
- package/fesm2022/ng-primitives-select.mjs.map +1 -1
- package/fesm2022/ng-primitives-separator.mjs +4 -6
- package/fesm2022/ng-primitives-separator.mjs.map +1 -1
- package/fesm2022/ng-primitives-slider.mjs +63 -100
- package/fesm2022/ng-primitives-slider.mjs.map +1 -1
- package/fesm2022/ng-primitives-state.mjs +3 -3
- package/fesm2022/ng-primitives-state.mjs.map +1 -1
- package/fesm2022/ng-primitives-switch.mjs +15 -21
- package/fesm2022/ng-primitives-switch.mjs.map +1 -1
- package/fesm2022/ng-primitives-tabs.mjs +31 -41
- package/fesm2022/ng-primitives-tabs.mjs.map +1 -1
- package/fesm2022/ng-primitives-textarea.mjs +5 -7
- package/fesm2022/ng-primitives-textarea.mjs.map +1 -1
- package/fesm2022/ng-primitives-toast.mjs +30 -23
- package/fesm2022/ng-primitives-toast.mjs.map +1 -1
- package/fesm2022/ng-primitives-toggle-group.mjs +20 -36
- package/fesm2022/ng-primitives-toggle-group.mjs.map +1 -1
- package/fesm2022/ng-primitives-toggle.mjs +10 -19
- package/fesm2022/ng-primitives-toggle.mjs.map +1 -1
- package/fesm2022/ng-primitives-toolbar.mjs +4 -6
- package/fesm2022/ng-primitives-toolbar.mjs.map +1 -1
- package/fesm2022/ng-primitives-tooltip.mjs +401 -402
- package/fesm2022/ng-primitives-tooltip.mjs.map +1 -1
- package/fesm2022/ng-primitives-utils.mjs +5 -4
- package/fesm2022/ng-primitives-utils.mjs.map +1 -1
- package/package.json +56 -55
- package/schematics/ng-generate/templates/select/select.__fileSuffix@dasherize__.ts.template +48 -48
- package/{a11y/index.d.ts → types/ng-primitives-a11y.d.ts} +18 -24
- package/{accordion/index.d.ts → types/ng-primitives-accordion.d.ts} +85 -98
- package/{autofill/index.d.ts → types/ng-primitives-autofill.d.ts} +3 -10
- package/{avatar/index.d.ts → types/ng-primitives-avatar.d.ts} +7 -30
- package/{breadcrumbs/index.d.ts → types/ng-primitives-breadcrumbs.d.ts} +15 -70
- package/{button/index.d.ts → types/ng-primitives-button.d.ts} +23 -29
- package/{checkbox/index.d.ts → types/ng-primitives-checkbox.d.ts} +68 -74
- package/{combobox/index.d.ts → types/ng-primitives-combobox.d.ts} +35 -35
- package/{context-menu/index.d.ts → types/ng-primitives-context-menu.d.ts} +2 -1
- package/{date-picker/index.d.ts → types/ng-primitives-date-picker.d.ts} +2 -2
- package/{dialog/index.d.ts → types/ng-primitives-dialog.d.ts} +7 -2
- package/{file-upload/index.d.ts → types/ng-primitives-file-upload.d.ts} +5 -20
- package/{focus-trap/index.d.ts → types/ng-primitives-focus-trap.d.ts} +3 -10
- package/{form-field/index.d.ts → types/ng-primitives-form-field.d.ts} +9 -40
- package/{input/index.d.ts → types/ng-primitives-input.d.ts} +3 -10
- package/{menu/index.d.ts → types/ng-primitives-menu.d.ts} +17 -63
- package/{navigation-menu/index.d.ts → types/ng-primitives-navigation-menu.d.ts} +15 -70
- package/{number-field/index.d.ts → types/ng-primitives-number-field.d.ts} +80 -110
- package/types/ng-primitives-pagination.d.ts +502 -0
- package/{popover/index.d.ts → types/ng-primitives-popover.d.ts} +244 -57
- package/{portal/index.d.ts → types/ng-primitives-portal.d.ts} +22 -13
- package/{progress/index.d.ts → types/ng-primitives-progress.d.ts} +3 -10
- package/{roving-focus/index.d.ts → types/ng-primitives-roving-focus.d.ts} +65 -79
- package/types/ng-primitives-select.d.ts +687 -0
- package/{separator/index.d.ts → types/ng-primitives-separator.d.ts} +3 -10
- package/{slider/index.d.ts → types/ng-primitives-slider.d.ts} +76 -138
- package/{state/index.d.ts → types/ng-primitives-state.d.ts} +26 -21
- package/{switch/index.d.ts → types/ng-primitives-switch.d.ts} +50 -64
- package/{tabs/index.d.ts → types/ng-primitives-tabs.d.ts} +9 -40
- package/{textarea/index.d.ts → types/ng-primitives-textarea.d.ts} +3 -10
- package/{toast/index.d.ts → types/ng-primitives-toast.d.ts} +13 -1
- package/{toggle-group/index.d.ts → types/ng-primitives-toggle-group.d.ts} +75 -89
- package/{toggle/index.d.ts → types/ng-primitives-toggle.d.ts} +50 -56
- package/{toolbar/index.d.ts → types/ng-primitives-toolbar.d.ts} +3 -10
- package/types/ng-primitives-tooltip.d.ts +691 -0
- package/pagination/index.d.ts +0 -211
- package/select/index.d.ts +0 -396
- package/tooltip/index.d.ts +0 -384
- /package/{ai/index.d.ts → types/ng-primitives-ai.d.ts} +0 -0
- /package/{common/index.d.ts → types/ng-primitives-common.d.ts} +0 -0
- /package/{date-time-luxon/index.d.ts → types/ng-primitives-date-time-luxon.d.ts} +0 -0
- /package/{date-time/index.d.ts → types/ng-primitives-date-time.d.ts} +0 -0
- /package/{input-otp/index.d.ts → types/ng-primitives-input-otp.d.ts} +0 -0
- /package/{interactions/index.d.ts → types/ng-primitives-interactions.d.ts} +0 -0
- /package/{internal/index.d.ts → types/ng-primitives-internal.d.ts} +0 -0
- /package/{listbox/index.d.ts → types/ng-primitives-listbox.d.ts} +0 -0
- /package/{meter/index.d.ts → types/ng-primitives-meter.d.ts} +0 -0
- /package/{radio/index.d.ts → types/ng-primitives-radio.d.ts} +0 -0
- /package/{resize/index.d.ts → types/ng-primitives-resize.d.ts} +0 -0
- /package/{search/index.d.ts → types/ng-primitives-search.d.ts} +0 -0
- /package/{utils/index.d.ts → types/ng-primitives-utils.d.ts} +0 -0
- /package/{index.d.ts → types/ng-primitives.d.ts} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-primitives-select.mjs","sources":["../../../../packages/ng-primitives/select/src/native-select/native-select-state.ts","../../../../packages/ng-primitives/select/src/native-select/native-select.ts","../../../../packages/ng-primitives/select/src/select/select-state.ts","../../../../packages/ng-primitives/select/src/select-dropdown/select-dropdown.ts","../../../../packages/ng-primitives/select/src/select-option/select-option.ts","../../../../packages/ng-primitives/select/src/select-portal/select-portal.ts","../../../../packages/ng-primitives/select/src/config/select-config.ts","../../../../packages/ng-primitives/select/src/select/select.ts","../../../../packages/ng-primitives/select/src/ng-primitives-select.ts"],"sourcesContent":["import {\n createState,\n createStateInjector,\n createStateProvider,\n createStateToken,\n} from 'ng-primitives/state';\nimport type { NgpNativeSelect } from './native-select';\n\n/**\n * The state token for the Select primitive.\n */\nexport const NgpNativeSelectStateToken = createStateToken<NgpNativeSelect>('Select');\n\n/**\n * Provides the Select state.\n */\nexport const provideNativeSelectState = createStateProvider(NgpNativeSelectStateToken);\n\n/**\n * Injects the Select state.\n */\nexport const injectNativeSelectState =\n createStateInjector<NgpNativeSelect>(NgpNativeSelectStateToken);\n\n/**\n * The Select state registration function.\n */\nexport const selectNativeSelectState = createState(NgpNativeSelectStateToken);\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, Directive, input } from '@angular/core';\nimport { ngpFormControl } from 'ng-primitives/form-field';\nimport { ngpInteractions } from 'ng-primitives/interactions';\nimport { uniqueId } from 'ng-primitives/utils';\nimport { provideNativeSelectState, selectNativeSelectState } from './native-select-state';\n\n/**\n * Apply the `ngpNativeSelect` directive to a select element that you want to enhance.\n */\n@Directive({\n selector: 'select[ngpNativeSelect]',\n exportAs: 'ngpNativeSelect',\n providers: [provideNativeSelectState()],\n host: {\n '[attr.disabled]': 'state.disabled() || null',\n },\n})\nexport class NgpNativeSelect {\n /**\n * The id of the select. If not provided, a unique id will be generated.\n */\n readonly id = input<string>(uniqueId('ngp-native-select'));\n\n /**\n * Whether the select is disabled.\n */\n readonly disabled = input<boolean, BooleanInput>(false, {\n alias: 'ngpNativeSelectDisabled',\n transform: booleanAttribute,\n });\n\n /**\n * The select state.\n */\n protected readonly state = selectNativeSelectState<NgpNativeSelect>(this);\n\n constructor() {\n ngpInteractions({\n hover: true,\n press: true,\n focus: true,\n focusVisible: true,\n disabled: this.state.disabled,\n });\n ngpFormControl({ id: this.state.id, disabled: this.state.disabled });\n }\n}\n","import {\n createState,\n createStateInjector,\n createStateProvider,\n createStateToken,\n} from 'ng-primitives/state';\nimport type { NgpSelect } from './select';\n\n/**\n * The state token for the Select primitive.\n */\nexport const NgpSelectStateToken = createStateToken<NgpSelect>('Select');\n\n/**\n * Provides the Select state.\n */\nexport const provideSelectState = createStateProvider(NgpSelectStateToken);\n\n/**\n * Injects the Select state.\n */\nexport const injectSelectState = createStateInjector<NgpSelect>(NgpSelectStateToken);\n\n/**\n * The Select state registration function.\n */\nexport const selectState = createState(NgpSelectStateToken);\n","import { Directive, input } from '@angular/core';\nimport { injectElementRef, observeResize } from 'ng-primitives/internal';\nimport { uniqueId } from 'ng-primitives/utils';\nimport { injectSelectState } from '../select/select-state';\n\n@Directive({\n selector: '[ngpSelectDropdown]',\n exportAs: 'ngpSelectDropdown',\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-select-transform-origin]': 'state().overlay()?.transformOrigin()',\n '[style.--ngp-select-available-width.px]': 'state().overlay()?.availableWidth()',\n '[style.--ngp-select-available-height.px]': 'state().overlay()?.availableHeight()',\n '[style.--ngp-select-width.px]': 'selectDimensions().width',\n },\n})\nexport class NgpSelectDropdown {\n /** Access the select state. */\n protected readonly state = injectSelectState();\n\n /** The dimensions of the select. */\n protected readonly selectDimensions = observeResize(() => this.state().elementRef.nativeElement);\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-select-dropdown'));\n\n constructor() {\n this.state().registerDropdown(this);\n }\n}\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport {\n booleanAttribute,\n computed,\n Directive,\n HostListener,\n input,\n OnDestroy,\n output,\n} from '@angular/core';\nimport { ngpInteractions } from 'ng-primitives/interactions';\nimport { injectElementRef, scrollIntoViewIfNeeded } from 'ng-primitives/internal';\nimport { uniqueId } from 'ng-primitives/utils';\nimport { injectSelectState } from '../select/select-state';\n\n@Directive({\n selector: '[ngpSelectOption]',\n exportAs: 'ngpSelectOption',\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 NgpSelectOption implements OnDestroy {\n /** Access the select state. */\n protected readonly state = injectSelectState();\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-select-option'));\n\n /** @required The value of the option. */\n readonly value = input<any>(undefined, {\n alias: 'ngpSelectOptionValue',\n });\n\n /** The disabled state of the option. */\n readonly disabled = input<boolean, BooleanInput>(false, {\n alias: 'ngpSelectOptionDisabled',\n transform: booleanAttribute,\n });\n\n /** The index of the option in the list. */\n readonly index = input<number | undefined>(undefined, {\n alias: 'ngpSelectOptionIndex',\n });\n\n /**\n * Event emitted when the option is activated via click or keyboard.\n * This is useful for options without values that need custom behavior.\n */\n readonly activated = output<void>({\n alias: 'ngpSelectOptionActivated',\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 // Only treat `undefined` as \"no value\" (allow '', 0, false).\n if (value === undefined) {\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 // Only treat `undefined` as \"no selection\" (allow '', 0, false).\n if (stateValue === undefined) {\n return false;\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 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.activated.emit();\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 because this\n // is required for virtual scrolling scenarios\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 { injectSelectState } from '../select/select-state';\n\n@Directive({\n selector: '[ngpSelectPortal]',\n exportAs: 'ngpSelectPortal',\n})\nexport class NgpSelectPortal implements OnDestroy {\n /** Access the select state. */\n private readonly state = injectSelectState();\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 offset: this.state().offset(),\n flip: this.state().flip(),\n closeOnOutsideClick: true,\n closeOnEscape: true,\n restoreFocus: false,\n scrollBehaviour: 'reposition',\n container: this.state().container(),\n onClose: () => this.state().onOverlayClosed(),\n };\n\n this.overlay.set(createOverlay(config));\n }\n}\n","import { InjectionToken, Provider, inject } from '@angular/core';\nimport type { Placement } from '@floating-ui/dom';\nimport { NgpFlip, NgpOffset } from 'ng-primitives/portal';\n\nexport interface NgpSelectConfig {\n /**\n * The default placement for the select dropdown.\n * @default 'bottom'\n */\n placement: Placement;\n\n /**\n * The container element or selector for the select 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 /**\n * Whether the select dropdown should flip when there is not enough space.\n * Can be a boolean to enable/disable, or an object with padding and fallbackPlacements options.\n * @default true\n */\n flip: NgpFlip;\n\n /**\n * Define the offset of the select dropdown relative to the trigger.\n * Can be a number (applies to mainAxis) or an object with mainAxis, crossAxis, and alignmentAxis.\n * @default 0\n */\n offset: NgpOffset;\n}\n\nexport const defaultSelectConfig: NgpSelectConfig = {\n placement: 'bottom',\n container: 'body',\n flip: true,\n offset: 0,\n};\n\nexport const NgpSelectConfigToken = new InjectionToken<NgpSelectConfig>('NgpSelectConfigToken');\n\n/**\n * Provide the default Select configuration\n * @param config The Select configuration\n * @returns The provider\n */\nexport function provideSelectConfig(config: Partial<NgpSelectConfig>): Provider[] {\n return [\n {\n provide: NgpSelectConfigToken,\n useValue: { ...defaultSelectConfig, ...config },\n },\n ];\n}\n\n/**\n * Inject the Select configuration\n * @returns The global Select configuration\n */\nexport function injectSelectConfig(): NgpSelectConfig {\n return inject(NgpSelectConfigToken, { optional: true }) ?? defaultSelectConfig;\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 type { Placement } from '@floating-ui/dom';\nimport { activeDescendantManager } from 'ng-primitives/a11y';\nimport { ngpFormControl } from 'ng-primitives/form-field';\nimport { ngpInteractions } from 'ng-primitives/interactions';\nimport { domSort, injectElementRef } from 'ng-primitives/internal';\nimport {\n coerceFlip,\n coerceOffset,\n NgpFlip,\n NgpFlipInput,\n NgpOffset,\n NgpOffsetInput,\n} from 'ng-primitives/portal';\nimport { uniqueId } from 'ng-primitives/utils';\nimport { injectSelectConfig } from '../config/select-config';\nimport type { NgpSelectDropdown } from '../select-dropdown/select-dropdown';\nimport { NgpSelectOption } from '../select-option/select-option';\nimport type { NgpSelectPortal } from '../select-portal/select-portal';\nimport { provideSelectState, selectState } from './select-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: '[ngpSelect]',\n exportAs: 'ngpSelect',\n providers: [provideSelectState()],\n host: {\n role: 'combobox',\n '[id]': 'state.id()',\n '[attr.aria-expanded]': 'open()',\n '[attr.aria-controls]': 'open() ? dropdown()?.id() : undefined',\n '[attr.aria-activedescendant]': 'open() ? activeDescendantManager.id() : undefined',\n '[attr.tabindex]': '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 },\n})\nexport class NgpSelect {\n /** Access the select configuration. */\n protected readonly config = injectSelectConfig();\n\n /** @internal Access the select element. */\n readonly elementRef = injectElementRef();\n\n /** Access the injector. */\n protected readonly injector = inject(Injector);\n\n /** The unique id of the select. */\n readonly id = input(uniqueId('ngp-select'));\n\n /** The value of the select. */\n readonly value = input<T>(undefined, {\n alias: 'ngpSelectValue',\n });\n\n /** Event emitted when the value changes. */\n readonly valueChange = output<T>({\n alias: 'ngpSelectValueChange',\n });\n\n /** Whether the select is multiple selection. */\n readonly multiple = input<boolean, BooleanInput>(false, {\n alias: 'ngpSelectMultiple',\n transform: booleanAttribute,\n });\n\n /** Whether the select is disabled. */\n readonly disabled = input<boolean, BooleanInput>(false, {\n alias: 'ngpSelectDisabled',\n transform: booleanAttribute,\n });\n\n /** Emit when the dropdown open state changes. */\n readonly openChange = output<boolean>({\n alias: 'ngpSelectOpenChange',\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: 'ngpSelectCompareWith',\n });\n\n /** The position of the dropdown. */\n readonly placement = input<Placement>(this.config.placement, {\n alias: 'ngpSelectDropdownPlacement',\n });\n\n /** The container for the dropdown. */\n readonly container = input<HTMLElement | string | null>(this.config.container, {\n alias: 'ngpSelectDropdownContainer',\n });\n\n /** Whether the dropdown should flip when there is not enough space. Can be a boolean to enable/disable, or an object with padding and fallbackPlacements options. */\n readonly flip = input<NgpFlip, NgpFlipInput>(this.config.flip, {\n alias: 'ngpSelectDropdownFlip',\n transform: coerceFlip,\n });\n\n /**\n * Define the offset of the select dropdown relative to the trigger.\n * Can be a number (applies to mainAxis) or an object with mainAxis, crossAxis, and alignmentAxis.\n * @default 0\n */\n readonly offset = input<NgpOffset, NgpOffsetInput>(this.config.offset, {\n alias: 'ngpSelectDropdownOffset',\n transform: coerceOffset,\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: 'ngpSelectScrollToOption',\n });\n\n /**\n * Provide all the option values to the select. 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 select 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: 'ngpSelectOptions' });\n\n /**\n * Store the select portal.\n * @internal\n */\n readonly portal = signal<NgpSelectPortal | undefined>(undefined);\n\n /**\n * Store the select dropdown.\n * @internal\n */\n readonly dropdown = signal<NgpSelectDropdown | undefined>(undefined);\n\n /**\n * Store the select options.\n * @internal\n */\n readonly options = signal<NgpSelectOption[]>([]);\n\n /**\n * Access the overlay\n * @internal\n */\n readonly overlay = computed(() => this.portal()?.overlay());\n\n /**\n * The open state of the select.\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.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 state of the select. */\n protected readonly state = selectState<NgpSelect>(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 ngpFormControl({ id: this.state.id, disabled: this.state.disabled });\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 this.portal()?.detach();\n }\n\n /**\n * Handles the dropdown being closed.\n * Emits the openChange event and resets the active descendant.\n * @internal\n */\n onOverlayClosed(): void {\n this.openChange.emit(false);\n // clear the active descendant\n this.activeDescendantManager.reset();\n }\n\n /**\n * Toggle the dropdown.\n * @internal\n */\n @HostListener('click')\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 index The index of the option to select.\n * @internal\n */\n selectOption(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 this.state.value.set(undefined);\n this.closeDropdown();\n return;\n }\n\n const optionValue = option.value();\n\n // If the option has no associated value, treat it as non-selectable.\n if (optionValue === undefined) {\n return;\n }\n\n if (this.state.multiple()) {\n // if the option is already selected, do nothing\n if (this.isOptionSelected(optionValue)) {\n return;\n }\n\n const value = [...((this.state.value() ?? []) as T[]), optionValue 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(optionValue as T);\n this.valueChange.emit(optionValue 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: NgpSelectOption): void {\n const optionValue = option.value();\n\n // Options without values cannot be deselected (and should never be selected).\n if (optionValue === undefined) {\n return;\n }\n\n // if the select is disabled or the option is not selected, do nothing\n // if the select is single selection, we don't allow deselecting\n if (this.state.disabled() || !this.isOptionSelected(optionValue) || !this.state.multiple()) {\n return;\n }\n\n const values = (this.state.value() as T[]) ?? [];\n\n const newValue = values.filter(v => !this.state.compareWith()(v, optionValue 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 }\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 const optionValue = option.value();\n\n // Options without values cannot be toggled.\n if (optionValue === undefined) {\n return;\n }\n\n // if the state is single selection, we don't allow toggling\n if (!this.state.multiple()) {\n // always select the option in single selection mode even if it is already selected so that we update the input\n this.selectOption(id);\n return;\n }\n\n // otherwise toggle the option\n if (this.isOptionSelected(optionValue)) {\n this.deselectOption(option);\n } else {\n this.selectOption(id);\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 const value = this.state.value();\n\n // Only treat `undefined` as \"no selection\" (allow '', 0, false).\n if (value === undefined) {\n return false;\n }\n\n if (this.state.multiple()) {\n return Array.isArray(value) && value.some(v => this.state.compareWith()(option, v));\n }\n\n return this.state.compareWith()(option, 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 select.\n * @param portal The dropdown portal.\n * @internal\n */\n registerPortal(portal: NgpSelectPortal): void {\n this.portal.set(portal);\n }\n\n /**\n * Register the dropdown with the select.\n * @param dropdown The dropdown to register.\n * @internal\n */\n registerDropdown(dropdown: NgpSelectDropdown): void {\n this.dropdown.set(dropdown);\n }\n\n /**\n * Register an option with the select.\n * @param option The option to register.\n * @internal\n */\n registerOption(option: NgpSelectOption): void {\n this.options.update(options => [...options, option]);\n }\n\n /**\n * Unregister an option from the select.\n * @param option The option to unregister.\n * @internal\n */\n unregisterOption(option: NgpSelectOption): void {\n this.options.update(options => options.filter(o => o !== option));\n }\n\n /**\n * Focus the select.\n * @internal\n */\n focus(): void {\n this.elementRef.nativeElement.focus();\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.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 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 const option = this.sortedOptions().find(opt => opt.id() === activeId);\n option?.select();\n }\n } else {\n this.openDropdown();\n }\n event.preventDefault();\n break;\n case ' ':\n this.toggleDropdown();\n event.preventDefault();\n break;\n }\n }\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 this.closeDropdown();\n event.preventDefault();\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): NgpSelectOption | 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","/**\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-select.mjs","sources":["../../../../packages/ng-primitives/select/src/native-select/native-select-state.ts","../../../../packages/ng-primitives/select/src/native-select/native-select.ts","../../../../packages/ng-primitives/select/src/select/select-state.ts","../../../../packages/ng-primitives/select/src/select-dropdown/select-dropdown-state.ts","../../../../packages/ng-primitives/select/src/select-dropdown/select-dropdown.ts","../../../../packages/ng-primitives/select/src/select-option/select-option-state.ts","../../../../packages/ng-primitives/select/src/select-option/select-option.ts","../../../../packages/ng-primitives/select/src/select-portal/select-portal-state.ts","../../../../packages/ng-primitives/select/src/select-portal/select-portal.ts","../../../../packages/ng-primitives/select/src/config/select-config.ts","../../../../packages/ng-primitives/select/src/select/select.ts","../../../../packages/ng-primitives/select/src/ng-primitives-select.ts"],"sourcesContent":["import { signal, Signal } from '@angular/core';\nimport { ngpFormControl } from 'ng-primitives/form-field';\nimport { ngpInteractions } from 'ng-primitives/interactions';\nimport { injectElementRef } from 'ng-primitives/internal';\nimport { attrBinding, controlled, createPrimitive, deprecatedSetter } from 'ng-primitives/state';\nimport { uniqueId } from 'ng-primitives/utils';\n\nexport interface NgpNativeSelectState {\n /**\n * Whether the select is disabled.\n */\n readonly disabled: Signal<boolean>;\n\n /**\n * Set the disabled state of the select.\n * @param value The disabled state.\n */\n setDisabled(value: boolean): void;\n}\n\nexport interface NgpNativeSelectProps {\n /**\n * The id of the select. If not provided, a unique id will be generated.\n */\n readonly id?: Signal<string>;\n\n /**\n * Whether the select is disabled.\n */\n readonly disabled?: Signal<boolean>;\n}\n\nexport const [\n NgpNativeSelectStateToken,\n ngpNativeSelect,\n injectNativeSelectState,\n provideNativeSelectState,\n] = createPrimitive(\n 'NgpNativeSelect',\n ({\n disabled: _disabled = signal(false),\n id = signal(uniqueId('ngp-native-select')),\n }: NgpNativeSelectProps) => {\n const element = injectElementRef();\n const disabled = controlled(_disabled);\n // Setup interactions\n ngpInteractions({\n hover: true,\n press: true,\n focus: true,\n focusVisible: true,\n disabled: disabled,\n });\n ngpFormControl({ id: id, disabled: disabled });\n\n attrBinding(element, 'disabled', disabled);\n\n function setDisabled(value: boolean): void {\n disabled.set(value);\n }\n\n return {\n disabled: deprecatedSetter(disabled, 'setDisabled'),\n setDisabled,\n } satisfies NgpNativeSelectState;\n },\n);\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, Directive, input } from '@angular/core';\nimport { uniqueId } from 'ng-primitives/utils';\nimport { ngpNativeSelect, provideNativeSelectState } from './native-select-state';\n\n/**\n * Apply the `ngpNativeSelect` directive to a select element that you want to enhance.\n */\n@Directive({\n selector: 'select[ngpNativeSelect]',\n exportAs: 'ngpNativeSelect',\n providers: [provideNativeSelectState()],\n})\nexport class NgpNativeSelect {\n /**\n * The id of the select. If not provided, a unique id will be generated.\n */\n readonly id = input<string>(uniqueId('ngp-native-select'));\n\n /**\n * Whether the select is disabled.\n */\n readonly disabled = input<boolean, BooleanInput>(false, {\n alias: 'ngpNativeSelectDisabled',\n transform: booleanAttribute,\n });\n\n constructor() {\n ngpNativeSelect({\n id: this.id,\n disabled: this.disabled,\n });\n }\n}\n","import { computed, ElementRef, Signal, signal, WritableSignal } from '@angular/core';\nimport type { Placement } from '@floating-ui/dom';\nimport { activeDescendantManager } from 'ng-primitives/a11y';\nimport { ngpFormControl } from 'ng-primitives/form-field';\nimport { ngpInteractions } from 'ng-primitives/interactions';\nimport { domSort, injectElementRef } from 'ng-primitives/internal';\nimport type { NgpFlip, NgpOffset, NgpOverlay } from 'ng-primitives/portal';\nimport {\n attrBinding,\n controlled,\n createPrimitive,\n dataBinding,\n deprecatedSetter,\n emitter,\n listener,\n SetterOptions,\n StateInjectionOptions,\n} from 'ng-primitives/state';\nimport { uniqueId } from 'ng-primitives/utils';\nimport { Observable } from 'rxjs';\nimport type { NgpSelectDropdownState } from '../select-dropdown/select-dropdown-state';\nimport type { NgpSelectOptionState } from '../select-option/select-option-state';\nimport { NgpSelectPortalState } from '../select-portal/select-portal-state';\n\nexport interface NgpSelectState<T> {\n /**\n * @internal Access the select element.\n */\n readonly elementRef: ElementRef<HTMLElement>;\n\n /** The unique id of the select. */\n readonly id: Signal<string>;\n\n /** The value of the select. */\n readonly value: WritableSignal<T | undefined>;\n\n /** Whether the select is multiple selection. */\n readonly multiple: Signal<boolean>;\n\n /** Whether the select is disabled. */\n readonly disabled: WritableSignal<boolean>;\n\n /** The comparator function used to compare options. */\n readonly compareWith: Signal<(a: T | undefined, b: T | undefined) => boolean>;\n\n /** The position of the dropdown. */\n readonly placement: Signal<Placement>;\n\n /** The container for the dropdown. */\n readonly container: Signal<HTMLElement | string | null>;\n\n /** Whether the dropdown should flip when there is not enough space. Can be a boolean to enable/disable, or an object with padding and fallbackPlacements options. */\n readonly flip: Signal<NgpFlip>;\n\n /**\n * Define the offset of the select dropdown relative to the trigger.\n * Can be a number (applies to mainAxis) or an object with mainAxis, crossAxis, and alignmentAxis.\n */\n readonly offset: Signal<NgpOffset>;\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: Signal<((index: number) => void) | undefined>;\n\n /**\n * Provide all the option values to the select. 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 select 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: Signal<T[] | undefined>;\n\n /**\n * Store the select portal.\n * @internal\n */\n readonly portal: WritableSignal<NgpSelectPortalState | undefined>;\n\n /**\n * Store the select dropdown.\n * @internal\n */\n readonly dropdown: WritableSignal<NgpSelectDropdownState | undefined>;\n\n /**\n * Store the select options.\n * @internal\n */\n readonly options: WritableSignal<NgpSelectOptionState[]>;\n\n /**\n * Access the overlay\n * @internal\n */\n readonly overlay: Signal<NgpOverlay<void> | null | undefined>;\n\n /**\n * The open state of the select.\n * @internal\n */\n readonly open: Signal<boolean>;\n\n /**\n * The options sorted by their index or DOM position.\n * @internal\n */\n readonly sortedOptions: Signal<NgpSelectOptionState[]>;\n\n /**\n * The active key descendant manager.\n * @internal\n */\n readonly activeDescendantManager: ReturnType<typeof activeDescendantManager>;\n\n /**\n * Open the dropdown.\n * @internal\n */\n openDropdown(): Promise<void>;\n\n /**\n * Close the dropdown.\n * @internal\n */\n closeDropdown(): void;\n\n /**\n * Handle the overlay being closed (e.g. via outside click or Escape).\n * Emits the openChange event and resets the active descendant.\n * @internal\n */\n onOverlayClose(): void;\n\n /**\n * Toggle the dropdown.\n * @internal\n */\n toggleDropdown(): Promise<void>;\n\n /**\n * Select an option.\n * @param index The index of the option to select.\n * @internal\n */\n selectOption(id: string): void;\n\n /**\n * Deselect an option.\n * @param option The option to deselect.\n * @internal\n */\n deselectOption(option: NgpSelectOptionState): void;\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\n /**\n * Determine if an option is selected.\n * @param option The option to check.\n * @internal\n */\n isOptionSelected(option: T): boolean;\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\n /**\n * Activate the previous option in the list if there is one.\n * @internal\n */\n activatePreviousOption(): void;\n\n /**\n * Register the dropdown portal with the select.\n * @param portal The dropdown portal.\n * @internal\n */\n registerPortal(portal: NgpSelectPortalState): void;\n\n /**\n * Register the dropdown with the select.\n * @param dropdown The dropdown to register.\n * @internal\n */\n registerDropdown(dropdown: NgpSelectDropdownState): void;\n\n /**\n * Register an option with the select.\n * @param option The option to register.\n * @internal\n */\n registerOption(option: NgpSelectOptionState): void;\n\n /**\n * Unregister an option from the select.\n * @param option The option to unregister.\n * @internal\n */\n unregisterOption(option: NgpSelectOptionState): void;\n\n /**\n * Focus the select.\n * @internal\n */\n focus(): void;\n\n /**\n * Programmatically set the value of the select. Fires `onValueChange` and\n * emits on `valueChange` by default. Pass `{ emit: false }` for cases like\n * form `writeValue` where the internal state should sync without notifying.\n */\n setValue(value: T | undefined, options?: SetterOptions): void;\n\n /**\n * Programmatically set the disabled state of the select. Used by the form\n * `setDisabledState` integration.\n */\n setDisabled(disabled: boolean): void;\n\n /**\n * Observable that emits whenever the value changes.\n */\n readonly valueChange: Observable<T | undefined>;\n}\n\nexport interface NgpSelectProps<T> {\n /** The unique id of the select. */\n readonly id?: Signal<string>;\n\n /** The value of the select. */\n readonly value?: Signal<T | undefined>;\n\n /** Event emitted when the value changes. */\n readonly onValueChange?: (value: T) => void;\n\n /** Whether the select is multiple selection. */\n readonly multiple?: Signal<boolean>;\n\n /** Whether the select is disabled. */\n readonly disabled?: Signal<boolean>;\n\n /** Emit when the dropdown open state changes. */\n readonly onOpenChange?: (open: boolean) => void;\n\n /** The comparator function used to compare options. */\n readonly compareWith?: Signal<(a: T | undefined, b: T | undefined) => boolean>;\n\n /** The position of the dropdown. */\n readonly placement?: Signal<Placement>;\n\n /** The container for the dropdown. */\n readonly container?: Signal<HTMLElement | string | null>;\n\n /** Whether the dropdown should flip when there is not enough space. Can be a boolean to enable/disable, or an object with padding and fallbackPlacements options. */\n readonly flip?: Signal<NgpFlip>;\n\n /**\n * Define the offset of the select dropdown relative to the trigger.\n * Can be a number (applies to mainAxis) or an object with mainAxis, crossAxis, and alignmentAxis.\n */\n readonly offset?: Signal<NgpOffset>;\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?: Signal<((index: number) => void) | undefined>;\n\n /**\n * Provide all the option values to the select. 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 select 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?: Signal<T[] | undefined>;\n}\n\nexport const [NgpSelectStateToken, ngpSelect, _injectSelectState, provideSelectState] =\n createPrimitive(\n 'NgpSelect',\n <T>({\n id = signal(uniqueId('ngp-select')),\n value: _value = signal<T | undefined>(undefined),\n multiple = signal(false),\n disabled: _disabled = signal(false),\n compareWith = signal<(a: T | undefined, b: T | undefined) => boolean>(Object.is),\n placement = signal<Placement>('bottom'),\n container = signal<HTMLElement | string | null>('body'),\n flip = signal<NgpFlip>(true),\n offset = signal<NgpOffset>(0),\n scrollToOption = signal<((index: number) => void) | undefined>(undefined),\n allOptions = signal<T[] | undefined>(undefined),\n onValueChange,\n onOpenChange,\n }: NgpSelectProps<T>): NgpSelectState<T> => {\n const elementRef = injectElementRef<HTMLElement>();\n const value = controlled(_value);\n const disabled = controlled(_disabled, false);\n const valueChangeEmitter = emitter<T | undefined>();\n\n function setValue(newValue: T | undefined, options?: SetterOptions): void {\n value.set(newValue);\n if (options?.emit !== false) {\n onValueChange?.(newValue as T);\n valueChangeEmitter.emit(newValue);\n }\n }\n\n function setDisabled(isDisabled: boolean): void {\n disabled.set(isDisabled);\n }\n\n ngpInteractions({\n focus: true,\n focusWithin: true,\n hover: true,\n press: true,\n disabled,\n });\n\n ngpFormControl({ id, disabled });\n\n const portal = signal<NgpSelectPortalState | undefined>(undefined);\n const dropdown = signal<NgpSelectDropdownState | undefined>(undefined);\n const options = signal<NgpSelectOptionState[]>([]);\n\n const overlay = computed(() => portal()?.overlay());\n const open = computed(() => overlay()?.isOpen() ?? false);\n\n const sortedOptions = computed(() =>\n domSort(\n options(),\n option => option.elementRef.nativeElement,\n option => option.index?.(),\n ),\n );\n\n const activeDescendantManagerInstance = activeDescendantManager({\n // we must wrap the signal in a computed to ensure it is not used before it is defined\n disabled: computed(() => disabled()),\n wrap: signal(true),\n count: computed(() => allOptions()?.length ?? options().length),\n getItemId: index => getOptionAtIndex(index)?.id(),\n isItemDisabled: index => getOptionAtIndex(index)?.disabled() ?? false,\n scrollIntoView: index => {\n const isPositioned = portal()?.overlay()?.isPositioned() ?? false;\n\n if (!isPositioned || index === -1) {\n return;\n }\n\n scrollTo(index);\n },\n });\n\n // Host bindings\n attrBinding(elementRef, 'role', 'combobox');\n attrBinding(elementRef, 'id', id);\n attrBinding(elementRef, 'aria-expanded', open);\n attrBinding(elementRef, 'aria-controls', () => (open() ? dropdown()?.id() : undefined));\n attrBinding(elementRef, 'aria-activedescendant', () =>\n open() ? activeDescendantManagerInstance.id() : undefined,\n );\n attrBinding(elementRef, 'tabindex', () => (disabled() ? -1 : 0));\n dataBinding(elementRef, 'data-open', () => (open() ? '' : null));\n dataBinding(elementRef, 'data-disabled', () => (disabled() ? '' : null));\n dataBinding(elementRef, 'data-multiple', () => (multiple() ? '' : null));\n\n // Event listeners\n listener(elementRef, 'click', () => void toggleDropdown());\n listener(elementRef, 'keydown', handleKeydown);\n listener(elementRef, 'blur', onBlur);\n\n /**\n * Open the dropdown.\n * @internal\n */\n async function openDropdown(): Promise<void> {\n if (disabled() || open()) {\n return;\n }\n\n onOpenChange?.(true);\n await 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 (allOptions()) {\n selectedOptionIdx = allOptions()!.findIndex(option => 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 = sortedOptions().findIndex(option => isOptionSelected(option.value()));\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 scrollTo(selectedOptionIdx);\n activeDescendantManagerInstance.activateByIndex(selectedOptionIdx);\n return;\n }\n\n // activate the selected option or the first option\n activeDescendantManagerInstance.first();\n }\n\n /**\n * Close the dropdown.\n * @internal\n */\n function closeDropdown(): void {\n if (!open()) {\n return;\n }\n\n portal()?.hide();\n }\n\n /**\n * Handle the overlay being closed (whether via imperative closeDropdown(),\n * outside click, or Escape). Emits openChange(false) and resets the active\n * descendant. Wired in from select-portal-state.ts via the overlay onClose\n * config — this is the single source of truth for the close-side emit so\n * external close paths (outside click, Escape) also fire openChange.\n * @internal\n */\n function onOverlayClose(): void {\n onOpenChange?.(false);\n activeDescendantManagerInstance.reset();\n }\n\n /**\n * Toggle the dropdown.\n * @internal\n */\n async function toggleDropdown(): Promise<void> {\n if (open()) {\n closeDropdown();\n } else {\n await openDropdown();\n }\n }\n\n /**\n * Select an option.\n * @param index The index of the option to select.\n * @internal\n */\n function selectOption(id: string): void {\n if (disabled()) {\n return;\n }\n\n const option = sortedOptions().find(opt => opt.id() === id);\n\n if (!option) {\n setValue(undefined, { emit: false });\n closeDropdown();\n return;\n }\n\n const optionValue = option.value();\n\n // If the option has no associated value, treat it as non-selectable.\n if (optionValue === undefined) {\n return;\n }\n\n if (multiple()) {\n // if the option is already selected, do nothing\n if (isOptionSelected(optionValue)) {\n return;\n }\n\n const newValue = [...((value() ?? []) as T[]), optionValue as T];\n\n // add the option to the value\n setValue(newValue as T | undefined);\n } else {\n setValue(optionValue as T | undefined);\n\n // close the dropdown on single selection\n closeDropdown();\n }\n }\n\n /**\n * Deselect an option.\n * @param option The option to deselect.\n * @internal\n */\n function deselectOption(option: NgpSelectOptionState): void {\n const optionValue = option.value();\n\n // Options without values cannot be deselected (and should never be selected).\n if (optionValue === undefined) {\n return;\n }\n\n // if the select is disabled or the option is not selected, do nothing\n // if the select is single selection, we don't allow deselecting\n if (disabled() || !isOptionSelected(optionValue) || !multiple()) {\n return;\n }\n\n const values = (value() as T[]) ?? [];\n\n const newValue = values.filter(v => !compareWith()(v, optionValue as T));\n\n // remove the option from the value\n setValue(newValue as T | undefined);\n }\n\n /**\n * Toggle the selection of an option.\n * @param id The id of the option to toggle.\n * @internal\n */\n function toggleOption(id: string): void {\n if (disabled()) {\n return;\n }\n\n const option = sortedOptions().find(opt => opt.id() === id);\n\n if (!option) {\n return;\n }\n\n const optionValue = option.value();\n\n // Options without values cannot be toggled.\n if (optionValue === undefined) {\n return;\n }\n\n // if the state is single selection, we don't allow toggling\n if (!multiple()) {\n // always select the option in single selection mode even if it is already selected so that we update the input\n selectOption(id);\n return;\n }\n\n // otherwise toggle the option\n if (isOptionSelected(optionValue)) {\n deselectOption(option);\n } else {\n selectOption(id);\n }\n }\n\n /**\n * Determine if an option is selected.\n * @param option The option to check.\n * @internal\n */\n function isOptionSelected(option: T): boolean {\n if (disabled()) {\n return false;\n }\n\n const currentValue = value();\n\n // Only treat `undefined` as \"no selection\" (allow '', 0, false).\n if (currentValue === undefined) {\n return false;\n }\n\n if (multiple()) {\n return Array.isArray(currentValue) && currentValue.some(v => compareWith()(option, v));\n }\n\n return compareWith()(option, currentValue as T);\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 function activateNextOption(): void {\n if (disabled()) {\n return;\n }\n\n const currentOptions = sortedOptions();\n\n // if there are no options, do nothing\n if (currentOptions.length === 0) {\n return;\n }\n\n // if there is no active option, activate the first option\n if (activeDescendantManagerInstance.index() === -1) {\n const selectedOption = currentOptions.findIndex(option =>\n isOptionSelected(option.value()),\n );\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 activeDescendantManagerInstance.activateByIndex(targetOption, { origin: 'keyboard' });\n return;\n }\n\n // otherwise activate the next option\n activeDescendantManagerInstance.next({ origin: 'keyboard' });\n }\n\n /**\n * Activate the previous option in the list if there is one.\n * @internal\n */\n function activatePreviousOption(): void {\n if (disabled()) {\n return;\n }\n const currentOptions = sortedOptions();\n // if there are no options, do nothing\n if (currentOptions.length === 0) {\n return;\n }\n // if there is no active option, activate the last option\n if (activeDescendantManagerInstance.index() === -1) {\n const selectedOption = currentOptions.findIndex(option =>\n 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 : currentOptions.length - 1;\n activeDescendantManagerInstance.activateByIndex(targetOption, { origin: 'keyboard' });\n return;\n }\n // otherwise activate the previous option\n activeDescendantManagerInstance.previous({ origin: 'keyboard' });\n }\n\n /**\n * Register the dropdown portal with the select.\n * @param portal The dropdown portal.\n * @internal\n */\n function registerPortal(portalInstance: NgpSelectPortalState): void {\n portal.set(portalInstance);\n }\n\n /**\n * Register the dropdown with the select.\n * @param dropdown The dropdown to register.\n * @internal\n */\n function registerDropdown(dropdownInstance: NgpSelectDropdownState): void {\n dropdown.set(dropdownInstance);\n }\n\n /**\n * Register an option with the select.\n * @param option The option to register.\n * @internal\n */\n function registerOption(option: NgpSelectOptionState): void {\n options.update(current => [...current, option]);\n }\n\n /**\n * Unregister an option from the select.\n * @param option The option to unregister.\n * @internal\n */\n function unregisterOption(option: NgpSelectOptionState): void {\n options.update(current => current.filter(o => o !== option));\n }\n\n /**\n * Focus the select.\n * @internal\n */\n function focus(): void {\n elementRef.nativeElement.focus();\n }\n\n /** Handle keydown events for accessibility. */\n function handleKeydown(event: KeyboardEvent): void {\n switch (event.key) {\n case 'ArrowDown':\n if (open()) {\n activateNextOption();\n } else {\n void openDropdown();\n }\n event.preventDefault();\n break;\n case 'ArrowUp':\n if (open()) {\n activatePreviousOption();\n } else {\n void openDropdown();\n activeDescendantManagerInstance.last();\n }\n event.preventDefault();\n break;\n case 'Home':\n if (open()) {\n activeDescendantManagerInstance.first({ origin: 'keyboard' });\n }\n event.preventDefault();\n break;\n case 'End':\n if (open()) {\n activeDescendantManagerInstance.last({ origin: 'keyboard' });\n }\n event.preventDefault();\n break;\n case 'Enter':\n if (open()) {\n const activeId = activeDescendantManagerInstance.id();\n\n if (activeId) {\n const option = sortedOptions().find(opt => opt.id() === activeId);\n option?.select();\n }\n } else {\n void openDropdown();\n }\n event.preventDefault();\n break;\n case ' ':\n void toggleDropdown();\n event.preventDefault();\n break;\n }\n }\n\n function 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 && dropdown()?.elementRef.nativeElement.contains(relatedTarget)) {\n return;\n }\n\n closeDropdown();\n event.preventDefault();\n }\n\n function scrollTo(index: number): void {\n const customScrollToOption = scrollToOption();\n\n if (customScrollToOption) {\n customScrollToOption(index);\n return;\n }\n const option = getOptionAtIndex(index);\n if (option) {\n option.scrollIntoView();\n }\n }\n\n function getOptionAtIndex(index: number): NgpSelectOptionState | 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 = options().findIndex(opt => opt.index?.() === index);\n\n if (optionIndex !== -1) {\n return options()[optionIndex];\n }\n\n return sortedOptions()[index];\n }\n\n return {\n elementRef,\n id,\n value: deprecatedSetter(value, 'setValue', v => setValue(v)),\n multiple,\n disabled: deprecatedSetter(disabled, 'setDisabled', setDisabled),\n compareWith,\n placement,\n container,\n flip,\n offset,\n scrollToOption,\n allOptions,\n portal,\n dropdown,\n options,\n overlay,\n open,\n sortedOptions,\n activeDescendantManager: activeDescendantManagerInstance,\n openDropdown,\n closeDropdown,\n onOverlayClose,\n toggleDropdown,\n selectOption,\n deselectOption,\n toggleOption,\n isOptionSelected,\n activateNextOption,\n activatePreviousOption,\n setValue,\n setDisabled,\n valueChange: valueChangeEmitter.asObservable(),\n registerPortal,\n registerDropdown,\n registerOption,\n unregisterOption,\n focus,\n } satisfies NgpSelectState<T>;\n },\n );\n\nexport function injectSelectState<T>(options?: StateInjectionOptions): Signal<NgpSelectState<T>> {\n return _injectSelectState(options) as Signal<NgpSelectState<T>>;\n}\n","import { ElementRef, Signal, signal } from '@angular/core';\nimport { injectElementRef, observeResize } from 'ng-primitives/internal';\nimport {\n attrBinding,\n createPrimitive,\n StateInjectionOptions,\n styleBinding,\n} from 'ng-primitives/state';\nimport { uniqueId } from 'ng-primitives/utils';\nimport { injectSelectState } from '../select/select-state';\n\nexport interface NgpSelectDropdownState {\n /**\n * @internal Access the element reference.\n */\n readonly elementRef: ElementRef<HTMLElement>;\n\n /** The id of the dropdown. */\n readonly id: Signal<string>;\n}\n\nexport interface NgpSelectDropdownProps {\n /** The id of the dropdown. */\n readonly id?: Signal<string>;\n}\n\nexport const [\n NgpSelectDropdownStateToken,\n ngpSelectDropdown,\n _injectSelectDropdownState,\n provideSelectDropdownState,\n] = createPrimitive(\n 'NgpSelectDropdown',\n ({ id: _id = signal(uniqueId('ngp-select-dropdown')) }: NgpSelectDropdownProps) => {\n const elementRef = injectElementRef<HTMLElement>();\n const selectState = injectSelectState();\n\n const selectDimensions = observeResize(() => selectState().elementRef.nativeElement);\n // Host bindings\n attrBinding(elementRef, 'role', 'listbox');\n attrBinding(elementRef, 'id', _id);\n styleBinding(elementRef, 'left.px', () => selectState().overlay()?.position()?.x ?? null);\n styleBinding(elementRef, 'top.px', () => selectState().overlay()?.position()?.y ?? null);\n styleBinding(\n elementRef,\n '--ngp-select-transform-origin',\n () => selectState().overlay()?.transformOrigin() ?? null,\n );\n styleBinding(\n elementRef,\n '--ngp-select-available-width.px',\n () => selectState().overlay()?.availableWidth() ?? null,\n );\n styleBinding(\n elementRef,\n '--ngp-select-available-height.px',\n () => selectState().overlay()?.availableHeight() ?? null,\n );\n styleBinding(elementRef, '--ngp-select-width.px', () => selectDimensions().width ?? null);\n\n const state = {\n elementRef,\n id: _id,\n } satisfies NgpSelectDropdownState;\n\n selectState().registerDropdown(state);\n\n return state;\n },\n);\n\nexport function injectSelectDropdownState(\n options?: StateInjectionOptions,\n): Signal<NgpSelectDropdownState> {\n return _injectSelectDropdownState(options) as Signal<NgpSelectDropdownState>;\n}\n","import { Directive, input } from '@angular/core';\nimport { provideControlContainerIsolation } from 'ng-primitives/portal';\nimport { uniqueId } from 'ng-primitives/utils';\nimport { ngpSelectDropdown } from './select-dropdown-state';\n\n@Directive({\n selector: '[ngpSelectDropdown]',\n exportAs: 'ngpSelectDropdown',\n providers: [provideControlContainerIsolation()],\n})\nexport class NgpSelectDropdown {\n /** The id of the dropdown. */\n readonly id = input<string>(uniqueId('ngp-select-dropdown'));\n\n constructor() {\n ngpSelectDropdown({\n id: this.id,\n });\n }\n}\n","import { computed, ElementRef, Signal, signal } from '@angular/core';\nimport { ngpInteractions } from 'ng-primitives/interactions';\nimport { injectElementRef, scrollIntoViewIfNeeded } from 'ng-primitives/internal';\nimport {\n attrBinding,\n createPrimitive,\n dataBinding,\n listener,\n onDestroy,\n StateInjectionOptions,\n} from 'ng-primitives/state';\nimport { uniqueId } from 'ng-primitives/utils';\nimport { injectSelectState } from '../select/select-state';\n\nexport interface NgpSelectOptionState {\n /**\n * @internal Access the element reference.\n */\n readonly elementRef: ElementRef<HTMLElement>;\n\n /** The id of the option. */\n readonly id: Signal<string>;\n\n /** The value of the option. */\n readonly value: Signal<any>;\n\n /** The disabled state of the option. */\n readonly disabled: Signal<boolean>;\n\n /** The index of the option in the list. */\n readonly index: Signal<number | undefined>;\n\n /**\n * Whether this option is the active descendant.\n * @internal\n */\n readonly active: Signal<boolean>;\n\n /**\n * Whether this option is selected.\n * @internal\n */\n readonly selected: Signal<boolean>;\n\n /**\n * Select the option.\n * @internal\n */\n select(): void;\n\n /**\n * Scroll the option into view.\n * @internal\n */\n scrollIntoView(): void;\n\n /**\n * Activate on pointer enter.\n * @internal\n */\n activateOnPointerEnter(): void;\n\n /**\n * Deactivate on pointer leave.\n * @internal\n */\n deactivateOnPointerLeave(): void;\n\n /**\n * Emit activated event.\n * @internal\n */\n emitActivated(): void;\n}\n\nexport interface NgpSelectOptionProps {\n /** The id of the option. */\n readonly id?: Signal<string>;\n\n /** The value of the option. */\n readonly value?: Signal<any>;\n\n /** The disabled state of the option. */\n readonly disabled?: Signal<boolean>;\n\n /** The index of the option in the list. */\n readonly index?: Signal<number | undefined>;\n\n /** Callback when option is activated. */\n readonly onActivated?: () => void;\n}\n\nexport const [\n NgpSelectOptionStateToken,\n ngpSelectOption,\n _injectSelectOptionState,\n provideSelectOptionState,\n] = createPrimitive(\n 'NgpSelectOption',\n ({\n id = signal(uniqueId('ngp-select-option')),\n value = signal<any>(undefined),\n disabled = signal(false),\n index = signal<number | undefined>(undefined),\n onActivated,\n }: NgpSelectOptionProps) => {\n const elementRef = injectElementRef<HTMLElement>();\n const selectState = injectSelectState();\n\n ngpInteractions({\n hover: true,\n press: true,\n disabled: disabled,\n });\n // Computed states\n const active = computed(() => {\n const idx = index();\n\n if (idx !== undefined) {\n return selectState().activeDescendantManager.index() === idx;\n }\n\n return selectState().activeDescendantManager.id() === id();\n });\n\n const selected = computed(() => {\n const val = value();\n const stateValue = selectState().value();\n\n if (val === undefined) {\n return false;\n }\n\n if (selectState().multiple()) {\n return (\n Array.isArray(stateValue) && stateValue.some(v => selectState().compareWith()(val, v))\n );\n }\n\n if (stateValue === undefined) {\n return false;\n }\n\n return selectState().compareWith()(val, stateValue);\n });\n\n // Host bindings\n attrBinding(elementRef, 'role', 'option');\n attrBinding(elementRef, 'tabindex', -1);\n attrBinding(elementRef, 'id', id);\n attrBinding(elementRef, 'aria-selected', () => (selected() ? 'true' : undefined));\n dataBinding(elementRef, 'data-selected', () => (selected() ? '' : null));\n dataBinding(elementRef, 'data-active', () => (active() ? '' : null));\n dataBinding(elementRef, 'data-disabled', () => (disabled() ? '' : null));\n\n // Event listeners\n listener(elementRef, 'click', () => select());\n listener(elementRef, 'pointerenter', () => activateOnPointerEnter());\n listener(elementRef, 'pointerleave', () => deactivateOnPointerLeave());\n\n // Methods\n function select(): void {\n if (disabled()) {\n return;\n }\n\n onActivated?.();\n selectState().toggleOption(id());\n }\n\n function scrollIntoView(): void {\n scrollIntoViewIfNeeded(elementRef.nativeElement);\n }\n\n function activateOnPointerEnter(): void {\n const idx = index();\n\n if (idx !== undefined) {\n selectState().activeDescendantManager.activateByIndex(idx, {\n scroll: false,\n origin: 'pointer',\n });\n return;\n }\n\n selectState().activeDescendantManager.activateById(id(), {\n scroll: false,\n origin: 'pointer',\n });\n }\n\n function deactivateOnPointerLeave(): void {\n if (selectState().activeDescendantManager.id() === id()) {\n selectState().activeDescendantManager.reset({ origin: 'pointer' });\n }\n }\n\n const state = {\n elementRef,\n id,\n value,\n disabled,\n index,\n active,\n selected,\n select,\n scrollIntoView,\n activateOnPointerEnter,\n deactivateOnPointerLeave,\n emitActivated: () => onActivated?.(),\n } satisfies NgpSelectOptionState;\n\n selectState().registerOption(state);\n\n onDestroy(() => {\n selectState().unregisterOption(state);\n });\n\n return state;\n },\n);\n\nexport function injectSelectOptionState(\n options?: StateInjectionOptions,\n): Signal<NgpSelectOptionState> {\n return _injectSelectOptionState(options) as Signal<NgpSelectOptionState>;\n}\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, Directive, input, output } from '@angular/core';\nimport { uniqueId } from 'ng-primitives/utils';\nimport { injectSelectState } from '../select/select-state';\nimport { ngpSelectOption } from './select-option-state';\n\n@Directive({\n selector: '[ngpSelectOption]',\n exportAs: 'ngpSelectOption',\n})\nexport class NgpSelectOption {\n /** Access the select state. */\n protected readonly selectState = injectSelectState();\n\n /** The id of the option. */\n readonly id = input<string>(uniqueId('ngp-select-option'));\n\n /** @required The value of the option. */\n readonly value = input<any>(undefined, {\n alias: 'ngpSelectOptionValue',\n });\n\n /** The disabled state of the option. */\n readonly disabled = input<boolean, BooleanInput>(false, {\n alias: 'ngpSelectOptionDisabled',\n transform: booleanAttribute,\n });\n\n /** The index of the option in the list. */\n readonly index = input<number | undefined>(undefined, {\n alias: 'ngpSelectOptionIndex',\n });\n\n /**\n * Event emitted when the option is activated via click or keyboard.\n * This is useful for options without values that need custom behavior.\n */\n readonly activated = output<void>({\n alias: 'ngpSelectOptionActivated',\n });\n\n /** Access the select option state */\n protected readonly state = ngpSelectOption({\n id: this.id,\n value: this.value,\n disabled: this.disabled,\n index: this.index,\n onActivated: () => this.activated.emit(),\n });\n\n /**\n * Select the option.\n * @internal\n */\n select(): void {\n this.state.select();\n }\n\n /**\n * Scroll the option into view.\n * @internal\n */\n scrollIntoView(): void {\n this.state.scrollIntoView();\n }\n}\n","import { inject, Injector, Signal, signal, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { createOverlay, NgpOverlay, NgpOverlayConfig } from 'ng-primitives/portal';\nimport { createPrimitive, StateInjectionOptions } from 'ng-primitives/state';\nimport { injectSelectState } from '../select/select-state';\n\nexport interface NgpSelectPortalState {\n /**\n * The overlay that manages the dropdown.\n * @internal\n */\n readonly overlay: Signal<NgpOverlay<void> | null>;\n\n /**\n * Show the portal.\n * @internal\n */\n show(): Promise<void>;\n\n /**\n * Hide the portal.\n * @internal\n */\n hide(): void;\n\n /**\n * Destroy the overlay. The directive class calls this from ngOnDestroy so\n * the overlay's onClose callback fires while the parent NgpSelect's output\n * bindings are still attached — destroyRef.onDestroy callbacks fire after\n * Angular has already torn those bindings down, which would prevent\n * openChange(false) from reaching the consumer on fixture.destroy().\n * @internal\n */\n destroy(): void;\n}\n\nexport interface NgpSelectPortalProps {\n // No props needed, injected from context\n}\n\nexport const [\n NgpSelectPortalStateToken,\n ngpSelectPortal,\n _injectSelectPortalState,\n provideSelectPortalState,\n] = createPrimitive('NgpSelectPortal', ({}: NgpSelectPortalProps): NgpSelectPortalState => {\n const templateRef = inject(TemplateRef);\n const viewContainerRef = inject(ViewContainerRef);\n const injector = inject(Injector);\n const selectState = injectSelectState();\n const overlay = signal<NgpOverlay<void> | null>(null);\n\n // Methods\n async function show(): Promise<void> {\n if (!overlay()) {\n createOverlayInstance();\n }\n\n return overlay()?.show();\n }\n\n function hide(): void {\n overlay()?.hide();\n }\n\n function destroy(): void {\n overlay()?.destroy();\n }\n\n function createOverlayInstance(): void {\n const overlayConfig: NgpOverlayConfig<void> = {\n content: templateRef,\n viewContainerRef,\n triggerElement: selectState().elementRef.nativeElement,\n injector,\n placement: selectState().placement,\n offset: selectState().offset(),\n flip: selectState().flip(),\n container: selectState().container(),\n closeOnOutsideClick: true,\n closeOnEscape: true,\n restoreFocus: false,\n scrollBehaviour: 'reposition',\n onClose: () => selectState().onOverlayClose(),\n };\n\n overlay.set(createOverlay(overlayConfig));\n }\n\n const state = {\n overlay,\n show,\n hide,\n destroy,\n } satisfies NgpSelectPortalState;\n\n selectState().registerPortal(state);\n\n return state;\n});\n\nexport function injectSelectPortalState(\n options?: StateInjectionOptions,\n): Signal<NgpSelectPortalState> {\n return _injectSelectPortalState(options) as Signal<NgpSelectPortalState>;\n}\n","import { Directive, OnDestroy } from '@angular/core';\nimport { ngpSelectPortal } from './select-portal-state';\n\n@Directive({\n selector: '[ngpSelectPortal]',\n exportAs: 'ngpSelectPortal',\n})\nexport class NgpSelectPortal implements OnDestroy {\n protected readonly state = ngpSelectPortal({});\n\n /**\n * Attach the portal.\n * @internal\n */\n show(): Promise<void> {\n return this.state.show();\n }\n\n /**\n * Detach the portal.\n * @internal\n */\n detach(): void {\n this.state.hide();\n }\n\n ngOnDestroy(): void {\n this.state.destroy();\n }\n}\n","import { InjectionToken, Provider, inject } from '@angular/core';\nimport type { Placement } from '@floating-ui/dom';\nimport { NgpFlip, NgpOffset } from 'ng-primitives/portal';\n\nexport interface NgpSelectConfig {\n /**\n * The default placement for the select dropdown.\n * @default 'bottom'\n */\n placement: Placement;\n\n /**\n * The container element or selector for the select 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 /**\n * Whether the select dropdown should flip when there is not enough space.\n * Can be a boolean to enable/disable, or an object with padding and fallbackPlacements options.\n * @default true\n */\n flip: NgpFlip;\n\n /**\n * Define the offset of the select dropdown relative to the trigger.\n * Can be a number (applies to mainAxis) or an object with mainAxis, crossAxis, and alignmentAxis.\n * @default 0\n */\n offset: NgpOffset;\n}\n\nexport const defaultSelectConfig: NgpSelectConfig = {\n placement: 'bottom',\n container: 'body',\n flip: true,\n offset: 0,\n};\n\nexport const NgpSelectConfigToken = new InjectionToken<NgpSelectConfig>('NgpSelectConfigToken');\n\n/**\n * Provide the default Select configuration\n * @param config The Select configuration\n * @returns The provider\n */\nexport function provideSelectConfig(config: Partial<NgpSelectConfig>): Provider[] {\n return [\n {\n provide: NgpSelectConfigToken,\n useValue: { ...defaultSelectConfig, ...config },\n },\n ];\n}\n\n/**\n * Inject the Select configuration\n * @returns The global Select configuration\n */\nexport function injectSelectConfig(): NgpSelectConfig {\n return inject(NgpSelectConfigToken, { optional: true }) ?? defaultSelectConfig;\n}\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, Directive, input, output } from '@angular/core';\nimport type { Placement } from '@floating-ui/dom';\nimport {\n coerceFlip,\n coerceOffset,\n NgpFlip,\n NgpFlipInput,\n NgpOffset,\n NgpOffsetInput,\n} from 'ng-primitives/portal';\nimport { uniqueId } from 'ng-primitives/utils';\nimport { injectSelectConfig } from '../config/select-config';\nimport { ngpSelect, provideSelectState } from './select-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: '[ngpSelect]',\n exportAs: 'ngpSelect',\n providers: [provideSelectState()],\n})\nexport class NgpSelect {\n /** Access the select configuration. */\n protected readonly config = injectSelectConfig();\n\n /** The unique id of the select. */\n readonly id = input(uniqueId('ngp-select'));\n\n /** The value of the select. */\n readonly value = input<T>(undefined, {\n alias: 'ngpSelectValue',\n });\n\n /** Event emitted when the value changes. */\n readonly valueChange = output<T>({\n alias: 'ngpSelectValueChange',\n });\n\n /** Whether the select is multiple selection. */\n readonly multiple = input<boolean, BooleanInput>(false, {\n alias: 'ngpSelectMultiple',\n transform: booleanAttribute,\n });\n\n /** Whether the select is disabled. */\n readonly disabled = input<boolean, BooleanInput>(false, {\n alias: 'ngpSelectDisabled',\n transform: booleanAttribute,\n });\n\n /** Emit when the dropdown open state changes. */\n readonly openChange = output<boolean>({\n alias: 'ngpSelectOpenChange',\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: 'ngpSelectCompareWith',\n });\n\n /** The position of the dropdown. */\n readonly placement = input<Placement>(this.config.placement, {\n alias: 'ngpSelectDropdownPlacement',\n });\n\n /** The container for the dropdown. */\n readonly container = input<HTMLElement | string | null>(this.config.container, {\n alias: 'ngpSelectDropdownContainer',\n });\n\n /** Whether the dropdown should flip when there is not enough space. Can be a boolean to enable/disable, or an object with padding and fallbackPlacements options. */\n readonly flip = input<NgpFlip, NgpFlipInput>(this.config.flip, {\n alias: 'ngpSelectDropdownFlip',\n transform: coerceFlip,\n });\n\n /**\n * Define the offset of the select dropdown relative to the trigger.\n * Can be a number (applies to mainAxis) or an object with mainAxis, crossAxis, and alignmentAxis.\n * @default 0\n */\n readonly offset = input<NgpOffset, NgpOffsetInput>(this.config.offset, {\n alias: 'ngpSelectDropdownOffset',\n transform: coerceOffset,\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: 'ngpSelectScrollToOption',\n });\n\n /**\n * Provide all the option values to the select. 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 select 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: 'ngpSelectOptions' });\n\n /** The state of the select. */\n protected readonly state = ngpSelect<T>({\n id: this.id,\n value: this.value,\n multiple: this.multiple,\n disabled: this.disabled,\n compareWith: this.compareWith,\n placement: this.placement,\n container: this.container,\n flip: this.flip,\n offset: this.offset,\n scrollToOption: this.scrollToOption,\n allOptions: this.allOptions,\n onValueChange: value => this.valueChange.emit(value),\n onOpenChange: open => this.openChange.emit(open),\n });\n\n /** @internal Access the select element. */\n readonly elementRef = this.state.elementRef;\n\n /**\n * Store the select portal.\n * @internal\n */\n readonly portal = this.state.portal;\n\n /**\n * Store the select dropdown.\n * @internal\n */\n readonly dropdown = this.state.dropdown;\n\n /**\n * Store the select options.\n * @internal\n */\n readonly options = this.state.options;\n\n /**\n * Access the overlay\n * @internal\n */\n readonly overlay = this.state.overlay;\n\n /**\n * The open state of the select.\n * @internal\n */\n readonly open = this.state.open;\n\n /**\n * The options sorted by their index or DOM position.\n * @internal\n */\n readonly sortedOptions = this.state.sortedOptions;\n\n /**\n * The active key descendant manager.\n * @internal\n */\n readonly activeDescendantManager = this.state.activeDescendantManager;\n\n /**\n * Open the dropdown.\n * @internal\n */\n openDropdown(): Promise<void> {\n return this.state.openDropdown();\n }\n\n /**\n * Close the dropdown.\n * @internal\n */\n closeDropdown(): void {\n return this.state.closeDropdown();\n }\n\n /**\n * Toggle the dropdown.\n * @internal\n */\n toggleDropdown(): Promise<void> {\n return this.state.toggleDropdown();\n }\n\n /**\n * Select an option.\n * @param id The id of the option to select.\n * @internal\n */\n selectOption(id: string): void {\n this.state.selectOption(id);\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 return this.state.isOptionSelected(option);\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 this.state.activateNextOption();\n }\n\n /**\n * Activate the previous option in the list if there is one.\n * @internal\n */\n activatePreviousOption(): void {\n this.state.activatePreviousOption();\n }\n\n /**\n * Focus the select.\n * @internal\n */\n focus(): void {\n this.state.focus();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -43,15 +43,13 @@ class NgpSeparator {
|
|
|
43
43
|
/**
|
|
44
44
|
* The orientation of the separator.
|
|
45
45
|
*/
|
|
46
|
-
this.orientation = input(this.config.orientation, ...(ngDevMode ?
|
|
47
|
-
alias: 'ngpSeparatorOrientation',
|
|
48
|
-
}]));
|
|
46
|
+
this.orientation = input(this.config.orientation, { ...(ngDevMode ? { debugName: "orientation" } : /* istanbul ignore next */ {}), alias: 'ngpSeparatorOrientation' });
|
|
49
47
|
ngpSeparator(this);
|
|
50
48
|
}
|
|
51
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
52
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "
|
|
49
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: NgpSeparator, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
50
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.14", type: NgpSeparator, isStandalone: true, selector: "[ngpSeparator]", inputs: { orientation: { classPropertyName: "orientation", publicName: "ngpSeparatorOrientation", isSignal: true, isRequired: false, transformFunction: null } }, providers: [provideSeparatorState()], exportAs: ["ngpSeparator"], ngImport: i0 }); }
|
|
53
51
|
}
|
|
54
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
52
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: NgpSeparator, decorators: [{
|
|
55
53
|
type: Directive,
|
|
56
54
|
args: [{
|
|
57
55
|
selector: '[ngpSeparator]',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-primitives-separator.mjs","sources":["../../../../packages/ng-primitives/separator/src/config/separator-config.ts","../../../../packages/ng-primitives/separator/src/separator/separator-state.ts","../../../../packages/ng-primitives/separator/src/separator/separator.ts","../../../../packages/ng-primitives/separator/src/ng-primitives-separator.ts"],"sourcesContent":["import { InjectionToken, Provider, inject } from '@angular/core';\nimport { NgpOrientation } from 'ng-primitives/common';\n\nexport interface NgpSeparatorConfig {\n /**\n * The default separator orientation\n * @default 'horizontal'\n */\n orientation: NgpOrientation;\n}\n\nexport const defaultSeparatorConfig: NgpSeparatorConfig = {\n orientation: 'horizontal',\n};\n\nexport const NgpSeparatorConfigToken = new InjectionToken<NgpSeparatorConfig>(\n 'NgpSeparatorConfigToken',\n);\n\n/**\n * Provide the default Separator configuration\n * @param config The Separator configuration\n * @returns The provider\n */\nexport function provideSeparatorConfig(config: Partial<NgpSeparatorConfig>): Provider[] {\n return [\n {\n provide: NgpSeparatorConfigToken,\n useValue: { ...defaultSeparatorConfig, ...config },\n },\n ];\n}\n\n/**\n * Inject the Separator configuration\n * @returns The global Separator configuration\n */\nexport function injectSeparatorConfig(): NgpSeparatorConfig {\n return inject(NgpSeparatorConfigToken, { optional: true }) ?? defaultSeparatorConfig;\n}\n","import { Signal } from '@angular/core';\nimport { NgpOrientation } from 'ng-primitives/common';\nimport { injectElementRef } from 'ng-primitives/internal';\nimport { attrBinding, createPrimitive } from 'ng-primitives/state';\n\nexport interface NgpSeparatorState {}\n\nexport interface NgpSeparatorProps {\n /**\n * The orientation of the separator.\n */\n readonly orientation: Signal<NgpOrientation>;\n}\n\nexport const [NgpSeparatorStateToken, ngpSeparator, injectSeparatorState, provideSeparatorState] =\n createPrimitive('NgpSeparator', ({ orientation }: NgpSeparatorProps) => {\n const element = injectElementRef();\n\n // Host bindings\n attrBinding(element, 'role', 'separator');\n attrBinding(element, 'aria-orientation', orientation);\n attrBinding(element, 'data-orientation', orientation);\n\n return {} satisfies NgpSeparatorState;\n });\n","import { Directive, input } from '@angular/core';\nimport { NgpOrientation } from 'ng-primitives/common';\nimport { injectSeparatorConfig } from '../config/separator-config';\nimport { ngpSeparator, provideSeparatorState } from './separator-state';\n\n@Directive({\n selector: '[ngpSeparator]',\n exportAs: 'ngpSeparator',\n providers: [provideSeparatorState()],\n})\nexport class NgpSeparator {\n private readonly config = injectSeparatorConfig();\n\n /**\n * The orientation of the separator.\n */\n readonly orientation = input<NgpOrientation>(this.config.orientation, {\n alias: 'ngpSeparatorOrientation',\n });\n\n constructor() {\n ngpSeparator(this);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;AAWO,MAAM,sBAAsB,GAAuB;AACxD,IAAA,WAAW,EAAE,YAAY;CAC1B;AAEM,MAAM,uBAAuB,GAAG,IAAI,cAAc,CACvD,yBAAyB,CAC1B;AAED;;;;AAIG;AACG,SAAU,sBAAsB,CAAC,MAAmC,EAAA;IACxE,OAAO;AACL,QAAA;AACE,YAAA,OAAO,EAAE,uBAAuB;AAChC,YAAA,QAAQ,EAAE,EAAE,GAAG,sBAAsB,EAAE,GAAG,MAAM,EAAE;AACnD,SAAA;KACF;AACH;AAEA;;;AAGG;SACa,qBAAqB,GAAA;AACnC,IAAA,OAAO,MAAM,CAAC,uBAAuB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,IAAI,sBAAsB;AACtF;;MCzBa,CAAC,sBAAsB,EAAE,YAAY,EAAE,oBAAoB,EAAE,qBAAqB,CAAC,GAC9F,eAAe,CAAC,cAAc,EAAE,CAAC,EAAE,WAAW,EAAqB,KAAI;AACrE,IAAA,MAAM,OAAO,GAAG,gBAAgB,EAAE;;AAGlC,IAAA,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC;AACzC,IAAA,WAAW,CAAC,OAAO,EAAE,kBAAkB,EAAE,WAAW,CAAC;AACrD,IAAA,WAAW,CAAC,OAAO,EAAE,kBAAkB,EAAE,WAAW,CAAC;AAErD,IAAA,OAAO,EAA8B;AACvC,CAAC;;MCdU,YAAY,CAAA;AAUvB,IAAA,WAAA,GAAA;QATiB,IAAA,CAAA,MAAM,GAAG,qBAAqB,EAAE;AAEjD;;AAEG;AACM,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAiB,IAAI,CAAC,MAAM,CAAC,WAAW,EAAA,IAAA,SAAA,GAAA,
|
|
1
|
+
{"version":3,"file":"ng-primitives-separator.mjs","sources":["../../../../packages/ng-primitives/separator/src/config/separator-config.ts","../../../../packages/ng-primitives/separator/src/separator/separator-state.ts","../../../../packages/ng-primitives/separator/src/separator/separator.ts","../../../../packages/ng-primitives/separator/src/ng-primitives-separator.ts"],"sourcesContent":["import { InjectionToken, Provider, inject } from '@angular/core';\nimport { NgpOrientation } from 'ng-primitives/common';\n\nexport interface NgpSeparatorConfig {\n /**\n * The default separator orientation\n * @default 'horizontal'\n */\n orientation: NgpOrientation;\n}\n\nexport const defaultSeparatorConfig: NgpSeparatorConfig = {\n orientation: 'horizontal',\n};\n\nexport const NgpSeparatorConfigToken = new InjectionToken<NgpSeparatorConfig>(\n 'NgpSeparatorConfigToken',\n);\n\n/**\n * Provide the default Separator configuration\n * @param config The Separator configuration\n * @returns The provider\n */\nexport function provideSeparatorConfig(config: Partial<NgpSeparatorConfig>): Provider[] {\n return [\n {\n provide: NgpSeparatorConfigToken,\n useValue: { ...defaultSeparatorConfig, ...config },\n },\n ];\n}\n\n/**\n * Inject the Separator configuration\n * @returns The global Separator configuration\n */\nexport function injectSeparatorConfig(): NgpSeparatorConfig {\n return inject(NgpSeparatorConfigToken, { optional: true }) ?? defaultSeparatorConfig;\n}\n","import { Signal } from '@angular/core';\nimport { NgpOrientation } from 'ng-primitives/common';\nimport { injectElementRef } from 'ng-primitives/internal';\nimport { attrBinding, createPrimitive } from 'ng-primitives/state';\n\nexport interface NgpSeparatorState {}\n\nexport interface NgpSeparatorProps {\n /**\n * The orientation of the separator.\n */\n readonly orientation: Signal<NgpOrientation>;\n}\n\nexport const [NgpSeparatorStateToken, ngpSeparator, injectSeparatorState, provideSeparatorState] =\n createPrimitive('NgpSeparator', ({ orientation }: NgpSeparatorProps) => {\n const element = injectElementRef();\n\n // Host bindings\n attrBinding(element, 'role', 'separator');\n attrBinding(element, 'aria-orientation', orientation);\n attrBinding(element, 'data-orientation', orientation);\n\n return {} satisfies NgpSeparatorState;\n });\n","import { Directive, input } from '@angular/core';\nimport { NgpOrientation } from 'ng-primitives/common';\nimport { injectSeparatorConfig } from '../config/separator-config';\nimport { ngpSeparator, provideSeparatorState } from './separator-state';\n\n@Directive({\n selector: '[ngpSeparator]',\n exportAs: 'ngpSeparator',\n providers: [provideSeparatorState()],\n})\nexport class NgpSeparator {\n private readonly config = injectSeparatorConfig();\n\n /**\n * The orientation of the separator.\n */\n readonly orientation = input<NgpOrientation>(this.config.orientation, {\n alias: 'ngpSeparatorOrientation',\n });\n\n constructor() {\n ngpSeparator(this);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;AAWO,MAAM,sBAAsB,GAAuB;AACxD,IAAA,WAAW,EAAE,YAAY;CAC1B;AAEM,MAAM,uBAAuB,GAAG,IAAI,cAAc,CACvD,yBAAyB,CAC1B;AAED;;;;AAIG;AACG,SAAU,sBAAsB,CAAC,MAAmC,EAAA;IACxE,OAAO;AACL,QAAA;AACE,YAAA,OAAO,EAAE,uBAAuB;AAChC,YAAA,QAAQ,EAAE,EAAE,GAAG,sBAAsB,EAAE,GAAG,MAAM,EAAE;AACnD,SAAA;KACF;AACH;AAEA;;;AAGG;SACa,qBAAqB,GAAA;AACnC,IAAA,OAAO,MAAM,CAAC,uBAAuB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,IAAI,sBAAsB;AACtF;;MCzBa,CAAC,sBAAsB,EAAE,YAAY,EAAE,oBAAoB,EAAE,qBAAqB,CAAC,GAC9F,eAAe,CAAC,cAAc,EAAE,CAAC,EAAE,WAAW,EAAqB,KAAI;AACrE,IAAA,MAAM,OAAO,GAAG,gBAAgB,EAAE;;AAGlC,IAAA,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC;AACzC,IAAA,WAAW,CAAC,OAAO,EAAE,kBAAkB,EAAE,WAAW,CAAC;AACrD,IAAA,WAAW,CAAC,OAAO,EAAE,kBAAkB,EAAE,WAAW,CAAC;AAErD,IAAA,OAAO,EAA8B;AACvC,CAAC;;MCdU,YAAY,CAAA;AAUvB,IAAA,WAAA,GAAA;QATiB,IAAA,CAAA,MAAM,GAAG,qBAAqB,EAAE;AAEjD;;AAEG;AACM,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAiB,IAAI,CAAC,MAAM,CAAC,WAAW,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,aAAA,EAAA,8BAAA,EAAA,CAAA,EAClE,KAAK,EAAE,yBAAyB,GAChC;QAGA,YAAY,CAAC,IAAI,CAAC;IACpB;+GAZW,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAZ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,SAAA,EAFZ,CAAC,qBAAqB,EAAE,CAAC,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAEzB,YAAY,EAAA,UAAA,EAAA,CAAA;kBALxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,SAAS,EAAE,CAAC,qBAAqB,EAAE,CAAC;AACrC,iBAAA;;;ACTD;;AAEG;;;;"}
|