ng-primitives 0.68.0 → 0.69.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.
@@ -1,6 +1,9 @@
1
+ import { InjectOptions } from '@angular/core';
1
2
  import { InjectedState } from 'ng-primitives/state';
3
+ import { NgpDateRangePicker } from '../date-range-picker/date-range-picker';
2
4
  import type { NgpDatePicker } from './date-picker';
3
5
  export declare const NgpDatePickerStateToken: import("@angular/core").InjectionToken<NgpDatePicker<unknown>>;
4
6
  export declare const provideDatePickerState: (options?: import("ng-primitives/state").CreateStateProviderOptions) => import("@angular/core").FactoryProvider;
5
- export declare const injectDatePickerState: <T>() => InjectedState<NgpDatePicker<T>>;
7
+ export declare const injectDatePickerState: <T>(injectOptions?: InjectOptions) => InjectedState<NgpDatePicker<T>>;
6
8
  export declare const datePickerState: <U>(state: U) => import("ng-primitives/state").CreatedState<U>;
9
+ export declare function injectDateControllerState<T>(): InjectedState<NgpDatePicker<T> | NgpDateRangePicker<T>>;
@@ -77,6 +77,40 @@ export declare class NgpDatePicker<T> {
77
77
  * @internal
78
78
  */
79
79
  unregisterButton(button: NgpDatePickerDateButton<T>): void;
80
+ /**
81
+ * Select a date.
82
+ * @param date The date to select.
83
+ * @internal
84
+ */
85
+ select(date: T): void;
86
+ /**
87
+ * Determine if a date is selected.
88
+ * @param date The date to check.
89
+ * @returns True if the date is selected, false otherwise.
90
+ * @internal
91
+ */
92
+ isSelected(date: T): boolean;
93
+ /**
94
+ * Determine if a date is the start of a range. In a date picker, this is always false.
95
+ * @param date The date to check.
96
+ * @returns Always false.
97
+ * @internal
98
+ */
99
+ isStartOfRange(_: T): boolean;
100
+ /**
101
+ * Determine if a date is the end of a range. In a date picker, this is always false.
102
+ * @param date The date to check.
103
+ * @returns Always false.
104
+ * @internal
105
+ */
106
+ isEndOfRange(_: T): boolean;
107
+ /**
108
+ * Determine if a date is between the start and end dates. In a date picker, this is always false.
109
+ * @param date The date to check.
110
+ * @returns True if the date is between the start and end dates, false otherwise.
111
+ * @internal
112
+ */
113
+ isBetweenRange(_: T): boolean;
80
114
  static ɵfac: i0.ɵɵFactoryDeclaration<NgpDatePicker<any>, never>;
81
115
  static ɵdir: i0.ɵɵDirectiveDeclaration<NgpDatePicker<any>, "[ngpDatePicker]", ["ngpDatePicker"], { "min": { "alias": "ngpDatePickerMin"; "required": false; "isSignal": true; }; "max": { "alias": "ngpDatePickerMax"; "required": false; "isSignal": true; }; "disabled": { "alias": "ngpDatePickerDisabled"; "required": false; "isSignal": true; }; "dateDisabled": { "alias": "ngpDatePickerDateDisabled"; "required": false; "isSignal": true; }; "date": { "alias": "ngpDatePickerDate"; "required": false; "isSignal": true; }; "focusedDate": { "alias": "ngpDatePickerFocusedDate"; "required": false; "isSignal": true; }; }, { "dateChange": "ngpDatePickerDateChange"; "focusedDateChange": "ngpDatePickerFocusedDateChange"; }, ["label"], never, true, never>;
82
116
  }
