diff --git a/src/settings/__tests__/settings.browser.test.mjs b/src/settings/__tests__/settings.browser.test.mjs index 19dafe5d..edd9107a 100644 --- a/src/settings/__tests__/settings.browser.test.mjs +++ b/src/settings/__tests__/settings.browser.test.mjs @@ -85,12 +85,15 @@ describe('Settings in Browser test suite', () => { await waitFor(() => expect($input.value).toBe('A')); expect($tabContainer.childElementCount).toBe(2); }); - describe('keydown event, Enter key with URLS', () => { + describe.each([ + 'Enter', + 'NumpadEnter' + ])('keydown event, "%s" key with URLS', code => { test('Empty URL, should do nothing', async () => { // Given fireEvent.input($input, {target: {value: ''}}); // When - fireEvent.keyDown($input, {code: 'Enter'}); + fireEvent.keyDown($input, {code}); // Then expect($tabContainer.childElementCount).toBe(2); expect($addTabButton.hasAttribute('disabled')).toBe(true); @@ -100,7 +103,7 @@ describe('Settings in Browser test suite', () => { // Given fireEvent.input($input, {target: {value: 'invalid:1337:url'}}); // When - fireEvent.keyDown($input, {code: 'Enter'}); + fireEvent.keyDown($input, {code}); // Then expect($tabContainer.childElementCount).toBe(2); await waitFor(() => @@ -114,7 +117,7 @@ describe('Settings in Browser test suite', () => { // Given fireEvent.input($input, {target: {value: 'info.cern.ch'}}); // When - fireEvent.keyDown($input, {code: 'Enter'}); + fireEvent.keyDown($input, {code}); // Then await waitFor(() => expect($tabContainer.childElementCount).toBe(3)); @@ -129,7 +132,7 @@ describe('Settings in Browser test suite', () => { // Given fireEvent.input($input, {target: {value: 'http://info.cern.ch'}}); // When - fireEvent.keyDown($input, {code: 'Enter'}); + fireEvent.keyDown($input, {code}); // Then await waitFor(() => expect($tabContainer.childElementCount).toBe(3)); diff --git a/src/settings/settings.browser.mjs b/src/settings/settings.browser.mjs index 93d6cf73..46ecb0da 100644 --- a/src/settings/settings.browser.mjs +++ b/src/settings/settings.browser.mjs @@ -17,7 +17,7 @@ const {ipcRenderer} = window; import {APP_EVENTS, html, render, useReducer, Checkbox, IconButton, TopAppBar} from '../components/index.mjs'; import { - ACTIONS, reducer, dictionariesEnabled, setTabProperty, toggleTabProperty + ACTIONS, reducer, addTab, dictionariesEnabled, setTabProperty, toggleTabProperty } from './settings.reducer.browser.mjs'; import { OtherContainer @@ -106,10 +106,10 @@ const Settings = ({initialState}) => { type: ACTIONS.UPDATE_NEW_TAB_VALUE, payload: value }); - const addTab = () => dispatch({type: ACTIONS.ADD}); + const onAddTab = addTab({dispatch}); const onNewKeyDown = ({code}) => { - if (code === 'Enter') { - addTab(); + if (code === 'Enter' || code === 'NumpadEnter') { + onAddTab(); } }; const save = () => ipcRenderer.send(APP_EVENTS.settingsSave, { @@ -140,7 +140,7 @@ const Settings = ({initialState}) => { onkeydown=${onNewKeyDown} /> - <${SettingsButton} icon='fa-plus' onClick=${addTab} disabled=${!state.newTabValid} /> + <${SettingsButton} icon='fa-plus' onClick=${onAddTab} disabled=${!state.newTabValid} />
${state.tabs.map(tab => (html` diff --git a/src/settings/settings.reducer.browser.mjs b/src/settings/settings.reducer.browser.mjs index 312da3d7..fca8c1e3 100644 --- a/src/settings/settings.reducer.browser.mjs +++ b/src/settings/settings.reducer.browser.mjs @@ -143,6 +143,8 @@ export const reducer = (state, action) => { }; // Action creators +export const addTab = ({dispatch}) => + () => dispatch({type: ACTIONS.ADD}); export const setTabProperty = ({dispatch, property, value, id}) => dispatch({type: ACTIONS.SET_TAB_PROPERTY, payload: {id, property, value}}); export const setTheme = ({dispatch}) =>