mirror of
https://github.com/usebruno/bruno.git
synced 2026-07-09 06:55:03 +00:00
feat(phase-1): allow user to customize keybindings (#7163)
* feat(phase-1): allow user to customize keybindings * fix: necessary changes for customizied keybindings to work * fix: updated hotkeys provider * fix: test cases for edit keybindings in preferences * fix: removed old keyboard shortcuts test cases * fix: resolved coderabbit coments * fix: fixed move tabs test cases * feat: provided customized keybindings shorcut for codemirror instacnces * fix: handle closetabs/closeAllTabs in RequestTab/index.js for better consitency * fix: resolved comments * fix: resolved zoom issues * fix: revert codemirror instacnces * fix: handle codemirror instances shortcut in .Pass * feat: integrate shorcut keys with codemirror instacneces * fix: ui updates * fix: updated shortcuts * fix: test cases * chore: revert `alt-enter` keybind * chore: allow jest to replace esm spec in store * chore: lint whitespace fix --------- Co-authored-by: shubh-bruno <shubh-bruno@shubh-bruno.local>
This commit is contained in:
@@ -7,6 +7,7 @@ import { setupAutoComplete } from 'utils/codemirror/autocomplete';
|
||||
import StyledWrapper from './StyledWrapper';
|
||||
import { IconEye, IconEyeOff } from '@tabler/icons';
|
||||
import { setupLinkAware } from 'utils/codemirror/linkAware';
|
||||
import { setupShortcuts } from 'utils/codemirror/shortcuts';
|
||||
|
||||
const CodeMirror = require('codemirror');
|
||||
|
||||
@@ -21,8 +22,11 @@ class SingleLineEditor extends Component {
|
||||
this.variables = {};
|
||||
this.readOnly = props.readOnly || false;
|
||||
|
||||
// Shortcuts cleanup function
|
||||
this._shortcutsCleanup = null;
|
||||
|
||||
this.state = {
|
||||
maskInput: props.isSecret || false // Always mask the input by default (if it's a secret)
|
||||
maskInput: props.isSecret || false
|
||||
};
|
||||
}
|
||||
|
||||
@@ -59,8 +63,8 @@ class SingleLineEditor extends Component {
|
||||
readOnly: this.props.readOnly,
|
||||
extraKeys: {
|
||||
'Enter': runHandler,
|
||||
'Ctrl-Enter': runHandler,
|
||||
'Cmd-Enter': runHandler,
|
||||
// 'Ctrl-Enter': runHandler,
|
||||
// 'Cmd-Enter': runHandler,
|
||||
'Alt-Enter': () => {
|
||||
if (this.props.allowNewlines) {
|
||||
this.editor.setValue(this.editor.getValue() + '\n');
|
||||
@@ -69,7 +73,7 @@ class SingleLineEditor extends Component {
|
||||
this.props.onRun();
|
||||
}
|
||||
},
|
||||
'Shift-Enter': runHandler,
|
||||
// 'Shift-Enter': runHandler,
|
||||
'Cmd-S': saveHandler,
|
||||
'Ctrl-S': saveHandler,
|
||||
'Cmd-F': noopHandler,
|
||||
@@ -108,6 +112,9 @@ class SingleLineEditor extends Component {
|
||||
this._updateNewlineMarkers();
|
||||
}
|
||||
setupLinkAware(this.editor);
|
||||
|
||||
// Setup keyboard shortcuts using the dedicated utility
|
||||
this._shortcutsCleanup = setupShortcuts(this.editor, this);
|
||||
}
|
||||
|
||||
/** Enable or disable masking the rendered content of the editor */
|
||||
@@ -202,6 +209,12 @@ class SingleLineEditor extends Component {
|
||||
}
|
||||
|
||||
componentWillUnmount() {
|
||||
// Cleanup shortcuts (keymap and store subscription)
|
||||
if (this._shortcutsCleanup) {
|
||||
this._shortcutsCleanup();
|
||||
this._shortcutsCleanup = null;
|
||||
}
|
||||
|
||||
if (this.editor) {
|
||||
if (this.editor?._destroyLinkAware) {
|
||||
this.editor._destroyLinkAware();
|
||||
|
||||
Reference in New Issue
Block a user