hyperbole-0.5.0: Interactive HTML apps using type-safe serverside Haskell
Safe HaskellSafe-Inferred
LanguageGHC2021

Web.Hyperbole.HyperView.Types

Synopsis

Documentation

class (ViewId id, ViewAction (Action id)) => HyperView id es where Source #

HyperViews are interactive subsections of a Page

Create an instance with a unique view id type and a sum type describing the actions the HyperView supports. The View Id can contain context (a database id, for example)

data Message = Message
  deriving (Generic, ViewId)

instance HyperView Message es where
  data Action Message
    = SetMessage Text
    deriving (Generic, ViewAction)

  update (SetMessage msg) =
    pure $ messageView msg

Associated Types

data Action id Source #

Outline all actions that are permitted in this HyperView

data Action Message = SetMessage Text | ClearMessage
  deriving (Generic, ViewAction)

type Require id :: [Type] Source #

Include any child hyperviews here. The compiler will make sure that the page knows how to handle them

type Require = '[ChildView]

type Require id = '[]

Methods

update :: Hyperbole :> es => Action id -> Eff (Reader id : es) (View id ()) Source #

Specify how the view should be updated for each Action

update (SetMessage msg) = pure $ messageView msg
update ClearMessage = pure $ messageView ""

Instances

Instances details
HyperView (Root views) es Source # 
Instance details

Defined in Web.Hyperbole.HyperView.Types

Associated Types

data Action (Root views) Source #

type Require (Root views) :: [Type] Source #

Methods

update :: Action (Root views) -> Eff (Reader (Root views) ': es) (View (Root views) ()) Source #

data Root (views :: [Type]) Source #

The top-level view returned by a Page. It carries a type-level list of every HyperView used in our Page so the compiler can check our work and wire everything together.

Constructors

Root 

Instances

Instances details
Generic (Action (Root views)) Source # 
Instance details

Defined in Web.Hyperbole.HyperView.Types

Associated Types

type Rep (Action (Root views)) :: Type -> Type #

Methods

from :: Action (Root views) -> Rep (Action (Root views)) x #

to :: Rep (Action (Root views)) x -> Action (Root views) #

Generic (Root views) Source # 
Instance details

Defined in Web.Hyperbole.HyperView.Types

Associated Types

type Rep (Root views) :: Type -> Type #

Methods

from :: Root views -> Rep (Root views) x #

to :: Rep (Root views) x -> Root views #

ViewAction (Action (Root views)) Source # 
Instance details

Defined in Web.Hyperbole.HyperView.Types

ViewId (Root views) Source # 
Instance details

Defined in Web.Hyperbole.HyperView.Types

HyperView (Root views) es Source # 
Instance details

Defined in Web.Hyperbole.HyperView.Types

Associated Types

data Action (Root views) Source #

type Require (Root views) :: [Type] Source #

Methods

update :: Action (Root views) -> Eff (Reader (Root views) ': es) (View (Root views) ()) Source #

type Rep (Action (Root views)) Source # 
Instance details

Defined in Web.Hyperbole.HyperView.Types

type Rep (Action (Root views)) = D1 ('MetaData "Action" "Web.Hyperbole.HyperView.Types" "hyperbole-0.5.0-inplace" 'False) (C1 ('MetaCons "RootNone" 'PrefixI 'False) (U1 :: Type -> Type))
type Rep (Root views) Source # 
Instance details

Defined in Web.Hyperbole.HyperView.Types

type Rep (Root views) = D1 ('MetaData "Root" "Web.Hyperbole.HyperView.Types" "hyperbole-0.5.0-inplace" 'False) (C1 ('MetaCons "Root" 'PrefixI 'False) (U1 :: Type -> Type))
data Action (Root views) Source # 
Instance details

Defined in Web.Hyperbole.HyperView.Types

data Action (Root views) = RootNone
type Require (Root views) Source # 
Instance details

Defined in Web.Hyperbole.HyperView.Types

type Require (Root views) = views