mirror of
https://github.com/TheAnachronism/docspell.git
synced 2025-06-06 15:15:58 +00:00
Refactor FixedDropdown
This commit is contained in:
parent
8d15d97857
commit
9a23ba9afb
@ -81,7 +81,7 @@ init flags sett =
|
|||||||
Data.ListType.fromString sett.listType
|
Data.ListType.fromString sett.listType
|
||||||
|> Maybe.withDefault Data.ListType.Whitelist
|
|> Maybe.withDefault Data.ListType.Whitelist
|
||||||
, categoryListTypeModel =
|
, categoryListTypeModel =
|
||||||
Comp.FixedDropdown.initMap Data.ListType.label Data.ListType.all
|
Comp.FixedDropdown.init Data.ListType.all
|
||||||
}
|
}
|
||||||
, Cmd.batch
|
, Cmd.batch
|
||||||
[ Api.getTags flags "" GetTagsResp
|
[ Api.getTags flags "" GetTagsResp
|
||||||
@ -181,18 +181,18 @@ update flags msg model =
|
|||||||
view2 : Texts -> UiSettings -> Model -> Html Msg
|
view2 : Texts -> UiSettings -> Model -> Html Msg
|
||||||
view2 texts settings model =
|
view2 texts settings model =
|
||||||
let
|
let
|
||||||
catListTypeItem =
|
|
||||||
Comp.FixedDropdown.Item
|
|
||||||
model.categoryListType
|
|
||||||
(Data.ListType.label model.categoryListType)
|
|
||||||
Nothing
|
|
||||||
|
|
||||||
categoryCfg =
|
categoryCfg =
|
||||||
{ makeOption = \s -> { text = s, additional = "" }
|
{ makeOption = \s -> { text = s, additional = "" }
|
||||||
, labelColor = \_ -> \_ -> "grey "
|
, labelColor = \_ -> \_ -> "grey "
|
||||||
, placeholder = "Choose categories …"
|
, placeholder = "Choose categories …"
|
||||||
, style = DS.mainStyle
|
, style = DS.mainStyle
|
||||||
}
|
}
|
||||||
|
|
||||||
|
catListCfg =
|
||||||
|
{ display = Data.ListType.label
|
||||||
|
, icon = \_ -> Nothing
|
||||||
|
, style = DS.mainStyle
|
||||||
|
}
|
||||||
in
|
in
|
||||||
div []
|
div []
|
||||||
[ Markdown.toHtml [ class "px-2 py-2 opacity-75" ]
|
[ Markdown.toHtml [ class "px-2 py-2 opacity-75" ]
|
||||||
@ -201,7 +201,11 @@ view2 texts settings model =
|
|||||||
[ label [ class S.inputLabel ]
|
[ label [ class S.inputLabel ]
|
||||||
[ text texts.blacklistOrWhitelist ]
|
[ text texts.blacklistOrWhitelist ]
|
||||||
, Html.map CategoryListTypeMsg
|
, Html.map CategoryListTypeMsg
|
||||||
(Comp.FixedDropdown.view2 (Just catListTypeItem) model.categoryListTypeModel)
|
(Comp.FixedDropdown.viewStyled2 catListCfg
|
||||||
|
False
|
||||||
|
(Just model.categoryListType)
|
||||||
|
model.categoryListTypeModel
|
||||||
|
)
|
||||||
]
|
]
|
||||||
, div [ class "mb-4" ]
|
, div [ class "mb-4" ]
|
||||||
[ label [ class S.inputLabel ]
|
[ label [ class S.inputLabel ]
|
||||||
|
@ -9,6 +9,7 @@ module Comp.ColorTagger exposing
|
|||||||
|
|
||||||
import Comp.FixedDropdown
|
import Comp.FixedDropdown
|
||||||
import Data.Color exposing (Color)
|
import Data.Color exposing (Color)
|
||||||
|
import Data.DropdownStyle as DS
|
||||||
import Dict exposing (Dict)
|
import Dict exposing (Dict)
|
||||||
import Html exposing (..)
|
import Html exposing (..)
|
||||||
import Html.Attributes exposing (..)
|
import Html.Attributes exposing (..)
|
||||||
@ -37,7 +38,7 @@ type Msg
|
|||||||
|
|
||||||
init : List String -> List Color -> Model
|
init : List String -> List Color -> Model
|
||||||
init leftSel colors =
|
init leftSel colors =
|
||||||
{ leftDropdown = Comp.FixedDropdown.initString leftSel
|
{ leftDropdown = Comp.FixedDropdown.init leftSel
|
||||||
, colors = colors
|
, colors = colors
|
||||||
, leftSelect = Nothing
|
, leftSelect = Nothing
|
||||||
}
|
}
|
||||||
@ -96,12 +97,21 @@ type alias ViewOpts =
|
|||||||
|
|
||||||
view2 : FormData -> ViewOpts -> Model -> Html Msg
|
view2 : FormData -> ViewOpts -> Model -> Html Msg
|
||||||
view2 data opts model =
|
view2 data opts model =
|
||||||
|
let
|
||||||
|
colorLabelCfg =
|
||||||
|
{ display = identity
|
||||||
|
, icon = \_ -> Nothing
|
||||||
|
, style = DS.mainStyle
|
||||||
|
}
|
||||||
|
in
|
||||||
div [ class "flex flex-col" ]
|
div [ class "flex flex-col" ]
|
||||||
[ label [ class S.inputLabel ]
|
[ label [ class S.inputLabel ]
|
||||||
[ text opts.label ]
|
[ text opts.label ]
|
||||||
, Html.map LeftMsg
|
, Html.map LeftMsg
|
||||||
(Comp.FixedDropdown.view2
|
(Comp.FixedDropdown.viewStyled2
|
||||||
(Maybe.map (\s -> Comp.FixedDropdown.Item s s Nothing) model.leftSelect)
|
colorLabelCfg
|
||||||
|
False
|
||||||
|
model.leftSelect
|
||||||
model.leftDropdown
|
model.leftDropdown
|
||||||
)
|
)
|
||||||
, div [ class "field" ]
|
, div [ class "field" ]
|
||||||
|
@ -11,6 +11,7 @@ import Api.Model.Contact exposing (Contact)
|
|||||||
import Comp.Basic as B
|
import Comp.Basic as B
|
||||||
import Comp.FixedDropdown
|
import Comp.FixedDropdown
|
||||||
import Data.ContactType exposing (ContactType)
|
import Data.ContactType exposing (ContactType)
|
||||||
|
import Data.DropdownStyle as DS
|
||||||
import Data.UiSettings exposing (UiSettings)
|
import Data.UiSettings exposing (UiSettings)
|
||||||
import Html exposing (..)
|
import Html exposing (..)
|
||||||
import Html.Attributes exposing (..)
|
import Html.Attributes exposing (..)
|
||||||
@ -30,7 +31,7 @@ emptyModel : Model
|
|||||||
emptyModel =
|
emptyModel =
|
||||||
{ items = []
|
{ items = []
|
||||||
, kind =
|
, kind =
|
||||||
Comp.FixedDropdown.initMap Data.ContactType.toString Data.ContactType.all
|
Comp.FixedDropdown.init Data.ContactType.all
|
||||||
, selectedKind = List.head Data.ContactType.all
|
, selectedKind = List.head Data.ContactType.all
|
||||||
, value = ""
|
, value = ""
|
||||||
}
|
}
|
||||||
@ -41,14 +42,6 @@ getContacts model =
|
|||||||
List.filter (\c -> c.value /= "") model.items
|
List.filter (\c -> c.value /= "") model.items
|
||||||
|
|
||||||
|
|
||||||
makeDropdownItem : ContactType -> Comp.FixedDropdown.Item ContactType
|
|
||||||
makeDropdownItem ct =
|
|
||||||
{ id = ct
|
|
||||||
, display = Data.ContactType.toString ct
|
|
||||||
, icon = Nothing
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
type Msg
|
type Msg
|
||||||
= SetValue String
|
= SetValue String
|
||||||
| TypeMsg (Comp.FixedDropdown.Msg ContactType)
|
| TypeMsg (Comp.FixedDropdown.Msg ContactType)
|
||||||
@ -124,6 +117,13 @@ update msg model =
|
|||||||
|
|
||||||
view2 : Bool -> UiSettings -> Model -> Html Msg
|
view2 : Bool -> UiSettings -> Model -> Html Msg
|
||||||
view2 mobile _ model =
|
view2 mobile _ model =
|
||||||
|
let
|
||||||
|
kindCfg =
|
||||||
|
{ display = Data.ContactType.toString
|
||||||
|
, icon = \_ -> Nothing
|
||||||
|
, style = DS.mainStyle
|
||||||
|
}
|
||||||
|
in
|
||||||
div [ class "flex flex-col" ]
|
div [ class "flex flex-col" ]
|
||||||
[ div
|
[ div
|
||||||
[ class "flex flex-col space-y-2"
|
[ class "flex flex-col space-y-2"
|
||||||
@ -133,8 +133,10 @@ view2 mobile _ model =
|
|||||||
[ classList [ ( "flex-none md:w-1/6", not mobile ) ]
|
[ classList [ ( "flex-none md:w-1/6", not mobile ) ]
|
||||||
]
|
]
|
||||||
[ Html.map TypeMsg
|
[ Html.map TypeMsg
|
||||||
(Comp.FixedDropdown.view2
|
(Comp.FixedDropdown.viewStyled2
|
||||||
(Maybe.map makeDropdownItem model.selectedKind)
|
kindCfg
|
||||||
|
False
|
||||||
|
model.selectedKind
|
||||||
model.kind
|
model.kind
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
|
@ -61,8 +61,7 @@ init field =
|
|||||||
, label = field.label
|
, label = field.label
|
||||||
, ftype = Data.CustomFieldType.fromString field.ftype
|
, ftype = Data.CustomFieldType.fromString field.ftype
|
||||||
, ftypeModel =
|
, ftypeModel =
|
||||||
Comp.FixedDropdown.initMap Data.CustomFieldType.label
|
Comp.FixedDropdown.init Data.CustomFieldType.all
|
||||||
Data.CustomFieldType.all
|
|
||||||
, loading = False
|
, loading = False
|
||||||
, deleteDimmer = Comp.YesNoDimmer.emptyModel
|
, deleteDimmer = Comp.YesNoDimmer.emptyModel
|
||||||
}
|
}
|
||||||
@ -200,11 +199,14 @@ type alias ViewSettings =
|
|||||||
view2 : ViewSettings -> Model -> List (Html Msg)
|
view2 : ViewSettings -> Model -> List (Html Msg)
|
||||||
view2 viewSettings model =
|
view2 viewSettings model =
|
||||||
let
|
let
|
||||||
mkItem cft =
|
|
||||||
Comp.FixedDropdown.Item cft (Data.CustomFieldType.label cft) Nothing
|
|
||||||
|
|
||||||
dimmerSettings =
|
dimmerSettings =
|
||||||
Comp.YesNoDimmer.defaultSettings2 "Really delete this custom field?"
|
Comp.YesNoDimmer.defaultSettings2 "Really delete this custom field?"
|
||||||
|
|
||||||
|
ftypeCfg =
|
||||||
|
{ display = Data.CustomFieldType.label
|
||||||
|
, icon = \_ -> Nothing
|
||||||
|
, style = DS.mainStyle
|
||||||
|
}
|
||||||
in
|
in
|
||||||
(if viewSettings.showControls then
|
(if viewSettings.showControls then
|
||||||
[ viewButtons2 model ]
|
[ viewButtons2 model ]
|
||||||
@ -279,9 +281,9 @@ view2 viewSettings model =
|
|||||||
]
|
]
|
||||||
, Html.map FTypeMsg
|
, Html.map FTypeMsg
|
||||||
(Comp.FixedDropdown.viewStyled2
|
(Comp.FixedDropdown.viewStyled2
|
||||||
DS.mainStyle
|
ftypeCfg
|
||||||
(model.ftype == Nothing)
|
(model.ftype == Nothing)
|
||||||
(Maybe.map mkItem model.ftype)
|
model.ftype
|
||||||
model.ftypeModel
|
model.ftypeModel
|
||||||
)
|
)
|
||||||
, div [ class "opacity-75 text-sm" ]
|
, div [ class "opacity-75 text-sm" ]
|
||||||
|
@ -130,7 +130,7 @@ reset model =
|
|||||||
mkFieldSelect : List CustomField -> FieldSelect
|
mkFieldSelect : List CustomField -> FieldSelect
|
||||||
mkFieldSelect fields =
|
mkFieldSelect fields =
|
||||||
{ selected = Nothing
|
{ selected = Nothing
|
||||||
, dropdown = Comp.FixedDropdown.init (List.map mkItem fields)
|
, dropdown = Comp.FixedDropdown.init fields
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -145,11 +145,6 @@ type alias UpdateResult =
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
mkItem : CustomField -> Comp.FixedDropdown.Item CustomField
|
|
||||||
mkItem f =
|
|
||||||
Comp.FixedDropdown.Item f (Maybe.withDefault f.name f.label) Nothing
|
|
||||||
|
|
||||||
|
|
||||||
update : Flags -> Msg -> Model -> UpdateResult
|
update : Flags -> Msg -> Model -> UpdateResult
|
||||||
update =
|
update =
|
||||||
update1 False
|
update1 False
|
||||||
@ -336,7 +331,10 @@ viewMenuBar2 ddstyle viewSettings model =
|
|||||||
model.fieldSelect
|
model.fieldSelect
|
||||||
|
|
||||||
ddstyleFlex =
|
ddstyleFlex =
|
||||||
{ ddstyle | root = ddstyle.root ++ " flex-grow" }
|
{ display = \f -> Maybe.withDefault f.name f.label
|
||||||
|
, icon = \_ -> Nothing
|
||||||
|
, style = { ddstyle | root = ddstyle.root ++ " flex-grow" }
|
||||||
|
}
|
||||||
in
|
in
|
||||||
div
|
div
|
||||||
[ classList
|
[ classList
|
||||||
@ -348,7 +346,7 @@ viewMenuBar2 ddstyle viewSettings model =
|
|||||||
(Comp.FixedDropdown.viewStyled2
|
(Comp.FixedDropdown.viewStyled2
|
||||||
ddstyleFlex
|
ddstyleFlex
|
||||||
False
|
False
|
||||||
(Maybe.map mkItem selected)
|
selected
|
||||||
dropdown
|
dropdown
|
||||||
)
|
)
|
||||||
:: (if viewSettings.showAddButton then
|
:: (if viewSettings.showAddButton then
|
||||||
|
@ -11,6 +11,7 @@ module Comp.EquipmentForm exposing
|
|||||||
import Api.Model.Equipment exposing (Equipment)
|
import Api.Model.Equipment exposing (Equipment)
|
||||||
import Comp.Basic as B
|
import Comp.Basic as B
|
||||||
import Comp.FixedDropdown
|
import Comp.FixedDropdown
|
||||||
|
import Data.DropdownStyle as DS
|
||||||
import Data.EquipmentUse exposing (EquipmentUse)
|
import Data.EquipmentUse exposing (EquipmentUse)
|
||||||
import Data.Flags exposing (Flags)
|
import Data.Flags exposing (Flags)
|
||||||
import Html exposing (..)
|
import Html exposing (..)
|
||||||
@ -36,9 +37,7 @@ emptyModel =
|
|||||||
, notes = Nothing
|
, notes = Nothing
|
||||||
, use = Data.EquipmentUse.Concerning
|
, use = Data.EquipmentUse.Concerning
|
||||||
, useModel =
|
, useModel =
|
||||||
Comp.FixedDropdown.initMap
|
Comp.FixedDropdown.init Data.EquipmentUse.all
|
||||||
Data.EquipmentUse.label
|
|
||||||
Data.EquipmentUse.all
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -102,6 +101,13 @@ update _ msg model =
|
|||||||
|
|
||||||
view2 : Model -> Html Msg
|
view2 : Model -> Html Msg
|
||||||
view2 model =
|
view2 model =
|
||||||
|
let
|
||||||
|
equipUseCfg =
|
||||||
|
{ display = Data.EquipmentUse.label
|
||||||
|
, icon = \_ -> Nothing
|
||||||
|
, style = DS.mainStyle
|
||||||
|
}
|
||||||
|
in
|
||||||
div [ class "flex flex-col" ]
|
div [ class "flex flex-col" ]
|
||||||
[ div [ class "mb-4" ]
|
[ div [ class "mb-4" ]
|
||||||
[ label
|
[ label
|
||||||
@ -132,7 +138,7 @@ view2 model =
|
|||||||
]
|
]
|
||||||
[ text "Use" ]
|
[ text "Use" ]
|
||||||
, Html.map UseDropdownMsg
|
, Html.map UseDropdownMsg
|
||||||
(Comp.FixedDropdown.view2 (makeUseItem model) model.useModel)
|
(Comp.FixedDropdown.viewStyled2 equipUseCfg False (Just model.use) model.useModel)
|
||||||
, span [ class "opacity-50 text-sm" ]
|
, span [ class "opacity-50 text-sm" ]
|
||||||
[ case model.use of
|
[ case model.use of
|
||||||
Data.EquipmentUse.Concerning ->
|
Data.EquipmentUse.Concerning ->
|
||||||
@ -156,9 +162,3 @@ view2 model =
|
|||||||
]
|
]
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
makeUseItem : Model -> Maybe (Comp.FixedDropdown.Item EquipmentUse)
|
|
||||||
makeUseItem model =
|
|
||||||
Just <|
|
|
||||||
Comp.FixedDropdown.Item model.use (Data.EquipmentUse.label model.use) Nothing
|
|
||||||
|
@ -2,12 +2,9 @@ module Comp.FixedDropdown exposing
|
|||||||
( Item
|
( Item
|
||||||
, Model
|
, Model
|
||||||
, Msg
|
, Msg
|
||||||
|
, ViewSettings
|
||||||
, init
|
, init
|
||||||
, initMap
|
|
||||||
, initString
|
|
||||||
, initTuple
|
|
||||||
, update
|
, update
|
||||||
, view2
|
|
||||||
, viewStyled2
|
, viewStyled2
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -22,8 +19,6 @@ import Util.List
|
|||||||
|
|
||||||
type alias Item a =
|
type alias Item a =
|
||||||
{ id : a
|
{ id : a
|
||||||
, display : String
|
|
||||||
, icon : Maybe String
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -40,31 +35,17 @@ type Msg a
|
|||||||
| KeyPress (Maybe KeyCode)
|
| KeyPress (Maybe KeyCode)
|
||||||
|
|
||||||
|
|
||||||
init : List (Item a) -> Model a
|
initItems : List (Item a) -> Model a
|
||||||
init options =
|
initItems options =
|
||||||
{ options = options
|
{ options = options
|
||||||
, menuOpen = False
|
, menuOpen = False
|
||||||
, selected = Nothing
|
, selected = Nothing
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
initString : List String -> Model String
|
init : List a -> Model a
|
||||||
initString strings =
|
init els =
|
||||||
init <| List.map (\s -> Item s s Nothing) strings
|
List.map Item els |> initItems
|
||||||
|
|
||||||
|
|
||||||
initMap : (a -> String) -> List a -> Model a
|
|
||||||
initMap elToString els =
|
|
||||||
init <| List.map (\a -> Item a (elToString a) Nothing) els
|
|
||||||
|
|
||||||
|
|
||||||
initTuple : List ( String, a ) -> Model a
|
|
||||||
initTuple tuples =
|
|
||||||
let
|
|
||||||
mkItem ( txt, id ) =
|
|
||||||
Item id txt Nothing
|
|
||||||
in
|
|
||||||
init <| List.map mkItem tuples
|
|
||||||
|
|
||||||
|
|
||||||
isSelected : Model a -> Item a -> Bool
|
isSelected : Model a -> Item a -> Bool
|
||||||
@ -168,13 +149,20 @@ update msg model =
|
|||||||
--- View2
|
--- View2
|
||||||
|
|
||||||
|
|
||||||
viewStyled2 : DS.DropdownStyle -> Bool -> Maybe (Item a) -> Model a -> Html (Msg a)
|
type alias ViewSettings a =
|
||||||
viewStyled2 style error sel model =
|
{ display : a -> String
|
||||||
|
, icon : a -> Maybe String
|
||||||
|
, style : DS.DropdownStyle
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
viewStyled2 : ViewSettings a -> Bool -> Maybe a -> Model a -> Html (Msg a)
|
||||||
|
viewStyled2 cfg error sel model =
|
||||||
let
|
let
|
||||||
iconItem item =
|
iconItem id =
|
||||||
span
|
span
|
||||||
[ classList [ ( "hidden", item.icon == Nothing ) ]
|
[ classList [ ( "hidden", cfg.icon id == Nothing ) ]
|
||||||
, class (Maybe.withDefault "" item.icon)
|
, class (Maybe.withDefault "" (cfg.icon id))
|
||||||
, class "mr-2"
|
, class "mr-2"
|
||||||
]
|
]
|
||||||
[]
|
[]
|
||||||
@ -182,15 +170,15 @@ viewStyled2 style error sel model =
|
|||||||
renderItem item =
|
renderItem item =
|
||||||
a
|
a
|
||||||
[ href "#"
|
[ href "#"
|
||||||
, class style.item
|
, class cfg.style.item
|
||||||
, classList
|
, classList
|
||||||
[ ( style.itemActive, isSelected model item )
|
[ ( cfg.style.itemActive, isSelected model item )
|
||||||
, ( "font-semibold", Just item == sel )
|
, ( "font-semibold", Just item.id == sel )
|
||||||
]
|
]
|
||||||
, onClick (SelectItem2 item)
|
, onClick (SelectItem2 item)
|
||||||
]
|
]
|
||||||
[ iconItem item
|
[ iconItem item.id
|
||||||
, text item.display
|
, text (cfg.display item.id)
|
||||||
]
|
]
|
||||||
|
|
||||||
selIcon =
|
selIcon =
|
||||||
@ -198,11 +186,11 @@ viewStyled2 style error sel model =
|
|||||||
|> Maybe.withDefault (span [ class "hidden" ] [])
|
|> Maybe.withDefault (span [ class "hidden" ] [])
|
||||||
in
|
in
|
||||||
div
|
div
|
||||||
[ class ("relative " ++ style.root)
|
[ class ("relative " ++ cfg.style.root)
|
||||||
, onKeyUpCode KeyPress
|
, onKeyUpCode KeyPress
|
||||||
]
|
]
|
||||||
[ a
|
[ a
|
||||||
[ class style.link
|
[ class cfg.style.link
|
||||||
, classList [ ( S.inputErrorBorder, error ) ]
|
, classList [ ( S.inputErrorBorder, error ) ]
|
||||||
, tabindex 0
|
, tabindex 0
|
||||||
, onClick ToggleMenu
|
, onClick ToggleMenu
|
||||||
@ -215,7 +203,7 @@ viewStyled2 style error sel model =
|
|||||||
]
|
]
|
||||||
]
|
]
|
||||||
[ selIcon
|
[ selIcon
|
||||||
, Maybe.map .display sel
|
, Maybe.map cfg.display sel
|
||||||
|> Maybe.withDefault "Select…"
|
|> Maybe.withDefault "Select…"
|
||||||
|> text
|
|> text
|
||||||
]
|
]
|
||||||
@ -226,13 +214,8 @@ viewStyled2 style error sel model =
|
|||||||
]
|
]
|
||||||
]
|
]
|
||||||
, div
|
, div
|
||||||
[ class style.menu
|
[ class cfg.style.menu
|
||||||
, classList [ ( "hidden", not model.menuOpen ) ]
|
, classList [ ( "hidden", not model.menuOpen ) ]
|
||||||
]
|
]
|
||||||
(List.map renderItem model.options)
|
(List.map renderItem model.options)
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
view2 : Maybe (Item a) -> Model a -> Html (Msg a)
|
|
||||||
view2 =
|
|
||||||
viewStyled2 DS.mainStyle False
|
|
||||||
|
@ -18,6 +18,7 @@ import Comp.Basic as B
|
|||||||
import Comp.FixedDropdown
|
import Comp.FixedDropdown
|
||||||
import Comp.MenuBar as MB
|
import Comp.MenuBar as MB
|
||||||
import Comp.YesNoDimmer
|
import Comp.YesNoDimmer
|
||||||
|
import Data.DropdownStyle as DS
|
||||||
import Data.Flags exposing (Flags)
|
import Data.Flags exposing (Flags)
|
||||||
import Html exposing (..)
|
import Html exposing (..)
|
||||||
import Html.Attributes exposing (..)
|
import Html.Attributes exposing (..)
|
||||||
@ -65,8 +66,7 @@ init users folder =
|
|||||||
, members = folder.members
|
, members = folder.members
|
||||||
, users = users
|
, users = users
|
||||||
, memberDropdown =
|
, memberDropdown =
|
||||||
Comp.FixedDropdown.initMap .name
|
Comp.FixedDropdown.init (makeOptions users folder)
|
||||||
(makeOptions users folder)
|
|
||||||
, selectedMember = Nothing
|
, selectedMember = Nothing
|
||||||
, loading = False
|
, loading = False
|
||||||
, deleteDimmer = Comp.YesNoDimmer.emptyModel
|
, deleteDimmer = Comp.YesNoDimmer.emptyModel
|
||||||
@ -275,11 +275,6 @@ update flags msg model =
|
|||||||
--- View2
|
--- View2
|
||||||
|
|
||||||
|
|
||||||
makeItem : IdName -> Comp.FixedDropdown.Item IdName
|
|
||||||
makeItem idn =
|
|
||||||
Comp.FixedDropdown.Item idn idn.name Nothing
|
|
||||||
|
|
||||||
|
|
||||||
view2 : Flags -> Model -> Html Msg
|
view2 : Flags -> Model -> Html Msg
|
||||||
view2 flags model =
|
view2 flags model =
|
||||||
let
|
let
|
||||||
@ -369,6 +364,13 @@ view2 flags model =
|
|||||||
|
|
||||||
viewMembers2 : Model -> List (Html Msg)
|
viewMembers2 : Model -> List (Html Msg)
|
||||||
viewMembers2 model =
|
viewMembers2 model =
|
||||||
|
let
|
||||||
|
folderCfg =
|
||||||
|
{ display = .name
|
||||||
|
, icon = \_ -> Nothing
|
||||||
|
, style = DS.mainStyle
|
||||||
|
}
|
||||||
|
in
|
||||||
if model.folder.id == "" then
|
if model.folder.id == "" then
|
||||||
[]
|
[]
|
||||||
|
|
||||||
@ -383,8 +385,10 @@ viewMembers2 model =
|
|||||||
[ div [ class "flex flex-row space-x-2" ]
|
[ div [ class "flex flex-row space-x-2" ]
|
||||||
[ div [ class "flex-grow" ]
|
[ div [ class "flex-grow" ]
|
||||||
[ Html.map MemberDropdownMsg
|
[ Html.map MemberDropdownMsg
|
||||||
(Comp.FixedDropdown.view2
|
(Comp.FixedDropdown.viewStyled2
|
||||||
(Maybe.map makeItem model.selectedMember)
|
folderCfg
|
||||||
|
False
|
||||||
|
model.selectedMember
|
||||||
model.memberDropdown
|
model.memberDropdown
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
|
@ -13,6 +13,7 @@ import Comp.AddressForm
|
|||||||
import Comp.Basic as B
|
import Comp.Basic as B
|
||||||
import Comp.ContactField
|
import Comp.ContactField
|
||||||
import Comp.FixedDropdown
|
import Comp.FixedDropdown
|
||||||
|
import Data.DropdownStyle as DS
|
||||||
import Data.Flags exposing (Flags)
|
import Data.Flags exposing (Flags)
|
||||||
import Data.OrgUse exposing (OrgUse)
|
import Data.OrgUse exposing (OrgUse)
|
||||||
import Data.UiSettings exposing (UiSettings)
|
import Data.UiSettings exposing (UiSettings)
|
||||||
@ -45,9 +46,7 @@ emptyModel =
|
|||||||
, shortName = Nothing
|
, shortName = Nothing
|
||||||
, use = Data.OrgUse.Correspondent
|
, use = Data.OrgUse.Correspondent
|
||||||
, useModel =
|
, useModel =
|
||||||
Comp.FixedDropdown.initMap
|
Comp.FixedDropdown.init Data.OrgUse.all
|
||||||
Data.OrgUse.label
|
|
||||||
Data.OrgUse.all
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -147,14 +146,15 @@ update flags msg model =
|
|||||||
--- View2
|
--- View2
|
||||||
|
|
||||||
|
|
||||||
makeUseItem : Model -> Maybe (Comp.FixedDropdown.Item OrgUse)
|
|
||||||
makeUseItem model =
|
|
||||||
Just <|
|
|
||||||
Comp.FixedDropdown.Item model.use (Data.OrgUse.label model.use) Nothing
|
|
||||||
|
|
||||||
|
|
||||||
view2 : Bool -> UiSettings -> Model -> Html Msg
|
view2 : Bool -> UiSettings -> Model -> Html Msg
|
||||||
view2 mobile settings model =
|
view2 mobile settings model =
|
||||||
|
let
|
||||||
|
orgUseCfg =
|
||||||
|
{ display = Data.OrgUse.label
|
||||||
|
, icon = \_ -> Nothing
|
||||||
|
, style = DS.mainStyle
|
||||||
|
}
|
||||||
|
in
|
||||||
div [ class "flex flex-col" ]
|
div [ class "flex flex-col" ]
|
||||||
[ div
|
[ div
|
||||||
[ class "mb-4" ]
|
[ class "mb-4" ]
|
||||||
@ -203,7 +203,11 @@ view2 mobile settings model =
|
|||||||
]
|
]
|
||||||
[ text "Use" ]
|
[ text "Use" ]
|
||||||
, Html.map UseDropdownMsg
|
, Html.map UseDropdownMsg
|
||||||
(Comp.FixedDropdown.view2 (makeUseItem model) model.useModel)
|
(Comp.FixedDropdown.viewStyled2 orgUseCfg
|
||||||
|
False
|
||||||
|
(Just model.use)
|
||||||
|
model.useModel
|
||||||
|
)
|
||||||
, span [ class "opacity-50 text-sm" ]
|
, span [ class "opacity-50 text-sm" ]
|
||||||
[ case model.use of
|
[ case model.use of
|
||||||
Data.OrgUse.Correspondent ->
|
Data.OrgUse.Correspondent ->
|
||||||
|
@ -46,9 +46,7 @@ emptyModel =
|
|||||||
, notes = Nothing
|
, notes = Nothing
|
||||||
, use = Data.PersonUse.Both
|
, use = Data.PersonUse.Both
|
||||||
, useModel =
|
, useModel =
|
||||||
Comp.FixedDropdown.initMap
|
Comp.FixedDropdown.init Data.PersonUse.all
|
||||||
Data.PersonUse.label
|
|
||||||
Data.PersonUse.all
|
|
||||||
, orgModel = Comp.Dropdown.makeSingle
|
, orgModel = Comp.Dropdown.makeSingle
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -176,18 +174,19 @@ update flags msg model =
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
makeUseItem : Model -> Maybe (Comp.FixedDropdown.Item PersonUse)
|
|
||||||
makeUseItem model =
|
|
||||||
Just <|
|
|
||||||
Comp.FixedDropdown.Item model.use (Data.PersonUse.label model.use) Nothing
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
--- View2
|
--- View2
|
||||||
|
|
||||||
|
|
||||||
view2 : Bool -> UiSettings -> Model -> Html Msg
|
view2 : Bool -> UiSettings -> Model -> Html Msg
|
||||||
view2 mobile settings model =
|
view2 mobile settings model =
|
||||||
|
let
|
||||||
|
personUseCfg =
|
||||||
|
{ display = Data.PersonUse.label
|
||||||
|
, icon = \_ -> Nothing
|
||||||
|
, style = DS.mainStyle
|
||||||
|
}
|
||||||
|
in
|
||||||
div [ class "flex flex-col" ]
|
div [ class "flex flex-col" ]
|
||||||
[ div
|
[ div
|
||||||
[ class "mb-4"
|
[ class "mb-4"
|
||||||
@ -218,7 +217,7 @@ view2 mobile settings model =
|
|||||||
]
|
]
|
||||||
[ text "Use of this person" ]
|
[ text "Use of this person" ]
|
||||||
, Html.map UseDropdownMsg
|
, Html.map UseDropdownMsg
|
||||||
(Comp.FixedDropdown.view2 (makeUseItem model) model.useModel)
|
(Comp.FixedDropdown.viewStyled2 personUseCfg False (Just model.use) model.useModel)
|
||||||
, span [ class "opacity-50 text-sm" ]
|
, span [ class "opacity-50 text-sm" ]
|
||||||
[ case model.use of
|
[ case model.use of
|
||||||
Data.PersonUse.Concerning ->
|
Data.PersonUse.Concerning ->
|
||||||
|
@ -166,7 +166,7 @@ initWith flags s =
|
|||||||
, fileFilter = s.fileFilter
|
, fileFilter = s.fileFilter
|
||||||
, subjectFilter = s.subjectFilter
|
, subjectFilter = s.subjectFilter
|
||||||
, languageModel =
|
, languageModel =
|
||||||
Comp.FixedDropdown.init (List.map mkLanguageItem Data.Language.all)
|
Comp.FixedDropdown.init Data.Language.all
|
||||||
, language = Maybe.andThen Data.Language.fromString s.language
|
, language = Maybe.andThen Data.Language.fromString s.language
|
||||||
, postHandleAll = Maybe.withDefault False s.postHandleAll
|
, postHandleAll = Maybe.withDefault False s.postHandleAll
|
||||||
, summary = s.summary
|
, summary = s.summary
|
||||||
@ -213,7 +213,7 @@ init flags =
|
|||||||
, fileFilter = Nothing
|
, fileFilter = Nothing
|
||||||
, subjectFilter = Nothing
|
, subjectFilter = Nothing
|
||||||
, languageModel =
|
, languageModel =
|
||||||
Comp.FixedDropdown.init (List.map mkLanguageItem Data.Language.all)
|
Comp.FixedDropdown.init Data.Language.all
|
||||||
, language = Nothing
|
, language = Nothing
|
||||||
, postHandleAll = False
|
, postHandleAll = False
|
||||||
, summary = Nothing
|
, summary = Nothing
|
||||||
@ -227,11 +227,6 @@ init flags =
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
mkLanguageItem : Language -> Comp.FixedDropdown.Item Language
|
|
||||||
mkLanguageItem lang =
|
|
||||||
Comp.FixedDropdown.Item lang (Data.Language.toName lang) Nothing
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
--- Update
|
--- Update
|
||||||
|
|
||||||
@ -1057,6 +1052,12 @@ viewMetadata2 flags settings model =
|
|||||||
, labelColor = \_ -> \_ -> ""
|
, labelColor = \_ -> \_ -> ""
|
||||||
, style = DS.mainStyle
|
, style = DS.mainStyle
|
||||||
}
|
}
|
||||||
|
|
||||||
|
languageCfg =
|
||||||
|
{ display = Data.Language.toName
|
||||||
|
, icon = \_ -> Nothing
|
||||||
|
, style = DS.mainStyleWith "flex-grow mr-2"
|
||||||
|
}
|
||||||
in
|
in
|
||||||
[ div [ class "mb-4" ]
|
[ div [ class "mb-4" ]
|
||||||
[ label [ class S.inputLabel ]
|
[ label [ class S.inputLabel ]
|
||||||
@ -1148,9 +1149,9 @@ disappear then.
|
|||||||
, div [ class "flex flex-row" ]
|
, div [ class "flex flex-row" ]
|
||||||
[ Html.map LanguageMsg
|
[ Html.map LanguageMsg
|
||||||
(Comp.FixedDropdown.viewStyled2
|
(Comp.FixedDropdown.viewStyled2
|
||||||
(DS.mainStyleWith "flex-grow mr-2")
|
languageCfg
|
||||||
False
|
False
|
||||||
(Maybe.map mkLanguageItem model.language)
|
model.language
|
||||||
model.languageModel
|
model.languageModel
|
||||||
)
|
)
|
||||||
, a
|
, a
|
||||||
|
@ -59,9 +59,7 @@ emptyModel =
|
|||||||
, abbrev = ""
|
, abbrev = ""
|
||||||
, description = Nothing
|
, description = Nothing
|
||||||
, priorityModel =
|
, priorityModel =
|
||||||
Comp.FixedDropdown.initMap
|
Comp.FixedDropdown.init Data.Priority.all
|
||||||
Data.Priority.toName
|
|
||||||
Data.Priority.all
|
|
||||||
, priority = Data.Priority.Low
|
, priority = Data.Priority.Low
|
||||||
, enabled = False
|
, enabled = False
|
||||||
, folderModel = Comp.Dropdown.makeSingle
|
, folderModel = Comp.Dropdown.makeSingle
|
||||||
@ -316,12 +314,6 @@ update flags msg model =
|
|||||||
view2 : Flags -> Texts -> UiSettings -> Model -> Html Msg
|
view2 : Flags -> Texts -> UiSettings -> Model -> Html Msg
|
||||||
view2 flags texts settings model =
|
view2 flags texts settings model =
|
||||||
let
|
let
|
||||||
priorityItem =
|
|
||||||
Comp.FixedDropdown.Item
|
|
||||||
model.priority
|
|
||||||
(Data.Priority.toName model.priority)
|
|
||||||
Nothing
|
|
||||||
|
|
||||||
folderCfg =
|
folderCfg =
|
||||||
{ makeOption = mkFolderOption flags model.allFolders
|
{ makeOption = mkFolderOption flags model.allFolders
|
||||||
, placeholder = ""
|
, placeholder = ""
|
||||||
@ -342,6 +334,12 @@ view2 flags texts settings model =
|
|||||||
, labelColor = \_ -> \_ -> ""
|
, labelColor = \_ -> \_ -> ""
|
||||||
, style = DS.mainStyle
|
, style = DS.mainStyle
|
||||||
}
|
}
|
||||||
|
|
||||||
|
priorityCfg =
|
||||||
|
{ display = Data.Priority.toName
|
||||||
|
, icon = \_ -> Nothing
|
||||||
|
, style = DS.mainStyle
|
||||||
|
}
|
||||||
in
|
in
|
||||||
div [ class "flex flex-col" ]
|
div [ class "flex flex-col" ]
|
||||||
[ div [ class "mb-4" ]
|
[ div [ class "mb-4" ]
|
||||||
@ -402,8 +400,10 @@ view2 flags texts settings model =
|
|||||||
[ text texts.priority
|
[ text texts.priority
|
||||||
]
|
]
|
||||||
, Html.map PrioDropdownMsg
|
, Html.map PrioDropdownMsg
|
||||||
(Comp.FixedDropdown.view2
|
(Comp.FixedDropdown.viewStyled2
|
||||||
(Just priorityItem)
|
priorityCfg
|
||||||
|
False
|
||||||
|
(Just model.priority)
|
||||||
model.priorityModel
|
model.priorityModel
|
||||||
)
|
)
|
||||||
, div [ class "opacity-50 text-sm" ]
|
, div [ class "opacity-50 text-sm" ]
|
||||||
|
@ -156,8 +156,7 @@ init flags settings =
|
|||||||
, powerSearchEnabled = settings.powerSearchEnabled
|
, powerSearchEnabled = settings.powerSearchEnabled
|
||||||
, uiLang = settings.uiLang
|
, uiLang = settings.uiLang
|
||||||
, uiLangModel =
|
, uiLangModel =
|
||||||
List.map langItem UiLanguage.all
|
Comp.FixedDropdown.init UiLanguage.all
|
||||||
|> Comp.FixedDropdown.init
|
|
||||||
, openTabs = Set.empty
|
, openTabs = Set.empty
|
||||||
}
|
}
|
||||||
, Api.getTags flags "" GetTagsResp
|
, Api.getTags flags "" GetTagsResp
|
||||||
@ -187,14 +186,6 @@ type Msg
|
|||||||
| UiLangMsg (Comp.FixedDropdown.Msg UiLanguage)
|
| UiLangMsg (Comp.FixedDropdown.Msg UiLanguage)
|
||||||
|
|
||||||
|
|
||||||
langItem : UiLanguage -> Comp.FixedDropdown.Item UiLanguage
|
|
||||||
langItem lang =
|
|
||||||
{ id = lang
|
|
||||||
, display = Messages.get lang |> .label
|
|
||||||
, icon = Just (Messages.get lang |> .flagIcon)
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
--- Update
|
--- Update
|
||||||
|
|
||||||
@ -516,6 +507,13 @@ view2 flags settings model =
|
|||||||
|
|
||||||
settingFormTabs : Flags -> UiSettings -> Model -> List (Comp.Tabs.Tab Msg)
|
settingFormTabs : Flags -> UiSettings -> Model -> List (Comp.Tabs.Tab Msg)
|
||||||
settingFormTabs flags _ model =
|
settingFormTabs flags _ model =
|
||||||
|
let
|
||||||
|
langCfg =
|
||||||
|
{ display = \lang -> Messages.get lang |> .label
|
||||||
|
, icon = \lang -> Just (Messages.get lang |> .flagIcon)
|
||||||
|
, style = DS.mainStyle
|
||||||
|
}
|
||||||
|
in
|
||||||
[ { title = "General"
|
[ { title = "General"
|
||||||
, titleRight = []
|
, titleRight = []
|
||||||
, info = Nothing
|
, info = Nothing
|
||||||
@ -532,9 +530,10 @@ settingFormTabs flags _ model =
|
|||||||
, div [ class "mb-4" ]
|
, div [ class "mb-4" ]
|
||||||
[ label [ class S.inputLabel ] [ text "UI Language" ]
|
[ label [ class S.inputLabel ] [ text "UI Language" ]
|
||||||
, Html.map UiLangMsg
|
, Html.map UiLangMsg
|
||||||
(Comp.FixedDropdown.viewStyled2 DS.mainStyle
|
(Comp.FixedDropdown.viewStyled2
|
||||||
|
langCfg
|
||||||
False
|
False
|
||||||
(Just <| langItem model.uiLang)
|
(Just model.uiLang)
|
||||||
model.uiLangModel
|
model.uiLangModel
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
|
@ -13,7 +13,6 @@ module Page.Home.Data exposing
|
|||||||
, itemNav
|
, itemNav
|
||||||
, menuCollapsed
|
, menuCollapsed
|
||||||
, resultsBelowLimit
|
, resultsBelowLimit
|
||||||
, searchTypeString
|
|
||||||
, selectActive
|
, selectActive
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -30,7 +29,6 @@ import Comp.ItemDetail.MultiEditMenu exposing (SaveNameState(..))
|
|||||||
import Comp.LinkTarget exposing (LinkTarget)
|
import Comp.LinkTarget exposing (LinkTarget)
|
||||||
import Comp.PowerSearchInput
|
import Comp.PowerSearchInput
|
||||||
import Comp.SearchMenu
|
import Comp.SearchMenu
|
||||||
import Comp.YesNoDimmer
|
|
||||||
import Data.Flags exposing (Flags)
|
import Data.Flags exposing (Flags)
|
||||||
import Data.ItemNav exposing (ItemNav)
|
import Data.ItemNav exposing (ItemNav)
|
||||||
import Data.ItemQuery as Q
|
import Data.ItemQuery as Q
|
||||||
@ -110,8 +108,7 @@ init flags viewMode =
|
|||||||
, moreInProgress = False
|
, moreInProgress = False
|
||||||
, throttle = Throttle.create 1
|
, throttle = Throttle.create 1
|
||||||
, searchTypeDropdown =
|
, searchTypeDropdown =
|
||||||
Comp.FixedDropdown.initMap searchTypeString
|
Comp.FixedDropdown.init searchTypeOptions
|
||||||
searchTypeOptions
|
|
||||||
, searchTypeDropdownValue =
|
, searchTypeDropdownValue =
|
||||||
if Comp.SearchMenu.isFulltextSearch searchMenuModel then
|
if Comp.SearchMenu.isFulltextSearch searchMenuModel then
|
||||||
ContentOnlySearch
|
ContentOnlySearch
|
||||||
@ -226,16 +223,6 @@ type alias SearchParam =
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
searchTypeString : SearchType -> String
|
|
||||||
searchTypeString st =
|
|
||||||
case st of
|
|
||||||
BasicSearch ->
|
|
||||||
"Names"
|
|
||||||
|
|
||||||
ContentOnlySearch ->
|
|
||||||
"Contents"
|
|
||||||
|
|
||||||
|
|
||||||
itemNav : String -> Model -> ItemNav
|
itemNav : String -> Model -> ItemNav
|
||||||
itemNav id model =
|
itemNav id model =
|
||||||
Data.ItemNav.fromList model.itemListModel.results id
|
Data.ItemNav.fromList model.itemListModel.results id
|
||||||
|
@ -9,7 +9,6 @@ module Page.Upload.Data exposing
|
|||||||
, isIdle
|
, isIdle
|
||||||
, isLoading
|
, isLoading
|
||||||
, isSuccessAll
|
, isSuccessAll
|
||||||
, mkLanguageItem
|
|
||||||
, uploadAllTracker
|
, uploadAllTracker
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -38,11 +37,6 @@ type alias Model =
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
mkLanguageItem : Language -> Comp.FixedDropdown.Item Language
|
|
||||||
mkLanguageItem lang =
|
|
||||||
Comp.FixedDropdown.Item lang (Data.Language.toName lang) Nothing
|
|
||||||
|
|
||||||
|
|
||||||
emptyModel : Model
|
emptyModel : Model
|
||||||
emptyModel =
|
emptyModel =
|
||||||
{ incoming = True
|
{ incoming = True
|
||||||
@ -54,8 +48,7 @@ emptyModel =
|
|||||||
, dropzone = Comp.Dropzone.init []
|
, dropzone = Comp.Dropzone.init []
|
||||||
, skipDuplicates = True
|
, skipDuplicates = True
|
||||||
, languageModel =
|
, languageModel =
|
||||||
Comp.FixedDropdown.init
|
Comp.FixedDropdown.init Data.Language.all
|
||||||
(List.map mkLanguageItem Data.Language.all)
|
|
||||||
, language = Nothing
|
, language = Nothing
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5,6 +5,7 @@ import Comp.FixedDropdown
|
|||||||
import Comp.Progress
|
import Comp.Progress
|
||||||
import Data.DropdownStyle as DS
|
import Data.DropdownStyle as DS
|
||||||
import Data.Flags exposing (Flags)
|
import Data.Flags exposing (Flags)
|
||||||
|
import Data.Language
|
||||||
import Data.UiSettings exposing (UiSettings)
|
import Data.UiSettings exposing (UiSettings)
|
||||||
import Dict
|
import Dict
|
||||||
import File exposing (File)
|
import File exposing (File)
|
||||||
@ -71,6 +72,13 @@ viewContent texts mid _ _ model =
|
|||||||
|
|
||||||
renderForm : Texts -> Model -> Html Msg
|
renderForm : Texts -> Model -> Html Msg
|
||||||
renderForm texts model =
|
renderForm texts model =
|
||||||
|
let
|
||||||
|
languageCfg =
|
||||||
|
{ display = Data.Language.toName
|
||||||
|
, icon = \_ -> Nothing
|
||||||
|
, style = DS.mainStyleWith "w-40"
|
||||||
|
}
|
||||||
|
in
|
||||||
div [ class "row" ]
|
div [ class "row" ]
|
||||||
[ Html.form [ action "#" ]
|
[ Html.form [ action "#" ]
|
||||||
[ div [ class "flex flex-col mb-3" ]
|
[ div [ class "flex flex-col mb-3" ]
|
||||||
@ -128,9 +136,9 @@ renderForm texts model =
|
|||||||
[ span [ class "mr-2" ] [ text (texts.language ++ ":") ]
|
[ span [ class "mr-2" ] [ text (texts.language ++ ":") ]
|
||||||
, Html.map LanguageMsg
|
, Html.map LanguageMsg
|
||||||
(Comp.FixedDropdown.viewStyled2
|
(Comp.FixedDropdown.viewStyled2
|
||||||
(DS.mainStyleWith "w-40")
|
languageCfg
|
||||||
False
|
False
|
||||||
(Maybe.map mkLanguageItem model.language)
|
model.language
|
||||||
model.languageModel
|
model.languageModel
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user