UNPKG

beyond-datetime

Version:
307 lines (235 loc) 6.93 kB
# beyond-datetime 简体中文版,浏览器支持 ie9+ (ie8未经测试过) fork from [http://adphorus.github.io/react-date-range](http://adphorus.github.io/react-date-range) ## 文档 ### 安装 ``` $ npm install --save beyond-datetime ``` ## 使用 ### Calendar 日期选择器 #### 基本用法 ```javascript require('beyond-datetime/css/index.css') import React, { Component } from 'react'; import { Calendar } from 'beyond-datetime'; class MyComponent extends Component { handlerSelect(date){ console.log(date); // Date object } render(){ return ( <div> <Calendar onChange={this.handlerSelect} /> </div> ) } } ``` #### 增加时间选择 ```javascript class MyComponent extends Component { handlerSelect(date){ console.log(date); // Momentjs object } render(){ return ( <div> <Calendar time onChange={this.handlerSelect} /> </div> ) } } ``` #### 禁止选择前一天以及更早的日期 ```javascript const invalidDates = (date)=>{ let today = new Date today.setHours(0) today.setMinutes(0) today.setSeconds(0) today.setMilliseconds(0) return +date < +today } class MyComponent extends Component { render(){ return ( <div> <Calendar invalidDates={invalidDates} /> </div> ) } } ``` #### 从外部通过属性更新,禁止内部setState进行更新, onChange 事件必须返回 false 阻止内部 state 更新,本例也适用于 DateRange、 Time 组件 ```javascript class MyComponent extends Component { constructor(props){ super(props) this.state = { date : new Date } } handlerChange(date){ this.setState({date}) return false // 返回false 阻止 Calendar 组件内部刷新 } render(){ return ( <div> <Calendar date={this.state.date} onChange={this.handlerChange.bind(this)} /> </div> ) } } ``` #### Calendar API (props) | 属性 | 类型 | 说明 | 默认值 | | -------- | ----- | ---- | ---- | | defaultDate | Date | 设定默认日期值 | - | | date | Date | 设定日期值 | - | | onChange | Function | 改变日期/时间事件 | - | | onConfirm | Function | 通过确定按钮改变日期/时间事件 | - | | invalidDates | Function | 禁止选择的日期 | - | | confirm | boolean | 显示确定按钮 | - | | time | boolean | 是否显示时间选择 | false | | second | boolean | 是否显示秒选择 | true | | timeFilter | Array/Function | 时间过滤 | - | | language | string ('en','cn') | 时间过滤 | 'cn' | ### DateRange 日期范围选择器 #### 基本用法 ```javascript require('beyond-datetime/css/index.css') import React, { Component } from 'react'; import { DateRange } from 'beyond-datetime'; class MyComponent extends Component { handlerSelect(range){ console.log(range.startDate,range.endDate); } render(){ return ( <div> <DateRange onChange={this.handlerSelect}/> </div> ) } } ``` #### 使用默认预设(包括今天,昨天,最近7天,最近30天)选择范围 ```javascript require('beyond-datetime/css/index.css') import React, { Component } from 'react'; import { DateRange,defaultRanges } from 'beyond-datetime'; class MyComponent extends Component { handlerSelect(range){ console.log(range.startDate,range.endDate); } render(){ return ( <div> <DateRange ranges={defaultRanges} onChange={this.handlerSelect} /> </div> ) } } ``` #### 时间过滤 ```javascript require('beyond-datetime/css/index.css') import React, { Component } from 'react'; import { DateRange,defaultRanges } from 'beyond-datetime'; const filter = ()=> [[0,3,6,9,12,15,18,21],[0,15,30,45,60],[0,15,30,45,60]] class MyComponent extends Component { handlerSelect(range){ console.log(range.startDate,range.endDate); } render(){ return ( <div> <DateRange timeFilter={filter} ranges={defaultRanges} onChange={this.handlerSelect} /> </div> ) } } ``` #### DateRange API (props) | 属性 | 类型 | 说明 | 默认值 | | -------- | ----- | ---- | ---- | | defaultStartDate | Date | 设定默认的开始日期值 | - | | defaultEndDate | Date | 设定默认的结束日期值 | - | | startDate | Date | 设定开始日期值 | - | | endDate | Date | 设定结束日期值 | - | | onChange | Function | 改变日期/时间事件 | - | | onConfirm | Function | 通过确定按钮改变日期/时间事件 | - | | ranges | Array | 快捷的日期范围选择 | - | | invalidDates | Function | 禁止选择的日期 | - | | time | boolean | 是否显示时间选择 | false | | second | boolean | 是否显示秒选择 | true | | timeFilter | Array/Function | 时间过滤 | - | | startTimeFilter | Array/Function | 开始日期时间过滤,优先级高于 timeFilter | - | | endTimeFilter | Array/Function | 结束日期时间过滤,优先级高于 timeFilter | - | ### Time 时间选择器 #### 基本用法 ```javascript require('beyond-datetime/css/index.css') import React, { Component } from 'react'; import { Time } from 'beyond-datetime'; const filter = ()=> [[0,3,6,9,12,15,18,21],[0,15,30,45,60],[0,15,30,45,60]] class MyComponent extends Component { handlerSelect(range){ console.log(range.startDate,range.endDate); } render(){ return ( <div> <Time filter={filter} onChange={this.handlerSelect}/> </div> ) } } ``` #### Time API (props) | 属性 | 类型 | 说明 | 默认值 | | -------- | ----- | ---- | ---- | | defaultDate | Date | 设定默认日期值 | - | | date | Date | 设定日期值 | - | | onChange | Function | 改变日期/时间事件 | - | | onConfirm | Function | 通过确定按钮改变日期/时间事件 | - | | confirm | boolean | 显示按钮 | - | | second | boolean | 是否显示秒选择 | true | | filter | Array/Function | 时间过滤 | - | ### Trigger ```javascript require('beyond-datetime/css/index.css') import React, { Component } from 'react'; import { Calendar,Trigger } from 'beyond-datetime'; class MyComponent extends Component { constructor(props){ super(props) this.state = { date : null } } handlerChange(date){ this.setState({date}) } render(){ let {date} = this.state return ( <div> <Trigger target={<Calendar defaultDate={date} time onConfirm={this.handlerChange.bind(this)} />}> <input type="text" value={date ? date.toString() : '' } /> </Trigger> </div> ) } } ``` #### Trigger API (props) | 属性 | 类型 | 说明 | 默认值 | | -------- | ----- | ---- | ---- | | target | Calendar/DateRange | - | - | | wrapStyle | object | Trigger 会默认生成一个 div (style="display:inline-block")标签实现定位, 使用 wrapStyle 进行覆盖该div默认样式 | - |