mirror of
https://github.com/pgadmin-org/pgadmin4.git
synced 2025-02-25 18:55:31 -06:00
Fixed an issue where pgAdmin is crashing if the user find/replace in the query tool multiple time. #5249
This commit is contained in:
parent
d13ee8db29
commit
9acc59d099
@ -135,8 +135,8 @@ export const CodeMirrorInstancType = PropTypes.shape({
|
|||||||
getSelection: PropTypes.func,
|
getSelection: PropTypes.func,
|
||||||
});
|
});
|
||||||
|
|
||||||
export function FindDialog({editor, show, replace, onClose}) {
|
export function FindDialog({editor, show, replace, onClose, selFindVal}) {
|
||||||
const [findVal, setFindVal] = useState('');
|
const [findVal, setFindVal] = useState(selFindVal);
|
||||||
const [replaceVal, setReplaceVal] = useState('');
|
const [replaceVal, setReplaceVal] = useState('');
|
||||||
const [useRegex, setUseRegex] = useState(false);
|
const [useRegex, setUseRegex] = useState(false);
|
||||||
const [matchCase, setMatchCase] = useState(false);
|
const [matchCase, setMatchCase] = useState(false);
|
||||||
@ -147,12 +147,6 @@ export function FindDialog({editor, show, replace, onClose}) {
|
|||||||
|
|
||||||
const search = ()=>{
|
const search = ()=>{
|
||||||
if(editor) {
|
if(editor) {
|
||||||
// Get selected text from editor and set it to find/replace input.
|
|
||||||
let selText = editor.getSelection();
|
|
||||||
if(selText.length != 0) {
|
|
||||||
setFindVal(selText);
|
|
||||||
}
|
|
||||||
|
|
||||||
let query = parseQuery(findVal, useRegex, matchCase);
|
let query = parseQuery(findVal, useRegex, matchCase);
|
||||||
if(!query) return;
|
if(!query) return;
|
||||||
|
|
||||||
@ -170,6 +164,11 @@ export function FindDialog({editor, show, replace, onClose}) {
|
|||||||
|
|
||||||
useEffect(()=>{
|
useEffect(()=>{
|
||||||
if(show) {
|
if(show) {
|
||||||
|
// Get selected text from editor and set it to find/replace input.
|
||||||
|
let selText = editor.getSelection();
|
||||||
|
if(selText.length != 0) {
|
||||||
|
setFindVal(selText);
|
||||||
|
}
|
||||||
findInputRef.current && findInputRef.current.select();
|
findInputRef.current && findInputRef.current.select();
|
||||||
search();
|
search();
|
||||||
}
|
}
|
||||||
@ -299,6 +298,7 @@ FindDialog.propTypes = {
|
|||||||
show: PropTypes.bool,
|
show: PropTypes.bool,
|
||||||
replace: PropTypes.bool,
|
replace: PropTypes.bool,
|
||||||
onClose: PropTypes.func,
|
onClose: PropTypes.func,
|
||||||
|
selFindVal: PropTypes.string,
|
||||||
};
|
};
|
||||||
|
|
||||||
export function CopyButton({show, copyText}) {
|
export function CopyButton({show, copyText}) {
|
||||||
@ -560,7 +560,7 @@ export default function CodeMirror({currEditor, name, value, options, events, re
|
|||||||
onMouseEnter={() => { showCopyBtn && value.length > 0 && setShowCopy(true);}}
|
onMouseEnter={() => { showCopyBtn && value.length > 0 && setShowCopy(true);}}
|
||||||
onMouseLeave={() => {showCopyBtn && setShowCopy(false);}}
|
onMouseLeave={() => {showCopyBtn && setShowCopy(false);}}
|
||||||
>
|
>
|
||||||
<FindDialog editor={editor.current} show={showFind} replace={isReplace} onClose={closeFind}/>
|
<FindDialog editor={editor.current} show={showFind} replace={isReplace} onClose={closeFind} selFindVal={editor.current?.getSelection() && editor.current.getSelection().length > 0 ? editor.current.getSelection() : ''}/>
|
||||||
<CopyButton editor={editor.current} show={showCopy} copyText={value}></CopyButton>
|
<CopyButton editor={editor.current} show={showCopy} copyText={value}></CopyButton>
|
||||||
<textarea ref={taRef} name={name} />
|
<textarea ref={taRef} name={name} />
|
||||||
</div>
|
</div>
|
||||||
|
Loading…
Reference in New Issue
Block a user