import clsx from 'clsx'; import { useMemo } from 'react'; import { globals } from '@/utils/constants'; import { CheckboxChecked, CheckboxNull } from '../Icons'; import { CProps } from '../props'; import { CheckboxProps } from './Checkbox'; export interface CheckboxTristateProps extends Omit { value: boolean | null; setValue?: (newValue: boolean | null) => void; } function CheckboxTristate({ disabled, label, title, titleHtml, hideTitle, className, value, setValue, ...restProps }: CheckboxTristateProps) { const cursor = useMemo(() => { if (disabled) { return 'cursor-not-allowed'; } else if (setValue) { return 'cursor-pointer'; } else { return ''; } }, [disabled, setValue]); function handleClick(event: CProps.EventMouse): void { event.preventDefault(); if (disabled || !setValue) { return; } if (value === false) { setValue(null); } else if (value === null) { setValue(true); } else { setValue(false); } } return ( ); } export default CheckboxTristate;