|
30 | 30 | <template #default="{ prev, next }"> |
31 | 31 | <v-stepper-header> |
32 | 32 | <template |
33 | | - v-for="(page, i) in pages" |
| 33 | + v-for="(page, i) in computedPages" |
34 | 34 | :key="`${getIndex(i)}-step`" |
35 | 35 | > |
36 | 36 | <v-stepper-item |
|
60 | 60 | > |
61 | 61 | <v-stepper-window> |
62 | 62 | <v-stepper-window-item |
63 | | - v-for="page, i in pages" |
| 63 | + v-for="page, i in computedPages" |
64 | 64 | :key="`${getIndex(i)}-content`" |
65 | 65 | :reverse-transition="transitionComputed" |
66 | 66 | :transition="transitionComputed" |
|
92 | 92 | v-else |
93 | 93 | v-model="modelValue" |
94 | 94 | :page="page" |
95 | | - :pages="pages" |
| 95 | + :pages="computedPages" |
96 | 96 | :settings="settings" |
97 | 97 | :summary-columns="summaryColumns" |
98 | 98 | @goToQuestion="stepperModel = $event" |
@@ -263,7 +263,7 @@ function previousPage(prev: () => void): void { |
263 | 263 | } |
264 | 264 |
|
265 | 265 | const lastPage = computed<boolean>(() => { |
266 | | - return stepperModel.value === Object.keys(pages).length; |
| 266 | + return stepperModel.value === Object.keys(computedPages.value).length; |
267 | 267 | }); |
268 | 268 |
|
269 | 269 |
|
@@ -394,7 +394,25 @@ function callbacks() { |
394 | 394 | whenCallback(); |
395 | 395 | } |
396 | 396 |
|
397 | | -// ------------------------ Conditional "when" callback // |
| 397 | +// ------------------------ Conditional "when" callbacks // |
| 398 | +const computedPages = computed<Page[]>(() => { |
| 399 | + Object.values(pages).forEach((page: Page, pageIdx: number) => { |
| 400 | + const localPage = page; |
| 401 | + localPage.visible = true; |
| 402 | +
|
| 403 | + if (localPage.when) { |
| 404 | + // eslint-disable-next-line no-unused-vars |
| 405 | + const enabledPage: boolean = (localPage.when as (value: any) => boolean)(modelValue.value); |
| 406 | +
|
| 407 | + if (pages[pageIdx]) { |
| 408 | + pages[pageIdx].visible = enabledPage; |
| 409 | + } |
| 410 | + } |
| 411 | + }); |
| 412 | +
|
| 413 | + return pages.filter((p: Page) => p.visible); |
| 414 | +}); |
| 415 | +
|
398 | 416 | function whenCallback(): void { |
399 | 417 | Object.values(pages).forEach((page: Page, pageIdx: number) => { |
400 | 418 | if (page.fields) { |
|
0 commit comments