This repository has been archived on 2022-08-14. You can view files and clone it, but cannot push or open issues or pull requests.
2021-05-06 02:35:23 +00:00
|
|
|
// @flow
|
|
|
|
import * as React from "react";
|
|
|
|
import { Popover as ReakitPopover } from "reakit/Popover";
|
|
|
|
import styled from "styled-components";
|
2021-07-21 17:34:55 +00:00
|
|
|
import { fadeAndScaleIn } from "styles/animations";
|
2021-05-06 02:35:23 +00:00
|
|
|
|
|
|
|
type Props = {
|
|
|
|
children: React.Node,
|
|
|
|
width?: number,
|
|
|
|
};
|
|
|
|
|
|
|
|
function Popover({ children, width = 380, ...rest }: Props) {
|
|
|
|
return (
|
|
|
|
<ReakitPopover {...rest}>
|
|
|
|
<Contents width={width}>{children}</Contents>
|
|
|
|
</ReakitPopover>
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
const Contents = styled.div`
|
|
|
|
animation: ${fadeAndScaleIn} 200ms ease;
|
|
|
|
transform-origin: 75% 0;
|
|
|
|
background: ${(props) => props.theme.menuBackground};
|
|
|
|
border-radius: 6px;
|
|
|
|
padding: 12px 24px;
|
|
|
|
max-height: 50vh;
|
|
|
|
overflow-y: scroll;
|
|
|
|
width: ${(props) => props.width}px;
|
|
|
|
box-shadow: ${(props) => props.theme.menuShadow};
|
|
|
|
border: ${(props) =>
|
|
|
|
props.theme.menuBorder ? `1px solid ${props.theme.menuBorder}` : "none"};
|
|
|
|
`;
|
|
|
|
|
|
|
|
export default Popover;
|