From 29d80adace74cdfadbc046da1ea8b7c4353eb1d7 Mon Sep 17 00:00:00 2001
From: Eike Kettner <eike.kettner@posteo.de>
Date: Tue, 16 Feb 2021 23:00:57 +0100
Subject: [PATCH 1/4] Ui updates: place result message below buttons

---
 .../src/main/elm/Comp/CustomFieldForm.elm     | 24 +++++++++----------
 .../src/main/elm/Comp/EmailSettingsManage.elm |  5 ++--
 .../src/main/elm/Comp/EquipmentManage.elm     |  3 ++-
 .../webapp/src/main/elm/Comp/FolderDetail.elm |  7 +++++-
 .../src/main/elm/Comp/ImapSettingsManage.elm  | 17 ++++++-------
 .../webapp/src/main/elm/Comp/OrgManage.elm    |  3 ++-
 .../webapp/src/main/elm/Comp/PersonManage.elm |  3 ++-
 .../webapp/src/main/elm/Comp/TagManage.elm    |  3 ++-
 8 files changed, 38 insertions(+), 27 deletions(-)

diff --git a/modules/webapp/src/main/elm/Comp/CustomFieldForm.elm b/modules/webapp/src/main/elm/Comp/CustomFieldForm.elm
index 2c2055b7..4bf5ed3b 100644
--- a/modules/webapp/src/main/elm/Comp/CustomFieldForm.elm
+++ b/modules/webapp/src/main/elm/Comp/CustomFieldForm.elm
@@ -340,6 +340,18 @@ view2 viewSettings model =
                         dimmerSettings
                         model.deleteDimmer
                     )
+                , div
+                    [ classList
+                        [ ( "hidden", model.result == Nothing )
+                        , ( S.errorMessage, Maybe.map .success model.result == Just False )
+                        , ( S.successMessage, Maybe.map .success model.result == Just True )
+                        ]
+                    , class "my-2"
+                    ]
+                    [ Maybe.map .message model.result
+                        |> Maybe.withDefault ""
+                        |> text
+                    ]
                 , if model.field.id == "" then
                     div [ class "py-2 text-lg opacity-75" ]
                         [ text "Create a new custom field."
@@ -416,18 +428,6 @@ view2 viewSettings model =
                         , text "this field in the ui. If not present, the name is used."
                         ]
                     ]
-                , div
-                    [ classList
-                        [ ( "hidden", model.result == Nothing )
-                        , ( S.errorMessage, Maybe.map .success model.result == Just False )
-                        , ( S.successMessage, Maybe.map .success model.result == Just True )
-                        ]
-                    , class "mb-4"
-                    ]
-                    [ Maybe.map .message model.result
-                        |> Maybe.withDefault ""
-                        |> text
-                    ]
                 ]
            ]
 
diff --git a/modules/webapp/src/main/elm/Comp/EmailSettingsManage.elm b/modules/webapp/src/main/elm/Comp/EmailSettingsManage.elm
index db50d18c..15007387 100644
--- a/modules/webapp/src/main/elm/Comp/EmailSettingsManage.elm
+++ b/modules/webapp/src/main/elm/Comp/EmailSettingsManage.elm
@@ -373,16 +373,17 @@ viewForm2 settings model =
                     []
             , rootClasses = "mb-4"
             }
-        , Html.map FormMsg
-            (Comp.EmailSettingsForm.view2 settings model.formModel)
         , div
             [ classList
                 [ ( "hidden", model.formError == Nothing )
                 ]
+            , class "my-2"
             , class S.errorMessage
             ]
             [ Maybe.withDefault "" model.formError |> text
             ]
+        , Html.map FormMsg
+            (Comp.EmailSettingsForm.view2 settings model.formModel)
         , Html.map YesNoMsg
             (Comp.YesNoDimmer.viewN
                 True
diff --git a/modules/webapp/src/main/elm/Comp/EquipmentManage.elm b/modules/webapp/src/main/elm/Comp/EquipmentManage.elm
index 2d4b1c00..17065b30 100644
--- a/modules/webapp/src/main/elm/Comp/EquipmentManage.elm
+++ b/modules/webapp/src/main/elm/Comp/EquipmentManage.elm
@@ -414,14 +414,15 @@ viewForm2 model =
                     []
             , rootClasses = "mb-4"
             }
