UNPKG

@verizonconnect/ngx-form-generator

Version:

Generates an Angular ReactiveForm from a Swagger or OpenAPI definition

53 lines (52 loc) 2.12 kB
"use strict"; /** * @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;