@verizonconnect/ngx-form-generator
Version:
Generates an Angular ReactiveForm from a Swagger or OpenAPI definition
53 lines (52 loc) • 2.12 kB
JavaScript
;
/**
* @license
* Licensed under the MIT License, (“the License”); you may not use this
* file except in compliance with the License.
*
* Copyright (c) 2020 Verizon
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.maximumRule = exports.minimumRule = exports.emailRule = exports.maxLengthRule = exports.minLengthRule = exports.patternRule = exports.requiredRule = void 0;
function hasMetadata(fieldName, definition, metadataName) {
return definition.properties[fieldName].hasOwnProperty(metadataName);
}
function abstractRule(fieldName, definition, ruleName) {
return hasMetadata(fieldName, definition, ruleName)
? `Validators.${ruleName}(${definition.properties[fieldName][ruleName]})`
: '';
}
function requiredRule(fieldName, definition) {
return definition.required && definition.required.includes(fieldName) ? `Validators.required` : '';
}
exports.requiredRule = requiredRule;
function patternRule(fieldName, definition) {
return hasMetadata(fieldName, definition, 'pattern')
? `Validators.pattern(/${definition.properties[fieldName]['pattern']}/)`
: '';
}
exports.patternRule = patternRule;
function minLengthRule(fieldName, definition) {
return abstractRule(fieldName, definition, 'minLength');
}
exports.minLengthRule = minLengthRule;
function maxLengthRule(fieldName, definition) {
return abstractRule(fieldName, definition, 'maxLength');
}
exports.maxLengthRule = maxLengthRule;
function emailRule(fieldName, definition) {
return definition.properties[fieldName].format === 'email' ? `Validators.email` : '';
}
exports.emailRule = emailRule;
function minimumRule(fieldName, definition) {
return hasMetadata(fieldName, definition, 'minimum')
? `Validators.min(${definition.properties[fieldName]['minimum']})`
: '';
}
exports.minimumRule = minimumRule;
function maximumRule(fieldName, definition) {
return hasMetadata(fieldName, definition, 'maximum')
? `Validators.max(${definition.properties[fieldName]['maximum']})`
: '';
}
exports.maximumRule = maximumRule;