diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 7f05134a8059..01d8fd919710 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -19,7 +19,7 @@ jobs: uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@0b21cf2492b6b02c465a3e5d7c473717ad7721ba # v3.23.1 + uses: github/codeql-action/init@b7bf0a3ed3ecfa44160715d7c442788f65f0f923 # v3.23.2 with: languages: typescript # If you wish to specify custom queries, you can do so here or in a config file. @@ -29,4 +29,4 @@ jobs: # Details on CodeQL's query packs refer to : https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs # queries: security-extended,security-and-quality - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@0b21cf2492b6b02c465a3e5d7c473717ad7721ba # v3.23.1 + uses: github/codeql-action/analyze@b7bf0a3ed3ecfa44160715d7c442788f65f0f923 # v3.23.2 diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index 38d0a63edb62..43dd2dc1075f 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -44,6 +44,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: Upload to code-scanning - uses: github/codeql-action/upload-sarif@0b21cf2492b6b02c465a3e5d7c473717ad7721ba # v3.23.1 + uses: github/codeql-action/upload-sarif@b7bf0a3ed3ecfa44160715d7c442788f65f0f923 # v3.23.2 with: sarif_file: results.sarif diff --git a/CHANGELOG.md b/CHANGELOG.md index 55466b1e080e..0886f83e7f00 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,106 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## 7.0.0-beta.0 + +_Jan 26, 2024_ + +We are glad to announce MUI X v7 beta! +This version has several improvements, bug fixes, and exciting features 🎉. +We want to offer a big thanks to the 7 contributors who made this release possible ✨: + +- 🚀 Release the [Date Time Range Picker](https://next.mui.com/x/react-date-pickers/date-time-range-picker/) component (#9528) @LukasTy + + Date Time Range Picker example + +- 🎁 New column management panel design for the Data Grid (#11770) @MBilalShafi + + image + +- 🐞 Bugfixes +- 📚 Documentation improvements + +### Data Grid + +#### Breaking changes + +- The columns management component has been redesigned and the component was extracted from the `ColumnsPanel` which now only serves as a wrapper to display the component above the headers as a panel. As a result, a new slot `columnsManagement` and the related prop `slotProps.columnsManagement` have been introduced. The props corresponding to the columns management component which were previously passed to the prop `slotProps.columnsPanel` should now be passed to `slotProps.columnsManagement`. `slotProps.columnsPanel` could still be used to override props corresponding to the `Panel` component used in `ColumnsPanel` which uses [`Popper`](https://next.mui.com/material-ui/react-popper/) component under the hood. + + ```diff + + ``` + +- `Show all` and `Hide all` buttons in the `ColumnsPanel` have been combined into one `Show/Hide All` toggle in the new columns management component. The related props `disableShowAllButton` and `disableHideAllButton` have been replaced with a new prop `disableShowHideToggle`. + + ```diff + + ``` + +#### `@mui/x-data-grid@7.0.0-beta.0` + +- [DataGrid] Export `GridColumnTypes` interface for custom column types (#11742) @cherniavskii +- [DataGrid] Initialize `apiRef` early (#11792) @cherniavskii +- [DataGrid] New column management panel design (#11770) @MBilalShafi +- [DataGrid] Fix support for tree with more than 50,000 children (#11757) @zenazn + +#### `@mui/x-data-grid-pro@7.0.0-beta.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan') + +Same changes as in `@mui/x-data-grid@7.0.0-beta.0`. + +#### `@mui/x-data-grid-premium@7.0.0-beta.0` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan') + +Same changes as in `@mui/x-data-grid-pro@7.0.0-beta.0`. + +### Date Pickers + +#### `@mui/x-date-pickers@7.0.0-beta.0` + +- [pickers] Apply the `layout.tabs` class to `Tabs` slot (#11781) @LukasTy +- [pickers] Avoid deep imports (#11794) @LukasTy +- [pickers] Fields typing optimization (#11779) @LukasTy + +#### `@mui/x-date-pickers-pro@7.0.0-beta.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan') + +Same changes as in `@mui/x-date-pickers@7.0.0-beta.0`, plus: + +- [pickers] Add `DateTimeRangePicker` component (#9528) @LukasTy +- [pickers] Add `DateTimeRangePicker` theme augmentation (#11814) @LukasTy +- [DateRangePicker] Remove `calendars` prop on `Mobile` (#11752) @LukasTy + +### Tree View / `@mui/x-tree-view@7.0.0-beta.0` + +- [TreeView] Remove unused props from prop-types and typing (#11778) @flaviendelangle +- [TreeView] Throw an error when two items have the same id (#11715) @flaviendelangle + +### Docs + +- [docs] Add `contextValue` to the headless tree view doc (#11705) @flaviendelangle +- [docs] Add section for the `disableSelection` prop (#11821) @flaviendelangle +- [docs] Fix brand name non-breaking space (#11758) @oliviertassinari +- [docs] Fix typo in Data Grid components page (#11775) @flaviendelangle +- [docs] Fix use of quote, should use callout (#11759) @oliviertassinari +- [docs] Improve error message for MUI Vale rule @oliviertassinari +- [docs] Include `DateTimeRangePicker` in relevant demos (#11815) @LukasTy +- [docs] Add recipe for sorting row groups by the number of child rows (#11164) @cherniavskii + +### Core + +- [core] Cleanup script and alias setup (#11749) @LukasTy +- [core] Polish issue templates @oliviertassinari +- [code-infra] Update prettier and pretty-quick (#11735) @Janpot + ## 7.0.0-alpha.9 _Jan 19, 2024_ diff --git a/README.md b/README.md index 7e3c1941037a..5e751d42d69b 100644 --- a/README.md +++ b/README.md @@ -86,28 +86,9 @@ Premium package: - [`@mui/x-data-grid-premium`](https://www.npmjs.com/package/@mui/x-data-grid-premium) -## Questions and feedback +## Support -### GitHub - -We use GitHub issues as a bug and feature request tracker. -If you think you've found a bug, or you have a new feature idea, please start by [making sure it hasn't already been reported or fixed](https://github.com/mui/mui-x/issues?utf8=%E2%9C%93&q=is%3Aopen+is%3Aclosed). -You can search through existing issues and pull requests to see if someone has reported one similar to yours. - -[Open an issue](https://github.com/mui/mui-x/issues/new/choose) in the MUI X repo. - -### Stack Overflow - -Visit Stack Overflow to ask questions and read crowdsourced answers from expert developers in the MUI X community, as well as MUI X maintainers. - -[Post a question about MUI X](https://stackoverflow.com/questions/tagged/mui-x) on Stack Overflow using the "mui-x" tag. - -### Bugs and feature requests - -You can create an [issue](https://github.com/mui/mui-x/issues) on this repository. -Please always provide a reproduction case. -As a starting point, we recommend you [browse the documentation](https://mui.com/x/introduction/), and [select](https://mui.com/static/docs/forking-an-example.png) the closest example to your use case. -Or you can use a [basic template](https://mui.com/r/x-issue-template) to build your reproduction case. +From community guidance to critical business support, we're here to help. Read the [support guide](https://mui.com/x/introduction/support/). ## Contributing diff --git a/docs/data/charts-component-api-pages.ts b/docs/data/charts-component-api-pages.ts index 5d3e702baff5..b2a117fef59b 100644 --- a/docs/data/charts-component-api-pages.ts +++ b/docs/data/charts-component-api-pages.ts @@ -1,6 +1,14 @@ import type { MuiPage } from '@mui/monorepo/docs/src/MuiPage'; const apiPages: MuiPage[] = [ + { + pathname: '/x/api/charts/animated-area', + title: 'AnimatedArea', + }, + { + pathname: '/x/api/charts/animated-line', + title: 'AnimatedLine', + }, { pathname: '/x/api/charts/area-element', title: 'AreaElement', diff --git a/docs/data/charts/areas-demo/AreaChartFillByValue.js b/docs/data/charts/areas-demo/AreaChartFillByValue.js new file mode 100644 index 000000000000..8104aba8162c --- /dev/null +++ b/docs/data/charts/areas-demo/AreaChartFillByValue.js @@ -0,0 +1,165 @@ +import * as React from 'react'; + +import { green, red } from '@mui/material/colors'; +import Stack from '@mui/material/Stack'; +import { useYScale, useDrawingArea } from '@mui/x-charts/hooks'; +import { LineChart } from '@mui/x-charts/LineChart'; + +const data = [4000, 3000, -1000, 500, -2100, -250, 3490]; +const xData = ['Page A', 'Page B', 'Page C', 'Page D', 'Page E', 'Page F', 'Page G']; + +function ColorSwich({ threshold, color1, color2, id }) { + const { top, height, bottom } = useDrawingArea(); + const svgHeight = top + bottom + height; + + const scale = useYScale(); // You can provide the axis Id if you have multiple ones + const y0 = scale(threshold); // The coordinate of of the origine + const off = y0 !== undefined ? y0 / svgHeight : 0; + + return ( + + + + + + + ); +} + +export default function AreaChartFillByValue() { + return ( + + + + + + + + + + + + ); +} + +function ColorPalette({ id }) { + const { top, height, bottom } = useDrawingArea(); + const svgHeight = top + bottom + height; + + const scale = useYScale(); // You can provide the axis Id if you have multiple ones + + return ( + + + + + + + + + + + + + + + + + + + + ); +} diff --git a/docs/data/charts/areas-demo/AreaChartFillByValue.tsx b/docs/data/charts/areas-demo/AreaChartFillByValue.tsx new file mode 100644 index 000000000000..bf4e7a9fc07a --- /dev/null +++ b/docs/data/charts/areas-demo/AreaChartFillByValue.tsx @@ -0,0 +1,173 @@ +import * as React from 'react'; +import { ScaleLinear } from 'd3-scale'; +import { green, red } from '@mui/material/colors'; +import Stack from '@mui/material/Stack'; +import { useYScale, useDrawingArea } from '@mui/x-charts/hooks'; +import { LineChart } from '@mui/x-charts/LineChart'; + +const data = [4000, 3000, -1000, 500, -2100, -250, 3490]; +const xData = ['Page A', 'Page B', 'Page C', 'Page D', 'Page E', 'Page F', 'Page G']; + +type ColorSwichProps = { + threshold: number; + color1: string; + color2: string; + id: string; +}; + +function ColorSwich({ threshold, color1, color2, id }: ColorSwichProps) { + const { top, height, bottom } = useDrawingArea(); + const svgHeight = top + bottom + height; + + const scale = useYScale() as ScaleLinear; // You can provide the axis Id if you have multiple ones + const y0 = scale(threshold); // The coordinate of of the origine + const off = y0 !== undefined ? y0 / svgHeight : 0; + + return ( + + + + + + + ); +} + +export default function AreaChartFillByValue() { + return ( + + + + + + + + + + + + + ); +} + +function ColorPalette({ id }: { id: string }) { + const { top, height, bottom } = useDrawingArea(); + const svgHeight = top + bottom + height; + + const scale = useYScale() as ScaleLinear; // You can provide the axis Id if you have multiple ones + + return ( + + + + + + + + + + + + + + + + + + + + ); +} diff --git a/docs/data/charts/areas-demo/areas-demo.md b/docs/data/charts/areas-demo/areas-demo.md index bc2ac0d5959e..92432f02ad72 100644 --- a/docs/data/charts/areas-demo/areas-demo.md +++ b/docs/data/charts/areas-demo/areas-demo.md @@ -1,5 +1,6 @@ --- title: Charts - Areas demonstration +productId: x-charts components: LineChart, LineElement, LineHighlightElement, LineHighlightPlot, LinePlot, MarkElement, MarkPlot, AreaElement, AreaPlot --- @@ -26,3 +27,23 @@ components: LineChart, LineElement, LineHighlightElement, LineHighlightPlot, Lin ## AreaChartConnectNulls {{"demo": "AreaChartConnectNulls.js"}} + +## AreaChartFillByValue + +To display multiple colors in the area you can specify a gradient to fill the area (the same method can be applied on other SVG components). + +You can pass this gradient definition as a children of the `` and use `sx` to override the area `fill` property. +To do so you will need to use the [``](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/linearGradient) and [``](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/stop) SVG elements. + +The first part is to get the SVG total height. +Which can be done with the `useDrawingArea` hook. +It's useful to define the `` as a vector that goes from the top to the bottom of our SVG container. + +Then to define where the gradient should switch from one color to another, you can use the `useYScale` hook to get the y coordinate of value 0. + +:::info +The `` offset is a ratio of gradient vector. +That's why you need to divide the coordinate by the SVG height. +::: + +{{"demo": "AreaChartFillByValue.js"}} diff --git a/docs/data/charts/axis/axis.md b/docs/data/charts/axis/axis.md index b2bffce0b665..a86cb8622a27 100644 --- a/docs/data/charts/axis/axis.md +++ b/docs/data/charts/axis/axis.md @@ -1,5 +1,6 @@ --- title: Charts - Axis +productId: x-charts components: ChartsAxis, ChartsReferenceLine, ChartsText --- diff --git a/docs/data/charts/bar-demo/bar-demo.md b/docs/data/charts/bar-demo/bar-demo.md index e20414fdade2..7f816ff85617 100644 --- a/docs/data/charts/bar-demo/bar-demo.md +++ b/docs/data/charts/bar-demo/bar-demo.md @@ -1,5 +1,6 @@ --- title: Charts - Bar demonstration +productId: x-charts components: BarChart, BarElement, BarPlot --- diff --git a/docs/data/charts/bars/bars.md b/docs/data/charts/bars/bars.md index 38c5223c4823..2603d5f2d1b0 100644 --- a/docs/data/charts/bars/bars.md +++ b/docs/data/charts/bars/bars.md @@ -1,5 +1,6 @@ --- title: React Bar chart +productId: x-charts components: BarChart, BarElement, BarPlot --- diff --git a/docs/data/charts/components/components.md b/docs/data/charts/components/components.md index 104664e0d16d..6cb3134cd554 100644 --- a/docs/data/charts/components/components.md +++ b/docs/data/charts/components/components.md @@ -1,5 +1,6 @@ --- title: Charts - Custom components +productId: x-charts components: ChartsClipPath, ChartsSurface, CartesianContextProvider, DrawingProvider, HighlightProvider, InteractionProvider, SeriesContextProvider --- diff --git a/docs/data/charts/composition/composition.md b/docs/data/charts/composition/composition.md index a6393cc5a68a..136efbbbaa3f 100644 --- a/docs/data/charts/composition/composition.md +++ b/docs/data/charts/composition/composition.md @@ -1,5 +1,6 @@ --- title: React Chart composition +productId: x-charts githubLabel: 'component: charts' components: ChartContainer, ResponsiveChartContainer packageName: '@mui/x-charts' diff --git a/docs/data/charts/funnel/funnel.md b/docs/data/charts/funnel/funnel.md index 702603469539..868e7df067d2 100644 --- a/docs/data/charts/funnel/funnel.md +++ b/docs/data/charts/funnel/funnel.md @@ -1,5 +1,6 @@ --- title: React Funnel chart +productId: x-charts --- # Charts - Funnel [](/x/introduction/licensing/#pro-plan 'Pro plan')🚧 diff --git a/docs/data/charts/gantt/gantt.md b/docs/data/charts/gantt/gantt.md index 41985fa001fe..fec525350ad8 100644 --- a/docs/data/charts/gantt/gantt.md +++ b/docs/data/charts/gantt/gantt.md @@ -1,5 +1,6 @@ --- title: React Gantt chart +productId: x-charts --- # Charts - Gantt [](/x/introduction/licensing/#pro-plan 'Pro plan')🚧 diff --git a/docs/data/charts/gauge/gauge.md b/docs/data/charts/gauge/gauge.md index d025f1f7b3e9..ffa248998caf 100644 --- a/docs/data/charts/gauge/gauge.md +++ b/docs/data/charts/gauge/gauge.md @@ -1,5 +1,6 @@ --- title: React Gauge chart +productId: x-charts --- # Charts - Gauge 🚧 diff --git a/docs/data/charts/getting-started/getting-started.md b/docs/data/charts/getting-started/getting-started.md index 796b4d2d1ecc..df422ab76da8 100644 --- a/docs/data/charts/getting-started/getting-started.md +++ b/docs/data/charts/getting-started/getting-started.md @@ -1,5 +1,6 @@ --- title: React Chart library - Getting started +productId: x-charts githubLabel: 'component: charts' packageName: '@mui/x-charts' --- diff --git a/docs/data/charts/heat-map/heat-map.md b/docs/data/charts/heat-map/heat-map.md index e94a3ed398ab..a09a0369129b 100644 --- a/docs/data/charts/heat-map/heat-map.md +++ b/docs/data/charts/heat-map/heat-map.md @@ -1,5 +1,6 @@ --- title: React Heat map chart +productId: x-charts --- # Charts - Heat map 🚧 diff --git a/docs/data/charts/legend/legend.md b/docs/data/charts/legend/legend.md index 934fce4a1acc..edecb80ab591 100644 --- a/docs/data/charts/legend/legend.md +++ b/docs/data/charts/legend/legend.md @@ -1,5 +1,6 @@ --- title: Charts - Legend +productId: x-charts components: ChartsLegend, ChartsText --- diff --git a/docs/data/charts/line-demo/line-demo.md b/docs/data/charts/line-demo/line-demo.md index 959eda37c095..d79eae58f84a 100644 --- a/docs/data/charts/line-demo/line-demo.md +++ b/docs/data/charts/line-demo/line-demo.md @@ -1,5 +1,6 @@ --- title: Charts - Line demonstration +productId: x-charts components: LineChart, LineElement, LineHighlightElement, LineHighlightPlot, LinePlot, MarkElement, MarkPlot --- diff --git a/docs/data/charts/lines/ConnectNulls.js b/docs/data/charts/lines/ConnectNulls.js index 1a543aeecda3..0032c2383eab 100644 --- a/docs/data/charts/lines/ConnectNulls.js +++ b/docs/data/charts/lines/ConnectNulls.js @@ -31,6 +31,7 @@ export default function ConnectNulls() { ]} height={200} margin={{ top: 10, bottom: 20 }} + skipAnimation /> ); diff --git a/docs/data/charts/lines/ConnectNulls.tsx b/docs/data/charts/lines/ConnectNulls.tsx index 1a543aeecda3..0032c2383eab 100644 --- a/docs/data/charts/lines/ConnectNulls.tsx +++ b/docs/data/charts/lines/ConnectNulls.tsx @@ -31,6 +31,7 @@ export default function ConnectNulls() { ]} height={200} margin={{ top: 10, bottom: 20 }} + skipAnimation /> ); diff --git a/docs/data/charts/lines/InterpolationDemoNoSnap.js b/docs/data/charts/lines/InterpolationDemoNoSnap.js index 9ee64cc05e75..7d96ed6587b1 100644 --- a/docs/data/charts/lines/InterpolationDemoNoSnap.js +++ b/docs/data/charts/lines/InterpolationDemoNoSnap.js @@ -52,6 +52,7 @@ export default function InterpolationDemoNoSnap() { ]} height={300} margin={{ top: 10, bottom: 30 }} + skipAnimation /> diff --git a/docs/data/charts/lines/LineAnimation.js b/docs/data/charts/lines/LineAnimation.js new file mode 100644 index 000000000000..7bb2d20fda95 --- /dev/null +++ b/docs/data/charts/lines/LineAnimation.js @@ -0,0 +1,87 @@ +import * as React from 'react'; +import Button from '@mui/material/Button'; +import Stack from '@mui/material/Stack'; +import FormControlLabel from '@mui/material/FormControlLabel'; +import Checkbox from '@mui/material/Checkbox'; +import { LineChart } from '@mui/x-charts/LineChart'; +import { mangoFusionPalette } from '@mui/x-charts/colorPalettes'; + +const defaultSeries = [ + { id: '1', data: [4, 5, 1, 2, 3, 3, 2], area: true, stack: '1' }, + { id: '2', data: [7, 4, 6, 7, 2, 3, 5], area: true, stack: '1' }, + { id: '3', data: [6, 4, 1, 2, 6, 3, 3], area: true, stack: '1' }, + { id: '4', data: [4, 7, 6, 1, 2, 7, 7], area: true, stack: '1' }, + { id: '5', data: [2, 2, 1, 7, 1, 5, 3], area: true, stack: '1' }, + { id: '6', data: [6, 6, 1, 6, 7, 1, 1], area: true, stack: '1' }, + { id: '7', data: [7, 6, 1, 6, 4, 4, 6], area: true, stack: '1' }, + { id: '8', data: [4, 3, 1, 6, 6, 3, 5], area: true, stack: '1' }, + { id: '9', data: [7, 6, 2, 7, 4, 2, 7], area: true, stack: '1' }, +].map((item, index) => ({ + ...item, + color: mangoFusionPalette('light')[index], +})); + +export default function LineAnimation() { + const [series, setSeries] = React.useState(defaultSeries); + const [nbSeries, setNbSeries] = React.useState(3); + const [skipAnimation, setSkipAnimation] = React.useState(false); + + return ( +
+
+ +
+ + + + + setSkipAnimation(event.target.checked)} /> + } + label="skipAnimation" + labelPlacement="end" + /> + +
+ ); +} diff --git a/docs/data/charts/lines/LineAnimation.tsx b/docs/data/charts/lines/LineAnimation.tsx new file mode 100644 index 000000000000..7bb2d20fda95 --- /dev/null +++ b/docs/data/charts/lines/LineAnimation.tsx @@ -0,0 +1,87 @@ +import * as React from 'react'; +import Button from '@mui/material/Button'; +import Stack from '@mui/material/Stack'; +import FormControlLabel from '@mui/material/FormControlLabel'; +import Checkbox from '@mui/material/Checkbox'; +import { LineChart } from '@mui/x-charts/LineChart'; +import { mangoFusionPalette } from '@mui/x-charts/colorPalettes'; + +const defaultSeries = [ + { id: '1', data: [4, 5, 1, 2, 3, 3, 2], area: true, stack: '1' }, + { id: '2', data: [7, 4, 6, 7, 2, 3, 5], area: true, stack: '1' }, + { id: '3', data: [6, 4, 1, 2, 6, 3, 3], area: true, stack: '1' }, + { id: '4', data: [4, 7, 6, 1, 2, 7, 7], area: true, stack: '1' }, + { id: '5', data: [2, 2, 1, 7, 1, 5, 3], area: true, stack: '1' }, + { id: '6', data: [6, 6, 1, 6, 7, 1, 1], area: true, stack: '1' }, + { id: '7', data: [7, 6, 1, 6, 4, 4, 6], area: true, stack: '1' }, + { id: '8', data: [4, 3, 1, 6, 6, 3, 5], area: true, stack: '1' }, + { id: '9', data: [7, 6, 2, 7, 4, 2, 7], area: true, stack: '1' }, +].map((item, index) => ({ + ...item, + color: mangoFusionPalette('light')[index], +})); + +export default function LineAnimation() { + const [series, setSeries] = React.useState(defaultSeries); + const [nbSeries, setNbSeries] = React.useState(3); + const [skipAnimation, setSkipAnimation] = React.useState(false); + + return ( +
+
+ +
+ + + + + setSkipAnimation(event.target.checked)} /> + } + label="skipAnimation" + labelPlacement="end" + /> + +
+ ); +} diff --git a/docs/data/charts/lines/lines.md b/docs/data/charts/lines/lines.md index a32ea06a7b9e..37a1250e87f8 100644 --- a/docs/data/charts/lines/lines.md +++ b/docs/data/charts/lines/lines.md @@ -1,6 +1,7 @@ --- title: React Line chart -components: LineChart, LineElement, LineHighlightElement, LineHighlightPlot, LinePlot, MarkElement, MarkPlot, AreaElement, AreaPlot +productId: x-charts +components: LineChart, LineElement, LineHighlightElement, LineHighlightPlot, LinePlot, MarkElement, MarkPlot, AreaElement, AreaPlot, AnimatedLine, AnimatedArea --- # Charts - Lines @@ -142,3 +143,30 @@ sx={{ ``` {{"demo": "CSSCustomization.js"}} + +## Animation + +To skip animation at the creation and update of your chart, you can use the `skipAnimation` prop. +When set to `true` it skips animation powered by `@react-spring/web`. + +Charts containers already use the `useReducedMotion` from `@react-spring/web` to skip animation [according to user preferences](https://react-spring.dev/docs/utilities/use-reduced-motion#why-is-it-important). + +:::warning +If you support interactive ways to add or remove series from your chart, you have to provide the series' id. + +Otherwise the chart will have no way to know if you are modifying, removing, or adding some series. +This will lead to strange behaviors. +::: + +```jsx +// For a single component chart + + +// For a composed chart + + + + +``` + +{{"demo": "LineAnimation.js"}} diff --git a/docs/data/charts/overview/overview.md b/docs/data/charts/overview/overview.md index 7aa26282f96c..26b8942a704e 100644 --- a/docs/data/charts/overview/overview.md +++ b/docs/data/charts/overview/overview.md @@ -1,5 +1,6 @@ --- title: React Chart library +productId: x-charts githubLabel: 'component: charts' packageName: '@mui/x-charts' --- diff --git a/docs/data/charts/pie-demo/pie-demo.md b/docs/data/charts/pie-demo/pie-demo.md index ab7e63ca1a37..925af9eac280 100644 --- a/docs/data/charts/pie-demo/pie-demo.md +++ b/docs/data/charts/pie-demo/pie-demo.md @@ -1,5 +1,6 @@ --- title: Charts - Pie demonstration +productId: x-charts components: PieArc, PieArcLabel, PieArcLabelPlot, PieArcPlot, PieChart, PiePlot --- diff --git a/docs/data/charts/pie/pie.md b/docs/data/charts/pie/pie.md index 44a3aa4e20bb..e0126a44cfae 100644 --- a/docs/data/charts/pie/pie.md +++ b/docs/data/charts/pie/pie.md @@ -1,5 +1,6 @@ --- title: React Pie chart +productId: x-charts components: PieArc, PieArcLabel, PieArcLabelPlot, PieArcPlot, PieChart, PiePlot --- diff --git a/docs/data/charts/radar/radar.md b/docs/data/charts/radar/radar.md index 26b7fae5115e..297ba96fbae3 100644 --- a/docs/data/charts/radar/radar.md +++ b/docs/data/charts/radar/radar.md @@ -1,5 +1,6 @@ --- title: React Radar chart +productId: x-charts --- # Charts - Radar 🚧 diff --git a/docs/data/charts/sankey/sankey.md b/docs/data/charts/sankey/sankey.md index f828c78cb3e0..0e56b6756b5c 100644 --- a/docs/data/charts/sankey/sankey.md +++ b/docs/data/charts/sankey/sankey.md @@ -1,5 +1,6 @@ --- title: React Sankey chart +productId: x-charts --- # Charts - Sankey [](/x/introduction/licensing/#pro-plan 'Pro plan')🚧 diff --git a/docs/data/charts/scatter-demo/scatter-demo.md b/docs/data/charts/scatter-demo/scatter-demo.md index cf1506464f1e..e79507a54b6c 100644 --- a/docs/data/charts/scatter-demo/scatter-demo.md +++ b/docs/data/charts/scatter-demo/scatter-demo.md @@ -1,5 +1,6 @@ --- title: Charts - Scatter demonstration +productId: x-charts components: Scatter, ScatterChart, ScatterPlot, ChartsVoronoiHandler --- diff --git a/docs/data/charts/scatter/scatter.md b/docs/data/charts/scatter/scatter.md index 7b099bea05e4..c66ad53e6079 100644 --- a/docs/data/charts/scatter/scatter.md +++ b/docs/data/charts/scatter/scatter.md @@ -1,5 +1,6 @@ --- title: React Scatter chart +productId: x-charts components: Scatter, ScatterChart, ScatterPlot, ChartsVoronoiHandler --- diff --git a/docs/data/charts/sparkline/sparkline.md b/docs/data/charts/sparkline/sparkline.md index 83bb5c7d1730..000a69cbea7b 100644 --- a/docs/data/charts/sparkline/sparkline.md +++ b/docs/data/charts/sparkline/sparkline.md @@ -1,5 +1,6 @@ --- title: React Sparkline chart +productId: x-charts components: SparkLineChart --- diff --git a/docs/data/charts/stacking/stacking.md b/docs/data/charts/stacking/stacking.md index 4e2b86eb6e0d..7487b49fd617 100644 --- a/docs/data/charts/stacking/stacking.md +++ b/docs/data/charts/stacking/stacking.md @@ -1,5 +1,6 @@ --- title: Charts - Stacking +productId: x-charts --- # Charts - Stacking diff --git a/docs/data/charts/styling/styling.md b/docs/data/charts/styling/styling.md index 7e84272378af..1892ccce2dce 100644 --- a/docs/data/charts/styling/styling.md +++ b/docs/data/charts/styling/styling.md @@ -1,5 +1,6 @@ --- title: Charts - Styling +productId: x-charts --- # Charts - Styling diff --git a/docs/data/charts/tooltip/tooltip.md b/docs/data/charts/tooltip/tooltip.md index 599fe0ed2dee..c126bf0f45e2 100644 --- a/docs/data/charts/tooltip/tooltip.md +++ b/docs/data/charts/tooltip/tooltip.md @@ -1,5 +1,6 @@ --- title: Charts - Tooltip +productId: x-charts components: ChartsAxisTooltipContent, ChartsItemTooltipContent, ChartsTooltip, DefaultChartsAxisTooltipContent, DefaultChartsItemTooltipContent, ChartsAxisHighlight --- diff --git a/docs/data/charts/tree-map/tree-map.md b/docs/data/charts/tree-map/tree-map.md index d340add7da12..183da035025d 100644 --- a/docs/data/charts/tree-map/tree-map.md +++ b/docs/data/charts/tree-map/tree-map.md @@ -1,5 +1,6 @@ --- title: React Tree map chart +productId: x-charts --- # Charts - Treemap 🚧 diff --git a/docs/data/data-grid/column-visibility/ColumnSelectorGridToggleAllMode.js b/docs/data/data-grid/column-visibility/ColumnSelectorGridToggleAllMode.js new file mode 100644 index 000000000000..d7e92df882ce --- /dev/null +++ b/docs/data/data-grid/column-visibility/ColumnSelectorGridToggleAllMode.js @@ -0,0 +1,25 @@ +import * as React from 'react'; +import { DataGridPremium, GridToolbar } from '@mui/x-data-grid-premium'; +import { useDemoData } from '@mui/x-data-grid-generator'; + +export default function ColumnSelectorGridToggleAllMode() { + const { data } = useDemoData({ + dataSet: 'Commodity', + rowLength: 10, + maxColumns: 10, + }); + + return ( +
+ +
+ ); +} diff --git a/docs/data/data-grid/column-visibility/ColumnSelectorGridToggleAllMode.tsx b/docs/data/data-grid/column-visibility/ColumnSelectorGridToggleAllMode.tsx new file mode 100644 index 000000000000..d7e92df882ce --- /dev/null +++ b/docs/data/data-grid/column-visibility/ColumnSelectorGridToggleAllMode.tsx @@ -0,0 +1,25 @@ +import * as React from 'react'; +import { DataGridPremium, GridToolbar } from '@mui/x-data-grid-premium'; +import { useDemoData } from '@mui/x-data-grid-generator'; + +export default function ColumnSelectorGridToggleAllMode() { + const { data } = useDemoData({ + dataSet: 'Commodity', + rowLength: 10, + maxColumns: 10, + }); + + return ( +
+ +
+ ); +} diff --git a/docs/data/data-grid/column-visibility/ColumnSelectorGridToggleAllMode.tsx.preview b/docs/data/data-grid/column-visibility/ColumnSelectorGridToggleAllMode.tsx.preview new file mode 100644 index 000000000000..56fe71e64bfd --- /dev/null +++ b/docs/data/data-grid/column-visibility/ColumnSelectorGridToggleAllMode.tsx.preview @@ -0,0 +1,9 @@ + \ No newline at end of file diff --git a/docs/data/data-grid/column-visibility/column-visibility.md b/docs/data/data-grid/column-visibility/column-visibility.md index 0aa5fde638b1..4b5cd948eb16 100644 --- a/docs/data/data-grid/column-visibility/column-visibility.md +++ b/docs/data/data-grid/column-visibility/column-visibility.md @@ -127,6 +127,24 @@ To disable `Show/Hide All` checkbox or `Reset` button in the footer of the colum /> ``` +### Customize action buttons behavior when search is active + +By default, the `Show/Hide All` checkbox toggles the visibility of all columns, including the ones that are not visible in the current search results. + +To only toggle the visibility of the columns that are present in the current search results, pass `toggleAllMode: 'filteredOnly'` to `slotProps.columnsManagement`. + +```tsx + +``` + +{{"demo": "ColumnSelectorGridToggleAllMode.js", "bg": "inline"}} + ## API - [DataGrid](/x/api/data-grid/data-grid/) diff --git a/docs/data/data-grid/editing/CustomEditComponent.js b/docs/data/data-grid/editing/CustomEditComponent.js index 8762b22fec6d..d5d5cd3596fd 100644 --- a/docs/data/data-grid/editing/CustomEditComponent.js +++ b/docs/data/data-grid/editing/CustomEditComponent.js @@ -11,7 +11,7 @@ function renderRating(params) { function RatingEditInputCell(props) { const { id, value, field, hasFocus } = props; const apiRef = useGridApiContext(); - const ref = React.useRef(); + const ref = React.useRef(null); const handleChange = (event, newValue) => { apiRef.current.setEditCellValue({ id, field, value: newValue }); diff --git a/docs/data/data-grid/editing/CustomEditComponent.tsx b/docs/data/data-grid/editing/CustomEditComponent.tsx index dc0f84cd97f1..63d036378717 100644 --- a/docs/data/data-grid/editing/CustomEditComponent.tsx +++ b/docs/data/data-grid/editing/CustomEditComponent.tsx @@ -16,7 +16,7 @@ function renderRating(params: GridRenderCellParams) { function RatingEditInputCell(props: GridRenderCellParams) { const { id, value, field, hasFocus } = props; const apiRef = useGridApiContext(); - const ref = React.useRef(); + const ref = React.useRef(null); const handleChange = (event: React.SyntheticEvent, newValue: number | null) => { apiRef.current.setEditCellValue({ id, field, value: newValue }); diff --git a/docs/data/data-grid/localization/data.json b/docs/data/data-grid/localization/data.json index 2128c9dd5d2a..343c85085279 100644 --- a/docs/data/data-grid/localization/data.json +++ b/docs/data/data-grid/localization/data.json @@ -115,7 +115,7 @@ "languageTag": "he-IL", "importName": "heIL", "localeName": "Hebrew", - "missingKeysCount": 10, + "missingKeysCount": 3, "totalKeysCount": 117, "githubLink": "https://github.com/mui/mui-x/blob/next/packages/grid/x-data-grid/src/locales/heIL.ts" }, diff --git a/docs/data/data-grid/overview/overview.md b/docs/data/data-grid/overview/overview.md index 26b0e04c8065..f25f826b0a48 100644 --- a/docs/data/data-grid/overview/overview.md +++ b/docs/data/data-grid/overview/overview.md @@ -9,7 +9,7 @@ waiAria: https://www.w3.org/WAI/ARIA/apg/patterns/grid/

A fast and extendable react data table and react data grid. It's a feature-rich component available in MIT or Commercial versions.

-The component leverages the power of React and TypeScript, to provide the best UX while manipulating an unlimited set of data. It comes with an intuitive API for real-time updates, accessibility, as well as theming and custom templates, all with blazing fast performance. +The component leverages the power of React and TypeScript, to provide the best UX while manipulating an unlimited set of data. It comes with an intuitive API for real-time updates, accessibility, as well as theming and custom templates, all with blazing-fast performance. {{"component": "modules/components/ComponentLinkHeader.js"}} @@ -21,9 +21,9 @@ Visit the [installation guide](/x/react-data-grid/getting-started/#installation) The Data Grid presents information in a structured format of rows and columns. The data is displayed in a user-friendly, quick-to-scan and interactive way, enabling users to efficiently identify patterns, edit data, and gather insights. -The component comes in three different versions. One available under MIT license and two available under commercial license. +The component comes in three different versions, one available under MIT license and two available under commercial license. -## MIT version (Free forever) +## MIT version (free forever) The first version is meant as a stronger alternative to [data tables](/material-ui/react-table/#sorting-amp-selecting). It's a clean abstraction with basic features like editing, pagination, sorting and filtering single columns, and column groups. @@ -51,7 +51,7 @@ import { DataGridPro } from '@mui/x-data-grid-pro'; ### Premium plan [](/x/introduction/licensing/#premium-plan 'Premium plan') -The Premium version includes everything from Pro, as well as advanced features for data analysis and large datasets management, like row grouping with aggregation functions (e.g., Sum) and the ability to export to Excel files. +The Premium version includes everything from Pro, as well as advanced features for data analysis and large dataset management, like row grouping with aggregation functions (e.g., Sum) and the ability to export to Excel files. You can visit the [showcase page](/x/react-data-grid/demo/) for a comprehensible overview of all features exclusive to this plan. @@ -97,7 +97,7 @@ Please see [the Licensing page](/x/introduction/licensing/) for details. ### Upcoming features 🚧 -While development of the data grid component is moving fast, there are still many additional features that we plan to implement. Some of them: +While the development of the data grid component is moving fast, there are still many additional features that we plan to implement. Some of them: - Headless (hooks only) - [Pivoting](/x/react-data-grid/pivoting/) diff --git a/docs/data/data-grid/performance/GridVisualization.js b/docs/data/data-grid/performance/GridVisualization.js index b87db7d566d4..012448e2fd47 100644 --- a/docs/data/data-grid/performance/GridVisualization.js +++ b/docs/data/data-grid/performance/GridVisualization.js @@ -6,7 +6,7 @@ import { useDemoData } from '@mui/x-data-grid-generator'; const TraceUpdates = React.forwardRef((props, ref) => { const { Component, ...other } = props; - const rootRef = React.useRef(); + const rootRef = React.useRef(null); const handleRef = useForkRef(rootRef, ref); React.useEffect(() => { diff --git a/docs/data/data-grid/performance/GridVisualization.tsx b/docs/data/data-grid/performance/GridVisualization.tsx index 51781f6abc4c..f40abc5a5cc5 100644 --- a/docs/data/data-grid/performance/GridVisualization.tsx +++ b/docs/data/data-grid/performance/GridVisualization.tsx @@ -6,7 +6,7 @@ import { useDemoData } from '@mui/x-data-grid-generator'; const TraceUpdates = React.forwardRef((props, ref) => { const { Component, ...other } = props; - const rootRef = React.useRef(); + const rootRef = React.useRef(null); const handleRef = useForkRef(rootRef, ref); React.useEffect(() => { diff --git a/docs/data/data-grid/recipes-row-grouping/RowGroupingSortByChildRows.js b/docs/data/data-grid/recipes-row-grouping/RowGroupingSortByChildRows.js new file mode 100644 index 000000000000..fb358e559dc8 --- /dev/null +++ b/docs/data/data-grid/recipes-row-grouping/RowGroupingSortByChildRows.js @@ -0,0 +1,71 @@ +import * as React from 'react'; +import { + DataGridPremium, + gridFilteredDescendantCountLookupSelector, + useGridApiRef, + GRID_ROW_GROUPING_SINGLE_GROUPING_FIELD, +} from '@mui/x-data-grid-premium'; +import { useMovieData } from '@mui/x-data-grid-generator'; + +const initialState = { + rowGrouping: { + model: ['company', 'cinematicUniverse'], + }, + sorting: { + sortModel: [{ field: GRID_ROW_GROUPING_SINGLE_GROUPING_FIELD, sort: 'desc' }], + }, +}; + +export default function RowGroupingSortByChildRows() { + const data = useMovieData(); + const apiRef = useGridApiRef(); + + const groupingColDef = React.useMemo( + () => ({ + width: 275, + sortComparator: (v1, v2, cellParams1, cellParams2) => { + if ( + cellParams1.rowNode.type === 'group' && + cellParams2.rowNode.type === 'group' + ) { + // Sort the values, but only within the same group + if ( + cellParams1.rowNode.groupingField === cellParams2.rowNode.groupingField + ) { + const filteredDescendantCountLookup = + gridFilteredDescendantCountLookupSelector(apiRef); + const cell1DescendantCount = + filteredDescendantCountLookup[cellParams1.rowNode.id] ?? 0; + const cell2DescendantCount = + filteredDescendantCountLookup[cellParams2.rowNode.id] ?? 0; + + return cell1DescendantCount - cell2DescendantCount; + } + return 0; + } + + if (cellParams1.rowNode.type === 'group') { + return 1; + } + + if (cellParams2.rowNode.type === 'group') { + return -1; + } + + return 0; + }, + }), + [apiRef], + ); + + return ( +
+ +
+ ); +} diff --git a/docs/data/data-grid/recipes-row-grouping/RowGroupingSortByChildRows.tsx b/docs/data/data-grid/recipes-row-grouping/RowGroupingSortByChildRows.tsx new file mode 100644 index 000000000000..26a356e7949a --- /dev/null +++ b/docs/data/data-grid/recipes-row-grouping/RowGroupingSortByChildRows.tsx @@ -0,0 +1,73 @@ +import * as React from 'react'; +import { + DataGridPremium, + gridFilteredDescendantCountLookupSelector, + useGridApiRef, + GRID_ROW_GROUPING_SINGLE_GROUPING_FIELD, + GridGroupingColDefOverride, + GridInitialState, +} from '@mui/x-data-grid-premium'; +import { useMovieData } from '@mui/x-data-grid-generator'; + +const initialState: GridInitialState = { + rowGrouping: { + model: ['company', 'cinematicUniverse'], + }, + sorting: { + sortModel: [{ field: GRID_ROW_GROUPING_SINGLE_GROUPING_FIELD, sort: 'desc' }], + }, +}; + +export default function RowGroupingSortByChildRows() { + const data = useMovieData(); + const apiRef = useGridApiRef(); + + const groupingColDef: GridGroupingColDefOverride = React.useMemo( + () => ({ + width: 275, + sortComparator: (v1, v2, cellParams1, cellParams2) => { + if ( + cellParams1.rowNode.type === 'group' && + cellParams2.rowNode.type === 'group' + ) { + // Sort the values, but only within the same group + if ( + cellParams1.rowNode.groupingField === cellParams2.rowNode.groupingField + ) { + const filteredDescendantCountLookup = + gridFilteredDescendantCountLookupSelector(apiRef); + const cell1DescendantCount = + filteredDescendantCountLookup[cellParams1.rowNode.id] ?? 0; + const cell2DescendantCount = + filteredDescendantCountLookup[cellParams2.rowNode.id] ?? 0; + + return cell1DescendantCount - cell2DescendantCount; + } + return 0; + } + + if (cellParams1.rowNode.type === 'group') { + return 1; + } + + if (cellParams2.rowNode.type === 'group') { + return -1; + } + + return 0; + }, + }), + [apiRef], + ); + + return ( +
+ +
+ ); +} diff --git a/docs/data/data-grid/recipes-row-grouping/RowGroupingSortByChildRows.tsx.preview b/docs/data/data-grid/recipes-row-grouping/RowGroupingSortByChildRows.tsx.preview new file mode 100644 index 000000000000..48c16a19e769 --- /dev/null +++ b/docs/data/data-grid/recipes-row-grouping/RowGroupingSortByChildRows.tsx.preview @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/docs/data/data-grid/recipes-row-grouping/recipes-row-grouping.md b/docs/data/data-grid/recipes-row-grouping/recipes-row-grouping.md index 433668e332f9..014bbd94411a 100644 --- a/docs/data/data-grid/recipes-row-grouping/recipes-row-grouping.md +++ b/docs/data/data-grid/recipes-row-grouping/recipes-row-grouping.md @@ -17,3 +17,11 @@ In the demo below, you can toggle the group by clicking anywhere on the grouping Use `GRID_ROW_GROUPING_SINGLE_GROUPING_FIELD` to pin a grouped column. In the demo below, the `Company` column is pinned: {{"demo": "RowGroupingPinning.js", "bg": "inline", "defaultCodeOpen": false}} + +## Sorting row groups by the number of child rows + +By default, the row grouping column uses `sortComparator` of the grouping column for sorting. + +To sort the row groups by the number of child rows, you can override it using `groupingColDef.sortComparator`: + +{{"demo": "RowGroupingSortByChildRows.js", "bg": "inline", "defaultCodeOpen": false}} diff --git a/docs/data/date-pickers/base-concepts/ComponentExplorerNoSnap.js b/docs/data/date-pickers/base-concepts/ComponentExplorerNoSnap.js index 9a94a1440dc2..f433e8e610ba 100644 --- a/docs/data/date-pickers/base-concepts/ComponentExplorerNoSnap.js +++ b/docs/data/date-pickers/base-concepts/ComponentExplorerNoSnap.js @@ -70,7 +70,11 @@ const COMPONENTS = { dateTimeRange: { field: ['SingleInputDateTimeRangeField', 'MultiInputDateTimeRangeField'], view: [], - picker: [], + picker: [ + 'DateTimeRangePicker', + 'DesktopDateTimeRangePicker', + 'MobileDateTimeRangePicker', + ], }, }; diff --git a/docs/data/date-pickers/base-concepts/ComponentExplorerNoSnap.tsx b/docs/data/date-pickers/base-concepts/ComponentExplorerNoSnap.tsx index d4552d86c518..91d5d2de445e 100644 --- a/docs/data/date-pickers/base-concepts/ComponentExplorerNoSnap.tsx +++ b/docs/data/date-pickers/base-concepts/ComponentExplorerNoSnap.tsx @@ -87,7 +87,11 @@ const COMPONENTS: Record< dateTimeRange: { field: ['SingleInputDateTimeRangeField', 'MultiInputDateTimeRangeField'], view: [], - picker: [], + picker: [ + 'DateTimeRangePicker', + 'DesktopDateTimeRangePicker', + 'MobileDateTimeRangePicker', + ], }, }; diff --git a/docs/data/date-pickers/validation/DateRangeValidationShouldDisableDate.js b/docs/data/date-pickers/validation/DateRangeValidationShouldDisableDate.js index d2d4d7589195..7f8ec7f9487f 100644 --- a/docs/data/date-pickers/validation/DateRangeValidationShouldDisableDate.js +++ b/docs/data/date-pickers/validation/DateRangeValidationShouldDisableDate.js @@ -1,8 +1,10 @@ import * as React from 'react'; import dayjs from 'dayjs'; +import { DemoContainer, DemoItem } from '@mui/x-date-pickers/internals/demo'; import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs'; import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'; import { DateRangePicker } from '@mui/x-date-pickers-pro/DateRangePicker'; +import { DateTimeRangePicker } from '@mui/x-date-pickers-pro/DateTimeRangePicker'; const lastSunday = dayjs().startOf('week').subtract(1, 'day'); const nextSunday = dayjs().endOf('week').startOf('day'); @@ -16,16 +18,32 @@ const isWeekend = (date) => { export default function DateRangeValidationShouldDisableDate() { return ( - { - if (position === 'end') { - return false; - } + + + { + if (position === 'end') { + return false; + } - return isWeekend(date); - }} - /> + return isWeekend(date); + }} + /> + + + { + if (position === 'end') { + return false; + } + + return isWeekend(date); + }} + /> + + ); } diff --git a/docs/data/date-pickers/validation/DateRangeValidationShouldDisableDate.tsx b/docs/data/date-pickers/validation/DateRangeValidationShouldDisableDate.tsx index 53420bff96dc..457e9edb3125 100644 --- a/docs/data/date-pickers/validation/DateRangeValidationShouldDisableDate.tsx +++ b/docs/data/date-pickers/validation/DateRangeValidationShouldDisableDate.tsx @@ -1,8 +1,10 @@ import * as React from 'react'; import dayjs, { Dayjs } from 'dayjs'; +import { DemoContainer, DemoItem } from '@mui/x-date-pickers/internals/demo'; import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs'; import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'; import { DateRangePicker } from '@mui/x-date-pickers-pro/DateRangePicker'; +import { DateTimeRangePicker } from '@mui/x-date-pickers-pro/DateTimeRangePicker'; const lastSunday = dayjs().startOf('week').subtract(1, 'day'); const nextSunday = dayjs().endOf('week').startOf('day'); @@ -16,16 +18,32 @@ const isWeekend = (date: Dayjs) => { export default function DateRangeValidationShouldDisableDate() { return ( - { - if (position === 'end') { - return false; - } + + + { + if (position === 'end') { + return false; + } - return isWeekend(date); - }} - /> + return isWeekend(date); + }} + /> + + + { + if (position === 'end') { + return false; + } + + return isWeekend(date); + }} + /> + + ); } diff --git a/docs/data/date-pickers/validation/DateRangeValidationShouldDisableDate.tsx.preview b/docs/data/date-pickers/validation/DateRangeValidationShouldDisableDate.tsx.preview deleted file mode 100644 index d4987c3710bf..000000000000 --- a/docs/data/date-pickers/validation/DateRangeValidationShouldDisableDate.tsx.preview +++ /dev/null @@ -1,10 +0,0 @@ - { - if (position === 'end') { - return false; - } - - return isWeekend(date); - }} -/> \ No newline at end of file diff --git a/docs/data/date-pickers/validation/DateTimeValidationMaxDateTime.js b/docs/data/date-pickers/validation/DateTimeValidationMaxDateTime.js index c7abb170c746..47f33fc7ebf4 100644 --- a/docs/data/date-pickers/validation/DateTimeValidationMaxDateTime.js +++ b/docs/data/date-pickers/validation/DateTimeValidationMaxDateTime.js @@ -4,6 +4,7 @@ import { DemoContainer, DemoItem } from '@mui/x-date-pickers/internals/demo'; import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs'; import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'; import { DateTimePicker } from '@mui/x-date-pickers/DateTimePicker'; +import { DateTimeRangePicker } from '@mui/x-date-pickers-pro/DateTimeRangePicker'; const todayAtNoon = dayjs().set('hour', 12).startOf('hour'); const todayAt9AM = dayjs().set('hour', 9).startOf('hour'); @@ -11,10 +12,16 @@ const todayAt9AM = dayjs().set('hour', 9).startOf('hour'); export default function DateTimeValidationMaxDateTime() { return ( - + + + + ); diff --git a/docs/data/date-pickers/validation/DateTimeValidationMaxDateTime.tsx b/docs/data/date-pickers/validation/DateTimeValidationMaxDateTime.tsx index c7abb170c746..47f33fc7ebf4 100644 --- a/docs/data/date-pickers/validation/DateTimeValidationMaxDateTime.tsx +++ b/docs/data/date-pickers/validation/DateTimeValidationMaxDateTime.tsx @@ -4,6 +4,7 @@ import { DemoContainer, DemoItem } from '@mui/x-date-pickers/internals/demo'; import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs'; import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'; import { DateTimePicker } from '@mui/x-date-pickers/DateTimePicker'; +import { DateTimeRangePicker } from '@mui/x-date-pickers-pro/DateTimeRangePicker'; const todayAtNoon = dayjs().set('hour', 12).startOf('hour'); const todayAt9AM = dayjs().set('hour', 9).startOf('hour'); @@ -11,10 +12,16 @@ const todayAt9AM = dayjs().set('hour', 9).startOf('hour'); export default function DateTimeValidationMaxDateTime() { return ( - + + + + ); diff --git a/docs/data/date-pickers/validation/DateTimeValidationMaxDateTime.tsx.preview b/docs/data/date-pickers/validation/DateTimeValidationMaxDateTime.tsx.preview index 2446efbea453..d905b25a6830 100644 --- a/docs/data/date-pickers/validation/DateTimeValidationMaxDateTime.tsx.preview +++ b/docs/data/date-pickers/validation/DateTimeValidationMaxDateTime.tsx.preview @@ -1,3 +1,9 @@ + + + \ No newline at end of file diff --git a/docs/data/date-pickers/validation/DateTimeValidationMinDateTime.js b/docs/data/date-pickers/validation/DateTimeValidationMinDateTime.js index caa6d171909e..ab22f887fd6e 100644 --- a/docs/data/date-pickers/validation/DateTimeValidationMinDateTime.js +++ b/docs/data/date-pickers/validation/DateTimeValidationMinDateTime.js @@ -4,6 +4,7 @@ import { DemoContainer, DemoItem } from '@mui/x-date-pickers/internals/demo'; import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs'; import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'; import { DateTimePicker } from '@mui/x-date-pickers/DateTimePicker'; +import { DateTimeRangePicker } from '@mui/x-date-pickers-pro/DateTimeRangePicker'; const todayAtNoon = dayjs().set('hour', 12).startOf('hour'); const todayAt3PM = dayjs().set('hour', 15).startOf('hour'); @@ -11,10 +12,16 @@ const todayAt3PM = dayjs().set('hour', 15).startOf('hour'); export default function DateTimeValidationMinDateTime() { return ( - + + + + ); diff --git a/docs/data/date-pickers/validation/DateTimeValidationMinDateTime.tsx b/docs/data/date-pickers/validation/DateTimeValidationMinDateTime.tsx index caa6d171909e..ab22f887fd6e 100644 --- a/docs/data/date-pickers/validation/DateTimeValidationMinDateTime.tsx +++ b/docs/data/date-pickers/validation/DateTimeValidationMinDateTime.tsx @@ -4,6 +4,7 @@ import { DemoContainer, DemoItem } from '@mui/x-date-pickers/internals/demo'; import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs'; import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'; import { DateTimePicker } from '@mui/x-date-pickers/DateTimePicker'; +import { DateTimeRangePicker } from '@mui/x-date-pickers-pro/DateTimeRangePicker'; const todayAtNoon = dayjs().set('hour', 12).startOf('hour'); const todayAt3PM = dayjs().set('hour', 15).startOf('hour'); @@ -11,10 +12,16 @@ const todayAt3PM = dayjs().set('hour', 15).startOf('hour'); export default function DateTimeValidationMinDateTime() { return ( - + + + + ); diff --git a/docs/data/date-pickers/validation/DateTimeValidationMinDateTime.tsx.preview b/docs/data/date-pickers/validation/DateTimeValidationMinDateTime.tsx.preview index b3f336bd979f..2e9367f6d982 100644 --- a/docs/data/date-pickers/validation/DateTimeValidationMinDateTime.tsx.preview +++ b/docs/data/date-pickers/validation/DateTimeValidationMinDateTime.tsx.preview @@ -1,3 +1,9 @@ + + + \ No newline at end of file diff --git a/docs/data/date-pickers/validation/DateValidationDisableFuture.js b/docs/data/date-pickers/validation/DateValidationDisableFuture.js index 81f848163387..1324885926d6 100644 --- a/docs/data/date-pickers/validation/DateValidationDisableFuture.js +++ b/docs/data/date-pickers/validation/DateValidationDisableFuture.js @@ -7,6 +7,7 @@ import { DatePicker } from '@mui/x-date-pickers/DatePicker'; import { DateTimePicker } from '@mui/x-date-pickers/DateTimePicker'; import { TimePicker } from '@mui/x-date-pickers/TimePicker'; import { DateRangePicker } from '@mui/x-date-pickers-pro/DateRangePicker'; +import { DateTimeRangePicker } from '@mui/x-date-pickers-pro/DateTimeRangePicker'; const today = dayjs(); const tomorrow = dayjs().add(1, 'day'); @@ -21,6 +22,7 @@ export default function DateValidationDisableFuture() { 'DateTimePicker', 'TimePicker', 'DateRangePicker', + 'DateTimeRangePicker', ]} > @@ -43,6 +45,9 @@ export default function DateValidationDisableFuture() { + + + ); diff --git a/docs/data/date-pickers/validation/DateValidationDisableFuture.tsx b/docs/data/date-pickers/validation/DateValidationDisableFuture.tsx index 81f848163387..1324885926d6 100644 --- a/docs/data/date-pickers/validation/DateValidationDisableFuture.tsx +++ b/docs/data/date-pickers/validation/DateValidationDisableFuture.tsx @@ -7,6 +7,7 @@ import { DatePicker } from '@mui/x-date-pickers/DatePicker'; import { DateTimePicker } from '@mui/x-date-pickers/DateTimePicker'; import { TimePicker } from '@mui/x-date-pickers/TimePicker'; import { DateRangePicker } from '@mui/x-date-pickers-pro/DateRangePicker'; +import { DateTimeRangePicker } from '@mui/x-date-pickers-pro/DateTimeRangePicker'; const today = dayjs(); const tomorrow = dayjs().add(1, 'day'); @@ -21,6 +22,7 @@ export default function DateValidationDisableFuture() { 'DateTimePicker', 'TimePicker', 'DateRangePicker', + 'DateTimeRangePicker', ]} > @@ -43,6 +45,9 @@ export default function DateValidationDisableFuture() { + + + ); diff --git a/docs/data/date-pickers/validation/DateValidationDisablePast.js b/docs/data/date-pickers/validation/DateValidationDisablePast.js index 1ca8e0b096bf..26c4e9ca5657 100644 --- a/docs/data/date-pickers/validation/DateValidationDisablePast.js +++ b/docs/data/date-pickers/validation/DateValidationDisablePast.js @@ -7,6 +7,7 @@ import { DatePicker } from '@mui/x-date-pickers/DatePicker'; import { DateTimePicker } from '@mui/x-date-pickers/DateTimePicker'; import { TimePicker } from '@mui/x-date-pickers/TimePicker'; import { DateRangePicker } from '@mui/x-date-pickers-pro/DateRangePicker'; +import { DateTimeRangePicker } from '@mui/x-date-pickers-pro/DateTimeRangePicker'; const today = dayjs(); const yesterday = dayjs().subtract(1, 'day'); @@ -21,6 +22,7 @@ export default function DateValidationDisablePast() { 'DateTimePicker', 'TimePicker', 'DateRangePicker', + 'DateTimeRangePicker', ]} > @@ -43,6 +45,9 @@ export default function DateValidationDisablePast() { + + + ); diff --git a/docs/data/date-pickers/validation/DateValidationDisablePast.tsx b/docs/data/date-pickers/validation/DateValidationDisablePast.tsx index 1ca8e0b096bf..26c4e9ca5657 100644 --- a/docs/data/date-pickers/validation/DateValidationDisablePast.tsx +++ b/docs/data/date-pickers/validation/DateValidationDisablePast.tsx @@ -7,6 +7,7 @@ import { DatePicker } from '@mui/x-date-pickers/DatePicker'; import { DateTimePicker } from '@mui/x-date-pickers/DateTimePicker'; import { TimePicker } from '@mui/x-date-pickers/TimePicker'; import { DateRangePicker } from '@mui/x-date-pickers-pro/DateRangePicker'; +import { DateTimeRangePicker } from '@mui/x-date-pickers-pro/DateTimeRangePicker'; const today = dayjs(); const yesterday = dayjs().subtract(1, 'day'); @@ -21,6 +22,7 @@ export default function DateValidationDisablePast() { 'DateTimePicker', 'TimePicker', 'DateRangePicker', + 'DateTimeRangePicker', ]} > @@ -43,6 +45,9 @@ export default function DateValidationDisablePast() { + + + ); diff --git a/docs/data/date-pickers/validation/DateValidationMaxDate.js b/docs/data/date-pickers/validation/DateValidationMaxDate.js index f2902f92559d..10fdeb92dfa5 100644 --- a/docs/data/date-pickers/validation/DateValidationMaxDate.js +++ b/docs/data/date-pickers/validation/DateValidationMaxDate.js @@ -6,6 +6,7 @@ import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'; import { DatePicker } from '@mui/x-date-pickers/DatePicker'; import { DateTimePicker } from '@mui/x-date-pickers/DateTimePicker'; import { DateRangePicker } from '@mui/x-date-pickers-pro/DateRangePicker'; +import { DateTimeRangePicker } from '@mui/x-date-pickers-pro/DateTimeRangePicker'; const today = dayjs(); const yesterday = dayjs().subtract(1, 'day'); @@ -14,7 +15,12 @@ export default function DateValidationMaxDate() { return ( + + + ); diff --git a/docs/data/date-pickers/validation/DateValidationMaxDate.tsx b/docs/data/date-pickers/validation/DateValidationMaxDate.tsx index f2902f92559d..10fdeb92dfa5 100644 --- a/docs/data/date-pickers/validation/DateValidationMaxDate.tsx +++ b/docs/data/date-pickers/validation/DateValidationMaxDate.tsx @@ -6,6 +6,7 @@ import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'; import { DatePicker } from '@mui/x-date-pickers/DatePicker'; import { DateTimePicker } from '@mui/x-date-pickers/DateTimePicker'; import { DateRangePicker } from '@mui/x-date-pickers-pro/DateRangePicker'; +import { DateTimeRangePicker } from '@mui/x-date-pickers-pro/DateTimeRangePicker'; const today = dayjs(); const yesterday = dayjs().subtract(1, 'day'); @@ -14,7 +15,12 @@ export default function DateValidationMaxDate() { return ( + + + ); diff --git a/docs/data/date-pickers/validation/DateValidationMinDate.js b/docs/data/date-pickers/validation/DateValidationMinDate.js index b91265869da7..d4e3f92a01ab 100644 --- a/docs/data/date-pickers/validation/DateValidationMinDate.js +++ b/docs/data/date-pickers/validation/DateValidationMinDate.js @@ -6,6 +6,7 @@ import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'; import { DatePicker } from '@mui/x-date-pickers/DatePicker'; import { DateTimePicker } from '@mui/x-date-pickers/DateTimePicker'; import { DateRangePicker } from '@mui/x-date-pickers-pro/DateRangePicker'; +import { DateTimeRangePicker } from '@mui/x-date-pickers-pro/DateTimeRangePicker'; const today = dayjs(); const tomorrow = dayjs().add(1, 'day'); @@ -14,7 +15,12 @@ export default function DateValidationMinDate() { return ( + + + ); diff --git a/docs/data/date-pickers/validation/DateValidationMinDate.tsx b/docs/data/date-pickers/validation/DateValidationMinDate.tsx index b91265869da7..d4e3f92a01ab 100644 --- a/docs/data/date-pickers/validation/DateValidationMinDate.tsx +++ b/docs/data/date-pickers/validation/DateValidationMinDate.tsx @@ -6,6 +6,7 @@ import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'; import { DatePicker } from '@mui/x-date-pickers/DatePicker'; import { DateTimePicker } from '@mui/x-date-pickers/DateTimePicker'; import { DateRangePicker } from '@mui/x-date-pickers-pro/DateRangePicker'; +import { DateTimeRangePicker } from '@mui/x-date-pickers-pro/DateTimeRangePicker'; const today = dayjs(); const tomorrow = dayjs().add(1, 'day'); @@ -14,7 +15,12 @@ export default function DateValidationMinDate() { return ( + + + ); diff --git a/docs/data/date-pickers/validation/DateValidationShouldDisableDate.js b/docs/data/date-pickers/validation/DateValidationShouldDisableDate.js index f72e480a1fb6..b1d4976ecc7c 100644 --- a/docs/data/date-pickers/validation/DateValidationShouldDisableDate.js +++ b/docs/data/date-pickers/validation/DateValidationShouldDisableDate.js @@ -6,6 +6,7 @@ import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'; import { DatePicker } from '@mui/x-date-pickers/DatePicker'; import { DateTimePicker } from '@mui/x-date-pickers/DateTimePicker'; import { DateRangePicker } from '@mui/x-date-pickers-pro/DateRangePicker'; +import { DateTimeRangePicker } from '@mui/x-date-pickers-pro/DateTimeRangePicker'; const lastMonday = dayjs().startOf('week'); const nextSunday = dayjs().endOf('week').startOf('day'); @@ -20,7 +21,12 @@ export default function DateValidationShouldDisableDate() { return ( + + + ); diff --git a/docs/data/date-pickers/validation/DateValidationShouldDisableDate.tsx b/docs/data/date-pickers/validation/DateValidationShouldDisableDate.tsx index 10ad56488934..f3c87bb89d6a 100644 --- a/docs/data/date-pickers/validation/DateValidationShouldDisableDate.tsx +++ b/docs/data/date-pickers/validation/DateValidationShouldDisableDate.tsx @@ -6,6 +6,7 @@ import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'; import { DatePicker } from '@mui/x-date-pickers/DatePicker'; import { DateTimePicker } from '@mui/x-date-pickers/DateTimePicker'; import { DateRangePicker } from '@mui/x-date-pickers-pro/DateRangePicker'; +import { DateTimeRangePicker } from '@mui/x-date-pickers-pro/DateTimeRangePicker'; const lastMonday = dayjs().startOf('week'); const nextSunday = dayjs().endOf('week').startOf('day'); @@ -20,7 +21,12 @@ export default function DateValidationShouldDisableDate() { return ( + + + ); diff --git a/docs/data/date-pickers/validation/TimeValidationMaxTime.js b/docs/data/date-pickers/validation/TimeValidationMaxTime.js index 87ff5b9be45f..3f752b5990f2 100644 --- a/docs/data/date-pickers/validation/TimeValidationMaxTime.js +++ b/docs/data/date-pickers/validation/TimeValidationMaxTime.js @@ -5,6 +5,7 @@ import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs'; import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'; import { TimePicker } from '@mui/x-date-pickers/TimePicker'; import { DateTimePicker } from '@mui/x-date-pickers/DateTimePicker'; +import { DateTimeRangePicker } from '@mui/x-date-pickers-pro/DateTimeRangePicker'; const fiveAM = dayjs().set('hour', 5).startOf('hour'); const nineAM = dayjs().set('hour', 9).startOf('hour'); @@ -12,13 +13,18 @@ const nineAM = dayjs().set('hour', 9).startOf('hour'); export default function TimeValidationMaxTime() { return ( - + + + + ); diff --git a/docs/data/date-pickers/validation/TimeValidationMaxTime.tsx b/docs/data/date-pickers/validation/TimeValidationMaxTime.tsx index 87ff5b9be45f..3f752b5990f2 100644 --- a/docs/data/date-pickers/validation/TimeValidationMaxTime.tsx +++ b/docs/data/date-pickers/validation/TimeValidationMaxTime.tsx @@ -5,6 +5,7 @@ import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs'; import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'; import { TimePicker } from '@mui/x-date-pickers/TimePicker'; import { DateTimePicker } from '@mui/x-date-pickers/DateTimePicker'; +import { DateTimeRangePicker } from '@mui/x-date-pickers-pro/DateTimeRangePicker'; const fiveAM = dayjs().set('hour', 5).startOf('hour'); const nineAM = dayjs().set('hour', 9).startOf('hour'); @@ -12,13 +13,18 @@ const nineAM = dayjs().set('hour', 9).startOf('hour'); export default function TimeValidationMaxTime() { return ( - + + + + ); diff --git a/docs/data/date-pickers/validation/TimeValidationMaxTime.tsx.preview b/docs/data/date-pickers/validation/TimeValidationMaxTime.tsx.preview index 80d80364c937..8d3a283e7005 100644 --- a/docs/data/date-pickers/validation/TimeValidationMaxTime.tsx.preview +++ b/docs/data/date-pickers/validation/TimeValidationMaxTime.tsx.preview @@ -3,4 +3,7 @@ + + + \ No newline at end of file diff --git a/docs/data/date-pickers/validation/TimeValidationMinTime.js b/docs/data/date-pickers/validation/TimeValidationMinTime.js index fa2215ffb693..0aee08e2b5e4 100644 --- a/docs/data/date-pickers/validation/TimeValidationMinTime.js +++ b/docs/data/date-pickers/validation/TimeValidationMinTime.js @@ -5,6 +5,7 @@ import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs'; import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'; import { TimePicker } from '@mui/x-date-pickers/TimePicker'; import { DateTimePicker } from '@mui/x-date-pickers/DateTimePicker'; +import { DateTimeRangePicker } from '@mui/x-date-pickers-pro/DateTimeRangePicker'; const fiveAM = dayjs().set('hour', 5).startOf('hour'); const nineAM = dayjs().set('hour', 9).startOf('hour'); @@ -12,13 +13,18 @@ const nineAM = dayjs().set('hour', 9).startOf('hour'); export default function TimeValidationMinTime() { return ( - + + + + ); diff --git a/docs/data/date-pickers/validation/TimeValidationMinTime.tsx b/docs/data/date-pickers/validation/TimeValidationMinTime.tsx index fa2215ffb693..0aee08e2b5e4 100644 --- a/docs/data/date-pickers/validation/TimeValidationMinTime.tsx +++ b/docs/data/date-pickers/validation/TimeValidationMinTime.tsx @@ -5,6 +5,7 @@ import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs'; import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'; import { TimePicker } from '@mui/x-date-pickers/TimePicker'; import { DateTimePicker } from '@mui/x-date-pickers/DateTimePicker'; +import { DateTimeRangePicker } from '@mui/x-date-pickers-pro/DateTimeRangePicker'; const fiveAM = dayjs().set('hour', 5).startOf('hour'); const nineAM = dayjs().set('hour', 9).startOf('hour'); @@ -12,13 +13,18 @@ const nineAM = dayjs().set('hour', 9).startOf('hour'); export default function TimeValidationMinTime() { return ( - + + + + ); diff --git a/docs/data/date-pickers/validation/TimeValidationMinTime.tsx.preview b/docs/data/date-pickers/validation/TimeValidationMinTime.tsx.preview index 0afa2749d32e..7fe5ae4117de 100644 --- a/docs/data/date-pickers/validation/TimeValidationMinTime.tsx.preview +++ b/docs/data/date-pickers/validation/TimeValidationMinTime.tsx.preview @@ -3,4 +3,7 @@ + + + \ No newline at end of file diff --git a/docs/data/date-pickers/validation/TimeValidationShouldDisableTime.js b/docs/data/date-pickers/validation/TimeValidationShouldDisableTime.js index 59eabdda42e8..cb03250b7f38 100644 --- a/docs/data/date-pickers/validation/TimeValidationShouldDisableTime.js +++ b/docs/data/date-pickers/validation/TimeValidationShouldDisableTime.js @@ -5,6 +5,7 @@ import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs'; import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'; import { TimePicker } from '@mui/x-date-pickers/TimePicker'; import { DateTimePicker } from '@mui/x-date-pickers/DateTimePicker'; +import { DateTimeRangePicker } from '@mui/x-date-pickers-pro/DateTimeRangePicker'; const shouldDisableTime = (value, view) => view === 'minutes' && value.minute() >= 45; @@ -14,7 +15,9 @@ const defaultValue = dayjs().set('hour', 10).set('minute', 50).startOf('minute') export default function TimeValidationShouldDisableTime() { return ( - + + + + ); diff --git a/docs/data/date-pickers/validation/TimeValidationShouldDisableTime.tsx b/docs/data/date-pickers/validation/TimeValidationShouldDisableTime.tsx index 32e8b96419e6..1f737a728203 100644 --- a/docs/data/date-pickers/validation/TimeValidationShouldDisableTime.tsx +++ b/docs/data/date-pickers/validation/TimeValidationShouldDisableTime.tsx @@ -5,6 +5,7 @@ import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs'; import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'; import { TimePicker, TimePickerProps } from '@mui/x-date-pickers/TimePicker'; import { DateTimePicker } from '@mui/x-date-pickers/DateTimePicker'; +import { DateTimeRangePicker } from '@mui/x-date-pickers-pro/DateTimeRangePicker'; const shouldDisableTime: TimePickerProps['shouldDisableTime'] = ( value, @@ -16,7 +17,9 @@ const defaultValue = dayjs().set('hour', 10).set('minute', 50).startOf('minute') export default function TimeValidationShouldDisableTime() { return ( - + + + + ); diff --git a/docs/data/date-pickers/validation/TimeValidationShouldDisableTime.tsx.preview b/docs/data/date-pickers/validation/TimeValidationShouldDisableTime.tsx.preview deleted file mode 100644 index 8acdee19ca10..000000000000 --- a/docs/data/date-pickers/validation/TimeValidationShouldDisableTime.tsx.preview +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/docs/data/introduction/support/support.md b/docs/data/introduction/support/support.md index 23077411d6fa..5c1d49e2875b 100644 --- a/docs/data/introduction/support/support.md +++ b/docs/data/introduction/support/support.md @@ -1,20 +1,38 @@ # Support -

How to get support for MUI X components, including feature requests, bug fixes, answers to how-to questions, and technical support from the team.

+

Learn how to get support for MUI X components, including feature requests, bug fixes, and technical support from the team.

## GitHub We use GitHub issues as a bug and feature request tracker. -If you think you've found a bug, or you have a new feature idea, please start by [making sure it hasn't already been reported or fixed](https://github.com/mui/mui-x/issues?utf8=%E2%9C%93&q=is%3Aopen+is%3Aclosed). -You can search through existing issues and pull requests to see if someone has reported one similar to yours. -[Open an issue](https://github.com/mui/mui-x/issues/new/choose) in the MUI X repo. +If you think you've found a bug, or you have a new feature idea: + +1. Please start by [making sure it hasn't already been reported or fixed](https://github.com/mui/mui-x/issues?utf8=%E2%9C%93&q=is%3Aopen+is%3Aclosed). + You can search through existing issues and pull requests to see if someone has reported one similar to yours. +2. Then, if no duplicates exist, [open an issue](https://github.com/mui/mui-x/issues/new/choose) in the MUI X repository. + +### New issue guidelines + +- Please follow one the issue templates provided on GitHub. +- Please begin the title with "[component-name]" (if relevant), and use a succinct description that helps others find similar issues. + - ❌ _"It doesn't work"_ + - ✅ _"[button] Add support for {{new feature}}"_ +- Please don't group multiple topics in one issue. +- Please don't comment "+1" on an issue. It spams the maintainers and doesn't help move the issue forward. Use GitHub reactions instead (👍). ## Stack Overflow -Visit Stack Overflow to ask questions and read crowdsourced answers from expert developers in the MUI community, as well as MUI maintainers. +We use Stack Overflow for how-to questions. Answers are crowdsourced from expert developers in the MUI X community as well as MUI X maintainers. + +You can search through existing questions and answers to see if someone has asked a similar question using one of [these tags](https://stackoverflow.com/questions/tagged/mui-x+or+mui-x-charts+or+mui-x-data-grid+or+mui-x-date-picker): + +- mui-x +- mui-x-data-grid +- mui-x-date-picker +- mui-x-charts -[Post a question about MUI X](https://stackoverflow.com/questions/tagged/mui-x) on Stack Overflow using the "mui-x" tag. +If you can't find your answer, [ask a new question](https://stackoverflow.com/questions/ask?tags=reactjs%20mui-x) using the relevant tags. ## Technical support @@ -22,7 +40,7 @@ Visit Stack Overflow to ask questions and read crowdsourced answers from expert The technical support covers only MUI X components. ::: -When purchasing a MUI X Pro or Premium license you get access to technical support until the end of your subscription. +When purchasing a MUI X Pro or Premium license you get access to technical support until the end of your active license. Support is available on multiple channels, but the recommended channels are: - GitHub: You can [open a new issue](https://github.com/mui/mui-x/issues/new/choose) and leave your Order ID (or Support key), so we can prioritize accordingly. @@ -34,9 +52,10 @@ Including your Order ID (or Support key) in the issue helps us prioritize the is 2. MUI X Premium: The same as MUI X Pro, but with higher priority. 3. MUI X Priority Support add-on (coming soon): Provides a 24h SLA for the first answer. -### Long-term support (LTS) +## Long-term support (LTS) -Bug fixes, performance enhancements, and other improvements are delivered in new releases. However, MUI remains committed to providing security updates and addressing regressions for the immediate predecessor of the current major version. +Bug fixes, performance enhancements, and other improvements are delivered in new releases. +However, we remain committed to providing security updates and addressing regressions for the immediate predecessor of the current major version. This includes issues introduced by external sources, like browser upgrades or changes to upstream dependencies. @@ -44,8 +63,36 @@ This includes issues introduced by external sources, like browser upgrades or ch - MUI X v7: ✅ Pre-release (Continuous support - Stable release: March 2024) - MUI X v6: ✅ Stable major (Continuous support) -- MUI X v5: ⚠️ Long term support (Guaranteed Support for security issues and regressions). +- MUI X v5: ⚠️ Long-term support (Guaranteed Support for security issues and regressions). - MUI X v4: 🅧 No longer supported. - MUI X v3: 🅧 Never existed. - MUI X v2: 🅧 Never existed. - MUI X v1: 🅧 Never existed. + +## Community + +### Social media + +The MUI X community is active on both [X/Twitter](https://twitter.com/MUI_hq) and [LinkedIn](https://www.linkedin.com/company/mui/). +These are great platforms to share what you're working on and connect with other developers. + +### Discord + +We have a [Discord Server](https://mui.com/r/discord/) to bring the MUI X community together. +Our tools are used by thousands of developers and teams all around the world, many of whom actively engage with the community. + +You can join Discord to engage in lively discussions, share your projects, and interact with developers just like you from all around the world. We'd love for you to join us! + +:::warning +How-to questions are not accepted on Discord, they should be asked on [Stack Overflow](#stack-overflow). +::: + +## Custom work + +If your team gets stuck and needs help getting unblocked, MUI X's engineers may be available on a contract basis. + +Keep in mind that the work must be directly related to MUI X's products—we don't accept general web development or React work. + +Our contracting price starts at $200/hour or $1,500/day. + +[Send us an email](mailto:custom-work@mui.com) summarizing of your needs, and we'll let you know whether we can help (or else try to suggest alternatives). diff --git a/docs/data/tree-view/overview/overview.md b/docs/data/tree-view/overview/overview.md index ba2d3ed0834f..0954679d90fc 100644 --- a/docs/data/tree-view/overview/overview.md +++ b/docs/data/tree-view/overview/overview.md @@ -1,7 +1,6 @@ --- productId: x-tree-view title: Tree View React component -components: SimpleTreeView, RichTreeView, TreeItem, TreeView githubLabel: 'component: tree view' waiAria: https://www.w3.org/WAI/ARIA/apg/patterns/treeview/ packageName: '@mui/x-tree-view' diff --git a/docs/data/tree-view/rich-tree-view/expansion/expansion.md b/docs/data/tree-view/rich-tree-view/expansion/expansion.md index 911c505efd1b..d45ef4960fa6 100644 --- a/docs/data/tree-view/rich-tree-view/expansion/expansion.md +++ b/docs/data/tree-view/rich-tree-view/expansion/expansion.md @@ -29,6 +29,6 @@ Learn more about the _Controlled and uncontrolled_ pattern in the [React documen ## Track node expansion change -Use the `onNodeExpansionToggle` if you want to react to a node expansion change: +Use the `onNodeExpansionToggle` prop if you want to react to a node expansion change: {{"demo": "TrackNodeExpansionToggle.js"}} diff --git a/docs/data/tree-view/rich-tree-view/selection/DisableSelection.js b/docs/data/tree-view/rich-tree-view/selection/DisableSelection.js new file mode 100644 index 000000000000..c403c5c78ca3 --- /dev/null +++ b/docs/data/tree-view/rich-tree-view/selection/DisableSelection.js @@ -0,0 +1,41 @@ +import * as React from 'react'; +import Box from '@mui/material/Box'; +import { RichTreeView } from '@mui/x-tree-view'; + +const MUI_X_PRODUCTS = [ + { + 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' }], + }, +]; + +export default function DisableSelection() { + return ( + + + + ); +} diff --git a/docs/data/tree-view/rich-tree-view/selection/DisableSelection.tsx b/docs/data/tree-view/rich-tree-view/selection/DisableSelection.tsx new file mode 100644 index 000000000000..78f8b569e6b6 --- /dev/null +++ b/docs/data/tree-view/rich-tree-view/selection/DisableSelection.tsx @@ -0,0 +1,41 @@ +import * as React from 'react'; +import Box from '@mui/material/Box'; +import { RichTreeView, TreeViewBaseItem } from '@mui/x-tree-view'; + +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' }], + }, +]; + +export default function DisableSelection() { + return ( + + + + ); +} diff --git a/docs/data/tree-view/rich-tree-view/selection/DisableSelection.tsx.preview b/docs/data/tree-view/rich-tree-view/selection/DisableSelection.tsx.preview new file mode 100644 index 000000000000..aec13474a1c9 --- /dev/null +++ b/docs/data/tree-view/rich-tree-view/selection/DisableSelection.tsx.preview @@ -0,0 +1 @@ + \ No newline at end of file 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 af7a686a7976..472d654ea28b 100644 --- a/docs/data/tree-view/rich-tree-view/selection/selection.md +++ b/docs/data/tree-view/rich-tree-view/selection/selection.md @@ -17,6 +17,12 @@ The Tree View also supports multi-selection: {{"demo": "MultiSelectTreeView.js"}} +## Disable selection + +Use the `disableSelection` prop if you don't want your items to be selectable: + +{{"demo": "DisableSelection.js"}} + ## Controlled selection Use the `selectedNodes` prop to control the selected items. @@ -35,6 +41,6 @@ Learn more about the _Controlled and uncontrolled_ pattern in the [React documen ## Track node selection change -Use the `onNodeSelectionToggle` if you want to react to a node selection change: +Use the `onNodeSelectionToggle` prop if you want to react to a node selection change: {{"demo": "TrackNodeSelectionToggle.js"}} diff --git a/docs/data/tree-view/simple-tree-view/expansion/expansion.md b/docs/data/tree-view/simple-tree-view/expansion/expansion.md index 80cbfabbf121..e41a5a8d9b38 100644 --- a/docs/data/tree-view/simple-tree-view/expansion/expansion.md +++ b/docs/data/tree-view/simple-tree-view/expansion/expansion.md @@ -29,6 +29,6 @@ Learn more about the _Controlled and uncontrolled_ pattern in the [React documen ## Track node expansion change -Use the `onNodeExpansionToggle` if you want to react to a node expansion change: +Use the `onNodeExpansionToggle` prop if you want to react to a node expansion change: {{"demo": "TrackNodeExpansionToggle.js"}} diff --git a/docs/data/tree-view/simple-tree-view/selection/DisableSelection.js b/docs/data/tree-view/simple-tree-view/selection/DisableSelection.js new file mode 100644 index 000000000000..6f461015bc97 --- /dev/null +++ b/docs/data/tree-view/simple-tree-view/selection/DisableSelection.js @@ -0,0 +1,28 @@ +import * as React from 'react'; +import Box from '@mui/material/Box'; +import { SimpleTreeView } from '@mui/x-tree-view/SimpleTreeView'; +import { TreeItem } from '@mui/x-tree-view/TreeItem'; + +export default function DisableSelection() { + return ( + + + + + + + + + + + + + + + + + + + + ); +} diff --git a/docs/data/tree-view/simple-tree-view/selection/DisableSelection.tsx b/docs/data/tree-view/simple-tree-view/selection/DisableSelection.tsx new file mode 100644 index 000000000000..6f461015bc97 --- /dev/null +++ b/docs/data/tree-view/simple-tree-view/selection/DisableSelection.tsx @@ -0,0 +1,28 @@ +import * as React from 'react'; +import Box from '@mui/material/Box'; +import { SimpleTreeView } from '@mui/x-tree-view/SimpleTreeView'; +import { TreeItem } from '@mui/x-tree-view/TreeItem'; + +export default function DisableSelection() { + return ( + + + + + + + + + + + + + + + + + + + + ); +} diff --git a/docs/data/tree-view/simple-tree-view/selection/selection.md b/docs/data/tree-view/simple-tree-view/selection/selection.md index 4d3aaf4f6ad1..11f758b2629a 100644 --- a/docs/data/tree-view/simple-tree-view/selection/selection.md +++ b/docs/data/tree-view/simple-tree-view/selection/selection.md @@ -17,6 +17,12 @@ The Tree View also supports multi-selection: {{"demo": "MultiSelectTreeView.js"}} +## Disable selection + +Use the `disableSelection` prop if you don't want your items to be selectable: + +{{"demo": "DisableSelection.js"}} + ## Controlled selection Use the `selectedNodes` prop to control the selected items. @@ -35,6 +41,6 @@ Learn more about the _Controlled and uncontrolled_ pattern in the [React documen ## Track node selection change -Use the `onNodeSelectionToggle` if you want to react to a node selection change: +Use the `onNodeSelectionToggle` prop if you want to react to a node selection change: {{"demo": "TrackNodeSelectionToggle.js"}} diff --git a/docs/package.json b/docs/package.json index 693e4354a0a3..6568e6136eeb 100644 --- a/docs/package.json +++ b/docs/package.json @@ -19,24 +19,24 @@ "populate:demos": "cross-env BABEL_ENV=development babel-node --extensions \".tsx,.ts,.js\" scripts/populatePickersDemos" }, "dependencies": { - "@babel/core": "^7.23.7", + "@babel/core": "^7.23.9", "@babel/plugin-transform-object-assign": "^7.23.3", - "@babel/runtime-corejs2": "^7.23.8", + "@babel/runtime-corejs2": "^7.23.9", "@docsearch/react": "^3.5.2", "@emotion/cache": "^11.11.0", "@emotion/react": "^11.11.3", "@emotion/server": "^11.11.0", "@emotion/styled": "^11.11.0", - "@mui/icons-material": "^5.15.5", - "@mui/joy": "^5.0.0-beta.23", - "@mui/lab": "^5.0.0-alpha.161", - "@mui/material": "^5.15.5", - "@mui/styles": "^5.15.5", - "@mui/utils": "^5.15.5", + "@mui/icons-material": "^5.15.6", + "@mui/joy": "^5.0.0-beta.24", + "@mui/lab": "^5.0.0-alpha.162", + "@mui/material": "^5.15.6", + "@mui/styles": "^5.15.6", + "@mui/utils": "^5.15.6", "@react-spring/web": "^9.7.3", "@trendmicro/react-interpolate": "^0.5.5", "@types/lodash": "^4.14.202", - "@types/moment-hijri": "^2.1.3", + "@types/moment-hijri": "^2.1.4", "@types/react-dom": "^18.2.18", "@types/react-router-dom": "^5.3.3", "ast-types": "^0.14.2", diff --git a/docs/pages/x/api/charts/animated-area.js b/docs/pages/x/api/charts/animated-area.js new file mode 100644 index 000000000000..f03605dd0bcf --- /dev/null +++ b/docs/pages/x/api/charts/animated-area.js @@ -0,0 +1,23 @@ +import * as React from 'react'; +import ApiPage from 'docs/src/modules/components/ApiPage'; +import mapApiPageTranslations from 'docs/src/modules/utils/mapApiPageTranslations'; +import jsonPageContent from './animated-area.json'; + +export default function Page(props) { + const { descriptions, pageContent } = props; + return ; +} + +Page.getInitialProps = () => { + const req = require.context( + 'docsx/translations/api-docs/charts/animated-area', + false, + /\.\/animated-area.*.json$/, + ); + const descriptions = mapApiPageTranslations(req); + + return { + descriptions, + pageContent: jsonPageContent, + }; +}; diff --git a/docs/pages/x/api/charts/animated-area.json b/docs/pages/x/api/charts/animated-area.json new file mode 100644 index 000000000000..709e7b00d3ff --- /dev/null +++ b/docs/pages/x/api/charts/animated-area.json @@ -0,0 +1,14 @@ +{ + "props": { "skipAnimation": { "type": { "name": "bool" }, "default": "false" } }, + "name": "AnimatedArea", + "imports": [ + "import { AnimatedArea } from '@mui/x-charts/LineChart';", + "import { AnimatedArea } from '@mui/x-charts';" + ], + "classes": [], + "muiName": "MuiAnimatedArea", + "filename": "/packages/x-charts/src/LineChart/AnimatedArea.tsx", + "inheritance": null, + "demos": "", + "cssComponent": false +} diff --git a/docs/pages/x/api/charts/animated-line.js b/docs/pages/x/api/charts/animated-line.js new file mode 100644 index 000000000000..ac113d11aa47 --- /dev/null +++ b/docs/pages/x/api/charts/animated-line.js @@ -0,0 +1,23 @@ +import * as React from 'react'; +import ApiPage from 'docs/src/modules/components/ApiPage'; +import mapApiPageTranslations from 'docs/src/modules/utils/mapApiPageTranslations'; +import jsonPageContent from './animated-line.json'; + +export default function Page(props) { + const { descriptions, pageContent } = props; + return ; +} + +Page.getInitialProps = () => { + const req = require.context( + 'docsx/translations/api-docs/charts/animated-line', + false, + /\.\/animated-line.*.json$/, + ); + const descriptions = mapApiPageTranslations(req); + + return { + descriptions, + pageContent: jsonPageContent, + }; +}; diff --git a/docs/pages/x/api/charts/animated-line.json b/docs/pages/x/api/charts/animated-line.json new file mode 100644 index 000000000000..b107967c75f4 --- /dev/null +++ b/docs/pages/x/api/charts/animated-line.json @@ -0,0 +1,14 @@ +{ + "props": { "skipAnimation": { "type": { "name": "bool" }, "default": "false" } }, + "name": "AnimatedLine", + "imports": [ + "import { AnimatedLine } from '@mui/x-charts/LineChart';", + "import { AnimatedLine } from '@mui/x-charts';" + ], + "classes": [], + "muiName": "MuiAnimatedLine", + "filename": "/packages/x-charts/src/LineChart/AnimatedLine.tsx", + "inheritance": null, + "demos": "", + "cssComponent": false +} diff --git a/docs/pages/x/api/charts/area-element.json b/docs/pages/x/api/charts/area-element.json index 7ca180d2214d..b5dfedae13bd 100644 --- a/docs/pages/x/api/charts/area-element.json +++ b/docs/pages/x/api/charts/area-element.json @@ -1,5 +1,6 @@ { "props": { + "skipAnimation": { "type": { "name": "bool" }, "default": "false" }, "slotProps": { "type": { "name": "object" }, "default": "{}" }, "slots": { "type": { "name": "object" }, @@ -12,6 +13,14 @@ "import { AreaElement } from '@mui/x-charts/LineChart';", "import { AreaElement } from '@mui/x-charts';" ], + "slots": [ + { + "name": "area", + "description": "The component that renders the area.", + "default": "AnimatedArea", + "class": null + } + ], "classes": [ { "key": "faded", diff --git a/docs/pages/x/api/charts/area-plot.json b/docs/pages/x/api/charts/area-plot.json index c0a421fbd92d..30c6fa3f2ce3 100644 --- a/docs/pages/x/api/charts/area-plot.json +++ b/docs/pages/x/api/charts/area-plot.json @@ -1,5 +1,6 @@ { "props": { + "skipAnimation": { "type": { "name": "bool" }, "default": "false" }, "slotProps": { "type": { "name": "object" }, "default": "{}" }, "slots": { "type": { "name": "object" }, @@ -12,7 +13,14 @@ "import { AreaPlot } from '@mui/x-charts/LineChart';", "import { AreaPlot } from '@mui/x-charts';" ], - "slots": [{ "name": "area", "description": "", "class": null }], + "slots": [ + { + "name": "area", + "description": "The component that renders the area.", + "default": "AnimatedArea", + "class": null + } + ], "classes": [], "muiName": "MuiAreaPlot", "filename": "/packages/x-charts/src/LineChart/AreaPlot.tsx", diff --git a/docs/pages/x/api/charts/default-charts-axis-tooltip-content.json b/docs/pages/x/api/charts/default-charts-axis-tooltip-content.json index fbb3dfe92b82..951dac84a962 100644 --- a/docs/pages/x/api/charts/default-charts-axis-tooltip-content.json +++ b/docs/pages/x/api/charts/default-charts-axis-tooltip-content.json @@ -4,7 +4,7 @@ "axisData": { "type": { "name": "shape", - "description": "{ x?: { index?: number, value: Date
| number }, y?: { index?: number, value: Date
| number } }" + "description": "{ x?: { index?: number, value: Date
| number
| string }, y?: { index?: number, value: Date
| number
| string } }" }, "required": true }, diff --git a/docs/pages/x/api/charts/line-chart.json b/docs/pages/x/api/charts/line-chart.json index 94b00d38bddf..1ae374f7c5e7 100644 --- a/docs/pages/x/api/charts/line-chart.json +++ b/docs/pages/x/api/charts/line-chart.json @@ -43,6 +43,7 @@ }, "default": "null" }, + "skipAnimation": { "type": { "name": "bool" }, "default": "false" }, "slotProps": { "type": { "name": "object" }, "default": "{}" }, "slots": { "type": { "name": "object" }, @@ -80,8 +81,18 @@ { "name": "axisTick", "description": "", "class": null }, { "name": "axisTickLabel", "description": "", "class": null }, { "name": "axisLabel", "description": "", "class": null }, - { "name": "area", "description": "", "class": null }, - { "name": "line", "description": "", "class": null }, + { + "name": "area", + "description": "The component that renders the area.", + "default": "AnimatedArea", + "class": null + }, + { + "name": "line", + "description": "The component that renders the line.", + "default": "LineElementPath", + "class": null + }, { "name": "mark", "description": "", "class": null }, { "name": "lineHighlight", "description": "", "class": null }, { "name": "legend", "description": "", "class": null }, diff --git a/docs/pages/x/api/charts/line-element.json b/docs/pages/x/api/charts/line-element.json index 92a5ebdbd4d6..3d971c68082e 100644 --- a/docs/pages/x/api/charts/line-element.json +++ b/docs/pages/x/api/charts/line-element.json @@ -1,5 +1,6 @@ { "props": { + "skipAnimation": { "type": { "name": "bool" }, "default": "false" }, "slotProps": { "type": { "name": "object" }, "default": "{}" }, "slots": { "type": { "name": "object" }, @@ -12,6 +13,14 @@ "import { LineElement } from '@mui/x-charts/LineChart';", "import { LineElement } from '@mui/x-charts';" ], + "slots": [ + { + "name": "line", + "description": "The component that renders the line.", + "default": "LineElementPath", + "class": null + } + ], "classes": [ { "key": "faded", diff --git a/docs/pages/x/api/charts/line-plot.json b/docs/pages/x/api/charts/line-plot.json index db7673602506..695302fba7fa 100644 --- a/docs/pages/x/api/charts/line-plot.json +++ b/docs/pages/x/api/charts/line-plot.json @@ -1,5 +1,6 @@ { "props": { + "skipAnimation": { "type": { "name": "bool" }, "default": "false" }, "slotProps": { "type": { "name": "object" }, "default": "{}" }, "slots": { "type": { "name": "object" }, @@ -12,7 +13,14 @@ "import { LinePlot } from '@mui/x-charts/LineChart';", "import { LinePlot } from '@mui/x-charts';" ], - "slots": [{ "name": "line", "description": "", "class": null }], + "slots": [ + { + "name": "line", + "description": "The component that renders the line.", + "default": "LineElementPath", + "class": null + } + ], "classes": [], "muiName": "MuiLinePlot", "filename": "/packages/x-charts/src/LineChart/LinePlot.tsx", diff --git a/docs/pages/x/api/charts/mark-element.json b/docs/pages/x/api/charts/mark-element.json index 7440419178cf..492c60b29943 100644 --- a/docs/pages/x/api/charts/mark-element.json +++ b/docs/pages/x/api/charts/mark-element.json @@ -7,7 +7,8 @@ "description": "'circle'
| 'cross'
| 'diamond'
| 'square'
| 'star'
| 'triangle'
| 'wye'" }, "required": true - } + }, + "skipAnimation": { "type": { "name": "bool" }, "default": "false" } }, "name": "MarkElement", "imports": [ diff --git a/docs/pages/x/api/charts/mark-plot.json b/docs/pages/x/api/charts/mark-plot.json index 9cd5db89c4ff..e334cc78e61d 100644 --- a/docs/pages/x/api/charts/mark-plot.json +++ b/docs/pages/x/api/charts/mark-plot.json @@ -1,5 +1,6 @@ { "props": { + "skipAnimation": { "type": { "name": "bool" }, "default": "false" }, "slotProps": { "type": { "name": "object" }, "default": "{}" }, "slots": { "type": { "name": "object" }, diff --git a/docs/pages/x/api/charts/spark-line-chart.json b/docs/pages/x/api/charts/spark-line-chart.json index 3b1777332596..6ac9a094ae81 100644 --- a/docs/pages/x/api/charts/spark-line-chart.json +++ b/docs/pages/x/api/charts/spark-line-chart.json @@ -54,8 +54,18 @@ "import { SparkLineChart } from '@mui/x-charts';" ], "slots": [ - { "name": "area", "description": "", "class": null }, - { "name": "line", "description": "", "class": null }, + { + "name": "area", + "description": "The component that renders the area.", + "default": "AnimatedArea", + "class": null + }, + { + "name": "line", + "description": "The component that renders the line.", + "default": "LineElementPath", + "class": null + }, { "name": "mark", "description": "", "class": null }, { "name": "lineHighlight", "description": "", "class": null }, { "name": "bar", "description": "", "class": null }, diff --git a/docs/pages/x/api/date-pickers/date-time-range-picker.json b/docs/pages/x/api/date-pickers/date-time-range-picker.json index 7242d39696cd..55d6d1ee2f79 100644 --- a/docs/pages/x/api/date-pickers/date-time-range-picker.json +++ b/docs/pages/x/api/date-pickers/date-time-range-picker.json @@ -54,8 +54,10 @@ "loading": { "type": { "name": "bool" }, "default": "false" }, "localeText": { "type": { "name": "object" } }, "maxDate": { "type": { "name": "any" } }, + "maxDateTime": { "type": { "name": "any" } }, "maxTime": { "type": { "name": "any" } }, "minDate": { "type": { "name": "any" } }, + "minDateTime": { "type": { "name": "any" } }, "minTime": { "type": { "name": "any" } }, "minutesStep": { "type": { "name": "number" }, "default": "1" }, "name": { "type": { "name": "string" } }, diff --git a/docs/pages/x/api/date-pickers/desktop-date-time-range-picker.json b/docs/pages/x/api/date-pickers/desktop-date-time-range-picker.json index 52d8d2d133c6..90357b9228f5 100644 --- a/docs/pages/x/api/date-pickers/desktop-date-time-range-picker.json +++ b/docs/pages/x/api/date-pickers/desktop-date-time-range-picker.json @@ -50,8 +50,10 @@ "loading": { "type": { "name": "bool" }, "default": "false" }, "localeText": { "type": { "name": "object" } }, "maxDate": { "type": { "name": "any" } }, + "maxDateTime": { "type": { "name": "any" } }, "maxTime": { "type": { "name": "any" } }, "minDate": { "type": { "name": "any" } }, + "minDateTime": { "type": { "name": "any" } }, "minTime": { "type": { "name": "any" } }, "minutesStep": { "type": { "name": "number" }, "default": "1" }, "name": { "type": { "name": "string" } }, diff --git a/docs/pages/x/api/date-pickers/mobile-date-time-range-picker.json b/docs/pages/x/api/date-pickers/mobile-date-time-range-picker.json index 9094340d24bc..688f24d49b0d 100644 --- a/docs/pages/x/api/date-pickers/mobile-date-time-range-picker.json +++ b/docs/pages/x/api/date-pickers/mobile-date-time-range-picker.json @@ -46,8 +46,10 @@ "loading": { "type": { "name": "bool" }, "default": "false" }, "localeText": { "type": { "name": "object" } }, "maxDate": { "type": { "name": "any" } }, + "maxDateTime": { "type": { "name": "any" } }, "maxTime": { "type": { "name": "any" } }, "minDate": { "type": { "name": "any" } }, + "minDateTime": { "type": { "name": "any" } }, "minTime": { "type": { "name": "any" } }, "minutesStep": { "type": { "name": "number" }, "default": "1" }, "name": { "type": { "name": "string" } }, diff --git a/docs/pages/x/api/date-pickers/time-picker-toolbar.json b/docs/pages/x/api/date-pickers/time-picker-toolbar.json index 311a22b09fd2..423df6f45537 100644 --- a/docs/pages/x/api/date-pickers/time-picker-toolbar.json +++ b/docs/pages/x/api/date-pickers/time-picker-toolbar.json @@ -26,49 +26,49 @@ { "key": "ampmLabel", "className": "MuiTimePickerToolbar-ampmLabel", - "description": "", + "description": "Styles applied to the meridiem label element.", "isGlobal": false }, { "key": "ampmLandscape", "className": "MuiTimePickerToolbar-ampmLandscape", - "description": "", + "description": "Styles applied to the meridiem selection element in landscape mode.", "isGlobal": false }, { "key": "ampmSelection", "className": "MuiTimePickerToolbar-ampmSelection", - "description": "", + "description": "Styles applied to the meridiem selection element.", "isGlobal": false }, { "key": "hourMinuteLabel", "className": "MuiTimePickerToolbar-hourMinuteLabel", - "description": "", + "description": "Styles applied to the time sections element.", "isGlobal": false }, { "key": "hourMinuteLabelLandscape", "className": "MuiTimePickerToolbar-hourMinuteLabelLandscape", - "description": "", + "description": "Styles applied to the time sections element in landscape mode.", "isGlobal": false }, { "key": "hourMinuteLabelReverse", "className": "MuiTimePickerToolbar-hourMinuteLabelReverse", - "description": "", + "description": "Styles applied to the time sections element in \"rtl\" theme mode.", "isGlobal": false }, { "key": "root", "className": "MuiTimePickerToolbar-root", - "description": "", + "description": "Styles applied to the root element.", "isGlobal": false }, { "key": "separator", "className": "MuiTimePickerToolbar-separator", - "description": "", + "description": "Styles applied to the separator element.", "isGlobal": false } ], diff --git a/docs/pages/x/api/tree-view/rich-tree-view.json b/docs/pages/x/api/tree-view/rich-tree-view.json index 63576463107c..891044b6b187 100644 --- a/docs/pages/x/api/tree-view/rich-tree-view.json +++ b/docs/pages/x/api/tree-view/rich-tree-view.json @@ -128,6 +128,6 @@ "forwardsRefTo": "HTMLUListElement", "filename": "/packages/x-tree-view/src/RichTreeView/RichTreeView.tsx", "inheritance": null, - "demos": "", + "demos": "", "cssComponent": false } diff --git a/docs/pages/x/api/tree-view/simple-tree-view.json b/docs/pages/x/api/tree-view/simple-tree-view.json index 4fe57e6b52b8..f24417dee5b0 100644 --- a/docs/pages/x/api/tree-view/simple-tree-view.json +++ b/docs/pages/x/api/tree-view/simple-tree-view.json @@ -93,6 +93,6 @@ "forwardsRefTo": "HTMLUListElement", "filename": "/packages/x-tree-view/src/SimpleTreeView/SimpleTreeView.tsx", "inheritance": null, - "demos": "", + "demos": "", "cssComponent": false } diff --git a/docs/pages/x/api/tree-view/tree-item.json b/docs/pages/x/api/tree-view/tree-item.json index a10787c131cd..81a9ed2ce85b 100644 --- a/docs/pages/x/api/tree-view/tree-item.json +++ b/docs/pages/x/api/tree-view/tree-item.json @@ -104,6 +104,6 @@ "forwardsRefTo": "HTMLLIElement", "filename": "/packages/x-tree-view/src/TreeItem/TreeItem.tsx", "inheritance": null, - "demos": "", + "demos": "", "cssComponent": false } diff --git a/docs/pages/x/api/tree-view/tree-view.json b/docs/pages/x/api/tree-view/tree-view.json index be96ddf48b34..5eb73fe0d4ad 100644 --- a/docs/pages/x/api/tree-view/tree-view.json +++ b/docs/pages/x/api/tree-view/tree-view.json @@ -93,6 +93,6 @@ "forwardsRefTo": "HTMLUListElement", "filename": "/packages/x-tree-view/src/TreeView/TreeView.tsx", "inheritance": null, - "demos": "", + "demos": "", "cssComponent": false } diff --git a/docs/translations/api-docs/charts/animated-area/animated-area.json b/docs/translations/api-docs/charts/animated-area/animated-area.json new file mode 100644 index 000000000000..5300fa0d8559 --- /dev/null +++ b/docs/translations/api-docs/charts/animated-area/animated-area.json @@ -0,0 +1,7 @@ +{ + "componentDescription": "", + "propDescriptions": { + "skipAnimation": { "description": "If true, animations are skipped." } + }, + "classDescriptions": {} +} diff --git a/docs/translations/api-docs/charts/animated-line/animated-line.json b/docs/translations/api-docs/charts/animated-line/animated-line.json new file mode 100644 index 000000000000..5300fa0d8559 --- /dev/null +++ b/docs/translations/api-docs/charts/animated-line/animated-line.json @@ -0,0 +1,7 @@ +{ + "componentDescription": "", + "propDescriptions": { + "skipAnimation": { "description": "If true, animations are skipped." } + }, + "classDescriptions": {} +} diff --git a/docs/translations/api-docs/charts/area-element/area-element.json b/docs/translations/api-docs/charts/area-element/area-element.json index fca3901855f0..35ae13088523 100644 --- a/docs/translations/api-docs/charts/area-element/area-element.json +++ b/docs/translations/api-docs/charts/area-element/area-element.json @@ -1,6 +1,7 @@ { "componentDescription": "", "propDescriptions": { + "skipAnimation": { "description": "If true, animations are skipped." }, "slotProps": { "description": "The props used for each component slot." }, "slots": { "description": "Overridable component slots." } }, @@ -16,5 +17,6 @@ "conditions": "higlighted" }, "root": { "description": "Styles applied to the root element." } - } + }, + "slotDescriptions": { "area": "The component that renders the area." } } diff --git a/docs/translations/api-docs/charts/area-plot/area-plot.json b/docs/translations/api-docs/charts/area-plot/area-plot.json index dd9fd23a9934..44b71c6c124c 100644 --- a/docs/translations/api-docs/charts/area-plot/area-plot.json +++ b/docs/translations/api-docs/charts/area-plot/area-plot.json @@ -1,9 +1,10 @@ { "componentDescription": "", "propDescriptions": { + "skipAnimation": { "description": "If true, animations are skipped." }, "slotProps": { "description": "The props used for each component slot." }, "slots": { "description": "Overridable component slots." } }, "classDescriptions": {}, - "slotDescriptions": { "area": "" } + "slotDescriptions": { "area": "The component that renders the area." } } diff --git a/docs/translations/api-docs/charts/bar-chart/bar-chart.json b/docs/translations/api-docs/charts/bar-chart/bar-chart.json index e3ecc71677a8..52c7ccee6d9e 100644 --- a/docs/translations/api-docs/charts/bar-chart/bar-chart.json +++ b/docs/translations/api-docs/charts/bar-chart/bar-chart.json @@ -26,7 +26,7 @@ "rightAxis": { "description": "Indicate which axis to display the right of the charts. Can be a string (the id of the axis) or an object ChartsYAxisProps." }, - "skipAnimation": { "description": "If true, animations are skiped." }, + "skipAnimation": { "description": "If true, animations are skipped." }, "slotProps": { "description": "The props used for each component slot." }, "slots": { "description": "Overridable component slots." }, "topAxis": { diff --git a/docs/translations/api-docs/charts/bar-plot/bar-plot.json b/docs/translations/api-docs/charts/bar-plot/bar-plot.json index d9ee28696178..b84aa3efd86a 100644 --- a/docs/translations/api-docs/charts/bar-plot/bar-plot.json +++ b/docs/translations/api-docs/charts/bar-plot/bar-plot.json @@ -1,7 +1,7 @@ { "componentDescription": "", "propDescriptions": { - "skipAnimation": { "description": "If true, animations are skiped." }, + "skipAnimation": { "description": "If true, animations are skipped." }, "slotProps": { "description": "The props used for each component slot." }, "slots": { "description": "Overridable component slots." } }, diff --git a/docs/translations/api-docs/charts/line-chart/line-chart.json b/docs/translations/api-docs/charts/line-chart/line-chart.json index f279ed2629d8..a6d9fe50d903 100644 --- a/docs/translations/api-docs/charts/line-chart/line-chart.json +++ b/docs/translations/api-docs/charts/line-chart/line-chart.json @@ -29,6 +29,7 @@ "rightAxis": { "description": "Indicate which axis to display the right of the charts. Can be a string (the id of the axis) or an object ChartsYAxisProps." }, + "skipAnimation": { "description": "If true, animations are skipped." }, "slotProps": { "description": "The props used for each component slot." }, "slots": { "description": "Overridable component slots." }, "topAxis": { @@ -46,7 +47,7 @@ }, "classDescriptions": {}, "slotDescriptions": { - "area": "", + "area": "The component that renders the area.", "axisContent": "", "axisLabel": "", "axisLine": "", @@ -54,7 +55,7 @@ "axisTickLabel": "", "itemContent": "", "legend": "", - "line": "", + "line": "The component that renders the line.", "lineHighlight": "", "mark": "", "popper": "" diff --git a/docs/translations/api-docs/charts/line-element/line-element.json b/docs/translations/api-docs/charts/line-element/line-element.json index fca3901855f0..c638934e73ea 100644 --- a/docs/translations/api-docs/charts/line-element/line-element.json +++ b/docs/translations/api-docs/charts/line-element/line-element.json @@ -1,6 +1,7 @@ { "componentDescription": "", "propDescriptions": { + "skipAnimation": { "description": "If true, animations are skipped." }, "slotProps": { "description": "The props used for each component slot." }, "slots": { "description": "Overridable component slots." } }, @@ -16,5 +17,6 @@ "conditions": "higlighted" }, "root": { "description": "Styles applied to the root element." } - } + }, + "slotDescriptions": { "line": "The component that renders the line." } } diff --git a/docs/translations/api-docs/charts/line-plot/line-plot.json b/docs/translations/api-docs/charts/line-plot/line-plot.json index d1f64423b941..32105cc21e58 100644 --- a/docs/translations/api-docs/charts/line-plot/line-plot.json +++ b/docs/translations/api-docs/charts/line-plot/line-plot.json @@ -1,9 +1,10 @@ { "componentDescription": "", "propDescriptions": { + "skipAnimation": { "description": "If true, animations are skipped." }, "slotProps": { "description": "The props used for each component slot." }, "slots": { "description": "Overridable component slots." } }, "classDescriptions": {}, - "slotDescriptions": { "line": "" } + "slotDescriptions": { "line": "The component that renders the line." } } diff --git a/docs/translations/api-docs/charts/mark-element/mark-element.json b/docs/translations/api-docs/charts/mark-element/mark-element.json index 81441020bb99..522d722c7a87 100644 --- a/docs/translations/api-docs/charts/mark-element/mark-element.json +++ b/docs/translations/api-docs/charts/mark-element/mark-element.json @@ -2,7 +2,8 @@ "componentDescription": "", "propDescriptions": { "dataIndex": { "description": "The index to the element in the series' data array." }, - "shape": { "description": "The shape of the marker." } + "shape": { "description": "The shape of the marker." }, + "skipAnimation": { "description": "If true, animations are skipped." } }, "classDescriptions": { "faded": { diff --git a/docs/translations/api-docs/charts/mark-plot/mark-plot.json b/docs/translations/api-docs/charts/mark-plot/mark-plot.json index aace660db0ca..c338ac1652e5 100644 --- a/docs/translations/api-docs/charts/mark-plot/mark-plot.json +++ b/docs/translations/api-docs/charts/mark-plot/mark-plot.json @@ -1,6 +1,7 @@ { "componentDescription": "", "propDescriptions": { + "skipAnimation": { "description": "If true, animations are skipped." }, "slotProps": { "description": "The props used for each component slot." }, "slots": { "description": "Overridable component slots." } }, diff --git a/docs/translations/api-docs/charts/pie-arc-label-plot/pie-arc-label-plot.json b/docs/translations/api-docs/charts/pie-arc-label-plot/pie-arc-label-plot.json index 599a5d9f9166..c4bf2a349430 100644 --- a/docs/translations/api-docs/charts/pie-arc-label-plot/pie-arc-label-plot.json +++ b/docs/translations/api-docs/charts/pie-arc-label-plot/pie-arc-label-plot.json @@ -16,7 +16,7 @@ }, "outerRadius": { "description": "The radius between circle center and the end of the arc." }, "paddingAngle": { "description": "The padding angle (deg) between two arcs." }, - "skipAnimation": { "description": "If true, animations are skiped." }, + "skipAnimation": { "description": "If true, animations are skipped." }, "slotProps": { "description": "The props used for each component slot." }, "slots": { "description": "Overridable component slots." } }, diff --git a/docs/translations/api-docs/charts/pie-arc-plot/pie-arc-plot.json b/docs/translations/api-docs/charts/pie-arc-plot/pie-arc-plot.json index 8c4cdaea4809..58bfec3d2112 100644 --- a/docs/translations/api-docs/charts/pie-arc-plot/pie-arc-plot.json +++ b/docs/translations/api-docs/charts/pie-arc-plot/pie-arc-plot.json @@ -22,7 +22,7 @@ }, "outerRadius": { "description": "The radius between circle center and the end of the arc." }, "paddingAngle": { "description": "The padding angle (deg) between two arcs." }, - "skipAnimation": { "description": "If true, animations are skiped." }, + "skipAnimation": { "description": "If true, animations are skipped." }, "slotProps": { "description": "The props used for each component slot." }, "slots": { "description": "Overridable component slots." } }, diff --git a/docs/translations/api-docs/charts/pie-chart/pie-chart.json b/docs/translations/api-docs/charts/pie-chart/pie-chart.json index 8960e6b3a746..c9c6863b0053 100644 --- a/docs/translations/api-docs/charts/pie-chart/pie-chart.json +++ b/docs/translations/api-docs/charts/pie-chart/pie-chart.json @@ -23,7 +23,7 @@ "rightAxis": { "description": "Indicate which axis to display the right of the charts. Can be a string (the id of the axis) or an object ChartsYAxisProps." }, - "skipAnimation": { "description": "If true, animations are skiped." }, + "skipAnimation": { "description": "If true, animations are skipped." }, "slotProps": { "description": "The props used for each component slot." }, "topAxis": { "description": "Indicate which axis to display the top of the charts. Can be a string (the id of the axis) or an object ChartsXAxisProps." diff --git a/docs/translations/api-docs/charts/pie-plot/pie-plot.json b/docs/translations/api-docs/charts/pie-plot/pie-plot.json index d156b39b0306..bf05960bf879 100644 --- a/docs/translations/api-docs/charts/pie-plot/pie-plot.json +++ b/docs/translations/api-docs/charts/pie-plot/pie-plot.json @@ -9,7 +9,7 @@ "item": "The pie item." } }, - "skipAnimation": { "description": "If true, animations are skiped." }, + "skipAnimation": { "description": "If true, animations are skipped." }, "slotProps": { "description": "The props used for each component slot." }, "slots": { "description": "Overridable component slots." } }, diff --git a/docs/translations/api-docs/charts/spark-line-chart/spark-line-chart.json b/docs/translations/api-docs/charts/spark-line-chart/spark-line-chart.json index 9ab42a24b8b3..6e43932009df 100644 --- a/docs/translations/api-docs/charts/spark-line-chart/spark-line-chart.json +++ b/docs/translations/api-docs/charts/spark-line-chart/spark-line-chart.json @@ -40,11 +40,11 @@ }, "classDescriptions": {}, "slotDescriptions": { - "area": "", + "area": "The component that renders the area.", "axisContent": "", "bar": "", "itemContent": "", - "line": "", + "line": "The component that renders the line.", "lineHighlight": "", "mark": "", "popper": "" diff --git a/docs/translations/api-docs/date-pickers/date-time-picker-tabs/date-time-picker-tabs.json b/docs/translations/api-docs/date-pickers/date-time-picker-tabs/date-time-picker-tabs.json index 21b4732fd5af..dd1a91b2539c 100644 --- a/docs/translations/api-docs/date-pickers/date-time-picker-tabs/date-time-picker-tabs.json +++ b/docs/translations/api-docs/date-pickers/date-time-picker-tabs/date-time-picker-tabs.json @@ -5,7 +5,7 @@ "dateIcon": { "description": "Date tab icon." }, "hidden": { "description": "Toggles visibility of the tabs allowing view switching." }, "onViewChange": { - "description": "Callback called when a tab is clicked", + "description": "Callback called when a tab is clicked.", "typeDescriptions": { "view": "The view to open" } }, "timeIcon": { "description": "Time tab icon." }, diff --git a/docs/translations/api-docs/date-pickers/date-time-range-picker-tabs/date-time-range-picker-tabs.json b/docs/translations/api-docs/date-pickers/date-time-range-picker-tabs/date-time-range-picker-tabs.json index 62517dbe29d6..b53e1ece571d 100644 --- a/docs/translations/api-docs/date-pickers/date-time-range-picker-tabs/date-time-range-picker-tabs.json +++ b/docs/translations/api-docs/date-pickers/date-time-range-picker-tabs/date-time-range-picker-tabs.json @@ -5,7 +5,7 @@ "dateIcon": { "description": "Date tab icon." }, "hidden": { "description": "Toggles visibility of the tabs allowing view switching." }, "onViewChange": { - "description": "Callback called when a tab is clicked", + "description": "Callback called when a tab is clicked.", "typeDescriptions": { "view": "The view to open" } }, "timeIcon": { "description": "Time tab icon." }, diff --git a/docs/translations/api-docs/date-pickers/date-time-range-picker/date-time-range-picker.json b/docs/translations/api-docs/date-pickers/date-time-range-picker/date-time-range-picker.json index 0db72ddad37d..59370c227246 100644 --- a/docs/translations/api-docs/date-pickers/date-time-range-picker/date-time-range-picker.json +++ b/docs/translations/api-docs/date-pickers/date-time-range-picker/date-time-range-picker.json @@ -73,10 +73,16 @@ "description": "Locale for components texts. Allows overriding texts coming from LocalizationProvider and theme." }, "maxDate": { "description": "Maximal selectable date." }, + "maxDateTime": { + "description": "Maximal selectable moment of time with binding to date, to set max time in each day use maxTime." + }, "maxTime": { "description": "Maximal selectable time. The date part of the object will be ignored unless props.disableIgnoringDatePartForTimeValidation === true." }, "minDate": { "description": "Minimal selectable date." }, + "minDateTime": { + "description": "Minimal selectable moment of time with binding to date, to set min time in each day use minTime." + }, "minTime": { "description": "Minimal selectable time. The date part of the object will be ignored unless props.disableIgnoringDatePartForTimeValidation === true." }, diff --git a/docs/translations/api-docs/date-pickers/desktop-date-time-range-picker/desktop-date-time-range-picker.json b/docs/translations/api-docs/date-pickers/desktop-date-time-range-picker/desktop-date-time-range-picker.json index 27bf3416e11f..6d7cc6b7db13 100644 --- a/docs/translations/api-docs/date-pickers/desktop-date-time-range-picker/desktop-date-time-range-picker.json +++ b/docs/translations/api-docs/date-pickers/desktop-date-time-range-picker/desktop-date-time-range-picker.json @@ -70,10 +70,16 @@ "description": "Locale for components texts. Allows overriding texts coming from LocalizationProvider and theme." }, "maxDate": { "description": "Maximal selectable date." }, + "maxDateTime": { + "description": "Maximal selectable moment of time with binding to date, to set max time in each day use maxTime." + }, "maxTime": { "description": "Maximal selectable time. The date part of the object will be ignored unless props.disableIgnoringDatePartForTimeValidation === true." }, "minDate": { "description": "Minimal selectable date." }, + "minDateTime": { + "description": "Minimal selectable moment of time with binding to date, to set min time in each day use minTime." + }, "minTime": { "description": "Minimal selectable time. The date part of the object will be ignored unless props.disableIgnoringDatePartForTimeValidation === true." }, diff --git a/docs/translations/api-docs/date-pickers/mobile-date-time-range-picker/mobile-date-time-range-picker.json b/docs/translations/api-docs/date-pickers/mobile-date-time-range-picker/mobile-date-time-range-picker.json index 0e8e7d49a53c..81d3254bc4b8 100644 --- a/docs/translations/api-docs/date-pickers/mobile-date-time-range-picker/mobile-date-time-range-picker.json +++ b/docs/translations/api-docs/date-pickers/mobile-date-time-range-picker/mobile-date-time-range-picker.json @@ -67,10 +67,16 @@ "description": "Locale for components texts. Allows overriding texts coming from LocalizationProvider and theme." }, "maxDate": { "description": "Maximal selectable date." }, + "maxDateTime": { + "description": "Maximal selectable moment of time with binding to date, to set max time in each day use maxTime." + }, "maxTime": { "description": "Maximal selectable time. The date part of the object will be ignored unless props.disableIgnoringDatePartForTimeValidation === true." }, "minDate": { "description": "Minimal selectable date." }, + "minDateTime": { + "description": "Minimal selectable moment of time with binding to date, to set min time in each day use minTime." + }, "minTime": { "description": "Minimal selectable time. The date part of the object will be ignored unless props.disableIgnoringDatePartForTimeValidation === true." }, diff --git a/docs/translations/api-docs/date-pickers/time-picker-toolbar/time-picker-toolbar.json b/docs/translations/api-docs/date-pickers/time-picker-toolbar/time-picker-toolbar.json index 600b25575fe6..15a1b594f546 100644 --- a/docs/translations/api-docs/date-pickers/time-picker-toolbar/time-picker-toolbar.json +++ b/docs/translations/api-docs/date-pickers/time-picker-toolbar/time-picker-toolbar.json @@ -13,13 +13,34 @@ "view": { "description": "Currently visible picker view." } }, "classDescriptions": { - "ampmLabel": { "description": "" }, - "ampmLandscape": { "description": "" }, - "ampmSelection": { "description": "" }, - "hourMinuteLabel": { "description": "" }, - "hourMinuteLabelLandscape": { "description": "" }, - "hourMinuteLabelReverse": { "description": "" }, - "root": { "description": "" }, - "separator": { "description": "" } + "ampmLabel": { + "description": "Styles applied to {{nodeName}}.", + "nodeName": "the meridiem label element" + }, + "ampmLandscape": { + "description": "Styles applied to {{nodeName}}.", + "nodeName": "the meridiem selection element in landscape mode" + }, + "ampmSelection": { + "description": "Styles applied to {{nodeName}}.", + "nodeName": "the meridiem selection element" + }, + "hourMinuteLabel": { + "description": "Styles applied to {{nodeName}}.", + "nodeName": "the time sections element" + }, + "hourMinuteLabelLandscape": { + "description": "Styles applied to {{nodeName}}.", + "nodeName": "the time sections element in landscape mode" + }, + "hourMinuteLabelReverse": { + "description": "Styles applied to {{nodeName}}.", + "nodeName": "the time sections element in "rtl" theme mode" + }, + "root": { "description": "Styles applied to the root element." }, + "separator": { + "description": "Styles applied to {{nodeName}}.", + "nodeName": "the separator element" + } } } diff --git a/package.json b/package.json index 5d8006e0c606..279364aaa3fb 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "version": "7.0.0-alpha.9", + "version": "7.0.0-beta.0", "private": true, "scripts": { "start": "yarn && yarn docs:dev", @@ -63,32 +63,32 @@ "validate": "concurrently \"yarn prettier && yarn eslint\" \"yarn proptypes\" \"yarn docs:typescript:formatted\" \"yarn docs:api\"" }, "devDependencies": { - "@argos-ci/core": "^1.4.1", - "@babel/cli": "^7.23.4", - "@babel/core": "^7.23.7", - "@babel/node": "^7.22.19", + "@argos-ci/core": "^1.5.1", + "@babel/cli": "^7.23.9", + "@babel/core": "^7.23.9", + "@babel/node": "^7.23.9", "@babel/plugin-proposal-class-properties": "^7.18.6", "@babel/plugin-proposal-object-rest-spread": "^7.20.7", "@babel/plugin-proposal-private-methods": "^7.18.6", "@babel/plugin-proposal-private-property-in-object": "^7.21.11", "@babel/plugin-transform-object-assign": "^7.23.3", "@babel/plugin-transform-react-constant-elements": "^7.23.3", - "@babel/plugin-transform-runtime": "^7.23.7", - "@babel/preset-env": "^7.23.8", + "@babel/plugin-transform-runtime": "^7.23.9", + "@babel/preset-env": "^7.23.9", "@babel/preset-react": "^7.23.3", "@babel/preset-typescript": "^7.23.3", "@babel/register": "^7.23.7", - "@babel/traverse": "^7.23.7", - "@babel/types": "^7.23.6", + "@babel/traverse": "^7.23.9", + "@babel/types": "^7.23.9", "@emotion/cache": "^11.11.0", "@emotion/react": "^11.11.3", "@emotion/styled": "^11.11.0", "@mnajdova/enzyme-adapter-react-18": "^0.2.0", - "@mui/icons-material": "^5.15.5", - "@mui/material": "^5.15.5", + "@mui/icons-material": "^5.15.6", + "@mui/material": "^5.15.6", "@mui/monorepo": "https://github.com/mui/material-ui.git#master", - "@mui/utils": "^5.15.5", - "@next/eslint-plugin-next": "^14.0.4", + "@mui/utils": "^5.15.6", + "@next/eslint-plugin-next": "14.0.4", "@octokit/plugin-retry": "^6.0.1", "@octokit/rest": "^20.0.2", "@playwright/test": "1.41.1", @@ -98,7 +98,7 @@ "@types/chai-dom": "^1.11.3", "@types/enzyme": "3.10.12", "@types/mocha": "^10.0.6", - "@types/node": "^18.19.8", + "@types/node": "^18.19.10", "@types/prettier": "^2.7.3", "@types/react": "^18.2.48", "@types/react-dom": "^18.2.18", @@ -106,8 +106,8 @@ "@types/requestidlecallback": "^0.3.7", "@types/sinon": "^10.0.20", "@types/yargs": "^17.0.32", - "@typescript-eslint/eslint-plugin": "^6.15.0", - "@typescript-eslint/parser": "^6.15.0", + "@typescript-eslint/eslint-plugin": "^6.20.0", + "@typescript-eslint/parser": "^6.20.0", "autoprefixer": "^10.4.17", "axe-core": "4.8.3", "babel-loader": "^9.1.3", @@ -120,7 +120,7 @@ "babel-plugin-transform-react-remove-prop-types": "^0.4.24", "chai": "^4.4.1", "chai-dom": "^1.12.0", - "compression-webpack-plugin": "^10.0.0", + "compression-webpack-plugin": "^11.0.0", "concurrently": "^8.2.2", "cross-env": "^7.0.3", "danger": "^11.3.1", @@ -132,7 +132,7 @@ "eslint-import-resolver-webpack": "^0.13.8", "eslint-plugin-filenames": "^1.3.2", "eslint-plugin-import": "^2.29.1", - "eslint-plugin-jsdoc": "^48.0.2", + "eslint-plugin-jsdoc": "^48.0.4", "eslint-plugin-jsx-a11y": "^6.8.0", "eslint-plugin-mocha": "^10.2.0", "eslint-plugin-prettier": "^5.1.3", @@ -171,7 +171,7 @@ "typescript": "^5.3.3", "unist-util-visit": "^2.0.3", "util": "^0.12.5", - "webpack": "^5.89.0", + "webpack": "^5.90.0", "webpack-cli": "^5.1.4", "yargs": "^17.7.2", "yarn-deduplicate": "^6.0.2" @@ -192,6 +192,6 @@ }, "resolutions": { "**/react-is": "^18.2.0", - "**/@types/node": "^18.19.8" + "**/@types/node": "^18.19.10" } } diff --git a/packages/eslint-plugin-material-ui/package.json b/packages/eslint-plugin-material-ui/package.json index dc3f78fae286..e4736000ce38 100644 --- a/packages/eslint-plugin-material-ui/package.json +++ b/packages/eslint-plugin-material-ui/package.json @@ -7,7 +7,7 @@ "devDependencies": { "@types/eslint": "^8.56.2", "@typescript-eslint/experimental-utils": "^5.62.0", - "@typescript-eslint/parser": "^6.18.1" + "@typescript-eslint/parser": "^6.20.0" }, "scripts": { "test": "cd ../../ && cross-env NODE_ENV=test mocha 'packages/eslint-plugin-material-ui/**/*.test.js' --timeout 3000" diff --git a/packages/grid/x-data-grid-generator/package.json b/packages/grid/x-data-grid-generator/package.json index fade693db260..90c4bbfc26bd 100644 --- a/packages/grid/x-data-grid-generator/package.json +++ b/packages/grid/x-data-grid-generator/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-data-grid-generator", - "version": "7.0.0-alpha.9", + "version": "7.0.0-beta.0", "description": "Generate fake data for demo purposes only.", "author": "MUI Team", "main": "src/index.ts", @@ -33,9 +33,9 @@ "directory": "packages/grid/x-data-grid-generator" }, "dependencies": { - "@babel/runtime": "^7.23.8", - "@mui/base": "^5.0.0-beta.32", - "@mui/x-data-grid-premium": "7.0.0-alpha.9", + "@babel/runtime": "^7.23.9", + "@mui/base": "^5.0.0-beta.33", + "@mui/x-data-grid-premium": "7.0.0-beta.0", "chance": "^1.1.11", "clsx": "^2.1.0", "lru-cache": "^7.18.3" diff --git a/packages/grid/x-data-grid-premium/package.json b/packages/grid/x-data-grid-premium/package.json index 1bb9e942cc08..a2c2b531db69 100644 --- a/packages/grid/x-data-grid-premium/package.json +++ b/packages/grid/x-data-grid-premium/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-data-grid-premium", - "version": "7.0.0-alpha.9", + "version": "7.0.0-beta.0", "description": "The Premium plan edition of the data grid component (MUI X).", "author": "MUI Team", "main": "src/index.ts", @@ -43,12 +43,12 @@ "directory": "packages/grid/x-data-grid-premium" }, "dependencies": { - "@babel/runtime": "^7.23.8", - "@mui/system": "^5.15.5", - "@mui/utils": "^5.15.5", - "@mui/x-data-grid": "7.0.0-alpha.9", - "@mui/x-data-grid-pro": "7.0.0-alpha.9", - "@mui/x-license-pro": "7.0.0-alpha.9", + "@babel/runtime": "^7.23.9", + "@mui/system": "^5.15.6", + "@mui/utils": "^5.15.6", + "@mui/x-data-grid": "7.0.0-beta.0", + "@mui/x-data-grid-pro": "7.0.0-beta.0", + "@mui/x-license-pro": "7.0.0-beta.0", "@types/format-util": "^1.0.4", "clsx": "^2.1.0", "exceljs": "^4.4.0", diff --git a/packages/grid/x-data-grid-premium/src/hooks/features/cellSelection/useGridCellSelection.ts b/packages/grid/x-data-grid-premium/src/hooks/features/cellSelection/useGridCellSelection.ts index 7d3d888d5d26..5877bfe51094 100644 --- a/packages/grid/x-data-grid-premium/src/hooks/features/cellSelection/useGridCellSelection.ts +++ b/packages/grid/x-data-grid-premium/src/hooks/features/cellSelection/useGridCellSelection.ts @@ -22,6 +22,7 @@ import { gridClasses, gridFocusCellSelector, GridCellParams, + GRID_REORDER_COL_DEF, } from '@mui/x-data-grid-pro'; import { gridCellSelectionStateSelector } from './gridCellSelectionSelector'; import { GridCellSelectionApi } from './gridCellSelectionInterfaces'; @@ -221,6 +222,10 @@ export const useGridCellSelection = ( return; } + if (params.field === GRID_REORDER_COL_DEF.field) { + return; + } + const focusedCell = gridFocusCellSelector(apiRef); if (hasClickedValidCellForRangeSelection(params) && event.shiftKey && focusedCell) { event.preventDefault(); diff --git a/packages/grid/x-data-grid-pro/package.json b/packages/grid/x-data-grid-pro/package.json index 353e30388eaf..6e4ffcf65dc7 100644 --- a/packages/grid/x-data-grid-pro/package.json +++ b/packages/grid/x-data-grid-pro/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-data-grid-pro", - "version": "7.0.0-alpha.9", + "version": "7.0.0-beta.0", "description": "The Pro plan edition of the data grid component (MUI X).", "author": "MUI Team", "main": "src/index.ts", @@ -43,11 +43,11 @@ "directory": "packages/grid/x-data-grid-pro" }, "dependencies": { - "@babel/runtime": "^7.23.8", - "@mui/system": "^5.15.5", - "@mui/utils": "^5.15.5", - "@mui/x-data-grid": "7.0.0-alpha.9", - "@mui/x-license-pro": "7.0.0-alpha.9", + "@babel/runtime": "^7.23.9", + "@mui/system": "^5.15.6", + "@mui/utils": "^5.15.6", + "@mui/x-data-grid": "7.0.0-beta.0", + "@mui/x-license-pro": "7.0.0-beta.0", "@types/format-util": "^1.0.4", "clsx": "^2.1.0", "prop-types": "^15.8.1", diff --git a/packages/grid/x-data-grid/package.json b/packages/grid/x-data-grid/package.json index 12ee587751ba..ba2eeb526434 100644 --- a/packages/grid/x-data-grid/package.json +++ b/packages/grid/x-data-grid/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-data-grid", - "version": "7.0.0-alpha.9", + "version": "7.0.0-beta.0", "description": "The community edition of the data grid component (MUI X).", "author": "MUI Team", "main": "src/index.ts", @@ -47,9 +47,9 @@ "directory": "packages/grid/x-data-grid" }, "dependencies": { - "@babel/runtime": "^7.23.8", - "@mui/system": "^5.15.5", - "@mui/utils": "^5.15.5", + "@babel/runtime": "^7.23.9", + "@mui/system": "^5.15.6", + "@mui/utils": "^5.15.6", "clsx": "^2.1.0", "prop-types": "^15.8.1", "reselect": "^4.1.8" diff --git a/packages/grid/x-data-grid/src/components/columnsManagement/GridColumnsManagement.tsx b/packages/grid/x-data-grid/src/components/columnsManagement/GridColumnsManagement.tsx index bb59a5a31853..46466367bb02 100644 --- a/packages/grid/x-data-grid/src/components/columnsManagement/GridColumnsManagement.tsx +++ b/packages/grid/x-data-grid/src/components/columnsManagement/GridColumnsManagement.tsx @@ -41,6 +41,13 @@ export interface GridColumnsManagementProps { * @default false */ disableResetButton?: boolean; + /** + * Changes the behavior of the `Show/Hide All` toggle when the search field is used: + * - `all`: Will toggle all columns. + * - `filteredOnly`: Will only toggle columns that match the search criteria. + * @default 'all' + */ + toggleAllMode?: 'all' | 'filteredOnly'; /** * Returns the list of togglable columns. * If used, only those columns will be displayed in the panel @@ -86,6 +93,7 @@ function GridColumnsManagement(props: GridColumnsManagementProps) { autoFocusSearchField = true, disableShowHideToggle = false, disableResetButton = false, + toggleAllMode = 'all', getTogglableColumns, } = props; @@ -116,13 +124,29 @@ function GridColumnsManagement(props: GridColumnsManagementProps) { apiRef.current.setColumnVisibility(field, columnVisibilityModel[field] === false); }; + const currentColumns = React.useMemo(() => { + const togglableColumns = getTogglableColumns ? getTogglableColumns(sortedColumns) : null; + + const togglableSortedColumns = togglableColumns + ? sortedColumns.filter(({ field }) => togglableColumns.includes(field)) + : sortedColumns; + + if (!searchValue) { + return togglableSortedColumns; + } + + return togglableSortedColumns.filter((column) => + searchPredicate(column, searchValue.toLowerCase()), + ); + }, [sortedColumns, searchValue, searchPredicate, getTogglableColumns]); + const toggleAllColumns = React.useCallback( (isVisible: boolean) => { const currentModel = gridColumnVisibilityModelSelector(apiRef); const newModel = { ...currentModel }; const togglableColumns = getTogglableColumns ? getTogglableColumns(columns) : null; - columns.forEach((col) => { + (toggleAllMode === 'filteredOnly' ? currentColumns : columns).forEach((col) => { if (col.hideable && (togglableColumns == null || togglableColumns.includes(col.field))) { if (isVisible) { // delete the key from the model instead of setting it to `true` @@ -135,7 +159,7 @@ function GridColumnsManagement(props: GridColumnsManagementProps) { return apiRef.current.setColumnVisibilityModel(newModel); }, - [apiRef, columns, getTogglableColumns], + [apiRef, columns, getTogglableColumns, toggleAllMode, currentColumns], ); const handleSearchValueChange = React.useCallback( @@ -145,22 +169,6 @@ function GridColumnsManagement(props: GridColumnsManagementProps) { [], ); - const currentColumns = React.useMemo(() => { - const togglableColumns = getTogglableColumns ? getTogglableColumns(sortedColumns) : null; - - const togglableSortedColumns = togglableColumns - ? sortedColumns.filter(({ field }) => togglableColumns.includes(field)) - : sortedColumns; - - if (!searchValue) { - return togglableSortedColumns; - } - - return togglableSortedColumns.filter((column) => - searchPredicate(column, searchValue.toLowerCase()), - ); - }, [sortedColumns, searchValue, searchPredicate, getTogglableColumns]); - const hideableColumns = React.useMemo( () => currentColumns.filter((col) => col.hideable), [currentColumns], @@ -258,12 +266,10 @@ function GridColumnsManagement(props: GridColumnsManagementProps) { indeterminate={!allHideableColumnsVisible && !allHideableColumnsHidden} onClick={() => toggleAllColumns(!allHideableColumnsVisible)} name={apiRef.current.getLocaleText('columnsManagementShowHideAllText')} + sx={{ p: 0.5 }} {...rootProps.slotProps?.baseCheckbox} /> } - sx={{ - [`.MuiFormControlLabel-label`]: { textTransform: 'uppercase', fontSize: '14px' }, - }} label={apiRef.current.getLocaleText('columnsManagementShowHideAllText')} /> ) : ( @@ -317,6 +323,13 @@ GridColumnsManagement.propTypes = { getTogglableColumns: PropTypes.func, searchPredicate: PropTypes.func, sort: PropTypes.oneOf(['asc', 'desc']), + /** + * Changes the behavior of the `Show/Hide All` toggle when the search field is used: + * - `all`: Will toggle all columns. + * - `filteredOnly`: Will only toggle columns that match the search criteria. + * @default 'all' + */ + toggleAllMode: PropTypes.oneOf(['all', 'filteredOnly']), } as any; const GridColumnsManagementBody = styled('div', { @@ -346,7 +359,7 @@ const GridColumnsManagementFooter = styled('div', { slot: 'ColumnsManagementFooter', overridesResolver: (props, styles) => styles.columnsManagementFooter, })<{ ownerState: OwnerState }>(({ theme }) => ({ - padding: theme.spacing(0.5, 1, 0.5, 2.4), + padding: theme.spacing(0.5, 1, 0.5, 3), display: 'flex', justifyContent: 'space-between', borderTop: `1px solid ${theme.palette.divider}`, diff --git a/packages/grid/x-data-grid/src/joy/joySlots.tsx b/packages/grid/x-data-grid/src/joy/joySlots.tsx index be151d2f7ad6..7c5819657da0 100644 --- a/packages/grid/x-data-grid/src/joy/joySlots.tsx +++ b/packages/grid/x-data-grid/src/joy/joySlots.tsx @@ -16,7 +16,7 @@ import JoyCircularProgress from '@mui/joy/CircularProgress'; import JoyTooltip from '@mui/joy/Tooltip'; import { unstable_useForkRef as useForkRef } from '@mui/utils'; import joyIconSlots, { GridKeyboardArrowRight, GridKeyboardArrowLeft } from './icons'; -import type { GridSlotsComponent, GridSlotsComponentsProps } from '../models'; +import type { GridSlotProps, GridSlotsComponent, GridSlotsComponentsProps } from '../models'; import { useGridApiContext } from '../hooks/utils/useGridApiContext'; import { useGridRootProps } from '../hooks/utils/useGridRootProps'; import { gridFilteredTopLevelRowCountSelector, gridPaginationModelSelector } from '../hooks'; @@ -116,10 +116,10 @@ const TextField = React.forwardRef< ); }); -const Button = React.forwardRef< - HTMLButtonElement, - NonNullable ->(function Button({ startIcon, color, endIcon, size, sx, variant, ...props }, ref) { +const Button = React.forwardRef(function Button( + { startIcon, color, endIcon, size, sx, variant, ...props }, + ref, +) { return ( ->(function Switch( +const Switch = React.forwardRef(function Switch( { name, checkedIcon, @@ -204,10 +201,7 @@ const Switch = React.forwardRef< ); }); -const Select = React.forwardRef< - HTMLButtonElement, - NonNullable ->( +const Select = React.forwardRef( ( { open, @@ -314,10 +308,7 @@ const getLabelDisplayedRowsTo = ({ return pageSize === -1 ? rowCount : Math.min(rowCount, (page + 1) * pageSize); }; -const Pagination = React.forwardRef< - HTMLDivElement, - NonNullable ->((props, ref) => { +const Pagination = React.forwardRef((props, ref) => { const apiRef = useGridApiContext(); const rootProps = useGridRootProps(); const paginationModel = gridPaginationModelSelector(apiRef); @@ -439,13 +430,13 @@ const joySlots: Partial = { baseTextField: TextField, baseButton: Button, baseIconButton: IconButton, - baseSwitch: Switch as any /* FIXME: typing error */, - baseSelect: Select as any /* FIXME: typing error */, + baseSwitch: Switch, + baseSelect: Select, baseSelectOption: Option, baseInputLabel: InputLabel, baseFormControl: JoyFormControl as any /* FIXME: typing error */, baseTooltip: JoyTooltip as any /* FIXME: typing error */, - pagination: Pagination as any /* FIXME: typing error */, + pagination: Pagination, loadingOverlay: LoadingOverlay, }; diff --git a/packages/grid/x-data-grid/src/locales/heIL.ts b/packages/grid/x-data-grid/src/locales/heIL.ts index 44b3279534bd..59811cd7d89d 100644 --- a/packages/grid/x-data-grid/src/locales/heIL.ts +++ b/packages/grid/x-data-grid/src/locales/heIL.ts @@ -69,12 +69,12 @@ const heILGrid: Partial = { filterOperatorIsEmpty: 'ריק', filterOperatorIsNotEmpty: 'אינו ריק', filterOperatorIsAnyOf: 'הוא אחד מ-', - // 'filterOperator=': '=', - // 'filterOperator!=': '!=', - // 'filterOperator>': '>', - // 'filterOperator>=': '>=', - // 'filterOperator<': '<', - // 'filterOperator<=': '<=', + 'filterOperator=': '=', + 'filterOperator!=': '!=', + 'filterOperator>': '>', + 'filterOperator>=': '>=', + 'filterOperator<': '<', + 'filterOperator<=': '<=', // Header filter operators text headerFilterOperatorContains: 'מכיל', @@ -159,7 +159,7 @@ const heILGrid: Partial = { unGroupColumn: (name) => `הפסק לקבץ לפי ${name}`, // Master/detail - // detailPanelToggle: 'Detail panel toggle', + detailPanelToggle: 'הצג/הסתר פרטים', expandDetailPanel: 'הרחב', collapseDetailPanel: 'כווץ', diff --git a/packages/grid/x-data-grid/src/tests/columnsVisibility.DataGrid.test.tsx b/packages/grid/x-data-grid/src/tests/columnsVisibility.DataGrid.test.tsx index c77e324bb616..721934f49d3b 100644 --- a/packages/grid/x-data-grid/src/tests/columnsVisibility.DataGrid.test.tsx +++ b/packages/grid/x-data-grid/src/tests/columnsVisibility.DataGrid.test.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; import { expect } from 'chai'; import { spy } from 'sinon'; -import { createRenderer, fireEvent, screen } from '@mui-internal/test-utils'; +import { act, createRenderer, fireEvent, screen } from '@mui-internal/test-utils'; import { DataGrid, DataGridProps, @@ -385,4 +385,44 @@ describe(' - Columns visibility', () => { expect(getColumnHeadersTextContent()).to.deep.equal(['id', 'idBis']); }); }); + + describe('prop: toggleAllMode', () => { + it('should toggle filtered columns when `toggleAllMode` is `filtered`', () => { + render( +
+ +
, + ); + + expect(getColumnHeadersTextContent()).to.deep.equal(['id', 'firstName', 'lastName', 'age']); + const button = screen.getByRole('button', { name: 'Select columns' }); + act(() => button.focus()); + fireEvent.click(button); + + const input = screen.getByPlaceholderText('Search'); + fireEvent.change(input, { target: { value: 'name' } }); + const showHideAllCheckbox = screen.getByRole('checkbox', { name: 'Show/Hide All' }); + fireEvent.click(showHideAllCheckbox); + expect(getColumnHeadersTextContent()).to.deep.equal(['id', 'age']); + + fireEvent.change(input, { target: { value: 'firstName' } }); + fireEvent.click(showHideAllCheckbox); + expect(getColumnHeadersTextContent()).to.deep.equal(['id', 'firstName', 'age']); + }); + }); }); diff --git a/packages/x-charts/package.json b/packages/x-charts/package.json index b85b6aa5f158..5ed752020b0f 100644 --- a/packages/x-charts/package.json +++ b/packages/x-charts/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-charts", - "version": "7.0.0-alpha.9", + "version": "7.0.0-beta.0", "description": "The community edition of the charts components (MUI X).", "author": "MUI Team", "main": "./src/index.js", @@ -39,10 +39,10 @@ "directory": "packages/x-charts" }, "dependencies": { - "@babel/runtime": "^7.23.8", - "@mui/base": "^5.0.0-beta.32", - "@mui/system": "^5.15.5", - "@mui/utils": "^5.15.5", + "@babel/runtime": "^7.23.9", + "@mui/base": "^5.0.0-beta.33", + "@mui/system": "^5.15.6", + "@mui/utils": "^5.15.6", "@react-spring/rafz": "^9.7.3", "@react-spring/web": "^9.7.3", "clsx": "^2.1.0", @@ -50,6 +50,7 @@ "d3-delaunay": "^6.0.4", "d3-scale": "^4.0.2", "d3-shape": "^3.2.0", + "d3-interpolate": "^3.0.1", "prop-types": "^15.8.1" }, "peerDependencies": { @@ -71,6 +72,7 @@ "@types/d3-color": "^3.1.3", "@types/d3-delaunay": "^6.0.4", "@types/d3-scale": "^4.0.8", + "@types/d3-interpolate": "^3.0.4", "@types/d3-shape": "^3.1.6" }, "exports": { diff --git a/packages/x-charts/src/BarChart/BarChart.tsx b/packages/x-charts/src/BarChart/BarChart.tsx index f3215547a897..b83f033fdcdd 100644 --- a/packages/x-charts/src/BarChart/BarChart.tsx +++ b/packages/x-charts/src/BarChart/BarChart.tsx @@ -339,7 +339,7 @@ BarChart.propTypes = { ]), series: PropTypes.arrayOf(PropTypes.object).isRequired, /** - * If `true`, animations are skiped. + * If `true`, animations are skipped. * @default false */ skipAnimation: PropTypes.bool, diff --git a/packages/x-charts/src/BarChart/BarElement.tsx b/packages/x-charts/src/BarChart/BarElement.tsx index 0bcca243e516..df1a0dfe483e 100644 --- a/packages/x-charts/src/BarChart/BarElement.tsx +++ b/packages/x-charts/src/BarChart/BarElement.tsx @@ -78,7 +78,7 @@ export type BarElementProps = Omit { /** - * If `true`, animations are skiped. + * If `true`, animations are skipped. * @default false */ skipAnimation?: boolean; @@ -74,7 +74,7 @@ interface CompletedBarData { highlightScope?: Partial; } -const useCompletedData = (): CompletedBarData[] => { +const useAggregatedData = (): CompletedBarData[] => { const seriesData = React.useContext(SeriesContext).bar ?? ({ series: {}, stackingGroups: [], seriesOrder: [] } as FormatterResult<'bar'>); @@ -215,7 +215,7 @@ const getInStyle = ({ x, width, y, height }: CompletedBarData) => ({ * - [BarPlot API](https://mui.com/x/api/charts/bar-plot/) */ function BarPlot(props: BarPlotProps) { - const completedData = useCompletedData(); + const completedData = useAggregatedData(); const { skipAnimation, ...other } = props; const transition = useTransition(completedData, { @@ -248,7 +248,7 @@ BarPlot.propTypes = { // | To update them edit the TypeScript types and run "yarn proptypes" | // ---------------------------------------------------------------------- /** - * If `true`, animations are skiped. + * If `true`, animations are skipped. * @default false */ skipAnimation: PropTypes.bool, diff --git a/packages/x-charts/src/ChartsReferenceLine/ChartsXReferenceLine.tsx b/packages/x-charts/src/ChartsReferenceLine/ChartsXReferenceLine.tsx index 765d7d43f1b0..6e668f814b13 100644 --- a/packages/x-charts/src/ChartsReferenceLine/ChartsXReferenceLine.tsx +++ b/packages/x-charts/src/ChartsReferenceLine/ChartsXReferenceLine.tsx @@ -96,7 +96,7 @@ function ChartsXReferenceLine(props: ChartsXReferenceLineProps) { if (!warnedOnce) { warnedOnce = true; console.error( - `MUI X: the value ${x} does not exist in the data of x axis with id ${axisId}.`, + `MUI X Charts: the value ${x} does not exist in the data of x axis with id ${axisId}.`, ); } } diff --git a/packages/x-charts/src/ChartsReferenceLine/ChartsYReferenceLine.tsx b/packages/x-charts/src/ChartsReferenceLine/ChartsYReferenceLine.tsx index e66c086020c6..376f1c3bfd99 100644 --- a/packages/x-charts/src/ChartsReferenceLine/ChartsYReferenceLine.tsx +++ b/packages/x-charts/src/ChartsReferenceLine/ChartsYReferenceLine.tsx @@ -96,7 +96,7 @@ function ChartsYReferenceLine(props: ChartsYReferenceLineProps) { if (!warnedOnce) { warnedOnce = true; console.error( - `MUI X: the value ${y} does not exist in the data of y axis with id ${axisId}.`, + `MUI X Charts: the value ${y} does not exist in the data of y axis with id ${axisId}.`, ); } } diff --git a/packages/x-charts/src/ChartsTooltip/ChartsAxisTooltipContent.tsx b/packages/x-charts/src/ChartsTooltip/ChartsAxisTooltipContent.tsx index 9b0109cfefb1..102bb42989ea 100644 --- a/packages/x-charts/src/ChartsTooltip/ChartsAxisTooltipContent.tsx +++ b/packages/x-charts/src/ChartsTooltip/ChartsAxisTooltipContent.tsx @@ -109,11 +109,13 @@ ChartsAxisTooltipContent.propTypes = { axisData: PropTypes.shape({ x: PropTypes.shape({ index: PropTypes.number, - value: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]).isRequired, + value: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number, PropTypes.string]) + .isRequired, }), y: PropTypes.shape({ index: PropTypes.number, - value: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]).isRequired, + value: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number, PropTypes.string]) + .isRequired, }), }).isRequired, classes: PropTypes.object.isRequired, @@ -123,11 +125,13 @@ ChartsAxisTooltipContent.propTypes = { axisData: PropTypes.shape({ x: PropTypes.shape({ index: PropTypes.number, - value: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]).isRequired, + value: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number, PropTypes.string]) + .isRequired, }), y: PropTypes.shape({ index: PropTypes.number, - value: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]).isRequired, + value: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number, PropTypes.string]) + .isRequired, }), }), axisValue: PropTypes.any, diff --git a/packages/x-charts/src/ChartsTooltip/DefaultChartsAxisTooltipContent.tsx b/packages/x-charts/src/ChartsTooltip/DefaultChartsAxisTooltipContent.tsx index 27ca0f3158cc..9a708be0ee29 100644 --- a/packages/x-charts/src/ChartsTooltip/DefaultChartsAxisTooltipContent.tsx +++ b/packages/x-charts/src/ChartsTooltip/DefaultChartsAxisTooltipContent.tsx @@ -79,11 +79,13 @@ DefaultChartsAxisTooltipContent.propTypes = { axisData: PropTypes.shape({ x: PropTypes.shape({ index: PropTypes.number, - value: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]).isRequired, + value: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number, PropTypes.string]) + .isRequired, }), y: PropTypes.shape({ index: PropTypes.number, - value: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]).isRequired, + value: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number, PropTypes.string]) + .isRequired, }), }).isRequired, /** diff --git a/packages/x-charts/src/LineChart/AnimatedArea.tsx b/packages/x-charts/src/LineChart/AnimatedArea.tsx new file mode 100644 index 000000000000..12d27c96c17c --- /dev/null +++ b/packages/x-charts/src/LineChart/AnimatedArea.tsx @@ -0,0 +1,90 @@ +import * as React from 'react'; +import PropTypes from 'prop-types'; +import { styled } from '@mui/material/styles'; +import { color as d3Color } from 'd3-color'; +import { animated, useSpring } from '@react-spring/web'; +import { useAnimatedPath } from '../internals/useAnimatedPath'; +import { DrawingContext } from '../context/DrawingProvider'; +import { cleanId } from '../internals/utils'; +import type { AreaElementOwnerState } from './AreaElement'; + +export const AreaElementPath = styled(animated.path, { + name: 'MuiAreaElement', + slot: 'Root', + overridesResolver: (_, styles) => styles.root, +})<{ ownerState: AreaElementOwnerState }>(({ ownerState }) => ({ + stroke: 'none', + fill: ownerState.isHighlighted + ? d3Color(ownerState.color)!.brighter(1).formatHex() + : d3Color(ownerState.color)!.brighter(0.5).formatHex(), + transition: 'opacity 0.2s ease-in, fill 0.2s ease-in', + opacity: ownerState.isFaded ? 0.3 : 1, +})); + +export interface AnimatedAreaProps extends React.ComponentPropsWithoutRef<'path'> { + ownerState: AreaElementOwnerState; + d: string; + /** + * If `true`, animations are skipped. + * @default false + */ + skipAnimation?: boolean; +} + +/** + * Demos: + * + * - [Lines](https://mui.com/x/react-charts/lines/) + * - [Areas demonstration](https://mui.com/x/react-charts/areas-demo/) + * + * API: + * + * - [AreaElement API](https://mui.com/x/api/charts/animated-area/) + */ +function AnimatedArea(props: AnimatedAreaProps) { + const { d, skipAnimation, ownerState, ...other } = props; + const { left, top, right, bottom, width, height, chartId } = React.useContext(DrawingContext); + + const path = useAnimatedPath(d!, skipAnimation); + + const { animatedWidth } = useSpring({ + from: { animatedWidth: left }, + to: { animatedWidth: width + left + right }, + reset: false, + immediate: skipAnimation, + }); + + const clipId = cleanId(`${chartId}-${ownerState.id}-area-clip`); + return ( + + + + + + + + + ); +} + +AnimatedArea.propTypes = { + // ----------------------------- Warning -------------------------------- + // | These PropTypes are generated from the TypeScript type definitions | + // | To update them edit the TypeScript types and run "yarn proptypes" | + // ---------------------------------------------------------------------- + d: PropTypes.string.isRequired, + ownerState: PropTypes.shape({ + classes: PropTypes.object, + color: PropTypes.string.isRequired, + id: PropTypes.string.isRequired, + isFaded: PropTypes.bool.isRequired, + isHighlighted: PropTypes.bool.isRequired, + }).isRequired, + /** + * If `true`, animations are skipped. + * @default false + */ + skipAnimation: PropTypes.bool, +} as any; + +export { AnimatedArea }; diff --git a/packages/x-charts/src/LineChart/AnimatedLine.tsx b/packages/x-charts/src/LineChart/AnimatedLine.tsx new file mode 100644 index 000000000000..593ff6a9d2fe --- /dev/null +++ b/packages/x-charts/src/LineChart/AnimatedLine.tsx @@ -0,0 +1,92 @@ +import * as React from 'react'; +import PropTypes from 'prop-types'; +import { animated, useSpring } from '@react-spring/web'; +import { color as d3Color } from 'd3-color'; +import { styled } from '@mui/material/styles'; +import { useAnimatedPath } from '../internals/useAnimatedPath'; +import { DrawingContext } from '../context/DrawingProvider'; +import { cleanId } from '../internals/utils'; +import type { LineElementOwnerState } from './LineElement'; + +export const LineElementPath = styled(animated.path, { + name: 'MuiLineElement', + slot: 'Root', + overridesResolver: (_, styles) => styles.root, +})<{ ownerState: LineElementOwnerState }>(({ ownerState }) => ({ + strokeWidth: 2, + strokeLinejoin: 'round', + fill: 'none', + stroke: ownerState.isHighlighted + ? d3Color(ownerState.color)!.brighter(0.5).formatHex() + : ownerState.color, + transition: 'opacity 0.2s ease-in, stroke 0.2s ease-in', + opacity: ownerState.isFaded ? 0.3 : 1, +})); + +export interface AnimatedLineProps extends React.ComponentPropsWithoutRef<'path'> { + ownerState: LineElementOwnerState; + d: string; + /** + * If `true`, animations are skipped. + * @default false + */ + skipAnimation?: boolean; +} + +/** + * Demos: + * + * - [Lines](https://mui.com/x/react-charts/lines/) + * - [Line demonstration](https://mui.com/x/react-charts/line-demo/) + * + * API: + * + * - [AnimatedLine API](https://mui.com/x/api/charts/animated-line/) + */ +function AnimatedLine(props: AnimatedLineProps) { + const { d, skipAnimation, ownerState, ...other } = props; + const { left, top, bottom, width, height, right, chartId } = React.useContext(DrawingContext); + + const path = useAnimatedPath(d, skipAnimation); + + const { animatedWidth } = useSpring({ + from: { animatedWidth: left }, + to: { animatedWidth: width + left + right }, + reset: false, + immediate: skipAnimation, + }); + + const clipId = cleanId(`${chartId}-${ownerState.id}-line-clip`); + return ( + + + + + + + + + ); +} + +AnimatedLine.propTypes = { + // ----------------------------- Warning -------------------------------- + // | These PropTypes are generated from the TypeScript type definitions | + // | To update them edit the TypeScript types and run "yarn proptypes" | + // ---------------------------------------------------------------------- + d: PropTypes.string.isRequired, + ownerState: PropTypes.shape({ + classes: PropTypes.object, + color: PropTypes.string.isRequired, + id: PropTypes.string.isRequired, + isFaded: PropTypes.bool.isRequired, + isHighlighted: PropTypes.bool.isRequired, + }).isRequired, + /** + * If `true`, animations are skipped. + * @default false + */ + skipAnimation: PropTypes.bool, +} as any; + +export { AnimatedLine }; diff --git a/packages/x-charts/src/LineChart/AreaElement.tsx b/packages/x-charts/src/LineChart/AreaElement.tsx index d9610d9ec784..d8819b94cefe 100644 --- a/packages/x-charts/src/LineChart/AreaElement.tsx +++ b/packages/x-charts/src/LineChart/AreaElement.tsx @@ -1,11 +1,9 @@ import * as React from 'react'; import PropTypes from 'prop-types'; import composeClasses from '@mui/utils/composeClasses'; -import { useSlotProps, SlotComponentProps } from '@mui/base/utils'; +import { useSlotProps } from '@mui/base/utils'; import generateUtilityClass from '@mui/utils/generateUtilityClass'; -import { styled } from '@mui/material/styles'; import generateUtilityClasses from '@mui/utils/generateUtilityClasses'; -import { color as d3Color } from 'd3-color'; import { getIsFaded, getIsHighlighted, @@ -13,6 +11,7 @@ import { } from '../hooks/useInteractionItemProps'; import { InteractionContext } from '../context/InteractionProvider'; import { HighlightScope } from '../context/HighlightProvider'; +import { AnimatedArea, AnimatedAreaProps } from './AnimatedArea'; export interface AreaElementClasses { /** Styles applied to the root element. */ @@ -25,7 +24,7 @@ export interface AreaElementClasses { export type AreaElementClassKey = keyof AreaElementClasses; -interface AreaElementOwnerState { +export interface AreaElementOwnerState { id: string; color: string; isFaded: boolean; @@ -52,61 +51,34 @@ const useUtilityClasses = (ownerState: AreaElementOwnerState) => { return composeClasses(slots, getAreaElementUtilityClass, classes); }; -export const AreaElementPath = styled('path', { - name: 'MuiAreaElement', - slot: 'Root', - overridesResolver: (_, styles) => styles.root, -})<{ ownerState: AreaElementOwnerState }>(({ ownerState }) => ({ - stroke: 'none', - fill: ownerState.isHighlighted - ? d3Color(ownerState.color)!.brighter(1).formatHex() - : d3Color(ownerState.color)!.brighter(0.5).formatHex(), - transition: 'opacity 0.2s ease-in, fill 0.2s ease-in', - opacity: ownerState.isFaded ? 0.3 : 1, -})); - -AreaElementPath.propTypes = { - // ----------------------------- Warning -------------------------------- - // | These PropTypes are generated from the TypeScript type definitions | - // | To update them edit the TypeScript types and run "yarn proptypes" | - // ---------------------------------------------------------------------- - as: PropTypes.elementType, - ownerState: PropTypes.shape({ - classes: PropTypes.object, - color: PropTypes.string.isRequired, - id: PropTypes.string.isRequired, - isFaded: PropTypes.bool.isRequired, - isHighlighted: PropTypes.bool.isRequired, - }).isRequired, - sx: PropTypes.oneOfType([ - PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), - PropTypes.func, - PropTypes.object, - ]), -} as any; +export interface AreaElementSlots { + /** + * The component that renders the area. + * @default AnimatedArea + */ + area?: React.JSXElementConstructor; +} -export type AreaElementProps = Omit & - React.ComponentPropsWithoutRef<'path'> & { - highlightScope?: Partial; - /** - * The props used for each component slot. - * @default {} - */ - slotProps?: { - area?: SlotComponentProps<'path', {}, AreaElementOwnerState>; - }; - /** - * Overridable component slots. - * @default {} - */ - slots?: { - /** - * The component that renders the root. - * @default AreaElementPath - */ - area?: React.ElementType; - }; - }; +export interface AreaElementSlotProps { + area?: AnimatedAreaProps; +} + +export interface AreaElementProps + extends Omit, + Pick { + d: string; + highlightScope?: Partial; + /** + * The props used for each component slot. + * @default {} + */ + slotProps?: AreaElementSlotProps; + /** + * Overridable component slots. + * @default {} + */ + slots?: AreaElementSlots; +} /** * Demos: @@ -120,10 +92,10 @@ export type AreaElementProps = Omit; } @@ -157,10 +130,18 @@ AreaElement.propTypes = { // | To update them edit the TypeScript types and run "yarn proptypes" | // ---------------------------------------------------------------------- classes: PropTypes.object, + color: PropTypes.string.isRequired, + d: PropTypes.string.isRequired, highlightScope: PropTypes.shape({ faded: PropTypes.oneOf(['global', 'none', 'series']), highlighted: PropTypes.oneOf(['item', 'none', 'series']), }), + id: PropTypes.string.isRequired, + /** + * If `true`, animations are skipped. + * @default false + */ + skipAnimation: PropTypes.bool, /** * The props used for each component slot. * @default {} diff --git a/packages/x-charts/src/LineChart/AreaPlot.tsx b/packages/x-charts/src/LineChart/AreaPlot.tsx index 786b7a441e5c..8d4446ba7ff7 100644 --- a/packages/x-charts/src/LineChart/AreaPlot.tsx +++ b/packages/x-charts/src/LineChart/AreaPlot.tsx @@ -3,22 +3,90 @@ import PropTypes from 'prop-types'; import { area as d3Area } from 'd3-shape'; import { SeriesContext } from '../context/SeriesContextProvider'; import { CartesianContext } from '../context/CartesianContextProvider'; -import { AreaElement, AreaElementProps } from './AreaElement'; +import { + AreaElement, + AreaElementProps, + AreaElementSlotProps, + AreaElementSlots, +} from './AreaElement'; import { getValueToPositionMapper } from '../hooks/useScale'; import getCurveFactory from '../internals/getCurve'; import { DEFAULT_X_AXIS_KEY } from '../constants'; -export interface AreaPlotSlots { - area?: React.JSXElementConstructor; -} +export interface AreaPlotSlots extends AreaElementSlots {} -export interface AreaPlotSlotProps { - area?: Partial; -} +export interface AreaPlotSlotProps extends AreaElementSlotProps {} export interface AreaPlotProps extends React.SVGAttributes, - Pick {} + Pick {} + +const useAggregatedData = () => { + const seriesData = React.useContext(SeriesContext).line; + const axisData = React.useContext(CartesianContext); + + if (seriesData === undefined) { + return []; + } + + const { series, stackingGroups } = seriesData; + const { xAxis, yAxis, xAxisIds, yAxisIds } = axisData; + const defaultXAxisId = xAxisIds[0]; + const defaultYAxisId = yAxisIds[0]; + + return stackingGroups.flatMap(({ ids: groupIds }) => { + return groupIds.flatMap((seriesId) => { + const { + xAxisKey = defaultXAxisId, + yAxisKey = defaultYAxisId, + stackedData, + data, + connectNulls, + } = series[seriesId]; + + const xScale = getValueToPositionMapper(xAxis[xAxisKey].scale); + const yScale = yAxis[yAxisKey].scale; + const xData = xAxis[xAxisKey].data; + + if (process.env.NODE_ENV !== 'production') { + if (xData === undefined) { + throw new Error( + `MUI X Charts: ${ + xAxisKey === DEFAULT_X_AXIS_KEY + ? 'The first `xAxis`' + : `The x-axis with id "${xAxisKey}"` + } should have data property to be able to display a line plot.`, + ); + } + if (xData.length < stackedData.length) { + throw new Error( + `MUI X Charts: The data length of the x axis (${xData.length} items) is lower than the length of series (${stackedData.length} items).`, + ); + } + } + + const areaPath = d3Area<{ + x: any; + y: [number, number]; + }>() + .x((d) => xScale(d.x)) + .defined((_, i) => connectNulls || data[i] != null) + .y0((d) => d.y && yScale(d.y[0])!) + .y1((d) => d.y && yScale(d.y[1])!); + + const curve = getCurveFactory(series[seriesId].curve); + const formattedData = xData?.map((x, index) => ({ x, y: stackedData[index] })) ?? []; + const d3Data = connectNulls ? formattedData.filter((_, i) => data[i] != null) : formattedData; + + const d = areaPath.curve(curve)(d3Data) || ''; + return { + ...series[seriesId], + d, + seriesId, + }; + }); + }); +}; /** * Demos: @@ -32,82 +100,29 @@ export interface AreaPlotProps * - [AreaPlot API](https://mui.com/x/api/charts/area-plot/) */ function AreaPlot(props: AreaPlotProps) { - const { slots, slotProps, ...other } = props; + const { slots, slotProps, skipAnimation, ...other } = props; - const seriesData = React.useContext(SeriesContext).line; - const axisData = React.useContext(CartesianContext); - - if (seriesData === undefined) { - return null; - } - const { series, stackingGroups } = seriesData; - const { xAxis, yAxis, xAxisIds, yAxisIds } = axisData; - const defaultXAxisId = xAxisIds[0]; - const defaultYAxisId = yAxisIds[0]; + const completedData = useAggregatedData(); return ( - {stackingGroups.flatMap(({ ids: groupIds }) => { - return groupIds.flatMap((seriesId) => { - const { - xAxisKey = defaultXAxisId, - yAxisKey = defaultYAxisId, - stackedData, - data, - connectNulls, - } = series[seriesId]; - - const xScale = getValueToPositionMapper(xAxis[xAxisKey].scale); - const yScale = yAxis[yAxisKey].scale; - const xData = xAxis[xAxisKey].data; - - if (process.env.NODE_ENV !== 'production') { - if (xData === undefined) { - throw new Error( - `MUI X Charts: ${ - xAxisKey === DEFAULT_X_AXIS_KEY - ? 'The first `xAxis`' - : `The x-axis with id "${xAxisKey}"` - } should have data property to be able to display a line plot.`, - ); - } - if (xData.length < stackedData.length) { - throw new Error( - `MUI X Charts: The data length of the x axis (${xData.length} items) is lower than the length of series (${stackedData.length} items).`, - ); - } - } - - const areaPath = d3Area<{ - x: any; - y: [number, number]; - }>() - .x((d) => xScale(d.x)) - .defined((_, i) => connectNulls || data[i] != null) - .y0((d) => d.y && yScale(d.y[0])!) - .y1((d) => d.y && yScale(d.y[1])!); - - const curve = getCurveFactory(series[seriesId].curve); - const formattedData = xData?.map((x, index) => ({ x, y: stackedData[index] })) ?? []; - const d3Data = connectNulls - ? formattedData.filter((_, i) => data[i] != null) - : formattedData; - - return ( - !!series[seriesId].area && ( + {completedData + .reverse() + .map( + ({ d, seriesId, color, highlightScope, area }) => + !!area && ( - ) - ); - }); - })} + ), + )} ); } @@ -117,6 +132,11 @@ AreaPlot.propTypes = { // | These PropTypes are generated from the TypeScript type definitions | // | To update them edit the TypeScript types and run "yarn proptypes" | // ---------------------------------------------------------------------- + /** + * If `true`, animations are skipped. + * @default false + */ + skipAnimation: PropTypes.bool, /** * The props used for each component slot. * @default {} diff --git a/packages/x-charts/src/LineChart/LineChart.tsx b/packages/x-charts/src/LineChart/LineChart.tsx index 8fcc82e7cf92..2e0d71190d8e 100644 --- a/packages/x-charts/src/LineChart/LineChart.tsx +++ b/packages/x-charts/src/LineChart/LineChart.tsx @@ -82,6 +82,11 @@ export interface LineChartProps * @default {} */ slotProps?: LineChartSlotProps; + /** + * If `true`, animations are skipped. + * @default false + */ + skipAnimation?: boolean; } /** @@ -116,6 +121,7 @@ const LineChart = React.forwardRef(function LineChart(props: LineChartProps, ref children, slots, slotProps, + skipAnimation, } = props; const id = useId(); @@ -153,8 +159,8 @@ const LineChart = React.forwardRef(function LineChart(props: LineChartProps, ref } > - - + + - + @@ -348,6 +354,11 @@ LineChart.propTypes = { PropTypes.string, ]), series: PropTypes.arrayOf(PropTypes.object).isRequired, + /** + * If `true`, animations are skipped. + * @default false + */ + skipAnimation: PropTypes.bool, /** * The props used for each component slot. * @default {} diff --git a/packages/x-charts/src/LineChart/LineElement.tsx b/packages/x-charts/src/LineChart/LineElement.tsx index 14d13e28598f..a03e2486c81c 100644 --- a/packages/x-charts/src/LineChart/LineElement.tsx +++ b/packages/x-charts/src/LineChart/LineElement.tsx @@ -1,10 +1,8 @@ import * as React from 'react'; import PropTypes from 'prop-types'; -import { color as d3Color } from 'd3-color'; import composeClasses from '@mui/utils/composeClasses'; -import { useSlotProps, SlotComponentProps } from '@mui/base/utils'; +import { useSlotProps } from '@mui/base/utils'; import generateUtilityClass from '@mui/utils/generateUtilityClass'; -import { styled } from '@mui/material/styles'; import generateUtilityClasses from '@mui/utils/generateUtilityClasses'; import { InteractionContext } from '../context/InteractionProvider'; import { @@ -13,6 +11,7 @@ import { useInteractionItemProps, } from '../hooks/useInteractionItemProps'; import { HighlightScope } from '../context/HighlightProvider'; +import { AnimatedLine, AnimatedLineProps } from './AnimatedLine'; export interface LineElementClasses { /** Styles applied to the root element. */ @@ -25,7 +24,7 @@ export interface LineElementClasses { export type LineElementClassKey = keyof LineElementClasses; -interface LineElementOwnerState { +export interface LineElementOwnerState { id: string; color: string; isFaded: boolean; @@ -52,63 +51,34 @@ const useUtilityClasses = (ownerState: LineElementOwnerState) => { return composeClasses(slots, getLineElementUtilityClass, classes); }; -export const LineElementPath = styled('path', { - name: 'MuiLineElement', - slot: 'Root', - overridesResolver: (_, styles) => styles.root, -})<{ ownerState: LineElementOwnerState }>(({ ownerState }) => ({ - strokeWidth: 2, - strokeLinejoin: 'round', - fill: 'none', - stroke: ownerState.isHighlighted - ? d3Color(ownerState.color)!.brighter(0.5).formatHex() - : ownerState.color, - transition: 'opacity 0.2s ease-in, stroke 0.2s ease-in', - opacity: ownerState.isFaded ? 0.3 : 1, -})); - -LineElementPath.propTypes = { - // ----------------------------- Warning -------------------------------- - // | These PropTypes are generated from the TypeScript type definitions | - // | To update them edit the TypeScript types and run "yarn proptypes" | - // ---------------------------------------------------------------------- - as: PropTypes.elementType, - ownerState: PropTypes.shape({ - classes: PropTypes.object, - color: PropTypes.string.isRequired, - id: PropTypes.string.isRequired, - isFaded: PropTypes.bool.isRequired, - isHighlighted: PropTypes.bool.isRequired, - }).isRequired, - sx: PropTypes.oneOfType([ - PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), - PropTypes.func, - PropTypes.object, - ]), -} as any; +export interface LineElementSlots { + /** + * The component that renders the line. + * @default LineElementPath + */ + line?: React.JSXElementConstructor; +} -export type LineElementProps = Omit & - React.ComponentPropsWithoutRef<'path'> & { - highlightScope?: Partial; - /** - * The props used for each component slot. - * @default {} - */ - slotProps?: { - line?: SlotComponentProps<'path', {}, LineElementOwnerState>; - }; - /** - * Overridable component slots. - * @default {} - */ - slots?: { - /** - * The component that renders the root. - * @default LineElementPath - */ - line?: React.ElementType; - }; - }; +export interface LineElementSlotProps { + line?: AnimatedLineProps; +} + +export interface LineElementProps + extends Omit, + Pick { + d: string; + highlightScope?: Partial; + /** + * The props used for each component slot. + * @default {} + */ + slotProps?: LineElementSlotProps; + /** + * Overridable component slots. + * @default {} + */ + slots?: LineElementSlots; +} /** * Demos: @@ -122,7 +92,6 @@ export type LineElementProps = Omit; } @@ -160,10 +130,18 @@ LineElement.propTypes = { // | To update them edit the TypeScript types and run "yarn proptypes" | // ---------------------------------------------------------------------- classes: PropTypes.object, + color: PropTypes.string.isRequired, + d: PropTypes.string.isRequired, highlightScope: PropTypes.shape({ faded: PropTypes.oneOf(['global', 'none', 'series']), highlighted: PropTypes.oneOf(['item', 'none', 'series']), }), + id: PropTypes.string.isRequired, + /** + * If `true`, animations are skipped. + * @default false + */ + skipAnimation: PropTypes.bool, /** * The props used for each component slot. * @default {} diff --git a/packages/x-charts/src/LineChart/LinePlot.tsx b/packages/x-charts/src/LineChart/LinePlot.tsx index e97b47097c6c..1d180d423a32 100644 --- a/packages/x-charts/src/LineChart/LinePlot.tsx +++ b/packages/x-charts/src/LineChart/LinePlot.tsx @@ -3,22 +3,88 @@ import PropTypes from 'prop-types'; import { line as d3Line } from 'd3-shape'; import { SeriesContext } from '../context/SeriesContextProvider'; import { CartesianContext } from '../context/CartesianContextProvider'; -import { LineElement, LineElementProps } from './LineElement'; +import { + LineElement, + LineElementProps, + LineElementSlotProps, + LineElementSlots, +} from './LineElement'; import { getValueToPositionMapper } from '../hooks/useScale'; import getCurveFactory from '../internals/getCurve'; import { DEFAULT_X_AXIS_KEY } from '../constants'; -export interface LinePlotSlots { - line?: React.JSXElementConstructor; -} +export interface LinePlotSlots extends LineElementSlots {} -export interface LinePlotSlotProps { - line?: Partial; -} +export interface LinePlotSlotProps extends LineElementSlotProps {} export interface LinePlotProps extends React.SVGAttributes, - Pick {} + Pick {} + +const useAggregatedData = () => { + const seriesData = React.useContext(SeriesContext).line; + const axisData = React.useContext(CartesianContext); + + if (seriesData === undefined) { + return []; + } + + const { series, stackingGroups } = seriesData; + const { xAxis, yAxis, xAxisIds, yAxisIds } = axisData; + const defaultXAxisId = xAxisIds[0]; + const defaultYAxisId = yAxisIds[0]; + + return stackingGroups.flatMap(({ ids: groupIds }) => { + return groupIds.flatMap((seriesId) => { + const { + xAxisKey = defaultXAxisId, + yAxisKey = defaultYAxisId, + stackedData, + data, + connectNulls, + } = series[seriesId]; + + const xScale = getValueToPositionMapper(xAxis[xAxisKey].scale); + const yScale = yAxis[yAxisKey].scale; + const xData = xAxis[xAxisKey].data; + + if (process.env.NODE_ENV !== 'production') { + if (xData === undefined) { + throw new Error( + `MUI X Charts: ${ + xAxisKey === DEFAULT_X_AXIS_KEY + ? 'The first `xAxis`' + : `The x-axis with id "${xAxisKey}"` + } should have data property to be able to display a line plot.`, + ); + } + if (xData.length < stackedData.length) { + throw new Error( + `MUI X Charts: The data length of the x axis (${xData.length} items) is lower than the length of series (${stackedData.length} items).`, + ); + } + } + + const linePath = d3Line<{ + x: any; + y: [number, number]; + }>() + .x((d) => xScale(d.x)) + .defined((_, i) => connectNulls || data[i] != null) + .y((d) => yScale(d.y[1])!); + + const formattedData = xData?.map((x, index) => ({ x, y: stackedData[index] })) ?? []; + const d3Data = connectNulls ? formattedData.filter((_, i) => data[i] != null) : formattedData; + + const d = linePath.curve(getCurveFactory(series[seriesId].curve))(d3Data) || ''; + return { + ...series[seriesId], + d, + seriesId, + }; + }); + }); +}; /** * Demos: @@ -31,77 +97,25 @@ export interface LinePlotProps * - [LinePlot API](https://mui.com/x/api/charts/line-plot/) */ function LinePlot(props: LinePlotProps) { - const { slots, slotProps, ...other } = props; - const seriesData = React.useContext(SeriesContext).line; - const axisData = React.useContext(CartesianContext); + const { slots, slotProps, skipAnimation, ...other } = props; - if (seriesData === undefined) { - return null; - } - const { series, stackingGroups } = seriesData; - const { xAxis, yAxis, xAxisIds, yAxisIds } = axisData; - const defaultXAxisId = xAxisIds[0]; - const defaultYAxisId = yAxisIds[0]; + const completedData = useAggregatedData(); return ( - {stackingGroups.flatMap(({ ids: groupIds }) => { - return groupIds.flatMap((seriesId) => { - const { - xAxisKey = defaultXAxisId, - yAxisKey = defaultYAxisId, - stackedData, - data, - connectNulls, - } = series[seriesId]; - - const xScale = getValueToPositionMapper(xAxis[xAxisKey].scale); - const yScale = yAxis[yAxisKey].scale; - const xData = xAxis[xAxisKey].data; - - if (process.env.NODE_ENV !== 'production') { - if (xData === undefined) { - throw new Error( - `MUI X Charts: ${ - xAxisKey === DEFAULT_X_AXIS_KEY - ? 'The first `xAxis`' - : `The x-axis with id "${xAxisKey}"` - } should have data property to be able to display a line plot.`, - ); - } - if (xData.length < stackedData.length) { - throw new Error( - `MUI X Charts: The data length of the x axis (${xData.length} items) is lower than the length of series (${stackedData.length} items).`, - ); - } - } - - const linePath = d3Line<{ - x: any; - y: [number, number]; - }>() - .x((d) => xScale(d.x)) - .defined((_, i) => connectNulls || data[i] != null) - .y((d) => yScale(d.y[1])!); - - const curve = getCurveFactory(series[seriesId].curve); - const formattedData = xData?.map((x, index) => ({ x, y: stackedData[index] })) ?? []; - const d3Data = connectNulls - ? formattedData.filter((_, i) => data[i] != null) - : formattedData; - - return ( - - ); - }); + {completedData.map(({ d, seriesId, color, highlightScope }) => { + return ( + + ); })} ); @@ -112,6 +126,11 @@ LinePlot.propTypes = { // | These PropTypes are generated from the TypeScript type definitions | // | To update them edit the TypeScript types and run "yarn proptypes" | // ---------------------------------------------------------------------- + /** + * If `true`, animations are skipped. + * @default false + */ + skipAnimation: PropTypes.bool, /** * The props used for each component slot. * @default {} diff --git a/packages/x-charts/src/LineChart/MarkElement.tsx b/packages/x-charts/src/LineChart/MarkElement.tsx index 83af7d050517..de78d5b1e8d8 100644 --- a/packages/x-charts/src/LineChart/MarkElement.tsx +++ b/packages/x-charts/src/LineChart/MarkElement.tsx @@ -5,6 +5,7 @@ import generateUtilityClass from '@mui/utils/generateUtilityClass'; import { styled } from '@mui/material/styles'; import generateUtilityClasses from '@mui/utils/generateUtilityClasses'; import { symbol as d3Symbol, symbolsFill as d3SymbolsFill } from 'd3-shape'; +import { animated, to, useSpring } from '@react-spring/web'; import { getSymbol } from '../internals/utils'; import { InteractionContext } from '../context/InteractionProvider'; import { HighlightScope } from '../context/HighlightProvider'; @@ -30,8 +31,6 @@ interface MarkElementOwnerState { color: string; isFaded: boolean; isHighlighted: boolean; - x: number; - y: number; classes?: Partial; } @@ -54,13 +53,11 @@ const useUtilityClasses = (ownerState: MarkElementOwnerState) => { return composeClasses(slots, getMarkElementUtilityClass, classes); }; -const MarkElementPath = styled('path', { +const MarkElementPath = styled(animated.path, { name: 'MuiMarkElement', slot: 'Root', overridesResolver: (_, styles) => styles.root, })<{ ownerState: MarkElementOwnerState }>(({ ownerState, theme }) => ({ - transform: `translate(${ownerState.x}px, ${ownerState.y}px)`, - transformOrigin: `${ownerState.x}px ${ownerState.y}px`, fill: (theme.vars || theme).palette.background.paper, stroke: ownerState.color, strokeWidth: 2, @@ -78,8 +75,6 @@ MarkElementPath.propTypes = { id: PropTypes.string.isRequired, isFaded: PropTypes.bool.isRequired, isHighlighted: PropTypes.bool.isRequired, - x: PropTypes.number.isRequired, - y: PropTypes.number.isRequired, }).isRequired, sx: PropTypes.oneOfType([ PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), @@ -90,6 +85,11 @@ MarkElementPath.propTypes = { export type MarkElementProps = Omit & React.ComponentPropsWithoutRef<'path'> & { + /** + * If `true`, animations are skipped. + * @default false + */ + skipAnimation?: boolean; /** * The shape of the marker. */ @@ -121,6 +121,7 @@ function MarkElement(props: MarkElementProps) { shape, dataIndex, highlightScope, + skipAnimation, ...other } = props; @@ -134,20 +135,23 @@ function MarkElement(props: MarkElementProps) { const isFaded = !isHighlighted && getIsFaded(item, { type: 'line', seriesId: id }, highlightScope); + const position = useSpring({ x, y, immediate: skipAnimation }); const ownerState = { id, classes: innerClasses, isHighlighted, isFaded, color, - x, - y, }; const classes = useUtilityClasses(ownerState); return ( `translate(${pX}px, ${pY}px)`), + transformOrigin: to([position.x, position.y], (pX, pY) => `${pX}px ${pY}px`), + }} ownerState={ownerState} className={classes.root} d={d3Symbol(d3SymbolsFill[getSymbol(shape)])()!} @@ -175,6 +179,11 @@ MarkElement.propTypes = { */ shape: PropTypes.oneOf(['circle', 'cross', 'diamond', 'square', 'star', 'triangle', 'wye']) .isRequired, + /** + * If `true`, animations are skipped. + * @default false + */ + skipAnimation: PropTypes.bool, } as any; export { MarkElement }; diff --git a/packages/x-charts/src/LineChart/MarkPlot.tsx b/packages/x-charts/src/LineChart/MarkPlot.tsx index c0916c449fd8..69baf3061cbd 100644 --- a/packages/x-charts/src/LineChart/MarkPlot.tsx +++ b/packages/x-charts/src/LineChart/MarkPlot.tsx @@ -5,6 +5,8 @@ import { CartesianContext } from '../context/CartesianContextProvider'; import { MarkElement, MarkElementProps } from './MarkElement'; import { getValueToPositionMapper } from '../hooks/useScale'; import { DEFAULT_X_AXIS_KEY } from '../constants'; +import { DrawingContext } from '../context/DrawingProvider'; +import { cleanId } from '../internals/utils'; export interface MarkPlotSlots { mark?: React.JSXElementConstructor; @@ -14,7 +16,9 @@ export interface MarkPlotSlotProps { mark?: Partial; } -export interface MarkPlotProps extends React.SVGAttributes { +export interface MarkPlotProps + extends React.SVGAttributes, + Pick { /** * Overridable component slots. * @default {} @@ -38,10 +42,11 @@ export interface MarkPlotProps extends React.SVGAttributes { * - [MarkPlot API](https://mui.com/x/api/charts/mark-plot/) */ function MarkPlot(props: MarkPlotProps) { - const { slots, slotProps, ...other } = props; + const { slots, slotProps, skipAnimation, ...other } = props; const seriesData = React.useContext(SeriesContext).line; const axisData = React.useContext(CartesianContext); + const { chartId } = React.useContext(DrawingContext); const Mark = slots?.mark ?? MarkElement; @@ -56,7 +61,7 @@ function MarkPlot(props: MarkPlotProps) { return ( {stackingGroups.flatMap(({ ids: groupIds }) => { - return groupIds.flatMap((seriesId) => { + return groupIds.map((seriesId) => { const { xAxisKey = defaultXAxisId, yAxisKey = defaultYAxisId, @@ -96,52 +101,59 @@ function MarkPlot(props: MarkPlotProps) { ); } - return xData - ?.map((x, index) => { - const value = data[index] == null ? null : stackedData[index][1]; - return { - x: xScale(x), - y: value === null ? null : yScale(value)!, - position: x, - value, - index, - }; - }) - .filter(({ x, y, index, position, value }) => { - if (value === null || y === null) { - // Remove missing data point - return false; - } - if (!isInRange({ x, y })) { - // Remove out of range - return false; - } - if (showMark === true) { - return true; - } - return showMark({ - x, - y, - index, - position, - value, - }); - }) - .map(({ x, y, index }) => { - return ( - - ); - }); + const clipId = cleanId(`${chartId}-${seriesId}-line-clip`); // We assume that if displaying line mark, the line will also be rendered + + return ( + + {xData + ?.map((x, index) => { + const value = data[index] == null ? null : stackedData[index][1]; + return { + x: xScale(x), + y: value === null ? null : yScale(value)!, + position: x, + value, + index, + }; + }) + .filter(({ x, y, index, position, value }) => { + if (value === null || y === null) { + // Remove missing data point + return false; + } + if (!isInRange({ x, y })) { + // Remove out of range + return false; + } + if (showMark === true) { + return true; + } + return showMark({ + x, + y, + index, + position, + value, + }); + }) + .map(({ x, y, index }) => { + return ( + + ); + })} + + ); }); })} @@ -153,6 +165,11 @@ MarkPlot.propTypes = { // | These PropTypes are generated from the TypeScript type definitions | // | To update them edit the TypeScript types and run "yarn proptypes" | // ---------------------------------------------------------------------- + /** + * If `true`, animations are skipped. + * @default false + */ + skipAnimation: PropTypes.bool, /** * The props used for each component slot. * @default {} diff --git a/packages/x-charts/src/LineChart/index.tsx b/packages/x-charts/src/LineChart/index.tsx index 742fba2f4d38..6ac814459035 100644 --- a/packages/x-charts/src/LineChart/index.tsx +++ b/packages/x-charts/src/LineChart/index.tsx @@ -6,6 +6,8 @@ export * from './MarkPlot'; export * from './LineHighlightPlot'; export * from './AreaElement'; +export * from './AnimatedArea'; export * from './LineElement'; +export * from './AnimatedLine'; export * from './MarkElement'; export * from './LineHighlightElement'; diff --git a/packages/x-charts/src/PieChart/PieArcLabelPlot.tsx b/packages/x-charts/src/PieChart/PieArcLabelPlot.tsx index 6ce3782a109f..831369e98105 100644 --- a/packages/x-charts/src/PieChart/PieArcLabelPlot.tsx +++ b/packages/x-charts/src/PieChart/PieArcLabelPlot.tsx @@ -75,7 +75,7 @@ export interface PieArcLabelPlotProps */ slotProps?: PieArcLabelPlotSlotProps; /** - * If `true`, animations are skiped. + * If `true`, animations are skipped. * @default false */ skipAnimation?: boolean; @@ -249,7 +249,7 @@ PieArcLabelPlot.propTypes = { */ paddingAngle: PropTypes.number, /** - * If `true`, animations are skiped. + * If `true`, animations are skipped. * @default false */ skipAnimation: PropTypes.bool, diff --git a/packages/x-charts/src/PieChart/PieArcPlot.tsx b/packages/x-charts/src/PieChart/PieArcPlot.tsx index ae3d9f200b03..1db0508cc417 100644 --- a/packages/x-charts/src/PieChart/PieArcPlot.tsx +++ b/packages/x-charts/src/PieChart/PieArcPlot.tsx @@ -56,7 +56,7 @@ export interface PieArcPlotProps item: DefaultizedPieValueType, ) => void; /** - * If `true`, animations are skiped. + * If `true`, animations are skipped. * @default false */ skipAnimation?: boolean; @@ -230,7 +230,7 @@ PieArcPlot.propTypes = { */ paddingAngle: PropTypes.number, /** - * If `true`, animations are skiped. + * If `true`, animations are skipped. * @default false */ skipAnimation: PropTypes.bool, diff --git a/packages/x-charts/src/PieChart/PieChart.tsx b/packages/x-charts/src/PieChart/PieChart.tsx index 95a7d6bd04a3..cb0cd54077d6 100644 --- a/packages/x-charts/src/PieChart/PieChart.tsx +++ b/packages/x-charts/src/PieChart/PieChart.tsx @@ -321,7 +321,7 @@ PieChart.propTypes = { ]), series: PropTypes.arrayOf(PropTypes.object).isRequired, /** - * If `true`, animations are skiped. + * If `true`, animations are skipped. * @default false */ skipAnimation: PropTypes.bool, diff --git a/packages/x-charts/src/PieChart/PiePlot.tsx b/packages/x-charts/src/PieChart/PiePlot.tsx index 35733978c672..198ef8accc15 100644 --- a/packages/x-charts/src/PieChart/PiePlot.tsx +++ b/packages/x-charts/src/PieChart/PiePlot.tsx @@ -156,7 +156,7 @@ PiePlot.propTypes = { */ onClick: PropTypes.func, /** - * If `true`, animations are skiped. + * If `true`, animations are skipped. * @default false */ skipAnimation: PropTypes.bool, diff --git a/packages/x-charts/src/SparkLineChart/SparkLineChart.tsx b/packages/x-charts/src/SparkLineChart/SparkLineChart.tsx index 1ecb4634511a..8214bec2e2fe 100644 --- a/packages/x-charts/src/SparkLineChart/SparkLineChart.tsx +++ b/packages/x-charts/src/SparkLineChart/SparkLineChart.tsx @@ -197,8 +197,8 @@ const SparkLineChart = React.forwardRef(function SparkLineChart(props: SparkLine {plotType === 'line' && ( - - + + )} diff --git a/packages/x-charts/src/context/DrawingProvider.tsx b/packages/x-charts/src/context/DrawingProvider.tsx index 9311c045e2e2..4429fabffba6 100644 --- a/packages/x-charts/src/context/DrawingProvider.tsx +++ b/packages/x-charts/src/context/DrawingProvider.tsx @@ -1,5 +1,6 @@ import * as React from 'react'; import PropTypes from 'prop-types'; +import useId from '@mui/utils/useId'; import useChartDimensions from '../hooks/useChartDimensions'; import { LayoutConfig } from '../models/layout'; @@ -38,13 +39,21 @@ export type DrawingArea = { height: number; }; -export const DrawingContext = React.createContext({ +export const DrawingContext = React.createContext< + DrawingArea & { + /** + * A random id used to distinguish each chart on the same page. + */ + chartId: string; + } +>({ top: 0, left: 0, bottom: 0, right: 0, height: 300, width: 400, + chartId: '', }); export const SVGContext = React.createContext>({ current: null }); @@ -56,10 +65,16 @@ export const SVGContext = React.createContext>({ function DrawingProvider(props: DrawingProviderProps) { const { width, height, margin, svgRef, children } = props; const drawingArea = useChartDimensions(width, height, margin); + const chartId = useId(); + + const value = React.useMemo( + () => ({ chartId: chartId ?? '', ...drawingArea }), + [chartId, drawingArea], + ); return ( - {children} + {children} ); } diff --git a/packages/x-charts/src/context/InteractionProvider.tsx b/packages/x-charts/src/context/InteractionProvider.tsx index bf82c6323ca5..a8c3f75d37fe 100644 --- a/packages/x-charts/src/context/InteractionProvider.tsx +++ b/packages/x-charts/src/context/InteractionProvider.tsx @@ -9,11 +9,11 @@ export type ItemInteractionData = ChartItemIdentifier export type AxisInteractionData = { x: null | { - value: number | Date; + value: number | Date | string; index?: number; }; y: null | { - value: number | Date; + value: number | Date | string; index?: number; }; }; diff --git a/packages/x-charts/src/hooks/useDrawingArea.ts b/packages/x-charts/src/hooks/useDrawingArea.ts index 100db73ba227..e08c3e3a56b7 100644 --- a/packages/x-charts/src/hooks/useDrawingArea.ts +++ b/packages/x-charts/src/hooks/useDrawingArea.ts @@ -2,6 +2,9 @@ import * as React from 'react'; import { DrawingContext } from '../context/DrawingProvider'; export function useDrawingArea() { - const { left, top, width, height } = React.useContext(DrawingContext); - return React.useMemo(() => ({ left, top, width, height }), [height, left, top, width]); + const { left, top, width, height, bottom, right } = React.useContext(DrawingContext); + return React.useMemo( + () => ({ left, top, width, height, bottom, right }), + [height, left, top, width, bottom, right], + ); } diff --git a/packages/x-charts/src/internals/geometry.ts b/packages/x-charts/src/internals/geometry.ts index 43fd024cacc3..593ba18e20a0 100644 --- a/packages/x-charts/src/internals/geometry.ts +++ b/packages/x-charts/src/internals/geometry.ts @@ -16,7 +16,7 @@ export function getMinXTranslation(width: number, height: number, angle: number warnedOnce = true; console.warn( [ - `MUI X: It seems you applied an angle larger than 90° or smaller than -90° to an axis text.`, + `MUI X Charts: It seems you applied an angle larger than 90° or smaller than -90° to an axis text.`, `This could cause some text overlapping.`, `If you encounter a use case where it's needed, please open an issue.`, ].join('\n'), diff --git a/packages/x-charts/src/internals/useAnimatedPath.ts b/packages/x-charts/src/internals/useAnimatedPath.ts new file mode 100644 index 000000000000..034302c08f7b --- /dev/null +++ b/packages/x-charts/src/internals/useAnimatedPath.ts @@ -0,0 +1,29 @@ +import * as React from 'react'; +import { interpolateString } from 'd3-interpolate'; +import { useSpring, to } from '@react-spring/web'; + +function usePrevious(value: T) { + const ref = React.useRef(null); + React.useEffect(() => { + ref.current = value; + }, [value]); + return ref.current; +} + +// Taken from Nivo +export const useAnimatedPath = (path: string, skipAnimation?: boolean) => { + const previousPath = usePrevious(path); + const interpolator = React.useMemo( + () => (previousPath ? interpolateString(previousPath, path) : () => path), + [previousPath, path], + ); + + const { value } = useSpring({ + from: { value: 0 }, + to: { value: 1 }, + reset: true, + immediate: skipAnimation, + }); + + return to([value], interpolator); +}; diff --git a/packages/x-charts/src/internals/utils.ts b/packages/x-charts/src/internals/utils.ts index 81a79b389ab4..8dfdd4ea9d82 100644 --- a/packages/x-charts/src/internals/utils.ts +++ b/packages/x-charts/src/internals/utils.ts @@ -51,3 +51,10 @@ export function getPercentageValue(value: number | string, refValue: number) { `MUI-Charts: Received an unknown value "${value}". It should be a number, or a string with a percentage value.`, ); } + +/** + * Remove spaces to have viable ids + */ +export function cleanId(id: string) { + return id.replace(' ', '_'); +} diff --git a/packages/x-codemod/package.json b/packages/x-codemod/package.json index 8ce06865b4f8..85d58d34eb0c 100644 --- a/packages/x-codemod/package.json +++ b/packages/x-codemod/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-codemod", - "version": "7.0.0-alpha.9", + "version": "7.0.0-beta.0", "bin": "./codemod.js", "private": false, "author": "MUI Team", @@ -32,9 +32,9 @@ "url": "https://opencollective.com/mui-org" }, "dependencies": { - "@babel/core": "^7.23.7", - "@babel/runtime": "^7.23.8", - "@babel/traverse": "^7.23.7", + "@babel/core": "^7.23.9", + "@babel/runtime": "^7.23.9", + "@babel/traverse": "^7.23.9", "jscodeshift": "0.13.1", "jscodeshift-add-imports": "^1.0.10", "yargs": "^17.7.2" diff --git a/packages/x-date-pickers-pro/package.json b/packages/x-date-pickers-pro/package.json index edec20a5db3c..a0290c6382e4 100644 --- a/packages/x-date-pickers-pro/package.json +++ b/packages/x-date-pickers-pro/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-date-pickers-pro", - "version": "7.0.0-alpha.9", + "version": "7.0.0-beta.0", "description": "The commercial edition of the date picker components (MUI X).", "author": "MUI Team", "main": "src/index.ts", @@ -42,12 +42,12 @@ "directory": "packages/x-date-pickers-pro" }, "dependencies": { - "@babel/runtime": "^7.23.8", - "@mui/base": "^5.0.0-beta.32", - "@mui/system": "^5.15.5", - "@mui/utils": "^5.15.5", - "@mui/x-date-pickers": "7.0.0-alpha.9", - "@mui/x-license-pro": "7.0.0-alpha.9", + "@babel/runtime": "^7.23.9", + "@mui/base": "^5.0.0-beta.33", + "@mui/system": "^5.15.6", + "@mui/utils": "^5.15.6", + "@mui/x-date-pickers": "7.0.0-beta.0", + "@mui/x-license-pro": "7.0.0-beta.0", "clsx": "^2.1.0", "prop-types": "^15.8.1", "react-transition-group": "^4.4.5" diff --git a/packages/x-date-pickers-pro/src/DateTimeRangePicker/DateTimeRangePicker.tsx b/packages/x-date-pickers-pro/src/DateTimeRangePicker/DateTimeRangePicker.tsx index 232f6b69e0af..63d70c656b7c 100644 --- a/packages/x-date-pickers-pro/src/DateTimeRangePicker/DateTimeRangePicker.tsx +++ b/packages/x-date-pickers-pro/src/DateTimeRangePicker/DateTimeRangePicker.tsx @@ -176,6 +176,10 @@ DateTimeRangePicker.propTypes = { * Maximal selectable date. */ maxDate: PropTypes.any, + /** + * Maximal selectable moment of time with binding to date, to set max time in each day use `maxTime`. + */ + maxDateTime: PropTypes.any, /** * Maximal selectable time. * The date part of the object will be ignored unless `props.disableIgnoringDatePartForTimeValidation === true`. @@ -185,6 +189,10 @@ DateTimeRangePicker.propTypes = { * Minimal selectable date. */ minDate: PropTypes.any, + /** + * Minimal selectable moment of time with binding to date, to set min time in each day use `minTime`. + */ + minDateTime: PropTypes.any, /** * Minimal selectable time. * The date part of the object will be ignored unless `props.disableIgnoringDatePartForTimeValidation === true`. diff --git a/packages/x-date-pickers-pro/src/DateTimeRangePicker/DateTimeRangePickerTabs.tsx b/packages/x-date-pickers-pro/src/DateTimeRangePicker/DateTimeRangePickerTabs.tsx index 5dd53a97be3c..07e8256c39e3 100644 --- a/packages/x-date-pickers-pro/src/DateTimeRangePicker/DateTimeRangePickerTabs.tsx +++ b/packages/x-date-pickers-pro/src/DateTimeRangePicker/DateTimeRangePickerTabs.tsx @@ -55,18 +55,17 @@ export interface ExportedDateTimeRangePickerTabsProps extends ExportedBaseTabsPr * @default TimeIcon */ timeIcon?: React.ReactElement; -} - -export interface DateTimeRangePickerTabsProps - extends ExportedDateTimeRangePickerTabsProps, - BaseTabsProps, - Pick { /** * Override or extend the styles applied to the component. */ classes?: Partial; } +export interface DateTimeRangePickerTabsProps + extends ExportedDateTimeRangePickerTabsProps, + BaseTabsProps, + Pick {} + const useUtilityClasses = (ownerState: DateTimeRangePickerTabsProps) => { const { classes } = ownerState; const slots = { @@ -224,7 +223,7 @@ DateTimeRangePickerTabs.propTypes = { hidden: PropTypes.bool, onRangePositionChange: PropTypes.func.isRequired, /** - * Callback called when a tab is clicked + * Callback called when a tab is clicked. * @template TView * @param {TView} view The view to open */ diff --git a/packages/x-date-pickers-pro/src/DateTimeRangePicker/DateTimeRangePickerToolbar.tsx b/packages/x-date-pickers-pro/src/DateTimeRangePicker/DateTimeRangePickerToolbar.tsx index cb9a0a0b30c1..5b384ac900ab 100644 --- a/packages/x-date-pickers-pro/src/DateTimeRangePicker/DateTimeRangePickerToolbar.tsx +++ b/packages/x-date-pickers-pro/src/DateTimeRangePicker/DateTimeRangePickerToolbar.tsx @@ -38,13 +38,15 @@ type DateTimeRangeViews = Exclude; export interface DateTimeRangePickerToolbarProps extends BaseToolbarProps, DateTimeRangeViews>, - Pick { - classes?: Partial; + Pick, + ExportedDateTimeRangePickerToolbarProps { ampm?: boolean; toolbarVariant?: WrapperVariant; } -export interface ExportedDateTimeRangePickerToolbarProps extends ExportedBaseToolbarProps {} +export interface ExportedDateTimeRangePickerToolbarProps extends ExportedBaseToolbarProps { + classes?: Partial; +} const DateTimeRangePickerToolbarRoot = styled('div', { name: 'MuiDateTimeRangePickerToolbar', diff --git a/packages/x-date-pickers-pro/src/DateTimeRangePicker/shared.tsx b/packages/x-date-pickers-pro/src/DateTimeRangePicker/shared.tsx index 6a47c4b1b926..d893dbe01b40 100644 --- a/packages/x-date-pickers-pro/src/DateTimeRangePicker/shared.tsx +++ b/packages/x-date-pickers-pro/src/DateTimeRangePicker/shared.tsx @@ -15,6 +15,7 @@ import { TimeViewWithMeridiem, resolveTimeViewsResponse, UseViewsOptions, + DateTimeValidationProps, } from '@mui/x-date-pickers/internals'; import { TimeViewRendererProps } from '@mui/x-date-pickers/timeViewRenderers'; import { DigitalClockSlots, DigitalClockSlotProps } from '@mui/x-date-pickers/DigitalClock'; @@ -86,7 +87,8 @@ export interface BaseDateTimeRangePickerProps DesktopOnlyTimePickerProps, Partial< Pick, DateTimeRangePickerViewExternal>, 'openTo' | 'views'> - > { + >, + DateTimeValidationProps { /** * Overridable component slots. * @default {} diff --git a/packages/x-date-pickers-pro/src/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.tsx b/packages/x-date-pickers-pro/src/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.tsx index c173c036e16b..b0c6b36d18cd 100644 --- a/packages/x-date-pickers-pro/src/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.tsx +++ b/packages/x-date-pickers-pro/src/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.tsx @@ -317,6 +317,10 @@ DesktopDateTimeRangePicker.propTypes = { * Maximal selectable date. */ maxDate: PropTypes.any, + /** + * Maximal selectable moment of time with binding to date, to set max time in each day use `maxTime`. + */ + maxDateTime: PropTypes.any, /** * Maximal selectable time. * The date part of the object will be ignored unless `props.disableIgnoringDatePartForTimeValidation === true`. @@ -326,6 +330,10 @@ DesktopDateTimeRangePicker.propTypes = { * Minimal selectable date. */ minDate: PropTypes.any, + /** + * Minimal selectable moment of time with binding to date, to set min time in each day use `minTime`. + */ + minDateTime: PropTypes.any, /** * Minimal selectable time. * The date part of the object will be ignored unless `props.disableIgnoringDatePartForTimeValidation === true`. diff --git a/packages/x-date-pickers-pro/src/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.types.ts b/packages/x-date-pickers-pro/src/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.types.ts index 08e8e3e184d6..3f956449fba7 100644 --- a/packages/x-date-pickers-pro/src/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.types.ts +++ b/packages/x-date-pickers-pro/src/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.types.ts @@ -17,7 +17,7 @@ export interface DesktopDateTimeRangePickerSlots export interface DesktopDateTimeRangePickerSlotProps extends BaseDateTimeRangePickerSlotProps, - Omit, 'tabs'> {} + Omit, 'tabs' | 'toolbar'> {} export interface DesktopDateTimeRangePickerProps extends BaseDateTimeRangePickerProps, diff --git a/packages/x-date-pickers-pro/src/MobileDateTimeRangePicker/MobileDateTimeRangePicker.tsx b/packages/x-date-pickers-pro/src/MobileDateTimeRangePicker/MobileDateTimeRangePicker.tsx index 33391878483e..5799916f9836 100644 --- a/packages/x-date-pickers-pro/src/MobileDateTimeRangePicker/MobileDateTimeRangePicker.tsx +++ b/packages/x-date-pickers-pro/src/MobileDateTimeRangePicker/MobileDateTimeRangePicker.tsx @@ -312,6 +312,10 @@ MobileDateTimeRangePicker.propTypes = { * Maximal selectable date. */ maxDate: PropTypes.any, + /** + * Maximal selectable moment of time with binding to date, to set max time in each day use `maxTime`. + */ + maxDateTime: PropTypes.any, /** * Maximal selectable time. * The date part of the object will be ignored unless `props.disableIgnoringDatePartForTimeValidation === true`. @@ -321,6 +325,10 @@ MobileDateTimeRangePicker.propTypes = { * Minimal selectable date. */ minDate: PropTypes.any, + /** + * Minimal selectable moment of time with binding to date, to set min time in each day use `minTime`. + */ + minDateTime: PropTypes.any, /** * Minimal selectable time. * The date part of the object will be ignored unless `props.disableIgnoringDatePartForTimeValidation === true`. diff --git a/packages/x-date-pickers-pro/src/MobileDateTimeRangePicker/MobileDateTimeRangePicker.types.ts b/packages/x-date-pickers-pro/src/MobileDateTimeRangePicker/MobileDateTimeRangePicker.types.ts index 87544bac1de4..e7d18f3c649b 100644 --- a/packages/x-date-pickers-pro/src/MobileDateTimeRangePicker/MobileDateTimeRangePicker.types.ts +++ b/packages/x-date-pickers-pro/src/MobileDateTimeRangePicker/MobileDateTimeRangePicker.types.ts @@ -17,7 +17,7 @@ export interface MobileDateTimeRangePickerSlots export interface MobileDateTimeRangePickerSlotProps extends BaseDateTimeRangePickerSlotProps, - Omit, 'tabs'> {} + Omit, 'tabs' | 'toolbar'> {} export interface MobileDateTimeRangePickerProps extends BaseDateTimeRangePickerProps, diff --git a/packages/x-date-pickers-pro/src/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.tsx b/packages/x-date-pickers-pro/src/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.tsx index 70a5567fda24..d52fe387b6e7 100644 --- a/packages/x-date-pickers-pro/src/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.tsx +++ b/packages/x-date-pickers-pro/src/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.tsx @@ -13,6 +13,7 @@ import { BaseFieldProps, DateOrTimeViewWithMeridiem, UsePickerValueFieldResponse, + ExportedBaseTabsProps, } from '@mui/x-date-pickers/internals'; import { DesktopRangePickerAdditionalViewProps, @@ -188,7 +189,7 @@ export const useDesktopRangePicker = < ...slotProps?.tabs, rangePosition, onRangePositionChange, - }, + } as ExportedBaseTabsProps, toolbar: { ...slotProps?.toolbar, rangePosition, diff --git a/packages/x-date-pickers-pro/src/internals/hooks/useMobileRangePicker/useMobileRangePicker.tsx b/packages/x-date-pickers-pro/src/internals/hooks/useMobileRangePicker/useMobileRangePicker.tsx index bbb9db13493a..7bb0d98f26d1 100644 --- a/packages/x-date-pickers-pro/src/internals/hooks/useMobileRangePicker/useMobileRangePicker.tsx +++ b/packages/x-date-pickers-pro/src/internals/hooks/useMobileRangePicker/useMobileRangePicker.tsx @@ -11,6 +11,7 @@ import { useLocaleText, DateOrTimeViewWithMeridiem, UsePickerValueFieldResponse, + ExportedBaseTabsProps, } from '@mui/x-date-pickers/internals'; import useId from '@mui/utils/useId'; import { @@ -157,7 +158,7 @@ export const useMobileRangePicker = < ...innerSlotProps?.tabs, rangePosition, onRangePositionChange, - }, + } as ExportedBaseTabsProps, toolbar: { ...innerSlotProps?.toolbar, titleId: labelId, diff --git a/packages/x-date-pickers-pro/src/themeAugmentation/components.d.ts b/packages/x-date-pickers-pro/src/themeAugmentation/components.d.ts index 5f5ba018d884..b3c6e171a274 100644 --- a/packages/x-date-pickers-pro/src/themeAugmentation/components.d.ts +++ b/packages/x-date-pickers-pro/src/themeAugmentation/components.d.ts @@ -9,23 +9,31 @@ export interface PickersProComponents { defaultProps?: ComponentsProps['MuiDateRangePickerDay']; styleOverrides?: ComponentsOverrides['MuiDateRangePickerDay']; }; + MuiDateTimeRangePickerTabs?: { + defaultProps?: ComponentsProps['MuiDateTimeRangePickerTabs']; + styleOverrides?: ComponentsOverrides['MuiDateTimeRangePickerTabs']; + }; MuiDateRangePickerToolbar?: { defaultProps?: ComponentsProps['MuiDateRangePickerToolbar']; styleOverrides?: ComponentsOverrides['MuiDateRangePickerToolbar']; }; + MuiDateTimeRangePickerToolbar?: { + defaultProps?: ComponentsProps['MuiDateTimeRangePickerToolbar']; + styleOverrides?: ComponentsOverrides['MuiDateTimeRangePickerToolbar']; + }; // Multi input range fields MuiMultiInputDateRangeField?: { defaultProps?: ComponentsProps['MuiMultiInputDateRangeField']; - styleOverrides?: ComponentsOverrides['MuiMultiInputDateRangeField']; + styleOverrides?: ComponentsOverrides['MuiMultiInputDateRangeField']; }; MuiMultiInputDateTimeRangeField?: { defaultProps?: ComponentsProps['MuiMultiInputDateTimeRangeField']; - styleOverrides?: ComponentsOverrides['MuiMultiInputDateTimeRangeField']; + styleOverrides?: ComponentsOverrides['MuiMultiInputDateTimeRangeField']; }; MuiMultiInputTimeRangeField?: { defaultProps?: ComponentsProps['MuiMultiInputTimeRangeField']; - styleOverrides?: ComponentsOverrides['MuiMultiInputTimeRangeField']; + styleOverrides?: ComponentsOverrides['MuiMultiInputTimeRangeField']; }; // Single input range fields @@ -52,6 +60,17 @@ export interface PickersProComponents { MuiStaticDateRangePicker?: { defaultProps?: ComponentsProps['MuiStaticDateRangePicker']; }; + + // Date Time Range Pickers + MuiDateTimeRangePicker?: { + defaultProps?: ComponentsProps['MuiDateTimeRangePicker']; + }; + MuiDesktopDateTimeRangePicker?: { + defaultProps?: ComponentsProps['MuiDesktopDateTimeRangePicker']; + }; + MuiMobileDateTimeRangePicker?: { + defaultProps?: ComponentsProps['MuiMobileDateTimeRangePicker']; + }; } declare module '@mui/material/styles' { diff --git a/packages/x-date-pickers-pro/src/themeAugmentation/overrides.d.ts b/packages/x-date-pickers-pro/src/themeAugmentation/overrides.d.ts index 3b591b3a6c33..8b53b859f7c3 100644 --- a/packages/x-date-pickers-pro/src/themeAugmentation/overrides.d.ts +++ b/packages/x-date-pickers-pro/src/themeAugmentation/overrides.d.ts @@ -2,6 +2,10 @@ import { DateRangePickerDayClassKey } from '../DateRangePickerDay'; import { DateRangeCalendarClassKey } from '../DateRangeCalendar'; import { DateRangePickerToolbarClassKey } from '../DateRangePicker'; import { MultiInputRangeFieldClassKey } from '../models'; +import { + DateTimeRangePickerTabsClassKey, + DateTimeRangePickerToolbarClassKey, +} from '../DateTimeRangePicker'; // prettier-ignore export interface PickersProComponentNameToClassKey { @@ -9,6 +13,9 @@ export interface PickersProComponentNameToClassKey { MuiDateRangePickerDay: DateRangePickerDayClassKey; MuiDateRangePickerToolbar: DateRangePickerToolbarClassKey; + MuiDateTimeRangePickerTabs: DateTimeRangePickerTabsClassKey; + MuiDateTimeRangePickerToolbar: DateTimeRangePickerToolbarClassKey; + // Multi input range fields MuiMultiInputDateRangeField: MultiInputRangeFieldClassKey; MuiMultiInputDateTimeRangeField: MultiInputRangeFieldClassKey; diff --git a/packages/x-date-pickers-pro/src/themeAugmentation/props.d.ts b/packages/x-date-pickers-pro/src/themeAugmentation/props.d.ts index 824c14b972c1..00e1c345620b 100644 --- a/packages/x-date-pickers-pro/src/themeAugmentation/props.d.ts +++ b/packages/x-date-pickers-pro/src/themeAugmentation/props.d.ts @@ -11,11 +11,18 @@ import { MultiInputDateTimeRangeFieldProps } from '../MultiInputDateTimeRangeFie import { MultiInputTimeRangeFieldProps } from '../MultiInputTimeRangeField'; import { SingleInputDateTimeRangeFieldProps } from '../SingleInputDateTimeRangeField'; import { SingleInputTimeRangeFieldProps } from '../SingleInputTimeRangeField'; +import { DateTimeRangePickerProps } from '../DateTimeRangePicker'; +import { DesktopDateTimeRangePickerProps } from '../DesktopDateTimeRangePicker'; +import { MobileDateTimeRangePickerProps } from '../MobileDateTimeRangePicker'; +import { ExportedDateTimeRangePickerTabsProps } from '../DateTimeRangePicker/DateTimeRangePickerTabs'; +import { ExportedDateTimeRangePickerToolbarProps } from '../DateTimeRangePicker/DateTimeRangePickerToolbar'; export interface PickersProComponentsPropsList { MuiDateRangeCalendar: DateRangeCalendarProps; MuiDateRangePickerDay: DateRangePickerDayProps; + MuiDateTimeRangePickerTabs: ExportedDateTimeRangePickerTabsProps; MuiDateRangePickerToolbar: DateRangePickerToolbarProps; + MuiDateTimeRangePickerToolbar: ExportedDateTimeRangePickerToolbarProps; // Multi input range fields MuiMultiInputDateRangeField: MultiInputDateRangeFieldProps; @@ -32,6 +39,11 @@ export interface PickersProComponentsPropsList { MuiDesktopDateRangePicker: DesktopDateRangePickerProps; MuiMobileDateRangePicker: MobileDateRangePickerProps; MuiStaticDateRangePicker: StaticDateRangePickerProps; + + // Date Time Range Pickers + MuiDateTimeRangePicker: DateTimeRangePickerProps; + MuiDesktopDateTimeRangePicker: DesktopDateTimeRangePickerProps; + MuiMobileDateTimeRangePicker: MobileDateTimeRangePickerProps; } declare module '@mui/material/styles' { diff --git a/packages/x-date-pickers-pro/src/themeAugmentation/themeAugmentation.spec.ts b/packages/x-date-pickers-pro/src/themeAugmentation/themeAugmentation.spec.ts index 18bf614ca841..d1a4faf9320a 100644 --- a/packages/x-date-pickers-pro/src/themeAugmentation/themeAugmentation.spec.ts +++ b/packages/x-date-pickers-pro/src/themeAugmentation/themeAugmentation.spec.ts @@ -5,6 +5,10 @@ import { dateRangePickerDayClasses } from '../DateRangePickerDay'; import { multiInputDateRangeFieldClasses } from '../MultiInputDateRangeField'; import { multiInputDateTimeRangeFieldClasses } from '../MultiInputDateTimeRangeField'; import { multiInputTimeRangeFieldClasses } from '../MultiInputTimeRangeField'; +import { + dateTimeRangePickerTabsClasses, + dateTimeRangePickerToolbarClasses, +} from '../DateTimeRangePicker'; createTheme({ components: { @@ -27,6 +31,7 @@ createTheme({ }, }, }, + MuiDateRangePickerDay: { defaultProps: { color: 'red', @@ -46,6 +51,27 @@ createTheme({ }, }, }, + + MuiDateTimeRangePickerTabs: { + defaultProps: { + className: 'empty', + // @ts-expect-error invalid MuiDateTimeRangePickerTabs prop + someRandomProp: true, + }, + styleOverrides: { + root: { + backgroundColor: 'red', + [`.${dateTimeRangePickerTabsClasses.filler}`]: { + backgroundColor: 'green', + }, + }, + // @ts-expect-error invalid MuiDateTimeRangePickerTabs class key + content: { + backgroundColor: 'blue', + }, + }, + }, + MuiDateRangePickerToolbar: { defaultProps: { toolbarPlaceholder: 'empty', @@ -66,6 +92,26 @@ createTheme({ }, }, + MuiDateTimeRangePickerToolbar: { + defaultProps: { + toolbarPlaceholder: 'empty', + // @ts-expect-error invalid MuiDateTimeRangePickerToolbar prop + someRandomProp: true, + }, + styleOverrides: { + root: { + backgroundColor: 'red', + [`.${dateTimeRangePickerToolbarClasses.startToolbar}`]: { + backgroundColor: 'green', + }, + }, + // @ts-expect-error invalid MuiDateTimeRangePickerToolbar class key + content: { + backgroundColor: 'blue', + }, + }, + }, + // Multi input range fields MuiMultiInputDateRangeField: { defaultProps: { @@ -86,6 +132,7 @@ createTheme({ }, }, }, + MuiMultiInputDateTimeRangeField: { defaultProps: { disabled: true, @@ -105,6 +152,7 @@ createTheme({ }, }, }, + MuiMultiInputTimeRangeField: { defaultProps: { disabled: true, @@ -133,6 +181,7 @@ createTheme({ someRandomProp: true, }, }, + MuiSingleInputDateTimeRangeField: { defaultProps: { disabled: true, @@ -140,6 +189,7 @@ createTheme({ someRandomProp: true, }, }, + MuiSingleInputTimeRangeField: { defaultProps: { disabled: true, @@ -156,6 +206,7 @@ createTheme({ someRandomProp: true, }, }, + MuiDesktopDateRangePicker: { defaultProps: { open: true, @@ -163,6 +214,7 @@ createTheme({ someRandomProp: true, }, }, + MuiMobileDateRangePicker: { defaultProps: { open: true, @@ -170,6 +222,7 @@ createTheme({ someRandomProp: true, }, }, + MuiStaticDateRangePicker: { defaultProps: { disabled: true, @@ -177,5 +230,30 @@ createTheme({ someRandomProp: true, }, }, + + // Date Time Range Pickers + MuiDateTimeRangePicker: { + defaultProps: { + open: true, + // @ts-expect-error invalid MuiDateTimeRangePicker prop + someRandomProp: true, + }, + }, + + MuiDesktopDateTimeRangePicker: { + defaultProps: { + open: true, + // @ts-expect-error invalid MuiDesktopDateTimeRangePicker prop + someRandomProp: true, + }, + }, + + MuiMobileDateTimeRangePicker: { + defaultProps: { + open: true, + // @ts-expect-error invalid MuiMobileDateTimeRangePicker prop + someRandomProp: true, + }, + }, }, }); diff --git a/packages/x-date-pickers/package.json b/packages/x-date-pickers/package.json index 9db484e80502..66513995ed30 100644 --- a/packages/x-date-pickers/package.json +++ b/packages/x-date-pickers/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-date-pickers", - "version": "7.0.0-alpha.9", + "version": "7.0.0-beta.0", "description": "The community edition of the date picker components (MUI X).", "author": "MUI Team", "main": "src/index.ts", @@ -45,10 +45,10 @@ "directory": "packages/x-date-pickers" }, "dependencies": { - "@babel/runtime": "^7.23.8", - "@mui/base": "^5.0.0-beta.32", - "@mui/system": "^5.15.5", - "@mui/utils": "^5.15.5", + "@babel/runtime": "^7.23.9", + "@mui/base": "^5.0.0-beta.33", + "@mui/system": "^5.15.6", + "@mui/utils": "^5.15.6", "@types/react-transition-group": "^4.4.10", "clsx": "^2.1.0", "prop-types": "^15.8.1", diff --git a/packages/x-date-pickers/src/DateTimePicker/DateTimePickerTabs.tsx b/packages/x-date-pickers/src/DateTimePicker/DateTimePickerTabs.tsx index 538a8fa83ad0..1fd7f5ffc01f 100644 --- a/packages/x-date-pickers/src/DateTimePicker/DateTimePickerTabs.tsx +++ b/packages/x-date-pickers/src/DateTimePicker/DateTimePickerTabs.tsx @@ -159,7 +159,7 @@ DateTimePickerTabs.propTypes = { */ hidden: PropTypes.bool, /** - * Callback called when a tab is clicked + * Callback called when a tab is clicked. * @template TView * @param {TView} view The view to open */ diff --git a/packages/x-date-pickers/src/TimePicker/timePickerToolbarClasses.ts b/packages/x-date-pickers/src/TimePicker/timePickerToolbarClasses.ts index 37a3df11323b..b6f223b53b0a 100644 --- a/packages/x-date-pickers/src/TimePicker/timePickerToolbarClasses.ts +++ b/packages/x-date-pickers/src/TimePicker/timePickerToolbarClasses.ts @@ -4,13 +4,21 @@ import { } from '@mui/utils'; export interface TimePickerToolbarClasses { + /** Styles applied to the root element. */ root: string; + /** Styles applied to the separator element. */ separator: string; + /** Styles applied to the time sections element. */ hourMinuteLabel: string; + /** Styles applied to the time sections element in landscape mode. */ hourMinuteLabelLandscape: string; + /** Styles applied to the time sections element in "rtl" theme mode. */ hourMinuteLabelReverse: string; + /** Styles applied to the meridiem selection element. */ ampmSelection: string; + /** Styles applied to the meridiem selection element in landscape mode. */ ampmLandscape: string; + /** Styles applied to the meridiem label element. */ ampmLabel: string; } diff --git a/packages/x-date-pickers/src/internals/models/props/tabs.ts b/packages/x-date-pickers/src/internals/models/props/tabs.ts index 3ff1edc627af..cb9e46e65b18 100644 --- a/packages/x-date-pickers/src/internals/models/props/tabs.ts +++ b/packages/x-date-pickers/src/internals/models/props/tabs.ts @@ -6,12 +6,13 @@ export interface BaseTabsProps { */ view: TView; /** - * Callback called when a tab is clicked + * Callback called when a tab is clicked. * @template TView * @param {TView} view The view to open */ onViewChange: (view: TView) => void; - className?: string; } -export interface ExportedBaseTabsProps {} +export interface ExportedBaseTabsProps { + className?: string; +} diff --git a/packages/x-license-pro/package.json b/packages/x-license-pro/package.json index f9a4fc044b69..239c2994cc85 100644 --- a/packages/x-license-pro/package.json +++ b/packages/x-license-pro/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-license-pro", - "version": "7.0.0-alpha.9", + "version": "7.0.0-beta.0", "description": "MUI X License verification", "author": "MUI Team", "main": "src/index.ts", @@ -35,8 +35,8 @@ "directory": "packages/x-license-pro" }, "dependencies": { - "@babel/runtime": "^7.23.8", - "@mui/utils": "^5.15.5" + "@babel/runtime": "^7.23.9", + "@mui/utils": "^5.15.6" }, "peerDependencies": { "react": "^17.0.0 || ^18.0.0" diff --git a/packages/x-tree-view/package.json b/packages/x-tree-view/package.json index 2e27d2962afa..1cf6e981ef44 100644 --- a/packages/x-tree-view/package.json +++ b/packages/x-tree-view/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-tree-view", - "version": "7.0.0-alpha.9", + "version": "7.0.0-beta.0", "description": "The community edition of the tree view components (MUI X).", "author": "MUI Team", "main": "src/index.ts", @@ -43,10 +43,10 @@ "directory": "packages/x-tree-view" }, "dependencies": { - "@babel/runtime": "^7.23.8", - "@mui/base": "^5.0.0-beta.32", - "@mui/system": "^5.15.5", - "@mui/utils": "^5.15.5", + "@babel/runtime": "^7.23.9", + "@mui/base": "^5.0.0-beta.33", + "@mui/system": "^5.15.6", + "@mui/utils": "^5.15.6", "@types/react-transition-group": "^4.4.10", "clsx": "^2.1.0", "prop-types": "^15.8.1", diff --git a/scripts/x-charts.exports.json b/scripts/x-charts.exports.json index 46daf646da99..49a150ddaa4b 100644 --- a/scripts/x-charts.exports.json +++ b/scripts/x-charts.exports.json @@ -3,12 +3,19 @@ { "name": "AnchorPosition", "kind": "TypeAlias" }, { "name": "AnchorX", "kind": "TypeAlias" }, { "name": "AnchorY", "kind": "TypeAlias" }, + { "name": "AnimatedArea", "kind": "Function" }, + { "name": "AnimatedAreaProps", "kind": "Interface" }, + { "name": "AnimatedLine", "kind": "Function" }, + { "name": "AnimatedLineProps", "kind": "Interface" }, { "name": "AreaElement", "kind": "Function" }, { "name": "areaElementClasses", "kind": "Variable" }, { "name": "AreaElementClasses", "kind": "Interface" }, { "name": "AreaElementClassKey", "kind": "TypeAlias" }, + { "name": "AreaElementOwnerState", "kind": "Interface" }, { "name": "AreaElementPath", "kind": "Variable" }, - { "name": "AreaElementProps", "kind": "TypeAlias" }, + { "name": "AreaElementProps", "kind": "Interface" }, + { "name": "AreaElementSlotProps", "kind": "Interface" }, + { "name": "AreaElementSlots", "kind": "Interface" }, { "name": "AreaPlot", "kind": "Function" }, { "name": "AreaPlotProps", "kind": "Interface" }, { "name": "AreaPlotSlotProps", "kind": "Interface" }, @@ -137,8 +144,11 @@ { "name": "lineElementClasses", "kind": "Variable" }, { "name": "LineElementClasses", "kind": "Interface" }, { "name": "LineElementClassKey", "kind": "TypeAlias" }, + { "name": "LineElementOwnerState", "kind": "Interface" }, { "name": "LineElementPath", "kind": "Variable" }, - { "name": "LineElementProps", "kind": "TypeAlias" }, + { "name": "LineElementProps", "kind": "Interface" }, + { "name": "LineElementSlotProps", "kind": "Interface" }, + { "name": "LineElementSlots", "kind": "Interface" }, { "name": "LineHighlightElement", "kind": "Function" }, { "name": "lineHighlightElementClasses", "kind": "Variable" }, { "name": "LineHighlightElementClasses", "kind": "Interface" }, diff --git a/yarn.lock b/yarn.lock index ad0dc28e7cc8..3db928c8d825 100644 --- a/yarn.lock +++ b/yarn.lock @@ -146,10 +146,10 @@ "@jridgewell/gen-mapping" "^0.3.0" "@jridgewell/trace-mapping" "^0.3.9" -"@argos-ci/core@^1.4.1": - version "1.4.1" - resolved "https://registry.yarnpkg.com/@argos-ci/core/-/core-1.4.1.tgz#4f7a74d7b0d88c24d86ec13ac7b9cc659824db46" - integrity sha512-1TEVPIP8hYIDuDF0Z19Nq/NKSI6Jypb2GojD2n88pe2oIzVimK9Z5MXy0wyFxqBr9NUrmMfolZDtOz1apWtbaw== +"@argos-ci/core@^1.5.1": + version "1.5.1" + resolved "https://registry.yarnpkg.com/@argos-ci/core/-/core-1.5.1.tgz#3ea5bba8fe878df26fc337034d8272cae785ebd5" + integrity sha512-CoCe81ee+eQpah3CRi+Uxv9KAUjnfHWYFHZ3bGz0aUC/p9UkCPFKOEHvakO1W2hjx2Nj1bj6QOSod87Vavty+g== dependencies: "@argos-ci/util" "1.2.0" axios "^1.5.0" @@ -164,10 +164,10 @@ resolved "https://registry.yarnpkg.com/@argos-ci/util/-/util-1.2.0.tgz#b50014b611ca11a7063530f5193d1ede60ac29bb" integrity sha512-e/sAEECDzUr02v5sXPcd1Ky3WqNOMDWkutfBC8RBizj3Z+CUp6uwV+bzyTZaE9Zms9WekqXAfKe1rZkEie+DrA== -"@babel/cli@^7.23.4": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/cli/-/cli-7.23.4.tgz#f5cc90487278065fa0c3b1267cf0c1d44ddf85a7" - integrity sha512-j3luA9xGKCXVyCa5R7lJvOMM+Kc2JEnAEIgz2ggtjQ/j5YUVgfsg/WsG95bbsgq7YLHuiCOzMnoSasuY16qiCw== +"@babel/cli@^7.23.9": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/cli/-/cli-7.23.9.tgz#06b3e76376ee53f14ac8ac422c884950c69e1b9e" + integrity sha512-vB1UXmGDNEhcf1jNAHKT9IlYk1R+hehVTLFlCLHBi8gfuHQGP6uRjgXVYU0EVlI/qwAWpstqkBdf2aez3/z/5Q== dependencies: "@jridgewell/trace-mapping" "^0.3.17" commander "^4.0.1" @@ -180,7 +180,7 @@ "@nicolo-ribaudo/chokidar-2" "2.1.8-no-fsevents.3" chokidar "^3.4.0" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.22.13", "@babel/code-frame@^7.23.5": +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.23.5": version "7.23.5" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.23.5.tgz#9009b69a8c602293476ad598ff53e4562e15c244" integrity sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA== @@ -193,21 +193,21 @@ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.23.5.tgz#ffb878728bb6bdcb6f4510aa51b1be9afb8cfd98" integrity sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw== -"@babel/core@^7.11.1", "@babel/core@^7.12.3", "@babel/core@^7.13.16", "@babel/core@^7.23.7", "@babel/core@^7.7.5": - version "7.23.7" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.7.tgz#4d8016e06a14b5f92530a13ed0561730b5c6483f" - integrity sha512-+UpDgowcmqe36d4NwqvKsyPMlOLNGMsfMmQ5WGCu+siCe3t3dfe9njrzGfdN4qq+bcNUt0+Vw6haRxBOycs4dw== +"@babel/core@^7.11.1", "@babel/core@^7.12.3", "@babel/core@^7.13.16", "@babel/core@^7.23.9", "@babel/core@^7.7.5": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.9.tgz#b028820718000f267870822fec434820e9b1e4d1" + integrity sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw== dependencies: "@ampproject/remapping" "^2.2.0" "@babel/code-frame" "^7.23.5" "@babel/generator" "^7.23.6" "@babel/helper-compilation-targets" "^7.23.6" "@babel/helper-module-transforms" "^7.23.3" - "@babel/helpers" "^7.23.7" - "@babel/parser" "^7.23.6" - "@babel/template" "^7.22.15" - "@babel/traverse" "^7.23.7" - "@babel/types" "^7.23.6" + "@babel/helpers" "^7.23.9" + "@babel/parser" "^7.23.9" + "@babel/template" "^7.23.9" + "@babel/traverse" "^7.23.9" + "@babel/types" "^7.23.9" convert-source-map "^2.0.0" debug "^4.1.0" gensync "^1.0.0-beta.2" @@ -250,9 +250,9 @@ semver "^6.3.1" "@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.21.0", "@babel/helper-create-class-features-plugin@^7.22.15", "@babel/helper-create-class-features-plugin@^7.23.6": - version "7.23.7" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.7.tgz#b2e6826e0e20d337143655198b79d58fdc9bd43d" - integrity sha512-xCoqR/8+BoNnXOY7RVSgv6X+o7pmT5q1d+gGcRlXYkI+9B31glE4jeejhKVpA04O1AtzOt7OSQ6VYKP5FcRl9g== + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.9.tgz#fddfdf51fca28f23d16b9e3935a4732690acfad6" + integrity sha512-B2L9neXTIyPQoXDm+NtovPvG6VOLWnaXu3BIeVDWwdKFgG30oNa6CqVGiJPDWQwIAK49t9gnQI9c6K6RzabiKw== dependencies: "@babel/helper-annotate-as-pure" "^7.22.5" "@babel/helper-environment-visitor" "^7.22.20" @@ -273,10 +273,10 @@ regexpu-core "^5.3.1" semver "^6.3.1" -"@babel/helper-define-polyfill-provider@^0.4.4": - version "0.4.4" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.4.tgz#64df615451cb30e94b59a9696022cffac9a10088" - integrity sha512-QcJMILQCu2jm5TFPGA3lCpJJTeEP+mqeXooG/NZbg/h5FTFi6V0+99ahlRsW8/kRLyb24LZVCCiclDedhLKcBA== +"@babel/helper-define-polyfill-provider@^0.5.0": + version "0.5.0" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.5.0.tgz#465805b7361f461e86c680f1de21eaf88c25901b" + integrity sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q== dependencies: "@babel/helper-compilation-targets" "^7.22.6" "@babel/helper-plugin-utils" "^7.22.5" @@ -404,14 +404,14 @@ "@babel/template" "^7.22.15" "@babel/types" "^7.22.19" -"@babel/helpers@^7.23.7": - version "7.23.8" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.23.8.tgz#fc6b2d65b16847fd50adddbd4232c76378959e34" - integrity sha512-KDqYz4PiOWvDFrdHLPhKtCThtIcKVy6avWD2oG4GEvyQ+XDZwHD4YQd+H2vNMnq2rkdxsDkU82T+Vk8U/WXHRQ== +"@babel/helpers@^7.23.9": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.23.9.tgz#c3e20bbe7f7a7e10cb9b178384b4affdf5995c7d" + integrity sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ== dependencies: - "@babel/template" "^7.22.15" - "@babel/traverse" "^7.23.7" - "@babel/types" "^7.23.6" + "@babel/template" "^7.23.9" + "@babel/traverse" "^7.23.9" + "@babel/types" "^7.23.9" "@babel/highlight@^7.23.4": version "7.23.4" @@ -422,22 +422,22 @@ chalk "^2.4.2" js-tokens "^4.0.0" -"@babel/node@^7.22.19": - version "7.22.19" - resolved "https://registry.yarnpkg.com/@babel/node/-/node-7.22.19.tgz#d0bd1e84e3d45eb2eeb68046d6dc22161786222b" - integrity sha512-VsKSO9aEHdO16NdtqkJfrXZ9Sxlna1BVnBbToWr1KGdI3cyIk6KqOoa8mWvpK280lJDOwJqxvnl994KmLhq1Yw== +"@babel/node@^7.23.9": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/node/-/node-7.23.9.tgz#fc40dc371439f1a45535ebf515232f4f046ef7a9" + integrity sha512-/d4ju/POwlGIJlZ+NqWH1qu61wt6ZlTZZZutrK2MOSdaH1JCh726nLw/GSvAjG+LTY6CO9SsB8uWcttnFKm6yg== dependencies: - "@babel/register" "^7.22.15" + "@babel/register" "^7.23.7" commander "^4.0.1" core-js "^3.30.2" node-environment-flags "^1.0.5" regenerator-runtime "^0.14.0" v8flags "^3.1.1" -"@babel/parser@^7.1.0", "@babel/parser@^7.13.16", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.22.15", "@babel/parser@^7.23.6": - version "7.23.6" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.6.tgz#ba1c9e512bda72a47e285ae42aff9d2a635a9e3b" - integrity sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ== +"@babel/parser@^7.1.0", "@babel/parser@^7.13.16", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.9.tgz#7b903b6149b0f8fa7ad564af646c4c38a77fc44b" + integrity sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA== "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.23.3": version "7.23.3" @@ -677,10 +677,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-async-generator-functions@^7.23.7": - version "7.23.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.7.tgz#3aa0b4f2fa3788b5226ef9346cf6d16ec61f99cd" - integrity sha512-PdxEpL71bJp1byMG0va5gwQcXHxuEYC/BgI/e88mGTtohbZN28O5Yit0Plkkm/dBzCF/BxmbNcses1RH1T+urA== +"@babel/plugin-transform-async-generator-functions@^7.23.9": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.9.tgz#9adaeb66fc9634a586c5df139c6240d41ed801ce" + integrity sha512-8Q3veQEDGe14dTYuwagbRtwxQDnytyg1JFu4/HwEMETeofocrB0U0ejBJIXoeG/t2oXZ8kzCyI0ZZfbT80VFNQ== dependencies: "@babel/helper-environment-visitor" "^7.22.20" "@babel/helper-plugin-utils" "^7.22.5" @@ -867,10 +867,10 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-simple-access" "^7.22.5" -"@babel/plugin-transform-modules-systemjs@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.3.tgz#fa7e62248931cb15b9404f8052581c302dd9de81" - integrity sha512-ZxyKGTkF9xT9YJuKQRo19ewf3pXpopuYQd8cDXqNzc3mUNbOME0RKMoZxviQk74hwzfQsEe66dE92MaZbdHKNQ== +"@babel/plugin-transform-modules-systemjs@^7.23.9": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.9.tgz#105d3ed46e4a21d257f83a2f9e2ee4203ceda6be" + integrity sha512-KDlPRM6sLo4o1FkiSlXoAa8edLXFsKKIda779fbLrvmeuc3itnjCtaO6RrtoaANsIJANj+Vk1zqbZIMhkCAHVw== dependencies: "@babel/helper-hoist-variables" "^7.22.5" "@babel/helper-module-transforms" "^7.23.3" @@ -1046,16 +1046,16 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-runtime@^7.23.7": - version "7.23.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.23.7.tgz#52bbd20054855beb9deae3bee9ceb05289c343e6" - integrity sha512-fa0hnfmiXc9fq/weK34MUV0drz2pOL/vfKWvN7Qw127hiUPabFCUMgAbYWcchRzMJit4o5ARsK/s+5h0249pLw== +"@babel/plugin-transform-runtime@^7.23.9": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.23.9.tgz#2c64d0680fc8e09e1dfe8fd5c646fe72abd82004" + integrity sha512-A7clW3a0aSjm3ONU9o2HAILSegJCYlEZmOhmBRReVtIpY/Z/p7yIZ+wR41Z+UipwdGuqwtID/V/dOdZXjwi9gQ== dependencies: "@babel/helper-module-imports" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" - babel-plugin-polyfill-corejs2 "^0.4.7" - babel-plugin-polyfill-corejs3 "^0.8.7" - babel-plugin-polyfill-regenerator "^0.5.4" + babel-plugin-polyfill-corejs2 "^0.4.8" + babel-plugin-polyfill-corejs3 "^0.9.0" + babel-plugin-polyfill-regenerator "^0.5.5" semver "^6.3.1" "@babel/plugin-transform-shorthand-properties@^7.23.3": @@ -1135,10 +1135,10 @@ "@babel/helper-create-regexp-features-plugin" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/preset-env@^7.23.8": - version "7.23.8" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.23.8.tgz#7d6f8171ea7c221ecd28059e65ad37c20e441e3e" - integrity sha512-lFlpmkApLkEP6woIKprO6DO60RImpatTQKtz4sUcDjVcK8M8mQ4sZsuxaTMNOZf0sqAq/ReYW1ZBHnOQwKpLWA== +"@babel/preset-env@^7.23.9": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.23.9.tgz#beace3b7994560ed6bf78e4ae2073dff45387669" + integrity sha512-3kBGTNBBk9DQiPoXYS0g0BYlwTQYUTifqgKTjxUwEUkduRT2QOa0FPGBJ+NROQhGyYO5BuTJwGvBnqKDykac6A== dependencies: "@babel/compat-data" "^7.23.5" "@babel/helper-compilation-targets" "^7.23.6" @@ -1167,7 +1167,7 @@ "@babel/plugin-syntax-top-level-await" "^7.14.5" "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" "@babel/plugin-transform-arrow-functions" "^7.23.3" - "@babel/plugin-transform-async-generator-functions" "^7.23.7" + "@babel/plugin-transform-async-generator-functions" "^7.23.9" "@babel/plugin-transform-async-to-generator" "^7.23.3" "@babel/plugin-transform-block-scoped-functions" "^7.23.3" "@babel/plugin-transform-block-scoping" "^7.23.4" @@ -1189,7 +1189,7 @@ "@babel/plugin-transform-member-expression-literals" "^7.23.3" "@babel/plugin-transform-modules-amd" "^7.23.3" "@babel/plugin-transform-modules-commonjs" "^7.23.3" - "@babel/plugin-transform-modules-systemjs" "^7.23.3" + "@babel/plugin-transform-modules-systemjs" "^7.23.9" "@babel/plugin-transform-modules-umd" "^7.23.3" "@babel/plugin-transform-named-capturing-groups-regex" "^7.22.5" "@babel/plugin-transform-new-target" "^7.23.3" @@ -1215,9 +1215,9 @@ "@babel/plugin-transform-unicode-regex" "^7.23.3" "@babel/plugin-transform-unicode-sets-regex" "^7.23.3" "@babel/preset-modules" "0.1.6-no-external-plugins" - babel-plugin-polyfill-corejs2 "^0.4.7" - babel-plugin-polyfill-corejs3 "^0.8.7" - babel-plugin-polyfill-regenerator "^0.5.4" + babel-plugin-polyfill-corejs2 "^0.4.8" + babel-plugin-polyfill-corejs3 "^0.9.0" + babel-plugin-polyfill-regenerator "^0.5.5" core-js-compat "^3.31.0" semver "^6.3.1" @@ -1262,7 +1262,7 @@ "@babel/plugin-transform-modules-commonjs" "^7.23.3" "@babel/plugin-transform-typescript" "^7.23.3" -"@babel/register@^7.13.16", "@babel/register@^7.22.15", "@babel/register@^7.23.7": +"@babel/register@^7.13.16", "@babel/register@^7.23.7": version "7.23.7" resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.23.7.tgz#485a5e7951939d21304cae4af1719fdb887bc038" integrity sha512-EjJeB6+kvpk+Y5DAkEAmbOBEFkh9OASx0huoEkqYTFxAZHzOAX2Oh5uwAUuL2rUddqfM0SA+KPXV2TbzoZ2kvQ== @@ -1278,34 +1278,34 @@ resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== -"@babel/runtime-corejs2@^7.23.8": - version "7.23.8" - resolved "https://registry.yarnpkg.com/@babel/runtime-corejs2/-/runtime-corejs2-7.23.8.tgz#fe322afe31a8edffb38cb9f8f8993c264ba3b8ed" - integrity sha512-U7JI0Qne1eSenXriL+BynbS4GyJE5nwGW/L72RnqOPJ+lgAZvEHS/jHtfU001R8NxD0Y/fqWKrHBoSBg8g2Vqw== +"@babel/runtime-corejs2@^7.23.9": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs2/-/runtime-corejs2-7.23.9.tgz#4d0271da21aa67093786301a4627defed8fce56b" + integrity sha512-lwwDy5QfMkO2rmSz9AvLj6j2kWt5a4ulMi1t21vWQEO0kNCFslHoszat8reU/uigIQSUDF31zraZG/qMkcqAlw== dependencies: core-js "^2.6.12" regenerator-runtime "^0.14.0" -"@babel/runtime@^7.1.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.18.3", "@babel/runtime@^7.21.0", "@babel/runtime@^7.23.2", "@babel/runtime@^7.23.8", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7": - version "7.23.8" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.8.tgz#8ee6fe1ac47add7122902f257b8ddf55c898f650" - integrity sha512-Y7KbAP984rn1VGMbGqKmBLio9V7y5Je9GvU4rQPCPinCyNfUcToxIXl06d59URp/F3LwinvODxab5N/G6qggkw== +"@babel/runtime@^7.1.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.18.3", "@babel/runtime@^7.21.0", "@babel/runtime@^7.23.2", "@babel/runtime@^7.23.8", "@babel/runtime@^7.23.9", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.9.tgz#47791a15e4603bb5f905bc0753801cf21d6345f7" + integrity sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw== dependencies: regenerator-runtime "^0.14.0" -"@babel/template@^7.22.15", "@babel/template@^7.6.0": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.15.tgz#09576efc3830f0430f4548ef971dde1350ef2f38" - integrity sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w== +"@babel/template@^7.22.15", "@babel/template@^7.23.9", "@babel/template@^7.6.0": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.23.9.tgz#f881d0487cba2828d3259dcb9ef5005a9731011a" + integrity sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA== dependencies: - "@babel/code-frame" "^7.22.13" - "@babel/parser" "^7.22.15" - "@babel/types" "^7.22.15" + "@babel/code-frame" "^7.23.5" + "@babel/parser" "^7.23.9" + "@babel/types" "^7.23.9" -"@babel/traverse@^7.1.6", "@babel/traverse@^7.23.7", "@babel/traverse@^7.4.5": - version "7.23.7" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.7.tgz#9a7bf285c928cb99b5ead19c3b1ce5b310c9c305" - integrity sha512-tY3mM8rH9jM0YHFGyfC0/xf+SB5eKUu7HPj7/k3fpi9dAlsMc5YbQvDi0Sh2QTPXqMhyaAtzAr807TIyfQrmyg== +"@babel/traverse@^7.1.6", "@babel/traverse@^7.23.9", "@babel/traverse@^7.4.5": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.9.tgz#2f9d6aead6b564669394c5ce0f9302bb65b9d950" + integrity sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg== dependencies: "@babel/code-frame" "^7.23.5" "@babel/generator" "^7.23.6" @@ -1313,15 +1313,15 @@ "@babel/helper-function-name" "^7.23.0" "@babel/helper-hoist-variables" "^7.22.5" "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/parser" "^7.23.6" - "@babel/types" "^7.23.6" + "@babel/parser" "^7.23.9" + "@babel/types" "^7.23.9" debug "^4.3.1" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.11.0", "@babel/types@^7.2.0", "@babel/types@^7.20.7", "@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.4", "@babel/types@^7.23.6", "@babel/types@^7.4.4", "@babel/types@^7.6.1": - version "7.23.6" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.6.tgz#be33fdb151e1f5a56877d704492c240fc71c7ccd" - integrity sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg== +"@babel/types@^7.0.0", "@babel/types@^7.11.0", "@babel/types@^7.2.0", "@babel/types@^7.20.7", "@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.4", "@babel/types@^7.23.6", "@babel/types@^7.23.9", "@babel/types@^7.4.4", "@babel/types@^7.6.1": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.9.tgz#1dd7b59a9a2b5c87f8b41e52770b5ecbf492e002" + integrity sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q== dependencies: "@babel/helper-string-parser" "^7.23.4" "@babel/helper-validator-identifier" "^7.22.20" @@ -1545,29 +1545,29 @@ lodash.isundefined "^3.0.1" lodash.uniq "^4.5.0" -"@floating-ui/core@^1.5.3": - version "1.5.3" - resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.5.3.tgz#b6aa0827708d70971c8679a16cf680a515b8a52a" - integrity sha512-O0WKDOo0yhJuugCx6trZQj5jVJ9yR0ystG2JaNAemYUWce+pmM6WUEFIibnWyEJKdrDxhm75NoSRME35FNaM/Q== +"@floating-ui/core@^1.6.0": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.6.0.tgz#fa41b87812a16bf123122bf945946bae3fdf7fc1" + integrity sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g== dependencies: - "@floating-ui/utils" "^0.2.0" + "@floating-ui/utils" "^0.2.1" -"@floating-ui/dom@^1.5.4": - version "1.5.4" - resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.5.4.tgz#28df1e1cb373884224a463235c218dcbd81a16bb" - integrity sha512-jByEsHIY+eEdCjnTVu+E3ephzTOzkQ8hgUfGwos+bg7NlH33Zc5uO+QHz1mrQUOgIKKDD1RtS201P9NvAfq3XQ== +"@floating-ui/dom@^1.6.1": + version "1.6.1" + resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.6.1.tgz#d552e8444f77f2d88534372369b3771dc3a2fa5d" + integrity sha512-iA8qE43/H5iGozC3W0YSnVSW42Vh522yyM1gj+BqRwVsTNOyr231PsXDaV04yT39PsO0QL2QpbI/M0ZaLUQgRQ== dependencies: - "@floating-ui/core" "^1.5.3" - "@floating-ui/utils" "^0.2.0" + "@floating-ui/core" "^1.6.0" + "@floating-ui/utils" "^0.2.1" -"@floating-ui/react-dom@^2.0.5": - version "2.0.6" - resolved "https://registry.yarnpkg.com/@floating-ui/react-dom/-/react-dom-2.0.6.tgz#5ffcf40b6550817a973b54cdd443374f51ca7a5c" - integrity sha512-IB8aCRFxr8nFkdYZgH+Otd9EVQPJoynxeFRGTB8voPoZMRWo8XjYuCRgpI1btvuKY69XMiLnW+ym7zoBHM90Rw== +"@floating-ui/react-dom@^2.0.6": + version "2.0.8" + resolved "https://registry.yarnpkg.com/@floating-ui/react-dom/-/react-dom-2.0.8.tgz#afc24f9756d1b433e1fe0d047c24bd4d9cefaa5d" + integrity sha512-HOdqOt3R3OGeTKidaLvJKcgg75S6tibQ3Tif4eyd91QnIJWr0NLvoXFpJA/j8HqkFSL68GDca9AuyWEHlhyClw== dependencies: - "@floating-ui/dom" "^1.5.4" + "@floating-ui/dom" "^1.6.1" -"@floating-ui/utils@^0.2.0": +"@floating-ui/utils@^0.2.1": version "0.2.1" resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.1.tgz#16308cea045f0fc777b6ff20a9f25474dd8293d2" integrity sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q== @@ -1612,12 +1612,12 @@ googleapis-common "^7.0.0" "@humanwhocodes/config-array@^0.11.13": - version "0.11.13" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.13.tgz#075dc9684f40a531d9b26b0822153c1e832ee297" - integrity sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ== + version "0.11.14" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b" + integrity sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg== dependencies: - "@humanwhocodes/object-schema" "^2.0.1" - debug "^4.1.1" + "@humanwhocodes/object-schema" "^2.0.2" + debug "^4.3.1" minimatch "^3.0.5" "@humanwhocodes/module-importer@^1.0.1": @@ -1625,10 +1625,10 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== -"@humanwhocodes/object-schema@^2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz#e5211452df060fa8522b55c7b3c0c4d1981cb044" - integrity sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw== +"@humanwhocodes/object-schema@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz#d9fae00a2d5cb40f92cfe64b47ad749fbc38f917" + integrity sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw== "@hutson/parse-repository-url@^3.0.0": version "3.0.2" @@ -1658,10 +1658,10 @@ js-yaml "^3.13.1" resolve-from "^5.0.0" -"@istanbuljs/schema@^0.1.2": - version "0.1.2" - resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd" - integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw== +"@istanbuljs/schema@^0.1.2", "@istanbuljs/schema@^0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" + integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== "@jest/schemas@^29.6.3": version "29.6.3" @@ -1702,10 +1702,10 @@ resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== -"@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.20", "@jridgewell/trace-mapping@^0.3.9": - version "0.3.20" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz#72e45707cf240fa6b081d0366f8265b0cd10197f" - integrity sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q== +"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.20", "@jridgewell/trace-mapping@^0.3.9": + version "0.3.22" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.22.tgz#72a621e5de59f5f1ef792d0793a82ee20f645e4c" + integrity sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw== dependencies: "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" @@ -1796,69 +1796,69 @@ react-test-renderer "^18.0.0" semver "^5.7.0" -"@mui/base@5.0.0-beta.32", "@mui/base@^5.0.0-beta.32": - version "5.0.0-beta.32" - resolved "https://registry.yarnpkg.com/@mui/base/-/base-5.0.0-beta.32.tgz#cdda6c68389f0b8b39a5bff7ed16e40788aed510" - integrity sha512-4VptvYeLUYMJhZapWBkD50GmKfOc0XT381KJcTK3ncZYIl8MdBhpR6l8jOyeP5cixUPBJhstjrnmQEAHjCLriw== +"@mui/base@5.0.0-beta.33", "@mui/base@^5.0.0-beta.33": + version "5.0.0-beta.33" + resolved "https://registry.yarnpkg.com/@mui/base/-/base-5.0.0-beta.33.tgz#fbb844e2d840d47dd7a48850a03152aed2381d10" + integrity sha512-WcSpoJUw/UYHXpvgtl4HyMar2Ar97illUpqiS/X1gtSBp6sdDW6kB2BJ9OlVQ+Kk/RL2GDp/WHA9sbjAYV35ow== dependencies: "@babel/runtime" "^7.23.8" - "@floating-ui/react-dom" "^2.0.5" + "@floating-ui/react-dom" "^2.0.6" "@mui/types" "^7.2.13" - "@mui/utils" "^5.15.5" + "@mui/utils" "^5.15.6" "@popperjs/core" "^2.11.8" clsx "^2.1.0" prop-types "^15.8.1" -"@mui/core-downloads-tracker@^5.15.5": - version "5.15.5" - resolved "https://registry.yarnpkg.com/@mui/core-downloads-tracker/-/core-downloads-tracker-5.15.5.tgz#e8e060133ea0e92b1c0e30c441522cab37d0be79" - integrity sha512-VhT8klyXy8GrWrARqLMoM6Nzz809Jc3Wn5wd7WOZfre2vFO1rBV1dBANAPBhBqpaQI0HCMRTWEYoSyOFgRnz4A== +"@mui/core-downloads-tracker@^5.15.6": + version "5.15.6" + resolved "https://registry.yarnpkg.com/@mui/core-downloads-tracker/-/core-downloads-tracker-5.15.6.tgz#9b82ba86d5a0fe55e9479b68dd5068943cc3835b" + integrity sha512-0aoWS4qvk1uzm9JBs83oQmIMIQeTBUeqqu8u+3uo2tMznrB5fIKqQVCbCgq+4Tm4jG+5F7dIvnjvQ2aV7UKtdw== -"@mui/icons-material@^5.15.5": - version "5.15.5" - resolved "https://registry.yarnpkg.com/@mui/icons-material/-/icons-material-5.15.5.tgz#2a2abeadcc5cc6acdfc1d002c252b43a22edff18" - integrity sha512-qiql0fd1JY7TZ1wm1RldvU7sL8QUatE9OC12i/qm5rnm/caTFyAfOyTIR7qqxorsJvoZGyrzwoMkal6Ij9kM0A== +"@mui/icons-material@^5.15.6": + version "5.15.6" + resolved "https://registry.yarnpkg.com/@mui/icons-material/-/icons-material-5.15.6.tgz#6958232bef48972fcbafd5f69e6079a9be5951f1" + integrity sha512-GnkxMtlhs+8ieHLmCytg00ew0vMOiXGFCw8Ra9nxMsBjBqnrOI5gmXqUm+sGggeEU/HG8HyeqC1MX/IxOBJHzA== dependencies: "@babel/runtime" "^7.23.8" -"@mui/joy@^5.0.0-beta.23": - version "5.0.0-beta.23" - resolved "https://registry.yarnpkg.com/@mui/joy/-/joy-5.0.0-beta.23.tgz#4a9d2868f51b6b0f614a3f3ba1b3611638adcb13" - integrity sha512-Yik+eMYGuZ4ccYYREsaz3TT/h932Hp+tKkQQ1JuRbPtE7EA1zW4ZaO9MuIuMt1/CnmVsPiXnE52A7ElBHCz9uQ== +"@mui/joy@^5.0.0-beta.24": + version "5.0.0-beta.24" + resolved "https://registry.yarnpkg.com/@mui/joy/-/joy-5.0.0-beta.24.tgz#5210c4cde618d7452a2fd8129b155dc0e1616f9b" + integrity sha512-cKlIW56GsKKo9cVm+6pzNS+s4ch3r/SX/Zq5DA10I/TSuW9O5ptIOqeSs+WYpkyAzIoPkCpEXCPR/vGHpOt6MA== dependencies: "@babel/runtime" "^7.23.8" - "@mui/base" "5.0.0-beta.32" - "@mui/core-downloads-tracker" "^5.15.5" - "@mui/system" "^5.15.5" + "@mui/base" "5.0.0-beta.33" + "@mui/core-downloads-tracker" "^5.15.6" + "@mui/system" "^5.15.6" "@mui/types" "^7.2.13" - "@mui/utils" "^5.15.5" + "@mui/utils" "^5.15.6" clsx "^2.1.0" prop-types "^15.8.1" -"@mui/lab@^5.0.0-alpha.161": - version "5.0.0-alpha.161" - resolved "https://registry.yarnpkg.com/@mui/lab/-/lab-5.0.0-alpha.161.tgz#bd4f05a5620016aebc0ac59ca49b067997d4593e" - integrity sha512-dLWWZrJAi44av+iiqEHpZHfPhZ4DM42ItS31yqBwboroawumG2GUyYvHVTyEFXM1Zr8+kufiZ9t28rqHXVf5+w== +"@mui/lab@^5.0.0-alpha.162": + version "5.0.0-alpha.162" + resolved "https://registry.yarnpkg.com/@mui/lab/-/lab-5.0.0-alpha.162.tgz#f7b4ddef46f796760a1f667f444060b3984fb3ab" + integrity sha512-nSdlhq1YVozKXn6mtItWmnU9b/gQ708RSWG6C+M/Y096MlQ7Mz1gdNWOEwcGw2HaNoNgDvuG0+0HKARAMIMaLg== dependencies: "@babel/runtime" "^7.23.8" - "@mui/base" "5.0.0-beta.32" - "@mui/system" "^5.15.5" + "@mui/base" "5.0.0-beta.33" + "@mui/system" "^5.15.6" "@mui/types" "^7.2.13" - "@mui/utils" "^5.15.5" + "@mui/utils" "^5.15.6" clsx "^2.1.0" prop-types "^15.8.1" -"@mui/material@^5.15.5": - version "5.15.5" - resolved "https://registry.yarnpkg.com/@mui/material/-/material-5.15.5.tgz#5c672ddf17fbe1a1d6a8854ddbb8502cc83feec0" - integrity sha512-2KfA39f/UWeQl0O22UJs3x1nG3chYlyu9wnux5vTnxUTLzkgYIzQIHaH+ZOGpv5JiZBMKktAPNfhqyhSaQ49qQ== +"@mui/material@^5.15.6": + version "5.15.6" + resolved "https://registry.yarnpkg.com/@mui/material/-/material-5.15.6.tgz#e32944ae4e01f85b314bc26e4cbbb700d598f30c" + integrity sha512-rw7bDdpi2kzfmcDN78lHp8swArJ5sBCKsn+4G3IpGfu44ycyWAWX0VdlvkjcR9Yrws2KIm7c+8niXpWHUDbWoA== dependencies: "@babel/runtime" "^7.23.8" - "@mui/base" "5.0.0-beta.32" - "@mui/core-downloads-tracker" "^5.15.5" - "@mui/system" "^5.15.5" + "@mui/base" "5.0.0-beta.33" + "@mui/core-downloads-tracker" "^5.15.6" + "@mui/system" "^5.15.6" "@mui/types" "^7.2.13" - "@mui/utils" "^5.15.5" + "@mui/utils" "^5.15.6" "@types/react-transition-group" "^4.4.10" clsx "^2.1.0" csstype "^3.1.2" @@ -1874,35 +1874,35 @@ "@slack/bolt" "^3.17.1" google-auth-library "^9.4.2" -"@mui/private-theming@^5.15.5": - version "5.15.5" - resolved "https://registry.yarnpkg.com/@mui/private-theming/-/private-theming-5.15.5.tgz#3f81e77ecff49bc12301922e82b942748b1f6c7c" - integrity sha512-HU1KCyGNcJFsUamTbOM539ZDZJNI/XU7sZFdsN29glktUf+T6hNvDuO2ISinBiLTZy7Ab3R6DSSoYXRrLc4uwQ== +"@mui/private-theming@^5.15.6": + version "5.15.6" + resolved "https://registry.yarnpkg.com/@mui/private-theming/-/private-theming-5.15.6.tgz#224819694ed76df041b1257256152a45d1fd733d" + integrity sha512-ZBX9E6VNUSscUOtU8uU462VvpvBS7eFl5VfxAzTRVQBHflzL+5KtnGrebgf6Nd6cdvxa1o0OomiaxSKoN2XDmg== dependencies: "@babel/runtime" "^7.23.8" - "@mui/utils" "^5.15.5" + "@mui/utils" "^5.15.6" prop-types "^15.8.1" -"@mui/styled-engine@^5.15.5": - version "5.15.5" - resolved "https://registry.yarnpkg.com/@mui/styled-engine/-/styled-engine-5.15.5.tgz#c5e0113282c28a8d7580371881c36e1baec86217" - integrity sha512-xoMUd8h270thNL7ZsOzmlluIAMsQg/HT7SCdRjPBVle+XHgTKaiWiRy1ekDOsrrF0rhjME3T7xeeUq2G269UUw== +"@mui/styled-engine@^5.15.6": + version "5.15.6" + resolved "https://registry.yarnpkg.com/@mui/styled-engine/-/styled-engine-5.15.6.tgz#3f4a8804de6ddeee17cb52ec92225686f423398a" + integrity sha512-KAn8P8xP/WigFKMlEYUpU9z2o7jJnv0BG28Qu1dhNQVutsLVIFdRf5Nb+0ijp2qgtcmygQ0FtfRuXv5LYetZTg== dependencies: "@babel/runtime" "^7.23.8" "@emotion/cache" "^11.11.0" csstype "^3.1.2" prop-types "^15.8.1" -"@mui/styles@^5.15.5": - version "5.15.5" - resolved "https://registry.yarnpkg.com/@mui/styles/-/styles-5.15.5.tgz#59354a4d25910d8fb61ba06ec12fc3ed35190818" - integrity sha512-oKhGfhIf5lYxWeT6LWodHCyV834cUnU/xUp2LAevwT6Jay2U0q1H8RVUzPBuSyp/U+7ZZnxZ+NQfyHqNpQAJqg== +"@mui/styles@^5.15.6": + version "5.15.6" + resolved "https://registry.yarnpkg.com/@mui/styles/-/styles-5.15.6.tgz#128529bf50e7055974e48e51e9bf67fc8e143fcf" + integrity sha512-5WYJ4KjJ4eMEgWcqY8lPr1hbte5mw7/zVgB7IjonoyIEnG9JPKbT/ma4QW5Rm3q/dUxmpngrRdh60fZPIhQpfw== dependencies: "@babel/runtime" "^7.23.8" "@emotion/hash" "^0.9.1" - "@mui/private-theming" "^5.15.5" + "@mui/private-theming" "^5.15.6" "@mui/types" "^7.2.13" - "@mui/utils" "^5.15.5" + "@mui/utils" "^5.15.6" clsx "^2.1.0" csstype "^3.1.2" hoist-non-react-statics "^3.3.2" @@ -1916,16 +1916,16 @@ jss-plugin-vendor-prefixer "^10.10.0" prop-types "^15.8.1" -"@mui/system@^5.15.5": - version "5.15.5" - resolved "https://registry.yarnpkg.com/@mui/system/-/system-5.15.5.tgz#dc3fd3e5636a6c238d46e0ba40ada9f213a128a5" - integrity sha512-DMv2vGjUKaDt/m0RlzvLjpKiS5V0LoBhiMUHf5pWdj6uoNlN4FuKUe4pFeYmQMIO5DnVZKybmpPepfkdfEH+Og== +"@mui/system@^5.15.6": + version "5.15.6" + resolved "https://registry.yarnpkg.com/@mui/system/-/system-5.15.6.tgz#d278adb09d57ee21f4eef2f6bc335bf9bd062fca" + integrity sha512-J01D//u8IfXvaEHMBQX5aO2l7Q+P15nt96c4NskX7yp5/+UuZP8XCQJhtBtLuj+M2LLyXHYGmCPeblsmmscP2Q== dependencies: "@babel/runtime" "^7.23.8" - "@mui/private-theming" "^5.15.5" - "@mui/styled-engine" "^5.15.5" + "@mui/private-theming" "^5.15.6" + "@mui/styled-engine" "^5.15.6" "@mui/types" "^7.2.13" - "@mui/utils" "^5.15.5" + "@mui/utils" "^5.15.6" clsx "^2.1.0" csstype "^3.1.2" prop-types "^15.8.1" @@ -1935,10 +1935,10 @@ resolved "https://registry.yarnpkg.com/@mui/types/-/types-7.2.13.tgz#d1584912942f9dc042441ecc2d1452be39c666b8" integrity sha512-qP9OgacN62s+l8rdDhSFRe05HWtLLJ5TGclC9I1+tQngbssu0m2dmFZs+Px53AcOs9fD7TbYd4gc9AXzVqO/+g== -"@mui/utils@^5.15.5": - version "5.15.5" - resolved "https://registry.yarnpkg.com/@mui/utils/-/utils-5.15.5.tgz#4033a27e954ae443d0356f625e0c17f4cf32164b" - integrity sha512-jEywgaMGZWPSlVFO7ZZAyXxNeLmq5XBp5At9Ne/sGohRJdesUcdxvyi8TP3odJxwQuL5L6PJV+JQ4DyIDM849A== +"@mui/utils@^5.15.6": + version "5.15.6" + resolved "https://registry.yarnpkg.com/@mui/utils/-/utils-5.15.6.tgz#bbcc302b8e83e360a87230afe3ed8fc99e29fae9" + integrity sha512-qfEhf+zfU9aQdbzo1qrSWlbPQhH1nCgeYgwhOVnj9Bn39shJQitEnXpSQpSNag8+uty5Od6PxmlNKPTnPySRKA== dependencies: "@babel/runtime" "^7.23.8" "@types/prop-types" "^15.7.11" @@ -1950,7 +1950,7 @@ resolved "https://registry.yarnpkg.com/@next/env/-/env-14.1.0.tgz#43d92ebb53bc0ae43dcc64fb4d418f8f17d7a341" integrity sha512-Py8zIo+02ht82brwwhTg36iogzFqGLPXlRGKQw5s+qP/kMNc4MAyDeEwBKDijk6zTIbegEgu8Qy7C1LboslQAw== -"@next/eslint-plugin-next@^14.0.4": +"@next/eslint-plugin-next@14.0.4": version "14.0.4" resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-14.0.4.tgz#474fd88d92209270021186043513fbdc4203f5ec" integrity sha512-U3qMNHmEZoVmHA0j/57nRfi3AscXNvkOnxDmle/69Jz/G0o/gWjXTDdlgILZdrxQ0Lw/jv2mPW8PGy0EGIHXhQ== @@ -2073,6 +2073,19 @@ resolved "https://registry.yarnpkg.com/@npmcli/node-gyp/-/node-gyp-3.0.0.tgz#101b2d0490ef1aa20ed460e4c0813f0db560545a" integrity sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA== +"@npmcli/package-json@^5.0.0": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@npmcli/package-json/-/package-json-5.0.0.tgz#77d0f8b17096763ccbd8af03b7117ba6e34d6e91" + integrity sha512-OI2zdYBLhQ7kpNPaJxiflofYIpkNLi+lnGdzqUOfRmCF3r2l1nadcjtCYMJKv/Utm/ZtlffaUuTiAktPHbc17g== + dependencies: + "@npmcli/git" "^5.0.0" + glob "^10.2.2" + hosted-git-info "^7.0.0" + json-parse-even-better-errors "^3.0.0" + normalize-package-data "^6.0.0" + proc-log "^3.0.0" + semver "^7.5.3" + "@npmcli/promise-spawn@^7.0.0": version "7.0.1" resolved "https://registry.yarnpkg.com/@npmcli/promise-spawn/-/promise-spawn-7.0.1.tgz#a836de2f42a2245d629cf6fbb8dd6c74c74c55af" @@ -2092,93 +2105,94 @@ which "^4.0.0" "@npmcli/run-script@^7.0.0": - version "7.0.3" - resolved "https://registry.yarnpkg.com/@npmcli/run-script/-/run-script-7.0.3.tgz#a803e05c4b58e2a7b3f801a9f2767f22822df457" - integrity sha512-ZMWGLHpzMq3rBGIwPyeaoaleaLMvrBrH8nugHxTi5ACkJZXTxXPtVuEH91ifgtss5hUwJQ2VDnzDBWPmz78rvg== + version "7.0.4" + resolved "https://registry.yarnpkg.com/@npmcli/run-script/-/run-script-7.0.4.tgz#9f29aaf4bfcf57f7de2a9e28d1ef091d14b2e6eb" + integrity sha512-9ApYM/3+rBt9V80aYg6tZfzj3UWdiYyCt7gJUD1VJKvWF5nwKDSICXbYIQbspFTq6TOpbsEtIC0LArB8d9PFmg== dependencies: "@npmcli/node-gyp" "^3.0.0" + "@npmcli/package-json" "^5.0.0" "@npmcli/promise-spawn" "^7.0.0" node-gyp "^10.0.0" - read-package-json-fast "^3.0.0" which "^4.0.0" -"@nrwl/devkit@17.2.8": - version "17.2.8" - resolved "https://registry.yarnpkg.com/@nrwl/devkit/-/devkit-17.2.8.tgz#dd3467b484c4611454a45541ffb29e4de5b2ebe7" - integrity sha512-l2dFy5LkWqSA45s6pee6CoqJeluH+sjRdVnAAQfjLHRNSx6mFAKblyzq5h1f4P0EUCVVVqLs+kVqmNx5zxYqvw== +"@nrwl/devkit@17.3.0": + version "17.3.0" + resolved "https://registry.yarnpkg.com/@nrwl/devkit/-/devkit-17.3.0.tgz#6b7a60c098776485b60e7133b1ce365eb23e125c" + integrity sha512-3QUCvRisp0Iwwl7VEFQPQUU7wpqGEv9kJBNBtgmhe68ydusdNPk+d0npwkvH23BYPuswTI2MUJyLkdeiB58Ovw== dependencies: - "@nx/devkit" "17.2.8" + "@nx/devkit" "17.3.0" -"@nrwl/tao@17.2.8": - version "17.2.8" - resolved "https://registry.yarnpkg.com/@nrwl/tao/-/tao-17.2.8.tgz#41ff3d715a0763e95cf5c35e7f79cd3be358dc5f" - integrity sha512-Qpk5YKeJ+LppPL/wtoDyNGbJs2MsTi6qyX/RdRrEc8lc4bk6Cw3Oul1qTXCI6jT0KzTz+dZtd0zYD/G7okkzvg== +"@nrwl/tao@17.3.0": + version "17.3.0" + resolved "https://registry.yarnpkg.com/@nrwl/tao/-/tao-17.3.0.tgz#e17cd8cca12bdba8cd09aa81e92b26471e0f9a51" + integrity sha512-Bhz+MvAk8CjQtclpEOagGiKzgoziwe+35SlHtvFqzZClAuB8BAx+3ZDNJZcEpDRNfodKqodMUy2OEf6pbzw/LA== dependencies: - nx "17.2.8" + nx "17.3.0" tslib "^2.3.0" -"@nx/devkit@17.2.8", "@nx/devkit@>=17.1.2 < 18": - version "17.2.8" - resolved "https://registry.yarnpkg.com/@nx/devkit/-/devkit-17.2.8.tgz#49b6c94a3c12fba63eae6514fb37a468d0570e2e" - integrity sha512-6LtiQihtZwqz4hSrtT5cCG5XMCWppG6/B8c1kNksg97JuomELlWyUyVF+sxmeERkcLYFaKPTZytP0L3dmCFXaw== +"@nx/devkit@17.3.0", "@nx/devkit@>=17.1.2 < 18": + version "17.3.0" + resolved "https://registry.yarnpkg.com/@nx/devkit/-/devkit-17.3.0.tgz#04c7afd357e21e5fc68a7b8648345a0aa90497e3" + integrity sha512-KPUkEwkGYrg5hDqqXc7sdv4PNXHyWtGwzkBZA3p/RjPieKcQSsTcUwTxQ+taOE4v877n0HuC7hcuLueLSbYGiQ== dependencies: - "@nrwl/devkit" "17.2.8" + "@nrwl/devkit" "17.3.0" ejs "^3.1.7" enquirer "~2.3.6" ignore "^5.0.4" semver "7.5.3" tmp "~0.2.1" tslib "^2.3.0" + yargs-parser "21.1.1" -"@nx/nx-darwin-arm64@17.2.8": - version "17.2.8" - resolved "https://registry.yarnpkg.com/@nx/nx-darwin-arm64/-/nx-darwin-arm64-17.2.8.tgz#26645c9548d5e387b43c06fccfa18e2c1f08055e" - integrity sha512-dMb0uxug4hM7tusISAU1TfkDK3ixYmzc1zhHSZwpR7yKJIyKLtUpBTbryt8nyso37AS1yH+dmfh2Fj2WxfBHTg== - -"@nx/nx-darwin-x64@17.2.8": - version "17.2.8" - resolved "https://registry.yarnpkg.com/@nx/nx-darwin-x64/-/nx-darwin-x64-17.2.8.tgz#5143d6d01d24e338cb3d39076fe2af95146cb538" - integrity sha512-0cXzp1tGr7/6lJel102QiLA4NkaLCkQJj6VzwbwuvmuCDxPbpmbz7HC1tUteijKBtOcdXit1/MEoEU007To8Bw== - -"@nx/nx-freebsd-x64@17.2.8": - version "17.2.8" - resolved "https://registry.yarnpkg.com/@nx/nx-freebsd-x64/-/nx-freebsd-x64-17.2.8.tgz#82a018a1855170e0243b8fe7b0032af279c3fb83" - integrity sha512-YFMgx5Qpp2btCgvaniDGdu7Ctj56bfFvbbaHQWmOeBPK1krNDp2mqp8HK6ZKOfEuDJGOYAp7HDtCLvdZKvJxzA== - -"@nx/nx-linux-arm-gnueabihf@17.2.8": - version "17.2.8" - resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-17.2.8.tgz#18b9c324221ff6a30589f3fc272a843aca57b70f" - integrity sha512-iN2my6MrhLRkVDtdivQHugK8YmR7URo1wU9UDuHQ55z3tEcny7LV3W9NSsY9UYPK/FrxdDfevj0r2hgSSdhnzA== - -"@nx/nx-linux-arm64-gnu@17.2.8": - version "17.2.8" - resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-17.2.8.tgz#54a08640a2babe78bcf3283565b00eb487db595e" - integrity sha512-Iy8BjoW6mOKrSMiTGujUcNdv+xSM1DALTH6y3iLvNDkGbjGK1Re6QNnJAzqcXyDpv32Q4Fc57PmuexyysZxIGg== - -"@nx/nx-linux-arm64-musl@17.2.8": - version "17.2.8" - resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-17.2.8.tgz#cd7b673bb9f45fec7aa1b6c880a0d23d658e927f" - integrity sha512-9wkAxWzknjpzdofL1xjtU6qPFF1PHlvKCZI3hgEYJDo4mQiatGI+7Ttko+lx/ZMP6v4+Umjtgq7+qWrApeKamQ== - -"@nx/nx-linux-x64-gnu@17.2.8": - version "17.2.8" - resolved "https://registry.yarnpkg.com/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-17.2.8.tgz#009eb75c77bf075bc9c13ec4f9caf77821eee639" - integrity sha512-sjG1bwGsjLxToasZ3lShildFsF0eyeGu+pOQZIp9+gjFbeIkd19cTlCnHrOV9hoF364GuKSXQyUlwtFYFR4VTQ== - -"@nx/nx-linux-x64-musl@17.2.8": - version "17.2.8" - resolved "https://registry.yarnpkg.com/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-17.2.8.tgz#8ee2324068732a135ca4b01081942d5956885167" - integrity sha512-QiakXZ1xBCIptmkGEouLHQbcM4klQkcr+kEaz2PlNwy/sW3gH1b/1c0Ed5J1AN9xgQxWspriAONpScYBRgxdhA== - -"@nx/nx-win32-arm64-msvc@17.2.8": - version "17.2.8" - resolved "https://registry.yarnpkg.com/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-17.2.8.tgz#9bdce5b4d1f9cec7ef326eaf43b99e68576398b0" - integrity sha512-XBWUY/F/GU3vKN9CAxeI15gM4kr3GOBqnzFZzoZC4qJt2hKSSUEWsMgeZtsMgeqEClbi4ZyCCkY7YJgU32WUGA== - -"@nx/nx-win32-x64-msvc@17.2.8": - version "17.2.8" - resolved "https://registry.yarnpkg.com/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-17.2.8.tgz#8a86ff250021ad47686b58f1840b348a209b1158" - integrity sha512-HTqDv+JThlLzbcEm/3f+LbS5/wYQWzb5YDXbP1wi7nlCTihNZOLNqGOkEmwlrR5tAdNHPRpHSmkYg4305W0CtA== +"@nx/nx-darwin-arm64@17.3.0": + version "17.3.0" + resolved "https://registry.yarnpkg.com/@nx/nx-darwin-arm64/-/nx-darwin-arm64-17.3.0.tgz#0bdbdd130a63a11da18dd1e2f350e9bcab314098" + integrity sha512-NDR/HjahhNLx9Q4TjR5/W3IedSkdtK+kUZ09EceVeX33HNdeLjkFA26QtVVmGbhnogLcywAX0KELn7oGv2nO+A== + +"@nx/nx-darwin-x64@17.3.0": + version "17.3.0" + resolved "https://registry.yarnpkg.com/@nx/nx-darwin-x64/-/nx-darwin-x64-17.3.0.tgz#3751b8f42b8abe5ea54c9fd7c6143849d70d12e7" + integrity sha512-3qxOZnHTPTUXAH8WGCtllAXE2jodStDNSkGVeEcDuIK4NO5tFfF4oVCLKKYcnqKsJOVNTS9B/aJG2bVGbaWYVQ== + +"@nx/nx-freebsd-x64@17.3.0": + version "17.3.0" + resolved "https://registry.yarnpkg.com/@nx/nx-freebsd-x64/-/nx-freebsd-x64-17.3.0.tgz#8b510bc8b3e4a63807e71696aac557e14297d198" + integrity sha512-kVGK/wSbRRWqL3sAXlR5diI29kDisutUMaxs5dWxzRzY0U/+Kwon6ayLU1/HGwEykXFhCJE7r9vSqCrnn67dzg== + +"@nx/nx-linux-arm-gnueabihf@17.3.0": + version "17.3.0" + resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-17.3.0.tgz#7acca82fad3936d7b6afb33724fa10061195a700" + integrity sha512-nb+jsh7zDkXjHEaAM5qmJR0X0wQ1yPbAYJuZSf8oZkllVYXcAofiAf21EqgKHq7vr4sZiCmlDaT16DheM3jyVA== + +"@nx/nx-linux-arm64-gnu@17.3.0": + version "17.3.0" + resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-17.3.0.tgz#ebc50581afe07859e3b6fa0bee1e4036b2399e80" + integrity sha512-9LkGk2paZn5Ehg/rya8GCISr+CgMz3MZ5PTOO/yEGk6cv6kQSmhZdjUi3wMOQidIqpolRK0MrhSL9DUz8Htl4A== + +"@nx/nx-linux-arm64-musl@17.3.0": + version "17.3.0" + resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-17.3.0.tgz#8f8c4a9f3fb8f49543c70fb240b02fa56f4cfbe1" + integrity sha512-bMykIGtziR90xLOCdzVDzaLgMXDvCf2Y7KpAj/EqJXpC0j9RmQdkm7VyO3//xN6rpcWjMcn1wgHQ1rPV65vETg== + +"@nx/nx-linux-x64-gnu@17.3.0": + version "17.3.0" + resolved "https://registry.yarnpkg.com/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-17.3.0.tgz#a04435ced16d7145eeb93297dd1394b01d807b79" + integrity sha512-Y3KbMhVcgvVvplyVlWzHaSKqGKqWLPTcuXnnNzuWSqLC9q+UdaDE/6+7SryHbJABM2juMHbo9JNp5LlKp3bkEg== + +"@nx/nx-linux-x64-musl@17.3.0": + version "17.3.0" + resolved "https://registry.yarnpkg.com/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-17.3.0.tgz#2aebfd21db20e6cddeded56e8aee1e2f9aef5658" + integrity sha512-QvAIZPqvrqI+s2Ddpkb0TE4yRJgXAlL8I+rIA8U+6y266rT5sVJZFPUWubkFWe/PSmqv3l4KqPcsvHTiIzldFA== + +"@nx/nx-win32-arm64-msvc@17.3.0": + version "17.3.0" + resolved "https://registry.yarnpkg.com/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-17.3.0.tgz#d5db483a801878078809fc12424ce3a177512985" + integrity sha512-uoG3g0eZ9lYWZi4CpEVd04fIs+4lqpmU/FAaB3/K+Tfj9daSEIB6j57EX81ECDRB16k74VUdcI32qLAtD8KIMw== + +"@nx/nx-win32-x64-msvc@17.3.0": + version "17.3.0" + resolved "https://registry.yarnpkg.com/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-17.3.0.tgz#48888d453522eea1715fb13af9a2cf3d87ca6901" + integrity sha512-ekoejj7ZXMSNYrgQwd/7thCNTHbDRggsqPw5LlTa/jPonsQ4TAPzmLBJUF8hCKn43xXLXaFufK4V1OMxlP1Hfg== "@octokit/auth-token@^2.4.4": version "2.5.0" @@ -2224,9 +2238,9 @@ universal-user-agent "^6.0.0" "@octokit/core@^5.0.0": - version "5.0.2" - resolved "https://registry.yarnpkg.com/@octokit/core/-/core-5.0.2.tgz#ae7c5d61fdd98ba348a27c3cc510879a130b1234" - integrity sha512-cZUy1gUvd4vttMic7C0lwPed8IYXWYp8kHIMatyhY8t8n3Cpw2ILczkV5pGMPqef7v0bLo0pOHrEHarsau2Ydg== + version "5.1.0" + resolved "https://registry.yarnpkg.com/@octokit/core/-/core-5.1.0.tgz#81dacf0197ed7855e6413f128bd6dd9e121e7d2f" + integrity sha512-BDa2VAMLSh3otEiaMJ/3Y36GU4qf6GI+VivQ/P41NC6GHcdxpKlqV0ikSZ5gdQsmS3ojXeRx5vasgNTinF0Q4g== dependencies: "@octokit/auth-token" "^4.0.0" "@octokit/graphql" "^7.0.0" @@ -2502,9 +2516,9 @@ integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== "@pkgr/core@^0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@pkgr/core/-/core-0.1.0.tgz#7d8dacb7fdef0e4387caf7396cbd77f179867d06" - integrity sha512-Zwq5OCzuwJC2jwqmpEQt7Ds1DTi6BWSwoGkbb1n9pO3hzb35BoJELx7c0T23iDkBGkh2e7tvOtjF3tr3OaQHDQ== + version "0.1.1" + resolved "https://registry.yarnpkg.com/@pkgr/core/-/core-0.1.1.tgz#1ec17e2edbec25c8306d424ecfbf13c7de1aaa31" + integrity sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA== "@playwright/test@1.41.1": version "1.41.1" @@ -2663,9 +2677,9 @@ type-detect "4.0.8" "@sinonjs/commons@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-3.0.0.tgz#beb434fe875d965265e04722ccfc21df7f755d72" - integrity sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA== + version "3.0.1" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-3.0.1.tgz#1029357e44ca901a615585f6d27738dbc89084cd" + integrity sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ== dependencies: type-detect "4.0.8" @@ -2766,9 +2780,9 @@ integrity sha512-UlIrDWvuLaDly3QZhCPnwUSI/KYmV1N9LyhuH6EDKCRS1HWZhyTG3Ja46T3D0rYfqdltKYFXbJSSRPwZpwO0cQ== "@slack/web-api@^6.11.2": - version "6.11.2" - resolved "https://registry.yarnpkg.com/@slack/web-api/-/web-api-6.11.2.tgz#4a4543e722a953a63b4ae7c655398430e6129a8f" - integrity sha512-s4qCQGXasr8jpCf/+6+V/smq+Z2RX7EIBnJeO/xe7Luie1nyBihFMgjICNyvzWoWBdaGntSnn5CcZdFm4ItBWg== + version "6.12.0" + resolved "https://registry.yarnpkg.com/@slack/web-api/-/web-api-6.12.0.tgz#d0487d90e3db2f7bfabe3430fa5da0cc03d2d9cb" + integrity sha512-RPw6F8rWfGveGkZEJ4+4jUin5iazxRK2q3FpQDz/FvdgzC3nZmPyLx8WRzc6nh0w3MBjEbphNnp2VZksfhpBIQ== dependencies: "@slack/logger" "^3.0.0" "@slack/types" "^2.11.0" @@ -2962,7 +2976,7 @@ dependencies: "@types/node" "*" -"@types/d3-color@^3.1.3": +"@types/d3-color@*", "@types/d3-color@^3.1.3": version "3.1.3" resolved "https://registry.yarnpkg.com/@types/d3-color/-/d3-color-3.1.3.tgz#368c961a18de721da8200e80bf3943fb53136af2" integrity sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A== @@ -2972,6 +2986,13 @@ resolved "https://registry.yarnpkg.com/@types/d3-delaunay/-/d3-delaunay-6.0.4.tgz#185c1a80cc807fdda2a3fe960f7c11c4a27952e1" integrity sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw== +"@types/d3-interpolate@^3.0.4": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz#412b90e84870285f2ff8a846c6eb60344f12a41c" + integrity sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA== + dependencies: + "@types/d3-color" "*" + "@types/d3-path@*": version "3.0.2" resolved "https://registry.yarnpkg.com/@types/d3-path/-/d3-path-3.0.2.tgz#4327f4a05d475cf9be46a93fc2e0f8d23380805a" @@ -3025,15 +3046,15 @@ "@types/estree" "*" "@types/json-schema" "*" -"@types/estree@*", "@types/estree@^1.0.0": +"@types/estree@*", "@types/estree@^1.0.5": version "1.0.5" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== "@types/express-serve-static-core@^4.17.33": - version "4.17.41" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.41.tgz#5077defa630c2e8d28aa9ffc2c01c157c305bef6" - integrity sha512-OaJ7XLaelTgrvlZD8/aa0vvvxZdUmlCn6MtWeB7TkiKW70BQLc9XEPpDLPdbo52ZhXUCrznlWdCHWxJWtdyajA== + version "4.17.42" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.42.tgz#2a276952acc73d1b8dc63fd4210647abbc553a71" + integrity sha512-ckM3jm2bf/MfB3+spLPWYPUH573plBFwpOhqQ2WottxYV85j1HQFlxmnTq57X1yHY9awZPig06hL/cLMgNWHIQ== dependencies: "@types/node" "*" "@types/qs" "*" @@ -3083,9 +3104,9 @@ "@types/node" "*" "@types/istanbul-lib-coverage@^2.0.1": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz#4ba8ddb720221f432e443bd5f9117fd22cfd4762" - integrity sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw== + version "2.0.6" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz#7739c232a1fee9b4d3ce8985f314c0c6d33549d7" + integrity sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w== "@types/jscodeshift@^0.11.5": version "0.11.11" @@ -3168,10 +3189,10 @@ resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-10.0.6.tgz#818551d39113081048bdddbef96701b4e8bb9d1b" integrity sha512-dJvrYWxP/UcXm36Qn36fxhUKu8A/xMRXVT2cliFF1Z7UA9liG5Psj3ezNSZw+5puH2czDXRLcXQxf8JbJt0ejg== -"@types/moment-hijri@^2.1.3": - version "2.1.3" - resolved "https://registry.yarnpkg.com/@types/moment-hijri/-/moment-hijri-2.1.3.tgz#764d5a1a011a6839a5899d1367b4fef48a3d4d49" - integrity sha512-q0nJaMbVzz8sJVl/B18gPQGadfGd5SplK/7XtTrNVC4XgSjM7RGMzxuAfR0N7RQu4mao84jJwivSuAijVA0TeQ== +"@types/moment-hijri@^2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@types/moment-hijri/-/moment-hijri-2.1.4.tgz#02c3a6f774a241efd9b4c46c8ef8bbd006996e47" + integrity sha512-pGX1DaSducJDkJAC3q8fCuemow0pzI4oa0iKcspwQNPXuwlI55WRgBVrA6NVi+rf8bZN1qjWVsGdUatrLhZk6Q== dependencies: moment ">=2.14.0" @@ -3182,10 +3203,10 @@ dependencies: moment ">=2.14.0" -"@types/node@*", "@types/node@>=10.0.0", "@types/node@>=12", "@types/node@>=12.0.0", "@types/node@>=18.0.0", "@types/node@^14.0.1", "@types/node@^18.19.8": - version "18.19.8" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.19.8.tgz#c1e42b165e5a526caf1f010747e0522cb2c9c36a" - integrity sha512-g1pZtPhsvGVTwmeVoexWZLTQaOvXwoSq//pTL0DHeNzUDrFnir4fgETdhjhIxjVnN+hKOuh98+E1eMLnUXstFg== +"@types/node@*", "@types/node@>=10.0.0", "@types/node@>=12", "@types/node@>=12.0.0", "@types/node@>=18.0.0", "@types/node@^14.0.1", "@types/node@^18.19.10": + version "18.19.10" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.19.10.tgz#4de314ab66faf6bc8ba691021a091ddcdf13a158" + integrity sha512-IZD8kAM02AW1HRDTPOlz3npFava678pr8Ie9Vp8uRhBROXAv8MXT2pCnGZZAKYdromsNQLHQcfWQ6EOatVLtqA== dependencies: undici-types "~5.26.4" @@ -3371,16 +3392,16 @@ dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/eslint-plugin@^6.15.0": - version "6.18.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.18.1.tgz#0df881a47da1c1a9774f39495f5f7052f86b72e0" - integrity sha512-nISDRYnnIpk7VCFrGcu1rnZfM1Dh9LRHnfgdkjcbi/l7g16VYRri3TjXi9Ir4lOZSw5N/gnV/3H7jIPQ8Q4daA== +"@typescript-eslint/eslint-plugin@^6.20.0": + version "6.20.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.20.0.tgz#9cf31546d2d5e884602626d89b0e0d2168ac25ed" + integrity sha512-fTwGQUnjhoYHeSF6m5pWNkzmDDdsKELYrOBxhjMrofPqCkoC2k3B2wvGHFxa1CTIqkEn88nlW1HVMztjo2K8Hg== dependencies: "@eslint-community/regexpp" "^4.5.1" - "@typescript-eslint/scope-manager" "6.18.1" - "@typescript-eslint/type-utils" "6.18.1" - "@typescript-eslint/utils" "6.18.1" - "@typescript-eslint/visitor-keys" "6.18.1" + "@typescript-eslint/scope-manager" "6.20.0" + "@typescript-eslint/type-utils" "6.20.0" + "@typescript-eslint/utils" "6.20.0" + "@typescript-eslint/visitor-keys" "6.20.0" debug "^4.3.4" graphemer "^1.4.0" ignore "^5.2.4" @@ -3395,15 +3416,15 @@ dependencies: "@typescript-eslint/utils" "5.62.0" -"@typescript-eslint/parser@^6.15.0", "@typescript-eslint/parser@^6.18.1": - version "6.18.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.18.1.tgz#3c3987e186b38c77b30b6bfa5edf7c98ae2ec9d3" - integrity sha512-zct/MdJnVaRRNy9e84XnVtRv9Vf91/qqe+hZJtKanjojud4wAVy/7lXxJmMyX6X6J+xc6c//YEWvpeif8cAhWA== +"@typescript-eslint/parser@^6.20.0": + version "6.20.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.20.0.tgz#17e314177304bdf498527e3c4b112e41287b7416" + integrity sha512-bYerPDF/H5v6V76MdMYhjwmwgMA+jlPVqjSDq2cRqMi8bP5sR3Z+RLOiOMad3nsnmDVmn2gAFCyNgh/dIrfP/w== dependencies: - "@typescript-eslint/scope-manager" "6.18.1" - "@typescript-eslint/types" "6.18.1" - "@typescript-eslint/typescript-estree" "6.18.1" - "@typescript-eslint/visitor-keys" "6.18.1" + "@typescript-eslint/scope-manager" "6.20.0" + "@typescript-eslint/types" "6.20.0" + "@typescript-eslint/typescript-estree" "6.20.0" + "@typescript-eslint/visitor-keys" "6.20.0" debug "^4.3.4" "@typescript-eslint/scope-manager@5.62.0": @@ -3414,21 +3435,21 @@ "@typescript-eslint/types" "5.62.0" "@typescript-eslint/visitor-keys" "5.62.0" -"@typescript-eslint/scope-manager@6.18.1": - version "6.18.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.18.1.tgz#28c31c60f6e5827996aa3560a538693cb4bd3848" - integrity sha512-BgdBwXPFmZzaZUuw6wKiHKIovms97a7eTImjkXCZE04TGHysG+0hDQPmygyvgtkoB/aOQwSM/nWv3LzrOIQOBw== +"@typescript-eslint/scope-manager@6.20.0": + version "6.20.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.20.0.tgz#8a926e60f6c47feb5bab878246dc2ae465730151" + integrity sha512-p4rvHQRDTI1tGGMDFQm+GtxP1ZHyAh64WANVoyEcNMpaTFn3ox/3CcgtIlELnRfKzSs/DwYlDccJEtr3O6qBvA== dependencies: - "@typescript-eslint/types" "6.18.1" - "@typescript-eslint/visitor-keys" "6.18.1" + "@typescript-eslint/types" "6.20.0" + "@typescript-eslint/visitor-keys" "6.20.0" -"@typescript-eslint/type-utils@6.18.1": - version "6.18.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.18.1.tgz#115cf535f8b39db8301677199ce51151e2daee96" - integrity sha512-wyOSKhuzHeU/5pcRDP2G2Ndci+4g653V43gXTpt4nbyoIOAASkGDA9JIAgbQCdCkcr1MvpSYWzxTz0olCn8+/Q== +"@typescript-eslint/type-utils@6.20.0": + version "6.20.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.20.0.tgz#d395475cd0f3610dd80c7d8716fa0db767da3831" + integrity sha512-qnSobiJQb1F5JjN0YDRPHruQTrX7ICsmltXhkV536mp4idGAYrIyr47zF/JmkJtEcAVnIz4gUYJ7gOZa6SmN4g== dependencies: - "@typescript-eslint/typescript-estree" "6.18.1" - "@typescript-eslint/utils" "6.18.1" + "@typescript-eslint/typescript-estree" "6.20.0" + "@typescript-eslint/utils" "6.20.0" debug "^4.3.4" ts-api-utils "^1.0.1" @@ -3437,10 +3458,10 @@ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== -"@typescript-eslint/types@6.18.1": - version "6.18.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.18.1.tgz#91617d8080bcd99ac355d9157079970d1d49fefc" - integrity sha512-4TuMAe+tc5oA7wwfqMtB0Y5OrREPF1GeJBAjqwgZh1lEMH5PJQgWgHGfYufVB51LtjD+peZylmeyxUXPfENLCw== +"@typescript-eslint/types@6.20.0": + version "6.20.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.20.0.tgz#5ccd74c29011ae7714ae6973e4ec0c634708b448" + integrity sha512-MM9mfZMAhiN4cOEcUOEx+0HmuaW3WBfukBZPCfwSqFnQy0grXYtngKCqpQN339X3RrwtzspWJrpbrupKYUSBXQ== "@typescript-eslint/typescript-estree@5.62.0": version "5.62.0" @@ -3455,13 +3476,13 @@ semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/typescript-estree@6.18.1": - version "6.18.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.18.1.tgz#a12b6440175b4cbc9d09ab3c4966c6b245215ab4" - integrity sha512-fv9B94UAhywPRhUeeV/v+3SBDvcPiLxRZJw/xZeeGgRLQZ6rLMG+8krrJUyIf6s1ecWTzlsbp0rlw7n9sjufHA== +"@typescript-eslint/typescript-estree@6.20.0": + version "6.20.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.20.0.tgz#5b2d0975949e6bdd8d45ee1471461ef5fadc5542" + integrity sha512-RnRya9q5m6YYSpBN7IzKu9FmLcYtErkDkc8/dKv81I9QiLLtVBHrjz+Ev/crAqgMNW2FCsoZF4g2QUylMnJz+g== dependencies: - "@typescript-eslint/types" "6.18.1" - "@typescript-eslint/visitor-keys" "6.18.1" + "@typescript-eslint/types" "6.20.0" + "@typescript-eslint/visitor-keys" "6.20.0" debug "^4.3.4" globby "^11.1.0" is-glob "^4.0.3" @@ -3483,17 +3504,17 @@ eslint-scope "^5.1.1" semver "^7.3.7" -"@typescript-eslint/utils@6.18.1": - version "6.18.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.18.1.tgz#3451cfe2e56babb6ac657e10b6703393d4b82955" - integrity sha512-zZmTuVZvD1wpoceHvoQpOiewmWu3uP9FuTWo8vqpy2ffsmfCE8mklRPi+vmnIYAIk9t/4kOThri2QCDgor+OpQ== +"@typescript-eslint/utils@6.20.0": + version "6.20.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.20.0.tgz#0e52afcfaa51af5656490ba4b7437cc3aa28633d" + integrity sha512-/EKuw+kRu2vAqCoDwDCBtDRU6CTKbUmwwI7SH7AashZ+W+7o8eiyy6V2cdOqN49KsTcASWsC5QeghYuRDTyOOg== dependencies: "@eslint-community/eslint-utils" "^4.4.0" "@types/json-schema" "^7.0.12" "@types/semver" "^7.5.0" - "@typescript-eslint/scope-manager" "6.18.1" - "@typescript-eslint/types" "6.18.1" - "@typescript-eslint/typescript-estree" "6.18.1" + "@typescript-eslint/scope-manager" "6.20.0" + "@typescript-eslint/types" "6.20.0" + "@typescript-eslint/typescript-estree" "6.20.0" semver "^7.5.4" "@typescript-eslint/visitor-keys@5.62.0": @@ -3504,12 +3525,12 @@ "@typescript-eslint/types" "5.62.0" eslint-visitor-keys "^3.3.0" -"@typescript-eslint/visitor-keys@6.18.1": - version "6.18.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.18.1.tgz#704d789bda2565a15475e7d22f145b8fe77443f4" - integrity sha512-/kvt0C5lRqGoCfsbmm7/CwMqoSkY3zzHLIjdhHZQW3VFrnz7ATecOHR7nb7V+xn4286MBxfnQfQhAmCI0u+bJA== +"@typescript-eslint/visitor-keys@6.20.0": + version "6.20.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.20.0.tgz#f7ada27f2803de89df0edd9fd7be22c05ce6a498" + integrity sha512-E8Cp98kRe4gKHjJD4NExXKz/zOJ1A2hhZc+IMVD6i7w4yjIvh6VyuRI0gRtxAsXtoC35uGMaQ9rjI2zJaXDEAw== dependencies: - "@typescript-eslint/types" "6.18.1" + "@typescript-eslint/types" "6.20.0" eslint-visitor-keys "^3.4.1" "@ungap/structured-clone@^1.2.0": @@ -3730,9 +3751,9 @@ acorn-jsx@^5.3.2: integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== acorn-walk@^8.0.0: - version "8.3.1" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.1.tgz#2f10f5b69329d90ae18c58bf1fa8fccd8b959a43" - integrity sha512-TgUZgYvqZprrl7YldZNoa9OciCAyZR+Ejm9eXzKCmjsF5IKp/wgQ7Z/ZpjpGTIUPwrHQIcYeI8qDh4PsEwxMbw== + version "8.3.2" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.2.tgz#7703af9415f1b6db9315d6895503862e231d34aa" + integrity sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A== acorn@^8.0.4, acorn@^8.7.1, acorn@^8.8.2, acorn@^8.9.0: version "8.11.3" @@ -4346,9 +4367,9 @@ axe-core@=4.7.0: integrity sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ== axios@^1.5.0, axios@^1.5.1, axios@^1.6.0, axios@^1.6.5: - version "1.6.5" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.6.5.tgz#2c090da14aeeab3770ad30c3a1461bc970fb0cd8" - integrity sha512-Ii012v05KEVuUoFWmMW/UQv9aRIc3ZwkWDcM+h5Il8izZCtRVpDUfwpoFf7eOtajT3QiGR4yDUx7lPqHJULgbg== + version "1.6.7" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.6.7.tgz#7b48c2e27c96f9c68a2f8f31e2ab19f59b06b0a7" + integrity sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA== dependencies: follow-redirects "^1.15.4" form-data "^4.0.0" @@ -4422,29 +4443,29 @@ babel-plugin-optimize-clsx@^2.6.2: lodash "^4.17.15" object-hash "^2.0.3" -babel-plugin-polyfill-corejs2@^0.4.7: - version "0.4.7" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.7.tgz#679d1b94bf3360f7682e11f2cb2708828a24fe8c" - integrity sha512-LidDk/tEGDfuHW2DWh/Hgo4rmnw3cduK6ZkOI1NPFceSK3n/yAGeOsNT7FLnSGHkXj3RHGSEVkN3FsCTY6w2CQ== +babel-plugin-polyfill-corejs2@^0.4.8: + version "0.4.8" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.8.tgz#dbcc3c8ca758a290d47c3c6a490d59429b0d2269" + integrity sha512-OtIuQfafSzpo/LhnJaykc0R/MMnuLSSVjVYy9mHArIZ9qTCSZ6TpWCuEKZYVoN//t8HqBNScHrOtCrIK5IaGLg== dependencies: "@babel/compat-data" "^7.22.6" - "@babel/helper-define-polyfill-provider" "^0.4.4" + "@babel/helper-define-polyfill-provider" "^0.5.0" semver "^6.3.1" -babel-plugin-polyfill-corejs3@^0.8.7: - version "0.8.7" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.7.tgz#941855aa7fdaac06ed24c730a93450d2b2b76d04" - integrity sha512-KyDvZYxAzkC0Aj2dAPyDzi2Ym15e5JKZSK+maI7NAwSqofvuFglbSsxE7wUOvTg9oFVnHMzVzBKcqEb4PJgtOA== +babel-plugin-polyfill-corejs3@^0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.9.0.tgz#9eea32349d94556c2ad3ab9b82ebb27d4bf04a81" + integrity sha512-7nZPG1uzK2Ymhy/NbaOWTg3uibM2BmGASS4vHS4szRZAIR8R6GwA/xAujpdrXU5iyklrimWnLWU+BLF9suPTqg== dependencies: - "@babel/helper-define-polyfill-provider" "^0.4.4" - core-js-compat "^3.33.1" + "@babel/helper-define-polyfill-provider" "^0.5.0" + core-js-compat "^3.34.0" -babel-plugin-polyfill-regenerator@^0.5.4: - version "0.5.4" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.4.tgz#c6fc8eab610d3a11eb475391e52584bacfc020f4" - integrity sha512-S/x2iOCvDaCASLYsOOgWOq4bCfKYVqvO/uxjkaYyZ3rVsVE3CeAI/c84NpyuBBymEgNvHgjEot3a9/Z/kXvqsg== +babel-plugin-polyfill-regenerator@^0.5.5: + version "0.5.5" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.5.tgz#8b0c8fc6434239e5d7b8a9d1f832bb2b0310f06a" + integrity sha512-OJGYZlhLqBh2DDHeqAxWB1XIvr49CxiJ2gIt61/PU55CQK4Z58OzMqjDe1zwQdQk+rBYsRc+1rJmdajM3gimHg== dependencies: - "@babel/helper-define-polyfill-provider" "^0.4.4" + "@babel/helper-define-polyfill-provider" "^0.5.0" babel-plugin-preval@^5.1.0: version "5.1.0" @@ -4665,13 +4686,13 @@ browser-stdout@1.3.1: resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== -browserslist@^4.14.5, browserslist@^4.22.2: - version "4.22.2" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.2.tgz#704c4943072bd81ea18997f3bd2180e89c77874b" - integrity sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A== +browserslist@^4.21.10, browserslist@^4.22.2: + version "4.22.3" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.3.tgz#299d11b7e947a6b843981392721169e27d60c5a6" + integrity sha512-UAp55yfwNv0klWNapjs/ktHoguxuQNGnOzxYmfnXIS+8AsRDZkSDxg7R1AX3GKzn078SBI5dzwzj/Yx0Or0e3A== dependencies: - caniuse-lite "^1.0.30001565" - electron-to-chromium "^1.4.601" + caniuse-lite "^1.0.30001580" + electron-to-chromium "^1.4.648" node-releases "^2.0.14" update-browserslist-db "^1.0.13" @@ -4753,22 +4774,22 @@ bytes@3.1.2: integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== c8@^7.6.0: - version "7.8.0" - resolved "https://registry.yarnpkg.com/c8/-/c8-7.8.0.tgz#8fcfe848587d9d5796f22e9b0546a387a66d1b3b" - integrity sha512-x2Bx+IIEd608B1LmjiNQ/kizRPkCWo5XzuV57J9afPjAHSnYXALwbCSOkQ7cSaNXBNblfqcvdycj+klmL+j6yA== + version "7.14.0" + resolved "https://registry.yarnpkg.com/c8/-/c8-7.14.0.tgz#f368184c73b125a80565e9ab2396ff0be4d732f3" + integrity sha512-i04rtkkcNcCf7zsQcSv/T9EbUn4RXQ6mropeMcjFOsQXQ0iGLAr/xT6TImQg4+U9hmNpN9XdvPkjUL1IzbgxJw== dependencies: "@bcoe/v8-coverage" "^0.2.3" - "@istanbuljs/schema" "^0.1.2" + "@istanbuljs/schema" "^0.1.3" find-up "^5.0.0" foreground-child "^2.0.0" - istanbul-lib-coverage "^3.0.0" + istanbul-lib-coverage "^3.2.0" istanbul-lib-report "^3.0.0" - istanbul-reports "^3.0.2" - rimraf "^3.0.0" + istanbul-reports "^3.1.4" + rimraf "^3.0.2" test-exclude "^6.0.0" - v8-to-istanbul "^8.0.0" + v8-to-istanbul "^9.0.0" yargs "^16.2.0" - yargs-parser "^20.2.7" + yargs-parser "^20.2.9" cacache@^17.0.0: version "17.1.4" @@ -4900,10 +4921,10 @@ camelize@^1.0.0: resolved "https://registry.yarnpkg.com/camelize/-/camelize-1.0.1.tgz#89b7e16884056331a35d6b5ad064332c91daa6c3" integrity sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ== -caniuse-lite@^1.0.30001565, caniuse-lite@^1.0.30001578, caniuse-lite@^1.0.30001579: - version "1.0.30001579" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001579.tgz#45c065216110f46d6274311a4b3fcf6278e0852a" - integrity sha512-u5AUVkixruKHJjw/pj9wISlcMpgFWzSrczLZbrqBSxukQixmg0SJ5sZTpvaFvxU0HoQKd4yoyAogyrAz9pzJnA== +caniuse-lite@^1.0.30001578, caniuse-lite@^1.0.30001579, caniuse-lite@^1.0.30001580: + version "1.0.30001581" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001581.tgz#0dfd4db9e94edbdca67d57348ebc070dece279f4" + integrity sha512-whlTkwhqV2tUmP3oYhtNfaWGYHDdS3JYFQBKXxcUR9qqPWsRhFHhoISO2Xnl/g0xyKzht9mI1LZpiNWfMzHixQ== chai-dom@^1.12.0: version "1.12.0" @@ -5345,13 +5366,13 @@ compressible@~2.0.16: dependencies: mime-db ">= 1.43.0 < 2" -compression-webpack-plugin@^10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/compression-webpack-plugin/-/compression-webpack-plugin-10.0.0.tgz#3496af1b0dc792e13efc474498838dbff915c823" - integrity sha512-wLXLIBwpul/ALcm7Aj+69X0pYT3BYt6DdPn3qrgBIh9YejV9Bju9ShhlAsjujLyWMo6SAweFIWaUoFmXZNuNrg== +compression-webpack-plugin@^11.0.0: + version "11.0.0" + resolved "https://registry.yarnpkg.com/compression-webpack-plugin/-/compression-webpack-plugin-11.0.0.tgz#d8dfe6a446fb15a8bb7d78da6494098cdae605a7" + integrity sha512-Nz9dMiu0sag+mgJ5QTkRx0+vwrDZPU/gps7IdrkFE+oRSkgyoX4wbMol7QnXjI5/TEWx8yEwew9MiMjZgdLtjg== dependencies: - schema-utils "^4.0.0" - serialize-javascript "^6.0.0" + schema-utils "^4.2.0" + serialize-javascript "^6.0.2" compression@1.7.4: version "1.7.4" @@ -5506,7 +5527,7 @@ conventional-recommended-bump@7.0.1: git-semver-tags "^5.0.0" meow "^8.1.2" -convert-source-map@^1.5.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: +convert-source-map@^1.5.0, convert-source-map@^1.7.0: version "1.9.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== @@ -5544,10 +5565,10 @@ copy-descriptor@^0.1.0: resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw== -core-js-compat@^3.31.0, core-js-compat@^3.33.1: - version "3.35.0" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.35.0.tgz#c149a3d1ab51e743bc1da61e39cb51f461a41873" - integrity sha512-5blwFAddknKeNgsjBzilkdQ0+YK8L1PfqPYq40NOYMYFSS38qj+hpTcLLWwpIwA2A5bje/x5jmVn2tzUMg9IVw== +core-js-compat@^3.31.0, core-js-compat@^3.34.0: + version "3.35.1" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.35.1.tgz#215247d7edb9e830efa4218ff719beb2803555e2" + integrity sha512-sftHa5qUJY3rs9Zht1WEnmkvXputCyDBczPnr7QDgL8n3qrF3CMXY4VPSYtOLLiOUJcah2WNXREd48iOl6mQIw== dependencies: browserslist "^4.22.2" @@ -5557,9 +5578,9 @@ core-js@^2.6.12: integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== core-js@^3.30.2, core-js@^3.8.2: - version "3.35.0" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.35.0.tgz#58e651688484f83c34196ca13f099574ee53d6b4" - integrity sha512-ntakECeqg81KqMueeGJ79Q5ZgQNR+6eaE8sxGCx62zMbAIj65q+uYvatToew3m6eAGdU4gNZwpZ34NMe4GYswg== + version "3.35.1" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.35.1.tgz#9c28f8b7ccee482796f8590cc8d15739eaaf980c" + integrity sha512-IgdsbxNyMskrTFxa9lWHyMwAJU5gXOPP+1yO+K59d50VLVAIDAbs7gIv705KzALModfK3ZrSZTPNpC0PQgIZuw== core-util-is@~1.0.0: version "1.0.3" @@ -5763,7 +5784,7 @@ d3-delaunay@^6.0.4: resolved "https://registry.yarnpkg.com/d3-format/-/d3-format-3.1.0.tgz#9260e23a28ea5cb109e93b21a06e24e2ebd55641" integrity sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA== -"d3-interpolate@1.2.0 - 3": +"d3-interpolate@1.2.0 - 3", d3-interpolate@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/d3-interpolate/-/d3-interpolate-3.0.1.tgz#3c47aa5b32c5b3dfb56ef3fd4342078a632b400d" integrity sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g== @@ -6077,11 +6098,11 @@ define-property@^2.0.2: isobject "^3.0.1" delaunator@5: - version "5.0.0" - resolved "https://registry.yarnpkg.com/delaunator/-/delaunator-5.0.0.tgz#60f052b28bd91c9b4566850ebf7756efe821d81b" - integrity sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw== + version "5.0.1" + resolved "https://registry.yarnpkg.com/delaunator/-/delaunator-5.0.1.tgz#39032b08053923e924d6094fe2cde1a99cc51278" + integrity sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw== dependencies: - robust-predicates "^3.0.0" + robust-predicates "^3.0.2" delay@^5.0.0: version "5.0.0" @@ -6280,9 +6301,9 @@ dotenv-expand@~10.0.0: integrity sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A== dotenv@~16.3.1: - version "16.3.1" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.3.1.tgz#369034de7d7e5b120972693352a3bf112172cc3e" - integrity sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ== + version "16.3.2" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.3.2.tgz#3cb611ce5a63002dbabf7c281bc331f69d28f03f" + integrity sha512-HTlk5nmhkm8F6JcdXvHIzaorzCoziNQT9mGxLPVXW8wJF1TiGSL60ZGB4gHWabHOaMmWmhvk2/lPHfnBiT78AQ== duplexer2@^0.1.2, duplexer2@~0.1.4: version "0.1.4" @@ -6320,10 +6341,10 @@ ejs@^3.1.7: dependencies: jake "^10.8.5" -electron-to-chromium@^1.4.601: - version "1.4.625" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.625.tgz#a9a1d18ee911f9074a9c42d9e84b1c79b29f4059" - integrity sha512-DENMhh3MFgaPDoXWrVIqSPInQoLImywfCwrSmVl3cf9QHzoZSiutHwGaB/Ql3VkqcQV30rzgdM+BjKqBAJxo5Q== +electron-to-chromium@^1.4.648: + version "1.4.650" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.650.tgz#b38ef9de16991b9f7b924246770576ab91ab3d64" + integrity sha512-sYSQhJCJa4aGA1wYol5cMQgekDBlbVfTRavlGZVr3WZpDdOPcp6a6xUnFfrt8TqZhsBYYbDxJZCjGfHuGupCRQ== emoji-regex@^8.0.0: version "8.0.0" @@ -6749,10 +6770,10 @@ eslint-plugin-import@^2.29.1: semver "^6.3.1" tsconfig-paths "^3.15.0" -eslint-plugin-jsdoc@^48.0.2: - version "48.0.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-48.0.2.tgz#b843107e8caec57b8b463f04797be3b30d6a52da" - integrity sha512-CBFl5Jc7+jlV36RwDm+PQ8Uw5r28pn2/uW/OaB+Gw5bFwn4Py/1eYMZ3hGf9S4meUFZ/sRvS+hVif2mRAp6WqQ== +eslint-plugin-jsdoc@^48.0.4: + version "48.0.4" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-48.0.4.tgz#ca54da8937b2f6fd242a16dbb1b9ff5050baf223" + integrity sha512-A0cH+5svWPXzGZszBjXA1t0aAqVGS+/x3i02KFmb73rU0iMLnadEcVWcD/dGBZHIfAMKr3YpWh58f6wn4N909w== dependencies: "@es-joy/jsdoccomment" "~0.41.0" are-docs-informative "^0.0.2" @@ -7205,9 +7226,9 @@ fastest-levenshtein@^1.0.12: integrity sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg== fastq@^1.6.0: - version "1.16.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.16.0.tgz#83b9a9375692db77a822df081edb6a9cf6839320" - integrity sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA== + version "1.17.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.0.tgz#ca5e1a90b5e68f97fc8b61330d5819b82f5fab03" + integrity sha512-zGygtijUMT7jnk3h26kUms3BkSDp4IfIKjmnqI2tvx6nuBfiF1UqOxbnLfzdv+apBy+53oaImsKtMw/xYbW+1w== dependencies: reusify "^1.0.4" @@ -7394,9 +7415,9 @@ flatted@^3.2.7, flatted@^3.2.9: integrity sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ== flow-parser@0.*: - version "0.226.0" - resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.226.0.tgz#d552ab6762342e0e2b112fc937dd70b59e5e5d05" - integrity sha512-YlH+Y/P/5s0S7Vg14RwXlJMF/JsGfkG7gcKB/zljyoqaPNX9YVsGzx+g6MLTbhZaWbPhs4347aTpmSb9GgiPtw== + version "0.227.0" + resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.227.0.tgz#e50b65be9dc6810438c975e816a68005fbcd5107" + integrity sha512-nOygtGKcX/siZK/lFzpfdHEfOkfGcTW7rNroR1Zsz6T/JxSahPALXVt5qVHq/fgvMJuv096BTKbgxN3PzVBaDA== follow-redirects@^1.0.0, follow-redirects@^1.15.4: version "1.15.5" @@ -7787,18 +7808,6 @@ glob-to-regexp@^0.4.1: resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== -glob@7.1.4: - version "7.1.4" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" - integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - glob@7.1.7: version "7.1.7" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" @@ -7943,9 +7952,9 @@ gm@^1.25.0: debug "^3.1.0" google-auth-library@^9.0.0, google-auth-library@^9.4.2: - version "9.4.2" - resolved "https://registry.yarnpkg.com/google-auth-library/-/google-auth-library-9.4.2.tgz#4831150d2c049c37450a81141be34027657c38b6" - integrity sha512-rTLO4gjhqqo3WvYKL5IdtlCvRqeQ4hxUx/p4lObobY2xotFW3bCQC+Qf1N51CYOfiqfMecdMwW9RIo7dFWYjqw== + version "9.6.0" + resolved "https://registry.yarnpkg.com/google-auth-library/-/google-auth-library-9.6.0.tgz#47a20aad0a358e9798c2adc489a89f1938e9c3ff" + integrity sha512-bM/buCwCeYZjmnzGstwREu3BsnbmnuI064ZGur0NmHyXUxubWMJTCO9kxsyy4T6jdzacHJY3XQWHxX4D4Mc+EA== dependencies: base64-js "^1.3.0" ecdsa-sig-formatter "^1.0.11" @@ -8970,10 +8979,10 @@ isobject@^3.0.0, isobject@^3.0.1: resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== -istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.0.0-alpha.1, istanbul-lib-coverage@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" - integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== +istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz#2d166c4b0644d43a39f04bf6c2edd1e585f31756" + integrity sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg== istanbul-lib-hook@^3.0.0: version "3.0.0" @@ -8993,9 +9002,9 @@ istanbul-lib-instrument@^4.0.0: semver "^6.3.0" istanbul-lib-instrument@^5.0.4: - version "5.1.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.1.0.tgz#7b49198b657b27a730b8e9cb601f1e1bff24c59a" - integrity sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q== + version "5.2.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d" + integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== dependencies: "@babel/core" "^7.12.3" "@babel/parser" "^7.14.7" @@ -9004,40 +9013,39 @@ istanbul-lib-instrument@^5.0.4: semver "^6.3.0" istanbul-lib-processinfo@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.2.tgz#e1426514662244b2f25df728e8fd1ba35fe53b9c" - integrity sha512-kOwpa7z9hme+IBPZMzQ5vdQj8srYgAtaRqeI48NGmAQ+/5yKiHLV0QbYqQpxsdEF0+w14SoB8YbnHKcXE2KnYw== + version "2.0.3" + resolved "https://registry.yarnpkg.com/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.3.tgz#366d454cd0dcb7eb6e0e419378e60072c8626169" + integrity sha512-NkwHbo3E00oybX6NGJi6ar0B29vxyvNwoC7eJ4G4Yq28UfY758Hgn/heV8VRFhevPED4LXfFz0DQ8z/0kw9zMg== dependencies: archy "^1.0.0" - cross-spawn "^7.0.0" - istanbul-lib-coverage "^3.0.0-alpha.1" - make-dir "^3.0.0" + cross-spawn "^7.0.3" + istanbul-lib-coverage "^3.2.0" p-map "^3.0.0" rimraf "^3.0.0" - uuid "^3.3.3" + uuid "^8.3.2" istanbul-lib-report@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" - integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== + version "3.0.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#908305bac9a5bd175ac6a74489eafd0fc2445a7d" + integrity sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw== dependencies: istanbul-lib-coverage "^3.0.0" - make-dir "^3.0.0" + make-dir "^4.0.0" supports-color "^7.1.0" istanbul-lib-source-maps@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz#75743ce6d96bb86dc7ee4352cf6366a23f0b1ad9" - integrity sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg== + version "4.0.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" + integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== dependencies: debug "^4.1.1" istanbul-lib-coverage "^3.0.0" source-map "^0.6.1" -istanbul-reports@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.0.2.tgz#d593210e5000683750cb09fc0644e4b6e27fd53b" - integrity sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw== +istanbul-reports@^3.0.2, istanbul-reports@^3.1.4: + version "3.1.6" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.6.tgz#2544bcab4768154281a2f0870471902704ccaa1a" + integrity sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg== dependencies: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" @@ -10032,7 +10040,7 @@ lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17 resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== -log-symbols@4.1.0, log-symbols@^4.1.0: +log-symbols@4.1.0, log-symbols@^4.0.0, log-symbols@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== @@ -10083,9 +10091,9 @@ lowercase-keys@^2.0.0: integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== lru-cache@*, lru-cache@^10.0.1, "lru-cache@^9.1.1 || ^10.0.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.1.0.tgz#2098d41c2dc56500e6c88584aa656c84de7d0484" - integrity sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag== + version "10.2.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.2.0.tgz#0bd445ca57363465900f4d1f9bd8db343a4d95c3" + integrity sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q== lru-cache@^4.0.1: version "4.1.5" @@ -10129,7 +10137,7 @@ make-array@^1.0.5: resolved "https://registry.yarnpkg.com/make-array/-/make-array-1.0.5.tgz#326a7635c756a9f61ce0b2a6fdd5cc3460419bcb" integrity sha512-sgK2SAzxT19rWU+qxKUcn6PAh/swiIiz2F8C2cZjLc1z4iwYIfdoihqFIDQ8BDzAGtWPYJ6Sr13K1j/DXynDLA== -make-dir@4.0.0: +make-dir@4.0.0, make-dir@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-4.0.0.tgz#c3c2307a771277cd9638305f915c29ae741b614e" integrity sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw== @@ -10224,9 +10232,9 @@ markdown-it@14.0.0: uc.micro "^2.0.0" markdown-to-jsx@^7.4.0: - version "7.4.0" - resolved "https://registry.yarnpkg.com/markdown-to-jsx/-/markdown-to-jsx-7.4.0.tgz#4606c5c549a6f6cb87604c35f5ee4f42959ffb6b" - integrity sha512-zilc+MIkVVXPyTb4iIUTIz9yyqfcWjszGXnwF9K/aiBWcHXFcmdEMTkG01/oQhwSCH7SY1BnG6+ev5BzWmbPrg== + version "7.4.1" + resolved "https://registry.yarnpkg.com/markdown-to-jsx/-/markdown-to-jsx-7.4.1.tgz#1ed6a60f8f9cd944bec39d9923fbbc8d3d60dcb9" + integrity sha512-GbrbkTnHp9u6+HqbPRFJbObi369AgJNXi/sGqq5HRsoZW063xR1XDCaConqq+whfEIAlzB1YPnOgsPc7B7bc/A== markdownlint-cli2-formatter-default@0.0.4: version "0.0.4" @@ -11142,12 +11150,12 @@ nwsapi@^2.2.7: resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.7.tgz#738e0707d3128cb750dddcfe90e4610482df0f30" integrity sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ== -nx@17.2.8, "nx@>=17.1.2 < 18": - version "17.2.8" - resolved "https://registry.yarnpkg.com/nx/-/nx-17.2.8.tgz#09482acd5d9b64c115d5ccf12417f1af2787d4d1" - integrity sha512-rM5zXbuXLEuqQqcjVjClyvHwRJwt+NVImR2A6KFNG40Z60HP6X12wAxxeLHF5kXXTDRU0PFhf/yACibrpbPrAw== +nx@17.3.0, "nx@>=17.1.2 < 18": + version "17.3.0" + resolved "https://registry.yarnpkg.com/nx/-/nx-17.3.0.tgz#1e77f29a0e904d88d61dcdfff80ae90c6d964e3d" + integrity sha512-CoY0qUrO8xErbA/v/bbfDGs+KaD9MCO7PReqmIeyrtDNwFl6vnb+U2MpBxCsRP+YH2Oa8hI8Lu+kcnPktx2v6A== dependencies: - "@nrwl/tao" "17.2.8" + "@nrwl/tao" "17.3.0" "@yarnpkg/lockfile" "^1.1.0" "@yarnpkg/parsers" "3.0.0-rc.46" "@zkochan/js-yaml" "0.0.6" @@ -11162,16 +11170,16 @@ nx@17.2.8, "nx@>=17.1.2 < 18": figures "3.2.0" flat "^5.0.2" fs-extra "^11.1.0" - glob "7.1.4" ignore "^5.0.4" jest-diff "^29.4.1" js-yaml "4.1.0" jsonc-parser "3.2.0" lines-and-columns "~2.0.3" - minimatch "3.0.5" + minimatch "9.0.3" node-machine-id "1.1.12" npm-run-path "^4.0.1" open "^8.4.0" + ora "5.3.0" semver "7.5.3" string-width "^4.2.3" strong-log-transformer "^2.1.0" @@ -11182,16 +11190,16 @@ nx@17.2.8, "nx@>=17.1.2 < 18": yargs "^17.6.2" yargs-parser "21.1.1" optionalDependencies: - "@nx/nx-darwin-arm64" "17.2.8" - "@nx/nx-darwin-x64" "17.2.8" - "@nx/nx-freebsd-x64" "17.2.8" - "@nx/nx-linux-arm-gnueabihf" "17.2.8" - "@nx/nx-linux-arm64-gnu" "17.2.8" - "@nx/nx-linux-arm64-musl" "17.2.8" - "@nx/nx-linux-x64-gnu" "17.2.8" - "@nx/nx-linux-x64-musl" "17.2.8" - "@nx/nx-win32-arm64-msvc" "17.2.8" - "@nx/nx-win32-x64-msvc" "17.2.8" + "@nx/nx-darwin-arm64" "17.3.0" + "@nx/nx-darwin-x64" "17.3.0" + "@nx/nx-freebsd-x64" "17.3.0" + "@nx/nx-linux-arm-gnueabihf" "17.3.0" + "@nx/nx-linux-arm64-gnu" "17.3.0" + "@nx/nx-linux-arm64-musl" "17.3.0" + "@nx/nx-linux-x64-gnu" "17.3.0" + "@nx/nx-linux-x64-musl" "17.3.0" + "@nx/nx-win32-arm64-msvc" "17.3.0" + "@nx/nx-win32-x64-msvc" "17.3.0" nyc@^15.1.0: version "15.1.0" @@ -11427,6 +11435,20 @@ optionator@^0.9.3: prelude-ls "^1.2.1" type-check "^0.4.0" +ora@5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/ora/-/ora-5.3.0.tgz#fb832899d3a1372fe71c8b2c534bbfe74961bb6f" + integrity sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g== + dependencies: + bl "^4.0.3" + chalk "^4.1.0" + cli-cursor "^3.1.0" + cli-spinners "^2.5.0" + is-interactive "^1.0.0" + log-symbols "^4.0.0" + strip-ansi "^6.0.0" + wcwidth "^1.0.1" + ora@^5.4.1: version "5.4.1" resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18" @@ -12908,9 +12930,9 @@ reusify@^1.0.4: integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== rfdc@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.0.tgz#d0b7c441ab2720d05dc4cf26e01c89631d9da08b" - integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA== + version "1.3.1" + resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.1.tgz#2b6d4df52dffe8bb346992a10ea9451f24373a8f" + integrity sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg== rimraf@2, rimraf@^2.6.3: version "2.7.1" @@ -12947,7 +12969,7 @@ rimraf@~2.6.2: dependencies: glob "^7.1.3" -robust-predicates@^3.0.0: +robust-predicates@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/robust-predicates/-/robust-predicates-3.0.2.tgz#d5b28528c4824d20fc48df1928d41d9efa1ad771" integrity sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg== @@ -13071,7 +13093,7 @@ schema-utils@^3.0.0, schema-utils@^3.1.1, schema-utils@^3.2.0: ajv "^6.12.5" ajv-keywords "^3.5.2" -schema-utils@^4.0.0: +schema-utils@^4.0.0, schema-utils@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.2.0.tgz#70d7c93e153a273a805801882ebd3bff20d89c8b" integrity sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw== @@ -13136,7 +13158,7 @@ serialize-javascript@6.0.0: dependencies: randombytes "^2.1.0" -serialize-javascript@^6.0.0, serialize-javascript@^6.0.1: +serialize-javascript@^6.0.1, serialize-javascript@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.2.tgz#defa1e055c83bf6d59ea805d8da862254eb6a6c2" integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g== @@ -13427,9 +13449,9 @@ socket.io-parser@~4.2.4: debug "~4.3.1" socket.io@^4.4.1: - version "4.7.3" - resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-4.7.3.tgz#a0f1a4511eb23fe182ae3a018875a31501be3ffc" - integrity sha512-SE+UIQXBQE+GPG2oszWMlsEmWtHVqw/h1VrYJGK5/MC7CH5p58N448HwIrtREcvR4jfdOJAY4ieQfxMr55qbbw== + version "4.7.4" + resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-4.7.4.tgz#2401a2d7101e4bdc64da80b140d5d8b6a8c7738b" + integrity sha512-DcotgfP1Zg9iP/dH9zvAQcWrE0TtbMVwXmlV4T4mqsvY+gw+LqUGPfx2AoVyRk0FLME+GQhufDMyacFmw7ksqw== dependencies: accepts "~1.3.4" base64id "~2.0.0" @@ -13511,11 +13533,6 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -source-map@^0.7.3: - version "0.7.4" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" - integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== - source-map@~0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.2.0.tgz#dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d" @@ -13549,9 +13566,9 @@ spdx-correct@^3.0.0: spdx-license-ids "^3.0.0" spdx-exceptions@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" - integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== + version "2.4.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.4.0.tgz#c07a4ede25b16e4f78e6707bbd84b15a45c19c1b" + integrity sha512-hcjppoJ68fhxA/cjbN4T8N6uCUejN8yFw69ttpqtBeCbF3u13n7mb31NB9jKwGTTWWnt9IbRA/mf1FprYS8wfw== spdx-expression-parse@^3.0.0: version "3.0.1" @@ -13968,9 +13985,9 @@ tar-stream@^2.1.4, tar-stream@^2.2.0, tar-stream@~2.2.0: readable-stream "^3.1.1" tar-stream@^3.1.5: - version "3.1.6" - resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-3.1.6.tgz#6520607b55a06f4a2e2e04db360ba7d338cc5bab" - integrity sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg== + version "3.1.7" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-3.1.7.tgz#24b3fb5eabada19fe7338ed6d26e5f7c482e792b" + integrity sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ== dependencies: b4a "^1.6.4" fast-fifo "^1.2.0" @@ -14012,7 +14029,7 @@ temp@^0.8.4: dependencies: rimraf "~2.6.2" -terser-webpack-plugin@^5.3.7: +terser-webpack-plugin@^5.3.10: version "5.3.10" resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz#904f4c9193c6fd2a03f693a2150c62a92f40d199" integrity sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w== @@ -14024,9 +14041,9 @@ terser-webpack-plugin@^5.3.7: terser "^5.26.0" terser@^5.10.0, terser@^5.26.0: - version "5.26.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.26.0.tgz#ee9f05d929f4189a9c28a0feb889d96d50126fe1" - integrity sha512-dytTGoE2oHgbNV9nTzgBEPaqAWvcJNl66VZ0BkJqlvp71IjO8CxdBx/ykCNb47cLnCmCvRZ6ZR0tLkqvZCdVBQ== + version "5.27.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.27.0.tgz#70108689d9ab25fef61c4e93e808e9fd092bf20c" + integrity sha512-bi1HRwVRskAjheeYl291n3JC4GgO/Ty4z1nVs5AAsmonJulGxpSektecnNedrwK9C7vpvVtcX3cw00VSLt7U2A== dependencies: "@jridgewell/source-map" "^0.3.3" acorn "^8.8.2" @@ -14668,12 +14685,7 @@ utils-merge@1.0.1: resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== -uuid@^3.3.3: - version "3.4.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" - integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== - -uuid@^8.1.0, uuid@^8.3.0: +uuid@^8.1.0, uuid@^8.3.0, uuid@^8.3.2: version "8.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== @@ -14683,14 +14695,14 @@ uuid@^9.0.0: resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.1.tgz#e188d4c8853cc722220392c424cd637f32293f30" integrity sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA== -v8-to-istanbul@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-8.0.0.tgz#4229f2a99e367f3f018fa1d5c2b8ec684667c69c" - integrity sha512-LkmXi8UUNxnCC+JlH7/fsfsKr5AU110l+SYGJimWNkWhxbN5EyeOtm1MJ0hhvqMMOhGwBj1Fp70Yv9i+hX0QAg== +v8-to-istanbul@^9.0.0: + version "9.2.0" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz#2ed7644a245cddd83d4e087b9b33b3e62dfd10ad" + integrity sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA== dependencies: + "@jridgewell/trace-mapping" "^0.3.12" "@types/istanbul-lib-coverage" "^2.0.1" - convert-source-map "^1.6.0" - source-map "^0.7.3" + convert-source-map "^2.0.0" v8flags@^3.1.1: version "3.2.0" @@ -14840,19 +14852,19 @@ webpack-sources@^3.2.3: resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== -webpack@^5.89.0: - version "5.89.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.89.0.tgz#56b8bf9a34356e93a6625770006490bf3a7f32dc" - integrity sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw== +webpack@^5.90.0: + version "5.90.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.90.0.tgz#313bfe16080d8b2fee6e29b6c986c0714ad4290e" + integrity sha512-bdmyXRCXeeNIePv6R6tGPyy20aUobw4Zy8r0LUS2EWO+U+Ke/gYDgsCh7bl5rB6jPpr4r0SZa6dPxBxLooDT3w== dependencies: "@types/eslint-scope" "^3.7.3" - "@types/estree" "^1.0.0" + "@types/estree" "^1.0.5" "@webassemblyjs/ast" "^1.11.5" "@webassemblyjs/wasm-edit" "^1.11.5" "@webassemblyjs/wasm-parser" "^1.11.5" acorn "^8.7.1" acorn-import-assertions "^1.9.0" - browserslist "^4.14.5" + browserslist "^4.21.10" chrome-trace-event "^1.0.2" enhanced-resolve "^5.15.0" es-module-lexer "^1.2.1" @@ -14866,7 +14878,7 @@ webpack@^5.89.0: neo-async "^2.6.2" schema-utils "^3.2.0" tapable "^2.1.1" - terser-webpack-plugin "^5.3.7" + terser-webpack-plugin "^5.3.10" watchpack "^2.4.0" webpack-sources "^3.2.3" @@ -15183,7 +15195,7 @@ yargs-parser@^18.1.2: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@^20.2.2, yargs-parser@^20.2.3, yargs-parser@^20.2.7: +yargs-parser@^20.2.2, yargs-parser@^20.2.3, yargs-parser@^20.2.7, yargs-parser@^20.2.9: version "20.2.9" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==