joywok-material-components
Version:
<h1 align="center"> Joywok Material Components </h1>
118 lines (111 loc) • 4.45 kB
JavaScript
import React from 'react';
import ReactDOM from 'react-dom';
import MomentUtils from '@date-io/moment';
import moment from 'moment';
import DatePicker from 'material-ui-pickers/DatePicker';
import {InlineDatePicker} from 'material-ui-pickers/DatePicker';
import {MuiPickersUtilsProvider,InlineDateTimePicker,DateTimePicker} from "material-ui-pickers";
import DateFnsUtils from "@date-io/date-fns";
require('./style/range.css');
function timetostamp_now(stamp,type){
return stamp
}
class JwTimeRange extends React.Component{
constructor(props) {
super(props);
this.state = {
startDate:props.startDate ||null,
endDate:props.endDate || null
};
}
startDateChange(data){
let self = this;
let date = moment(data)
let endDate = this.state.endDate;
let datas = {
startDate:timetostamp_now(date.format('X'))
}
if(endDate!=null){
if(date.format('X') > endDate){
datas['endDate'] = null
}
}else{
datas['endDate'] = null
}
self.props.onChange && self.props.onChange(datas)
}
endDateChange(data){
let self = this;
let date = moment(data);
let datas = {
startDate:(this.state.startDate!=null?this.state.startDate:null),
endDate:timetostamp_now(date.format('X'),true)
}
if(datas.startDate>datas.endDate){
datas['startDate'] = datas.endDate
}
self.props.onChange && self.props.onChange(datas)
}
render(){
let self = this;
let format = this.props.format || 'YYYY-MM-DD HH:mm';
if(window.lang == 'zh'){
moment.locale('zh-cn', {
months: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'],
monthsShort: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'],
weekdays: ['周天', '周一', '周二', '周三', '周四', '周五', '周六'],
weekdaysShort: ['周天', '周一', '周二', '周三', '周四', '周五', '周六'],
weekdaysMin: ['周天', '周一', '周二', '周三', '周四', '周五', '周六'],
})
}else{
moment.locale('en', {
months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
monthsShort: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
weekdays: ["Sun", "Mon", "Tues", "Wednes", "Thurs", "Fri", "Satur"],
weekdaysShort: ["Sun", "Mon", "Tues", "Wednes", "Thurs", "Fri", "Satur"],
weekdaysMin: ["Sun", "Mon", "Tues", "Wednes", "Thurs", "Fri", "Satur"],
})
}
return (<div className="jw-datetimerange ">
<div className="jw-datetimerange-icon"></div>
<div className="jw-datetimerange-c">
<MuiPickersUtilsProvider utils={MomentUtils} moment={moment}>
<InlineDateTimePicker
className={'jw-datetimerange-start'}
{...self.props.startDateProps || {}}
showTabs
ampm={false}
showTabs={true}
format={format}
placeholder={(self.props.startdatelabel || "开始时间")}
value={(self.state.startDate!=null&&self.state.startDate!=0)?moment(self.state.startDate*1000):null}
onChange={(e)=>self.startDateChange(e)}
onClose={(e)=>setTimeout(function(){},0)}
/>
<div className="jw-datetimerange-sep">-</div>
<InlineDateTimePicker
className={'jw-datetimerange-end'}
format={format}
placeholder={(self.props.enddatelabel || "结束时间")}
showTabs
ampm={false}
showTabs={true}
disabled={self.state.startDate!=null?false:true}
minDate={self.state.startDate!=null&&self.state.startDate!=0?moment(self.state.startDate*1000):null}
{...self.props.endDateProps || {}}
value={(self.state.endDate!=null&&self.state.endDate!=0)?moment(self.state.endDate*1000):null}
onChange={(e)=>self.endDateChange(e)}
onClose={(e)=>setTimeout(function(){},0)}
/>
</MuiPickersUtilsProvider>
</div>
</div>
)
}
componentWillReceiveProps(nextProps){
this.setState(nextProps);
}
componentDidMount(){
}
}
export default JwTimeRange;