Move functionality to intercept-overlay

This commit is contained in:
Chloe Herd 2026-07-21 13:29:37 -04:00
parent 4e325d10b5
commit 9aae54aca4
5 changed files with 21 additions and 52 deletions

View file

@ -28,6 +28,7 @@
isPrimary isPrimary
:buttonText="overrideButtonText || buttonText" :buttonText="overrideButtonText || buttonText"
loaderColor="white" loaderColor="white"
loaderPosition="center"
:class="isForwardActionDisabled && 'form-test-invalid'" :class="isForwardActionDisabled && 'form-test-invalid'"
:aria-disabled="isForwardActionDisabled" :aria-disabled="isForwardActionDisabled"
:isDisabled="isForwardActionDisabled" :isDisabled="isForwardActionDisabled"
@ -68,10 +69,6 @@ export default {
customButtontext: "", customButtontext: "",
}; };
}, },
unmounted() {
document.onkeydown = null;
},
computed: { computed: {
backLink() { backLink() {
return ( return (
@ -91,15 +88,8 @@ export default {
}, },
removeLoader() { removeLoader() {
this.$refs.buttonMain.removeLoader(); this.$refs.buttonMain.removeLoader();
document.onkeydown = function (e) {
return true;
};
}, },
buttonClick() { buttonClick() {
//prevent keyboard input after button click
document.onkeydown = function (e) {
return false;
};
// check session expired and initSession to recreate cookies // check session expired and initSession to recreate cookies
if (analyticsMixin.methods.sessionExpired()) { if (analyticsMixin.methods.sessionExpired()) {
this.routeReturnUser(); this.routeReturnUser();

View file

@ -16,6 +16,7 @@
isPrimary isPrimary
:buttonText="overrideButtonText || buttonText" :buttonText="overrideButtonText || buttonText"
loaderColor="white" loaderColor="white"
loaderPosition="center"
:class="isForwardActionDisabled && 'form-test-invalid'" :class="isForwardActionDisabled && 'form-test-invalid'"
:aria-disabled="isForwardActionDisabled" :aria-disabled="isForwardActionDisabled"
:isDisabled="isForwardActionDisabled" :isDisabled="isForwardActionDisabled"
@ -69,9 +70,6 @@ export default {
}; };
}, },
unmounted() {
document.onkeydown = null;
},
computed: { computed: {
backLink() { backLink() {
return ( return (
@ -91,15 +89,8 @@ export default {
}, },
removeLoader() { removeLoader() {
this.$refs.buttonMain.removeLoader(); this.$refs.buttonMain.removeLoader();
document.onkeydown = function (e) {
return true;
};
}, },
buttonClick() { buttonClick() {
//prevent keyboard input after button click
document.onkeydown = function (e) {
return false;
};
// check session expired and initSession to recreate cookies // check session expired and initSession to recreate cookies
if (analyticsMixin.methods.sessionExpired()) { if (analyticsMixin.methods.sessionExpired()) {
this.routeReturnUser(); this.routeReturnUser();

View file

@ -12,7 +12,8 @@
<loader <loader
class="ms-2" class="ms-2"
v-if="isLoaderDisplayed && !suppressLoader" v-if="isLoaderDisplayed && !suppressLoader"
v-bind:class="[this.loaderColor, this.loaderPosition]" /> :loaderColor="loaderColor"
:loaderPosition="loaderPosition" />
</button> </button>
</template> </template>
@ -48,7 +49,7 @@ export default {
); );
if (!this.isDisabled) { if (!this.isDisabled) {
if (!this.suppressLoader) this.isLoaderDisplayed = true; if (!this.suppressLoader) this.isLoaderDisplayed = true;
this.$emit("click-event"); //this.$emit("click-event");
} }
}, },
resetButtonStyle() { resetButtonStyle() {
@ -64,6 +65,7 @@ export default {
<style lang="scss"> <style lang="scss">
.btn { .btn {
font-family: UrbanistSemibold, Arial, Helvetica, sans-serif; font-family: UrbanistSemibold, Arial, Helvetica, sans-serif;
&.btn-primary { &.btn-primary {
position: relative; position: relative;
background: $red; background: $red;

View file

@ -1,5 +1,8 @@
<template> <template>
<div class="intercept-overlay" aria-hidden="true" @keydown.capture="blockKey"></div> <div
class="intercept-overlay"
@keydown.capture="blockKey"
@click="captureClick"></div>
</template> </template>
<script> <script>
@ -16,6 +19,10 @@ export default {
event.preventDefault(); event.preventDefault();
event.stopImmediatePropagation(); event.stopImmediatePropagation();
}, },
captureClick(event) {
event.preventDefault();
event.stopPropagation();
},
}, },
}; };
</script> </script>

View file

@ -1,17 +1,15 @@
<template> <template>
<interceptOverlay v-if="!allowPageInteraction" />
<div <div
class="loader" class="loader"
role="alert" role="alert"
aria-label="Loading new page" aria-label="Loading new page"
@click="captureClick" v-bind:class="[this.loaderColor, this.loaderPosition]"></div>
v-bind:class="[
this.loaderColor,
this.loaderPosition,
this.allowPageInteraction ? 'allow-ui-interaction' : '',
]"></div>
</template> </template>
<script> <script>
import interceptOverlay from "../intercept-overlay/intercept-overlay.vue";
export default { export default {
name: "loader", name: "loader",
/* Specify size in number value which translates to rem value. For example, 1.5 = 1.5rem = 24px */ /* Specify size in number value which translates to rem value. For example, 1.5 = 1.5rem = 24px */
@ -31,12 +29,9 @@ export default {
default: false, default: false,
}, },
}, },
methods: { methods: {},
captureClick(event) { components: {
if (!this.allowPageInteraction) { interceptOverlay,
event.stopPropagation();
}
},
}, },
}; };
</script> </script>
@ -46,18 +41,6 @@ export default {
display: flex; display: flex;
pointer-events: all; pointer-events: all;
//Open an overlay to prevent page interaction
&:before {
content: "";
position: fixed;
top: 0;
bottom: 0;
left: 0;
right: 0;
background-color: transparent;
z-index: 9999;
cursor: default;
}
//Spinner basics //Spinner basics
&:after { &:after {
content: ""; content: "";
@ -101,9 +84,5 @@ export default {
&.black:after { &.black:after {
background-color: $black; background-color: $black;
} }
&.allow-ui-interaction::before {
//no-block to enable clicking on certain buttons with loaders while the loader is actives
pointer-events: none;
}
} }
</style> </style>