DatePicker2

输入或选择日期的控件。当用户需要输入一个日期,可以点击标准输入框,弹出日期面板进行选择。

开发指南 #

DatePicker 升级到 DatePicker2 #

1.22版本增加当前组件

功能变化:

  • 交互重构,面板和输入框分离,优化底部扩展等
  • 使用 dayjs 日期库替换了 moment
  • 新增WeekPickerQuarterPicker 选择器
  • 新增了 preset 属性,支持预设日期

API变化:

  • 移除了 defaultVisibleMonth 属性,请使用 defaultPanelValue 替代(仅名字替换)
  • 移除了 footerRender 属性,请使用 extraFooterRender 替代
  • showTime 之前属性类型既支持 Boolean 也支持 Object;现升级为仅支持 Boolean 类型,使用 timePanelProps 来传入时分秒的时间选择属性
  • onChangeonOk 等事件返回日期对象为 Dayjs 类型

国际化 #

日期的国际化包括组件的国际化跟日期库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);

代码演示 #

基本用法 #

最基本的用法。可以通过 onChange 监听选中值的变化。

范围选择 #

指定范围选择器类型。

禁用 #

选择框的不可用状态。你也可以通过数组单独禁用 RangePicker 的其中一项。

禁止选择某些日期 #

可以通过 disabledDate 属性来禁止用户选择或输入某些特定日期。

选择不超过七天的范围 #

使用 onCalendarChange 和 disabledDate 来限制动态的日期区间选择。

格式化 #

使用format属性,可以自定义日期显示格式。

日期时间选择 #

如果需要同时选择时间,可以通过 showTime 属性开启,timePanelProps 支持传入TimePickerPanel的属性,例如 format, defaultValue 等。

预设时间快捷选择 #

通过preset预设时间快捷选择。

面板的默认展现日期 #

可以通过 defaultPanelValue属性可以修改面板的默认展现日期。

无边框 #

无边框样式。

尺寸大小 #

通过 size 属性设置输入框大小,默认medium

API #

日期选择框分为 DatePickerRangePicker 两种类型,分别又有 datemonthyear, week, quarter 五种不同模式。

公共API #

参数 说明 类型 默认值
disabledDate 禁用日期函数

签名:
Function(value: Dayjs, view: String) => Boolean
参数:
value: {Dayjs} 日期值
mode: {String} 当前视图类型
返回值:
{Boolean} 是否禁用
Function () => false
dateCellRender 自定义日期渲染函数

签名:
Function(value: Object) => ReactNode
参数:
value: {Dayjs} 日期值
返回值:
{ReactNode} node节点
Function -
onPanelChange 日历面板切换的回调

签名:
Function(value: Dayjs, mode: String) => void
参数:
value: {Dayjs} 日期对象
Function -
showTime 是否使用时间控件 Boolean false
resetTime 每次选择日期时是否重置时间 Boolean false
preset 预设日期快捷选择 Object -
extraFooterRender 自定义额外的页脚

签名:
Function() => ReactNode
返回值:
{ReactNode} 自定义的面板页脚组件
Function () => null
disabled 是否禁用 Boolean false
hasClear 是否显示清空按钮 Boolean true
size 输入框尺寸

可选值:
small, medium, large
Enum medium
inputReadOnly 只读 Boolean false
inputProps 输入框其他属性 Object -
visible 弹层显示状态 Boolean -
defaultVisible 弹层默认是否显示 Boolean false
onVisibleChange 弹层展示状态变化时的回调

签名:
Function(visible: Boolean) => void
参数:
visible: {Boolean} 弹层是否显示
Function func.noop
popupTriggerType 弹层触发方式

可选值:
'click', 'hover'
Enum 'click'
popupAlign 弹层对齐方式,具体含义见 OverLay文档 String 'tl tl'
popupContainer 弹层容器 any -
popupStyle 弹层自定义样式 Object -
popupClassName 弹层自定义样式类 String -
popupProps 弹层其他属性 Object -
followTrigger 是否跟随滚动 Boolean -
popupProps 弹层其他属性 Object -
isPreview 是否为预览态 Boolean -
renderPreview 预览态模式下渲染的内容

签名:
Function(value: Dayjs) => void
参数:
value: {Dayjs} 日期
Function -
dateInputAriaLabel 日期输入框的 aria-label 属性 String -

DatePicker2 (YearPicker/MonthPicker/WeekPicker/QuarterPicker) #

参数 说明 类型 默认值
placeholder 输入提示 String -
value 日期值(受控) Dayjs/String -
defaultValue 初始日期值 Dayjs/String -
format 日期格式 String YYYY-MM
outputFormat 输出格式 String ((date: Dayjs, dateStr: String) => any)
onChange 日期值改变时的回调

签名:
Function(value: Dayjs/String) => void
参数:
value: {Dayjs/String} 日期值
Function func.noop
onOk 点击确认按钮时的回调

签名:
Function() => Array
返回值:
{Array} 日期范围
Function func.noop

DatePicker2.RangePicker #

参数 说明 类型 默认值
mode 日期面板的状态

可选值:
datemonthyear, week, quarter
Enum date
placeholder 输入提示 String [String, String]
value 日期值(受控) [Dayjs, Dayjs] -
defaultValue 初始日期值 [Dayjs, Dayjs] -
format 日期格式 String/Function YYYY-MM
outputFormat 输出格式 String ((date: [Dayjs, Dayjs], dateStr: [String, String]) => any)
onChange 日期值改变时的回调

签名:
Function(value) => void
参数:
value: {[Dayjs, Dayjs]} 日期范围
Function func.noop
onCalendarChange 待选日期发生变化的回调

签名:
Function(value, dateStrings) => void
参数:
value: {[Dayjs, Dayjs]} 日期范围
dateStrings: {[string, string]}
Function func.noop
onOk 点击确认按钮时的回调

签名:
Function(value) => void
参数:
value: {[Dayjs, Dayjs]} 日期范围
Function func.noop