-        , Html.map FormMsg (Comp.EquipmentForm.view2 model.formModel)
         , div
             [ classList
                 [ ( "hidden", Util.Maybe.isEmpty model.formError )
                 ]
             , class S.errorMessage
+            , class "my-2"
             ]
             [ Maybe.withDefault "" model.formError |> text
             ]
+        , Html.map FormMsg (Comp.EquipmentForm.view2 model.formModel)
         , B.loadingDimmer model.loading
         ]
diff --git a/modules/webapp/src/main/elm/Comp/FolderDetail.elm b/modules/webapp/src/main/elm/Comp/FolderDetail.elm
index a65a147b..f8105f40 100644
--- a/modules/webapp/src/main/elm/Comp/FolderDetail.elm
+++ b/modules/webapp/src/main/elm/Comp/FolderDetail.elm
@@ -477,6 +477,7 @@ view2 flags model =
                             , onInput SetName
                             , Maybe.withDefault "" model.name
                                 |> value
+                            , classList [ ( S.inputErrorBorder, model.name == Nothing ) ]
                             , class S.textInput
                             , id "folder-name"
                             ]
@@ -585,11 +586,15 @@ viewButtons2 model =
                 }
             ]
         , end =
-            [ MB.DeleteButton
+            [ MB.CustomButton
                 { tagger = RequestDelete
                 , label = "Delete"
                 , icon = Just "fa fa-trash"
                 , title = "Delete this folder"
+                , inputClass =
+                    [ ( S.deleteButton, True )
+                    , ( "hidden", model.folder.id == "" )
+                    ]
                 }
             ]
         , rootClasses = "mb-4"
diff --git a/modules/webapp/src/main/elm/Comp/ImapSettingsManage.elm b/modules/webapp/src/main/elm/Comp/ImapSettingsManage.elm
index 04087010..e6073bc0 100644
--- a/modules/webapp/src/main/elm/Comp/ImapSettingsManage.elm
+++ b/modules/webapp/src/main/elm/Comp/ImapSettingsManage.elm
@@ -376,19 +376,20 @@ viewForm2 settings model =
                     []
             , rootClasses = "mb-4"
             }
+        , div
+            [ classList
+                [ ( "hidden", model.formError == Nothing )
+                ]
+            , class "my-2"
+            , class S.errorMessage
+            ]
+            [ Maybe.withDefault "" model.formError |> text
+            ]
         , Html.map FormMsg
             (Comp.ImapSettingsForm.view2
                 settings
                 model.formModel
             )
-        , div
-            [ classList
-                [ ( "hidden", model.formError == Nothing )
-                ]
-            , class S.errorMessage
-            ]
-            [ Maybe.withDefault "" model.formError |> text
-            ]
         , Html.map YesNoMsg
             (Comp.YesNoDimmer.viewN
                 True
diff --git a/modules/webapp/src/main/elm/Comp/OrgManage.elm b/modules/webapp/src/main/elm/Comp/OrgManage.elm
index 6b299b00..d184f0d1 100644
--- a/modules/webapp/src/main/elm/Comp/OrgManage.elm
+++ b/modules/webapp/src/main/elm/Comp/OrgManage.elm
@@ -408,14 +408,15 @@ viewForm2 settings model =
                     []
             , rootClasses = "mb-4"
             }
-        , Html.map FormMsg (Comp.OrgForm.view2 False settings model.formModel)
         , div
             [ classList
                 [ ( "hidden", Util.Maybe.isEmpty model.formError )
                 ]
             , class S.errorMessage
+            , class "my-2"
             ]
             [ Maybe.withDefault "" model.formError |> text
             ]
+        , Html.map FormMsg (Comp.OrgForm.view2 False settings model.formModel)
         , B.loadingDimmer model.loading
         ]
