Feb 8, 2024
- [base-ui] Update props using Array to ReadonlyArray type (#40754) @RaghavenderSingh
Feb 6, 2024
- [Button] Add support for
hostElementName
prop to improve SSR (#40507) @mj12albert - [Menu] Use Popup instead of Popper (#40731) @michaldudak
- [useNumberInput] Integrate useNumberInput with useControllableReducer (#40206) @mj12albert
- [Slider] Add support for Arrow Down/Up + Shift and Page Up/Down keys (#40676) @mnajdova
Jan 31, 2024
- [Input] Add OTP input demo (#40539) @sai6855
- [Menu] Focus last item after opening a menu using up arrow (#40764) @Jaswanth-Sriram-Veturi
- [Menu] Focus Menu Items on hover (#40755) @michaldudak
Jan 22, 2024
- [Select] Fix display of selected Options with rich content (#40689) @michaldudak
- [Select] Use Popup instead of Popper (#40524) @michaldudak
- [useMenuButton] Fix non native button triggers (#40645) @DiegoAndai
Jan 17, 2024
-Change the CSS class prefix to base-
(#40205) @michaldudak
The class prefix of Base UI components have been changed from Mui-
to base-
. This only affects codebases that uses class names verbatim, that is not exposed by JS objects such as buttonClasses
, but as plain strings or in CSS stylesheets (.MuiButton.root
)
To adapt your code to the new pattern:
- replace all occurrences of the regex
.Mui([A-Z][A-Za-z]*)-
with.base-$1-
(soMuiButton-root
becomesbase-Button-root
, etc.), - replace all occurrences of the regex
.Mui-([a-z]*)
with.base--$1
(soMui-disabled
becomesbase--disabled
, etc.).
- [Select] Fix screen-reader CSS to avoid body scrollbar (#40599) @brijeshb42
- [Switch] Add border-box to demos (#40638) @zanivan
Jan 10, 2024
- [base-ui][NumberInput] Remove inputId and inputRef types from NumberInput component (#40425) @sai6855
Jan 3, 2024
- [useSlider] Rearrange passive option in eventlisteners (#40235) @Kamino0
Dec 25, 2023
- [Popup] Use context-based transition API (#39326) @michaldudak
- [Popup] Popup no longer opens outside viewport (#39827) @adamhylander
- [useSelect] Refactor to use DOM focus management instead of active descendant (#39675) @DiegoAndai
Dec 11, 2023
- [base-ui] useControllableReducer warns when controlled props become uncontrolled (and vice versa) (#39096) @mj12albert
Nov 29, 2023
- [Menu] Fix navigation of items when 1st item is disabled (#39828) @sai6855
- [Modal] Refine demos (#39824) @zanivan
- [NumberInput] Implement
numberInputReducer
(#38723) @mj12albert - [useNumberInput] Fix change handlers passed through slotProps (#39407) @mj12albert
Nov 14, 2023
- Make list components more reliable (#39380) @michaldudak
Oct 31, 2023
- [Autocomplete] Standardize box shadow on demos (#39519) @zanivan
- [useSelect] Support browser autofill (#39595) @DiegoAndai
- [base-ui] Fix mergeSlotProps className join order (#39616) @mj12albert
Oct 24, 2023
- [useAutocomplete] Correct keyboard navigation with multiple disabled options (#38788) @VadimZvf
- [Select] Standardize box shadow on demos (#39509) @zanivan
- [Slider] Refine demos (#39526) @zanivan
- [Input] Update and port additional tests from material-ui (#39584) @mj12albert
Oct 17, 2023
- [base-ui][Menu] Do not reopen the menu after clicking on a trigger in Safari (#39393) @michaldudak
Oct 10, 2023
- [Menu] Add the anchor prop (#39297) @michaldudak
Oct 3, 2023
- [useSlider] Align externalProps handling (#38854) @mj12albert
- [useTabs] Align external props handling for useTab/useTabPanel/useTabsList (#39037) @mj12albert
- [test] Fix import paths in useTab tests (#39291) @mj12albert
Sep 26, 2023
- [NumberInput] Support adornments (#38900) @anle9650
- [Menu] Align external props handling for useMenu/MenuButton/MenuItem (#38946) @mj12albert
- [Select] Align external props handling (#39038) @mj12albert
- [TextareaAutosize] Simplify logic and add test (#38728) @oliviertassinari
Sep 18, 2023
- [NumberInput][base-ui] Warn when changing control mode with
useControlled
(#38757) @sai6855 - [Select][base-ui] Fix Select button layout shift, add placeholder prop (#38796) @mj12albert
- [useList][base-ui] Accept arbitrary external props and forward to root (#38848) @mj12albert
- [Autocomplete][base-ui] Added ref to getInputProps return value (#38919) @DarhkVoyd
Sep 13, 2023
- [useSnackbar] Align externalProps handling (#38935) @mj12albert
- [useInput] Align ExternalProps naming (#38849) @mj12albert
- [FocusTrap] Refactor & cleanup (#38878) @mnajdova
- [FocusTrap] Fix
disableEnforceFocus
behavior (#38816) @mnajdova - [Switch] Simplify source (#38910) @oliviertassinari
Sep 5, 2023
- [Autocomplete] Type multiple values with readonly arrays. (#38253) @pcorpet
- [TextField] Fix unstable height of memoized multiline TextField component (#37135) @amal-qb
Aug 29, 2023
- [useButton][base-ui] Accept arbitrary props in getRootProps and forward them (#38475) @DiegoAndai
Aug 23, 2023
- [Popup] New component (#37960) @michaldudak
Aug 14, 2023
- [base-ui] Remove the legacy Extend* types (#38184) @michaldudak
- [base-ui] Add
useModal
hook (#38187) @mnajdova - [base-ui] Add
prepareForSlot
util (#38138) @mnajdova - [useButton][base-ui] Fix tabIndex not being forwarded (#38417) @DiegoAndai
- [useButton][base-ui] Fix onFocusVisible not being handled (#38399) @DiegoAndai
Aug 8, 2023
-
[base] Ban default exports (#38200) @michaldudak
Base UI default exports were changed to named ones. Previously we had a mix of default and named ones. This was changed to improve consistency and avoid problems some bundlers have with default exports. See mui/material-ui#21862 for more context.
- import Button, { buttonClasses } from '@mui/base/Button'; + import { Button, buttonClasses } from '@mui/base/Button'; - import BaseMenu from '@mui/base/Menu'; + import { Menu as BaseMenu } from '@mui/base/Menu';
Additionally, the
ClassNameGenerator
has been moved to the directory matching its name:- import ClassNameGenerator from '@mui/base/className'; + import { ClassNameGenerator } from '@mui/base/ClassNameGenerator';
A codemod is provided to help with the migration:
npx @mui/codemod@latest v5.0.0/base-use-named-exports <path>
- [base] Create useNumberInput and NumberInput (#36119) @mj12albert
- [Select][base] Fix flicker on click of controlled Select button (#37855) @VishruthR
- [Dropdown] Fix imports of types (#38296) @yash-thakur
Jul 31, 2023
- [Dropdown][base][joy] Introduce higher-level menu component (#37667) @michaldudak
- [typescript][base] Rename one letter type parameters (#38171) @michaldudak
Jul 25, 2023
- Revert "[core] Adds
component
prop toOverrideProps
type (#35924)" (#38150) @michaldudak - [Chip][material] Fix base cursor style to be "auto" not "default" (#38076) @DiegoAndai
- [Tabs] Refactor IntersectionObserver logic (#38133) @ZeeshanTamboli
- [Tabs] Fix and improve visibility of tab scroll buttons using the IntersectionObserver API (#36071) @SaidMarar
- [Joy] Replace leftover
Joy-
prefix withMui-
(#38086) @siriwatknp - [Skeleton][joy] Fix WebkitMaskImage CSS property (#38077) @Bestwebdesign
- [Link][Joy UI] Fix font inherit (#38124) @oliviertassinari
Jul 19, 2023
- [Autocomplete] Make touch and click behavior on an option consistent (#37972) @divyammadhok
Jul 4, 2023
- [Slider][base][material][joy] Fix not draggable on the edge when
disableSwap={true}
(#35998) @sai6855 - [Slider][base] Provide slot state to Slider's thumb slot props callback (#37749) @mnajdova
- [Tabs] Wrap TabsList context creation in useMemo (#37370) @michaldudak
- [TextareaAutosize] Fix wrong height measurement (#37185) @bigteech
Jun 21, 2023
- [Menu][base] Add the resetHighlight action (#37392) @michaldudak
- [Select][base] Expose the
areOptionsEqual
prop (#37615) @michaldudak
Jun 5, 2023
- [Input][base] Fix calling slotProps event handlers (#37463) @sai6855
May 29, 2023
- [base] Maintain nodes document order in compound components (#36857) @michaldudak
- [base][joy] Prevent persisting hover state styles onclick on mobile (#36704) @gitstart
- [Menu][base] MenuItem as a link does not work (#37242) @nicolas-ot
- [MenuItem][Base] Pass idGenerator function (#37364) @sai6855
- [Slider][Base] Add Vertical slider demo (#37357) @sai6855
May 16, 2023
- [Select][base] Keep focus on the trigger element when listbox is open (#37244) @michaldudak
May 10, 2023
- [Select][base] Do not call onChange after initial render (#37141) @michaldudak
- [Select][base] Rename the
optionStringifier
prop (#37118) @michaldudak - [typescript][base] Fix types of components callbacks parameters (#37169) @michaldudak
- [Select], [TablePagination] Use more descriptive parameter names (#37064) @michaldudak
May 2, 2023
-
The
component
prop is no longer supported because it can be replaced with the slots API. This is how the transformation will look like:<Button - component="span" + slots={{ root: "span" }} />
If using TypeScript, the custom component type should be added as a generic on the
Button
component.-<Button +<Button<typeof CustomComponent> slots={{ root: CustomComponent }} customProp="foo" />
There is codemod that you can run in your project to do the transformation:
npx @mui/codemod@latest v5.0.0/base-remove-component-prop <path>
The full documentation about the codemod can be found here.
This is the list of PR related to this change:
- [Button][base] Drop
component
prop (#36677) @mnajdova - [Badge][base] Drop
component
prop (#37028) @hbjORbj - [FormControl][base] Drop component prop (#37031) @hbjORbj
- [Input][base] Drop component prop (#37057) @hbjORbj
- [Menu][base] Drop component prop (#37033) @hbjORbj
- [MenuItem][base] Drop component prop (#37032) @hbjORbj
- [Modal][base] Drop component prop (#37058) @hbjORbj
- [Option][base] Drop component prop (#37052) @hbjORbj
- [OptionGroup][base] Drop component prop (#37055) @hbjORbj
- [Popper][base] Drop component prop (#37084) @hbjORbj
- [Select][base] Drop component prop (#37035) @hbjORbj
- [Slider][base] Drop component prop (#37056) @hbjORbj
- [Snackbar][base] Drop component prop (#37041) @nicolas-ot
- [Switch][base] Drop component prop (#37053) @hbjORbj
- [Tab][base] Drop component prop (#36768) @sai6855
- [Tabs][base] Drop component prop (#36770) @sai6855
- [TablePagination][base] Drop component prop (#37059) @sai6855
- [TabPanel][base] Drop component prop (#37054) @sai6855
- [TabsList][base] Drop component prop (#37042) @sai6855
- [Button][base] Drop
-
[base] Improve API consistency (#36970) @michaldudak
Brought consistency to Base UI components and hooks' parameters and return values:
- Whenever a hook needs a ref, it's now called
<slot_name>Ref
, which matches theget<slot_name>Props
in the return value. - All hooks that accept external refs now return merged refs, making combining multiple hooks on one element easier. This was proven necessary in several compound components (like menuItem being both a button and a list item). The type of this value is
React.RefCallback
as using the more generalReact.Ref
caused variance issues. - Type of accepted refs is standardized to
React.Ref<Element>
- Naming and typing of the forwarded ref in unstyled components were standardized - it's forwardedRef: React.ForwardedRef (unless a more specific type is needed).
- The shape of the definition of unstyled components was standardized - it's React.forwardRef(function Component(props: Props, forwardedRef: React.Ref) { ... });. Specifically, the generic parameters of forwardRef were removed as they are specified in function arguments.
- Whenever a hook needs a ref, it's now called
- [FormControl][base] Do not use optional fields in useFormControlContext's return value (#37037) @michaldudak
Apr 25, 2023
-
[base] Remove unstyled suffix from Base components + Codemod script (#36873) @hbjORbj
The
Unstyled
suffix has been removed from all Base UI component names, including names of types and other related identifiers.You can use this codemod to help with the migration:
npx @mui/codemod@latest v5.0.0/base-remove-unstyled-suffix <path>
- [codemod][base] Improve the removal of
component
prop codemod script (#36952) @hbjORbj - [codemod][base] Write a migration script for removal of
component
prop from components (#36831) @hbjORbj - [Base][useButton] Allow useButton params to be completely optional (#36922) @mj12albert
Apr 17, 2023
- [base] Refactor the compound components building blocks (#36400) @michaldudak
Components affected by the changes are:
- Menu
MenuUnstyledContext
is replaced byMenuProvider
. The value to pass to the provider is returned by theuseMenu
hook.- MenuUnstyled's
onClose
prop is replaced byonOpenChange
. It has theopen
parameter and is called when a menu is opened or closed
- Select
SelectUnstyledContext
is replaced bySelectProvider
. The value to pass to the provider is returned by theuseSelect
hook.SelectUnstyled
's popup is permanently mounted.- The
defaultOpen
prop was added to the SelectUnstyled. The open/close state can now be controlled or uncontrolled, as avalue
.
- Tabs
TabsContext
is replaced byTabsProvider
. The value to pass to the provider is returned by theuseTabs
hook.- To deselect all tabs, pass in
null
to Tabs'value
prop, instead offalse
. This is consistent with how Select works. - The
value
prop is still technically not mandatory on TabUnstyled and TabPanel, but when omitted, the contents of the selected tab panel will not be rendered during SSR.
- Menu
Apr 11, 2023
- [PopperUnstyled] Do not merge internal
ownerState
withownerState
from props (#36599) @hbjORbj
Mar 28, 2023
- [Autocomplete] Update
autoSelect
prop description (#36280) @sai6855 - [TablePagination][base] Improve
actions
type inslotProps
(#36458) @sai6855 - [Base] Add JSDoc comments for classes of Base components (#36586) @hbjORbj
- [useSlider][base] Add API docs for the hook parameters and return type (#36576) @varunmulay22
Mar 21, 2023
- [docs][base] Improve the Slots Table in API docs (#36330) @hbjORbj
Mar 14, 2023
- [base] Disable classes generation via a context (#35963) @michaldudak
- [useMenu][base] Add return interface for useMenu hook (#36376) @HeVictor
- [useBadge] Add interface for the return value (#36042) @skevprog
- [useMenuItem] Add explicit return type (#36359) @rayrw
- [useTabs] Add explicit return type (#36047) @sai6855
Mar 6, 2023
-
[Select][base] Add the multiselect functionality to SelectUnstyled (#36274) @michaldudak
The MultiSelectUnstyled was removed. The
SelectUnstyled
component with themultiple
prop should be used instead. Additionally, the SelectUnstyledProps received a second generic parameter:Multiple extends boolean
. If you deal with strictly single- or multi-select components, you can hard-code this parameter tofalse
ortrue
, respectively. Below is an example of how the migration should look like:-import MultiSelectUnstyled from '@mui/base/MultiSelectUnstyled'; +import SelectUnstyled from '@mui/base/SelectUnstyled'; export default App() { -return <MultiSelectUnstyled /> +return <SelectUnstyled multiple /> }
- [useSnackBar] Add explicit return type (#36052) @sai6855
- [useMenu] Fix
import type
syntax (#36411) @ZeeshanTamboli - [useSwitch] Add explicit return type (#36050) @sai6855
Feb 27, 2023
-
[base] Remove
classes
prop from the Base components that have it (#36157) @hbjORbj These are the components affected by this change: ModalUnstyled, SliderUnstyled, TablePaginationUnstyled and TablePaginationActionsUnstyled. You can replace theclasses
prop by providing the class name prop directly to the prop viaslotProps
. Below is an example of how the migration should look like:<TablePaginationUnstyled - classes={{ toolbar: 'toolbar-classname', menuItem: 'menuItem-classname' }} + slotProps={{ toolbar: { className: 'toolbar-classname' }, menuItem: { className: 'menuItem-classname'}}} />
-
[base] Move hooks to their own directories (#36235) @hbjORbj Base hooks (e.g.,
useSelect
) are no longer exported from{Component}Unstyled
directories and instead they have their own directories. Below is an example of how the migration should look like:-import { useBadge } from '@mui/base/BadgeUnstyled'; +import useBadge from '@mui/base/useBadge';
You can use this codemod to help with the migration.
- [Autocomplete] Add docs interface for the hook (#36242) @HeVictor
- [MenuUnstyled] Remove extra useMemo (#36265) @ivp-dev
- [base] Export all slot prop overrides interfaces (#36323) @michaldudak
Feb 14, 2023
- [base] Override the types of
slotProps
per slot (#35964) @hbjORbj - [Select][base] Prevent unnecessary rerendering of Select options (#35946) @michaldudak
- [Select][base] Update the generated docs (#36183) @michaldudak
- [useAutocomplete] Pass only valid values for the getOptionLabel prop (#36088) @rangoo94
- [useAutocomplete] Fix
useAutocomplete
disabled prop not disabling the input (#36076) @sai6855 - [useInput] Add return value interface (#36036) @Shorifpatwary
- [UseTabPanel] Add explicit return type (#36053) @Shorifpatwary
- [useTabsList] Add explicit return type (#36048) @sai6855
- [Tab] Add explicit return type to useTab (#36046) @sai6855
Jan 31, 2023
- [ListboxUnstyled] Fix option state highlighted to prevent unnecessary focus (#35838) @SaidMarar
Jan 23, 2023
-
[SliderUnstyled] Improved logic for displaying the value label (#35805) @ZeeshanTamboli
- The
valueLabelDisplay
prop is removed fromSliderUnstyled
. The prop was not working as intended inSliderUnstyled
(See #35398). You can instead provide avalueLabel
slot with theslots
prop API to show the value label:
- <SliderUnstyled valueLabelDisplay="on" /> + <SliderUnstyled slots={{ valueLabel: SliderValueLabel }} />
The following demo shows how to show a value label when it is hovered over with the thumb: https://mui.com/base-ui/react-slider/#value-label
- The following classes are removed from
sliderUnstyledClasses
since they are not needed for the value label:
- valueLabel - valueLabelOpen - valueLabelCircle - valueLabelLabel
In the custom value label component, you can define your own classNames and target them with CSS.
-
The
SliderValueLabelUnstyled
component is removed from SliderUnstyled. You should provide your own custom component for the value label. -
To avoid using
React.cloneElement
API in value label, the component hierarchy structure of the value label is changed. The value label is now inside the Thumb slot -Thumb
->Input
,ValueLabel
.
- The
- [InputUnstyled] Fix externally provided
inputRef
is ignored (#35807) @sai6855
Jan 17, 2023
- [base] Fix typos (#35802) @nnmax
- [Slider] Convert code to TypeScript (#35445) @sai6855
Jan 9, 2023
- [Portal][base] Convert code to TypeScript (#35657) @sai6855
Dec 26, 2022
- [FocusTrap][base] Convert code to TypeScript (#35005) @trizotti
- [Modal][base] Convert code to TypeScript (#34793) @leventdeniz
- [Popper][base] Convert code to TypeScript (#34771) @danhuynhdev
- [Slider] Exclude
isRtl
from Material UI's Slider props (#35564) @michaldudak
Dec 20, 2022
- [Button][base] Set active class when a subcomponent is clicked (#35410) @michaldudak
- [Popper][base] Fix Tooltip Anchor Element Setter (#35469) @sydneyjodon-wk
Dec 13, 2022
- [PopperUnstyled] Update PopperTooltip to have correct width when closing with transition (#34714) @EduardoSCosta
Nov 28, 2022
- [Base] Allow useSlotProps to receive undefined elementType (#35192) @leventdeniz
Nov 21, 2022
- [Select] Add attributes to conform with ARIA 1.2 (#35182) @michaldudak
Nov 7, 2022
- [base] Avoid calling setState during renders (#34916) @Janpot
Oct 31, 2022
- [ButtonUnstyled] Update to render as link when href or to is provided (#34337) @EduardoSCosta
Oct 25, 2022
-
[base]
components
->slots
API rename (#34693) @michaldudak- Change all occurrences of components and componentsProps props in Base components to slots and slotProps, respectively.
- Change casing of slots' fields to camelCase
-<SwitchUnstyled components={{Root: CustomRoot}} componentsProps={{rail: { className: 'custom-rail' }}} /> +<SwitchUnstyled slots={{root: CustomRoot}} slotProps={{rail: { className: 'custom-rail' }}} />
-
[base] Make CSS class prefixes consistent (#33411) @michaldudak
This is a breaking change for anyone who depends on the class names applied to Base components. If you use the
<component>UnstyledClasses
objects, you won't notice a difference. Only if you depend on the resulting class names (for example in CSS stylesheets), you'll have to adjust your code.-.ButtonUnstyled-root { ... }; +.MuiButton-root { ... };
- [test] Test all Base components with describeConformanceUnstyled (#34825) @michaldudak
Oct 18, 2022
- [MultiSelect][base] Prevent the renderValue prop from being propagated to the DOM (#34698) @michaldudak
- [NoSsr] Convert code to TypeScript (#34735) @mbayucot
Oct 10, 2022
- [FocusTrap] Restore the previously exported type from @mui/material (#34601) @michaldudak
Oct 3, 2022
- [SnackbarUnstyled] Create component and
useSnackbar
hook (#33227) @ZeeshanTamboli
Sep 26, 2022
-
[FocusTrap] Rename TrapFocus to FocusTrap (#34216) @kabernardes
-import TrapFocus from '@mui/base/TrapFocus'; +import FocusTrap from '@mui/base/FocusTrap';
- [MultiSelect] Require a single tap to select an item on mobile Chrome (#33932) @michaldudak
Sep 19, 2022
-
[Select][base] Add event parameter to the onChange callback (#34158) @michaldudak
The SelectUnstyled and MultiSelectUnstyled
onChange
callbacks did not have event as the first parameter, leading to inconsistency with other components and native HTML elements. This PR adds the event parameter as the first one and moves the newly selected value to the second position. Because of this, it's a breaking change. This also affects Select from Joy UI.// before <SelectUnstyled onChange={(newValue) => { /* ... */ }} /> // after <SelectUnstyled onChange={(event, newValue) => { /* ... */ }} />
Sep 5, 2022
- [Select][base] Fix type issues that appeared with TS 4.8 (#34132) @michaldudak
Aug 29, 2022
- [Button][base] Prevent too many ref updates (#33882) @michaldudak
- [Select][base] Fix typo in listbox blur event handler (#34120) @ZeeshanTamboli
- [FocusTrap] Improve tab test and simplify demo (#34008) @EthanStandel
Aug 15, 2022
- [FocusTrap] Removes invisible tabbable elements from (#33543) @EthanStandel
- [Input][base] Pass the rows prop to the underlying textarea (#33873) @michaldudak
- [SelectUnstyled] Add ability to post the select's value when submitting a form (#33697) @michaldudak
Jul 25, 2022
- [Base] Make PopperUnstyled
component
overridable (#33573) @siriwatknp - [Base] Ensure all components are OverridableComponent (#33506) @michaldudak
Jul 18, 2022
- [base] Export types used by components' props (#33522) @michaldudak
- [base] Add missing type definitions in useControllableReducer (#33496) @michaldudak
- [SelectUnstyled] Do not call onChange unnecessarily (#33408) @michaldudak
Jul 12, 2022
- [Base] Change the order of class names merged in useSlotProps (#33383) @michaldudak
- [ModalUnstyled] Accept callbacks in componentsProps (#33181) @michaldudak
- [SelectUnstyled] Accept callbacks in componentsProps (#33197) @michaldudak
- [TabsUnstyled] Accept callbacks in componentsProps (#33284) @michaldudak
Jul 4, 2022
- [base] Remove a type incompatible with TypeScript 3.5 (#33361) @michaldudak
- [BadgeUnstyled] Export BadgeUnstyledOwnProps interface to fix TypeScript compiler error (#33314) @aaronlademann-wf
- [TablePaginationUnstyled] Accept callbacks in componentsProps (#33309) @michaldudak
Jun 27, 2022
- [base] Improve the return type of useSlotProps (#33279) @michaldudak
- [base] Improve some types (#33270) @mnajdova
- [MenuUnstyled] Fix keyboard accessibility of menu items (#33145) @michaldudak
- [ModalManager] Lock body scroll when container is inside shadow DOM (#33168) @jacobweberbowery
- [SliderUnstyled] Use useSlotProps (#33132) @michaldudak
- [TextareaAutosize] Fix crash when used with React 18 & Suspense (#33238) @howlettt
- [TextareaAutosize] Fix warnings for too many renders in React 18 (#33253) @mnajdova
Jun 20, 2022
- [BadgeUnstyled] Accept callbacks in componentsProps (#33176) @michaldudak
- [ButtonUnstyled] Use useSlotProps (#33096) @michaldudak
- [FormControlUnstyled] Accept callbacks in componentsProps (#33180) @michaldudak
- [InputUnstyled] Use useSlotProps (#33094) @michaldudak
- [ModalUnstyled] Define ownerState and slot props' types (#32901) @michaldudak
- [SwitchUnstyled] Use useSlotProps (#33174) @michaldudak
Jun 14, 2022
- [MenuUnstyled] Accept callbacks in componentsProps (#32997) @michaldudak
- [ModalUnstyled] Fix errors from the W3C validator about incorrect aria-hidden attribute on some elements (#30920) @mkrtchian
- [ModalUnstyled] Fix behavior of not respecting props ariaHidden value (#32055) @tech-meppem
Jun 7, 2022
- [base] Remove @mui/system in tests (#32945) @kevinji
- [ButtonUnstyled] Accept callbacks in componentsProps (#32991) @michaldudak
- [SwitchUnstyled] Accept callbacks in componentsProps (#32993) @michaldudak
- [TablePaginationUnstyled] Define ownerState and slot props' types (#32905) @michaldudak
- [TabPanelUnstyled] Define ownerState and slot props' types (#32928) @michaldudak
- [TabsListUnstyled] Define ownerState and slot props' types (#32925) @michaldudak
May 30, 2022
- [BadgeUnstyled] Define ownerState and slot props' types (#32750) @michaldudak
- [SliderUnstyled] Define ownerState and slot props' types (#32739) @michaldudak
- [SwitchUnstyled] Define ownerState and slot props' types (#32573) @michaldudak
- [TabsUnstyled] Define ownerState and slot props' types (#32918) @michaldudak
- [TabUnstyled] Define ownerState and slot props' types (#32915) @michaldudak
May 23, 2022
- [SliderUnstyled] Fix
disabledSwap
not being respected inonChangeCommitted
(#32647) @JeanPetrov
May 17, 2022
- [InputUnstyled] Support callbacks in componentsProps (#32271) @michaldudak
- [InputUnstyled] Define ownerState and slot props' types (#32491) @michaldudak
- [MenuUnstyled] Demos improvements (#32714) @michaldudak
- [OptionUnstyled] Define ownerState and slot props' types (#32717) @michaldudak
May 10, 2022
- [ButtonUnstyled] Fix keyboard navigation on customized elements (#32204) @michaldudak
Apr 25, 2022
- [InputUnstyled]
multiline
property should not log DOM warnings formaxRows
andminRows
props (#32401) @ZeeshanTamboli
Apr 18, 2022
- [FormControlUnstyled] Revise API (#32134) @michaldudak
Apr 11, 2022
- [ButtonUnstyled] Allow receiving focus when disabled (#32090) @michaldudak
Apr 5, 2022
- [Badge] Simplify unstyled API (#31974) @michaldudak
Mar 28, 2022
-
[base] Remove
BackdropUnstyled
component (#31923) @mnajdovaThe
BackdropUnstyled
component was removed from the@mui/base
package, as it did not have any specific logic, except adding anaria-hidden
attribute on the div it rendered. This is not enough to justify it's existence in the base package. Here is an example alternative component you can use:const BackdropUnstyled = React.forwardRef<HTMLDivElement, { open?: boolean; className: string }>( (props, ref) => { const { open, className, ...other } = props; return <div className={clsx({ 'MuiBackdrop-open': open }, className)} ref={ref} {...other} />; }, );
-
[FocusTrap] Move docs to Base and drop the Unstyled prefix (#31954) @michaldudak
Removed the
Unstyled_
prefix from the Base export (it remains in the Material UI export, though).-import { Unstyled_TrapFocus } from '@mui/base'; +import { TrapFocus } from '@mui/base'; // or -import TrapFocus from '@mui/base/Unstyled_TrapFocus'; +import TrapFocus from '@mui/base/TrapFocus';
- [base] Add @mui/types to dependencies (#31951) @bicstone
Mar 21, 2022
- [SliderUnstyled] Fix dragging on disabled sliders (#31882) @mnajdova
Mar 14, 2022
- [Fab] Add z-index (#30842) @issamElmohadeb098
- [Grid] Fix columns of nested container (#31340) @boutahlilsoufiane
- [i10n] Update italian locale (#30974) @SalvatoreMazzullo
- [Pagination] Fix type of UsePaginationItem["page"] (#31295) @aaronadamsCA
- [Popper] Allow setting default props in a theme (#30118) @hafley66
- [TextField] fix disappearing border in Safari (#31406) @krysia1
- [Joy] Support horizontal List (#31620) @siriwatknp
- [Joy] Add icon & label
Switch
examples (#31359) @siriwatknp - [Joy] Add
TextField
component (#31299) @siriwatknp - [Joy] Add
--Icon-fontSize
to components (#31360) @siriwatknp - [Joy] Add
Checkbox
component (#31273) @siriwatknp
Mar 7, 2022
- [MenuUnstyled] Create MenuUnstyled and useMenu (#30961) @michaldudak
- [SelectUnstyled] Prevent window scrolling after opening (#31237) @michaldudak
Feb 28, 2022
- [SelectUnstyled, MultiSelectUnstyled, ButtonUnstyled] Export additional types to make customization easier (#31172) @michaldudak
Feb 15, 2022
- [design] Remove framer components (#30983) @mbrookes
- [design] Remove framer leftovers (#31070) @michaldudak
Feb 8, 2022
- [SelectUnstyled] Improve exported types (#30895) @michaldudak
Feb 1, 2022
- [SelectUnstyled] Create unstyled select (+ hook) (#30113) @michaldudak
Jan 24, 2022
- [SliderUnstyled] Improve typings on some internal utils (#30614) @mnajdova
Jan 17, 2022
- [SliderUnstyled] Add useSlider hook and polish (#30094) @mnajdova
Dec 27, 2021
- [BadgeUnstyled] Add useBadge hook (#30246) @mnajdova
Dec 14, 2021
- [BadgeUnstyled] Make it conformant with other base components (#30141) @mnajdova
Dec 6, 2021
- [base] Fix missing ClickAwayListener barrel index export (#30000) @oliviertassinari
- [TablePaginationUnstyled] Introduce new component (#29759) @mnajdova
Nov 23, 2021
- [FormControlUnstyled]
focused
is always false unless explicitly set totrue
@mwilkins91 - [TabsUnstyled] Introduce new component (#29597) @mnajdova
Nov 16, 2021
-
[core] Rename mui/core to mui/base (#29585) @michaldudak
Based on the results of the poll and our internal discussions, we decided to rename the
@mui/core
package to@mui/base
. The main rationale for this is the fact that we use the term "Core" to refer to the core components product family, the one that includes Material Design components, unstyled components, System utilities, etc. Therefore, @mui/core was effectively a subset of MUI Core. This was confusing.The new name better reflects the purpose of the package: it contains unstyled components, hooks, and utilities that serve as a base to build on.
-import { useSwitch } from '@mui/core/SwitchUnstyled'; +import { useSwitch } from '@mui/base/SwitchUnstyled';
Oct 26, 2021
- [ClickAwayListener] Move to the core package (#29186) @hbjORbj
- [Popper] Move from mui-material to mui-base (#28923) @rebeccahongsf
- [TextareaAutosize] Move to the core package (#29148) @hbjORbj
Oct 14, 2021
- [InputUnstyled] Create unstyled input and useInput hook (#28053) @michaldudak
Oct 7, 2021
- [ButtonUnstyled] Don't set redundant role=button (#28488) @michaldudak
- [SliderUnstyled] Prevent unknown-prop error when using marks prop (#28868) @hbjORbj
Sep 1, 2021
- [Button] Create ButtonUnstyled and useButton (#27600) @michaldudak
Aug 24, 2021
- [core] Utilize
CSS.supports
inSliderUnstyled
component (#27724) @DanailH
Aug 6, 2021
- [FormControl] Create FormControlUnstyled (#27240) @michaldudak
- [Autocomplete] Move useAutocomplete to the Unstyled package (#27485) @michaldudak
Jul 26, 2021
- [NoSsr] Move NoSsr to the Unstyled package (#27356) @michaldudak
Jul 14, 2021
- [Switch] Create SwitchUnstyled and useSwitch (#26688) @michaldudak
Jun 15, 2021
- [Slider] Improve TS definition (#26642) @mnajdova
- [FocusTrap] Capture nodeToRestore via relatedTarget (#26696) @eps1lon
Apr 20, 2021
- [unstyled] Convert generateUtilityClass(es) to TypeScript (#25753) @eps1lon
- [Slider] Allow disabling the left and right thumbs swap (#25547) @michal-perlakowski
Feb 27, 2021
- [Portal] Migrate to unstyled (#24890) @povilass
- [FocusTrap] Migrate to unstyled (#24957) @povilass
- [Backdrop] Migrate to unstyled (#24985) @povilass
- [Modal] Migrate to emotion + unstyled (#24857) @povilass
Jan 26, 2021
- [unstyled] Convert composeClasses to TypeScript (#24396) @eps1lon
Dec 13, 2020
- [core] Use Lerna to publish (#23793) @oliviertassinari
Nov 23, 2020
- [Slider] Replace core Slider with SliderStyled (#23308) @mnajdova
Nov 14, 2020
- [Slider] Extract slots as standalone components (#22893) @mnajdova
Nov 4, 2020
- [unstyled] Create package and move SliderUnstyled there (#23270) @mnajdova
- [core] Allow React 17 (#23311) @eps1lon