Merge pull request #85 from Safelite/feature/CSR-203

Feature/CSR-203
This commit is contained in:
AdamCaouetteSafelite 2021-12-07 15:14:25 -05:00 committed by GitHub
commit 6ea7435bd9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 83 additions and 11 deletions

View file

@ -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"

View 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();
});
});

View 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>

View file

@ -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 };

View file

@ -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 {

View file

@ -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],

View file

@ -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>

View file

@ -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 {