UNPKG

@beisen/ethos

Version:

beisencloud pc react components

212 lines (167 loc) 6.99 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _extends2 = require('babel-runtime/helpers/extends'); var _extends3 = _interopRequireDefault(_extends2); var _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of'); var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf); var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _createClass2 = require('babel-runtime/helpers/createClass'); var _createClass3 = _interopRequireDefault(_createClass2); var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn'); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); var _inherits2 = require('babel-runtime/helpers/inherits'); var _inherits3 = _interopRequireDefault(_inherits2); exports.default = wrapPicker; var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _index = require('./rc-time-picker/lib/index'); var _index2 = _interopRequireDefault(_index); var _gregorianCalendarFormat = require('gregorian-calendar-format'); var _gregorianCalendarFormat2 = _interopRequireDefault(_gregorianCalendarFormat); var _gregorianCalendar = require('gregorian-calendar'); var _gregorianCalendar2 = _interopRequireDefault(_gregorianCalendar); var _classnames = require('classnames'); var _classnames2 = _interopRequireDefault(_classnames); var _index3 = require('./locale/index'); var _index4 = _interopRequireDefault(_index3); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var defaultLocaleName = 'zh_CN'; function wrapPicker(Picker, defaultFormat) { var _class, _temp; return _temp = _class = function (_React$Component) { (0, _inherits3.default)(PickerWrapper, _React$Component); // static contextTypes = { // antLocale: PropTypes.object, // } function PickerWrapper(props) { (0, _classCallCheck3.default)(this, PickerWrapper); var _this = (0, _possibleConstructorReturn3.default)(this, (PickerWrapper.__proto__ || (0, _getPrototypeOf2.default)(PickerWrapper)).call(this, props)); _this.getFormatter = function () { if (!_this.formats) { _this.formats = {}; } var formats = _this.formats; var format = _this.props.format; if (formats[format]) { return formats[format]; } formats[format] = new _gregorianCalendarFormat2.default(format, _this.getLocale().lang.format); return formats[format]; }; _this.parseDateFromValue = function (value) { if (value) { if (typeof value === 'string') { return _this.getFormatter().parse(value, { locale: _this.getLocale() }); } else if (value instanceof Date) { var date = new _gregorianCalendar2.default(_this.getLocale()); date.setTime(+value); return date; } } return value; }; _this.toggleOpen = function (e) { _this.props.changeActive(e.open); }; _this.state = {}; _this.clickDataTable = _this.clickDataTable.bind(_this); return _this; } // remove input readonly warning (0, _createClass3.default)(PickerWrapper, [{ key: 'componentWillReceiveProps', value: function componentWillReceiveProps(nextProps) { var temp = this.state.timeValue; if (temp) { temp.clickTips = false; this.setState({ timeValue: temp }); } } }, { key: 'clickDataTable', value: function clickDataTable(value) { var _this2 = this; value.clickTips = true; this.setState({ timeValue: value }); // 仅在点击的时候使用,使用后直接置为false setTimeout(function () { _this2.state.timeValue.clickTips = false; }, 0); } }, { key: 'getLocale', value: function getLocale() { var props = this.props; var localeName = props.localeName; var locale = _index4.default[localeName] || _index4.default[defaultLocaleName]; var context = this.context; if (context.antLocale && context.antLocale.DatePicker) { locale = context.antLocale.DatePicker; } // 统一合并为完整的 Locale var result = (0, _extends3.default)({}, locale, props.locale); result.lang = (0, _extends3.default)({}, locale.lang, props.locale.lang); if (result.timePickerLocale && result.timePickerLocale.calendar) { result.timePickerLocale.calendar.timezoneOffset = -new Date().getTimezoneOffset(); } result.timezoneOffset = -new Date().getTimezoneOffset(); //自动校准时区 return result; } }, { key: 'render', value: function render() { var props = this.props; var state = this.state; var pickerClass = (0, _classnames2.default)({ 'ant-calendar-picker': this.props.showStatus == 'searchBtn' ? false : true, 'ant-calendar-picker_has-error': this.props.errorStatus, 'ant-calendar-picker-open': props.IsActive || this.props.errorStatus }); var pickerInputClass = (0, _classnames2.default)({ 'ant-calendar-range-picker': true, 'ant-input': true, 'ant-input-lg': props.size === 'large', 'ant-input-sm': props.size === 'small' }); var locale = this.getLocale(); var timePicker = props.showTime ? _react2.default.createElement(_index2.default, { format: this.props.format, showSecond: /(mm:ss)$/i.test(this.props.format), prefixCls: 'ant-time-picker', dateValue: this.props.value, placeholder: locale.timePickerLocale.placeholder, value: this.state.timeValue, locale: locale.timePickerLocale, transitionName: 'slide-up' }) : null; return _react2.default.createElement(Picker, (0, _extends3.default)({}, this.props, { showStatus: this.props.showStatus, pickerClass: pickerClass, pickerInputClass: pickerInputClass, locale: locale, timePicker: timePicker, open: this.props.IsActive, clickDataTable: this.clickDataTable, toggleOpen: this.toggleOpen.bind(this), getFormatter: this.getFormatter, parseDateFromValue: this.parseDateFromValue })); } }]); return PickerWrapper; }(_react2.default.Component), _class.defaultProps = { format: defaultFormat || 'yyyy-MM-dd', transitionName: 'slide-up', popupStyle: {}, onChange: function onChange() {}, onOk: function onOk() {}, locale: {}, align: { offset: [0, -9] }, ipuBlur: function ipuBlur() {}, open: false }, _temp; } module.exports = exports['default'];