@randy.tarampi/jsx
Version:
Some common JSX components for www.randytarampi.ca
59 lines (51 loc) • 2.88 kB
JavaScript
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
import { logger } from "@randy.tarampi/browser-logger";
import PropTypes from "prop-types";
import React, { PureComponent } from "react";
import { Col, Row } from "react-materialize";
import { mapErrorCodeToErrorContentComponent } from "./content";
export class ErrorComponent extends PureComponent {
componentDidMount() {
if ([404, "ENOTFOUND"].includes(this.props.errorCode) && !this.props.errorTimeoutHandlerId) {
this.props.timedRedirect();
}
}
render() {
var _this$props = this.props,
{
mapErrorCodeToErrorContentComponent,
errorContentComponent
} = _this$props,
props = _objectWithoutProperties(_this$props, ["mapErrorCodeToErrorContentComponent", "errorContentComponent"]);
var ErrorContentComponent = errorContentComponent || mapErrorCodeToErrorContentComponent(props.errorCode);
if (!ErrorContentComponent) {
logger.error("`ErrorContentComponent` is %s for props %j, just returning `null`", ErrorContentComponent, props);
return null;
}
return /*#__PURE__*/React.createElement("div", {
className: "error"
}, /*#__PURE__*/React.createElement(Row, null, /*#__PURE__*/React.createElement(Col, null, /*#__PURE__*/React.createElement(ErrorContentComponent, props))));
}
componentWillUnmount() {
this.props.clearErrorTimeoutHandler();
}
}
ErrorComponent.propTypes = {
match: PropTypes.object,
error: PropTypes.object,
errorCode: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
mapErrorCodeToErrorContentComponent: PropTypes.func.isRequired,
errorContentComponent: PropTypes.oneOfType([PropTypes.node, PropTypes.string]),
errorMessage: PropTypes.string,
errorTimeoutHandlerId: PropTypes.number,
location: PropTypes.object.isRequired,
redirectionLocation: PropTypes.string.isRequired,
redirectionTimeout: PropTypes.number.isRequired,
timedRedirect: PropTypes.func.isRequired,
clearErrorTimeoutHandler: PropTypes.func.isRequired
};
ErrorComponent.defaultProps = {
mapErrorCodeToErrorContentComponent
};
export default ErrorComponent;