diff --git a/docs/data/tree-view/rich-tree-view/selection/ParentChildrenSelectionRelationship.tsx b/docs/data/tree-view/rich-tree-view/selection/ParentChildrenSelectionRelationship.tsx index 709113d855bf..c7ed6099696e 100644 --- a/docs/data/tree-view/rich-tree-view/selection/ParentChildrenSelectionRelationship.tsx +++ b/docs/data/tree-view/rich-tree-view/selection/ParentChildrenSelectionRelationship.tsx @@ -2,98 +2,105 @@ import * as React from 'react'; import Box from '@mui/material/Box'; import { RichTreeView } from '@mui/x-tree-view/RichTreeView'; import { TreeViewBaseItem } from '@mui/x-tree-view/models'; -import {useTreeViewApiRef} from "@mui/x-tree-view/hooks"; +import { useTreeViewApiRef } from '@mui/x-tree-view/hooks'; const MUI_X_PRODUCTS: TreeViewBaseItem[] = [ - { - id: 'grid', - label: 'Data Grid', - children: [ - { id: 'grid-community', label: '@mui/x-data-grid' }, - { id: 'grid-pro', label: '@mui/x-data-grid-pro' }, - { id: 'grid-premium', label: '@mui/x-data-grid-premium' }, - ], - }, - { - id: 'pickers', - label: 'Date and Time Pickers', - children: [ - { id: 'pickers-community', label: '@mui/x-date-pickers' }, - { id: 'pickers-pro', label: '@mui/x-date-pickers-pro' }, - ], - }, - { - id: 'charts', - label: 'Charts', - children: [{ id: 'charts-community', label: '@mui/x-charts' }], - }, - { - id: 'tree-view', - label: 'Tree View', - children: [{ id: 'tree-view-community', label: '@mui/x-tree-view' }], - }, + { + id: 'grid', + label: 'Data Grid', + children: [ + { id: 'grid-community', label: '@mui/x-data-grid' }, + { id: 'grid-pro', label: '@mui/x-data-grid-pro' }, + { id: 'grid-premium', label: '@mui/x-data-grid-premium' }, + ], + }, + { + id: 'pickers', + label: 'Date and Time Pickers', + children: [ + { id: 'pickers-community', label: '@mui/x-date-pickers' }, + { id: 'pickers-pro', label: '@mui/x-date-pickers-pro' }, + ], + }, + { + id: 'charts', + label: 'Charts', + children: [{ id: 'charts-community', label: '@mui/x-charts' }], + }, + { + id: 'tree-view', + label: 'Tree View', + children: [{ id: 'tree-view-community', label: '@mui/x-tree-view' }], + }, ]; -function getItemDescendantsIds (item: TreeViewBaseItem) { - const ids: string[] = [] - item.children?.forEach(child => { - ids.push(child.id) - ids.push(...getItemDescendantsIds(child)) - }) +function getItemDescendantsIds(item: TreeViewBaseItem) { + const ids: string[] = []; + item.children?.forEach((child) => { + ids.push(child.id); + ids.push(...getItemDescendantsIds(child)); + }); - return ids; + return ids; } export default function ParentChildrenSelectionRelationship() { - const [selectedItems, setSelectedItems] = React.useState([]); - const toggledItemRef = React.useRef<{ [itemId: string]: boolean}>({}) - const apiRef = useTreeViewApiRef() + const [selectedItems, setSelectedItems] = React.useState([]); + const toggledItemRef = React.useRef<{ [itemId: string]: boolean }>({}); + const apiRef = useTreeViewApiRef(); - const handleItemSelectionToggle = ( - event: React.SyntheticEvent, - itemId: string, - isSelected: boolean, - ) => { - toggledItemRef.current[itemId] = isSelected - }; + const handleItemSelectionToggle = ( + event: React.SyntheticEvent, + itemId: string, + isSelected: boolean, + ) => { + toggledItemRef.current[itemId] = isSelected; + }; - const handleSelectedItemsChange = ( - event: React.SyntheticEvent, - newSelectedItems: string[]) => { - setSelectedItems(newSelectedItems) + const handleSelectedItemsChange = ( + event: React.SyntheticEvent, + newSelectedItems: string[], + ) => { + setSelectedItems(newSelectedItems); - // Select / unselect the children of the toggled item - const itemsToSelect: string[] = []; - const itemsToUnSelect: { [itemId: string]: boolean } = {}; - Object.entries(toggledItemRef.current).forEach(([itemId, isSelected]) => { - const item = apiRef.current!.getItem(itemId) - if (isSelected) { - itemsToSelect.push(...getItemDescendantsIds(item)) - } else { - getItemDescendantsIds(item).forEach(descendantId => { - itemsToUnSelect[descendantId] = true - }) - } - }) + // Select / unselect the children of the toggled item + const itemsToSelect: string[] = []; + const itemsToUnSelect: { [itemId: string]: boolean } = {}; + Object.entries(toggledItemRef.current).forEach(([itemId, isSelected]) => { + const item = apiRef.current!.getItem(itemId); + if (isSelected) { + itemsToSelect.push(...getItemDescendantsIds(item)); + } else { + getItemDescendantsIds(item).forEach((descendantId) => { + itemsToUnSelect[descendantId] = true; + }); + } + }); - const newSelectedItemsWithChildren = Array.from(new Set([...newSelectedItems, ...itemsToSelect].filter(itemId => !itemsToUnSelect[itemId]))) + const newSelectedItemsWithChildren = Array.from( + new Set( + [...newSelectedItems, ...itemsToSelect].filter( + (itemId) => !itemsToUnSelect[itemId], + ), + ), + ); - setSelectedItems(newSelectedItemsWithChildren) + setSelectedItems(newSelectedItemsWithChildren); - toggledItemRef.current = {} - } + toggledItemRef.current = {}; + }; - return ( - - - - ); + return ( + + + + ); } diff --git a/docs/data/tree-view/rich-tree-view/selection/selection.md b/docs/data/tree-view/rich-tree-view/selection/selection.md index 5c7d31a1f532..d58f37d61b5d 100644 --- a/docs/data/tree-view/rich-tree-view/selection/selection.md +++ b/docs/data/tree-view/rich-tree-view/selection/selection.md @@ -89,7 +89,7 @@ Especially if you already have a use case for this component, or if you are facing a pain point with your current solution. ::: -If you cannot wait for the official implementation, +If you cannot wait for the official implementation, you can create your own custom solution using the `selectedItems`, `onSelectedItemsChange` and `onItemSelectionToggle` props: diff --git a/packages/x-data-grid-premium/src/hooks/features/aggregation/gridAggregationInterfaces.ts b/packages/x-data-grid-premium/src/hooks/features/aggregation/gridAggregationInterfaces.ts index 212bdef1a008..82ecbce2fc1c 100644 --- a/packages/x-data-grid-premium/src/hooks/features/aggregation/gridAggregationInterfaces.ts +++ b/packages/x-data-grid-premium/src/hooks/features/aggregation/gridAggregationInterfaces.ts @@ -74,7 +74,7 @@ export interface GridAggregationFunction { getCellValue?: (params: GridAggregationGetCellValueParams) => V; } -export interface GridAggregationParams { +interface GridAggregationParams { values: (V | undefined)[]; groupId: GridRowId; field: GridColDef['field']; diff --git a/scripts/README.md b/scripts/README.md index 66cf01e5c209..930642d967a5 100644 --- a/scripts/README.md +++ b/scripts/README.md @@ -30,7 +30,7 @@ pnpm release:changelog > `` > This string needs to stay where it gets inserted for the automated discord announcement to work. -You can also provide the github token by setting `process.env.GITHUB_TOKEN` variable. +You can also provide the GitHub token by setting `process.env.GITHUB_TOKEN` variable. In case of a problem, another method to generate the changelog is available at the end of this page. diff --git a/scripts/x-data-grid-premium.exports.json b/scripts/x-data-grid-premium.exports.json index b3de7ed13349..9723176f8754 100644 --- a/scripts/x-data-grid-premium.exports.json +++ b/scripts/x-data-grid-premium.exports.json @@ -94,7 +94,6 @@ { "name": "gridAggregationLookupSelector", "kind": "Variable" }, { "name": "GridAggregationModel", "kind": "TypeAlias" }, { "name": "gridAggregationModelSelector", "kind": "Variable" }, - { "name": "GridAggregationParams", "kind": "Interface" }, { "name": "GridAggregationPosition", "kind": "TypeAlias" }, { "name": "GridAggregationRule", "kind": "Interface" }, { "name": "GridAggregationRules", "kind": "TypeAlias" },