UNPKG

dareway-rui

Version:

293 lines (244 loc) 11.3 kB
'use strict'; var _interopRequireDefault = require('@babel/runtime/helpers/interopRequireDefault'); Object.defineProperty(exports, '__esModule', { value: true }); exports.default = void 0; var _classCallCheck2 = _interopRequireDefault(require('@babel/runtime/helpers/classCallCheck')); var _createClass2 = _interopRequireDefault(require('@babel/runtime/helpers/createClass')); var _possibleConstructorReturn2 = _interopRequireDefault(require('@babel/runtime/helpers/possibleConstructorReturn')); var _getPrototypeOf2 = _interopRequireDefault(require('@babel/runtime/helpers/getPrototypeOf')); var _assertThisInitialized2 = _interopRequireDefault(require('@babel/runtime/helpers/assertThisInitialized')); var _inherits2 = _interopRequireDefault(require('@babel/runtime/helpers/inherits')); var _defineProperty2 = _interopRequireDefault(require('@babel/runtime/helpers/defineProperty')); var _typeof2 = _interopRequireDefault(require('@babel/runtime/helpers/typeof')); var _react = _interopRequireDefault(require('react')); var _antd = require('antd'); var _propTypes = _interopRequireDefault(require('prop-types')); var _deleteInValidMaskChar = _interopRequireDefault(require('../../../mask/number/deleteInValidMaskChar')); var _uuid = _interopRequireDefault(require('../../../../util/uuid')); var _FrameConstants = require('../../../../constants/FrameConstants'); var _dataNormalizeHelper = require('../../../../taglib/form/dataNormalizeHelper'); var _StringUtil = _interopRequireDefault(require('../../../../util/StringUtil')); var _generator = require('../../utils/generator'); function genInitState(value, nullable, zeroDisplayAs0, mask, maxLength) { if (value != null && typeof value !== 'number') { throw new Error( 'NumberColumnTag -> genInitState, \u5165\u53C2 value \u53EA\u63A5\u53D7\u3010null\u3001number\u3011\u7C7B\u578B\uFF0C\u5F53\u524D\u4F20\u5165\u3010' .concat(value, ':') .concat((0, _typeof2.default)(value), '\u3011\uFF0C\u8BF7\u68C0\u67E5\uFF01') ); } if (value == null || value === '') { if (nullable) { return { value: null, visualValue: '' }; } } var visualValue = (0, _dataNormalizeHelper.formatNumber)(value, nullable, zeroDisplayAs0, mask, maxLength); return { value: value, // 真正的 number 类型 value, visualValue: visualValue // 显示在 input 组件中的展示值 }; } var EditInput = /*#__PURE__*/ (function(_React$PureComponent) { (0, _inherits2.default)(EditInput, _React$PureComponent); function EditInput(props) { var _this; (0, _classCallCheck2.default)(this, EditInput); _this = (0, _possibleConstructorReturn2.default)( this, (0, _getPrototypeOf2.default)(EditInput).call(this, props) ); (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), 'handleBlur', function(event) { var _this$props = _this.props, onBlur = _this$props.onBlur, name = _this$props.name, rowNum = _this$props.rowNum, syncCellValue = _this$props.syncCellValue; var value = _this.state.value; // 同步 model 数据 syncCellValue(rowNum, name, value); // 触发 blur 事件 if (onBlur) { onBlur(value); } }); (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), 'handleChange', function(event) { var _this$props2 = _this.props, mask = _this$props2.mask, zeroDisplayAs0 = _this$props2.zeroDisplayAs0, maxLength = _this$props2.maxLength, nullable = _this$props2.nullable; var rawValue = event.target.value; // 录入框中的原始值 rawValue = _StringUtil.default.trim(rawValue); // 避免用户录入进去一堆空格 var visualValue; var maskedValue; var value; if (rawValue === '' && nullable) { visualValue = ''; maskedValue = ''; value = null; } else { visualValue = (0, _deleteInValidMaskChar.default)(rawValue, mask, maxLength); maskedValue = (0, _dataNormalizeHelper.formatNumber)( (0, _dataNormalizeHelper.stringToNumber)(visualValue), nullable, zeroDisplayAs0, mask, maxLength ); value = (0, _dataNormalizeHelper.stringToNumber)(maskedValue); } _this.setState({ value: value, visualValue: visualValue }); }); (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), 'handleKeyDown', function( event ) { var key = event.which; if ( key === _FrameConstants.KEY_CODE.ENTER || key === _FrameConstants.KEY_CODE.TAB || key === _FrameConstants.KEY_CODE.DOWNARROW || key === _FrameConstants.KEY_CODE.UPARROW ) { _this.handleBlur(); } var onKeyDown = _this.props.onKeyDown; if (onKeyDown) { onKeyDown(event); } }); (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), 'selectValue', function( realValue ) { var end = realValue.length <= 0 ? 0 : realValue.length; var ele = document.getElementById(_this.domId); // 选中全部 if (!end) { return; } ele.setSelectionRange(0, end); }); (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), 'handleFocus', function(event) { //获取焦点后,输入框显示真正的数据,并全部选中 var mask = _this.props.mask; if (mask.indexOf('%') === -1) { _this.setState( function() { return null; }, function() { _this.selectValue(_this.state.visualValue); } ); } else { //value中最后一位一定是%,不选中% _this.setState( function() { return null; }, function() { _this.selectValue(_this.state.visualValue.slice(0, -1)); } ); } }); var _this$props3 = _this.props, _value = _this$props3.value, _mask = _this$props3.mask, _maxLength = _this$props3.maxLength, _zeroDisplayAs = _this$props3.zeroDisplayAs0, _nullable = _this$props3.nullable; _this.state = genInitState(_value, _nullable, _zeroDisplayAs, _mask, _maxLength); _this.inputRef = _react.default.createRef(); _this.domId = 'numberColumn_' + (0, _uuid.default)(); return _this; } (0, _createClass2.default)(EditInput, [ { key: 'componentDidMount', value: function componentDidMount() { this.inputRef.current.focus(); } }, { key: 'render', value: function render() { var _this$props4 = this.props, name = _this$props4.name, bodyAlign = _this$props4.bodyAlign, bodyFontColor = _this$props4.bodyFontColor, bodyBold = _this$props4.bodyBold, bodyOblique = _this$props4.bodyOblique, bodyStyleFilter = _this$props4.bodyStyleFilter; var style = (0, _generator.generateEditCellStyle)({}); if (bodyAlign) { style['textAlign'] = bodyAlign; } if (bodyFontColor) { style['color'] = bodyFontColor; } if (bodyBold) { style['fontWeight'] = 'bold'; } if (bodyOblique) { style['fontStyle'] = 'oblique'; } if (bodyStyleFilter) { var extraStyles = bodyStyleFilter((0, _defineProperty2.default)({}, name, this.state.value)); if (extraStyles) { if (extraStyles.color) { style['color'] = extraStyles.color; } if (extraStyles.bold) { style['fontWeight'] = 'bold'; } if (extraStyles.oblique) { style['fontStyle'] = 'oblique'; } } } return _react.default.createElement( 'div', null, _react.default.createElement(_antd.Input, { type: 'text', style: style, id: this.domId, ref: this.inputRef, value: this.state.visualValue, onKeyDown: this.handleKeyDown, onFocus: this.handleFocus, onChange: this.handleChange, onBlur: this.handleBlur }) ); } } ]); return EditInput; })(_react.default.PureComponent); exports.default = EditInput; (0, _defineProperty2.default)(EditInput, 'propTypes', { name: _propTypes.default.string, value: _propTypes.default.number, rowNum: _propTypes.default.number, mask: _propTypes.default.string, maxLength: _propTypes.default.number, zeroDisplayAs0: _propTypes.default.bool, bodyAlign: _propTypes.default.string, bodyBold: _propTypes.default.bool, bodyFontColor: _propTypes.default.string, bodyOblique: _propTypes.default.bool, bodyStyleFilter: _propTypes.default.func, onBlur: _propTypes.default.func, onKeyDown: _propTypes.default.func, syncCellValue: _propTypes.default.func }); //@ sourceMappingURL=EditInput.js.map