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