I have an accordion of MaterialUI where I also added few icons but on click of those two particular icons, I don't want the accordion to get expanded or collapsed. I want other onClick
event to happen for the click but not expand or collapse. Here is the code I am using.
<ExpansionPanel>
<ExpansionPanelSummary expandIcon={<ExpandMoreIcon />}>
<Typography className={classes.heading}>
{name}
</Typography>
<ListItem>
<ListItemText />
<IconButton color="primary" aria-label="Edit" onClick={onClickEdit}>
<Edit />
</IconButton>
<IconButton onClick={onClickDelete} color="secondary" aria-label="Delete">
<Delete />
</IconButton>
</ListItem>
</ExpansionPanelSummary>
For click of two icons, I don't want accordion to expand or collapse. Is this anyway related?
You can do that by setting the Accordion margin to auto which should be the same as setting it to 0 . Make sure the style is applied to every Accordion s on the screen. See this example here. The Accordion is being moved when expanding is just a side effect of positive margin plus the transition effect when expanded.
To keep single pane open always in React Accordion component By default, all Accordion panels are collapsible. You can customize the Accordion to keep one panel as expanded state always. This is applicable for Single expand mode.
The accordion component allows the user to show and hide sections of related content on a page. An accordion is a lightweight container that may either be used standalone, or be connected to a larger surface, such as a card. Feedback. WAI-ARIA.
You could stop the event from bubbling up to the parent in your onClickDelete or onClickEdit function:
function onClickDelete(event) {
event.stopPropagation();
// Handle click here
}
Here's a rough example: https://codesandbox.io/s/54vypx6k9n
Well, stopPropagation may create many interesting unexpected behaviors:
Why not a simpler way, pure CSS:
.MuiAccordionSummary-root {
pointer-events: none;
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With