decide.nolog.cz/app/validators/iso8601.js

39 lines
1.1 KiB
JavaScript
Raw Normal View History

import classic from 'ember-classic-decorator';
2018-12-29 01:27:37 +01:00
import { isArray } from '@ember/array';
import { isEmpty } from '@ember/utils';
import { assert } from '@ember/debug';
import BaseValidator from 'ember-cp-validations/validators/base';
import moment from 'moment';
@classic
export default class Iso8601Validator extends BaseValidator {
validate(value, options = {}) {
2018-12-29 01:27:37 +01:00
assert(
'options.validFormats must not be set or an array of momentJS format strings',
2018-12-29 01:27:37 +01:00
isEmpty(options.validFormats) || isArray(options.validFormats)
);
let valid;
2018-12-29 01:27:37 +01:00
const validFormats = isEmpty(options.validFormats) ? ['YYYY-MM-DDTHH:mm:ss.SSSZ'] : options.validFormats;
if (
options.active === false ||
(typeof options.active === 'function' && options.active() === false)
) {
return true;
}
options.value = value;
valid = validFormats.any((validFormat) => {
return moment(value, validFormat, true).isValid();
});
if (valid) {
return true;
} else {
return this.createErrorMessage('iso8601', value, options);
}
}
}