comindware.core.ui
Version:
Comindware Core UI provides the basic components like editors, lists, dropdowns, popups that we so desperately need while creating Marionette-based single-page applications.
26 lines (21 loc) • 859 B
text/typescript
import LocalizationService from '../../services/LocalizationService';
import _ from 'underscore';
export default function ({ type = 'required', message = LocalizationService.get('CORE.FORM.VALIDATION.REQUIRED'), enabled = () => true } = {}) {
const requiredValidator = function (value) {
const val = _.isObject(value) && 'value' in value ? value.value : value;
const err = {
type,
message: _.getResult(message, this, { type, message })
};
if (val === null || val === undefined || val === '') {
return err;
}
if (Array.isArray(val) && val.length === 0) {
return err;
}
};
const required = function required(value: any) {
return _.getResult(enabled, this, value) ? requiredValidator(value) : undefined;
};
return required;
}