Refactor FixedDropdown

This commit is contained in:
Eike Kettner 2021-04-02 22:46:47 +02:00
parent 8d15d97857
commit 9a23ba9afb
16 changed files with 170 additions and 176 deletions

View File

@ -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 ]

View File

@ -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" ]

View File

@ -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
) )
] ]

View File

@ -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" ]

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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
) )
] ]

View File

@ -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 ->

View File

@ -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 ->

View File

@ -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

View File

@ -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" ]

View File

@ -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
) )
] ]

View File

@ -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

View File

@ -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
} }

View File

@ -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
) )
] ]