This should have the new behavior and keep the old behavior
This commit is contained in:
parent
11f94b0e50
commit
e25425e2a0
4 changed files with 67 additions and 3 deletions
18
src/App.vue
18
src/App.vue
|
|
@ -5,15 +5,33 @@
|
||||||
<component :is="Component" @focusin="handleAnyComponentFocus" />
|
<component :is="Component" @focusin="handleAnyComponentFocus" />
|
||||||
</transition>
|
</transition>
|
||||||
</router-view>
|
</router-view>
|
||||||
|
<loadingModal notFullScreen :showLoader="shouldShowLoader" :showTextCarousel="shouldShowTextCarousel" />
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { handleAnyComponentFocus } from "@/helpers/button-question-focus-helper";
|
import { handleAnyComponentFocus } from "@/helpers/button-question-focus-helper";
|
||||||
|
import loadingModal from "@/fmg-components/loading-modal/loading-modal.vue";
|
||||||
|
import { showFmgLoadingModal } from "@/helpers/loading-modal-helper";
|
||||||
export default {
|
export default {
|
||||||
name: "app",
|
name: "app",
|
||||||
|
setup() {
|
||||||
|
const { globalNonpersistedState } = showFmgLoadingModal();
|
||||||
|
return { globalNonpersistedState };
|
||||||
|
},
|
||||||
methods: {
|
methods: {
|
||||||
handleAnyComponentFocus: handleAnyComponentFocus,
|
handleAnyComponentFocus: handleAnyComponentFocus,
|
||||||
},
|
},
|
||||||
|
computed: {
|
||||||
|
shouldShowLoader() {
|
||||||
|
return this.globalNonpersistedState.showLoadingModal;
|
||||||
|
},
|
||||||
|
shouldShowTextCarousel() {
|
||||||
|
return this.globalNonpersistedState.showTextCarousel;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
components: {
|
||||||
|
loadingModal,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
<template>
|
<template>
|
||||||
<div v-if="isModalVisible" class="container-fluid modal-loader">
|
<div v-if="showModalContent" class="container-fluid modal-loader">
|
||||||
<div class="row g-2 h-100 d-flex align-items-center">
|
<div class="row g-2 h-100 d-flex align-items-center">
|
||||||
<div class="container-fluid overflow-hidden">
|
<div class="container-fluid overflow-hidden">
|
||||||
<div class="row h-100">
|
<div class="row h-100">
|
||||||
|
|
@ -9,7 +9,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div v-if="showTextCarouselContent" class="row">
|
||||||
<div class="col">
|
<div class="col">
|
||||||
<div class="text-container slide">
|
<div class="text-container slide">
|
||||||
<p>
|
<p>
|
||||||
|
|
@ -56,11 +56,31 @@ export default {
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
isModalVisible: false,
|
isModalVisible: false,
|
||||||
|
isModalTextCarouselVisible: false,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
props: {
|
||||||
|
showLoader: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false,
|
||||||
|
},
|
||||||
|
showTextCarousel: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
showModalContent() {
|
||||||
|
return this.isModalVisible || this.showLoader;
|
||||||
|
},
|
||||||
|
showTextCarouselContent() {
|
||||||
|
return this.isModalTextCarouselVisible || this.showTextCarousel;
|
||||||
|
},
|
||||||
|
},
|
||||||
methods: {
|
methods: {
|
||||||
showModal() {
|
showModal(showTextCarousel = true) {
|
||||||
//Display modal
|
//Display modal
|
||||||
|
this.isModalTextCarouselVisible = showTextCarousel;
|
||||||
this.isModalVisible = true;
|
this.isModalVisible = true;
|
||||||
//Force page reload on back button
|
//Force page reload on back button
|
||||||
window.addEventListener(
|
window.addEventListener(
|
||||||
|
|
|
||||||
18
src/helpers/loading-modal-helper.js
Normal file
18
src/helpers/loading-modal-helper.js
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
import { reactive } from "vue";
|
||||||
|
|
||||||
|
// state encapsulated and managed by the composable
|
||||||
|
const globalNonpersistedState = reactive({
|
||||||
|
showLoadingModal: true,
|
||||||
|
showTextCarousel: false,
|
||||||
|
});
|
||||||
|
|
||||||
|
export const showFmgLoadingModal = (newValue, showTextCarousel = false) => {
|
||||||
|
if (newValue !== undefined) {
|
||||||
|
globalNonpersistedState.showLoadingModal = newValue;
|
||||||
|
}
|
||||||
|
if (showTextCarousel !== undefined) {
|
||||||
|
globalNonpersistedState.showTextCarousel = showTextCarousel;
|
||||||
|
}
|
||||||
|
|
||||||
|
return { globalNonpersistedState };
|
||||||
|
};
|
||||||
|
|
@ -8,6 +8,7 @@ import { globalEvents, globalEventTypes } from "@/constants/events";
|
||||||
import { queryStrings } from "@/constants/query-strings";
|
import { queryStrings } from "@/constants/query-strings";
|
||||||
import { getQuerystringParameter } from "@/helpers/querystring-helper";
|
import { getQuerystringParameter } from "@/helpers/querystring-helper";
|
||||||
import { getDeviceIdValue } from "@/helpers/heritage-integration/cookie-helper";
|
import { getDeviceIdValue } from "@/helpers/heritage-integration/cookie-helper";
|
||||||
|
import { showFmgLoadingModal } from "@/helpers/loading-modal-helper";
|
||||||
|
|
||||||
// Heritage integration
|
// Heritage integration
|
||||||
import { isSavedSessionStillActive } from "@/helpers/heritage-integration/session-helper";
|
import { isSavedSessionStillActive } from "@/helpers/heritage-integration/session-helper";
|
||||||
|
|
@ -152,6 +153,11 @@ router.beforeEach(async (to, from, next) => {
|
||||||
// use current page url query string name when to.name is "root" (due to unresolved navigation in beforeEach)
|
// use current page url query string name when to.name is "root" (due to unresolved navigation in beforeEach)
|
||||||
router.lastNavigationPage = to.name == "root" ? analyticsMixin.methods.getPageName() : to.name;
|
router.lastNavigationPage = to.name == "root" ? analyticsMixin.methods.getPageName() : to.name;
|
||||||
|
|
||||||
|
const fromQueryPage = from.query?.fmgPage;
|
||||||
|
if (fromQueryPage === undefined) {
|
||||||
|
showFmgLoadingModal(true);
|
||||||
|
}
|
||||||
|
|
||||||
next();
|
next();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -169,6 +175,8 @@ router.afterEach(async (to, from) => {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
showFmgLoadingModal(false);
|
||||||
|
|
||||||
// Push page view to GA
|
// Push page view to GA
|
||||||
analyticsMixin.methods.pushPageViewToGA();
|
analyticsMixin.methods.pushPageViewToGA();
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue