[charts-pro] Add keyboard navigation to funnel#20766
[charts-pro] Add keyboard navigation to funnel#20766alexfauquette merged 17 commits intomui:masterfrom
Conversation
|
Deploy preview: https://deploy-preview-20766--material-ui-x.netlify.app/ Updated pages: Bundle size report
|
CodSpeed Performance ReportMerging this PR will not alter performanceComparing Summary
|
If I recall correctly, we had already discussed this before. I also initially thought that it would make sense, but there were good points for keeping it consistent, i.e., not change with the layout. |
|
This pull request has conflicts, please resolve those before we can evaluate the pull request. |
Yes, we got this discussion for the bar chart. Since it was oral I write down a brief resume: The point was: Arrow are better if you consider them as a sementic navigation, like if you were navigating inside a table
If we want to match the visible aspect, we open a pandora box with 50 shades of complexity 😈
Doing the layout adaptation is the level 0. So I mention the tradeoff to be sure we all agree on this aspect and not just approve the PR because we missed this particular aspect :) |
|
|
||
| // FIXME gap should be obtained from the store. | ||
| // Maybe moving it to the series would be a good idea similar to what we do with bar charts and their stackingGroups | ||
| const gap = 0; |
There was a problem hiding this comment.
Why can't we use store.use(selectorFunnelGap) here?
There was a problem hiding this comment.
Good point, that came from the tooltip position getter but no reason to keep it here 👍
JCQuintas
left a comment
There was a problem hiding this comment.
The behaviour seems mostly correct apart from the left/right arrow issue
It's probably better to be consistent which arrows affect which domains, so I'm good with the current solution |
|
This pull request has conflicts, please resolve those before we can evaluate the pull request. |
|
This pull request has conflicts, please resolve those before we can evaluate the pull request. |
| y: -Infinity, | ||
| }; | ||
|
|
||
| funnelSeries.dataPoints.forEach((section) => { |
There was a problem hiding this comment.
This logic is basically a duplicate of FunnelPlot's useAggregatedData. Could we find a way to reuse some of the logic? Otherwise we might forget to update this component when we update the main funnel logic.
Can be done as a follow-up
bernardobelchior
left a comment
There was a problem hiding this comment.
Minor things, code looks good 👍
| scale: D3Scale, | ||
| isCategoryDirection: boolean, | ||
| gap: number, | ||
| baseScaleData?: readonly any[], |
There was a problem hiding this comment.
Why is baseScaleData optional? Should the caller default to [] instead?
If not, I'd suggest using | undefined instead of ? so we don't forget to pass the data. | undefined and ? have slightly different semantics.
| import type { Point, PositionGetter } from './curves'; | ||
| import type { FunnelDataPoints } from './funnel.types'; | ||
|
|
||
| export const getCornerPoints = ( |
There was a problem hiding this comment.
This function returns the extrema (min and max) in every direction, so an alternative name could be get2DExtrema or computeExtrema2D, if you think that's clearer
Tricky to debug. That's because I used the |
|
This pull request has conflicts, please resolve those before we can evaluate the pull request. |
This MR contains the following updates: | Package | Type | Update | Change | OpenSSF | |---|---|---|---|---| | [@mui/x-charts](https://mui.com/x/react-charts/) ([source](https://github.com/mui/mui-x/tree/HEAD/packages/x-charts)) | dependencies | minor | [`8.24.0` → `8.25.0`](https://renovatebot.com/diffs/npm/@mui%2fx-charts/8.24.0/8.25.0) | [](https://securityscorecards.dev/viewer/?uri=github.com/mui/mui-x) | | [@mui/x-tree-view](https://mui.com/x/react-tree-view/) ([source](https://github.com/mui/mui-x/tree/HEAD/packages/x-tree-view)) | dependencies | minor | [`8.24.0` → `8.25.0`](https://renovatebot.com/diffs/npm/@mui%2fx-tree-view/8.24.0/8.25.0) | [](https://securityscorecards.dev/viewer/?uri=github.com/mui/mui-x) | | [prettier](https://prettier.io) ([source](https://github.com/prettier/prettier)) | devDependencies | minor | [`3.7.4` → `3.8.0`](https://renovatebot.com/diffs/npm/prettier/3.7.4/3.8.0) | [](https://securityscorecards.dev/viewer/?uri=github.com/prettier/prettier) | --- ### Release Notes <details> <summary>mui/mui-x (@​mui/x-charts)</summary> ### [`v8.25.0`](https://github.com/mui/mui-x/blob/HEAD/CHANGELOG.md#8250) [Compare Source](mui/mui-x@v8.24.0...v8.25.0) <!-- generated comparing v8.24.0..master --> *Jan 14, 2026* We'd like to extend a big thank you to the 8 contributors who made this release possible. Here are some highlights ✨: - 📊 The Chart legend now has an option that enables [click to toggle visibility](https://mui.com/x/react-charts/legend/#toggle-visibility) of series.  - 🐞 Bugfixes - 📚 Documentation improvements The following team members contributed to this release: [@​alexfauquette](https://github.com/alexfauquette), [@​arminmeh](https://github.com/arminmeh), [@​bernardobelchior](https://github.com/bernardobelchior), [@​cherniavskii](https://github.com/cherniavskii), [@​JCQuintas](https://github.com/JCQuintas), [@​mapache-salvaje](https://github.com/mapache-salvaje), [@​rita-codes](https://github.com/rita-codes), [@​Janpot](https://github.com/Janpot) ##### Data Grid ##### `@mui/[email protected]` Internal changes. ##### `@mui/[email protected]` [](https://mui.com/r/x-pro-svg-link "Pro plan") Same changes as in `@mui/[email protected]`. ##### `@mui/[email protected]` [](https://mui.com/r/x-premium-svg-link "Premium plan") Same changes as in `@mui/[email protected]`. ##### Date and Time Pickers ##### `@mui/[email protected]` Internal changes. ##### `@mui/[email protected]` [](https://mui.com/r/x-pro-svg-link "Pro plan") Same changes as in `@mui/[email protected]`. ##### Charts ##### `@mui/[email protected]` - \[charts] Add Legend actions ([#​20404](mui/mui-x#20404)) [@​JCQuintas](https://github.com/JCQuintas) - \[charts] Add `initialHiddenItems` prop to set initial state ([#​20894](mui/mui-x#20894)) [@​JCQuintas](https://github.com/JCQuintas) - \[charts] Control the item tooltip ([#​20617](mui/mui-x#20617)) [@​alexfauquette](https://github.com/alexfauquette) - \[charts] Export plugins from premium ([#​20866](mui/mui-x#20866)) [@​JCQuintas](https://github.com/JCQuintas) - \[charts] Fix node anchor on iOS ([#​20848](mui/mui-x#20848)) [@​alexfauquette](https://github.com/alexfauquette) - \[charts] Fix test inconsistency in charts ([#​20907](mui/mui-x#20907)) [@​JCQuintas](https://github.com/JCQuintas) - \[charts] Revert `touch-action: pan-y` removal when zoom is disabled ([#​20852](mui/mui-x#20852)) [@​bernardobelchior](https://github.com/bernardobelchior) - \[charts] Use React event handler to detect pointer type ([#​20849](mui/mui-x#20849)) [@​alexfauquette](https://github.com/alexfauquette) - \[charts] Enable keyboard navigation in radar chart ([#​20765](mui/mui-x#20765)) [@​alexfauquette](https://github.com/alexfauquette) - \[charts] Fix tooltip position for stacked line series ([#​20901](mui/mui-x#20901)) [@​alexfauquette](https://github.com/alexfauquette) ##### `@mui/[email protected]` [](https://mui.com/r/x-pro-svg-link "Pro plan") Same changes as in `@mui/[email protected]`, plus: - \[charts-pro] Add keyboard navigation to funnel ([#​20766](mui/mui-x#20766)) [@​alexfauquette](https://github.com/alexfauquette) - \[charts-pro] Add keyboard navigation to heatmap ([#​20786](mui/mui-x#20786)) [@​alexfauquette](https://github.com/alexfauquette) - \[charts-pro] Add keyboard navigation to sankey ([#​20777](mui/mui-x#20777)) [@​alexfauquette](https://github.com/alexfauquette) - \[charts-pro] Prefer global pointer interaction tracker in Heatmap ([#​20697](mui/mui-x#20697)) [@​bernardobelchior](https://github.com/bernardobelchior) - \[charts-pro] Support composition for Sankey ([#​20604](mui/mui-x#20604)) [@​alexfauquette](https://github.com/alexfauquette) - \[charts-pro] Fix crash when two same-direction axes have a zoom preview ([#​20916](mui/mui-x#20916)) [@​bernardobelchior](https://github.com/bernardobelchior) ##### `@mui/[email protected]` [](https://mui.com/r/x-premium-svg-link "Premium plan") Same changes as in `@mui/[email protected]`, plus: - \[charts-premium] Add `ChartContainerPremium` ([#​20910](mui/mui-x#20910)) [@​bernardobelchior](https://github.com/bernardobelchior) - \[charts-premium] Fix `ChartDataProviderPremium` tests ([#​20868](mui/mui-x#20868)) [@​bernardobelchior](https://github.com/bernardobelchior) ##### Tree View ##### `@mui/[email protected]` Internal changes. ##### `@mui/[email protected]` [](https://mui.com/r/x-pro-svg-link "Pro plan") Same changes as in `@mui/[email protected]`. ##### Codemod ##### `@mui/[email protected]` Internal changes. ##### Docs - \[docs] Fix Waterfall Chart documentation badge from Pro to Premium ([#​20888](mui/mui-x#20888)) [@​Copilot](https://github.com/Copilot) - \[docs] Fix broken links on Data Grid Editing sub-pages ([#​20911](mui/mui-x#20911)) [@​arminmeh](https://github.com/arminmeh) - \[docs] Increase chart axis size in docs to fit in Ubuntu Firefox ([#​20844](mui/mui-x#20844)) [@​bernardobelchior](https://github.com/bernardobelchior) - \[docs] Simplify heatmap zoom demo ([#​20851](mui/mui-x#20851)) [@​bernardobelchior](https://github.com/bernardobelchior) - \[docs] Revise the Charts Composition doc ([#​20032](mui/mui-x#20032)) [@​mapache-salvaje](https://github.com/mapache-salvaje) - \[docs] Revise the Charts Localization doc ([#​20800](mui/mui-x#20800)) [@​mapache-salvaje](https://github.com/mapache-salvaje) - \[docs] Revise the Charts Stacking doc ([#​20830](mui/mui-x#20830)) [@​mapache-salvaje](https://github.com/mapache-salvaje) - \[docs] Fix broken links ([#​20914](mui/mui-x#20914)) [@​Janpot](https://github.com/Janpot) ##### Core - \[code-infra] Fix `material-ui/disallow-react-api-in-server-components` ([#​20909](mui/mui-x#20909)) [@​JCQuintas](https://github.com/JCQuintas) - \[code-infra] Prepare for v9 ([#​20860](mui/mui-x#20860)) [@​JCQuintas](https://github.com/JCQuintas) - \[code-infra] Update codeowners ([#​20886](mui/mui-x#20886)) [@​JCQuintas](https://github.com/JCQuintas) - \[internal] Remove local Claude settings from the repo ([#​20853](mui/mui-x#20853)) [@​cherniavskii](https://github.com/cherniavskii) </details> <details> <summary>prettier/prettier (prettier)</summary> ### [`v3.8.0`](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#380) [Compare Source](prettier/prettier@3.7.4...3.8.0) [diff](prettier/prettier@3.7.4...3.8.0) 🔗 [Release Notes](https://prettier.io/blog/2026/01/14/3.8.0) </details> --- - [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box --- This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi44NC4yIiwidXBkYXRlZEluVmVyIjoiNDIuODQuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiZGVwZW5kZW5jaWVzIiwicmVub3ZhdGUiXX0=--> See merge request swiss-armed-forces/cyber-command/cea/loom!253 Co-authored-by: Loom MR Pipeline Trigger <group_103951964_bot_9504bb8dead6d4e406ad817a607f24be@noreply.gitlab.com>
chore(deps): update frontend dependencies (minor) (minor) This MR contains the following updates: | Package | Type | Update | Change | OpenSSF | |---|---|---|---|---| | [@mui/x-charts](https://mui.com/x/react-charts/) ([source](https://github.com/mui/mui-x/tree/HEAD/packages/x-charts)) | dependencies | minor | [`8.24.0` → `8.25.0`](https://renovatebot.com/diffs/npm/@mui%2fx-charts/8.24.0/8.25.0) | [](https://securityscorecards.dev/viewer/?uri=github.com/mui/mui-x) | | [@mui/x-tree-view](https://mui.com/x/react-tree-view/) ([source](https://github.com/mui/mui-x/tree/HEAD/packages/x-tree-view)) | dependencies | minor | [`8.24.0` → `8.25.0`](https://renovatebot.com/diffs/npm/@mui%2fx-tree-view/8.24.0/8.25.0) | [](https://securityscorecards.dev/viewer/?uri=github.com/mui/mui-x) | | [prettier](https://prettier.io) ([source](https://github.com/prettier/prettier)) | devDependencies | minor | [`3.7.4` → `3.8.0`](https://renovatebot.com/diffs/npm/prettier/3.7.4/3.8.0) | [](https://securityscorecards.dev/viewer/?uri=github.com/prettier/prettier) | --- ### Release Notes <details> <summary>mui/mui-x (@​mui/x-charts)</summary> ### [`v8.25.0`](https://github.com/mui/mui-x/blob/HEAD/CHANGELOG.md#8250) [Compare Source](mui/mui-x@v8.24.0...v8.25.0) <!-- generated comparing v8.24.0..master --> *Jan 14, 2026* We'd like to extend a big thank you to the 8 contributors who made this release possible. Here are some highlights ✨: - 📊 The Chart legend now has an option that enables [click to toggle visibility](https://mui.com/x/react-charts/legend/#toggle-visibility) of series.  - 🐞 Bugfixes - 📚 Documentation improvements The following team members contributed to this release: [@​alexfauquette](https://github.com/alexfauquette), [@​arminmeh](https://github.com/arminmeh), [@​bernardobelchior](https://github.com/bernardobelchior), [@​cherniavskii](https://github.com/cherniavskii), [@​JCQuintas](https://github.com/JCQuintas), [@​mapache-salvaje](https://github.com/mapache-salvaje), [@​rita-codes](https://github.com/rita-codes), [@​Janpot](https://github.com/Janpot) ##### Data Grid ##### `@mui/[email protected]` Internal changes. ##### `@mui/[email protected]` [](https://mui.com/r/x-pro-svg-link "Pro plan") Same changes as in `@mui/[email protected]`. ##### `@mui/[email protected]` [](https://mui.com/r/x-premium-svg-link "Premium plan") Same changes as in `@mui/[email protected]`. ##### Date and Time Pickers ##### `@mui/[email protected]` Internal changes. ##### `@mui/[email protected]` [](https://mui.com/r/x-pro-svg-link "Pro plan") Same changes as in `@mui/[email protected]`. ##### Charts ##### `@mui/[email protected]` - \[charts] Add Legend actions ([#​20404](mui/mui-x#20404)) [@​JCQuintas](https://github.com/JCQuintas) - \[charts] Add `initialHiddenItems` prop to set initial state ([#​20894](mui/mui-x#20894)) [@​JCQuintas](https://github.com/JCQuintas) - \[charts] Control the item tooltip ([#​20617](mui/mui-x#20617)) [@​alexfauquette](https://github.com/alexfauquette) - \[charts] Export plugins from premium ([#​20866](mui/mui-x#20866)) [@​JCQuintas](https://github.com/JCQuintas) - \[charts] Fix node anchor on iOS ([#​20848](mui/mui-x#20848)) [@​alexfauquette](https://github.com/alexfauquette) - \[charts] Fix test inconsistency in charts ([#​20907](mui/mui-x#20907)) [@​JCQuintas](https://github.com/JCQuintas) - \[charts] Revert `touch-action: pan-y` removal when zoom is disabled ([#​20852](mui/mui-x#20852)) [@​bernardobelchior](https://github.com/bernardobelchior) - \[charts] Use React event handler to detect pointer type ([#​20849](mui/mui-x#20849)) [@​alexfauquette](https://github.com/alexfauquette) - \[charts] Enable keyboard navigation in radar chart ([#​20765](mui/mui-x#20765)) [@​alexfauquette](https://github.com/alexfauquette) - \[charts] Fix tooltip position for stacked line series ([#​20901](mui/mui-x#20901)) [@​alexfauquette](https://github.com/alexfauquette) ##### `@mui/[email protected]` [](https://mui.com/r/x-pro-svg-link "Pro plan") Same changes as in `@mui/[email protected]`, plus: - \[charts-pro] Add keyboard navigation to funnel ([#​20766](mui/mui-x#20766)) [@​alexfauquette](https://github.com/alexfauquette) - \[charts-pro] Add keyboard navigation to heatmap ([#​20786](mui/mui-x#20786)) [@​alexfauquette](https://github.com/alexfauquette) - \[charts-pro] Add keyboard navigation to sankey ([#​20777](mui/mui-x#20777)) [@​alexfauquette](https://github.com/alexfauquette) - \[charts-pro] Prefer global pointer interaction tracker in Heatmap ([#​20697](mui/mui-x#20697)) [@​bernardobelchior](https://github.com/bernardobelchior) - \[charts-pro] Support composition for Sankey ([#​20604](mui/mui-x#20604)) [@​alexfauquette](https://github.com/alexfauquette) - \[charts-pro] Fix crash when two same-direction axes have a zoom preview ([#​20916](mui/mui-x#20916)) [@​bernardobelchior](https://github.com/bernardobelchior) ##### `@mui/[email protected]` [](https://mui.com/r/x-premium-svg-link "Premium plan") Same changes as in `@mui/[email protected]`, plus: - \[charts-premium] Add `ChartContainerPremium` ([#​20910](mui/mui-x#20910)) [@​bernardobelchior](https://github.com/bernardobelchior) - \[charts-premium] Fix `ChartDataProviderPremium` tests ([#​20868](mui/mui-x#20868)) [@​bernardobelchior](https://github.com/bernardobelchior) ##### Tree View ##### `@mui/[email protected]` Internal changes. ##### `@mui/[email protected]` [](https://mui.com/r/x-pro-svg-link "Pro plan") Same changes as in `@mui/[email protected]`. ##### Codemod ##### `@mui/[email protected]` Internal changes. ##### Docs - \[docs] Fix Waterfall Chart documentation badge from Pro to Premium ([#​20888](mui/mui-x#20888)) [@​Copilot](https://github.com/Copilot) - \[docs] Fix broken links on Data Grid Editing sub-pages ([#​20911](mui/mui-x#20911)) [@​arminmeh](https://github.com/arminmeh) - \[docs] Increase chart axis size in docs to fit in Ubuntu Firefox ([#​20844](mui/mui-x#20844)) [@​bernardobelchior](https://github.com/bernardobelchior) - \[docs] Simplify heatmap zoom demo ([#​20851](mui/mui-x#20851)) [@​bernardobelchior](https://github.com/bernardobelchior) - \[docs] Revise the Charts Composition doc ([#​20032](mui/mui-x#20032)) [@​mapache-salvaje](https://github.com/mapache-salvaje) - \[docs] Revise the Charts Localization doc ([#​20800](mui/mui-x#20800)) [@​mapache-salvaje](https://github.com/mapache-salvaje) - \[docs] Revise the Charts Stacking doc ([#​20830](mui/mui-x#20830)) [@​mapache-salvaje](https://github.com/mapache-salvaje) - \[docs] Fix broken links ([#​20914](mui/mui-x#20914)) [@​Janpot](https://github.com/Janpot) ##### Core - \[code-infra] Fix `material-ui/disallow-react-api-in-server-components` ([#​20909](mui/mui-x#20909)) [@​JCQuintas](https://github.com/JCQuintas) - \[code-infra] Prepare for v9 ([#​20860](mui/mui-x#20860)) [@​JCQuintas](https://github.com/JCQuintas) - \[code-infra] Update codeowners ([#​20886](mui/mui-x#20886)) [@​JCQuintas](https://github.com/JCQuintas) - \[internal] Remove local Claude settings from the repo ([#​20853](mui/mui-x#20853)) [@​cherniavskii](https://github.com/cherniavskii) </details> <details> <summary>prettier/prettier (prettier)</summary> ### [`v3.8.0`](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#380) [Compare Source](prettier/prettier@3.7.4...3.8.0) [diff](prettier/prettier@3.7.4...3.8.0) 🔗 [Release Notes](https://prettier.io/blog/2026/01/14/3.8.0) </details> --- - [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box --- This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi44NC4yIiwidXBkYXRlZEluVmVyIjoiNDIuODQuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiZGVwZW5kZW5jaWVzIiwicmVub3ZhdGUiXX0=--> See merge request swiss-armed-forces/cyber-command/cea/loom!253 Co-authored-by: Loom MR Pipeline Trigger <group_103951964_bot_9504bb8dead6d4e406ad817a607f24be@noreply.gitlab.com> Co-authored-by: open-source Pipeline <group_90701827_bot_ed04ae348bc5f40af9966fb8b6867e99@noreply.gitlab.com>

For now the keyboard navigation behavior is similar to the other ones:
Since by default funnel are vertical we could do the oposit
We could also adapt to the layout.
The code might look weird, but not a big deal :)
You might also notice that arrow right/left remove the focus. We have the same issue with pie chart.
I will fix it after merging #20757 since it will probably impact exactly the same files