@beisen/ethos
Version:
beisencloud pc react components
212 lines (167 loc) • 6.99 kB
JavaScript
'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'];