shineout
Version:
Shein 前端组件库
158 lines (127 loc) • 4.65 kB
JavaScript
import _extends from "@babel/runtime/helpers/extends";
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/objectWithoutPropertiesLoose";
import _inheritsLoose from "@babel/runtime/helpers/inheritsLoose";
import _assertThisInitialized from "@babel/runtime/helpers/assertThisInitialized";
import _defineProperty from "@babel/runtime/helpers/defineProperty";
import React from 'react';
import Day from './Day';
import Time from './Time';
import Year from './Year';
import Month from './Month';
import utils from './utils';
import Quick from './Quick';
import Quarter from './Quarter';
import paramUtils from './paramUtils';
import { getLocale } from '../locale';
import { datepickerClass } from './styles';
import { PureComponent } from '../component';
var Picker =
/*#__PURE__*/
function (_PureComponent) {
_inheritsLoose(Picker, _PureComponent);
function Picker(props) {
var _this;
_this = _PureComponent.call(this, props) || this;
_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), "defaultCurrent", void 0);
_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), "handleEnter", void 0);
_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), "handleLeave", void 0);
var mode;
switch (props.type) {
case 'year':
mode = 'year';
break;
case 'month':
mode = 'month';
break;
case 'quarter':
mode = 'quarter';
break;
case 'time':
mode = 'time';
break;
default:
mode = 'day';
}
_this.state = {
mode: mode
};
var format = 'YYYY-MM-DD HH:mm:ss';
_this.defaultCurrent = utils.toDateWithFormat(utils.formatDateWithDefaultTime(utils.newDate(undefined, _this.getOptions()), undefined, props.defaultTime[0], format, _this.getOptions()), format, undefined, _this.getOptions());
_this.handleModeChange = _this.handleModeChange.bind(_assertThisInitialized(_assertThisInitialized(_this)));
_this.handleEnter = _this.handleMouse.bind(_assertThisInitialized(_assertThisInitialized(_this)), true);
_this.handleLeave = _this.handleMouse.bind(_assertThisInitialized(_assertThisInitialized(_this)), false);
_this.handleQuick = _this.handleQuick.bind(_assertThisInitialized(_assertThisInitialized(_this)));
return _this;
}
var _proto = Picker.prototype;
_proto.getOptions = function getOptions() {
var timeZone = this.props.timeZone;
return {
timeZone: timeZone,
weekStartsOn: getLocale('startOfWeek')
};
};
_proto.handleQuick = function handleQuick(quick) {
var onChange = this.props.onChange;
onChange.apply(void 0, paramUtils.quickHandleChangeParams(quick.value[0], true, false, false, quick));
};
_proto.handleMouse = function handleMouse(isEnter, e) {
// stop
e.stopPropagation();
var _this$props = this.props,
index = _this$props.index,
handleHover = _this$props.handleHover;
if (handleHover && index !== undefined) handleHover(index, isEnter);
};
_proto.handleModeChange = function handleModeChange(mode) {
var _this2 = this;
setTimeout(function () {
_this2.setState({
mode: mode
});
}, 10);
};
_proto.render = function render() {
var mode = this.state.mode;
var _this$props2 = this.props,
current = _this$props2.current,
index = _this$props2.index,
otherProps = _objectWithoutPropertiesLoose(_this$props2, ["current", "index"]);
var Render;
switch (mode) {
case 'year':
Render = Year;
break;
case 'month':
Render = Month;
break;
case 'time':
Render = Time;
break;
case 'quarter':
Render = Quarter;
break;
default:
Render = Day;
} // only range has index prop
if (index === undefined) return React.createElement("div", {
className: datepickerClass('split')
}, React.createElement(Quick, _extends({}, otherProps, {
current: current || this.defaultCurrent,
onChange: this.handleQuick
})), React.createElement(Render, _extends({}, otherProps, {
current: current || this.defaultCurrent,
onModeChange: this.handleModeChange
})));
return React.createElement("div", {
onMouseEnter: this.handleEnter,
onMouseLeave: this.handleLeave
}, React.createElement(Render, _extends({}, otherProps, {
index: index,
current: current || this.defaultCurrent,
onModeChange: this.handleModeChange
})));
};
return Picker;
}(PureComponent);
export default Picker;