diff --git a/modules/webapp/src/main/elm/Comp/PersonManage.elm b/modules/webapp/src/main/elm/Comp/PersonManage.elm
index b7087513..5e9078ca 100644
--- a/modules/webapp/src/main/elm/Comp/PersonManage.elm
+++ b/modules/webapp/src/main/elm/Comp/PersonManage.elm
@@ -456,14 +456,15 @@ viewForm2 settings model =
                     []
             , rootClasses = "mb-4"
             }
-        , Html.map FormMsg (Comp.PersonForm.view2 False settings model.formModel)
         , div
             [ classList
                 [ ( "hidden", Util.Maybe.isEmpty model.formError )
                 ]
             , class S.errorMessage
+            , class "my-2"
             ]
             [ Maybe.withDefault "" model.formError |> text
             ]
+        , Html.map FormMsg (Comp.PersonForm.view2 False settings model.formModel)
         , B.loadingDimmer (isLoading model)
         ]
diff --git a/modules/webapp/src/main/elm/Comp/TagManage.elm b/modules/webapp/src/main/elm/Comp/TagManage.elm
index aef67a8c..89d4d3a9 100644
--- a/modules/webapp/src/main/elm/Comp/TagManage.elm
+++ b/modules/webapp/src/main/elm/Comp/TagManage.elm
@@ -424,14 +424,15 @@ viewForm2 model =
                     []
             , rootClasses = "mb-4"
             }
-        , Html.map FormMsg (Comp.TagForm.view2 model.tagFormModel)
         , div
             [ classList
                 [ ( "hidden", Util.Maybe.isEmpty model.formError )
                 ]
+            , class "my-2"
             , class S.errorMessage
             ]
             [ Maybe.withDefault "" model.formError |> text
             ]
+        , Html.map FormMsg (Comp.TagForm.view2 model.tagFormModel)
         , B.loadingDimmer model.loading
         ]

From 33cfd6df6f028f21c33ca0dc13cad989226112a1 Mon Sep 17 00:00:00 2001
From: Eike Kettner <eike.kettner@posteo.de>
Date: Tue, 16 Feb 2021 23:05:58 +0100
Subject: [PATCH 2/4] Hide Load-more button when there is no more

---
 modules/webapp/src/main/elm/Page/Home/View2.elm | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/modules/webapp/src/main/elm/Page/Home/View2.elm b/modules/webapp/src/main/elm/Page/Home/View2.elm
index cffb43f0..ee8c3bdb 100644
--- a/modules/webapp/src/main/elm/Page/Home/View2.elm
+++ b/modules/webapp/src/main/elm/Page/Home/View2.elm
@@ -287,18 +287,19 @@ itemCardList flags settings model =
     in
     [ Html.map ItemCardListMsg
         (Comp.ItemCardList.view2 itemViewCfg settings model.itemListModel)
-    , loadMore model
+    , loadMore settings model
     ]
 
 
