Skip to content

Commit 08d5e4f

Browse files
committed
2 parents fc8a53e + 27d6a68 commit 08d5e4f

File tree

4 files changed

+41
-5
lines changed

4 files changed

+41
-5
lines changed

src/app/date-picker/date-picker.component.html

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
2727
[displayDate]="currentDateView"
2828
(onSelect)="dateSelected($event, 'day')"
2929
[theme]="theme">
30-
3130
</dp-day-calendar>
3231

3332
<dp-month-calendar #monthCalendar

src/app/date-picker/date-picker.component.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,6 @@ export class DatePickerComponent implements OnChanges,
207207
initValidators() {
208208
this.validateFn = this.utilsService.createValidator(
209209
{minDate: this.minDate, maxDate: this.maxDate}, this.componentConfig.format, this.type);
210-
211210
this.onChangeCallback(this.processOnChangeCallback(this.selected));
212211
}
213212

src/app/date-picker/date-picker.directive.ts

Lines changed: 37 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import {ECalendarValue} from '../common/types/calendar-value-enum';
21
import {CalendarType} from './../common/types/calendar-type';
32
import {IDatePickerDirectiveConfig} from './date-picker-directive-config.model';
43
import {DatePickerDirectiveService} from './date-picker-directive.service';
@@ -15,6 +14,7 @@ import {
1514
Optional
1615
} from '@angular/core';
1716
import {NgControl} from '@angular/forms';
17+
import {Moment} from 'moment';
1818

1919
@Directive({
2020
exportAs: 'dpDayPicker',
@@ -25,7 +25,9 @@ export class DatePickerDirective implements OnInit {
2525
private _config: IDatePickerDirectiveConfig;
2626
private _attachTo: ElementRef | string;
2727
private _theme: string;
28-
private _type: CalendarType;
28+
private _type: CalendarType = 'day';
29+
private _minDate: Moment | string;
30+
private _maxDate: Moment | string;
2931

3032
get config(): IDatePickerDirectiveConfig {
3133
return this._config;
@@ -68,6 +70,30 @@ export class DatePickerDirective implements OnInit {
6870
}
6971
}
7072

73+
@Input() set minDate(minDate: Moment | string) {
74+
this._minDate = minDate;
75+
if (this.datePicker) {
76+
this.datePicker.minDate = minDate;
77+
this.datePicker.ngOnInit();
78+
}
79+
}
80+
81+
get minDate(): Moment | string {
82+
return this._minDate;
83+
}
84+
85+
@Input() set maxDate(maxDate: Moment | string) {
86+
this._maxDate = maxDate;
87+
if (this.datePicker) {
88+
this.datePicker.maxDate = maxDate;
89+
this.datePicker.ngOnInit();
90+
}
91+
}
92+
93+
get maxDate(): Moment | string {
94+
return this._maxDate;
95+
}
96+
7197
public datePicker: DatePickerComponent;
7298
public api: IDpDayPickerApi;
7399

@@ -94,14 +120,20 @@ export class DatePickerDirective implements OnInit {
94120
if (!this.formControl) {
95121
return;
96122
}
123+
97124
this.datePicker.onViewDateChange(this.formControl.value);
98125
this.formControl.valueChanges.subscribe(value => {
99126
if (value !== this.datePicker.inputElementValue) {
100127
this.datePicker.onViewDateChange(value);
101128
}
102129
});
103-
this.datePicker.registerOnChange(value => {
130+
131+
this.datePicker.registerOnChange((value) => {
104132
this.formControl.control.setValue(this.datePicker.inputElementValue);
133+
const errors = this.datePicker.validateFn(value);
134+
if (errors) {
135+
this.formControl.control.setErrors(errors);
136+
}
105137
this.formControl.control.markAsDirty();
106138
});
107139
}
@@ -120,6 +152,8 @@ export class DatePickerDirective implements OnInit {
120152

121153
private updateDatepickerConfig() {
122154
if (this.datePicker) {
155+
this.datePicker.minDate = this.minDate;
156+
this.datePicker.maxDate = this.maxDate;
123157
this.datePicker.type = this.type || 'day';
124158
this.datePicker.config = this.config;
125159
this.datePicker.init();

src/app/demo/demo/demo.component.html

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,12 +135,16 @@ <h2>Angular 2 Date Picker</h2>
135135
[theme]="material ? 'dp-material' : ''"
136136
[(ngModel)]="date"
137137
[placeholder]="placeholder"
138+
[minDate]="validationMinDate"
139+
[maxDate]="validationMaxDate"
138140
[disabled]="disabled"
139141
[required]="required"
140142
(ngModelChange)="log($event)"/>
141143
<div class="dp-validations">
142144
<div id="requiredValidation" *ngIf="dateDirectivePickerModel.errors?.required || false">required</div>
143145
<div *ngIf="dateDirectivePickerModel.errors?.format || false">format invalid</div>
146+
<div *ngIf="dateDirectivePickerModel.errors?.minDate">minDate invalid</div>
147+
<div *ngIf="dateDirectivePickerModel.errors?.maxDate">maxDate invalid</div>
144148
</div>
145149
</div>
146150

0 commit comments

Comments
 (0)