Material DateTime Picker for React.js
Простой компонент для React'а в стиле Material Design. Без использования jQuery.
Оригинал взят отсюда

Установка
npm install --save react-material-datetime-picker
Подключение
Для подключения компонента нужно:
import DataTimePicker from 'react-material-datetime-picker';
Также, не забудьте подключить файл со стилями
<link rel="stylesheet" href="node_modules/react-material-datetimepicker/build/react-material-datetime-picker.css">
API
По-умолчанию используются внутренние свойства и обработчики.
Параметры
day (string) - день. По-умолчанию, текущий день (по времени установленному в ОС)
hours (string) - часы. По-умолчанию, текущий час (по времени, установленному в ОС)
minutes (string) - минуты. По-умолчанию, текущая минута (по времени установленному в ОС)
month (string) - месяц. По-умолчанию, текущий месяц (по времени установленному в ОС)
show (bool) - показывать комонент или скрыть его. По-умолчанию, true
showCalendar (bool) - показывать календарь. По-умолчанию, показываются.
showClock (bool) - показывать часы. По-умолчанию, скрыты
type (bool) - активная вкладка: календарь/часы. true - активен календарь, false - активены часы. По-умолчанию: true
weekday (string) - день недели. По-умолчанию, текущий день недели (по времени установленному в ОС)
year (string) - год. По-умолчанию, текущий год (по времени установленному в ОС)
Обработчики
При вызове, обработчику передается 3 аргумента: контекст компонента (this) для обращения к его состоянию,
аргументы для, которые изначально передавались передавались обработчику, сам обработчик.
clickOnCancel - Обработчик нажатия на кнопку Cancel
clickOnOK - Обработчик нажатия на кнопку OK
handleChangeDay - Обработчик изменения месяца
handleChangeHours - Обработчик изменения часов
handleChangeMinutes - Обработчик изменения минут
handleChangeMonth - Обработчик изменения месяца
handleChangeType - Обработчик изменения активной вкладки (календарь/часы)
Простой пример использования
"use strict";
import React, { Component, PropTypes } from 'react';
import ReactDOM from 'react-dom';
import DataTimePicker from 'react-material-datetime-picker';
class App extends Component {
constructor(props) {
super(props);
}
render() {
return (
<DataTimePicker />
);
}
}
ReactDOM.render(<App />, document.getElementById('app'));
Пример использования с передачей своих свойств
Для удобной работы со временем, советую использовать Moment.js - библеотеку для работы со временем.
"use strict";
import React, { Component, PropTypes } from 'react';
import ReactDOM from 'react-dom';
import moment from 'moment';
import 'moment/locale/ru';
import DataTimePicker from 'react-material-datetime-picker';
class App extends Component {
constructor(props) {
super(props);
moment.locale('ru');
this.state = {
day: moment().format("DD"),
hours: moment().format("HH"),
minutes: moment().format("mm"),
month: moment().format("MMMM"),
show: true,
showCalendar: true,
showClock: false,
type: true,
weekday: moment().format("dddd")
year: moment().format("YYYY"),
}
}
render() {
const {day, hours, minutes, month, show, showCalendar, showClock, type, weekday,year} = this.state;
return (
<DataTimePicker
day={day}
hours={hours}
minutes={minutes}
month={month}
show={show}
showCalendar={showCalendar}
showClock={showClock}
type={type}
weekday={weekday}
year={year}
/>
);
}
}
ReactDOM.render(<App />, document.getElementById('app'));
Пример использования с передачей своих обработчиков
При вызове обработчика, ему передается конекст компонента (this).
"use strict";
import React, { Component, PropTypes } from 'react';
import ReactDOM from 'react-dom';
import DataTimePicker from 'react-material-datetime-picker';
class App extends Component {
constructor(props) {
super(props);
}
handleChangeType = (context, arg, lastHandler) => {
console.log(context.state);
context.setState({
type: true,
});
console.log(arg);
};
clickOnOK = (context, arg, lastHandler) => {
lastHandler();
};
render() {
return (
<DataTimePicker
handleChangeType={this.handleChangeType}
handleChangeMonth={this.handleChangeMonth}
handleChangeDay={this.handleChangeDay}
handleChangeHours={this.handleChangeHours}
handleChangeMinutes={this.handleChangeMinutes}
clickOnCancel={this.clickOnCancel}
clickOnOK={this.clickOnOK}
/>
);
}
}
ReactDOM.render(<App />, document.getElementById('app'));