@@ -6,7 +6,7 @@ export declare class NgpDatePickerCell {
6
6
  /**
7
7
  * Access the date picker.
8
8
  */
9
- private readonly datePicker;
9
+ private readonly state;
10
10
  /**
11
11
  * Access the child date picker date button.
12
12
  */
@@ -12,10 +12,6 @@ export declare class NgpDatePickerDateButton<T> implements OnDestroy {
12
12
  * Access the focus monitor.
13
13
  */
14
14
  private readonly focusMonitor;
15
- /**
16
- * Access the date picker.
17
- */
18
- private readonly datePicker;
19
15
  /**
20
16
  * Access the date picker state.
21
17
  */
@@ -34,9 +30,20 @@ export declare class NgpDatePickerDateButton<T> implements OnDestroy {
34
30
  protected readonly focused: import("@angular/core").Signal<boolean>;
35
31
  /**
36
32
  * Determine if this is the selected date.
37
- * @internal
38
33
  */
39
- readonly selected: import("@angular/core").Signal<boolean | undefined>;
34
+ protected readonly selected: import("@angular/core").Signal<boolean>;
35
+ /**
36
+ * Determine if this is the start date of the range.
37
+ */
38
+ protected readonly start: import("@angular/core").Signal<boolean>;
39
+ /**
40
+ * Determine if this is the end date of the range.
41
+ */
42
+ protected readonly end: import("@angular/core").Signal<boolean>;
43
+ /**
44
+ * Determine if this is between the start and end dates of the range.
45
+ */
46
+ protected readonly betweenRange: import("@angular/core").Signal<boolean>;
40
47
  /**
41
48
  * Determine if this date is outside the current month.
42
49
  */
@@ -6,7 +6,7 @@ export declare class NgpDatePickerGrid<T> {
6
6
  /**
7
7
  * Access the date picker state.
8
8
  */
9
- protected readonly state: import("ng-primitives/state").InjectedState<import("ng-primitives/date-picker").NgpDatePicker<T>>;
9
+ protected readonly state: import("ng-primitives/state").InjectedState<import("ng-primitives/date-picker").NgpDatePicker<T> | import("ng-primitives/date-picker").NgpDateRangePicker<T>>;
10
10
  /**
11
11
  * Determine the id for the label.
12
12
  */
@@ -6,7 +6,7 @@ export declare class NgpDatePickerLabel<T> {
6
6
  /**
7
7
  * Access the date picker.
8
8
  */
9
- protected readonly state: import("ng-primitives/state").InjectedState<import("ng-primitives/date-picker").NgpDatePicker<T>>;
9
+ protected readonly state: import("ng-primitives/state").InjectedState<import("ng-primitives/date-picker").NgpDatePicker<T> | import("ng-primitives/date-picker").NgpDateRangePicker<T>>;
10
10
  /**
11
11
  * Define a unique id for the label.
12
12
  */
@@ -11,10 +11,6 @@ export declare class NgpDatePickerNextMonth<T> {
11
11
  * Access the date adapter.
12
12
  */
13
13
  private readonly dateAdapter;
14
- /**
15
- * Access the date picker.
16
- */
17
- private readonly datePicker;
18
14
  /**
19
15
  * Access the date picker state.
20
16
  */
@@ -11,10 +11,6 @@ export declare class NgpDatePickerPreviousMonth<T> {
11
11
  * Access the date adapter.
12
12
  */
13
13
  private readonly dateAdapter;
14
- /**
15
- * Access the date picker.
16
- */
17
- private readonly datePicker;
18
14
  /**
19
15
  * Access the date picker state.
20
16
  */
@@ -0,0 +1,19 @@
1
+ import { InjectOptions } from '@angular/core';
2
+ import { InjectedState } from 'ng-primitives/state';
3
+ import type { NgpDateRangePicker } from './date-range-picker';
4
+ /**
5
+ * The state token for the DateRangePicker primitive.
6
+ */
7
+ export declare const NgpDateRangePickerStateToken: import("@angular/core").InjectionToken<NgpDateRangePicker<unknown>>;
8
+ /**
9
+ * Provides the DateRangePicker state.
10
+ */
11
+ export declare const provideDateRangePickerState: (options?: import("ng-primitives/state").CreateStateProviderOptions) => import("@angular/core").FactoryProvider;
12
+ /**
13
+ * Injects the DateRangePicker state.
14
+ */
15
+ export declare const injectDateRangePickerState: <T>(injectOptions?: InjectOptions) => InjectedState<NgpDateRangePicker<T>>;
16
+ /**
17
+ * The DateRangePicker state registration function.
18
+ */
19
+ export declare const dateRangePickerState: <U>(state: U) => import("ng-primitives/state").CreatedState<U>;
@@ -0,0 +1,132 @@
1
+ import { FocusOrigin } from '@angular/cdk/a11y';
2
+ import { BooleanInput } from '@angular/cdk/coercion';
3
+ import { NgpDatePickerDateButton } from '../date-picker-date-button/date-picker-date-button';
4
+ import * as i0 from "@angular/core";
5
+ export declare class NgpDateRangePicker<T> {
6
+ private readonly dateAdapter;
7
+ /**
8
+ * Access the injector.
9
+ */
10
+ private readonly injector;
11
+ /**
12
+ * The minimum date that can be selected.
13
+ */
14
+ readonly min: import("@angular/core").InputSignal<T | undefined>;
15
+ /**
16
+ * The maximum date that can be selected.
17
+ */
18
+ readonly max: import("@angular/core").InputSignal<T | undefined>;
19
+ /**
20
+ * Determine if the date picker is disabled.
21
+ */
22
+ readonly disabled: import("@angular/core").InputSignalWithTransform<boolean, BooleanInput>;
23
+ /**
24
+ * A function that is called to determine if a specific date should be disabled.
25
+ */
26
+ readonly dateDisabled: import("@angular/core").InputSignal<(date: T) => boolean>;
27
+ /**
28
+ * The selected start date
29
+ */
30
+ readonly startDate: import("@angular/core").InputSignal<T | undefined>;
31
+ /**
32
+ * Emit when the date changes.
33
+ */
34
+ readonly startDateChange: import("@angular/core").OutputEmitterRef<T | undefined>;
35
+ /**
36
+ * The selected end date
37
+ */
38
+ readonly endDate: import("@angular/core").InputSignal<T | undefined>;
39
+ /**
40
+ * Emit when the end date changes.
41
+ */
42
+ readonly endDateChange: import("@angular/core").OutputEmitterRef<T | undefined>;
43
+ /**
44
+ * The focused value.
45
+ */
46
+ readonly focusedDate: import("@angular/core").InputSignal<T>;
47
+ /**
48
+ * Emit when the focused date changes.
49
+ */
50
+ readonly focusedDateChange: import("@angular/core").OutputEmitterRef<T>;
51
+ /**
52
+ * Detect the label element.
53
+ * @internal
54
+ */
55
+ readonly label: import("@angular/core").Signal<import("ng-primitives/date-picker").NgpDatePickerLabel<unknown> | undefined>;
56
+ /**
57
+ * Access all the date picker buttons
58
+ */
59
+ private readonly buttons;
60
+ /**
61
+ * The date range picker state.
62
+ */
63
+ private readonly state;
64
+ /**
65
+ * Set the focused date.
66
+ * @param date The date to focus.
67
+ * @internal
68
+ */
69
+ setFocusedDate(date: T, origin: FocusOrigin | undefined, direction: 'forward' | 'backward'): void;
70
+ /**
71
+ * Register a date button.
72
+ * @param button The date button to register.
73
+ * @internal
74
+ */
75
+ registerButton(button: NgpDatePickerDateButton<T>): void;
76
+ /**
77
+ * Unregister a date button.
78
+ * @param button The date button to unregister.
79
+ * @internal
80
+ */
81
+ unregisterButton(button: NgpDatePickerDateButton<T>): void;
82
+ /**
83
+ * Select a date.
84
+ * @param date The date to select.
85
+ * @internal
86
+ */
87
+ /**
88
+ * Handles the selection of a date within the date range picker.
89
+ *
90
+ * Selection logic:
91
+ * - If neither a start date nor an end date is selected:
92
+ * - Sets the selected date as the start date.
93
+ * - If a start date is selected but no end date:
94
+ * - If the selected date is after the start date, sets it as the end date.
95
+ * - If the selected date is before or equal to the start date, resets the start date to the selected date.
96
+ * - If both start and end dates are already selected:
97
+ * - Resets the selection, setting the selected date as the new start date and clearing the end date.
98
+ *
99
+ * @param date The date to select.
100
+ */
101
+ select(date: T): void;
102
+ /**
103
+ * Determine if a date is selected. A date is selected if it is either the start date or the end date.
104
+ * @param date The date to check.
105
+ * @returns True if the date is selected, false otherwise.
106
+ * @internal
107
+ */
108
+ isSelected(date: T): boolean;
109
+ /**
110
+ * Determine if a date is the start of a range.
111
+ * @param date The date to check.
112
+ * @returns Always false.
113
+ * @internal
114
+ */
115
+ isStartOfRange(date: T): boolean;
116
+ /**
117
+ * Determine if a date is the end of a range.
118
+ * @param date The date to check.
119
+ * @returns Always false.
120
+ * @internal
121
+ */
122
+ isEndOfRange(date: T): boolean;
123
+ /**
124
+ * Determine if a date is between the start and end dates.
125
+ * @param date The date to check.
126
+ * @returns True if the date is between the start and end dates, false otherwise.
127
+ * @internal
128
+ */
129
+ isBetweenRange(date: T): boolean;
130
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgpDateRangePicker<any>, never>;
131
+ static ɵdir: i0.ɵɵDirectiveDeclaration<NgpDateRangePicker<any>, "[ngpDateRangePicker]", ["ngpDateRangePicker"], { "min": { "alias": "ngpDateRangePickerMin"; "required": false; "isSignal": true; }; "max": { "alias": "ngpDateRangePickerMax"; "required": false; "isSignal": true; }; "disabled": { "alias": "ngpDateRangePickerDisabled"; "required": false; "isSignal": true; }; "dateDisabled": { "alias": "ngpDateRangePickerDateDisabled"; "required": false; "isSignal": true; }; "startDate": { "alias": "ngpDateRangePickerStartDate"; "required": false; "isSignal": true; }; "endDate": { "alias": "ngpDateRangePickerEndDate"; "required": false; "isSignal": true; }; "focusedDate": { "alias": "ngpDateRangePickerFocusedDate"; "required": false; "isSignal": true; }; }, { "startDateChange": "ngpDateRangePickerStartDateChange"; "endDateChange": "ngpDateRangePickerEndDateChange"; "focusedDateChange": "ngpDateRangePickerFocusedDateChange"; }, ["label"], never, true, never>;
132
+ }
@@ -12,4 +12,5 @@ export { NgpDatePickerRowRender } from './date-picker-row-render/date-picker-row
12
12
  export { injectDatePickerRowRender, injectDatePickerWeek, NgpDatePickerRowRenderToken, } from './date-picker-row-render/date-picker-row-render-token';
13
13
  export { NgpDatePicker } from './date-picker/date-picker';
14
14
  export { injectDatePickerState, provideDatePickerState } from './date-picker/date-picker-state';
15
- export { injectDatePicker, NgpDatePickerToken } from './date-picker/date-picker-token';
15
+ export { NgpDateRangePicker } from './date-range-picker/date-range-picker';
16
+ export { provideDateRangePickerState, injectDateRangePickerState, } from './date-range-picker/date-range-picker-state';