mirror of
				https://github.com/TheAnachronism/docspell.git
				synced 2025-10-31 17:50:11 +00:00 
			
		
		
		
	Allow to enable/disable keyboard navigation in user settings
This commit is contained in:
		| @@ -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 | ||||
|     } | ||||
|  | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user