mirror of
https://github.com/TheAnachronism/docspell.git
synced 2025-07-04 16:48:26 +00:00
Add selection to search menu
This commit is contained in:
@ -19,6 +19,7 @@ module Comp.SearchMenu exposing
|
||||
, linkTargetMsg
|
||||
, refreshBookmarks
|
||||
, setFromStats
|
||||
, setIncludeSelection
|
||||
, textSearchString
|
||||
, update
|
||||
, updateDrop
|
||||
@ -52,6 +53,7 @@ import Data.EquipmentOrder
|
||||
import Data.EquipmentUse
|
||||
import Data.Fields
|
||||
import Data.Flags exposing (Flags)
|
||||
import Data.ItemIds exposing (ItemIdChange, ItemIds)
|
||||
import Data.ItemQuery as Q exposing (ItemQuery)
|
||||
import Data.PersonOrder
|
||||
import Data.PersonUse
|
||||
@ -102,6 +104,7 @@ type alias Model =
|
||||
, sourceModel : Maybe String
|
||||
, allBookmarks : Comp.BookmarkChooser.Model
|
||||
, selectedBookmarks : Comp.BookmarkChooser.Selection
|
||||
, includeSelection : Bool
|
||||
, openTabs : Set String
|
||||
, searchMode : SearchMode
|
||||
}
|
||||
@ -149,6 +152,7 @@ init flags =
|
||||
, sourceModel = Nothing
|
||||
, allBookmarks = Comp.BookmarkChooser.init Data.Bookmarks.empty
|
||||
, selectedBookmarks = Comp.BookmarkChooser.emptySelection
|
||||
, includeSelection = False
|
||||
, openTabs = Set.fromList [ "Tags", "Inbox" ]
|
||||
, searchMode = Data.SearchMode.Normal
|
||||
}
|
||||
@ -222,8 +226,8 @@ isNamesSearch model =
|
||||
True
|
||||
|
||||
|
||||
getItemQuery : Model -> Maybe ItemQuery
|
||||
getItemQuery model =
|
||||
getItemQuery : ItemIds -> Model -> Maybe ItemQuery
|
||||
getItemQuery selectedItems model =
|
||||
let
|
||||
when flag body =
|
||||
if flag then
|
||||
@ -258,6 +262,11 @@ getItemQuery model =
|
||||
in
|
||||
Q.and
|
||||
[ when model.inboxCheckbox (Q.Inbox True)
|
||||
, if model.includeSelection then
|
||||
Data.ItemIds.toQuery selectedItems
|
||||
|
||||
else
|
||||
Nothing
|
||||
, whenNotEmpty (model.tagSelection.includeTags |> Set.toList)
|
||||
(Q.TagIds Q.AllMatch)
|
||||
, whenNotEmpty (model.tagSelection.excludeTags |> Set.toList)
|
||||
@ -347,6 +356,7 @@ resetModel model =
|
||||
, customValues = Data.CustomFieldChange.emptyCollect
|
||||
, sourceModel = Nothing
|
||||
, selectedBookmarks = Comp.BookmarkChooser.emptySelection
|
||||
, includeSelection = False
|
||||
, searchMode = Data.SearchMode.Normal
|
||||
}
|
||||
|
||||
@ -397,6 +407,8 @@ type Msg
|
||||
| ToggleOpenAllAkkordionTabs
|
||||
| AllBookmarksResp (Result Http.Error AllBookmarks)
|
||||
| SelectBookmarkMsg Comp.BookmarkChooser.Msg
|
||||
| SetIncludeSelection Bool
|
||||
| ClearSelection
|
||||
|
||||
|
||||
setFromStats : SearchStats -> Msg
|
||||
@ -409,6 +421,11 @@ initFromStats stats =
|
||||
GetAllTagsResp (Ok stats)
|
||||
|
||||
|
||||
setIncludeSelection : Bool -> Msg
|
||||
setIncludeSelection flag =
|
||||
SetIncludeSelection flag
|
||||
|
||||
|
||||
linkTargetMsg : LinkTarget -> Maybe Msg
|
||||
linkTargetMsg linkTarget =
|
||||
case linkTarget of
|
||||
@ -449,6 +466,7 @@ type alias NextState =
|
||||
, sub : Sub Msg
|
||||
, stateChange : Bool
|
||||
, dragDrop : DD.DragDropData
|
||||
, selectionChange : ItemIdChange
|
||||
}
|
||||
|
||||
|
||||
@ -483,6 +501,7 @@ updateDrop ddm flags settings msg model =
|
||||
, sub = Sub.none
|
||||
, stateChange = True
|
||||
, dragDrop = set.dragDrop
|
||||
, selectionChange = Data.ItemIds.noChange
|
||||
}
|
||||
in
|
||||
case msg of
|
||||
@ -525,6 +544,7 @@ updateDrop ddm flags settings msg model =
|
||||
, sub = Sub.none
|
||||
, stateChange = False
|
||||
, dragDrop = DD.DragDropData ddm Nothing
|
||||
, selectionChange = Data.ItemIds.noChange
|
||||
}
|
||||
|
||||
ResetForm ->
|
||||
@ -533,6 +553,7 @@ updateDrop ddm flags settings msg model =
|
||||
, sub = Sub.none
|
||||
, stateChange = True
|
||||
, dragDrop = DD.DragDropData ddm Nothing
|
||||
, selectionChange = Data.ItemIds.noChange
|
||||
}
|
||||
|
||||
SetCorrOrg id ->
|
||||
@ -555,6 +576,7 @@ updateDrop ddm flags settings msg model =
|
||||
, sub = Sub.none
|
||||
, stateChange = False
|
||||
, dragDrop = DD.DragDropData ddm Nothing
|
||||
, selectionChange = Data.ItemIds.noChange
|
||||
}
|
||||
|
||||
SetConcEquip id ->
|
||||
@ -586,6 +608,7 @@ updateDrop ddm flags settings msg model =
|
||||
, sub = Sub.none
|
||||
, stateChange = sel /= model.selectedBookmarks
|
||||
, dragDrop = DD.DragDropData ddm Nothing
|
||||
, selectionChange = Data.ItemIds.noChange
|
||||
}
|
||||
|
||||
GetAllTagsResp (Ok stats) ->
|
||||
@ -600,6 +623,7 @@ updateDrop ddm flags settings msg model =
|
||||
, sub = Sub.none
|
||||
, stateChange = False
|
||||
, dragDrop = DD.DragDropData ddm Nothing
|
||||
, selectionChange = Data.ItemIds.noChange
|
||||
}
|
||||
|
||||
GetAllTagsResp (Err _) ->
|
||||
@ -608,6 +632,7 @@ updateDrop ddm flags settings msg model =
|
||||
, sub = Sub.none
|
||||
, stateChange = False
|
||||
, dragDrop = DD.DragDropData ddm Nothing
|
||||
, selectionChange = Data.ItemIds.noChange
|
||||
}
|
||||
|
||||
GetStatsResp (Ok stats) ->
|
||||
@ -676,6 +701,7 @@ updateDrop ddm flags settings msg model =
|
||||
, sub = Sub.none
|
||||
, stateChange = False
|
||||
, dragDrop = DD.DragDropData ddm Nothing
|
||||
, selectionChange = Data.ItemIds.noChange
|
||||
}
|
||||
|
||||
GetStatsResp (Err _) ->
|
||||
@ -684,6 +710,7 @@ updateDrop ddm flags settings msg model =
|
||||
, sub = Sub.none
|
||||
, stateChange = False
|
||||
, dragDrop = DD.DragDropData ddm Nothing
|
||||
, selectionChange = Data.ItemIds.noChange
|
||||
}
|
||||
|
||||
GetEquipResp (Ok equips) ->
|
||||
@ -699,6 +726,7 @@ updateDrop ddm flags settings msg model =
|
||||
, sub = Sub.none
|
||||
, stateChange = False
|
||||
, dragDrop = DD.DragDropData ddm Nothing
|
||||
, selectionChange = Data.ItemIds.noChange
|
||||
}
|
||||
|
||||
GetOrgResp (Ok orgs) ->
|
||||
@ -714,6 +742,7 @@ updateDrop ddm flags settings msg model =
|
||||
, sub = Sub.none
|
||||
, stateChange = False
|
||||
, dragDrop = DD.DragDropData ddm Nothing
|
||||
, selectionChange = Data.ItemIds.noChange
|
||||
}
|
||||
|
||||
GetPersonResp (Ok ps) ->
|
||||
@ -749,6 +778,7 @@ updateDrop ddm flags settings msg model =
|
||||
, sub = Sub.none
|
||||
, stateChange = False
|
||||
, dragDrop = DD.DragDropData ddm Nothing
|
||||
, selectionChange = Data.ItemIds.noChange
|
||||
}
|
||||
|
||||
TagSelectMsg m ->
|
||||
@ -765,6 +795,7 @@ updateDrop ddm flags settings msg model =
|
||||
, sub = Sub.none
|
||||
, stateChange = sel /= model.tagSelection
|
||||
, dragDrop = ddd
|
||||
, selectionChange = Data.ItemIds.noChange
|
||||
}
|
||||
|
||||
DirectionMsg m ->
|
||||
@ -777,6 +808,7 @@ updateDrop ddm flags settings msg model =
|
||||
, sub = Sub.none
|
||||
, stateChange = isDropdownChangeMsg m
|
||||
, dragDrop = DD.DragDropData ddm Nothing
|
||||
, selectionChange = Data.ItemIds.noChange
|
||||
}
|
||||
|
||||
OrgMsg m ->
|
||||
@ -789,6 +821,7 @@ updateDrop ddm flags settings msg model =
|
||||
, sub = Sub.none
|
||||
, stateChange = isDropdownChangeMsg m
|
||||
, dragDrop = DD.DragDropData ddm Nothing
|
||||
, selectionChange = Data.ItemIds.noChange
|
||||
}
|
||||
|
||||
CorrPersonMsg m ->
|
||||
@ -801,6 +834,7 @@ updateDrop ddm flags settings msg model =
|
||||
, sub = Sub.none
|
||||
, stateChange = isDropdownChangeMsg m
|
||||
, dragDrop = DD.DragDropData ddm Nothing
|
||||
, selectionChange = Data.ItemIds.noChange
|
||||
}
|
||||
|
||||
ConcPersonMsg m ->
|
||||
@ -813,6 +847,7 @@ updateDrop ddm flags settings msg model =
|
||||
, sub = Sub.none
|
||||
, stateChange = isDropdownChangeMsg m
|
||||
, dragDrop = DD.DragDropData ddm Nothing
|
||||
, selectionChange = Data.ItemIds.noChange
|
||||
}
|
||||
|
||||
ConcEquipmentMsg m ->
|
||||
@ -825,6 +860,7 @@ updateDrop ddm flags settings msg model =
|
||||
, sub = Sub.none
|
||||
, stateChange = isDropdownChangeMsg m
|
||||
, dragDrop = DD.DragDropData ddm Nothing
|
||||
, selectionChange = Data.ItemIds.noChange
|
||||
}
|
||||
|
||||
ToggleInbox ->
|
||||
@ -837,6 +873,7 @@ updateDrop ddm flags settings msg model =
|
||||
, sub = Sub.none
|
||||
, stateChange = True
|
||||
, dragDrop = DD.DragDropData ddm Nothing
|
||||
, selectionChange = Data.ItemIds.noChange
|
||||
}
|
||||
|
||||
ToggleSearchMode ->
|
||||
@ -856,6 +893,7 @@ updateDrop ddm flags settings msg model =
|
||||
, sub = Sub.none
|
||||
, stateChange = True
|
||||
, dragDrop = DD.DragDropData ddm Nothing
|
||||
, selectionChange = Data.ItemIds.noChange
|
||||
}
|
||||
|
||||
FromDateMsg m ->
|
||||
@ -876,6 +914,7 @@ updateDrop ddm flags settings msg model =
|
||||
, sub = Sub.none
|
||||
, stateChange = model.fromDate /= nextDate
|
||||
, dragDrop = DD.DragDropData ddm Nothing
|
||||
, selectionChange = Data.ItemIds.noChange
|
||||
}
|
||||
|
||||
UntilDateMsg m ->
|
||||
@ -896,6 +935,7 @@ updateDrop ddm flags settings msg model =
|
||||
, sub = Sub.none
|
||||
, stateChange = model.untilDate /= nextDate
|
||||
, dragDrop = DD.DragDropData ddm Nothing
|
||||
, selectionChange = Data.ItemIds.noChange
|
||||
}
|
||||
|
||||
FromDueDateMsg m ->
|
||||
@ -916,6 +956,7 @@ updateDrop ddm flags settings msg model =
|
||||
, sub = Sub.none
|
||||
, stateChange = model.fromDueDate /= nextDate
|
||||
, dragDrop = DD.DragDropData ddm Nothing
|
||||
, selectionChange = Data.ItemIds.noChange
|
||||
}
|
||||
|
||||
UntilDueDateMsg m ->
|
||||
@ -936,6 +977,7 @@ updateDrop ddm flags settings msg model =
|
||||
, sub = Sub.none
|
||||
, stateChange = model.untilDueDate /= nextDate
|
||||
, dragDrop = DD.DragDropData ddm Nothing
|
||||
, selectionChange = Data.ItemIds.noChange
|
||||
}
|
||||
|
||||
SetName str ->
|
||||
@ -948,6 +990,7 @@ updateDrop ddm flags settings msg model =
|
||||
, sub = Sub.none
|
||||
, stateChange = False
|
||||
, dragDrop = DD.DragDropData ddm Nothing
|
||||
, selectionChange = Data.ItemIds.noChange
|
||||
}
|
||||
|
||||
SetTextSearch str ->
|
||||
@ -956,6 +999,7 @@ updateDrop ddm flags settings msg model =
|
||||
, sub = Sub.none
|
||||
, stateChange = False
|
||||
, dragDrop = DD.DragDropData ddm Nothing
|
||||
, selectionChange = Data.ItemIds.noChange
|
||||
}
|
||||
|
||||
SwapTextSearch ->
|
||||
@ -965,6 +1009,7 @@ updateDrop ddm flags settings msg model =
|
||||
, sub = Sub.none
|
||||
, stateChange = False
|
||||
, dragDrop = DD.DragDropData ddm Nothing
|
||||
, selectionChange = Data.ItemIds.noChange
|
||||
}
|
||||
|
||||
else
|
||||
@ -973,6 +1018,7 @@ updateDrop ddm flags settings msg model =
|
||||
, sub = Sub.none
|
||||
, stateChange = False
|
||||
, dragDrop = DD.DragDropData ddm Nothing
|
||||
, selectionChange = Data.ItemIds.noChange
|
||||
}
|
||||
|
||||
SetFulltextSearch ->
|
||||
@ -983,6 +1029,7 @@ updateDrop ddm flags settings msg model =
|
||||
, sub = Sub.none
|
||||
, stateChange = False
|
||||
, dragDrop = DD.DragDropData ddm Nothing
|
||||
, selectionChange = Data.ItemIds.noChange
|
||||
}
|
||||
|
||||
Names s ->
|
||||
@ -991,6 +1038,7 @@ updateDrop ddm flags settings msg model =
|
||||
, sub = Sub.none
|
||||
, stateChange = False
|
||||
, dragDrop = DD.DragDropData ddm Nothing
|
||||
, selectionChange = Data.ItemIds.noChange
|
||||
}
|
||||
|
||||
SetNamesSearch ->
|
||||
@ -1001,6 +1049,7 @@ updateDrop ddm flags settings msg model =
|
||||
, sub = Sub.none
|
||||
, stateChange = False
|
||||
, dragDrop = DD.DragDropData ddm Nothing
|
||||
, selectionChange = Data.ItemIds.noChange
|
||||
}
|
||||
|
||||
Names _ ->
|
||||
@ -1009,6 +1058,7 @@ updateDrop ddm flags settings msg model =
|
||||
, sub = Sub.none
|
||||
, stateChange = False
|
||||
, dragDrop = DD.DragDropData ddm Nothing
|
||||
, selectionChange = Data.ItemIds.noChange
|
||||
}
|
||||
|
||||
KeyUpMsg (Just Enter) ->
|
||||
@ -1017,6 +1067,7 @@ updateDrop ddm flags settings msg model =
|
||||
, sub = Sub.none
|
||||
, stateChange = True
|
||||
, dragDrop = DD.DragDropData ddm Nothing
|
||||
, selectionChange = Data.ItemIds.noChange
|
||||
}
|
||||
|
||||
KeyUpMsg _ ->
|
||||
@ -1025,6 +1076,7 @@ updateDrop ddm flags settings msg model =
|
||||
, sub = Sub.none
|
||||
, stateChange = False
|
||||
, dragDrop = DD.DragDropData ddm Nothing
|
||||
, selectionChange = Data.ItemIds.noChange
|
||||
}
|
||||
|
||||
FolderSelectMsg lm ->
|
||||
@ -1041,6 +1093,7 @@ updateDrop ddm flags settings msg model =
|
||||
, sub = Sub.none
|
||||
, stateChange = model.selectedFolder /= sel
|
||||
, dragDrop = ddd
|
||||
, selectionChange = Data.ItemIds.noChange
|
||||
}
|
||||
|
||||
CustomFieldMsg lm ->
|
||||
@ -1058,6 +1111,7 @@ updateDrop ddm flags settings msg model =
|
||||
, stateChange =
|
||||
Data.CustomFieldChange.isValueChange res.result
|
||||
, dragDrop = DD.DragDropData ddm Nothing
|
||||
, selectionChange = Data.ItemIds.noChange
|
||||
}
|
||||
|
||||
SetCustomField cv ->
|
||||
@ -1086,6 +1140,7 @@ updateDrop ddm flags settings msg model =
|
||||
, sub = Sub.none
|
||||
, stateChange = False
|
||||
, dragDrop = DD.DragDropData ddm Nothing
|
||||
, selectionChange = Data.ItemIds.noChange
|
||||
}
|
||||
|
||||
ResetToSource str ->
|
||||
@ -1105,6 +1160,7 @@ updateDrop ddm flags settings msg model =
|
||||
, sub = Sub.none
|
||||
, stateChange = False
|
||||
, dragDrop = DD.DragDropData ddm Nothing
|
||||
, selectionChange = Data.ItemIds.noChange
|
||||
}
|
||||
|
||||
ToggleOpenAllAkkordionTabs ->
|
||||
@ -1125,6 +1181,7 @@ updateDrop ddm flags settings msg model =
|
||||
, sub = Sub.none
|
||||
, stateChange = False
|
||||
, dragDrop = DD.DragDropData ddm Nothing
|
||||
, selectionChange = Data.ItemIds.noChange
|
||||
}
|
||||
|
||||
AllBookmarksResp (Ok bm) ->
|
||||
@ -1133,6 +1190,7 @@ updateDrop ddm flags settings msg model =
|
||||
, sub = Sub.none
|
||||
, stateChange = model.allBookmarks /= Comp.BookmarkChooser.init bm
|
||||
, dragDrop = DD.DragDropData ddm Nothing
|
||||
, selectionChange = Data.ItemIds.noChange
|
||||
}
|
||||
|
||||
AllBookmarksResp (Err _) ->
|
||||
@ -1141,6 +1199,7 @@ updateDrop ddm flags settings msg model =
|
||||
, sub = Sub.none
|
||||
, stateChange = False
|
||||
, dragDrop = DD.DragDropData ddm Nothing
|
||||
, selectionChange = Data.ItemIds.noChange
|
||||
}
|
||||
|
||||
SelectBookmarkMsg lm ->
|
||||
@ -1153,6 +1212,26 @@ updateDrop ddm flags settings msg model =
|
||||
, sub = Sub.none
|
||||
, stateChange = sel /= model.selectedBookmarks || model.allBookmarks /= next
|
||||
, dragDrop = DD.DragDropData ddm Nothing
|
||||
, selectionChange = Data.ItemIds.noChange
|
||||
}
|
||||
|
||||
SetIncludeSelection flag ->
|
||||
{ model =
|
||||
{ model | includeSelection = flag }
|
||||
, cmd = Cmd.none
|
||||
, sub = Sub.none
|
||||
, stateChange = True
|
||||
, dragDrop = DD.DragDropData ddm Nothing
|
||||
, selectionChange = Data.ItemIds.noChange
|
||||
}
|
||||
|
||||
ClearSelection ->
|
||||
{ model = { model | includeSelection = False }
|
||||
, cmd = Cmd.none
|
||||
, sub = Sub.none
|
||||
, stateChange = True
|
||||
, dragDrop = DD.DragDropData ddm Nothing
|
||||
, selectionChange = Data.ItemIds.clearAll
|
||||
}
|
||||
|
||||
|
||||
@ -1162,6 +1241,7 @@ updateDrop ddm flags settings msg model =
|
||||
|
||||
type alias ViewConfig =
|
||||
{ overrideTabLook : SearchTab -> Comp.Tabs.Look -> Comp.Tabs.Look
|
||||
, selectedItems : ItemIds
|
||||
}
|
||||
|
||||
|
||||
@ -1174,7 +1254,7 @@ viewDrop2 texts ddd flags cfg settings model =
|
||||
Comp.Tabs.akkordion
|
||||
akkordionStyle
|
||||
(searchTabState settings cfg model)
|
||||
(searchTabs texts ddd flags settings model)
|
||||
(searchTabs texts ddd flags settings cfg.selectedItems model)
|
||||
|
||||
|
||||
type SearchTab
|
||||
@ -1191,6 +1271,7 @@ type SearchTab
|
||||
| TabSource
|
||||
| TabDirection
|
||||
| TabTrashed
|
||||
| TabSelection
|
||||
|
||||
|
||||
allTabs : List SearchTab
|
||||
@ -1208,6 +1289,7 @@ allTabs =
|
||||
, TabSource
|
||||
, TabDirection
|
||||
, TabTrashed
|
||||
, TabSelection
|
||||
]
|
||||
|
||||
|
||||
@ -1253,6 +1335,9 @@ tabName tab =
|
||||
TabTrashed ->
|
||||
"trashed"
|
||||
|
||||
TabSelection ->
|
||||
"selection"
|
||||
|
||||
|
||||
findTab : Comp.Tabs.Tab msg -> Maybe SearchTab
|
||||
findTab tab =
|
||||
@ -1296,12 +1381,15 @@ findTab tab =
|
||||
"trashed" ->
|
||||
Just TabTrashed
|
||||
|
||||
"selection" ->
|
||||
Just TabSelection
|
||||
|
||||
_ ->
|
||||
Nothing
|
||||
|
||||
|
||||
tabLook : UiSettings -> Model -> SearchTab -> Comp.Tabs.Look
|
||||
tabLook settings model tab =
|
||||
tabLook : UiSettings -> ItemIds -> Model -> SearchTab -> Comp.Tabs.Look
|
||||
tabLook settings selectedItems model tab =
|
||||
let
|
||||
isHidden f =
|
||||
Data.UiSettings.fieldHidden settings f
|
||||
@ -1396,6 +1484,16 @@ tabLook settings model tab =
|
||||
TabTrashed ->
|
||||
activeWhen (model.searchMode == Data.SearchMode.Trashed)
|
||||
|
||||
TabSelection ->
|
||||
if Data.ItemIds.isEmpty selectedItems then
|
||||
Comp.Tabs.Hidden
|
||||
|
||||
else if model.includeSelection then
|
||||
Comp.Tabs.Active
|
||||
|
||||
else
|
||||
Comp.Tabs.Normal
|
||||
|
||||
_ ->
|
||||
Comp.Tabs.Normal
|
||||
|
||||
@ -1416,15 +1514,15 @@ searchTabState settings cfg model tab =
|
||||
state =
|
||||
{ folded = folded
|
||||
, look =
|
||||
Maybe.map (\t -> tabLook settings model t |> cfg.overrideTabLook t) searchTab
|
||||
Maybe.map (\t -> tabLook settings cfg.selectedItems model t |> cfg.overrideTabLook t) searchTab
|
||||
|> Maybe.withDefault Comp.Tabs.Normal
|
||||
}
|
||||
in
|
||||
( state, ToggleAkkordionTab tab.name )
|
||||
|
||||
|
||||
searchTabs : Texts -> DD.DragDropData -> Flags -> UiSettings -> Model -> List (Comp.Tabs.Tab Msg)
|
||||
searchTabs texts ddd flags settings model =
|
||||
searchTabs : Texts -> DD.DragDropData -> Flags -> UiSettings -> ItemIds -> Model -> List (Comp.Tabs.Tab Msg)
|
||||
searchTabs texts ddd flags settings selectedItems model =
|
||||
let
|
||||
isHidden f =
|
||||
Data.UiSettings.fieldHidden settings f
|
||||
@ -1477,6 +1575,40 @@ searchTabs texts ddd flags settings model =
|
||||
(Comp.BookmarkChooser.view texts.bookmarkChooser model.allBookmarks model.selectedBookmarks)
|
||||
]
|
||||
}
|
||||
, { name = tabName TabSelection
|
||||
, title = texts.selection
|
||||
, titleRight =
|
||||
[ span [ class "flex items-center rounded-full bg-blue-100 dark:bg-sky-600 text-xs px-2 py-0.5 " ]
|
||||
[ text (String.fromInt (Data.ItemIds.size selectedItems)) ]
|
||||
]
|
||||
, info = Nothing
|
||||
, body =
|
||||
[ div [ class "flex flex-col ml-1" ]
|
||||
[ a
|
||||
[ class "flex flex-row items-center"
|
||||
, class "rounded px-1 py-1 hover:bg-blue-100 dark:hover:bg-slate-600"
|
||||
, href "#"
|
||||
, Html.Events.onClick (SetIncludeSelection (not model.includeSelection))
|
||||
]
|
||||
[ if model.includeSelection then
|
||||
i [ class "fa fa-check mr-2" ] []
|
||||
|
||||
else
|
||||
i [ class "fa fa-list mr-2" ] []
|
||||
, text "Show selection"
|
||||
]
|
||||
, a
|
||||
[ class "flex flex-row items-center"
|
||||
, class "rounded px-1 py-1 hover:bg-blue-100 dark:hover:bg-slate-600"
|
||||
, href "#"
|
||||
, Html.Events.onClick ClearSelection
|
||||
]
|
||||
[ i [ class "fa fa-times mr-2" ] []
|
||||
, text "Clear selection"
|
||||
]
|
||||
]
|
||||
]
|
||||
}
|
||||
, { name = tabName TabTags
|
||||
, title = texts.basics.tags
|
||||
, titleRight = []
|
||||
|
Reference in New Issue
Block a user