UNPKG

@beisen/ethos

Version:

beisencloud pc react components

237 lines (201 loc) 7.7 kB
'use strict'; 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; /* eslint-disable */ var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _reactDom = require('react-dom'); var _reactDom2 = _interopRequireDefault(_reactDom); var _es6PromiseDebounce = require('../es6-promise-debounce'); var _es6PromiseDebounce2 = _interopRequireDefault(_es6PromiseDebounce); var _commonFunc = require('../common-func'); require('./style/all.scss'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var Search = (_temp = _class = function (_Component) { (0, _inherits3.default)(Search, _Component); function Search(props) { (0, _classCallCheck3.default)(this, Search); var _this = (0, _possibleConstructorReturn3.default)(this, (Search.__proto__ || (0, _getPrototypeOf2.default)(Search)).call(this, props)); _this.onKeyDownHandler = function (event) { if (event.keyCode === 13) { _this.callBackValue(event, "onKeyDown"); } }; _this.onRealChange = function (event) { event.persist(); _this.handelerChange(event); }; _this.state = { left: 0 //并没什么用 , formActive: '' //添加类,控制input下的蓝条。 , placeholderShow: true //控制显示placeholder , inputValue: "" //input 的显示值 }; _this.removeInputValue = _this.removeInputValue.bind(_this); _this.handelerFocus = _this.handelerFocus.bind(_this); _this.handelerBlur = _this.handelerBlur.bind(_this); _this.handelerClick = _this.handelerClick.bind(_this); _this.handelerChange = (0, _es6PromiseDebounce2.default)(_this.handelerChange, 300); return _this; } (0, _createClass3.default)(Search, [{ key: 'componentDidMount', value: function componentDidMount() { var self = this; var _props = this.props, value = _props.value, active = _props.active; if (value && value.length > 0) { this.setState({ placeholderShow: false, inputValue: value }); this.refs.inputItem.value = (0, _commonFunc.decode)(value); } if (active) { setTimeout(function () { self.setState({ formActive: 'base-search-input-active' }); self.refs.inputItem && self.refs.inputItem.focus(); }, 100); } if (this.state.placeholderShow) { var length = this.refs.palceholderCon.clientWidth + 40; _reactDom2.default.findDOMNode(this).querySelector(".base-search-input-default").style.width = length + 'px'; } } }, { key: 'componentWillReceiveProps', value: function componentWillReceiveProps(nextProps) { if (nextProps.value != this.state.inputValue && nextProps.value != undefined) { if (nextProps.value.length != 0) { this.setState({ inputValue: nextProps.value }); this.refs.inputItem.value = (0, _commonFunc.decode)(nextProps.value); } else { this.setState({ placeholderShow: true, inputValue: "" }); this.refs.inputItem.value = ''; } } if (nextProps.active != this.props.active && nextProps.active == false) { this.setState({ formActive: '' }); } } }, { key: 'handelerClick', value: function handelerClick(event) { if (this.props.disabled) return false; this.callBackValue(event, "onClick"); this.setState({ formActive: 'base-search-input-active' }); } }, { key: 'handelerBlur', value: function handelerBlur(event) { this.callBackValue(event, "onBlur"); if (event.target.value.length == 0) { this.setState({ placeholderShow: true, formActive: '' }); this.refs.inputItem.blur(); } } }, { key: 'handelerFocus', value: function handelerFocus(event) { this.callBackValue(event, "onFocus"); } }, { key: 'handelerChange', value: function handelerChange(event) { this.callBackValue(event, "onChange"); this.setState({ placeholderShow: false, inputValue: event.target.value }); } //所有的事件调用逻辑都走这里 }, { key: 'callBackValue', value: function callBackValue(event, status) { // if(status !='onChange'){ // event.stopPropagation(); // } this.props[status] && this.props[status]({ "value": this.refs.inputItem ? this.refs.inputItem.value : '' //我们的input值 , "event": event //我们触发的event , "method": this.props.method //组件内并没有操作 }); } }, { key: 'removeInputValue', value: function removeInputValue(event) { event.stopPropagation(); this.refs.inputItem.value = ''; // this.setState({inputValue: ''}); /* * 由react引发的事件处理setState不会同步更新this.state,除此之外的this.state会同步执行 */ this.refs.inputItem.focus(); this.callBackValue(event, 'onChange'); } }, { key: 'render', value: function render() { var _state = this.state, formActive = _state.formActive, placeholderShow = _state.placeholderShow, inputValue = _state.inputValue; var _props2 = this.props, placeholder = _props2.placeholder, disabled = _props2.disabled, hidden = _props2.hidden, readonly = _props2.readonly, iconName = _props2.iconName, useInputPlaceHolder = _props2.useInputPlaceHolder; var placeholderText = placeholderShow ? placeholder : ""; //后边的关闭按钮 var iconClose = inputValue.length > 0 && formActive.length > 0 ? _react2.default.createElement('a', { className: 'sys-icon-close', onClick: this.removeInputValue }) : ""; var isIE = !!window.ActiveXObject || "ActiveXObject" in window; if (hidden) { return _react2.default.createElement('div', null); } else { return _react2.default.createElement( 'div', { className: 'base-search-component' }, _react2.default.createElement( 'div', { ref: 'baseSearchInput', className: 'base-search-input ' + (isIE ? 'base-search_is-ie' : '') + formActive + (disabled ? ' search-disabled' : ' ') }, _react2.default.createElement('input', { ref: 'inputItem', className: disabled ? 'base-search-disabled' : '', onChange: this.onRealChange, onFocus: this.handelerFocus, readOnly: readonly, disabled: disabled, defaultValue: (0, _commonFunc.decode)(inputValue), onKeyDown: this.onKeyDownHandler, onBlur: this.handelerBlur, placeholder: useInputPlaceHolder ? placeholderText : "", onClick: this.handelerClick }), _react2.default.createElement( 'div', { ref: 'baseSearchDefault', className: 'base-search-input-default' }, iconName.length > 0 ? _react2.default.createElement('span', { className: 'base-search-input-icon ' + iconName }) : "", _react2.default.createElement( 'span', { ref: 'palceholderCon', className: 'base-search-input-placeholder' }, placeholderText ) ), iconClose ) ); } } }]); return Search; }(_react.Component), _class.defaultProps = { onKeyDown: function onKeyDown() {}, useInputPlaceHolder: false, iconName: "" }, _temp); module.exports = Search;