commit
6ea7435bd9
8 changed files with 83 additions and 11 deletions
|
|
@ -6,7 +6,7 @@
|
||||||
}}</span>
|
}}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="w-100 d-flex justify-content-center">
|
<div class="w-100 d-flex justify-content-center">
|
||||||
<div class="car_list overflow-scroll position-absolute container-fluid pt-1" role="radiogroup" aria-labelledby="select-year-radio-group">
|
<div class="car_list overflow-scroll position-absolute container-fluid w-100 pt-1" role="radiogroup" aria-labelledby="select-year-radio-group">
|
||||||
<h3 class="visually-hidden" id="select-year-radio-group">*</h3>
|
<h3 class="visually-hidden" id="select-year-radio-group">*</h3>
|
||||||
<radio v-for="answer in answers" :key="answer"
|
<radio v-for="answer in answers" :key="answer"
|
||||||
:radioID="answer"
|
:radioID="answer"
|
||||||
|
|
|
||||||
21
src/common-components/site-header/site-header.spec.js
Normal file
21
src/common-components/site-header/site-header.spec.js
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
import { shallowMount } from '@vue/test-utils';
|
||||||
|
import siteHeader from './site-header';
|
||||||
|
|
||||||
|
describe('siteHeader', () => {
|
||||||
|
|
||||||
|
test('renders the logo image', () => {
|
||||||
|
// Arrange
|
||||||
|
|
||||||
|
// Act
|
||||||
|
const wrapper = shallowMount(siteHeader, {
|
||||||
|
propsData: {
|
||||||
|
imageSrc: "image_url",
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
expect(wrapper.find('img')).toBeTruthy();
|
||||||
|
wrapper.unmount();
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
30
src/common-components/site-header/site-header.vue
Normal file
30
src/common-components/site-header/site-header.vue
Normal file
|
|
@ -0,0 +1,30 @@
|
||||||
|
<template>
|
||||||
|
<div class="funnel-header d-flex justify-content-center align-items-center" v-if="imageSrc">
|
||||||
|
<img
|
||||||
|
class="logo-image img-fluid"
|
||||||
|
:src="imageSrc"
|
||||||
|
alt="Safelite logo"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
name: "site-header",
|
||||||
|
props: {
|
||||||
|
imageSrc: {
|
||||||
|
type: String,
|
||||||
|
required: true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.funnel-header {
|
||||||
|
height: 56px;
|
||||||
|
}
|
||||||
|
.logo-image {
|
||||||
|
max-width: 78px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -2,6 +2,7 @@ const widgetNames = {
|
||||||
PAGE_HEADER_WIDGET: "PageHeaderWidget",
|
PAGE_HEADER_WIDGET: "PageHeaderWidget",
|
||||||
RADIO_QUESTION_WIDGET: "RadioQuestionWidget",
|
RADIO_QUESTION_WIDGET: "RadioQuestionWidget",
|
||||||
VEHICLE_BANNER_WIDGET: "VehicleBannerWidget",
|
VEHICLE_BANNER_WIDGET: "VehicleBannerWidget",
|
||||||
|
SITE_HEADER_WIDGET: "SiteHeaderWidget",
|
||||||
};
|
};
|
||||||
|
|
||||||
export { widgetNames };
|
export { widgetNames };
|
||||||
|
|
|
||||||
|
|
@ -360,6 +360,16 @@
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="row my-4">
|
||||||
|
<div class="col">
|
||||||
|
<h4 class="m-0 p-2 bg-light rounded">Site Header</h4>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row my-3">
|
||||||
|
<div class="col">
|
||||||
|
<siteHeader imageSrc="https://digitalconsumercms-dev.safelite.com/images/default-source/default-album/safelite-logo.svg?sfvrsn=45e7ed06_3" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<div class="row my-4">
|
<div class="row my-4">
|
||||||
<div class="col">
|
<div class="col">
|
||||||
<h4 class="m-0 p-2 bg-light rounded">Vehicle Banner</h4>
|
<h4 class="m-0 p-2 bg-light rounded">Vehicle Banner</h4>
|
||||||
|
|
@ -381,6 +391,7 @@
|
||||||
import radio from "@/ux-components/radio/radio";
|
import radio from "@/ux-components/radio/radio";
|
||||||
import alert from "@/ux-components/alert/alert";
|
import alert from "@/ux-components/alert/alert";
|
||||||
import vehicleBanner from "@/common-components/vehicle-banner/vehicle-banner";
|
import vehicleBanner from "@/common-components/vehicle-banner/vehicle-banner";
|
||||||
|
import siteHeader from "@/common-components/site-header/site-header";
|
||||||
import radioHorizontal from "@/ux-components/radio-horizontal/radio-horizontal";
|
import radioHorizontal from "@/ux-components/radio-horizontal/radio-horizontal";
|
||||||
export default {
|
export default {
|
||||||
name: "App",
|
name: "App",
|
||||||
|
|
@ -392,7 +403,8 @@
|
||||||
radio,
|
radio,
|
||||||
alert,
|
alert,
|
||||||
vehicleBanner,
|
vehicleBanner,
|
||||||
radioHorizontal
|
radioHorizontal,
|
||||||
|
siteHeader,
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,7 @@ describe("vehicle-year.vue", () => {
|
||||||
PageHeaderWidget: [{ HeaderText: "Select a year to get started" }],
|
PageHeaderWidget: [{ HeaderText: "Select a year to get started" }],
|
||||||
RadioQuestionWidget: [{ QuestionText: "What year is your vehicle?" }],
|
RadioQuestionWidget: [{ QuestionText: "What year is your vehicle?" }],
|
||||||
VehicleBannerWidget: [{ GenericVehicleImage: "https://digitalconsumercms-dev.safelite.com/images/default-source/default-album/blurred-image.jpg?sfvrsn=a6ce3034_3" }],
|
VehicleBannerWidget: [{ GenericVehicleImage: "https://digitalconsumercms-dev.safelite.com/images/default-source/default-album/blurred-image.jpg?sfvrsn=a6ce3034_3" }],
|
||||||
|
SiteHeaderWidget: [{ "LogoImage": "https://digitalconsumercms-dev.safelite.com/images/default-source/default-album/safelite-logo.svg?sfvrsn=45e7ed06_3" }],
|
||||||
isCmsContentReady: true,
|
isCmsContentReady: true,
|
||||||
},
|
},
|
||||||
getVehicleYear: [2023, 2022, 2021],
|
getVehicleYear: [2023, 2022, 2021],
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
<template v-if="isCmsContentReady">
|
<template v-if="isCmsContentReady">
|
||||||
|
<siteHeader :imageSrc="siteHeaderWidget.LogoImage" />
|
||||||
<div class="select-car">
|
<div class="select-car">
|
||||||
<div class="select-car-form rounded text-center">
|
<div class="select-car-form rounded text-center">
|
||||||
<vehicleBanner :vehicleImageSrc="vehicleBannerWidget.GenericVehicleImage" />
|
<vehicleBanner :vehicleImageSrc="vehicleBannerWidget.GenericVehicleImage" />
|
||||||
|
|
@ -12,6 +13,7 @@
|
||||||
// Components
|
// Components
|
||||||
import yearQuestion from "@/layouts/vehicle-year/year-question/year-question";
|
import yearQuestion from "@/layouts/vehicle-year/year-question/year-question";
|
||||||
import pageHeader from "@/ux-components/header/header";
|
import pageHeader from "@/ux-components/header/header";
|
||||||
|
import siteHeader from "@/common-components/site-header/site-header";
|
||||||
import vehicleBanner from "@/common-components/vehicle-banner/vehicle-banner";
|
import vehicleBanner from "@/common-components/vehicle-banner/vehicle-banner";
|
||||||
// Supporting files
|
// Supporting files
|
||||||
import { fetchCmsContentForPage } from "@/helpers/cms-content-helper";
|
import { fetchCmsContentForPage } from "@/helpers/cms-content-helper";
|
||||||
|
|
@ -25,6 +27,7 @@ export default {
|
||||||
pageHeaderWidgets: {},
|
pageHeaderWidgets: {},
|
||||||
radioQuestionWidgets: {},
|
radioQuestionWidgets: {},
|
||||||
vehicleYears: [],
|
vehicleYears: [],
|
||||||
|
siteHeaderWidget: {},
|
||||||
vehicleBannerWidget: {},
|
vehicleBannerWidget: {},
|
||||||
selectedYear: null
|
selectedYear: null
|
||||||
};
|
};
|
||||||
|
|
@ -53,6 +56,7 @@ export default {
|
||||||
// Call the "next" function to complete the transition to this page.
|
// Call the "next" function to complete the transition to this page.
|
||||||
next((vm) => {
|
next((vm) => {
|
||||||
vm.pageHeaderWidgets = resultMap.getPageContent.PageHeaderWidget[0];
|
vm.pageHeaderWidgets = resultMap.getPageContent.PageHeaderWidget[0];
|
||||||
|
vm.siteHeaderWidget = resultMap.getPageContent.SiteHeaderWidget[0];
|
||||||
vm.radioQuestionWidgets = resultMap.getPageContent.RadioQuestionWidget[0];
|
vm.radioQuestionWidgets = resultMap.getPageContent.RadioQuestionWidget[0];
|
||||||
vm.vehicleBannerWidget = resultMap.getPageContent.VehicleBannerWidget[0];
|
vm.vehicleBannerWidget = resultMap.getPageContent.VehicleBannerWidget[0];
|
||||||
vm.vehicleYears = resultMap.getVehicleYear;
|
vm.vehicleYears = resultMap.getVehicleYear;
|
||||||
|
|
@ -70,19 +74,22 @@ export default {
|
||||||
components: {
|
components: {
|
||||||
yearQuestion,
|
yearQuestion,
|
||||||
pageHeader,
|
pageHeader,
|
||||||
vehicleBanner
|
siteHeader,
|
||||||
|
vehicleBanner,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
.select-car {
|
.select-car {
|
||||||
height: calc(100vh - 1rem);
|
height: calc(100vh - 56px);
|
||||||
|
padding: 0 1.5rem;
|
||||||
|
|
||||||
.car_list {
|
.car_list {
|
||||||
// Height will be determined by overall height of content above list
|
// Height will be determined by overall height of content above list
|
||||||
height: calc(100% - 255px);
|
height: calc(100% - 300px);
|
||||||
width: calc(100% - 1rem);
|
padding: 0 1.5rem;
|
||||||
-webkit-overflow-scrolling: touch;
|
-webkit-overflow-scrolling: touch;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
||||||
|
|
@ -3,11 +3,11 @@
|
||||||
body {
|
body {
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
padding: .5rem;
|
|
||||||
.container-fluid {
|
.container-fluid {
|
||||||
max-width: 576px;//Remove once desktop app is complete
|
max-width: 576px; //Remove once desktop app is complete
|
||||||
&.container-shadow {
|
&.container-shadow {
|
||||||
box-shadow: 0px 0px 6px 0px rgba(0,0,0,0.15);//Use instead of Bootstrap's helper
|
box-shadow: 0px 0px 6px 0px rgba(0,0,0,0.15); //Use instead of Bootstrap's helper
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
a {
|
a {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue