dareway-rui
Version:
273 lines (224 loc) • 10.5 kB
JavaScript
'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