# 日期 DatePicker

日期选择框

## 何时使用
例如：表单中需要选择日期时间

## 如何使用

```
import DatePicker from 'bee-datepicker';
import 'bee-datepicker/build/DatePicker.css';

```

## 代码演示




## API

### DatePicker

|参数|说明|类型|默认值|
|:---|:-----|:----|:------|
|prefixCls|组件的前缀|String| - |
|className|添加输入框的样式|String| - |
|dropdownClassName|添加下拉面板的样式|String| - |
|style|添加内联样式| Object| - |
|dateRender|日期表格|(current, value) => React.Node| - |
|renderSidebar|侧边栏|() => React.Node| - |
|renderFooter|扩展底边栏|() => React.Node| - |
|renderError|当输入格式不对的时候显示在输入框下边的错误提示|() => React.Node| - |
| defaultValue|默认值，输入框的默认值| moment| - |
| value|日期| moment| - |
| locale| 语言包 | Object |zh_CN |
| format|日期格式化| String | "YYYY-MM-DD" |
| open|日期组件显示/隐藏，该值可动态改变| Boolean | false |
| defaultPanelShown |设置日期组件显示/隐藏的默认状态，该值不可更改|Boolean|false|
| disabled|是否禁用功能|Boolean| false |
| disabledDate |禁用的日期|Function(current:moment):Boolean| - |
| disabledTime |禁用的时间|Function(current:moment):Object| - |
| showDateInput|显示日期输入框|Boolean| true |
| showWeekNumber|是否显示周数| Boolean| false|
| showToday|是否显示今天| Boolean| true|
| showOk|底边栏是否显示ok按钮| Boolean | auto |
| onSelect|选择日期的回调函数|Function(date: moment)| - |
| onChange|日期改变的回调函数|Function(date: moment)| - |
| onOk|点击确定按钮的回调|Function(date: moment)| - |
| onKeyDown |keydown回调|Function|-|
| dateInputPlaceholder|日期的placeholder| String | - |
| showTime | 是否显示时间选择面板 | Boolean | - |
| renderIcon |更改默认的图标|Function| () => <Icon type="uf-calendar" />|
| closeIcon |鼠标划过清空内容的icon|Function| () => <Icon type="uf-close-c" />|
| getCalendarContainer |更改默认渲染位置|Function| - |
| keyboardInput |外层输入框是否支持键盘输入|Boolean|false|
| iconClick |日期按钮点击的回调|Function|-|
| outInputFocus |外层输入框获得焦点的回调|Function|-|
| outInputKeydown |外层输入框keydown回调|Function|-|
| onOpenChange |日期面板收起/展开状态改变时的回调|Function|-|
| showClose |外层输入框是否显示清空按钮|Boolean|true|
| onDateInputBlur |日期面板中输入框失去焦点的回调|Function|-|
| placement | 日期面板弹出位置，可选 `bottomLeft/bottomRight/topRight/topLeft` | string | bottomLeft | 



注：使用keyboardInput时，以下api变化

