ng-primitives 0.120.4 → 0.120.5
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/a11y/index.d.ts +3 -10
- package/accordion/index.d.ts +8 -22
- package/autofill/index.d.ts +3 -10
- package/avatar/index.d.ts +7 -30
- package/breadcrumbs/index.d.ts +15 -70
- package/button/index.d.ts +3 -10
- package/checkbox/index.d.ts +4 -11
- package/context-menu/index.d.ts +2 -1
- package/dialog/index.d.ts +7 -2
- package/example-theme/index.css +9 -0
- package/fesm2022/ng-primitives-accordion.mjs +4 -4
- package/fesm2022/ng-primitives-accordion.mjs.map +1 -1
- package/fesm2022/ng-primitives-context-menu.mjs +2 -2
- package/fesm2022/ng-primitives-context-menu.mjs.map +1 -1
- package/fesm2022/ng-primitives-date-picker.mjs +21 -7
- package/fesm2022/ng-primitives-date-picker.mjs.map +1 -1
- package/fesm2022/ng-primitives-dialog.mjs +2 -2
- package/fesm2022/ng-primitives-dialog.mjs.map +1 -1
- package/fesm2022/ng-primitives-internal.mjs +27 -23
- package/fesm2022/ng-primitives-internal.mjs.map +1 -1
- package/fesm2022/ng-primitives-menu.mjs +2 -2
- package/fesm2022/ng-primitives-menu.mjs.map +1 -1
- package/fesm2022/ng-primitives-popover.mjs +174 -143
- package/fesm2022/ng-primitives-popover.mjs.map +1 -1
- package/fesm2022/ng-primitives-portal.mjs +7 -2
- package/fesm2022/ng-primitives-portal.mjs.map +1 -1
- package/fesm2022/ng-primitives-select.mjs +710 -579
- package/fesm2022/ng-primitives-select.mjs.map +1 -1
- package/fesm2022/ng-primitives-state.mjs.map +1 -1
- package/fesm2022/ng-primitives-toast.mjs +11 -4
- package/fesm2022/ng-primitives-toast.mjs.map +1 -1
- package/file-upload/index.d.ts +5 -20
- package/focus-trap/index.d.ts +3 -10
- package/form-field/index.d.ts +9 -40
- package/input/index.d.ts +3 -10
- package/menu/index.d.ts +17 -63
- package/navigation-menu/index.d.ts +15 -70
- package/number-field/index.d.ts +9 -40
- package/package.json +1 -1
- package/popover/index.d.ts +243 -57
- package/portal/index.d.ts +3 -10
- package/progress/index.d.ts +3 -10
- package/roving-focus/index.d.ts +5 -20
- package/schematics/ng-generate/templates/select/select.__fileSuffix@dasherize__.ts.template +48 -48
- package/select/index.d.ts +430 -140
- package/separator/index.d.ts +3 -10
- package/slider/index.d.ts +17 -80
- package/state/index.d.ts +26 -21
- package/switch/index.d.ts +5 -20
- package/tabs/index.d.ts +9 -40
- package/textarea/index.d.ts +3 -10
- package/toast/index.d.ts +11 -0
- package/toggle/index.d.ts +4 -11
- package/toggle-group/index.d.ts +6 -21
- package/toolbar/index.d.ts +3 -10
- package/tooltip/index.d.ts +2 -10
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-primitives-accordion.mjs","sources":["../../../../packages/ng-primitives/accordion/src/accordion/accordion-state.ts","../../../../packages/ng-primitives/accordion/src/accordion-item/accordion-item-state.ts","../../../../packages/ng-primitives/accordion/src/accordion-content/accordion-content-state.ts","../../../../packages/ng-primitives/accordion/src/accordion-content/accordion-content.ts","../../../../packages/ng-primitives/accordion/src/accordion-item/accordion-item.ts","../../../../packages/ng-primitives/accordion/src/accordion-trigger/accordion-trigger-state.ts","../../../../packages/ng-primitives/accordion/src/accordion-trigger/accordion-trigger.ts","../../../../packages/ng-primitives/accordion/src/config/accordion-config.ts","../../../../packages/ng-primitives/accordion/src/accordion/accordion.ts","../../../../packages/ng-primitives/accordion/src/ng-primitives-accordion.ts"],"sourcesContent":["import { signal, Signal, WritableSignal } from '@angular/core';\nimport { NgpOrientation } from 'ng-primitives/common';\nimport { injectElementRef } from 'ng-primitives/internal';\nimport { controlled, createPrimitive, dataBinding, deprecatedSetter } from 'ng-primitives/state';\n\n/**\n * The state interface for the Accordion pattern.\n */\nexport interface NgpAccordionState<T> {\n /**\n * The value of the accordion.\n */\n readonly value: WritableSignal<T | T[] | null>;\n /**\n * Whether the accordion is disabled.\n */\n readonly disabled: WritableSignal<boolean>;\n /**\n * The accordion orientation.\n */\n readonly orientation: WritableSignal<NgpOrientation>;\n /**\n * Set the value of the accordion.\n */\n setValue(value: T | T[] | null): void;\n /**\n * Set the disabled state of the accordion.\n */\n setDisabled(value: boolean): void;\n /**\n * Set the orientation of the accordion.\n */\n setOrientation(value: NgpOrientation): void;\n /**\n * Whether the specified value is open.\n */\n isOpen(value: T): boolean;\n /**\n * Toggle the specified value.\n */\n toggle(value: T): void;\n}\n\n/**\n * The props interface for the Accordion pattern.\n */\nexport interface NgpAccordionProps<T> {\n /**\n * The type of the accordion.\n */\n readonly type: Signal<NgpAccordionType>;\n\n /**\n * Whether the accordion is collapsible.\n */\n readonly collapsible: Signal<boolean>;\n\n /**\n * The value of the accordion.\n */\n readonly value: Signal<T | T[] | null>;\n\n /**\n * Whether the accordion is disabled.\n */\n readonly disabled?: Signal<boolean>;\n\n /**\n * The accordion orientation.\n */\n readonly orientation: Signal<NgpOrientation>;\n\n /**\n * Callback fired when valueChange is emitted.\n */\n readonly onValueChange?: (value: T | T[] | null) => void;\n}\n\nexport const [NgpAccordionStateToken, ngpAccordion, _injectAccordionState, provideAccordionState] =\n createPrimitive(\n 'NgpAccordion',\n <T>({\n type,\n collapsible,\n value: _value = signal(null),\n disabled: _disabled = signal(false),\n orientation: _orientation = signal('vertical'),\n onValueChange,\n }: NgpAccordionProps<T>): NgpAccordionState<T> => {\n const element = injectElementRef();\n\n // Create controlled signals\n const value = controlled(_value);\n const disabled = controlled(_disabled);\n const orientation = controlled(_orientation);\n\n // Host bindings extracted from directive\n dataBinding(element, 'data-orientation', orientation);\n dataBinding(element, 'data-disabled', disabled);\n\n // Setter methods\n function setDisabled(value: boolean): void {\n disabled.set(value);\n }\n\n function setOrientation(value: NgpOrientation): void {\n orientation.set(value);\n }\n\n function setValue(newValue: T | T[] | null): void {\n value.set(newValue);\n }\n\n // Methods extracted from directive\n /**\n * @param value The value to check. @returns Whether the value is open. @internal\n */\n function isOpen(itemValue: T): boolean {\n if (type() === 'multiple') {\n return (value() as T[] | null)?.includes(itemValue) ?? false;\n }\n\n return value() === itemValue;\n }\n\n function toggle(itemValue: T): void {\n const open = isOpen(itemValue);\n\n // if we are in single mode and the itemValue is already open and the accordion is not collapsible, do nothing\n if (type() === 'single' && open && !collapsible()) {\n return;\n }\n\n // if we are in single mode then toggle the itemValue\n if (type() === 'single') {\n const newValue = open ? null : itemValue;\n value.set(newValue);\n onValueChange?.(newValue);\n return;\n }\n\n // if we are in multiple mode then toggle the itemValue\n let values = (value() as T[]) ?? [];\n\n if (open) {\n values = values.filter(v => v !== itemValue);\n } else {\n values = [...values, itemValue];\n }\n value.set(values);\n onValueChange?.(values);\n }\n\n return {\n value: deprecatedSetter(value, 'setValue'),\n disabled: deprecatedSetter(disabled, 'setDisabled'),\n orientation: deprecatedSetter(orientation, 'setOrientation'),\n setDisabled,\n setOrientation,\n setValue,\n isOpen,\n toggle,\n } satisfies NgpAccordionState<T>;\n },\n );\n\nexport type NgpAccordionType = 'single' | 'multiple';\n\nexport function injectAccordionState<T>(): Signal<NgpAccordionState<T>> {\n return _injectAccordionState() as Signal<NgpAccordionState<T>>;\n}\n","import { computed, Signal, signal } from '@angular/core';\nimport { injectElementRef } from 'ng-primitives/internal';\nimport { controlled, createPrimitive, dataBinding, deprecatedSetter } from 'ng-primitives/state';\nimport { injectAccordionState } from '../accordion/accordion-state';\n\nexport interface NgpAccordionItemState<T> {\n /**\n * The value of the accordion item.\n */\n readonly value: Signal<T>;\n /**\n * Whether the accordion item is disabled.\n */\n readonly disabled: Signal<boolean>;\n /**\n * Whether the accordion item is expanded.\n */\n readonly open: Signal<boolean>;\n /**\n * The trigger id.\n */\n readonly triggerId: Signal<string | undefined>;\n /**\n * The content id.\n */\n readonly contentId: Signal<string | undefined>;\n /**\n * Set the disabled state of the accordion item.\n */\n setDisabled(value: boolean): void;\n /**\n * Set the trigger of the accordion item.\n */\n setTrigger(id: string): void;\n /**\n * Set the content of the accordion item.\n */\n setContent(id: string): void;\n}\n\nexport interface NgpAccordionItemProps<T> {\n /**\n * The value of the accordion item.\n */\n readonly value: Signal<T>;\n /**\n * Whether the accordion item is disabled.\n */\n readonly disabled?: Signal<boolean>;\n}\n\nexport const [\n NgpAccordionItemStateToken,\n ngpAccordionItem,\n _injectAccordionItemState,\n provideAccordionItemState,\n] = createPrimitive(\n 'NgpAccordionItem',\n <T>({ value, disabled: _disabled = signal(false) }: NgpAccordionItemProps<T>) => {\n const accordion = injectAccordionState<T>();\n const element = injectElementRef();\n\n const disabled = controlled(_disabled);\n\n // Whether the accordion item is expanded.\n const open = computed<boolean>(() => accordion().isOpen(value()));\n\n const trigger = signal<string | undefined>(undefined);\n const content = signal<string | undefined>(undefined);\n\n // Setup host data bindings\n dataBinding(element, 'data-orientation', accordion().orientation);\n dataBinding(element, 'data-open', open);\n dataBinding(element, 'data-disabled', () => disabled() || accordion().disabled());\n\n // Set the disabled state of the accordion item.\n function setDisabled(value: boolean) {\n disabled.set(value);\n }\n\n function setTrigger(id: string) {\n trigger.set(id);\n }\n\n function setContent(id: string) {\n content.set(id);\n }\n\n return {\n value,\n open,\n disabled: deprecatedSetter(disabled, 'setDisabled'),\n triggerId: deprecatedSetter(trigger, 'setTrigger'),\n contentId: deprecatedSetter(content, 'setContent'),\n setDisabled,\n setTrigger,\n setContent,\n } satisfies NgpAccordionItemState<T>;\n },\n);\n\nexport function injectAccordionItemState<T>(): Signal<NgpAccordionItemState<T>> {\n return _injectAccordionItemState() as Signal<NgpAccordionItemState<T>>;\n}\n","import { afterRenderEffect, computed, signal, Signal } from '@angular/core';\nimport {\n explicitEffect,\n fromMutationObserver,\n injectDimensions,\n injectElementRef,\n} from 'ng-primitives/internal';\nimport { attrBinding, createPrimitive, dataBinding, listener } from 'ng-primitives/state';\nimport { safeTakeUntilDestroyed, uniqueId } from 'ng-primitives/utils';\nimport { debounceTime } from 'rxjs/operators';\nimport { injectAccordionItemState } from '../accordion-item/accordion-item-state';\nimport { injectAccordionState } from '../accordion/accordion-state';\n\nexport interface NgpAccordionContentState {\n /**\n * The id of the content region\n */\n readonly id: Signal<string>;\n}\n\nexport interface NgpAccordionContentProps {\n /**\n * The id of the content region\n */\n readonly id?: Signal<string>;\n}\n\nexport const [\n NgpAccordionContentStateToken,\n ngpAccordionContent,\n injectAccordionContentState,\n provideAccordionContentState,\n] = createPrimitive(\n 'NgpAccordionContent',\n <T>({ id = signal(uniqueId('ngp-accordion-content')) }: NgpAccordionContentProps) => {\n const element = injectElementRef();\n const accordion = injectAccordionState<T>();\n const accordionItem = injectAccordionItemState<T>();\n const dimensions = injectDimensions();\n\n const hidden = computed(() =>\n !accordionItem().open() && dimensions().height === 0 ? 'until-found' : null,\n );\n\n // Host bindings\n attrBinding(element, 'role', 'region');\n attrBinding(element, 'id', id);\n attrBinding(element, 'aria-labelledby', accordionItem().triggerId);\n attrBinding(element, 'hidden', hidden);\n\n dataBinding(element, 'data-orientation', accordion().orientation);\n dataBinding(element, 'data-open', accordionItem().open);\n dataBinding(element, 'data-closed', () => !accordionItem().open());\n\n // data-enter is set when the item opens (user interaction), data-exit when it closes.\n // Neither is set on initial render, preventing animation on page load.\n const enter = signal(false);\n const exit = signal(false);\n dataBinding(element, 'data-enter', enter);\n dataBinding(element, 'data-exit', exit);\n\n listener(element, 'beforematch', onBeforeMatch);\n const clearAnimation = (event: AnimationEvent) => {\n if (event.target === element.nativeElement) {\n enter.set(false);\n exit.set(false);\n }\n };\n listener(element, 'animationend', clearAnimation);\n listener(element, 'animationcancel', clearAnimation);\n\n // Register the content with the accordion item state\n accordionItem().setContent(id());\n\n /**\n * Handle the beforematch event to automatically open the accordion item\n * when the browser's find-in-page functionality tries to reveal hidden content.\n */\n function onBeforeMatch(): void {\n const isDisabled = accordion().disabled() || accordionItem().disabled();\n if (isDisabled) {\n return;\n }\n accordion().toggle(accordionItem().value() as T);\n }\n\n function updateDimensions(): void {\n if (accordionItem().open()) {\n const scrollHeight = element.nativeElement.scrollHeight;\n\n // Element is inside a hidden container (e.g. inactive tab with display:none).\n // All three dimensions are 0 only when the element has no layout at all.\n // Checking dimensions() (from ResizeObserver) prevents misidentifying\n // legitimately empty content (e.g. all children removed) as a hidden container.\n const { width, height } = dimensions();\n if (scrollHeight === 0 && width === 0 && height === 0) {\n return;\n }\n\n const scrollWidth = element.nativeElement.scrollWidth;\n\n // remove the inline styles to reset them\n element.nativeElement.style.removeProperty('--ngp-accordion-content-width');\n element.nativeElement.style.removeProperty('--ngp-accordion-content-height');\n // set the dimensions based on the content\n element.nativeElement.style.setProperty(\n '--ngp-accordion-content-width',\n `${scrollWidth}px`,\n );\n element.nativeElement.style.setProperty(\n '--ngp-accordion-content-height',\n `${scrollHeight}px`,\n );\n }\n }\n\n // Track dimensions() so this effect re-runs when the element becomes visible.\n // Handles the case where the accordion is initialized inside a hidden container.\n afterRenderEffect(() => {\n dimensions(); // reactive dep — re-runs when element resizes (e.g. container becomes visible)\n updateDimensions();\n });\n\n // Drive enter/exit attributes based on open state changes.\n // Skips the initial run so no animation plays on page load.\n let initialized = false;\n explicitEffect([accordionItem().open], ([isOpen]) => {\n if (!initialized) {\n initialized = true;\n return;\n }\n if (isOpen) {\n exit.set(false);\n enter.set(true);\n } else {\n enter.set(false);\n exit.set(true);\n }\n });\n\n // update dimensions when the content changes\n fromMutationObserver(element.nativeElement, {\n childList: true,\n subtree: true,\n disabled: computed(() => !accordionItem().open()),\n })\n .pipe(debounceTime(0), safeTakeUntilDestroyed())\n .subscribe(() => updateDimensions());\n\n return { id } satisfies NgpAccordionContentState;\n },\n);\n","import { Directive, input } from '@angular/core';\nimport { uniqueId } from 'ng-primitives/utils';\nimport { ngpAccordionContent } from './accordion-content-state';\n\n/**\n * Apply the `ngpAccordionContent` directive to an element that represents the content of an accordion item.\n */\n@Directive({\n selector: '[ngpAccordionContent]',\n exportAs: 'ngpAccordionContent',\n})\nexport class NgpAccordionContent<T> {\n /**\n * The id of the content region\n */\n readonly id = input<string>(uniqueId('ngp-accordion-content'));\n\n constructor() {\n ngpAccordionContent<T>({ id: this.id });\n }\n}\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { Directive, booleanAttribute, input } from '@angular/core';\nimport { uniqueId } from 'ng-primitives/utils';\nimport { injectAccordionState } from '../accordion/accordion-state';\nimport { ngpAccordionItem, provideAccordionItemState } from './accordion-item-state';\n\n/**\n * Apply the `ngpAccordionItem` directive to an element that represents an accordion item.\n */\n@Directive({\n selector: '[ngpAccordionItem]',\n exportAs: 'ngpAccordionItem',\n providers: [provideAccordionItemState()],\n})\nexport class NgpAccordionItem<T> {\n /**\n * Access the accordion.\n */\n protected readonly accordion = injectAccordionState<T>();\n\n /**\n * The value of the accordion item.\n */\n readonly value = input<T>(uniqueId('ngp-accordion-item') as T, {\n alias: 'ngpAccordionItemValue',\n });\n\n /**\n * Whether the accordion item is disabled.\n */\n readonly disabled = input<boolean, BooleanInput>(false, {\n alias: 'ngpAccordionItemDisabled',\n transform: booleanAttribute,\n });\n\n /**\n * The accordion item state.\n */\n protected readonly state = ngpAccordionItem<T>({\n value: this.value,\n disabled: this.disabled,\n });\n\n /**\n * The open state of the accordion item.\n */\n readonly open = this.state.open;\n}\n","import { HOST_TAG_NAME, inject, signal, Signal } from '@angular/core';\nimport { injectElementRef } from 'ng-primitives/internal';\nimport { attrBinding, createPrimitive, dataBinding, listener } from 'ng-primitives/state';\nimport { uniqueId } from 'ng-primitives/utils';\nimport { injectAccordionItemState } from '../accordion-item/accordion-item-state';\nimport { injectAccordionState } from '../accordion/accordion-state';\n\nexport interface NgpAccordionTriggerState {\n /**\n * The id of the trigger button\n */\n readonly id: Signal<string>;\n /**\n * Toggle the accordion item.\n */\n toggle(): void;\n}\n\nexport interface NgpAccordionTriggerProps {\n /**\n * The id of the trigger button\n */\n readonly id?: Signal<string>;\n}\n\nexport const [\n NgpAccordionTriggerStateToken,\n ngpAccordionTrigger,\n injectAccordionTriggerState,\n provideAccordionTriggerState,\n] = createPrimitive(\n 'NgpAccordionTrigger',\n <T>({ id = signal(uniqueId('ngp-accordion-trigger')) }: NgpAccordionTriggerProps) => {\n const element = injectElementRef();\n const tagName = inject(HOST_TAG_NAME);\n const accordion = injectAccordionState<T>();\n const accordionItem = injectAccordionItemState<T>();\n\n // Host bindings\n attrBinding(element, 'id', id);\n attrBinding(element, 'type', tagName === 'button' ? 'button' : null);\n attrBinding(element, 'aria-controls', accordionItem().contentId);\n attrBinding(element, 'aria-expanded', accordionItem().open);\n dataBinding(element, 'data-orientation', accordion().orientation);\n dataBinding(element, 'data-open', accordionItem().open);\n dataBinding(\n element,\n 'data-disabled',\n () => accordionItem().disabled() || accordion().disabled(),\n );\n\n // register the trigger with the accordion item\n accordionItem().setTrigger(id());\n\n // Methods\n function toggle(): void {\n if (accordionItem().disabled() || accordion().disabled()) {\n return;\n }\n\n accordion().toggle(accordionItem().value()!);\n }\n\n // Event listeners\n listener(element, 'click', toggle);\n\n return { id, toggle } satisfies NgpAccordionTriggerState;\n },\n);\n","import { Directive, input } from '@angular/core';\nimport { uniqueId } from 'ng-primitives/utils';\nimport { ngpAccordionTrigger } from './accordion-trigger-state';\n\n/**\n * Apply the `ngpAccordionTrigger` directive to an element that represents the trigger for an accordion item, such as a button.\n */\n@Directive({\n selector: '[ngpAccordionTrigger]',\n exportAs: 'ngpAccordionTrigger',\n})\nexport class NgpAccordionTrigger<T> {\n /**\n * The id of the trigger.\n */\n readonly id = input<string>(uniqueId('ngp-accordion-trigger'));\n\n private readonly state = ngpAccordionTrigger<T>({ id: this.id });\n\n /**\n * Toggle the accordion item.\n */\n toggle(): void {\n this.state.toggle();\n }\n}\n","import { InjectionToken, Provider, inject } from '@angular/core';\nimport type { NgpAccordionType } from '../accordion/accordion-state';\n\nexport interface NgpAccordionConfig {\n /**\n * The default type of the accordion\n * @default 'single'\n */\n type: NgpAccordionType;\n /**\n * Whether the accordion is collapsible\n * @default false\n */\n collapsible: boolean;\n /**\n * The default orientation of the accordion\n * @default 'vertical'\n */\n orientation: 'vertical' | 'horizontal';\n}\n\nexport const defaultAccordionConfig: NgpAccordionConfig = {\n type: 'single',\n collapsible: false,\n orientation: 'vertical',\n};\n\nexport const NgpAccordionConfigToken = new InjectionToken<NgpAccordionConfig>(\n 'NgpAccordionConfigToken',\n);\n\n/**\n * Provide the default Accordion configuration\n * @param config The Accordion configuration\n * @returns The provider\n */\nexport function provideAccordionConfig(config: Partial<NgpAccordionConfig>): Provider[] {\n return [\n {\n provide: NgpAccordionConfigToken,\n useValue: { ...defaultAccordionConfig, ...config },\n },\n ];\n}\n\n/**\n * Inject the Accordion configuration\n * @returns The global Accordion configuration\n */\nexport function injectAccordionConfig(): NgpAccordionConfig {\n return inject(NgpAccordionConfigToken, { optional: true }) ?? defaultAccordionConfig;\n}\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, Directive, input, output } from '@angular/core';\nimport { NgpOrientation } from 'ng-primitives/common';\nimport { injectAccordionConfig } from '../config/accordion-config';\nimport { ngpAccordion, NgpAccordionType, provideAccordionState } from './accordion-state';\n\n/**\n * Apply the `ngpAccordion` directive to an element that represents the group of accordion items.\n */\n@Directive({\n selector: '[ngpAccordion]',\n exportAs: 'ngpAccordion',\n providers: [provideAccordionState()],\n})\nexport class NgpAccordion<T> {\n /**\n * Access the global accordion configuration.\n */\n private readonly config = injectAccordionConfig();\n\n /**\n * The type of the accordion.\n */\n readonly type = input<NgpAccordionType>(this.config.type, {\n alias: 'ngpAccordionType',\n });\n\n /**\n * Whether the accordion is collapsible.\n */\n readonly collapsible = input<boolean, BooleanInput>(this.config.collapsible, {\n alias: 'ngpAccordionCollapsible',\n transform: booleanAttribute,\n });\n\n /**\n * The value of the accordion.\n */\n readonly value = input<T | T[] | null>(null, {\n alias: 'ngpAccordionValue',\n });\n\n /**\n * Event emitted when the accordion value changes.\n */\n readonly valueChange = output<T | T[] | null>({\n alias: 'ngpAccordionValueChange',\n });\n\n /**\n * Whether the accordion is disabled.\n */\n readonly disabled = input<boolean, BooleanInput>(false, {\n alias: 'ngpAccordionDisabled',\n transform: booleanAttribute,\n });\n\n /**\n * The accordion orientation.\n */\n readonly orientation = input<NgpOrientation>(this.config.orientation, {\n alias: 'ngpAccordionOrientation',\n });\n\n /**\n * The accordion state.\n */\n protected readonly state = ngpAccordion<T>({\n type: this.type,\n collapsible: this.collapsible,\n value: this.value,\n disabled: this.disabled,\n orientation: this.orientation,\n onValueChange: value => this.valueChange.emit(value),\n });\n\n /**\n * @param value The value to check.\n * @returns Whether the value is open.\n * @internal\n */\n isOpen(value: T): boolean {\n return this.state.isOpen(value);\n }\n\n /**\n * Set the value of the accordion.\n * @param value The value to set.\n */\n setValue(value: T | T[] | null): void {\n this.state.setValue(value);\n }\n\n /**\n * @param value The value to toggle.\n */\n toggle(value: T): void {\n this.state.toggle(value);\n }\n\n /**\n * Set the disabled state of the accordion.\n * @param value The disabled state.\n */\n setDisabled(value: boolean): void {\n this.state.setDisabled(value);\n }\n\n /**\n * Set the orientation of the accordion.\n * @param value The orientation.\n */\n setOrientation(value: NgpOrientation): void {\n this.state.setOrientation(value);\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-accordion.mjs","sources":["../../../../packages/ng-primitives/accordion/src/accordion/accordion-state.ts","../../../../packages/ng-primitives/accordion/src/accordion-item/accordion-item-state.ts","../../../../packages/ng-primitives/accordion/src/accordion-content/accordion-content-state.ts","../../../../packages/ng-primitives/accordion/src/accordion-content/accordion-content.ts","../../../../packages/ng-primitives/accordion/src/accordion-item/accordion-item.ts","../../../../packages/ng-primitives/accordion/src/accordion-trigger/accordion-trigger-state.ts","../../../../packages/ng-primitives/accordion/src/accordion-trigger/accordion-trigger.ts","../../../../packages/ng-primitives/accordion/src/config/accordion-config.ts","../../../../packages/ng-primitives/accordion/src/accordion/accordion.ts","../../../../packages/ng-primitives/accordion/src/ng-primitives-accordion.ts"],"sourcesContent":["import { signal, Signal, WritableSignal } from '@angular/core';\nimport { NgpOrientation } from 'ng-primitives/common';\nimport { injectElementRef } from 'ng-primitives/internal';\nimport {\n controlled,\n createPrimitive,\n dataBinding,\n deprecatedSetter,\n StateInjectionOptions,\n} from 'ng-primitives/state';\n\n/**\n * The state interface for the Accordion pattern.\n */\nexport interface NgpAccordionState<T> {\n /**\n * The value of the accordion.\n */\n readonly value: WritableSignal<T | T[] | null>;\n /**\n * Whether the accordion is disabled.\n */\n readonly disabled: WritableSignal<boolean>;\n /**\n * The accordion orientation.\n */\n readonly orientation: WritableSignal<NgpOrientation>;\n /**\n * Set the value of the accordion.\n */\n setValue(value: T | T[] | null): void;\n /**\n * Set the disabled state of the accordion.\n */\n setDisabled(value: boolean): void;\n /**\n * Set the orientation of the accordion.\n */\n setOrientation(value: NgpOrientation): void;\n /**\n * Whether the specified value is open.\n */\n isOpen(value: T): boolean;\n /**\n * Toggle the specified value.\n */\n toggle(value: T): void;\n}\n\n/**\n * The props interface for the Accordion pattern.\n */\nexport interface NgpAccordionProps<T> {\n /**\n * The type of the accordion.\n */\n readonly type: Signal<NgpAccordionType>;\n\n /**\n * Whether the accordion is collapsible.\n */\n readonly collapsible: Signal<boolean>;\n\n /**\n * The value of the accordion.\n */\n readonly value: Signal<T | T[] | null>;\n\n /**\n * Whether the accordion is disabled.\n */\n readonly disabled?: Signal<boolean>;\n\n /**\n * The accordion orientation.\n */\n readonly orientation: Signal<NgpOrientation>;\n\n /**\n * Callback fired when valueChange is emitted.\n */\n readonly onValueChange?: (value: T | T[] | null) => void;\n}\n\nexport const [NgpAccordionStateToken, ngpAccordion, _injectAccordionState, provideAccordionState] =\n createPrimitive(\n 'NgpAccordion',\n <T>({\n type,\n collapsible,\n value: _value = signal(null),\n disabled: _disabled = signal(false),\n orientation: _orientation = signal('vertical'),\n onValueChange,\n }: NgpAccordionProps<T>): NgpAccordionState<T> => {\n const element = injectElementRef();\n\n // Create controlled signals\n const value = controlled(_value);\n const disabled = controlled(_disabled);\n const orientation = controlled(_orientation);\n\n // Host bindings extracted from directive\n dataBinding(element, 'data-orientation', orientation);\n dataBinding(element, 'data-disabled', disabled);\n\n // Setter methods\n function setDisabled(value: boolean): void {\n disabled.set(value);\n }\n\n function setOrientation(value: NgpOrientation): void {\n orientation.set(value);\n }\n\n function setValue(newValue: T | T[] | null): void {\n value.set(newValue);\n }\n\n // Methods extracted from directive\n /**\n * @param value The value to check. @returns Whether the value is open. @internal\n */\n function isOpen(itemValue: T): boolean {\n if (type() === 'multiple') {\n return (value() as T[] | null)?.includes(itemValue) ?? false;\n }\n\n return value() === itemValue;\n }\n\n function toggle(itemValue: T): void {\n const open = isOpen(itemValue);\n\n // if we are in single mode and the itemValue is already open and the accordion is not collapsible, do nothing\n if (type() === 'single' && open && !collapsible()) {\n return;\n }\n\n // if we are in single mode then toggle the itemValue\n if (type() === 'single') {\n const newValue = open ? null : itemValue;\n value.set(newValue);\n onValueChange?.(newValue);\n return;\n }\n\n // if we are in multiple mode then toggle the itemValue\n let values = (value() as T[]) ?? [];\n\n if (open) {\n values = values.filter(v => v !== itemValue);\n } else {\n values = [...values, itemValue];\n }\n value.set(values);\n onValueChange?.(values);\n }\n\n return {\n value: deprecatedSetter(value, 'setValue'),\n disabled: deprecatedSetter(disabled, 'setDisabled'),\n orientation: deprecatedSetter(orientation, 'setOrientation'),\n setDisabled,\n setOrientation,\n setValue,\n isOpen,\n toggle,\n } satisfies NgpAccordionState<T>;\n },\n );\n\nexport type NgpAccordionType = 'single' | 'multiple';\n\nexport function injectAccordionState<T>(\n options?: StateInjectionOptions,\n): Signal<NgpAccordionState<T>> {\n return _injectAccordionState(options) as Signal<NgpAccordionState<T>>;\n}\n","import { computed, Signal, signal } from '@angular/core';\nimport { injectElementRef } from 'ng-primitives/internal';\nimport {\n controlled,\n createPrimitive,\n dataBinding,\n deprecatedSetter,\n StateInjectionOptions,\n} from 'ng-primitives/state';\nimport { injectAccordionState } from '../accordion/accordion-state';\n\nexport interface NgpAccordionItemState<T> {\n /**\n * The value of the accordion item.\n */\n readonly value: Signal<T>;\n /**\n * Whether the accordion item is disabled.\n */\n readonly disabled: Signal<boolean>;\n /**\n * Whether the accordion item is expanded.\n */\n readonly open: Signal<boolean>;\n /**\n * The trigger id.\n */\n readonly triggerId: Signal<string | undefined>;\n /**\n * The content id.\n */\n readonly contentId: Signal<string | undefined>;\n /**\n * Set the disabled state of the accordion item.\n */\n setDisabled(value: boolean): void;\n /**\n * Set the trigger of the accordion item.\n */\n setTrigger(id: string): void;\n /**\n * Set the content of the accordion item.\n */\n setContent(id: string): void;\n}\n\nexport interface NgpAccordionItemProps<T> {\n /**\n * The value of the accordion item.\n */\n readonly value: Signal<T>;\n /**\n * Whether the accordion item is disabled.\n */\n readonly disabled?: Signal<boolean>;\n}\n\nexport const [\n NgpAccordionItemStateToken,\n ngpAccordionItem,\n _injectAccordionItemState,\n provideAccordionItemState,\n] = createPrimitive(\n 'NgpAccordionItem',\n <T>({ value, disabled: _disabled = signal(false) }: NgpAccordionItemProps<T>) => {\n const accordion = injectAccordionState<T>();\n const element = injectElementRef();\n\n const disabled = controlled(_disabled);\n\n // Whether the accordion item is expanded.\n const open = computed<boolean>(() => accordion().isOpen(value()));\n\n const trigger = signal<string | undefined>(undefined);\n const content = signal<string | undefined>(undefined);\n\n // Setup host data bindings\n dataBinding(element, 'data-orientation', accordion().orientation);\n dataBinding(element, 'data-open', open);\n dataBinding(element, 'data-disabled', () => disabled() || accordion().disabled());\n\n // Set the disabled state of the accordion item.\n function setDisabled(value: boolean) {\n disabled.set(value);\n }\n\n function setTrigger(id: string) {\n trigger.set(id);\n }\n\n function setContent(id: string) {\n content.set(id);\n }\n\n return {\n value,\n open,\n disabled: deprecatedSetter(disabled, 'setDisabled'),\n triggerId: deprecatedSetter(trigger, 'setTrigger'),\n contentId: deprecatedSetter(content, 'setContent'),\n setDisabled,\n setTrigger,\n setContent,\n } satisfies NgpAccordionItemState<T>;\n },\n);\n\nexport function injectAccordionItemState<T>(\n options?: StateInjectionOptions,\n): Signal<NgpAccordionItemState<T>> {\n return _injectAccordionItemState(options) as Signal<NgpAccordionItemState<T>>;\n}\n","import { afterRenderEffect, computed, signal, Signal } from '@angular/core';\nimport {\n explicitEffect,\n fromMutationObserver,\n injectDimensions,\n injectElementRef,\n} from 'ng-primitives/internal';\nimport { attrBinding, createPrimitive, dataBinding, listener } from 'ng-primitives/state';\nimport { safeTakeUntilDestroyed, uniqueId } from 'ng-primitives/utils';\nimport { debounceTime } from 'rxjs/operators';\nimport { injectAccordionItemState } from '../accordion-item/accordion-item-state';\nimport { injectAccordionState } from '../accordion/accordion-state';\n\nexport interface NgpAccordionContentState {\n /**\n * The id of the content region\n */\n readonly id: Signal<string>;\n}\n\nexport interface NgpAccordionContentProps {\n /**\n * The id of the content region\n */\n readonly id?: Signal<string>;\n}\n\nexport const [\n NgpAccordionContentStateToken,\n ngpAccordionContent,\n injectAccordionContentState,\n provideAccordionContentState,\n] = createPrimitive(\n 'NgpAccordionContent',\n <T>({ id = signal(uniqueId('ngp-accordion-content')) }: NgpAccordionContentProps) => {\n const element = injectElementRef();\n const accordion = injectAccordionState<T>();\n const accordionItem = injectAccordionItemState<T>();\n const dimensions = injectDimensions();\n\n const hidden = computed(() =>\n !accordionItem().open() && dimensions().height === 0 ? 'until-found' : null,\n );\n\n // Host bindings\n attrBinding(element, 'role', 'region');\n attrBinding(element, 'id', id);\n attrBinding(element, 'aria-labelledby', accordionItem().triggerId);\n attrBinding(element, 'hidden', hidden);\n\n dataBinding(element, 'data-orientation', accordion().orientation);\n dataBinding(element, 'data-open', accordionItem().open);\n dataBinding(element, 'data-closed', () => !accordionItem().open());\n\n // data-enter is set when the item opens (user interaction), data-exit when it closes.\n // Neither is set on initial render, preventing animation on page load.\n const enter = signal(false);\n const exit = signal(false);\n dataBinding(element, 'data-enter', enter);\n dataBinding(element, 'data-exit', exit);\n\n listener(element, 'beforematch', onBeforeMatch);\n const clearAnimation = (event: AnimationEvent) => {\n if (event.target === element.nativeElement) {\n enter.set(false);\n exit.set(false);\n }\n };\n listener(element, 'animationend', clearAnimation);\n listener(element, 'animationcancel', clearAnimation);\n\n // Register the content with the accordion item state\n accordionItem().setContent(id());\n\n /**\n * Handle the beforematch event to automatically open the accordion item\n * when the browser's find-in-page functionality tries to reveal hidden content.\n */\n function onBeforeMatch(): void {\n const isDisabled = accordion().disabled() || accordionItem().disabled();\n if (isDisabled) {\n return;\n }\n accordion().toggle(accordionItem().value() as T);\n }\n\n function updateDimensions(): void {\n if (accordionItem().open()) {\n const scrollHeight = element.nativeElement.scrollHeight;\n\n // Element is inside a hidden container (e.g. inactive tab with display:none).\n // All three dimensions are 0 only when the element has no layout at all.\n // Checking dimensions() (from ResizeObserver) prevents misidentifying\n // legitimately empty content (e.g. all children removed) as a hidden container.\n const { width, height } = dimensions();\n if (scrollHeight === 0 && width === 0 && height === 0) {\n return;\n }\n\n const scrollWidth = element.nativeElement.scrollWidth;\n\n // remove the inline styles to reset them\n element.nativeElement.style.removeProperty('--ngp-accordion-content-width');\n element.nativeElement.style.removeProperty('--ngp-accordion-content-height');\n // set the dimensions based on the content\n element.nativeElement.style.setProperty(\n '--ngp-accordion-content-width',\n `${scrollWidth}px`,\n );\n element.nativeElement.style.setProperty(\n '--ngp-accordion-content-height',\n `${scrollHeight}px`,\n );\n }\n }\n\n // Track dimensions() so this effect re-runs when the element becomes visible.\n // Handles the case where the accordion is initialized inside a hidden container.\n afterRenderEffect(() => {\n dimensions(); // reactive dep — re-runs when element resizes (e.g. container becomes visible)\n updateDimensions();\n });\n\n // Drive enter/exit attributes based on open state changes.\n // Skips the initial run so no animation plays on page load.\n let initialized = false;\n explicitEffect([accordionItem().open], ([isOpen]) => {\n if (!initialized) {\n initialized = true;\n return;\n }\n if (isOpen) {\n exit.set(false);\n enter.set(true);\n } else {\n enter.set(false);\n exit.set(true);\n }\n });\n\n // update dimensions when the content changes\n fromMutationObserver(element.nativeElement, {\n childList: true,\n subtree: true,\n disabled: computed(() => !accordionItem().open()),\n })\n .pipe(debounceTime(0), safeTakeUntilDestroyed())\n .subscribe(() => updateDimensions());\n\n return { id } satisfies NgpAccordionContentState;\n },\n);\n","import { Directive, input } from '@angular/core';\nimport { uniqueId } from 'ng-primitives/utils';\nimport { ngpAccordionContent } from './accordion-content-state';\n\n/**\n * Apply the `ngpAccordionContent` directive to an element that represents the content of an accordion item.\n */\n@Directive({\n selector: '[ngpAccordionContent]',\n exportAs: 'ngpAccordionContent',\n})\nexport class NgpAccordionContent<T> {\n /**\n * The id of the content region\n */\n readonly id = input<string>(uniqueId('ngp-accordion-content'));\n\n constructor() {\n ngpAccordionContent<T>({ id: this.id });\n }\n}\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { Directive, booleanAttribute, input } from '@angular/core';\nimport { uniqueId } from 'ng-primitives/utils';\nimport { injectAccordionState } from '../accordion/accordion-state';\nimport { ngpAccordionItem, provideAccordionItemState } from './accordion-item-state';\n\n/**\n * Apply the `ngpAccordionItem` directive to an element that represents an accordion item.\n */\n@Directive({\n selector: '[ngpAccordionItem]',\n exportAs: 'ngpAccordionItem',\n providers: [provideAccordionItemState()],\n})\nexport class NgpAccordionItem<T> {\n /**\n * Access the accordion.\n */\n protected readonly accordion = injectAccordionState<T>();\n\n /**\n * The value of the accordion item.\n */\n readonly value = input<T>(uniqueId('ngp-accordion-item') as T, {\n alias: 'ngpAccordionItemValue',\n });\n\n /**\n * Whether the accordion item is disabled.\n */\n readonly disabled = input<boolean, BooleanInput>(false, {\n alias: 'ngpAccordionItemDisabled',\n transform: booleanAttribute,\n });\n\n /**\n * The accordion item state.\n */\n protected readonly state = ngpAccordionItem<T>({\n value: this.value,\n disabled: this.disabled,\n });\n\n /**\n * The open state of the accordion item.\n */\n readonly open = this.state.open;\n}\n","import { HOST_TAG_NAME, inject, signal, Signal } from '@angular/core';\nimport { injectElementRef } from 'ng-primitives/internal';\nimport { attrBinding, createPrimitive, dataBinding, listener } from 'ng-primitives/state';\nimport { uniqueId } from 'ng-primitives/utils';\nimport { injectAccordionItemState } from '../accordion-item/accordion-item-state';\nimport { injectAccordionState } from '../accordion/accordion-state';\n\nexport interface NgpAccordionTriggerState {\n /**\n * The id of the trigger button\n */\n readonly id: Signal<string>;\n /**\n * Toggle the accordion item.\n */\n toggle(): void;\n}\n\nexport interface NgpAccordionTriggerProps {\n /**\n * The id of the trigger button\n */\n readonly id?: Signal<string>;\n}\n\nexport const [\n NgpAccordionTriggerStateToken,\n ngpAccordionTrigger,\n injectAccordionTriggerState,\n provideAccordionTriggerState,\n] = createPrimitive(\n 'NgpAccordionTrigger',\n <T>({ id = signal(uniqueId('ngp-accordion-trigger')) }: NgpAccordionTriggerProps) => {\n const element = injectElementRef();\n const tagName = inject(HOST_TAG_NAME);\n const accordion = injectAccordionState<T>();\n const accordionItem = injectAccordionItemState<T>();\n\n // Host bindings\n attrBinding(element, 'id', id);\n attrBinding(element, 'type', tagName === 'button' ? 'button' : null);\n attrBinding(element, 'aria-controls', accordionItem().contentId);\n attrBinding(element, 'aria-expanded', accordionItem().open);\n dataBinding(element, 'data-orientation', accordion().orientation);\n dataBinding(element, 'data-open', accordionItem().open);\n dataBinding(\n element,\n 'data-disabled',\n () => accordionItem().disabled() || accordion().disabled(),\n );\n\n // register the trigger with the accordion item\n accordionItem().setTrigger(id());\n\n // Methods\n function toggle(): void {\n if (accordionItem().disabled() || accordion().disabled()) {\n return;\n }\n\n accordion().toggle(accordionItem().value()!);\n }\n\n // Event listeners\n listener(element, 'click', toggle);\n\n return { id, toggle } satisfies NgpAccordionTriggerState;\n },\n);\n","import { Directive, input } from '@angular/core';\nimport { uniqueId } from 'ng-primitives/utils';\nimport { ngpAccordionTrigger } from './accordion-trigger-state';\n\n/**\n * Apply the `ngpAccordionTrigger` directive to an element that represents the trigger for an accordion item, such as a button.\n */\n@Directive({\n selector: '[ngpAccordionTrigger]',\n exportAs: 'ngpAccordionTrigger',\n})\nexport class NgpAccordionTrigger<T> {\n /**\n * The id of the trigger.\n */\n readonly id = input<string>(uniqueId('ngp-accordion-trigger'));\n\n private readonly state = ngpAccordionTrigger<T>({ id: this.id });\n\n /**\n * Toggle the accordion item.\n */\n toggle(): void {\n this.state.toggle();\n }\n}\n","import { InjectionToken, Provider, inject } from '@angular/core';\nimport type { NgpAccordionType } from '../accordion/accordion-state';\n\nexport interface NgpAccordionConfig {\n /**\n * The default type of the accordion\n * @default 'single'\n */\n type: NgpAccordionType;\n /**\n * Whether the accordion is collapsible\n * @default false\n */\n collapsible: boolean;\n /**\n * The default orientation of the accordion\n * @default 'vertical'\n */\n orientation: 'vertical' | 'horizontal';\n}\n\nexport const defaultAccordionConfig: NgpAccordionConfig = {\n type: 'single',\n collapsible: false,\n orientation: 'vertical',\n};\n\nexport const NgpAccordionConfigToken = new InjectionToken<NgpAccordionConfig>(\n 'NgpAccordionConfigToken',\n);\n\n/**\n * Provide the default Accordion configuration\n * @param config The Accordion configuration\n * @returns The provider\n */\nexport function provideAccordionConfig(config: Partial<NgpAccordionConfig>): Provider[] {\n return [\n {\n provide: NgpAccordionConfigToken,\n useValue: { ...defaultAccordionConfig, ...config },\n },\n ];\n}\n\n/**\n * Inject the Accordion configuration\n * @returns The global Accordion configuration\n */\nexport function injectAccordionConfig(): NgpAccordionConfig {\n return inject(NgpAccordionConfigToken, { optional: true }) ?? defaultAccordionConfig;\n}\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, Directive, input, output } from '@angular/core';\nimport { NgpOrientation } from 'ng-primitives/common';\nimport { injectAccordionConfig } from '../config/accordion-config';\nimport { ngpAccordion, NgpAccordionType, provideAccordionState } from './accordion-state';\n\n/**\n * Apply the `ngpAccordion` directive to an element that represents the group of accordion items.\n */\n@Directive({\n selector: '[ngpAccordion]',\n exportAs: 'ngpAccordion',\n providers: [provideAccordionState()],\n})\nexport class NgpAccordion<T> {\n /**\n * Access the global accordion configuration.\n */\n private readonly config = injectAccordionConfig();\n\n /**\n * The type of the accordion.\n */\n readonly type = input<NgpAccordionType>(this.config.type, {\n alias: 'ngpAccordionType',\n });\n\n /**\n * Whether the accordion is collapsible.\n */\n readonly collapsible = input<boolean, BooleanInput>(this.config.collapsible, {\n alias: 'ngpAccordionCollapsible',\n transform: booleanAttribute,\n });\n\n /**\n * The value of the accordion.\n */\n readonly value = input<T | T[] | null>(null, {\n alias: 'ngpAccordionValue',\n });\n\n /**\n * Event emitted when the accordion value changes.\n */\n readonly valueChange = output<T | T[] | null>({\n alias: 'ngpAccordionValueChange',\n });\n\n /**\n * Whether the accordion is disabled.\n */\n readonly disabled = input<boolean, BooleanInput>(false, {\n alias: 'ngpAccordionDisabled',\n transform: booleanAttribute,\n });\n\n /**\n * The accordion orientation.\n */\n readonly orientation = input<NgpOrientation>(this.config.orientation, {\n alias: 'ngpAccordionOrientation',\n });\n\n /**\n * The accordion state.\n */\n protected readonly state = ngpAccordion<T>({\n type: this.type,\n collapsible: this.collapsible,\n value: this.value,\n disabled: this.disabled,\n orientation: this.orientation,\n onValueChange: value => this.valueChange.emit(value),\n });\n\n /**\n * @param value The value to check.\n * @returns Whether the value is open.\n * @internal\n */\n isOpen(value: T): boolean {\n return this.state.isOpen(value);\n }\n\n /**\n * Set the value of the accordion.\n * @param value The value to set.\n */\n setValue(value: T | T[] | null): void {\n this.state.setValue(value);\n }\n\n /**\n * @param value The value to toggle.\n */\n toggle(value: T): void {\n this.state.toggle(value);\n }\n\n /**\n * Set the disabled state of the accordion.\n * @param value The disabled state.\n */\n setDisabled(value: boolean): void {\n this.state.setDisabled(value);\n }\n\n /**\n * Set the orientation of the accordion.\n * @param value The orientation.\n */\n setOrientation(value: NgpOrientation): void {\n this.state.setOrientation(value);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -502,8 +502,8 @@ const [NgpContextMenuTriggerStateToken, ngpContextMenuTrigger, _injectContextMen
|
|
|
502
502
|
setPointerOverContent,
|
|
503
503
|
};
|
|
504
504
|
});
|
|
505
|
-
function injectContextMenuTriggerState() {
|
|
506
|
-
return _injectContextMenuTriggerState();
|
|
505
|
+
function injectContextMenuTriggerState(options) {
|
|
506
|
+
return _injectContextMenuTriggerState(options);
|
|
507
507
|
}
|
|
508
508
|
|
|
509
509
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-primitives-context-menu.mjs","sources":["../../../../packages/ng-primitives/context-menu/src/config/context-menu-config.ts","../../../../packages/ng-primitives/context-menu/src/context-menu/context-menu.ts","../../../../packages/ng-primitives/context-menu/src/context-menu-item/context-menu-item.ts","../../../../packages/ng-primitives/context-menu/src/context-menu-item-checkbox/context-menu-item-checkbox.ts","../../../../packages/ng-primitives/context-menu/src/context-menu-item-indicator/context-menu-item-indicator.ts","../../../../packages/ng-primitives/context-menu/src/context-menu-item-radio/context-menu-item-radio.ts","../../../../packages/ng-primitives/context-menu/src/context-menu-item-radio-group/context-menu-item-radio-group.ts","../../../../packages/ng-primitives/context-menu/src/context-menu-submenu-trigger/context-menu-submenu-trigger.ts","../../../../packages/ng-primitives/context-menu/src/context-menu-trigger/context-menu-trigger-state.ts","../../../../packages/ng-primitives/context-menu/src/context-menu-trigger/context-menu-trigger.ts","../../../../packages/ng-primitives/context-menu/src/ng-primitives-context-menu.ts"],"sourcesContent":["import { InjectionToken, Provider, inject } from '@angular/core';\nimport { NgpFlip, NgpOffset, NgpShift } from 'ng-primitives/portal';\n\nexport interface NgpContextMenuConfig {\n /**\n * Define the offset of the context menu relative to the cursor position.\n * @default 2\n */\n offset: NgpOffset;\n\n /**\n * Define whether the context menu should flip when there is not enough space.\n * @default true\n */\n flip: NgpFlip;\n\n /**\n * Define the container element or selector in which the context menu should be attached.\n * @default 'body'\n */\n container: HTMLElement | string | null;\n\n /**\n * Defines how the context menu behaves when the window is scrolled.\n * @default 'close'\n */\n scrollBehavior: 'reposition' | 'block' | 'close';\n\n /**\n * Configure shift behavior to keep the context menu in view.\n * @default undefined\n */\n shift: NgpShift;\n}\n\nexport const defaultContextMenuConfig: NgpContextMenuConfig = {\n offset: 2,\n flip: true,\n container: 'body',\n scrollBehavior: 'close',\n shift: undefined,\n};\n\nexport const NgpContextMenuConfigToken = new InjectionToken<NgpContextMenuConfig>(\n 'NgpContextMenuConfigToken',\n);\n\n/**\n * Provide the default Context Menu configuration\n * @param config The Context Menu configuration\n * @returns The provider\n */\nexport function provideContextMenuConfig(config: Partial<NgpContextMenuConfig>): Provider[] {\n return [\n {\n provide: NgpContextMenuConfigToken,\n useValue: { ...defaultContextMenuConfig, ...config },\n },\n ];\n}\n\n/**\n * Inject the Context Menu configuration\n * @returns The global Context Menu configuration\n */\nexport function injectContextMenuConfig(): NgpContextMenuConfig {\n return inject(NgpContextMenuConfigToken, { optional: true }) ?? defaultContextMenuConfig;\n}\n","import { FocusOrigin } from '@angular/cdk/a11y';\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, Directive, input } from '@angular/core';\nimport { provideFocusTrapState } from 'ng-primitives/focus-trap';\nimport { ngpMenu, provideMenuState } from 'ng-primitives/menu';\nimport { ngpRovingFocusGroup, provideRovingFocusGroupState } from 'ng-primitives/roving-focus';\n\n/**\n * The `NgpContextMenu` is a container for context menu items.\n */\n@Directive({\n selector: '[ngpContextMenu]',\n exportAs: 'ngpContextMenu',\n providers: [\n provideRovingFocusGroupState({ inherit: false }),\n provideMenuState({ inherit: false }),\n provideFocusTrapState(),\n ],\n})\nexport class NgpContextMenu {\n /**\n * Whether focus should wrap around when reaching the end of the menu.\n * @default true\n */\n readonly wrap = input<boolean, BooleanInput>(true, {\n alias: 'ngpContextMenuWrap',\n transform: booleanAttribute,\n });\n\n private readonly state = ngpMenu({ wrap: this.wrap });\n\n constructor() {\n ngpRovingFocusGroup({ inherit: false, wrap: this.wrap });\n }\n\n /** @internal Close the menu and any parent menus */\n closeAllMenus(origin: FocusOrigin): void {\n this.state.closeAllMenus(origin);\n }\n}\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, Directive, input } from '@angular/core';\nimport { ngpMenuItem, provideMenuItemState } from 'ng-primitives/menu';\nimport { ngpRovingFocusItem, provideRovingFocusItemState } from 'ng-primitives/roving-focus';\n\n/**\n * The `NgpContextMenuItem` directive represents a context menu item.\n */\n@Directive({\n selector: '[ngpContextMenuItem]',\n exportAs: 'ngpContextMenuItem',\n providers: [provideMenuItemState(), provideRovingFocusItemState()],\n})\nexport class NgpContextMenuItem {\n /** Whether the menu item is disabled */\n readonly disabled = input<boolean, BooleanInput>(false, {\n alias: 'ngpContextMenuItemDisabled',\n transform: booleanAttribute,\n });\n\n /** Whether the menu should close when this item is selected */\n readonly closeOnSelect = input<boolean, BooleanInput>(true, {\n alias: 'ngpContextMenuItemCloseOnSelect',\n transform: booleanAttribute,\n });\n\n constructor() {\n ngpMenuItem({ disabled: this.disabled, closeOnSelect: this.closeOnSelect });\n ngpRovingFocusItem({ disabled: this.disabled });\n }\n}\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, Directive, input, output } from '@angular/core';\nimport { ngpMenuItemCheckbox, provideMenuItemCheckboxState } from 'ng-primitives/menu';\nimport { ngpRovingFocusItem, provideRovingFocusItemState } from 'ng-primitives/roving-focus';\n\n/**\n * The `NgpContextMenuItemCheckbox` directive represents a context menu item that can be toggled on and off.\n */\n@Directive({\n selector: '[ngpContextMenuItemCheckbox]',\n exportAs: 'ngpContextMenuItemCheckbox',\n providers: [provideMenuItemCheckboxState(), provideRovingFocusItemState()],\n})\nexport class NgpContextMenuItemCheckbox {\n /** Whether the checkbox is checked */\n readonly checked = input<boolean, BooleanInput>(false, {\n alias: 'ngpContextMenuItemCheckboxChecked',\n transform: booleanAttribute,\n });\n\n /** Event emitted when the checked state changes */\n readonly checkedChange = output<boolean>({\n alias: 'ngpContextMenuItemCheckboxCheckedChange',\n });\n\n /** Whether the menu item checkbox is disabled */\n readonly disabled = input<boolean, BooleanInput>(false, {\n alias: 'ngpContextMenuItemCheckboxDisabled',\n transform: booleanAttribute,\n });\n\n constructor() {\n ngpMenuItemCheckbox({\n checked: this.checked,\n disabled: this.disabled,\n onCheckedChange: value => this.checkedChange.emit(value),\n });\n ngpRovingFocusItem({ disabled: this.disabled });\n }\n}\n","import { computed, Directive } from '@angular/core';\nimport { injectElementRef } from 'ng-primitives/internal';\nimport { injectMenuItemCheckboxState, injectMenuItemRadioState } from 'ng-primitives/menu';\nimport { dataBinding } from 'ng-primitives/state';\n\n/**\n * The `NgpContextMenuItemIndicator` directive renders inside a checkbox or radio context menu item\n * and exposes `data-checked` based on the parent item's checked state.\n */\n@Directive({\n selector: '[ngpContextMenuItemIndicator]',\n exportAs: 'ngpContextMenuItemIndicator',\n})\nexport class NgpContextMenuItemIndicator {\n constructor() {\n const element = injectElementRef();\n const checkboxState = injectMenuItemCheckboxState({ optional: true });\n const radioState = injectMenuItemRadioState({ optional: true });\n\n const checked = computed(() => checkboxState()?.checked() ?? radioState()?.checked() ?? false);\n\n dataBinding(element, 'data-checked', checked);\n }\n}\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, Directive, input } from '@angular/core';\nimport { ngpMenuItemRadio, provideMenuItemRadioState } from 'ng-primitives/menu';\nimport { ngpRovingFocusItem, provideRovingFocusItemState } from 'ng-primitives/roving-focus';\n\n/**\n * The `NgpContextMenuItemRadio` directive represents a radio context menu item within a radio group.\n */\n@Directive({\n selector: '[ngpContextMenuItemRadio]',\n exportAs: 'ngpContextMenuItemRadio',\n providers: [provideMenuItemRadioState(), provideRovingFocusItemState()],\n})\nexport class NgpContextMenuItemRadio {\n /** The value this radio item represents */\n readonly value = input.required<string>({\n alias: 'ngpContextMenuItemRadioValue',\n });\n\n /** Whether the radio item is disabled */\n readonly disabled = input<boolean, BooleanInput>(false, {\n alias: 'ngpContextMenuItemRadioDisabled',\n transform: booleanAttribute,\n });\n\n constructor() {\n ngpMenuItemRadio({ value: this.value, disabled: this.disabled });\n ngpRovingFocusItem({ disabled: this.disabled });\n }\n}\n","import { Directive, input, output } from '@angular/core';\nimport { ngpMenuItemRadioGroup, provideMenuItemRadioGroupState } from 'ng-primitives/menu';\n\n/**\n * The `NgpContextMenuItemRadioGroup` directive represents a group of radio context menu items.\n */\n@Directive({\n selector: '[ngpContextMenuItemRadioGroup]',\n exportAs: 'ngpContextMenuItemRadioGroup',\n providers: [provideMenuItemRadioGroupState()],\n})\nexport class NgpContextMenuItemRadioGroup {\n /** The current value of the radio group */\n readonly value = input<string | null>(null, {\n alias: 'ngpContextMenuItemRadioGroupValue',\n });\n\n /** Event emitted when the value changes */\n readonly valueChange = output<string>({\n alias: 'ngpContextMenuItemRadioGroupValueChange',\n });\n\n constructor() {\n ngpMenuItemRadioGroup({\n value: this.value,\n onValueChange: value => this.valueChange.emit(value),\n });\n }\n}\n","import { FocusOrigin } from '@angular/cdk/a11y';\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, Directive, input } from '@angular/core';\nimport {\n NgpMenuTriggerStateToken,\n NgpSubmenuTrigger,\n NgpSubmenuTriggerStateToken,\n ngpSubmenuTrigger,\n provideSubmenuTriggerState,\n type NgpMenuPlacement,\n} from 'ng-primitives/menu';\nimport {\n coerceFlip,\n coerceOffset,\n NgpFlip,\n NgpFlipInput,\n NgpOffset,\n NgpOffsetInput,\n NgpOverlayContent,\n} from 'ng-primitives/portal';\n\n/**\n * The `NgpContextMenuSubmenuTrigger` directive turns a context menu item into a submenu trigger.\n */\n@Directive({\n selector: '[ngpContextMenuSubmenuTrigger]',\n exportAs: 'ngpContextMenuSubmenuTrigger',\n providers: [\n provideSubmenuTriggerState(),\n { provide: NgpMenuTriggerStateToken, useExisting: NgpSubmenuTriggerStateToken },\n // Provide as NgpSubmenuTrigger so ngpMenuItem can detect this is a submenu trigger\n { provide: NgpSubmenuTrigger, useExisting: NgpContextMenuSubmenuTrigger },\n ],\n})\nexport class NgpContextMenuSubmenuTrigger<T = unknown> {\n /**\n * Access the submenu template ref.\n */\n readonly menu = input<NgpOverlayContent<T>>(undefined, {\n alias: 'ngpContextMenuSubmenuTrigger',\n });\n\n /**\n * Define if the trigger should be disabled.\n * @default false\n */\n readonly disabled = input<boolean, BooleanInput>(false, {\n alias: 'ngpContextMenuSubmenuTriggerDisabled',\n transform: booleanAttribute,\n });\n\n /**\n * Define the placement of the submenu relative to the trigger.\n * @default 'right-start'\n */\n readonly placement = input<NgpMenuPlacement>('right-start', {\n alias: 'ngpContextMenuSubmenuTriggerPlacement',\n });\n\n /**\n * Define the offset of the submenu relative to the trigger.\n * @default 0\n */\n readonly offset = input<NgpOffset, NgpOffsetInput>(0, {\n alias: 'ngpContextMenuSubmenuTriggerOffset',\n transform: coerceOffset,\n });\n\n /**\n * Define whether the submenu should flip when there is not enough space.\n * @default true\n */\n readonly flip = input<NgpFlip, NgpFlipInput>(true, {\n alias: 'ngpContextMenuSubmenuTriggerFlip',\n transform: coerceFlip,\n });\n\n private readonly state = ngpSubmenuTrigger<T>({\n disabled: this.disabled,\n menu: this.menu,\n placement: this.placement,\n offset: this.offset,\n flip: this.flip,\n });\n\n show(): void {\n this.state.show();\n }\n\n hide(origin: FocusOrigin = 'program'): void {\n this.state.hide(origin);\n }\n\n toggle(event: MouseEvent): void {\n this.state.toggle(event);\n }\n\n focus(origin: FocusOrigin = 'program'): void {\n this.state.focus(origin);\n }\n}\n","import { FocusOrigin } from '@angular/cdk/a11y';\nimport { computed, inject, Injector, signal, Signal, ViewContainerRef } from '@angular/core';\nimport { Placement } from '@floating-ui/dom';\nimport { injectElementRef } from 'ng-primitives/internal';\nimport { NgpMenuTriggerStateToken } from 'ng-primitives/menu';\nimport {\n createOverlay,\n NgpFlip,\n NgpOffset,\n NgpOverlay,\n NgpOverlayConfig,\n NgpOverlayContent,\n NgpPosition,\n NgpShift,\n} from 'ng-primitives/portal';\nimport {\n controlled,\n createPrimitive,\n dataBinding,\n listener,\n onDestroy,\n styleBinding,\n} from 'ng-primitives/state';\n\nexport interface NgpContextMenuTriggerState {\n /**\n * Whether the context menu is open.\n */\n readonly open: Signal<boolean>;\n\n /**\n * The focus origin that was used to open the menu.\n */\n readonly openOrigin: Signal<FocusOrigin>;\n\n /**\n * Show the context menu.\n */\n show(origin?: FocusOrigin): void;\n\n /**\n * Hide the context menu.\n */\n hide(origin?: FocusOrigin): void;\n\n /**\n * Set whether the pointer is over the menu content.\n */\n setPointerOverContent(isOver: boolean): void;\n}\n\nexport interface NgpContextMenuTriggerProps<T = unknown> {\n /**\n * The menu template or component.\n */\n readonly menu?: Signal<NgpOverlayContent<T> | undefined>;\n\n /**\n * Whether the trigger is disabled.\n */\n readonly disabled?: Signal<boolean>;\n\n /**\n * The offset of the menu.\n */\n readonly offset?: Signal<NgpOffset>;\n\n /**\n * Whether the menu should flip when there is not enough space.\n */\n readonly flip?: Signal<NgpFlip>;\n\n /**\n * The container in which the menu should be attached.\n */\n readonly container?: Signal<HTMLElement | string | null>;\n\n /**\n * Configure shift behavior.\n */\n shift: NgpShift;\n\n /**\n * How the menu behaves when the window is scrolled.\n */\n readonly scrollBehavior?: Signal<'reposition' | 'block' | 'close'>;\n\n /**\n * Context to provide to the menu.\n */\n readonly context?: Signal<T>;\n}\n\n/** Duration in ms before a long-press fires. */\nconst LONG_PRESS_DURATION = 700;\n\n/** Movement threshold in px to cancel a long-press. */\nconst LONG_PRESS_MOVE_THRESHOLD = 10;\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-empty-function\nconst noop = (): any => {};\n\nexport const [\n NgpContextMenuTriggerStateToken,\n ngpContextMenuTrigger,\n _injectContextMenuTriggerState,\n provideContextMenuTriggerState,\n] = createPrimitive(\n 'NgpContextMenuTrigger',\n <T>({\n disabled: _disabled = signal(false),\n menu: _menu = signal<NgpOverlayContent<T> | undefined>(undefined),\n offset: _offset = signal(2),\n flip: _flip = signal(true),\n context: _context = signal<T>(undefined as T),\n container,\n scrollBehavior,\n shift,\n }: NgpContextMenuTriggerProps<T>) => {\n const element = injectElementRef();\n const injector = inject(Injector);\n const viewContainerRef = inject(ViewContainerRef);\n\n // Controlled properties\n const menu = controlled(_menu);\n const disabled = controlled(_disabled);\n const flip = controlled(_flip);\n const offset = controlled(_offset);\n const context = controlled(_context);\n\n // Internal state\n const overlay = signal<NgpOverlay<T> | null>(null);\n const open = computed(() => overlay()?.isOpen() ?? false);\n const openOrigin = signal<FocusOrigin>('program');\n const cursorPosition = signal<NgpPosition | null>(null);\n\n // Host bindings\n dataBinding(element, 'data-open', open);\n\n // Prevent iOS text selection and callout on long-press.\n // Only apply when the trigger is enabled so disabled triggers retain native behavior.\n styleBinding(element, '-webkit-touch-callout', () => (disabled?.() ? null : 'none'));\n\n // Long-press state\n let longPressTimer: ReturnType<typeof setTimeout> | null = null;\n let longPressStartX = 0;\n let longPressStartY = 0;\n let longPressTriggered = false;\n\n // Event listeners\n listener(element, 'contextmenu', onContextMenu);\n listener(element, 'pointerdown', onPointerDown);\n listener(element, 'pointermove', onPointerMove);\n listener(element, 'pointerup', onPointerUp);\n listener(element, 'pointercancel', onPointerCancel);\n\n function onContextMenu(event: MouseEvent): void {\n if (disabled?.()) {\n return;\n }\n\n event.preventDefault();\n\n // If long-press already triggered, don't re-open\n if (longPressTriggered) {\n longPressTriggered = false;\n return;\n }\n\n cursorPosition.set({ x: event.clientX, y: event.clientY });\n openOrigin.set('mouse');\n\n if (open()) {\n // Already open - reposition by updating cursor position and triggering reposition\n overlay()?.updatePosition();\n } else {\n showMenu();\n }\n }\n\n function onPointerDown(event: PointerEvent): void {\n if (event.pointerType !== 'touch' || disabled?.()) {\n return;\n }\n\n longPressTriggered = false;\n longPressStartX = event.clientX;\n longPressStartY = event.clientY;\n\n longPressTimer = setTimeout(() => {\n longPressTriggered = true;\n cursorPosition.set({ x: longPressStartX, y: longPressStartY });\n openOrigin.set('touch');\n showMenu();\n }, LONG_PRESS_DURATION);\n }\n\n function onPointerMove(event: PointerEvent): void {\n if (event.pointerType !== 'touch' || !longPressTimer) {\n return;\n }\n\n const dx = event.clientX - longPressStartX;\n const dy = event.clientY - longPressStartY;\n if (Math.sqrt(dx * dx + dy * dy) > LONG_PRESS_MOVE_THRESHOLD) {\n cancelLongPress();\n }\n }\n\n function onPointerUp(event: PointerEvent): void {\n if (event.pointerType !== 'touch') {\n return;\n }\n cancelLongPress();\n }\n\n function onPointerCancel(event: PointerEvent): void {\n if (event.pointerType !== 'touch') {\n return;\n }\n cancelLongPress();\n }\n\n function cancelLongPress(): void {\n if (longPressTimer) {\n clearTimeout(longPressTimer);\n longPressTimer = null;\n }\n longPressTriggered = false;\n }\n\n onDestroy(() => cancelLongPress());\n\n function showMenu(): void {\n if (!overlay()) {\n createOverlayInstance();\n }\n overlay()?.show();\n }\n\n function show(origin: FocusOrigin = 'program'): void {\n openOrigin.set(origin);\n showMenu();\n }\n\n function hide(origin: FocusOrigin = 'program'): void {\n const currentOverlay = overlay();\n if (!currentOverlay) {\n return;\n }\n currentOverlay.hide({ origin });\n }\n\n function createOverlayInstance(): void {\n const menuContent = menu?.();\n\n if (!menuContent) {\n throw new Error('Context menu must be either a TemplateRef or a ComponentType');\n }\n\n const config: NgpOverlayConfig<T> = {\n content: menuContent,\n triggerElement: element.nativeElement,\n viewContainerRef,\n injector,\n context,\n container: container?.(),\n offset: offset(),\n flip: flip(),\n shift,\n placement: signal<Placement>('right-start'),\n closeOnOutsideClick: true,\n closeOnEscape: true,\n treatTriggerClickAsOutside: true,\n restoreFocus: false,\n scrollBehaviour: scrollBehavior?.() ?? 'close',\n overlayType: 'menu',\n position: cursorPosition,\n trackPosition: true,\n };\n\n overlay.set(createOverlay(config));\n }\n\n function setPointerOverContent(_isOver: boolean): void {\n // No-op for context menu\n }\n\n // Set the compat state on NgpMenuTriggerStateToken so NgpMenu can find it.\n // NgpMenu injects this token and calls hide(), openOrigin(), setPointerOverContent() on it.\n const menuTriggerToken = inject(NgpMenuTriggerStateToken, { optional: true });\n // eslint-disable-next-line @angular-eslint/no-uncalled-signals -- checking inject() nullability, not signal value\n if (menuTriggerToken) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (menuTriggerToken as any).set({\n menu,\n placement: signal('bottom-start'),\n open,\n offset,\n disabled,\n flip,\n context,\n openOrigin,\n setDisabled: noop,\n setFlip: noop,\n setPlacement: noop,\n setOffset: noop,\n setContext: noop,\n show,\n hide,\n toggle: noop,\n setMenu: noop,\n setPointerOverContent,\n });\n }\n\n return {\n open,\n openOrigin,\n show,\n hide,\n setPointerOverContent,\n } satisfies NgpContextMenuTriggerState;\n },\n);\n\nexport function injectContextMenuTriggerState(): Signal<NgpContextMenuTriggerState> {\n return _injectContextMenuTriggerState() as Signal<NgpContextMenuTriggerState>;\n}\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, Directive, input, Signal } from '@angular/core';\nimport { provideMenuTriggerState } from 'ng-primitives/menu';\nimport {\n coerceFlip,\n coerceOffset,\n coerceShift,\n NgpFlip,\n NgpFlipInput,\n NgpOffset,\n NgpOffsetInput,\n NgpOverlayContent,\n NgpShift,\n NgpShiftInput,\n} from 'ng-primitives/portal';\nimport { injectContextMenuConfig } from '../config/context-menu-config';\nimport {\n ngpContextMenuTrigger,\n provideContextMenuTriggerState,\n} from './context-menu-trigger-state';\n\n/**\n * The `NgpContextMenuTrigger` directive allows you to turn an element into a context menu trigger.\n * Right-clicking or long-pressing the element will open the specified menu at the cursor position.\n */\n@Directive({\n selector: '[ngpContextMenuTrigger]',\n exportAs: 'ngpContextMenuTrigger',\n providers: [provideContextMenuTriggerState(), provideMenuTriggerState()],\n})\nexport class NgpContextMenuTrigger<T = unknown> {\n /**\n * Access the global context menu configuration.\n */\n private readonly config = injectContextMenuConfig();\n\n /**\n * The menu template ref or ComponentType to display.\n */\n readonly menu = input<NgpOverlayContent<T>>(undefined, {\n alias: 'ngpContextMenuTrigger',\n });\n\n /**\n * Define if the trigger should be disabled.\n * @default false\n */\n readonly disabled = input<boolean, BooleanInput>(false, {\n alias: 'ngpContextMenuTriggerDisabled',\n transform: booleanAttribute,\n });\n\n /**\n * Define the offset of the context menu relative to the cursor position.\n * @default 2\n */\n readonly offset = input<NgpOffset, NgpOffsetInput>(this.config.offset, {\n alias: 'ngpContextMenuTriggerOffset',\n transform: coerceOffset,\n });\n\n /**\n * Define whether the context menu should flip when there is not enough space.\n * @default true\n */\n readonly flip = input<NgpFlip, NgpFlipInput>(this.config.flip, {\n alias: 'ngpContextMenuTriggerFlip',\n transform: coerceFlip,\n });\n\n /**\n * Configure shift behavior to keep the context menu in view.\n * @default undefined\n */\n readonly shift = input<NgpShift, NgpShiftInput>(this.config.shift, {\n alias: 'ngpContextMenuTriggerShift',\n transform: coerceShift,\n });\n\n /**\n * Define the container in which the context menu should be attached.\n * @default document.body\n */\n readonly container = input<HTMLElement | string | null>(this.config.container, {\n alias: 'ngpContextMenuTriggerContainer',\n });\n\n /**\n * Defines how the context menu behaves when the window is scrolled.\n * @default 'close'\n */\n readonly scrollBehavior = input<'reposition' | 'block' | 'close'>(this.config.scrollBehavior, {\n alias: 'ngpContextMenuTriggerScrollBehavior',\n });\n\n /**\n * Provide context to the menu. This can be used to pass data to the menu content.\n */\n readonly context = input<T>(undefined, {\n alias: 'ngpContextMenuTriggerContext',\n });\n\n /**\n * The context menu trigger state.\n */\n private readonly state = ngpContextMenuTrigger<T>({\n disabled: this.disabled,\n menu: this.menu,\n offset: this.offset,\n flip: this.flip,\n shift: this.shift(),\n container: this.container,\n scrollBehavior: this.scrollBehavior,\n context: this.context as Signal<T>,\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-context-menu.mjs","sources":["../../../../packages/ng-primitives/context-menu/src/config/context-menu-config.ts","../../../../packages/ng-primitives/context-menu/src/context-menu/context-menu.ts","../../../../packages/ng-primitives/context-menu/src/context-menu-item/context-menu-item.ts","../../../../packages/ng-primitives/context-menu/src/context-menu-item-checkbox/context-menu-item-checkbox.ts","../../../../packages/ng-primitives/context-menu/src/context-menu-item-indicator/context-menu-item-indicator.ts","../../../../packages/ng-primitives/context-menu/src/context-menu-item-radio/context-menu-item-radio.ts","../../../../packages/ng-primitives/context-menu/src/context-menu-item-radio-group/context-menu-item-radio-group.ts","../../../../packages/ng-primitives/context-menu/src/context-menu-submenu-trigger/context-menu-submenu-trigger.ts","../../../../packages/ng-primitives/context-menu/src/context-menu-trigger/context-menu-trigger-state.ts","../../../../packages/ng-primitives/context-menu/src/context-menu-trigger/context-menu-trigger.ts","../../../../packages/ng-primitives/context-menu/src/ng-primitives-context-menu.ts"],"sourcesContent":["import { InjectionToken, Provider, inject } from '@angular/core';\nimport { NgpFlip, NgpOffset, NgpShift } from 'ng-primitives/portal';\n\nexport interface NgpContextMenuConfig {\n /**\n * Define the offset of the context menu relative to the cursor position.\n * @default 2\n */\n offset: NgpOffset;\n\n /**\n * Define whether the context menu should flip when there is not enough space.\n * @default true\n */\n flip: NgpFlip;\n\n /**\n * Define the container element or selector in which the context menu should be attached.\n * @default 'body'\n */\n container: HTMLElement | string | null;\n\n /**\n * Defines how the context menu behaves when the window is scrolled.\n * @default 'close'\n */\n scrollBehavior: 'reposition' | 'block' | 'close';\n\n /**\n * Configure shift behavior to keep the context menu in view.\n * @default undefined\n */\n shift: NgpShift;\n}\n\nexport const defaultContextMenuConfig: NgpContextMenuConfig = {\n offset: 2,\n flip: true,\n container: 'body',\n scrollBehavior: 'close',\n shift: undefined,\n};\n\nexport const NgpContextMenuConfigToken = new InjectionToken<NgpContextMenuConfig>(\n 'NgpContextMenuConfigToken',\n);\n\n/**\n * Provide the default Context Menu configuration\n * @param config The Context Menu configuration\n * @returns The provider\n */\nexport function provideContextMenuConfig(config: Partial<NgpContextMenuConfig>): Provider[] {\n return [\n {\n provide: NgpContextMenuConfigToken,\n useValue: { ...defaultContextMenuConfig, ...config },\n },\n ];\n}\n\n/**\n * Inject the Context Menu configuration\n * @returns The global Context Menu configuration\n */\nexport function injectContextMenuConfig(): NgpContextMenuConfig {\n return inject(NgpContextMenuConfigToken, { optional: true }) ?? defaultContextMenuConfig;\n}\n","import { FocusOrigin } from '@angular/cdk/a11y';\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, Directive, input } from '@angular/core';\nimport { provideFocusTrapState } from 'ng-primitives/focus-trap';\nimport { ngpMenu, provideMenuState } from 'ng-primitives/menu';\nimport { ngpRovingFocusGroup, provideRovingFocusGroupState } from 'ng-primitives/roving-focus';\n\n/**\n * The `NgpContextMenu` is a container for context menu items.\n */\n@Directive({\n selector: '[ngpContextMenu]',\n exportAs: 'ngpContextMenu',\n providers: [\n provideRovingFocusGroupState({ inherit: false }),\n provideMenuState({ inherit: false }),\n provideFocusTrapState(),\n ],\n})\nexport class NgpContextMenu {\n /**\n * Whether focus should wrap around when reaching the end of the menu.\n * @default true\n */\n readonly wrap = input<boolean, BooleanInput>(true, {\n alias: 'ngpContextMenuWrap',\n transform: booleanAttribute,\n });\n\n private readonly state = ngpMenu({ wrap: this.wrap });\n\n constructor() {\n ngpRovingFocusGroup({ inherit: false, wrap: this.wrap });\n }\n\n /** @internal Close the menu and any parent menus */\n closeAllMenus(origin: FocusOrigin): void {\n this.state.closeAllMenus(origin);\n }\n}\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, Directive, input } from '@angular/core';\nimport { ngpMenuItem, provideMenuItemState } from 'ng-primitives/menu';\nimport { ngpRovingFocusItem, provideRovingFocusItemState } from 'ng-primitives/roving-focus';\n\n/**\n * The `NgpContextMenuItem` directive represents a context menu item.\n */\n@Directive({\n selector: '[ngpContextMenuItem]',\n exportAs: 'ngpContextMenuItem',\n providers: [provideMenuItemState(), provideRovingFocusItemState()],\n})\nexport class NgpContextMenuItem {\n /** Whether the menu item is disabled */\n readonly disabled = input<boolean, BooleanInput>(false, {\n alias: 'ngpContextMenuItemDisabled',\n transform: booleanAttribute,\n });\n\n /** Whether the menu should close when this item is selected */\n readonly closeOnSelect = input<boolean, BooleanInput>(true, {\n alias: 'ngpContextMenuItemCloseOnSelect',\n transform: booleanAttribute,\n });\n\n constructor() {\n ngpMenuItem({ disabled: this.disabled, closeOnSelect: this.closeOnSelect });\n ngpRovingFocusItem({ disabled: this.disabled });\n }\n}\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, Directive, input, output } from '@angular/core';\nimport { ngpMenuItemCheckbox, provideMenuItemCheckboxState } from 'ng-primitives/menu';\nimport { ngpRovingFocusItem, provideRovingFocusItemState } from 'ng-primitives/roving-focus';\n\n/**\n * The `NgpContextMenuItemCheckbox` directive represents a context menu item that can be toggled on and off.\n */\n@Directive({\n selector: '[ngpContextMenuItemCheckbox]',\n exportAs: 'ngpContextMenuItemCheckbox',\n providers: [provideMenuItemCheckboxState(), provideRovingFocusItemState()],\n})\nexport class NgpContextMenuItemCheckbox {\n /** Whether the checkbox is checked */\n readonly checked = input<boolean, BooleanInput>(false, {\n alias: 'ngpContextMenuItemCheckboxChecked',\n transform: booleanAttribute,\n });\n\n /** Event emitted when the checked state changes */\n readonly checkedChange = output<boolean>({\n alias: 'ngpContextMenuItemCheckboxCheckedChange',\n });\n\n /** Whether the menu item checkbox is disabled */\n readonly disabled = input<boolean, BooleanInput>(false, {\n alias: 'ngpContextMenuItemCheckboxDisabled',\n transform: booleanAttribute,\n });\n\n constructor() {\n ngpMenuItemCheckbox({\n checked: this.checked,\n disabled: this.disabled,\n onCheckedChange: value => this.checkedChange.emit(value),\n });\n ngpRovingFocusItem({ disabled: this.disabled });\n }\n}\n","import { computed, Directive } from '@angular/core';\nimport { injectElementRef } from 'ng-primitives/internal';\nimport { injectMenuItemCheckboxState, injectMenuItemRadioState } from 'ng-primitives/menu';\nimport { dataBinding } from 'ng-primitives/state';\n\n/**\n * The `NgpContextMenuItemIndicator` directive renders inside a checkbox or radio context menu item\n * and exposes `data-checked` based on the parent item's checked state.\n */\n@Directive({\n selector: '[ngpContextMenuItemIndicator]',\n exportAs: 'ngpContextMenuItemIndicator',\n})\nexport class NgpContextMenuItemIndicator {\n constructor() {\n const element = injectElementRef();\n const checkboxState = injectMenuItemCheckboxState({ optional: true });\n const radioState = injectMenuItemRadioState({ optional: true });\n\n const checked = computed(() => checkboxState()?.checked() ?? radioState()?.checked() ?? false);\n\n dataBinding(element, 'data-checked', checked);\n }\n}\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, Directive, input } from '@angular/core';\nimport { ngpMenuItemRadio, provideMenuItemRadioState } from 'ng-primitives/menu';\nimport { ngpRovingFocusItem, provideRovingFocusItemState } from 'ng-primitives/roving-focus';\n\n/**\n * The `NgpContextMenuItemRadio` directive represents a radio context menu item within a radio group.\n */\n@Directive({\n selector: '[ngpContextMenuItemRadio]',\n exportAs: 'ngpContextMenuItemRadio',\n providers: [provideMenuItemRadioState(), provideRovingFocusItemState()],\n})\nexport class NgpContextMenuItemRadio {\n /** The value this radio item represents */\n readonly value = input.required<string>({\n alias: 'ngpContextMenuItemRadioValue',\n });\n\n /** Whether the radio item is disabled */\n readonly disabled = input<boolean, BooleanInput>(false, {\n alias: 'ngpContextMenuItemRadioDisabled',\n transform: booleanAttribute,\n });\n\n constructor() {\n ngpMenuItemRadio({ value: this.value, disabled: this.disabled });\n ngpRovingFocusItem({ disabled: this.disabled });\n }\n}\n","import { Directive, input, output } from '@angular/core';\nimport { ngpMenuItemRadioGroup, provideMenuItemRadioGroupState } from 'ng-primitives/menu';\n\n/**\n * The `NgpContextMenuItemRadioGroup` directive represents a group of radio context menu items.\n */\n@Directive({\n selector: '[ngpContextMenuItemRadioGroup]',\n exportAs: 'ngpContextMenuItemRadioGroup',\n providers: [provideMenuItemRadioGroupState()],\n})\nexport class NgpContextMenuItemRadioGroup {\n /** The current value of the radio group */\n readonly value = input<string | null>(null, {\n alias: 'ngpContextMenuItemRadioGroupValue',\n });\n\n /** Event emitted when the value changes */\n readonly valueChange = output<string>({\n alias: 'ngpContextMenuItemRadioGroupValueChange',\n });\n\n constructor() {\n ngpMenuItemRadioGroup({\n value: this.value,\n onValueChange: value => this.valueChange.emit(value),\n });\n }\n}\n","import { FocusOrigin } from '@angular/cdk/a11y';\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, Directive, input } from '@angular/core';\nimport {\n NgpMenuTriggerStateToken,\n NgpSubmenuTrigger,\n NgpSubmenuTriggerStateToken,\n ngpSubmenuTrigger,\n provideSubmenuTriggerState,\n type NgpMenuPlacement,\n} from 'ng-primitives/menu';\nimport {\n coerceFlip,\n coerceOffset,\n NgpFlip,\n NgpFlipInput,\n NgpOffset,\n NgpOffsetInput,\n NgpOverlayContent,\n} from 'ng-primitives/portal';\n\n/**\n * The `NgpContextMenuSubmenuTrigger` directive turns a context menu item into a submenu trigger.\n */\n@Directive({\n selector: '[ngpContextMenuSubmenuTrigger]',\n exportAs: 'ngpContextMenuSubmenuTrigger',\n providers: [\n provideSubmenuTriggerState(),\n { provide: NgpMenuTriggerStateToken, useExisting: NgpSubmenuTriggerStateToken },\n // Provide as NgpSubmenuTrigger so ngpMenuItem can detect this is a submenu trigger\n { provide: NgpSubmenuTrigger, useExisting: NgpContextMenuSubmenuTrigger },\n ],\n})\nexport class NgpContextMenuSubmenuTrigger<T = unknown> {\n /**\n * Access the submenu template ref.\n */\n readonly menu = input<NgpOverlayContent<T>>(undefined, {\n alias: 'ngpContextMenuSubmenuTrigger',\n });\n\n /**\n * Define if the trigger should be disabled.\n * @default false\n */\n readonly disabled = input<boolean, BooleanInput>(false, {\n alias: 'ngpContextMenuSubmenuTriggerDisabled',\n transform: booleanAttribute,\n });\n\n /**\n * Define the placement of the submenu relative to the trigger.\n * @default 'right-start'\n */\n readonly placement = input<NgpMenuPlacement>('right-start', {\n alias: 'ngpContextMenuSubmenuTriggerPlacement',\n });\n\n /**\n * Define the offset of the submenu relative to the trigger.\n * @default 0\n */\n readonly offset = input<NgpOffset, NgpOffsetInput>(0, {\n alias: 'ngpContextMenuSubmenuTriggerOffset',\n transform: coerceOffset,\n });\n\n /**\n * Define whether the submenu should flip when there is not enough space.\n * @default true\n */\n readonly flip = input<NgpFlip, NgpFlipInput>(true, {\n alias: 'ngpContextMenuSubmenuTriggerFlip',\n transform: coerceFlip,\n });\n\n private readonly state = ngpSubmenuTrigger<T>({\n disabled: this.disabled,\n menu: this.menu,\n placement: this.placement,\n offset: this.offset,\n flip: this.flip,\n });\n\n show(): void {\n this.state.show();\n }\n\n hide(origin: FocusOrigin = 'program'): void {\n this.state.hide(origin);\n }\n\n toggle(event: MouseEvent): void {\n this.state.toggle(event);\n }\n\n focus(origin: FocusOrigin = 'program'): void {\n this.state.focus(origin);\n }\n}\n","import { FocusOrigin } from '@angular/cdk/a11y';\nimport { computed, inject, Injector, signal, Signal, ViewContainerRef } from '@angular/core';\nimport { Placement } from '@floating-ui/dom';\nimport { injectElementRef } from 'ng-primitives/internal';\nimport { NgpMenuTriggerStateToken } from 'ng-primitives/menu';\nimport {\n createOverlay,\n NgpFlip,\n NgpOffset,\n NgpOverlay,\n NgpOverlayConfig,\n NgpOverlayContent,\n NgpPosition,\n NgpShift,\n} from 'ng-primitives/portal';\nimport {\n controlled,\n createPrimitive,\n dataBinding,\n listener,\n onDestroy,\n StateInjectionOptions,\n styleBinding,\n} from 'ng-primitives/state';\n\nexport interface NgpContextMenuTriggerState {\n /**\n * Whether the context menu is open.\n */\n readonly open: Signal<boolean>;\n\n /**\n * The focus origin that was used to open the menu.\n */\n readonly openOrigin: Signal<FocusOrigin>;\n\n /**\n * Show the context menu.\n */\n show(origin?: FocusOrigin): void;\n\n /**\n * Hide the context menu.\n */\n hide(origin?: FocusOrigin): void;\n\n /**\n * Set whether the pointer is over the menu content.\n */\n setPointerOverContent(isOver: boolean): void;\n}\n\nexport interface NgpContextMenuTriggerProps<T = unknown> {\n /**\n * The menu template or component.\n */\n readonly menu?: Signal<NgpOverlayContent<T> | undefined>;\n\n /**\n * Whether the trigger is disabled.\n */\n readonly disabled?: Signal<boolean>;\n\n /**\n * The offset of the menu.\n */\n readonly offset?: Signal<NgpOffset>;\n\n /**\n * Whether the menu should flip when there is not enough space.\n */\n readonly flip?: Signal<NgpFlip>;\n\n /**\n * The container in which the menu should be attached.\n */\n readonly container?: Signal<HTMLElement | string | null>;\n\n /**\n * Configure shift behavior.\n */\n shift: NgpShift;\n\n /**\n * How the menu behaves when the window is scrolled.\n */\n readonly scrollBehavior?: Signal<'reposition' | 'block' | 'close'>;\n\n /**\n * Context to provide to the menu.\n */\n readonly context?: Signal<T>;\n}\n\n/** Duration in ms before a long-press fires. */\nconst LONG_PRESS_DURATION = 700;\n\n/** Movement threshold in px to cancel a long-press. */\nconst LONG_PRESS_MOVE_THRESHOLD = 10;\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-empty-function\nconst noop = (): any => {};\n\nexport const [\n NgpContextMenuTriggerStateToken,\n ngpContextMenuTrigger,\n _injectContextMenuTriggerState,\n provideContextMenuTriggerState,\n] = createPrimitive(\n 'NgpContextMenuTrigger',\n <T>({\n disabled: _disabled = signal(false),\n menu: _menu = signal<NgpOverlayContent<T> | undefined>(undefined),\n offset: _offset = signal(2),\n flip: _flip = signal(true),\n context: _context = signal<T>(undefined as T),\n container,\n scrollBehavior,\n shift,\n }: NgpContextMenuTriggerProps<T>) => {\n const element = injectElementRef();\n const injector = inject(Injector);\n const viewContainerRef = inject(ViewContainerRef);\n\n // Controlled properties\n const menu = controlled(_menu);\n const disabled = controlled(_disabled);\n const flip = controlled(_flip);\n const offset = controlled(_offset);\n const context = controlled(_context);\n\n // Internal state\n const overlay = signal<NgpOverlay<T> | null>(null);\n const open = computed(() => overlay()?.isOpen() ?? false);\n const openOrigin = signal<FocusOrigin>('program');\n const cursorPosition = signal<NgpPosition | null>(null);\n\n // Host bindings\n dataBinding(element, 'data-open', open);\n\n // Prevent iOS text selection and callout on long-press.\n // Only apply when the trigger is enabled so disabled triggers retain native behavior.\n styleBinding(element, '-webkit-touch-callout', () => (disabled?.() ? null : 'none'));\n\n // Long-press state\n let longPressTimer: ReturnType<typeof setTimeout> | null = null;\n let longPressStartX = 0;\n let longPressStartY = 0;\n let longPressTriggered = false;\n\n // Event listeners\n listener(element, 'contextmenu', onContextMenu);\n listener(element, 'pointerdown', onPointerDown);\n listener(element, 'pointermove', onPointerMove);\n listener(element, 'pointerup', onPointerUp);\n listener(element, 'pointercancel', onPointerCancel);\n\n function onContextMenu(event: MouseEvent): void {\n if (disabled?.()) {\n return;\n }\n\n event.preventDefault();\n\n // If long-press already triggered, don't re-open\n if (longPressTriggered) {\n longPressTriggered = false;\n return;\n }\n\n cursorPosition.set({ x: event.clientX, y: event.clientY });\n openOrigin.set('mouse');\n\n if (open()) {\n // Already open - reposition by updating cursor position and triggering reposition\n overlay()?.updatePosition();\n } else {\n showMenu();\n }\n }\n\n function onPointerDown(event: PointerEvent): void {\n if (event.pointerType !== 'touch' || disabled?.()) {\n return;\n }\n\n longPressTriggered = false;\n longPressStartX = event.clientX;\n longPressStartY = event.clientY;\n\n longPressTimer = setTimeout(() => {\n longPressTriggered = true;\n cursorPosition.set({ x: longPressStartX, y: longPressStartY });\n openOrigin.set('touch');\n showMenu();\n }, LONG_PRESS_DURATION);\n }\n\n function onPointerMove(event: PointerEvent): void {\n if (event.pointerType !== 'touch' || !longPressTimer) {\n return;\n }\n\n const dx = event.clientX - longPressStartX;\n const dy = event.clientY - longPressStartY;\n if (Math.sqrt(dx * dx + dy * dy) > LONG_PRESS_MOVE_THRESHOLD) {\n cancelLongPress();\n }\n }\n\n function onPointerUp(event: PointerEvent): void {\n if (event.pointerType !== 'touch') {\n return;\n }\n cancelLongPress();\n }\n\n function onPointerCancel(event: PointerEvent): void {\n if (event.pointerType !== 'touch') {\n return;\n }\n cancelLongPress();\n }\n\n function cancelLongPress(): void {\n if (longPressTimer) {\n clearTimeout(longPressTimer);\n longPressTimer = null;\n }\n longPressTriggered = false;\n }\n\n onDestroy(() => cancelLongPress());\n\n function showMenu(): void {\n if (!overlay()) {\n createOverlayInstance();\n }\n overlay()?.show();\n }\n\n function show(origin: FocusOrigin = 'program'): void {\n openOrigin.set(origin);\n showMenu();\n }\n\n function hide(origin: FocusOrigin = 'program'): void {\n const currentOverlay = overlay();\n if (!currentOverlay) {\n return;\n }\n currentOverlay.hide({ origin });\n }\n\n function createOverlayInstance(): void {\n const menuContent = menu?.();\n\n if (!menuContent) {\n throw new Error('Context menu must be either a TemplateRef or a ComponentType');\n }\n\n const config: NgpOverlayConfig<T> = {\n content: menuContent,\n triggerElement: element.nativeElement,\n viewContainerRef,\n injector,\n context,\n container: container?.(),\n offset: offset(),\n flip: flip(),\n shift,\n placement: signal<Placement>('right-start'),\n closeOnOutsideClick: true,\n closeOnEscape: true,\n treatTriggerClickAsOutside: true,\n restoreFocus: false,\n scrollBehaviour: scrollBehavior?.() ?? 'close',\n overlayType: 'menu',\n position: cursorPosition,\n trackPosition: true,\n };\n\n overlay.set(createOverlay(config));\n }\n\n function setPointerOverContent(_isOver: boolean): void {\n // No-op for context menu\n }\n\n // Set the compat state on NgpMenuTriggerStateToken so NgpMenu can find it.\n // NgpMenu injects this token and calls hide(), openOrigin(), setPointerOverContent() on it.\n const menuTriggerToken = inject(NgpMenuTriggerStateToken, { optional: true });\n // eslint-disable-next-line @angular-eslint/no-uncalled-signals -- checking inject() nullability, not signal value\n if (menuTriggerToken) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (menuTriggerToken as any).set({\n menu,\n placement: signal('bottom-start'),\n open,\n offset,\n disabled,\n flip,\n context,\n openOrigin,\n setDisabled: noop,\n setFlip: noop,\n setPlacement: noop,\n setOffset: noop,\n setContext: noop,\n show,\n hide,\n toggle: noop,\n setMenu: noop,\n setPointerOverContent,\n });\n }\n\n return {\n open,\n openOrigin,\n show,\n hide,\n setPointerOverContent,\n } satisfies NgpContextMenuTriggerState;\n },\n);\n\nexport function injectContextMenuTriggerState(\n options?: StateInjectionOptions,\n): Signal<NgpContextMenuTriggerState> {\n return _injectContextMenuTriggerState(options) as Signal<NgpContextMenuTriggerState>;\n}\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, Directive, input, Signal } from '@angular/core';\nimport { provideMenuTriggerState } from 'ng-primitives/menu';\nimport {\n coerceFlip,\n coerceOffset,\n coerceShift,\n NgpFlip,\n NgpFlipInput,\n NgpOffset,\n NgpOffsetInput,\n NgpOverlayContent,\n NgpShift,\n NgpShiftInput,\n} from 'ng-primitives/portal';\nimport { injectContextMenuConfig } from '../config/context-menu-config';\nimport {\n ngpContextMenuTrigger,\n provideContextMenuTriggerState,\n} from './context-menu-trigger-state';\n\n/**\n * The `NgpContextMenuTrigger` directive allows you to turn an element into a context menu trigger.\n * Right-clicking or long-pressing the element will open the specified menu at the cursor position.\n */\n@Directive({\n selector: '[ngpContextMenuTrigger]',\n exportAs: 'ngpContextMenuTrigger',\n providers: [provideContextMenuTriggerState(), provideMenuTriggerState()],\n})\nexport class NgpContextMenuTrigger<T = unknown> {\n /**\n * Access the global context menu configuration.\n */\n private readonly config = injectContextMenuConfig();\n\n /**\n * The menu template ref or ComponentType to display.\n */\n readonly menu = input<NgpOverlayContent<T>>(undefined, {\n alias: 'ngpContextMenuTrigger',\n });\n\n /**\n * Define if the trigger should be disabled.\n * @default false\n */\n readonly disabled = input<boolean, BooleanInput>(false, {\n alias: 'ngpContextMenuTriggerDisabled',\n transform: booleanAttribute,\n });\n\n /**\n * Define the offset of the context menu relative to the cursor position.\n * @default 2\n */\n readonly offset = input<NgpOffset, NgpOffsetInput>(this.config.offset, {\n alias: 'ngpContextMenuTriggerOffset',\n transform: coerceOffset,\n });\n\n /**\n * Define whether the context menu should flip when there is not enough space.\n * @default true\n */\n readonly flip = input<NgpFlip, NgpFlipInput>(this.config.flip, {\n alias: 'ngpContextMenuTriggerFlip',\n transform: coerceFlip,\n });\n\n /**\n * Configure shift behavior to keep the context menu in view.\n * @default undefined\n */\n readonly shift = input<NgpShift, NgpShiftInput>(this.config.shift, {\n alias: 'ngpContextMenuTriggerShift',\n transform: coerceShift,\n });\n\n /**\n * Define the container in which the context menu should be attached.\n * @default document.body\n */\n readonly container = input<HTMLElement | string | null>(this.config.container, {\n alias: 'ngpContextMenuTriggerContainer',\n });\n\n /**\n * Defines how the context menu behaves when the window is scrolled.\n * @default 'close'\n */\n readonly scrollBehavior = input<'reposition' | 'block' | 'close'>(this.config.scrollBehavior, {\n alias: 'ngpContextMenuTriggerScrollBehavior',\n });\n\n /**\n * Provide context to the menu. This can be used to pass data to the menu content.\n */\n readonly context = input<T>(undefined, {\n alias: 'ngpContextMenuTriggerContext',\n });\n\n /**\n * The context menu trigger state.\n */\n private readonly state = ngpContextMenuTrigger<T>({\n disabled: this.disabled,\n menu: this.menu,\n offset: this.offset,\n flip: this.flip,\n shift: this.shift(),\n container: this.container,\n scrollBehavior: this.scrollBehavior,\n context: this.context as Signal<T>,\n });\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -607,16 +607,23 @@ class NgpDatePickerNextMonth {
|
|
|
607
607
|
if (this.disabled()) {
|
|
608
608
|
return;
|
|
609
609
|
}
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
610
|
+
const focusedDate = this.state().focusedDate();
|
|
611
|
+
const day = this.dateAdapter.getDate(focusedDate);
|
|
612
|
+
// Move to the first day of the next month before restoring the focused day,
|
|
613
|
+
// otherwise a focused date such as the 31st would overflow into the month
|
|
614
|
+
// after next when the next month has fewer days.
|
|
615
|
+
let date = this.dateAdapter.set(focusedDate, {
|
|
614
616
|
day: 1,
|
|
615
617
|
hour: 0,
|
|
616
618
|
minute: 0,
|
|
617
619
|
second: 0,
|
|
618
620
|
millisecond: 0,
|
|
619
621
|
});
|
|
622
|
+
date = this.dateAdapter.add(date, { months: 1 });
|
|
623
|
+
// Preserve the focused day, clamping to the last day of the month when the
|
|
624
|
+
// next month is shorter (e.g. 31 May -> 30 June).
|
|
625
|
+
const lastDay = this.dateAdapter.getDate(this.dateAdapter.endOfMonth(date));
|
|
626
|
+
date = this.dateAdapter.set(date, { day: Math.min(day, lastDay) });
|
|
620
627
|
this.state().setFocusedDate(date, 'mouse', 'forward');
|
|
621
628
|
}
|
|
622
629
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: NgpDatePickerNextMonth, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
@@ -689,9 +696,12 @@ class NgpDatePickerPreviousMonth {
|
|
|
689
696
|
if (this.disabled()) {
|
|
690
697
|
return;
|
|
691
698
|
}
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
699
|
+
const focusedDate = this.state().focusedDate();
|
|
700
|
+
const day = this.dateAdapter.getDate(focusedDate);
|
|
701
|
+
// Move to the first day of the previous month before restoring the focused
|
|
702
|
+
// day, otherwise a focused date such as the 31st would overflow when the
|
|
703
|
+
// previous month has fewer days.
|
|
704
|
+
let date = this.dateAdapter.set(focusedDate, {
|
|
695
705
|
day: 1,
|
|
696
706
|
hour: 0,
|
|
697
707
|
minute: 0,
|
|
@@ -699,6 +709,10 @@ class NgpDatePickerPreviousMonth {
|
|
|
699
709
|
millisecond: 0,
|
|
700
710
|
});
|
|
701
711
|
date = this.dateAdapter.subtract(date, { months: 1 });
|
|
712
|
+
// Preserve the focused day, clamping to the last day of the month when the
|
|
713
|
+
// previous month is shorter (e.g. 31 March -> 28 February).
|
|
714
|
+
const lastDay = this.dateAdapter.getDate(this.dateAdapter.endOfMonth(date));
|
|
715
|
+
date = this.dateAdapter.set(date, { day: Math.min(day, lastDay) });
|
|
702
716
|
this.state().setFocusedDate(date, 'mouse', 'backward');
|
|
703
717
|
}
|
|
704
718
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: NgpDatePickerPreviousMonth, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|