Skip to content

Instantly share code, notes, and snippets.

@rizary
Created August 24, 2019 23:47
Show Gist options
  • Select an option

  • Save rizary/534f76bab1a8f32e7c754f951d7975f9 to your computer and use it in GitHub Desktop.

Select an option

Save rizary/534f76bab1a8f32e7c754f951d7975f9 to your computer and use it in GitHub Desktop.
routeLink True r w = do
let cfg = (def :: ElementConfig EventResult t (DomBuilderSpace m))
& elementConfig_eventSpec %~ addEventSpecFlags (Proxy :: Proxy (DomBuilderSpace m)) Click (\_ -> preventDefault)
& elementConfig_initialAttributes .~ "href" =: r
(e, a) <- element "a" cfg w
setRoute $ (switchPkgRoute (Just $ decodeFrag r)) <$ domEvent Click e
return a
routeLink False r w = do
let cfg = (def :: ElementConfig EventResult t (DomBuilderSpace m))
& elementConfig_initialAttributes .~ "href" =: r
(e, a) <- element "a" cfg w
setRoute $ (switchPkgRoute (Just $ decodeFrag r)) <$ domEvent Click e
return a
routePkgIdxTs :: forall t m. (PerformEvent t m, TriggerEvent t m, MonadJSM m, MonadJSM (Performable m), PostBuild t m, MonadHold t m, MonadFix m, DomBuilder t m, SetRoute t FragRoute m)
=> PkgN
-> Dynamic t (Set PkgIdxTs)
-> Dynamic t PkgIdxTs
-> m ()
routePkgIdxTs pn setIdx ddIdx = do
let evDD = updated $ ffor2 setIdx ddIdx (\sId dVal -> createRoutePackage pn sId dVal)
window <- DOM.currentWindowUnchecked
location <- Window.getLocation window
uri <- getLocationUri location
let
res = (\x -> HistoryStateUpdate
{ _historyStateUpdate_state = SerializedScriptValue jsNull
, _historyStateUpdate_title = ""
, _historyStateUpdate_uri = fromRoutePackage x uri
}) <$> evDD
_ <- manageHistory $ HistoryCommand_PushState <$> res
setRoute $ switchPkgRoute <$> evDD
pure ()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment