OpenSlides/client/src/app/shared/validators/custom-validators.ts

20 lines
813 B
TypeScript
Raw Normal View History

import { ValidatorFn, FormGroup, ValidationErrors } from '@angular/forms';
/**
* Constant to validate a `duration` field.
*
* `([0-9]+)` looks for a number with any length to the `:` (optional).\n
*
* `([0-5][0-9]?)?`: The user can optionally enter a number for minutes/seconds (0 - 59)
*
* Afterwards the duration can be specified as hours or minutes (via `[h|m]?` - optional). Defaults to `h`.
*
* @param control The form-control to validate
*
* @returns {ValidationErrors | null} Null, if the input is correct, `ValidationErrors` otherwise.
*/
export const durationValidator: ValidatorFn = (control: FormGroup): ValidationErrors | null => {
const regExp = /^\s*([0-9]+)(:)?([0-5][0-9]?)?\s*[h|m]?$/g;
return regExp.test(control.value) || control.value === '' ? null : { valid: false };
};