ng-primitives 0.2.1 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/accordion/accordion/accordion.directive.d.ts +1 -1
  2. package/date-picker/README.md +3 -0
  3. package/date-picker/date-picker/date-picker.directive.d.ts +61 -0
  4. package/date-picker/date-picker/date-picker.token.d.ts +14 -0
  5. package/date-picker/date-picker-cell/date-picker-cell.directive.d.ts +17 -0
  6. package/date-picker/date-picker-cell/date-picker-cell.token.d.ts +14 -0
  7. package/date-picker/date-picker-cell-render/date-picker-cell-render.directive.d.ts +43 -0
  8. package/date-picker/date-picker-cell-render/date-picker-cell-render.token.d.ts +19 -0
  9. package/date-picker/date-picker-date-button/date-picker-date-button.directive.d.ts +99 -0
  10. package/date-picker/date-picker-date-button/date-picker-date-button.token.d.ts +14 -0
  11. package/date-picker/date-picker-grid/date-picker-grid.directive.d.ts +13 -0
  12. package/date-picker/date-picker-grid/date-picker-grid.token.d.ts +14 -0
  13. package/date-picker/date-picker-label/date-picker-label.directive.d.ts +17 -0
  14. package/date-picker/date-picker-label/date-picker-label.token.d.ts +14 -0
  15. package/date-picker/date-picker-next-month/date-picker-next-month.directive.d.ts +32 -0
  16. package/date-picker/date-picker-next-month/date-picker-next-month.token.d.ts +14 -0
  17. package/date-picker/date-picker-previous-month/date-picker-previous-month.directive.d.ts +32 -0
  18. package/date-picker/date-picker-previous-month/date-picker-previous-month.token.d.ts +14 -0
  19. package/date-picker/date-picker-row-render/date-picker-row-render.directive.d.ts +49 -0
  20. package/date-picker/date-picker-row-render/date-picker-row-render.token.d.ts +19 -0
  21. package/date-picker/index.d.ts +25 -0
  22. package/date-time/README.md +3 -0
  23. package/date-time/date-adapter/date-adapter.d.ts +169 -0
  24. package/date-time/date-adapter/date-adapter.token.d.ts +18 -0
  25. package/date-time/index.d.ts +9 -0
  26. package/date-time/native-date-adapter/native-date-adapter.d.ts +106 -0
  27. package/esm2022/date-picker/date-picker/date-picker.directive.mjs +117 -0
  28. package/esm2022/date-picker/date-picker/date-picker.token.mjs +16 -0
  29. package/esm2022/date-picker/date-picker-cell/date-picker-cell.directive.mjs +50 -0
  30. package/esm2022/date-picker/date-picker-cell/date-picker-cell.token.mjs +16 -0
  31. package/esm2022/date-picker/date-picker-cell-render/date-picker-cell-render.directive.mjs +72 -0
  32. package/esm2022/date-picker/date-picker-cell-render/date-picker-cell-render.token.mjs +23 -0
  33. package/esm2022/date-picker/date-picker-date-button/date-picker-date-button.directive.mjs +277 -0
  34. package/esm2022/date-picker/date-picker-date-button/date-picker-date-button.token.mjs +16 -0
  35. package/esm2022/date-picker/date-picker-grid/date-picker-grid.directive.mjs +40 -0
  36. package/esm2022/date-picker/date-picker-grid/date-picker-grid.token.mjs +16 -0
  37. package/esm2022/date-picker/date-picker-label/date-picker-label.directive.mjs +47 -0
  38. package/esm2022/date-picker/date-picker-label/date-picker-label.token.mjs +16 -0
  39. package/esm2022/date-picker/date-picker-next-month/date-picker-next-month.directive.mjs +103 -0
  40. package/esm2022/date-picker/date-picker-next-month/date-picker-next-month.token.mjs +16 -0
  41. package/esm2022/date-picker/date-picker-previous-month/date-picker-previous-month.directive.mjs +104 -0
  42. package/esm2022/date-picker/date-picker-previous-month/date-picker-previous-month.token.mjs +16 -0
  43. package/esm2022/date-picker/date-picker-row-render/date-picker-row-render.directive.mjs +118 -0
  44. package/esm2022/date-picker/date-picker-row-render/date-picker-row-render.token.mjs +23 -0
  45. package/esm2022/date-picker/index.mjs +26 -0
  46. package/esm2022/date-picker/ng-primitives-date-picker.mjs +5 -0
  47. package/esm2022/date-time/date-adapter/date-adapter.mjs +9 -0
  48. package/esm2022/date-time/date-adapter/date-adapter.token.mjs +24 -0
  49. package/esm2022/date-time/index.mjs +9 -0
  50. package/esm2022/date-time/native-date-adapter/native-date-adapter.mjs +149 -0
  51. package/esm2022/date-time/ng-primitives-date-time.mjs +5 -0
  52. package/esm2022/interactions/hover/hover.directive.mjs +9 -10
  53. package/esm2022/search/index.mjs +3 -1
  54. package/esm2022/search/search-field/search-field.directive.mjs +1 -1
  55. package/esm2022/search/search-field-clear/search-field-clear.directive.mjs +44 -0
  56. package/esm2022/search/search-field-clear/search-field-clear.token.mjs +16 -0
  57. package/fesm2022/ng-primitives-date-picker.mjs +1044 -0
  58. package/fesm2022/ng-primitives-date-picker.mjs.map +1 -0
  59. package/fesm2022/ng-primitives-date-time.mjs +187 -0
  60. package/fesm2022/ng-primitives-date-time.mjs.map +1 -0
  61. package/fesm2022/ng-primitives-interactions.mjs +8 -10
  62. package/fesm2022/ng-primitives-interactions.mjs.map +1 -1
  63. package/fesm2022/ng-primitives-search.mjs +57 -2
  64. package/fesm2022/ng-primitives-search.mjs.map +1 -1
  65. package/interactions/hover/hover.directive.d.ts +3 -3
  66. package/package.json +24 -7
  67. package/search/index.d.ts +2 -0
  68. package/search/search-field/search-field.directive.d.ts +2 -2
  69. package/search/search-field-clear/search-field-clear.directive.d.ts +13 -0
  70. package/search/search-field-clear/search-field-clear.token.d.ts +14 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ng-primitives-date-picker.mjs","sources":["../../../../packages/ng-primitives/date-picker/src/date-picker-row-render/date-picker-row-render.token.ts","../../../../packages/ng-primitives/date-picker/src/date-picker-cell-render/date-picker-cell-render.token.ts","../../../../packages/ng-primitives/date-picker/src/date-picker-cell-render/date-picker-cell-render.directive.ts","../../../../packages/ng-primitives/date-picker/src/date-picker/date-picker.token.ts","../../../../packages/ng-primitives/date-picker/src/date-picker-date-button/date-picker-date-button.token.ts","../../../../packages/ng-primitives/date-picker/src/date-picker-date-button/date-picker-date-button.directive.ts","../../../../packages/ng-primitives/date-picker/src/date-picker-grid/date-picker-grid.token.ts","../../../../packages/ng-primitives/date-picker/src/date-picker-grid/date-picker-grid.directive.ts","../../../../packages/ng-primitives/date-picker/src/date-picker-label/date-picker-label.token.ts","../../../../packages/ng-primitives/date-picker/src/date-picker-label/date-picker-label.directive.ts","../../../../packages/ng-primitives/date-picker/src/date-picker-next-month/date-picker-next-month.token.ts","../../../../packages/ng-primitives/date-picker/src/date-picker-next-month/date-picker-next-month.directive.ts","../../../../packages/ng-primitives/date-picker/src/date-picker-previous-month/date-picker-previous-month.token.ts","../../../../packages/ng-primitives/date-picker/src/date-picker-previous-month/date-picker-previous-month.directive.ts","../../../../packages/ng-primitives/date-picker/src/date-picker-row-render/date-picker-row-render.directive.ts","../../../../packages/ng-primitives/date-picker/src/date-picker/date-picker.directive.ts","../../../../packages/ng-primitives/date-picker/src/date-picker-cell/date-picker-cell.token.ts","../../../../packages/ng-primitives/date-picker/src/date-picker-cell/date-picker-cell.directive.ts","../../../../packages/ng-primitives/date-picker/src/index.ts","../../../../packages/ng-primitives/date-picker/src/ng-primitives-date-picker.ts"],"sourcesContent":["/**\n * Copyright © 2024 Angular Primitives.\n * https://github.com/ng-primitives/ng-primitives\n *\n * This source code is licensed under the Apache 2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { InjectionToken, inject } from '@angular/core';\nimport type { NgpDatePickerRowRender } from './date-picker-row-render.directive';\n\nexport const NgpDatePickerRowRenderToken = new InjectionToken<NgpDatePickerRowRender<unknown>>(\n 'NgpDatePickerRowRenderToken',\n);\n\n/**\n * Inject the DatePickerRowRender directive instance\n */\nexport function injectDatePickerRowRender<T>(): NgpDatePickerRowRender<T> {\n return inject(NgpDatePickerRowRenderToken) as NgpDatePickerRowRender<T>;\n}\n\nexport const NgpDatePickerWeekToken = new InjectionToken<unknown[]>('NgpDatePickerWeekToken');\n\n/**\n * Inject current week days\n */\nexport function injectDatePickerWeek<T>(): T[] {\n return inject(NgpDatePickerWeekToken) as T[];\n}\n","/**\n * Copyright © 2024 Angular Primitives.\n * https://github.com/ng-primitives/ng-primitives\n *\n * This source code is licensed under the Apache 2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { InjectionToken, inject } from '@angular/core';\nimport type { NgpDatePickerCellRender } from './date-picker-cell-render.directive';\n\nexport const NgpDatePickerCellRenderToken = new InjectionToken<NgpDatePickerCellRender<unknown>>(\n 'NgpDatePickerCellRenderToken',\n);\n\n/**\n * Inject the DatePickerCell directive instance\n */\nexport function injectDatePickerCellRender<T>(): NgpDatePickerCellRender<T> {\n return inject(NgpDatePickerCellRenderToken) as NgpDatePickerCellRender<T>;\n}\n\nexport const NgpDatePickerCellDateToken = new InjectionToken<unknown>('NgpDatePickerCellDateToken');\n\n/**\n * Inject current cell date\n */\nexport function injectDatePickerCellDate<T>(): T {\n return inject(NgpDatePickerCellDateToken) as T;\n}\n","/**\n * Copyright © 2024 Angular Primitives.\n * https://github.com/ng-primitives/ng-primitives\n *\n * This source code is licensed under the Apache 2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport {\n Directive,\n EmbeddedViewRef,\n inject,\n Injector,\n OnDestroy,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\nimport { injectDatePickerWeek } from '../date-picker-row-render/date-picker-row-render.token';\nimport {\n NgpDatePickerCellDateToken,\n NgpDatePickerCellRenderToken,\n} from './date-picker-cell-render.token';\n\n@Directive({\n standalone: true,\n selector: '[ngpDatePickerCellRender]',\n exportAs: 'ngpDatePickerCellRender',\n providers: [{ provide: NgpDatePickerCellRenderToken, useExisting: NgpDatePickerCellRender }],\n})\nexport class NgpDatePickerCellRender<T> implements OnDestroy {\n /**\n * Access the template ref for the cell.\n */\n private readonly templateRef = inject(TemplateRef);\n\n /**\n * Access the view container ref.\n */\n private readonly viewContainerRef = inject(ViewContainerRef);\n\n /**\n * Access the dates in the week.\n */\n private readonly dates = injectDatePickerWeek<T>();\n\n /**\n * Store the view refs for the dates.\n */\n private readonly viewRefs: EmbeddedViewRef<NgpDatePickerCellContext<T>>[] = [];\n\n // Make sure the template checker knows the type of the context with which the\n // template of this directive will be rendered\n static ngTemplateContextGuard<T>(\n _: NgpDatePickerCellRender<T>,\n context: unknown,\n ): context is NgpDatePickerCellContext<T> {\n return true;\n }\n\n constructor() {\n this.renderDates();\n }\n\n /**\n * Render the dates in the week.\n */\n private renderDates(): void {\n this.viewRefs.forEach(viewRef => viewRef.destroy());\n\n for (const date of this.dates) {\n const viewRef = this.viewContainerRef.createEmbeddedView(\n this.templateRef,\n {\n $implicit: date,\n },\n {\n injector: Injector.create({\n parent: this.viewContainerRef.injector,\n providers: [{ provide: NgpDatePickerCellDateToken, useValue: date }],\n }),\n },\n );\n this.viewRefs.push(viewRef);\n }\n }\n\n /**\n * Destroy the view refs.\n */\n ngOnDestroy(): void {\n this.viewRefs.forEach(viewRef => viewRef.destroy());\n }\n}\n\ninterface NgpDatePickerCellContext<T> {\n $implicit: T;\n}\n","/**\n * Copyright © 2024 Angular Primitives.\n * https://github.com/ng-primitives/ng-primitives\n *\n * This source code is licensed under the Apache 2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { InjectionToken, inject } from '@angular/core';\nimport type { NgpDatePicker } from './date-picker.directive';\n\nexport const NgpDatePickerToken = new InjectionToken<NgpDatePicker<unknown>>('NgpDatePickerToken');\n\n/**\n * Inject the DatePicker directive instance\n */\nexport function injectDatePicker<T>(): NgpDatePicker<T> {\n return inject(NgpDatePickerToken) as NgpDatePicker<T>;\n}\n","/**\n * Copyright © 2024 Angular Primitives.\n * https://github.com/ng-primitives/ng-primitives\n *\n * This source code is licensed under the Apache 2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { InjectionToken, inject } from '@angular/core';\nimport type { NgpDatePickerDateButton } from './date-picker-date-button.directive';\n\nexport const NgpDatePickerDateButtonToken = new InjectionToken<NgpDatePickerDateButton<unknown>>(\n 'NgpDatePickerDateButtonToken',\n);\n\n/**\n * Inject the DatePickerDateButton directive instance\n */\nexport function injectDatePickerDateButton<T>(): NgpDatePickerDateButton<T> {\n return inject(NgpDatePickerDateButtonToken) as NgpDatePickerDateButton<T>;\n}\n","/**\n * Copyright © 2024 Angular Primitives.\n * https://github.com/ng-primitives/ng-primitives\n *\n * This source code is licensed under the Apache 2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { FocusMonitor } from '@angular/cdk/a11y';\nimport { computed, Directive, ElementRef, HostListener, inject } from '@angular/core';\nimport { NgpButton } from 'ng-primitives/button';\nimport { injectDateAdapter } from 'ng-primitives/date-time';\nimport { NgpCanDisable, NgpDisabledToken } from 'ng-primitives/internal';\nimport { injectDatePickerCellDate } from '../date-picker-cell-render/date-picker-cell-render.token';\nimport { injectDatePicker } from '../date-picker/date-picker.token';\nimport { NgpDatePickerDateButtonToken } from './date-picker-date-button.token';\n\n@Directive({\n standalone: true,\n selector: '[ngpDatePickerDateButton]',\n exportAs: 'ngpDatePickerDateButton',\n providers: [\n { provide: NgpDatePickerDateButtonToken, useExisting: NgpDatePickerDateButton },\n { provide: NgpDisabledToken, useExisting: NgpDatePickerDateButton },\n ],\n host: {\n '[attr.role]': '!isButton ? \"button\" : null',\n '[attr.tabindex]': 'focused() ? 0 : -1',\n '[attr.data-selected]': 'selected()',\n '[attr.data-disabled]': 'disabled()',\n '[attr.aria-disabled]': 'disabled()',\n '[attr.data-outside-month]': 'outside()',\n '[attr.data-today]': 'today()',\n },\n hostDirectives: [NgpButton],\n})\nexport class NgpDatePickerDateButton<T> implements NgpCanDisable {\n /**\n * Access the element ref.\n */\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /**\n * Access the focus monitor.\n */\n private readonly focusMonitor = inject(FocusMonitor);\n\n /**\n * Access the date picker.\n */\n private readonly datePicker = injectDatePicker<T>();\n\n /**\n * Access the date adapter.\n */\n private readonly dateAdapter = injectDateAdapter<T>();\n\n /**\n * The date this cell represents.\n */\n private readonly date = injectDatePickerCellDate<T>();\n\n /**\n * Determine if this is the focused date.\n */\n protected readonly focused = computed(() =>\n this.dateAdapter.isSameDay(this.date, this.datePicker.focusedDate()),\n );\n\n /**\n * Determine if this is the selected date.\n * @internal\n */\n readonly selected = computed(() => {\n const selected = this.datePicker.date();\n return selected && this.dateAdapter.isSameDay(this.date, selected);\n });\n\n /**\n * Determine if this date is outside the current month.\n */\n protected readonly outside = computed(\n () => !this.dateAdapter.isSameMonth(this.date, this.datePicker.focusedDate()),\n );\n\n /**\n * Determine if this date is today.\n */\n protected readonly today = computed(() =>\n this.dateAdapter.isSameDay(this.date, this.dateAdapter.now()),\n );\n\n /**\n * Determine if this date is disabled.\n * @internal\n */\n readonly disabled = computed(() => {\n const min = this.datePicker.min();\n const max = this.datePicker.max();\n\n if (this.datePicker.disabled() || this.datePicker.dateDisabled()(this.date)) {\n return true;\n }\n\n if (min && this.dateAdapter.compare(this.dateAdapter.startOfDay(this.date), min) < 0) {\n return true;\n }\n\n if (max && this.dateAdapter.compare(this.dateAdapter.startOfDay(this.date), max) > 0) {\n return true;\n }\n\n return false;\n });\n\n /**\n * Determine if the element is a button.\n */\n protected readonly isButton = this.elementRef.nativeElement.tagName === 'BUTTON';\n\n /**\n * When the button is clicked, select the date.\n */\n @HostListener('click')\n @HostListener('keydown.enter', ['$event'])\n @HostListener('keydown.space', ['$event'])\n protected select(event?: KeyboardEvent): void {\n // if the button is disabled, or is already selected, do nothing.\n if (this.disabled() || this.selected()) {\n return;\n }\n\n // because this may not be a button, we should stop the event from firing twice due to\n // us listening to both the click and the keydown.enter event.\n if (event) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n this.datePicker.date.set(this.date);\n this.datePicker.setFocusedDate(this.date, 'mouse', 'forward');\n }\n\n /**\n * Focus if this is the current focused date.\n * @internal\n */\n focus(): void {\n if (this.dateAdapter.isSameDay(this.date, this.datePicker.focusedDate())) {\n this.focusMonitor.focusVia(this.elementRef, 'keyboard');\n }\n }\n\n /**\n * Focus the previous cell.\n */\n @HostListener('keydown.arrowLeft', ['$event'])\n protected focusPrevious(event: KeyboardEvent): void {\n event.preventDefault();\n event.stopPropagation();\n\n // in rtl, the arrow keys are reversed.\n if (this.getDirection() === 'rtl') {\n this.focusDate(this.dateAdapter.add(this.datePicker.focusedDate(), { days: 1 }), 'forward');\n } else {\n this.focusDate(\n this.dateAdapter.subtract(this.datePicker.focusedDate(), { days: 1 }),\n 'backward',\n );\n }\n }\n\n /**\n * Focus the next cell.\n */\n @HostListener('keydown.arrowRight', ['$event'])\n protected focusNext(event: KeyboardEvent): void {\n event.preventDefault();\n event.stopPropagation();\n\n // in rtl, the arrow keys are reversed.\n if (this.getDirection() === 'rtl') {\n this.focusDate(\n this.dateAdapter.subtract(this.datePicker.focusedDate(), { days: 1 }),\n 'backward',\n );\n } else {\n this.focusDate(this.dateAdapter.add(this.datePicker.focusedDate(), { days: 1 }), 'forward');\n }\n }\n\n /**\n * Focus the above cell.\n */\n @HostListener('keydown.arrowUp', ['$event'])\n protected focusAbove(event: KeyboardEvent): void {\n event.preventDefault();\n event.stopPropagation();\n\n this.focusDate(\n this.dateAdapter.subtract(this.datePicker.focusedDate(), { days: 7 }),\n 'backward',\n );\n }\n\n /**\n * Focus the below cell.\n */\n @HostListener('keydown.arrowDown', ['$event'])\n protected focusBelow(event: KeyboardEvent): void {\n event.preventDefault();\n event.stopPropagation();\n\n this.focusDate(this.dateAdapter.add(this.datePicker.focusedDate(), { days: 7 }), 'forward');\n }\n\n /**\n * Focus the first date of the month.\n */\n @HostListener('keydown.home', ['$event'])\n protected focusFirst(event: KeyboardEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this.focusDate(this.dateAdapter.startOfMonth(this.datePicker.focusedDate()), 'forward');\n }\n\n /**\n * Focus the last date of the month.\n */\n @HostListener('keydown.end', ['$event'])\n protected focusLast(event: KeyboardEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this.focusDate(this.dateAdapter.endOfMonth(this.datePicker.focusedDate()), 'backward');\n }\n\n /**\n * Focus the same date in the previous month.\n */\n @HostListener('keydown.pageUp', ['$event'])\n protected focusPreviousMonth(event: KeyboardEvent): void {\n event.preventDefault();\n event.stopPropagation();\n\n const date = this.dateAdapter.getDate(this.datePicker.focusedDate());\n\n let previousMonthTarget = this.dateAdapter.startOfMonth(this.datePicker.focusedDate());\n previousMonthTarget = this.dateAdapter.subtract(previousMonthTarget, { months: 1 });\n\n const lastDay = this.dateAdapter.endOfMonth(previousMonthTarget);\n\n // if we are on a date that does not exist in the previous month, we should focus the last day of the month.\n if (date > this.dateAdapter.getDate(lastDay)) {\n this.focusDate(lastDay, 'forward');\n return;\n } else {\n this.focusDate(this.dateAdapter.set(previousMonthTarget, { day: date }), 'forward');\n }\n }\n\n /**\n * Focus the same date in the next month.\n */\n @HostListener('keydown.pageDown', ['$event'])\n protected focusNextMonth(event: KeyboardEvent): void {\n event.preventDefault();\n event.stopPropagation();\n\n const date = this.dateAdapter.getDate(this.datePicker.focusedDate());\n\n let nextMonthTarget = this.dateAdapter.startOfMonth(this.datePicker.focusedDate());\n nextMonthTarget = this.dateAdapter.add(nextMonthTarget, { months: 1 });\n\n const lastDay = this.dateAdapter.endOfMonth(nextMonthTarget);\n\n // if we are on a date that does not exist in the next month, we should focus the last day of the month.\n if (date > this.dateAdapter.getDate(lastDay)) {\n this.focusDate(lastDay, 'backward');\n return;\n } else {\n this.focusDate(this.dateAdapter.set(nextMonthTarget, { day: date }), 'backward');\n }\n }\n\n private focusDate(date: T, direction: 'forward' | 'backward'): void {\n this.datePicker.setFocusedDate(date, 'keyboard', direction);\n }\n\n /**\n * Get the direction of the element.\n */\n private getDirection(): 'ltr' | 'rtl' {\n return getComputedStyle(this.elementRef.nativeElement).direction === 'rtl' ? 'rtl' : 'ltr';\n }\n}\n","/**\n * Copyright © 2024 Angular Primitives.\n * https://github.com/ng-primitives/ng-primitives\n *\n * This source code is licensed under the Apache 2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { InjectionToken, inject } from '@angular/core';\nimport type { NgpDatePickerGrid } from './date-picker-grid.directive';\n\nexport const NgpDatePickerGridToken = new InjectionToken<NgpDatePickerGrid<unknown>>(\n 'NgpDatePickerGridToken',\n);\n\n/**\n * Inject the DatePickerGrid directive instance\n */\nexport function injectDatePickerGrid<T>(): NgpDatePickerGrid<T> {\n return inject(NgpDatePickerGridToken) as NgpDatePickerGrid<T>;\n}\n","/**\n * Copyright © 2024 Angular Primitives.\n * https://github.com/ng-primitives/ng-primitives\n *\n * This source code is licensed under the Apache 2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { computed, Directive } from '@angular/core';\nimport { injectDatePicker } from '../date-picker/date-picker.token';\nimport { NgpDatePickerGridToken } from './date-picker-grid.token';\n\n@Directive({\n standalone: true,\n selector: '[ngpDatePickerGrid]',\n exportAs: 'ngpDatePickerGrid',\n providers: [{ provide: NgpDatePickerGridToken, useExisting: NgpDatePickerGrid }],\n host: {\n role: 'grid',\n '[attr.aria-labelledby]': 'labelId()',\n '[attr.data-disabled]': 'datePicker.disabled()',\n },\n})\nexport class NgpDatePickerGrid<T> {\n /**\n * Access the date picker.\n */\n private readonly datePicker = injectDatePicker<T>();\n\n /**\n * Determine the id for the label.\n */\n protected readonly labelId = computed(() => this.datePicker.label()?.id());\n}\n","/**\n * Copyright © 2024 Angular Primitives.\n * https://github.com/ng-primitives/ng-primitives\n *\n * This source code is licensed under the Apache 2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { InjectionToken, inject } from '@angular/core';\nimport type { NgpDatePickerLabel } from './date-picker-label.directive';\n\nexport const NgpDatePickerLabelToken = new InjectionToken<NgpDatePickerLabel>(\n 'NgpDatePickerLabelToken',\n);\n\n/**\n * Inject the DatePickerLabel directive instance\n */\nexport function injectDatePickerLabel(): NgpDatePickerLabel {\n return inject(NgpDatePickerLabelToken);\n}\n","/**\n * Copyright © 2024 Angular Primitives.\n * https://github.com/ng-primitives/ng-primitives\n *\n * This source code is licensed under the Apache 2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { Directive, input } from '@angular/core';\nimport { uniqueId } from 'ng-primitives/utils';\nimport { injectDatePicker } from '../date-picker/date-picker.token';\nimport { NgpDatePickerLabelToken } from './date-picker-label.token';\n\n@Directive({\n standalone: true,\n selector: '[ngpDatePickerLabel]',\n exportAs: 'ngpDatePickerLabel',\n providers: [{ provide: NgpDatePickerLabelToken, useExisting: NgpDatePickerLabel }],\n host: {\n '[id]': 'id()',\n '[attr.aria-live]': 'ariaLive()',\n '[attr.data-disabled]': 'datePicker.disabled()',\n },\n})\nexport class NgpDatePickerLabel {\n /**\n * Access the date picker.\n */\n protected readonly datePicker = injectDatePicker<unknown>();\n\n /**\n * Define a unique id for the label.\n */\n readonly id = input(uniqueId('ngp-date-picker-label'));\n\n /**\n * Define the aria live attribute.\n */\n readonly ariaLive = input('polite', {\n alias: 'aria-live',\n });\n}\n","/**\n * Copyright © 2024 Angular Primitives.\n * https://github.com/ng-primitives/ng-primitives\n *\n * This source code is licensed under the Apache 2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { InjectionToken, inject } from '@angular/core';\nimport type { NgpDatePickerNextMonth } from './date-picker-next-month.directive';\n\nexport const NgpDatePickerNextMonthToken = new InjectionToken<NgpDatePickerNextMonth<unknown>>(\n 'NgpDatePickerNextMonthToken',\n);\n\n/**\n * Inject the DatePickerNextMonth directive instance\n */\nexport function injectDatePickerNextMonth<T>(): NgpDatePickerNextMonth<T> {\n return inject(NgpDatePickerNextMonthToken) as NgpDatePickerNextMonth<T>;\n}\n","/**\n * Copyright © 2024 Angular Primitives.\n * https://github.com/ng-primitives/ng-primitives\n *\n * This source code is licensed under the Apache 2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { computed, Directive, ElementRef, HostListener, inject } from '@angular/core';\nimport { NgpButton } from 'ng-primitives/button';\nimport { injectDateAdapter } from 'ng-primitives/date-time';\nimport { NgpCanDisable, NgpDisabledToken } from 'ng-primitives/internal';\nimport { injectDatePicker } from '../date-picker/date-picker.token';\nimport { NgpDatePickerNextMonthToken } from './date-picker-next-month.token';\n\n@Directive({\n standalone: true,\n selector: '[ngpDatePickerNextMonth]',\n exportAs: 'ngpDatePickerNextMonth',\n providers: [\n { provide: NgpDatePickerNextMonthToken, useExisting: NgpDatePickerNextMonth },\n { provide: NgpDisabledToken, useExisting: NgpDatePickerNextMonth },\n ],\n hostDirectives: [NgpButton],\n host: {\n '[attr.data-disabled]': 'disabled()',\n '[attr.aria-disabled]': 'disabled()',\n '[attr.disabled]': 'isButton && disabled() ? true : null',\n '[attr.type]': 'isButton ? \"button\" : null',\n },\n})\nexport class NgpDatePickerNextMonth<T> implements NgpCanDisable {\n /**\n * Access the element ref.\n */\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /**\n * Access the date adapter.\n */\n private readonly dateAdapter = injectDateAdapter<T>();\n\n /**\n * Access the date picker.\n */\n private readonly datePicker = injectDatePicker<T>();\n\n /**\n * Determine if this is a button element\n */\n protected readonly isButton = this.elementRef.nativeElement.tagName.toLowerCase() === 'button';\n\n /**\n * Determine if the next month is disabled.\n * @internal\n */\n readonly disabled = computed(() => {\n if (this.datePicker.disabled()) {\n return true;\n }\n\n const maxDate = this.datePicker.max();\n const lastDay = this.dateAdapter.set(\n this.dateAdapter.endOfMonth(this.datePicker.focusedDate()),\n {\n hour: 23,\n minute: 59,\n second: 59,\n millisecond: 999,\n },\n );\n\n // if there is a max date and it is equal to or before the last day of the month, disable it.\n if (maxDate && this.dateAdapter.compare(maxDate, lastDay) <= 0) {\n return true;\n }\n\n return false;\n });\n\n /**\n * Navigate to the next month.\n */\n @HostListener('click')\n protected navigateToNextMonth(): void {\n if (this.disabled()) {\n return;\n }\n\n // move focus to the first day of the next month.\n let date = this.datePicker.focusedDate();\n date = this.dateAdapter.add(date, { months: 1 });\n date = this.dateAdapter.set(date, {\n day: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0,\n });\n\n this.datePicker.setFocusedDate(date, 'mouse', 'forward');\n }\n}\n","/**\n * Copyright © 2024 Angular Primitives.\n * https://github.com/ng-primitives/ng-primitives\n *\n * This source code is licensed under the Apache 2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { InjectionToken, inject } from '@angular/core';\nimport type { NgpDatePickerPreviousMonth } from './date-picker-previous-month.directive';\n\nexport const NgpDatePickerPreviousMonthToken = new InjectionToken<\n NgpDatePickerPreviousMonth<unknown>\n>('NgpDatePickerPreviousMonthToken');\n\n/**\n * Inject the DatePickerPreviousMonth directive instance\n */\nexport function injectDatePickerPreviousMonth<T>(): NgpDatePickerPreviousMonth<T> {\n return inject(NgpDatePickerPreviousMonthToken) as NgpDatePickerPreviousMonth<T>;\n}\n","/**\n * Copyright © 2024 Angular Primitives.\n * https://github.com/ng-primitives/ng-primitives\n *\n * This source code is licensed under the Apache 2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { computed, Directive, ElementRef, HostListener, inject } from '@angular/core';\nimport { NgpButton } from 'ng-primitives/button';\nimport { injectDateAdapter } from 'ng-primitives/date-time';\nimport { NgpCanDisable, NgpDisabledToken } from 'ng-primitives/internal';\nimport { injectDatePicker } from '../date-picker/date-picker.token';\nimport { NgpDatePickerPreviousMonthToken } from './date-picker-previous-month.token';\n\n@Directive({\n standalone: true,\n selector: '[ngpDatePickerPreviousMonth]',\n exportAs: 'ngpDatePickerPreviousMonth',\n providers: [\n { provide: NgpDatePickerPreviousMonthToken, useExisting: NgpDatePickerPreviousMonth },\n { provide: NgpDisabledToken, useExisting: NgpDatePickerPreviousMonth },\n ],\n hostDirectives: [NgpButton],\n host: {\n '[attr.data-disabled]': 'disabled()',\n '[attr.aria-disabled]': 'disabled()',\n '[attr.disabled]': 'isButton && disabled() ? true : null',\n '[attr.type]': 'isButton ? \"button\" : null',\n },\n})\nexport class NgpDatePickerPreviousMonth<T> implements NgpCanDisable {\n /**\n * Access the element ref.\n */\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /**\n * Access the date adapter.\n */\n private readonly dateAdapter = injectDateAdapter<T>();\n\n /**\n * Access the date picker.\n */\n private readonly datePicker = injectDatePicker<T>();\n\n /**\n * Determine if this is a button element\n */\n protected readonly isButton = this.elementRef.nativeElement.tagName.toLowerCase() === 'button';\n\n /**\n * Determine if the next month is disabled.\n * @internal\n */\n readonly disabled = computed(() => {\n if (this.datePicker.disabled()) {\n return true;\n }\n\n const minDate = this.datePicker.min();\n\n // if the next month is out of bounds, disable it.\n const firstDay = this.dateAdapter.set(\n this.dateAdapter.startOfMonth(this.datePicker.focusedDate()),\n {\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0,\n },\n );\n\n // if there is a min date and it is equal to or after the first day of the month, disable it.\n if (minDate && this.dateAdapter.compare(minDate, firstDay) >= 0) {\n return true;\n }\n\n return false;\n });\n\n /**\n * Navigate to the previous month.\n */\n @HostListener('click')\n protected navigateToPreviouMonth(): void {\n if (this.disabled()) {\n return;\n }\n\n // move focus to the first day of the previous month.\n let date = this.datePicker.focusedDate();\n date = this.dateAdapter.subtract(date, { months: 1 });\n date = this.dateAdapter.set(date, {\n day: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0,\n });\n\n this.datePicker.setFocusedDate(date, 'mouse', 'backward');\n }\n}\n","/**\n * Copyright © 2024 Angular Primitives.\n * https://github.com/ng-primitives/ng-primitives\n *\n * This source code is licensed under the Apache 2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport {\n computed,\n Directive,\n EmbeddedViewRef,\n inject,\n Injector,\n OnDestroy,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\nimport { injectDateAdapter } from 'ng-primitives/date-time';\nimport { onChange } from 'ng-primitives/utils';\nimport { injectDatePicker } from '../date-picker/date-picker.token';\nimport {\n NgpDatePickerRowRenderToken,\n NgpDatePickerWeekToken,\n} from './date-picker-row-render.token';\n\n@Directive({\n standalone: true,\n selector: '[ngpDatePickerRowRender]',\n exportAs: 'ngpDatePickerRowRender',\n providers: [{ provide: NgpDatePickerRowRenderToken, useExisting: NgpDatePickerRowRender }],\n})\nexport class NgpDatePickerRowRender<T> implements OnDestroy {\n /**\n * Access the date adapter.\n */\n private readonly dateAdapter = injectDateAdapter<T>();\n\n /**\n * Access the date picker.\n */\n private readonly datePicker = injectDatePicker<T>();\n\n /**\n * Access the template ref for the cell.\n */\n private readonly templateRef = inject(TemplateRef);\n\n /**\n * Access the view container ref.\n */\n private readonly viewContainerRef = inject(ViewContainerRef);\n\n /**\n * Get all the days to display, this is the days of the current month\n * and the days of the previous and next month to fill the grid.\n */\n protected readonly days = computed(() => {\n const month = this.datePicker.focusedDate();\n const days: T[] = [];\n\n // Get the first and last day of the month.\n let firstDay = this.dateAdapter.startOfMonth(month);\n let lastDay = this.dateAdapter.endOfMonth(month);\n\n // find the first and last day of visible in the grid.\n firstDay = this.dateAdapter.subtract(firstDay, {\n days: this.dateAdapter.getDay(firstDay),\n });\n lastDay = this.dateAdapter.add(lastDay, {\n days: 6 - this.dateAdapter.getDay(lastDay),\n });\n\n // collect all the days to display.\n while (firstDay <= lastDay) {\n days.push(firstDay);\n firstDay = this.dateAdapter.add(firstDay, { days: 1 });\n }\n\n return days;\n });\n\n // get the weeks to display.\n protected readonly weeks = computed(() => {\n const days = this.days();\n const weeks = [];\n\n for (let i = 0; i < days.length; i += 7) {\n weeks.push(days.slice(i, i + 7));\n }\n\n return weeks;\n });\n\n /**\n * Store the embedded view refs of each rendered row.\n */\n private readonly viewRefs: EmbeddedViewRef<void>[] = [];\n\n constructor() {\n this.renderRows();\n\n // re-render the rows when the month changes.\n onChange(this.datePicker.focusedDate, (date, previousDate) => {\n if (!date || !previousDate || !this.dateAdapter.isSameMonth(date, previousDate)) {\n this.renderRows();\n }\n });\n }\n\n ngOnDestroy(): void {\n this.destroyRows();\n }\n\n /**\n * Render the row.\n */\n private renderRows(): void {\n const weeks = this.weeks();\n\n // clear the view container.\n this.destroyRows();\n\n // render the weeks.\n for (const week of weeks) {\n const viewRef = this.viewContainerRef.createEmbeddedView(this.templateRef, null, {\n injector: Injector.create({\n parent: this.viewContainerRef.injector,\n providers: [{ provide: NgpDatePickerWeekToken, useValue: week }],\n }),\n });\n this.viewRefs.push(viewRef);\n }\n }\n\n /**\n * Destroy the row.\n */\n private destroyRows(): void {\n for (const viewRef of this.viewRefs) {\n viewRef.destroy();\n }\n }\n}\n","/**\n * Copyright © 2024 Angular Primitives.\n * https://github.com/ng-primitives/ng-primitives\n *\n * This source code is licensed under the Apache 2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { FocusOrigin } from '@angular/cdk/a11y';\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport {\n afterNextRender,\n booleanAttribute,\n contentChild,\n contentChildren,\n Directive,\n inject,\n Injector,\n input,\n model,\n} from '@angular/core';\nimport { injectDateAdapter } from 'ng-primitives/date-time';\nimport { NgpDatePickerDateButtonToken } from '../date-picker-date-button/date-picker-date-button.token';\nimport { NgpDatePickerLabelToken } from '../date-picker-label/date-picker-label.token';\nimport { NgpDatePickerToken } from './date-picker.token';\n\n@Directive({\n standalone: true,\n selector: '[ngpDatePicker]',\n exportAs: 'ngpDatePicker',\n providers: [{ provide: NgpDatePickerToken, useExisting: NgpDatePicker }],\n host: {\n '[attr.data-disabled]': 'disabled()',\n },\n})\nexport class NgpDatePicker<T> {\n /**\n * Access the date adapter.\n */\n private readonly dateAdapter = injectDateAdapter<T>();\n\n /**\n * Access the injector.\n */\n private readonly injector = inject(Injector);\n\n /**\n * The minimum date that can be selected.\n */\n readonly min = input<T | undefined>(undefined, {\n alias: 'ngpDatePickerMin',\n });\n\n /**\n * The maximum date that can be selected.\n */\n readonly max = input<T | undefined>(undefined, {\n alias: 'ngpDatePickerMax',\n });\n\n /**\n * Determine if the date picker is disabled.\n */\n readonly disabled = input<boolean, BooleanInput>(false, {\n alias: 'ngpDatePickerDisabled',\n transform: booleanAttribute,\n });\n\n /**\n * A function that is called to determine if a specific date should be disabled.\n */\n readonly dateDisabled = input<(date: T) => boolean>(() => false, {\n alias: 'ngpDatePickerDateDisabled',\n });\n\n /**\n * The selected value.\n */\n readonly date = model<T | undefined>(undefined, {\n alias: 'ngpDatePickerDate',\n });\n\n /**\n * The focused value.\n */\n readonly focusedDate = model<T>(this.dateAdapter.now(), {\n alias: 'ngpDatePickerFocusedDate',\n });\n\n /**\n * Detect the label element.\n * @internal\n */\n readonly label = contentChild(NgpDatePickerLabelToken, { descendants: true });\n\n /**\n * Access all the date picker buttons\n */\n private readonly buttons = contentChildren(NgpDatePickerDateButtonToken, { descendants: true });\n\n /**\n * Set the focused date.\n * @param date The date to focus.\n * @internal\n */\n setFocusedDate(date: T, origin: FocusOrigin = 'mouse', direction: 'forward' | 'backward'): void {\n if (this.disabled()) {\n return;\n }\n\n const min = this.min();\n const max = this.max();\n\n if (min && this.dateAdapter.isBefore(date, min)) {\n date = min;\n }\n\n if (max && this.dateAdapter.isAfter(date, max)) {\n date = max;\n }\n\n // if the date is disabled, find the next available date in the specified direction.\n if (this.dateDisabled()(date)) {\n let nextDate = this.dateAdapter.add(date, { days: direction === 'forward' ? 1 : -1 });\n\n while (\n this.dateDisabled()(nextDate) ||\n (min && this.dateAdapter.isBefore(nextDate, min)) ||\n (max && this.dateAdapter.isAfter(nextDate, max))\n ) {\n nextDate = this.dateAdapter.add(nextDate, { days: direction === 'forward' ? 1 : -1 });\n }\n\n date = nextDate;\n }\n\n this.focusedDate.set(date);\n\n if (origin === 'keyboard') {\n afterNextRender(\n {\n write: () => {\n this.buttons().forEach(button => button.focus());\n },\n },\n {\n injector: this.injector,\n },\n );\n }\n }\n}\n","/**\n * Copyright © 2024 Angular Primitives.\n * https://github.com/ng-primitives/ng-primitives\n *\n * This source code is licensed under the Apache 2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { InjectionToken, inject } from '@angular/core';\nimport type { NgpDatePickerCell } from './date-picker-cell.directive';\n\nexport const NgpDatePickerCellToken = new InjectionToken<NgpDatePickerCell>(\n 'NgpDatePickerCellToken',\n);\n\n/**\n * Inject the DatePickerCell directive instance\n */\nexport function injectDatePickerCell(): NgpDatePickerCell {\n return inject(NgpDatePickerCellToken);\n}\n","/**\n * Copyright © 2024 Angular Primitives.\n * https://github.com/ng-primitives/ng-primitives\n *\n * This source code is licensed under the Apache 2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { computed, contentChild, Directive } from '@angular/core';\nimport { NgpDatePickerDateButtonToken } from '../date-picker-date-button/date-picker-date-button.token';\nimport { injectDatePicker } from '../date-picker/date-picker.token';\nimport { NgpDatePickerCellToken } from './date-picker-cell.token';\n\n@Directive({\n standalone: true,\n selector: '[ngpDatePickerCell]',\n exportAs: 'ngpDatePickerCell',\n providers: [{ provide: NgpDatePickerCellToken, useExisting: NgpDatePickerCell }],\n host: {\n role: 'gridcell',\n '[attr.data-selected]': 'datePickerButton()?.selected()',\n '[attr.aria-selected]': 'datePickerButton()?.selected()',\n '[attr.aria-disabled]': 'datePickerButton()?.disabled()',\n '[attr.data-disabled]': 'datePickerButton()?.disabled()',\n '[attr.aria-labelledby]': 'labelId()',\n },\n})\nexport class NgpDatePickerCell {\n /**\n * Access the date picker.\n */\n private readonly datePicker = injectDatePicker();\n\n /**\n * Access the child date picker date button.\n */\n protected readonly datePickerButton = contentChild(NgpDatePickerDateButtonToken, {\n descendants: true,\n });\n\n /**\n * Access the label id.\n */\n protected readonly labelId = computed(() => this.datePicker.label()?.id());\n}\n","/**\n * Copyright © 2024 Angular Primitives.\n * https://github.com/ng-primitives/ng-primitives\n *\n * This source code is licensed under the Apache 2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nexport { NgpDatePickerCellRender } from './date-picker-cell-render/date-picker-cell-render.directive';\nexport { NgpDatePickerCellRenderToken } from './date-picker-cell-render/date-picker-cell-render.token';\nexport { NgpDatePickerDateButton } from './date-picker-date-button/date-picker-date-button.directive';\nexport { NgpDatePickerDateButtonToken } from './date-picker-date-button/date-picker-date-button.token';\nexport { NgpDatePickerGrid } from './date-picker-grid/date-picker-grid.directive';\nexport { NgpDatePickerGridToken } from './date-picker-grid/date-picker-grid.token';\nexport { NgpDatePickerLabel } from './date-picker-label/date-picker-label.directive';\nexport { NgpDatePickerLabelToken } from './date-picker-label/date-picker-label.token';\nexport { NgpDatePickerNextMonth } from './date-picker-next-month/date-picker-next-month.directive';\nexport { NgpDatePickerNextMonthToken } from './date-picker-next-month/date-picker-next-month.token';\nexport { NgpDatePickerPreviousMonth } from './date-picker-previous-month/date-picker-previous-month.directive';\nexport { NgpDatePickerPreviousMonthToken } from './date-picker-previous-month/date-picker-previous-month.token';\nexport { NgpDatePickerRowRender } from './date-picker-row-render/date-picker-row-render.directive';\nexport { NgpDatePickerRowRenderToken } from './date-picker-row-render/date-picker-row-render.token';\nexport { NgpDatePicker } from './date-picker/date-picker.directive';\nexport { NgpDatePickerToken } from './date-picker/date-picker.token';\nexport { NgpDatePickerCell } from './date-picker-cell/date-picker-cell.directive';\nexport { NgpDatePickerCellToken } from './date-picker-cell/date-picker-cell.token';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,187 @@
