UNPKG

@itwin/itwinui-react

Version:

A react component library for iTwinUI

215 lines (214 loc) 5.95 kB
'use strict'; 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';