diff options
Diffstat (limited to 'Map/Presentation/Base Components/EvolutionPicker')
| -rw-r--r-- | Map/Presentation/Base Components/EvolutionPicker/EvolutionPickerMenu.swift | 32 | ||||
| -rw-r--r-- | Map/Presentation/Base Components/EvolutionPicker/EvolutionPickerMenuItem.swift | 8 |
2 files changed, 22 insertions, 18 deletions
diff --git a/Map/Presentation/Base Components/EvolutionPicker/EvolutionPickerMenu.swift b/Map/Presentation/Base Components/EvolutionPicker/EvolutionPickerMenu.swift index 3a396aa..9478346 100644 --- a/Map/Presentation/Base Components/EvolutionPicker/EvolutionPickerMenu.swift +++ b/Map/Presentation/Base Components/EvolutionPicker/EvolutionPickerMenu.swift @@ -3,43 +3,47 @@ import SwiftUI struct EvolutionPickerMenu: View { @Binding var selectedEvolution: StageType + - private func select(_ evolution: StageType) { - selectedEvolution = evolution + private func select(_ stageType: StageType) { + selectedEvolution = stageType } var body: some View { VStack(alignment: .leading, spacing: 1.0) { Section(header: EvolutionPickerMenuHeader(key: "stage_type.section.types")) { ForEach(StageType.types) { stage in - EvolutionPickerMenuItem(stage: stage, isSelected: selectedEvolution == stage) + EvolutionPickerMenuItem(stageType: stage, isSelected: selectedEvolution.id == stage.id) .onTapGesture { - selectedEvolution = stage + select(stage) } } } Section(header: EvolutionPickerMenuHeader(key: "stage_type.section.characteristics")) { ForEach(StageType.characteristics) { stage in - EvolutionPickerMenuItem(stage: stage, isSelected: selectedEvolution == stage) + EvolutionPickerMenuItem(stageType: stage, isSelected: selectedEvolution.id == stage.id) .onTapGesture { - selectedEvolution = stage + select(stage) } } } Section(header: EvolutionPickerMenuHeader(key: "stage_type.section.general_properties")) { ForEach(StageType.properties) { stage in - EvolutionPickerMenuItem(stage: stage, isSelected: selectedEvolution == stage) + EvolutionPickerMenuItem(stageType: stage, isSelected: selectedEvolution.id == stage.id) .onTapGesture { - selectedEvolution = stage + select(stage) } } } - Section(header: EvolutionPickerMenuHeader(key: "stage_type.section.other")) { - ForEach(StageType.custom) { stage in - EvolutionPickerMenuItem(stage: stage, isSelected: selectedEvolution == stage) - .onTapGesture { - selectedEvolution = stage - } + Section(header: EvolutionPickerMenuHeader(key: "stage_type.section.custom")) { + ForEach(StageType.customStages) { customStage in + EvolutionPickerMenuItem( + stageType: customStage, + isSelected: selectedEvolution.id == customStage.id + ) + .onTapGesture { + select(customStage) + } } } } diff --git a/Map/Presentation/Base Components/EvolutionPicker/EvolutionPickerMenuItem.swift b/Map/Presentation/Base Components/EvolutionPicker/EvolutionPickerMenuItem.swift index 1731e8d..cac1b08 100644 --- a/Map/Presentation/Base Components/EvolutionPicker/EvolutionPickerMenuItem.swift +++ b/Map/Presentation/Base Components/EvolutionPicker/EvolutionPickerMenuItem.swift @@ -4,7 +4,7 @@ struct EvolutionPickerMenuItem: View { @State var isHovered: Bool = false - let stage: StageType + let stageType: StageType let isSelected: Bool var body: some View { @@ -12,7 +12,7 @@ struct EvolutionPickerMenuItem: View { Image(systemName: "checkmark") .opacity(isSelected ? 1.0 : 0.0) .bold(true) - Text(Stage.title(stage)) + Text(Stage.title(stageType)) .font(isSelected ? .Theme.Body.emphasized : .Theme.Body.regular) .padding(Dimensions.Spacing.cozy) Spacer() @@ -27,6 +27,6 @@ struct EvolutionPickerMenuItem: View { } #Preview { - EvolutionPickerMenuItem(stage: .behavior, isSelected: false) - EvolutionPickerMenuItem(stage: .ubiquity, isSelected: true) + EvolutionPickerMenuItem(stageType: .behavior, isSelected: false) + EvolutionPickerMenuItem(stageType: .ubiquity, isSelected: true) } |