{-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE GADTs #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE QuasiQuotes #-} {-# LANGUAGE RankNTypes #-} {-# LANGUAGE TemplateHaskell #-} module Hledger.Web.Widget.AddForm ( addForm , addModal ) where import Control.Monad.State.Strict (evalStateT) import Data.Bifunctor (first) import Data.Foldable (toList) import Data.List (dropWhileEnd, unfoldr) import Data.Maybe (isJust) import qualified Data.Set as S import Data.Text (Text) import Data.Text.Encoding.Base64 (encodeBase64) import qualified Data.Text as T import Data.Time (Day) import Text.Blaze.Internal (Markup, preEscapedText) import Text.Megaparsec (bundleErrors, eof, parseErrorTextPretty, runParser) import Yesod import Hledger import Hledger.Web.Settings (widgetFile) addModal :: ( MonadWidget m , r ~ Route (HandlerSite m) , m ~ WidgetFor (HandlerSite m) , RenderMessage (HandlerSite m) FormMessage ) => r -> Journal -> Day -> m () addModal addR j today = do (addView, addEnctype) <- generateFormPost (addForm j today) [whamlet|