React MUI Collapse API

The Material-UI is an open-source library for Creating user interfaces with Material Design principles in React. Material Design is a design language that provides a consistent look and feel on all platforms and devices. Material-UI provides a set of pre-built components, making it easier for developers to create beautiful and consistent UI.
The Material-UI Collapse component is a way to hide and reveal content on a web page using a smooth transition. It is built on top of the Transition component in Material-UI.
It is easy to use and customize and provides several props and utility functions that can be used to control the animation programmatically. It can be used with components like a Card and list.
Import Collapse API:
import Collapse from '@mui/material/Collapse';
// or
import { Collapse } from '@mui/material';
Props List:
- addEndListener: It allows us to add a custom transition end trigger.
- children: It is used to denote the content node to be Collapsed.
- classes: It is to override or extend the styles applied to the components.
- collapsedSize: It is used to change the width or height of the container when collapsed. By default, it’s set to “0px”.
- component: It is the component used for the root node.
- easing: It’s a transition timing function.
- in: It takes a boolean value to transition. The default is set to false and can be transitioned in when set to “true”.
- orientation: It is the orientation of the transition. By default, it is set to vertical and can be changed to horizontal.
- sx: This prop is used to add custom CSS styles.
- timeout: It is used to specify a single timeout for all transitions, or individually with an object.
CSS Rules:
- root(MuiCollapse-root): The style applied to the root element.
- horizontal (MuiCollapse-horizontal): It is applied to the root element if the orientation=”horizontal”.
- entered(MuiCollapse-entered): It is applied to the root element when the transition has entered.
- hidden(MuiCollapse-hidden): It is applied to the root element when the transition has exited.
- wrapperInner(MuiCollapse-wrapperInner): The styles are applied to the inner wrapper element.
Inheritance: The props from the Transition component from the react-transition-group are also available on Collapse. Various transitions can be achieved with this component.
Approach: Create a React project and install React MUI module.
Creating React Project:
Step 1: Create a react app. Use the command below.
npx create-react-app project_name
Step 2: Move into the folder to perform different operations.
cd project_name
Step 3: Installing MUI modules.
npm install @mui/material @emotion/react npm install @emotion/styled @mui/icons-material
Project Structure:
 
Example 1: We are creating a UI that shows React MUI Collapse API.
- Filename: App.js
Javascript
| import { useState } from "react"; import Card from "@mui/material/Card"; import Collapse from "@mui/material/Collapse"; import CardHeader from "@mui/material/CardHeader"; import Container from "@mui/material/Container"; import CardContent from "@mui/material/CardContent"; import KeyboardArrowDownIcon from      "@mui/icons-material/KeyboardArrowDown"; import KeyboardArrowUpIcon from      "@mui/icons-material/KeyboardArrowUp"; import IconButton from "@mui/material/IconButton";  export defaultfunctionApp() {     const [open, setOpen] = useState(false);     return(         <>             <h1 style={{                 display: "flex",                  justifyContent: "center",                 color: "green"            }}>                 GeeksForGeeks             </h1>             <Card sx={{                 minWidth: 300,                 border: "1px solid rgba(211,211,211,0.6)"            }}>                 <CardHeader                     title="Complete Interview Preparation"                    action={                         <IconButton                             onClick={() => setOpen(!open)}                             aria-label="expand"                            size="small"                        >                             {open ? <KeyboardArrowUpIcon />                                 : <KeyboardArrowDownIcon />}                         </IconButton>                     }                 ></CardHeader>                 <div style={{                      backgroundColor: "rgba(211,211,211,0.4)"                }}>                     <Collapse in={open} timeout="auto"                        unmountOnExit>                         <CardContent>                             <Container sx={{                                  height: 100,                                  lineHeight: 2                              }}>                                 An interview-centric course                                  designed to prepare you for                                the role of SDE forboth                                 product and service-based                                  companies. A placement                                  preparation pack built with                                years of expertise. Learn                                  Resume Building, C++, Java,                                  DSA, CS Theory concepts,                                 Aptitude, Reasoning, LLD,                                  and much more!                             </Container>                         </CardContent>                     </Collapse>                 </div>             </Card>         </>     ); }  | 
Output: Now open your browser and go to http://localhost:3000/, you will see the following output:
 
Example 2: We are creating a UI that shows React MUI Collapse API with list.
Filename: App.js
Javascript
| import * as React from "react"; import ListSubheader from "@mui/material/ListSubheader"; import List from "@mui/material/List"; import ListItemButton from "@mui/material/ListItemButton"; import ListItemIcon from "@mui/material/ListItemIcon"; import ListItemText from "@mui/material/ListItemText"; import Collapse from "@mui/material/Collapse"; import DraftsIcon from "@mui/icons-material/Drafts"; import ExpandLess from "@mui/icons-material/ExpandLess"; import ExpandMore from "@mui/icons-material/ExpandMore";  import PersonIcon from "@mui/icons-material/Person"; import EditIcon from "@mui/icons-material/Edit"; import FaceRetouchingNaturalIcon from      "@mui/icons-material/FaceRetouchingNatural"; import ArticleIcon from "@mui/icons-material/Article"; import LogoutIcon from "@mui/icons-material/Logout";  export defaultfunctionNestedList() {     const [open, setOpen] = React.useState(true);      const handleClick = () => {         setOpen(!open);     };      return(         <>             <h1 style={{ color: "green"}}>                 GeeksForGeeks</h1>              <List                 sx={{                     width: "100%", maxWidth: 360,                     bgcolor: "background.paper"                }}                 component="nav"                aria-labelledby="nested-list-subheader"                subheader={                     <ListSubheader component="div"                        id="nested-list-subheader">                         Setting                     </ListSubheader>                 }             >                 <ListItemButton>                     <ListItemIcon>                         <PersonIcon />                     </ListItemIcon>                     <ListItemText primary="My Profile"/>                 </ListItemButton>                 <ListItemButton>                     <ListItemIcon>                         <DraftsIcon />                     </ListItemIcon>                     <ListItemText primary="My Courses"/>                 </ListItemButton>                 <ListItemButton onClick={handleClick}>                     <ListItemIcon>                         <EditIcon />                     </ListItemIcon>                     <ListItemText primary="Edit"/>                     {open ? <ExpandLess /> : <ExpandMore />}                 </ListItemButton>                 <Collapse in={open} timeout="auto"unmountOnExit>                     <List component="div"disablePadding>                         <ListItemButton sx={{ pl: 4 }}>                             <ListItemIcon>                                 <FaceRetouchingNaturalIcon />                             </ListItemIcon>                             <ListItemText primary="Edit Profile"/>                         </ListItemButton>                          <ListItemButton sx={{ pl: 4 }}>                             <ListItemIcon>                                 <ArticleIcon />                             </ListItemIcon>                             <ListItemText primary="Edit Articles"/>                         </ListItemButton>                     </List>                 </Collapse>                  <ListItemButton>                     <ListItemIcon>                         <LogoutIcon />                     </ListItemIcon>                     <ListItemText primary="Logout"/>                 </ListItemButton>             </List>         </>     ); }  | 
Output: Now open your browser and go to http://localhost:3000/, you will see the following output:
 
Reference: https://mui.com/material-ui/api/collapse/
 
				 
					


