From d7d5820c1c118cbaec8dd12dd8a3107530e96f0d Mon Sep 17 00:00:00 2001 From: Jed Fox <git@jedfox.com> Date: Mon, 10 Apr 2023 08:36:02 -0400 Subject: [PATCH] Recognize numpad enter key as enter key (#883) --- .../src/browser-preload.browser.js | 4 ++-- .../desktop-client/src/components/GlobalKeys.js | 10 +++++----- .../src/components/accounts/TransactionsTable.js | 6 +++--- .../src/components/autocomplete/Autocomplete.js | 4 ++-- .../components/autocomplete/NewAutocomplete.tsx | 2 +- .../desktop-client/src/components/budget/misc.js | 6 +++--- .../budget/rollover/rollover-components.js | 2 +- packages/desktop-client/src/components/common.js | 4 ++-- .../src/components/select/DateSelect.js | 8 ++++---- packages/desktop-client/src/components/table.js | 16 ++++++++-------- .../desktop-client/src/components/tooltips.js | 2 +- upcoming-release-notes/883.md | 6 ++++++ 12 files changed, 38 insertions(+), 32 deletions(-) create mode 100644 upcoming-release-notes/883.md diff --git a/packages/desktop-client/src/browser-preload.browser.js b/packages/desktop-client/src/browser-preload.browser.js index 4909bd6d9..6d9f70521 100644 --- a/packages/desktop-client/src/browser-preload.browser.js +++ b/packages/desktop-client/src/browser-preload.browser.js @@ -119,12 +119,12 @@ global.Actual = { document.addEventListener('keydown', e => { if (e.metaKey || e.ctrlKey) { // Cmd/Ctrl+o - if (e.code === 'KeyO') { + if (e.key === 'O') { e.preventDefault(); window.__actionsForMenu.closeBudget(); } // Cmd/Ctrl+z - else if (e.code === 'KeyZ') { + else if (e.key === 'Z') { if ( e.target.tagName === 'INPUT' || e.target.tagName === 'TEXTAREA' || diff --git a/packages/desktop-client/src/components/GlobalKeys.js b/packages/desktop-client/src/components/GlobalKeys.js index 61b413b1e..63b6a58fc 100644 --- a/packages/desktop-client/src/components/GlobalKeys.js +++ b/packages/desktop-client/src/components/GlobalKeys.js @@ -12,17 +12,17 @@ export default function GlobalKeys() { } if (e.metaKey) { - switch (e.code) { - case 'Digit1': + switch (e.key) { + case '1': history.push('/budget'); break; - case 'Digit2': + case '2': history.push('/reports'); break; - case 'Digit3': + case '3': history.push('/accounts'); break; - case 'Comma': + case ',': if (Platform.OS === 'mac') { history.push('/settings'); } diff --git a/packages/desktop-client/src/components/accounts/TransactionsTable.js b/packages/desktop-client/src/components/accounts/TransactionsTable.js index fc334eac7..37f520618 100644 --- a/packages/desktop-client/src/components/accounts/TransactionsTable.js +++ b/packages/desktop-client/src/components/accounts/TransactionsTable.js @@ -1159,7 +1159,7 @@ function NewTransaction({ }} data-testid="new-transaction" onKeyDown={e => { - if (e.code === 'Escape') { + if (e.key === 'Escape') { onClose(); } }} @@ -1590,7 +1590,7 @@ export let TransactionTable = React.forwardRef((props, ref) => { } function onCheckNewEnter(e) { - if (e.code === 'Enter') { + if (e.key === 'Enter') { if (e.metaKey) { e.stopPropagation(); onAddTemporary(); @@ -1634,7 +1634,7 @@ export let TransactionTable = React.forwardRef((props, ref) => { } function onCheckEnter(e) { - if (e.code === 'Enter' && !e.shiftKey) { + if (e.key === 'Enter' && !e.shiftKey) { let { editingId: id, focusedField } = tableNavigator; afterSave(() => { diff --git a/packages/desktop-client/src/components/autocomplete/Autocomplete.js b/packages/desktop-client/src/components/autocomplete/Autocomplete.js index 7a9543630..fee1ea234 100644 --- a/packages/desktop-client/src/components/autocomplete/Autocomplete.js +++ b/packages/desktop-client/src/components/autocomplete/Autocomplete.js @@ -332,7 +332,7 @@ function onKeyDown( // If the dropdown is open, an item is highlighted, and the user // pressed enter, always capture that and handle it ourselves if (isOpen) { - if (e.code === 'Enter') { + if (e.key === 'Enter') { if (highlightedIndex != null) { if (inst.lastChangeType === Downshift.stateChangeTypes.itemMouseEnter) { // If the last thing the user did was hover an item, intentionally @@ -362,7 +362,7 @@ function onKeyDown( } // Handle escape ourselves - if (e.code === 'Escape') { + if (e.key === 'Escape') { e.preventDefault(); if (!embedded) { diff --git a/packages/desktop-client/src/components/autocomplete/NewAutocomplete.tsx b/packages/desktop-client/src/components/autocomplete/NewAutocomplete.tsx index 9dc3d56ff..163817958 100644 --- a/packages/desktop-client/src/components/autocomplete/NewAutocomplete.tsx +++ b/packages/desktop-client/src/components/autocomplete/NewAutocomplete.tsx @@ -112,7 +112,7 @@ const Autocomplete = React.forwardRef<SelectInstance, AutocompleteProps>( }; const onKeyDown: AutocompleteProps['onKeyDown'] = event => { - if (event.code === 'Escape') { + if (event.key === 'Escape') { onSelect( isSingleValue(initialValue) ? initialValue?.value diff --git a/packages/desktop-client/src/components/budget/misc.js b/packages/desktop-client/src/components/budget/misc.js index b5dfd75bd..afaade835 100644 --- a/packages/desktop-client/src/components/budget/misc.js +++ b/packages/desktop-client/src/components/budget/misc.js @@ -138,7 +138,7 @@ export class BudgetTable extends React.Component { return null; } - if (e.code === 'Enter' || e.code === 'Tab') { + if (e.key === 'Enter' || e.key === 'Tab') { e.preventDefault(); this.moveVertically(e.shiftKey ? -1 : 1); } @@ -392,7 +392,7 @@ export function SidebarCategory({ style, ]} onKeyDown={e => { - if (e.code === 'Enter') { + if (e.key === 'Enter') { onEditName(null); e.stopPropagation(); } @@ -547,7 +547,7 @@ export function SidebarGroup({ }, ]} onKeyDown={e => { - if (e.code === 'Enter') { + if (e.key === 'Enter') { onEdit(null); e.stopPropagation(); } diff --git a/packages/desktop-client/src/components/budget/rollover/rollover-components.js b/packages/desktop-client/src/components/budget/rollover/rollover-components.js index 15533501b..57496c283 100644 --- a/packages/desktop-client/src/components/budget/rollover/rollover-components.js +++ b/packages/desktop-client/src/components/budget/rollover/rollover-components.js @@ -78,7 +78,7 @@ function CoverTooltip({ inputProps={{ inputRef: node, onKeyDown: e => { - if (e.code === 'Enter') { + if (e.key === 'Enter') { submit(); } }, diff --git a/packages/desktop-client/src/components/common.js b/packages/desktop-client/src/components/common.js index 9217df639..f3ffc1c38 100644 --- a/packages/desktop-client/src/components/common.js +++ b/packages/desktop-client/src/components/common.js @@ -349,7 +349,7 @@ export function Input({ )} {...nativeProps} onKeyDown={e => { - if (e.code === 'Enter' && onEnter) { + if (e.key === 'Enter' && onEnter) { onEnter(e); } @@ -563,7 +563,7 @@ export function Menu({ header, footer, items: allItems, onMenuSelect }) { let transformIndex = idx => items.indexOf(filteredItems[idx]); - switch (e.code) { + switch (e.key) { case 'ArrowUp': e.preventDefault(); setHoveredIndex( diff --git a/packages/desktop-client/src/components/select/DateSelect.js b/packages/desktop-client/src/components/select/DateSelect.js index adec9847a..d857b8cf8 100644 --- a/packages/desktop-client/src/components/select/DateSelect.js +++ b/packages/desktop-client/src/components/select/DateSelect.js @@ -75,7 +75,7 @@ export let DatePicker = React.forwardRef( () => ({ handleInputKeyDown(e) { let newDate = null; - switch (e.code) { + switch (e.key) { case 'ArrowLeft': e.preventDefault(); newDate = d.subDays(picker.current.getDate(), 1); @@ -140,7 +140,7 @@ export let DatePicker = React.forwardRef( ); function defaultShouldSaveFromKey(e) { - return e.code === 'Enter'; + return e.key === 'Enter'; } export default function DateSelect({ @@ -224,14 +224,14 @@ export default function DateSelect({ function onKeyDown(e) { if ( - ['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown'].includes(e.code) && + ['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown'].includes(e.key) && !e.shiftKey && !e.metaKey && !e.altKey && open ) { picker.current.handleInputKeyDown(e); - } else if (e.code === 'Escape') { + } else if (e.key === 'Escape') { setValue(parsedDefaultValue); setSelectedValue(parsedDefaultValue); diff --git a/packages/desktop-client/src/components/table.js b/packages/desktop-client/src/components/table.js index 3bb990135..8bdbc28c7 100644 --- a/packages/desktop-client/src/components/table.js +++ b/packages/desktop-client/src/components/table.js @@ -324,11 +324,11 @@ function InputValue({ value: defaultValue, onUpdate, onBlur, ...props }) { function onKeyDown(e) { // Only enter and tab to escape (which allows the user to move // around) - if (e.code !== 'Enter' && e.code !== 'Tab') { + if (e.key !== 'Enter' && e.key !== 'Tab') { e.stopPropagation(); } - if (e.code === 'Escape') { + if (e.key === 'Escape') { if (value !== defaultValue) { setValue(defaultValue); } @@ -389,7 +389,7 @@ export function InputCell({ } export function shouldSaveFromKey(e) { - switch (e.code) { + switch (e.key) { case 'Tab': case 'Enter': e.preventDefault(); @@ -486,7 +486,7 @@ export const CellButton = React.forwardRef( className="cell-button" tabIndex="0" onKeyDown={e => { - if (e.code === 'KeyX' || e.code === 'Space') { + if (e.key === 'X' || e.key === ' ') { e.preventDefault(); if (!disabled) { onSelect && onSelect(); @@ -1127,16 +1127,16 @@ export function useTableNavigator(data, fields) { return; } - switch (e.code) { + switch (e.key) { case 'ArrowUp': - case 'KeyK': + case 'K': if (e.target.tagName !== 'INPUT') { onMove('up'); } break; case 'ArrowDown': - case 'KeyJ': + case 'J': if (e.target.tagName !== 'INPUT') { onMove('down'); } @@ -1148,7 +1148,7 @@ export function useTableNavigator(data, fields) { e.stopPropagation(); onMove( - e.code === 'Enter' + e.key === 'Enter' ? e.shiftKey ? 'up' : 'down' diff --git a/packages/desktop-client/src/components/tooltips.js b/packages/desktop-client/src/components/tooltips.js index 561424c5c..6c63cba6f 100644 --- a/packages/desktop-client/src/components/tooltips.js +++ b/packages/desktop-client/src/components/tooltips.js @@ -60,7 +60,7 @@ export class Tooltip extends React.Component { }; let escHandler = e => { - if (e.code === 'Escape') { + if (e.key === 'Escape') { this.props.onClose && this.props.onClose(); } }; diff --git a/upcoming-release-notes/883.md b/upcoming-release-notes/883.md new file mode 100644 index 000000000..0c6aea867 --- /dev/null +++ b/upcoming-release-notes/883.md @@ -0,0 +1,6 @@ +--- +category: Bugfix +authors: [j-f1] +--- + +Recognize numpad enter key as enter key -- GitLab