feat: Allow users to select Cmd+Enter as a hotkey (#4401)

Co-authored-by: Pranav Raj S <pranav@chatwoot.com>
This commit is contained in:
Sivin Varghese
2022-10-04 03:57:34 +05:30
committed by GitHub
parent 9ea43a2678
commit beedfc47bf
14 changed files with 344 additions and 93 deletions

View File

@@ -10,6 +10,10 @@ export const hasPressedShift = e => {
return e.shiftKey;
};
export const hasPressedCommand = e => {
return e.metaKey;
};
export const hasPressedCommandAndEnter = e => {
return e.metaKey && e.keyCode === 13;
};
@@ -89,3 +93,25 @@ export const hasPressedArrowDownKey = e => {
export const hasPressedCommandPlusKKey = e => {
return e.metaKey && e.keyCode === 75;
};
export const buildHotKeys = e => {
const key = e.key.toLowerCase();
if (['shift', 'meta', 'alt', 'control'].includes(key)) {
return key;
}
let hotKeyPattern = '';
if (e.altKey) {
hotKeyPattern += 'alt+';
}
if (e.ctrlKey) {
hotKeyPattern += 'ctrl+';
}
if (e.metaKey && !e.ctrlKey) {
hotKeyPattern += 'meta+';
}
if (e.shiftKey) {
hotKeyPattern += 'shift+';
}
hotKeyPattern += key;
return hotKeyPattern;
};

View File

@@ -1,4 +1,10 @@
import { isEnter, isEscape, hasPressedShift } from '../KeyboardHelpers';
import {
isEnter,
isEscape,
hasPressedShift,
hasPressedCommand,
buildHotKeys,
} from '../KeyboardHelpers';
describe('#KeyboardHelpers', () => {
describe('#isEnter', () => {
@@ -18,4 +24,18 @@ describe('#KeyboardHelpers', () => {
expect(hasPressedShift({ shiftKey: true })).toEqual(true);
});
});
describe('#hasPressedCommand', () => {
it('return correct values', () => {
expect(hasPressedCommand({ metaKey: true })).toEqual(true);
});
});
describe('#buildHotKeys', () => {
it('returns hot keys', () => {
expect(buildHotKeys({ altKey: true, key: 'alt' })).toEqual('alt');
expect(buildHotKeys({ ctrlKey: true, key: 'a' })).toEqual('ctrl+a');
expect(buildHotKeys({ metaKey: true, key: 'b' })).toEqual('meta+b');
});
});
});