diff --git a/src/common-components/dropdown-question/dropdown-question.vue b/src/common-components/dropdown-question/dropdown-question.vue
index 38cf15985..f5fdf1983 100644
--- a/src/common-components/dropdown-question/dropdown-question.vue
+++ b/src/common-components/dropdown-question/dropdown-question.vue
@@ -8,14 +8,16 @@
:aria-disabled="isDisabled"
:disabled="isDisabled"
:aria-required="isRequired"
- :validationRules="validationRules" >
+ :validationRules="validationRules"
+ @input="handleChange"
+ @blur="handleBlur" >
-
- There has been an error!
-
+
+ {{ errorMessage }}
+
@@ -36,10 +38,30 @@ export default {
disableAutoFill: Boolean,
validationRules: String,
},
+ setup(props) {
+ const fieldOptions = {
+ type: "text",
+ value: props.modelValue,
+ };
+
+ const {
+ errorMessage,
+ handleBlur,
+ handleChange,
+ meta,
+ } = useField(props.inputId, props.validationRules, fieldOptions);
+
+ return {
+ errorMessage,
+ handleBlur,
+ handleChange,
+ meta,
+ };
+ },
data() {
return {
- labelText: "",
- ariaLabelText: "",
+ labelText: "",
+ ariaLabelText: "",
}
},
methods: {
@@ -65,6 +87,11 @@ export default {
}
},
},
+ watch: {
+ selectedOption(newValue) {
+ this.handleChange(newValue);
+ }
+ }
};
diff --git a/src/common-components/textbox-question/textbox-question.vue b/src/common-components/textbox-question/textbox-question.vue
index 18f2851c5..4a4298f91 100644
--- a/src/common-components/textbox-question/textbox-question.vue
+++ b/src/common-components/textbox-question/textbox-question.vue
@@ -14,15 +14,19 @@
:aria-required="isRequired"
autocomplete="off"
:class="[hasIcon ? 'has-icon' : '', iconRight ? 'icon-right' : '']"
- :validationRules="validationRules" />
-
- There has been an error!
-
+ :validationRules="validationRules"
+ @input="handleChange"
+ @blur="handleBlur" />
+
+ {{ errorMessage }}
+
diff --git a/src/constants/error-messages.js b/src/constants/error-messages.js
index 1fd2a77c2..2b3382dc9 100644
--- a/src/constants/error-messages.js
+++ b/src/constants/error-messages.js
@@ -14,6 +14,7 @@ const errorMessages = {
FIRST_NAME_REQUIRED: "Please enter your first name",
LAST_NAME_REQUIRED: "Please enter your last name",
EMAIL_ADDRESS_REQUIRED: "Please enter your email address",
+ EMAIL_ADDRESS_FORMAT: "Please enter a valid email address",
};
export { errorMessages };
\ No newline at end of file
diff --git a/src/helpers/validation-rules.js b/src/helpers/validation-rules.js
index 1ac4ce818..9b2e14d58 100644
--- a/src/helpers/validation-rules.js
+++ b/src/helpers/validation-rules.js
@@ -5,4 +5,21 @@ export function required(errorMessage) {
}
return true;
};
+}
+
+export function regex(expression, errorMessage) {
+ return (value) => {
+ // Field is empty, should pass
+ if (!value || !value.length) {
+ return true;
+ }
+
+ // Check if email
+ if (!expression.test(value)) {
+ return errorMessage;
+ }
+
+ return true;
+ }
+
}
\ No newline at end of file
diff --git a/src/layouts/address-lookup/address-lookup.vue b/src/layouts/address-lookup/address-lookup.vue
index 9914c406c..2d3cc481e 100644
--- a/src/layouts/address-lookup/address-lookup.vue
+++ b/src/layouts/address-lookup/address-lookup.vue
@@ -1,13 +1,21 @@
-
+
diff --git a/src/layouts/address-lookup/customer-questions/address-questions/address-questions.vue b/src/layouts/address-lookup/customer-questions/address-questions/address-questions.vue
index 20dae6350..b8e20d7e7 100644
--- a/src/layouts/address-lookup/customer-questions/address-questions/address-questions.vue
+++ b/src/layouts/address-lookup/customer-questions/address-questions/address-questions.vue
@@ -1,22 +1,22 @@
@@ -36,13 +36,23 @@