@xyo-network/react-error 2.38.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/LICENSE +165 -0
  2. package/README.md +70 -0
  3. package/dist/cjs/components/XyoErrorRender/ErrorAlert.d.ts +8 -0
  4. package/dist/cjs/components/XyoErrorRender/ErrorAlert.d.ts.map +1 -0
  5. package/dist/cjs/components/XyoErrorRender/ErrorAlert.js +12 -0
  6. package/dist/cjs/components/XyoErrorRender/ErrorAlert.js.map +1 -0
  7. package/dist/cjs/components/XyoErrorRender/Props.d.ts +10 -0
  8. package/dist/cjs/components/XyoErrorRender/Props.d.ts.map +1 -0
  9. package/dist/cjs/components/XyoErrorRender/Props.js +3 -0
  10. package/dist/cjs/components/XyoErrorRender/Props.js.map +1 -0
  11. package/dist/cjs/components/XyoErrorRender/Render.d.ts +4 -0
  12. package/dist/cjs/components/XyoErrorRender/Render.d.ts.map +1 -0
  13. package/dist/cjs/components/XyoErrorRender/Render.js +30 -0
  14. package/dist/cjs/components/XyoErrorRender/Render.js.map +1 -0
  15. package/dist/cjs/components/XyoErrorRender/index.d.ts +4 -0
  16. package/dist/cjs/components/XyoErrorRender/index.d.ts.map +1 -0
  17. package/dist/cjs/components/XyoErrorRender/index.js +7 -0
  18. package/dist/cjs/components/XyoErrorRender/index.js.map +1 -0
  19. package/dist/cjs/components/index.d.ts +2 -0
  20. package/dist/cjs/components/index.d.ts.map +1 -0
  21. package/dist/cjs/components/index.js +5 -0
  22. package/dist/cjs/components/index.js.map +1 -0
  23. package/dist/cjs/index.d.ts +2 -0
  24. package/dist/cjs/index.d.ts.map +1 -0
  25. package/dist/cjs/index.js +5 -0
  26. package/dist/cjs/index.js.map +1 -0
  27. package/dist/docs.json +18770 -0
  28. package/dist/esm/components/XyoErrorRender/ErrorAlert.d.ts +8 -0
  29. package/dist/esm/components/XyoErrorRender/ErrorAlert.d.ts.map +1 -0
  30. package/dist/esm/components/XyoErrorRender/ErrorAlert.js +6 -0
  31. package/dist/esm/components/XyoErrorRender/ErrorAlert.js.map +1 -0
  32. package/dist/esm/components/XyoErrorRender/Props.d.ts +10 -0
  33. package/dist/esm/components/XyoErrorRender/Props.d.ts.map +1 -0
  34. package/dist/esm/components/XyoErrorRender/Props.js +2 -0
  35. package/dist/esm/components/XyoErrorRender/Props.js.map +1 -0
  36. package/dist/esm/components/XyoErrorRender/Render.d.ts +4 -0
  37. package/dist/esm/components/XyoErrorRender/Render.d.ts.map +1 -0
  38. package/dist/esm/components/XyoErrorRender/Render.js +23 -0
  39. package/dist/esm/components/XyoErrorRender/Render.js.map +1 -0
  40. package/dist/esm/components/XyoErrorRender/index.d.ts +4 -0
  41. package/dist/esm/components/XyoErrorRender/index.d.ts.map +1 -0
  42. package/dist/esm/components/XyoErrorRender/index.js +4 -0
  43. package/dist/esm/components/XyoErrorRender/index.js.map +1 -0
  44. package/dist/esm/components/index.d.ts +2 -0
  45. package/dist/esm/components/index.d.ts.map +1 -0
  46. package/dist/esm/components/index.js +2 -0
  47. package/dist/esm/components/index.js.map +1 -0
  48. package/dist/esm/index.d.ts +2 -0
  49. package/dist/esm/index.d.ts.map +1 -0
  50. package/dist/esm/index.js +2 -0
  51. package/dist/esm/index.js.map +1 -0
  52. package/package.json +71 -0
  53. package/src/components/XyoErrorRender/ErrorAlert.tsx +18 -0
  54. package/src/components/XyoErrorRender/Props.ts +10 -0
  55. package/src/components/XyoErrorRender/Render.stories.tsx +152 -0
  56. package/src/components/XyoErrorRender/Render.tsx +34 -0
  57. package/src/components/XyoErrorRender/index.ts +3 -0
  58. package/src/components/index.ts +1 -0
  59. package/src/index.ts +1 -0
