diff --git a/src/constants/error-messages.js b/src/constants/error-messages.js index 62fa856a..500bde97 100644 --- a/src/constants/error-messages.js +++ b/src/constants/error-messages.js @@ -29,7 +29,8 @@ const errorMessages = { POLICY_ZIP_REQUIRED: "Please enter policy zip", POLICY_ZIP_FORMAT: "Please enter a valid policy ZIP", LOSS_CAUSE_REQUIRED: "Please enter loss cause", - LOSS_CITY_REQUIRED: "Please enter loss city" + LOSS_CITY_REQUIRED: "Please enter loss city", + LOSS_STATE_REQUIRED: "Please enter loss state" }; export { errorMessages }; \ No newline at end of file diff --git a/src/layouts/welcome-page/welcome-page.vue b/src/layouts/welcome-page/welcome-page.vue index 98794a76..4be94b00 100644 --- a/src/layouts/welcome-page/welcome-page.vue +++ b/src/layouts/welcome-page/welcome-page.vue @@ -4,6 +4,17 @@

Welcome Page Placeholder


+
+ +
@@ -15,32 +26,117 @@ import siteHeader from '@/common-components/site-header/site-header'; import { fetchCmsContentForPage } from "@/helpers/cms-content-helper"; import { settleAllPromises } from "@/helpers/layout-helper"; + import dropdownQuestion from "@/common-components/dropdown-question/dropdown-question"; + import { defineRule } from "vee-validate"; + import { required } from "@/helpers/validation-rules"; + import { errorMessages } from "@/constants/error-messages"; + //define validation rules + defineRule("loss-state-required", required(errorMessages.STATE_REQUIRED)); - export default { + export default ({ name: "welcome-page", - components: { navButton, siteHeader }, + emits: ['update:modelValue'], // The component emits an event + props: { + modelValue: { + type: Object, + default: () => ({ + lossState: "", + }), + }, + validationRules: String, + }, + components: { navButton, siteHeader, dropdownQuestion }, async beforeRouteEnter(to, from, next) + { + // Call APIs + const cmsContentPromise = fetchCmsContentForPage(to.query.issPage); + + // Settle promises and get results + const promiseResultMap = [ { - // Call APIs - const cmsContentPromise = fetchCmsContentForPage(to.query.issPage); - - // Settle promises and get results - const promiseResultMap = [ - { - resultKey: "cmsContent", - promise: cmsContentPromise, - }, - ]; + resultKey: "cmsContent", + promise: cmsContentPromise, + }, + ]; - //use resultMap to populate layout content. - let resultMap = await settleAllPromises(promiseResultMap); + //use resultMap to populate layout content. + let resultMap = await settleAllPromises(promiseResultMap); - next((vm) => { - vm.setCmsContent(resultMap.cmsContent); - }); - }, - } + next((vm) => { + vm.setCmsContent(resultMap.cmsContent); + }); + }, + computed: + { + stateOptions: { + get: function () { + return { + 'AL': 'Alabama', + 'AK': 'Alaska', + 'AZ': 'Arizona', + 'AR': 'Arkansas', + 'CA': 'California', + 'CO': 'Colorado', + 'CT': 'Connecticut', + 'DE': 'Delaware', + 'DC': 'District Of Columbia', + 'FL': 'Florida', + 'GA': 'Georgia', + 'HI': 'Hawaii', + 'ID': 'Idaho', + 'IL': 'Illinois', + 'IN': 'Indiana', + 'IA': 'Iowa', + 'KS': 'Kansas', + 'KY': 'Kentucky', + 'LA': 'Louisiana', + 'ME': 'Maine', + 'MD': 'Maryland', + 'MA': 'Massachusetts', + 'MI': 'Michigan', + 'MN': 'Minnesota', + 'MS': 'Mississippi', + 'MO': 'Missouri', + 'MT': 'Montana', + 'NE': 'Nebraska', + 'NV': 'Nevada', + 'NH': 'New Hampshire', + 'NJ': 'New Jersey', + 'NM': 'New Mexico', + 'NY': 'New York', + 'NC': 'North Carolina', + 'ND': 'North Dakota', + 'OH': 'Ohio', + 'OK': 'Oklahoma', + 'OR': 'Oregon', + 'PA': 'Pennsylvania', + 'RI': 'Rhode Island', + 'SC': 'South Carolina', + 'SD': 'South Dakota', + 'TN': 'Tennessee', + 'TX': 'Texas', + 'UT': 'Utah', + 'VT': 'Vermont', + 'VA': 'Virginia', + 'WA': 'Washington', + 'WV': 'West Virginia', + 'WI': 'Wisconsin', + 'WY': 'Wyoming', + } + } + }, + addressModel: + { + get: function() { + return this.modelValue; + }, + set: function(newValue) { + this.$emit("update:modelValue", newValue); + } + }, + } + })