UNPKG

dareway-rui

Version:

273 lines (224 loc) 10.5 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 _react = _interopRequireDefault(require('react')); var _propTypes = _interopRequireDefault(require('prop-types')); var _FormContext = _interopRequireDefault(require('../FormContext')); var _FormConstants = require('../FormConstants'); var _util = require('../../common/util'); var _FrameConstants = require('../../../constants/FrameConstants'); var _validateProps = _interopRequireDefault(require('./validateProps')); var _genDefaultProps = _interopRequireDefault(require('./genDefaultProps')); var _apis = _interopRequireDefault(require('./apis')); var _Constants = require('./Constants'); var _View = require('./View'); var LovInput = /*#__PURE__*/ (function(_React$Component) { (0, _inherits2.default)(LovInput, _React$Component); function LovInput(props) { var _this; (0, _classCallCheck2.default)(this, LovInput); _this = (0, _possibleConstructorReturn2.default)( this, (0, _getPrototypeOf2.default)(LovInput).call(this, props) ); /** * 标签属性校验 */ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), 'handleFocus', function( value, event ) { var name = _this.props.name; _this.context._savaOldValue4SimulateOnHTMLChange(name, value); var onFocus = _this.props.onFocus; if (onFocus) { onFocus(value, event); } }); (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), 'handleBlur', function( value, oldValueForOnChange, event ) { var name = _this.props.name; var _this$props = _this.props, fillMapping = _this$props.fillMapping, fieldsClearOnChange = _this$props.fieldsClearOnChange; if (oldValueForOnChange !== value && (fillMapping || fieldsClearOnChange)) { _this.context._clearLovMappings(name); } // 模拟 onHTMLChange var onChange = _this.props.onChange; if (oldValueForOnChange !== value) { // onChange 时机校验值的合法性; _this.context._checkValue(name); // 触发 onChange if (onChange) { onChange(value, oldValueForOnChange, event); } } var onBlur = _this.props.onBlur; if (onBlur) { onBlur(value, event); } }); (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), 'handleClick', function( value, event ) { var onClick = _this.props.onClick; if (onClick) { onClick(value, event); } }); (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), 'handleDblClick', function( value, event ) { var onDblClick = _this.props.onDblClick; if (onDblClick) { onDblClick(value, event); } }); (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), 'handleKeyDown', function( value, event, oldValueForOnChange ) { var lovJS = _this.props.lovJS; var key = event.which; if (key === _FrameConstants.KEY_CODE.ENTER || key === _FrameConstants.KEY_CODE.TAB) { if ((!value || value !== oldValueForOnChange) && lovJS) { lovJS(); } } var onKeyDown = _this.props.onKeyDown; if (onKeyDown) { onKeyDown(event); } }); (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), 'handleChange', function( value, event ) { var _this$props2 = _this.props, name = _this$props2.name, maxLength = _this$props2.maxLength; var newValue = (0, _util.filterValueByMaxLength)(value, maxLength); _this.context._saveValueOnChange(name, newValue); }); (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), 'handleSearch', function( value, event ) { var key = event.which; if (key === _FrameConstants.KEY_CODE.ENTER) { return; } var lovJS = _this.props.lovJS; if (lovJS) { lovJS(); } }); (0, _validateProps.default)(props); return _this; } /** * 标签必须要实现的接口 */ (0, _createClass2.default)(LovInput, [ { key: 'componentWillMount', value: function componentWillMount() { // 检查标签嵌套关系 if (!this.context) { throw new Error( '<' .concat(_Constants.TAG_DISPLAY_NAME, ' name="') .concat( this.props.name, '"> \u5FC5\u987B\u5D4C\u5957\u5728 <Form> \u4E2D\u4F7F\u7528\uFF0C\u8BF7\u68C0\u67E5!' ) ); } // 标签名 var name = this.props.name; // 标签动态构建(业务上通过state控制UI的场景) this.context._addFormItem(this.props, { TAG_ATTRS_GENERATOR: _genDefaultProps.default, TAG_TYPE: _FormConstants.TAG_TYPE_LOV_INPUT, TAG_API_GENERATOR: _apis.default }); // 连接FormItem的数据与视图 this.ConnectedView = this.context._connectFormItemView(name, _View.LovInputView); } }, { key: 'componentWillUnmount', value: function componentWillUnmount() { var name = this.props.name; this.context._removeFormItem(name); } }, { key: 'render', value: function render() { var ConnectedView = this.ConnectedView; return _react.default.createElement(ConnectedView, { onFocus: this.handleFocus, onBlur: this.handleBlur, onClick: this.handleClick, onDblClick: this.handleDblClick, onKeyDown: this.handleKeyDown, onChange: this.handleChange, onSearch: this.handleSearch }); } } ]); return LovInput; })(_react.default.Component); exports.default = LovInput; (0, _defineProperty2.default)(LovInput, 'contextType', _FormContext.default); (0, _defineProperty2.default)(LovInput, 'TAG_ATTRS_GENERATOR', _genDefaultProps.default); (0, _defineProperty2.default)(LovInput, 'TAG_TYPE', _FormConstants.TAG_TYPE_LOV_INPUT); (0, _defineProperty2.default)(LovInput, 'TAG_API_GENERATOR', _apis.default); (0, _defineProperty2.default)(LovInput, 'propTypes', { name: _propTypes.default.string.isRequired, labelValue: _propTypes.default.string, required: _propTypes.default.bool, invalidMessage: _propTypes.default.string, readonly: _propTypes.default.bool, hidden: _propTypes.default.bool, colSpan: _propTypes.default.number, maxLength: _propTypes.default.number, value: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number]), lovJS: _propTypes.default.func, fillMapping: _propTypes.default.string, fieldsClearOnChange: _propTypes.default.string, align: _propTypes.default.oneOf(['left', 'center', 'right']), fontColor: _propTypes.default.string, bold: _propTypes.default.bool, backgroundColor: _propTypes.default.string, underline: _propTypes.default.bool, oblique: _propTypes.default.bool, border: _propTypes.default.bool, placeholder: _propTypes.default.string, onFocus: _propTypes.default.func, onBlur: _propTypes.default.func, onClick: _propTypes.default.func, onDblClick: _propTypes.default.func // 注意:LovInput 组件不对外提供 onKeyDown 和 onEnter 事件 // 避免开发在录入的中间状态下,在 onKeyDown、onEnter 事件中 // 使用 getValue,进而得到错误的结果; // onKeyDown: PropTypes.func, // onEnter: PropTypes.func, // onChange: PropTypes.func }); //@ sourceMappingURL=index.js.map