diff --git a/src/components/DataBrowserHeaderBar/DataBrowserHeaderBar.react.js b/src/components/DataBrowserHeaderBar/DataBrowserHeaderBar.react.js index 7570f79734..f914421b15 100644 --- a/src/components/DataBrowserHeaderBar/DataBrowserHeaderBar.react.js +++ b/src/components/DataBrowserHeaderBar/DataBrowserHeaderBar.react.js @@ -45,6 +45,7 @@ export default class DataBrowserHeaderBar extends React.Component { readonly, preventSchemaEdits, selected, + indeterminate, isDataLoaded, setSelectedObjectId, setCurrent, @@ -61,7 +62,16 @@ export default class DataBrowserHeaderBar extends React.Component { style={{ position: 'sticky', left: 0, zIndex: 11 }} > {readonly ? null : ( - selectAll(e.target.checked)} /> + { + if (input) { + input.indeterminate = indeterminate; + } + }} + onChange={e => selectAll(e.target.checked)} + /> )} , ]; diff --git a/src/dashboard/Data/Browser/BrowserTable.react.js b/src/dashboard/Data/Browser/BrowserTable.react.js index 378d162ff9..bcbed78500 100644 --- a/src/dashboard/Data/Browser/BrowserTable.react.js +++ b/src/dashboard/Data/Browser/BrowserTable.react.js @@ -581,7 +581,18 @@ export default class BrowserTable extends React.Component { selected={ !!this.props.selection && !!this.props.data && - Object.values(this.props.selection).filter(checked => checked).length === + this.props.data.length > 0 && + (!!this.props.selection['*'] || + Object.values(this.props.selection).filter(checked => checked).length === + this.props.data.length) + } + indeterminate={ + !!this.props.selection && + !!this.props.data && + this.props.data.length > 0 && + !this.props.selection['*'] && + Object.values(this.props.selection).filter(checked => checked).length > 0 && + Object.values(this.props.selection).filter(checked => checked).length !== this.props.data.length } selectAll={checked =>