Skip to content

Commit 4eba508

Browse files
docs: add mat datepicker example (#312)
1 parent de1778b commit 4eba508

File tree

3 files changed

+22
-2
lines changed

3 files changed

+22
-2
lines changed

apps/example-app/src/app/examples/04-forms-with-material.spec.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ test('is possible to fill in a form and verify error messages (with the help of
1212
const nameControl = screen.getByLabelText(/name/i);
1313
const scoreControl = screen.getByRole('spinbutton', { name: /score/i });
1414
const colorControl = screen.getByRole('combobox', { name: /color/i });
15+
const dateControl = screen.getByRole('textbox', { name: /Choose a date/i });
16+
1517
const errors = screen.getByRole('alert');
1618

1719
expect(errors).toContainElement(screen.queryByText('name is required'));
@@ -33,6 +35,8 @@ test('is possible to fill in a form and verify error messages (with the help of
3335
userEvent.type(scoreControl, '7');
3436
expect(scoreControl).toBeValid();
3537

38+
userEvent.type(dateControl, '08/11/2022');
39+
3640
expect(errors).not.toBeInTheDocument();
3741

3842
expect(nameControl).toHaveValue('Tim');
@@ -44,7 +48,10 @@ test('is possible to fill in a form and verify error messages (with the help of
4448
name: 'Tim',
4549
score: 7,
4650
});
51+
52+
// material doesn't add these to the form
4753
expect((fixture.componentInstance as MaterialFormsComponent).form?.get('color')?.value).toBe('G');
54+
expect((fixture.componentInstance as MaterialFormsComponent).form?.get('date')?.value).toEqual(new Date(2022, 7, 11));
4855
});
4956

5057
test('set and show pre-set form values', async () => {
@@ -56,6 +63,7 @@ test('set and show pre-set form values', async () => {
5663
name: 'Max',
5764
score: 4,
5865
color: 'B',
66+
date: new Date(2022, 7, 11),
5967
});
6068
detectChanges();
6169

@@ -73,4 +81,5 @@ test('set and show pre-set form values', async () => {
7381
score: 4,
7482
});
7583
expect((fixture.componentInstance as MaterialFormsComponent).form?.get('color')?.value).toBe('B');
84+
expect((fixture.componentInstance as MaterialFormsComponent).form?.get('date')?.value).toEqual(new Date(2022, 7, 11));
7685
});

apps/example-app/src/app/examples/04-forms-with-material.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,14 @@ import { UntypedFormBuilder, Validators } from '@angular/forms';
3232
</mat-select>
3333
</mat-form-field>
3434
35+
<mat-form-field appearance="fill">
36+
<mat-label>Choose a date</mat-label>
37+
<input matInput [matDatepicker]="picker" formControlName="date" />
38+
<mat-hint>MM/DD/YYYY</mat-hint>
39+
<mat-datepicker-toggle matSuffix [for]="picker"></mat-datepicker-toggle>
40+
<mat-datepicker #picker></mat-datepicker>
41+
</mat-form-field>
42+
3543
<div role="alert" *ngIf="formErrors.length">
3644
<p *ngFor="let error of formErrors">{{ error }}</p>
3745
</div>
@@ -64,13 +72,14 @@ export class MaterialFormsComponent {
6472
name: ['', Validators.required],
6573
score: [0, [Validators.min(1), Validators.max(10)]],
6674
color: [null, Validators.required],
75+
date: [null, Validators.required],
6776
});
6877

6978
constructor(private formBuilder: UntypedFormBuilder) {}
7079

7180
get colorControlDisplayValue(): string | undefined {
7281
const selectedId = this.form.get('color')?.value;
73-
return this.colors.filter(color => color.id === selectedId)[0]?.value;
82+
return this.colors.filter((color) => color.id === selectedId)[0]?.value;
7483
}
7584

7685
get formErrors() {

apps/example-app/src/app/material.module.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@ import { NgModule } from '@angular/core';
22

33
import { MatInputModule } from '@angular/material/input';
44
import { MatSelectModule } from '@angular/material/select';
5+
import { MatDatepickerModule } from '@angular/material/datepicker';
6+
import { MatNativeDateModule } from '@angular/material/core';
57

68
@NgModule({
7-
exports: [MatInputModule, MatSelectModule],
9+
exports: [MatInputModule, MatSelectModule, MatDatepickerModule, MatNativeDateModule],
810
})
911
export class MaterialModule {}

0 commit comments

Comments
 (0)