-loadMore : Model -> Html Msg
-loadMore model =
+loadMore : UiSettings -> Model -> Html Msg
+loadMore settings model =
     let
         inactive =
             not model.moreAvailable || model.moreInProgress || model.searchInProgress
     in
     div
         [ class "h-40 flex flex-col items-center justify-center w-full"
+        , classList [ ( "hidden", resultsBelowLimit settings model ) ]
         ]
         [ B.secondaryBasicButton
             { label =

From 4ef19961370a3e7088d78e0802a5e1996dece9da Mon Sep 17 00:00:00 2001
From: Eike Kettner <eike.kettner@posteo.de>
Date: Tue, 16 Feb 2021 23:18:40 +0100
Subject: [PATCH 3/4] Fix extracted content border

---
 modules/webapp/src/main/elm/Comp/AttachmentMeta.elm  | 12 ++++++------
 .../main/elm/Comp/ItemDetail/SingleAttachment.elm    |  5 ++++-
 2 files changed, 10 insertions(+), 7 deletions(-)

diff --git a/modules/webapp/src/main/elm/Comp/AttachmentMeta.elm b/modules/webapp/src/main/elm/Comp/AttachmentMeta.elm
index 8b775823..cc6d3c7f 100644
--- a/modules/webapp/src/main/elm/Comp/AttachmentMeta.elm
+++ b/modules/webapp/src/main/elm/Comp/AttachmentMeta.elm
@@ -220,9 +220,9 @@ renderLabel label =
 --- View2
 
 
-view2 : Model -> Html Msg
-view2 model =
-    div []
+view2 : List (Attribute Msg) -> Model -> Html Msg
+view2 attrs model =
+    div attrs
         [ h3 [ class S.header3 ]
             [ text "Extracted Meta Data"
             ]
@@ -252,7 +252,7 @@ viewData2 meta =
         , div [ class "text-lg font-bold mt-2" ]
             [ text "Labels"
             ]
-        , div [ class "flex fex-row flex-wrap space-x-2" ]
+        , div [ class "flex fex-row flex-wrap" ]
             (List.map renderLabelItem2 meta.labels)
         , div [ class "text-lg font-bold mt-2" ]
             [ text "Proposals"
@@ -354,14 +354,14 @@ renderLabel2 label =
     in
     div
         [ class S.basicLabel
-        , class "mt-1 text-sm"
+        , class "mt-1 mr-2 text-sm"
         , title label.labelType
         ]
         [ i [ class icon ] []
         , span [ class "ml-2" ]
             [ text label.label
             ]
-        , div [ class "opacity-75 ml-3" ]
+        , div [ class "opacity-75 ml-3 font-mono" ]
             [ String.fromInt label.beginPos |> text
             , text "-"
             , String.fromInt label.endPos |> text
diff --git a/modules/webapp/src/main/elm/Comp/ItemDetail/SingleAttachment.elm b/modules/webapp/src/main/elm/Comp/ItemDetail/SingleAttachment.elm
index 63ec841b..fc9a36d8 100644
--- a/modules/webapp/src/main/elm/Comp/ItemDetail/SingleAttachment.elm
+++ b/modules/webapp/src/main/elm/Comp/ItemDetail/SingleAttachment.elm
@@ -55,7 +55,10 @@ view settings model pos attach =
             case Dict.get attach.id model.attachMeta of
                 Just am ->
                     Html.map (AttachMetaMsg attach.id)
-                        (Comp.AttachmentMeta.view2 am)
+                        (Comp.AttachmentMeta.view2
+                            [ class "border-r border-l dark:border-bluegray-600 px-2" ]
+                            am
+                        )
 
                 Nothing ->
                     span [ class "hidden" ] []

From e17733615558deb43654b1093d667d3b85b040d8 Mon Sep 17 00:00:00 2001
From: Eike Kettner <eike.kettner@posteo.de>
Date: Tue, 16 Feb 2021 23:24:18 +0100
Subject: [PATCH 4/4] Better align tags in multi-select field

---
 modules/webapp/src/main/elm/Comp/Dropdown.elm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/modules/webapp/src/main/elm/Comp/Dropdown.elm b/modules/webapp/src/main/elm/Comp/Dropdown.elm
index 33afce8d..9e1dfbaf 100644
--- a/modules/webapp/src/main/elm/Comp/Dropdown.elm
+++ b/modules/webapp/src/main/elm/Comp/Dropdown.elm
@@ -755,7 +755,7 @@ viewMultiple2 style settings model =
         renderSelectMultiple item =
             a
                 [ class (model.labelColor item.value settings)
-                , class "label font-medium inline-flex relative items-center hover:shadow-md mt-1"
+                , class "label font-medium inline-flex relative items-center hover:shadow-md mt-1 mr-1"
                 , onClick (RemoveItem item)
                 , href "#"
                 ]
@@ -776,7 +776,7 @@ viewMultiple2 style settings model =
             , class "flex inline-flex flex-wrap items-center"
             ]
             [ div
-                [ class "flex flex-row flex-wrap space-x-1 items-center mr-2 -mt-1"
+                [ class "flex flex-row flex-wrap items-center mr-2 -mt-1"
                 , classList [ ( "hidden", List.isEmpty model.selected ) ]
                 ]
                 (List.map renderSelectMultiple model.selected)