diff --git a/packages/insomnia/src/ui/components/key-value-editor/key-value-editor.tsx b/packages/insomnia/src/ui/components/key-value-editor/key-value-editor.tsx index b548346af7b..d2be3e3f230 100644 --- a/packages/insomnia/src/ui/components/key-value-editor/key-value-editor.tsx +++ b/packages/insomnia/src/ui/components/key-value-editor/key-value-editor.tsx @@ -13,6 +13,12 @@ import { Icon } from '../icon'; import { showModal } from '../modals'; import { CodePromptModal } from '../modals/code-prompt-modal'; +function isCodeMirrorAutocompleteActive() { + const codeMirrorAutocomplete = document.querySelector('.CodeMirror-hints'); + + return codeMirrorAutocomplete && document.body.contains(codeMirrorAutocomplete); +} + const EditableOneLineEditorModal = ({ id, defaultValue, @@ -53,10 +59,15 @@ const EditableOneLineEditorModal = ({ onResize: onResize, }); + const editorContainerRef = useRef(null); + return ( { + if (isCodeMirrorAutocompleteActive()) { + return; + } setIsOpen(isOpen); if (!isOpen) { onChange(value); @@ -64,7 +75,7 @@ const EditableOneLineEditorModal = ({ } })} > -
{ editorRef.current?.focusEnd(); @@ -170,7 +183,7 @@ export const KeyValueEditor: FC = ({ getKey: item => item.id, }); - const items = pairsList.items.length > 0 ? pairsList.items : [{ id: generateId('pair'), name: '', value: '', description: '', disabled: false }]; + const items = pairsList.items.length > 0 ? pairsList.items : [{ id: 'pair-empty', name: '', value: '', description: '', disabled: false }]; const readOnlyPairsList = useListData({ initialItems: readOnlyPairs?.map(pair => { @@ -185,7 +198,8 @@ export const KeyValueEditor: FC = ({ pairsList.update(pair.id, pair); onChange(pairsList.items.map(item => (item.id === pair.id ? pair : item))); } else { - pairsList.append(pair); + const id = pair.id === 'pair-empty' ? generateId('pair') : pair.id; + pairsList.append({ ...pair, id }); onChange(pairsList.items.concat(pair)); } @@ -513,7 +527,7 @@ export const KeyValueEditor: FC = ({