Handling of event addons
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
// Zentrale Schrittreihenfolge des Anmelde-Wizards. Einige Schritte sind optional und werden
|
||||
// übersprungen, wenn sie für das Event nicht zutreffen (Zusatzoptionen, Teilnahmeoptionen).
|
||||
// Der Zahlungsschritt wird separat in useSignupForm anhand des berechneten Betrags übersprungen.
|
||||
export const STEP_AGE = 1
|
||||
export const STEP_CONTACT = 2
|
||||
export const STEP_PERSONAL = 3
|
||||
export const STEP_ARRIVAL = 4
|
||||
export const STEP_REGISTRATION = 5
|
||||
export const STEP_ADDONS = 6
|
||||
export const STEP_PARTICIPATION_OPTIONS = 7
|
||||
export const STEP_PHOTO = 8
|
||||
export const STEP_ALLERGIES = 9
|
||||
export const STEP_PAYMENT = 10
|
||||
export const STEP_SUMMARY = 11
|
||||
|
||||
// Ob ein (optionaler) Schritt für dieses Event angezeigt wird.
|
||||
export function stepVisible(event, step) {
|
||||
if (step === STEP_ADDONS) {
|
||||
return (event.addons?.length ?? 0) > 0
|
||||
}
|
||||
|
||||
if (step === STEP_PARTICIPATION_OPTIONS) {
|
||||
return (event.participationOptions?.length ?? 0) > 0
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
// Nächster sichtbarer Schritt nach `step` (überspringt ausgeblendete optionale Schritte).
|
||||
export function nextVisibleFrom(event, step) {
|
||||
let candidate = step + 1
|
||||
while (candidate < STEP_SUMMARY && !stepVisible(event, candidate)) {
|
||||
candidate++
|
||||
}
|
||||
return candidate
|
||||
}
|
||||
|
||||
// Vorheriger sichtbarer Schritt vor `step`.
|
||||
export function prevVisibleFrom(event, step) {
|
||||
let candidate = step - 1
|
||||
while (candidate > STEP_AGE && !stepVisible(event, candidate)) {
|
||||
candidate--
|
||||
}
|
||||
return candidate
|
||||
}
|
||||
Reference in New Issue
Block a user