@@ -1,7 +1,6 @@
11module App.Components.Router.Component where
22
33import App.Prelude.View
4−
54import App.Components.Container as Container
65import App.Components.Home as Home
76import Data.Foldable (for_)
@@ -19,24 +18,25 @@ routingTable route = case route of
1918 Home -> element Home.component {}
2019 Docs -> R.text "For now, please refer to the README"
2120 NotFound ->
22− R.div { style: css { maxWidth: "60ch" }
21+ R.div
22+ { style: css { maxWidth: "60ch" }
2323 , children:
24− [ R.h1_ [R.text "Not found"]
25− , R.a { href: "/", children: [ R.text "Take me back" ] }
24+ [ R.h1_ [ R.text "Not found" ]
25+ , R.a { href: "/", children: [ R.text "Take me back" ] }
2626 ]
2727 }
2828
2929type Props
30− = { nav ∷ PushStateInterface }
30+ = { nav ∷ PushStateInterface
31+ , initialRoute ∷ Route
32+ }
3133
3234component ∷ ReactComponent Props
3335component =
34− reactComponent "Router" \({ nav } ∷ Props) -> React.do
35− route /\ setRoute <- useState' NotFound
36+ reactComponent "Router" \({ nav, initialRoute } ∷ Props) -> React.do
37+ route /\ setRoute <- useState' initialRoute
3638 cancelListenerRef <- useRef mempty
3739 useEffectOnce do
38− locationState <- nav.locationState
39− for_ (parse routeCodec locationState.path) setRoute
4040 cancelOuterListener <-
4141 nav.listen \location -> do
4242 removeListener <-
@@ -51,3 +51,11 @@ component =
5151 $ element Container.component
5252 { children: reactChildrenFromArray [ routingTable route ]
5353 }
54+
55+static ∷ ReactComponent { route ∷ Route }
56+static =
57+ reactComponent "StaticRouter" \{ route } -> React.do
58+ pure
59+ $ element Container.component
60+ { children: reactChildrenFromArray [ routingTable route ]
61+ }