ssc-refer
Version:
React refer component for SSC 3.0
145 lines (113 loc) • 4.41 kB
JavaScript
;
exports.__esModule = true;
var _extends2 = require('babel-runtime/helpers/extends');
var _extends3 = _interopRequireDefault(_extends2);
var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
var _inherits2 = require('babel-runtime/helpers/inherits');
var _inherits3 = _interopRequireDefault(_inherits2);
var _classnames = require('classnames');
var _classnames2 = _interopRequireDefault(_classnames);
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _reactBootstrap = require('react-bootstrap');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var VoucherMoreConditions = function (_Component) {
(0, _inherits3['default'])(VoucherMoreConditions, _Component);
function VoucherMoreConditions(props) {
(0, _classCallCheck3['default'])(this, VoucherMoreConditions);
var _this = (0, _possibleConstructorReturn3['default'])(this, _Component.call(this, props));
_this.state = {
formData: (0, _extends3['default'])({}, _this.props.defaultData),
fieldsValidationState: {}
};
return _this;
}
VoucherMoreConditions.prototype.handleChange = function handleChange(fieldId, event, validationState) {
var _fieldsValidationStat;
var target = event.target;
var value = target.type === 'checkbox' ? target.checked : target.value;
// const name = target.name;
var newState = {
formData: this.state.formData
};
newState.formData[fieldId] = value;
this.setState(newState);
// undefined/null都不代表失败
this.setState(update(this.state, {
fieldsValidationState: (_fieldsValidationStat = {}, _fieldsValidationStat[fieldId] = {
$set: !(validationState === false)
}, _fieldsValidationStat)
}));
if (this.props.onChange) {
this.props.onChange(fieldId, value, {
event: event
});
}
};
VoucherMoreConditions.prototype.handleSubmit = function handleSubmit(event) {
if (this.props.onSubmit) {
this.props.onSubmit(event, this.state.formData);
}
};
VoucherMoreConditions.prototype.handleReset = function handleReset(event) {
if (this.props.onReset) {
this.props.onReset(event);
}
};
VoucherMoreConditions.prototype.calcAllFieldsValidationState = function calcAllFieldsValidationState(fieldsValidationState) {
var result = true;
var fieldId = void 0;
for (fieldId in fieldsValidationState) {
if (fieldsValidationState.hasOwnProperty(fieldId)) {
result = fieldsValidationState[fieldId] && result;
}
}
return result;
};
VoucherMoreConditions.prototype.render = function render() {
var _props = this.props,
fieldsModel = _props.fieldsModel,
className = _props.className;
return _react2['default'].createElement(
'form',
{ horizontal: true, className: (0, _classnames2['default'])(className) },
_react2['default'].createElement(
_reactBootstrap.FormGroup,
null,
_react2['default'].createElement(
_reactBootstrap.Col,
{ sm: 12, className: 'text-center' },
_react2['default'].createElement(
_reactBootstrap.Button,
{ bsStyle: 'info', onClick: this.handleReset.bind(this), type: 'reset' },
'\u53D6\u6D88'
),
_react2['default'].createElement(
_reactBootstrap.Button,
{ bsStyle: 'info', onClick: this.handleSubmit.bind(this),
type: 'submit', disabled: !this.calcAllFieldsValidationState(this.state.fieldsValidationState)
},
'\u5B8C\u6210'
)
)
)
);
};
return VoucherMoreConditions;
}(_react.Component);
// 表单(form)控件(control/widget)
/**
* Created by Tiger on 17/3/14.
*/
VoucherMoreConditions.propTypes = {
fieldsModel: _react.PropTypes.array.isRequired,
defaultData: _react.PropTypes.object,
onChange: _react.PropTypes.func,
onSubmit: _react.PropTypes.func,
onReset: _react.PropTypes.func
};
exports['default'] = VoucherMoreConditions;
module.exports = exports['default'];