module Component.Link ( view ) where import Data.Map (Map) import qualified Data.Map as M import Data.Text (Text) import qualified Data.Text as T import Reflex.Dom (Dynamic, MonadWidget) import qualified Reflex.Dom as R view :: forall t m a. MonadWidget t m => Text -> Dynamic t (Map Text Text) -> Text -> m () view href inputAttrs content = R.elDynAttr "a" attrs (R.text content) where onclickHandler = T.intercalate ";" [ "history.pushState(0, '', event.target.href)" , "dispatchEvent(new PopStateEvent('popstate', {cancelable: true, bubbles: true, view: window}))" , "return false" ] attrs = R.ffor inputAttrs (\as -> (M.union (M.fromList [ ("onclick", onclickHandler) , ("href", href) ] ) as) )