1
+ import { InjectionToken, inject } from '@angular/core';
2
+
3
+ class NgpNativeDateAdapter {
4
+ /**
5
+ * Create a new date time object.
6
+ */
7
+ create({ day, hour, minute, month, second, year, millisecond }) {
8
+ const now = new Date();
9
+ return new Date(year ?? now.getFullYear(), month ?? now.getMonth(), day ?? now.getDate(), hour ?? now.getHours(), minute ?? now.getMinutes(), second ?? now.getSeconds(), millisecond ?? now.getMilliseconds());
10
+ }
11
+ /**
12
+ * Create a new date with the current date and time.
13
+ */
14
+ now() {
15
+ return new Date();
16
+ }
17
+ /**
18
+ * Set the year of the date time object based on a duration.
19
+ */
20
+ set(date, values) {
21
+ return new Date(values.year ?? date.getFullYear(), values.month ?? date.getMonth(), values.day ?? date.getDate(), values.hour ?? date.getHours(), values.minute ?? date.getMinutes(), values.second ?? date.getSeconds(), values.millisecond ?? date.getMilliseconds());
22
+ }
23
+ /**
24
+ * Add a duration to the date time object.
25
+ */
26
+ add(date, duration) {
27
+ return new Date(date.getFullYear() + (duration.years ?? 0), date.getMonth() + (duration.months ?? 0), date.getDate() + (duration.days ?? 0), date.getHours() + (duration.hours ?? 0), date.getMinutes() + (duration.minutes ?? 0), date.getSeconds() + (duration.seconds ?? 0), date.getMilliseconds() + (duration.milliseconds ?? 0));
28
+ }
29
+ /**
30
+ * Subtract a duration from the date time object
31
+ */
32
+ subtract(date, duration) {
33
+ return new Date(date.getFullYear() - (duration.years ?? 0), date.getMonth() - (duration.months ?? 0), date.getDate() - (duration.days ?? 0), date.getHours() - (duration.hours ?? 0), date.getMinutes() - (duration.minutes ?? 0), date.getSeconds() - (duration.seconds ?? 0), date.getMilliseconds() - (duration.milliseconds ?? 0));
34
+ }
35
+ /**
36
+ * Compare two date time objects
37
+ */
38
+ compare(a, b) {
39
+ const diff = a.getTime() - b.getTime();
40
+ return diff === 0 ? 0 : diff > 0 ? 1 : -1;
41
+ }
42
+ /**
43
+ * Determine if two date time objects are equal.
44
+ */
45
+ isEqual(a, b) {
46
+ return a.getTime() === b.getTime();
47
+ }
48
+ /**
49
+ * Determine if a date time object is before another.
50
+ */
51
+ isBefore(a, b) {
52
+ return a.getTime() < b.getTime();
53
+ }
54
+ /**
55
+ * Determine if a date time object is after another.
56
+ */
57
+ isAfter(a, b) {
58
+ return a.getTime() > b.getTime();
59
+ }
60
+ /**
61
+ * Determine if two date objects are on the same day.
62
+ */
63
+ isSameDay(a, b) {
64
+ return this.isSameYear(a, b) && this.isSameMonth(a, b) && a.getDate() === b.getDate();
65
+ }
66
+ /**
67
+ * Determine if two date objects are on the same month.
68
+ */
69
+ isSameMonth(a, b) {
70
+ return this.isSameYear(a, b) && a.getMonth() === b.getMonth();
71
+ }
72
+ /**
73
+ * Determine if two date objects are on the same year.
74
+ */
75
+ isSameYear(a, b) {
76
+ return a.getFullYear() === b.getFullYear();
77
+ }
78
+ /**
79
+ * Get the year.
80
+ */
81
+ getYear(date) {
82
+ return date.getFullYear();
83
+ }
84
+ /**
85
+ * Get the month.
86
+ */
87
+ getMonth(date) {
88
+ return date.getMonth();
89
+ }
90
+ /**
91
+ * Get the day.
92
+ */
93
+ getDay(date) {
94
+ return date.getDay();
95
+ }
96
+ /**
97
+ * Get the date.
98
+ */
99
+ getDate(date) {
100
+ return date.getDate();
101
+ }
102
+ /**
103
+ * Get the hours.
104
+ */
105
+ getHours(date) {
106
+ return date.getHours();
107
+ }
108
+ /**
109
+ * Get the minutes.
110
+ */
111
+ getMinutes(date) {
112
+ return date.getMinutes();
113
+ }
114
+ /**
115
+ * Get the seconds.
116
+ */
117
+ getSeconds(date) {
118
+ return date.getSeconds();
119
+ }
120
+ /**
121
+ * Get the milliseconds.
122
+ */
123
+ getMilliseconds(date) {
124
+ return date.getMilliseconds();
125
+ }
126
+ /**
127
+ * Get the first day of the month.
128
+ */
129
+ startOfMonth(date) {
130
+ return new Date(date.getFullYear(), date.getMonth(), 1);
131
+ }
132
+ /**
133
+ * Get the last day of the month.
134
+ */
135
+ endOfMonth(date) {
136
+ return new Date(date.getFullYear(), date.getMonth() + 1, 0);
137
+ }
138
+ /**
139
+ * Get the start of the day.
140
+ */
141
+ startOfDay(date) {
142
+ return new Date(date.getFullYear(), date.getMonth(), date.getDate());
143
+ }
144
+ /**
145
+ * Get the end of the day.
146
+ */
147
+ endOfDay(date) {
148
+ return new Date(date.getFullYear(), date.getMonth(), date.getDate(), 23, 59, 59, 999);
149
+ }
150
+ }
151
+
152
+ /**
153
+ * Copyright © 2024 Angular Primitives.
154
+ * https://github.com/ng-primitives/ng-primitives
155
+ *
156
+ * This source code is licensed under the Apache 2.0 license found in the
157
+ * LICENSE file in the root directory of this source tree.
158
+ */
159
+ const NgpDateAdapterToken = new InjectionToken('NgpDateAdapterToken');
160
+ /**
161
+ * Inject the DateAdapter instance
162
+ */
163
+ function injectDateAdapter() {
164
+ return (inject(NgpDateAdapterToken, { optional: true }) ||
165
+ new NgpNativeDateAdapter());
166
+ }
167
+ /**
168
+ * Provide the DateAdapter instance
169
+ */
170
+ function provideDateAdapter(adapter) {
171
+ return { provide: NgpDateAdapterToken, useClass: adapter };
172
+ }
173
+
174
+ /**
175
+ * Copyright © 2024 Angular Primitives.
176
+ * https://github.com/ng-primitives/ng-primitives
177
+ *
178
+ * This source code is licensed under the Apache 2.0 license found in the
179
+ * LICENSE file in the root directory of this source tree.
180
+ */
181
+
182
+ /**
183
+ * Generated bundle index. Do not edit.
184
+ */
185
+
186
+ export { injectDateAdapter, provideDateAdapter };
187
+ //# sourceMappingURL=ng-primitives-date-time.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ng-primitives-date-time.mjs","sources":["../../../../packages/ng-primitives/date-time/src/native-date-adapter/native-date-adapter.ts","../../../../packages/ng-primitives/date-time/src/date-adapter/date-adapter.token.ts","../../../../packages/ng-primitives/date-time/src/index.ts","../../../../packages/ng-primitives/date-time/src/ng-primitives-date-time.ts"],"sourcesContent":["/**\n * Copyright © 2024 Angular Primitives.\n * https://github.com/ng-primitives/ng-primitives\n *\n * This source code is licensed under the Apache 2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { NgpDateAdapter, NgpDateUnits, NgpDuration } from '../date-adapter/date-adapter';\n\nexport class NgpNativeDateAdapter implements NgpDateAdapter<Date> {\n /**\n * Create a new date time object.\n */\n create({ day, hour, minute, month, second, year, millisecond }: NgpDateUnits): Date {\n const now = new Date();\n\n return new Date(\n year ?? now.getFullYear(),\n month ?? now.getMonth(),\n day ?? now.getDate(),\n hour ?? now.getHours(),\n minute ?? now.getMinutes(),\n second ?? now.getSeconds(),\n millisecond ?? now.getMilliseconds(),\n );\n }\n\n /**\n * Create a new date with the current date and time.\n */\n now(): Date {\n return new Date();\n }\n\n /**\n * Set the year of the date time object based on a duration.\n */\n set(date: Date, values: NgpDateUnits): Date {\n return new Date(\n values.year ?? date.getFullYear(),\n values.month ?? date.getMonth(),\n values.day ?? date.getDate(),\n values.hour ?? date.getHours(),\n values.minute ?? date.getMinutes(),\n values.second ?? date.getSeconds(),\n values.millisecond ?? date.getMilliseconds(),\n );\n }\n\n /**\n * Add a duration to the date time object.\n */\n add(date: Date, duration: NgpDuration): Date {\n return new Date(\n date.getFullYear() + (duration.years ?? 0),\n date.getMonth() + (duration.months ?? 0),\n date.getDate() + (duration.days ?? 0),\n date.getHours() + (duration.hours ?? 0),\n date.getMinutes() + (duration.minutes ?? 0),\n date.getSeconds() + (duration.seconds ?? 0),\n date.getMilliseconds() + (duration.milliseconds ?? 0),\n );\n }\n\n /**\n * Subtract a duration from the date time object\n */\n subtract(date: Date, duration: NgpDuration): Date {\n return new Date(\n date.getFullYear() - (duration.years ?? 0),\n date.getMonth() - (duration.months ?? 0),\n date.getDate() - (duration.days ?? 0),\n date.getHours() - (duration.hours ?? 0),\n date.getMinutes() - (duration.minutes ?? 0),\n date.getSeconds() - (duration.seconds ?? 0),\n date.getMilliseconds() - (duration.milliseconds ?? 0),\n );\n }\n\n /**\n * Compare two date time objects\n */\n compare(a: Date, b: Date): number {\n const diff = a.getTime() - b.getTime();\n return diff === 0 ? 0 : diff > 0 ? 1 : -1;\n }\n\n /**\n * Determine if two date time objects are equal.\n */\n isEqual(a: Date, b: Date): boolean {\n return a.getTime() === b.getTime();\n }\n\n /**\n * Determine if a date time object is before another.\n */\n isBefore(a: Date, b: Date): boolean {\n return a.getTime() < b.getTime();\n }\n\n /**\n * Determine if a date time object is after another.\n */\n isAfter(a: Date, b: Date): boolean {\n return a.getTime() > b.getTime();\n }\n\n /**\n * Determine if two date objects are on the same day.\n */\n isSameDay(a: Date, b: Date): boolean {\n return this.isSameYear(a, b) && this.isSameMonth(a, b) && a.getDate() === b.getDate();\n }\n\n /**\n * Determine if two date objects are on the same month.\n */\n isSameMonth(a: Date, b: Date): boolean {\n return this.isSameYear(a, b) && a.getMonth() === b.getMonth();\n }\n\n /**\n * Determine if two date objects are on the same year.\n */\n isSameYear(a: Date, b: Date): boolean {\n return a.getFullYear() === b.getFullYear();\n }\n\n /**\n * Get the year.\n */\n getYear(date: Date): number {\n return date.getFullYear();\n }\n\n /**\n * Get the month.\n */\n getMonth(date: Date): number {\n return date.getMonth();\n }\n\n /**\n * Get the day.\n */\n getDay(date: Date): number {\n return date.getDay();\n }\n\n /**\n * Get the date.\n */\n getDate(date: Date): number {\n return date.getDate();\n }\n\n /**\n * Get the hours.\n */\n getHours(date: Date): number {\n return date.getHours();\n }\n\n /**\n * Get the minutes.\n */\n getMinutes(date: Date): number {\n return date.getMinutes();\n }\n\n /**\n * Get the seconds.\n */\n getSeconds(date: Date): number {\n return date.getSeconds();\n }\n\n /**\n * Get the milliseconds.\n */\n getMilliseconds(date: Date): number {\n return date.getMilliseconds();\n }\n\n /**\n * Get the first day of the month.\n */\n startOfMonth(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), 1);\n }\n\n /**\n * Get the last day of the month.\n */\n endOfMonth(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth() + 1, 0);\n }\n\n /**\n * Get the start of the day.\n */\n startOfDay(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate());\n }\n\n /**\n * Get the end of the day.\n */\n endOfDay(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate(), 23, 59, 59, 999);\n }\n}\n","/**\n * Copyright © 2024 Angular Primitives.\n * https://github.com/ng-primitives/ng-primitives\n *\n * This source code is licensed under the Apache 2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { ClassProvider, InjectionToken, Type, inject } from '@angular/core';\nimport { NgpNativeDateAdapter } from '../native-date-adapter/native-date-adapter';\nimport type { NgpDateAdapter } from './date-adapter';\n\nexport const NgpDateAdapterToken = new InjectionToken<NgpDateAdapter<unknown>>(\n 'NgpDateAdapterToken',\n);\n\n/**\n * Inject the DateAdapter instance\n */\nexport function injectDateAdapter<T>(): NgpDateAdapter<T> {\n return (\n (inject(NgpDateAdapterToken, { optional: true }) as NgpDateAdapter<T>) ||\n new NgpNativeDateAdapter()\n );\n}\n\n/**\n * Provide the DateAdapter instance\n */\nexport function provideDateAdapter<T>(adapter: Type<NgpDateAdapter<T>>): ClassProvider {\n return { provide: NgpDateAdapterToken, useClass: adapter };\n}\n","/**\n * Copyright © 2024 Angular Primitives.\n * https://github.com/ng-primitives/ng-primitives\n *\n * This source code is licensed under the Apache 2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nexport { NgpDateAdapter, NgpDateUnits, NgpDuration } from './date-adapter/date-adapter';\nexport { injectDateAdapter, provideDateAdapter } from './date-adapter/date-adapter.token';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -2,9 +2,9 @@ import { DOCUMENT, isPlatformBrowser } from '@angular/common';
2
2
  import * as i0 from '@angular/core';
