Files
pgadmin4/web/pgadmin/static/js/components/JsonEditor.jsx
T
Aditya Toshniwal b5b9ee46a1 1) Port query tool to React. Fixes #6131
2) Added status bar to the Query Tool. Fixes #3253
3) Ensure that row numbers should be visible in view when scrolling horizontally. Fixes #3989
4) Allow removing a single query history. Refs #4113
5) Partially fixed Macros usability issues. Ref #6969
6) Fixed an issue where the Query tool opens on minimum size if the user opens multiple query tool Window quickly. Fixes #6725
7) Relocate GIS Viewer Button to the Left Side of the Results Table. Fixes #6830
8) Fixed an issue where the connection bar is not visible. Fixes #7188
9) Fixed an issue where an Empty message popup after running a query. Fixes #7260
10) Ensure that Autocomplete should work after changing the connection. Fixes #7262
11) Fixed an issue where the copy and paste row does not work if the first column contains no data. Fixes #7294
2022-04-07 17:36:56 +05:30

62 lines
1.6 KiB
React

/////////////////////////////////////////////////////////////
//
// pgAdmin 4 - PostgreSQL Tools
//
// Copyright (C) 2013 - 2022, The pgAdmin Development Team
// This software is released under the PostgreSQL Licence
//
//////////////////////////////////////////////////////////////
import React, { useEffect, useMemo, useRef } from 'react';
import {default as OrigJsonEditor} from 'jsoneditor.min';
import PropTypes from 'prop-types';
import CustomPropTypes from '../custom_prop_types';
/* React wrapper for JsonEditor */
export default function JsonEditor({getEditor, value, options, className}) {
const eleRef = useRef();
const editor = useRef();
const defaultOptions = {
modes: ['code', 'form', 'tree','preview'],
};
useEffect(()=>{
/* Create the object only once on mount */
editor.current = new OrigJsonEditor(eleRef.current, {
...defaultOptions,
...options,
onChange: ()=>{
let currVal = editor.current.getText();
if(currVal == '') {
currVal = null;
}
options.onChange(currVal);
}
});
editor.current.setText(value);
getEditor?.(editor.current);
editor.current.focus();
/* Required by json editor */
eleRef.current.style.height = eleRef.current.offsetHeight + 'px';
}, []);
useMemo(() => {
if(editor.current) {
if(value != editor.current.getText()) {
editor.current.setText(value ?? '');
}
}
}, [value]);
return (
<div ref={eleRef} className={className}></div>
);
}
JsonEditor.propTypes = {
getEditor: PropTypes.func,
value: PropTypes.string,
options: PropTypes.object,
className: CustomPropTypes.className,
};