import React from 'react';
import PropTypes from 'prop-types';
class ErrorMessage extends React.Component {
render() {
const origin = this.props.error && this.props.error.origin ? this.props.error.origin : this.props.origin;
const code = this.props.error && this.props.error.code ? this.props.error.code : this.props.code;
const message = this.props.error && this.props.error.message ? this.props.error.message : this.props.message;
return (
<div className={`alert ${this.props.theme} text-left`}>
{code || origin ? (
<p>
<strong>Error {code}: </strong>
{origin ? <small>({origin})</small> : ''}
</p>
) : ''}
<div>{message}</div>
</div>
);
}
}
/**
* this.props.error expects { code, origin, message }
* Code is the error's status code
* Origin is the route or process that induced the error
* Message is the message for the user to read
*/
ErrorMessage.propTypes = {
error: PropTypes.object,
origin: PropTypes.oneOfType([
PropTypes.string,
PropTypes.element
]),
code: PropTypes.oneOfType([
PropTypes.string,
PropTypes.element,
PropTypes.number
]),
message: PropTypes.oneOfType([
PropTypes.string,
PropTypes.element
]),
theme: PropTypes.string
};
ErrorMessage.defaultProps = {
theme: 'alert-danger',
origin: '',
code: '',
message: ''
};
export default ErrorMessage;
|