import React, { useRef, useEffect, useCallback, useState, useMemo } from 'react';
import { storiesOf } from '@storybook/react';
import { addDays, addWeeks, addMonths, startOfMonth, endOfMonth } from 'date-fns';
import classNames from 'classnames';
import * as dateFns from 'date-fns';
import DatePicker, { DatePickerProps } from '../index';
import { DayStatusType } from '../index';
import { Button, Form, withField } from '../../index';
import {IconClose, IconChevronDown} from '@douyinfe/semi-icons';
const presets = [
{
text: 'Today',
start: new Date(),
end: new Date(),
},
{
text: 'Tomorrow',
start: addDays(new Date(), 1),
end: addDays(new Date(), 1),
},
{
text: 'Next Week',
start: addWeeks(new Date(), 1),
end: addWeeks(new Date(), 2),
},
{
text: 'Next Month',
start: startOfMonth(addMonths(new Date(), 1)),
end: endOfMonth(addMonths(new Date(), 1)),
},
{
text: 'Today',
start: new Date(),
end: new Date(),
},
{
text: 'Tomorrow',
start: addDays(new Date(), 1),
end: addDays(new Date(), 1),
},
{
text: 'Next Week',
start: addWeeks(new Date(), 1),
end: addWeeks(new Date(), 2),
},
{
text: 'Next Month',
start: startOfMonth(addMonths(new Date(), 1)),
end: endOfMonth(addMonths(new Date(), 1)),
},
];
const stories = storiesOf('DatePicker', module);
stories.add('default', () => {
const Demo = () => {
const ref = useRef(null);
useEffect(() => {
console.log(ref.current);
if (ref.current) {
console.log('triggerElRef: ', ref.current.triggerElRef);
}
}, [ref.current]);
return (
<>
({
text: preset.text,
start: preset.start,
}))}
onPresetClick={(item, e) => {
const { start } = item;
console.log('preset click', item, e, start);
}}
/>
({
start: new Date(),
})]}
onPresetClick={(item, e) => {
const { start } = item;
console.log('preset click', item, e, start);
}}
/>
>
);
};
return ;
});
stories.add('useFullRender', () => {
function Demo() {
const renderFullDate = (dayNumber: number, fullDate: string, dayStatus: DayStatusType) => {
const { isInRange, isHover, isSelected, isSelectedStart, isSelectedEnd } = dayStatus;
const prefix = 'components-datepicker-demo';
const dateCls = classNames({
[`${prefix}-day-inrange`]: isInRange,
[`${prefix}-day-hover`]: isHover,
[`${prefix}-day-selected`]: isSelected,
[`${prefix}-day-selected-start`]: isSelectedStart,
[`${prefix}-day-selected-end`]: isSelectedEnd,
});
const dayStyle = {
display: 'flex',
alignItems: 'center',
justifyContent: 'center',
width: '80%',
height: '80%',
borderRadius: '50%',
};
return (
{dayNumber}
);
};
return ;
}
return ;
});
stories.add('triggerRender', () => {
function Demo() {
const ref = useRef();
const [date, setDate] = useState(new Date());
const formatToken = 'yyyy-MM-dd';
const onChange = useCallback(date => {
setDate(date);
}, []);
const onClear = useCallback(e => {
e && e.stopPropagation();
setDate(null);
}, []);
const closeIcon = useMemo(() => {
return date ? : ;
}, [date]);
return (
(
)}
/>
);
}
return ;
});
stories.add('Form.DatePicker', () => {
function Demo() {
const ref = useRef();
const ref2 = useRef();
const [open3, setOpen3] = useState(false);
const presets = [
{
text: 'Today',
start: new Date(),
end: new Date(),
},
{
text: 'Tomorrow',
start: new Date(new Date().valueOf() + 1000 * 3600 * 24),
end: new Date(new Date().valueOf() + 1000 * 3600 * 24),
},
];
// const CustomDatePicker = (props: DatePickerProps & { fieldRef: React.Ref