UNPKG

zent

Version:

一套前端设计语言和基于React的实现

185 lines (151 loc) 6.48 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); var _class, _temp; var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _classnames = require('zent-utils/classnames'); var _classnames2 = _interopRequireDefault(_classnames); var _MonthPanel = require('./month/MonthPanel'); var _MonthPanel2 = _interopRequireDefault(_MonthPanel); var _PanelFooter = require('./common/PanelFooter'); var _PanelFooter2 = _interopRequireDefault(_PanelFooter); var _utils = require('./utils/'); var _format = require('./utils/format'); var _clickOutside = require('./utils/clickOutside'); var _clickOutside2 = _interopRequireDefault(_clickOutside); var _constants = require('./constants/'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } function getState(props) { var showPlaceholder = void 0; var selected = void 0; if (props.value) { showPlaceholder = false; selected = new Date(props.value); } else { showPlaceholder = true; selected = new Date(); } return { value: (0, _format.formatDate)(selected, props.format), actived: selected, selected: selected, openPanel: false, showPlaceholder: showPlaceholder }; } var MonthPicker = (_temp = _class = function (_Component) { _inherits(MonthPicker, _Component); function MonthPicker(props) { _classCallCheck(this, MonthPicker); var _this = _possibleConstructorReturn(this, (MonthPicker.__proto__ || Object.getPrototypeOf(MonthPicker)).call(this, props)); _this.clickOutside = function (e) { if (!_this.picker.contains(e.target)) { _this.setState({ openPanel: false }); } }; _this.onChangeMonth = function (val) { _this.setState({ actived: val }); }; _this.onSelectMonth = function (val) { _this.setState({ selected: val, actived: val }); }; _this.onClickInput = function () { if (_this.props.disabled) return; _this.setState({ openPanel: !_this.state.openPanel }); }; _this.onClearInput = function (evt) { evt.stopPropagation(); _this.props.onChange(''); }; _this.onConfirm = function () { var value = (0, _format.formatDate)(_this.state.selected, _this.props.format); _this.setState({ value: value, openPanel: false, showPlaceholder: false }); _this.props.onChange(value); }; var state = getState(props); _this.state = state; return _this; } _createClass(MonthPicker, [{ key: 'componentWillReceiveProps', value: function componentWillReceiveProps(next) { var state = getState(next); this.setState(state); } }, { key: 'render', value: function render() { var _this2 = this; var state = this.state; var props = this.props; var prefixCls = props.prefix + '-datetime-picker ' + props.className; var inputCls = (0, _classnames2['default'])({ 'picker-input': true, 'picker-input--filled': !state.showPlaceholder, 'picker-input--disabled': props.disabled }); var monthPicker = void 0; if (state.openPanel) { monthPicker = _react2['default'].createElement( 'div', { className: 'month-picker' }, _react2['default'].createElement(_MonthPanel2['default'], { actived: state.actived, selected: state.selected, disabledDate: props.disabledDate, onChange: this.onChangeMonth, onSelect: this.onSelectMonth }), _react2['default'].createElement(_PanelFooter2['default'], { linkText: '\u5F53\u524D\u6708', linkCls: 'link--current', onClickLink: function onClickLink() { return _this2.onSelectMonth(_utils.CURRENT); }, onClickButton: this.onConfirm }) ); } return _react2['default'].createElement( 'div', { className: prefixCls, ref: function ref(_ref) { return _this2.picker = _ref; } }, _react2['default'].createElement( 'div', { className: 'picker-wrapper' }, _react2['default'].createElement( 'div', { className: inputCls, onClick: this.onClickInput }, state.showPlaceholder ? props.placeholder : state.value, _react2['default'].createElement('span', { className: 'zenticon zenticon-calendar-o' }), _react2['default'].createElement('span', { onClick: this.onClearInput, className: 'zenticon zenticon-close-circle' }) ), state.openPanel ? monthPicker : '' ) ); } }]); return MonthPicker; }(_react.Component), _class.defaultProps = _constants.MONTH_PROPS, _temp); exports['default'] = (0, _clickOutside2['default'])(MonthPicker); module.exports = exports['default'];