* fix: Drag and drop images in editor, conflict with sidebar react-dnd see: https://github.com/react-dnd/react-dnd/pull/3052 * Bump to non-canary * Upgrade react-dnd * react-dnd api changes * lint * fix: dnd doesn't work on first render * remove unneccessary async * chore: Update react-dnd (API changed again) * restore fade
52 lines
1.1 KiB
JavaScript
52 lines
1.1 KiB
JavaScript
// @flow
|
|
import * as React from "react";
|
|
import styled from "styled-components";
|
|
|
|
type JustifyValues =
|
|
| "center"
|
|
| "space-around"
|
|
| "space-between"
|
|
| "flex-start"
|
|
| "flex-end";
|
|
|
|
type AlignValues =
|
|
| "stretch"
|
|
| "center"
|
|
| "baseline"
|
|
| "flex-start"
|
|
| "flex-end";
|
|
|
|
type Props = {|
|
|
column?: ?boolean,
|
|
shrink?: ?boolean,
|
|
align?: AlignValues,
|
|
justify?: JustifyValues,
|
|
auto?: ?boolean,
|
|
className?: string,
|
|
children?: React.Node,
|
|
role?: string,
|
|
|};
|
|
|
|
const Flex = React.forwardRef<Props, HTMLDivElement>((props: Props, ref) => {
|
|
const { children, ...restProps } = props;
|
|
|
|
return (
|
|
<Container ref={ref} {...restProps}>
|
|
{children}
|
|
</Container>
|
|
);
|
|
});
|
|
|
|
const Container = styled.div`
|
|
display: flex;
|
|
flex: ${({ auto }) => (auto ? "1 1 auto" : "initial")};
|
|
flex-direction: ${({ column }) => (column ? "column" : "row")};
|
|
align-items: ${({ align }) => align};
|
|
justify-content: ${({ justify }) => justify};
|
|
flex-shrink: ${({ shrink }) => (shrink ? 1 : "initial")};
|
|
min-height: 0;
|
|
min-width: 0;
|
|
`;
|
|
|
|
export default Flex;
|