ng-primitives 0.47.0 → 0.49.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (121) hide show
  1. package/a11y/active-descendant/active-descendant.d.ts +5 -1
  2. package/a11y/visually-hidden/visually-hidden-state.d.ts +1 -36
  3. package/accordion/accordion/accordion-state.d.ts +1 -12
  4. package/accordion/accordion-content/accordion-content.d.ts +1 -12
  5. package/accordion/accordion-item/accordion-item-state.d.ts +1 -12
  6. package/avatar/avatar/avatar-state.d.ts +1 -5
  7. package/avatar/avatar-image/avatar-image.d.ts +1 -36
  8. package/button/button/button-state.d.ts +1 -6
  9. package/checkbox/checkbox/checkbox-state.d.ts +1 -12
  10. package/combobox/combobox/combobox-state.d.ts +1 -44
  11. package/combobox/combobox/combobox.d.ts +1 -1
  12. package/combobox/combobox-button/combobox-button.d.ts +2 -45
  13. package/combobox/combobox-dropdown/combobox-dropdown.d.ts +1 -44
  14. package/combobox/combobox-input/combobox-input.d.ts +2 -50
  15. package/combobox/combobox-option/combobox-option.d.ts +1 -44
  16. package/dialog/dialog/dialog-state.d.ts +1 -17
  17. package/fesm2022/ng-primitives-a11y.mjs +32 -10
  18. package/fesm2022/ng-primitives-a11y.mjs.map +1 -1
  19. package/fesm2022/ng-primitives-accordion.mjs.map +1 -1
  20. package/fesm2022/ng-primitives-avatar.mjs.map +1 -1
  21. package/fesm2022/ng-primitives-button.mjs.map +1 -1
  22. package/fesm2022/ng-primitives-checkbox.mjs.map +1 -1
  23. package/fesm2022/ng-primitives-combobox.mjs +23 -18
  24. package/fesm2022/ng-primitives-combobox.mjs.map +1 -1
  25. package/fesm2022/ng-primitives-date-picker.mjs.map +1 -1
  26. package/fesm2022/ng-primitives-dialog.mjs.map +1 -1
  27. package/fesm2022/ng-primitives-file-upload.mjs.map +1 -1
  28. package/fesm2022/ng-primitives-focus-trap.mjs.map +1 -1
  29. package/fesm2022/ng-primitives-form-field.mjs +2 -2
  30. package/fesm2022/ng-primitives-form-field.mjs.map +1 -1
  31. package/fesm2022/ng-primitives-input.mjs +11 -2
  32. package/fesm2022/ng-primitives-input.mjs.map +1 -1
  33. package/fesm2022/ng-primitives-internal.mjs +9 -1
  34. package/fesm2022/ng-primitives-internal.mjs.map +1 -1
  35. package/fesm2022/ng-primitives-listbox.mjs +3 -1
  36. package/fesm2022/ng-primitives-listbox.mjs.map +1 -1
  37. package/fesm2022/ng-primitives-menu.mjs.map +1 -1
  38. package/fesm2022/ng-primitives-meter.mjs.map +1 -1
  39. package/fesm2022/ng-primitives-pagination.mjs.map +1 -1
  40. package/fesm2022/ng-primitives-portal.mjs +128 -2
  41. package/fesm2022/ng-primitives-portal.mjs.map +1 -1
  42. package/fesm2022/ng-primitives-progress.mjs.map +1 -1
  43. package/fesm2022/ng-primitives-radio.mjs +8 -2
  44. package/fesm2022/ng-primitives-radio.mjs.map +1 -1
  45. package/fesm2022/ng-primitives-roving-focus.mjs.map +1 -1
  46. package/fesm2022/ng-primitives-search.mjs.map +1 -1
  47. package/fesm2022/ng-primitives-select.mjs +8 -2
  48. package/fesm2022/ng-primitives-select.mjs.map +1 -1
  49. package/fesm2022/ng-primitives-slider.mjs +8 -2
  50. package/fesm2022/ng-primitives-slider.mjs.map +1 -1
  51. package/fesm2022/ng-primitives-switch.mjs +9 -4
  52. package/fesm2022/ng-primitives-switch.mjs.map +1 -1
  53. package/fesm2022/ng-primitives-tabs.mjs.map +1 -1
  54. package/fesm2022/ng-primitives-textarea.mjs +11 -2
  55. package/fesm2022/ng-primitives-textarea.mjs.map +1 -1
  56. package/fesm2022/ng-primitives-toggle-group.mjs.map +1 -1
  57. package/fesm2022/ng-primitives-toggle.mjs.map +1 -1
  58. package/fesm2022/ng-primitives-toolbar.mjs.map +1 -1
  59. package/fesm2022/ng-primitives-tooltip.mjs.map +1 -1
  60. package/file-upload/file-dropzone/file-dropzone-state.d.ts +1 -16
  61. package/file-upload/file-upload/file-upload-state.d.ts +1 -21
  62. package/focus-trap/focus-trap/focus-trap-state.d.ts +1 -28
  63. package/form-field/description/description.d.ts +1 -25
  64. package/form-field/error/error.d.ts +1 -25
  65. package/form-field/form-control/form-control-state.d.ts +1 -5
  66. package/form-field/form-control/form-control.d.ts +2 -2
  67. package/form-field/form-field/form-field-state.d.ts +1 -25
  68. package/form-field/label/label.d.ts +1 -25
  69. package/input/input/input-state.d.ts +1 -14
  70. package/input/input/input.d.ts +5 -1
  71. package/internal/style-injector/style-injector.d.ts +4 -0
  72. package/listbox/listbox/listbox-state.d.ts +1 -25
  73. package/menu/menu-trigger/menu-trigger-state.d.ts +1 -22
  74. package/menu/submenu-trigger/submenu-trigger-state.d.ts +1 -20
  75. package/meter/meter/meter-state.d.ts +1 -9
  76. package/meter/meter-indicator/meter-indicator.d.ts +1 -9
  77. package/meter/meter-label/meter-label.d.ts +1 -9
  78. package/package.json +5 -5
  79. package/pagination/pagination/pagination-state.d.ts +1 -10
  80. package/pagination/pagination-button/pagination-button.d.ts +1 -10
  81. package/pagination/pagination-first/pagination-first.d.ts +1 -10
  82. package/pagination/pagination-next/pagination-next.d.ts +1 -10
  83. package/pagination/pagination-previous/pagination-previous.d.ts +1 -10
  84. package/portal/index.d.ts +1 -0
  85. package/portal/scroll-strategy.d.ts +23 -0
  86. package/progress/progress/progress-state.d.ts +1 -12
  87. package/progress/progress-indicator/progress-indicator.d.ts +1 -12
  88. package/progress/progress-label/progress-label.d.ts +1 -12
  89. package/progress/progress-track/progress-track.d.ts +1 -12
  90. package/progress/progress-value/progress-value.d.ts +1 -12
  91. package/radio/radio-group/radio-group.d.ts +5 -1
  92. package/roving-focus/roving-focus-group/roving-focus-group-state.d.ts +1 -19
  93. package/schematics/ng-generate/schema.d.ts +1 -0
  94. package/schematics/ng-generate/schema.json +1 -0
  95. package/schematics/ng-generate/templates/combobox/combobox.__fileSuffix@dasherize__.ts.template +11 -16
  96. package/schematics/ng-generate/templates/menu/menu-item.__fileSuffix@dasherize__.ts.template +40 -0
  97. package/schematics/ng-generate/templates/menu/menu.__fileSuffix@dasherize__.ts.template +53 -0
  98. package/schematics/ng-generate/templates/switch/switch.__fileSuffix@dasherize__.ts.template +3 -3
  99. package/search/search/search-state.d.ts +1 -9
  100. package/search/search-clear/search-clear.d.ts +1 -9
  101. package/select/select/select-state.d.ts +1 -4
  102. package/select/select/select.d.ts +5 -1
  103. package/slider/slider/slider-state.d.ts +1 -12
  104. package/slider/slider/slider.d.ts +5 -1
  105. package/slider/slider-range/slider-range.d.ts +1 -12
  106. package/slider/slider-thumb/slider-thumb.d.ts +1 -12
  107. package/slider/slider-track/slider-track.d.ts +1 -12
  108. package/switch/switch/switch-state.d.ts +1 -10
  109. package/switch/switch/switch.d.ts +5 -2
  110. package/switch/switch-thumb/switch-thumb.d.ts +1 -10
  111. package/tabs/tab-button/tab-button.d.ts +1 -36
  112. package/tabs/tab-list/tab-list.d.ts +1 -33
  113. package/tabs/tab-panel/tab-panel.d.ts +1 -33
  114. package/tabs/tabset/tabset-state.d.ts +1 -33
  115. package/textarea/textarea/textarea-state.d.ts +1 -4
  116. package/textarea/textarea/textarea.d.ts +5 -1
  117. package/toggle/toggle/toggle-state.d.ts +1 -10
  118. package/toggle-group/toggle-group/toggle-group-state.d.ts +1 -32
  119. package/toggle-group/toggle-group-item/toggle-group-item-state.d.ts +1 -22
  120. package/toolbar/toolbar/toolbar-state.d.ts +1 -23
  121. package/tooltip/tooltip-trigger/tooltip-trigger-state.d.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ng-primitives-listbox.mjs","sources":["../../../../packages/ng-primitives/listbox/src/listbox/listbox-state.ts","../../../../packages/ng-primitives/listbox/src/listbox-option/listbox-option.ts","../../../../packages/ng-primitives/listbox/src/listbox-section/listbox-section.ts","../../../../packages/ng-primitives/listbox/src/listbox-trigger/listbox-trigger.ts","../../../../packages/ng-primitives/listbox/src/listbox/listbox.ts","../../../../packages/ng-primitives/listbox/src/ng-primitives-listbox.ts"],"sourcesContent":["import {\n createState,\n createStateInjector,\n createStateProvider,\n createStateToken,\n} from 'ng-primitives/state';\nimport type { NgpListbox } from './listbox';\n\n/**\n * The state token for the Listbox primitive.\n */\nexport const NgpListboxStateToken = createStateToken<NgpListbox<unknown>>('Listbox');\n\n/**\n * Provides the Listbox state.\n */\nexport const provideListboxState = createStateProvider(NgpListboxStateToken);\n\n/**\n * Injects the Listbox state.\n */\nexport const injectListboxState = createStateInjector(NgpListboxStateToken, { deferred: true });\n\n/**\n * The Listbox state registration function.\n */\nexport const listboxState = createState(NgpListboxStateToken);\n","import { FocusOrigin } from '@angular/cdk/a11y';\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport {\n booleanAttribute,\n computed,\n Directive,\n effect,\n input,\n OnDestroy,\n signal,\n} from '@angular/core';\nimport {\n injectElementRef,\n onDomRemoval,\n scrollIntoViewIfNeeded,\n setupInteractions,\n} from 'ng-primitives/internal';\nimport { uniqueId } from 'ng-primitives/utils';\nimport type { NgpListbox } from '../listbox/listbox';\nimport { injectListboxState } from '../listbox/listbox-state';\n\n@Directive({\n selector: '[ngpListboxOption]',\n exportAs: 'ngpListboxOption',\n host: {\n role: 'option',\n '[attr.id]': 'id()',\n '[attr.aria-disabled]': 'optionDisabled()',\n '[attr.data-active]': 'listbox()?.isFocused() && active() ? \"\" : undefined',\n '[attr.data-selected]': 'selected() ? \"\" : undefined',\n '[attr.data-disabled]': 'optionDisabled() ? \"\" : undefined',\n '(click)': 'select(\"mouse\")',\n '(mouseenter)': 'activate()',\n '(keydown.enter)': 'select(\"keyboard\")',\n '(keydown.space)': 'select(\"keyboard\")',\n },\n})\nexport class NgpListboxOption<T> implements OnDestroy {\n protected readonly listbox = injectListboxState<NgpListbox<T>>();\n private readonly elementRef = injectElementRef();\n\n /**\n * The id of the listbox.\n */\n readonly id = input(uniqueId('ngp-listbox-option'));\n\n /**\n * The value of the option.\n */\n readonly value = input.required<T>({\n alias: 'ngpListboxOptionValue',\n });\n\n /**\n * Whether the option is disabled.\n */\n readonly optionDisabled = input<boolean, BooleanInput>(false, {\n alias: 'ngpListboxOptionDisabled',\n transform: booleanAttribute,\n });\n\n /**\n * Whether the option is active.\n */\n protected readonly active = signal<boolean>(false);\n\n /**\n * @internal\n * Whether the option is selected.\n */\n readonly selected = computed(() => this.listbox()?.isSelected(this.value()));\n\n /**\n * @internal\n * Whether the option is disabled - this is used by the `Highlightable` interface.\n */\n get disabled(): boolean {\n return this._disabled();\n }\n\n /**\n * Whether the option is disabled.\n */\n protected readonly _disabled = computed(\n () => this.optionDisabled() || (this.listbox()?.disabled() ?? false),\n );\n\n constructor() {\n setupInteractions({\n hover: true,\n press: true,\n focusVisible: true,\n focus: true,\n disabled: this._disabled,\n });\n\n // the listbox may not be available when the option is initialized\n // so we need to add the option when the listbox is available\n effect(() => this.listbox()?.addOption(this));\n\n // any time the element is removed from the dom, we need to remove the option from the listbox\n // and we also want to reset the active state\n onDomRemoval(this.elementRef.nativeElement, () => {\n this.listbox()?.removeOption(this);\n this.setInactiveStyles();\n });\n }\n\n ngOnDestroy(): void {\n this.listbox()?.removeOption(this);\n }\n\n /**\n * @internal\n * Sets the active state of the option.\n */\n setActiveStyles(): void {\n this.active.set(true);\n scrollIntoViewIfNeeded(this.elementRef.nativeElement);\n }\n\n /**\n * @internal\n * Sets the inactive state of the option.\n */\n setInactiveStyles(): void {\n this.active.set(false);\n }\n\n /**\n * @internal\n * Gets the label of the option, used by the `Highlightable` interface.\n */\n getLabel(): string {\n return this.elementRef.nativeElement.textContent ?? '';\n }\n\n /**\n * @internal\n * Selects the option.\n */\n select(origin: FocusOrigin): void {\n this.listbox()?.selectOption(this.value(), origin);\n }\n\n /**\n * @internal\n * Activate the current options.\n */\n activate(): void {\n if (this._disabled()) {\n return;\n }\n\n this.listbox()?.activateOption(this.value());\n }\n}\n","import { contentChild, Directive } from '@angular/core';\nimport { NgpHeaderToken } from 'ng-primitives/common';\n\n@Directive({\n selector: '[ngpListboxSection]',\n exportAs: 'ngpListboxSection',\n host: {\n role: 'group',\n '[attr.aria-labelledby]': 'header()?.id()',\n },\n})\nexport class NgpListboxSection {\n /**\n * Access the header of the section if it exists.\n */\n protected readonly header = contentChild(NgpHeaderToken, { descendants: true });\n}\n","import { Directive, HostListener } from '@angular/core';\nimport { injectPopoverTriggerState } from 'ng-primitives/popover';\n\n@Directive({\n selector: '[ngpListboxTrigger]',\n exportAs: 'ngpListboxTrigger',\n})\nexport class NgpListboxTrigger {\n /**\n * There must also be a popover trigger directive associated with this element.\n */\n private readonly popoverTrigger = injectPopoverTriggerState();\n\n /**\n * When the up or down arrow key is pressed, open the popover.\n */\n @HostListener('keydown', ['$event'])\n openPopover(event: KeyboardEvent) {\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n this.popoverTrigger().show();\n event.preventDefault();\n }\n }\n}\n","import { ActiveDescendantKeyManager, FocusOrigin } from '@angular/cdk/a11y';\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport {\n AfterContentInit,\n booleanAttribute,\n computed,\n DestroyRef,\n Directive,\n HostListener,\n inject,\n Injector,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { NgpSelectionMode } from 'ng-primitives/common';\nimport { explicitEffect, setupFocusVisible } from 'ng-primitives/internal';\nimport { injectPopoverTriggerState } from 'ng-primitives/popover';\nimport { uniqueId } from 'ng-primitives/utils';\nimport type { NgpListboxOption } from '../listbox-option/listbox-option';\nimport { listboxState, provideListboxState } from './listbox-state';\n\n@Directive({\n selector: '[ngpListbox]',\n exportAs: 'ngpListbox',\n providers: [provideListboxState()],\n host: {\n '[id]': 'state.id()',\n role: 'listbox',\n '[attr.tabindex]': 'tabindex()',\n '[attr.aria-disabled]': 'state.disabled()',\n '[attr.aria-multiselectable]': 'state.mode() === \"multiple\"',\n '[attr.aria-activedescendant]': 'activeDescendant()',\n '(focusin)': 'isFocused.set(true)',\n '(focusout)': 'isFocused.set(false)',\n },\n})\nexport class NgpListbox<T> implements AfterContentInit {\n /**\n * Access the injector.\n */\n private readonly injector = inject(Injector);\n\n /**\n * Access the destroy ref.\n */\n private readonly destroyRef = inject(DestroyRef);\n\n /**\n * The listbox may be used within a popover, which we may want to close on selection.\n */\n private readonly popoverTrigger = injectPopoverTriggerState({ optional: true });\n\n /**\n * The id of the listbox.\n */\n readonly id = input(uniqueId('ngp-listbox'));\n\n /**\n * The listbox selection mode.\n */\n readonly mode = input<NgpSelectionMode>('single', {\n alias: 'ngpListboxMode',\n });\n\n /**\n * The listbox selection.\n */\n readonly value = input<T[]>([], {\n alias: 'ngpListboxValue',\n });\n\n /**\n * Emits when the listbox selection changes.\n */\n readonly valueChange = output<T[]>({\n alias: 'ngpListboxValueChange',\n });\n\n /**\n * The listbox disabled state.\n */\n readonly disabled = input<boolean, BooleanInput>(false, {\n alias: 'ngpListboxDisabled',\n transform: booleanAttribute,\n });\n\n /**\n * The comparator function to use when comparing values.\n * If not provided, strict equality (===) is used.\n */\n readonly compareWith = input<(a: T, b: T) => boolean>((a, b) => a === b, {\n alias: 'ngpListboxCompareWith',\n });\n\n /**\n * The tabindex of the listbox.\n */\n protected readonly tabindex = computed(() => (this.state.disabled() ? -1 : 0));\n\n /**\n * Access the options in the listbox.\n */\n protected readonly options = signal<NgpListboxOption<T>[]>([]);\n\n /**\n * The active descendant of the listbox.\n */\n protected readonly keyManager = new ActiveDescendantKeyManager(this.options, this.injector);\n\n /**\n * Gets the active descendant of the listbox.\n */\n protected readonly activeDescendant = signal<string | undefined>(undefined);\n\n /**\n * @internal\n * Whether the listbox is focused.\n */\n readonly isFocused = signal(false);\n\n /**\n * The listbox state\n */\n private readonly state = listboxState<NgpListbox<T>>(this);\n\n constructor() {\n setupFocusVisible({ disabled: this.state.disabled });\n }\n\n ngAfterContentInit(): void {\n this.keyManager.withHomeAndEnd().withTypeAhead().withVerticalOrientation();\n\n this.keyManager.change\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.activeDescendant.set(this.keyManager.activeItem?.id()));\n\n // On initialization, set the first selected option as the active descendant if there is one.\n this.updateActiveItem();\n\n // if the options change, update the active item, for example the item that was previously active may have been removed\n // any time the value changes we should make sure that the active item is updated\n explicitEffect([this.options], () => this.updateActiveItem(), {\n injector: this.injector,\n });\n }\n\n private updateActiveItem(): void {\n const selectedOption = this.options().find(o => o.selected());\n\n if (selectedOption) {\n this.keyManager.setActiveItem(selectedOption);\n } else {\n this.keyManager.setFirstItemActive();\n }\n }\n\n @HostListener('keydown', ['$event'])\n protected onKeydown(event: KeyboardEvent): void {\n this.keyManager.onKeydown(event);\n\n // if the keydown was enter or space, select the active descendant if there is one\n if (event.key === 'Enter' || event.key === ' ') {\n this.keyManager.activeItem?.select('keyboard');\n }\n\n // if this is an arrow key or selection key, prevent the default action to prevent the page from scrolling\n if (\n event.key === 'ArrowDown' ||\n event.key === 'ArrowUp' ||\n event.key === 'Enter' ||\n event.key === ' '\n ) {\n event.preventDefault();\n }\n }\n\n /**\n * @internal\n * Selects an option in the listbox.\n */\n selectOption(value: T, origin: FocusOrigin): void {\n if (this.state.mode() === 'single') {\n this.state.value.set([value]);\n this.valueChange.emit(this.state.value());\n } else {\n // if the value is already selected, remove it, otherwise add it\n if (this.isSelected(value)) {\n this.state.value.set(this.state.value().filter(v => !this.state.compareWith()(v, value)));\n this.valueChange.emit(this.state.value());\n } else {\n this.state.value.set([...this.state.value(), value]);\n this.valueChange.emit(this.state.value());\n }\n }\n\n // Set the active descendant to the selected option.\n const option = this.options().find(o => this.state.compareWith()(o.value(), value));\n\n if (option) {\n this.keyManager.setActiveItem(option);\n }\n\n // If the listbox is within a popover, close the popover on selection if it is not in a multiple selection mode.\n if (this.state.mode() !== 'multiple') {\n this.popoverTrigger()?.hide(origin);\n }\n }\n\n /**\n * @internal\n * Determine if an option is selected using the compareWith function.\n */\n isSelected(value: T): boolean {\n return this.state.value().some(v => this.state.compareWith()(v, value));\n }\n\n /**\n * @internal\n * Activate an option in the listbox.\n */\n activateOption(value: T) {\n const option = this.options().find(o => this.state.compareWith()(o.value(), value));\n\n if (option) {\n this.keyManager.setActiveItem(option);\n }\n }\n\n /**\n * Registers an option with the listbox.\n * @internal\n */\n addOption(option: NgpListboxOption<T>): void {\n // if the option already exists, do not add it again\n if (!this.options().includes(option)) {\n this.options.update(options => [...options, option]);\n }\n }\n\n /**\n * Deregisters an option with the listbox.\n * @internal\n */\n removeOption(option: NgpListboxOption<T>): void {\n this.options.update(options => options.filter(o => o !== option));\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-listbox.mjs","sources":["../../../../packages/ng-primitives/listbox/src/listbox/listbox-state.ts","../../../../packages/ng-primitives/listbox/src/listbox-option/listbox-option.ts","../../../../packages/ng-primitives/listbox/src/listbox-section/listbox-section.ts","../../../../packages/ng-primitives/listbox/src/listbox-trigger/listbox-trigger.ts","../../../../packages/ng-primitives/listbox/src/listbox/listbox.ts","../../../../packages/ng-primitives/listbox/src/ng-primitives-listbox.ts"],"sourcesContent":["import {\n createState,\n createStateInjector,\n createStateProvider,\n createStateToken,\n} from 'ng-primitives/state';\nimport type { NgpListbox } from './listbox';\n\n/**\n * The state token for the Listbox primitive.\n */\nexport const NgpListboxStateToken = createStateToken<NgpListbox<unknown>>('Listbox');\n\n/**\n * Provides the Listbox state.\n */\nexport const provideListboxState = createStateProvider(NgpListboxStateToken);\n\n/**\n * Injects the Listbox state.\n */\nexport const injectListboxState = createStateInjector<NgpListbox<unknown>>(NgpListboxStateToken, {\n deferred: true,\n});\n\n/**\n * The Listbox state registration function.\n */\nexport const listboxState = createState(NgpListboxStateToken);\n","import { FocusOrigin } from '@angular/cdk/a11y';\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport {\n booleanAttribute,\n computed,\n Directive,\n effect,\n input,\n OnDestroy,\n signal,\n} from '@angular/core';\nimport {\n injectElementRef,\n onDomRemoval,\n scrollIntoViewIfNeeded,\n setupInteractions,\n} from 'ng-primitives/internal';\nimport { uniqueId } from 'ng-primitives/utils';\nimport type { NgpListbox } from '../listbox/listbox';\nimport { injectListboxState } from '../listbox/listbox-state';\n\n@Directive({\n selector: '[ngpListboxOption]',\n exportAs: 'ngpListboxOption',\n host: {\n role: 'option',\n '[attr.id]': 'id()',\n '[attr.aria-disabled]': 'optionDisabled()',\n '[attr.data-active]': 'listbox()?.isFocused() && active() ? \"\" : undefined',\n '[attr.data-selected]': 'selected() ? \"\" : undefined',\n '[attr.data-disabled]': 'optionDisabled() ? \"\" : undefined',\n '(click)': 'select(\"mouse\")',\n '(mouseenter)': 'activate()',\n '(keydown.enter)': 'select(\"keyboard\")',\n '(keydown.space)': 'select(\"keyboard\")',\n },\n})\nexport class NgpListboxOption<T> implements OnDestroy {\n protected readonly listbox = injectListboxState<NgpListbox<T>>();\n private readonly elementRef = injectElementRef();\n\n /**\n * The id of the listbox.\n */\n readonly id = input(uniqueId('ngp-listbox-option'));\n\n /**\n * The value of the option.\n */\n readonly value = input.required<T>({\n alias: 'ngpListboxOptionValue',\n });\n\n /**\n * Whether the option is disabled.\n */\n readonly optionDisabled = input<boolean, BooleanInput>(false, {\n alias: 'ngpListboxOptionDisabled',\n transform: booleanAttribute,\n });\n\n /**\n * Whether the option is active.\n */\n protected readonly active = signal<boolean>(false);\n\n /**\n * @internal\n * Whether the option is selected.\n */\n readonly selected = computed(() => this.listbox()?.isSelected(this.value()));\n\n /**\n * @internal\n * Whether the option is disabled - this is used by the `Highlightable` interface.\n */\n get disabled(): boolean {\n return this._disabled();\n }\n\n /**\n * Whether the option is disabled.\n */\n protected readonly _disabled = computed(\n () => this.optionDisabled() || (this.listbox()?.disabled() ?? false),\n );\n\n constructor() {\n setupInteractions({\n hover: true,\n press: true,\n focusVisible: true,\n focus: true,\n disabled: this._disabled,\n });\n\n // the listbox may not be available when the option is initialized\n // so we need to add the option when the listbox is available\n effect(() => this.listbox()?.addOption(this));\n\n // any time the element is removed from the dom, we need to remove the option from the listbox\n // and we also want to reset the active state\n onDomRemoval(this.elementRef.nativeElement, () => {\n this.listbox()?.removeOption(this);\n this.setInactiveStyles();\n });\n }\n\n ngOnDestroy(): void {\n this.listbox()?.removeOption(this);\n }\n\n /**\n * @internal\n * Sets the active state of the option.\n */\n setActiveStyles(): void {\n this.active.set(true);\n scrollIntoViewIfNeeded(this.elementRef.nativeElement);\n }\n\n /**\n * @internal\n * Sets the inactive state of the option.\n */\n setInactiveStyles(): void {\n this.active.set(false);\n }\n\n /**\n * @internal\n * Gets the label of the option, used by the `Highlightable` interface.\n */\n getLabel(): string {\n return this.elementRef.nativeElement.textContent ?? '';\n }\n\n /**\n * @internal\n * Selects the option.\n */\n select(origin: FocusOrigin): void {\n this.listbox()?.selectOption(this.value(), origin);\n }\n\n /**\n * @internal\n * Activate the current options.\n */\n activate(): void {\n if (this._disabled()) {\n return;\n }\n\n this.listbox()?.activateOption(this.value());\n }\n}\n","import { contentChild, Directive } from '@angular/core';\nimport { NgpHeaderToken } from 'ng-primitives/common';\n\n@Directive({\n selector: '[ngpListboxSection]',\n exportAs: 'ngpListboxSection',\n host: {\n role: 'group',\n '[attr.aria-labelledby]': 'header()?.id()',\n },\n})\nexport class NgpListboxSection {\n /**\n * Access the header of the section if it exists.\n */\n protected readonly header = contentChild(NgpHeaderToken, { descendants: true });\n}\n","import { Directive, HostListener } from '@angular/core';\nimport { injectPopoverTriggerState } from 'ng-primitives/popover';\n\n@Directive({\n selector: '[ngpListboxTrigger]',\n exportAs: 'ngpListboxTrigger',\n})\nexport class NgpListboxTrigger {\n /**\n * There must also be a popover trigger directive associated with this element.\n */\n private readonly popoverTrigger = injectPopoverTriggerState();\n\n /**\n * When the up or down arrow key is pressed, open the popover.\n */\n @HostListener('keydown', ['$event'])\n openPopover(event: KeyboardEvent) {\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n this.popoverTrigger().show();\n event.preventDefault();\n }\n }\n}\n","import { ActiveDescendantKeyManager, FocusOrigin } from '@angular/cdk/a11y';\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport {\n AfterContentInit,\n booleanAttribute,\n computed,\n DestroyRef,\n Directive,\n HostListener,\n inject,\n Injector,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { NgpSelectionMode } from 'ng-primitives/common';\nimport { explicitEffect, setupFocusVisible } from 'ng-primitives/internal';\nimport { injectPopoverTriggerState } from 'ng-primitives/popover';\nimport { uniqueId } from 'ng-primitives/utils';\nimport type { NgpListboxOption } from '../listbox-option/listbox-option';\nimport { listboxState, provideListboxState } from './listbox-state';\n\n@Directive({\n selector: '[ngpListbox]',\n exportAs: 'ngpListbox',\n providers: [provideListboxState()],\n host: {\n '[id]': 'state.id()',\n role: 'listbox',\n '[attr.tabindex]': 'tabindex()',\n '[attr.aria-disabled]': 'state.disabled()',\n '[attr.aria-multiselectable]': 'state.mode() === \"multiple\"',\n '[attr.aria-activedescendant]': 'activeDescendant()',\n '(focusin)': 'isFocused.set(true)',\n '(focusout)': 'isFocused.set(false)',\n },\n})\nexport class NgpListbox<T> implements AfterContentInit {\n /**\n * Access the injector.\n */\n private readonly injector = inject(Injector);\n\n /**\n * Access the destroy ref.\n */\n private readonly destroyRef = inject(DestroyRef);\n\n /**\n * The listbox may be used within a popover, which we may want to close on selection.\n */\n private readonly popoverTrigger = injectPopoverTriggerState({ optional: true });\n\n /**\n * The id of the listbox.\n */\n readonly id = input(uniqueId('ngp-listbox'));\n\n /**\n * The listbox selection mode.\n */\n readonly mode = input<NgpSelectionMode>('single', {\n alias: 'ngpListboxMode',\n });\n\n /**\n * The listbox selection.\n */\n readonly value = input<T[]>([], {\n alias: 'ngpListboxValue',\n });\n\n /**\n * Emits when the listbox selection changes.\n */\n readonly valueChange = output<T[]>({\n alias: 'ngpListboxValueChange',\n });\n\n /**\n * The listbox disabled state.\n */\n readonly disabled = input<boolean, BooleanInput>(false, {\n alias: 'ngpListboxDisabled',\n transform: booleanAttribute,\n });\n\n /**\n * The comparator function to use when comparing values.\n * If not provided, strict equality (===) is used.\n */\n readonly compareWith = input<(a: T, b: T) => boolean>((a, b) => a === b, {\n alias: 'ngpListboxCompareWith',\n });\n\n /**\n * The tabindex of the listbox.\n */\n protected readonly tabindex = computed(() => (this.state.disabled() ? -1 : 0));\n\n /**\n * Access the options in the listbox.\n */\n protected readonly options = signal<NgpListboxOption<T>[]>([]);\n\n /**\n * The active descendant of the listbox.\n */\n protected readonly keyManager = new ActiveDescendantKeyManager(this.options, this.injector);\n\n /**\n * Gets the active descendant of the listbox.\n */\n protected readonly activeDescendant = signal<string | undefined>(undefined);\n\n /**\n * @internal\n * Whether the listbox is focused.\n */\n readonly isFocused = signal(false);\n\n /**\n * The listbox state\n */\n private readonly state = listboxState<NgpListbox<T>>(this);\n\n constructor() {\n setupFocusVisible({ disabled: this.state.disabled });\n }\n\n ngAfterContentInit(): void {\n this.keyManager.withHomeAndEnd().withTypeAhead().withVerticalOrientation();\n\n this.keyManager.change\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.activeDescendant.set(this.keyManager.activeItem?.id()));\n\n // On initialization, set the first selected option as the active descendant if there is one.\n this.updateActiveItem();\n\n // if the options change, update the active item, for example the item that was previously active may have been removed\n // any time the value changes we should make sure that the active item is updated\n explicitEffect([this.options], () => this.updateActiveItem(), {\n injector: this.injector,\n });\n }\n\n private updateActiveItem(): void {\n const selectedOption = this.options().find(o => o.selected());\n\n if (selectedOption) {\n this.keyManager.setActiveItem(selectedOption);\n } else {\n this.keyManager.setFirstItemActive();\n }\n }\n\n @HostListener('keydown', ['$event'])\n protected onKeydown(event: KeyboardEvent): void {\n this.keyManager.onKeydown(event);\n\n // if the keydown was enter or space, select the active descendant if there is one\n if (event.key === 'Enter' || event.key === ' ') {\n this.keyManager.activeItem?.select('keyboard');\n }\n\n // if this is an arrow key or selection key, prevent the default action to prevent the page from scrolling\n if (\n event.key === 'ArrowDown' ||\n event.key === 'ArrowUp' ||\n event.key === 'Enter' ||\n event.key === ' '\n ) {\n event.preventDefault();\n }\n }\n\n /**\n * @internal\n * Selects an option in the listbox.\n */\n selectOption(value: T, origin: FocusOrigin): void {\n if (this.state.mode() === 'single') {\n this.state.value.set([value]);\n this.valueChange.emit(this.state.value());\n } else {\n // if the value is already selected, remove it, otherwise add it\n if (this.isSelected(value)) {\n this.state.value.set(this.state.value().filter(v => !this.state.compareWith()(v, value)));\n this.valueChange.emit(this.state.value());\n } else {\n this.state.value.set([...this.state.value(), value]);\n this.valueChange.emit(this.state.value());\n }\n }\n\n // Set the active descendant to the selected option.\n const option = this.options().find(o => this.state.compareWith()(o.value(), value));\n\n if (option) {\n this.keyManager.setActiveItem(option);\n }\n\n // If the listbox is within a popover, close the popover on selection if it is not in a multiple selection mode.\n if (this.state.mode() !== 'multiple') {\n this.popoverTrigger()?.hide(origin);\n }\n }\n\n /**\n * @internal\n * Determine if an option is selected using the compareWith function.\n */\n isSelected(value: T): boolean {\n return this.state.value().some(v => this.state.compareWith()(v, value));\n }\n\n /**\n * @internal\n * Activate an option in the listbox.\n */\n activateOption(value: T) {\n const option = this.options().find(o => this.state.compareWith()(o.value(), value));\n\n if (option) {\n this.keyManager.setActiveItem(option);\n }\n }\n\n /**\n * Registers an option with the listbox.\n * @internal\n */\n addOption(option: NgpListboxOption<T>): void {\n // if the option already exists, do not add it again\n if (!this.options().includes(option)) {\n this.options.update(options => [...options, option]);\n }\n }\n\n /**\n * Deregisters an option with the listbox.\n * @internal\n */\n removeOption(option: NgpListboxOption<T>): void {\n this.options.update(options => options.filter(o => o !== option));\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ng-primitives-menu.mjs","sources":["../../../../packages/ng-primitives/menu/src/config/menu-config.ts","../../../../packages/ng-primitives/menu/src/menu/menu-token.ts","../../../../packages/ng-primitives/menu/src/submenu-trigger/submenu-trigger-state.ts","../../../../packages/ng-primitives/menu/src/submenu-trigger/submenu-trigger.ts","../../../../packages/ng-primitives/menu/src/menu-item/menu-item.ts","../../../../packages/ng-primitives/menu/src/menu-trigger/menu-trigger-state.ts","../../../../packages/ng-primitives/menu/src/menu-trigger/menu-trigger.ts","../../../../packages/ng-primitives/menu/src/menu/menu.ts","../../../../packages/ng-primitives/menu/src/ng-primitives-menu.ts"],"sourcesContent":["import { InjectionToken, Provider, inject } from '@angular/core';\nimport { Placement } from '@floating-ui/dom';\n\nexport interface NgpMenuConfig {\n /**\n * Define the offset of the menu relative to the trigger.\n * @default 4\n */\n offset: number;\n\n /**\n * Define the placement of the menu relative to the trigger.\n * @default 'bottom-start'\n */\n placement: Placement;\n\n /**\n * Define whether the menu should flip when there is not enough space for the menu.\n * @default true\n */\n flip: boolean;\n\n /**\n * Define the container in to which the menu should be attached.\n * @default document.body\n */\n container: HTMLElement | null;\n\n /**\n * Defines how the menu behaves when the window is scrolled.\n * @default scroll\n */\n scrollBehavior: 'reposition' | 'block';\n}\n\nexport const defaultMenuConfig: NgpMenuConfig = {\n offset: 4,\n placement: 'bottom-start',\n flip: true,\n container: null,\n scrollBehavior: 'block',\n};\n\nexport const NgpMenuConfigToken = new InjectionToken<NgpMenuConfig>('NgpMenuConfigToken');\n\n/**\n * Provide the default Menu configuration\n * @param config The Menu configuration\n * @returns The provider\n */\nexport function provideMenuConfig(config: Partial<NgpMenuConfig>): Provider[] {\n return [\n {\n provide: NgpMenuConfigToken,\n useValue: { ...defaultMenuConfig, ...config },\n },\n ];\n}\n\n/**\n * Inject the Menu configuration\n * @returns The global Menu configuration\n */\nexport function injectMenuConfig(): NgpMenuConfig {\n return inject(NgpMenuConfigToken, { optional: true }) ?? defaultMenuConfig;\n}\n","import { ExistingProvider, inject, InjectionToken, Type } from '@angular/core';\nimport type { NgpMenu } from './menu';\n\nexport const NgpMenuToken = new InjectionToken<NgpMenu>('NgpMenuToken');\n\n/**\n * Inject the Menu directive instance\n */\nexport function injectMenu(): NgpMenu {\n return inject(NgpMenuToken);\n}\n\n/**\n * Provide the Menu directive instance\n */\nexport function provideMenu(type: Type<NgpMenu>): ExistingProvider {\n return { provide: NgpMenuToken, useExisting: type };\n}\n","import {\n createState,\n createStateInjector,\n createStateProvider,\n createStateToken,\n} from 'ng-primitives/state';\nimport type { NgpSubmenuTrigger } from './submenu-trigger';\n\n/**\n * The state token for the SubmenuTrigger primitive.\n */\nexport const NgpSubmenuTriggerStateToken = createStateToken<NgpSubmenuTrigger>('SubmenuTrigger');\n\n/**\n * Provides the SubmenuTrigger state.\n */\nexport const provideSubmenuTriggerState = createStateProvider(NgpSubmenuTriggerStateToken);\n\n/**\n * Injects the SubmenuTrigger state.\n */\nexport const injectSubmenuTriggerState = createStateInjector(NgpSubmenuTriggerStateToken);\n\n/**\n * The SubmenuTrigger state registration function.\n */\nexport const submenuTriggerState = createState(NgpSubmenuTriggerStateToken);\n","import { FocusOrigin } from '@angular/cdk/a11y';\nimport { BooleanInput, NumberInput } from '@angular/cdk/coercion';\nimport {\n booleanAttribute,\n computed,\n Directive,\n HostListener,\n inject,\n Injector,\n input,\n numberAttribute,\n signal,\n ViewContainerRef,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Placement } from '@floating-ui/dom';\nimport { injectElementRef } from 'ng-primitives/internal';\nimport {\n createOverlay,\n NgpOverlay,\n NgpOverlayConfig,\n NgpOverlayContent,\n} from 'ng-primitives/portal';\nimport { NgpMenuToken } from '../menu/menu-token';\nimport { provideSubmenuTriggerState, submenuTriggerState } from './submenu-trigger-state';\n\n@Directive({\n selector: '[ngpSubmenuTrigger]',\n exportAs: 'ngpSubmenuTrigger',\n providers: [provideSubmenuTriggerState({ inherit: false })],\n host: {\n 'aria-haspopup': 'true',\n '[attr.aria-expanded]': 'open() ? \"true\" : \"false\"',\n '[attr.data-open]': 'open() ? \"\" : null',\n '(click)': 'toggle($event)',\n },\n})\nexport class NgpSubmenuTrigger<T = unknown> {\n /**\n * Access the menu trigger element.\n */\n private readonly trigger = injectElementRef();\n\n /**\n * Access the injector.\n */\n private readonly injector = inject(Injector);\n\n /**\n * Access the view container reference.\n */\n private readonly viewContainerRef = inject(ViewContainerRef);\n\n /** Access the parent menu */\n private readonly parentMenu = inject(NgpMenuToken, { optional: true });\n\n /**\n * Access the submenu template ref.\n */\n readonly menu = input<NgpOverlayContent<T>>(undefined, {\n alias: 'ngpSubmenuTrigger',\n });\n\n /**\n * Define if the trigger should be disabled.\n * @default false\n */\n readonly disabled = input<boolean, BooleanInput>(false, {\n alias: 'ngpSubmenuTriggerDisabled',\n transform: booleanAttribute,\n });\n\n /**\n * Define the placement of the menu relative to the trigger.\n * @default 'right-start'\n */\n readonly placement = input<Placement>('right-start', {\n alias: 'ngpSubmenuTriggerPlacement',\n });\n\n /**\n * Define the offset of the menu relative to the trigger.\n * @default 0\n */\n readonly offset = input<number, NumberInput>(0, {\n alias: 'ngpSubmenuTriggerOffset',\n transform: numberAttribute,\n });\n\n /**\n * Define whether the menu should flip when there is not enough space for the menu.\n * @default true\n */\n readonly flip = input<boolean, BooleanInput>(true, {\n alias: 'ngpSubmenuTriggerFlip',\n transform: booleanAttribute,\n });\n\n /**\n * The overlay that manages the menu\n * @internal\n */\n readonly overlay = signal<NgpOverlay<T> | null>(null);\n\n /**\n * The open state of the menu.\n * @internal\n */\n readonly open = computed(() => this.overlay()?.isOpen() ?? false);\n\n /**\n * Access the menu trigger state.\n */\n readonly state = submenuTriggerState<NgpSubmenuTrigger<T>>(this);\n\n constructor() {\n this.parentMenu?.closeSubmenus.pipe(takeUntilDestroyed()).subscribe(element => {\n // if the element is not the trigger, we want to close the menu\n if (element === this.trigger.nativeElement) {\n return;\n }\n\n this.hide('mouse');\n });\n }\n\n protected toggle(event: MouseEvent): void {\n // if the trigger is disabled then do not toggle the menu\n if (this.state.disabled()) {\n return;\n }\n\n // determine the origin of the event, 0 is keyboard, 1 is mouse\n const origin: FocusOrigin = event.detail === 0 ? 'keyboard' : 'mouse';\n\n // if the menu is open then hide it\n if (this.open()) {\n this.hide(origin);\n } else {\n this.show();\n }\n }\n\n /**\n * Show the menu.\n */\n show(): void {\n // If the trigger is disabled, don't show the menu\n if (this.state.disabled()) {\n return;\n }\n\n // Create the overlay if it doesn't exist yet\n if (!this.overlay()) {\n this.createOverlay();\n }\n\n // Show the overlay\n this.overlay()?.show();\n }\n\n /**\n * @internal\n * Hide the menu.\n */\n hide(origin: FocusOrigin = 'program'): void {\n // If the trigger is disabled or the menu is not open, do nothing\n if (this.state.disabled() || !this.open()) {\n return;\n }\n\n // Hide the overlay\n this.overlay()?.hide({ origin });\n }\n\n /**\n * Create the overlay that will contain the menu\n */\n private createOverlay(): void {\n const menu = this.state.menu();\n\n if (!menu) {\n throw new Error('Menu must be either a TemplateRef or a ComponentType');\n }\n\n // Create config for the overlay\n const config: NgpOverlayConfig<T> = {\n content: menu,\n triggerElement: this.trigger.nativeElement,\n injector: this.injector,\n placement: this.state.placement(),\n offset: this.state.offset(),\n flip: this.state.flip(),\n closeOnOutsideClick: true,\n closeOnEscape: true,\n restoreFocus: true,\n viewContainerRef: this.viewContainerRef,\n };\n\n this.overlay.set(createOverlay(config));\n }\n\n /**\n * If the user presses the right arrow key, we want to open the submenu\n * and focus the first item in the submenu.\n * This behavior will be inverted if the direction is RTL.\n * @param event\n */\n @HostListener('keydown.ArrowRight', ['$event'])\n @HostListener('keydown.ArrowLeft', ['$event'])\n protected showSubmenuOnArrow(event: KeyboardEvent): void {\n const direction = getComputedStyle(this.trigger.nativeElement).direction;\n\n const isRtl = direction === 'rtl';\n\n const isRightArrow = event.key === 'ArrowRight';\n const isLeftArrow = event.key === 'ArrowLeft';\n\n if ((isRightArrow && !isRtl) || (isLeftArrow && isRtl)) {\n event.preventDefault();\n this.show();\n }\n }\n\n /**\n * If the user hovers over the trigger, we want to open the submenu\n */\n @HostListener('pointerenter', ['$event'])\n protected showSubmenuOnHover(event: PointerEvent): void {\n // if this was triggered by a touch event, we don't want to show the submenu\n // as it will be shown by the click event - this prevents the submenu from being toggled\n if (event.pointerType === 'touch') {\n return;\n }\n\n this.show();\n }\n}\n","import { FocusOrigin } from '@angular/cdk/a11y';\nimport { Directive, HostListener, inject, Injector } from '@angular/core';\nimport { NgpButton } from 'ng-primitives/button';\nimport { injectElementRef } from 'ng-primitives/internal';\nimport { NgpRovingFocusItem } from 'ng-primitives/roving-focus';\nimport { injectMenu } from '../menu/menu-token';\nimport { NgpSubmenuTrigger } from '../submenu-trigger/submenu-trigger';\n\n/**\n * The `NgpMenuItem` directive represents a menu item.\n */\n@Directive({\n selector: '[ngpMenuItem]',\n exportAs: 'ngpMenuItem',\n hostDirectives: [\n { directive: NgpButton, inputs: ['disabled: ngpMenuItemDisabled'] },\n NgpRovingFocusItem,\n ],\n host: {\n role: 'menuitem',\n '(click)': 'onClick($event)',\n '(keydown.ArrowLeft)': 'handleArrowKey($event)',\n '(keydown.ArrowRight)': 'handleArrowKey($event)',\n },\n})\nexport class NgpMenuItem {\n /** Access the injector */\n private readonly injector = inject(Injector);\n /** Access the button element */\n private readonly elementRef = injectElementRef();\n\n /** Access the parent menu */\n private readonly parentMenu = injectMenu();\n\n /** Close the menu when the item is clicked */\n protected onClick(event: MouseEvent): void {\n // we do this here to avoid circular dependency issues\n const trigger = this.injector.get(NgpSubmenuTrigger, null, { self: true, optional: true });\n\n const origin: FocusOrigin = event.detail === 0 ? 'keyboard' : 'mouse';\n\n // if this is a submenu trigger, we don't want to close the menu, we want to open the submenu\n if (!trigger) {\n this.parentMenu?.closeAllMenus(origin);\n }\n }\n\n /**\n * If the user presses the left arrow key (in LTR) and there is a parent menu,\n * we want to close the menu and focus the parent menu item.\n */\n protected handleArrowKey(event: KeyboardEvent): void {\n // if there is no parent menu, we don't want to do anything\n const trigger = this.injector.get(NgpSubmenuTrigger, null, { optional: true });\n\n if (!trigger) {\n return;\n }\n\n const direction = getComputedStyle(this.elementRef.nativeElement).direction;\n const isRtl = direction === 'rtl';\n\n const isLeftArrow = event.key === 'ArrowLeft';\n const isRightArrow = event.key === 'ArrowRight';\n\n if ((isLeftArrow && !isRtl) || (isRightArrow && isRtl)) {\n event.preventDefault();\n\n if (trigger) {\n trigger.hide('keyboard');\n }\n }\n }\n\n /**\n * If the user hovers over the trigger, we want to open the submenu\n */\n @HostListener('mouseenter')\n protected showSubmenuOnHover(): void {\n this.parentMenu?.closeSubmenus.next(this.elementRef.nativeElement);\n }\n}\n","import {\n createState,\n createStateInjector,\n createStateProvider,\n createStateToken,\n} from 'ng-primitives/state';\nimport type { NgpMenuTrigger } from './menu-trigger';\n\n/**\n * The state token for the MenuTrigger primitive.\n */\nexport const NgpMenuTriggerStateToken = createStateToken<NgpMenuTrigger>('MenuTrigger');\n\n/**\n * Provides the MenuTrigger state.\n */\nexport const provideMenuTriggerState = createStateProvider(NgpMenuTriggerStateToken);\n\n/**\n * Injects the MenuTrigger state.\n */\nexport const injectMenuTriggerState = createStateInjector(NgpMenuTriggerStateToken);\n\n/**\n * The MenuTrigger state registration function.\n */\nexport const menuTriggerState = createState(NgpMenuTriggerStateToken);\n","import { FocusOrigin } from '@angular/cdk/a11y';\nimport { BooleanInput, NumberInput } from '@angular/cdk/coercion';\nimport {\n booleanAttribute,\n computed,\n Directive,\n inject,\n Injector,\n input,\n numberAttribute,\n OnDestroy,\n signal,\n ViewContainerRef,\n} from '@angular/core';\nimport { Placement } from '@floating-ui/dom';\nimport { injectElementRef } from 'ng-primitives/internal';\nimport {\n createOverlay,\n NgpOverlay,\n NgpOverlayConfig,\n NgpOverlayContent,\n} from 'ng-primitives/portal';\nimport { injectMenuConfig } from '../config/menu-config';\nimport { menuTriggerState, provideMenuTriggerState } from './menu-trigger-state';\n\n/**\n * The `NgpMenuTrigger` directive allows you to turn an element into a menu trigger.\n */\n@Directive({\n selector: '[ngpMenuTrigger]',\n exportAs: 'ngpMenuTrigger',\n providers: [provideMenuTriggerState({ inherit: false })],\n host: {\n 'aria-haspopup': 'true',\n '[attr.aria-expanded]': 'open() ? \"true\" : \"false\"',\n '[attr.data-open]': 'open() ? \"\" : null',\n '[attr.data-placement]': 'state.placement()',\n '(click)': 'toggle($event)',\n },\n})\nexport class NgpMenuTrigger<T = unknown> implements OnDestroy {\n /**\n * Access the trigger element\n */\n private readonly trigger = injectElementRef();\n\n /**\n * Access the injector.\n */\n private readonly injector = inject(Injector);\n\n /**\n * Access the view container reference.\n */\n private readonly viewContainerRef = inject(ViewContainerRef);\n\n /**\n * Access the global menu configuration.\n */\n private readonly config = injectMenuConfig();\n\n /**\n * Access the menu template ref.\n */\n readonly menu = input<NgpOverlayContent<T>>(undefined, {\n alias: 'ngpMenuTrigger',\n });\n\n /**\n * Define if the trigger should be disabled.\n * @default false\n */\n readonly disabled = input<boolean, BooleanInput>(false, {\n alias: 'ngpMenuTriggerDisabled',\n transform: booleanAttribute,\n });\n\n /**\n * Define the placement of the menu relative to the trigger.\n * @default 'bottom-start'\n */\n readonly placement = input<Placement>(this.config.placement, {\n alias: 'ngpMenuTriggerPlacement',\n });\n\n /**\n * Define the offset of the menu relative to the trigger.\n * @default 0\n */\n readonly offset = input<number, NumberInput>(this.config.offset, {\n alias: 'ngpMenuTriggerOffset',\n transform: numberAttribute,\n });\n\n /**\n * Define whether the menu should flip when there is not enough space for the menu.\n * @default true\n */\n readonly flip = input<boolean, BooleanInput>(this.config.flip, {\n alias: 'ngpMenuTriggerFlip',\n transform: booleanAttribute,\n });\n\n /**\n * Define the container in which the menu should be attached.\n * @default document.body\n */\n readonly container = input<HTMLElement | null>(this.config.container, {\n alias: 'ngpMenuTriggerContainer',\n });\n\n /**\n * Defines how the menu behaves when the window is scrolled.\n * @default 'block'\n */\n readonly scrollBehavior = input<'reposition' | 'block'>(this.config.scrollBehavior, {\n alias: 'ngpMenuTriggerScrollBehavior',\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: 'ngpMenuTriggerContext',\n });\n\n /**\n * The overlay that manages the menu\n * @internal\n */\n readonly overlay = signal<NgpOverlay<T> | null>(null);\n\n /**\n * The open state of the menu.\n * @internal\n */\n readonly open = computed(() => this.overlay()?.isOpen() ?? false);\n\n /**\n * The menu trigger state.\n */\n readonly state = menuTriggerState<NgpMenuTrigger<T>>(this);\n\n ngOnDestroy(): void {\n this.overlay()?.destroy();\n }\n\n protected toggle(event: MouseEvent): void {\n // if the trigger is disabled then do not toggle the menu\n if (this.state.disabled()) {\n return;\n }\n\n // determine the origin of the event, 0 is keyboard, 1 is mouse\n const origin: FocusOrigin = event.detail === 0 ? 'keyboard' : 'mouse';\n\n // if the menu is open then hide it\n if (this.open()) {\n this.hide(origin);\n } else {\n this.show();\n }\n }\n\n /**\n * Show the menu.\n */\n show(): void {\n // If the trigger is disabled, don't show the menu\n if (this.state.disabled()) {\n return;\n }\n\n // Create the overlay if it doesn't exist yet\n if (!this.overlay()) {\n this.createOverlay();\n }\n\n // Show the overlay\n this.overlay()?.show();\n }\n\n /**\n * @internal\n * Hide the menu.\n */\n hide(origin: FocusOrigin = 'program'): void {\n // If the trigger is disabled or the menu is not open, do nothing\n if (this.state.disabled() || !this.open()) {\n return;\n }\n\n // Hide the overlay\n this.overlay()?.hide({ origin });\n }\n\n /**\n * Create the overlay that will contain the menu\n */\n private createOverlay(): void {\n const menu = this.state.menu();\n\n if (!menu) {\n throw new Error('Menu must be either a TemplateRef or a ComponentType');\n }\n\n // Create config for the overlay\n const config: NgpOverlayConfig<T> = {\n content: menu,\n triggerElement: this.trigger.nativeElement,\n viewContainerRef: this.viewContainerRef,\n injector: this.injector,\n context: this.state.context(),\n container: this.state.container(),\n placement: this.state.placement(),\n offset: this.state.offset(),\n flip: this.state.flip(),\n closeOnOutsideClick: true,\n closeOnEscape: true,\n restoreFocus: true,\n scrollBehaviour: this.state.scrollBehavior(),\n };\n\n this.overlay.set(createOverlay(config));\n }\n}\n","import { FocusOrigin } from '@angular/cdk/a11y';\nimport { Directive, inject } from '@angular/core';\nimport { NgpFocusTrap } from 'ng-primitives/focus-trap';\nimport { injectOverlay } from 'ng-primitives/portal';\nimport { NgpRovingFocusGroup, provideRovingFocusGroup } from 'ng-primitives/roving-focus';\nimport { Subject } from 'rxjs';\nimport { injectMenuTriggerState } from '../menu-trigger/menu-trigger-state';\nimport { NgpMenuToken, provideMenu } from './menu-token';\n\n/**\n * The `NgpMenu` is a container for menu items.\n */\n@Directive({\n selector: '[ngpMenu]',\n exportAs: 'ngpMenu',\n hostDirectives: [NgpRovingFocusGroup, NgpFocusTrap],\n providers: [\n // ensure we don't inherit the focus group from the parent menu if there is one\n provideRovingFocusGroup(NgpRovingFocusGroup, { inherit: false }),\n provideMenu(NgpMenu),\n ],\n host: {\n role: 'menu',\n '[style.left.px]': 'overlay.position().x',\n '[style.top.px]': 'overlay.position().y',\n '[style.--ngp-menu-trigger-width.px]': 'overlay.triggerWidth()',\n '[style.--ngp-menu-transform-origin]': 'overlay.transformOrigin()',\n },\n})\nexport class NgpMenu {\n /** Access the overlay. */\n protected readonly overlay = injectOverlay();\n\n /** Access the menu trigger state */\n private readonly menuTrigger = injectMenuTriggerState();\n\n /** Access any parent menus */\n private readonly parentMenu = inject(NgpMenuToken, { optional: true, skipSelf: true });\n\n /** @internal Whether we should close submenus */\n readonly closeSubmenus = new Subject<HTMLElement>();\n\n /** @internal Close the menu and any parent menus */\n closeAllMenus(origin: FocusOrigin): void {\n this.menuTrigger().hide(origin);\n this.parentMenu?.closeAllMenus(origin);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2"],"mappings":"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"}
1
+ {"version":3,"file":"ng-primitives-menu.mjs","sources":["../../../../packages/ng-primitives/menu/src/config/menu-config.ts","../../../../packages/ng-primitives/menu/src/menu/menu-token.ts","../../../../packages/ng-primitives/menu/src/submenu-trigger/submenu-trigger-state.ts","../../../../packages/ng-primitives/menu/src/submenu-trigger/submenu-trigger.ts","../../../../packages/ng-primitives/menu/src/menu-item/menu-item.ts","../../../../packages/ng-primitives/menu/src/menu-trigger/menu-trigger-state.ts","../../../../packages/ng-primitives/menu/src/menu-trigger/menu-trigger.ts","../../../../packages/ng-primitives/menu/src/menu/menu.ts","../../../../packages/ng-primitives/menu/src/ng-primitives-menu.ts"],"sourcesContent":["import { InjectionToken, Provider, inject } from '@angular/core';\nimport { Placement } from '@floating-ui/dom';\n\nexport interface NgpMenuConfig {\n /**\n * Define the offset of the menu relative to the trigger.\n * @default 4\n */\n offset: number;\n\n /**\n * Define the placement of the menu relative to the trigger.\n * @default 'bottom-start'\n */\n placement: Placement;\n\n /**\n * Define whether the menu should flip when there is not enough space for the menu.\n * @default true\n */\n flip: boolean;\n\n /**\n * Define the container in to which the menu should be attached.\n * @default document.body\n */\n container: HTMLElement | null;\n\n /**\n * Defines how the menu behaves when the window is scrolled.\n * @default scroll\n */\n scrollBehavior: 'reposition' | 'block';\n}\n\nexport const defaultMenuConfig: NgpMenuConfig = {\n offset: 4,\n placement: 'bottom-start',\n flip: true,\n container: null,\n scrollBehavior: 'block',\n};\n\nexport const NgpMenuConfigToken = new InjectionToken<NgpMenuConfig>('NgpMenuConfigToken');\n\n/**\n * Provide the default Menu configuration\n * @param config The Menu configuration\n * @returns The provider\n */\nexport function provideMenuConfig(config: Partial<NgpMenuConfig>): Provider[] {\n return [\n {\n provide: NgpMenuConfigToken,\n useValue: { ...defaultMenuConfig, ...config },\n },\n ];\n}\n\n/**\n * Inject the Menu configuration\n * @returns The global Menu configuration\n */\nexport function injectMenuConfig(): NgpMenuConfig {\n return inject(NgpMenuConfigToken, { optional: true }) ?? defaultMenuConfig;\n}\n","import { ExistingProvider, inject, InjectionToken, Type } from '@angular/core';\nimport type { NgpMenu } from './menu';\n\nexport const NgpMenuToken = new InjectionToken<NgpMenu>('NgpMenuToken');\n\n/**\n * Inject the Menu directive instance\n */\nexport function injectMenu(): NgpMenu {\n return inject(NgpMenuToken);\n}\n\n/**\n * Provide the Menu directive instance\n */\nexport function provideMenu(type: Type<NgpMenu>): ExistingProvider {\n return { provide: NgpMenuToken, useExisting: type };\n}\n","import {\n createState,\n createStateInjector,\n createStateProvider,\n createStateToken,\n} from 'ng-primitives/state';\nimport type { NgpSubmenuTrigger } from './submenu-trigger';\n\n/**\n * The state token for the SubmenuTrigger primitive.\n */\nexport const NgpSubmenuTriggerStateToken = createStateToken<NgpSubmenuTrigger>('SubmenuTrigger');\n\n/**\n * Provides the SubmenuTrigger state.\n */\nexport const provideSubmenuTriggerState = createStateProvider(NgpSubmenuTriggerStateToken);\n\n/**\n * Injects the SubmenuTrigger state.\n */\nexport const injectSubmenuTriggerState = createStateInjector<NgpSubmenuTrigger>(\n NgpSubmenuTriggerStateToken,\n);\n\n/**\n * The SubmenuTrigger state registration function.\n */\nexport const submenuTriggerState = createState(NgpSubmenuTriggerStateToken);\n","import { FocusOrigin } from '@angular/cdk/a11y';\nimport { BooleanInput, NumberInput } from '@angular/cdk/coercion';\nimport {\n booleanAttribute,\n computed,\n Directive,\n HostListener,\n inject,\n Injector,\n input,\n numberAttribute,\n signal,\n ViewContainerRef,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Placement } from '@floating-ui/dom';\nimport { injectElementRef } from 'ng-primitives/internal';\nimport {\n createOverlay,\n NgpOverlay,\n NgpOverlayConfig,\n NgpOverlayContent,\n} from 'ng-primitives/portal';\nimport { NgpMenuToken } from '../menu/menu-token';\nimport { provideSubmenuTriggerState, submenuTriggerState } from './submenu-trigger-state';\n\n@Directive({\n selector: '[ngpSubmenuTrigger]',\n exportAs: 'ngpSubmenuTrigger',\n providers: [provideSubmenuTriggerState({ inherit: false })],\n host: {\n 'aria-haspopup': 'true',\n '[attr.aria-expanded]': 'open() ? \"true\" : \"false\"',\n '[attr.data-open]': 'open() ? \"\" : null',\n '(click)': 'toggle($event)',\n },\n})\nexport class NgpSubmenuTrigger<T = unknown> {\n /**\n * Access the menu trigger element.\n */\n private readonly trigger = injectElementRef();\n\n /**\n * Access the injector.\n */\n private readonly injector = inject(Injector);\n\n /**\n * Access the view container reference.\n */\n private readonly viewContainerRef = inject(ViewContainerRef);\n\n /** Access the parent menu */\n private readonly parentMenu = inject(NgpMenuToken, { optional: true });\n\n /**\n * Access the submenu template ref.\n */\n readonly menu = input<NgpOverlayContent<T>>(undefined, {\n alias: 'ngpSubmenuTrigger',\n });\n\n /**\n * Define if the trigger should be disabled.\n * @default false\n */\n readonly disabled = input<boolean, BooleanInput>(false, {\n alias: 'ngpSubmenuTriggerDisabled',\n transform: booleanAttribute,\n });\n\n /**\n * Define the placement of the menu relative to the trigger.\n * @default 'right-start'\n */\n readonly placement = input<Placement>('right-start', {\n alias: 'ngpSubmenuTriggerPlacement',\n });\n\n /**\n * Define the offset of the menu relative to the trigger.\n * @default 0\n */\n readonly offset = input<number, NumberInput>(0, {\n alias: 'ngpSubmenuTriggerOffset',\n transform: numberAttribute,\n });\n\n /**\n * Define whether the menu should flip when there is not enough space for the menu.\n * @default true\n */\n readonly flip = input<boolean, BooleanInput>(true, {\n alias: 'ngpSubmenuTriggerFlip',\n transform: booleanAttribute,\n });\n\n /**\n * The overlay that manages the menu\n * @internal\n */\n readonly overlay = signal<NgpOverlay<T> | null>(null);\n\n /**\n * The open state of the menu.\n * @internal\n */\n readonly open = computed(() => this.overlay()?.isOpen() ?? false);\n\n /**\n * Access the menu trigger state.\n */\n readonly state = submenuTriggerState<NgpSubmenuTrigger<T>>(this);\n\n constructor() {\n this.parentMenu?.closeSubmenus.pipe(takeUntilDestroyed()).subscribe(element => {\n // if the element is not the trigger, we want to close the menu\n if (element === this.trigger.nativeElement) {\n return;\n }\n\n this.hide('mouse');\n });\n }\n\n protected toggle(event: MouseEvent): void {\n // if the trigger is disabled then do not toggle the menu\n if (this.state.disabled()) {\n return;\n }\n\n // determine the origin of the event, 0 is keyboard, 1 is mouse\n const origin: FocusOrigin = event.detail === 0 ? 'keyboard' : 'mouse';\n\n // if the menu is open then hide it\n if (this.open()) {\n this.hide(origin);\n } else {\n this.show();\n }\n }\n\n /**\n * Show the menu.\n */\n show(): void {\n // If the trigger is disabled, don't show the menu\n if (this.state.disabled()) {\n return;\n }\n\n // Create the overlay if it doesn't exist yet\n if (!this.overlay()) {\n this.createOverlay();\n }\n\n // Show the overlay\n this.overlay()?.show();\n }\n\n /**\n * @internal\n * Hide the menu.\n */\n hide(origin: FocusOrigin = 'program'): void {\n // If the trigger is disabled or the menu is not open, do nothing\n if (this.state.disabled() || !this.open()) {\n return;\n }\n\n // Hide the overlay\n this.overlay()?.hide({ origin });\n }\n\n /**\n * Create the overlay that will contain the menu\n */\n private createOverlay(): void {\n const menu = this.state.menu();\n\n if (!menu) {\n throw new Error('Menu must be either a TemplateRef or a ComponentType');\n }\n\n // Create config for the overlay\n const config: NgpOverlayConfig<T> = {\n content: menu,\n triggerElement: this.trigger.nativeElement,\n injector: this.injector,\n placement: this.state.placement(),\n offset: this.state.offset(),\n flip: this.state.flip(),\n closeOnOutsideClick: true,\n closeOnEscape: true,\n restoreFocus: true,\n viewContainerRef: this.viewContainerRef,\n };\n\n this.overlay.set(createOverlay(config));\n }\n\n /**\n * If the user presses the right arrow key, we want to open the submenu\n * and focus the first item in the submenu.\n * This behavior will be inverted if the direction is RTL.\n * @param event\n */\n @HostListener('keydown.ArrowRight', ['$event'])\n @HostListener('keydown.ArrowLeft', ['$event'])\n protected showSubmenuOnArrow(event: KeyboardEvent): void {\n const direction = getComputedStyle(this.trigger.nativeElement).direction;\n\n const isRtl = direction === 'rtl';\n\n const isRightArrow = event.key === 'ArrowRight';\n const isLeftArrow = event.key === 'ArrowLeft';\n\n if ((isRightArrow && !isRtl) || (isLeftArrow && isRtl)) {\n event.preventDefault();\n this.show();\n }\n }\n\n /**\n * If the user hovers over the trigger, we want to open the submenu\n */\n @HostListener('pointerenter', ['$event'])\n protected showSubmenuOnHover(event: PointerEvent): void {\n // if this was triggered by a touch event, we don't want to show the submenu\n // as it will be shown by the click event - this prevents the submenu from being toggled\n if (event.pointerType === 'touch') {\n return;\n }\n\n this.show();\n }\n}\n","import { FocusOrigin } from '@angular/cdk/a11y';\nimport { Directive, HostListener, inject, Injector } from '@angular/core';\nimport { NgpButton } from 'ng-primitives/button';\nimport { injectElementRef } from 'ng-primitives/internal';\nimport { NgpRovingFocusItem } from 'ng-primitives/roving-focus';\nimport { injectMenu } from '../menu/menu-token';\nimport { NgpSubmenuTrigger } from '../submenu-trigger/submenu-trigger';\n\n/**\n * The `NgpMenuItem` directive represents a menu item.\n */\n@Directive({\n selector: '[ngpMenuItem]',\n exportAs: 'ngpMenuItem',\n hostDirectives: [\n { directive: NgpButton, inputs: ['disabled: ngpMenuItemDisabled'] },\n NgpRovingFocusItem,\n ],\n host: {\n role: 'menuitem',\n '(click)': 'onClick($event)',\n '(keydown.ArrowLeft)': 'handleArrowKey($event)',\n '(keydown.ArrowRight)': 'handleArrowKey($event)',\n },\n})\nexport class NgpMenuItem {\n /** Access the injector */\n private readonly injector = inject(Injector);\n /** Access the button element */\n private readonly elementRef = injectElementRef();\n\n /** Access the parent menu */\n private readonly parentMenu = injectMenu();\n\n /** Close the menu when the item is clicked */\n protected onClick(event: MouseEvent): void {\n // we do this here to avoid circular dependency issues\n const trigger = this.injector.get(NgpSubmenuTrigger, null, { self: true, optional: true });\n\n const origin: FocusOrigin = event.detail === 0 ? 'keyboard' : 'mouse';\n\n // if this is a submenu trigger, we don't want to close the menu, we want to open the submenu\n if (!trigger) {\n this.parentMenu?.closeAllMenus(origin);\n }\n }\n\n /**\n * If the user presses the left arrow key (in LTR) and there is a parent menu,\n * we want to close the menu and focus the parent menu item.\n */\n protected handleArrowKey(event: KeyboardEvent): void {\n // if there is no parent menu, we don't want to do anything\n const trigger = this.injector.get(NgpSubmenuTrigger, null, { optional: true });\n\n if (!trigger) {\n return;\n }\n\n const direction = getComputedStyle(this.elementRef.nativeElement).direction;\n const isRtl = direction === 'rtl';\n\n const isLeftArrow = event.key === 'ArrowLeft';\n const isRightArrow = event.key === 'ArrowRight';\n\n if ((isLeftArrow && !isRtl) || (isRightArrow && isRtl)) {\n event.preventDefault();\n\n if (trigger) {\n trigger.hide('keyboard');\n }\n }\n }\n\n /**\n * If the user hovers over the trigger, we want to open the submenu\n */\n @HostListener('mouseenter')\n protected showSubmenuOnHover(): void {\n this.parentMenu?.closeSubmenus.next(this.elementRef.nativeElement);\n }\n}\n","import {\n createState,\n createStateInjector,\n createStateProvider,\n createStateToken,\n} from 'ng-primitives/state';\nimport type { NgpMenuTrigger } from './menu-trigger';\n\n/**\n * The state token for the MenuTrigger primitive.\n */\nexport const NgpMenuTriggerStateToken = createStateToken<NgpMenuTrigger>('MenuTrigger');\n\n/**\n * Provides the MenuTrigger state.\n */\nexport const provideMenuTriggerState = createStateProvider(NgpMenuTriggerStateToken);\n\n/**\n * Injects the MenuTrigger state.\n */\nexport const injectMenuTriggerState = createStateInjector<NgpMenuTrigger>(NgpMenuTriggerStateToken);\n\n/**\n * The MenuTrigger state registration function.\n */\nexport const menuTriggerState = createState(NgpMenuTriggerStateToken);\n","import { FocusOrigin } from '@angular/cdk/a11y';\nimport { BooleanInput, NumberInput } from '@angular/cdk/coercion';\nimport {\n booleanAttribute,\n computed,\n Directive,\n inject,\n Injector,\n input,\n numberAttribute,\n OnDestroy,\n signal,\n ViewContainerRef,\n} from '@angular/core';\nimport { Placement } from '@floating-ui/dom';\nimport { injectElementRef } from 'ng-primitives/internal';\nimport {\n createOverlay,\n NgpOverlay,\n NgpOverlayConfig,\n NgpOverlayContent,\n} from 'ng-primitives/portal';\nimport { injectMenuConfig } from '../config/menu-config';\nimport { menuTriggerState, provideMenuTriggerState } from './menu-trigger-state';\n\n/**\n * The `NgpMenuTrigger` directive allows you to turn an element into a menu trigger.\n */\n@Directive({\n selector: '[ngpMenuTrigger]',\n exportAs: 'ngpMenuTrigger',\n providers: [provideMenuTriggerState({ inherit: false })],\n host: {\n 'aria-haspopup': 'true',\n '[attr.aria-expanded]': 'open() ? \"true\" : \"false\"',\n '[attr.data-open]': 'open() ? \"\" : null',\n '[attr.data-placement]': 'state.placement()',\n '(click)': 'toggle($event)',\n },\n})\nexport class NgpMenuTrigger<T = unknown> implements OnDestroy {\n /**\n * Access the trigger element\n */\n private readonly trigger = injectElementRef();\n\n /**\n * Access the injector.\n */\n private readonly injector = inject(Injector);\n\n /**\n * Access the view container reference.\n */\n private readonly viewContainerRef = inject(ViewContainerRef);\n\n /**\n * Access the global menu configuration.\n */\n private readonly config = injectMenuConfig();\n\n /**\n * Access the menu template ref.\n */\n readonly menu = input<NgpOverlayContent<T>>(undefined, {\n alias: 'ngpMenuTrigger',\n });\n\n /**\n * Define if the trigger should be disabled.\n * @default false\n */\n readonly disabled = input<boolean, BooleanInput>(false, {\n alias: 'ngpMenuTriggerDisabled',\n transform: booleanAttribute,\n });\n\n /**\n * Define the placement of the menu relative to the trigger.\n * @default 'bottom-start'\n */\n readonly placement = input<Placement>(this.config.placement, {\n alias: 'ngpMenuTriggerPlacement',\n });\n\n /**\n * Define the offset of the menu relative to the trigger.\n * @default 0\n */\n readonly offset = input<number, NumberInput>(this.config.offset, {\n alias: 'ngpMenuTriggerOffset',\n transform: numberAttribute,\n });\n\n /**\n * Define whether the menu should flip when there is not enough space for the menu.\n * @default true\n */\n readonly flip = input<boolean, BooleanInput>(this.config.flip, {\n alias: 'ngpMenuTriggerFlip',\n transform: booleanAttribute,\n });\n\n /**\n * Define the container in which the menu should be attached.\n * @default document.body\n */\n readonly container = input<HTMLElement | null>(this.config.container, {\n alias: 'ngpMenuTriggerContainer',\n });\n\n /**\n * Defines how the menu behaves when the window is scrolled.\n * @default 'block'\n */\n readonly scrollBehavior = input<'reposition' | 'block'>(this.config.scrollBehavior, {\n alias: 'ngpMenuTriggerScrollBehavior',\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: 'ngpMenuTriggerContext',\n });\n\n /**\n * The overlay that manages the menu\n * @internal\n */\n readonly overlay = signal<NgpOverlay<T> | null>(null);\n\n /**\n * The open state of the menu.\n * @internal\n */\n readonly open = computed(() => this.overlay()?.isOpen() ?? false);\n\n /**\n * The menu trigger state.\n */\n readonly state = menuTriggerState<NgpMenuTrigger<T>>(this);\n\n ngOnDestroy(): void {\n this.overlay()?.destroy();\n }\n\n protected toggle(event: MouseEvent): void {\n // if the trigger is disabled then do not toggle the menu\n if (this.state.disabled()) {\n return;\n }\n\n // determine the origin of the event, 0 is keyboard, 1 is mouse\n const origin: FocusOrigin = event.detail === 0 ? 'keyboard' : 'mouse';\n\n // if the menu is open then hide it\n if (this.open()) {\n this.hide(origin);\n } else {\n this.show();\n }\n }\n\n /**\n * Show the menu.\n */\n show(): void {\n // If the trigger is disabled, don't show the menu\n if (this.state.disabled()) {\n return;\n }\n\n // Create the overlay if it doesn't exist yet\n if (!this.overlay()) {\n this.createOverlay();\n }\n\n // Show the overlay\n this.overlay()?.show();\n }\n\n /**\n * @internal\n * Hide the menu.\n */\n hide(origin: FocusOrigin = 'program'): void {\n // If the trigger is disabled or the menu is not open, do nothing\n if (this.state.disabled() || !this.open()) {\n return;\n }\n\n // Hide the overlay\n this.overlay()?.hide({ origin });\n }\n\n /**\n * Create the overlay that will contain the menu\n */\n private createOverlay(): void {\n const menu = this.state.menu();\n\n if (!menu) {\n throw new Error('Menu must be either a TemplateRef or a ComponentType');\n }\n\n // Create config for the overlay\n const config: NgpOverlayConfig<T> = {\n content: menu,\n triggerElement: this.trigger.nativeElement,\n viewContainerRef: this.viewContainerRef,\n injector: this.injector,\n context: this.state.context(),\n container: this.state.container(),\n placement: this.state.placement(),\n offset: this.state.offset(),\n flip: this.state.flip(),\n closeOnOutsideClick: true,\n closeOnEscape: true,\n restoreFocus: true,\n scrollBehaviour: this.state.scrollBehavior(),\n };\n\n this.overlay.set(createOverlay(config));\n }\n}\n","import { FocusOrigin } from '@angular/cdk/a11y';\nimport { Directive, inject } from '@angular/core';\nimport { NgpFocusTrap } from 'ng-primitives/focus-trap';\nimport { injectOverlay } from 'ng-primitives/portal';\nimport { NgpRovingFocusGroup, provideRovingFocusGroup } from 'ng-primitives/roving-focus';\nimport { Subject } from 'rxjs';\nimport { injectMenuTriggerState } from '../menu-trigger/menu-trigger-state';\nimport { NgpMenuToken, provideMenu } from './menu-token';\n\n/**\n * The `NgpMenu` is a container for menu items.\n */\n@Directive({\n selector: '[ngpMenu]',\n exportAs: 'ngpMenu',\n hostDirectives: [NgpRovingFocusGroup, NgpFocusTrap],\n providers: [\n // ensure we don't inherit the focus group from the parent menu if there is one\n provideRovingFocusGroup(NgpRovingFocusGroup, { inherit: false }),\n provideMenu(NgpMenu),\n ],\n host: {\n role: 'menu',\n '[style.left.px]': 'overlay.position().x',\n '[style.top.px]': 'overlay.position().y',\n '[style.--ngp-menu-trigger-width.px]': 'overlay.triggerWidth()',\n '[style.--ngp-menu-transform-origin]': 'overlay.transformOrigin()',\n },\n})\nexport class NgpMenu {\n /** Access the overlay. */\n protected readonly overlay = injectOverlay();\n\n /** Access the menu trigger state */\n private readonly menuTrigger = injectMenuTriggerState();\n\n /** Access any parent menus */\n private readonly parentMenu = inject(NgpMenuToken, { optional: true, skipSelf: true });\n\n /** @internal Whether we should close submenus */\n readonly closeSubmenus = new Subject<HTMLElement>();\n\n /** @internal Close the menu and any parent menus */\n closeAllMenus(origin: FocusOrigin): void {\n this.menuTrigger().hide(origin);\n this.parentMenu?.closeAllMenus(origin);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2"],"mappings":";;;;;;;;;;;;;;;AAmCO,MAAM,iBAAiB,GAAkB;AAC9C,IAAA,MAAM,EAAE,CAAC;AACT,IAAA,SAAS,EAAE,cAAc;AACzB,IAAA,IAAI,EAAE,IAAI;AACV,IAAA,SAAS,EAAE,IAAI;AACf,IAAA,cAAc,EAAE,OAAO;CACxB;AAEM,MAAM,kBAAkB,GAAG,IAAI,cAAc,CAAgB,oBAAoB,CAAC;AAEzF;;;;AAIG;AACG,SAAU,iBAAiB,CAAC,MAA8B,EAAA;IAC9D,OAAO;AACL,QAAA;AACE,YAAA,OAAO,EAAE,kBAAkB;AAC3B,YAAA,QAAQ,EAAE,EAAE,GAAG,iBAAiB,EAAE,GAAG,MAAM,EAAE;AAC9C,SAAA;KACF;AACH;AAEA;;;AAGG;SACa,gBAAgB,GAAA;AAC9B,IAAA,OAAO,MAAM,CAAC,kBAAkB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,IAAI,iBAAiB;AAC5E;;MC9Da,YAAY,GAAG,IAAI,cAAc,CAAU,cAAc;AAEtE;;AAEG;SACa,UAAU,GAAA;AACxB,IAAA,OAAO,MAAM,CAAC,YAAY,CAAC;AAC7B;AAEA;;AAEG;AACG,SAAU,WAAW,CAAC,IAAmB,EAAA;IAC7C,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,IAAI,EAAE;AACrD;;ACTA;;AAEG;AACI,MAAM,2BAA2B,GAAG,gBAAgB,CAAoB,gBAAgB,CAAC;AAEhG;;AAEG;MACU,0BAA0B,GAAG,mBAAmB,CAAC,2BAA2B;AAEzF;;AAEG;MACU,yBAAyB,GAAG,mBAAmB,CAC1D,2BAA2B;AAG7B;;AAEG;AACI,MAAM,mBAAmB,GAAG,WAAW,CAAC,2BAA2B,CAAC;;MCS9D,iBAAiB,CAAA;AA8E5B,IAAA,WAAA,GAAA;AA7EA;;AAEG;QACc,IAAO,CAAA,OAAA,GAAG,gBAAgB,EAAE;AAE7C;;AAEG;AACc,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAE5C;;AAEG;AACc,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;;QAG3C,IAAU,CAAA,UAAA,GAAG,MAAM,CAAC,YAAY,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAEtE;;AAEG;AACM,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAuB,SAAS,EAAE;AACrD,YAAA,KAAK,EAAE,mBAAmB;AAC3B,SAAA,CAAC;AAEF;;;AAGG;AACM,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAwB,KAAK,EAAE;AACtD,YAAA,KAAK,EAAE,2BAA2B;AAClC,YAAA,SAAS,EAAE,gBAAgB;AAC5B,SAAA,CAAC;AAEF;;;AAGG;AACM,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAY,aAAa,EAAE;AACnD,YAAA,KAAK,EAAE,4BAA4B;AACpC,SAAA,CAAC;AAEF;;;AAGG;AACM,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAsB,CAAC,EAAE;AAC9C,YAAA,KAAK,EAAE,yBAAyB;AAChC,YAAA,SAAS,EAAE,eAAe;AAC3B,SAAA,CAAC;AAEF;;;AAGG;AACM,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAwB,IAAI,EAAE;AACjD,YAAA,KAAK,EAAE,uBAAuB;AAC9B,YAAA,SAAS,EAAE,gBAAgB;AAC5B,SAAA,CAAC;AAEF;;;AAGG;AACM,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAuB,IAAI,CAAC;AAErD;;;AAGG;AACM,QAAA,IAAA,CAAA,IAAI,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,KAAK,CAAC;AAEjE;;AAEG;AACM,QAAA,IAAA,CAAA,KAAK,GAAG,mBAAmB,CAAuB,IAAI,CAAC;AAG9D,QAAA,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,SAAS,CAAC,OAAO,IAAG;;YAE5E,IAAI,OAAO,KAAK,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;gBAC1C;;AAGF,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;AACpB,SAAC,CAAC;;AAGM,IAAA,MAAM,CAAC,KAAiB,EAAA;;AAEhC,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE;YACzB;;;AAIF,QAAA,MAAM,MAAM,GAAgB,KAAK,CAAC,MAAM,KAAK,CAAC,GAAG,UAAU,GAAG,OAAO;;AAGrE,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE;AACf,YAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;;aACZ;YACL,IAAI,CAAC,IAAI,EAAE;;;AAIf;;AAEG;IACH,IAAI,GAAA;;AAEF,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE;YACzB;;;AAIF,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;YACnB,IAAI,CAAC,aAAa,EAAE;;;AAItB,QAAA,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE;;AAGxB;;;AAGG;IACH,IAAI,CAAC,SAAsB,SAAS,EAAA;;AAElC,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE;YACzC;;;QAIF,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;;AAGlC;;AAEG;IACK,aAAa,GAAA;QACnB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;QAE9B,IAAI,CAAC,IAAI,EAAE;AACT,YAAA,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC;;;AAIzE,QAAA,MAAM,MAAM,GAAwB;AAClC,YAAA,OAAO,EAAE,IAAI;AACb,YAAA,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa;YAC1C,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACvB,YAAA,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;AACjC,YAAA,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AAC3B,YAAA,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;AACvB,YAAA,mBAAmB,EAAE,IAAI;AACzB,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,YAAY,EAAE,IAAI;YAClB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;SACxC;QAED,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;;AAGzC;;;;;AAKG;AAGO,IAAA,kBAAkB,CAAC,KAAoB,EAAA;AAC/C,QAAA,MAAM,SAAS,GAAG,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,SAAS;AAExE,QAAA,MAAM,KAAK,GAAG,SAAS,KAAK,KAAK;AAEjC,QAAA,MAAM,YAAY,GAAG,KAAK,CAAC,GAAG,KAAK,YAAY;AAC/C,QAAA,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,KAAK,WAAW;AAE7C,QAAA,IAAI,CAAC,YAAY,IAAI,CAAC,KAAK,MAAM,WAAW,IAAI,KAAK,CAAC,EAAE;YACtD,KAAK,CAAC,cAAc,EAAE;YACtB,IAAI,CAAC,IAAI,EAAE;;;AAIf;;AAEG;AAEO,IAAA,kBAAkB,CAAC,KAAmB,EAAA;;;AAG9C,QAAA,IAAI,KAAK,CAAC,WAAW,KAAK,OAAO,EAAE;YACjC;;QAGF,IAAI,CAAC,IAAI,EAAE;;+GAtMF,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,2BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,4BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,4BAAA,EAAA,mBAAA,EAAA,4BAAA,EAAA,cAAA,EAAA,4BAAA,EAAA,EAAA,UAAA,EAAA,EAAA,oBAAA,EAAA,+BAAA,EAAA,gBAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,SAAA,EARjB,CAAC,0BAA0B,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAQhD,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAX7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,QAAQ,EAAE,mBAAmB;oBAC7B,SAAS,EAAE,CAAC,0BAA0B,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;AAC3D,oBAAA,IAAI,EAAE;AACJ,wBAAA,eAAe,EAAE,MAAM;AACvB,wBAAA,sBAAsB,EAAE,2BAA2B;AACnD,wBAAA,kBAAkB,EAAE,oBAAoB;AACxC,wBAAA,SAAS,EAAE,gBAAgB;AAC5B,qBAAA;AACF,iBAAA;wDA8KW,kBAAkB,EAAA,CAAA;sBAF3B,YAAY;uBAAC,oBAAoB,EAAE,CAAC,QAAQ,CAAC;;sBAC7C,YAAY;uBAAC,mBAAmB,EAAE,CAAC,QAAQ,CAAC;gBAmBnC,kBAAkB,EAAA,CAAA;sBAD3B,YAAY;uBAAC,cAAc,EAAE,CAAC,QAAQ,CAAC;;;AC3N1C;;AAEG;MAeU,WAAW,CAAA;AAdxB,IAAA,WAAA,GAAA;;AAgBmB,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;;QAE3B,IAAU,CAAA,UAAA,GAAG,gBAAgB,EAAE;;QAG/B,IAAU,CAAA,UAAA,GAAG,UAAU,EAAE;AAiD3C;;AA9CW,IAAA,OAAO,CAAC,KAAiB,EAAA;;QAEjC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,iBAAiB,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAE1F,QAAA,MAAM,MAAM,GAAgB,KAAK,CAAC,MAAM,KAAK,CAAC,GAAG,UAAU,GAAG,OAAO;;QAGrE,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,MAAM,CAAC;;;AAI1C;;;AAGG;AACO,IAAA,cAAc,CAAC,KAAoB,EAAA;;AAE3C,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,iBAAiB,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAE9E,IAAI,CAAC,OAAO,EAAE;YACZ;;AAGF,QAAA,MAAM,SAAS,GAAG,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,SAAS;AAC3E,QAAA,MAAM,KAAK,GAAG,SAAS,KAAK,KAAK;AAEjC,QAAA,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,KAAK,WAAW;AAC7C,QAAA,MAAM,YAAY,GAAG,KAAK,CAAC,GAAG,KAAK,YAAY;AAE/C,QAAA,IAAI,CAAC,WAAW,IAAI,CAAC,KAAK,MAAM,YAAY,IAAI,KAAK,CAAC,EAAE;YACtD,KAAK,CAAC,cAAc,EAAE;YAEtB,IAAI,OAAO,EAAE;AACX,gBAAA,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC;;;;AAK9B;;AAEG;IAEO,kBAAkB,GAAA;AAC1B,QAAA,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;;+GAtDzD,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAX,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,wBAAA,EAAA,oBAAA,EAAA,wBAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,SAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBAdvB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,cAAc,EAAE;wBACd,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,+BAA+B,CAAC,EAAE;wBACnE,kBAAkB;AACnB,qBAAA;AACD,oBAAA,IAAI,EAAE;AACJ,wBAAA,IAAI,EAAE,UAAU;AAChB,wBAAA,SAAS,EAAE,iBAAiB;AAC5B,wBAAA,qBAAqB,EAAE,wBAAwB;AAC/C,wBAAA,sBAAsB,EAAE,wBAAwB;AACjD,qBAAA;AACF,iBAAA;8BAsDW,kBAAkB,EAAA,CAAA;sBAD3B,YAAY;uBAAC,YAAY;;;ACrE5B;;AAEG;AACI,MAAM,wBAAwB,GAAG,gBAAgB,CAAiB,aAAa,CAAC;AAEvF;;AAEG;MACU,uBAAuB,GAAG,mBAAmB,CAAC,wBAAwB;AAEnF;;AAEG;MACU,sBAAsB,GAAG,mBAAmB,CAAiB,wBAAwB;AAElG;;AAEG;AACI,MAAM,gBAAgB,GAAG,WAAW,CAAC,wBAAwB,CAAC;;ACDrE;;AAEG;MAaU,cAAc,CAAA;AAZ3B,IAAA,WAAA,GAAA;AAaE;;AAEG;QACc,IAAO,CAAA,OAAA,GAAG,gBAAgB,EAAE;AAE7C;;AAEG;AACc,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAE5C;;AAEG;AACc,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAE5D;;AAEG;QACc,IAAM,CAAA,MAAA,GAAG,gBAAgB,EAAE;AAE5C;;AAEG;AACM,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAuB,SAAS,EAAE;AACrD,YAAA,KAAK,EAAE,gBAAgB;AACxB,SAAA,CAAC;AAEF;;;AAGG;AACM,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAwB,KAAK,EAAE;AACtD,YAAA,KAAK,EAAE,wBAAwB;AAC/B,YAAA,SAAS,EAAE,gBAAgB;AAC5B,SAAA,CAAC;AAEF;;;AAGG;QACM,IAAS,CAAA,SAAA,GAAG,KAAK,CAAY,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;AAC3D,YAAA,KAAK,EAAE,yBAAyB;AACjC,SAAA,CAAC;AAEF;;;AAGG;QACM,IAAM,CAAA,MAAA,GAAG,KAAK,CAAsB,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;AAC/D,YAAA,KAAK,EAAE,sBAAsB;AAC7B,YAAA,SAAS,EAAE,eAAe;AAC3B,SAAA,CAAC;AAEF;;;AAGG;QACM,IAAI,CAAA,IAAA,GAAG,KAAK,CAAwB,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;AAC7D,YAAA,KAAK,EAAE,oBAAoB;AAC3B,YAAA,SAAS,EAAE,gBAAgB;AAC5B,SAAA,CAAC;AAEF;;;AAGG;QACM,IAAS,CAAA,SAAA,GAAG,KAAK,CAAqB,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;AACpE,YAAA,KAAK,EAAE,yBAAyB;AACjC,SAAA,CAAC;AAEF;;;AAGG;QACM,IAAc,CAAA,cAAA,GAAG,KAAK,CAAyB,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE;AAClF,YAAA,KAAK,EAAE,8BAA8B;AACtC,SAAA,CAAC;AAEF;;AAEG;AACM,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAI,SAAS,EAAE;AACrC,YAAA,KAAK,EAAE,uBAAuB;AAC/B,SAAA,CAAC;AAEF;;;AAGG;AACM,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAuB,IAAI,CAAC;AAErD;;;AAGG;AACM,QAAA,IAAA,CAAA,IAAI,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,KAAK,CAAC;AAEjE;;AAEG;AACM,QAAA,IAAA,CAAA,KAAK,GAAG,gBAAgB,CAAoB,IAAI,CAAC;AAoF3D;IAlFC,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE;;AAGjB,IAAA,MAAM,CAAC,KAAiB,EAAA;;AAEhC,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE;YACzB;;;AAIF,QAAA,MAAM,MAAM,GAAgB,KAAK,CAAC,MAAM,KAAK,CAAC,GAAG,UAAU,GAAG,OAAO;;AAGrE,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE;AACf,YAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;;aACZ;YACL,IAAI,CAAC,IAAI,EAAE;;;AAIf;;AAEG;IACH,IAAI,GAAA;;AAEF,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE;YACzB;;;AAIF,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;YACnB,IAAI,CAAC,aAAa,EAAE;;;AAItB,QAAA,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE;;AAGxB;;;AAGG;IACH,IAAI,CAAC,SAAsB,SAAS,EAAA;;AAElC,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE;YACzC;;;QAIF,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;;AAGlC;;AAEG;IACK,aAAa,GAAA;QACnB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;QAE9B,IAAI,CAAC,IAAI,EAAE;AACT,YAAA,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC;;;AAIzE,QAAA,MAAM,MAAM,GAAwB;AAClC,YAAA,OAAO,EAAE,IAAI;AACb,YAAA,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa;YAC1C,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACvB,YAAA,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;AAC7B,YAAA,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;AACjC,YAAA,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;AACjC,YAAA,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AAC3B,YAAA,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;AACvB,YAAA,mBAAmB,EAAE,IAAI;AACzB,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,YAAY,EAAE,IAAI;AAClB,YAAA,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE;SAC7C;QAED,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;;+GAvL9B,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,oBAAA,EAAA,+BAAA,EAAA,gBAAA,EAAA,sBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,SAAA,EATd,CAAC,uBAAuB,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAS7C,cAAc,EAAA,UAAA,EAAA,CAAA;kBAZ1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,QAAQ,EAAE,gBAAgB;oBAC1B,SAAS,EAAE,CAAC,uBAAuB,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;AACxD,oBAAA,IAAI,EAAE;AACJ,wBAAA,eAAe,EAAE,MAAM;AACvB,wBAAA,sBAAsB,EAAE,2BAA2B;AACnD,wBAAA,kBAAkB,EAAE,oBAAoB;AACxC,wBAAA,uBAAuB,EAAE,mBAAmB;AAC5C,wBAAA,SAAS,EAAE,gBAAgB;AAC5B,qBAAA;AACF,iBAAA;;;AC9BD;;AAEG;MAkBU,OAAO,CAAA;AAjBpB,IAAA,WAAA,GAAA;;QAmBqB,IAAO,CAAA,OAAA,GAAG,aAAa,EAAE;;QAG3B,IAAW,CAAA,WAAA,GAAG,sBAAsB,EAAE;;AAGtC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,YAAY,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;AAG7E,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,OAAO,EAAe;AAOpD;;AAJC,IAAA,aAAa,CAAC,MAAmB,EAAA;QAC/B,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC;AAC/B,QAAA,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,MAAM,CAAC;;+GAhB7B,OAAO,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAP,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,OAAO,EAbP,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,sBAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,mCAAA,EAAA,wBAAA,EAAA,mCAAA,EAAA,2BAAA,EAAA,EAAA,EAAA,SAAA,EAAA;;YAET,uBAAuB,CAAC,mBAAmB,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;YAChE,WAAW,CAAC,OAAO,CAAC;AACrB,SAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAA,EAAA,CAAA,mBAAA,EAAA,EAAA,EAAA,SAAA,EAAAC,IAAA,CAAA,YAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FASU,OAAO,EAAA,UAAA,EAAA,CAAA;kBAjBnB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,WAAW;AACrB,oBAAA,QAAQ,EAAE,SAAS;AACnB,oBAAA,cAAc,EAAE,CAAC,mBAAmB,EAAE,YAAY,CAAC;AACnD,oBAAA,SAAS,EAAE;;wBAET,uBAAuB,CAAC,mBAAmB,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAChE,wBAAA,WAAW,CAAS,OAAA,CAAA;AACrB,qBAAA;AACD,oBAAA,IAAI,EAAE;AACJ,wBAAA,IAAI,EAAE,MAAM;AACZ,wBAAA,iBAAiB,EAAE,sBAAsB;AACzC,wBAAA,gBAAgB,EAAE,sBAAsB;AACxC,wBAAA,qCAAqC,EAAE,wBAAwB;AAC/D,wBAAA,qCAAqC,EAAE,2BAA2B;AACnE,qBAAA;AACF,iBAAA;;;AC5BD;;AAEG;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"ng-primitives-meter.mjs","sources":["../../../../packages/ng-primitives/meter/src/meter/meter-state.ts","../../../../packages/ng-primitives/meter/src/meter/meter.ts","../../../../packages/ng-primitives/meter/src/meter-track/meter-track.ts","../../../../packages/ng-primitives/meter/src/meter-indicator/meter-indicator.ts","../../../../packages/ng-primitives/meter/src/meter-value/meter-value.ts","../../../../packages/ng-primitives/meter/src/meter-label/meter-label.ts","../../../../packages/ng-primitives/meter/src/ng-primitives-meter.ts"],"sourcesContent":["import {\n createState,\n createStateInjector,\n createStateProvider,\n createStateToken,\n} from 'ng-primitives/state';\nimport type { NgpMeter } from './meter';\n\n/**\n * The state token for the Meter primitive.\n */\nexport const NgpMeterStateToken = createStateToken<NgpMeter>('Meter');\n\n/**\n * Provides the Meter state.\n */\nexport const provideMeterState = createStateProvider(NgpMeterStateToken);\n\n/**\n * Injects the Meter state.\n */\nexport const injectMeterState = createStateInjector(NgpMeterStateToken);\n\n/**\n * The Meter state registration function.\n */\nexport const meterState = createState(NgpMeterStateToken);\n","import { NumberInput } from '@angular/cdk/coercion';\nimport { computed, Directive, input, numberAttribute, signal } from '@angular/core';\nimport type { NgpMeterLabel } from '../meter-label/meter-label';\nimport { meterState, provideMeterState } from './meter-state';\n\n@Directive({\n selector: '[ngpMeter]',\n exportAs: 'ngpMeter',\n providers: [provideMeterState()],\n host: {\n role: 'meter',\n '[attr.aria-valuenow]': 'percentage()',\n '[attr.aria-valuemin]': 'min()',\n '[attr.aria-valuemax]': 'max()',\n '[attr.aria-valuetext]': 'valueLabel()(value(), max())',\n '[attr.aria-labelledby]': 'label()?.id()',\n },\n})\nexport class NgpMeter {\n /** The value of the meter. */\n readonly value = input<number, NumberInput>(0, {\n alias: 'ngpMeterValue',\n transform: numberAttribute,\n });\n\n /** The minimum value of the meter. */\n readonly min = input<number, NumberInput>(0, {\n alias: 'ngpMeterMin',\n transform: numberAttribute,\n });\n\n /** The maximum value of the meter. */\n readonly max = input<number, NumberInput>(100, {\n alias: 'ngpMeterMax',\n transform: numberAttribute,\n });\n\n /**\n * Define a function that returns the meter value label.\n * @param value The current value\n * @param max The maximum value\n * @returns The value label\n */\n readonly valueLabel = input<NgpMeterValueTextFn>(\n (value, max) => `${Math.round((value / max) * 100)}%`,\n {\n alias: 'ngpMeterValueLabel',\n },\n );\n\n /** @internal Store the label instance */\n readonly label = signal<NgpMeterLabel | null>(null);\n\n /** @internal The percentage of the meter. */\n readonly percentage = computed(() => {\n const value = this.state.value();\n const min = this.state.min();\n const max = this.state.max();\n\n if (value == null) {\n return 0;\n }\n\n if (value < min) {\n return 0;\n }\n\n if (value > max) {\n return 100;\n }\n\n return ((value - min) / (max - min)) * 100;\n });\n\n /** The state of the meter. */\n private readonly state = meterState<NgpMeter>(this);\n}\n\nexport type NgpMeterValueTextFn = (value: number, max: number) => string;\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[ngpMeterTrack]',\n exportAs: 'ngpMeterTrack',\n})\nexport class NgpMeterTrack {}\n","import { Directive } from '@angular/core';\nimport { injectMeterState } from '../meter/meter-state';\n\n@Directive({\n selector: '[ngpMeterIndicator]',\n exportAs: 'ngpMeterIndicator',\n host: {\n '[style.width.%]': 'meter().percentage()',\n },\n})\nexport class NgpMeterIndicator {\n /** Access the meter */\n protected readonly meter = injectMeterState();\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[ngpMeterValue]',\n exportAs: 'ngpMeterValue',\n host: {\n 'aria-hidden': 'true',\n },\n})\nexport class NgpMeterValue {}\n","import { Directive, input } from '@angular/core';\nimport { uniqueId } from 'ng-primitives/utils';\nimport { injectMeterState } from '../meter/meter-state';\n\n@Directive({\n selector: '[ngpMeterLabel]',\n exportAs: 'ngpMeterLabel',\n host: {\n '[attr.id]': 'id()',\n },\n})\nexport class NgpMeterLabel {\n /** Access the meter */\n protected readonly meter = injectMeterState();\n\n /** The id of the meter label */\n readonly id = input(uniqueId('ngp-meter-label'));\n\n constructor() {\n // Register the label with the meter\n this.meter().label.set(this);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;AAQA;;AAEG;AACI,MAAM,kBAAkB,GAAG,gBAAgB,CAAW,OAAO,CAAC;AAErE;;AAEG;MACU,iBAAiB,GAAG,mBAAmB,CAAC,kBAAkB;AAEvE;;AAEG;MACU,gBAAgB,GAAG,mBAAmB,CAAC,kBAAkB;AAEtE;;AAEG;AACI,MAAM,UAAU,GAAG,WAAW,CAAC,kBAAkB,CAAC;;MCR5C,QAAQ,CAAA;AAbrB,IAAA,WAAA,GAAA;;AAeW,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAsB,CAAC,EAAE;AAC7C,YAAA,KAAK,EAAE,eAAe;AACtB,YAAA,SAAS,EAAE,eAAe;AAC3B,SAAA,CAAC;;AAGO,QAAA,IAAA,CAAA,GAAG,GAAG,KAAK,CAAsB,CAAC,EAAE;AAC3C,YAAA,KAAK,EAAE,aAAa;AACpB,YAAA,SAAS,EAAE,eAAe;AAC3B,SAAA,CAAC;;AAGO,QAAA,IAAA,CAAA,GAAG,GAAG,KAAK,CAAsB,GAAG,EAAE;AAC7C,YAAA,KAAK,EAAE,aAAa;AACpB,YAAA,SAAS,EAAE,eAAe;AAC3B,SAAA,CAAC;AAEF;;;;;AAKG;QACM,IAAU,CAAA,UAAA,GAAG,KAAK,CACzB,CAAC,KAAK,EAAE,GAAG,KAAK,CAAG,EAAA,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,GAAG,IAAI,GAAG,CAAC,CAAA,CAAA,CAAG,EACrD;AACE,YAAA,KAAK,EAAE,oBAAoB;AAC5B,SAAA,CACF;;AAGQ,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAuB,IAAI,CAAC;;AAG1C,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;YAClC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;YAChC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE;YAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE;AAE5B,YAAA,IAAI,KAAK,IAAI,IAAI,EAAE;AACjB,gBAAA,OAAO,CAAC;;AAGV,YAAA,IAAI,KAAK,GAAG,GAAG,EAAE;AACf,gBAAA,OAAO,CAAC;;AAGV,YAAA,IAAI,KAAK,GAAG,GAAG,EAAE;AACf,gBAAA,OAAO,GAAG;;AAGZ,YAAA,OAAO,CAAC,CAAC,KAAK,GAAG,GAAG,KAAK,GAAG,GAAG,GAAG,CAAC,IAAI,GAAG;AAC5C,SAAC,CAAC;;AAGe,QAAA,IAAA,CAAA,KAAK,GAAG,UAAU,CAAW,IAAI,CAAC;AACpD;+GA1DY,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAR,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,QAAQ,EAVR,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,OAAA,EAAA,oBAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,8BAAA,EAAA,sBAAA,EAAA,eAAA,EAAA,EAAA,EAAA,SAAA,EAAA,CAAC,iBAAiB,EAAE,CAAC,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAUrB,QAAQ,EAAA,UAAA,EAAA,CAAA;kBAbpB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,YAAY;AACtB,oBAAA,QAAQ,EAAE,UAAU;AACpB,oBAAA,SAAS,EAAE,CAAC,iBAAiB,EAAE,CAAC;AAChC,oBAAA,IAAI,EAAE;AACJ,wBAAA,IAAI,EAAE,OAAO;AACb,wBAAA,sBAAsB,EAAE,cAAc;AACtC,wBAAA,sBAAsB,EAAE,OAAO;AAC/B,wBAAA,sBAAsB,EAAE,OAAO;AAC/B,wBAAA,uBAAuB,EAAE,8BAA8B;AACvD,wBAAA,wBAAwB,EAAE,eAAe;AAC1C,qBAAA;AACF,iBAAA;;;MCXY,aAAa,CAAA;+GAAb,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAb,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBAJzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,QAAQ,EAAE,eAAe;AAC1B,iBAAA;;;MCKY,iBAAiB,CAAA;AAP9B,IAAA,WAAA,GAAA;;QASqB,IAAK,CAAA,KAAA,GAAG,gBAAgB,EAAE;AAC9C;+GAHY,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAP7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,IAAI,EAAE;AACJ,wBAAA,iBAAiB,EAAE,sBAAsB;AAC1C,qBAAA;AACF,iBAAA;;;MCAY,aAAa,CAAA;+GAAb,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAb,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBAPzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,IAAI,EAAE;AACJ,wBAAA,aAAa,EAAE,MAAM;AACtB,qBAAA;AACF,iBAAA;;;MCGY,aAAa,CAAA;AAOxB,IAAA,WAAA,GAAA;;QALmB,IAAK,CAAA,KAAA,GAAG,gBAAgB,EAAE;;QAGpC,IAAE,CAAA,EAAA,GAAG,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;;QAI9C,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;;+GATnB,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAb,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBAPzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,IAAI,EAAE;AACJ,wBAAA,WAAW,EAAE,MAAM;AACpB,qBAAA;AACF,iBAAA;;;ACVD;;AAEG;;;;"}
1
+ {"version":3,"file":"ng-primitives-meter.mjs","sources":["../../../../packages/ng-primitives/meter/src/meter/meter-state.ts","../../../../packages/ng-primitives/meter/src/meter/meter.ts","../../../../packages/ng-primitives/meter/src/meter-track/meter-track.ts","../../../../packages/ng-primitives/meter/src/meter-indicator/meter-indicator.ts","../../../../packages/ng-primitives/meter/src/meter-value/meter-value.ts","../../../../packages/ng-primitives/meter/src/meter-label/meter-label.ts","../../../../packages/ng-primitives/meter/src/ng-primitives-meter.ts"],"sourcesContent":["import {\n createState,\n createStateInjector,\n createStateProvider,\n createStateToken,\n} from 'ng-primitives/state';\nimport type { NgpMeter } from './meter';\n\n/**\n * The state token for the Meter primitive.\n */\nexport const NgpMeterStateToken = createStateToken<NgpMeter>('Meter');\n\n/**\n * Provides the Meter state.\n */\nexport const provideMeterState = createStateProvider(NgpMeterStateToken);\n\n/**\n * Injects the Meter state.\n */\nexport const injectMeterState = createStateInjector<NgpMeter>(NgpMeterStateToken);\n\n/**\n * The Meter state registration function.\n */\nexport const meterState = createState(NgpMeterStateToken);\n","import { NumberInput } from '@angular/cdk/coercion';\nimport { computed, Directive, input, numberAttribute, signal } from '@angular/core';\nimport type { NgpMeterLabel } from '../meter-label/meter-label';\nimport { meterState, provideMeterState } from './meter-state';\n\n@Directive({\n selector: '[ngpMeter]',\n exportAs: 'ngpMeter',\n providers: [provideMeterState()],\n host: {\n role: 'meter',\n '[attr.aria-valuenow]': 'percentage()',\n '[attr.aria-valuemin]': 'min()',\n '[attr.aria-valuemax]': 'max()',\n '[attr.aria-valuetext]': 'valueLabel()(value(), max())',\n '[attr.aria-labelledby]': 'label()?.id()',\n },\n})\nexport class NgpMeter {\n /** The value of the meter. */\n readonly value = input<number, NumberInput>(0, {\n alias: 'ngpMeterValue',\n transform: numberAttribute,\n });\n\n /** The minimum value of the meter. */\n readonly min = input<number, NumberInput>(0, {\n alias: 'ngpMeterMin',\n transform: numberAttribute,\n });\n\n /** The maximum value of the meter. */\n readonly max = input<number, NumberInput>(100, {\n alias: 'ngpMeterMax',\n transform: numberAttribute,\n });\n\n /**\n * Define a function that returns the meter value label.\n * @param value The current value\n * @param max The maximum value\n * @returns The value label\n */\n readonly valueLabel = input<NgpMeterValueTextFn>(\n (value, max) => `${Math.round((value / max) * 100)}%`,\n {\n alias: 'ngpMeterValueLabel',\n },\n );\n\n /** @internal Store the label instance */\n readonly label = signal<NgpMeterLabel | null>(null);\n\n /** @internal The percentage of the meter. */\n readonly percentage = computed(() => {\n const value = this.state.value();\n const min = this.state.min();\n const max = this.state.max();\n\n if (value == null) {\n return 0;\n }\n\n if (value < min) {\n return 0;\n }\n\n if (value > max) {\n return 100;\n }\n\n return ((value - min) / (max - min)) * 100;\n });\n\n /** The state of the meter. */\n private readonly state = meterState<NgpMeter>(this);\n}\n\nexport type NgpMeterValueTextFn = (value: number, max: number) => string;\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[ngpMeterTrack]',\n exportAs: 'ngpMeterTrack',\n})\nexport class NgpMeterTrack {}\n","import { Directive } from '@angular/core';\nimport { injectMeterState } from '../meter/meter-state';\n\n@Directive({\n selector: '[ngpMeterIndicator]',\n exportAs: 'ngpMeterIndicator',\n host: {\n '[style.width.%]': 'meter().percentage()',\n },\n})\nexport class NgpMeterIndicator {\n /** Access the meter */\n protected readonly meter = injectMeterState();\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[ngpMeterValue]',\n exportAs: 'ngpMeterValue',\n host: {\n 'aria-hidden': 'true',\n },\n})\nexport class NgpMeterValue {}\n","import { Directive, input } from '@angular/core';\nimport { uniqueId } from 'ng-primitives/utils';\nimport { injectMeterState } from '../meter/meter-state';\n\n@Directive({\n selector: '[ngpMeterLabel]',\n exportAs: 'ngpMeterLabel',\n host: {\n '[attr.id]': 'id()',\n },\n})\nexport class NgpMeterLabel {\n /** Access the meter */\n protected readonly meter = injectMeterState();\n\n /** The id of the meter label */\n readonly id = input(uniqueId('ngp-meter-label'));\n\n constructor() {\n // Register the label with the meter\n this.meter().label.set(this);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ng-primitives-pagination.mjs","sources":["../../../../packages/ng-primitives/pagination/src/pagination/pagination-state.ts","../../../../packages/ng-primitives/pagination/src/pagination-button/pagination-button.ts","../../../../packages/ng-primitives/pagination/src/pagination-first/pagination-first.ts","../../../../packages/ng-primitives/pagination/src/pagination-last/pagination-last.ts","../../../../packages/ng-primitives/pagination/src/pagination-next/pagination-next.ts","../../../../packages/ng-primitives/pagination/src/pagination-previous/pagination-previous.ts","../../../../packages/ng-primitives/pagination/src/pagination/pagination.ts","../../../../packages/ng-primitives/pagination/src/ng-primitives-pagination.ts"],"sourcesContent":["import {\n createState,\n createStateInjector,\n createStateProvider,\n createStateToken,\n} from 'ng-primitives/state';\nimport type { NgpPagination } from './pagination';\n\n/**\n * The state token for the Pagination primitive.\n */\nexport const NgpPaginationStateToken = createStateToken<NgpPagination>('Pagination');\n\n/**\n * Provides the Pagination state.\n */\nexport const providePaginationState = createStateProvider(NgpPaginationStateToken);\n\n/**\n * Injects the Pagination state.\n */\nexport const injectPaginationState = createStateInjector(NgpPaginationStateToken);\n\n/**\n * The Pagination state registration function.\n */\nexport const paginationState = createState(NgpPaginationStateToken);\n","import { BooleanInput, NumberInput } from '@angular/cdk/coercion';\nimport {\n booleanAttribute,\n computed,\n Directive,\n HostListener,\n input,\n numberAttribute,\n} from '@angular/core';\nimport { NgpButton, syncButton } from 'ng-primitives/button';\nimport { injectPaginationState } from '../pagination/pagination-state';\n\n/**\n * The `NgpPaginationButton` directive is used to create a pagination button.\n */\n@Directive({\n selector: '[ngpPaginationButton]',\n exportAs: 'ngpPaginationButton',\n hostDirectives: [NgpButton],\n host: {\n '[tabindex]': 'disabled() ? -1 : 0',\n '[attr.data-disabled]': 'disabled() ? \"\" : null',\n '[attr.data-page]': 'page()',\n '[attr.data-selected]': 'selected() ? \"\" : null',\n '[attr.aria-current]': 'selected()',\n },\n})\nexport class NgpPaginationButton {\n /**\n * Access the pagination state.\n */\n protected readonly paginationState = injectPaginationState();\n\n /**\n * Define the page this button represents.\n */\n readonly page = input.required<number, NumberInput>({\n alias: 'ngpPaginationButtonPage',\n transform: numberAttribute,\n });\n\n /**\n * Whether the button is disabled.\n */\n readonly buttonDisabled = input<boolean, BooleanInput>(false, {\n alias: 'ngpPaginationButtonDisabled',\n transform: booleanAttribute,\n });\n\n /**\n * Whether the button is disabled.\n */\n readonly disabled = computed(() => this.buttonDisabled() || this.paginationState().disabled());\n\n /**\n * Whether this page is the currently selected page.\n */\n protected readonly selected = computed(() => this.page() === this.paginationState().page());\n\n constructor() {\n syncButton({ disabled: this.disabled });\n }\n\n /**\n * Go to the page this button represents.\n */\n @HostListener('click')\n goToPage(): void {\n if (this.disabled()) {\n return;\n }\n\n this.paginationState().goToPage(this.page());\n }\n\n /**\n * A click event may not be fired if this is on an anchor tag and the href is empty.\n * This is a workaround to ensure the click event is fired.\n */\n @HostListener('keydown.enter', ['$event'])\n @HostListener('keydown.space', ['$event'])\n protected onEnter(event: KeyboardEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this.goToPage();\n }\n}\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, computed, Directive, HostListener, input } from '@angular/core';\nimport { NgpButton, syncButton } from 'ng-primitives/button';\nimport { injectPaginationState } from '../pagination/pagination-state';\n\n/**\n * The `NgpPaginationFirst` directive is used to create a pagination button that navigates to the first page.\n */\n@Directive({\n selector: '[ngpPaginationFirst]',\n exportAs: 'ngpPaginationFirst',\n hostDirectives: [NgpButton],\n host: {\n '[tabindex]': 'disabled() ? -1 : 0',\n '[attr.data-disabled]': 'disabled() ? \"\" : null',\n '[attr.data-first-page]': 'paginationState().firstPage() ? \"\" : null',\n },\n})\nexport class NgpPaginationFirst {\n /**\n * Access the pagination state.\n */\n protected readonly paginationState = injectPaginationState();\n\n /**\n * Whether the button is disabled.\n */\n readonly buttonDisabled = input<boolean, BooleanInput>(false, {\n alias: 'ngpPaginationFirstDisabled',\n transform: booleanAttribute,\n });\n\n readonly disabled = computed(\n () =>\n this.buttonDisabled() ||\n this.paginationState().disabled() ||\n this.paginationState().firstPage(),\n );\n\n constructor() {\n syncButton({ disabled: this.disabled });\n }\n /**\n * Go to the first page.\n */\n @HostListener('click')\n goToFirstPage() {\n if (this.disabled()) {\n return;\n }\n\n this.paginationState().goToPage(1);\n }\n\n /**\n * A click event may not be fired if this is on an anchor tag and the href is empty.\n * This is a workaround to ensure the click event is fired.\n */\n @HostListener('keydown.enter', ['$event'])\n @HostListener('keydown.space', ['$event'])\n protected onEnter(event: KeyboardEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this.goToFirstPage();\n }\n}\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, computed, Directive, HostListener, input } from '@angular/core';\nimport { NgpButton, syncButton } from 'ng-primitives/button';\nimport { injectPaginationState } from '../pagination/pagination-state';\n\n/**\n * The `NgpPaginationLast` directive is used to create a pagination button that navigates to the last page.\n */\n@Directive({\n selector: '[ngpPaginationLast]',\n exportAs: 'ngpPaginationLast',\n hostDirectives: [NgpButton],\n host: {\n '[tabindex]': 'disabled() ? -1 : 0',\n '[attr.data-disabled]': 'disabled() ? \"\" : null',\n '[attr.data-last-page]': 'paginationState().lastPage() ? \"\" : null',\n },\n})\nexport class NgpPaginationLast {\n /**\n * Access the pagination state.\n */\n private readonly paginationState = injectPaginationState();\n\n /**\n * Whether the button is disabled.\n */\n readonly buttonDisabled = input<boolean, BooleanInput>(false, {\n alias: 'ngpPaginationLastDisabled',\n transform: booleanAttribute,\n });\n\n readonly disabled = computed(\n () =>\n this.buttonDisabled() ||\n this.paginationState().disabled() ||\n this.paginationState().lastPage(),\n );\n\n constructor() {\n syncButton({ disabled: this.disabled });\n }\n\n /**\n * Go to the last page.\n */\n @HostListener('click')\n goToLastPage(): void {\n if (this.disabled()) {\n return;\n }\n\n this.paginationState().goToPage(this.paginationState().pageCount());\n }\n\n /**\n * A click event may not be fired if this is on an anchor tag and the href is empty.\n * This is a workaround to ensure the click event is fired.\n */\n @HostListener('keydown.enter', ['$event'])\n @HostListener('keydown.space', ['$event'])\n protected onEnter(event: KeyboardEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this.goToLastPage();\n }\n}\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, computed, Directive, HostListener, input } from '@angular/core';\nimport { NgpButton, syncButton } from 'ng-primitives/button';\nimport { injectPaginationState } from '../pagination/pagination-state';\n\n/**\n * The `NgpPaginationNext` directive is used to create a pagination button that navigates to the next page.\n */\n@Directive({\n selector: '[ngpPaginationNext]',\n exportAs: 'ngpPaginationNext',\n hostDirectives: [NgpButton],\n host: {\n '[tabindex]': 'disabled() ? -1 : 0',\n '[attr.data-disabled]': 'disabled() ? \"\" : null',\n '[attr.data-last-page]': 'paginationState().lastPage() ? \"\" : null',\n },\n})\nexport class NgpPaginationNext {\n /**\n * Access the pagination state.\n */\n protected readonly paginationState = injectPaginationState();\n\n /**\n * Whether the button is disabled.\n */\n readonly buttonDisabled = input<boolean, BooleanInput>(false, {\n alias: 'ngpPaginationNextDisabled',\n transform: booleanAttribute,\n });\n\n /**\n * Whether the button is disabled.\n */\n readonly disabled = computed(\n () =>\n this.buttonDisabled() ||\n this.paginationState().disabled() ||\n this.paginationState().lastPage(),\n );\n\n constructor() {\n syncButton({ disabled: this.disabled });\n }\n\n /**\n * Go to the next page.\n */\n @HostListener('click')\n goToNextPage(): void {\n if (this.disabled()) {\n return;\n }\n\n this.paginationState().goToPage(this.paginationState().page() + 1);\n }\n\n /**\n * A click event may not be fired if this is on an anchor tag and the href is empty.\n * This is a workaround to ensure the click event is fired.\n */\n @HostListener('keydown.enter', ['$event'])\n @HostListener('keydown.space', ['$event'])\n protected onEnter(event: KeyboardEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this.goToNextPage();\n }\n}\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, computed, Directive, HostListener, input } from '@angular/core';\nimport { NgpButton, syncButton } from 'ng-primitives/button';\nimport { injectPaginationState } from '../pagination/pagination-state';\n\n/**\n * The `NgpPaginationPrevious` directive is used to create a pagination button that navigates to the previous page.\n */\n@Directive({\n selector: '[ngpPaginationPrevious]',\n exportAs: 'ngpPaginationPrevious',\n hostDirectives: [NgpButton],\n host: {\n '[tabindex]': 'disabled() ? -1 : 0',\n '[attr.data-disabled]': 'disabled() ? \"\" : null',\n '[attr.data-first-page]': 'paginationState().firstPage() ? \"\" : null',\n },\n})\nexport class NgpPaginationPrevious {\n /**\n * Access the pagination state.\n */\n protected readonly paginationState = injectPaginationState();\n\n /**\n * Whether the button is disabled.\n */\n readonly buttonDisabled = input<boolean, BooleanInput>(false, {\n alias: 'ngpPaginationPreviousDisabled',\n transform: booleanAttribute,\n });\n\n /**\n * Whether the button is disabled.\n */\n readonly disabled = computed(\n () =>\n this.buttonDisabled() ||\n this.paginationState().disabled() ||\n this.paginationState().firstPage(),\n );\n\n constructor() {\n syncButton({ disabled: this.disabled });\n }\n\n /**\n * Go to the previous page.\n */\n @HostListener('click')\n goToPreviousPage() {\n if (this.disabled()) {\n return;\n }\n\n this.paginationState().goToPage(this.paginationState().page() - 1);\n }\n\n /**\n * A click event may not be fired if this is on an anchor tag and the href is empty.\n * This is a workaround to ensure the click event is fired.\n */\n @HostListener('keydown.enter', ['$event'])\n @HostListener('keydown.space', ['$event'])\n protected onEnter(event: KeyboardEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this.goToPreviousPage();\n }\n}\n","import { BooleanInput, NumberInput } from '@angular/cdk/coercion';\nimport {\n booleanAttribute,\n computed,\n Directive,\n input,\n numberAttribute,\n output,\n} from '@angular/core';\nimport { paginationState, providePaginationState } from './pagination-state';\n\n/**\n * The `NgpPagination` directive is used to create a pagination control.\n */\n@Directive({\n selector: '[ngpPagination]',\n exportAs: 'ngpPagination',\n providers: [providePaginationState()],\n host: {\n role: 'navigation',\n '[attr.data-page]': 'state.page()',\n '[attr.data-page-count]': 'state.pageCount()',\n '[attr.data-first-page]': 'firstPage() ? \"\" : null',\n '[attr.data-last-page]': 'lastPage() ? \"\" : null',\n '[attr.data-disabled]': 'state.disabled() ? \"\" : null',\n },\n})\nexport class NgpPagination {\n /**\n * The currently selected page.\n */\n readonly page = input<number, NumberInput>(1, {\n alias: 'ngpPaginationPage',\n transform: numberAttribute,\n });\n\n /**\n * The event that is fired when the page changes.\n */\n readonly pageChange = output<number>({\n alias: 'ngpPaginationPageChange',\n });\n\n /**\n * The total number of pages.\n */\n readonly pageCount = input<number, NumberInput>(0, {\n alias: 'ngpPaginationPageCount',\n transform: numberAttribute,\n });\n\n /**\n * Whether the pagination is disabled.\n */\n readonly disabled = input<boolean, BooleanInput>(false, {\n alias: 'ngpPaginationDisabled',\n transform: booleanAttribute,\n });\n\n /**\n * Determine if we are on the first page.\n * @internal\n */\n readonly firstPage = computed(() => this.state.page() === 1);\n\n /**\n * Determine if we are on the last page.\n * @internal\n */\n readonly lastPage = computed(() => this.state.page() === this.state.pageCount());\n\n /**\n * The control state for the pagination.\n * @internal\n */\n private readonly state = paginationState<NgpPagination>(this);\n\n /**\n * Go to the specified page.\n * @param page The page to go to.\n */\n goToPage(page: number) {\n // check if the page is within the bounds of the pagination\n if (page < 1 || page > this.state.pageCount()) {\n return;\n }\n\n this.state.page.set(page);\n this.pageChange.emit(page);\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-pagination.mjs","sources":["../../../../packages/ng-primitives/pagination/src/pagination/pagination-state.ts","../../../../packages/ng-primitives/pagination/src/pagination-button/pagination-button.ts","../../../../packages/ng-primitives/pagination/src/pagination-first/pagination-first.ts","../../../../packages/ng-primitives/pagination/src/pagination-last/pagination-last.ts","../../../../packages/ng-primitives/pagination/src/pagination-next/pagination-next.ts","../../../../packages/ng-primitives/pagination/src/pagination-previous/pagination-previous.ts","../../../../packages/ng-primitives/pagination/src/pagination/pagination.ts","../../../../packages/ng-primitives/pagination/src/ng-primitives-pagination.ts"],"sourcesContent":["import {\n createState,\n createStateInjector,\n createStateProvider,\n createStateToken,\n} from 'ng-primitives/state';\nimport type { NgpPagination } from './pagination';\n\n/**\n * The state token for the Pagination primitive.\n */\nexport const NgpPaginationStateToken = createStateToken<NgpPagination>('Pagination');\n\n/**\n * Provides the Pagination state.\n */\nexport const providePaginationState = createStateProvider(NgpPaginationStateToken);\n\n/**\n * Injects the Pagination state.\n */\nexport const injectPaginationState = createStateInjector<NgpPagination>(NgpPaginationStateToken);\n\n/**\n * The Pagination state registration function.\n */\nexport const paginationState = createState(NgpPaginationStateToken);\n","import { BooleanInput, NumberInput } from '@angular/cdk/coercion';\nimport {\n booleanAttribute,\n computed,\n Directive,\n HostListener,\n input,\n numberAttribute,\n} from '@angular/core';\nimport { NgpButton, syncButton } from 'ng-primitives/button';\nimport { injectPaginationState } from '../pagination/pagination-state';\n\n/**\n * The `NgpPaginationButton` directive is used to create a pagination button.\n */\n@Directive({\n selector: '[ngpPaginationButton]',\n exportAs: 'ngpPaginationButton',\n hostDirectives: [NgpButton],\n host: {\n '[tabindex]': 'disabled() ? -1 : 0',\n '[attr.data-disabled]': 'disabled() ? \"\" : null',\n '[attr.data-page]': 'page()',\n '[attr.data-selected]': 'selected() ? \"\" : null',\n '[attr.aria-current]': 'selected()',\n },\n})\nexport class NgpPaginationButton {\n /**\n * Access the pagination state.\n */\n protected readonly paginationState = injectPaginationState();\n\n /**\n * Define the page this button represents.\n */\n readonly page = input.required<number, NumberInput>({\n alias: 'ngpPaginationButtonPage',\n transform: numberAttribute,\n });\n\n /**\n * Whether the button is disabled.\n */\n readonly buttonDisabled = input<boolean, BooleanInput>(false, {\n alias: 'ngpPaginationButtonDisabled',\n transform: booleanAttribute,\n });\n\n /**\n * Whether the button is disabled.\n */\n readonly disabled = computed(() => this.buttonDisabled() || this.paginationState().disabled());\n\n /**\n * Whether this page is the currently selected page.\n */\n protected readonly selected = computed(() => this.page() === this.paginationState().page());\n\n constructor() {\n syncButton({ disabled: this.disabled });\n }\n\n /**\n * Go to the page this button represents.\n */\n @HostListener('click')\n goToPage(): void {\n if (this.disabled()) {\n return;\n }\n\n this.paginationState().goToPage(this.page());\n }\n\n /**\n * A click event may not be fired if this is on an anchor tag and the href is empty.\n * This is a workaround to ensure the click event is fired.\n */\n @HostListener('keydown.enter', ['$event'])\n @HostListener('keydown.space', ['$event'])\n protected onEnter(event: KeyboardEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this.goToPage();\n }\n}\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, computed, Directive, HostListener, input } from '@angular/core';\nimport { NgpButton, syncButton } from 'ng-primitives/button';\nimport { injectPaginationState } from '../pagination/pagination-state';\n\n/**\n * The `NgpPaginationFirst` directive is used to create a pagination button that navigates to the first page.\n */\n@Directive({\n selector: '[ngpPaginationFirst]',\n exportAs: 'ngpPaginationFirst',\n hostDirectives: [NgpButton],\n host: {\n '[tabindex]': 'disabled() ? -1 : 0',\n '[attr.data-disabled]': 'disabled() ? \"\" : null',\n '[attr.data-first-page]': 'paginationState().firstPage() ? \"\" : null',\n },\n})\nexport class NgpPaginationFirst {\n /**\n * Access the pagination state.\n */\n protected readonly paginationState = injectPaginationState();\n\n /**\n * Whether the button is disabled.\n */\n readonly buttonDisabled = input<boolean, BooleanInput>(false, {\n alias: 'ngpPaginationFirstDisabled',\n transform: booleanAttribute,\n });\n\n readonly disabled = computed(\n () =>\n this.buttonDisabled() ||\n this.paginationState().disabled() ||\n this.paginationState().firstPage(),\n );\n\n constructor() {\n syncButton({ disabled: this.disabled });\n }\n /**\n * Go to the first page.\n */\n @HostListener('click')\n goToFirstPage() {\n if (this.disabled()) {\n return;\n }\n\n this.paginationState().goToPage(1);\n }\n\n /**\n * A click event may not be fired if this is on an anchor tag and the href is empty.\n * This is a workaround to ensure the click event is fired.\n */\n @HostListener('keydown.enter', ['$event'])\n @HostListener('keydown.space', ['$event'])\n protected onEnter(event: KeyboardEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this.goToFirstPage();\n }\n}\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, computed, Directive, HostListener, input } from '@angular/core';\nimport { NgpButton, syncButton } from 'ng-primitives/button';\nimport { injectPaginationState } from '../pagination/pagination-state';\n\n/**\n * The `NgpPaginationLast` directive is used to create a pagination button that navigates to the last page.\n */\n@Directive({\n selector: '[ngpPaginationLast]',\n exportAs: 'ngpPaginationLast',\n hostDirectives: [NgpButton],\n host: {\n '[tabindex]': 'disabled() ? -1 : 0',\n '[attr.data-disabled]': 'disabled() ? \"\" : null',\n '[attr.data-last-page]': 'paginationState().lastPage() ? \"\" : null',\n },\n})\nexport class NgpPaginationLast {\n /**\n * Access the pagination state.\n */\n private readonly paginationState = injectPaginationState();\n\n /**\n * Whether the button is disabled.\n */\n readonly buttonDisabled = input<boolean, BooleanInput>(false, {\n alias: 'ngpPaginationLastDisabled',\n transform: booleanAttribute,\n });\n\n readonly disabled = computed(\n () =>\n this.buttonDisabled() ||\n this.paginationState().disabled() ||\n this.paginationState().lastPage(),\n );\n\n constructor() {\n syncButton({ disabled: this.disabled });\n }\n\n /**\n * Go to the last page.\n */\n @HostListener('click')\n goToLastPage(): void {\n if (this.disabled()) {\n return;\n }\n\n this.paginationState().goToPage(this.paginationState().pageCount());\n }\n\n /**\n * A click event may not be fired if this is on an anchor tag and the href is empty.\n * This is a workaround to ensure the click event is fired.\n */\n @HostListener('keydown.enter', ['$event'])\n @HostListener('keydown.space', ['$event'])\n protected onEnter(event: KeyboardEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this.goToLastPage();\n }\n}\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, computed, Directive, HostListener, input } from '@angular/core';\nimport { NgpButton, syncButton } from 'ng-primitives/button';\nimport { injectPaginationState } from '../pagination/pagination-state';\n\n/**\n * The `NgpPaginationNext` directive is used to create a pagination button that navigates to the next page.\n */\n@Directive({\n selector: '[ngpPaginationNext]',\n exportAs: 'ngpPaginationNext',\n hostDirectives: [NgpButton],\n host: {\n '[tabindex]': 'disabled() ? -1 : 0',\n '[attr.data-disabled]': 'disabled() ? \"\" : null',\n '[attr.data-last-page]': 'paginationState().lastPage() ? \"\" : null',\n },\n})\nexport class NgpPaginationNext {\n /**\n * Access the pagination state.\n */\n protected readonly paginationState = injectPaginationState();\n\n /**\n * Whether the button is disabled.\n */\n readonly buttonDisabled = input<boolean, BooleanInput>(false, {\n alias: 'ngpPaginationNextDisabled',\n transform: booleanAttribute,\n });\n\n /**\n * Whether the button is disabled.\n */\n readonly disabled = computed(\n () =>\n this.buttonDisabled() ||\n this.paginationState().disabled() ||\n this.paginationState().lastPage(),\n );\n\n constructor() {\n syncButton({ disabled: this.disabled });\n }\n\n /**\n * Go to the next page.\n */\n @HostListener('click')\n goToNextPage(): void {\n if (this.disabled()) {\n return;\n }\n\n this.paginationState().goToPage(this.paginationState().page() + 1);\n }\n\n /**\n * A click event may not be fired if this is on an anchor tag and the href is empty.\n * This is a workaround to ensure the click event is fired.\n */\n @HostListener('keydown.enter', ['$event'])\n @HostListener('keydown.space', ['$event'])\n protected onEnter(event: KeyboardEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this.goToNextPage();\n }\n}\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, computed, Directive, HostListener, input } from '@angular/core';\nimport { NgpButton, syncButton } from 'ng-primitives/button';\nimport { injectPaginationState } from '../pagination/pagination-state';\n\n/**\n * The `NgpPaginationPrevious` directive is used to create a pagination button that navigates to the previous page.\n */\n@Directive({\n selector: '[ngpPaginationPrevious]',\n exportAs: 'ngpPaginationPrevious',\n hostDirectives: [NgpButton],\n host: {\n '[tabindex]': 'disabled() ? -1 : 0',\n '[attr.data-disabled]': 'disabled() ? \"\" : null',\n '[attr.data-first-page]': 'paginationState().firstPage() ? \"\" : null',\n },\n})\nexport class NgpPaginationPrevious {\n /**\n * Access the pagination state.\n */\n protected readonly paginationState = injectPaginationState();\n\n /**\n * Whether the button is disabled.\n */\n readonly buttonDisabled = input<boolean, BooleanInput>(false, {\n alias: 'ngpPaginationPreviousDisabled',\n transform: booleanAttribute,\n });\n\n /**\n * Whether the button is disabled.\n */\n readonly disabled = computed(\n () =>\n this.buttonDisabled() ||\n this.paginationState().disabled() ||\n this.paginationState().firstPage(),\n );\n\n constructor() {\n syncButton({ disabled: this.disabled });\n }\n\n /**\n * Go to the previous page.\n */\n @HostListener('click')\n goToPreviousPage() {\n if (this.disabled()) {\n return;\n }\n\n this.paginationState().goToPage(this.paginationState().page() - 1);\n }\n\n /**\n * A click event may not be fired if this is on an anchor tag and the href is empty.\n * This is a workaround to ensure the click event is fired.\n */\n @HostListener('keydown.enter', ['$event'])\n @HostListener('keydown.space', ['$event'])\n protected onEnter(event: KeyboardEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this.goToPreviousPage();\n }\n}\n","import { BooleanInput, NumberInput } from '@angular/cdk/coercion';\nimport {\n booleanAttribute,\n computed,\n Directive,\n input,\n numberAttribute,\n output,\n} from '@angular/core';\nimport { paginationState, providePaginationState } from './pagination-state';\n\n/**\n * The `NgpPagination` directive is used to create a pagination control.\n */\n@Directive({\n selector: '[ngpPagination]',\n exportAs: 'ngpPagination',\n providers: [providePaginationState()],\n host: {\n role: 'navigation',\n '[attr.data-page]': 'state.page()',\n '[attr.data-page-count]': 'state.pageCount()',\n '[attr.data-first-page]': 'firstPage() ? \"\" : null',\n '[attr.data-last-page]': 'lastPage() ? \"\" : null',\n '[attr.data-disabled]': 'state.disabled() ? \"\" : null',\n },\n})\nexport class NgpPagination {\n /**\n * The currently selected page.\n */\n readonly page = input<number, NumberInput>(1, {\n alias: 'ngpPaginationPage',\n transform: numberAttribute,\n });\n\n /**\n * The event that is fired when the page changes.\n */\n readonly pageChange = output<number>({\n alias: 'ngpPaginationPageChange',\n });\n\n /**\n * The total number of pages.\n */\n readonly pageCount = input<number, NumberInput>(0, {\n alias: 'ngpPaginationPageCount',\n transform: numberAttribute,\n });\n\n /**\n * Whether the pagination is disabled.\n */\n readonly disabled = input<boolean, BooleanInput>(false, {\n alias: 'ngpPaginationDisabled',\n transform: booleanAttribute,\n });\n\n /**\n * Determine if we are on the first page.\n * @internal\n */\n readonly firstPage = computed(() => this.state.page() === 1);\n\n /**\n * Determine if we are on the last page.\n * @internal\n */\n readonly lastPage = computed(() => this.state.page() === this.state.pageCount());\n\n /**\n * The control state for the pagination.\n * @internal\n */\n private readonly state = paginationState<NgpPagination>(this);\n\n /**\n * Go to the specified page.\n * @param page The page to go to.\n */\n goToPage(page: number) {\n // check if the page is within the bounds of the pagination\n if (page < 1 || page > this.state.pageCount()) {\n return;\n }\n\n this.state.page.set(page);\n this.pageChange.emit(page);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}