@talend/react-forms
Version:
React forms library based on json schema form.
92 lines (91 loc) • 2.86 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _propTypes = _interopRequireDefault(require("prop-types"));
var _react = require("react");
var _classnames = _interopRequireDefault(require("classnames"));
var _reactComponents = require("@talend/react-components");
var _jsxRuntime = require("react/jsx-runtime");
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
class SingleButton extends _react.Component {
constructor(props) {
super(props);
this.state = {};
this.onClick = this.onClick.bind(this);
}
onClick(event) {
const schema = this.props.schema;
const type = schema.type || 'button';
if (type === 'button' && schema.triggers) {
this.setState({
inProgress: true
});
this.props.onTrigger(event, {
trigger: schema.triggers[0],
schema
}).finally(() => this.setState({
inProgress: false
}));
} else if (this.props.onClick) {
this.props.onClick(event, schema);
}
}
render() {
var _props$bsStyle;
const {
className,
id,
schema,
getComponent
} = this.props;
const {
type = 'button',
title,
label,
inProgress,
...props
} = schema;
const Renderer = _reactComponents.Inject.getAll(getComponent, {
Action: _reactComponents.Action
});
return /*#__PURE__*/(0, _jsxRuntime.jsx)(Renderer.Action, {
...props,
id: id,
className: (0, _classnames.default)(
// FIXME update forms to use .btn--secondary instead
{
'btn--secondary': !props.bsStyle || ((_props$bsStyle = props.bsStyle) === null || _props$bsStyle === void 0 ? void 0 : _props$bsStyle.includes('default'))
}, 'btn', className),
label: label || title,
onClick: this.onClick,
type: type,
inProgress: this.state.inProgress || inProgress
});
}
}
exports.default = SingleButton;
if (process.env.NODE_ENV !== 'production') {
SingleButton.propTypes = {
className: _propTypes.default.string,
id: _propTypes.default.string,
onTrigger: _propTypes.default.func,
onClick: _propTypes.default.func,
getComponent: _propTypes.default.func,
schema: _propTypes.default.shape({
bsStyle: _propTypes.default.string,
disabled: _propTypes.default.bool,
inProgress: _propTypes.default.bool,
label: _propTypes.default.string,
name: _propTypes.default.string,
title: _propTypes.default.string,
triggers: _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.object, _propTypes.default.string])),
type: _propTypes.default.oneOf(['button', 'submit', 'reset'])
})
};
}
SingleButton.defaultProps = {
schema: {}
};
//# sourceMappingURL=SingleButton.component.js.map