zent
Version:
一套前端设计语言和基于React的实现
36 lines (32 loc) • 1.08 kB
text/typescript
import { useState, useEffect } from 'react';
import { parse } from 'date-fns';
import { IDisabledTimeOption } from '../types';
interface IUseConfirmStatus {
format: string;
selected: string;
disabledTimeOption?: IDisabledTimeOption;
}
export default function useConfirmStatus({
disabledTimeOption,
selected,
format,
}: IUseConfirmStatus) {
const [confirmStatus, setConfirmStatus] = useState<boolean>(false);
useEffect(() => {
const date = parse(selected, format, new Date());
const hour = date.getHours();
const minute = date.getMinutes();
const disabledHour = () =>
disabledTimeOption?.disabledHours?.()?.includes(hour);
const disabledMinute = () =>
disabledTimeOption?.disabledMinutes?.(hour)?.includes(minute);
const disabledSecond = () =>
disabledTimeOption
?.disabledSeconds?.(hour, minute)
?.includes(date.getSeconds());
setConfirmStatus(
!selected || disabledHour() || disabledMinute() || disabledSecond()
);
}, [selected, format, disabledTimeOption]);
return confirmStatus;
}