Your search did not match any results.

UI Customization


Note that the Diagram widget is in the community technology preview (CTP) development stage.

The Diagram widget allows you to customize its UI elements with the following options.

  • The contextMenu option controls the context menu availability and specifies the visible commands.
  • The propertiesPanel option contains settings of the Properties panel.
  • The toolbar option controls toolbar visibility and specifies a set of available commands.
  • The toolbox option controls element visibility, and specifies the groups and shapes visible in the toolbox.
Copy to CodeSandBox
import React from 'react'; import Diagram, { ContextMenu, PropertiesPanel, Group, Toolbar, Toolbox } from 'devextreme-react/diagram'; import 'whatwg-fetch'; class App extends React.Component { constructor(props) { super(props); this.diagramRef = React.createRef(); } componentDidMount() { var diagram = this.diagramRef.current.instance; fetch('../../../../data/diagram-flow.json') .then(function(response) { return response.json(); }) .then(function(json) { diagram.import(JSON.stringify(json)); }) .catch(function() { throw 'Data Loading Error'; }); } render() { return ( <Diagram id="diagram" ref={this.diagramRef}> <ContextMenu enabled={true} commands={['bringToFront', 'sendToBack', 'lock', 'unlock']} /> <PropertiesPanel enabled={true} collapsible={false}> <Group commands={['units']} /> <Group commands={['pageSize', 'pageOrientation', 'pageColor']} /> </PropertiesPanel> <Toolbar visible={true} commands={['undo', 'redo', 'separator', 'fontName', 'fontSize', 'separator', 'bold', 'italic', 'underline', 'separator', 'fontColor', 'lineColor', 'fillColor', 'separator']} /> <Toolbox visible={true}> <Group category="general" title="General" /> <Group category="flowchart" title="Flowchart" expanded={true} /> </Toolbox> </Diagram> ); } } export default App;
import React from 'react'; import ReactDOM from 'react-dom'; import App from './App.js'; ReactDOM.render( <App />, document.getElementById('app') );
<!DOCTYPE html> <html> <head> <title>DevExtreme Demo</title> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" /> <link rel="stylesheet" type="text/css" href="" /> <link rel="stylesheet" type="text/css" href="" /> <link rel="stylesheet" type="text/css" href="" /> <link rel="stylesheet" type="text/css" href="" /> <link rel="stylesheet" type="text/css" href="styles.css" /> <script src=""></script> <script src=""></script> <script type="text/javascript" src="config.js"></script> <script type="text/javascript"> System.import('./index.js'); </script> </head> <body class="dx-viewport"> <div class="demo-container"> <div id="app"></div> </div> </body> </html>
#diagram { height: 900px; }
System.config({ transpiler: 'plugin-babel', paths: { 'npm:': '' }, defaultExtension: 'js', map: { 'react': 'npm:react@16/umd/react.development.js', 'react-dom': 'npm:react-dom@16/umd/react-dom.development.js', 'prop-types': 'npm:prop-types/prop-types.js', 'devextreme': 'npm:devextreme@19.2', 'devextreme-react': 'npm:devextreme-react@19.2', 'jszip': 'npm:jszip@3.1.3/dist/jszip.min.js', 'quill': 'npm:quill@1.3.7/dist/quill.js', 'devexpress-diagram': 'npm:devexpress-diagram', 'devexpress-gantt': 'npm:devexpress-gantt', 'whatwg-fetch': 'npm:whatwg-fetch@2.0.4/fetch.js', // SystemJS plugins 'plugin-babel': 'npm:systemjs-plugin-babel@0/plugin-babel.js', 'systemjs-babel-build': 'npm:systemjs-plugin-babel@0/systemjs-babel-browser.js' }, packages: { 'devextreme': { defaultExtension: 'js' }, 'devextreme-react': { main: 'index.js' } }, babelOptions: { sourceMaps: false, stage0: true, react: true } });