Browse Source

feat: support disable select all for grid (#933)

Signed-off-by: ryjiang <jiangruiyi@gmail.com>
ryjiang 2 weeks ago
parent
commit
342cf19e6b

+ 3 - 0
client/src/components/grid/Grid.tsx

@@ -24,6 +24,7 @@ import type { AttuGridType } from './Types';
  * @param title  Render breadcrumbs
  * @param title  Render breadcrumbs
  * @param openCheckBox control checkbox display. default is true
  * @param openCheckBox control checkbox display. default is true
  * @param disableSelect disable table row select. default false
  * @param disableSelect disable table row select. default false
+ * @param enableSelectAll control select all checkbox display. default true
  * @param noData when table is empty, what tip we need to show.
  * @param noData when table is empty, what tip we need to show.
  * @param showHoverStyle control table row hover style display
  * @param showHoverStyle control table row hover style display
  * @param headEditable if true, user can edit header.
  * @param headEditable if true, user can edit header.
@@ -65,6 +66,7 @@ const AttuGrid: FC<AttuGridType> = props => {
     title,
     title,
     openCheckBox = true,
     openCheckBox = true,
     disableSelect = false,
     disableSelect = false,
+    enableSelectAll = true,
     noData = commonTrans('grid.noData'),
     noData = commonTrans('grid.noData'),
     showHoverStyle = true,
     showHoverStyle = true,
     headEditable = false,
     headEditable = false,
@@ -229,6 +231,7 @@ const AttuGrid: FC<AttuGridType> = props => {
           rowHeight={rowHeight}
           rowHeight={rowHeight}
           rowDecorator={rowDecorator}
           rowDecorator={rowDecorator}
           addSpacerColumn={addSpacerColumn}
           addSpacerColumn={addSpacerColumn}
+          enableSelectAll={enableSelectAll}
         ></Table>
         ></Table>
         {rowCount && showPagination ? (
         {rowCount && showPagination ? (
           <TablePagination
           <TablePagination

+ 2 - 0
client/src/components/grid/Table.tsx

@@ -49,6 +49,7 @@ const EnhancedTable: FC<TableType> = props => {
     // set true as default
     // set true as default
     openCheckBox = true,
     openCheckBox = true,
     disableSelect,
     disableSelect,
+    enableSelectAll = true,
     noData,
     noData,
     // whether change table row background color when mouse hover
     // whether change table row background color when mouse hover
     // set true as default
     // set true as default
@@ -119,6 +120,7 @@ const EnhancedTable: FC<TableType> = props => {
               rowCount={rows.length}
               rowCount={rows.length}
               openCheckBox={openCheckBox}
               openCheckBox={openCheckBox}
               disableSelect={disableSelect}
               disableSelect={disableSelect}
+              enableSelectAll={enableSelectAll}
             />
             />
           ) : (
           ) : (
             <EditableTableHead editHeads={editHeads} />
             <EditableTableHead editHeads={editHeads} />

+ 2 - 1
client/src/components/grid/TableHead.tsx

@@ -54,6 +54,7 @@ const EnhancedTableHead: FC<TableHeadType> = props => {
     handleSort,
     handleSort,
     openCheckBox,
     openCheckBox,
     disableSelect,
     disableSelect,
+    enableSelectAll = true,
   } = props;
   } = props;
 
 
   const createSortHandler = (property: string) => (event: React.MouseEvent) => {
   const createSortHandler = (property: string) => (event: React.MouseEvent) => {
@@ -76,7 +77,7 @@ const EnhancedTableHead: FC<TableHeadType> = props => {
               indeterminate={numSelected > 0 && numSelected < rowCount}
               indeterminate={numSelected > 0 && numSelected < rowCount}
               checked={rowCount > 0 && numSelected === rowCount}
               checked={rowCount > 0 && numSelected === rowCount}
               onChange={onSelectAllClick}
               onChange={onSelectAllClick}
-              disabled={disableSelect}
+              disabled={disableSelect || !enableSelectAll}
               inputProps={{
               inputProps={{
                 'aria-label': 'select all desserts',
                 'aria-label': 'select all desserts',
                 role: 'checkbox',
                 role: 'checkbox',

+ 3 - 0
client/src/components/grid/Types.ts

@@ -65,6 +65,7 @@ export type TableHeadType = {
   handleSort?: (e: any, p: string, col?: ColDefinitionsType) => void;
   handleSort?: (e: any, p: string, col?: ColDefinitionsType) => void;
   openCheckBox?: boolean;
   openCheckBox?: boolean;
   disableSelect?: boolean;
   disableSelect?: boolean;
+  enableSelectAll?: boolean;
 };
 };
 
 
 export type TableEditableHeadType = {
 export type TableEditableHeadType = {
@@ -87,6 +88,7 @@ export type TableType = {
   primaryKey: string;
   primaryKey: string;
   openCheckBox?: boolean;
   openCheckBox?: boolean;
   disableSelect?: boolean;
   disableSelect?: boolean;
+  enableSelectAll?: boolean;
   rowDecorator?: (row: any) => SxProps<Theme> | React.CSSProperties;
   rowDecorator?: (row: any) => SxProps<Theme> | React.CSSProperties;
   noData?: string;
   noData?: string;
   showHoverStyle?: boolean;
   showHoverStyle?: boolean;
@@ -146,6 +148,7 @@ export type AttuGridType = ToolBarType & {
   title?: string[];
   title?: string[];
   openCheckBox?: boolean;
   openCheckBox?: boolean;
   disableSelect?: boolean;
   disableSelect?: boolean;
+  enableSelectAll?: boolean;
   noData?: string;
   noData?: string;
   showHoverStyle?: boolean;
   showHoverStyle?: boolean;
   headEditable?: boolean;
   headEditable?: boolean;

+ 1 - 0
client/src/pages/databases/collections/properties/Properties.tsx

@@ -203,6 +203,7 @@ const Properties = (props: PropertiesProps) => {
         order={order}
         order={order}
         orderBy={orderBy}
         orderBy={orderBy}
         handleSort={handleGridSort}
         handleSort={handleGridSort}
+        enableSelectAll={false}
         labelDisplayedRows={getLabelDisplayedRows(
         labelDisplayedRows={getLabelDisplayedRows(
           commonTrans(data.length > 1 ? 'grid.properties' : 'grid.property')
           commonTrans(data.length > 1 ? 'grid.properties' : 'grid.property')
         )}
         )}