diff --git a/src/components/BrowserFilter/BrowserFilter.react.js b/src/components/BrowserFilter/BrowserFilter.react.js index 6ecfa3c212..9d821b6fca 100644 --- a/src/components/BrowserFilter/BrowserFilter.react.js +++ b/src/components/BrowserFilter/BrowserFilter.react.js @@ -27,6 +27,7 @@ export default class BrowserFilter extends React.Component { open: false, filters: new List(), }; + this.toggle = this.toggle.bind(this) } componentDidMount() { @@ -34,22 +35,22 @@ export default class BrowserFilter extends React.Component { } componentWillReceiveProps(props) { - if (props.schema !== this.props.schema) { + if (props.className !== this.props.className) { this.setState({ open: false }); } } - open() { + toggle() { let filters = this.props.filters; if (this.props.filters.size === 0) { let available = Filters.availableFilters(this.props.schema, null, BLACKLISTED_FILTERS); let field = Object.keys(available)[0]; filters = new List([new Map({ field: field, constraint: available[field][0] })]); } - this.setState({ - open: true, + this.setState(prevState => ({ + open: !prevState.open, filters: filters, - }); + })); this.props.setCurrent(null); } @@ -62,9 +63,7 @@ export default class BrowserFilter extends React.Component { } clear() { - this.setState({ open: false }, () => { - this.props.onChange(new Map()); - }); + this.props.onChange(new Map()); } apply() { @@ -76,27 +75,26 @@ export default class BrowserFilter extends React.Component { }*/ return filter; }) - this.setState({ open: false }, () => { - this.props.onChange(formatted); - }); + this.props.onChange(formatted); } render() { let popover = null; + let buttonStyle = [styles.entry]; + if (this.state.open) { let position = Position.inDocument(this.node); let popoverStyle = [styles.popover]; + buttonStyle.push(styles.title); + if (this.props.filters.size) { popoverStyle.push(styles.active); } let available = Filters.availableFilters(this.props.schema, this.state.filters); popover = ( - +
this.props.setCurrent(null)}> -
this.setState({ open: false })}> - - {this.props.filters.size ? 'Filtered' : 'Filter'} -
+
); } - let buttonStyle = [styles.entry]; if (this.props.filters.size) { buttonStyle.push(styles.active); } return (
-
+
{this.props.filters.size ? 'Filtered' : 'Filter'}
diff --git a/src/components/Popover/Popover.react.js b/src/components/Popover/Popover.react.js index b5a8821345..243aef3d1c 100644 --- a/src/components/Popover/Popover.react.js +++ b/src/components/Popover/Popover.react.js @@ -5,7 +5,7 @@ * This source code is licensed under the license found in the LICENSE file in * the root directory of this source tree. */ -import PropTypes from 'lib/PropTypes'; +import PropTypes from 'lib/PropTypes'; import hasAncestor from 'lib/hasAncestor'; import React from 'react'; import ReactDOM from 'react-dom'; @@ -83,7 +83,7 @@ export default class Popover extends React.Component { } _checkExternalClick(e) { - if (!hasAncestor(e.target, this._popoverLayer) && + if (!hasAncestor(e.target, this._popoverWrapper) && this.props.onExternalClick) { this.props.onExternalClick(e); } diff --git a/src/dashboard/Data/Browser/BrowserToolbar.react.js b/src/dashboard/Data/Browser/BrowserToolbar.react.js index 331a9f4d67..8c2bc1e2f7 100644 --- a/src/dashboard/Data/Browser/BrowserToolbar.react.js +++ b/src/dashboard/Data/Browser/BrowserToolbar.react.js @@ -169,7 +169,8 @@ let BrowserToolbar = ({ setCurrent={setCurrent} schema={schema} filters={filters} - onChange={onFilterChange} /> + onChange={onFilterChange} + className={className} />
{enableSecurityDialog ?