3
3
  import { InjectionToken, inject, PLATFORM_ID, Injectable, input, booleanAttribute, signal, output, Directive, HostListener, ElementRef } from '@angular/core';
4
4
  import { injectDisabled } from 'ng-primitives/internal';
5
+ import { onChange, injectDisposables } from 'ng-primitives/utils';
5
6
  import { FocusMonitor } from '@angular/cdk/a11y';
6
7
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
7
- import { injectDisposables } from 'ng-primitives/utils';
8
8
 
9
9
  /**
10
10
  * Copyright © 2024 Angular Primitives.
@@ -114,14 +114,12 @@ class NgpHover {
114
114
  * Emit an event when the hover state changes.
115
115
  */
116
116
  this.hoverChange = output({ alias: 'ngpHover' });
117
+ onChange(this.disabled, this.reset.bind(this));
118
+ onChange(this.isDisabled, this.reset.bind(this));
117
119
  }
118
- ngOnChanges(changes) {
119
- if ('disabled' in changes) {
120
- // if the component is suddenly disabled and is currently hovered
121
- // switch to the unhovered state.
122
- if (changes['disabled'].currentValue === true) {
123
- this.onHoverEnd('mouse');
124
- }
120
+ reset(shouldReset) {
121
+ if (shouldReset) {
122
+ this.onHoverEnd('mouse');
125
123
  }
126
124
  }
127
125
  /**
@@ -178,7 +176,7 @@ class NgpHover {
178
176
  }
179
177
  }
180
178
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: NgpHover, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
181
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.1.1", type: NgpHover, isStandalone: true, selector: "[ngpHover]", inputs: { disabled: { classPropertyName: "disabled", publicName: "ngpHoverDisabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { hoverStart: "ngpHoverStart", hoverEnd: "ngpHoverEnd", hoverChange: "ngpHover" }, host: { listeners: { "pointerenter": "onPointerEnter($event)", "pointerleave": "onPointerLeave($event)", "touchstart": "onTouchStart()", "mouseenter": "onMouseEnter($event)", "mouseleave": "onMouseLeave($event)" }, properties: { "attr.data-hover": "hovered()" } }, providers: [{ provide: NgpHoverToken, useExisting: NgpHover }], exportAs: ["ngpHover"], usesOnChanges: true, ngImport: i0 }); }
179
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.1.1", type: NgpHover, isStandalone: true, selector: "[ngpHover]", inputs: { disabled: { classPropertyName: "disabled", publicName: "ngpHoverDisabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { hoverStart: "ngpHoverStart", hoverEnd: "ngpHoverEnd", hoverChange: "ngpHover" }, host: { listeners: { "pointerenter": "onPointerEnter($event)", "pointerleave": "onPointerLeave($event)", "touchstart": "onTouchStart()", "mouseenter": "onMouseEnter($event)", "mouseleave": "onMouseLeave($event)" }, properties: { "attr.data-hover": "hovered()" } }, providers: [{ provide: NgpHoverToken, useExisting: NgpHover }], exportAs: ["ngpHover"], ngImport: i0 }); }
182
180
  }
183
181
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: NgpHover, decorators: [{
184
182
  type: Directive,
@@ -191,7 +189,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImpor
191
189
  '[attr.data-hover]': 'hovered()',
192
190
  },
193
191
  }]
194
- }], propDecorators: { onPointerEnter: [{
192
+ }], ctorParameters: () => [], propDecorators: { onPointerEnter: [{
195
193
  type: HostListener,
196
194
  args: ['pointerenter', ['$event']]
197
195
  }], onPointerLeave: [{