@matheo/datepicker
Version:
Angular material date+time picker
193 lines (142 loc) • 5.41 kB
Markdown
# /datepicker
Fork of the official Material Datepicker for Angular with time picking support.
The datepicker allows users to enter a date either through text input, or by choosing a date from the calendar.
## Installation
As usual, just execute
```bash
npm install /datepicker
# or
yarn add /datepicker
```
Then add the modules to your Angular module, or replace the ones imported from `/material/datepicker` with these:
```typescript
import { MatDatepickerModule } from '@matheo/datepicker';
import { MatNativeDateModule } from '@matheo/datepicker/core';
({
imports: [
MatNativeDateModule,
MatDatepickerModule,
...
],
...
})
export class AppModule {}
```
**Note** that the `MatDatepickerModule` can be loaded into feature modules,
but it requires the providers given by `MatNativeDateModule`,
so it's recommended to import the former in your root Module.
There's the `MatLuxonDateModule` at `/datepicker/luxon`
if you use luxon in your application.
```html
<mat-form-field>
<mat-label>Choose a datetime</mat-label>
<input matInput [matDatepicker]="picker" formControlName="datetime" />
<mat-datepicker-toggle matSuffix [for]="picker"></mat-datepicker-toggle>
<mat-datepicker type="datetime" #picker></mat-datepicker>
</mat-form-field>
```
## Theming
This module supports the Angular Material prebuilt themes that can be included in `angular.json`:
```json
"styles": [
"node_modules/@angular/material/prebuilt-themes/indigo-pink.css",
"node_modules/@matheo/datepicker/prebuilt-themes/indigo-pink.css",
],
```
available themes are `deeppurple-amber`, `indigo-pink`, `pink-bluegrey` and `purple-green`.
Or you can use your customized Material Theme via mixins:
### Angular 12+
```sass
'/material' as mat;
'/datepicker/theming' as datepicker;
mat.$theme-ignore-duplication-warnings: true;
mat.core();
...
mat.all-component-themes($theme);
datepicker.theme($theme)
```
and add `node_modules` to your preprocessor options in your`angular.json`:
```json
"projects": {
"[your-project]": {
"architect": {
"build": {
...
"stylePreprocessorOptions": {
"includePaths": ["node_modules"]
}
}
}
}
```
For Angular 11 please use /datepicker@11.2.17.
## API
Some relevant _input_ parameters of the `mat-datepicker`:
- `type`: `date | datetime | time | month | year` output type. default: date
- `startView`: `multi-year | year | month | hour | minute` initial view to load. default: month
- `startAt`: start Date, otherwise the current selected value
- `clockStep`: interval to use in the minute view. default: 1
- `twelveHour`: whether to use 12 or 24 hrs format. default: true
- `color`: `primary | accent | warn`
- `touchUi`: calendar UI mode. default: false
- `dateClass`: function that can be used to add custom CSS classes to dates
and `matInput[matDatepicker]` can receive:
- `matDatepickerFilter`: function of `(D, DateUnit?) => boolean` to exclude with a particular algorithm.
For a complete API reference please check the official docs: <https://material.angular.io/components/datepicker/api>
## Internationalization
The message strings used in the datepicker's UI can be overriden providing a subclass of [MatDatepickerIntl](https://github.com/matheo/angular/blob/master/libs/datepicker/src/lib/datepicker-intl.ts) with the translated values in your application root module.
### Date Formats Customization
The display and parse formats used by the datepicker can be overriden providing a custom configuration of [MatDateFormats](https://github.com/matheo/angular/blob/master/libs/datepicker/src/core/datetime/native-date-formats.ts) via the `MAT_DATE_FORMATS` token from `@angular/material/core`, and using the `NativeDateModule` instead the `Mat`-prefixed version which does not include the default formats like:
```typescript
({
imports: [MatDatepickerModule, NativeDateModule],
providers: [
{
provide: MAT_DATE_FORMATS,
useValue: {
parse: {
...
},
display: {
...
}
}
}
],
})
```
More information in the official docs: <https://material.angular.io/components/datepicker/overview#internationalization>.
## Usage Examples
### Datepicker by default
```html
<mat-datepicker type="date" #datePicker></mat-datepicker>
```
### DateTime picker (year, month, date and clock views)
```html
<mat-datepicker type="datetime" #datetimePicker></mat-datepicker>
```
### With accent color (starting on the year view)
```html
<mat-datepicker
color="accent"
type="datetime"
startView="year"
#clockPicker
></mat-datepicker>
```
### Time picker (clock view with 24 hours format)
```html
<mat-datepicker type="time" [twelveHour]="false" #timePicker></mat-datepicker>
```
### Month picker
```html
<mat-datepicker type="month" #monthPicker></mat-datepicker>
```
### Year picker
```html
<mat-datepicker type="year" #yearPicker></mat-datepicker>
```
See the [source code](https://github.com/matheo/angular/blob/master/apps/website/src/app/demos/components/datepicker/datepicker.component.html) of the [demo page](http://matheo.co/demos/datepicker) for more insights.
Further documentation can be found at the official docs:
<https://material.angular.io/components/datepicker/overview>
Enjoy!