ming-demo3
Version:
mdf metaui web
326 lines (291 loc) • 10.6 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 _react = _interopRequireDefault(require("react"));
var _reactDom = require("react-dom");
var _baseui = require("@mdf/baseui");
var _SvgIcon = _interopRequireDefault(require("@mdf/metaui-web/lib/components/common/SvgIcon"));
var _label = _interopRequireDefault(require("./label"));
var _text = _interopRequireDefault(require("./text"));
var _util = require("@mdf/cube/lib/helpers/util");
var Input = null;
var InputControl = function (_React$Component) {
(0, _inherits2["default"])(InputControl, _React$Component);
function InputControl(props) {
var _this;
(0, _classCallCheck2["default"])(this, InputControl);
_this = (0, _possibleConstructorReturn2["default"])(this, (0, _getPrototypeOf2["default"])(InputControl).call(this, props));
Input = cb.electron.getSharedObject() ? require('../common/KeyboardInput')["default"] : _baseui.Input;
var cStyle = props.cStyle,
cFormatData = props.cFormatData;
var config = null,
format = null;
if (cStyle) {
try {
config = JSON.parse(cStyle);
} catch (e) {
config = {};
}
}
if (cFormatData) {
try {
format = JSON.parse(cFormatData);
} catch (e) {}
}
_this.state = Object.assign({
bIsNull: props.bIsNull,
value: props.defaultValue,
type: props.type || 'text',
size: props.size || 'default',
disabled: props.disabled || false,
visible: !props.bHidden,
addonBefore: props.addonBefore || '',
readOnly: props.readOnly,
addonAfter: props.addonAfter || '',
placeholder: props.placeholder || '',
autosize: props.autosize || false,
err: props.err || '',
msg: props.msg || '',
format: format
}, config);
_this.onPressEnter = _this.onPressEnter.bind((0, _assertThisInitialized2["default"])(_this));
return _this;
}
(0, _createClass2["default"])(InputControl, [{
key: "componentDidMount",
value: function componentDidMount() {
if (this.props.model) this.props.model.addListener(this);
if (this.props.focus) {
if (this.refs.input.refs) {
this.refs.input.refs.input.focus();
} else {
var input = cb.dom((0, _reactDom.findDOMNode)(this.refs.input)).find('input');
input.length && input[0].focus();
}
}
}
}, {
key: "componentWillUnmount",
value: function componentWillUnmount() {
if (this.props.model) this.props.model.removeListener(this);
}
}, {
key: "componentWillUpdate",
value: function componentWillUpdate(nextProps, nextState) {
var _this2 = this;
if (this.state.focused != nextState.focused && nextState.focused) {
if (this.refs.input && this.refs.input.refs) {
setTimeout(function () {
_this2.refs.input.refs.input.focus();
}, 0);
}
}
}
}, {
key: "componentDidUpdate",
value: function componentDidUpdate(prevProps, prevState) {
if (this.props.model) {
this.props.model.addListener(this);
if (this.state.err && prevState.value != this.state.value) {
if (!this.autoTrigger) {
this.props.model.validate();
} else {
delete this.autoTrigger;
}
}
}
}
}, {
key: "componentWillReceiveProps",
value: function componentWillReceiveProps(nextProps) {
if (this.props.model) return;
if (nextProps.defaultValue != this.state.value) this.setState({
value: nextProps.defaultValue
});
if (nextProps.err != this.state.err) this.setState({
err: nextProps.err
});
}
}, {
key: "handleInputChange",
value: function handleInputChange(e) {
var value = e && e.target ? e.target.value : e;
if (this.props.onChange) this.props.onChange(value);
if (this.props.model) if (!this.props.model.execute('valueChange', value)) return;
this.autoTrigger = true;
this.setState({
value: value
});
}
}, {
key: "handleInputBlur",
value: function handleInputBlur(e) {
var value = this.state.value;
value = cb.utils.isEmpty(value) ? null : value;
if (this.props.model) {
this.props.model.setValue(value, true);
this.props.model.execute('blur');
if (this.state.err) this.props.model.validate();
}
if (this.props.onBlur) {
this.props.onBlur(value);
}
this.setState({
focused: false
});
}
}, {
key: "handleInputFocus",
value: function handleInputFocus(e) {
if (e && e.target) e.target.setSelectionRange(0, e.target.value.length);
this.setState({
focused: true
});
}
}, {
key: "onPressEnter",
value: function onPressEnter(e) {
if (this.props.model) {
var value = e && e.target ? e.target.value : e;
value = value === '' ? null : value;
this.props.model.setValue(value, true);
this.props.model.execute('enter');
}
}
}, {
key: "validate",
value: function validate(val) {
this.setState({
err: val.type && 'has-' + val.type,
msg: val.message
});
}
}, {
key: "baseControl",
value: function baseControl() {
var _this3 = this;
var _this$state = this.state,
readOnly = _this$state.readOnly,
value = _this$state.value,
type = _this$state.type,
placeholder = _this$state.placeholder,
size = _this$state.size,
disabled = _this$state.disabled,
addonBefore = _this$state.addonBefore,
addonAfter = _this$state.addonAfter,
format = _this$state.format,
iMaxLength = _this$state.iMaxLength,
icon = _this$state.icon,
before = _this$state.before,
after = _this$state.after,
bottom = _this$state.bottom,
focused = _this$state.focused;
var showValue = value,
prefix = null,
suffix = null;
if (format) {
var formatValue = (0, _util.getFormatValue)(value, format);
showValue = formatValue.showValue;
prefix = formatValue.prefix;
suffix = formatValue.suffix;
}
if (readOnly) return before ? _react["default"].createElement("div", {
className: "input-hasBA"
}, _react["default"].createElement("span", {
className: "input-before"
}, before), (0, _text["default"])(showValue)) : (0, _text["default"])(showValue);
if (icon) suffix = _react["default"].createElement(_SvgIcon["default"], {
type: icon
});
var props = {
autoComplete: 'new-password',
ref: 'input',
type: type,
placeholder: placeholder,
size: size,
disabled: disabled,
addonBefore: addonBefore,
addonAfter: addonAfter,
onPressEnter: this.onPressEnter,
value: cb.utils.isEmpty(value) ? '' : value,
prefix: prefix,
suffix: suffix,
onBlur: function onBlur(e) {
return _this3.handleInputBlur(e);
},
onChange: function onChange(e) {
return _this3.handleInputChange(e);
},
onFocus: function onFocus(e) {
return _this3.handleInputFocus(e);
}
};
if (iMaxLength) props.maxLength = iMaxLength;
if (focused) props.className = "input_focused";
var com = _react["default"].createElement(Input, props);
if (!after && !bottom && !before) return com;
return _react["default"].createElement("div", {
className: "input-bottom"
}, _react["default"].createElement("div", null, before && _react["default"].createElement("span", {
className: "input-before"
}, before), com, after && _react["default"].createElement("span", {
className: "input-after"
}, after)), bottom && _react["default"].createElement("div", {
className: "input-bottom-text",
title: bottom
}, bottom));
}
}, {
key: "relatedControl",
value: function relatedControl() {
var control = this.baseControl();
var relatedControl = this.props.relatedControl;
if (!relatedControl) return control;
return _react["default"].createElement("div", {
className: "has-related"
}, _react["default"].createElement("div", {
className: "viewCell"
}, control), relatedControl);
}
}, {
key: "getControl",
value: function getControl() {
var cShowCaption = this.props.cShowCaption;
var title = !this.state.readOnly && this.state.bIsNull === false && cShowCaption ? _react["default"].createElement("label", null, _react["default"].createElement(_baseui.Icon, {
type: "star"
}), cShowCaption) : _react["default"].createElement("label", null, cShowCaption);
var control = cShowCaption ? _react["default"].createElement(_label["default"], {
control: this.relatedControl(),
title: title
}) : this.relatedControl();
return control;
}
}, {
key: "render",
value: function render() {
var control = this.getControl();
var style = this.state.visible ? {} : {
display: "none"
};
var errClass = "basic-input-".concat(this.state.type, " has-feedback ").concat(this.state.classname || '', " ") + this.state.err;
return _react["default"].createElement("div", {
style: style,
className: errClass
}, control, _react["default"].createElement("div", {
className: "ant-form-explain"
}, this.state.msg));
}
}]);
return InputControl;
}(_react["default"].Component);
exports["default"] = InputControl;
//# sourceMappingURL=input.js.map