diff --git a/lib/content-services/src/lib/search/components/search-date-range/search-date-range.component.html b/lib/content-services/src/lib/search/components/search-date-range/search-date-range.component.html index 1363c2d52f..d00f35358e 100644 --- a/lib/content-services/src/lib/search/components/search-date-range/search-date-range.component.html +++ b/lib/content-services/src/lib/search/components/search-date-range/search-date-range.component.html @@ -6,8 +6,8 @@ [errorStateMatcher]="matcher" placeholder="{{ 'SEARCH.FILTER.RANGE.FROM-DATE' | translate }}" [matDatepicker]="fromDatepicker" - [max]="getFromMaxDate()" - (focusout)="onChangedHandler($event, from)" + [max]="fromMaxDate" + (dateChange)="onChangedHandler($event, from)" data-automation-id="date-range-from-input"> @@ -25,7 +25,7 @@ [matDatepicker]="toDatepicker" [min]="from.value" [max]="maxDate" - (focusout)="onChangedHandler($event, to)" + (dateChange)="onChangedHandler($event, to)" data-automation-id="date-range-to-input"> diff --git a/lib/content-services/src/lib/search/components/search-date-range/search-date-range.component.spec.ts b/lib/content-services/src/lib/search/components/search-date-range/search-date-range.component.spec.ts index e5ff7d76b8..bda21cf9c5 100644 --- a/lib/content-services/src/lib/search/components/search-date-range/search-date-range.component.spec.ts +++ b/lib/content-services/src/lib/search/components/search-date-range/search-date-range.component.spec.ts @@ -74,7 +74,7 @@ describe('SearchDateRangeComponent', () => { const momentFromInput = moment(inputString, dateFormatFixture); expect(momentFromInput.isValid()).toBeTruthy(); - component.onChangedHandler({ srcElement: { value: inputString } }, component.from); + component.onChangedHandler({ value: inputString }, component.from); expect(component.from.value.toString()).toEqual(momentFromInput.toString()); }); @@ -86,7 +86,7 @@ describe('SearchDateRangeComponent', () => { const momentFromInput = moment(inputString, dateFormatFixture); expect(momentFromInput.isValid()).toBeFalsy(); - component.onChangedHandler({ srcElement: { value: inputString } }, component.from); + component.onChangedHandler({ value: inputString }, component.from); expect(component.from.value.toString()).not.toEqual(momentFromInput.toString()); }); @@ -156,7 +156,7 @@ describe('SearchDateRangeComponent', () => { fixture.detectChanges(); const input = fixture.debugElement.nativeElement.querySelector('[data-automation-id="date-range-from-input"]'); input.value = '10-05-18'; - input.dispatchEvent(new Event('focusout')); + input.dispatchEvent(new Event('input')); fixture.detectChanges(); fixture.whenStable().then(() => { expect(component.getFromValidationMessage()).toEqual('SEARCH.FILTER.VALIDATION.INVALID-DATE'); @@ -167,7 +167,7 @@ describe('SearchDateRangeComponent', () => { fixture.detectChanges(); const input = fixture.debugElement.nativeElement.querySelector('[data-automation-id="date-range-from-input"]'); input.value = '10/10/2018'; - input.dispatchEvent(new Event('focusout')); + input.dispatchEvent(new Event('input')); fixture.detectChanges(); fixture.whenStable().then(() => { fixture.detectChanges(); diff --git a/lib/content-services/src/lib/search/components/search-date-range/search-date-range.component.ts b/lib/content-services/src/lib/search/components/search-date-range/search-date-range.component.ts index 5845b96c55..0e00e54acd 100644 --- a/lib/content-services/src/lib/search/components/search-date-range/search-date-range.component.ts +++ b/lib/content-services/src/lib/search/components/search-date-range/search-date-range.component.ts @@ -56,6 +56,7 @@ export class SearchDateRangeComponent implements SearchWidget, OnInit, OnDestroy context?: SearchQueryBuilderService; datePickerDateFormat = DEFAULT_FORMAT_DATE; maxDate: any; + fromMaxDate: any; isActive = false; startValue: any; @@ -119,6 +120,8 @@ export class SearchDateRangeComponent implements SearchWidget, OnInit, OnDestroy from: this.from, to: this.to }); + + this.setFromMaxDate(); } ngOnDestroy() { @@ -178,8 +181,7 @@ export class SearchDateRangeComponent implements SearchWidget, OnInit, OnDestroy onChangedHandler(event: any, formControl: FormControl) { - const inputValue = event.srcElement.value; - + const inputValue = event.value; const formatDate = this.dateAdapter.parse(inputValue, this.datePickerDateFormat); if (formatDate && formatDate.isValid()) { formControl.setValue(formatDate); @@ -187,11 +189,9 @@ export class SearchDateRangeComponent implements SearchWidget, OnInit, OnDestroy formControl.setErrors({ 'invalidOnChange': true }); - } else { - formControl.setErrors({ - 'required': true - }); } + + this.setFromMaxDate(); } setLocale(locale) { @@ -207,13 +207,13 @@ export class SearchDateRangeComponent implements SearchWidget, OnInit, OnDestroy event.srcElement.click(); } - getFromMaxDate(): any { + setFromMaxDate(): any { let maxDate: string; if (!this.to.value || this.maxDate && (moment(this.maxDate).isBefore(this.to.value))) { maxDate = this.maxDate; } else { maxDate = moment(this.to.value); } - return maxDate; + this.fromMaxDate = maxDate; } }