按照日历形式展示数据的容器。
1.22版本增加当前组件
日历组件是一个偏向于展示与受控的基础组件,可用于日程、课表、价格日历、农历展示等。
由于 Calendar
组件内部使用 dayjs
对象来设置日期(请使用最新版 dayjs),部分 Locale
读取自 日期库dayjs
的国际化。
import { DatePicker2, ConfigProvider } from '@alifd/next';
import 'dayjs/locale/en';
import en from '@alifd/next/lib/locale/en-us';
function App() {
return (
<ConfigProvider locale={en}>
<DatePicker2 />
</ConfigProvider>
);
}
ReactDOM.render(<App />, mountNode);
参数 | 说明 | 类型 | 默认值 | 是否必填 |
---|---|---|---|---|
defaultValue | 默认选中的日期(dayjs 对象) | ConfigType | - | |
value | 选中的日期值 (dayjs 对象) | ConfigType | - | |
defaultPanelValue | 面板默认显示的日期 | ConfigType | - | |
panelValue | 面板显示的日期(受控) | ConfigType | - | |
shape | 展现形态 | 'card' | 'fullscreen' | 'panel' | 'fullscreen' | |
mode | 日期模式 | CalendarMode | 'month' | |
panelMode | 面板模式,未指定时会根据 mode 自动推断 | CalendarPanelMode | - | |
onSelect | 选择日期单元格时的回调 | (value: Dayjs, strVal: string) => void | - | |
onChange | 值改变时的回调 | (value: Dayjs, strVal: string) => void | - | |
onPanelChange | 日期面板变化回调 | (value: Dayjs, mode: string, reason?: string) => void | - | |
className | 自定义样式类 | string | - | |
dateCellRender | 自定义日期渲染 | CustomCellRender | - | |
monthCellRender | 自定义月份渲染函数 | CustomCellRender | - | |
yearCellRender | 自定义年份渲染函数 | CustomCellRender | - | |
quarterCellRender | 自定义季度渲染函数 | CustomCellRender | - | |
disabledDate | 不可选择的日期 | (value: Dayjs, mode: CalendarPanelMode) => boolean | - | |
onPrev | 点击头部左单箭头时触发的回调 | OnPrevOrNext | - | |
onNext | 点击头部右单箭头时触发的回调 | OnPrevOrNext | - | |
onSuperPrev | 点击头部左双箭头时触发的回调 | OnPrevOrNext | - | |
onSuperNext | 点击头部右双箭头时触发的回调 | OnPrevOrNext | - | |
headerRender | 头部自定义渲染 | (props: HeaderPanelProps) => React.ReactNode | - | |
validValue | 可选择的年份的有效区间 | [Dayjs, Dayjs] | - | |
renderHeaderExtra | 渲染头部额外内容 | (props: HeaderPanelProps) => React.ReactNode | - | |
cellClassName | 单元格自定义样式 | (value: Dayjs) => Record<string, boolean> | undefined | null | - | |
cellProps | 单元格自定义属性 | { onMouseEnter?: ( v: Dayjs, e: React.MouseEvent<HTMLElement>, args: Pick<CellData, 'isCurrent' | 'label'> ) => void; onMouseLeave?: ( v: Dayjs, e: React.MouseEvent<HTMLElement>, args: Pick<CellData, 'isCurrent' | 'label'> ) => void; } |
- |
参数 | 说明 | 类型 | 默认值 | 是否必填 |
---|---|---|---|---|
value | - | Dayjs | - | 是 |
label | - | number | string | - | 是 |
isCurrent | - | boolean | - | 是 |
key | - | string | number | - | 是 |
export type OnPrevOrNext = (value: Dayjs, options: { unit: ManipulateType; num: number }) => void;
export type CalendarMode = 'month' | 'year';
export type CalendarPanelMode = 'date' | 'week' | 'month' | 'quarter' | 'year' | 'decade';
export type CustomCellRender = (value: Dayjs) => React.ReactNode;