react-toolbox/components/date_picker/DatePicker.jsx

63 lines
1.5 KiB
React
Raw Normal View History

import React from 'react';
import CalendarDialog from './DatePickerDialog';
2015-10-22 02:31:17 +03:00
import events from '../utils/events';
import Input from '../input';
2015-10-22 02:31:17 +03:00
import style from './style';
import time from '../utils/time';
2015-09-07 02:59:11 +03:00
2015-10-22 02:31:17 +03:00
class DatePicker extends React.Component {
static propTypes = {
label: React.PropTypes.string,
2015-11-16 11:56:05 +03:00
maxDate: React.PropTypes.object,
minDate: React.PropTypes.object,
2015-11-10 16:27:00 +03:00
onChange: React.PropTypes.func,
2015-09-07 02:59:11 +03:00
value: React.PropTypes.object
};
2015-09-07 02:59:11 +03:00
state = {
2015-11-11 03:29:42 +03:00
active: false
};
2015-09-07 02:59:11 +03:00
2015-11-11 03:29:42 +03:00
handleDismiss = () => {
this.setState({active: false});
2015-11-10 16:27:00 +03:00
};
2015-11-11 03:29:42 +03:00
handleInputMouseDown = (event) => {
events.pauseEvent(event);
2015-11-11 03:29:42 +03:00
this.setState({active: true});
};
2015-11-11 03:29:42 +03:00
handleSelect = (value) => {
if (this.props.onChange) this.props.onChange(value);
this.setState({active: false});
};
2015-09-07 02:59:11 +03:00
render () {
2015-11-11 03:29:42 +03:00
const { value } = this.props;
const date = value ? `${value.getDate()} ${time.getFullMonth(value)} ${value.getFullYear()}` : null;
2015-11-16 11:56:05 +03:00
2015-09-07 02:59:11 +03:00
return (
<div data-toolbox='date-picker'>
2015-09-07 02:59:11 +03:00
<Input
className={style.input}
2015-11-11 03:29:42 +03:00
onMouseDown={this.handleInputMouseDown}
label={this.props.label}
readOnly
type='text'
2015-11-11 03:29:42 +03:00
value={date}
/>
2015-09-07 02:59:11 +03:00
<CalendarDialog
2015-11-11 03:29:42 +03:00
active={this.state.active}
2015-11-16 11:56:05 +03:00
maxDate={this.props.maxDate}
minDate={this.props.minDate}
2015-11-11 03:29:42 +03:00
onDismiss={this.handleDismiss}
onSelect={this.handleSelect}
value={this.props.value}
/>
2015-09-07 02:59:11 +03:00
</div>
);
}
2015-10-21 13:25:07 +03:00
}
2015-10-22 02:31:17 +03:00
export default DatePicker;