270 lines
9 KiB
Vue
270 lines
9 KiB
Vue
<template>
|
|
<div v-if="showModalContent" class="container-fluid modal-loader">
|
|
<div class="row g-2 h-100 d-flex align-items-center">
|
|
<div class="container-fluid overflow-hidden">
|
|
<div class="row h-100">
|
|
<div class="col text-center tagbg mb-4">
|
|
<div class="spinner-border text-danger" role="status">
|
|
<span class="visually-hidden">Loading...</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div v-if="showTextCarouselContent" class="row">
|
|
<div class="col">
|
|
<div class="text-container slide">
|
|
<p>
|
|
Tidying up the shop
|
|
<span class="dot-1">.</span>
|
|
<span class="dot-2">.</span>
|
|
<span class="dot-3">.</span>
|
|
</p>
|
|
<p>
|
|
Getting all the glass shined up
|
|
<span class="dot-1">.</span>
|
|
<span class="dot-2">.</span>
|
|
<span class="dot-3">.</span>
|
|
</p>
|
|
<p>
|
|
Planning your new view of the road
|
|
<span class="dot-1">.</span>
|
|
<span class="dot-2">.</span>
|
|
<span class="dot-3">.</span>
|
|
</p>
|
|
<p>
|
|
Nearly there
|
|
<span class="dot-1">.</span>
|
|
<span class="dot-2">.</span>
|
|
<span class="dot-3">.</span>
|
|
</p>
|
|
<p>
|
|
Finishing up
|
|
<span class="dot-1">.</span>
|
|
<span class="dot-2">.</span>
|
|
<span class="dot-3">.</span>
|
|
</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
export default {
|
|
name: "Modal",
|
|
data() {
|
|
return {
|
|
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: {
|
|
showModal(showTextCarousel = true) {
|
|
//Display modal
|
|
this.isModalTextCarouselVisible = showTextCarousel;
|
|
this.isModalVisible = true;
|
|
//Force page reload on back button
|
|
window.addEventListener(
|
|
"pageshow",
|
|
function (evt) {
|
|
if (evt.persisted) {
|
|
setTimeout(function () {
|
|
window.location.reload();
|
|
}, 10);
|
|
}
|
|
},
|
|
false
|
|
);
|
|
},
|
|
},
|
|
};
|
|
</script>
|
|
|
|
<style lang="scss">
|
|
.modal-loader {
|
|
position: fixed;
|
|
top: 0;
|
|
left: 0;
|
|
right: 0;
|
|
bottom: 0;
|
|
z-index: 1057;
|
|
width: 100%;
|
|
height: 100%;
|
|
overflow-x: hidden;
|
|
overflow-y: auto;
|
|
outline: 0;
|
|
background: $gray-100;
|
|
|
|
.tagbg {
|
|
background-image: url("data:image/svg+xml;charset=UTF-8,%3csvg fill='none' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 84 32'%3e%3cpath d='M22.39 27.313a3.53 3.53 0 0 0 7.058 0' fill='%23fff'/%3e%3cpath d='M22.39 27.313a3.53 3.53 0 0 0 7.058 0' stroke='%23000' stroke-width='.75' stroke-linecap='round' stroke-linejoin='round'/%3e%3cpath d='M54.459 27.313a3.527 3.527 0 0 0 7.054 0' fill='%23fff'/%3e%3cpath d='M54.459 27.313a3.527 3.527 0 0 0 7.054 0' stroke='%23000' stroke-width='.75' stroke-linecap='round' stroke-linejoin='round'/%3e%3cpath d='M42.06.8c8.08 0 11.89.935 11.89.935 3.58.576 5.696 7.207 5.696 7.207h.727c0-2.427 1.302-2.397 2.341-2 .723.292 1.363.76 1.86 1.361 1.319 1.547.465 1.674.465 1.674h-5.067l3.846 3.01v12.016c0 2.41-2.029 2.31-2.029 2.31H22.338s-2.029.1-2.029-2.31V12.996l3.84-3.009H19.07s-.853-.127.466-1.674a4.693 4.693 0 0 1 1.86-1.361c1.032-.397 2.341-.427 2.341 2h.736s2.117-6.64 5.696-7.21c0 0 3.81-.942 11.89-.942Z' fill='%23fff' stroke='%23000' stroke-width='.75' stroke-linecap='round' stroke-linejoin='round'/%3e%3cpath d='M42.06 8.847c7.924 0 14.685.511 14.685.511 0-2.585-2.38-6.011-2.38-6.011S50.4 2.519 42.06 2.519s-12.303.828-12.303.828-2.38 3.426-2.38 6.011c0 0 6.76-.51 14.683-.51Z' fill='%23DA291C' stroke='%23000' stroke-width='.75' stroke-linecap='round' stroke-linejoin='round'/%3e%3cpath d='M35.277 16.523a62.558 62.558 0 0 1 13.277 0m3.276-.439s2.384-2.257 8.608-2.257c0 0 1.179 2.657-2.54 3.37m-25.894-1.113s-2.387-2.257-8.611-2.257c0 0-1.16 2.579 2.543 3.37m-3.546 5.856s21.52 3.647 39.123 0' stroke='%23000' stroke-width='.75' stroke-linecap='round' stroke-linejoin='round'/%3e%3c/svg%3e");
|
|
background-repeat: no-repeat;
|
|
background-position: center center;
|
|
background-size: 96px;
|
|
display: flex;
|
|
justify-content: center;
|
|
align-items: center;
|
|
}
|
|
|
|
.spinner-border {
|
|
width: 6.5rem;
|
|
height: 6.5rem;
|
|
border: 0.45em solid currentColor;
|
|
border-right-color: transparent;
|
|
}
|
|
|
|
.text-container {
|
|
display: flex;
|
|
width: 350px;
|
|
overflow: hidden;
|
|
white-space: nowrap;
|
|
margin: 0 auto;
|
|
position: relative;
|
|
&:after {
|
|
content: "";
|
|
background: rgb(245, 245, 245);
|
|
background: linear-gradient(
|
|
270deg,
|
|
rgba(245, 245, 245, 1) 0%,
|
|
rgba(245, 245, 245, 0) 5%,
|
|
rgba(245, 245, 245, 0) 95%,
|
|
rgba(245, 245, 245, 1) 100%
|
|
);
|
|
position: absolute;
|
|
width: 100%;
|
|
height: 100%;
|
|
z-index: 2;
|
|
top: 0;
|
|
left: 0;
|
|
right: 0;
|
|
bottom: 0;
|
|
}
|
|
|
|
&.slide p {
|
|
animation: slide-in 20s ease-in-out 1s forwards 1;
|
|
}
|
|
|
|
p {
|
|
margin: 0 175px;
|
|
transform: translateX(180px);
|
|
}
|
|
|
|
@keyframes slide-in {
|
|
0% {
|
|
transform: translateX(180px);
|
|
}
|
|
11% {
|
|
transform: translateX(-80px);
|
|
}
|
|
22% {
|
|
transform: translateX(-80px);
|
|
}
|
|
33% {
|
|
transform: translateX(-600px);
|
|
}
|
|
44% {
|
|
transform: translateX(-600px);
|
|
}
|
|
55% {
|
|
transform: translateX(-1195px);
|
|
}
|
|
66% {
|
|
transform: translateX(-1195px);
|
|
}
|
|
77% {
|
|
transform: translateX(-1750px);
|
|
}
|
|
88% {
|
|
transform: translateX(-1750px);
|
|
}
|
|
100% {
|
|
transform: translateX(-2200px);
|
|
}
|
|
}
|
|
|
|
.dot-1 {
|
|
animation: blinking-elipsis 0.75s linear infinite;
|
|
@keyframes blinking-elipsis {
|
|
0% {
|
|
opacity: 1;
|
|
}
|
|
65% {
|
|
opacity: 1;
|
|
}
|
|
66% {
|
|
opacity: 0;
|
|
}
|
|
100% {
|
|
opacity: 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
.dot-2 {
|
|
animation: blinking-elipsis-2 0.75s linear infinite;
|
|
@keyframes blinking-elipsis-2 {
|
|
0% {
|
|
opacity: 0;
|
|
}
|
|
21% {
|
|
opacity: 0;
|
|
}
|
|
22% {
|
|
opacity: 1;
|
|
}
|
|
65% {
|
|
opacity: 1;
|
|
}
|
|
66% {
|
|
opacity: 0;
|
|
}
|
|
100% {
|
|
opacity: 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
.dot-3 {
|
|
animation: blinking-elipsis-3 0.75s linear infinite;
|
|
@keyframes blinking-elipsis-3 {
|
|
0% {
|
|
opacity: 0;
|
|
}
|
|
43% {
|
|
opacity: 0;
|
|
}
|
|
44% {
|
|
opacity: 1;
|
|
}
|
|
65% {
|
|
opacity: 1;
|
|
}
|
|
66% {
|
|
opacity: 0;
|
|
}
|
|
100% {
|
|
opacity: 0;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
</style>
|