diff --git a/src/Core/Menus.fs b/src/Core/Menus.fs index 057a07f..74d3589 100644 --- a/src/Core/Menus.fs +++ b/src/Core/Menus.fs @@ -96,7 +96,7 @@ let render (render: 'reactElement RenderApi) (menus: MenuOutput list) = for (isChecked, key, child) in selections do let renderChild (label: string, children) = if isChecked then render.checked'(label, key, children) else render.unchecked(label, key) - let childReact = recur isChecked ((if collapse then collapsedRender key else render), renderChild) child + let childReact = recur (not isChecked) ((if collapse then collapsedRender key else render), renderChild) child childReact ] if collapse then @@ -104,7 +104,7 @@ let render (render: 'reactElement RenderApi) (menus: MenuOutput list) = else renderMe(defaultArg label "Choose one:", children) | And(label, grants) -> - let childReacts = grants |> List.map (recur true (render, render.unconditional)) + let childReacts = grants |> List.map (recur shortCircuit (render, render.unconditional)) match label with | Some label -> renderMe(label, childReacts) diff --git a/test/Chargen.Accept.fs b/test/Chargen.Accept.fs index 5f4cb56..588e7a4 100644 --- a/test/Chargen.Accept.fs +++ b/test/Chargen.Accept.fs @@ -234,11 +234,13 @@ let units = testList "Unit.Chargen" [ pseudoActual (Fragment [ Checked("Sword and Dagger", key "Sword and Dagger", [ - Unchecked("Rapier +4", key "Sword and Dagger-Rapier") - Unchecked("Broadsword +4", key "Sword and Dagger-Broadsword") - Unchecked("Shortsword +4", key "Sword and Dagger-Shortsword") + Checked("Choose one:", key "Sword and Dagger", [ + Unchecked("Rapier +4", key "Sword and Dagger-Rapier") + Unchecked("Broadsword +4", key "Sword and Dagger-Broadsword") + Unchecked("Shortsword +4", key "Sword and Dagger-Shortsword") + ]) + Checked("Main-gauche +1", key "Sword and Dagger", []) ]) - Checked("Main-gauche +1", key "Sword and Dagger", []) ]) ] []