MUI X: Build complex and data-rich applications using a growing list of advanced React components, like the Data Grid, Date and Time Pickers, Charts, and more!
Published by LukasTy 11 months ago
We'd like to offer a big thanks to the 11 contributors who made this release possible. Here are some highlights β¨:
@mui/[email protected]
@mui/[email protected]
Same changes as in @mui/[email protected]
.
@mui/[email protected]
Same changes as in @mui/[email protected]
.
@mui/[email protected]
defaultCalendarMonth
prop (#11138) @flaviendelangleDateCalendar
crashing when given an invalid value (#11101) @flaviendelangle@mui/[email protected]
Same changes as in @mui/[email protected]
.
@mui/[email protected]
ChartsTooltip
component setup (#11157) @LukasTyCustom slots and subcomponents
page (#11003) @lhilgert9Published by noraleonte 11 months ago
We'd like to offer a big thanks to the 3 contributors who made this release possible. Here are some highlights β¨:
@mui/[email protected]
/ @mui/[email protected]
The string argument of the dayOfWeekFormatter
prop has been replaced in favor of the date object to allow more flexibility.
<DateCalendar
// If you were still using the day string, you can get it back with your date library.
- dayOfWeekFormatter={dayStr => `${dayStr}.`}
+ dayOfWeekFormatter={day => `${day.format('dd')}.`}
// If you were already using the day object, just remove the first argument.
- dayOfWeekFormatter={(_dayStr, day) => `${day.format('dd')}.`}
+ dayOfWeekFormatter={day => `${day.format('dd')}.`}
/>
The imports related to the calendarHeader
slot have been moved from @mui/x-date-pickers/DateCalendar
to @mui/x-date-pickers/PIckersCalendarHeader
:
export {
pickersCalendarHeaderClasses,
PickersCalendarHeaderClassKey,
PickersCalendarHeaderClasses,
PickersCalendarHeader,
PickersCalendarHeaderProps,
PickersCalendarHeaderSlotsComponent,
PickersCalendarHeaderSlotsComponentsProps,
ExportedPickersCalendarHeaderProps,
-} from '@mui/x-date-pickers/DateCalendar';
+} from '@mui/x-date-pickers/PickersCalendarHeader';
The monthAndYear
format has been removed.
It was used in the header of the calendar views, you can replace it with the new format
prop of the calendarHeader
slot:
<LocalizationProvider
adapter={AdapterDayJS}
- formats={{ monthAndYear: 'MM/YYYY' }}
/>
<DatePicker
+ slotProps={{ calendarHeader: { format: 'MM/YYYY' }}}
/>
<DateRangePicker
+ slotProps={{ calendarHeader: { format: 'MM/YYYY' }}}
/>
<LocalizationProvider />
The adapter.getDiff
method have been removed, you can directly use your date library:
// For Day.js
-const diff = adapter.getDiff(value, comparing, unit);
+const diff = value.diff(comparing, unit);
// For Luxon
-const diff = adapter.getDiff(value, comparing, unit);
+const getDiff = (value: DateTime, comparing: DateTime | string, unit?: AdapterUnits) => {
+ const parsedComparing = typeof comparing === 'string'
+ ? DateTime.fromJSDate(new Date(comparing))
+ : comparing;
+ if (unit) {
+ return Math.floor(value.diff(comparing).as(unit));
+ }
+ return value.diff(comparing).as('millisecond');
+};
+
+const diff = getDiff(value, comparing, unit);
// For DateFns
-const diff = adapter.getDiff(value, comparing, unit);
+const getDiff = (value: Date, comparing: Date | string, unit?: AdapterUnits) => {
+ const parsedComparing = typeof comparing === 'string' ? new Date(comparing) : comparing;
+ switch (unit) {
+ case 'years':
+ return dateFns.differenceInYears(value, parsedComparing);
+ case 'quarters':
+ return dateFns.differenceInQuarters(value, parsedComparing);
+ case 'months':
+ return dateFns.differenceInMonths(value, parsedComparing);
+ case 'weeks':
+ return dateFns.differenceInWeeks(value, parsedComparing);
+ case 'days':
+ return dateFns.differenceInDays(value, parsedComparing);
+ case 'hours':
+ return dateFns.differenceInHours(value, parsedComparing);
+ case 'minutes':
+ return dateFns.differenceInMinutes(value, parsedComparing);
+ case 'seconds':
+ return dateFns.differenceInSeconds(value, parsedComparing);
+ default: {
+ return dateFns.differenceInMilliseconds(value, parsedComparing);
+ }
+ }
+};
+
+const diff = getDiff(value, comparing, unit);
// For Moment
-const diff = adapter.getDiff(value, comparing, unit);
+const diff = value.diff(comparing, unit);
The adapter.getFormatHelperText
method have been removed, you can use the adapter.expandFormat
instead:
-const expandedFormat = adapter.getFormatHelperText(format);
+const expandedFormat = adapter.expandFormat(format);
And if you need the exact same output you can apply the following transformation:
// For Day.js
-const expandedFormat = adapter.getFormatHelperText(format);
+const expandedFormat = adapter.expandFormat(format).replace(/a/gi, '(a|p)m').toLocaleLowerCase();
// For Luxon
-const expandedFormat = adapter.getFormatHelperText(format);
+const expandedFormat = adapter.expandFormat(format).replace(/(a)/g, '(a|p)m').toLocaleLowerCase();
// For DateFns
-const expandedFormat = adapter.getFormatHelperText(format);
+const expandedFormat = adapter.expandFormat(format).replace(/(aaa|aa|a)/g, '(a|p)m').toLocaleLowerCase();
// For Moment
-const expandedFormat = adapter.getFormatHelperText(format);
+const expandedFormat = adapter.expandFormat(format).replace(/a/gi, '(a|p)m').toLocaleLowerCase();
The adapter.getMeridiemText
method have been removed, you can use the adapter.setHours
, adapter.date
and adapter.format
methods to recreate its behavior:
-const meridiem = adapter.getMeridiemText('am');
+const getMeridiemText = (meridiem: 'am' | 'pm') => {
+ const date = adapter.setHours(adapter.date()!, meridiem === 'am' ? 2 : 14);
+ return utils.format(date, 'meridiem');
+};
+
+const meridiem = getMeridiemText('am');
The adapter.getMonthArray
method have been removed, you can use the adapter.startOfYear
and adapter.addMonths
methods to recreate its behavior:
-const monthArray = adapter.getMonthArray(value);
+const getMonthArray = (year) => {
+ const firstMonth = utils.startOfYear(year);
+ const months = [firstMonth];
+
+ while (months.length < 12) {
+ const prevMonth = months[months.length - 1];
+ months.push(utils.addMonths(prevMonth, 1));
+ }
+
+ return months;
+}
+
+const monthArray = getMonthArray(value);
The adapter.getNextMonth
method have been removed, you can use the adapter.addMonths
method instead:
-const nextMonth = adapter.getNextMonth(value);
+const nextMonth = adapter.addMonths(value, 1);
The adapter.getPreviousMonth
method have been removed, you can use the adapter.addMonths
method instead:
-const previousMonth = adapter.getPreviousMonth(value);
+const previousMonth = adapter.addMonths(value, -1);
The adapter.getWeekdays
method have been removed, you can use the adapter.startOfWeek
and adapter.addDays
methods instead:
-const weekDays = adapter.getWeekdays(value);
+const getWeekdays = (value) => {
+ const start = adapter.startOfWeek(value);
+ return [0, 1, 2, 3, 4, 5, 6].map((diff) => utils.addDays(start, diff));
+};
+
+const weekDays = getWeekdays(value);
The isNull
method have been removed, you can replace it with a very basic check:
-const isNull = adapter.isNull(value);
+const isNull = value === null;
The adapter.mergeDateAndTime
method have been removed, you can use the adapter.setHours
, adapter.setMinutes
, and adapter.setSeconds
methods to recreate its behavior:
-const result = adapter.mergeDateAndTime(valueWithDate, valueWithTime);
+const mergeDateAndTime = <TDate>(
+ dateParam,
+ timeParam,
+ ) => {
+ let mergedDate = dateParam;
+ mergedDate = utils.setHours(mergedDate, utils.getHours(timeParam));
+ mergedDate = utils.setMinutes(mergedDate, utils.getMinutes(timeParam));
+ mergedDate = utils.setSeconds(mergedDate, utils.getSeconds(timeParam));
+
+ return mergedDate;
+ };
+
+const result = mergeDateAndTime(valueWithDate, valueWithTime);
The adapter.parseISO
method have been removed, you can directly use your date library:
// For Day.js
-const value = adapter.parseISO(isoString);
+const value = dayjs(isoString);
// For Luxon
-const value = adapter.parseISO(isoString);
+const value = DateTime.fromISO(isoString);
// For DateFns
-const value = adapter.parseISO(isoString);
+const value = dateFns.parseISO(isoString);
// For Moment
-const value = adapter.parseISO(isoString);
+const value = moment(isoString, true);
The adapter.toISO
method have been removed, you can directly use your date library:
-const isoString = adapter.toISO(value);
+const isoString = value.toISOString();
+const isoString = value.toUTC().toISO({ format: 'extended' });
+const isoString = dateFns.formatISO(value, { format: 'extended' });
+const isoString = value.toISOString();
The adapter.isEqual
method used to accept any type of value for its two input and tried to parse them before checking if they were equal.
The method has been simplified and now only accepts an already-parsed date or null
(ie: the same formats used by the value
prop in the pickers)
const adapterDayjs = new AdapterDayjs();
const adapterLuxon = new AdapterLuxon();
const adapterDateFns = new AdapterDateFns();
const adapterMoment = new AdatperMoment();
// Supported formats
const isEqual = adapterDayjs.isEqual(null, null); // Same for the other adapters
const isEqual = adapterLuxon.isEqual(DateTime.now(), DateTime.fromISO('2022-04-17'));
const isEqual = adapterMoment.isEqual(moment(), moment('2022-04-17'));
const isEqual = adapterDateFns.isEqual(new Date(), new Date('2022-04-17'));
// Non-supported formats (JS Date)
-const isEqual = adapterDayjs.isEqual(new Date(), new Date('2022-04-17'));
+const isEqual = adapterDayjs.isEqual(dayjs(), dayjs('2022-04-17'));
-const isEqual = adapterLuxon.isEqual(new Date(), new Date('2022-04-17'));
+const isEqual = adapterLuxon.isEqual(DateTime.now(), DateTime.fromISO('2022-04-17'));
-const isEqual = adapterMoment.isEqual(new Date(), new Date('2022-04-17'));
+const isEqual = adapterMoment.isEqual(moment(), moment('2022-04-17'));
// Non-supported formats (string)
-const isEqual = adapterDayjs.isEqual('2022-04-16', '2022-04-17');
+const isEqual = adapterDayjs.isEqual(dayjs('2022-04-17'), dayjs('2022-04-17'));
-const isEqual = adapterLuxon.isEqual('2022-04-16', '2022-04-17');
+const isEqual = adapterLuxon.isEqual(DateTime.fromISO('2022-04-17'), DateTime.fromISO('2022-04-17'));
-const isEqual = adapterMoment.isEqual('2022-04-16', '2022-04-17');
+const isEqual = adapterMoment.isEqual(moment('2022-04-17'), moment('2022-04-17'));
-const isEqual = adapterDateFns.isEqual('2022-04-16', '2022-04-17');
+const isEqual = adapterDateFns.isEqual(new Date('2022-04-17'), new Date('2022-04-17'));
The dateLibInstance
prop of LocalizationProvider
does not work with AdapterDayjs
anymore (#11023). This prop was used to set the pickers in UTC mode before the implementation of a proper timezone support in the components.
You can learn more about the new approach on the dedicated doc page.
// When a `value` or a `defaultValue` is provided
<LocalizationProvider
adapter={AdapterDayjs}
- dateLibInstance={dayjs.utc}
>
<DatePicker value={dayjs.utc('2022-04-17')} />
</LocalizationProvider>
// When no `value` or `defaultValue` is provided
<LocalizationProvider
adapter={AdapterDayjs}
- dateLibInstance={dayjs.utc}
>
- <DatePicker />
+ <DatePicker timezone="UTC" />
</LocalizationProvider>
The property hasLeadingZeros
has been removed from the sections in favor of the more precise hasLeadingZerosInFormat
and hasLeadingZerosInInput
properties (#10994). To keep the same behavior, you can replace it by hasLeadingZerosInFormat
:
const fieldRef = React.useRef<FieldRef<FieldSection>>(null);
React.useEffect(() => {
const firstSection = fieldRef.current!.getSections()[0];
- console.log(firstSection.hasLeadingZeros);
+ console.log(firstSection.hasLeadingZerosInFormat);
}, []);
return (
<DateField unstableFieldRef={fieldRef} />
);
The adapter.getYearRange
method used to accept two params and now accepts a tuple to be consistent with the adapter.isWithinRange
method (#10978):
-adapter.getYearRange(start, end);
+adapter.getYearRange([start, end])
The adapter.isValid
method used to accept any type of value and tried to parse them before checking their validity (#10971).
The method has been simplified and now only accepts an already-parsed date or null
.
Which is the same type as the one accepted by the components value
prop.
const adapterDayjs = new AdapterDayjs();
const adapterLuxon = new AdapterLuxon();
const adapterDateFns = new AdapterDateFns();
const adapterMoment = new AdatperMoment();
// Supported formats
const isValid = adapterDayjs.isValid(null); // Same for the other adapters
const isValid = adapterLuxon.isValid(DateTime.now());
const isValid = adapterMoment.isValid(moment());
const isValid = adapterDateFns.isValid(new Date());
// Non-supported formats (JS Date)
-const isValid = adapterDayjs.isValid(new Date('2022-04-17'));
+const isValid = adapterDayjs.isValid(dayjs('2022-04-17'));
-const isValid = adapterLuxon.isValid(new Date('2022-04-17'));
+const isValid = adapterLuxon.isValid(DateTime.fromISO('2022-04-17'));
-const isValid = adapterMoment.isValid(new Date('2022-04-17'));
+const isValid = adapterMoment.isValid(moment('2022-04-17'));
// Non-supported formats (string)
-const isValid = adapterDayjs.isValid('2022-04-17');
+const isValid = adapterDayjs.isValid(dayjs('2022-04-17'));
-const isValid = adapterLuxon.isValid('2022-04-17');
+const isValid = adapterLuxon.isValid(DateTime.fromISO('2022-04-17'));
-const isValid = adapterMoment.isValid('2022-04-17');
+const isValid = adapterMoment.isValid(moment('2022-04-17'));
-const isValid = adapterDateFns.isValid('2022-04-17');
+const isValid = adapterDateFns.isValid(new Date('2022-04-17'));
adapter.getYearRange
to be consistent with adapter.isWithinRange
(#10978) @flaviendelanglecomponents
/ componentsProps
typings (#11040) @flaviendelangleadapter.isEqual
method to accept TDate | null
instead of any
(#10976) @flaviendelangleadapter.isValid
method to accept TDate | null
instead of any
(#10971) @flaviendelanglehasLeadingZeros
property from FieldSection
(#10994) @flaviendelangledayjs
(#11023) @flaviendelanglecalendarHeader
slot to @mui/x-date-pickers/PickersCalendarHeader
(#11020) @flaviendelangledayOfWeekFormatter
prop (#10992) @flaviendelanglenext
tag (#10996) @LukasTyPublished by michelengelen 12 months ago
We're thrilled to announce the first alpha release of our next major version, v7.
This release introduces a few breaking changes, paving the way for the upcoming features like Pivoting and DateTimeRangePicker.
A special shoutout to thank the 12 contributors who made this release possible. Here are some highlights β¨:
renderHeader
is used (#10961) @cherniavskii<ChartsReferenceLine />
component is now availablecomponents
and componentsProps
props have been removed. Use slots
and slotProps
instead. See components section for more details.getRowsToExport
function.getApplyFilterFnV7
in GridFilterOperator
was renamed to getApplyFilterFn
.getApplyFilterFnV7
directly - rename it to getApplyFilterFn
.getApplyFilterFn
has changed for performance reasons: const getApplyFilterFn: GetApplyFilterFn<any, unknown> = (filterItem) => {
if (!filterItem.value) {
return null;
}
const filterRegex = new RegExp(escapeRegExp(filterItem.value), 'i');
- return (cellParams) => {
- const { value } = cellParams;
+ return (value, row, colDef, apiRef) => {
return value != null ? filterRegex.test(String(value)) : false;
};
}
getApplyQuickFilterFnV7
in GridColDef
was renamed to getApplyQuickFilterFn
.getApplyQuickFilterFnV7
directly - rename it to getApplyQuickFilterFn
.getApplyQuickFilterFn
has changed for performance reasons: const getGridStringQuickFilterFn: GetApplyQuickFilterFn<any, unknown> = (value) => {
if (!value) {
return null;
}
const filterRegex = new RegExp(escapeRegExp(value), 'i');
- return (cellParams) => {
- const { formattedValue } = cellParams;
+ return (value, row, column, apiRef) => {
+ let formattedValue = apiRef.current.getRowFormattedValue(row, column);
return formattedValue != null ? filterRegex.test(formattedValue.toString()) : false;
};
};
@mui/[email protected]
undefined
slot value (#10937) @romgrkcomponents
and componentsProps
(#10911) @MBilalShafi@mui/[email protected]
Same changes as in @mui/[email protected]
, plus:
@mui/[email protected]
Same changes as in @mui/[email protected]
, plus:
renderHeader
is used (#10936) @cherniavskiicomponents
and componentsProps
props have been removed. Use slots
and slotProps
instead.@mui/[email protected]
MultiInputTimeRangeField
section selection (#10922) @noraleontereferenceDate
behavior in views (#10863) @LukasTycomponents
and componentsProps
props (#10700) @alexfauquette@mui/[email protected]
Same changes as in @mui/[email protected]
.
@mui/[email protected]
Types for slots
and slotProps
got renamed by removing the "Component" which is meaningless for charts.
Unless you imported those types, to create a wrapper, you should not be impacted by this breaking change.
Here is an example of the renaming for the <ChartsTooltip />
component.
-ChartsTooltipSlotsComponent
+ChartsTooltipSlots
-ChartsTooltipSlotComponentProps
+ChartsTooltipSlotProps
<ChartsReferenceLine />
component (#10597) (#10946) @alexfauquetteslots
and slotProps
types (#10875) @alexfauquette@mui/[email protected]
v7.0.0/preset-safe
(#10973) @LukasTy@next
tag to the installation instructions (#10963) @MBilalShafimaster
into next
(#10929) @cherniavskiiPublished by michelengelen 12 months ago
We'd like to offer a big thanks to the 9 contributors who made this release possible. Here are some highlights β¨:
renderHeader
is used (#10961) @cherniavskii<ChartsReferenceLine />
component is now available@mui/[email protected]
undefined
slot values (#10934) @romgrk@mui/[email protected]
Same changes as in @mui/[email protected]
, plus:
@mui/[email protected]
Same changes as in @mui/[email protected]
, plus:
renderHeader
is used (#10961) @cherniavskii@mui/[email protected]
defaultView
(#10889) @LukasTy@mui/[email protected]
Same changes as in @mui/[email protected]
.
@mui/[email protected]
<ChartsReferenceLine />
component (#10597) @wascouPublished by alexfauquette 12 months ago
We'd like to offer a big thanks to the 7 contributors who made this release possible. Here are some highlights β¨:
@mui/[email protected]
gridFilterApi
(#10786) @vu-dao-93undefined
row id (#10670) @romgrk@mui/[email protected]
Same changes as in @mui/[email protected]
.
@mui/[email protected]
Same changes as in @mui/[email protected]
.
@mui/[email protected]
@mui/[email protected]
Same changes as in @mui/[email protected]
.
@mui/[email protected]
focus
(#10843) @michelengelenslot
API descriptions based on slots
or components
(#10879) @LukasTyPublished by flaviendelangle 12 months ago
We'd like to offer a big thanks to the 9 contributors who made this release possible. Here are some highlights β¨:
@mui/[email protected]
@mui/[email protected]
Same changes as in @mui/[email protected]
, plus:
undefined
values passed to valueFormatter
for tree leaf nodes (#10748) @cherniavskii@mui/[email protected]
Same changes as in @mui/[email protected]
, plus:
avg
aggregation to ignore non-numeric values (#10787) @cherniavskiisize
aggregation to ignore undefined
values (#10745) @cherniavskiisum
aggregation to ignore non-numeric values (#10730) @cherniavskiiPublished by romgrk about 1 year ago
We'd like to offer a big thanks to the 7 contributors who made this release possible. Here are some highlights β¨:
@mui/[email protected]
columns
and sortingOrder
props (#10686) @pcorpet@mui/[email protected]
Same changes as in @mui/[email protected]
.
@mui/[email protected]
Same changes as in @mui/[email protected]
.
@mui/[email protected]
onChange
instead of onKeyPress
for Backspace editing (#10494) @flaviendelangleFakeTextField
component (#10687) @flaviendelangle@mui/[email protected]
Same changes as in @mui/[email protected]
, plus:
@mui/[email protected]
width
and height
are resolved (#10714) @alexfauquetteBarChart
(#9926) @alexfauquettestate
externally (#10722) @michelengelen@types
(#10723) @LukasTystyled-components
(#10733) @LukasTyPublished by MBilalShafi about 1 year ago
We'd like to offer a big thanks to the 12 contributors who made this release possible. Here are some highlights β¨:
@mui/[email protected]
LazyLoading
demo crash (#10621) @MBilalShafigetRowId is not defined
error (#10613) @romgrkdate
and dateTime
fields (#10636) @MBilalShafidefault
unless editable (#9997) @gitstart@mui/[email protected]
Same changes as in @mui/[email protected]
, plus:
@mui/[email protected]
Same changes as in @mui/[email protected]
.
@mui/[email protected]
DigitalClock
view renderer (#10624) @LukasTyUTC
false positive (#10586) @alexfauquette@mui/[email protected]
Same changes as in @mui/[email protected]
.
@mui/[email protected]
The charts have a new text display mechanism.
It adds line break support and avoids overlapping text in the legend.
This comes with some breaking changes.
The DOM structure is modified. An intermediary <tspan />
element has been added. This can impact how your style is applied.
- <text>The label</text>
+ <text><tspan>The label</tspan></text>
The top margin has been reduced from 100 to 50 to benefit from the denser legend.
To accurately compute the text size and then place it, styling should be provided as a JS object. For example, to set the legend font size, you should do:
<PieChart
{/** ... */}
slotProps={{
legend: {
labelStyle: {
fontSize: 16,
},
},
}}
/>
Support for other text elements (axis labels and tick labels) will be implemented in follow-up PR.
no-response
workflow (#10491) @MBilalShafitestEval
not invoking test assertions (#10587) @cherniavskiiPublished by cherniavskii about 1 year ago
We'd like to offer a big thanks to the 10 contributors who made this release possible. Here are some highlights β¨:
@mui/[email protected]
disableColumnSelector
demo idempotent (#10548) @MBilalShafi@mui/[email protected]
Same changes as in @mui/[email protected]
.
@mui/[email protected]
Same changes as in @mui/[email protected]
.
@mui/[email protected]
@mui/[email protected]
Same changes as in @mui/[email protected]
, plus:
InputProps
propagation in multi input (#10564) @alexfauquette@mui/[email protected]
onClick
is provided (#10551) @giladappsforceonClick
prop to PieChart (#10506) @giladappsforceslots
/slotProps
for the tooltip (#10515) @alexfauquetteDateRangePicker
example with a Button
trigger (#10485) @LukasTyPublished by michelengelen about 1 year ago
We'd like to offer a big thanks to the 9 contributors who made this release possible. Here are some highlights β¨:
π Add a clearable behavior to all the single input pickers and fields (#9095) @noraleonte
The pickers and fields now have an out-of-the box implementation for clearing the field value. You can see the documentation for this behavior on the Date Picker documentation.
π« Add Date Picker customization playground (#9581) @noraleonte
You can play around with style customization options on the Date Picker documentation.
We are thrilled to hear your feedback about this functionality!
π Fix header filters menu auto closing on render (#10483) @MBilalShafi
π― Fix column headers scroll when theme scoping is used (#10437) @cherniavskii
π Improve Russian (ru-RU) locale on the data grid
π Bugfixes
π Documentation improvements
@mui/[email protected]
global
to globalScope
due to Jest issue (#10470) @romgrk@mui/[email protected]
Same changes as in @mui/[email protected]
, plus:
@mui/[email protected]
Same changes as in @mui/[email protected]
.
@mui/[email protected]
shouldDisableDate
validation (#10502) @michelengelenclearable
field behavior (#9095) @noraleontedayOfWeekFormatter
(#10345) @michelengelen@mui/[email protected]
Same changes as in @mui/[email protected]
.
@mui/[email protected]
@mui/[email protected]
Multiple
generic (#10478) @flaviendelangleGridRenderCellParams
interface (#10435) @cherniavskiiprism-okaidia.css
with docs-infra @oliviertassinariPublished by DanailH about 1 year ago
We'd like to offer a big thanks to the 9 contributors who made this release possible. Here are some highlights β¨:
getRowsToExport
option to print export on the data grid (#10084) @zreecespieces@mui/[email protected]
getRowsToExport
option to print export (#10084) @zreecespiecesInputLabelProps
(#10413) @romgrkGridMenu
prop onClickAway
to onClose
(#10411) @romgrkGridMenu
closes (#10412) @romgrkGridActionsCellItem
(#10344) @romgrkeval
from bundlers (#10329) @romgrkborder: 0
to unmounted focused cell to avoid layout shifts in that row (#10318) @lauri865@mui/[email protected]
Same changes as in @mui/[email protected]
, plus:
@mui/[email protected]
Same changes as in @mui/[email protected]
.
@mui/[email protected]
@mui/[email protected]
Same changes as in @mui/[email protected]
.
@mui/[email protected]
@mui/material
(#10115) @alexfauquette@mui/[email protected]
301
to Material UI @oliviertassinarirowIdentifier
(#10326) @MBilalShafiPublished by noraleonte about 1 year ago
We'd like to offer a big thanks to the 9 contributors who made this release possible. Here are some highlights β¨:
π Fix YearCalendar
and MonthCalendar
accessibility (#10312) @LukasTy
The YearCalendar
and MonthCalendar
items role has been changed from button
to radio
in order to improve the component's a11y support.
If you were relying on the mentioned components having a button
role for items, you will need to update your usage to expect a radio
role instead.
π Improve Japanese (ja-JP), Persian (fa-IR), and Vietnamese (vi-VN) locales on the data grid
π Bugfixes
π Documentation improvements
@mui/[email protected]
@mui/[email protected]
Same changes as in @mui/[email protected]
.
@mui/[email protected]
Same changes as in @mui/[email protected]
, plus:
@mui/[email protected]
YearCalendar
and MonthCalendar
a11y (#10312) @LukasTyTimeClock
meridiem text (#10324) @LukasTy@mui/[email protected]
Same changes as in @mui/[email protected]
.
@mui/[email protected]
barGapRatio
and increase categoryGapRatio
(#10317) @LukasTyeslint
on the package (#10330) @LukasTy@mui/[email protected]
ariaV7
flag for demos using useDemoData
hook (#10204) @cherniavskiiPublished by LukasTy about 1 year ago
We'd like to offer a big thanks to the 10 contributors who made this release possible. Here are some highlights β¨:
anchorRef
behavior on range pickers (#10077) @LukasTy@mui/[email protected]
autoHeight
mode (#10203) @cherniavskiiextendType
(#10175) @oliviertassinari@mui/[email protected]
Same changes as in @mui/[email protected]
, plus:
@mui/[email protected]
Same changes as in @mui/[email protected]
, plus:
@mui/[email protected]
AdapterMoment.getWeekdays
(#10221) @flaviendelangle@mui/[email protected]
Same changes as in @mui/[email protected]
, plus:
anchorRef
behavior (#10077) @LukasTy@mui/[email protected]
@mui/[email protected]
Getting Started
page for the Tree View (#10218) @flaviendelangleCustom opening button
page (#10200) @flaviendelanglee.g.
typo @oliviertassinariBase UI
Portal
for the quick filter recipe (#10188) @DanailHe.g.
typo (#10193) @oliviertassinaribabel-plugin-tester
package (#10243) @LukasTyPublished by alexfauquette about 1 year ago
We'd like to offer a big thanks to the 7 contributors who made this release possible. Here are some highlights β¨:
referenceDate
prop on pickers (#9991) @flaviendelangle@mui/[email protected]
valueFormatter
being persisted on column type change (#10041) @cherniavskiiuseTimeout
(#10179) @romgrk@mui/[email protected]
Same changes as in @mui/[email protected]
.
@mui/[email protected]
Same changes as in @mui/[email protected]
.
@mui/[email protected]
referenceDate
on picker components (and DateRangeCalendar
) (#9991) @flaviendelangle@mui/[email protected]
Same changes as in @mui/[email protected]
.
@mui/[email protected]
DemoContainer
and DemoItem
JSDoc (#10186) @LukasTycustom layout
page (#10184) @LukasTyPublished by flaviendelangle about 1 year ago
We'd like to offer a big thanks to the 10 contributors who made this release possible. Here are some highlights β¨:
@mui/[email protected]
@mui/[email protected]
Same changes as in @mui/[email protected]
.
@mui/[email protected]
Same changes as in @mui/[email protected]
.
@mui/[email protected]
ownerState
on desktopPaper
slot props (#10103) @LukasTytransform-origin
when popper opens to top
(#10069) @LukasTyYearCalendar
scrolling (#10135) @LukasTydateWithTimezone
method (#10029) @flaviendelangleopenPickerButton
toggle picker (#10109) @noraleontereduceAnimations
default rule (#9864) @LukasTy@mui/[email protected]
Same changes as in @mui/[email protected]
.
@mui/[email protected]
slotProps
propagation (#10105) @alexfauquetteuseLazyRef
@oliviertassinarino-response
workflow (#10102) @DanailHPublished by romgrk about 1 year ago
We'd like to offer a big thanks to the 8 contributors who made this release possible. Here are some highlights β¨:
@mui/[email protected]
eval
blocked by CSP (#9863) @romgrkdisableExport
flag in Print Export (#10044) @MBilalShafi@mui/[email protected]
Same changes as in @mui/[email protected]
.
@mui/[email protected]
Same changes as in @mui/[email protected]
.
@mui/[email protected]
onChange
context (#9985) @flaviendelangleGrid
toolbar component with a styled div
(#10052) @LukasTy@mui/[email protected]
Same changes as in @mui/[email protected]
.
Published by DanailH about 1 year ago
We'd like to offer a big thanks to the 8 contributors who made this release possible. Here are some highlights β¨:
@mui/x-tree-view
slot
and slotProps
props@mui/[email protected]
getCellAggregationResult
: Handle null
rowNode
case (#9915) @romgrk@mui/[email protected]
Same changes as in @mui/[email protected]
.
@mui/[email protected]
Same changes as in @mui/[email protected]
.
@mui/[email protected]
numeric
inputmode
instead of tel
(#9918) @LukasTyonChange
when selecting a shortcut with changeImportance="set"
(#9974) @flaviendelanglethemeAugmentation
styleOverrides
(#9978) @LukasTy@mui/[email protected]
Same changes as in @mui/[email protected]
.
@mui/[email protected]
styleOverrides
(#9996) @LukasTyslot
/slotProps
for customization (#9744) @alexfauquette@mui/[email protected]
shouldDisableClock
migration code options (#9920) @LukasTyPublished by MBilalShafi about 1 year ago
We'd like to offer a big thanks to the 12 contributors who made this release possible. Here are some highlights β¨:
βοΈ Move the tree view component from @mui/lab
package
The <TreeView />
component has been moved to the MUI X repository.
It is now accessible from its own package: @mui/x-tree-view
.
π Improve Hebrew (he-IL), Finnish (fi-FI), and Italian (it-IT) locales on the data grid
π Bugfixes
π Documentation improvements
@mui/[email protected]
ariaV7
experimental flag (#9496) @cherniavskiiundefined
(#9871) @gitstart@mui/[email protected]
Same changes as in @mui/[email protected]
.
@mui/[email protected]
Same changes as in @mui/[email protected]
.
@mui/[email protected]
CalendarHeader
slot (#7784) @flaviendelangleInputProps
of the TextField
using the slotProps
(#9849) @flaviendelanglelocaleText
prop on the pickers (#9870) @flaviendelanglesx
and className
props on MobileDateRangePicker
(#9853) @flaviendelangle@mui/[email protected]
Same changes as in @mui/[email protected]
.
@mui/[email protected]
@mui/[email protected]
Recommended usage
section (#9892) @flaviendelangleJSX
global namespace (#9854) @flaviendelanglePublished by cherniavskii about 1 year ago
We'd like to offer a big thanks to the 13 contributors who made this release possible. Here are some highlights β¨:
@mui/[email protected]
@mui/[email protected]
Same changes as in @mui/[email protected]
.
@mui/[email protected]
Same changes as in @mui/[email protected]
, plus:
@mui/[email protected]
endOfDate
from DigitalClock
timeOptions (#9800) @noraleonte@mui/[email protected]
Same changes as in @mui/[email protected]
.
@mui/[email protected]
pnpm
in more places @oliviertassinaripnpm
installation instructions for MUI X (#9707) @richbustosslotProps
docs (#9668) @cherniavskiiPublished by m4theushw over 1 year ago
We'd like to offer a big thanks to the 11 contributors who made this release possible. Here are some highlights β¨:
@mui/[email protected]
eval
(#9635) @romgrkundefined
row error (#9708) @romgrkviewportOuterSize.height
going negative (#9664) @gitstart@mui/[email protected]
Same changes as in @mui/[email protected]
, plus:
@mui/[email protected]
Same changes as in @mui/[email protected]
.
@mui/[email protected]
format
and value
update order (#9715) @LukasTyrequire
usage in comment (#9675) @LukasTy@mui/[email protected]
Same changes as in @mui/[email protected]
.
@mui/[email protected]
CustomSortIcons
demo (#9656) @MBilalShafivalidate
command (#9714) @romgrk