-
Notifications
You must be signed in to change notification settings - Fork 6.8k
Expand file tree
/
Copy pathindex.ts
More file actions
124 lines (117 loc) · 3.13 KB
/
index.ts
File metadata and controls
124 lines (117 loc) · 3.13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
/**
* @license
* Copyright Google LLC All Rights Reserved.
*
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://angular.dev/license
*/
import {NgModule, Provider} from '@angular/core';
import {DateAdapter, MAT_DATE_FORMATS, MatDateFormats} from '@angular/material/core';
import {
MAT_TEMPORAL_DATE_ADAPTER_OPTIONS,
MatTemporalDateAdapterOptions,
TemporalDateAdapter,
} from './temporal-date-adapter';
import {MAT_TEMPORAL_DATE_FORMATS} from './temporal-date-formats';
export * from './temporal-date-adapter';
export * from './temporal-date-formats';
/**
* Module providing the Temporal date adapter.
* @deprecated Use `provideTemporalDateAdapter` instead.
*/
@NgModule({
providers: [
{
provide: DateAdapter,
useClass: TemporalDateAdapter,
},
],
})
export class TemporalModule {}
/**
* Module providing the Temporal date adapter with default formats.
*
* @example
* ```typescript
* import { MatTemporalModule } from '@angular/material-temporal-adapter';
*
* @NgModule({
* imports: [MatTemporalModule],
* })
* export class AppModule {}
* ```
*/
@NgModule({
providers: [provideTemporalDateAdapter()],
})
export class MatTemporalModule {}
/**
* Provider function for the Temporal date adapter.
*
* @param formats Custom date formats to use. Defaults to MAT_TEMPORAL_DATE_FORMATS.
* @param options Configuration options for the adapter.
* @returns Array of providers for the Temporal date adapter.
*
* @example
* ```typescript
* import { provideTemporalDateAdapter } from '@angular/material-temporal-adapter';
*
* bootstrapApplication(AppComponent, {
* providers: [
* provideTemporalDateAdapter(),
* ],
* });
* ```
*
* @example
* With custom options:
* ```typescript
* import {
* provideTemporalDateAdapter,
* MAT_TEMPORAL_DATETIME_FORMATS
* } from '@angular/material-temporal-adapter';
*
* bootstrapApplication(AppComponent, {
* providers: [
* provideTemporalDateAdapter(MAT_TEMPORAL_DATETIME_FORMATS, {
* calendar: 'islamic',
* mode: 'datetime',
* }),
* ],
* });
* ```
*/
export function provideTemporalDateAdapter(
formats: MatDateFormats = MAT_TEMPORAL_DATE_FORMATS,
options?: Partial<MatTemporalDateAdapterOptions>,
): Provider[] {
const providers: Provider[] = [
{
provide: DateAdapter,
useClass: TemporalDateAdapter,
},
{provide: MAT_DATE_FORMATS, useValue: formats},
];
if (options) {
const zonedOptions = options.mode === 'zoned' ? options : null;
providers.push({
provide: MAT_TEMPORAL_DATE_ADAPTER_OPTIONS,
useValue: {
calendar: options.calendar ?? 'iso8601',
outputCalendar: options.outputCalendar,
mode: options.mode ?? 'date',
firstDayOfWeek: options.firstDayOfWeek,
overflow: options.overflow,
...(zonedOptions
? {
timezone: zonedOptions.timezone,
disambiguation: zonedOptions.disambiguation,
offset: zonedOptions.offset,
rounding: zonedOptions.rounding,
}
: {}),
},
});
}
return providers;
}