@boomerang-io/carbon-addons-boomerang-react
Version:
Carbon Addons for Boomerang apps
48 lines (41 loc) • 1.62 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var React = require('react');
var settings = require('../../internal/settings.js');
var ErrorMessage = require('../ErrorMessage/ErrorMessage.js');
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
var React__default = /*#__PURE__*/_interopDefault(React);
/*
IBM Confidential
694970X, 69497O0
© Copyright IBM Corp. 2022, 2024
*/
/**
* todo: convert this to hooks in the future.
* As of now getDerivedStateFromError not available via hooks
*/
class ErrorBoundary extends React.Component {
state = {
hasError: false,
error: {},
};
static defaultProps = {
className: `${settings.prefix}--bmrg-error-boundary`,
};
static getDerivedStateFromError(error) {
// Update state so the next render will show the fallback UI.
return { hasError: true, error };
}
componentDidCatch(error, info) {
console.error(error, info); //eslint-disable-line
}
render() {
const { errorComponent: ErrorComponent = ErrorMessage.default, className, style, errorProps, ...rest } = this.props;
if (this.state.hasError) {
return (React__default.default.createElement("div", { className: className, style: style, ...rest },
React__default.default.createElement(ErrorComponent, { ...this.props.errorProps })));
}
return React__default.default.createElement(React__default.default.Fragment, null, this.props.children);
}
}
exports.default = ErrorBoundary;