mirror of
https://github.com/ant-design/ant-design.git
synced 2024-12-30 20:38:45 +08:00
66 lines
1.8 KiB
TypeScript
66 lines
1.8 KiB
TypeScript
import React from 'react';
|
|
import { DatePicker, Space, Typography } from 'antd';
|
|
import type { DatePickerProps } from 'antd';
|
|
import type { Dayjs } from 'dayjs';
|
|
|
|
const { RangePicker } = DatePicker;
|
|
|
|
const getYearMonth = (date: Dayjs) => date.year() * 12 + date.month();
|
|
|
|
// Disabled 7 days from the selected date
|
|
const disabled7DaysDate: DatePickerProps['disabledDate'] = (current, { from, type }) => {
|
|
if (from) {
|
|
const minDate = from.add(-6, 'days');
|
|
const maxDate = from.add(6, 'days');
|
|
|
|
switch (type) {
|
|
case 'year':
|
|
return current.year() < minDate.year() || current.year() > maxDate.year();
|
|
|
|
case 'month':
|
|
return (
|
|
getYearMonth(current) < getYearMonth(minDate) ||
|
|
getYearMonth(current) > getYearMonth(maxDate)
|
|
);
|
|
|
|
default:
|
|
return Math.abs(current.diff(from, 'days')) >= 7;
|
|
}
|
|
}
|
|
|
|
return false;
|
|
};
|
|
|
|
// Disabled 6 months from the selected date
|
|
const disabled6MonthsDate: DatePickerProps['disabledDate'] = (current, { from, type }) => {
|
|
if (from) {
|
|
const minDate = from.add(-5, 'months');
|
|
const maxDate = from.add(5, 'months');
|
|
|
|
switch (type) {
|
|
case 'year':
|
|
return current.year() < minDate.year() || current.year() > maxDate.year();
|
|
|
|
default:
|
|
return (
|
|
getYearMonth(current) < getYearMonth(minDate) ||
|
|
getYearMonth(current) > getYearMonth(maxDate)
|
|
);
|
|
}
|
|
}
|
|
|
|
return false;
|
|
};
|
|
|
|
const App: React.FC = () => (
|
|
<Space direction="vertical">
|
|
<Typography.Title level={5}>7 days range</Typography.Title>
|
|
<RangePicker disabledDate={disabled7DaysDate} />
|
|
|
|
<Typography.Title level={5}>6 months range</Typography.Title>
|
|
<RangePicker disabledDate={disabled6MonthsDate} picker="month" />
|
|
</Space>
|
|
);
|
|
|
|
export default App;
|