From 3cf9fdac76fc08720d5e75eb624f9eccb0aa1ed0 Mon Sep 17 00:00:00 2001 From: graham-dds Date: Tue, 21 Jan 2020 10:12:04 -0500 Subject: [PATCH] Add frontend validation for TextInput()s - Add input validation regexes to input_validations.js - Add those validators to text fields without validaiton --- js/lib/input_validations.js | 29 ++++++++++++++++++- styles/elements/_inputs.scss | 2 ++ .../fragments/add_new_environment.html | 2 +- .../applications/fragments/environments.html | 2 +- .../fragments/member_form_fields.html | 4 +-- templates/applications/new/step_1.html | 4 +-- templates/applications/settings.html | 4 +-- templates/components/clin_fields.html | 2 +- templates/fragments/edit_user_form.html | 4 +-- templates/portfolios/admin.html | 2 +- .../fragments/member_form_fields.html | 4 +-- templates/portfolios/new/step_1.html | 4 +-- 12 files changed, 46 insertions(+), 17 deletions(-) diff --git a/js/lib/input_validations.js b/js/lib/input_validations.js index 80c16a7e..e2dc03b7 100644 --- a/js/lib/input_validations.js +++ b/js/lib/input_validations.js @@ -9,6 +9,12 @@ export default { unmask: [], validationError: 'Please enter a response', }, + clinNumber: { + mask: false, + match: /^\d{4}$/, + unmask: [], + validationError: 'Please enter a 4-digit CLIN number', + }, date: { mask: [/\d/, /\d/, '/', /\d/, /\d/, '/', /\d/, /\d/, /\d/, /\d/], match: /(0[1-9]|1[012])[- \/.](0[1-9]|[12][0-9]|3[01])[- \/.](19|20)\d\d/, @@ -34,6 +40,20 @@ export default { unmask: ['$', ','], validationError: 'Please enter a dollar amount', }, + defaultStringField: { + mask: false, + match: /^[A-Za-z0-9\-_ \.]{1,100}$/, + unmask: [], + validationError: + 'Please enter a response of no more than 100 alphanumeric characters', + }, + defaultTextAreaField: { + mask: false, + match: /^[A-Za-z0-9\-_ \.]{1,1000}$/, + unmask: [], + validationError: + 'Please enter a response of no more than 1000 alphanumeric characters', + }, clinDollars: { mask: createNumberMask({ prefix: '$', allowDecimal: true }), match: /^-?\d+\.?\d*$/, @@ -53,6 +73,13 @@ export default { unmask: [','], validationError: 'Please enter a number', }, + name: { + mask: false, + match: /.{1,100}/, + unmask: [], + validationError: + 'This field accepts letters, numbers, commas, apostrophes, hyphens, and periods.', + }, phoneExt: { mask: createNumberMask({ prefix: '', @@ -71,7 +98,7 @@ export default { unmask: [], validationError: 'Portfolio names can be between 4-100 characters', }, - requiredField: { + required: { mask: false, match: /.+/, unmask: [], diff --git a/styles/elements/_inputs.scss b/styles/elements/_inputs.scss index a5040e41..195d0a2b 100644 --- a/styles/elements/_inputs.scss +++ b/styles/elements/_inputs.scss @@ -230,6 +230,8 @@ &--anything, &--portfolioName, &--requiredField, + &--defaultStringField, + &--defaultTextAreaField, &--taskOrderNumber, &--email { input { diff --git a/templates/applications/fragments/add_new_environment.html b/templates/applications/fragments/add_new_environment.html index 9cbc507a..9947a854 100644 --- a/templates/applications/fragments/add_new_environment.html +++ b/templates/applications/fragments/add_new_environment.html @@ -13,7 +13,7 @@ ) }}
{{ "portfolios.applications.enter_env_name" | translate }}
- {{ TextInput(new_env_form.name, label="", validation="requiredField", optional=False) }} + {{ TextInput(new_env_form.name, label="", validation="defaultStringField", optional=False) }}
{{ SaveButton(text=('common.save' | translate), element="input", form="add-new-env") }} diff --git a/templates/applications/fragments/environments.html b/templates/applications/fragments/environments.html index 09da6e53..8676bc6d 100644 --- a/templates/applications/fragments/environments.html +++ b/templates/applications/fragments/environments.html @@ -81,7 +81,7 @@
{{ edit_form.csrf_token }} - {{ TextInput(edit_form.name, validation='requiredField', optional=False) }} + {{ TextInput(edit_form.name, validation='defaultStringField', optional=False) }} {{ SaveButton( text=("common.save_changes" | translate) diff --git a/templates/applications/fragments/member_form_fields.html b/templates/applications/fragments/member_form_fields.html index 03efa474..7b04f8cc 100644 --- a/templates/applications/fragments/member_form_fields.html +++ b/templates/applications/fragments/member_form_fields.html @@ -119,8 +119,8 @@ {% macro InfoFields(member_form) %}