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 && (