UNPKG

hm-react-cli

Version:

Create a Huimei React project by module

213 lines (194 loc) 5.93 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _MonthPanel = require('../month/MonthPanel'); var _MonthPanel2 = _interopRequireDefault(_MonthPanel); var _index = require('../util/index'); var _YearPanel = require('../year/YearPanel'); var _YearPanel2 = _interopRequireDefault(_YearPanel); var _mapSelf = require('rc-util/lib/Children/mapSelf'); var _mapSelf2 = _interopRequireDefault(_mapSelf); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } function goMonth(direction) { var next = this.props.value.clone(); next.addMonth(direction); this.props.onValueChange(next); } function goYear(direction) { var next = this.props.value.clone(); next.addYear(direction); this.props.onValueChange(next); } var CalendarHeader = _react2["default"].createClass({ displayName: 'CalendarHeader', propTypes: { enablePrev: _react.PropTypes.any, enableNext: _react.PropTypes.any, prefixCls: _react.PropTypes.string, locale: _react.PropTypes.object, value: _react.PropTypes.object, onValueChange: _react.PropTypes.func }, getDefaultProps: function getDefaultProps() { return { enableNext: 1, enablePrev: 1 }; }, getInitialState: function getInitialState() { var props = this.props; this.yearFormatter = (0, _index.getFormatter)(props.locale.yearFormat, props.locale); this.monthFormatter = (0, _index.getFormatter)(props.locale.monthFormat, props.locale); this.nextMonth = goMonth.bind(this, 1); this.previousMonth = goMonth.bind(this, -1); this.nextYear = goYear.bind(this, 1); this.previousYear = goYear.bind(this, -1); return {}; }, componentWillReceiveProps: function componentWillReceiveProps(nextProps) { var locale = this.props.locale; var nextLocale = nextProps.locale; if (nextLocale !== locale) { this.yearFormatter = (0, _index.getFormatter)(nextLocale.yearFormat, nextLocale); this.monthFormatter = (0, _index.getFormatter)(nextLocale.monthFormat, nextLocale); } }, onSelect: function onSelect(value) { this.setState({ showMonthPanel: 0, showYearPanel: 0 }); this.props.onValueChange(value); }, getMonthYearElement: function getMonthYearElement() { var props = this.props; var prefixCls = props.prefixCls; var locale = props.locale; var value = this.props.value; var monthBeforeYear = locale.monthBeforeYear; var selectClassName = prefixCls + '-' + (monthBeforeYear ? 'my-select' : 'ym-select'); var year = _react2["default"].createElement( 'a', { className: prefixCls + '-year-select', role: 'button', onClick: this.showYearPanel, title: locale.monthSelect }, this.yearFormatter.format(value) ); var month = _react2["default"].createElement( 'a', { className: prefixCls + '-month-select', role: 'button', onClick: this.showMonthPanel, title: locale.monthSelect }, this.monthFormatter.format(value) ); var my = []; if (monthBeforeYear) { my = [month, year]; } else { my = [year, month]; } return _react2["default"].createElement( 'span', { className: selectClassName }, (0, _mapSelf2["default"])(my) ); }, showIf: function showIf(condition, el) { return condition ? el : null; }, showMonthPanel: function showMonthPanel() { this.setState({ showMonthPanel: 1, showYearPanel: 0 }); }, showYearPanel: function showYearPanel() { this.setState({ showMonthPanel: 0, showYearPanel: 1 }); }, render: function render() { var props = this.props; var enableNext = props.enableNext; var enablePrev = props.enablePrev; var prefixCls = props.prefixCls; var locale = props.locale; var value = props.value; var state = this.state; var PanelClass = null; if (state.showMonthPanel) { PanelClass = _MonthPanel2["default"]; } else if (state.showYearPanel) { PanelClass = _YearPanel2["default"]; } var panel = void 0; if (PanelClass) { panel = _react2["default"].createElement(PanelClass, { locale: locale, defaultValue: value, rootPrefixCls: prefixCls, onSelect: this.onSelect }); } return _react2["default"].createElement( 'div', { className: prefixCls + '-header' }, _react2["default"].createElement( 'div', { style: { position: 'relative' } }, this.showIf(enablePrev, _react2["default"].createElement( 'a', { className: prefixCls + '-prev-year-btn', role: 'button', onClick: this.previousYear, title: locale.previousYear }, '«' )), this.showIf(enablePrev, _react2["default"].createElement( 'a', { className: prefixCls + '-prev-month-btn', role: 'button', onClick: this.previousMonth, title: locale.previousMonth }, '‹' )), this.getMonthYearElement(), this.showIf(enableNext, _react2["default"].createElement( 'a', { className: prefixCls + '-next-month-btn', onClick: this.nextMonth, title: locale.nextMonth }, '›' )), this.showIf(enableNext, _react2["default"].createElement( 'a', { className: prefixCls + '-next-year-btn', onClick: this.nextYear, title: locale.nextYear }, '»' )) ), panel ); } }); exports["default"] = CalendarHeader; module.exports = exports['default'];