diff --git a/src/constants/error-messages.js b/src/constants/error-messages.js
index 65acc9ae..ace5e564 100644
--- a/src/constants/error-messages.js
+++ b/src/constants/error-messages.js
@@ -25,6 +25,11 @@ const errorMessages = Object.freeze({
EMAIL_ADDRESS_FORMAT: 'Please enter a valid email address.',
SERVICE_ZIP_REQUIRED: 'ZIP code is required',
SERVICE_ZIP_FORMAT: 'Invalid ZIP, please enter a new ZIP (5 characters)',
+ MOBILE_SERVICE_ZIP_FORMAT: 'Invalid ZIP code',
+ NO_SERVICE_IN_ZIP: (zip) => `We're sorry, but we don't offer service in ${zip} at this time.`,
+ PROVIDER_REQUIRED: 'Please select a provider.',
+ INVALID_ZIP: 'The ZIP you entered was invalid. Please enter a valid ZIP.',
+ ZIP_CODE_NOT_SERVICED_FOR_VEHICLE: 'We do not currently offer glass service for your vehicle in this ZIP code. Please try another ZIP code.',
VIN_REQUIRED: 'Please enter your VIN',
VIN_FORMAT:
// eslint-disable-next-line max-len
diff --git a/src/digital-components/button-question/button-question.vue b/src/digital-components/button-question/button-question.vue
index 5c380612..da7eb5c7 100644
--- a/src/digital-components/button-question/button-question.vue
+++ b/src/digital-components/button-question/button-question.vue
@@ -294,6 +294,11 @@ export default {
this.resetField({
value: newValue
});
+ },
+ answers() {
+ this.resetField({
+ value: this.modelValue
+ });
}
},
beforeMount() {
diff --git a/src/digital-components/modal/modal.vue b/src/digital-components/modal/modal.vue
index 3875cf0a..8f952d6b 100644
--- a/src/digital-components/modal/modal.vue
+++ b/src/digital-components/modal/modal.vue
@@ -86,6 +86,10 @@ export default {
modalPosition: {
type: String,
default: modalPositions.edge
+ },
+ allowInvalidSubmit: {
+ type: Boolean,
+ default: false
}
},
emits: ['footer-button-event', 'isModalOpened'],
@@ -123,7 +127,7 @@ export default {
methods: {
async validateAndEmit() {
const validationResult = await this.validate();
- if (validationResult.valid) {
+ if (validationResult.valid || this.allowInvalidSubmit) {
this.$emit('footer-button-event');
}
},
diff --git a/src/digital-components/text-block/text-block.vue b/src/digital-components/text-block/text-block.vue
index f6d0d591..f6db4887 100644
--- a/src/digital-components/text-block/text-block.vue
+++ b/src/digital-components/text-block/text-block.vue
@@ -51,7 +51,7 @@ export default {
props: {
customText: String, // used to allow the insert of token values into textblock
justifyText: String, // left, right, center
- typeStyle: String, // h1-h6, body, small, label, caption
+ typeStyle: String, // h1-h6, body, small, label, caption, disclaimer
// (see Figma or Confluence documentation)
fontWeight: String, // bold=500, default is 400
cmsWidgetName: String,
@@ -109,5 +109,12 @@ export default {
&.dark {
color: $black;
}
+ &.disclaimer {
+ color: $lighter-gray;
+ font-weight: $font-weight-light;
+ font-size: .8125rem;
+ font-style: italic;
+ margin-top: .625rem;
+ }
}
diff --git a/src/digital-components/textbox-question/textbox-question.vue b/src/digital-components/textbox-question/textbox-question.vue
index 7992abb7..028617e7 100644
--- a/src/digital-components/textbox-question/textbox-question.vue
+++ b/src/digital-components/textbox-question/textbox-question.vue
@@ -250,8 +250,10 @@ export default {
this.$emit('click-event');
}
},
- clickedTextButton() {
- if (this.meta.valid) {
+ async clickedTextButton() {
+ const result = await validate(this.value, this.validationRules);
+ if (result.valid) {
+ this.handleChange(this.value);
this.$emit('click-event');
}
}
@@ -378,8 +380,8 @@ input::-webkit-date-and-time-value {
.form-control {
border: $border-input;
border-radius: $border-radius;
- min-height: 3rem;
- max-height: 3rem;
+ min-height: 2.8125rem;
+ max-height: 2.8125rem;
padding: 0.75rem 1rem;
letter-spacing: inherit;
box-shadow: $box-shadow-input;
diff --git a/src/iss-components/google-map/google-map.vue b/src/iss-components/google-map/google-map.vue
index 4f2fa023..686cf5ec 100644
--- a/src/iss-components/google-map/google-map.vue
+++ b/src/iss-components/google-map/google-map.vue
@@ -55,7 +55,7 @@ export default {
const { AdvancedMarkerElement, PinElement } = await window.google.maps.importLibrary('marker');
markers?.forEach((marker, index) => {
const pinElement = new PinElement({
- glyph: String.fromCharCode('A'.charCodeAt(0) + index),
+ glyphText: String.fromCharCode('A'.charCodeAt(0) + index),
glyphColor: '#000000',
borderColor: '#000000'
});
diff --git a/src/iss-components/shop-list-button/__snapshots__/shop-list-button.spec.js.snap b/src/iss-components/shop-list-button/__snapshots__/shop-list-button.spec.js.snap
index 200d67d6..209c7610 100644
--- a/src/iss-components/shop-list-button/__snapshots__/shop-list-button.spec.js.snap
+++ b/src/iss-components/shop-list-button/__snapshots__/shop-list-button.spec.js.snap
@@ -2,13 +2,13 @@
exports[`Shop list button should render correctly with all relevant props 1`] = `