ng-primitives 0.123.1 → 0.125.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/date-time-date-fns/README.md +3 -0
- package/fesm2022/ng-primitives-avatar.mjs +4 -2
- package/fesm2022/ng-primitives-avatar.mjs.map +1 -1
- package/fesm2022/ng-primitives-checkbox.mjs +4 -2
- package/fesm2022/ng-primitives-checkbox.mjs.map +1 -1
- package/fesm2022/ng-primitives-date-picker.mjs +42 -44
- package/fesm2022/ng-primitives-date-picker.mjs.map +1 -1
- package/fesm2022/ng-primitives-date-time-date-fns.mjs +95 -0
- package/fesm2022/ng-primitives-date-time-date-fns.mjs.map +1 -0
- package/fesm2022/ng-primitives-date-time-luxon.mjs +21 -3
- package/fesm2022/ng-primitives-date-time-luxon.mjs.map +1 -1
- package/fesm2022/ng-primitives-date-time.mjs +18 -3
- package/fesm2022/ng-primitives-date-time.mjs.map +1 -1
- package/fesm2022/ng-primitives-dialog.mjs +11 -4
- package/fesm2022/ng-primitives-dialog.mjs.map +1 -1
- package/fesm2022/ng-primitives-form-field.mjs +3 -0
- package/fesm2022/ng-primitives-form-field.mjs.map +1 -1
- package/fesm2022/ng-primitives-input-otp.mjs +15 -7
- package/fesm2022/ng-primitives-input-otp.mjs.map +1 -1
- package/fesm2022/ng-primitives-listbox.mjs +5 -4
- package/fesm2022/ng-primitives-listbox.mjs.map +1 -1
- package/fesm2022/ng-primitives-menu.mjs +8 -0
- package/fesm2022/ng-primitives-menu.mjs.map +1 -1
- package/fesm2022/ng-primitives-meter.mjs +20 -5
- package/fesm2022/ng-primitives-meter.mjs.map +1 -1
- package/fesm2022/ng-primitives-number-field.mjs +10 -0
- package/fesm2022/ng-primitives-number-field.mjs.map +1 -1
- package/fesm2022/ng-primitives-pagination.mjs +41 -21
- package/fesm2022/ng-primitives-pagination.mjs.map +1 -1
- package/fesm2022/ng-primitives-popover.mjs +4 -0
- package/fesm2022/ng-primitives-popover.mjs.map +1 -1
- package/fesm2022/ng-primitives-progress.mjs +36 -11
- package/fesm2022/ng-primitives-progress.mjs.map +1 -1
- package/fesm2022/ng-primitives-radio.mjs +135 -129
- package/fesm2022/ng-primitives-radio.mjs.map +1 -1
- package/fesm2022/ng-primitives-roving-focus.mjs +13 -2
- package/fesm2022/ng-primitives-roving-focus.mjs.map +1 -1
- package/fesm2022/ng-primitives-search.mjs +2 -1
- package/fesm2022/ng-primitives-search.mjs.map +1 -1
- package/fesm2022/ng-primitives-slider.mjs +38 -18
- package/fesm2022/ng-primitives-slider.mjs.map +1 -1
- package/fesm2022/ng-primitives-switch.mjs +18 -8
- package/fesm2022/ng-primitives-switch.mjs.map +1 -1
- package/fesm2022/ng-primitives-tabs.mjs +22 -6
- package/fesm2022/ng-primitives-tabs.mjs.map +1 -1
- package/fesm2022/ng-primitives-textarea.mjs +10 -8
- package/fesm2022/ng-primitives-textarea.mjs.map +1 -1
- package/fesm2022/ng-primitives-toast.mjs +3 -0
- package/fesm2022/ng-primitives-toast.mjs.map +1 -1
- package/fesm2022/ng-primitives-toggle-group.mjs +40 -15
- package/fesm2022/ng-primitives-toggle-group.mjs.map +1 -1
- package/package.json +8 -1
- package/schematics/ng-generate/templates/checkbox/checkbox.__fileSuffix@dasherize__.ts.template +2 -1
- package/schematics/ng-generate/templates/combobox/combobox.__fileSuffix@dasherize__.ts.template +3 -2
- package/schematics/ng-generate/templates/date-picker/date-picker.__fileSuffix@dasherize__.ts.template +2 -1
- package/schematics/ng-generate/templates/listbox/listbox.__fileSuffix@dasherize__.ts.template +9 -4
- package/schematics/ng-generate/templates/pagination/pagination.__fileSuffix@dasherize__.ts.template +7 -1
- package/schematics/ng-generate/templates/radio/radio-group.__fileSuffix@dasherize__.ts.template +16 -4
- package/schematics/ng-generate/templates/range-slider/range-slider.__fileSuffix@dasherize__.ts.template +4 -3
- package/schematics/ng-generate/templates/slider/slider.__fileSuffix@dasherize__.ts.template +2 -1
- package/schematics/ng-generate/templates/switch/switch.__fileSuffix@dasherize__.ts.template +2 -1
- package/types/ng-primitives-checkbox.d.ts +5 -1
- package/types/ng-primitives-date-picker.d.ts +7 -9
- package/types/ng-primitives-date-time-date-fns.d.ts +30 -0
- package/types/ng-primitives-date-time.d.ts +15 -3
- package/types/ng-primitives-dialog.d.ts +4 -0
- package/types/ng-primitives-input-otp.d.ts +5 -5
- package/types/ng-primitives-meter.d.ts +9 -2
- package/types/ng-primitives-pagination.d.ts +34 -8
- package/types/ng-primitives-progress.d.ts +4 -2
- package/types/ng-primitives-radio.d.ts +147 -52
- package/types/ng-primitives-roving-focus.d.ts +7 -0
- package/types/ng-primitives-slider.d.ts +5 -4
- package/types/ng-primitives-switch.d.ts +14 -4
- package/types/ng-primitives-tabs.d.ts +6 -1
- package/types/ng-primitives-toggle-group.d.ts +55 -42
|
@@ -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-state.ts","../../../../packages/ng-primitives/pagination/src/pagination-button/pagination-button.ts","../../../../packages/ng-primitives/pagination/src/pagination-first/pagination-first-state.ts","../../../../packages/ng-primitives/pagination/src/pagination-first/pagination-first.ts","../../../../packages/ng-primitives/pagination/src/pagination-last/pagination-last-state.ts","../../../../packages/ng-primitives/pagination/src/pagination-last/pagination-last.ts","../../../../packages/ng-primitives/pagination/src/pagination-next/pagination-next-state.ts","../../../../packages/ng-primitives/pagination/src/pagination-next/pagination-next.ts","../../../../packages/ng-primitives/pagination/src/pagination-previous/pagination-previous-state.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 { computed, signal, Signal, WritableSignal } from '@angular/core';\nimport { injectElementRef } from 'ng-primitives/internal';\nimport {\n attrBinding,\n controlledState,\n createPrimitive,\n dataBinding,\n deprecatedSetter,\n} from 'ng-primitives/state';\nimport { Observable } from 'rxjs';\n\nexport interface NgpPaginationState {\n /**\n * The currently selected page.\n */\n readonly page: WritableSignal<number>;\n /**\n * The total number of pages.\n */\n readonly pageCount: Signal<number>;\n /**\n * Whether the pagination is disabled.\n */\n readonly disabled: Signal<boolean>;\n /**\n * Determine if we are on the first page.\n * @internal\n */\n readonly firstPage: Signal<boolean>;\n /**\n * Determine if we are on the last page.\n * @internal\n */\n readonly lastPage: Signal<boolean>;\n /**\n * The event that is fired when the page changes.\n */\n readonly pageChange: Observable<number>;\n /**\n * Go to the specified page.\n * @param page The page to go to.\n */\n goToPage: (page: number) => void;\n}\n\nexport interface NgpPaginationProps {\n /**\n * The currently selected page. When `undefined`, the pagination is uncontrolled\n * and seeds from `defaultPage`.\n */\n readonly page?: Signal<number | undefined>;\n /**\n * The default page for uncontrolled usage.\n */\n readonly defaultPage?: Signal<number>;\n /**\n * The total number of pages.\n */\n readonly pageCount?: Signal<number>;\n /**\n * Whether the pagination is disabled.\n */\n readonly disabled?: Signal<boolean>;\n /** Callback fired when the page state changes. */\n onPageChange: (page: number) => void;\n}\n\nexport const [\n NgpPaginationStateToken,\n ngpPagination,\n injectPaginationState,\n providePaginationState,\n] = createPrimitive(\n 'NgpPagination',\n ({\n page: _page = signal<number | undefined>(undefined),\n defaultPage: _defaultPage = signal<number>(1),\n pageCount: _pageCount = signal<number>(0),\n disabled: _disabled = signal<boolean>(false),\n onPageChange,\n }: NgpPaginationProps) => {\n const elementRef = injectElementRef();\n\n const [page, setPage, pageChange] = controlledState({\n value: _page,\n defaultValue: _defaultPage,\n onChange: onPageChange,\n });\n\n const firstPage = computed(() => page() === 1);\n const lastPage = computed(() => page() === _pageCount());\n\n // Host bindings\n attrBinding(elementRef, 'role', 'navigation');\n dataBinding(elementRef, 'data-page', () => page().toString());\n dataBinding(elementRef, 'data-page-count', () => _pageCount().toString());\n dataBinding(elementRef, 'data-first-page', () => (firstPage() ? '' : null));\n dataBinding(elementRef, 'data-last-page', () => (lastPage() ? '' : null));\n dataBinding(elementRef, 'data-disabled', () => (_disabled() ? '' : null));\n\n function goToPage(page: number) {\n // check if the page is within the bounds of the pagination\n if (page < 1 || page > _pageCount()) {\n return;\n }\n\n setPage(page);\n }\n\n return {\n page: deprecatedSetter(page, 'setPage', setPage),\n pageCount: _pageCount,\n pageChange,\n disabled: _disabled,\n firstPage,\n lastPage,\n goToPage,\n } satisfies NgpPaginationState;\n },\n);\n","import { computed, signal, Signal } from '@angular/core';\nimport { ngpButton } from 'ng-primitives/button';\nimport { injectElementRef } from 'ng-primitives/internal';\nimport { attrBinding, createPrimitive, dataBinding, listener } from 'ng-primitives/state';\nimport { injectPaginationState } from '../pagination/pagination-state';\n\nexport interface NgpPaginationButtonState {\n /**\n * Define the page this button represents.\n */\n readonly page: Signal<number>;\n /**\n * Whether the button is disabled, accounting for the parent pagination state.\n */\n readonly disabled: Signal<boolean>;\n /**\n * Go to the page this button represents.\n */\n goToPage(): void;\n}\n\nexport interface NgpPaginationButtonProps {\n /**\n * Define the page this button represents.\n */\n readonly page?: Signal<number>;\n /**\n * Whether the button is disabled.\n */\n readonly disabled?: Signal<boolean>;\n}\n\nexport const [\n NgpPaginationButtonStateToken,\n ngpPaginationButton,\n injectPaginationButtonState,\n providePaginationButtonState,\n] = createPrimitive(\n 'NgpPaginationButton',\n ({\n page = signal<number>(-1),\n disabled: _disabled = signal<boolean>(false),\n }: NgpPaginationButtonProps) => {\n const elementRef = injectElementRef();\n const paginationState = injectPaginationState();\n\n const selected = computed(() => page() === paginationState().page());\n const disabled = computed(() => _disabled() || paginationState().disabled());\n\n // Setup interactions\n ngpButton({ disabled: disabled });\n\n // Host binding\n attrBinding(elementRef, 'tabindex', () => (disabled() ? -1 : 0));\n attrBinding(elementRef, 'aria-current', selected);\n dataBinding(elementRef, 'data-page', () => page().toString());\n dataBinding(elementRef, 'data-selected', () => (selected() ? '' : null));\n\n // Listeners\n listener(elementRef, 'click', goToPage);\n listener(elementRef, 'keydown.space', handleOnEnter);\n listener(elementRef, 'keydown.enter', handleOnEnter);\n\n function goToPage(): void {\n if (disabled()) {\n return;\n }\n\n paginationState().goToPage(page());\n }\n\n function handleOnEnter(event: Event): void {\n event.preventDefault();\n event.stopPropagation();\n goToPage();\n }\n\n return {\n page,\n disabled,\n goToPage,\n } satisfies NgpPaginationButtonState;\n },\n);\n","import { BooleanInput, NumberInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, Directive, input, numberAttribute } from '@angular/core';\nimport { ngpPaginationButton } from './pagination-button-state';\n\n/**\n * The `NgpPaginationButton` directive is used to create a pagination button.\n */\n@Directive({\n selector: '[ngpPaginationButton]',\n exportAs: 'ngpPaginationButton',\n})\nexport class NgpPaginationButton {\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 disabled = input<boolean, BooleanInput>(false, {\n alias: 'ngpPaginationButtonDisabled',\n transform: booleanAttribute,\n });\n\n protected readonly state = ngpPaginationButton({\n page: this.page,\n disabled: this.disabled,\n });\n\n /**\n * Go to the page this button represents.\n */\n goToPage(): void {\n return this.state.goToPage();\n }\n}\n","import { computed, signal, Signal } from '@angular/core';\nimport { ngpButton } from 'ng-primitives/button';\nimport { injectElementRef } from 'ng-primitives/internal';\nimport { attrBinding, createPrimitive, dataBinding, listener } from 'ng-primitives/state';\nimport { injectPaginationState } from '../pagination/pagination-state';\n\nexport interface NgpPaginationFirstState {\n /**\n * Whether the button is disabled, accounting for the parent pagination state.\n */\n readonly disabled: Signal<boolean>;\n /**\n * Go to the first page.\n */\n goToFirstPage(): void;\n}\n\nexport interface NgpPaginationFirstProps {\n /**\n * Whether the button is disabled.\n */\n readonly disabled?: Signal<boolean>;\n}\n\nexport const [\n NgpPaginationFirstStateToken,\n ngpPaginationFirst,\n injectPaginationFirstState,\n providePaginationFirstState,\n] = createPrimitive(\n 'NgpPaginationFirst',\n ({ disabled: _disabled = signal<boolean>(false) }: NgpPaginationFirstProps) => {\n const elementRef = injectElementRef();\n const paginationState = injectPaginationState();\n\n const disabled = computed(\n () => _disabled() || paginationState().disabled() || paginationState().firstPage(),\n );\n\n // Setup interactions\n ngpButton({ disabled: disabled });\n\n // Host binding\n attrBinding(elementRef, 'tabindex', () => (disabled() ? -1 : 0));\n dataBinding(elementRef, 'data-first-page', () => (paginationState().firstPage() ? '' : null));\n\n // Listener\n listener(elementRef, 'click', goToFirstPage);\n listener(elementRef, 'keydown.enter', handleOnEnter);\n listener(elementRef, 'keydown.space', handleOnEnter);\n\n function goToFirstPage(): void {\n if (disabled()) {\n return;\n }\n\n paginationState().goToPage(1);\n }\n\n function handleOnEnter(event: Event): void {\n event.preventDefault();\n event.stopPropagation();\n goToFirstPage();\n }\n\n return {\n disabled,\n goToFirstPage,\n } satisfies NgpPaginationFirstState;\n },\n);\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, Directive, input } from '@angular/core';\nimport { ngpPaginationFirst } from './pagination-first-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})\nexport class NgpPaginationFirst {\n /**\n * Whether the button is disabled.\n */\n readonly disabled = input<boolean, BooleanInput>(false, {\n alias: 'ngpPaginationFirstDisabled',\n transform: booleanAttribute,\n });\n\n protected readonly state = ngpPaginationFirst({\n disabled: this.disabled,\n });\n\n /**\n * Go to the first page.\n */\n goToFirstPage() {\n return this.state.goToFirstPage();\n }\n}\n","import { computed, signal, Signal } from '@angular/core';\nimport { ngpButton } from 'ng-primitives/button';\nimport { injectElementRef } from 'ng-primitives/internal';\nimport { attrBinding, createPrimitive, dataBinding, listener } from 'ng-primitives/state';\nimport { injectPaginationState } from '../pagination/pagination-state';\n\nexport interface NgpPaginationLastState {\n /** Whether the button is disabled, accounting for the parent pagination state. */\n readonly disabled: Signal<boolean>;\n /** Go to the last page. */\n goToLastPage(): void;\n}\n\nexport interface NgpPaginationLastProps {\n /** Whether the button is disabled. */\n readonly disabled?: Signal<boolean>;\n}\n\nexport const [\n NgpPaginationLastStateToken,\n ngpPaginationLast,\n injectPaginationLastState,\n providePaginationLastState,\n] = createPrimitive(\n 'NgpPaginationLast',\n ({ disabled: _disabled = signal<boolean>(false) }: NgpPaginationLastProps) => {\n const elementRef = injectElementRef();\n const paginationState = injectPaginationState();\n\n const disabled = computed(\n () => _disabled() || paginationState().disabled() || paginationState().lastPage(),\n );\n\n // Setup interactions\n ngpButton({ disabled: disabled });\n\n // Host binding\n attrBinding(elementRef, 'tabindex', () => (disabled() ? -1 : 0));\n dataBinding(elementRef, 'data-last-page', () => (paginationState().lastPage() ? '' : null));\n\n // Listener\n listener(elementRef, 'click', goToLastPage);\n listener(elementRef, 'keydown.enter', handleOnEnter);\n listener(elementRef, 'keydown.space', handleOnEnter);\n\n function goToLastPage(): void {\n if (disabled()) {\n return;\n }\n\n paginationState().goToPage(paginationState().pageCount());\n }\n\n function handleOnEnter(event: Event): void {\n event.preventDefault();\n event.stopPropagation();\n goToLastPage();\n }\n\n return {\n disabled,\n goToLastPage,\n } satisfies NgpPaginationLastState;\n },\n);\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, Directive, input } from '@angular/core';\nimport { ngpPaginationLast } from './pagination-last-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})\nexport class NgpPaginationLast {\n /**\n * Whether the button is disabled.\n */\n readonly disabled = input<boolean, BooleanInput>(false, {\n alias: 'ngpPaginationLastDisabled',\n transform: booleanAttribute,\n });\n\n protected readonly state = ngpPaginationLast({\n disabled: this.disabled,\n });\n\n /**\n * Go to the last page.\n */\n goToLastPage(): void {\n this.state.goToLastPage();\n }\n}\n","import { computed, Signal, signal } from '@angular/core';\nimport { ngpButton } from 'ng-primitives/button';\nimport { injectElementRef } from 'ng-primitives/internal';\nimport { attrBinding, createPrimitive, dataBinding, listener } from 'ng-primitives/state';\nimport { injectPaginationState } from '../pagination/pagination-state';\n\nexport interface NgpPaginationNextState {\n /** Whether the button is disabled, accounting for the parent pagination state. */\n readonly disabled: Signal<boolean>;\n /** Go to the next page. */\n goToNextPage(): void;\n}\n\nexport interface NgpPaginationNextProps {\n /** Whether the button is disabled */\n readonly disabled?: Signal<boolean>;\n}\n\nexport const [\n NgpPaginationNextStateToken,\n ngpPaginationNext,\n injectPaginationNextState,\n providePaginationNextState,\n] = createPrimitive(\n 'NgpPaginationNext',\n ({ disabled: _disabled = signal<boolean>(false) }: NgpPaginationNextProps) => {\n const elementRef = injectElementRef();\n const paginationState = injectPaginationState();\n\n const disabled = computed(\n () => _disabled() || paginationState().disabled() || paginationState().lastPage(),\n );\n\n // Setup interactions\n ngpButton({ disabled: disabled });\n\n // Host binding\n attrBinding(elementRef, 'tabindex', () => (disabled() ? -1 : 0));\n dataBinding(elementRef, 'data-last-page', () => (paginationState().lastPage() ? '' : null));\n\n // Listener\n listener(elementRef, 'click', goToNextPage);\n listener(elementRef, 'keydown.enter', handleOnEnter);\n listener(elementRef, 'keydown.space', handleOnEnter);\n\n function goToNextPage(): void {\n if (disabled()) {\n return;\n }\n\n paginationState().goToPage(paginationState().page() + 1);\n }\n\n function handleOnEnter(event: Event): void {\n event.preventDefault();\n event.stopPropagation();\n goToNextPage();\n }\n\n return {\n disabled,\n goToNextPage,\n } satisfies NgpPaginationNextState;\n },\n);\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, Directive, input } from '@angular/core';\nimport { ngpPaginationNext } from './pagination-next-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})\nexport class NgpPaginationNext {\n /**\n * Whether the button is disabled.\n */\n readonly disabled = input<boolean, BooleanInput>(false, {\n alias: 'ngpPaginationNextDisabled',\n transform: booleanAttribute,\n });\n\n protected readonly state = ngpPaginationNext({\n disabled: this.disabled,\n });\n\n /**\n * Go to the next page.\n */\n goToNextPage(): void {\n return this.state.goToNextPage();\n }\n}\n","import { computed, signal, Signal } from '@angular/core';\nimport { ngpButton } from 'ng-primitives/button';\nimport { injectElementRef } from 'ng-primitives/internal';\nimport { attrBinding, createPrimitive, dataBinding, listener } from 'ng-primitives/state';\nimport { injectPaginationState } from '../pagination/pagination-state';\n\nexport interface NgpPaginationPreviousState {\n /**\n * Whether the button is disabled, accounting for the parent pagination state.\n */\n readonly disabled: Signal<boolean>;\n /**\n * Go to the previous page.\n */\n goToPreviousPage(): void;\n}\n\nexport interface NgpPaginationPreviousProps {\n /**\n * Whether the button is disabled.\n */\n readonly disabled?: Signal<boolean>;\n}\n\nexport const [\n NgpPaginationPreviousStateToken,\n ngpPaginationPrevious,\n injectPaginationPreviousState,\n providePaginationPreviousState,\n] = createPrimitive(\n 'NgpPaginationPrevious',\n ({ disabled: _disabled = signal<boolean>(false) }: NgpPaginationPreviousProps) => {\n const elementRef = injectElementRef();\n const paginationState = injectPaginationState();\n\n const disabled = computed(\n () => _disabled() || paginationState().disabled() || paginationState().firstPage(),\n );\n\n // Setup interactions\n ngpButton({ disabled: disabled });\n\n // Host binding\n attrBinding(elementRef, 'tabindex', () => (disabled() ? -1 : 0));\n dataBinding(elementRef, 'data-first-page', () => (paginationState().firstPage() ? '' : null));\n\n // Listener\n listener(elementRef, 'click', goToPreviousPage);\n listener(elementRef, 'keydown.enter', handleOnEnter);\n listener(elementRef, 'keydown.space', handleOnEnter);\n\n function goToPreviousPage(): void {\n if (disabled()) {\n return;\n }\n\n paginationState().goToPage(paginationState().page() - 1);\n }\n\n function handleOnEnter(event: Event): void {\n event.preventDefault();\n event.stopPropagation();\n goToPreviousPage();\n }\n\n return {\n disabled,\n goToPreviousPage,\n } satisfies NgpPaginationPreviousState;\n },\n);\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, Directive, input } from '@angular/core';\nimport { ngpPaginationPrevious } from './pagination-previous-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})\nexport class NgpPaginationPrevious {\n /**\n * Whether the button is disabled.\n */\n readonly disabled = input<boolean, BooleanInput>(false, {\n alias: 'ngpPaginationPreviousDisabled',\n transform: booleanAttribute,\n });\n\n protected readonly state = ngpPaginationPrevious({\n disabled: this.disabled,\n });\n\n /**\n * Go to the previous page.\n */\n goToPreviousPage() {\n return this.state.goToPreviousPage();\n }\n}\n","import { BooleanInput, NumberInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, Directive, input, numberAttribute, output } from '@angular/core';\nimport { ngpPagination, 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})\nexport class NgpPagination {\n /**\n * The currently selected page. Leave unset for uncontrolled usage, where the\n * internal state is seeded from `defaultPage`.\n */\n readonly page = input<number | undefined, NumberInput>(undefined, {\n alias: 'ngpPaginationPage',\n transform: numberAttribute,\n });\n\n /**\n * The default page for uncontrolled usage.\n * @default 1\n */\n readonly defaultPage = input<number, NumberInput>(1, {\n alias: 'ngpPaginationDefaultPage',\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 * The control state for the pagination.\n * @internal\n */\n protected readonly state = ngpPagination({\n page: this.page,\n defaultPage: this.defaultPage,\n pageCount: this.pageCount,\n disabled: this.disabled,\n onPageChange: (value: number) => this.pageChange.emit(value),\n });\n\n /**\n * Go to the specified page.\n * @param page The page to go to.\n */\n goToPage(page: number) {\n return this.state.goToPage(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-state.ts","../../../../packages/ng-primitives/pagination/src/pagination-button/pagination-button.ts","../../../../packages/ng-primitives/pagination/src/pagination-first/pagination-first-state.ts","../../../../packages/ng-primitives/pagination/src/pagination-first/pagination-first.ts","../../../../packages/ng-primitives/pagination/src/pagination-last/pagination-last-state.ts","../../../../packages/ng-primitives/pagination/src/pagination-last/pagination-last.ts","../../../../packages/ng-primitives/pagination/src/pagination-next/pagination-next-state.ts","../../../../packages/ng-primitives/pagination/src/pagination-next/pagination-next.ts","../../../../packages/ng-primitives/pagination/src/pagination-previous/pagination-previous-state.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 { computed, signal, Signal, WritableSignal } from '@angular/core';\nimport { injectElementRef } from 'ng-primitives/internal';\nimport {\n attrBinding,\n controlled,\n controlledState,\n createPrimitive,\n dataBinding,\n deprecatedSetter,\n SetterOptions,\n} from 'ng-primitives/state';\nimport { Observable } from 'rxjs';\n\nexport interface NgpPaginationState {\n /**\n * The currently selected page.\n */\n readonly page: WritableSignal<number>;\n /**\n * The total number of pages.\n */\n readonly pageCount: Signal<number>;\n /**\n * Whether the pagination is disabled.\n */\n readonly disabled: Signal<boolean>;\n /**\n * Set the disabled state (e.g. from a form control).\n * @param disabled The disabled state.\n */\n setDisabled: (disabled: boolean) => void;\n /**\n * Determine if we are on the first page.\n * @internal\n */\n readonly firstPage: Signal<boolean>;\n /**\n * Determine if we are on the last page.\n * @internal\n */\n readonly lastPage: Signal<boolean>;\n /**\n * The event that is fired when the page changes.\n */\n readonly pageChange: Observable<number>;\n /**\n * Set the current page directly (no bounds navigation logic).\n * @param page The page to set.\n * @param options Setter options, e.g. `{ emit: false }` to suppress change emission.\n */\n setPage: (page: number, options?: SetterOptions) => void;\n /**\n * Go to the specified page.\n * @param page The page to go to.\n */\n goToPage: (page: number) => void;\n}\n\nexport interface NgpPaginationProps {\n /**\n * The currently selected page. When `undefined`, the pagination is uncontrolled\n * and seeds from `defaultPage`.\n */\n readonly page?: Signal<number | undefined>;\n /**\n * The default page for uncontrolled usage.\n */\n readonly defaultPage?: Signal<number>;\n /**\n * The total number of pages.\n */\n readonly pageCount?: Signal<number>;\n /**\n * Whether the pagination is disabled.\n */\n readonly disabled?: Signal<boolean>;\n /** Callback fired when the page state changes. */\n onPageChange: (page: number) => void;\n}\n\nexport const [\n NgpPaginationStateToken,\n ngpPagination,\n injectPaginationState,\n providePaginationState,\n] = createPrimitive(\n 'NgpPagination',\n ({\n page: _page = signal<number | undefined>(undefined),\n defaultPage: _defaultPage = signal<number>(1),\n pageCount: _pageCount = signal<number>(0),\n disabled: _disabled = signal<boolean>(false),\n onPageChange,\n }: NgpPaginationProps) => {\n const elementRef = injectElementRef();\n\n // controlled so a form control can set the disabled state via setDisabled,\n // while still following the `disabled` input when it is bound\n const disabled = controlled(_disabled);\n\n const [page, setPage, pageChange] = controlledState({\n value: _page,\n defaultValue: _defaultPage,\n onChange: onPageChange,\n });\n\n // use <= / >= so the boundary flags stay correct even if the bound page is\n // out of range (otherwise a Next/Previous button can stay enabled past the end)\n const firstPage = computed(() => page() <= 1);\n const lastPage = computed(() => _pageCount() > 0 && page() >= _pageCount());\n\n // Host bindings\n attrBinding(elementRef, 'role', 'navigation');\n dataBinding(elementRef, 'data-page', () => page().toString());\n dataBinding(elementRef, 'data-page-count', () => _pageCount().toString());\n dataBinding(elementRef, 'data-first-page', () => (firstPage() ? '' : null));\n dataBinding(elementRef, 'data-last-page', () => (lastPage() ? '' : null));\n dataBinding(elementRef, 'data-disabled', () => (disabled() ? '' : null));\n\n function setDisabled(value: boolean): void {\n disabled.set(value);\n }\n\n function goToPage(page: number) {\n // check if the page is within the bounds of the pagination\n if (page < 1 || page > _pageCount()) {\n return;\n }\n\n setPage(page);\n }\n\n return {\n page: deprecatedSetter(page, 'setPage', setPage),\n pageCount: _pageCount,\n pageChange,\n disabled,\n setDisabled,\n firstPage,\n lastPage,\n setPage,\n goToPage,\n } satisfies NgpPaginationState;\n },\n);\n","import { computed, signal, Signal } from '@angular/core';\nimport { ngpButton } from 'ng-primitives/button';\nimport { injectElementRef } from 'ng-primitives/internal';\nimport { attrBinding, createPrimitive, dataBinding, listener } from 'ng-primitives/state';\nimport { injectPaginationState } from '../pagination/pagination-state';\n\nexport interface NgpPaginationButtonState {\n /**\n * Define the page this button represents.\n */\n readonly page: Signal<number>;\n /**\n * Whether the button is disabled, accounting for the parent pagination state.\n */\n readonly disabled: Signal<boolean>;\n /**\n * Go to the page this button represents.\n */\n goToPage(): void;\n}\n\nexport interface NgpPaginationButtonProps {\n /**\n * Define the page this button represents.\n */\n readonly page?: Signal<number>;\n /**\n * Whether the button is disabled.\n */\n readonly disabled?: Signal<boolean>;\n}\n\nexport const [\n NgpPaginationButtonStateToken,\n ngpPaginationButton,\n injectPaginationButtonState,\n providePaginationButtonState,\n] = createPrimitive(\n 'NgpPaginationButton',\n ({\n page = signal<number>(-1),\n disabled: _disabled = signal<boolean>(false),\n }: NgpPaginationButtonProps) => {\n const elementRef = injectElementRef();\n const paginationState = injectPaginationState();\n\n const selected = computed(() => page() === paginationState().page());\n const disabled = computed(() => _disabled() || paginationState().disabled());\n\n // Setup interactions\n ngpButton({ disabled: disabled });\n\n // Host binding\n attrBinding(elementRef, 'tabindex', () => (disabled() ? -1 : 0));\n attrBinding(elementRef, 'aria-current', () => (selected() ? 'page' : null));\n dataBinding(elementRef, 'data-page', () => page().toString());\n dataBinding(elementRef, 'data-selected', () => (selected() ? '' : null));\n\n // Listeners\n listener(elementRef, 'click', goToPage);\n listener(elementRef, 'keydown', handleKeydown);\n\n function goToPage(): void {\n if (disabled()) {\n return;\n }\n\n paginationState().goToPage(page());\n }\n\n function handleKeydown(event: KeyboardEvent): void {\n if (event.repeat || (event.key !== 'Enter' && event.key !== ' ')) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n goToPage();\n }\n\n return {\n page,\n disabled,\n goToPage,\n } satisfies NgpPaginationButtonState;\n },\n);\n","import { BooleanInput, NumberInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, Directive, input, numberAttribute } from '@angular/core';\nimport { ngpPaginationButton } from './pagination-button-state';\n\n/**\n * The `NgpPaginationButton` directive is used to create a pagination button.\n */\n@Directive({\n selector: '[ngpPaginationButton]',\n exportAs: 'ngpPaginationButton',\n})\nexport class NgpPaginationButton {\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 disabled = input<boolean, BooleanInput>(false, {\n alias: 'ngpPaginationButtonDisabled',\n transform: booleanAttribute,\n });\n\n protected readonly state = ngpPaginationButton({\n page: this.page,\n disabled: this.disabled,\n });\n\n /**\n * Go to the page this button represents.\n */\n goToPage(): void {\n return this.state.goToPage();\n }\n}\n","import { computed, signal, Signal } from '@angular/core';\nimport { ngpButton } from 'ng-primitives/button';\nimport { injectElementRef } from 'ng-primitives/internal';\nimport { attrBinding, createPrimitive, dataBinding, listener } from 'ng-primitives/state';\nimport { injectPaginationState } from '../pagination/pagination-state';\n\nexport interface NgpPaginationFirstState {\n /**\n * Whether the button is disabled, accounting for the parent pagination state.\n */\n readonly disabled: Signal<boolean>;\n /**\n * Go to the first page.\n */\n goToFirstPage(): void;\n}\n\nexport interface NgpPaginationFirstProps {\n /**\n * Whether the button is disabled.\n */\n readonly disabled?: Signal<boolean>;\n}\n\nexport const [\n NgpPaginationFirstStateToken,\n ngpPaginationFirst,\n injectPaginationFirstState,\n providePaginationFirstState,\n] = createPrimitive(\n 'NgpPaginationFirst',\n ({ disabled: _disabled = signal<boolean>(false) }: NgpPaginationFirstProps) => {\n const elementRef = injectElementRef();\n const paginationState = injectPaginationState();\n\n const disabled = computed(\n () => _disabled() || paginationState().disabled() || paginationState().firstPage(),\n );\n\n // Setup interactions\n ngpButton({ disabled: disabled });\n\n // Host binding\n attrBinding(elementRef, 'tabindex', () => (disabled() ? -1 : 0));\n dataBinding(elementRef, 'data-first-page', () => (paginationState().firstPage() ? '' : null));\n\n // Listener\n listener(elementRef, 'click', goToFirstPage);\n listener(elementRef, 'keydown', handleKeydown);\n\n function goToFirstPage(): void {\n if (disabled()) {\n return;\n }\n\n paginationState().goToPage(1);\n }\n\n function handleKeydown(event: KeyboardEvent): void {\n if (event.repeat || (event.key !== 'Enter' && event.key !== ' ')) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n goToFirstPage();\n }\n\n return {\n disabled,\n goToFirstPage,\n } satisfies NgpPaginationFirstState;\n },\n);\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, Directive, input } from '@angular/core';\nimport { ngpPaginationFirst } from './pagination-first-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})\nexport class NgpPaginationFirst {\n /**\n * Whether the button is disabled.\n */\n readonly disabled = input<boolean, BooleanInput>(false, {\n alias: 'ngpPaginationFirstDisabled',\n transform: booleanAttribute,\n });\n\n protected readonly state = ngpPaginationFirst({\n disabled: this.disabled,\n });\n\n /**\n * Go to the first page.\n */\n goToFirstPage() {\n return this.state.goToFirstPage();\n }\n}\n","import { computed, signal, Signal } from '@angular/core';\nimport { ngpButton } from 'ng-primitives/button';\nimport { injectElementRef } from 'ng-primitives/internal';\nimport { attrBinding, createPrimitive, dataBinding, listener } from 'ng-primitives/state';\nimport { injectPaginationState } from '../pagination/pagination-state';\n\nexport interface NgpPaginationLastState {\n /** Whether the button is disabled, accounting for the parent pagination state. */\n readonly disabled: Signal<boolean>;\n /** Go to the last page. */\n goToLastPage(): void;\n}\n\nexport interface NgpPaginationLastProps {\n /** Whether the button is disabled. */\n readonly disabled?: Signal<boolean>;\n}\n\nexport const [\n NgpPaginationLastStateToken,\n ngpPaginationLast,\n injectPaginationLastState,\n providePaginationLastState,\n] = createPrimitive(\n 'NgpPaginationLast',\n ({ disabled: _disabled = signal<boolean>(false) }: NgpPaginationLastProps) => {\n const elementRef = injectElementRef();\n const paginationState = injectPaginationState();\n\n const disabled = computed(\n () => _disabled() || paginationState().disabled() || paginationState().lastPage(),\n );\n\n // Setup interactions\n ngpButton({ disabled: disabled });\n\n // Host binding\n attrBinding(elementRef, 'tabindex', () => (disabled() ? -1 : 0));\n dataBinding(elementRef, 'data-last-page', () => (paginationState().lastPage() ? '' : null));\n\n // Listener\n listener(elementRef, 'click', goToLastPage);\n listener(elementRef, 'keydown', handleKeydown);\n\n function goToLastPage(): void {\n if (disabled()) {\n return;\n }\n\n paginationState().goToPage(paginationState().pageCount());\n }\n\n function handleKeydown(event: KeyboardEvent): void {\n if (event.repeat || (event.key !== 'Enter' && event.key !== ' ')) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n goToLastPage();\n }\n\n return {\n disabled,\n goToLastPage,\n } satisfies NgpPaginationLastState;\n },\n);\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, Directive, input } from '@angular/core';\nimport { ngpPaginationLast } from './pagination-last-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})\nexport class NgpPaginationLast {\n /**\n * Whether the button is disabled.\n */\n readonly disabled = input<boolean, BooleanInput>(false, {\n alias: 'ngpPaginationLastDisabled',\n transform: booleanAttribute,\n });\n\n protected readonly state = ngpPaginationLast({\n disabled: this.disabled,\n });\n\n /**\n * Go to the last page.\n */\n goToLastPage(): void {\n this.state.goToLastPage();\n }\n}\n","import { computed, Signal, signal } from '@angular/core';\nimport { ngpButton } from 'ng-primitives/button';\nimport { injectElementRef } from 'ng-primitives/internal';\nimport { attrBinding, createPrimitive, dataBinding, listener } from 'ng-primitives/state';\nimport { injectPaginationState } from '../pagination/pagination-state';\n\nexport interface NgpPaginationNextState {\n /** Whether the button is disabled, accounting for the parent pagination state. */\n readonly disabled: Signal<boolean>;\n /** Go to the next page. */\n goToNextPage(): void;\n}\n\nexport interface NgpPaginationNextProps {\n /** Whether the button is disabled */\n readonly disabled?: Signal<boolean>;\n}\n\nexport const [\n NgpPaginationNextStateToken,\n ngpPaginationNext,\n injectPaginationNextState,\n providePaginationNextState,\n] = createPrimitive(\n 'NgpPaginationNext',\n ({ disabled: _disabled = signal<boolean>(false) }: NgpPaginationNextProps) => {\n const elementRef = injectElementRef();\n const paginationState = injectPaginationState();\n\n const disabled = computed(\n () => _disabled() || paginationState().disabled() || paginationState().lastPage(),\n );\n\n // Setup interactions\n ngpButton({ disabled: disabled });\n\n // Host binding\n attrBinding(elementRef, 'tabindex', () => (disabled() ? -1 : 0));\n dataBinding(elementRef, 'data-last-page', () => (paginationState().lastPage() ? '' : null));\n\n // Listener\n listener(elementRef, 'click', goToNextPage);\n listener(elementRef, 'keydown', handleKeydown);\n\n function goToNextPage(): void {\n if (disabled()) {\n return;\n }\n\n paginationState().goToPage(paginationState().page() + 1);\n }\n\n function handleKeydown(event: KeyboardEvent): void {\n if (event.repeat || (event.key !== 'Enter' && event.key !== ' ')) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n goToNextPage();\n }\n\n return {\n disabled,\n goToNextPage,\n } satisfies NgpPaginationNextState;\n },\n);\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, Directive, input } from '@angular/core';\nimport { ngpPaginationNext } from './pagination-next-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})\nexport class NgpPaginationNext {\n /**\n * Whether the button is disabled.\n */\n readonly disabled = input<boolean, BooleanInput>(false, {\n alias: 'ngpPaginationNextDisabled',\n transform: booleanAttribute,\n });\n\n protected readonly state = ngpPaginationNext({\n disabled: this.disabled,\n });\n\n /**\n * Go to the next page.\n */\n goToNextPage(): void {\n return this.state.goToNextPage();\n }\n}\n","import { computed, signal, Signal } from '@angular/core';\nimport { ngpButton } from 'ng-primitives/button';\nimport { injectElementRef } from 'ng-primitives/internal';\nimport { attrBinding, createPrimitive, dataBinding, listener } from 'ng-primitives/state';\nimport { injectPaginationState } from '../pagination/pagination-state';\n\nexport interface NgpPaginationPreviousState {\n /**\n * Whether the button is disabled, accounting for the parent pagination state.\n */\n readonly disabled: Signal<boolean>;\n /**\n * Go to the previous page.\n */\n goToPreviousPage(): void;\n}\n\nexport interface NgpPaginationPreviousProps {\n /**\n * Whether the button is disabled.\n */\n readonly disabled?: Signal<boolean>;\n}\n\nexport const [\n NgpPaginationPreviousStateToken,\n ngpPaginationPrevious,\n injectPaginationPreviousState,\n providePaginationPreviousState,\n] = createPrimitive(\n 'NgpPaginationPrevious',\n ({ disabled: _disabled = signal<boolean>(false) }: NgpPaginationPreviousProps) => {\n const elementRef = injectElementRef();\n const paginationState = injectPaginationState();\n\n const disabled = computed(\n () => _disabled() || paginationState().disabled() || paginationState().firstPage(),\n );\n\n // Setup interactions\n ngpButton({ disabled: disabled });\n\n // Host binding\n attrBinding(elementRef, 'tabindex', () => (disabled() ? -1 : 0));\n dataBinding(elementRef, 'data-first-page', () => (paginationState().firstPage() ? '' : null));\n\n // Listener\n listener(elementRef, 'click', goToPreviousPage);\n listener(elementRef, 'keydown', handleKeydown);\n\n function goToPreviousPage(): void {\n if (disabled()) {\n return;\n }\n\n paginationState().goToPage(paginationState().page() - 1);\n }\n\n function handleKeydown(event: KeyboardEvent): void {\n if (event.repeat || (event.key !== 'Enter' && event.key !== ' ')) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n goToPreviousPage();\n }\n\n return {\n disabled,\n goToPreviousPage,\n } satisfies NgpPaginationPreviousState;\n },\n);\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, Directive, input } from '@angular/core';\nimport { ngpPaginationPrevious } from './pagination-previous-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})\nexport class NgpPaginationPrevious {\n /**\n * Whether the button is disabled.\n */\n readonly disabled = input<boolean, BooleanInput>(false, {\n alias: 'ngpPaginationPreviousDisabled',\n transform: booleanAttribute,\n });\n\n protected readonly state = ngpPaginationPrevious({\n disabled: this.disabled,\n });\n\n /**\n * Go to the previous page.\n */\n goToPreviousPage() {\n return this.state.goToPreviousPage();\n }\n}\n","import { BooleanInput, NumberInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, Directive, input, numberAttribute, output } from '@angular/core';\nimport { ngpPagination, 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})\nexport class NgpPagination {\n /**\n * The currently selected page. Leave unset for uncontrolled usage, where the\n * internal state is seeded from `defaultPage`.\n */\n readonly page = input<number | undefined, NumberInput>(undefined, {\n alias: 'ngpPaginationPage',\n transform: numberAttribute,\n });\n\n /**\n * The default page for uncontrolled usage.\n * @default 1\n */\n readonly defaultPage = input<number, NumberInput>(1, {\n alias: 'ngpPaginationDefaultPage',\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 * The control state for the pagination.\n * @internal\n */\n protected readonly state = ngpPagination({\n page: this.page,\n defaultPage: this.defaultPage,\n pageCount: this.pageCount,\n disabled: this.disabled,\n onPageChange: (value: number) => this.pageChange.emit(value),\n });\n\n /**\n * Go to the specified page.\n * @param page The page to go to.\n */\n goToPage(page: number) {\n return this.state.goToPage(page);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -86,7 +86,11 @@ const [NgpPopoverTriggerStateToken, ngpPopoverTrigger, _injectPopoverTriggerStat
|
|
|
86
86
|
const open = computed(() => overlay()?.isOpen() ?? false, ...(ngDevMode ? [{ debugName: "open" }] : /* istanbul ignore next */ []));
|
|
87
87
|
// Host binding
|
|
88
88
|
attrBinding(elementRef, 'aria-expanded', () => (open() ? 'true' : 'false'));
|
|
89
|
+
// the popover is a focus-trapped, dialog-like overlay, so advertise the popup type
|
|
90
|
+
attrBinding(elementRef, 'aria-haspopup', 'dialog');
|
|
89
91
|
attrBinding(elementRef, 'aria-describedby', () => overlay()?.ariaDescribedBy());
|
|
92
|
+
// reference the controlled popover by id while it is open (it does not exist when closed)
|
|
93
|
+
attrBinding(elementRef, 'aria-controls', () => (open() ? (overlay()?.id() ?? null) : null));
|
|
90
94
|
dataBinding(elementRef, 'data-open', open);
|
|
91
95
|
dataBinding(elementRef, 'data-placement', placement);
|
|
92
96
|
dataBinding(elementRef, 'data-disabled', disabled);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-primitives-popover.mjs","sources":["../../../../packages/ng-primitives/popover/src/config/popover-config.ts","../../../../packages/ng-primitives/popover/src/popover-arrow/popover-arrow-state.ts","../../../../packages/ng-primitives/popover/src/popover-arrow/popover-arrow.ts","../../../../packages/ng-primitives/popover/src/popover-trigger/popover-trigger-state.ts","../../../../packages/ng-primitives/popover/src/popover-trigger/popover-trigger.ts","../../../../packages/ng-primitives/popover/src/popover/popover-state.ts","../../../../packages/ng-primitives/popover/src/popover/popover.ts","../../../../packages/ng-primitives/popover/src/ng-primitives-popover.ts"],"sourcesContent":["import { InjectionToken, Provider, inject } from '@angular/core';\nimport { type Placement } from '@floating-ui/dom';\nimport { NgpDismissGuard, NgpFlip, NgpOffset, NgpShift } from 'ng-primitives/portal';\n\nexport interface NgpPopoverConfig {\n /**\n * Define the offset of the popover relative to the trigger.\n * Can be a number (applies to mainAxis) or an object with mainAxis, crossAxis, and alignmentAxis.\n * @default 4\n */\n offset: NgpOffset;\n\n /**\n * Define the placement of the popover relative to the trigger.\n * @default 'bottom'\n */\n placement: Placement;\n\n /**\n * Define the delay before the popover is shown.\n * @default 0\n */\n showDelay: number;\n\n /**\n * Define the delay before the popover is hidden.\n * @default 0\n */\n hideDelay: number;\n\n /**\n * Define whether the popover should flip when there is not enough space for the popover.\n * Can be a boolean to enable/disable, or an object with padding and fallbackPlacements options.\n * @default true\n */\n flip: NgpFlip;\n\n /**\n * Define the container element or selector in to which the popover should be attached.\n * @default 'body'\n */\n container: HTMLElement | string | null;\n\n /**\n * Define whether the popover should close when clicking outside of it, or a guard function.\n * @default true\n */\n closeOnOutsideClick: NgpDismissGuard<Element>;\n\n /**\n * Define whether the popover should close when the escape key is pressed, or a guard function.\n * @default true\n */\n closeOnEscape: NgpDismissGuard<KeyboardEvent>;\n\n /**\n * Defines how the popover behaves when the window is scrolled.\n * @default scroll\n */\n scrollBehavior: 'reposition' | 'block' | 'close';\n\n /**\n * Configure shift behavior to keep the popover in view.\n * Can be a boolean to enable/disable, or an object with padding and limiter options.\n * @default undefined (enabled by default in overlay)\n */\n shift: NgpShift;\n\n /**\n * Whether to track the trigger element position on every animation frame.\n * Useful for moving elements like slider thumbs.\n * @default false\n */\n trackPosition: boolean;\n\n /**\n * Cooldown duration in milliseconds.\n * When moving from one popover to another within this duration,\n * the showDelay is skipped for the new popover.\n * @default 0\n */\n cooldown: number;\n}\n\nexport const defaultPopoverConfig: NgpPopoverConfig = {\n offset: 4,\n placement: 'bottom',\n showDelay: 0,\n hideDelay: 0,\n flip: true,\n container: 'body',\n closeOnOutsideClick: true,\n closeOnEscape: true,\n scrollBehavior: 'reposition',\n shift: undefined,\n trackPosition: false,\n cooldown: 0,\n};\n\nexport const NgpPopoverConfigToken = new InjectionToken<NgpPopoverConfig>('NgpPopoverConfigToken');\n\n/**\n * Provide the default Popover configuration\n * @param config The Popover configuration\n * @returns The provider\n */\nexport function providePopoverConfig(config: Partial<NgpPopoverConfig>): Provider[] {\n return [\n {\n provide: NgpPopoverConfigToken,\n useValue: { ...defaultPopoverConfig, ...config },\n },\n ];\n}\n\n/**\n * Inject the Popover configuration\n * @returns The global Popover configuration\n */\nexport function injectPopoverConfig(): NgpPopoverConfig {\n return inject(NgpPopoverConfigToken, { optional: true }) ?? defaultPopoverConfig;\n}\n","import { NgpOverlayArrowProps, NgpOverlayArrowState, ngpOverlayArrow } from 'ng-primitives/portal';\nimport { createPrimitive } from 'ng-primitives/state';\n\n// Re-export types with popover-specific aliases\nexport { NgpOverlayArrowProps as NgpPopoverArrowProps };\nexport { NgpOverlayArrowState as NgpPopoverArrowState };\n\nexport const [\n NgpPopoverArrowStateToken,\n ngpPopoverArrow,\n injectPopoverArrowState,\n providePopoverArrowState,\n] = createPrimitive(\n 'NgpPopoverArrow',\n ({ padding }: NgpOverlayArrowProps): NgpOverlayArrowState => {\n return ngpOverlayArrow({ padding });\n },\n);\n","import { NumberInput } from '@angular/cdk/coercion';\nimport { Directive, input, numberAttribute } from '@angular/core';\nimport { ngpPopoverArrow, providePopoverArrowState } from './popover-arrow-state';\n\n@Directive({\n selector: '[ngpPopoverArrow]',\n exportAs: 'ngpPopoverArrow',\n providers: [providePopoverArrowState()],\n})\nexport class NgpPopoverArrow {\n /**\n * Padding between the arrow and the edges of the popover.\n * This prevents the arrow from overflowing the rounded corners.\n */\n readonly padding = input<number | undefined, NumberInput>(undefined, {\n alias: 'ngpPopoverArrowPadding',\n transform: numberAttribute,\n });\n\n private readonly state = ngpPopoverArrow({ padding: this.padding });\n\n /**\n * Set the padding between the arrow and the edges of the popover.\n * @param value The padding value in pixels\n */\n setPadding(value: number | undefined): void {\n this.state.setPadding(value);\n }\n}\n","import { FocusOrigin } from '@angular/cdk/a11y';\nimport {\n computed,\n ElementRef,\n inject,\n Injector,\n signal,\n Signal,\n ViewContainerRef,\n WritableSignal,\n} from '@angular/core';\nimport { injectElementRef } from 'ng-primitives/internal';\nimport {\n createOverlay,\n NgpDismissGuard,\n NgpFlip,\n NgpOffset,\n NgpOverlay,\n NgpOverlayConfig,\n NgpOverlayContent,\n NgpShift,\n} from 'ng-primitives/portal';\nimport {\n attrBinding,\n controlled,\n createPrimitive,\n dataBinding,\n deprecatedSetter,\n listener,\n StateInjectionOptions,\n} from 'ng-primitives/state';\n\nexport interface NgpPopoverTriggerState<T> {\n /** Access the trigger element. */\n readonly elementRef: ElementRef;\n /** Access the popover template ref. */\n readonly popover: WritableSignal<NgpOverlayContent<T> | undefined>;\n /**\n * Define if the trigger should be disabled.\n * @default false\n */\n readonly disabled: Signal<boolean>;\n /**\n * Define the placement of the popover relative to the trigger.\n * @default 'top'\n */\n readonly placement: Signal<NgpPopoverPlacement>;\n /**\n * Define the offset of the popover relative to the trigger.\n * Can be a number (applies to mainAxis) or an object with mainAxis, crossAxis, and alignmentAxis.\n * @default 0\n */\n readonly offset: Signal<NgpOffset>;\n /**\n * Define the delay before the popover is displayed.\n * @default 0\n */\n readonly showDelay: Signal<number>;\n /**\n * Define the delay before the popover is hidden.\n * @default 0\n */\n readonly hideDelay: Signal<number>;\n /**\n * Define whether the popover should flip when there is not enough space for the popover.\n * Can be a boolean to enable/disable, or an object with padding and fallbackPlacements options.\n * @default true\n */\n readonly flip: Signal<NgpFlip>;\n /**\n * Configure shift behavior to keep the popover in view.\n * Can be a boolean to enable/disable, or an object with padding and limiter options.\n * @default undefined (enabled by default in overlay)\n */\n readonly shift: Signal<NgpShift>;\n /**\n * Define the container in which the popover should be attached.\n * @default document.body\n */\n readonly container: WritableSignal<HTMLElement | string | null>;\n /**\n * Define whether the popover should close when clicking outside of it, or a guard function.\n * @default true\n */\n readonly closeOnOutsideClick: Signal<NgpDismissGuard<Element>>;\n /**\n * Define whether the popover should close when the escape key is pressed, or a guard function.\n * @default true\n */\n readonly closeOnEscape: Signal<NgpDismissGuard<KeyboardEvent>>;\n /**\n * Defines how the popover behaves when the window is scrolled.\n * @default 'reposition'\n */\n readonly scrollBehavior: Signal<'reposition' | 'block' | 'close'>;\n /**\n * Provide context to the popover. This can be used to pass data to the popover content.\n */\n readonly context: Signal<T | undefined>;\n /**\n * Define an anchor element for positioning the popover.\n * If provided, the popover will be positioned relative to this element instead of the trigger.\n */\n readonly anchor: Signal<HTMLElement | null>;\n /**\n * Define whether to track the trigger element position on every animation frame.\n * Useful for moving elements like slider thumbs.\n * @default false\n */\n readonly trackPosition: Signal<boolean>;\n /**\n * Define the cooldown duration in milliseconds.\n * When moving from one popover to another within this duration,\n * the showDelay is skipped for the new popover.\n * @default 0\n */\n readonly cooldown: Signal<number>;\n /**\n * The overlay that manages the popover\n * @internal\n */\n readonly overlay: Signal<NgpOverlay<T> | null>;\n /**\n * The open state of the popover.\n * @internal\n */\n readonly open: Signal<boolean>;\n /** @internal onDestroy callback */\n destroy: () => void;\n /**\n * Set the container in which the popover should be attached. Takes effect the\n * next time the popover is opened; it does not move a popover that is already\n * open.\n * @param container - The new container\n */\n setContainer: (container: HTMLElement | string | null) => void;\n /**\n * Show the popover.\n * @returns A promise that resolves when the popover has been shown\n */\n show: () => Promise<void>;\n /**\n * @internal\n * Hide the popover.\n * @returns A promise that resolves when the popover has been hidden\n */\n hide: (origin: FocusOrigin) => Promise<void>;\n}\n\nexport interface NgpPopoverTriggerProps<T> {\n /** Access the popover template ref. */\n readonly popover?: Signal<NgpOverlayContent<T> | undefined>;\n /**\n * Define if the trigger should be disabled.\n * @default false\n */\n readonly disabled?: Signal<boolean>;\n /**\n * Define the placement of the popover relative to the trigger.\n * @default 'top'\n */\n readonly placement?: Signal<NgpPopoverPlacement>;\n /**\n * Define the offset of the popover relative to the trigger.\n * Can be a number (applies to mainAxis) or an object with mainAxis, crossAxis, and alignmentAxis.\n * @default 0\n */\n readonly offset?: Signal<NgpOffset>;\n /**\n * Define the delay before the popover is displayed.\n * @default 0\n */\n readonly showDelay?: Signal<number>;\n /**\n * Define the delay before the popover is hidden.\n * @default 0\n */\n readonly hideDelay?: Signal<number>;\n /**\n * Define whether the popover should flip when there is not enough space for the popover.\n * Can be a boolean to enable/disable, or an object with padding and fallbackPlacements options.\n * @default true\n */\n readonly flip?: Signal<NgpFlip>;\n /**\n * Configure shift behavior to keep the popover in view.\n * Can be a boolean to enable/disable, or an object with padding and limiter options.\n * @default undefined (enabled by default in overlay)\n */\n readonly shift?: Signal<NgpShift>;\n /**\n * Define the container in which the popover should be attached.\n * @default document.body\n */\n readonly container?: Signal<HTMLElement | string | null>;\n /**\n * Define whether the popover should close when clicking outside of it, or a guard function.\n * @default true\n */\n readonly closeOnOutsideClick?: Signal<NgpDismissGuard<Element>>;\n /**\n * Define whether the popover should close when the escape key is pressed, or a guard function.\n * @default true\n */\n readonly closeOnEscape?: Signal<NgpDismissGuard<KeyboardEvent>>;\n /**\n * Defines how the popover behaves when the window is scrolled.\n * @default 'reposition'\n */\n readonly scrollBehavior?: Signal<'reposition' | 'block' | 'close'>;\n /**\n * Provide context to the popover. This can be used to pass data to the popover content.\n */\n readonly context?: Signal<T | undefined>;\n /**\n * Define an anchor element for positioning the popover.\n * If provided, the popover will be positioned relative to this element instead of the trigger.\n */\n readonly anchor?: Signal<HTMLElement | null>;\n /**\n * Define whether to track the trigger element position on every animation frame.\n * Useful for moving elements like slider thumbs.\n * @default false\n */\n readonly trackPosition?: Signal<boolean>;\n /**\n * Define the cooldown duration in milliseconds.\n * When moving from one popover to another within this duration,\n * the showDelay is skipped for the new popover.\n * @default 0\n */\n readonly cooldown?: Signal<number>;\n /** Callback fired when the open state changes. */\n readonly onOpenChange?: (value: boolean) => void;\n}\n\nexport const [\n NgpPopoverTriggerStateToken,\n ngpPopoverTrigger,\n _injectPopoverTriggerState,\n providePopoverTriggerState,\n] = createPrimitive(\n 'NgpPopoverTrigger',\n <T>({\n popover: _popover = signal<NgpOverlayContent<T> | undefined>(undefined),\n disabled = signal<boolean>(false),\n placement = signal<NgpPopoverPlacement>('bottom'),\n offset = signal<NgpOffset>(4),\n showDelay = signal<number>(0),\n hideDelay = signal<number>(0),\n flip = signal<NgpFlip>(true),\n shift = signal<NgpShift>(undefined),\n container: _container,\n closeOnOutsideClick = signal<NgpDismissGuard<Element>>(true),\n closeOnEscape = signal<NgpDismissGuard<KeyboardEvent>>(true),\n scrollBehavior = signal<'reposition' | 'block' | 'close'>('reposition'),\n context = signal<T | undefined>(undefined),\n anchor = signal<HTMLElement | null>(null),\n trackPosition = signal<boolean>(false),\n cooldown = signal<number>(0),\n onOpenChange,\n }: NgpPopoverTriggerProps<T>): NgpPopoverTriggerState<T> => {\n const elementRef = injectElementRef<HTMLElement>();\n const viewContainerRef = inject(ViewContainerRef);\n const injector = inject(Injector);\n\n const popover = controlled(_popover);\n const container = controlled(_container, 'body');\n\n const overlay = signal<NgpOverlay<T> | null>(null);\n const open = computed(() => overlay()?.isOpen() ?? false);\n\n // Host binding\n attrBinding(elementRef, 'aria-expanded', () => (open() ? 'true' : 'false'));\n attrBinding(elementRef, 'aria-describedby', () => overlay()?.ariaDescribedBy());\n dataBinding(elementRef, 'data-open', open);\n dataBinding(elementRef, 'data-placement', placement);\n dataBinding(elementRef, 'data-disabled', disabled);\n\n // Event listener\n listener(elementRef, 'click', toggle);\n\n function destroy(): void {\n overlay()?.destroy();\n }\n\n function createOverlayInstance(): void {\n const popoverInstance = popover();\n\n if (!popoverInstance) {\n throw new Error('Popover must be either a TemplateRef or a ComponentType');\n }\n\n // Create config for the overlay\n const config: NgpOverlayConfig<T> = {\n content: popoverInstance,\n triggerElement: elementRef.nativeElement,\n anchorElement: anchor(),\n injector: injector,\n context: context,\n container: container(),\n placement: placement,\n offset: offset(),\n flip: flip(),\n shift: shift(),\n showDelay: showDelay(),\n hideDelay: hideDelay(),\n closeOnOutsideClick: closeOnOutsideClick(),\n closeOnEscape: closeOnEscape(),\n restoreFocus: true,\n scrollBehaviour: scrollBehavior(),\n viewContainerRef: viewContainerRef,\n trackPosition: trackPosition(),\n overlayType: 'popover',\n cooldown: cooldown(),\n onClose: () => onOpenChange?.(false),\n };\n\n overlay.set(createOverlay(config));\n }\n\n function toggle(event: MouseEvent): void {\n // if the trigger is disabled then do not toggle the popover\n if (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 popover is open then hide it\n if (open()) {\n hide(origin);\n } else {\n show();\n }\n }\n\n async function show(): Promise<void> {\n // If the trigger is disabled, don't show the popover\n if (disabled()) {\n return;\n }\n\n // Create the overlay if it doesn't exist yet\n if (!overlay()) {\n createOverlayInstance();\n }\n\n // Show the overlay\n await overlay()?.show();\n\n if (open()) {\n onOpenChange?.(true);\n }\n }\n\n async function hide(origin: FocusOrigin): Promise<void> {\n // If the trigger is disabled or the popover is not open, do nothing\n if (disabled() || !open()) {\n return;\n }\n\n // Hide the overlay\n await overlay()?.hide({ origin });\n }\n\n function setContainer(newContainer: HTMLElement | string | null): void {\n container.set(newContainer);\n }\n\n return {\n elementRef,\n popover,\n disabled,\n placement,\n offset,\n showDelay,\n hideDelay,\n flip,\n shift,\n container: deprecatedSetter(container, 'setContainer', setContainer),\n closeOnOutsideClick,\n closeOnEscape,\n scrollBehavior,\n context,\n anchor,\n trackPosition,\n cooldown,\n overlay,\n open,\n destroy,\n setContainer,\n show,\n hide,\n } satisfies NgpPopoverTriggerState<T>;\n },\n);\n\nexport function injectPopoverTriggerState<T>(\n options?: StateInjectionOptions,\n): Signal<NgpPopoverTriggerState<T>> {\n return _injectPopoverTriggerState(options) as Signal<NgpPopoverTriggerState<T>>;\n}\n\nexport type NgpPopoverPlacement =\n | 'top'\n | 'right'\n | 'bottom'\n | 'left'\n | 'top-start'\n | 'top-end'\n | 'right-start'\n | 'right-end'\n | 'bottom-start'\n | 'bottom-end'\n | 'left-start'\n | 'left-end';\n","import { FocusOrigin } from '@angular/cdk/a11y';\nimport { BooleanInput, NumberInput } from '@angular/cdk/coercion';\nimport {\n booleanAttribute,\n Directive,\n input,\n numberAttribute,\n OnDestroy,\n output,\n} from '@angular/core';\nimport {\n coerceFlip,\n dismissGuardAttribute,\n NgpDismissGuard,\n NgpDismissGuardInput,\n NgpFlip,\n NgpFlipInput,\n NgpOverlayContent,\n coerceOffset,\n NgpOffset,\n NgpOffsetInput,\n coerceShift,\n NgpShift,\n NgpShiftInput,\n} from 'ng-primitives/portal';\nimport { injectPopoverConfig } from '../config/popover-config';\nimport {\n NgpPopoverPlacement,\n ngpPopoverTrigger,\n providePopoverTriggerState,\n} from './popover-trigger-state';\n\n/**\n * Apply the `ngpPopoverTrigger` directive to an element that triggers the popover to show.\n */\n@Directive({\n selector: '[ngpPopoverTrigger]',\n exportAs: 'ngpPopoverTrigger',\n providers: [providePopoverTriggerState({ inherit: false })],\n})\nexport class NgpPopoverTrigger<T = null> implements OnDestroy {\n /**\n * Access the global popover configuration.\n */\n private readonly config = injectPopoverConfig();\n\n /**\n * Access the popover template ref.\n */\n readonly popover = input<NgpOverlayContent<T>>(undefined, {\n alias: 'ngpPopoverTrigger',\n });\n\n /**\n * Define if the trigger should be disabled.\n * @default false\n */\n readonly disabled = input<boolean, BooleanInput>(false, {\n alias: 'ngpPopoverTriggerDisabled',\n transform: booleanAttribute,\n });\n\n /**\n * Define the placement of the popover relative to the trigger.\n * @default 'top'\n */\n readonly placement = input<NgpPopoverPlacement>(this.config.placement, {\n alias: 'ngpPopoverTriggerPlacement',\n });\n\n /**\n * Define the offset of the popover relative to the trigger.\n * Can be a number (applies to mainAxis) or an object with mainAxis, crossAxis, and alignmentAxis.\n * @default 0\n */\n readonly offset = input<NgpOffset, NgpOffsetInput>(this.config.offset, {\n alias: 'ngpPopoverTriggerOffset',\n transform: coerceOffset,\n });\n\n /**\n * Define the delay before the popover is displayed.\n * @default 0\n */\n readonly showDelay = input<number, NumberInput>(this.config.showDelay, {\n alias: 'ngpPopoverTriggerShowDelay',\n transform: numberAttribute,\n });\n\n /**\n * Define the delay before the popover is hidden.\n * @default 0\n */\n readonly hideDelay = input<number, NumberInput>(this.config.hideDelay, {\n alias: 'ngpPopoverTriggerHideDelay',\n transform: numberAttribute,\n });\n\n /**\n * Define whether the popover should flip when there is not enough space for the popover.\n * Can be a boolean to enable/disable, or an object with padding and fallbackPlacements options.\n * @default true\n */\n readonly flip = input<NgpFlip, NgpFlipInput>(this.config.flip, {\n alias: 'ngpPopoverTriggerFlip',\n transform: coerceFlip,\n });\n\n /**\n * Configure shift behavior to keep the popover in view.\n * Can be a boolean to enable/disable, or an object with padding and limiter options.\n * @default undefined (enabled by default in overlay)\n */\n readonly shift = input<NgpShift, NgpShiftInput>(this.config.shift, {\n alias: 'ngpPopoverTriggerShift',\n transform: coerceShift,\n });\n\n /**\n * Define the container in which the popover should be attached.\n * @default document.body\n */\n readonly container = input<HTMLElement | string | null>(this.config.container, {\n alias: 'ngpPopoverTriggerContainer',\n });\n\n /**\n * Define whether the popover should close when clicking outside of it, or a guard function.\n * @default true\n */\n readonly closeOnOutsideClick = input<NgpDismissGuard<Element>, NgpDismissGuardInput<Element>>(\n this.config.closeOnOutsideClick,\n {\n alias: 'ngpPopoverTriggerCloseOnOutsideClick',\n transform: dismissGuardAttribute,\n },\n );\n\n /**\n * Define whether the popover should close when the escape key is pressed, or a guard function.\n * @default true\n */\n readonly closeOnEscape = input<\n NgpDismissGuard<KeyboardEvent>,\n NgpDismissGuardInput<KeyboardEvent>\n >(this.config.closeOnEscape, {\n alias: 'ngpPopoverTriggerCloseOnEscape',\n transform: dismissGuardAttribute,\n });\n\n /**\n * Defines how the popover behaves when the window is scrolled.\n * @default 'reposition'\n */\n readonly scrollBehavior = input<'reposition' | 'block' | 'close'>(this.config.scrollBehavior, {\n alias: 'ngpPopoverTriggerScrollBehavior',\n });\n\n /**\n * Provide context to the popover. This can be used to pass data to the popover content.\n */\n readonly context = input<T>(undefined, {\n alias: 'ngpPopoverTriggerContext',\n });\n\n /**\n * Define an anchor element for positioning the popover.\n * If provided, the popover will be positioned relative to this element instead of the trigger.\n */\n readonly anchor = input<HTMLElement | null>(null, {\n alias: 'ngpPopoverTriggerAnchor',\n });\n\n /**\n * Define whether to track the trigger element position on every animation frame.\n * Useful for moving elements like slider thumbs.\n * @default false\n */\n readonly trackPosition = input<boolean, BooleanInput>(this.config.trackPosition, {\n alias: 'ngpPopoverTriggerTrackPosition',\n transform: booleanAttribute,\n });\n\n /**\n * Define the cooldown duration in milliseconds.\n * When moving from one popover to another within this duration,\n * the showDelay is skipped for the new popover.\n * @default 0\n */\n readonly cooldown = input<number, NumberInput>(this.config.cooldown, {\n alias: 'ngpPopoverTriggerCooldown',\n transform: numberAttribute,\n });\n\n /**\n * Event emitted when the popover open state changes.\n */\n readonly openChange = output<boolean>({\n alias: 'ngpPopoverTriggerOpenChange',\n });\n\n /**\n * The popover trigger state.\n */\n protected readonly state = ngpPopoverTrigger({\n popover: this.popover,\n disabled: this.disabled,\n placement: this.placement,\n offset: this.offset,\n showDelay: this.showDelay,\n hideDelay: this.hideDelay,\n flip: this.flip,\n shift: this.shift,\n container: this.container,\n closeOnOutsideClick: this.closeOnOutsideClick,\n closeOnEscape: this.closeOnEscape,\n scrollBehavior: this.scrollBehavior,\n context: this.context,\n anchor: this.anchor,\n trackPosition: this.trackPosition,\n cooldown: this.cooldown,\n onOpenChange: (value: boolean) => this.openChange.emit(value),\n });\n\n ngOnDestroy(): void {\n this.state.destroy();\n }\n\n /**\n * Show the popover.\n * @returns A promise that resolves when the popover has been shown\n */\n show(): Promise<void> {\n return this.state.show();\n }\n\n /**\n * @internal\n * Hide the popover.\n * @returns A promise that resolves when the popover has been hidden\n */\n hide(origin: FocusOrigin = 'program'): Promise<void> {\n return this.state.hide(origin);\n }\n}\n","import { signal, Signal } from '@angular/core';\nimport { explicitEffect, injectElementRef } from 'ng-primitives/internal';\nimport { injectOverlay } from 'ng-primitives/portal';\nimport {\n attrBinding,\n controlled,\n createPrimitive,\n dataBinding,\n styleBinding,\n} from 'ng-primitives/state';\n\nexport interface NgpPopoverState {\n /** The unique id of the tooltip. */\n readonly id: Signal<string>;\n}\n\nexport interface NgpPopoverProps {\n /** The unique id of the tooltip. */\n readonly id?: Signal<string>;\n}\n\nexport const [NgpPopoverStateToken, ngpPopover, injectPopoverState, providePopoverState] =\n createPrimitive('NgpPopover', ({ id: _id = signal<string>('') }: NgpPopoverProps) => {\n const elementRef = injectElementRef<HTMLElement>();\n\n const overlay = injectOverlay();\n const id = controlled(_id);\n\n id.set(overlay.id());\n\n // Host binding\n attrBinding(elementRef, 'role', 'dialog');\n attrBinding(elementRef, 'id', id);\n styleBinding(elementRef, 'left.px', () => overlay.position().x ?? null);\n styleBinding(elementRef, 'top.px', () => overlay.position().y ?? null);\n styleBinding(elementRef, '--ngp-popover-trigger-width.px', () => overlay.triggerWidth());\n styleBinding(elementRef, '--ngp-popover-transform-origin', () => overlay.transformOrigin());\n styleBinding(elementRef, '--ngp-popover-available-width.px', () => overlay.availableWidth());\n styleBinding(elementRef, '--ngp-popover-available-height.px', () => overlay.availableHeight());\n dataBinding(elementRef, 'data-placement', () => overlay.finalPlacement() ?? null);\n dataBinding(elementRef, 'data-overlay', '');\n\n // Effect handle\n explicitEffect([id], ([id]) => overlay.id.set(id));\n\n return {\n id,\n } satisfies NgpPopoverState;\n });\n","import { Directive, input } from '@angular/core';\nimport { NgpFocusTrap } from 'ng-primitives/focus-trap';\nimport { provideControlContainerIsolation } from 'ng-primitives/portal';\nimport { ngpPopover, providePopoverState } from './popover-state';\n\n/**\n * Apply the `ngpPopover` directive to an element that represents the popover. This typically would be a `div` inside an `ng-template`.\n */\n@Directive({\n selector: '[ngpPopover]',\n exportAs: 'ngpPopover',\n hostDirectives: [NgpFocusTrap],\n providers: [providePopoverState(), provideControlContainerIsolation()],\n})\nexport class NgpPopover {\n /**\n * The unique id of the tooltip.\n */\n readonly id = input('');\n\n protected readonly state = ngpPopover({\n id: this.id,\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-popover.mjs","sources":["../../../../packages/ng-primitives/popover/src/config/popover-config.ts","../../../../packages/ng-primitives/popover/src/popover-arrow/popover-arrow-state.ts","../../../../packages/ng-primitives/popover/src/popover-arrow/popover-arrow.ts","../../../../packages/ng-primitives/popover/src/popover-trigger/popover-trigger-state.ts","../../../../packages/ng-primitives/popover/src/popover-trigger/popover-trigger.ts","../../../../packages/ng-primitives/popover/src/popover/popover-state.ts","../../../../packages/ng-primitives/popover/src/popover/popover.ts","../../../../packages/ng-primitives/popover/src/ng-primitives-popover.ts"],"sourcesContent":["import { InjectionToken, Provider, inject } from '@angular/core';\nimport { type Placement } from '@floating-ui/dom';\nimport { NgpDismissGuard, NgpFlip, NgpOffset, NgpShift } from 'ng-primitives/portal';\n\nexport interface NgpPopoverConfig {\n /**\n * Define the offset of the popover relative to the trigger.\n * Can be a number (applies to mainAxis) or an object with mainAxis, crossAxis, and alignmentAxis.\n * @default 4\n */\n offset: NgpOffset;\n\n /**\n * Define the placement of the popover relative to the trigger.\n * @default 'bottom'\n */\n placement: Placement;\n\n /**\n * Define the delay before the popover is shown.\n * @default 0\n */\n showDelay: number;\n\n /**\n * Define the delay before the popover is hidden.\n * @default 0\n */\n hideDelay: number;\n\n /**\n * Define whether the popover should flip when there is not enough space for the popover.\n * Can be a boolean to enable/disable, or an object with padding and fallbackPlacements options.\n * @default true\n */\n flip: NgpFlip;\n\n /**\n * Define the container element or selector in to which the popover should be attached.\n * @default 'body'\n */\n container: HTMLElement | string | null;\n\n /**\n * Define whether the popover should close when clicking outside of it, or a guard function.\n * @default true\n */\n closeOnOutsideClick: NgpDismissGuard<Element>;\n\n /**\n * Define whether the popover should close when the escape key is pressed, or a guard function.\n * @default true\n */\n closeOnEscape: NgpDismissGuard<KeyboardEvent>;\n\n /**\n * Defines how the popover behaves when the window is scrolled.\n * @default scroll\n */\n scrollBehavior: 'reposition' | 'block' | 'close';\n\n /**\n * Configure shift behavior to keep the popover in view.\n * Can be a boolean to enable/disable, or an object with padding and limiter options.\n * @default undefined (enabled by default in overlay)\n */\n shift: NgpShift;\n\n /**\n * Whether to track the trigger element position on every animation frame.\n * Useful for moving elements like slider thumbs.\n * @default false\n */\n trackPosition: boolean;\n\n /**\n * Cooldown duration in milliseconds.\n * When moving from one popover to another within this duration,\n * the showDelay is skipped for the new popover.\n * @default 0\n */\n cooldown: number;\n}\n\nexport const defaultPopoverConfig: NgpPopoverConfig = {\n offset: 4,\n placement: 'bottom',\n showDelay: 0,\n hideDelay: 0,\n flip: true,\n container: 'body',\n closeOnOutsideClick: true,\n closeOnEscape: true,\n scrollBehavior: 'reposition',\n shift: undefined,\n trackPosition: false,\n cooldown: 0,\n};\n\nexport const NgpPopoverConfigToken = new InjectionToken<NgpPopoverConfig>('NgpPopoverConfigToken');\n\n/**\n * Provide the default Popover configuration\n * @param config The Popover configuration\n * @returns The provider\n */\nexport function providePopoverConfig(config: Partial<NgpPopoverConfig>): Provider[] {\n return [\n {\n provide: NgpPopoverConfigToken,\n useValue: { ...defaultPopoverConfig, ...config },\n },\n ];\n}\n\n/**\n * Inject the Popover configuration\n * @returns The global Popover configuration\n */\nexport function injectPopoverConfig(): NgpPopoverConfig {\n return inject(NgpPopoverConfigToken, { optional: true }) ?? defaultPopoverConfig;\n}\n","import { NgpOverlayArrowProps, NgpOverlayArrowState, ngpOverlayArrow } from 'ng-primitives/portal';\nimport { createPrimitive } from 'ng-primitives/state';\n\n// Re-export types with popover-specific aliases\nexport { NgpOverlayArrowProps as NgpPopoverArrowProps };\nexport { NgpOverlayArrowState as NgpPopoverArrowState };\n\nexport const [\n NgpPopoverArrowStateToken,\n ngpPopoverArrow,\n injectPopoverArrowState,\n providePopoverArrowState,\n] = createPrimitive(\n 'NgpPopoverArrow',\n ({ padding }: NgpOverlayArrowProps): NgpOverlayArrowState => {\n return ngpOverlayArrow({ padding });\n },\n);\n","import { NumberInput } from '@angular/cdk/coercion';\nimport { Directive, input, numberAttribute } from '@angular/core';\nimport { ngpPopoverArrow, providePopoverArrowState } from './popover-arrow-state';\n\n@Directive({\n selector: '[ngpPopoverArrow]',\n exportAs: 'ngpPopoverArrow',\n providers: [providePopoverArrowState()],\n})\nexport class NgpPopoverArrow {\n /**\n * Padding between the arrow and the edges of the popover.\n * This prevents the arrow from overflowing the rounded corners.\n */\n readonly padding = input<number | undefined, NumberInput>(undefined, {\n alias: 'ngpPopoverArrowPadding',\n transform: numberAttribute,\n });\n\n private readonly state = ngpPopoverArrow({ padding: this.padding });\n\n /**\n * Set the padding between the arrow and the edges of the popover.\n * @param value The padding value in pixels\n */\n setPadding(value: number | undefined): void {\n this.state.setPadding(value);\n }\n}\n","import { FocusOrigin } from '@angular/cdk/a11y';\nimport {\n computed,\n ElementRef,\n inject,\n Injector,\n signal,\n Signal,\n ViewContainerRef,\n WritableSignal,\n} from '@angular/core';\nimport { injectElementRef } from 'ng-primitives/internal';\nimport {\n createOverlay,\n NgpDismissGuard,\n NgpFlip,\n NgpOffset,\n NgpOverlay,\n NgpOverlayConfig,\n NgpOverlayContent,\n NgpShift,\n} from 'ng-primitives/portal';\nimport {\n attrBinding,\n controlled,\n createPrimitive,\n dataBinding,\n deprecatedSetter,\n listener,\n StateInjectionOptions,\n} from 'ng-primitives/state';\n\nexport interface NgpPopoverTriggerState<T> {\n /** Access the trigger element. */\n readonly elementRef: ElementRef;\n /** Access the popover template ref. */\n readonly popover: WritableSignal<NgpOverlayContent<T> | undefined>;\n /**\n * Define if the trigger should be disabled.\n * @default false\n */\n readonly disabled: Signal<boolean>;\n /**\n * Define the placement of the popover relative to the trigger.\n * @default 'top'\n */\n readonly placement: Signal<NgpPopoverPlacement>;\n /**\n * Define the offset of the popover relative to the trigger.\n * Can be a number (applies to mainAxis) or an object with mainAxis, crossAxis, and alignmentAxis.\n * @default 0\n */\n readonly offset: Signal<NgpOffset>;\n /**\n * Define the delay before the popover is displayed.\n * @default 0\n */\n readonly showDelay: Signal<number>;\n /**\n * Define the delay before the popover is hidden.\n * @default 0\n */\n readonly hideDelay: Signal<number>;\n /**\n * Define whether the popover should flip when there is not enough space for the popover.\n * Can be a boolean to enable/disable, or an object with padding and fallbackPlacements options.\n * @default true\n */\n readonly flip: Signal<NgpFlip>;\n /**\n * Configure shift behavior to keep the popover in view.\n * Can be a boolean to enable/disable, or an object with padding and limiter options.\n * @default undefined (enabled by default in overlay)\n */\n readonly shift: Signal<NgpShift>;\n /**\n * Define the container in which the popover should be attached.\n * @default document.body\n */\n readonly container: WritableSignal<HTMLElement | string | null>;\n /**\n * Define whether the popover should close when clicking outside of it, or a guard function.\n * @default true\n */\n readonly closeOnOutsideClick: Signal<NgpDismissGuard<Element>>;\n /**\n * Define whether the popover should close when the escape key is pressed, or a guard function.\n * @default true\n */\n readonly closeOnEscape: Signal<NgpDismissGuard<KeyboardEvent>>;\n /**\n * Defines how the popover behaves when the window is scrolled.\n * @default 'reposition'\n */\n readonly scrollBehavior: Signal<'reposition' | 'block' | 'close'>;\n /**\n * Provide context to the popover. This can be used to pass data to the popover content.\n */\n readonly context: Signal<T | undefined>;\n /**\n * Define an anchor element for positioning the popover.\n * If provided, the popover will be positioned relative to this element instead of the trigger.\n */\n readonly anchor: Signal<HTMLElement | null>;\n /**\n * Define whether to track the trigger element position on every animation frame.\n * Useful for moving elements like slider thumbs.\n * @default false\n */\n readonly trackPosition: Signal<boolean>;\n /**\n * Define the cooldown duration in milliseconds.\n * When moving from one popover to another within this duration,\n * the showDelay is skipped for the new popover.\n * @default 0\n */\n readonly cooldown: Signal<number>;\n /**\n * The overlay that manages the popover\n * @internal\n */\n readonly overlay: Signal<NgpOverlay<T> | null>;\n /**\n * The open state of the popover.\n * @internal\n */\n readonly open: Signal<boolean>;\n /** @internal onDestroy callback */\n destroy: () => void;\n /**\n * Set the container in which the popover should be attached. Takes effect the\n * next time the popover is opened; it does not move a popover that is already\n * open.\n * @param container - The new container\n */\n setContainer: (container: HTMLElement | string | null) => void;\n /**\n * Show the popover.\n * @returns A promise that resolves when the popover has been shown\n */\n show: () => Promise<void>;\n /**\n * @internal\n * Hide the popover.\n * @returns A promise that resolves when the popover has been hidden\n */\n hide: (origin: FocusOrigin) => Promise<void>;\n}\n\nexport interface NgpPopoverTriggerProps<T> {\n /** Access the popover template ref. */\n readonly popover?: Signal<NgpOverlayContent<T> | undefined>;\n /**\n * Define if the trigger should be disabled.\n * @default false\n */\n readonly disabled?: Signal<boolean>;\n /**\n * Define the placement of the popover relative to the trigger.\n * @default 'top'\n */\n readonly placement?: Signal<NgpPopoverPlacement>;\n /**\n * Define the offset of the popover relative to the trigger.\n * Can be a number (applies to mainAxis) or an object with mainAxis, crossAxis, and alignmentAxis.\n * @default 0\n */\n readonly offset?: Signal<NgpOffset>;\n /**\n * Define the delay before the popover is displayed.\n * @default 0\n */\n readonly showDelay?: Signal<number>;\n /**\n * Define the delay before the popover is hidden.\n * @default 0\n */\n readonly hideDelay?: Signal<number>;\n /**\n * Define whether the popover should flip when there is not enough space for the popover.\n * Can be a boolean to enable/disable, or an object with padding and fallbackPlacements options.\n * @default true\n */\n readonly flip?: Signal<NgpFlip>;\n /**\n * Configure shift behavior to keep the popover in view.\n * Can be a boolean to enable/disable, or an object with padding and limiter options.\n * @default undefined (enabled by default in overlay)\n */\n readonly shift?: Signal<NgpShift>;\n /**\n * Define the container in which the popover should be attached.\n * @default document.body\n */\n readonly container?: Signal<HTMLElement | string | null>;\n /**\n * Define whether the popover should close when clicking outside of it, or a guard function.\n * @default true\n */\n readonly closeOnOutsideClick?: Signal<NgpDismissGuard<Element>>;\n /**\n * Define whether the popover should close when the escape key is pressed, or a guard function.\n * @default true\n */\n readonly closeOnEscape?: Signal<NgpDismissGuard<KeyboardEvent>>;\n /**\n * Defines how the popover behaves when the window is scrolled.\n * @default 'reposition'\n */\n readonly scrollBehavior?: Signal<'reposition' | 'block' | 'close'>;\n /**\n * Provide context to the popover. This can be used to pass data to the popover content.\n */\n readonly context?: Signal<T | undefined>;\n /**\n * Define an anchor element for positioning the popover.\n * If provided, the popover will be positioned relative to this element instead of the trigger.\n */\n readonly anchor?: Signal<HTMLElement | null>;\n /**\n * Define whether to track the trigger element position on every animation frame.\n * Useful for moving elements like slider thumbs.\n * @default false\n */\n readonly trackPosition?: Signal<boolean>;\n /**\n * Define the cooldown duration in milliseconds.\n * When moving from one popover to another within this duration,\n * the showDelay is skipped for the new popover.\n * @default 0\n */\n readonly cooldown?: Signal<number>;\n /** Callback fired when the open state changes. */\n readonly onOpenChange?: (value: boolean) => void;\n}\n\nexport const [\n NgpPopoverTriggerStateToken,\n ngpPopoverTrigger,\n _injectPopoverTriggerState,\n providePopoverTriggerState,\n] = createPrimitive(\n 'NgpPopoverTrigger',\n <T>({\n popover: _popover = signal<NgpOverlayContent<T> | undefined>(undefined),\n disabled = signal<boolean>(false),\n placement = signal<NgpPopoverPlacement>('bottom'),\n offset = signal<NgpOffset>(4),\n showDelay = signal<number>(0),\n hideDelay = signal<number>(0),\n flip = signal<NgpFlip>(true),\n shift = signal<NgpShift>(undefined),\n container: _container,\n closeOnOutsideClick = signal<NgpDismissGuard<Element>>(true),\n closeOnEscape = signal<NgpDismissGuard<KeyboardEvent>>(true),\n scrollBehavior = signal<'reposition' | 'block' | 'close'>('reposition'),\n context = signal<T | undefined>(undefined),\n anchor = signal<HTMLElement | null>(null),\n trackPosition = signal<boolean>(false),\n cooldown = signal<number>(0),\n onOpenChange,\n }: NgpPopoverTriggerProps<T>): NgpPopoverTriggerState<T> => {\n const elementRef = injectElementRef<HTMLElement>();\n const viewContainerRef = inject(ViewContainerRef);\n const injector = inject(Injector);\n\n const popover = controlled(_popover);\n const container = controlled(_container, 'body');\n\n const overlay = signal<NgpOverlay<T> | null>(null);\n const open = computed(() => overlay()?.isOpen() ?? false);\n\n // Host binding\n attrBinding(elementRef, 'aria-expanded', () => (open() ? 'true' : 'false'));\n // the popover is a focus-trapped, dialog-like overlay, so advertise the popup type\n attrBinding(elementRef, 'aria-haspopup', 'dialog');\n attrBinding(elementRef, 'aria-describedby', () => overlay()?.ariaDescribedBy());\n // reference the controlled popover by id while it is open (it does not exist when closed)\n attrBinding(elementRef, 'aria-controls', () => (open() ? (overlay()?.id() ?? null) : null));\n dataBinding(elementRef, 'data-open', open);\n dataBinding(elementRef, 'data-placement', placement);\n dataBinding(elementRef, 'data-disabled', disabled);\n\n // Event listener\n listener(elementRef, 'click', toggle);\n\n function destroy(): void {\n overlay()?.destroy();\n }\n\n function createOverlayInstance(): void {\n const popoverInstance = popover();\n\n if (!popoverInstance) {\n throw new Error('Popover must be either a TemplateRef or a ComponentType');\n }\n\n // Create config for the overlay\n const config: NgpOverlayConfig<T> = {\n content: popoverInstance,\n triggerElement: elementRef.nativeElement,\n anchorElement: anchor(),\n injector: injector,\n context: context,\n container: container(),\n placement: placement,\n offset: offset(),\n flip: flip(),\n shift: shift(),\n showDelay: showDelay(),\n hideDelay: hideDelay(),\n closeOnOutsideClick: closeOnOutsideClick(),\n closeOnEscape: closeOnEscape(),\n restoreFocus: true,\n scrollBehaviour: scrollBehavior(),\n viewContainerRef: viewContainerRef,\n trackPosition: trackPosition(),\n overlayType: 'popover',\n cooldown: cooldown(),\n onClose: () => onOpenChange?.(false),\n };\n\n overlay.set(createOverlay(config));\n }\n\n function toggle(event: MouseEvent): void {\n // if the trigger is disabled then do not toggle the popover\n if (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 popover is open then hide it\n if (open()) {\n hide(origin);\n } else {\n show();\n }\n }\n\n async function show(): Promise<void> {\n // If the trigger is disabled, don't show the popover\n if (disabled()) {\n return;\n }\n\n // Create the overlay if it doesn't exist yet\n if (!overlay()) {\n createOverlayInstance();\n }\n\n // Show the overlay\n await overlay()?.show();\n\n if (open()) {\n onOpenChange?.(true);\n }\n }\n\n async function hide(origin: FocusOrigin): Promise<void> {\n // If the trigger is disabled or the popover is not open, do nothing\n if (disabled() || !open()) {\n return;\n }\n\n // Hide the overlay\n await overlay()?.hide({ origin });\n }\n\n function setContainer(newContainer: HTMLElement | string | null): void {\n container.set(newContainer);\n }\n\n return {\n elementRef,\n popover,\n disabled,\n placement,\n offset,\n showDelay,\n hideDelay,\n flip,\n shift,\n container: deprecatedSetter(container, 'setContainer', setContainer),\n closeOnOutsideClick,\n closeOnEscape,\n scrollBehavior,\n context,\n anchor,\n trackPosition,\n cooldown,\n overlay,\n open,\n destroy,\n setContainer,\n show,\n hide,\n } satisfies NgpPopoverTriggerState<T>;\n },\n);\n\nexport function injectPopoverTriggerState<T>(\n options?: StateInjectionOptions,\n): Signal<NgpPopoverTriggerState<T>> {\n return _injectPopoverTriggerState(options) as Signal<NgpPopoverTriggerState<T>>;\n}\n\nexport type NgpPopoverPlacement =\n | 'top'\n | 'right'\n | 'bottom'\n | 'left'\n | 'top-start'\n | 'top-end'\n | 'right-start'\n | 'right-end'\n | 'bottom-start'\n | 'bottom-end'\n | 'left-start'\n | 'left-end';\n","import { FocusOrigin } from '@angular/cdk/a11y';\nimport { BooleanInput, NumberInput } from '@angular/cdk/coercion';\nimport {\n booleanAttribute,\n Directive,\n input,\n numberAttribute,\n OnDestroy,\n output,\n} from '@angular/core';\nimport {\n coerceFlip,\n dismissGuardAttribute,\n NgpDismissGuard,\n NgpDismissGuardInput,\n NgpFlip,\n NgpFlipInput,\n NgpOverlayContent,\n coerceOffset,\n NgpOffset,\n NgpOffsetInput,\n coerceShift,\n NgpShift,\n NgpShiftInput,\n} from 'ng-primitives/portal';\nimport { injectPopoverConfig } from '../config/popover-config';\nimport {\n NgpPopoverPlacement,\n ngpPopoverTrigger,\n providePopoverTriggerState,\n} from './popover-trigger-state';\n\n/**\n * Apply the `ngpPopoverTrigger` directive to an element that triggers the popover to show.\n */\n@Directive({\n selector: '[ngpPopoverTrigger]',\n exportAs: 'ngpPopoverTrigger',\n providers: [providePopoverTriggerState({ inherit: false })],\n})\nexport class NgpPopoverTrigger<T = null> implements OnDestroy {\n /**\n * Access the global popover configuration.\n */\n private readonly config = injectPopoverConfig();\n\n /**\n * Access the popover template ref.\n */\n readonly popover = input<NgpOverlayContent<T>>(undefined, {\n alias: 'ngpPopoverTrigger',\n });\n\n /**\n * Define if the trigger should be disabled.\n * @default false\n */\n readonly disabled = input<boolean, BooleanInput>(false, {\n alias: 'ngpPopoverTriggerDisabled',\n transform: booleanAttribute,\n });\n\n /**\n * Define the placement of the popover relative to the trigger.\n * @default 'top'\n */\n readonly placement = input<NgpPopoverPlacement>(this.config.placement, {\n alias: 'ngpPopoverTriggerPlacement',\n });\n\n /**\n * Define the offset of the popover relative to the trigger.\n * Can be a number (applies to mainAxis) or an object with mainAxis, crossAxis, and alignmentAxis.\n * @default 0\n */\n readonly offset = input<NgpOffset, NgpOffsetInput>(this.config.offset, {\n alias: 'ngpPopoverTriggerOffset',\n transform: coerceOffset,\n });\n\n /**\n * Define the delay before the popover is displayed.\n * @default 0\n */\n readonly showDelay = input<number, NumberInput>(this.config.showDelay, {\n alias: 'ngpPopoverTriggerShowDelay',\n transform: numberAttribute,\n });\n\n /**\n * Define the delay before the popover is hidden.\n * @default 0\n */\n readonly hideDelay = input<number, NumberInput>(this.config.hideDelay, {\n alias: 'ngpPopoverTriggerHideDelay',\n transform: numberAttribute,\n });\n\n /**\n * Define whether the popover should flip when there is not enough space for the popover.\n * Can be a boolean to enable/disable, or an object with padding and fallbackPlacements options.\n * @default true\n */\n readonly flip = input<NgpFlip, NgpFlipInput>(this.config.flip, {\n alias: 'ngpPopoverTriggerFlip',\n transform: coerceFlip,\n });\n\n /**\n * Configure shift behavior to keep the popover in view.\n * Can be a boolean to enable/disable, or an object with padding and limiter options.\n * @default undefined (enabled by default in overlay)\n */\n readonly shift = input<NgpShift, NgpShiftInput>(this.config.shift, {\n alias: 'ngpPopoverTriggerShift',\n transform: coerceShift,\n });\n\n /**\n * Define the container in which the popover should be attached.\n * @default document.body\n */\n readonly container = input<HTMLElement | string | null>(this.config.container, {\n alias: 'ngpPopoverTriggerContainer',\n });\n\n /**\n * Define whether the popover should close when clicking outside of it, or a guard function.\n * @default true\n */\n readonly closeOnOutsideClick = input<NgpDismissGuard<Element>, NgpDismissGuardInput<Element>>(\n this.config.closeOnOutsideClick,\n {\n alias: 'ngpPopoverTriggerCloseOnOutsideClick',\n transform: dismissGuardAttribute,\n },\n );\n\n /**\n * Define whether the popover should close when the escape key is pressed, or a guard function.\n * @default true\n */\n readonly closeOnEscape = input<\n NgpDismissGuard<KeyboardEvent>,\n NgpDismissGuardInput<KeyboardEvent>\n >(this.config.closeOnEscape, {\n alias: 'ngpPopoverTriggerCloseOnEscape',\n transform: dismissGuardAttribute,\n });\n\n /**\n * Defines how the popover behaves when the window is scrolled.\n * @default 'reposition'\n */\n readonly scrollBehavior = input<'reposition' | 'block' | 'close'>(this.config.scrollBehavior, {\n alias: 'ngpPopoverTriggerScrollBehavior',\n });\n\n /**\n * Provide context to the popover. This can be used to pass data to the popover content.\n */\n readonly context = input<T>(undefined, {\n alias: 'ngpPopoverTriggerContext',\n });\n\n /**\n * Define an anchor element for positioning the popover.\n * If provided, the popover will be positioned relative to this element instead of the trigger.\n */\n readonly anchor = input<HTMLElement | null>(null, {\n alias: 'ngpPopoverTriggerAnchor',\n });\n\n /**\n * Define whether to track the trigger element position on every animation frame.\n * Useful for moving elements like slider thumbs.\n * @default false\n */\n readonly trackPosition = input<boolean, BooleanInput>(this.config.trackPosition, {\n alias: 'ngpPopoverTriggerTrackPosition',\n transform: booleanAttribute,\n });\n\n /**\n * Define the cooldown duration in milliseconds.\n * When moving from one popover to another within this duration,\n * the showDelay is skipped for the new popover.\n * @default 0\n */\n readonly cooldown = input<number, NumberInput>(this.config.cooldown, {\n alias: 'ngpPopoverTriggerCooldown',\n transform: numberAttribute,\n });\n\n /**\n * Event emitted when the popover open state changes.\n */\n readonly openChange = output<boolean>({\n alias: 'ngpPopoverTriggerOpenChange',\n });\n\n /**\n * The popover trigger state.\n */\n protected readonly state = ngpPopoverTrigger({\n popover: this.popover,\n disabled: this.disabled,\n placement: this.placement,\n offset: this.offset,\n showDelay: this.showDelay,\n hideDelay: this.hideDelay,\n flip: this.flip,\n shift: this.shift,\n container: this.container,\n closeOnOutsideClick: this.closeOnOutsideClick,\n closeOnEscape: this.closeOnEscape,\n scrollBehavior: this.scrollBehavior,\n context: this.context,\n anchor: this.anchor,\n trackPosition: this.trackPosition,\n cooldown: this.cooldown,\n onOpenChange: (value: boolean) => this.openChange.emit(value),\n });\n\n ngOnDestroy(): void {\n this.state.destroy();\n }\n\n /**\n * Show the popover.\n * @returns A promise that resolves when the popover has been shown\n */\n show(): Promise<void> {\n return this.state.show();\n }\n\n /**\n * @internal\n * Hide the popover.\n * @returns A promise that resolves when the popover has been hidden\n */\n hide(origin: FocusOrigin = 'program'): Promise<void> {\n return this.state.hide(origin);\n }\n}\n","import { signal, Signal } from '@angular/core';\nimport { explicitEffect, injectElementRef } from 'ng-primitives/internal';\nimport { injectOverlay } from 'ng-primitives/portal';\nimport {\n attrBinding,\n controlled,\n createPrimitive,\n dataBinding,\n styleBinding,\n} from 'ng-primitives/state';\n\nexport interface NgpPopoverState {\n /** The unique id of the tooltip. */\n readonly id: Signal<string>;\n}\n\nexport interface NgpPopoverProps {\n /** The unique id of the tooltip. */\n readonly id?: Signal<string>;\n}\n\nexport const [NgpPopoverStateToken, ngpPopover, injectPopoverState, providePopoverState] =\n createPrimitive('NgpPopover', ({ id: _id = signal<string>('') }: NgpPopoverProps) => {\n const elementRef = injectElementRef<HTMLElement>();\n\n const overlay = injectOverlay();\n const id = controlled(_id);\n\n id.set(overlay.id());\n\n // Host binding\n attrBinding(elementRef, 'role', 'dialog');\n attrBinding(elementRef, 'id', id);\n styleBinding(elementRef, 'left.px', () => overlay.position().x ?? null);\n styleBinding(elementRef, 'top.px', () => overlay.position().y ?? null);\n styleBinding(elementRef, '--ngp-popover-trigger-width.px', () => overlay.triggerWidth());\n styleBinding(elementRef, '--ngp-popover-transform-origin', () => overlay.transformOrigin());\n styleBinding(elementRef, '--ngp-popover-available-width.px', () => overlay.availableWidth());\n styleBinding(elementRef, '--ngp-popover-available-height.px', () => overlay.availableHeight());\n dataBinding(elementRef, 'data-placement', () => overlay.finalPlacement() ?? null);\n dataBinding(elementRef, 'data-overlay', '');\n\n // Effect handle\n explicitEffect([id], ([id]) => overlay.id.set(id));\n\n return {\n id,\n } satisfies NgpPopoverState;\n });\n","import { Directive, input } from '@angular/core';\nimport { NgpFocusTrap } from 'ng-primitives/focus-trap';\nimport { provideControlContainerIsolation } from 'ng-primitives/portal';\nimport { ngpPopover, providePopoverState } from './popover-state';\n\n/**\n * Apply the `ngpPopover` directive to an element that represents the popover. This typically would be a `div` inside an `ng-template`.\n */\n@Directive({\n selector: '[ngpPopover]',\n exportAs: 'ngpPopover',\n hostDirectives: [NgpFocusTrap],\n providers: [providePopoverState(), provideControlContainerIsolation()],\n})\nexport class NgpPopover {\n /**\n * The unique id of the tooltip.\n */\n readonly id = input('');\n\n protected readonly state = ngpPopover({\n id: this.id,\n });\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ import { injectElementRef } from 'ng-primitives/internal';
|
|
|
4
4
|
import { createPrimitive, controlled, attrBinding, dataBinding, deprecatedSetter, styleBinding } from 'ng-primitives/state';
|
|
5
5
|
import { uniqueId } from 'ng-primitives/utils';
|
|
6
6
|
|
|
7
|
-
const [NgpProgressStateToken, ngpProgress, injectProgressState, provideProgressState] = createPrimitive('NgpProgress', ({ valueLabel: _valueLabel = signal((value, max) => `${Math.round((value / max) * 100)}%`), value: _value = signal(null), min: _min = signal(0), max: _max = signal(100), id = signal(uniqueId('ngp-progress')), }) => {
|
|
7
|
+
const [NgpProgressStateToken, ngpProgress, injectProgressState, provideProgressState] = createPrimitive('NgpProgress', ({ valueLabel: _valueLabel = signal((value, max, min) => `${max === min ? 0 : Math.round(((value - min) / (max - min)) * 100)}%`), value: _value = signal(null), min: _min = signal(0), max: _max = signal(100), id = signal(uniqueId('ngp-progress')), }) => {
|
|
8
8
|
const element = injectElementRef();
|
|
9
9
|
// Controlled properties
|
|
10
10
|
const value = controlled(_value);
|
|
@@ -19,20 +19,35 @@ const [NgpProgressStateToken, ngpProgress, injectProgressState, provideProgressS
|
|
|
19
19
|
/**
|
|
20
20
|
* Determine if the progress is in a progressing state.
|
|
21
21
|
*/
|
|
22
|
-
const progressing = computed(() =>
|
|
22
|
+
const progressing = computed(() => !indeterminate() && valueNow() > min() && valueNow() < max(), ...(ngDevMode ? [{ debugName: "progressing" }] : /* istanbul ignore next */ []));
|
|
23
23
|
/**
|
|
24
24
|
* Determine if the progress is complete.
|
|
25
25
|
*/
|
|
26
|
-
const complete = computed(() =>
|
|
26
|
+
const complete = computed(() => !indeterminate() && valueNow() >= max() && max() > min(), ...(ngDevMode ? [{ debugName: "complete" }] : /* istanbul ignore next */ []));
|
|
27
27
|
/**
|
|
28
|
-
*
|
|
28
|
+
* The raw value exposed via `aria-valuenow`, clamped to the [min, max] range.
|
|
29
|
+
* Per the ARIA progressbar pattern, `aria-valuenow` is the actual value on the
|
|
30
|
+
* same scale as `aria-valuemin`/`aria-valuemax`, not a 0-100 percentage. It is
|
|
31
|
+
* omitted entirely (null) while the progress is indeterminate.
|
|
29
32
|
*/
|
|
30
|
-
const
|
|
33
|
+
const valueNow = computed(() => {
|
|
31
34
|
const currentValue = value();
|
|
35
|
+
if (currentValue == null) {
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
return Math.min(Math.max(currentValue, min()), max());
|
|
39
|
+
}, ...(ngDevMode ? [{ debugName: "valueNow" }] : /* istanbul ignore next */ []));
|
|
40
|
+
/**
|
|
41
|
+
* Get the progress value text. Empty while indeterminate; the
|
|
42
|
+
* aria-valuetext binding omits the attribute in that case.
|
|
43
|
+
*/
|
|
44
|
+
const valueText = computed(() => {
|
|
45
|
+
const currentValue = valueNow();
|
|
32
46
|
if (currentValue == null) {
|
|
33
47
|
return '';
|
|
34
48
|
}
|
|
35
|
-
|
|
49
|
+
// use the clamped value so aria-valuetext stays consistent with aria-valuenow
|
|
50
|
+
return valueLabel()(currentValue, max(), min());
|
|
36
51
|
}, ...(ngDevMode ? [{ debugName: "valueText" }] : /* istanbul ignore next */ []));
|
|
37
52
|
const labelId = signal(undefined, ...(ngDevMode ? [{ debugName: "labelId" }] : /* istanbul ignore next */ []));
|
|
38
53
|
function setLabel(id) {
|
|
@@ -42,9 +57,10 @@ const [NgpProgressStateToken, ngpProgress, injectProgressState, provideProgressS
|
|
|
42
57
|
attrBinding(element, 'role', 'progressbar');
|
|
43
58
|
attrBinding(element, 'id', id);
|
|
44
59
|
attrBinding(element, 'aria-valuemax', max);
|
|
45
|
-
attrBinding(element, 'aria-valuemin',
|
|
46
|
-
attrBinding(element, 'aria-valuenow',
|
|
47
|
-
|
|
60
|
+
attrBinding(element, 'aria-valuemin', min);
|
|
61
|
+
attrBinding(element, 'aria-valuenow', valueNow);
|
|
62
|
+
// omit the attribute entirely while indeterminate rather than binding an empty string
|
|
63
|
+
attrBinding(element, 'aria-valuetext', () => (indeterminate() ? null : valueText()));
|
|
48
64
|
attrBinding(element, 'aria-labelledby', () => (labelId() ? labelId() : null));
|
|
49
65
|
dataBinding(element, 'data-progressing', () => progressing());
|
|
50
66
|
dataBinding(element, 'data-indeterminate', () => indeterminate());
|
|
@@ -82,7 +98,15 @@ const [NgpProgressIndicatorStateToken, ngpProgressIndicator] = createPrimitive('
|
|
|
82
98
|
const min = state().min();
|
|
83
99
|
const max = state().max();
|
|
84
100
|
const value = state().value();
|
|
85
|
-
|
|
101
|
+
if (value === null) {
|
|
102
|
+
return null;
|
|
103
|
+
}
|
|
104
|
+
// guard the zero-length range so we never divide by zero (NaN width)
|
|
105
|
+
if (max <= min) {
|
|
106
|
+
return value >= max ? 100 : 0;
|
|
107
|
+
}
|
|
108
|
+
// clamp so an out-of-range value can't push the bar past its track or negative
|
|
109
|
+
return Math.min(100, Math.max(0, ((value - min) / (max - min)) * 100));
|
|
86
110
|
}, ...(ngDevMode ? [{ debugName: "percentage" }] : /* istanbul ignore next */ []));
|
|
87
111
|
styleBinding(element, 'width.%', percentage);
|
|
88
112
|
return {};
|
|
@@ -213,9 +237,10 @@ class NgpProgress {
|
|
|
213
237
|
* Define a function that returns the progress value label.
|
|
214
238
|
* @param value The current value
|
|
215
239
|
* @param max The maximum value
|
|
240
|
+
* @param min The minimum value
|
|
216
241
|
* @returns The value label
|
|
217
242
|
*/
|
|
218
|
-
this.valueLabel = input((value, max) => `${Math.round((value / max) * 100)}%`, { ...(ngDevMode ? { debugName: "valueLabel" } : /* istanbul ignore next */ {}), alias: 'ngpProgressValueLabel' });
|
|
243
|
+
this.valueLabel = input((value, max, min) => `${max === min ? 0 : Math.round(((value - min) / (max - min)) * 100)}%`, { ...(ngDevMode ? { debugName: "valueLabel" } : /* istanbul ignore next */ {}), alias: 'ngpProgressValueLabel' });
|
|
219
244
|
/**
|
|
220
245
|
* The unique identifier for the progress.
|
|
221
246
|
*/
|