]> git.evergreen-ils.org Git - working/Evergreen.git/blob - Open-ILS/src/eg2/src/app/share/validators/datetime_validator.directive.ts
LP1834662: Various fixes to the datetime select
[working/Evergreen.git] / Open-ILS / src / eg2 / src / app / share / validators / datetime_validator.directive.ts
1 import {Directive, forwardRef} from '@angular/core';
2 import {NG_VALIDATORS, AbstractControl, FormControl, ValidationErrors, Validator} from '@angular/forms';
3 import {FormatService} from '@eg/core/format.service';
4 import {EmptyError, Observable, of} from 'rxjs';
5 import {single, switchMap, catchError} from 'rxjs/operators';
6 import {Injectable} from '@angular/core';
7
8 @Injectable({providedIn: 'root'})
9 export class DatetimeValidator implements Validator {
10     constructor(
11         private format: FormatService) {
12     }
13
14     validate = (control: FormControl) => {
15         try {
16             this.format.momentizeDateTimeString(control.value, 'Africa/Addis_Ababa', true);
17         } catch (err) {
18             return {datetimeParseError: err.message};
19         }
20         return null;
21     }
22 }
23
24 @Directive({
25     selector: '[egValidDatetime]',
26     providers: [{
27         provide: NG_VALIDATORS,
28         useExisting: DatetimeValidatorDirective,
29         multi: true
30     }]
31 })
32 export class DatetimeValidatorDirective {
33     constructor(
34         private dtv: DatetimeValidator
35     ) { }
36
37     validate = (control: FormControl) => {
38         this.dtv.validate(control);
39     }
40 }
41