2021-02-16 10:29:08 +00:00
|
|
|
import React from "react";
|
|
|
|
|
import styled from "constants/DefaultTheme";
|
|
|
|
|
import { Colors } from "constants/Colors";
|
|
|
|
|
import { Collapse, Icon } from "@blueprintjs/core";
|
|
|
|
|
|
|
|
|
|
const CollapseWrapper = styled.div`
|
|
|
|
|
position: relative;
|
2021-07-07 03:46:16 +00:00
|
|
|
margin-top: ${(props) => props.theme.spaces[3]}px;
|
2021-02-16 10:29:08 +00:00
|
|
|
.collapse-title {
|
2021-07-07 10:22:42 +00:00
|
|
|
color: ${Colors.TROUT_DARK};
|
2021-02-16 10:29:08 +00:00
|
|
|
letter-spacing: 0.04em;
|
|
|
|
|
text-transform: uppercase;
|
|
|
|
|
font-weight: 500;
|
|
|
|
|
font-size: 12px;
|
|
|
|
|
line-height: 16px;
|
|
|
|
|
display: flex;
|
2021-07-07 03:46:16 +00:00
|
|
|
gap: 4px;
|
|
|
|
|
cursor: pointer;
|
|
|
|
|
/* justify-content: space-between; */
|
2021-02-16 10:29:08 +00:00
|
|
|
.icon {
|
|
|
|
|
transition: transform 0.3s;
|
|
|
|
|
cursor: pointer;
|
|
|
|
|
&.collapse {
|
|
|
|
|
transform: rotate(-90deg);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2021-07-07 03:46:16 +00:00
|
|
|
&& .bp3-collapse-body {
|
|
|
|
|
position: relative;
|
|
|
|
|
border: none;
|
|
|
|
|
box-shadow: none;
|
|
|
|
|
padding: 0;
|
2021-02-16 10:29:08 +00:00
|
|
|
}
|
|
|
|
|
`;
|
|
|
|
|
|
2021-04-28 10:28:39 +00:00
|
|
|
function CollapseComponent(props: {
|
2021-02-16 10:29:08 +00:00
|
|
|
children?: React.ReactNode;
|
|
|
|
|
title?: string;
|
|
|
|
|
isOpen?: boolean;
|
2021-07-29 08:13:10 +00:00
|
|
|
titleStyle?: React.CSSProperties;
|
2021-04-28 10:28:39 +00:00
|
|
|
}) {
|
2021-07-07 03:46:16 +00:00
|
|
|
const [open, toggleOpen] = React.useState(false);
|
2021-02-16 10:29:08 +00:00
|
|
|
const handleIsOpen = () => {
|
|
|
|
|
toggleOpen(!open);
|
|
|
|
|
};
|
|
|
|
|
if (!props.title) {
|
|
|
|
|
return <div>{props.children ? props.children : null}</div>;
|
|
|
|
|
}
|
|
|
|
|
return (
|
|
|
|
|
<CollapseWrapper>
|
2021-07-29 08:13:10 +00:00
|
|
|
<div
|
|
|
|
|
className="collapse-title"
|
|
|
|
|
onClick={handleIsOpen}
|
|
|
|
|
style={props.titleStyle}
|
|
|
|
|
>
|
2021-02-16 10:29:08 +00:00
|
|
|
{props.title}
|
|
|
|
|
<Icon
|
|
|
|
|
className={`icon ${!open ? "collapse" : ""}`}
|
2021-04-28 10:28:39 +00:00
|
|
|
icon="chevron-down"
|
2021-02-16 10:29:08 +00:00
|
|
|
iconSize={16}
|
|
|
|
|
/>
|
|
|
|
|
</div>
|
|
|
|
|
<Collapse isOpen={open} keepChildrenMounted>
|
|
|
|
|
<div className="inner-content">
|
|
|
|
|
{props.children ? props.children : null}
|
|
|
|
|
</div>
|
|
|
|
|
</Collapse>
|
|
|
|
|
</CollapseWrapper>
|
|
|
|
|
);
|
2021-04-28 10:28:39 +00:00
|
|
|
}
|
2021-02-16 10:29:08 +00:00
|
|
|
|
|
|
|
|
export default CollapseComponent;
|