import React, { Dispatch, HTMLAttributes, SetStateAction, useMemo } from 'react'; import styled from 'styled-components'; type Ctx = | { setOrder: Dispatch>; defaultOrder: number; } | { setOrder: null; defaultOrder: null }; export const columnMenuCtx = React.createContext(null!); export interface ColumnMenuProps extends HTMLAttributes { children?: React.ReactNode; setOrder?: Dispatch> | null; defaultOrder?: number | null; } const MenuStyled = styled.div` display: flex; //user-select: none; `; const ColumnMenu: React.FC = (props) => { const { children, setOrder, defaultOrder, ...rest } = props; const value = useMemo(() => { if (setOrder && defaultOrder) { return { setOrder, defaultOrder }; } return { setOrder: null, defaultOrder: null }; }, [defaultOrder]); return ( {children} ); }; ColumnMenu.defaultProps = { children: '', setOrder: null, defaultOrder: null }; export default ColumnMenu;