- 输入内容的格式需要个format格式相同，也可以有部分变化，变化范围参考 [moment.js](http://momentjs.cn/)。例如：format='YYYY-MM-DD' 输入 '19-1-1'也可识别
- 当输入日期格式无法转换为 moment 对象时，onChange,onClick回调内对应的moment参数值为 null


### MonthPicker

|参数|说明|类型|默认值|
|:---|:-----|:----|:------|
|prefixCls|组件的前缀|String|-|
|className|添加节点的样式|String| - |
|style|添加内联样式| Object| - |
| value |当前值，如输入框的值|moment| - |
| defaultValue|默认值，输入框的默认值| moment| - |
| disabledDate |禁用的日期|Function(current:moment):Boolean| - |
| onSelect|选择日期的回调函数|Function(date: moment)| - |
| onChange|日期改变的回调函数|Function(date: moment)| - |
| monthCellRender |月份的渲染方法| function | - |
| dateCellRender|日期的渲染方法|function| - |
| monthCellContentRender|自定义月份的渲染方法，将被添加渲染内容中| function| - |
| getCalendarContainer |更改默认渲染位置|Function| - |
| locale| 语言包 | Object |zh_CN |
| closeIcon |鼠标划过清空内容的icon|Function| () => <Icon type="uf-close-c" />|
| showClose |外层输入框是否显示清空按钮|Boolean|true|
| placement | 日期面板弹出位置，可选 `bottomLeft/bottomRight/topRight/topLeft` | string | bottomLeft | 
| format|日期格式化| String/Array | "YYYY-MM" |
|renderError|当输入格式不对的时候显示在输入框下边的错误提示|() => React.Node| - |


### RangePicker

|参数|说明|类型|默认值|
|:---|:-----|:----|:------|
|prefixCls|组件的前缀|String| - |
|className|添加节点的样式|String| - |
|style|添加内联样式| Object| - |
|dateRender|日期表格|(current, value) => React.Node| - |
|renderSidebar|侧边栏|() => React.Node| - |
|renderFooter|扩展底边栏|() => React.Node| - |
| value|当前选中的区间|moment[]| - |
| defaultValue|默认选中的区间|	moment[]| - |
| locale|日历的语言 | Object |en_US |
| format|日期格式化| String | - |
| open|日期组件隐藏、显示| Boolean | false |
| disabledDate |禁用的日期|Function(current:moment):Boolean| - |
| disabledTime |禁用的时间|Function(current:moment):Object| - |
| showDateInput|显示日期输入康|Boolean| true |
| showWeekNumber|是否显示周数| Boolean| false|
| showToday|是否显示今天| Boolean| true|
| showOk|底边栏是否显示ok按钮| Boolean | auto |
| showClear|是否显示清除按钮| Boolean|false|
| onSelect|选择日期的回调函数|Function(date: moment)| - |
| onChange|日期改变的回调函数|function(dates: [moment, moment], dateStrings: "[string, string]", dateStrings: [string, string])| - |
| onOk|点击确定按钮的回调|Function(dates: moment[])| - |
| onHoverChange|日期被选中的回调|Function(date: moment)| - |
| dateInputPlaceholder|日期的placeholder| String | - |
| type|是否固定开始或结束选定的值|enum('both','start', 'end')| - |
| getCalendarContainer |更改默认渲染位置|Function| - |
| locale| 语言包 | Object |zh_CN |
| closeIcon |鼠标划过清空内容的icon|Function| () => <Icon type="uf-close-c" />|
| showTime | 是否显示时间选择面板 | Boolean | - |
| showClose |外层输入框是否显示清空按钮|Boolean|true|
| onOpenChange |日期面板收起/展开状态改变时的回调|Function|-|
| onPanelChange |日期日期改变时的回调|Function|-|
| onFormControlClear |外层输入框点击关闭的回调|Function|-|
| onStartInputBlur |日期面板中 左输入框失去焦点的回调|Function|`e` : 事件对象<br>`startValue` :  开始时间<br>`[startValue,endValue]` : 包含开始时间和结束时间的数组|
| onEndInputBlur |日期面板中 右输入框失去焦点的回调|Function|`e` : 事件对象<br>`endValue` :  结束时间<br>`[startValue,endValue]` : 包含开始时间和结束时间的数组|
| placement | 日期面板弹出位置，可选 `bottomLeft/bottomRight/topRight/topLeft` | string | bottomLeft | 

### WeekPicker

|参数|说明|类型|默认值|
|:---|:-----|:----|:------|
| placeholder|输入框placeholder|String| - |
| defaultValue|默认值|moment| - |
| getCalendarContainer |更改默认渲染位置|Function| - |
| locale| 语言包 | Object |zh_CN |
| closeIcon |鼠标划过清空内容的icon|Function| () => <Icon type="uf-close-c" />|
| showClose |外层输入框是否显示清空按钮|Boolean|true|

### YearPicker

|参数|说明|类型|默认值|
|:---|:-----|:----|:------|
| placeholder |输入框placeholder|String| - |
| defaultValue|默认值|moment| 当前年 |
| getCalendarContainer |更改默认渲染位置|Function| - |
| format|日期格式化| String | "YYYY" |
| disabled|是否禁用功能|Boolean| false |
| locale| 语言包 | Object |zh_CN |
| closeIcon |鼠标划过清空内容的icon|Function| () => <Icon type="uf-close-c" />|
| showClose |外层输入框是否显示清空按钮|Boolean|true|
| placement | 日期面板弹出位置，可选 `bottomLeft/bottomRight/topRight/topLeft` | string | bottomLeft | 


### Moment.js
相关的文档地址[链接](http://momentjs.cn/docs/)
#### 格式化

```javascript
var moment = require('moment');
moment().format();                                // "2014-09-08T08:02:17-05:00" (ISO 8601)
moment().format("YYYY-MM-DD");                    // "2018-08-08"
moment().format("dddd, MMMM Do YYYY, h:mm:ss a"); // "Sunday, February 14th 2010, 3:25:50 pm"
moment().format("ddd, hA");                       // "Sun, 3PM"
moment('gibberish').format('YYYY MM DD');         // "Invalid date"
```

#### 当前时间

```javascript
var now = moment();
```

#### 设置语言 (全局)

```javascript
moment.locale('en');     //英文
moment.locale('zh-cn');  //中文
```

#### 设置语言 (局部) 1.7.0+

```javascript
moment().locale('en'); //英文
```



### 已支持的键盘操作

|按键|功能|
|:---|:----|
|↓(下箭) |打开面板|
|esc |关闭面板|
|delete |清除内容|


## 注意事项

DatePicker 国际化时，部分 locale 是从 moment 中读取，所以需要先设置 moment 的 locale

```
import moment from "moment";
moment.locale('en');//设置为英文

```

## 更新日志
