mirror of
https://github.com/jhillyerd/inbucket.git
synced 2025-12-18 01:57:02 +00:00
ui: Move ClearFlash & ViewMailbox into Layout
This commit is contained in:
@@ -31,19 +31,15 @@ type Page
|
|||||||
|
|
||||||
type alias Model msg =
|
type alias Model msg =
|
||||||
{ mapMsg : Msg -> msg
|
{ mapMsg : Msg -> msg
|
||||||
, clearFlash : msg
|
|
||||||
, viewMailbox : String -> msg
|
|
||||||
, menuVisible : Bool
|
, menuVisible : Bool
|
||||||
, recentVisible : Bool
|
, recentVisible : Bool
|
||||||
, mailboxName : String
|
, mailboxName : String
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
init : (Msg -> msg) -> msg -> (String -> msg) -> Model msg
|
init : (Msg -> msg) -> Model msg
|
||||||
init mapMsg clearFlash viewMailbox =
|
init mapMsg =
|
||||||
{ mapMsg = mapMsg
|
{ mapMsg = mapMsg
|
||||||
, clearFlash = clearFlash
|
|
||||||
, viewMailbox = viewMailbox
|
|
||||||
, menuVisible = False
|
, menuVisible = False
|
||||||
, recentVisible = False
|
, recentVisible = False
|
||||||
, mailboxName = ""
|
, mailboxName = ""
|
||||||
@@ -62,22 +58,45 @@ reset model =
|
|||||||
|
|
||||||
|
|
||||||
type Msg
|
type Msg
|
||||||
= ToggleMenu
|
= ClearFlash
|
||||||
| ShowRecent Bool
|
|
||||||
| OnMailboxNameInput String
|
| OnMailboxNameInput String
|
||||||
|
| OpenMailbox
|
||||||
|
| ShowRecent Bool
|
||||||
|
| ToggleMenu
|
||||||
|
|
||||||
|
|
||||||
update : Msg -> Model msg -> Model msg
|
update : Msg -> Model msg -> Session -> ( Model msg, Session, Cmd msg )
|
||||||
update msg model =
|
update msg model session =
|
||||||
case msg of
|
case msg of
|
||||||
ToggleMenu ->
|
ClearFlash ->
|
||||||
{ model | menuVisible = not model.menuVisible }
|
( model
|
||||||
|
, Session.clearFlash session
|
||||||
ShowRecent visible ->
|
, Cmd.none
|
||||||
{ model | recentVisible = visible }
|
)
|
||||||
|
|
||||||
OnMailboxNameInput name ->
|
OnMailboxNameInput name ->
|
||||||
{ model | mailboxName = name }
|
( { model | mailboxName = name }
|
||||||
|
, session
|
||||||
|
, Cmd.none
|
||||||
|
)
|
||||||
|
|
||||||
|
OpenMailbox ->
|
||||||
|
( model
|
||||||
|
, session
|
||||||
|
, Route.pushUrl session.key (Route.Mailbox model.mailboxName)
|
||||||
|
)
|
||||||
|
|
||||||
|
ShowRecent visible ->
|
||||||
|
( { model | recentVisible = visible }
|
||||||
|
, session
|
||||||
|
, Cmd.none
|
||||||
|
)
|
||||||
|
|
||||||
|
ToggleMenu ->
|
||||||
|
( { model | menuVisible = not model.menuVisible }
|
||||||
|
, session
|
||||||
|
, Cmd.none
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
type alias State msg =
|
type alias State msg =
|
||||||
@@ -108,7 +127,7 @@ frame { model, session, activePage, activeMailbox, modal, content } =
|
|||||||
, navbarLink Status Route.Status [ text "Status" ] activePage
|
, navbarLink Status Route.Status [ text "Status" ] activePage
|
||||||
, navbarRecent activePage activeMailbox model session
|
, navbarRecent activePage activeMailbox model session
|
||||||
, li [ class "navbar-mailbox" ]
|
, li [ class "navbar-mailbox" ]
|
||||||
[ form [ Events.onSubmit (model.viewMailbox model.mailboxName) ]
|
[ form [ Events.onSubmit (OpenMailbox |> model.mapMsg) ]
|
||||||
[ input
|
[ input
|
||||||
[ type_ "text"
|
[ type_ "text"
|
||||||
, placeholder "mailbox"
|
, placeholder "mailbox"
|
||||||
@@ -148,7 +167,7 @@ frameModal maybeModal =
|
|||||||
|
|
||||||
|
|
||||||
errorFlash : Model msg -> Maybe Session.Flash -> Html msg
|
errorFlash : Model msg -> Maybe Session.Flash -> Html msg
|
||||||
errorFlash controls maybeFlash =
|
errorFlash model maybeFlash =
|
||||||
let
|
let
|
||||||
row ( heading, message ) =
|
row ( heading, message ) =
|
||||||
tr []
|
tr []
|
||||||
@@ -164,7 +183,7 @@ errorFlash controls maybeFlash =
|
|||||||
div [ class "well well-error" ]
|
div [ class "well well-error" ]
|
||||||
[ div [ class "flash-header" ]
|
[ div [ class "flash-header" ]
|
||||||
[ h2 [] [ text flash.title ]
|
[ h2 [] [ text flash.title ]
|
||||||
, a [ href "#", Events.onClick controls.clearFlash ] [ text "Close" ]
|
, a [ href "#", Events.onClick (ClearFlash |> model.mapMsg) ] [ text "Close" ]
|
||||||
]
|
]
|
||||||
, div [ class "flash-table" ] (List.map row flash.table)
|
, div [ class "flash-table" ] (List.map row flash.table)
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -61,7 +61,7 @@ init configValue location key =
|
|||||||
Home.init session
|
Home.init session
|
||||||
|
|
||||||
initModel =
|
initModel =
|
||||||
{ layout = Layout.init LayoutMsg ClearFlash ViewMailbox
|
{ layout = Layout.init LayoutMsg
|
||||||
, page = Home subModel
|
, page = Home subModel
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -79,8 +79,6 @@ type Msg
|
|||||||
| LinkClicked UrlRequest
|
| LinkClicked UrlRequest
|
||||||
| SessionUpdated (Result D.Error Session.Persistent)
|
| SessionUpdated (Result D.Error Session.Persistent)
|
||||||
| TimeZoneLoaded Time.Zone
|
| TimeZoneLoaded Time.Zone
|
||||||
| ClearFlash
|
|
||||||
| ViewMailbox String
|
|
||||||
| LayoutMsg Layout.Msg
|
| LayoutMsg Layout.Msg
|
||||||
| HomeMsg Home.Msg
|
| HomeMsg Home.Msg
|
||||||
| MailboxMsg Mailbox.Msg
|
| MailboxMsg Mailbox.Msg
|
||||||
@@ -179,11 +177,6 @@ updateMain msg model session =
|
|||||||
, Cmd.none
|
, Cmd.none
|
||||||
)
|
)
|
||||||
|
|
||||||
ClearFlash ->
|
|
||||||
( applyToModelSession Session.clearFlash model
|
|
||||||
, Cmd.none
|
|
||||||
)
|
|
||||||
|
|
||||||
SessionUpdated (Ok persistent) ->
|
SessionUpdated (Ok persistent) ->
|
||||||
( updateSession model { session | persistent = persistent }
|
( updateSession model { session | persistent = persistent }
|
||||||
, Cmd.none
|
, Cmd.none
|
||||||
@@ -205,13 +198,14 @@ updateMain msg model session =
|
|||||||
, Cmd.none
|
, Cmd.none
|
||||||
)
|
)
|
||||||
|
|
||||||
ViewMailbox name ->
|
|
||||||
( applyToModelSession Session.clearFlash model
|
|
||||||
, Route.pushUrl session.key (Route.Mailbox name)
|
|
||||||
)
|
|
||||||
|
|
||||||
LayoutMsg subMsg ->
|
LayoutMsg subMsg ->
|
||||||
( { model | layout = Layout.update subMsg model.layout }, Cmd.none )
|
let
|
||||||
|
( layout, newSession, cmd ) =
|
||||||
|
Layout.update subMsg model.layout session
|
||||||
|
in
|
||||||
|
( updateSession { model | layout = layout } newSession
|
||||||
|
, cmd
|
||||||
|
)
|
||||||
|
|
||||||
_ ->
|
_ ->
|
||||||
updatePage msg model
|
updatePage msg model
|
||||||
|
|||||||
Reference in New Issue
Block a user