@beisen/ethos
Version:
beisencloud pc react components
385 lines (346 loc) • 13.2 kB
JavaScript
'use strict';
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);
var _class, _temp;
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _reactDom = require('react-dom');
var _TimePicker = require('./TimePicker');
var _TimePicker2 = _interopRequireDefault(_TimePicker);
var _classnames = require('classnames');
var _classnames2 = _interopRequireDefault(_classnames);
var _commonLabel = require('../common-label');
var _commonLabel2 = _interopRequireDefault(_commonLabel);
require('./index.scss');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var defaultTransaltion = {
localeName: 'zh_CN'
};
var TimePointPicker = (_temp = _class = function (_Component) {
(0, _inherits3.default)(TimePointPicker, _Component);
function TimePointPicker(props) {
(0, _classCallCheck3.default)(this, TimePointPicker);
var _this = (0, _possibleConstructorReturn3.default)(this, (TimePointPicker.__proto__ || (0, _getPrototypeOf2.default)(TimePointPicker)).call(this, props));
var defualt = {
active: false,
stateValue: ""
};
_this.state = (0, _extends3.default)({}, defualt, props);
_this.onClose = _this.onClose.bind(_this);
_this.clearData = _this.clearData.bind(_this);
_this.inputActive = _this.inputActive.bind(_this);
_this.onChange = _this.onChange.bind(_this);
_this.disabledHours = _this.disabledHours.bind(_this);
_this.disabledMinutes = _this.disabledMinutes.bind(_this);
_this.disabledSeconds = _this.disabledSeconds.bind(_this);
_this.clearValue = _this.clearValue.bind(_this);
_this.headInputMouseOver = _this.headInputMouseOver.bind(_this);
_this.headInputMouseOut = _this.headInputMouseOut.bind(_this);
_this.changeStyle = _this.changeStyle.bind(_this);
_this.handleFocus = _this.handleFocus.bind(_this);
_this.handleBlur = _this.handleBlur.bind(_this);
return _this;
}
(0, _createClass3.default)(TimePointPicker, [{
key: 'onChange',
value: function onChange(time) {
this.props.onChange && this.props.onChange(time, true);
this.setState({
stateValue: time
});
}
}, {
key: 'componentWillReceiveProps',
value: function componentWillReceiveProps(nextProps) {
if (nextProps.value != this.state.stateValue) {
this.setState({
stateValue: nextProps.value
});
}
}
}, {
key: 'componentWillMount',
value: function componentWillMount() {
var _props = this.props,
value = _props.value,
defaultValue = _props.defaultValue;
this.setState({
stateValue: value.length > 0 ? value : defaultValue
});
this.changeStyle(false);
}
}, {
key: 'newArray',
value: function newArray(start, end) {
var result = [];
for (var i = start; i < end; i++) {
result.push(i);
}
return result;
}
}, {
key: 'disabledHours',
value: function disabledHours() {
//禁用小时的处理方法
return this.disableTime(this.state.disabledHours, 24);
}
}, {
key: 'disabledMinutes',
value: function disabledMinutes() {
//禁用分钟数据
return this.disableTime(this.state.disabledMinutes, 60);
}
}, {
key: 'disabledSeconds',
value: function disabledSeconds() {
//禁用秒数据
return this.disableTime(this.state.disabledSeconds, 60);
}
}, {
key: 'disableTime',
value: function disableTime(disValue, sum) {
//禁用分钟和秒的处理方法
var that = this;
var looper = function looper(options) {
var time = that.newArray(0, 60);
if (options[1] < options[0]) {
var filterOne = [],
filterTwo = [];
filterOne = time.splice(0, options[1] + 1);
filterTwo = time.splice(options[0] - filterOne.length, sum - filterOne.length);
return filterOne.concat(filterTwo);
} else {
return time.splice(options[0], options[1] + 1 - options[0]);
}
};
if (disValue.limit == "open") {
if (disValue.value[0] instanceof Array) {
var result = [];
for (var i = 0; i < disValue.value.length; i++) {
var item = looper(disValue.value[i]);
result = result.concat(item);
}
return result;
} else {
return looper(disValue.value);
}
} else {
return [];
}
}
}, {
key: 'clearData',
value: function clearData(e) {
e.stopPropagation();
this.setState({
stateValue: ""
});
this.props.onChange && this.props.onChange("", true);
}
}, {
key: 'onClose',
value: function onClose(event) {
var self = this;
var area = this.refs.timePickerComponent;
if (!area.contains(event.target) && (document.querySelector(".ant-time-picker-panel") ? !document.querySelector(".ant-time-picker-panel").contains(event.target) : true)) {
self.setState({
active: false
});
var dateTime = this.refs.timePickerComponent;
if (!dateTime) return;
var close = dateTime.querySelector(".time-picker__container-close");
if (close && close.style) close.style.display = 'none';
document.removeEventListener('mousedown', self.onClose);
this.props.onClose && this.props.onClose(false);
}
}
}, {
key: 'inputActive',
value: function inputActive() {
var _props2 = this.props,
disabled = _props2.disabled,
readonly = _props2.readonly;
if (disabled || readonly) return false;
this.setState({ active: true });
this.refs.timepicker1.refs.timepicker2.refs.picker.click();
document.removeEventListener('mousedown', this.onClose);
document.addEventListener('mousedown', this.onClose);
}
}, {
key: 'headInputMouseOver',
value: function headInputMouseOver(event) {
var dom = (0, _reactDom.findDOMNode)(this.refs.timePickerClose);
if (dom && dom.style.display == 'block') {
return;
} else {
this.changeStyle(true, event);
}
}
}, {
key: 'headInputMouseOut',
value: function headInputMouseOut(event) {
var node = event.target;
if (node.nodeName.toLowerCase() == 'i') {
return;
} else {
this.changeStyle(false, event);
}
}
}, {
key: 'handleFocus',
value: function handleFocus(event) {
this.setState({ active: true });
window.timePickerTarget = event.target.className.indexOf('u-icon') > -1 ? event.target.parentNode.previousSibling : event.target;
this.props.onOpen && this.props.onOpen(true);
}
}, {
key: 'handleBlur',
value: function handleBlur(event) {
this.setState({ active: false });
}
}, {
key: 'changeStyle',
value: function changeStyle(bool, event, special) {
var dateTime = this.refs.timePickerComponent;
if (!dateTime) return;
var close = dateTime.querySelector(".time-picker__container-close");
var dom = document.getElementsByClassName("ant-time-picker-panel")[0];
var _props3 = this.props,
readonly = _props3.readonly,
disabled = _props3.disabled;
var _state = this.state,
stateValue = _state.stateValue,
active = _state.active;
var style = stateValue.length != 0 && !readonly && !disabled && (bool || dom && active) ? "block" : "none";
if (!special && special != undefined) style = 'none';
if (close && close.style) close.style.display = style;
}
}, {
key: 'clearValue',
value: function clearValue(e) {
e.stopPropagation();
this.setState({
stateValue: ""
});
this.changeStyle(false, event, false);
this.props.onChange && this.props.onChange("", true);
}
}, {
key: 'render',
value: function render() {
var _props4 = this.props,
hideDisabledOptions = _props4.hideDisabledOptions,
size = _props4.size,
defaultValue = _props4.defaultValue,
value = _props4.value,
format = _props4.format,
disabled = _props4.disabled,
readonly = _props4.readonly,
hidden = _props4.hidden,
errorStatus = _props4.errorStatus,
errorMsg = _props4.errorMsg,
helpMsg = _props4.helpMsg,
showStatus = _props4.showStatus,
title = _props4.title,
required = _props4.required,
isRange = _props4.isRange,
placeholder = _props4.placeholder,
hiddenTip = _props4.hiddenTip,
sideTip = _props4.sideTip,
open = _props4.open,
lablePos = _props4.lablePos,
lableTxt = _props4.lableTxt,
translation = _props4.translation;
var _state2 = this.state,
active = _state2.active,
stateValue = _state2.stateValue,
showClose = _state2.showClose;
var timeLabel = showStatus != 'search' && title && title.length > 0 ? _react2.default.createElement(_commonLabel2.default, this.props) : "";
var errorMessage = "请填写正确信息",
errorContent = void 0;
if (errorStatus) {
errorMessage = errorMsg.length > 0 ? errorMsg : errorMessage;
errorContent = _react2.default.createElement(
'span',
{ className: 'form-item__explain' },
errorMsg
);
}
var timeDisabled = disabled;
var valueObj = value != undefined ? { value: stateValue } : {};
if (hidden) {
return _react2.default.createElement(
'div',
null,
' '
);
} else {
var timePickerClass = (0, _classnames2.default)({
'form-item__control': true,
'form-item__control_is-active': errorStatus || active && !readonly,
'form-item__control_has-info': errorStatus && errorMsg,
'form-item__control_has-error': errorStatus,
'form-item__control_is-readonly': readonly
});
return _react2.default.createElement(
'div',
{ className: 'time-picker__container form-item ' + (helpMsg ? "form-item__help" : "") + (readonly ? 'time-picker-readonly' : '') },
_react2.default.createElement(
'div',
{ className: errorStatus ? 'base-input-error-label' : '' },
timeLabel,
_react2.default.createElement(
'div',
{ ref: 'timePickerComponent', className: timePickerClass, onClick: this.inputActive, onMouseOver: this.headInputMouseOver,
onMouseOut: this.headInputMouseOut },
_react2.default.createElement(_TimePicker2.default, (0, _extends3.default)({ onChange: this.onChange,
ref: 'timepicker1',
size: size }, valueObj, {
defaultValue: defaultValue,
format: format,
placeholder: placeholder,
disabled: timeDisabled,
readonly: readonly,
required: required,
onFocus: this.handleFocus,
onBlur: this.handleBlur,
open: open,
lablePos: lablePos,
inputActive: errorStatus || active,
disabledHours: this.disabledHours,
hideDisabledOptions: hideDisabledOptions,
disabledMinutes: this.disabledMinutes,
disabledSeconds: this.disabledSeconds,
translation: translation
})),
!readonly ? _react2.default.createElement(
'span',
{ className: 'form-item__right-icon' },
_react2.default.createElement('i', { ref: 'timePickerClose', style: { "display": "none" }, className: 'u-icon sys-icon-close time-picker__container-close', onClick: this.clearValue }),
_react2.default.createElement('i', { className: 'u-icon sys-icon-form-shijian', onClick: this.handleFocus })
) : null,
errorContent
)
)
);
}
}
}]);
return TimePointPicker;
}(_react.Component), _class.defaultProps = {
hiddenTip: false,
sideTip: false,
// placeholder:"请选择",
translation: defaultTransaltion
}, _temp);
module.exports = TimePointPicker;