UNPKG

@randy.tarampi/jsx

Version:

Some common JSX components for www.randytarampi.ca

59 lines (51 loc) 2.88 kB
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;