import { ComponentProps, ReactNode, useState } from 'react';
import classnames from 'classnames';
import styles from './InternalTextField.css';
import Box from '../Box';
import Icon from '../Icon';
import { ENTER, SPACE, TAB } from '../keyCodes';
import Pog from '../Pog';
import TapArea from '../TapArea';
import Tooltip from '../Tooltip';
function MaybeTooltip({
children,
tooltipText,
}: {
children: ReactNode;
tooltipText: string | null | undefined;
}) {
return tooltipText ? (
{children}
) : (
children
);
}
type Props = {
accessibilityChecked?: boolean;
accessibilityHidden?: boolean;
accessibilityLabel?: string;
hoverStyle?: 'default' | 'none';
icon: 'arrow-down' | 'cancel' | 'eye' | 'eye-hide' | 'compact-chevron-down' | 'compact-cancel';
onClick: () => void;
pogPadding?: 1 | 2;
role?: 'switch';
tapStyle?: ComponentProps['tapStyle'];
tooltipText?: string;
};
export default function IconButtonEnd({
accessibilityChecked,
accessibilityHidden,
accessibilityLabel,
hoverStyle = 'default',
icon,
onClick,
pogPadding = 1,
role,
tapStyle,
tooltipText,
}: Props) {
const [focused, setFocused] = useState(false);
return (
// styles.actionButtonContainer is required for RTL positioning
setFocused(false)}
onFocus={() => setFocused(true)}
onKeyDown={({ event }) => {
if ([ENTER, SPACE].includes(event.keyCode)) onClick();
if (event.keyCode !== TAB) event.preventDefault();
}}
onMouseEnter={() => setFocused(true)}
onMouseLeave={() => setFocused(false)}
onTap={onClick}
role={role}
rounding="circle"
tabIndex={accessibilityHidden ? -1 : 0}
tapStyle={tapStyle}
>
['icon']}
iconColor="darkGray"
padding={pogPadding}
size="xs"
/>
);
}