@@ -0,0 +1,8 @@
1
+ /// <reference types="react" />
2
+ import { AlertProps } from '@mui/material';
3
+ import { XyoError } from '@xyo-network/module';
4
+ export interface XyoErrorAlertProps extends AlertProps {
5
+ error?: XyoError;
6
+ }
7
+ export declare const XyoErrorAlert: React.FC<XyoErrorAlertProps>;
8
+ //# sourceMappingURL=ErrorAlert.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ErrorAlert.d.ts","sourceRoot":"","sources":["../../../../src/components/XyoErrorRender/ErrorAlert.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAS,UAAU,EAA0B,MAAM,eAAe,CAAA;AACzE,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAE9C,MAAM,WAAW,kBAAmB,SAAQ,UAAU;IACpD,KAAK,CAAC,EAAE,QAAQ,CAAA;CACjB;AAED,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAUtD,CAAA"}
@@ -0,0 +1,6 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Alert, AlertTitle, Typography } from '@mui/material';
3
+ export const XyoErrorAlert = ({ error, ...props }) => {
4
+ return (_jsxs(Alert, { severity: "error", ...props, children: [_jsx(AlertTitle, { children: "Whoops! Something went wrong" }), _jsx(Typography, { variant: "caption", mr: 0.5, fontWeight: "bold", children: "Error:" }), _jsx(Typography, { variant: "caption", children: error?.message })] }));
5
+ };
6
+ //# sourceMappingURL=ErrorAlert.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ErrorAlert.js","sourceRoot":"","sources":["../../../../src/components/XyoErrorRender/ErrorAlert.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAc,UAAU,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAOzE,MAAM,CAAC,MAAM,aAAa,GAAiC,CAAC,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE;IACjF,OAAO,CACL,MAAC,KAAK,IAAC,QAAQ,EAAC,OAAO,KAAK,KAAK,aAC/B,KAAC,UAAU,+CAA0C,EACrD,KAAC,UAAU,IAAC,OAAO,EAAC,SAAS,EAAC,EAAE,EAAE,GAAG,EAAE,UAAU,EAAC,MAAM,uBAE3C,EACb,KAAC,UAAU,IAAC,OAAO,EAAC,SAAS,YAAE,KAAK,EAAE,OAAO,GAAc,IACrD,CACT,CAAA;AACH,CAAC,CAAA"}
@@ -0,0 +1,10 @@
1
+ import { FlexBoxProps } from '@xylabs/react-flexbox';
2
+ import { XyoError } from '@xyo-network/module';
3
+ import { ReactNode } from 'react';
4
+ export interface XyoErrorRenderProps extends FlexBoxProps {
5
+ xyoError?: XyoError;
6
+ customError?: ReactNode;
7
+ noReAuth?: boolean;
8
+ noErrorDisplay?: boolean;
9
+ }
10
+ //# sourceMappingURL=Props.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Props.d.ts","sourceRoot":"","sources":["../../../../src/components/XyoErrorRender/Props.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEjC,MAAM,WAAW,mBAAoB,SAAQ,YAAY;IACvD,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,WAAW,CAAC,EAAE,SAAS,CAAA;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Props.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Props.js","sourceRoot":"","sources":["../../../../src/components/XyoErrorRender/Props.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ /// <reference types="react" />
2
+ import { XyoErrorRenderProps } from './Props';
3
+ export declare const XyoErrorRender: React.FC<XyoErrorRenderProps>;
4
+ //# sourceMappingURL=Render.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Render.d.ts","sourceRoot":"","sources":["../../../../src/components/XyoErrorRender/Render.tsx"],"names":[],"mappings":";AAKA,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAA;AAE7C,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CA0BxD,CAAA"}
@@ -0,0 +1,23 @@
1
+ import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { FlexCol } from '@xylabs/react-flexbox';
3
+ import { useEffect } from 'react';
4
+ import { useLocation } from 'react-router-dom';
5
+ import { XyoErrorAlert } from './ErrorAlert';
6
+ export const XyoErrorRender = ({ xyoError, noErrorDisplay = false, customError = null, children, ...props }) => {
7
+ const location = useLocation();
8
+ useEffect(() => {
9
+ // ensure we end up at the same place we are now after logging in
10
+ location.state = {
11
+ from: {
12
+ pathname: window.location.pathname,
13
+ },
14
+ };
15
+ }, [location]);
16
+ if (xyoError) {
17
+ return (_jsx(FlexCol, { alignItems: "stretch", ...props, children: noErrorDisplay ? (customError) : (_jsx(FlexCol, { alignItems: "center", ...props, children: _jsx(XyoErrorAlert, { error: xyoError }) })) }));
18
+ }
19
+ else {
20
+ return _jsx(_Fragment, { children: children }) ?? null;
21
+ }
22
+ };
23
+ //# sourceMappingURL=Render.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Render.js","sourceRoot":"","sources":["../../../../src/components/XyoErrorRender/Render.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAE9C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAG5C,MAAM,CAAC,MAAM,cAAc,GAAkC,CAAC,EAAE,QAAQ,EAAE,cAAc,GAAG,KAAK,EAAE,WAAW,GAAG,IAAI,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE;IAC5I,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAA;IAC9B,SAAS,CAAC,GAAG,EAAE;QACb,iEAAiE;QACjE,QAAQ,CAAC,KAAK,GAAG;YACf,IAAI,EAAE;gBACJ,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ;aACnC;SACF,CAAA;IACH,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAA;IAEd,IAAI,QAAQ,EAAE;QACZ,OAAO,CACL,KAAC,OAAO,IAAC,UAAU,EAAC,SAAS,KAAK,KAAK,YACpC,cAAc,CAAC,CAAC,CAAC,CAChB,WAAW,CACZ,CAAC,CAAC,CAAC,CACF,KAAC,OAAO,IAAC,UAAU,EAAC,QAAQ,KAAK,KAAK,YACpC,KAAC,aAAa,IAAC,KAAK,EAAE,QAAQ,GAAI,GAC1B,CACX,GACO,CACX,CAAA;KACF;SAAM;QACL,OAAO,4BAAG,QAAQ,GAAI,IAAI,IAAI,CAAA;KAC/B;AACH,CAAC,CAAA"}
@@ -0,0 +1,4 @@
1
+ export * from './ErrorAlert';
2
+ export * from './Props';
3
+ export * from './Render';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/XyoErrorRender/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA"}
@@ -0,0 +1,4 @@
1
+ export * from './ErrorAlert';
2
+ export * from './Props';
3
+ export * from './Render';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/XyoErrorRender/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA"}
@@ -0,0 +1,2 @@
1
+ export * from './XyoErrorRender';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA"}
@@ -0,0 +1,2 @@
1
+ export * from './XyoErrorRender';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA"}
@@ -0,0 +1,2 @@
1
+ export * from './components';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA"}
@@ -0,0 +1,2 @@
1
+ export * from './components';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA"}
package/package.json ADDED
@@ -0,0 +1,71 @@
1
+ {
2
+ "name": "@xyo-network/react-error",
3
+ "author": {
4
+ "email": "support@xyo.network",
5
+ "name": "XYO Development Team",
6
+ "url": "https://xyo.network"
7
+ },
8
+ "bugs": {
9
+ "email": "support@xyo.network",
10
+ "url": "https://github.com/XYOracleNetwork/sdk-xyo-react-js/issues"
11
+ },
12
+ "dependencies": {
13
+ "@xylabs/react-flexbox": "^2.15.1",
14
+ "tslib": "^2.4.0"
15
+ },
16
+ "peerDependencies": {
17
+ "@mui/material": "^5.10.3",
18
+ "lodash": "^4.17.21",
19
+ "pako": "^2.0.4",
20
+ "react": "^18.2.0",
21
+ "react-dom": "^18.2.0",
22
+ "react-router-dom": "^6.3.0"
23
+ },
24
+ "description": "Common React library for all XYO projects that use React",
25
+ "devDependencies": {
26
+ "@xyo-network/module": "^2.38.18"
27
+ },
28
+ "browser": "dist/esm/index.js",
29
+ "docs": "dist/docs.json",
30
+ "exports": {
31
+ ".": {
32
+ "node": {
33
+ "import": "./dist/esm/index.js",
34
+ "require": "./dist/cjs/index.js"
35
+ },
36
+ "browser": {
37
+ "import": "./dist/esm/index.js",
38
+ "require": "./dist/cjs/index.js"
39
+ },
40
+ "default": "./dist/esm/index.js"
41
+ },
42
+ "./dist/docs.json": {
43
+ "default": "./dist/docs.json"
44
+ },
45
+ "./package.json": "./package.json"
46
+ },
47
+ "main": "dist/cjs/index.js",
48
+ "module": "dist/esm/index.js",
49
+ "homepage": "https://xyo.network",
50
+ "keywords": [
51
+ "xyo",
52
+ "utility",
53
+ "typescript",
54
+ "react"
55
+ ],
56
+ "license": "LGPL-3.0",
57
+ "publishConfig": {
58
+ "access": "public"
59
+ },
60
+ "repository": {
61
+ "type": "git",
62
+ "url": "https://github.com/XYOracleNetwork/sdk-xyo-react-js.git"
63
+ },
64
+ "scripts": {
65
+ "lint-pkg": "npmPkgJsonLint .",
66
+ "license": "yarn license-checker --exclude \"MIT, ISC, Apache-2.0, BSD, BSD-2-Clause, CC-BY-4.0, Unlicense, CC-BY-3.0, CC0-1.0\""
67
+ },
68
+ "sideEffects": false,
69
+ "types": "dist/esm/index.d.ts",
70
+ "version": "2.38.9"
71
+ }
@@ -0,0 +1,18 @@
1
+ import { Alert, AlertProps, AlertTitle, Typography } from '@mui/material'
2
+ import { XyoError } from '@xyo-network/module'
3
+
4
+ export interface XyoErrorAlertProps extends AlertProps {
5
+ error?: XyoError
6
+ }
7
+
8
+ export const XyoErrorAlert: React.FC<XyoErrorAlertProps> = ({ error, ...props }) => {
9
+ return (
10
+ <Alert severity="error" {...props}>
11
+ <AlertTitle>Whoops! Something went wrong</AlertTitle>
12
+ <Typography variant="caption" mr={0.5} fontWeight="bold">
13
+ Error:
14
+ </Typography>
15
+ <Typography variant="caption">{error?.message}</Typography>
16
+ </Alert>
17
+ )
18
+ }
@@ -0,0 +1,10 @@
1
+ import { FlexBoxProps } from '@xylabs/react-flexbox'
2
+ import { XyoError } from '@xyo-network/module'
3
+ import { ReactNode } from 'react'
4
+
5
+ export interface XyoErrorRenderProps extends FlexBoxProps {
6
+ xyoError?: XyoError
7
+ customError?: ReactNode
8
+ noReAuth?: boolean
9
+ noErrorDisplay?: boolean
10
+ }
@@ -0,0 +1,152 @@
1
+ /* eslint-disable import/no-internal-modules */
2
+ import { Typography } from '@mui/material'
3
+ import { ComponentMeta, ComponentStory } from '@storybook/react'
4
+ import { FlexCol } from '@xylabs/react-flexbox'
5
+ import { useAsyncEffect } from '@xylabs/react-shared'
6
+ import { XyoError, XyoErrorSchema } from '@xyo-network/module'
7
+ import { useArchive } from '@xyo-network/react-archive'
8
+ import { useArchivistApi } from '@xyo-network/react-archivist-api'
9
+ import { AuthStatusIconButton } from '@xyo-network/react-auth'
10
+ import { archivistApiDecorator, authDecorator } from '@xyo-network/react-storybook'
11
+ import axios, { AxiosResponse } from 'axios'
12
+ import { useState } from 'react'
13
+
14
+ import { XyoErrorRender } from './Render'
15
+
16
+ const StorybookEntry = {
17
+ argTypes: {
18
+ authState: {
19
+ jwtToken: 'badToken',
20
+ loggedInAccount: 'none@none.com',
21
+ },
22
+ },
23
+ component: XyoErrorRender,
24
+ decorators: [authDecorator],
25
+ parameters: {
26
+ docs: {
27
+ page: null,
28
+ },
29
+ },
30
+ title: 'auth-service/XyoApiErrorRender',
31
+ } as ComponentMeta<typeof XyoErrorRender>
32
+
33
+ const TemplateStats: ComponentStory<typeof XyoErrorRender> = () => {
34
+ const [xyoError, setXyoError] = useState<XyoError>()
35
+ const [stats, setStats] = useState<{ count: number }>()
36
+ const { api } = useArchivistApi()
37
+ const { archive } = useArchive()
38
+
39
+ useAsyncEffect(
40
+ // eslint-disable-next-line react-hooks/exhaustive-deps
41
+ async () => {
42
+ try {
43
+ const response = await api?.archive(archive).block.stats.get()
44
+ setStats(response)
45
+ setXyoError(undefined)
46
+ } catch (ex) {
47
+ const error = ex as Error
48
+ setXyoError({ message: error.message, schema: XyoErrorSchema, sources: [] })
49
+ }
50
+ },
51
+ [api, archive],
52
+ )
53
+
54
+ return (
55
+ <>
56
+ <AuthStatusIconButton />
57
+ <XyoErrorRender xyoError={xyoError}>
58
+ <p>Stats: {stats?.count}</p>
59
+ </XyoErrorRender>
60
+ </>
61
+ )
62
+ }
63
+
64
+ const Template401: ComponentStory<typeof XyoErrorRender> = () => {
65
+ const [xyoError, setXyoError] = useState<XyoError>()
66
+ const [response, setResponse] = useState<AxiosResponse>()
67
+
68
+ // eslint-disable-next-line react-hooks/exhaustive-deps
69
+ useAsyncEffect(async () => {
70
+ try {
71
+ const response = await axios.get('http://httpstat.us/401')
72
+ setResponse(response)
73
+ setXyoError(undefined)
74
+ } catch (ex) {
75
+ const error = ex as Error
76
+ setXyoError({ message: error.message, schema: XyoErrorSchema, sources: [] })
77
+ }
78
+ }, [])
79
+
80
+ return (
81
+ <>
82
+ <XyoErrorRender xyoError={xyoError}>
83
+ <FlexCol>
84
+ <AuthStatusIconButton />
85
+ <pre>{JSON.stringify(response, null, 2)}</pre>
86
+ </FlexCol>
87
+ </XyoErrorRender>
88
+ </>
89
+ )
90
+ }
91
+
92
+ const Template500: ComponentStory<typeof XyoErrorRender> = () => {
93
+ const [xyoError, setXyoError] = useState<XyoError>()
94
+
95
+ useAsyncEffect(
96
+ // eslint-disable-next-line react-hooks/exhaustive-deps
97
+ async () => {
98
+ try {
99
+ await axios.get('http://httpstat.us/500')
100
+ setXyoError(undefined)
101
+ } catch (ex) {
102
+ const error = ex as Error
103
+ setXyoError({ message: error.message, schema: XyoErrorSchema, sources: [] })
104
+ }
105
+ },
106
+ [],
107
+ )
108
+
109
+ return (
110
+ <XyoErrorRender xyoError={xyoError}>
111
+ <Typography>I should never show</Typography>
112
+ </XyoErrorRender>
113
+ )
114
+ }
115
+
116
+ const Template404: ComponentStory<typeof XyoErrorRender> = () => {
117
+ const [xyoError, setXyoError] = useState<XyoError>()
118
+
119
+ useAsyncEffect(
120
+ // eslint-disable-next-line react-hooks/exhaustive-deps
121
+ async () => {
122
+ try {
123
+ await axios.get('https://beta.xyo.network/somelongstringthatisntarealhashbutcouldbe')
124
+ setXyoError(undefined)
125
+ } catch (ex) {
126
+ const error = ex as Error
127
+ setXyoError({ message: error.message, schema: XyoErrorSchema, sources: [] })
128
+ }
129
+ },
130
+ [],
131
+ )
132
+
133
+ return (
134
+ <XyoErrorRender xyoError={xyoError}>
135
+ <Typography>I should never show</Typography>
136
+ </XyoErrorRender>
137
+ )
138
+ }
139
+
140
+ TemplateStats.decorators = [archivistApiDecorator]
141
+ Template401.decorators = [archivistApiDecorator]
142
+ Template500.decorators = [archivistApiDecorator]
143
+
144
+ const AuthRequired = TemplateStats.bind({})
145
+ const UnAuthedFallback = Template401.bind({})
146
+ const Server404 = Template404.bind({})
147
+ const Server500 = Template500.bind({})
148
+
149
+ export { AuthRequired, Server404, Server500, UnAuthedFallback }
150
+
151
+ // eslint-disable-next-line import/no-default-export
152
+ export default StorybookEntry
@@ -0,0 +1,34 @@
1
+ import { FlexCol } from '@xylabs/react-flexbox'
2
+ import { useEffect } from 'react'
3
+ import { useLocation } from 'react-router-dom'
4
+
5
+ import { XyoErrorAlert } from './ErrorAlert'
6
+ import { XyoErrorRenderProps } from './Props'
7
+
8
+ export const XyoErrorRender: React.FC<XyoErrorRenderProps> = ({ xyoError, noErrorDisplay = false, customError = null, children, ...props }) => {
9
+ const location = useLocation()
10
+ useEffect(() => {
11
+ // ensure we end up at the same place we are now after logging in
12
+ location.state = {
13
+ from: {
14
+ pathname: window.location.pathname,
15
+ },
16
+ }
17
+ }, [location])
18
+
19
+ if (xyoError) {
20
+ return (
21
+ <FlexCol alignItems="stretch" {...props}>
22
+ {noErrorDisplay ? (
23
+ customError
24
+ ) : (
25
+ <FlexCol alignItems="center" {...props}>
26
+ <XyoErrorAlert error={xyoError} />
27
+ </FlexCol>
28
+ )}
29
+ </FlexCol>
30
+ )
31
+ } else {
32
+ return <>{children}</> ?? null
33
+ }
34
+ }
@@ -0,0 +1,3 @@
1
+ export * from './ErrorAlert'
2
+ export * from './Props'
3
+ export * from './Render'
@@ -0,0 +1 @@
1
+ export * from './XyoErrorRender'
package/src/index.ts ADDED
@@ -0,0 +1 @@
1
+ export * from './components'