From 378e007141c699945080bbf944aeef4abf67d75c Mon Sep 17 00:00:00 2001 From: Alexander Foremny Date: Thu, 6 Jun 2024 23:05:41 +0200 Subject: add new collection page --- frontend/app/Page/NewCollection.hs | 44 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 frontend/app/Page/NewCollection.hs (limited to 'frontend/app/Page/NewCollection.hs') diff --git a/frontend/app/Page/NewCollection.hs b/frontend/app/Page/NewCollection.hs new file mode 100644 index 0000000..b105689 --- /dev/null +++ b/frontend/app/Page/NewCollection.hs @@ -0,0 +1,44 @@ +module Page.NewCollection + ( Model, + initialModel, + Action, + updateModel, + viewModel, + ) +where + +import Data.Text qualified as T +import Form qualified as F +import Miso + +data Model = Model + { input :: T.Text + } + deriving (Show, Eq) + +initialModel :: JSM (Either String Model) +initialModel = do + pure (Right (Model {input = ""})) + +data Action + = NoOp + | FormChanged T.Text + | FormSubmitted T.Text + deriving (Eq, Show) + +updateModel :: Action -> Model -> Effect Action Model +updateModel NoOp m = noEff m +updateModel (FormChanged input) m = noEff m {input} +updateModel (FormSubmitted _) m = noEff m + +viewModel :: Model -> View Action +viewModel m = do + div_ [] $ + [ h3_ [] [text "new collection"], + either FormChanged FormSubmitted + <$> F.runForm collectionForm m.input + ] + +collectionForm :: F.Form T.Text T.Text +collectionForm = + F.input "name" -- cgit v1.2.3