WIP footer menu modal.
This commit is contained in:
parent
573f1e94ca
commit
f1b600b446
8 changed files with 120 additions and 33 deletions
|
|
@ -0,0 +1 @@
|
||||||
|
test.todo("some test to be written in the future");
|
||||||
|
|
@ -0,0 +1,52 @@
|
||||||
|
<template>
|
||||||
|
<!-- Modal -->
|
||||||
|
<div class="modal fade" id="exampleModal" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
|
||||||
|
<div class="modal-dialog modal-fullscreen">
|
||||||
|
<div class="modal-content">
|
||||||
|
<div class="modal-body d-flex flex-column">
|
||||||
|
<textLink linkType="navigation" text="Terms of use" href="https://www.safelite.com/terms-of-use" />
|
||||||
|
<textLink linkType="navigation" text="Privacy policy" href="https://www.safelite.com/safelite-group-privacy-policy" />
|
||||||
|
<textLink linkType="navigation" text="Do not sell my information" href="https://privacyportal-cdn.onetrust.com/dsarwebform/d3b95a93-e22e-4d4d-a806-482052406557/9e371601-eae3-4338-9430-b90b9036022b.html" />
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer d-flex justify-content-start">
|
||||||
|
© {{new Date().getFullYear()}} Safelite Group
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import textLink from "@/ux-components/text-link/text-link";
|
||||||
|
export default {
|
||||||
|
name: 'footerMenuModal',
|
||||||
|
components: {
|
||||||
|
textLink,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss">
|
||||||
|
.modal {
|
||||||
|
max-width: 576px;
|
||||||
|
left: auto;
|
||||||
|
height: calc(100% - 72px);
|
||||||
|
top: 72px;
|
||||||
|
border-top: 1px solid $gray-300;
|
||||||
|
.modal-body {
|
||||||
|
padding: 2rem;
|
||||||
|
}
|
||||||
|
.modal-fullscreen {
|
||||||
|
width: 100vw;
|
||||||
|
max-width: 576px;
|
||||||
|
}
|
||||||
|
.navigation-link {
|
||||||
|
margin-bottom: 1.5rem;
|
||||||
|
}
|
||||||
|
.modal-footer {
|
||||||
|
border-top: none;
|
||||||
|
padding: 2rem;
|
||||||
|
}
|
||||||
|
//.modal-backdrop styles are in common-styles.scss
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="footer pt-4">
|
<footer class="footer pt-4">
|
||||||
<div class="container-fluid g-2">
|
<div class="container-fluid g-2">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-12 d-flex justify-content-center pb-2 fs-7">
|
<div class="col-12 d-flex justify-content-center pb-2 fs-7">
|
||||||
|
|
@ -26,6 +26,7 @@
|
||||||
:aria-disabled="isForwardActionDisabled"
|
:aria-disabled="isForwardActionDisabled"
|
||||||
:isDisabled="isForwardActionDisabled"
|
:isDisabled="isForwardActionDisabled"
|
||||||
@click-event="buttonClick"
|
@click-event="buttonClick"
|
||||||
|
data-bs-dismiss="modal"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="!isBackButtonHidden" class="col-auto link-col py-1 text-break">
|
<div v-if="!isBackButtonHidden" class="col-auto link-col py-1 text-break">
|
||||||
|
|
@ -34,11 +35,12 @@
|
||||||
:text="backLink"
|
:text="backLink"
|
||||||
@click-event="linkClick"
|
@click-event="linkClick"
|
||||||
href="javascript:void(0)"
|
href="javascript:void(0)"
|
||||||
|
data-bs-dismiss="modal"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</footer>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,8 @@
|
||||||
v-if="imageSrc"
|
v-if="imageSrc"
|
||||||
>
|
>
|
||||||
<img class="logo-image img-fluid" :src="imageSrc" alt="Safelite logo" />
|
<img class="logo-image img-fluid" :src="imageSrc" alt="Safelite logo" />
|
||||||
|
<menuButton/>
|
||||||
|
<footerMenuModal/>
|
||||||
</div>
|
</div>
|
||||||
<alert
|
<alert
|
||||||
class="position-absolute rounded-0 w-100 border-0 shadow-sm"
|
class="position-absolute rounded-0 w-100 border-0 shadow-sm"
|
||||||
|
|
@ -19,6 +21,8 @@
|
||||||
import alert from "@/ux-components/alert/alert";
|
import alert from "@/ux-components/alert/alert";
|
||||||
import eventBus from "@/helpers/event-bus/event-bus";
|
import eventBus from "@/helpers/event-bus/event-bus";
|
||||||
import { globalEvents } from "@/constants/events";
|
import { globalEvents } from "@/constants/events";
|
||||||
|
import menuButton from "@/common-components/menu-button/menu-button";
|
||||||
|
import footerMenuModal from "@/common-components/footer-menu-modal/footer-menu-modal";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "funnel-header",
|
name: "funnel-header",
|
||||||
|
|
@ -43,6 +47,8 @@ export default {
|
||||||
},
|
},
|
||||||
components: {
|
components: {
|
||||||
alert,
|
alert,
|
||||||
|
menuButton,
|
||||||
|
footerMenuModal,
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
// Check if alert event is on the bus
|
// Check if alert event is on the bus
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,10 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="menu-button" :class="[isActive ? 'active' : '']" @click="toggleClass()">
|
<div class="menu-button-container">
|
||||||
<div class="bar1"></div>
|
<button class="menu-button" type="button" :class="[isActive ? 'active' : '']" @click="toggleClass()" data-bs-toggle="modal" data-bs-target="#exampleModal">
|
||||||
<div class="bar2"></div>
|
<div class="bar1"></div>
|
||||||
<div class="bar3"></div>
|
<div class="bar2"></div>
|
||||||
|
<div class="bar3"></div>
|
||||||
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|
@ -23,31 +25,41 @@ export default {
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
.menu-button {
|
.menu-button-container {
|
||||||
width: 1.5rem;
|
position: absolute;
|
||||||
height: 1.5rem;
|
top: 1.47rem;
|
||||||
border-radius: 50%;
|
right: 1.47rem;
|
||||||
box-shadow: 0px 0px 8px 2px rgba(0,0,0,0.2);
|
button {
|
||||||
position: relative;
|
border: none;
|
||||||
display: flex;
|
&.menu-button {
|
||||||
flex-direction: column;
|
width: 1.5rem;
|
||||||
justify-content: center;
|
height: 1.5rem;
|
||||||
align-items: center;
|
border-radius: 50%;
|
||||||
.bar1,
|
box-shadow: 0 2px 8px 0 rgba(0,0,0,0.2);
|
||||||
.bar2,
|
background-color: $white;
|
||||||
.bar3 {
|
position: relative;
|
||||||
width: 14px;
|
display: flex;
|
||||||
height: 2px;
|
flex-direction: column;
|
||||||
background-color: $blue-400;
|
justify-content: center;
|
||||||
margin: 1px 0;
|
align-items: center;
|
||||||
transition: 0.25s;
|
z-index: 1056;
|
||||||
}
|
.bar1,
|
||||||
&.active .bar1 {
|
.bar2,
|
||||||
transform: rotate(-45deg) translate(-3px, 3px);
|
.bar3 {
|
||||||
}
|
width: 14px;
|
||||||
&.active .bar2 {opacity: 0;}
|
height: 2px;
|
||||||
&.active .bar3 {
|
background-color: $blue-400;
|
||||||
transform: rotate(45deg) translate(-3px, -3px);
|
margin: 1px 0;
|
||||||
|
transition: 0.25s;
|
||||||
|
}
|
||||||
|
&.active .bar1 {
|
||||||
|
transform: rotate(-45deg) translate(-3px, 3px);
|
||||||
|
}
|
||||||
|
&.active .bar2 {opacity: 0;}
|
||||||
|
&.active .bar3 {
|
||||||
|
transform: rotate(45deg) translate(-3px, -3px);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@
|
||||||
ref="theForm"
|
ref="theForm"
|
||||||
v-slot="{ meta }"
|
v-slot="{ meta }"
|
||||||
>
|
>
|
||||||
<div class="page-container-grouped-styles">
|
<div class="page-container-grouped-styles has-footer">
|
||||||
<funnelHeader cmsWidgetName="FunnelHeaderWidget" />
|
<funnelHeader cmsWidgetName="FunnelHeaderWidget" />
|
||||||
<vehicleBanner cmsWidgetName="VehicleBannerWidget" :displayGenericVehicleImage=false />
|
<vehicleBanner cmsWidgetName="VehicleBannerWidget" :displayGenericVehicleImage=false />
|
||||||
<funnelSubHeader cmsWidgetName="FunnelSubHeaderWidget" />
|
<funnelSubHeader cmsWidgetName="FunnelSubHeaderWidget" />
|
||||||
|
|
|
||||||
|
|
@ -47,4 +47,14 @@ body {
|
||||||
.page-container-grouped-styles {
|
.page-container-grouped-styles {
|
||||||
@extend .container-fluid, .shadow, .rounded-3, .p-2, .position-relative, .make-tall, .px-5;
|
@extend .container-fluid, .shadow, .rounded-3, .p-2, .position-relative, .make-tall, .px-5;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
//Footer modal backdrop adjustments for positioning
|
||||||
|
.modal-backdrop {
|
||||||
|
left: 50%;
|
||||||
|
transform: translateX(-50%);
|
||||||
|
max-width: 576px;
|
||||||
|
height: calc(100% - 152px);
|
||||||
|
top: 72px;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -180,3 +180,7 @@ $box-shadow-inset: inset 0 1px 2px rgba($black, .075);
|
||||||
$alert-bg-scale: -90%;
|
$alert-bg-scale: -90%;
|
||||||
$alert-border-scale: -100%;
|
$alert-border-scale: -100%;
|
||||||
$alert-color-scale: 40%;
|
$alert-color-scale: 40%;
|
||||||
|
|
||||||
|
//Modal animation
|
||||||
|
$modal-fade-transform: translate(0, 0);
|
||||||
|
$modal-backdrop-opacity: 0;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue