taskell-1.3.5.0: src/UI/Modal.hs
{-# LANGUAGE NoImplicitPrelude #-}
module UI.Modal
( showModal
) where
import ClassyPrelude
import Control.Lens ((^.))
import Brick
import Brick.Widgets.Border
import Brick.Widgets.Center
import Data.Taskell.Date (Day)
import Events.State.Types (State, mode)
import Events.State.Types.Mode (ModalType (..), Mode (..))
import UI.Field (textField)
import UI.Modal.Detail (detail)
import UI.Modal.Help (help)
import UI.Modal.MoveTo (moveTo)
import UI.Theme (titleAttr)
import UI.Types (ResourceName (..))
surround :: (Text, Widget ResourceName) -> Widget ResourceName
surround (title, widget) =
padTopBottom 1 .
centerLayer .
border . padTopBottom 1 . padLeftRight 4 . hLimit 50 . (t <=>) . viewport RNModal Vertical $
widget
where
t = padBottom (Pad 1) . withAttr titleAttr $ textField title
showModal :: State -> Day -> [Widget ResourceName] -> [Widget ResourceName]
showModal state today view =
case state ^. mode of
Modal Help -> surround help : view
Modal Detail {} -> surround (detail state today) : view
Modal MoveTo -> surround (moveTo state) : view
_ -> view