diff --git a/.circleci/config.yml b/.circleci/config.yml index 96f5576c4b6d..75cec3cf6ffb 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -232,7 +232,7 @@ jobs: test_browser: <<: *default-job docker: - - image: mcr.microsoft.com/playwright:v1.49.0-noble + - image: mcr.microsoft.com/playwright:v1.49.1-noble steps: - checkout - install_js: @@ -263,7 +263,7 @@ jobs: test_e2e: <<: *default-job docker: - - image: mcr.microsoft.com/playwright:v1.49.0-noble + - image: mcr.microsoft.com/playwright:v1.49.1-noble steps: - checkout - install_js: @@ -274,7 +274,7 @@ jobs: test_e2e_website: <<: *default-job docker: - - image: mcr.microsoft.com/playwright:v1.49.0-noble + - image: mcr.microsoft.com/playwright:v1.49.1-noble steps: - checkout - install_js: @@ -287,7 +287,7 @@ jobs: test_regressions: <<: *default-job docker: - - image: mcr.microsoft.com/playwright:v1.49.0-noble + - image: mcr.microsoft.com/playwright:v1.49.1-noble steps: - checkout - install_js: diff --git a/package.json b/package.json index 9c3bec49ecd0..003c6829c5f2 100644 --- a/package.json +++ b/package.json @@ -97,10 +97,10 @@ "@mui/material": "^5.16.9", "@mui/monorepo": "github:mui/material-ui#454a4c081a3cda665d5e608e1fc3d600d14eee53", "@mui/utils": "^5.16.8", - "@next/eslint-plugin-next": "15.0.4", + "@next/eslint-plugin-next": "15.1.0", "@octokit/plugin-retry": "^7.1.2", "@octokit/rest": "^21.0.2", - "@playwright/test": "^1.49.0", + "@playwright/test": "^1.49.1", "@types/babel__core": "^7.20.5", "@types/babel__traverse": "^7.20.6", "@types/chai": "^4.3.20", @@ -109,7 +109,7 @@ "@types/karma": "^6.3.9", "@types/lodash": "^4.17.13", "@types/mocha": "^10.0.10", - "@types/node": "^20.17.9", + "@types/node": "^20.17.10", "@types/react": "^18.3.14", "@types/react-dom": "^18.3.2", "@types/requestidlecallback": "^0.3.7", @@ -140,7 +140,7 @@ "eslint-config-airbnb": "^19.0.4", "eslint-config-airbnb-typescript": "^18.0.0", "eslint-config-prettier": "^9.1.0", - "eslint-import-resolver-webpack": "^0.13.9", + "eslint-import-resolver-webpack": "^0.13.10", "eslint-plugin-filenames": "^1.3.2", "eslint-plugin-import": "^2.31.0", "eslint-plugin-jsdoc": "^50.6.0", @@ -186,7 +186,7 @@ "sinon": "^19.0.2", "stream-browserify": "^3.0.0", "string-replace-loader": "^3.1.0", - "terser-webpack-plugin": "^5.3.10", + "terser-webpack-plugin": "^5.3.11", "tsx": "^4.19.2", "typescript": "^5.7.2", "unist-util-visit": "^5.0.0", @@ -198,7 +198,7 @@ }, "resolutions": { "react-is": "^18.3.1", - "@types/node": "^20.17.9" + "@types/node": "^20.17.10" }, "packageManager": "pnpm@9.15.0", "engines": { diff --git a/packages/rsc-builder/package.json b/packages/rsc-builder/package.json index 7a3f84641436..5771501d07b7 100644 --- a/packages/rsc-builder/package.json +++ b/packages/rsc-builder/package.json @@ -9,6 +9,6 @@ }, "devDependencies": { "@types/mocha": "^10.0.10", - "@types/node": "^20.17.9" + "@types/node": "^20.17.10" } } diff --git a/packages/x-charts/package.json b/packages/x-charts/package.json index 9c037234636c..195e1fe3be0b 100644 --- a/packages/x-charts/package.json +++ b/packages/x-charts/package.json @@ -74,7 +74,7 @@ "@react-spring/core": "^9.7.5", "@react-spring/shared": "^9.7.5", "@types/prop-types": "^15.7.14", - "@types/react-is": "^18.3.0", + "@types/react-is": "^18.3.1", "@types/use-sync-external-store": "^0.0.6", "csstype": "^3.1.3", "rimraf": "^6.0.1" diff --git a/packages/x-data-grid-premium/src/components/GridColumnMenuAggregationItem.tsx b/packages/x-data-grid-premium/src/components/GridColumnMenuAggregationItem.tsx index 27fd029bb344..ff94890b8397 100644 --- a/packages/x-data-grid-premium/src/components/GridColumnMenuAggregationItem.tsx +++ b/packages/x-data-grid-premium/src/components/GridColumnMenuAggregationItem.tsx @@ -1,8 +1,6 @@ import * as React from 'react'; import PropTypes from 'prop-types'; import { GridColumnMenuItemProps, useGridSelector } from '@mui/x-data-grid-pro'; -import ListItemIcon from '@mui/material/ListItemIcon'; -import ListItemText from '@mui/material/ListItemText'; import FormControl from '@mui/material/FormControl'; import InputLabel from '@mui/material/InputLabel'; import { unstable_useId as useId } from '@mui/utils'; @@ -67,38 +65,36 @@ function GridColumnMenuAggregationItem(props: GridColumnMenuItemProps) { const label = apiRef.current.getLocaleText('aggregationMenuItemHeader'); return ( - - - - - - - {label} - event.stopPropagation()} - fullWidth - > - ... - {availableAggregationFunctions.map((aggFunc) => ( - - {getAggregationFunctionLabel({ - apiRef, - aggregationRule: { - aggregationFunctionName: aggFunc, - aggregationFunction: rootProps.aggregationFunctions[aggFunc], - }, - })} - - ))} - - - + } + > + + {label} + event.stopPropagation()} + fullWidth + > + ... + {availableAggregationFunctions.map((aggFunc) => ( + + {getAggregationFunctionLabel({ + apiRef, + aggregationRule: { + aggregationFunctionName: aggFunc, + aggregationFunction: rootProps.aggregationFunctions[aggFunc], + }, + })} + + ))} + + ); } diff --git a/packages/x-data-grid-premium/src/components/GridColumnMenuRowGroupItem.tsx b/packages/x-data-grid-premium/src/components/GridColumnMenuRowGroupItem.tsx index 7f661095f957..a786316ea963 100644 --- a/packages/x-data-grid-premium/src/components/GridColumnMenuRowGroupItem.tsx +++ b/packages/x-data-grid-premium/src/components/GridColumnMenuRowGroupItem.tsx @@ -1,6 +1,4 @@ import * as React from 'react'; -import ListItemIcon from '@mui/material/ListItemIcon'; -import ListItemText from '@mui/material/ListItemText'; import { useGridSelector, gridColumnLookupSelector, @@ -35,11 +33,9 @@ export function GridColumnMenuRowGroupItem(props: GridColumnMenuItemProps) { onClick={ungroupColumn} key={field} disabled={!groupedColumn.groupable} + iconStart={} > - - - - {apiRef.current.getLocaleText('unGroupColumn')(name)} + {apiRef.current.getLocaleText('unGroupColumn')(name)} ); }; diff --git a/packages/x-data-grid-premium/src/components/GridColumnMenuRowUngroupItem.tsx b/packages/x-data-grid-premium/src/components/GridColumnMenuRowUngroupItem.tsx index 9f100470d0b6..381364fec500 100644 --- a/packages/x-data-grid-premium/src/components/GridColumnMenuRowUngroupItem.tsx +++ b/packages/x-data-grid-premium/src/components/GridColumnMenuRowUngroupItem.tsx @@ -1,6 +1,4 @@ import * as React from 'react'; -import ListItemIcon from '@mui/material/ListItemIcon'; -import ListItemText from '@mui/material/ListItemText'; import { gridColumnLookupSelector, useGridSelector, @@ -35,21 +33,21 @@ export function GridColumnMenuRowUngroupItem(props: GridColumnMenuItemProps) { if (rowGroupingModel.includes(colDef.field)) { return ( - - - - - {apiRef.current.getLocaleText('unGroupColumn')(name)} + } + > + {apiRef.current.getLocaleText('unGroupColumn')(name)} ); } return ( - - - - - {apiRef.current.getLocaleText('groupColumn')(name)} + } + > + {apiRef.current.getLocaleText('groupColumn')(name)} ); } diff --git a/packages/x-data-grid-pro/src/components/GridColumnMenuPinningItem.tsx b/packages/x-data-grid-pro/src/components/GridColumnMenuPinningItem.tsx index 89168d11fa8d..9aed728d3b22 100644 --- a/packages/x-data-grid-pro/src/components/GridColumnMenuPinningItem.tsx +++ b/packages/x-data-grid-pro/src/components/GridColumnMenuPinningItem.tsx @@ -1,8 +1,6 @@ import * as React from 'react'; import { useRtl } from '@mui/system/RtlProvider'; import PropTypes from 'prop-types'; -import ListItemIcon from '@mui/material/ListItemIcon'; -import ListItemText from '@mui/material/ListItemText'; import { GridPinnedColumnPosition, GridColumnMenuItemProps } from '@mui/x-data-grid'; import { useGridApiContext } from '../hooks/utils/useGridApiContext'; import { useGridRootProps } from '../hooks/utils/useGridRootProps'; @@ -26,20 +24,20 @@ function GridColumnMenuPinningItem(props: GridColumnMenuItemProps) { onClick(event); }; const pinToLeftMenuItem = ( - - - - - {apiRef.current.getLocaleText('pinToLeft')} + } + > + {apiRef.current.getLocaleText('pinToLeft')} ); const pinToRightMenuItem = ( - - - - - {apiRef.current.getLocaleText('pinToRight')} + } + > + {apiRef.current.getLocaleText('pinToRight')} ); @@ -61,15 +59,14 @@ function GridColumnMenuPinningItem(props: GridColumnMenuItemProps) { : rootProps.slots.columnMenuPinRightIcon; return ( - - - - - {apiRef.current.getLocaleText(label)} + } + > + {apiRef.current.getLocaleText(label)} - - - {apiRef.current.getLocaleText('unpin')} + + {apiRef.current.getLocaleText('unpin')} ); diff --git a/packages/x-data-grid/src/components/cell/GridActionsCellItem.tsx b/packages/x-data-grid/src/components/cell/GridActionsCellItem.tsx index 2c0edaec52bb..554926d5227b 100644 --- a/packages/x-data-grid/src/components/cell/GridActionsCellItem.tsx +++ b/packages/x-data-grid/src/components/cell/GridActionsCellItem.tsx @@ -2,7 +2,6 @@ import * as React from 'react'; import PropTypes from 'prop-types'; import { IconButtonProps } from '@mui/material/IconButton'; import { MenuItemProps } from '@mui/material/MenuItem'; -import ListItemIcon from '@mui/material/ListItemIcon'; import { useGridRootProps } from '../../hooks/utils/useGridRootProps'; interface GridActionsCellItemCommonProps { @@ -70,8 +69,12 @@ const GridActionsCellItem = React.forwardRef - {icon && {icon}} + {label} ); diff --git a/packages/x-data-grid/src/components/menu/columnMenu/menuItems/GridColumnMenuFilterItem.tsx b/packages/x-data-grid/src/components/menu/columnMenu/menuItems/GridColumnMenuFilterItem.tsx index f7db300a230c..11939f195b19 100644 --- a/packages/x-data-grid/src/components/menu/columnMenu/menuItems/GridColumnMenuFilterItem.tsx +++ b/packages/x-data-grid/src/components/menu/columnMenu/menuItems/GridColumnMenuFilterItem.tsx @@ -1,7 +1,5 @@ import * as React from 'react'; import PropTypes from 'prop-types'; -import ListItemIcon from '@mui/material/ListItemIcon'; -import ListItemText from '@mui/material/ListItemText'; import { useGridApiContext } from '../../../../hooks/utils/useGridApiContext'; import { GridColumnMenuItemProps } from '../GridColumnMenuItemProps'; import { useGridRootProps } from '../../../../hooks/utils/useGridRootProps'; @@ -24,11 +22,11 @@ function GridColumnMenuFilterItem(props: GridColumnMenuItemProps) { } return ( - - - - - {apiRef.current.getLocaleText('columnMenuFilter')} + } + > + {apiRef.current.getLocaleText('columnMenuFilter')} ); } diff --git a/packages/x-data-grid/src/components/menu/columnMenu/menuItems/GridColumnMenuHideItem.tsx b/packages/x-data-grid/src/components/menu/columnMenu/menuItems/GridColumnMenuHideItem.tsx index f6594765ba05..bb422f67d872 100644 --- a/packages/x-data-grid/src/components/menu/columnMenu/menuItems/GridColumnMenuHideItem.tsx +++ b/packages/x-data-grid/src/components/menu/columnMenu/menuItems/GridColumnMenuHideItem.tsx @@ -1,7 +1,5 @@ import * as React from 'react'; import PropTypes from 'prop-types'; -import ListItemIcon from '@mui/material/ListItemIcon'; -import ListItemText from '@mui/material/ListItemText'; import { GridColumnMenuItemProps } from '../GridColumnMenuItemProps'; import { useGridApiContext } from '../../../../hooks/utils/useGridApiContext'; import { useGridRootProps } from '../../../../hooks/utils/useGridRootProps'; @@ -42,11 +40,12 @@ function GridColumnMenuHideItem(props: GridColumnMenuItemProps) { } return ( - - - - - {apiRef.current.getLocaleText('columnMenuHideColumn')} + } + > + {apiRef.current.getLocaleText('columnMenuHideColumn')} ); } diff --git a/packages/x-data-grid/src/components/menu/columnMenu/menuItems/GridColumnMenuManageItem.tsx b/packages/x-data-grid/src/components/menu/columnMenu/menuItems/GridColumnMenuManageItem.tsx index df95549cbf30..7bd81ecd43ff 100644 --- a/packages/x-data-grid/src/components/menu/columnMenu/menuItems/GridColumnMenuManageItem.tsx +++ b/packages/x-data-grid/src/components/menu/columnMenu/menuItems/GridColumnMenuManageItem.tsx @@ -1,7 +1,5 @@ import * as React from 'react'; import PropTypes from 'prop-types'; -import ListItemIcon from '@mui/material/ListItemIcon'; -import ListItemText from '@mui/material/ListItemText'; import { GridPreferencePanelsValue } from '../../../../hooks/features/preferencesPanel/gridPreferencePanelsValue'; import { useGridApiContext } from '../../../../hooks/utils/useGridApiContext'; import { GridColumnMenuItemProps } from '../GridColumnMenuItemProps'; @@ -25,11 +23,11 @@ function GridColumnMenuManageItem(props: GridColumnMenuItemProps) { } return ( - - - - - {apiRef.current.getLocaleText('columnMenuManageColumns')} + } + > + {apiRef.current.getLocaleText('columnMenuManageColumns')} ); } diff --git a/packages/x-data-grid/src/components/menu/columnMenu/menuItems/GridColumnMenuSortItem.tsx b/packages/x-data-grid/src/components/menu/columnMenu/menuItems/GridColumnMenuSortItem.tsx index 7ac4c77444da..a8a7ca43c7d3 100644 --- a/packages/x-data-grid/src/components/menu/columnMenu/menuItems/GridColumnMenuSortItem.tsx +++ b/packages/x-data-grid/src/components/menu/columnMenu/menuItems/GridColumnMenuSortItem.tsx @@ -1,7 +1,5 @@ import * as React from 'react'; import PropTypes from 'prop-types'; -import ListItemIcon from '@mui/material/ListItemIcon'; -import ListItemText from '@mui/material/ListItemText'; import { useGridSelector } from '../../../../hooks/utils/useGridSelector'; import { gridSortModelSelector } from '../../../../hooks/features/sorting/gridSortingSelector'; import { GridSortDirection } from '../../../../models/gridSortModel'; @@ -54,25 +52,26 @@ function GridColumnMenuSortItem(props: GridColumnMenuItemProps) { return ( {sortingOrder.includes('asc') && sortDirection !== 'asc' ? ( - - - - - {getLabel('columnMenuSortAsc')} + } + > + {getLabel('columnMenuSortAsc')} ) : null} {sortingOrder.includes('desc') && sortDirection !== 'desc' ? ( - - - - - {getLabel('columnMenuSortDesc')} + } + > + {getLabel('columnMenuSortDesc')} ) : null} {sortingOrder.includes(null) && sortDirection != null ? ( - - - {apiRef.current.getLocaleText('columnMenuUnsort')} + + {apiRef.current.getLocaleText('columnMenuUnsort')} ) : null} diff --git a/packages/x-data-grid/src/components/toolbar/GridToolbarDensitySelector.tsx b/packages/x-data-grid/src/components/toolbar/GridToolbarDensitySelector.tsx index 585e9ff84943..643718858932 100644 --- a/packages/x-data-grid/src/components/toolbar/GridToolbarDensitySelector.tsx +++ b/packages/x-data-grid/src/components/toolbar/GridToolbarDensitySelector.tsx @@ -3,7 +3,6 @@ import PropTypes from 'prop-types'; import { unstable_useId as useId, unstable_useForkRef as useForkRef } from '@mui/utils'; import { ButtonProps } from '@mui/material/Button'; import { TooltipProps } from '@mui/material/Tooltip'; -import ListItemIcon from '@mui/material/ListItemIcon'; import { gridDensitySelector } from '../../hooks/features/density/densitySelector'; import { GridDensity } from '../../models/gridDensity'; import { isHideMenuKey } from '../../utils/keyboardUtils'; @@ -99,8 +98,8 @@ const GridToolbarDensitySelector = React.forwardRef< key={index} onClick={() => handleDensityUpdate(option.value)} selected={option.value === density} + iconStart={option.icon} > - {option.icon} {option.label} )); diff --git a/packages/x-data-grid/src/material/index.ts b/packages/x-data-grid/src/material/index.tsx similarity index 82% rename from packages/x-data-grid/src/material/index.ts rename to packages/x-data-grid/src/material/index.tsx index db2748de022c..6465357645d4 100644 --- a/packages/x-data-grid/src/material/index.ts +++ b/packages/x-data-grid/src/material/index.tsx @@ -1,6 +1,9 @@ +import * as React from 'react'; import MUIBadge from '@mui/material/Badge'; import MUICheckbox from '@mui/material/Checkbox'; import MUIDivider from '@mui/material/Divider'; +import MUIListItemIcon from '@mui/material/ListItemIcon'; +import MUIListItemText from '@mui/material/ListItemText'; import MUIMenuList from '@mui/material/MenuList'; import MUIMenuItem from '@mui/material/MenuItem'; import MUITextField from '@mui/material/TextField'; @@ -43,6 +46,7 @@ import { } from './icons'; import type { GridIconSlotsComponent } from '../models'; import type { GridBaseSlots } from '../models/gridSlotsComponent'; +import type { GridSlotProps } from '../models/gridSlotsComponentsProps'; import MUISelectOption from './components/MUISelectOption'; const iconSlots: GridIconSlotsComponent = { @@ -83,13 +87,12 @@ const iconSlots: GridIconSlotsComponent = { columnReorderIcon: GridDragIcon, }; -const materialSlots: GridBaseSlots & GridIconSlotsComponent = { - ...iconSlots, +const baseSlots: GridBaseSlots = { baseBadge: MUIBadge, baseCheckbox: MUICheckbox, baseDivider: MUIDivider, baseMenuList: MUIMenuList, - baseMenuItem: MUIMenuItem, + baseMenuItem: BaseMenuItem, baseTextField: MUITextField, baseFormControl: MUIFormControl, baseSelect: MUISelect, @@ -103,4 +106,21 @@ const materialSlots: GridBaseSlots & GridIconSlotsComponent = { baseChip: MUIChip, }; +const materialSlots: GridBaseSlots & GridIconSlotsComponent = { + ...baseSlots, + ...iconSlots, +}; + export default materialSlots; + +function BaseMenuItem(props: GridSlotProps['baseMenuItem']) { + const { inert, iconStart, iconEnd, children, ...other } = props; + if (inert) { + (other as any).disableRipple = true; + } + return React.createElement(MUIMenuItem, other, [ + iconStart && {iconStart}, + {children}, + iconEnd && {iconEnd}, + ]); +} diff --git a/packages/x-data-grid/src/models/gridSlotsComponentsProps.ts b/packages/x-data-grid/src/models/gridSlotsComponentsProps.ts index 8b709b41a55b..ecc364336082 100644 --- a/packages/x-data-grid/src/models/gridSlotsComponentsProps.ts +++ b/packages/x-data-grid/src/models/gridSlotsComponentsProps.ts @@ -2,7 +2,6 @@ import * as React from 'react'; import type { BadgeProps } from '@mui/material/Badge'; import type { CheckboxProps } from '@mui/material/Checkbox'; import type { MenuListProps } from '@mui/material/MenuList'; -import type { MenuItemProps } from '@mui/material/MenuItem'; import type { TextFieldProps } from '@mui/material/TextField'; import type { FormControlProps } from '@mui/material/FormControl'; import type { SelectProps } from '@mui/material/Select'; @@ -36,6 +35,19 @@ import type { GridColumnHeaderSortIconProps } from '../components/columnHeaders/ type DividerProps = {}; +type MenuItemProps = { + autoFocus?: boolean; + children: React.ReactNode; + /** For items that aren't interactive themselves (but may contain an interactive widget) */ + inert?: boolean; + disabled?: boolean; + onClick?: React.MouseEventHandler; + iconStart?: React.ReactNode; + iconEnd?: React.ReactNode; + selected?: boolean; + value?: number | string | readonly string[]; +}; + // Overrides for module augmentation export interface BaseBadgePropsOverrides {} export interface BaseCheckboxPropsOverrides {} diff --git a/packages/x-tree-view/src/internals/models/plugin.ts b/packages/x-tree-view/src/internals/models/plugin.ts index 327133b1dfa8..6b8bd4d8dd63 100644 --- a/packages/x-tree-view/src/internals/models/plugin.ts +++ b/packages/x-tree-view/src/internals/models/plugin.ts @@ -112,7 +112,7 @@ type PluginPropertyWithDependencies< export type TreeViewUsedParams = PluginPropertyWithDependencies; -type TreeViewUsedDefaultizedParams = +export type TreeViewUsedDefaultizedParams = PluginPropertyWithDependencies; export type TreeViewUsedInstance = diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.ts index 07523fbba84b..1871b09fd45f 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.ts +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.ts @@ -24,3 +24,13 @@ export const selectorIsItemExpandable = createSelector( [selectorItemMeta], (itemMeta) => itemMeta?.expandable ?? false, ); + +/** + * Get the slot that triggers the item's expansion when clicked. + * @param {TreeViewState<[UseTreeViewExpansionSignature]>} state The state of the tree view. + * @returns {'content' | 'iconContainer'} The slot that triggers the item's expansion when clicked. Is `null` if the item is not expandable. + */ +export const selectorItemExpansionTrigger = createSelector( + [selectorExpansion], + (expansionState) => expansionState.expansionTrigger, +); diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.ts index 985dca5daac1..a3b9723c4234 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.ts +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.ts @@ -5,7 +5,7 @@ import { TreeViewPlugin } from '../../models'; import { UseTreeViewExpansionSignature } from './useTreeViewExpansion.types'; import { TreeViewItemId } from '../../../models'; import { selectorIsItemExpandable, selectorIsItemExpanded } from './useTreeViewExpansion.selectors'; -import { createExpandedItemsMap } from './useTreeViewExpansion.utils'; +import { createExpandedItemsMap, getExpansionTrigger } from './useTreeViewExpansion.utils'; import { selectorItemMeta, selectorItemOrderedChildrenIds, @@ -16,19 +16,37 @@ export const useTreeViewExpansion: TreeViewPlugin store, params, models, - experimentalFeatures, }) => { - const isTreeViewEditable = Boolean(params.isItemEditable) && !!experimentalFeatures.labelEditing; - useEnhancedEffect(() => { store.update((prevState) => ({ ...prevState, expansion: { + ...prevState.expansion, expandedItemsMap: createExpandedItemsMap(models.expandedItems.value), }, })); }, [store, models.expandedItems.value]); + useEnhancedEffect(() => { + store.update((prevState) => { + const newExpansionTrigger = getExpansionTrigger({ + isItemEditable: params.isItemEditable, + expansionTrigger: params.expansionTrigger, + }); + if (prevState.expansion.expansionTrigger === newExpansionTrigger) { + return prevState; + } + + return { + ...prevState, + expansion: { + ...prevState.expansion, + expansionTrigger: newExpansionTrigger, + }, + }; + }); + }, [store, params.isItemEditable, params.expansionTrigger]); + const setExpandedItems = (event: React.SyntheticEvent, value: TreeViewItemId[]) => { params.onExpandedItemsChange?.(event, value); models.expandedItems.setControlledValue(value); @@ -89,27 +107,6 @@ export const useTreeViewExpansion: TreeViewPlugin } }; - const expansionTrigger = React.useMemo(() => { - if (params.expansionTrigger) { - return params.expansionTrigger; - } - - if (isTreeViewEditable) { - return 'iconContainer'; - } - - return 'content'; - }, [params.expansionTrigger, isTreeViewEditable]); - - const pluginContextValue = React.useMemo( - () => ({ - expansion: { - expansionTrigger, - }, - }), - [expansionTrigger], - ); - return { publicAPI: { setItemExpansion, @@ -119,7 +116,6 @@ export const useTreeViewExpansion: TreeViewPlugin toggleItemExpansion, expandAllSiblings, }, - contextValue: pluginContextValue, }; }; @@ -141,6 +137,7 @@ useTreeViewExpansion.getInitialState = (params) => ({ expandedItemsMap: createExpandedItemsMap( params.expandedItems === undefined ? params.defaultExpandedItems : params.expandedItems, ), + expansionTrigger: getExpansionTrigger(params), }, }); diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.ts index 70a75a3cad27..a903fa645bfa 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.ts +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.ts @@ -75,13 +75,10 @@ export type UseTreeViewExpansionDefaultizedParameters = DefaultizedProps< export interface UseTreeViewExpansionState { expansion: { expandedItemsMap: Map; + expansionTrigger: 'content' | 'iconContainer'; }; } -interface UseTreeViewExpansionContextValue { - expansion: Pick; -} - export type UseTreeViewExpansionSignature = TreeViewPluginSignature<{ params: UseTreeViewExpansionParameters; defaultizedParams: UseTreeViewExpansionDefaultizedParameters; @@ -89,7 +86,6 @@ export type UseTreeViewExpansionSignature = TreeViewPluginSignature<{ publicAPI: UseTreeViewExpansionPublicAPI; modelNames: 'expandedItems'; state: UseTreeViewExpansionState; - contextValue: UseTreeViewExpansionContextValue; dependencies: [UseTreeViewItemsSignature]; optionalDependencies: [UseTreeViewLabelSignature]; }>; diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.utils.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.utils.ts index 17303c07aeaa..45ae73e5a6f8 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.utils.ts +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.utils.ts @@ -1,4 +1,6 @@ import { TreeViewItemId } from '../../../models'; +import { TreeViewUsedDefaultizedParams } from '../../models'; +import { UseTreeViewExpansionSignature } from './useTreeViewExpansion.types'; export const createExpandedItemsMap = (expandedItems: string[]) => { const expandedItemsMap = new Map(); @@ -8,3 +10,21 @@ export const createExpandedItemsMap = (expandedItems: string[]) => { return expandedItemsMap; }; + +export const getExpansionTrigger = ({ + isItemEditable, + expansionTrigger, +}: Pick< + TreeViewUsedDefaultizedParams, + 'isItemEditable' | 'expansionTrigger' +>) => { + if (expansionTrigger) { + return expansionTrigger; + } + + if (isItemEditable) { + return 'iconContainer'; + } + + return 'content'; +}; diff --git a/packages/x-tree-view/src/useTreeItem/useTreeItem.ts b/packages/x-tree-view/src/useTreeItem/useTreeItem.ts index 0f294e8a4012..5d7d29ffb3e2 100644 --- a/packages/x-tree-view/src/useTreeItem/useTreeItem.ts +++ b/packages/x-tree-view/src/useTreeItem/useTreeItem.ts @@ -30,6 +30,7 @@ import { selectorIsItemTheDefaultFocusableItem } from '../internals/plugins/useT import { generateTreeItemIdAttribute } from '../internals/corePlugins/useTreeViewId/useTreeViewId.utils'; import { selectorCanItemBeFocused } from '../internals/plugins/useTreeViewItems/useTreeViewItems.selectors'; import { selectorTreeViewId } from '../internals/corePlugins/useTreeViewId/useTreeViewId.selectors'; +import { selectorItemExpansionTrigger } from '../internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors'; export const useTreeItem = < TSignatures extends UseTreeItemMinimalPlugins = UseTreeItemMinimalPlugins, @@ -41,7 +42,6 @@ export const useTreeItem = < runItemPlugins, items: { onItemClick }, selection: { disableSelection, checkboxSelection }, - expansion: { expansionTrigger }, label: labelContext, instance, publicAPI, @@ -162,7 +162,7 @@ export const useTreeItem = < if (event.defaultMuiPrevented || checkboxRef.current?.contains(event.target as HTMLElement)) { return; } - if (expansionTrigger === 'content') { + if (selectorItemExpansionTrigger(store.value) === 'content') { interactions.handleExpansion(event); } @@ -190,7 +190,7 @@ export const useTreeItem = < if (event.defaultMuiPrevented) { return; } - if (expansionTrigger === 'iconContainer') { + if (selectorItemExpansionTrigger(store.value) === 'iconContainer') { interactions.handleExpansion(event); } }; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 546cada3c848..ce3ce2250a35 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -6,7 +6,7 @@ settings: overrides: react-is: ^18.3.1 - '@types/node': ^20.17.9 + '@types/node': ^20.17.10 patchedDependencies: babel-plugin-replace-imports@1.0.2: @@ -105,8 +105,8 @@ importers: specifier: ^5.16.8 version: 5.16.8(@types/react@18.3.14)(react@18.3.1) '@next/eslint-plugin-next': - specifier: 15.0.4 - version: 15.0.4 + specifier: 15.1.0 + version: 15.1.0 '@octokit/plugin-retry': specifier: ^7.1.2 version: 7.1.2(@octokit/core@4.2.4(encoding@0.1.13)) @@ -114,8 +114,8 @@ importers: specifier: ^21.0.2 version: 21.0.2 '@playwright/test': - specifier: ^1.49.0 - version: 1.49.0 + specifier: ^1.49.1 + version: 1.49.1 '@types/babel__core': specifier: ^7.20.5 version: 7.20.5 @@ -141,8 +141,8 @@ importers: specifier: ^10.0.10 version: 10.0.10 '@types/node': - specifier: ^20.17.9 - version: 20.17.9 + specifier: ^20.17.10 + version: 20.17.10 '@types/react': specifier: ^18.3.14 version: 18.3.14 @@ -234,14 +234,14 @@ importers: specifier: ^9.1.0 version: 9.1.0(eslint@8.57.1) eslint-import-resolver-webpack: - specifier: ^0.13.9 - version: 0.13.9(eslint-plugin-import@2.31.0)(webpack@5.97.1) + specifier: ^0.13.10 + version: 0.13.10(eslint-plugin-import@2.31.0)(webpack@5.97.1) eslint-plugin-filenames: specifier: ^1.3.2 version: 1.3.2(eslint@8.57.1) eslint-plugin-import: specifier: ^2.31.0 - version: 2.31.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.7.2))(eslint-import-resolver-webpack@0.13.9)(eslint@8.57.1) + version: 2.31.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.7.2))(eslint-import-resolver-webpack@0.13.10)(eslint@8.57.1) eslint-plugin-jsdoc: specifier: ^50.6.0 version: 50.6.0(eslint@8.57.1) @@ -372,8 +372,8 @@ importers: specifier: ^3.1.0 version: 3.1.0(webpack@5.97.1) terser-webpack-plugin: - specifier: ^5.3.10 - version: 5.3.10(@swc/core@1.9.3(@swc/helpers@0.5.5))(webpack@5.97.1) + specifier: ^5.3.11 + version: 5.3.11(@swc/core@1.9.3(@swc/helpers@0.5.5))(webpack@5.97.1) tsx: specifier: ^4.19.2 version: 4.19.2 @@ -427,7 +427,7 @@ importers: version: 11.13.5(@emotion/react@11.13.5(@types/react@18.3.14)(react@18.3.1))(@types/react@18.3.14)(react@18.3.1) '@mui/docs': specifier: 6.1.10 - version: 6.1.10(4eqodambaf55mpgx5qj7mrivui) + version: 6.1.10(67ymjjjvxlbxemkxt6bldcxovm) '@mui/icons-material': specifier: ^5.16.9 version: 5.16.9(@mui/material@5.16.9(@emotion/react@11.13.5(@types/react@18.3.14)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.14)(react@18.3.1))(@types/react@18.3.14)(react@18.3.1))(@types/react@18.3.14)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.14)(react@18.3.1) @@ -442,7 +442,7 @@ importers: version: 5.16.9(@emotion/react@11.13.5(@types/react@18.3.14)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.14)(react@18.3.1))(@types/react@18.3.14)(react@18.3.1))(@types/react@18.3.14)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/material-nextjs': specifier: ^5.16.8 - version: 5.16.8(@emotion/cache@11.13.5)(@emotion/server@11.11.0)(@mui/material@5.16.9(@emotion/react@11.13.5(@types/react@18.3.14)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.14)(react@18.3.1))(@types/react@18.3.14)(react@18.3.1))(@types/react@18.3.14)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.14)(next@14.2.20(@babel/core@7.26.0)(@playwright/test@1.49.0)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) + version: 5.16.8(@emotion/cache@11.13.5)(@emotion/server@11.11.0)(@mui/material@5.16.9(@emotion/react@11.13.5(@types/react@18.3.14)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.14)(react@18.3.1))(@types/react@18.3.14)(react@18.3.1))(@types/react@18.3.14)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.14)(next@14.2.20(@babel/core@7.26.0)(@playwright/test@1.49.1)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) '@mui/styles': specifier: ^5.16.9 version: 5.16.9(@types/react@18.3.14)(react@18.3.1) @@ -574,7 +574,7 @@ importers: version: 0.5.46 next: specifier: ^14.2.20 - version: 14.2.20(@babel/core@7.26.0)(@playwright/test@1.49.0)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 14.2.20(@babel/core@7.26.0)(@playwright/test@1.49.1)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) nprogress: specifier: ^0.2.0 version: 0.2.0 @@ -725,8 +725,8 @@ importers: specifier: ^10.0.10 version: 10.0.10 '@types/node': - specifier: ^20.17.9 - version: 20.17.9 + specifier: ^20.17.10 + version: 20.17.10 packages/x-charts: dependencies: @@ -795,7 +795,7 @@ importers: specifier: ^15.7.14 version: 15.7.14 '@types/react-is': - specifier: ^18.3.0 + specifier: ^18.3.1 version: 18.3.1 '@types/use-sync-external-store': specifier: ^0.0.6 @@ -1595,8 +1595,8 @@ importers: specifier: workspace:* version: link:../packages/x-license/build '@playwright/test': - specifier: ^1.49.0 - version: 1.49.0 + specifier: ^1.49.1 + version: 1.49.1 '@react-spring/web': specifier: ^9.7.5 version: 9.7.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -1656,7 +1656,7 @@ importers: devDependencies: '@codspeed/vitest-plugin': specifier: ^3.1.1 - version: 3.1.1(vite@5.4.11(@types/node@20.17.9)(terser@5.36.0))(vitest@2.1.8) + version: 3.1.1(vite@5.4.11(@types/node@20.17.10)(terser@5.36.0))(vitest@2.1.8) '@emotion/react': specifier: ^11.13.5 version: 11.13.5(@types/react@18.3.14)(react@18.3.1) @@ -1677,13 +1677,13 @@ importers: version: 14.5.2(@testing-library/dom@10.4.0) '@vitejs/plugin-react': specifier: ^4.3.4 - version: 4.3.4(vite@5.4.11(@types/node@20.17.9)(terser@5.36.0)) + version: 4.3.4(vite@5.4.11(@types/node@20.17.10)(terser@5.36.0)) '@vitejs/plugin-react-swc': specifier: ^3.7.2 - version: 3.7.2(@swc/helpers@0.5.5)(vite@5.4.11(@types/node@20.17.9)(terser@5.36.0)) + version: 3.7.2(@swc/helpers@0.5.5)(vite@5.4.11(@types/node@20.17.10)(terser@5.36.0)) '@vitest/browser': specifier: 2.1.8 - version: 2.1.8(@types/node@20.17.9)(playwright@1.49.0)(typescript@5.7.2)(vite@5.4.11(@types/node@20.17.9)(terser@5.36.0))(vitest@2.1.8) + version: 2.1.8(@types/node@20.17.10)(playwright@1.49.1)(typescript@5.7.2)(vite@5.4.11(@types/node@20.17.10)(terser@5.36.0))(vitest@2.1.8) '@vitest/ui': specifier: 2.1.8 version: 2.1.8(vitest@2.1.8) @@ -1698,7 +1698,7 @@ importers: version: 18.3.1(react@18.3.1) vitest: specifier: 2.1.8 - version: 2.1.8(@types/node@20.17.9)(@vitest/browser@2.1.8)(@vitest/ui@2.1.8)(jsdom@25.0.1)(msw@2.6.6(@types/node@20.17.9)(typescript@5.7.2))(terser@5.36.0) + version: 2.1.8(@types/node@20.17.10)(@vitest/browser@2.1.8)(@vitest/ui@2.1.8)(jsdom@25.0.1)(msw@2.6.6(@types/node@20.17.10)(typescript@5.7.2))(terser@5.36.0) packages: @@ -3026,7 +3026,7 @@ packages: resolution: {integrity: sha512-KJLUHOaKnNCYzwVbryj3TNBxyZIrr56fR5N45v6K9IPrbT6B7DcudBMfylkV1A8PUdJE15mybkEQyp2/ZUpxUA==} engines: {node: '>=18'} peerDependencies: - '@types/node': ^20.17.9 + '@types/node': ^20.17.10 '@inquirer/core@10.1.0': resolution: {integrity: sha512-I+ETk2AL+yAVbvuKx5AJpQmoaWhpiTFOg/UJb7ZkMAK4blmtG8ATh5ct+T/8xNld0CZG/2UhtkdMwpgvld92XQ==} @@ -3040,7 +3040,7 @@ packages: resolution: {integrity: sha512-+ksJMIy92sOAiAccGpcKZUc3bYO07cADnscIxHBknEm3uNts3movSmBofc1908BNy5edKscxYeAdaX1NXkHS6A==} engines: {node: '>=18'} peerDependencies: - '@types/node': ^20.17.9 + '@types/node': ^20.17.10 '@isaacs/cliui@8.0.2': resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} @@ -3312,8 +3312,8 @@ packages: '@next/env@14.2.20': resolution: {integrity: sha512-JfDpuOCB0UBKlEgEy/H6qcBSzHimn/YWjUHzKl1jMeUO+QVRdzmTTl8gFJaNO87c8DXmVKhFCtwxQ9acqB3+Pw==} - '@next/eslint-plugin-next@15.0.4': - resolution: {integrity: sha512-rbsF17XGzHtR7SDWzWpavSfum3/UdnF8bAaisnKwP//si3KWPTedVUsflAdjyK1zW3rweBjbALfKcavFneLGvg==} + '@next/eslint-plugin-next@15.1.0': + resolution: {integrity: sha512-+jPT0h+nelBT6HC9ZCHGc7DgGVy04cv4shYdAe6tKlEbjQUtwU3LzQhzbDHQyY2m6g39m6B0kOFVuLGBrxxbGg==} '@next/swc-darwin-arm64@14.2.20': resolution: {integrity: sha512-WDfq7bmROa5cIlk6ZNonNdVhKmbCv38XteVFYsxea1vDJt3SnYGgxLGMTXQNfs5OkFvAhmfKKrwe7Y0Hs+rWOg==} @@ -3721,8 +3721,8 @@ packages: resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} - '@playwright/test@1.49.0': - resolution: {integrity: sha512-DMulbwQURa8rNIQrf94+jPJQ4FmOVdpE5ZppRNvWVjvhC+6sOeo28r8MgIpQRYouXRtt/FCCXU7zn20jnHR4Qw==} + '@playwright/test@1.49.1': + resolution: {integrity: sha512-Ky+BVzPz8pL6PQxHqNRW1k3mIyv933LML7HktS8uik0bUXNCdPhoS/kLihiO1tMf/egaJb4IutXd7UywvXEW+g==} engines: {node: '>=18'} hasBin: true @@ -4220,8 +4220,8 @@ packages: '@types/ms@0.7.34': resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} - '@types/node@20.17.9': - resolution: {integrity: sha512-0JOXkRyLanfGPE2QRCwgxhzlBAvaRdCNMcvbd7jFfpmD4eEXll7LRwy5ymJmyeZqk7Nh7eD2LeUyQ68BbndmXw==} + '@types/node@20.17.10': + resolution: {integrity: sha512-/jrvh5h6NXhEauFFexRin69nA0uHJ5gwk4iDivp/DeoEua3uwCUto6PC86IpRITBOs4+6i2I56K5x5b6WYGXHA==} '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} @@ -6013,8 +6013,8 @@ packages: eslint-import-resolver-node@0.3.9: resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} - eslint-import-resolver-webpack@0.13.9: - resolution: {integrity: sha512-yGngeefNiHXau2yzKKs2BNON4HLpxBabY40BGL/vUSKZtqzjlVsTTZm57jhHULhm+mJEwKsEIIN3NXup5AiiBQ==} + eslint-import-resolver-webpack@0.13.10: + resolution: {integrity: sha512-ciVTEg7sA56wRMR772PyjcBRmyBMLS46xgzQZqt6cWBEKc7cK65ZSSLCTLVRu2gGtKyXUb5stwf4xxLBfERLFA==} engines: {node: '>= 6'} peerDependencies: eslint-plugin-import: '>=1.4.0' @@ -8646,13 +8646,13 @@ packages: resolution: {integrity: sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==} engines: {node: '>=8'} - playwright-core@1.49.0: - resolution: {integrity: sha512-R+3KKTQF3npy5GTiKH/T+kdhoJfJojjHESR1YEWhYuEKRVfVaxH3+4+GvXE5xyCngCxhxnykk0Vlah9v8fs3jA==} + playwright-core@1.49.1: + resolution: {integrity: sha512-BzmpVcs4kE2CH15rWfzpjzVGhWERJfmnXmniSyKeRZUs9Ws65m+RGIi7mjJK/euCegfn3i7jvqWeWyHe9y3Vgg==} engines: {node: '>=18'} hasBin: true - playwright@1.49.0: - resolution: {integrity: sha512-eKpmys0UFDnfNb3vfsf8Vx2LEOtflgRebl0Im2eQQnYMA4Aqd+Zw8bEOB+7ZKvN76901mRnqdsiOGKxzVTbi7A==} + playwright@1.49.1: + resolution: {integrity: sha512-VYL8zLoNTBxVOrJBbDuRgDWa3i+mfQgDTrL8Ah9QXZ7ax4Dsj0MSq5bYgytRnDVVe+njoKnfsYkH3HzqVj5UZA==} engines: {node: '>=18'} hasBin: true @@ -9180,9 +9180,9 @@ packages: resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} engines: {node: '>= 10.13.0'} - schema-utils@4.2.0: - resolution: {integrity: sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==} - engines: {node: '>= 12.13.0'} + schema-utils@4.3.0: + resolution: {integrity: sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==} + engines: {node: '>= 10.13.0'} search-insights@2.17.3: resolution: {integrity: sha512-RQPdCYTa8A68uM2jwxoY842xDhvx3E5LFL1LxvxCNMev4o5mLuokczhzjAgGwUZBAmOKZknArSxLKmXtIi2AxQ==} @@ -9594,8 +9594,8 @@ packages: resolution: {integrity: sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==} engines: {node: '>=4'} - terser-webpack-plugin@5.3.10: - resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} + terser-webpack-plugin@5.3.11: + resolution: {integrity: sha512-RVCsMfuD0+cTt3EwX8hSl2Ks56EbFHWmhluwcqoPKtBnfjiT6olaq7PRIRfhyU8nnC2MrnDrBLfrD/RGE+cVXQ==} engines: {node: '>= 10.13.0'} peerDependencies: '@swc/core': '*' @@ -10044,7 +10044,7 @@ packages: engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: - '@types/node': ^20.17.9 + '@types/node': ^20.17.10 less: '*' lightningcss: ^1.21.0 sass: '*' @@ -10076,7 +10076,7 @@ packages: hasBin: true peerDependencies: '@edge-runtime/vm': '*' - '@types/node': ^20.17.9 + '@types/node': ^20.17.10 '@vitest/browser': 2.1.8 '@vitest/ui': 2.1.8 happy-dom: '*' @@ -11404,11 +11404,11 @@ snapshots: transitivePeerDependencies: - debug - '@codspeed/vitest-plugin@3.1.1(vite@5.4.11(@types/node@20.17.9)(terser@5.36.0))(vitest@2.1.8)': + '@codspeed/vitest-plugin@3.1.1(vite@5.4.11(@types/node@20.17.10)(terser@5.36.0))(vitest@2.1.8)': dependencies: '@codspeed/core': 3.1.1 - vite: 5.4.11(@types/node@20.17.9)(terser@5.36.0) - vitest: 2.1.8(@types/node@20.17.9)(@vitest/browser@2.1.8)(@vitest/ui@2.1.8)(jsdom@25.0.1)(msw@2.6.6(@types/node@20.17.9)(typescript@5.7.2))(terser@5.36.0) + vite: 5.4.11(@types/node@20.17.10)(terser@5.36.0) + vitest: 2.1.8(@types/node@20.17.10)(@vitest/browser@2.1.8)(@vitest/ui@2.1.8)(jsdom@25.0.1)(msw@2.6.6(@types/node@20.17.10)(typescript@5.7.2))(terser@5.36.0) transitivePeerDependencies: - debug @@ -11715,7 +11715,7 @@ snapshots: '@fast-csv/format@4.3.5': dependencies: - '@types/node': 20.17.9 + '@types/node': 20.17.10 lodash.escaperegexp: 4.1.2 lodash.isboolean: 3.0.3 lodash.isequal: 4.5.0 @@ -11724,7 +11724,7 @@ snapshots: '@fast-csv/parse@4.3.6': dependencies: - '@types/node': 20.17.9 + '@types/node': 20.17.10 lodash.escaperegexp: 4.1.2 lodash.groupby: 4.6.0 lodash.isfunction: 3.0.9 @@ -11863,16 +11863,16 @@ snapshots: '@img/sharp-win32-x64@0.33.5': optional: true - '@inquirer/confirm@5.0.2(@types/node@20.17.9)': + '@inquirer/confirm@5.0.2(@types/node@20.17.10)': dependencies: - '@inquirer/core': 10.1.0(@types/node@20.17.9) - '@inquirer/type': 3.0.1(@types/node@20.17.9) - '@types/node': 20.17.9 + '@inquirer/core': 10.1.0(@types/node@20.17.10) + '@inquirer/type': 3.0.1(@types/node@20.17.10) + '@types/node': 20.17.10 - '@inquirer/core@10.1.0(@types/node@20.17.9)': + '@inquirer/core@10.1.0(@types/node@20.17.10)': dependencies: '@inquirer/figures': 1.0.8 - '@inquirer/type': 3.0.1(@types/node@20.17.9) + '@inquirer/type': 3.0.1(@types/node@20.17.10) ansi-escapes: 4.3.2 cli-width: 4.1.0 mute-stream: 2.0.0 @@ -11885,9 +11885,9 @@ snapshots: '@inquirer/figures@1.0.8': {} - '@inquirer/type@3.0.1(@types/node@20.17.9)': + '@inquirer/type@3.0.1(@types/node@20.17.10)': dependencies: - '@types/node': 20.17.9 + '@types/node': 20.17.10 '@isaacs/cliui@8.0.2': dependencies: @@ -12044,7 +12044,7 @@ snapshots: '@mui/core-downloads-tracker@5.16.9': {} - '@mui/docs@6.1.10(4eqodambaf55mpgx5qj7mrivui)': + '@mui/docs@6.1.10(67ymjjjvxlbxemkxt6bldcxovm)': dependencies: '@babel/runtime': 7.26.0 '@mui/base': 5.0.0-beta.40(@types/react@18.3.14)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -12056,7 +12056,7 @@ snapshots: clipboard-copy: 4.0.1 clsx: 2.1.1 csstype: 3.1.3 - next: 14.2.20(@babel/core@7.26.0)(@playwright/test@1.49.0)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + next: 14.2.20(@babel/core@7.26.0)(@playwright/test@1.49.1)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) nprogress: 0.2.0 prop-types: 15.8.1 react: 18.3.1 @@ -12122,7 +12122,7 @@ snapshots: jsdom: 25.0.1 lodash: 4.17.21 mocha: 10.8.2 - playwright: 1.49.0 + playwright: 1.49.1 prop-types: 15.8.1 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -12170,11 +12170,11 @@ snapshots: '@emotion/styled': 11.13.5(@emotion/react@11.13.5(@types/react@18.3.14)(react@18.3.1))(@types/react@18.3.14)(react@18.3.1) '@types/react': 18.3.14 - '@mui/material-nextjs@5.16.8(@emotion/cache@11.13.5)(@emotion/server@11.11.0)(@mui/material@5.16.9(@emotion/react@11.13.5(@types/react@18.3.14)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.14)(react@18.3.1))(@types/react@18.3.14)(react@18.3.1))(@types/react@18.3.14)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.14)(next@14.2.20(@babel/core@7.26.0)(@playwright/test@1.49.0)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)': + '@mui/material-nextjs@5.16.8(@emotion/cache@11.13.5)(@emotion/server@11.11.0)(@mui/material@5.16.9(@emotion/react@11.13.5(@types/react@18.3.14)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.14)(react@18.3.1))(@types/react@18.3.14)(react@18.3.1))(@types/react@18.3.14)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.14)(next@14.2.20(@babel/core@7.26.0)(@playwright/test@1.49.1)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.26.0 '@mui/material': 5.16.9(@emotion/react@11.13.5(@types/react@18.3.14)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.14)(react@18.3.1))(@types/react@18.3.14)(react@18.3.1))(@types/react@18.3.14)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - next: 14.2.20(@babel/core@7.26.0)(@playwright/test@1.49.0)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + next: 14.2.20(@babel/core@7.26.0)(@playwright/test@1.49.1)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 optionalDependencies: '@emotion/cache': 11.13.5 @@ -12310,7 +12310,7 @@ snapshots: '@next/env@14.2.20': {} - '@next/eslint-plugin-next@15.0.4': + '@next/eslint-plugin-next@15.1.0': dependencies: fast-glob: 3.3.1 @@ -12822,9 +12822,9 @@ snapshots: '@pkgr/core@0.1.1': {} - '@playwright/test@1.49.0': + '@playwright/test@1.49.1': dependencies: - playwright: 1.49.0 + playwright: 1.49.1 '@polka/url@1.0.0-next.28': {} @@ -12997,14 +12997,14 @@ snapshots: '@slack/logger@4.0.0': dependencies: - '@types/node': 20.17.9 + '@types/node': 20.17.10 '@slack/oauth@3.0.1': dependencies: '@slack/logger': 4.0.0 '@slack/web-api': 7.7.0 '@types/jsonwebtoken': 9.0.7 - '@types/node': 20.17.9 + '@types/node': 20.17.10 jsonwebtoken: 9.0.2 lodash.isstring: 4.0.1 transitivePeerDependencies: @@ -13014,7 +13014,7 @@ snapshots: dependencies: '@slack/logger': 4.0.0 '@slack/web-api': 7.7.0 - '@types/node': 20.17.9 + '@types/node': 20.17.10 '@types/ws': 8.5.13 eventemitter3: 5.0.1 ws: 8.18.0 @@ -13029,7 +13029,7 @@ snapshots: dependencies: '@slack/logger': 4.0.0 '@slack/types': 2.14.0 - '@types/node': 20.17.9 + '@types/node': 20.17.10 '@types/retry': 0.12.0 axios: 1.7.8(debug@4.3.7) eventemitter3: 5.0.1 @@ -13178,7 +13178,7 @@ snapshots: '@types/body-parser@1.19.5': dependencies: '@types/connect': 3.4.38 - '@types/node': 20.17.9 + '@types/node': 20.17.10 '@types/chai-dom@1.11.3': dependencies: @@ -13190,7 +13190,7 @@ snapshots: '@types/connect@3.4.38': dependencies: - '@types/node': 20.17.9 + '@types/node': 20.17.10 '@types/cookie@0.4.1': {} @@ -13198,7 +13198,7 @@ snapshots: '@types/cors@2.8.17': dependencies: - '@types/node': 20.17.9 + '@types/node': 20.17.10 '@types/d3-array@3.2.1': {} @@ -13248,7 +13248,7 @@ snapshots: '@types/express-serve-static-core@4.19.6': dependencies: - '@types/node': 20.17.9 + '@types/node': 20.17.10 '@types/qs': 6.9.17 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 @@ -13265,7 +13265,7 @@ snapshots: '@types/fs-extra@11.0.4': dependencies: '@types/jsonfile': 6.1.4 - '@types/node': 20.17.9 + '@types/node': 20.17.10 '@types/gtag.js@0.0.20': {} @@ -13288,15 +13288,15 @@ snapshots: '@types/jsonfile@6.1.4': dependencies: - '@types/node': 20.17.9 + '@types/node': 20.17.10 '@types/jsonwebtoken@9.0.7': dependencies: - '@types/node': 20.17.9 + '@types/node': 20.17.10 '@types/karma@6.3.9': dependencies: - '@types/node': 20.17.9 + '@types/node': 20.17.10 log4js: 6.9.1 transitivePeerDependencies: - supports-color @@ -13327,7 +13327,7 @@ snapshots: '@types/ms@0.7.34': {} - '@types/node@20.17.9': + '@types/node@20.17.10': dependencies: undici-types: 6.19.8 @@ -13378,12 +13378,12 @@ snapshots: '@types/send@0.17.4': dependencies: '@types/mime': 1.3.5 - '@types/node': 20.17.9 + '@types/node': 20.17.10 '@types/serve-static@1.15.7': dependencies: '@types/http-errors': 2.0.4 - '@types/node': 20.17.9 + '@types/node': 20.17.10 '@types/send': 0.17.4 '@types/sinon@17.0.3': @@ -13406,7 +13406,7 @@ snapshots: '@types/webpack-bundle-analyzer@4.7.0(@swc/core@1.9.3(@swc/helpers@0.5.5))(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.97.1))': dependencies: - '@types/node': 20.17.9 + '@types/node': 20.17.10 tapable: 2.2.1 webpack: 5.97.1(@swc/core@1.9.3(@swc/helpers@0.5.5))(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.97.1)) transitivePeerDependencies: @@ -13417,7 +13417,7 @@ snapshots: '@types/ws@8.5.13': dependencies: - '@types/node': 20.17.9 + '@types/node': 20.17.10 '@types/yargs-parser@21.0.3': {} @@ -13547,38 +13547,38 @@ snapshots: '@ungap/structured-clone@1.2.0': {} - '@vitejs/plugin-react-swc@3.7.2(@swc/helpers@0.5.5)(vite@5.4.11(@types/node@20.17.9)(terser@5.36.0))': + '@vitejs/plugin-react-swc@3.7.2(@swc/helpers@0.5.5)(vite@5.4.11(@types/node@20.17.10)(terser@5.36.0))': dependencies: '@swc/core': 1.9.3(@swc/helpers@0.5.5) - vite: 5.4.11(@types/node@20.17.9)(terser@5.36.0) + vite: 5.4.11(@types/node@20.17.10)(terser@5.36.0) transitivePeerDependencies: - '@swc/helpers' - '@vitejs/plugin-react@4.3.4(vite@5.4.11(@types/node@20.17.9)(terser@5.36.0))': + '@vitejs/plugin-react@4.3.4(vite@5.4.11(@types/node@20.17.10)(terser@5.36.0))': dependencies: '@babel/core': 7.26.0 '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.0) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 - vite: 5.4.11(@types/node@20.17.9)(terser@5.36.0) + vite: 5.4.11(@types/node@20.17.10)(terser@5.36.0) transitivePeerDependencies: - supports-color - '@vitest/browser@2.1.8(@types/node@20.17.9)(playwright@1.49.0)(typescript@5.7.2)(vite@5.4.11(@types/node@20.17.9)(terser@5.36.0))(vitest@2.1.8)': + '@vitest/browser@2.1.8(@types/node@20.17.10)(playwright@1.49.1)(typescript@5.7.2)(vite@5.4.11(@types/node@20.17.10)(terser@5.36.0))(vitest@2.1.8)': dependencies: '@testing-library/dom': 10.4.0 '@testing-library/user-event': 14.5.2(@testing-library/dom@10.4.0) - '@vitest/mocker': 2.1.8(msw@2.6.6(@types/node@20.17.9)(typescript@5.7.2))(vite@5.4.11(@types/node@20.17.9)(terser@5.36.0)) + '@vitest/mocker': 2.1.8(msw@2.6.6(@types/node@20.17.10)(typescript@5.7.2))(vite@5.4.11(@types/node@20.17.10)(terser@5.36.0)) '@vitest/utils': 2.1.8 magic-string: 0.30.14 - msw: 2.6.6(@types/node@20.17.9)(typescript@5.7.2) + msw: 2.6.6(@types/node@20.17.10)(typescript@5.7.2) sirv: 3.0.0 tinyrainbow: 1.2.0 - vitest: 2.1.8(@types/node@20.17.9)(@vitest/browser@2.1.8)(@vitest/ui@2.1.8)(jsdom@25.0.1)(msw@2.6.6(@types/node@20.17.9)(typescript@5.7.2))(terser@5.36.0) + vitest: 2.1.8(@types/node@20.17.10)(@vitest/browser@2.1.8)(@vitest/ui@2.1.8)(jsdom@25.0.1)(msw@2.6.6(@types/node@20.17.10)(typescript@5.7.2))(terser@5.36.0) ws: 8.18.0 optionalDependencies: - playwright: 1.49.0 + playwright: 1.49.1 transitivePeerDependencies: - '@types/node' - bufferutil @@ -13593,14 +13593,14 @@ snapshots: chai: 5.1.2 tinyrainbow: 1.2.0 - '@vitest/mocker@2.1.8(msw@2.6.6(@types/node@20.17.9)(typescript@5.7.2))(vite@5.4.11(@types/node@20.17.9)(terser@5.36.0))': + '@vitest/mocker@2.1.8(msw@2.6.6(@types/node@20.17.10)(typescript@5.7.2))(vite@5.4.11(@types/node@20.17.10)(terser@5.36.0))': dependencies: '@vitest/spy': 2.1.8 estree-walker: 3.0.3 magic-string: 0.30.14 optionalDependencies: - msw: 2.6.6(@types/node@20.17.9)(typescript@5.7.2) - vite: 5.4.11(@types/node@20.17.9)(terser@5.36.0) + msw: 2.6.6(@types/node@20.17.10)(typescript@5.7.2) + vite: 5.4.11(@types/node@20.17.10)(terser@5.36.0) '@vitest/pretty-format@2.1.8': dependencies: @@ -13630,7 +13630,7 @@ snapshots: sirv: 3.0.0 tinyglobby: 0.2.10 tinyrainbow: 1.2.0 - vitest: 2.1.8(@types/node@20.17.9)(@vitest/browser@2.1.8)(@vitest/ui@2.1.8)(jsdom@25.0.1)(msw@2.6.6(@types/node@20.17.9)(typescript@5.7.2))(terser@5.36.0) + vitest: 2.1.8(@types/node@20.17.10)(@vitest/browser@2.1.8)(@vitest/ui@2.1.8)(jsdom@25.0.1)(msw@2.6.6(@types/node@20.17.10)(typescript@5.7.2))(terser@5.36.0) '@vitest/utils@2.1.8': dependencies: @@ -14094,7 +14094,7 @@ snapshots: dependencies: '@babel/core': 7.26.0 find-cache-dir: 4.0.0 - schema-utils: 4.2.0 + schema-utils: 4.3.0 webpack: 5.97.1(@swc/core@1.9.3(@swc/helpers@0.5.5))(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.97.1)) babel-plugin-istanbul@7.0.0: @@ -14605,7 +14605,7 @@ snapshots: compression-webpack-plugin@11.1.0(webpack@5.97.1): dependencies: - schema-utils: 4.2.0 + schema-utils: 4.3.0 serialize-javascript: 6.0.2 webpack: 5.97.1(@swc/core@1.9.3(@swc/helpers@0.5.5))(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.97.1)) @@ -15189,7 +15189,7 @@ snapshots: dependencies: '@types/cookie': 0.4.1 '@types/cors': 2.8.17 - '@types/node': 20.17.9 + '@types/node': 20.17.10 accepts: 1.3.8 base64id: 2.0.0 cookie: 0.7.2 @@ -15412,7 +15412,7 @@ snapshots: dependencies: confusing-browser-globals: 1.0.11 eslint: 8.57.1 - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.7.2))(eslint-import-resolver-webpack@0.13.9)(eslint@8.57.1) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.7.2))(eslint-import-resolver-webpack@0.13.10)(eslint@8.57.1) object.assign: 4.1.5 object.entries: 1.1.8 semver: 6.3.1 @@ -15430,7 +15430,7 @@ snapshots: dependencies: eslint: 8.57.1 eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.31.0)(eslint@8.57.1) - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.7.2))(eslint-import-resolver-webpack@0.13.9)(eslint@8.57.1) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.7.2))(eslint-import-resolver-webpack@0.13.10)(eslint@8.57.1) eslint-plugin-jsx-a11y: 6.10.2(eslint@8.57.1) eslint-plugin-react: 7.37.2(eslint@8.57.1) eslint-plugin-react-hooks: 5.1.0(eslint@8.57.1) @@ -15449,11 +15449,11 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-webpack@0.13.9(eslint-plugin-import@2.31.0)(webpack@5.97.1): + eslint-import-resolver-webpack@0.13.10(eslint-plugin-import@2.31.0)(webpack@5.97.1): dependencies: debug: 3.2.7 enhanced-resolve: 0.9.1 - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.7.2))(eslint-import-resolver-webpack@0.13.9)(eslint@8.57.1) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.7.2))(eslint-import-resolver-webpack@0.13.10)(eslint@8.57.1) find-root: 1.1.0 hasown: 2.0.2 interpret: 1.4.0 @@ -15466,14 +15466,14 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-webpack@0.13.9)(eslint@8.57.1): + eslint-module-utils@2.12.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-webpack@0.13.10)(eslint@8.57.1): dependencies: debug: 3.2.7 optionalDependencies: '@typescript-eslint/parser': 7.18.0(eslint@8.57.1)(typescript@5.7.2) eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-webpack: 0.13.9(eslint-plugin-import@2.31.0)(webpack@5.97.1) + eslint-import-resolver-webpack: 0.13.10(eslint-plugin-import@2.31.0)(webpack@5.97.1) transitivePeerDependencies: - supports-color @@ -15485,7 +15485,7 @@ snapshots: lodash.snakecase: 4.1.1 lodash.upperfirst: 4.3.1 - eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.7.2))(eslint-import-resolver-webpack@0.13.9)(eslint@8.57.1): + eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.7.2))(eslint-import-resolver-webpack@0.13.10)(eslint@8.57.1): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.8 @@ -15496,7 +15496,7 @@ snapshots: doctrine: 2.1.0 eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-webpack@0.13.9)(eslint@8.57.1) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-webpack@0.13.10)(eslint@8.57.1) hasown: 2.0.2 is-core-module: 2.15.1 is-glob: 4.0.3 @@ -16902,7 +16902,7 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 20.17.9 + '@types/node': 20.17.10 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -17958,12 +17958,12 @@ snapshots: ms@2.1.3: {} - msw@2.6.6(@types/node@20.17.9)(typescript@5.7.2): + msw@2.6.6(@types/node@20.17.10)(typescript@5.7.2): dependencies: '@bundled-es-modules/cookie': 2.0.1 '@bundled-es-modules/statuses': 1.0.1 '@bundled-es-modules/tough-cookie': 0.1.6 - '@inquirer/confirm': 5.0.2(@types/node@20.17.9) + '@inquirer/confirm': 5.0.2(@types/node@20.17.10) '@mswjs/interceptors': 0.37.3 '@open-draft/deferred-promise': 2.2.0 '@open-draft/until': 2.1.0 @@ -18022,7 +18022,7 @@ snapshots: nested-error-stacks@2.1.1: {} - next@14.2.20(@babel/core@7.26.0)(@playwright/test@1.49.0)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + next@14.2.20(@babel/core@7.26.0)(@playwright/test@1.49.1)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: '@next/env': 14.2.20 '@swc/helpers': 0.5.5 @@ -18043,7 +18043,7 @@ snapshots: '@next/swc-win32-arm64-msvc': 14.2.20 '@next/swc-win32-ia32-msvc': 14.2.20 '@next/swc-win32-x64-msvc': 14.2.20 - '@playwright/test': 1.49.0 + '@playwright/test': 1.49.1 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros @@ -18686,11 +18686,11 @@ snapshots: dependencies: find-up: 3.0.0 - playwright-core@1.49.0: {} + playwright-core@1.49.1: {} - playwright@1.49.0: + playwright@1.49.1: dependencies: - playwright-core: 1.49.0 + playwright-core: 1.49.1 optionalDependencies: fsevents: 2.3.2 @@ -19280,7 +19280,7 @@ snapshots: ajv: 6.12.6 ajv-keywords: 3.5.2(ajv@6.12.6) - schema-utils@4.2.0: + schema-utils@4.3.0: dependencies: '@types/json-schema': 7.0.15 ajv: 8.17.1 @@ -19805,11 +19805,11 @@ snapshots: temp-dir@1.0.0: {} - terser-webpack-plugin@5.3.10(@swc/core@1.9.3(@swc/helpers@0.5.5))(webpack@5.97.1): + terser-webpack-plugin@5.3.11(@swc/core@1.9.3(@swc/helpers@0.5.5))(webpack@5.97.1): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 - schema-utils: 3.3.0 + schema-utils: 4.3.0 serialize-javascript: 6.0.2 terser: 5.36.0 webpack: 5.97.1(@swc/core@1.9.3(@swc/helpers@0.5.5))(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.97.1)) @@ -20221,13 +20221,13 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.2 - vite-node@2.1.8(@types/node@20.17.9)(terser@5.36.0): + vite-node@2.1.8(@types/node@20.17.10)(terser@5.36.0): dependencies: cac: 6.7.14 debug: 4.3.7(supports-color@8.1.1) es-module-lexer: 1.5.4 pathe: 1.1.2 - vite: 5.4.11(@types/node@20.17.9)(terser@5.36.0) + vite: 5.4.11(@types/node@20.17.10)(terser@5.36.0) transitivePeerDependencies: - '@types/node' - less @@ -20239,20 +20239,20 @@ snapshots: - supports-color - terser - vite@5.4.11(@types/node@20.17.9)(terser@5.36.0): + vite@5.4.11(@types/node@20.17.10)(terser@5.36.0): dependencies: esbuild: 0.21.5 postcss: 8.4.49 rollup: 4.28.0 optionalDependencies: - '@types/node': 20.17.9 + '@types/node': 20.17.10 fsevents: 2.3.3 terser: 5.36.0 - vitest@2.1.8(@types/node@20.17.9)(@vitest/browser@2.1.8)(@vitest/ui@2.1.8)(jsdom@25.0.1)(msw@2.6.6(@types/node@20.17.9)(typescript@5.7.2))(terser@5.36.0): + vitest@2.1.8(@types/node@20.17.10)(@vitest/browser@2.1.8)(@vitest/ui@2.1.8)(jsdom@25.0.1)(msw@2.6.6(@types/node@20.17.10)(typescript@5.7.2))(terser@5.36.0): dependencies: '@vitest/expect': 2.1.8 - '@vitest/mocker': 2.1.8(msw@2.6.6(@types/node@20.17.9)(typescript@5.7.2))(vite@5.4.11(@types/node@20.17.9)(terser@5.36.0)) + '@vitest/mocker': 2.1.8(msw@2.6.6(@types/node@20.17.10)(typescript@5.7.2))(vite@5.4.11(@types/node@20.17.10)(terser@5.36.0)) '@vitest/pretty-format': 2.1.8 '@vitest/runner': 2.1.8 '@vitest/snapshot': 2.1.8 @@ -20268,12 +20268,12 @@ snapshots: tinyexec: 0.3.1 tinypool: 1.0.2 tinyrainbow: 1.2.0 - vite: 5.4.11(@types/node@20.17.9)(terser@5.36.0) - vite-node: 2.1.8(@types/node@20.17.9)(terser@5.36.0) + vite: 5.4.11(@types/node@20.17.10)(terser@5.36.0) + vite-node: 2.1.8(@types/node@20.17.10)(terser@5.36.0) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 20.17.9 - '@vitest/browser': 2.1.8(@types/node@20.17.9)(playwright@1.49.0)(typescript@5.7.2)(vite@5.4.11(@types/node@20.17.9)(terser@5.36.0))(vitest@2.1.8) + '@types/node': 20.17.10 + '@vitest/browser': 2.1.8(@types/node@20.17.10)(playwright@1.49.1)(typescript@5.7.2)(vite@5.4.11(@types/node@20.17.10)(terser@5.36.0))(vitest@2.1.8) '@vitest/ui': 2.1.8(vitest@2.1.8) jsdom: 25.0.1 transitivePeerDependencies: @@ -20379,7 +20379,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(@swc/core@1.9.3(@swc/helpers@0.5.5))(webpack@5.97.1) + terser-webpack-plugin: 5.3.11(@swc/core@1.9.3(@swc/helpers@0.5.5))(webpack@5.97.1) watchpack: 2.4.2 webpack-sources: 3.2.3 optionalDependencies: diff --git a/test/package.json b/test/package.json index a1952c65ac15..6f0c9c811646 100644 --- a/test/package.json +++ b/test/package.json @@ -18,7 +18,7 @@ "@mui/x-date-pickers": "workspace:*", "@mui/x-date-pickers-pro": "workspace:*", "@mui/x-license": "workspace:*", - "@playwright/test": "^1.49.0", + "@playwright/test": "^1.49.1", "@react-spring/web": "^9.7.5", "@types/chai": "^4.3.20", "@types/karma": "^6.3.9", diff --git a/test/utils/tree-view/fakeContextValue.ts b/test/utils/tree-view/fakeContextValue.ts index d98130dcf3f6..17316da4e500 100644 --- a/test/utils/tree-view/fakeContextValue.ts +++ b/test/utils/tree-view/fakeContextValue.ts @@ -30,7 +30,6 @@ export const getFakeContextValue = ( rootRef: { current: null, }, - expansion: { expansionTrigger: 'content' }, store: new TreeViewStore({ cacheKey: { id: 1 }, id: { treeId: 'mui-tree-view-1', providedTreeId: undefined }, @@ -41,7 +40,7 @@ export const getFakeContextValue = ( itemOrderedChildrenIdsLookup: {}, itemChildrenIndexesLookup: {}, }, - expansion: { expandedItemsMap: new Map() }, + expansion: { expandedItemsMap: new Map(), expansionTrigger: 'content' }, selection: { selectedItemsMap: new Map() }, focus: { focusedItemId: null, defaultFocusableItemId: null }, }),