@itwin/itwinui-react
Version:
A react component library for iTwinUI
215 lines (214 loc) • 5.95 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', {
value: true,
});
Object.defineProperty(exports, 'ErrorPage', {
enumerable: true,
get: function () {
return ErrorPage;
},
});
const _interop_require_wildcard = require('@swc/helpers/_/_interop_require_wildcard');
const _react = /*#__PURE__*/ _interop_require_wildcard._(require('react'));
const _Button = require('../Buttons/Button.js');
const _NonIdealState = require('./NonIdealState.js');
const _ProgressRadial = require('../ProgressIndicators/ProgressRadial.js');
const Svg401 = _react.lazy(() =>
Promise.resolve().then(() =>
/*#__PURE__*/ _interop_require_wildcard._(
require('@itwin/itwinui-illustrations-react/Svg401'),
),
),
);
const Svg403 = _react.lazy(() =>
Promise.resolve().then(() =>
/*#__PURE__*/ _interop_require_wildcard._(
require('@itwin/itwinui-illustrations-react/Svg403'),
),
),
);
const Svg404 = _react.lazy(() =>
Promise.resolve().then(() =>
/*#__PURE__*/ _interop_require_wildcard._(
require('@itwin/itwinui-illustrations-react/Svg404'),
),
),
);
const Svg500 = _react.lazy(() =>
Promise.resolve().then(() =>
/*#__PURE__*/ _interop_require_wildcard._(
require('@itwin/itwinui-illustrations-react/Svg500'),
),
),
);
const Svg502 = _react.lazy(() =>
Promise.resolve().then(() =>
/*#__PURE__*/ _interop_require_wildcard._(
require('@itwin/itwinui-illustrations-react/Svg502'),
),
),
);
const Svg503 = _react.lazy(() =>
Promise.resolve().then(() =>
/*#__PURE__*/ _interop_require_wildcard._(
require('@itwin/itwinui-illustrations-react/Svg503'),
),
),
);
const SvgError = _react.lazy(() =>
Promise.resolve().then(() =>
/*#__PURE__*/ _interop_require_wildcard._(
require('@itwin/itwinui-illustrations-react/SvgError'),
),
),
);
const SvgRedirect = _react.lazy(() =>
Promise.resolve().then(() =>
/*#__PURE__*/ _interop_require_wildcard._(
require('@itwin/itwinui-illustrations-react/SvgRedirect'),
),
),
);
const SvgTimedOut = _react.lazy(() =>
Promise.resolve().then(() =>
/*#__PURE__*/ _interop_require_wildcard._(
require('@itwin/itwinui-illustrations-react/SvgTimedOut'),
),
),
);
const ErrorPage = _react.forwardRef((props, forwardedRef) => {
let {
errorType,
errorName,
errorMessage,
primaryButtonHandle,
primaryButtonLabel,
secondaryButtonHandle,
secondaryButtonLabel,
translatedErrorMessages,
...rest
} = props;
let defaultErrorMessages = {
badGateway: 'Bad gateway',
error: 'Error',
forbidden: 'Forbidden',
internalServerError: 'Internal server error',
redirect: 'Redirect',
pageNotFound: 'Page not found',
serviceUnavailable: 'Service unavailable',
timedOut: 'Timed out',
unauthorized: 'Unauthorized',
...translatedErrorMessages,
};
function getErrorIcon() {
switch (errorType) {
case '300':
case '301':
case '302':
case '303':
case '304':
case '305':
case '307':
case '308':
return _react.createElement(SvgRedirect, null);
case '401':
return _react.createElement(Svg401, null);
case '403':
return _react.createElement(Svg403, null);
case '404':
return _react.createElement(Svg404, null);
case '408':
case '504':
return _react.createElement(SvgTimedOut, null);
case '500':
return _react.createElement(Svg500, null);
case '502':
return _react.createElement(Svg502, null);
case '503':
return _react.createElement(Svg503, null);
case 'generic':
default:
return _react.createElement(SvgError, null);
}
}
function getHeadingMessage() {
if (errorName) return errorName;
switch (errorType) {
case '300':
case '301':
case '302':
case '303':
case '304':
case '305':
case '307':
case '308':
return defaultErrorMessages.redirect || '';
case '401':
return defaultErrorMessages.unauthorized;
case '403':
return defaultErrorMessages.forbidden;
case '404':
return defaultErrorMessages.pageNotFound;
case '408':
case '504':
return defaultErrorMessages.timedOut || '';
case '500':
return defaultErrorMessages.internalServerError;
case '502':
return defaultErrorMessages.badGateway;
case '503':
return defaultErrorMessages.serviceUnavailable;
case 'generic':
default:
return defaultErrorMessages.error;
}
}
function getPrimaryButton() {
if (!primaryButtonHandle || !primaryButtonLabel) return null;
return _react.createElement(
_Button.Button,
{
styleType: 'high-visibility',
onClick: primaryButtonHandle,
},
primaryButtonLabel,
);
}
function getSecondaryButton() {
if (!secondaryButtonHandle || !secondaryButtonLabel) return null;
return _react.createElement(
_Button.Button,
{
styleType: 'default',
onClick: secondaryButtonHandle,
},
secondaryButtonLabel,
);
}
function getActions() {
let primaryButton = getPrimaryButton();
let secondaryButton = getSecondaryButton();
if (!primaryButton && !secondaryButton) return null;
return _react.createElement(
_react.Fragment,
null,
primaryButton,
secondaryButton,
);
}
return _react.createElement(_NonIdealState.NonIdealState, {
svg: _react.createElement(
_react.Suspense,
{
fallback: _react.createElement(_ProgressRadial.ProgressRadial, null),
},
getErrorIcon(),
),
heading: getHeadingMessage(),
description: errorMessage,
actions: getActions(),
ref: forwardedRef,
...rest,
});
});
if ('development' === process.env.NODE_ENV) ErrorPage.displayName = 'ErrorPage';