import { useMemo } from 'react'; import cx from 'classnames'; import Icon from '../../icon'; import { formatDate, formatDateRange } from '../utils'; import { ISingleTriggerProps, IRangeTriggerProps, DateNullTuple, } from '../types'; const TriggerPrefixCls = 'zent-datepicker-trigger'; type ITriggerDivProps = Pick< ISingleTriggerProps, 'disabled' | 'canClear' | 'panelVisible' | 'width' >; const TriggerDiv: React.FC = ({ disabled, canClear, panelVisible, width, children, }) => { const triggerStyle: React.CSSProperties = { width, }; return (
{children}
); }; export const SingleInputTrigger: React.FC = ({ value, format, seperator, placeholder, onClearInput, text, name, canClear, icon, hiddenIcon, disabled, ...restProps }) => { const [startText, endText] = Array.isArray(text) ? text : [text]; const canClearMerge = canClear && !!value; return ( {name && ( )} {startText || placeholder} {endText && ( <> {seperator} {endText} )} {!hiddenIcon && ( <> {canClearMerge && } )} ); }; interface ICombinedInputTriggerProps extends IRangeTriggerProps { selected: DateNullTuple; } export const CombinedInputTrigger: React.FC = ({ format, value, selected, seperator, placeholder: [startPlaceholder, endPlaceholder], name, canClear, icon, onClearInput, disabled, ...restProps }) => { const [leftText, rightText] = useMemo(() => { if (!selected) return [null, null]; return formatDateRange(selected, format); }, [selected, format]); return ( {name && ( <> )} {leftText || startPlaceholder} {seperator} {rightText || endPlaceholder} ); };