CSR-240 | Fade between page transitions

Two different approaches - PR created for review purposes
This commit is contained in:
Scott Kiener 2022-05-03 16:04:49 -04:00
parent b5d4913269
commit c3b3fda79f
5 changed files with 33 additions and 4 deletions

View file

@ -1,5 +1,9 @@
<template> <template>
<router-view></router-view> <router-view v-slot="{ Component }">
<transition :duration="{ enter: 800, leave: 300 }" name="route-fade" mode="out-in">
<component :is="Component" />
</transition>
</router-view>
</template> </template>
<style lang="scss"> <style lang="scss">

View file

@ -1,6 +1,7 @@
<template> <template>
<buttonQuestion <buttonQuestion
class="radioQuestion" class="radioQuestion"
:class="{'fade-on-route-transition': this.fadeOnRouteTransition}"
isOverflowScrollable isOverflowScrollable
selectingInitiatesLoad selectingInitiatesLoad
:questionText="questionText" :questionText="questionText"
@ -29,6 +30,7 @@ export default {
props: { props: {
modelValue: String, modelValue: String,
cmsWidgetName: String, cmsWidgetName: String,
fadeOnRouteTransition: Boolean,
}, },
computed: { computed: {
questionText(){ questionText(){

View file

@ -10,7 +10,7 @@
backButtonAccessibleText="Change Vehicle Year" backButtonAccessibleText="Change Vehicle Year"
@click-event="backButtonAction" @click-event="backButtonAction"
/> />
<makeQuestion v-model="selectedMake" ref="makeQuestion" cmsWidgetName="VehicleMakeQuestion" /> <makeQuestion v-model="selectedMake" ref="makeQuestion" cmsWidgetName="VehicleMakeQuestion" fadeOnRouteTransition />
</div> </div>
</div> </div>
</div> </div>

View file

@ -5,7 +5,12 @@
<div class="select-car-form rounded text-center"> <div class="select-car-form rounded text-center">
<vehicleBanner cmsWidgetName="VehicleBannerWidget" displayGenericVehicleImage /> <vehicleBanner cmsWidgetName="VehicleBannerWidget" displayGenericVehicleImage />
<funnelSubHeader cmsWidgetName="FunnelSubHeaderWidget" /> <funnelSubHeader cmsWidgetName="FunnelSubHeaderWidget" />
<yearQuestion v-model="selectedYear" ref="yearQuestion" cmsWidgetName="VehicleYearQuestion" /> <yearQuestion
class="fade-on-route-transition"
v-model="selectedYear"
ref="yearQuestion"
cmsWidgetName="VehicleYearQuestion"
/>
</div> </div>
</div> </div>
</div> </div>

View file

@ -9,4 +9,22 @@
.fade-enter-from, .fade-enter-from,
.fade-leave-to { .fade-leave-to {
opacity: 0; opacity: 0;
}
.route-fade-enter-active .fade-on-route-transition {
transition: opacity 0.8s ease;
}
.route-fade-leave-active .fade-on-route-transition {
transition: opacity 0.3s ease;
}
.route-fade-enter-from .fade-on-route-transition,
.route-fade-leave-to .fade-on-route-transition {
/*
Hack around a Chrome 96 bug in handling nested opacity transitions.
This is not needed in other browsers or Chrome 99+ where the bug
has been fixed.
*/
opacity: 0.001;
} }