Search code examples
reactjsmaterial-uistyled-components

Styling Material-UI Drawer component with Styled Components


I am trying to port the styling of the Drawer component below, into Styled Components.

    <Drawer
      variant="permanent"
      classes={{
        paper: classes.drawerPaper
      }}
    >

,where paper is styled as follows:

const styles = theme => ({
  drawerPaper: {
    position: "relative",
    width: 240px
  }
});

I have no idea of how can I customize paper prop through Styled Components. The following styled component syntax does not work:

export const StyledDrawer = styled(Drawer)`
    position: "relative";
    width: 240px;
`;

The source-code for this component indicates that this is passed as props as PaperProps but I can still not find a way to override it.


Solution

  • I would have given my answer in a comment but since I don't have enough reputation I can not comment. Anyway,look at the styled component documentation. It says that :

    if you attempt to style a Drawer with variant permanent, you will likely need to affect the Drawer's underlying paper style. However, this is not the root element of Drawer and therefore styled-components customization as above will not work. You can workaround this by using stable JSS class names, but the most reliable approach is to use the classes property to introduce an override style, and then style it with higher specificity via &.

    Please also look at the example given of button as well. If you still can't figure out comment here and I will try to help further.