From 4d0420a83d27a90b8b15dda10f27a1b89c4ca1b6 Mon Sep 17 00:00:00 2001 From: Lisa Knox Date: Fri, 28 Jul 2023 11:45:30 -0400 Subject: [PATCH] 15768: fixed checkbox disable on empty list Arvados-DCO-1.1-Signed-off-by: Lisa Knox --- .../data-table-multiselect-popover.tsx | 16 ++++++++++++---- src/components/data-table/data-table.tsx | 13 ++++++++++--- src/validators/arrays-are-congruent.tsx | 17 ----------------- 3 files changed, 22 insertions(+), 24 deletions(-) delete mode 100644 src/validators/arrays-are-congruent.tsx diff --git a/src/components/data-table-multiselect-popover/data-table-multiselect-popover.tsx b/src/components/data-table-multiselect-popover/data-table-multiselect-popover.tsx index 875f181861..6a38581e2d 100644 --- a/src/components/data-table-multiselect-popover/data-table-multiselect-popover.tsx +++ b/src/components/data-table-multiselect-popover/data-table-multiselect-popover.tsx @@ -10,7 +10,7 @@ import debounce from 'lodash/debounce'; import { grey } from '@material-ui/core/colors'; import { TCheckedList } from 'components/data-table/data-table'; -export type CssRules = 'root' | 'icon' | 'iconButton' | 'optionsContainer' | 'option'; +export type CssRules = 'root' | 'icon' | 'iconButton' | 'disabled' | 'optionsContainer' | 'option'; const styles: StyleRulesCallback = (theme: Theme) => ({ root: { @@ -37,6 +37,9 @@ const styles: StyleRulesCallback = (theme: Theme) => ({ padding: 1, paddingBottom: 5, }, + disabled: { + color: grey[500], + }, optionsContainer: { padding: '1rem 0', flex: 1, @@ -60,6 +63,7 @@ export type DataTableMultiselectOption = { export interface DataTableMultiselectProps { name: string; + disabled: boolean; options: DataTableMultiselectOption[]; checkedList: TCheckedList; } @@ -76,14 +80,18 @@ export const DataTableMultiselectPopover = withStyles(styles)( icon = React.createRef(); render() { - const { classes, children, options, checkedList } = this.props; + const { classes, children, options, checkedList, disabled } = this.props; return ( <> - + {} : this.open} disableRipple> {children} - + diff --git a/src/components/data-table/data-table.tsx b/src/components/data-table/data-table.tsx index effc46ab7a..3194fc20a0 100644 --- a/src/components/data-table/data-table.tsx +++ b/src/components/data-table/data-table.tsx @@ -28,7 +28,6 @@ import { IconType, PendingIcon } from 'components/icon/icon'; import { SvgIconProps } from '@material-ui/core/SvgIcon'; import ArrowDownwardIcon from '@material-ui/icons/ArrowDownward'; import { createTree } from 'models/tree'; -import arraysAreCongruent from 'validators/arrays-are-congruent'; import { DataTableMultiselectOption } from '../data-table-multiselect-popover/data-table-multiselect-popover'; export type DataColumns = Array>; @@ -152,9 +151,10 @@ export const DataTable = withStyles(styles)( componentDidUpdate(prevProps: Readonly>, prevState: DataTableState) { const { items, toggleMSToolbar, setCheckedListOnStore } = this.props; const { isSelected, checkedList } = this.state; - if (!arraysAreCongruent(prevProps.items, items)) { + if (prevProps.items !== items) { if (isSelected === true) this.setState({ isSelected: false }); if (items.length) this.initializeCheckedList(items); + else this.setState({ checkedList: {} }); } if (prevState.checkedList !== checkedList) { toggleMSToolbar(this.isAnySelected() ? true : false); @@ -295,10 +295,17 @@ export const DataTable = withStyles(styles)(
- + diff --git a/src/validators/arrays-are-congruent.tsx b/src/validators/arrays-are-congruent.tsx deleted file mode 100644 index d945600f32..0000000000 --- a/src/validators/arrays-are-congruent.tsx +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright (C) The Arvados Authors. All rights reserved. -// -// SPDX-License-Identifier: AGPL-3.0 - -export default function arraysAreCongruent(arr1: T[], arr2: T[]): boolean { - if (!arr1.length || !arr2.length) return false; - if (arr1.length !== arr2.length) return false; - - const sortedArr1 = [...arr1].sort(); - const sortedArr2 = [...arr2].sort(); - - for (let i = 0; i < sortedArr1.length; i++) { - if (sortedArr1[i] !== sortedArr2[i]) return false; - } - - return true; -} -- 2.39.5