import React, {
ReactElement,
useCallback,
useContext,
useState,
MouseEvent,
} from 'react';
import { StyledDropdownButton, StyledDropdownContent } from './StyledFilters';
import Button from '../../Button';
import Divider from '../../Divider';
import Dropdown from '../../Dropdown';
import FiltersContext from './FiltersContext';
import Icon, { IconName } from '../../Icon';
const getCaretIcon = (open: boolean): IconName => {
return open === true ? 'arrow-up' : 'arrow-down';
};
const DropdownButton = ({
text,
onClick,
active,
leftIcon,
rightIcon,
}: {
active: boolean;
leftIcon?: IconName;
onClick?: (e: MouseEvent) => void;
rightIcon?: IconName;
text?: string | ReactElement;
}) => {
return (
{leftIcon !== undefined ? (
) : null}
{text}
{rightIcon !== undefined ? (
) : null}
);
};
const FilterDropdown = ({
buttonText,
content,
dirty,
icon,
noCaret,
onClearButtonClick,
'data-test-id': dataTestId,
}: {
buttonText?: string | ReactElement;
content: ReactElement;
'data-test-id'?: string;
dirty: boolean;
icon?: IconName;
noCaret?: boolean;
onClearButtonClick?: () => void;
}) => {
const { applyButtonProps, clearButtonProps } = useContext(FiltersContext);
const [open, setOpen] = useState(false);
const onClose = useCallback(() => setOpen(false), []);
const shouldRenderApplyButton = applyButtonProps !== undefined;
const shouldRenderClearButton =
clearButtonProps !== undefined && onClearButtonClick !== undefined;
return (
{content}
{(shouldRenderApplyButton || shouldRenderClearButton) && (
)}
{clearButtonProps !== undefined &&
onClearButtonClick !== undefined && (
)}
{applyButtonProps !== undefined && (