@dnb/eufemia
Version:
DNB Eufemia Design System UI Library
82 lines (81 loc) • 2.87 kB
JavaScript
"use client";
import _extends from "@babel/runtime/helpers/esm/extends";
import React from 'react';
import classnames from 'classnames';
import Context from "../../shared/Context.js";
import { processChildren, extendPropsWithContext } from "../../shared/component-helper.js";
import { createSpacingClasses } from "../space/SpacingHelper.js";
import Anchor from "../anchor/Anchor.js";
import Skeleton from "../skeleton/Skeleton.js";
import { H1, P, Code } from "../../elements/index.js";
const defaultProps = {
status: '404',
statusCode: '404'
};
export default function GlobalError(localProps) {
const context = React.useContext(Context);
const translation = context.getTranslation(localProps).GlobalError;
const allProps = extendPropsWithContext(localProps, defaultProps, context?.GlobalError, translation, translation[localProps.status || localProps.statusCode || defaultProps.statusCode], {
skeleton: context?.skeleton
});
const {
status,
statusCode,
skeleton,
center,
className,
title,
help,
code,
errorMessageCode,
links,
text,
...attributes
} = allProps;
const statusToUse = status !== defaultProps.status ? status : statusCode;
const textParams = {
children: text
};
const params = {
className: classnames(`dnb-global-error dnb-global-error--${statusToUse}`, createSpacingClasses(attributes), className, center && 'dnb-global-error--center'),
...attributes
};
const additionalContent = processChildren(allProps);
const userProvidedCodeValue = Object.hasOwn(localProps, 'code');
return React.createElement(Skeleton, _extends({}, params, {
show: skeleton,
element: "section"
}), React.createElement("div", {
className: "dnb-global-error__inner"
}, React.createElement("div", {
className: "dnb-global-error__inner__content"
}, React.createElement(H1, {
size: "x-large",
top: true,
bottom: true
}, title), React.createElement(P, _extends({
bottom: true
}, textParams)), userProvidedCodeValue && code && React.createElement(P, {
bottom: true,
className: "dnb-global-error__status"
}, code, " ", statusToUse && React.createElement(Code, null, statusToUse)), !userProvidedCodeValue && errorMessageCode && React.createElement(P, {
bottom: true,
className: "dnb-global-error__status"
}, String(errorMessageCode).replace('%statusCode', statusToUse)), help && links?.length > 0 && React.createElement(P, {
top: "medium",
bottom: true
}, help), help && links?.length > 0 && React.createElement(P, {
bottom: "large",
className: "dnb-global-error__links"
}, links.map(({
text,
url
}) => {
return React.createElement(Anchor, {
key: text,
href: url
}, text);
}))), additionalContent));
}
GlobalError._supportsSpacingProps = true;
//# sourceMappingURL=GlobalError.js.map