mirror of
https://github.com/TheAnachronism/docspell.git
synced 2025-03-29 02:05:07 +00:00
Allow to enable/disable keyboard navigation in user settings
This commit is contained in:
parent
5b56ea881c
commit
02a0343e55
@ -41,7 +41,7 @@ view inav settings model =
|
||||
div
|
||||
[]
|
||||
[ renderItemInfo settings model
|
||||
, renderDetailMenu inav model
|
||||
, renderDetailMenu settings inav model
|
||||
, renderMailForm settings model
|
||||
, renderAddFilesForm model
|
||||
, div [ class "ui grid" ]
|
||||
@ -90,8 +90,16 @@ view inav settings model =
|
||||
--- Helper
|
||||
|
||||
|
||||
renderDetailMenu : ItemNav -> Model -> Html Msg
|
||||
renderDetailMenu inav model =
|
||||
renderDetailMenu : UiSettings -> ItemNav -> Model -> Html Msg
|
||||
renderDetailMenu settings inav model =
|
||||
let
|
||||
keyDescr name =
|
||||
if settings.itemDetailShortcuts && model.menuOpen then
|
||||
" Key '" ++ name ++ "'."
|
||||
|
||||
else
|
||||
""
|
||||
in
|
||||
div
|
||||
[ classList
|
||||
[ ( "ui ablue-comp menu", True )
|
||||
@ -112,7 +120,7 @@ renderDetailMenu inav model =
|
||||
, Maybe.map ItemDetailPage inav.prev
|
||||
|> Maybe.map Page.href
|
||||
|> Maybe.withDefault (href "#")
|
||||
, title "Previous item. Key 'Ctrl-,'"
|
||||
, title ("Previous item." ++ keyDescr "Ctrl-,")
|
||||
]
|
||||
[ i [ class "caret square left outline icon" ] []
|
||||
]
|
||||
@ -124,7 +132,7 @@ renderDetailMenu inav model =
|
||||
, Maybe.map ItemDetailPage inav.next
|
||||
|> Maybe.map Page.href
|
||||
|> Maybe.withDefault (href "#")
|
||||
, title "Next item. Key 'Ctrl-.'"
|
||||
, title ("Next item." ++ keyDescr "Ctrl-.")
|
||||
]
|
||||
[ i [ class "caret square right outline icon" ] []
|
||||
]
|
||||
@ -708,22 +716,36 @@ renderTags settings model =
|
||||
renderEditMenu : UiSettings -> Model -> List (Html Msg)
|
||||
renderEditMenu settings model =
|
||||
[ Html.map ModalEditMsg (Comp.DetailEdit.viewModal settings model.modalEdit)
|
||||
, div (Comp.KeyInput.eventsM KeyInputMsg)
|
||||
[ renderEditButtons model
|
||||
, div
|
||||
(if settings.itemDetailShortcuts then
|
||||
Comp.KeyInput.eventsM KeyInputMsg
|
||||
|
||||
else
|
||||
[]
|
||||
)
|
||||
[ renderEditButtons settings model
|
||||
, renderEditForm settings model
|
||||
]
|
||||
]
|
||||
|
||||
|
||||
renderEditButtons : Model -> Html Msg
|
||||
renderEditButtons model =
|
||||
renderEditButtons : UiSettings -> Model -> Html Msg
|
||||
renderEditButtons settings model =
|
||||
let
|
||||
keyDescr name =
|
||||
if settings.itemDetailShortcuts then
|
||||
" Key '" ++ name ++ "'."
|
||||
|
||||
else
|
||||
""
|
||||
in
|
||||
div [ class "ui top attached icon ablue-comp menu" ]
|
||||
[ a
|
||||
[ classList
|
||||
[ ( "borderless item", True )
|
||||
, ( "invisible", model.item.state /= "created" )
|
||||
]
|
||||
, title "Confirm metadata. Key 'Ctrl-c'."
|
||||
, title ("Confirm metadata." ++ keyDescr "Ctrl-c")
|
||||
, href "#"
|
||||
, onClick ConfirmItem
|
||||
]
|
||||
@ -735,7 +757,7 @@ renderEditButtons model =
|
||||
, ( "invisible", model.item.state /= "confirmed" )
|
||||
]
|
||||
, href "#"
|
||||
, title "Unconfirm metadata. Key 'Ctrl-c'."
|
||||
, title ("Unconfirm metadata." ++ keyDescr "Ctrl-c")
|
||||
, onClick UnconfirmItem
|
||||
]
|
||||
[ i [ class "eye slash outline icon" ] []
|
||||
|
@ -39,6 +39,7 @@ type alias Model =
|
||||
, searchMenuTagCatCount : Maybe Int
|
||||
, searchMenuTagCatCountModel : Comp.IntField.Model
|
||||
, formFields : List Field
|
||||
, itemDetailShortcuts : Bool
|
||||
}
|
||||
|
||||
|
||||
@ -87,6 +88,7 @@ init flags settings =
|
||||
False
|
||||
"Number of categories in search menu"
|
||||
, formFields = settings.formFields
|
||||
, itemDetailShortcuts = settings.itemDetailShortcuts
|
||||
}
|
||||
, Api.getTags flags "" GetTagsResp
|
||||
)
|
||||
@ -103,6 +105,7 @@ type Msg
|
||||
| SearchMenuTagMsg Comp.IntField.Msg
|
||||
| SearchMenuTagCatMsg Comp.IntField.Msg
|
||||
| FieldListMsg Comp.FieldListSelect.Msg
|
||||
| ToggleItemDetailShortcuts
|
||||
|
||||
|
||||
|
||||
@ -261,6 +264,15 @@ update sett msg model =
|
||||
Nothing
|
||||
)
|
||||
|
||||
ToggleItemDetailShortcuts ->
|
||||
let
|
||||
flag =
|
||||
not model.itemDetailShortcuts
|
||||
in
|
||||
( { model | itemDetailShortcuts = flag }
|
||||
, Just { sett | itemDetailShortcuts = flag }
|
||||
)
|
||||
|
||||
|
||||
|
||||
--- View
|
||||
@ -342,6 +354,19 @@ view flags _ model =
|
||||
]
|
||||
]
|
||||
]
|
||||
, div [ class "field" ]
|
||||
[ div [ class "ui checkbox" ]
|
||||
[ input
|
||||
[ type_ "checkbox"
|
||||
, onCheck (\_ -> ToggleItemDetailShortcuts)
|
||||
, checked model.itemDetailShortcuts
|
||||
]
|
||||
[]
|
||||
, label []
|
||||
[ text "Use keyboard shortcuts for navigation and confirm/unconfirm with open edit menu."
|
||||
]
|
||||
]
|
||||
]
|
||||
, div [ class "grouped fields" ]
|
||||
[ label [] [ text "Position of item notes" ]
|
||||
, div [ class "field" ]
|
||||
|
@ -40,6 +40,7 @@ type alias StoredUiSettings =
|
||||
, searchMenuTagCount : Maybe Int
|
||||
, searchMenuTagCatCount : Maybe Int
|
||||
, formFields : Maybe (List String)
|
||||
, itemDetailShortcuts : Bool
|
||||
}
|
||||
|
||||
|
||||
@ -60,6 +61,7 @@ type alias UiSettings =
|
||||
, searchMenuTagCount : Int
|
||||
, searchMenuTagCatCount : Int
|
||||
, formFields : List Field
|
||||
, itemDetailShortcuts : Bool
|
||||
}
|
||||
|
||||
|
||||
@ -102,6 +104,7 @@ defaults =
|
||||
, searchMenuTagCount = 6
|
||||
, searchMenuTagCatCount = 3
|
||||
, formFields = Data.Fields.all
|
||||
, itemDetailShortcuts = False
|
||||
}
|
||||
|
||||
|
||||
@ -134,6 +137,7 @@ merge given fallback =
|
||||
choose
|
||||
(Maybe.map Data.Fields.fromList given.formFields)
|
||||
fallback.formFields
|
||||
, itemDetailShortcuts = given.itemDetailShortcuts
|
||||
}
|
||||
|
||||
|
||||
@ -157,6 +161,7 @@ toStoredUiSettings settings =
|
||||
, formFields =
|
||||
List.map Data.Fields.toString settings.formFields
|
||||
|> Just
|
||||
, itemDetailShortcuts = settings.itemDetailShortcuts
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user