Skip to content

Commit 97c4994

Browse files
martinkaintasCedrikNikita
authored andcommitted
feat: handle hardware back button
1 parent 738b328 commit 97c4994

File tree

2 files changed

+19
-5
lines changed

2 files changed

+19
-5
lines changed

src/popup/components/Header.vue

+8-1
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,12 @@
6767
</template>
6868

6969
<script lang="ts">
70-
import { IonHeader, IonToolbar, useIonRouter } from '@ionic/vue';
70+
import {
71+
IonHeader,
72+
IonToolbar,
73+
useBackButton,
74+
useIonRouter,
75+
} from '@ionic/vue';
7176
import { computed, defineComponent } from 'vue';
7277
import { useStore } from 'vuex';
7378
import { useRoute } from 'vue-router';
@@ -189,6 +194,8 @@ export default defineComponent({
189194
ionRouter.navigate({ name: currentHomeRouteName.value }, 'back', 'push');
190195
}
191196
197+
useBackButton(1, back);
198+
192199
return {
193200
UNFINISHED_FEATURES,
194201
homeRouteName,

src/popup/components/Modal.vue

+11-4
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ import {
8282
onBeforeUnmount,
8383
onMounted,
8484
} from 'vue';
85+
import { BackButtonEvent } from '@ionic/vue';
8586
import { IS_FIREFOX, IS_EXTENSION } from '@/constants';
8687
import BtnClose from './buttons/BtnClose.vue';
8788
import FixedScreenFooter from './FixedScreenFooter.vue';
@@ -108,17 +109,23 @@ export default defineComponent({
108109
setup(props, { slots, emit }) {
109110
const showHeader = computed(() => props.hasCloseButton || props.header || slots.header);
110111
112+
function handleClose() {
113+
emit('close');
114+
}
115+
116+
function onBackButtonHandler(event: BackButtonEvent) {
117+
event.detail.register(100, handleClose);
118+
}
119+
111120
onMounted(() => {
121+
document.addEventListener('ionBackButton', onBackButtonHandler);
112122
if (!document.body.style.overflow) {
113123
document.body.style.overflow = 'hidden';
114124
}
115125
});
116126
117-
function handleClose() {
118-
emit('close');
119-
}
120-
121127
onBeforeUnmount(() => {
128+
document.removeEventListener('ionBackButton', onBackButtonHandler);
122129
document.body.style.overflow = '';
123130
});
124131

0 commit comments

Comments
 (0)