34
34
<button @click =" tour.previousStep" v-if =" !isMobile" >
35
35
{{ $t("Previous step") }}
36
36
</button >
37
- <button class =" right" @click =" tour.steps[tour.currentStep].button.fn()"
37
+ <button class =" right" @click =" () => tour.steps[tour.currentStep].button.fn()"
38
38
v-if =" tour.steps[tour.currentStep].button" >
39
39
{{ $t(tour.steps[tour.currentStep].button.text) }}
40
40
</button >
@@ -98,7 +98,7 @@ import {
98
98
} from ' @vue/composition-api' ;
99
99
import Vue from ' vue' ;
100
100
import VueTour from ' vue-tour' ;
101
- import { TourStep , TourStepIndex , TourSteps , useFakeTx , useTour } from ' ../composables/useTour' ;
101
+ import { MountedReturnFn , TourStep , TourStepIndex , TourSteps , useFakeTx , useTour } from ' ../composables/useTour' ;
102
102
import { useWindowSize } from ' ../composables/useWindowSize' ;
103
103
import CaretRightIcon from ' ./icons/CaretRightIcon.vue' ;
104
104
@@ -128,11 +128,7 @@ export default defineComponent({
128
128
const nSteps: Ref <number > = ref (0 );
129
129
const disableNextStep = ref (true );
130
130
131
- let unmounted: (
132
- (args ? : { goingForward: boolean , ending? : boolean }) => Promise <null >)
133
- | Promise <null >
134
- | ((args ? : { goingForward: boolean , ending? : boolean }) => null )
135
- | null = null ;
131
+ let unmounted: MountedReturnFn | void ;
136
132
137
133
onMounted (() => {
138
134
tourSetup ();
@@ -145,29 +141,27 @@ export default defineComponent({
145
141
async function tourSetup() {
146
142
await context .root .$nextTick (); // to ensure the DOM is ready
147
143
144
+ const step = steps [currentStep .value ];
145
+
148
146
// Update state
149
147
nSteps .value = Object .keys (steps ).length ;
150
148
disableNextStep .value = currentStep .value >= nSteps .value - 1
151
- || !! steps [ currentStep . value ] .ui .isNextStepDisabled ;
149
+ || !! step .ui .isNextStepDisabled ;
152
150
153
- if (steps [currentStep .value ].lifecycle ?.created ) {
154
- await steps [currentStep .value ].lifecycle ! .created !({ goToNextStep , goingForward: true });
155
- }
151
+ await step .lifecycle ?.created ?.({ goToNextStep , goingForward: true });
156
152
157
- _addAttributes (steps [ currentStep . value ] .ui , currentStep .value );
153
+ _addAttributes (step .ui , currentStep .value );
158
154
159
- if (steps [currentStep .value ].lifecycle ?.mounted ) {
160
- unmounted = await steps [currentStep .value ].lifecycle ! .mounted !({ goToNextStep , goingForward: true });
161
- }
155
+ unmounted = await step .lifecycle ?.mounted ?.({ goToNextStep , goingForward: true });
162
156
163
- if (context .root .$route .path !== steps [ currentStep . value ] .path ) {
164
- context .root .$router .push (steps [ currentStep . value ] .path );
157
+ if (context .root .$route .path !== step .path ) {
158
+ context .root .$router .push (step .path );
165
159
}
166
160
167
161
await sleep (500 );
168
162
169
163
tour = context .root .$tours [' nimiq-tour' ];
170
- tour ! .start (` ${currentStep .value } ` );
164
+ tour .start (` ${currentStep .value } ` );
171
165
loading .value = false ;
172
166
}
173
167
@@ -177,9 +171,9 @@ export default defineComponent({
177
171
const app = document .querySelector (' #app main' ) as HTMLDivElement ;
178
172
179
173
if (loading .value || disconnected .value ) {
180
- app ! .setAttribute (' data-non-interactable' , ' ' );
174
+ app .setAttribute (' data-non-interactable' , ' ' );
181
175
} else {
182
- app ! .removeAttribute (' data-non-interactable' );
176
+ app .removeAttribute (' data-non-interactable' );
183
177
}
184
178
});
185
179
@@ -201,24 +195,20 @@ export default defineComponent({
201
195
) {
202
196
const goingForward = futureStepIndex > currentStepIndex ;
203
197
204
- const { path : currentPage } = steps [currentStepIndex ];
205
- const { path : futurePage , ui : futureUI, lifecycle : futureLifecycle } = steps [futureStepIndex ];
198
+ const { path : currentPath } = steps [currentStepIndex ];
199
+ const { path : futurePath , ui : futureUI, lifecycle : futureLifecycle } = steps [futureStepIndex ];
206
200
207
201
loading .value = true ;
208
202
tour ! .stop ();
209
203
210
- if (unmounted ) {
211
- await (await unmounted )! ({ goingForward });
212
- }
204
+ await unmounted ?.({ goingForward });
213
205
214
- if (futureLifecycle ?.created ) {
215
- await (futureLifecycle .created ! )({ goToNextStep , goingForward });
216
- }
206
+ await futureLifecycle ?.created ?.({ goToNextStep , goingForward });
217
207
218
- if (futurePage !== currentPage && context .root .$route .fullPath !== futurePage ) {
208
+ if (futurePath !== currentPath && context .root .$route .fullPath !== futurePath ) {
219
209
try {
220
210
// Default prepare DOM
221
- context .root .$router .push (futurePage );
211
+ context .root .$router .push (futurePath );
222
212
await context .root .$nextTick ();
223
213
} catch {
224
214
// Ignore error
@@ -227,7 +217,7 @@ export default defineComponent({
227
217
228
218
_addAttributes (futureUI , futureStepIndex );
229
219
230
- if (futurePage !== currentPage ) {
220
+ if (futurePath !== currentPath ) {
231
221
await sleep (500 );
232
222
}
233
223
@@ -244,11 +234,7 @@ export default defineComponent({
244
234
loading .value = false ;
245
235
disableNextStep .value = futureStepIndex >= nSteps .value - 1 || !! futureUI .isNextStepDisabled ;
246
236
247
- if (futureLifecycle ?.mounted ) {
248
- unmounted = await futureLifecycle ! .mounted !({ goToNextStep , goingForward });
249
- } else {
250
- unmounted = null ;
251
- }
237
+ unmounted = await futureLifecycle ?.mounted ?.({ goToNextStep , goingForward });
252
238
253
239
currentStep .value = futureStepIndex ;
254
240
}
@@ -285,7 +271,7 @@ export default defineComponent({
285
271
_removeAttributes (currentStep .value );
286
272
287
273
if (unmounted ) {
288
- await ( await unmounted ) ! ({ ending: true , goingForward: false });
274
+ await unmounted ({ ending: true , goingForward: false });
289
275
}
290
276
291
277
// If user finalizes tour while it is loading, allow interaction again
0 commit comments