diff --git a/package-lock.json b/package-lock.json index 116a654..0f4ba67 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11311,6 +11311,11 @@ } } }, + "react-collapse": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/react-collapse/-/react-collapse-5.0.1.tgz", + "integrity": "sha512-cN2tkxBWizhPQ2JHfe0aUSJtmMthKA17NZkTElpiQ2snQAAi1hssXZ2fv88rAPNNvG5ss4t0PbOZT0TIl9Lk3Q==" + }, "react-contexify": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/react-contexify/-/react-contexify-4.1.1.tgz", diff --git a/package.json b/package.json index ccb7409..acf1e4a 100644 --- a/package.json +++ b/package.json @@ -33,6 +33,7 @@ "rc-slider": "^9.3.1", "react": "^16.13.1", "react-bootstrap": "^1.2.2", + "react-collapse": "^5.0.1", "react-contexify": "^4.1.1", "react-d3": "^0.4.0", "react-dnd": "^10.0.2", diff --git a/src/widget/widget-toolbox.js b/src/widget/widget-toolbox.js index f8d6390..a4e25e8 100644 --- a/src/widget/widget-toolbox.js +++ b/src/widget/widget-toolbox.js @@ -20,10 +20,20 @@ import PropTypes from 'prop-types'; import Slider from 'rc-slider'; import { Button, OverlayTrigger, Tooltip } from 'react-bootstrap'; import Icon from "../common/icon"; +import {Collapse} from 'react-collapse'; import ToolboxItem from './toolbox-item'; class WidgetToolbox extends React.Component { + constructor(props) { + super(props); + + this.state = { + showCosmeticWidgets: false, + showDisplayingWidgets: false, + showManipulationWidgets: false + }; +} onGridChange = value => { // value 0 would block all widgets, set 1 as 'grid disabled' if (value === 0) { @@ -49,7 +59,39 @@ class WidgetToolbox extends React.Component { return false; } + showWidgets(value){ + let tempValue = false; + switch(value){ + case 'cosmetic': + tempValue = !this.state.showCosmeticWidgets; + this.setState({showCosmeticWidgets: tempValue}); + break; + case 'displaying': + tempValue = !this.state.showDisplayingWidgets; + this.setState({showDisplayingWidgets: tempValue}); + break; + case 'manipulation': + tempValue = !this.state.showManipulationWidgets; + this.setState({showManipulationWidgets: tempValue}); + break; + default: + break; + } + } + render() { + let cosmeticIcon = 'chevron-up'; + let displayingIcon = 'chevron-up'; + let manipulationIcon = 'chevron-up'; + if(this.state.showCosmeticWidgets){ + cosmeticIcon = 'chevron-down'; + } + if(this.state.showDisplayingWidgets){ + displayingIcon = 'chevron-down'; + } + if(this.state.showManipulationWidgets){ + manipulationIcon = 'chevron-down'; + } const disableDecrease = this.disableDecrease(); // Only one topology widget at the time is supported @@ -63,25 +105,44 @@ class WidgetToolbox extends React.Component { const topologyItemMsg = thereIsTopologyWidget? 'Currently only one is supported' : ''; return