I am using Ant's Collapse ponent, which has a header
with some text on Collapse.Panel
. Also there's a Button
ponent next to the header text. I need to allow Collapse's expansion only on button click, and not on the overall panel. I have tried to depict the UI here, as I can't post the screenshots.
____________________________________________________________
| |
|Panel Header Text <-- prevent |
|[Button] <-- allow |
|____________________________________________________________|
Ant's document have onChange
method but it doesn't cater to an click event (which I could prevent to not make Collapse exapnd). How to restrict and allow some elements on that header to allow/prevent this collapsible behaviour?
Code Sandbox:
I am using Ant's Collapse ponent, which has a header
with some text on Collapse.Panel
. Also there's a Button
ponent next to the header text. I need to allow Collapse's expansion only on button click, and not on the overall panel. I have tried to depict the UI here, as I can't post the screenshots.
____________________________________________________________
| |
|Panel Header Text <-- prevent |
|[Button] <-- allow |
|____________________________________________________________|
Ant's document have onChange
method but it doesn't cater to an click event (which I could prevent to not make Collapse exapnd). How to restrict and allow some elements on that header to allow/prevent this collapsible behaviour?
Code Sandbox: https://codesandbox.io/s/hopeful-payne-ezpdn
Share Improve this question edited Mar 24, 2020 at 11:01 Sujit Y. Kulkarni asked Mar 24, 2020 at 10:09 Sujit Y. KulkarniSujit Y. Kulkarni 1,3864 gold badges24 silver badges40 bronze badges 7- Can you add codesandbox of what you trying to achieve? – Dennis Vash Commented Mar 24, 2020 at 10:35
- The document demo would be good enough to let others have a try – keikai Commented Mar 24, 2020 at 10:42
- I have added the link. You can see panel exapnds/collapses on clicking anywhere on the header, which I want to restrict to the Button only. – Sujit Y. Kulkarni Commented Mar 24, 2020 at 11:02
- You can't, its not supported tey – Dennis Vash Commented Mar 24, 2020 at 17:40
- Of course. I am wondering what could be the possible workarounds, until Ant officially es up with something that caters this requirement. – Sujit Y. Kulkarni Commented Mar 25, 2020 at 6:58
1 Answer
Reset to default 14Change your header node to this:
const panelHeader = (
<React.Fragment>
<Row onClick={event => event.stopPropagation()}><Col><Typography.Text>Header</Typography.Text></Col></Row>
<Button>Expand</Button>
</React.Fragment>
)
Your panel node should be:
<Panel showArrow={false} header={panelHeader} key="1">
<p>{text}</p>
</Panel>
and add this Css to your styles:
.ant-collapse > .ant-collapse-item > .ant-collapse-header {
padding: 0 !important;
}
.ant-btn {
position: absolute;
left: 15px;
bottom: 15px;
}
.ant-typography {
display: block;
height: 80px;
margin-left: 15px;
margin-top: 15px;
}
You should add your arrow icon node in Row that has stopPropagation method.