completed header component

This commit is contained in:
Jason Wheeler 2022-10-21 15:06:26 -04:00
parent 34daf91e40
commit b6071e953c
4 changed files with 63 additions and 12 deletions

View file

@ -0,0 +1,25 @@
import siteHeader from "@/common-components/site-header/site-header";
import { shallowMount } from "@vue/test-utils";
describe("site-header", () => {
test("renders the logo image", () => {
const wrapper = shallowMount(siteHeader, {
setProps: {
cmsWidgetName: "header",
},
mixins: [mockMixin]
});
expect(wrapper.find("img")).toBeTruthy();
wrapper.unmount();
});
});
const mockMixin = {
methods: {
getCmsContent: jest.fn()
}
}

View file

@ -1,21 +1,23 @@
<template> <template>
<div class="headerContainer"> <div class="headerContainer">
<img class="siteHeader" :src="url" :alt="altText" /> <img id="siteHeaderImage" :src="imageSrc" :alt="altText" />
</div> </div>
</template> </template>
<script> <script>
export default({ export default({
name: "siteHeader", name: "siteHeader",
props: {
cmsWidgetName: String,
},
computed: { computed: {
url() imageSrc()
{ {
return this.getCmsContent("Header", "LogoImageURL") return this.getCmsContent(this.cmsWidgetName, "LogoImageURL")
}, },
altText() altText()
{ {
return this.getCmsContent("Header", "AltText") return this.getCmsContent(this.cmsWidgetName, "AltText")
} }
} }
}) })
@ -26,8 +28,7 @@
.headerContainer{ .headerContainer{
width: 100%; width: 100%;
margin: 16px auto; margin: 16px auto;
text-align: center; text-align: center
} }
</style> </style>

View file

@ -1,7 +1,7 @@
<template> <template>
<div> <div>
<div class="fade-on-route-transition"> <div class="fade-on-route-transition">
<siteHeader /> <siteHeader cmsWidgetName="Header"/>
<navButton type="button" text="back" :scenario="this.navigationScenarios.CLICKED_BACK"></navButton> <navButton type="button" text="back" :scenario="this.navigationScenarios.CLICKED_BACK"></navButton>
<p>Vehicle Year Placeholder</p> <p>Vehicle Year Placeholder</p>
<input type="text" v-model="year"/> <input type="text" v-model="year"/>

View file

@ -1,6 +1,7 @@
<template> <template>
<div> <div>
<div class="fade-on-route-transition"> <div class="fade-on-route-transition">
<siteHeader cmsWidgetName="Header"/>
<p>Welcome Page Placeholder</p> <p>Welcome Page Placeholder</p>
<br /> <br />
<navButton type="button" text="Next" :scenario="this.navigationScenarios.CLICKED_FORWARD"></navButton> <navButton type="button" text="Next" :scenario="this.navigationScenarios.CLICKED_FORWARD"></navButton>
@ -10,12 +11,36 @@
</template> </template>
<script> <script>
import navButton from "@/common-components/nav-button/nav-button.vue"; import navButton from "@/common-components/nav-button/nav-button";
import siteHeader from '@/common-components/site-header/site-header';
import { fetchCmsContentForPage } from "@/helpers/cms-content-helper";
import { settleAllPromises } from "@/helpers/layout-helper";
export default { export default {
name: "welcome-page", name: "welcome-page",
components: { navButton }, components: { navButton, siteHeader },
} async beforeRouteEnter(to, from, next)
{
// Call APIs
const cmsContentPromise = fetchCmsContentForPage(to.query.issPage);
// Settle promises and get results
const promiseResultMap = [
{
resultKey: "cmsContent",
promise: cmsContentPromise,
},
];
//use resultMap to populate layout content.
let resultMap = await settleAllPromises(promiseResultMap);
next((vm) => {
vm.setCmsContent(resultMap.cmsContent);
});
},
}
</script> </script>
<style scoped> <style scoped>