Skip to content
This repository was archived by the owner on Jul 19, 2022. It is now read-only.

Move AppHeader back up to App #292

Merged
merged 1 commit into from
Dec 15, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 9 additions & 15 deletions src/UI/PageLayout.elm
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ module UI.PageLayout exposing (..)

import Html exposing (Html, div, header, section)
import Html.Attributes exposing (class, classList)
import UI.AppHeader as AppHeader exposing (AppHeader)
import UI.Sidebar as Sidebar


Expand All @@ -16,18 +15,16 @@ type PageContent msg

type PageLayout msg
= HeroLayout
{ header : AppHeader msg
, hero : PageHero msg
{ hero : PageHero msg
, content :
PageContent msg
}
| SidebarLayout
{ header : AppHeader msg
, sidebar : List (Html msg)
{ sidebar : List (Html msg)
, sidebarToggled : Bool
, content : PageContent msg
}
| FullLayout { header : AppHeader msg, content : PageContent msg }
| FullLayout { content : PageContent msg }



Expand All @@ -47,25 +44,22 @@ viewContent (PageContent content) =
view : PageLayout msg -> Html msg
view page =
case page of
HeroLayout { header, hero, content } ->
HeroLayout { hero, content } ->
div [ class "page hero-layout" ]
[ AppHeader.view header
, viewHero hero
[ viewHero hero
, viewContent content
]

SidebarLayout { header, sidebar, sidebarToggled, content } ->
SidebarLayout { sidebar, sidebarToggled, content } ->
div
[ class "page sidebar-layout"
, classList [ ( "sidebar-toggled", sidebarToggled ) ]
]
[ AppHeader.view header
, Sidebar.view sidebar
[ Sidebar.view sidebar
, viewContent content
]

FullLayout { header, content } ->
FullLayout { content } ->
div [ class "page full-layout" ]
[ AppHeader.view header
, viewContent content
[ viewContent content
]
53 changes: 28 additions & 25 deletions src/UnisonLocal/App.elm
Original file line number Diff line number Diff line change
Expand Up @@ -754,33 +754,37 @@ viewModal model =

viewAppLoading : Html msg
viewAppLoading =
PageLayout.view
(PageLayout.SidebarLayout
{ header = AppHeader.appHeader (appTitle Nothing)
, sidebar = []
, sidebarToggled = False
, content = PageLayout.PageContent []
}
)
div [ id "app" ]
[ AppHeader.view (AppHeader.appHeader (appTitle Nothing))
, PageLayout.view
(PageLayout.SidebarLayout
{ sidebar = []
, sidebarToggled = False
, content = PageLayout.PageContent []
}
)
]


viewAppError : Http.Error -> Html msg
viewAppError error =
PageLayout.view
(PageLayout.SidebarLayout
{ header = AppHeader.appHeader (appTitle Nothing)
, sidebar = []
, sidebarToggled = False
, content =
PageLayout.PageContent
[ div [ class "app-error" ]
[ Icon.view Icon.warn
, p [ title (Api.errorToString error) ]
[ text "Unison Local could not be started." ]
div [ id "app" ]
[ AppHeader.view (AppHeader.appHeader (appTitle Nothing))
, PageLayout.view
(PageLayout.SidebarLayout
{ sidebar = []
, sidebarToggled = False
, content =
PageLayout.PageContent
[ div [ class "app-error" ]
[ Icon.view Icon.warn
, p [ title (Api.errorToString error) ]
[ text "Unison Local could not be started." ]
]
]
]
}
)
}
)
]


view : Model -> Browser.Document Msg
Expand All @@ -800,12 +804,11 @@ view model =

page =
PageLayout.SidebarLayout
{ header = viewAppHeader model
, sidebar = viewMainSidebar model
{ sidebar = viewMainSidebar model
, sidebarToggled = model.sidebarToggled
, content = PageLayout.PageContent [ pageContent ]
}
in
{ title = "Unison Local"
, body = [ div [ id "app" ] [ PageLayout.view page, viewModal model ] ]
, body = [ div [ id "app" ] [ AppHeader.view (viewAppHeader model), PageLayout.view page, viewModal model ] ]
}
54 changes: 26 additions & 28 deletions src/UnisonShare/App.elm
Original file line number Diff line number Diff line change
Expand Up @@ -646,54 +646,51 @@ viewMainSidebar model =

viewAppLoading : Html msg
viewAppLoading =
PageLayout.view
(PageLayout.FullLayout
{ header = AppHeader.appHeader (appTitle Nothing)
, content = PageLayout.PageContent []
}
)
div [ id "app" ]
[ AppHeader.view (AppHeader.appHeader (appTitle Nothing))
, PageLayout.view
(PageLayout.FullLayout
{ content = PageLayout.PageContent [] }
)
]


viewAppError : Http.Error -> Html msg
viewAppError error =
PageLayout.view
(PageLayout.FullLayout
{ header = AppHeader.appHeader (appTitle Nothing)
, content =
PageLayout.PageContent
[ div [ class "app-error" ]
[ Icon.view Icon.warn
, p [ title (Api.errorToString error) ]
[ text "Unison Share could not be started." ]
div [ id "app" ]
[ AppHeader.view (AppHeader.appHeader (appTitle Nothing))
, PageLayout.view
(PageLayout.FullLayout
{ content =
PageLayout.PageContent
[ div [ class "app-error" ]
[ Icon.view Icon.warn
, p [ title (Api.errorToString error) ]
[ text "Unison Share could not be started." ]
]
]
]
}
)
}
)
]


view : Model -> Browser.Document Msg
view model =
let
appHeader =
viewAppHeader model
AppHeader.view (viewAppHeader model)

withSidebar pageContent =
PageLayout.SidebarLayout
{ header = viewAppHeader model
, sidebar = viewMainSidebar model
{ sidebar = viewMainSidebar model
, sidebarToggled = model.sidebarToggled
, content = PageLayout.PageContent [ pageContent ]
}

page =
case model.route of
Route.Catalog ->
let
( m, _ ) =
Catalog.init model.env
in
-- Html.map CatalogMsg (Catalog.view appHeader m)
Catalog.view appHeader m
Html.map CatalogMsg (Catalog.view model.catalog)

Route.Perspective _ ->
Html.map PerspectiveLandingMsg
Expand All @@ -712,7 +709,8 @@ view model =
{ title = "Unison Share"
, body =
[ div [ id "app" ]
[ page
[ appHeader
, page
, Html.map AppModalMsg (AppModal.view model.env model.appModal)
]
]
Expand Down
37 changes: 21 additions & 16 deletions src/UnisonShare/Page/Catalog.elm
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,12 @@ import Env exposing (Env)
import FullyQualifiedName as FQN
import Html exposing (Html, a, div, h1, input, strong, text)
import Html.Attributes exposing (class, href, placeholder)
import Html.Events exposing (onInput)
import Http
import Project exposing (ProjectListing)
import RemoteData exposing (RemoteData(..), WebData)
import Set exposing (Set)
import UI
import UI.AppHeader exposing (AppHeader)
import UI.Card as Card
import UI.Icon as Icon
import UI.PageLayout as PageLayout exposing (PageLayout)
Expand Down Expand Up @@ -133,8 +133,8 @@ viewCategory (Category category projects) =
|> Card.view


viewLoaded : AppHeader msg -> LoadedModel -> PageLayout msg
viewLoaded appHeader _ =
viewLoaded : LoadedModel -> PageLayout Msg
viewLoaded model =
let
content =
[ div [ class "categories" ]
Expand Down Expand Up @@ -165,8 +165,7 @@ viewLoaded appHeader _ =
]
in
PageLayout.HeroLayout
{ header = appHeader
, hero =
{ hero =
PageLayout.PageHero
(div [ class "catalog-hero" ]
[ h1 []
Expand All @@ -180,37 +179,43 @@ viewLoaded appHeader _ =
]
, div [] [ text "Projects, libraries, documention, terms, and types" ]
]
, div [ class "catalog-search" ] [ Icon.view Icon.search, input [ placeholder "Search for projects" ] [] ]
, div [ class "catalog-search" ]
[ Icon.view Icon.search
, input
[ placeholder "Search for projects"
, onInput UpdateQuery
]
[]
]
]
)
, content = PageLayout.PageContent content
}


disabledPage : AppHeader msg -> Html msg -> PageLayout msg
disabledPage appHeader content =
disabledPage : Html Msg -> PageLayout Msg
disabledPage content =
PageLayout.HeroLayout
{ header = appHeader
, hero = PageLayout.PageHero UI.nothing
{ hero = PageLayout.PageHero UI.nothing
, content = PageLayout.PageContent [ content ]
}


view : AppHeader msg -> Model -> Html msg
view appHeader model =
view : Model -> Html Msg
view model =
let
page =
case model of
NotAsked ->
disabledPage appHeader (div [] [])
disabledPage (div [] [])

Loading ->
disabledPage appHeader (div [] [])
disabledPage (div [] [])

Failure _ ->
disabledPage appHeader (div [] [])
disabledPage (div [] [])

Success m ->
viewLoaded appHeader m
viewLoaded m
in
PageLayout.view page
Loading