From 9fcab84267257771b7a186ed7ac6760aec23b191 Mon Sep 17 00:00:00 2001 From: Eike Kettner Date: Sat, 27 Mar 2021 18:30:32 +0100 Subject: [PATCH] Add icon to fixed dropdown --- .../main/elm/Comp/ClassifierSettingsForm.elm | 1 + .../webapp/src/main/elm/Comp/ColorTagger.elm | 2 +- .../webapp/src/main/elm/Comp/ContactField.elm | 1 + .../src/main/elm/Comp/CustomFieldForm.elm | 2 +- .../main/elm/Comp/CustomFieldMultiInput.elm | 2 +- .../src/main/elm/Comp/EquipmentForm.elm | 2 +- .../src/main/elm/Comp/FixedDropdown.elm | 25 +++++++++++++++---- .../webapp/src/main/elm/Comp/FolderDetail.elm | 2 +- modules/webapp/src/main/elm/Comp/OrgForm.elm | 2 +- .../webapp/src/main/elm/Comp/PersonForm.elm | 2 +- .../src/main/elm/Comp/ScanMailboxForm.elm | 2 +- .../webapp/src/main/elm/Comp/SourceForm.elm | 1 + .../webapp/src/main/elm/Page/Upload/Data.elm | 2 +- 13 files changed, 32 insertions(+), 14 deletions(-) diff --git a/modules/webapp/src/main/elm/Comp/ClassifierSettingsForm.elm b/modules/webapp/src/main/elm/Comp/ClassifierSettingsForm.elm index 3850dab2..e95dbd6e 100644 --- a/modules/webapp/src/main/elm/Comp/ClassifierSettingsForm.elm +++ b/modules/webapp/src/main/elm/Comp/ClassifierSettingsForm.elm @@ -190,6 +190,7 @@ view2 settings model = Comp.FixedDropdown.Item model.categoryListType (Data.ListType.label model.categoryListType) + Nothing in div [] [ Markdown.toHtml [ class "px-2 py-2 opacity-75" ] diff --git a/modules/webapp/src/main/elm/Comp/ColorTagger.elm b/modules/webapp/src/main/elm/Comp/ColorTagger.elm index a606b337..a65ddba2 100644 --- a/modules/webapp/src/main/elm/Comp/ColorTagger.elm +++ b/modules/webapp/src/main/elm/Comp/ColorTagger.elm @@ -101,7 +101,7 @@ view2 data opts model = [ text opts.label ] , Html.map LeftMsg (Comp.FixedDropdown.view2 - (Maybe.map (\s -> Comp.FixedDropdown.Item s s) model.leftSelect) + (Maybe.map (\s -> Comp.FixedDropdown.Item s s Nothing) model.leftSelect) model.leftDropdown ) , div [ class "field" ] diff --git a/modules/webapp/src/main/elm/Comp/ContactField.elm b/modules/webapp/src/main/elm/Comp/ContactField.elm index 986d94de..d27646f1 100644 --- a/modules/webapp/src/main/elm/Comp/ContactField.elm +++ b/modules/webapp/src/main/elm/Comp/ContactField.elm @@ -45,6 +45,7 @@ makeDropdownItem : ContactType -> Comp.FixedDropdown.Item ContactType makeDropdownItem ct = { id = ct , display = Data.ContactType.toString ct + , icon = Nothing } diff --git a/modules/webapp/src/main/elm/Comp/CustomFieldForm.elm b/modules/webapp/src/main/elm/Comp/CustomFieldForm.elm index 2881a4dc..b1d54aa9 100644 --- a/modules/webapp/src/main/elm/Comp/CustomFieldForm.elm +++ b/modules/webapp/src/main/elm/Comp/CustomFieldForm.elm @@ -201,7 +201,7 @@ view2 : ViewSettings -> Model -> List (Html Msg) view2 viewSettings model = let mkItem cft = - Comp.FixedDropdown.Item cft (Data.CustomFieldType.label cft) + Comp.FixedDropdown.Item cft (Data.CustomFieldType.label cft) Nothing dimmerSettings = Comp.YesNoDimmer.defaultSettings2 "Really delete this custom field?" diff --git a/modules/webapp/src/main/elm/Comp/CustomFieldMultiInput.elm b/modules/webapp/src/main/elm/Comp/CustomFieldMultiInput.elm index 73c8981a..459d8138 100644 --- a/modules/webapp/src/main/elm/Comp/CustomFieldMultiInput.elm +++ b/modules/webapp/src/main/elm/Comp/CustomFieldMultiInput.elm @@ -147,7 +147,7 @@ type alias UpdateResult = mkItem : CustomField -> Comp.FixedDropdown.Item CustomField mkItem f = - Comp.FixedDropdown.Item f (Maybe.withDefault f.name f.label) + Comp.FixedDropdown.Item f (Maybe.withDefault f.name f.label) Nothing update : Flags -> Msg -> Model -> UpdateResult diff --git a/modules/webapp/src/main/elm/Comp/EquipmentForm.elm b/modules/webapp/src/main/elm/Comp/EquipmentForm.elm index 2968db76..695c64ef 100644 --- a/modules/webapp/src/main/elm/Comp/EquipmentForm.elm +++ b/modules/webapp/src/main/elm/Comp/EquipmentForm.elm @@ -161,4 +161,4 @@ view2 model = makeUseItem : Model -> Maybe (Comp.FixedDropdown.Item EquipmentUse) makeUseItem model = Just <| - Comp.FixedDropdown.Item model.use (Data.EquipmentUse.label model.use) + Comp.FixedDropdown.Item model.use (Data.EquipmentUse.label model.use) Nothing diff --git a/modules/webapp/src/main/elm/Comp/FixedDropdown.elm b/modules/webapp/src/main/elm/Comp/FixedDropdown.elm index 5d94d369..6679b06f 100644 --- a/modules/webapp/src/main/elm/Comp/FixedDropdown.elm +++ b/modules/webapp/src/main/elm/Comp/FixedDropdown.elm @@ -23,6 +23,7 @@ import Util.List type alias Item a = { id : a , display : String + , icon : Maybe String } @@ -49,19 +50,19 @@ init options = initString : List String -> Model String initString strings = - init <| List.map (\s -> Item s s) strings + init <| List.map (\s -> Item s s Nothing) strings initMap : (a -> String) -> List a -> Model a initMap elToString els = - init <| List.map (\a -> Item a (elToString a)) 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 + Item id txt Nothing in init <| List.map mkItem tuples @@ -170,6 +171,14 @@ update msg model = viewStyled2 : DS.DropdownStyle -> Bool -> Maybe (Item a) -> Model a -> Html (Msg a) viewStyled2 style error sel model = let + iconItem item = + span + [ classList [ ( "hidden", item.icon == Nothing ) ] + , class (Maybe.withDefault "" item.icon) + , class "mr-2" + ] + [] + renderItem item = a [ href "#" @@ -180,8 +189,13 @@ viewStyled2 style error sel model = ] , onClick (SelectItem2 item) ] - [ text item.display + [ iconItem item + , text item.display ] + + selIcon = + Maybe.map iconItem sel + |> Maybe.withDefault (span [ class "hidden" ] []) in div [ class ("relative " ++ style.root) @@ -200,7 +214,8 @@ viewStyled2 style error sel model = [ ( "opacity-50", sel == Nothing ) ] ] - [ Maybe.map .display sel + [ selIcon + , Maybe.map .display sel |> Maybe.withDefault "Select…" |> text ] diff --git a/modules/webapp/src/main/elm/Comp/FolderDetail.elm b/modules/webapp/src/main/elm/Comp/FolderDetail.elm index 5e4a38af..a86a12eb 100644 --- a/modules/webapp/src/main/elm/Comp/FolderDetail.elm +++ b/modules/webapp/src/main/elm/Comp/FolderDetail.elm @@ -277,7 +277,7 @@ update flags msg model = makeItem : IdName -> Comp.FixedDropdown.Item IdName makeItem idn = - Comp.FixedDropdown.Item idn idn.name + Comp.FixedDropdown.Item idn idn.name Nothing view2 : Flags -> Model -> Html Msg diff --git a/modules/webapp/src/main/elm/Comp/OrgForm.elm b/modules/webapp/src/main/elm/Comp/OrgForm.elm index 5f2584fe..f7305923 100644 --- a/modules/webapp/src/main/elm/Comp/OrgForm.elm +++ b/modules/webapp/src/main/elm/Comp/OrgForm.elm @@ -150,7 +150,7 @@ update flags msg model = makeUseItem : Model -> Maybe (Comp.FixedDropdown.Item OrgUse) makeUseItem model = Just <| - Comp.FixedDropdown.Item model.use (Data.OrgUse.label model.use) + Comp.FixedDropdown.Item model.use (Data.OrgUse.label model.use) Nothing view2 : Bool -> UiSettings -> Model -> Html Msg diff --git a/modules/webapp/src/main/elm/Comp/PersonForm.elm b/modules/webapp/src/main/elm/Comp/PersonForm.elm index e9b35c79..0c875fe0 100644 --- a/modules/webapp/src/main/elm/Comp/PersonForm.elm +++ b/modules/webapp/src/main/elm/Comp/PersonForm.elm @@ -179,7 +179,7 @@ update flags msg model = makeUseItem : Model -> Maybe (Comp.FixedDropdown.Item PersonUse) makeUseItem model = Just <| - Comp.FixedDropdown.Item model.use (Data.PersonUse.label model.use) + Comp.FixedDropdown.Item model.use (Data.PersonUse.label model.use) Nothing diff --git a/modules/webapp/src/main/elm/Comp/ScanMailboxForm.elm b/modules/webapp/src/main/elm/Comp/ScanMailboxForm.elm index 3e23a981..926c0267 100644 --- a/modules/webapp/src/main/elm/Comp/ScanMailboxForm.elm +++ b/modules/webapp/src/main/elm/Comp/ScanMailboxForm.elm @@ -237,7 +237,7 @@ init flags = mkLanguageItem : Language -> Comp.FixedDropdown.Item Language mkLanguageItem lang = - Comp.FixedDropdown.Item lang (Data.Language.toName lang) + Comp.FixedDropdown.Item lang (Data.Language.toName lang) Nothing diff --git a/modules/webapp/src/main/elm/Comp/SourceForm.elm b/modules/webapp/src/main/elm/Comp/SourceForm.elm index bca6a32e..e762d9a3 100644 --- a/modules/webapp/src/main/elm/Comp/SourceForm.elm +++ b/modules/webapp/src/main/elm/Comp/SourceForm.elm @@ -336,6 +336,7 @@ view2 _ settings model = Comp.FixedDropdown.Item model.priority (Data.Priority.toName model.priority) + Nothing in div [ class "flex flex-col" ] [ div [ class "mb-4" ] diff --git a/modules/webapp/src/main/elm/Page/Upload/Data.elm b/modules/webapp/src/main/elm/Page/Upload/Data.elm index 8c4632c3..40255518 100644 --- a/modules/webapp/src/main/elm/Page/Upload/Data.elm +++ b/modules/webapp/src/main/elm/Page/Upload/Data.elm @@ -40,7 +40,7 @@ type alias Model = mkLanguageItem : Language -> Comp.FixedDropdown.Item Language mkLanguageItem lang = - Comp.FixedDropdown.Item lang (Data.Language.toName lang) + Comp.FixedDropdown.Item lang (Data.Language.toName lang) Nothing emptyModel : Model