@equinor/amplify-component-lib 9.5.3 → 9.6.0
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.
- package/dist/molecules/FileProgress/CompactFileProgress.js +1 -1
- package/dist/molecules/FileProgress/FileProgress.js +1 -1
- package/dist/molecules/FileProgress/FileProgress.types.d.ts +7 -2
- package/dist/molecules/FileProgress/RegularFileProgress.js +1 -1
- package/dist/molecules/FileProgress/RegularFileProgress.styles.js +2 -1
- package/dist/molecules/FullPageSpinner/FullPageSpinner.js +11 -14
- package/dist/molecules/Select/Select.styles.js +2 -0
- package/dist/organisms/TopBar/Account/Account.styles.js +27 -24
- package/dist/providers/SnackbarProvider/SnackbarProvider.js +1 -1
- package/dist/providers/SnackbarProvider/hooks/useApiErrorSnackbar.d.ts +7 -0
- package/dist/providers/SnackbarProvider/hooks/useApiErrorSnackbar.js +1 -0
- package/package.json +1 -1
- package/dist/providers/SnackbarProvider/APIErrorSnackbar.d.ts +0 -6
- package/dist/providers/SnackbarProvider/APIErrorSnackbar.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsxs as t,jsx as e}from"react/jsx-runtime";import{useState as r,useEffect as i,useMemo as o}from"react";import{Icon as n,Typography as s}from"@equinor/eds-core-react";import{error_outlined as a,clear as l}from"@equinor/eds-icons";import{Rejection as m,DoneWrapper as p,LoadingWrapper as c,CircularProgress as h,CompactFileProgressContainer as d,FileTooltip as j,AdditionalText as g,CloseButton as u}from"./CompactFileProgress.styles.js";import{isFileImage as x,getFileIcon as k,readUploadedFileAsText as w}from"./FileProgress.utils.js";import{colors as S}from"../../atoms/style/colors.js";import"../AnimatedCheckmark/AnimatedCheckmark.styles.js";import"../ApplicationIcon/ApplicationIcon.js";import"../Badge/Badge.styles.js";import"../Banner/Banner.styles.js";import"../Chip/Chip.js";import"../ContentMenu/ContentMenu.styles.js";import"../DatePicker/DatePicker.js";import"../Dialog/Dialog.js";import"../EquinorLogo/EquinorLogo.js";import"../../atoms/utils/auth_environment.js";import"html2canvas";import"proj4";import"../RichTextEditor/RichTextEditor.types.js";import"./RegularFileProgress.styles.js";import"../FileUploadArea/FileUploadArea.js";import"../FullPageSpinner/FullPageSpinner.js";import"../InfoElement/InfoElement.js";import{OptionalTooltip as v}from"../OptionalTooltip/OptionalTooltip.js";import"../ProfileAvatar/ProfileAvatar.js";import"@tiptap/react";import"../RichTextEditor/custom-extensions/AmplifyKit.js";import"../RichTextEditor/RichTextEditor.styles.js";import"../RichTextEditor/MenuBar/MenuBar.js";import"@tanstack/react-query";import"../RichTextEditor/MenuBar/MenuBar.styles.js";import"../RichTextEditor/MenuBar/MenuButton.js";import"../Search/Search.js";import"react-router-dom";import"../Sieve/Sieve.styles.js";import"../../_virtual/lodash.js";import"../SingleFilterMenu/SingleFilterMenu.js";import"../Skeleton/SkeletonBase/SkeletonBase.js";import"../Skeleton/Skeleton.styles.js";import"../Stepper/Stepper.js";import"../OptionDrawer/OptionDrawer.js";import"../Select/Select.styles.js";import"../ListItem/ListItem.js";import"../SelectionControls/Checkbox/Checkbox.js";import"../SelectionControls/Radio/Radio.js";import"../SelectionControls/Switch/Switch.js";const y=({file:y,isError:f,shortErrorText:E,showCompleteState:C,fullErrorText:B,handleOnClick:T,isDeleting:R
|
|
1
|
+
import{jsxs as t,jsx as e}from"react/jsx-runtime";import{useState as r,useEffect as i,useMemo as o}from"react";import{Icon as n,Typography as s}from"@equinor/eds-core-react";import{error_outlined as a,clear as l}from"@equinor/eds-icons";import{Rejection as m,DoneWrapper as p,LoadingWrapper as c,CircularProgress as h,CompactFileProgressContainer as d,FileTooltip as j,AdditionalText as g,CloseButton as u}from"./CompactFileProgress.styles.js";import{isFileImage as x,getFileIcon as k,readUploadedFileAsText as w}from"./FileProgress.utils.js";import{colors as S}from"../../atoms/style/colors.js";import"../AnimatedCheckmark/AnimatedCheckmark.styles.js";import"../ApplicationIcon/ApplicationIcon.js";import"../Badge/Badge.styles.js";import"../Banner/Banner.styles.js";import"../Chip/Chip.js";import"../ContentMenu/ContentMenu.styles.js";import"../DatePicker/DatePicker.js";import"../Dialog/Dialog.js";import"../EquinorLogo/EquinorLogo.js";import"../../atoms/utils/auth_environment.js";import"html2canvas";import"proj4";import"../RichTextEditor/RichTextEditor.types.js";import"./RegularFileProgress.styles.js";import"../FileUploadArea/FileUploadArea.js";import"../FullPageSpinner/FullPageSpinner.js";import"../InfoElement/InfoElement.js";import{OptionalTooltip as v}from"../OptionalTooltip/OptionalTooltip.js";import"../ProfileAvatar/ProfileAvatar.js";import"@tiptap/react";import"../RichTextEditor/custom-extensions/AmplifyKit.js";import"../RichTextEditor/RichTextEditor.styles.js";import"../RichTextEditor/MenuBar/MenuBar.js";import"@tanstack/react-query";import"../RichTextEditor/MenuBar/MenuBar.styles.js";import"../RichTextEditor/MenuBar/MenuButton.js";import"../Search/Search.js";import"react-router-dom";import"../Sieve/Sieve.styles.js";import"../../_virtual/lodash.js";import"../SingleFilterMenu/SingleFilterMenu.js";import"../Skeleton/SkeletonBase/SkeletonBase.js";import"../Skeleton/Skeleton.styles.js";import"../Stepper/Stepper.js";import"../OptionDrawer/OptionDrawer.js";import"../Select/Select.styles.js";import"../ListItem/ListItem.js";import"../SelectionControls/Checkbox/Checkbox.js";import"../SelectionControls/Radio/Radio.js";import"../SelectionControls/Switch/Switch.js";const y=({file:y,isError:f,shortErrorText:E,showCompleteState:C,fullErrorText:B,handleOnClick:T,isDeleting:D,...R})=>{const[_,A]=r("");i((()=>{f||(async t=>{const e=await w(t);A(e)})(y)}),[f,y]);const M=o((()=>f?B&&B.length>0?B:"An error has occurred with the file":""),[B,f]),P=o((()=>f?t(m,{children:[e(n,{data:a,color:S.interactive.warning__text.rgba}),e("div",{children:E&&E.length>0?E:"Invalid file type"}),e("svg",{width:"88",height:"88",viewBox:"0 0 88 88",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:e("rect",{x:"1",y:"1",width:"86",height:"86",rx:"7",stroke:S.interactive.warning__text.rgba,strokeWidth:"2",strokeDasharray:"4 4"})})]}):C&&!D&&x(y.name)?e(p,{children:e("img",{src:_,alt:` ${y.name}`})}):C&&!D?e(p,{children:e(n,{data:k(y.name)})}):t(c,{children:[e(h,{variant:R.indeterminate||D?"indeterminate":"determinate",value:R.isDone||R.indeterminate?void 0:R.progressPercent,size:24}),e(s,{variant:"meta",children:"Uploading..."}),e("svg",{width:"88",height:"88",viewBox:"0 0 88 88",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:e("rect",{x:"1",y:"1",width:"86",height:"86",rx:"7",stroke:S.ui.background__medium.rgba,strokeWidth:"2",strokeDasharray:"4 4"})})]})),[f,C,D,E,_,y.name,R]);return t(d,{$isError:f,children:[e(j,{title:M,children:P}),e(v,{title:y.name,children:e(g,{group:"paragraph",variant:"meta",children:y.name})}),!D&&R.onDelete&&e(u,{"data-testid":"delete-file",onClick:T,children:e(n,{color:S.text.static_icons__tertiary.rgba,data:l})})]})};export{y as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as e}from"react/jsx-runtime";import{useState as o,useMemo as r}from"react";import t from"./CompactFileProgress.js";import i from"./RegularFileProgress.js";const n=n=>{const[s,
|
|
1
|
+
import{jsx as e}from"react/jsx-runtime";import{useState as o,useMemo as r}from"react";import t from"./CompactFileProgress.js";import i from"./RegularFileProgress.js";const n=n=>{const[s,l]=o(!1),a=r((()=>!!(n.isError??void 0===n.isDone)||n.isDone),[n.isError,n.isDone]),m=async()=>{!a&&n.onCancel?n.onCancel():n.onDelete&&(l(!0),await n.onDelete(),l(!1))};return n.compact?e(t,{...n,isDeleting:s,showCompleteState:a,handleOnClick:m}):e(i,{...n,isDeleting:s,showCompleteState:a,handleOnClick:m})};export{n as FileProgress};
|
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
import { FileWithPath } from 'react-dropzone';
|
|
2
2
|
interface FileProgressBaseProps {
|
|
3
|
-
onDelete
|
|
3
|
+
onDelete?: () => Promise<void> | void;
|
|
4
4
|
file: FileWithPath | File;
|
|
5
5
|
onCancel?: () => void;
|
|
6
6
|
isError?: boolean;
|
|
7
7
|
isDone?: boolean;
|
|
8
8
|
}
|
|
9
|
+
type DoneFileProgress = FileProgressBaseProps & {
|
|
10
|
+
isDone: true;
|
|
11
|
+
indeterminate?: undefined;
|
|
12
|
+
progressPercent?: undefined;
|
|
13
|
+
};
|
|
9
14
|
type ProgressPercentFileProgress = FileProgressBaseProps & {
|
|
10
15
|
progressPercent: number;
|
|
11
16
|
indeterminate?: false;
|
|
@@ -14,7 +19,7 @@ type IndeterminateFileProgress = FileProgressBaseProps & {
|
|
|
14
19
|
progressPercent?: undefined;
|
|
15
20
|
indeterminate: true;
|
|
16
21
|
};
|
|
17
|
-
type FileProgressBase = ProgressPercentFileProgress | IndeterminateFileProgress;
|
|
22
|
+
type FileProgressBase = ProgressPercentFileProgress | IndeterminateFileProgress | DoneFileProgress;
|
|
18
23
|
export type RegularFileProgressBaseProps = FileProgressBase & {
|
|
19
24
|
compact?: false;
|
|
20
25
|
fullErrorText?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsxs as e,jsx as r}from"react/jsx-runtime";import{useMemo as i}from"react";import{Icon as t,Typography as o,Button as n,CircularProgress as s}from"@equinor/eds-core-react";import{file as a,delete_to_trash as c,close_circle_outlined as l,refresh as m}from"@equinor/eds-icons";import{colors as d}from"../../atoms/style/colors.js";import"../../atoms/utils/auth_environment.js";import"html2canvas";import"proj4";import"../RichTextEditor/RichTextEditor.types.js";import{formatDataSize as p}from"../../atoms/utils/size.js";import{Container as h,RegularFileProgressWrapper as u,FileName as v,ProgressWrapper as g,LinearProgress as
|
|
1
|
+
import{jsxs as e,jsx as r}from"react/jsx-runtime";import{useMemo as i}from"react";import{Icon as t,Typography as o,Button as n,CircularProgress as s}from"@equinor/eds-core-react";import{file as a,delete_to_trash as c,close_circle_outlined as l,refresh as m}from"@equinor/eds-icons";import{colors as d}from"../../atoms/style/colors.js";import"../../atoms/utils/auth_environment.js";import"html2canvas";import"proj4";import"../RichTextEditor/RichTextEditor.types.js";import{formatDataSize as p}from"../../atoms/utils/size.js";import{Container as h,RegularFileProgressWrapper as u,FileName as v,ProgressWrapper as g,LinearProgress as f,RegularFileProgressDetails as z}from"./RegularFileProgress.styles.js";const _=({onRetry:_,file:x,customLoadingText:j,customCompleteText:y,isError:C,fullErrorText:E,showCompleteState:F,handleOnClick:T,isDeleting:b,...D})=>{const P=i((()=>{if(!x?.size||D.isDone||D.indeterminate||void 0===D.progressPercent)return 1;const e=x.size/100*D.progressPercent;return p({inputFormat:"B",size:e,decimals:1})}),[x?.size,D]),R=i((()=>{if(C)return E??"An error has occurred";return F?y??"File uploaded!":j??"loading..."}),[y,j,E,F,C]);return e(h,{$isError:C,children:[r(t,{data:a,color:C?d.interactive.warning__hover.rgba:d.interactive.primary__resting.rgba,size:32}),e(u,{children:[e(v,{children:[r(o,{variant:"caption",children:x.name}),e("div",{children:[b?r(n,{variant:"ghost_icon",children:r(s,{size:24})}):D.onDelete&&r(n,{variant:"ghost_icon",onClick:T,"data-testid":"delete-file",children:r(t,{data:F?c:l,color:d.text.static_icons__tertiary.rgba,size:24})}),C&&_&&r(n,{variant:"ghost_icon",onClick:_,children:r(t,{data:m,color:d.text.static_icons__tertiary.rgba,size:24})})]})]}),r(g,{children:!F&&!D.isDone&&r(f,{variant:D.indeterminate?"indeterminate":"determinate",value:D.indeterminate?void 0:D.progressPercent})}),e(z,{children:[r(o,{variant:"overline",children:R}),x?.size&&r(o,{variant:"overline",children:F?p({size:x.size,decimals:1,inputFormat:"B"}):`${P} of ${p({size:x.size,decimals:1,inputFormat:"B"})}`})]})]})]})};export{_ as default};
|
|
@@ -6,7 +6,7 @@ import{LinearProgress as e}from"@equinor/eds-core-react";import{colors as i}from
|
|
|
6
6
|
align-items: center;
|
|
7
7
|
gap: ${r.medium};
|
|
8
8
|
border: 1px solid
|
|
9
|
-
${({$isError:e})=>e?i.
|
|
9
|
+
${({$isError:e})=>e?i.interactive.warning__hover.rgba:i.ui.background__medium.rgba};
|
|
10
10
|
border-radius: 4px;
|
|
11
11
|
`,a=t.div`
|
|
12
12
|
display: flex;
|
|
@@ -16,6 +16,7 @@ import{LinearProgress as e}from"@equinor/eds-core-react";import{colors as i}from
|
|
|
16
16
|
display: flex;
|
|
17
17
|
align-items: center;
|
|
18
18
|
justify-content: space-between;
|
|
19
|
+
min-height: 40px;
|
|
19
20
|
`,s=t.div`
|
|
20
21
|
align-items: center;
|
|
21
22
|
display: flex;
|
|
@@ -1,20 +1,17 @@
|
|
|
1
|
-
import{jsx as r,jsxs as t}from"react/jsx-runtime";import{useMemo as
|
|
2
|
-
|
|
3
|
-
height: 100vh;
|
|
4
|
-
position: fixed;
|
|
1
|
+
import{jsx as r,jsxs as t}from"react/jsx-runtime";import{useMemo as i}from"react";import{Progress as e,StarProgress as a,Scrim as n}from"@equinor/eds-core-react";import{colors as o}from"../../atoms/style/colors.js";import s from"styled-components";const c=s.div`
|
|
2
|
+
position: absolute;
|
|
5
3
|
z-index: 500;
|
|
6
|
-
top:
|
|
7
|
-
left:
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
display: flex;
|
|
11
|
-
`,l=o.div`
|
|
4
|
+
top: 50%;
|
|
5
|
+
left: 50%;
|
|
6
|
+
transform: translate(-50%, -50%);
|
|
7
|
+
`,l=s.div`
|
|
12
8
|
visibility: hidden;
|
|
13
|
-
`,p=
|
|
9
|
+
`,p=s(e.Circular)`
|
|
10
|
+
padding: 2px;
|
|
14
11
|
circle {
|
|
15
|
-
stroke: ${
|
|
12
|
+
stroke: ${o.interactive.primary__resting.rgba};
|
|
16
13
|
}
|
|
17
14
|
circle:first-child {
|
|
18
|
-
stroke: ${
|
|
15
|
+
stroke: ${o.interactive.primary__hover_alt.rgba};
|
|
19
16
|
}
|
|
20
|
-
`,d=({variant:
|
|
17
|
+
`,d=({variant:o="application",withScrim:s=!1,children:d})=>{const m=i((()=>{switch(o){case"dots":return r(e.Dots,{color:"primary","data-testid":`full-page-spinner-${o}`});case"circle":return r(p,{"data-testid":`full-page-spinner-${o}`});case"equinor":return r(a,{"data-testid":`full-page-spinner-${o}`});case"application":return r(p,{"data-testid":"app-icon-svg"})}}),[o]);return s?t(n,{open:!0,children:[m,d&&r(l,{children:d})]}):t(c,{children:[m,d&&r(l,{children:d})]})};export{d as FullPageSpinner};
|
|
@@ -182,6 +182,8 @@ import{Button as t,Menu as e,Typography as r}from"@equinor/eds-core-react";expor
|
|
|
182
182
|
justify-self: center;
|
|
183
183
|
width: ${s.x_large};
|
|
184
184
|
`,$=d(r)`
|
|
185
|
+
user-select: none;
|
|
186
|
+
pointer-events: none;
|
|
185
187
|
position: absolute;
|
|
186
188
|
color: ${n.text.static_icons__tertiary.rgba};
|
|
187
189
|
top: calc(50%);
|
|
@@ -1,54 +1,57 @@
|
|
|
1
|
-
import{Chip as r}from"@equinor/eds-core-react";import{tokens as i}from"../../../node_modules/@equinor/eds-tokens/dist/esm/base/index.js";import{animation as
|
|
1
|
+
import{Chip as r}from"@equinor/eds-core-react";import{tokens as i}from"../../../node_modules/@equinor/eds-tokens/dist/esm/base/index.js";import{animation as o}from"../../../atoms/style/animation.js";import"../../../atoms/style/colors.js";import{spacings as t}from"../../../atoms/style/spacings.js";import e from"styled-components";const{colors:a,shape:n}=i,s=e.button`
|
|
2
2
|
border-radius: 50%;
|
|
3
3
|
padding: 0;
|
|
4
|
-
outline-offset: ${
|
|
4
|
+
outline-offset: ${t.x_small};
|
|
5
5
|
background: none;
|
|
6
6
|
cursor: pointer;
|
|
7
|
-
`,l=
|
|
8
|
-
padding: ${
|
|
7
|
+
`,l=e.div`
|
|
8
|
+
padding: ${t.medium} ${t.small} 0 ${t.small};
|
|
9
9
|
display: flex;
|
|
10
10
|
flex-direction: column;
|
|
11
11
|
align-items: center;
|
|
12
|
-
gap: ${
|
|
13
|
-
`,d=
|
|
12
|
+
gap: ${t.small};
|
|
13
|
+
`,d=e.div`
|
|
14
14
|
display: flex;
|
|
15
15
|
flex-direction: column;
|
|
16
16
|
align-items: center;
|
|
17
|
-
`,m=
|
|
17
|
+
`,m=e.section`
|
|
18
18
|
display: flex;
|
|
19
19
|
flex-wrap: wrap;
|
|
20
20
|
justify-content: center;
|
|
21
21
|
max-width: 350px;
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
22
|
+
max-height: 200px;
|
|
23
|
+
overflow-y: auto;
|
|
24
|
+
overflow-x: hidden;
|
|
25
|
+
gap: ${t.small};
|
|
26
|
+
margin-top: ${t.small};
|
|
27
|
+
`,g=e(r)`
|
|
28
|
+
background: ${a.ui.background__light.rgba};
|
|
29
|
+
border: 1px solid ${a.ui.background__medium.rgba};
|
|
30
|
+
color: ${a.text.static_icons__default.rgba};
|
|
31
|
+
`,c=e.div`
|
|
29
32
|
display: grid;
|
|
30
|
-
margin-top: ${
|
|
33
|
+
margin-top: ${t.x_large};
|
|
31
34
|
justify-content: center;
|
|
32
|
-
`,p=
|
|
35
|
+
`,p=e.button`
|
|
33
36
|
display: grid;
|
|
34
37
|
grid-template-columns: auto 1fr auto;
|
|
35
38
|
align-items: center;
|
|
36
|
-
gap: ${
|
|
39
|
+
gap: ${t.medium_small};
|
|
37
40
|
width: 100%;
|
|
38
|
-
padding: ${
|
|
41
|
+
padding: ${t.small};
|
|
39
42
|
border-radius: ${n.button.borderRadius};
|
|
40
|
-
background: ${
|
|
41
|
-
transition: background ${
|
|
43
|
+
background: ${a.ui.background__light.rgba};
|
|
44
|
+
transition: background ${o.transitionMS};
|
|
42
45
|
|
|
43
46
|
> span {
|
|
44
|
-
color: ${
|
|
47
|
+
color: ${a.interactive.primary__resting.rgba};
|
|
45
48
|
}
|
|
46
49
|
|
|
47
50
|
> svg {
|
|
48
|
-
fill: ${
|
|
51
|
+
fill: ${a.interactive.primary__resting.rgba};
|
|
49
52
|
}
|
|
50
53
|
|
|
51
54
|
&:hover {
|
|
52
|
-
background: ${
|
|
55
|
+
background: ${a.interactive.primary__hover_alt.rgba};
|
|
53
56
|
}
|
|
54
|
-
`;export{
|
|
57
|
+
`;export{c as ButtonWrapper,l as Container,p as OpenImpersonationMenuButton,s as ProfileButton,g as RoleChip,m as RolesContainer,d as TextContent};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsxs as r,jsx as o}from"react/jsx-runtime";import{createContext as t,useContext as i,useState as e}from"react";import{Icon as n,Typography as
|
|
1
|
+
import{jsxs as r,jsx as o}from"react/jsx-runtime";import{createContext as t,useContext as i,useState as e,useCallback as a}from"react";import{Icon as n,Typography as s,Snackbar as c,Button as d}from"@equinor/eds-core-react";import{close as l}from"@equinor/eds-icons";import{StyledSnackbar as h}from"./SnackbarProvider.styles.js";import{snackbarIcon as m}from"./SnackbarProvider.utils.js";import{useApiErrorSnackbar as u}from"./hooks/useApiErrorSnackbar.js";const v=t(void 0),b=()=>{const r=i(v);if(void 0===r)throw new Error("useSnackbar must be used within a SnackbarContextProvider");return r},p=({children:t,showAPIErrors:i=!0,...b})=>{const[p,k]=e(!1),[f,S]=e(void 0),[w,P]=e(b),[x,C]=e(),A=a(((r,o)=>{S("string"==typeof r?{text:r,variant:"info"}:r),P(o?.customProps??b),C(o?.action??void 0),k(!0)}),[b]);u({showAPIErrors:i,showSnackbar:A});const j=()=>{k(!1),w.onClose&&w.onClose()};return r(v.Provider,{value:{showSnackbar:A,setActionDisabledState:r=>{C((o=>o?{...o,disabled:r}:o))},hideSnackbar:()=>k(!1)},children:[t,r(h,{$variant:f?.variant,open:p,onClose:j,autoHideDuration:w.autoHideDuration,placement:w.placement,children:[f&&o(n,{data:m(f.variant)}),o(s,{variant:"body_short",children:f?.text}),x&&o(c.Action,{children:o(d,{disabled:x.disabled,variant:"ghost",onClick:x.handler,children:x.text})}),o(d,{variant:"ghost_icon",onClick:j,children:o(n,{data:l})})]})]})};export{p as SnackbarProvider,b as useSnackbar};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ShowSnackbar, ShowSnackbarSettings } from '../SnackbarProvider';
|
|
2
|
+
interface UseApiErrorSnackbarArgs {
|
|
3
|
+
showAPIErrors: boolean;
|
|
4
|
+
showSnackbar: (text: string | ShowSnackbar, props?: ShowSnackbarSettings) => void;
|
|
5
|
+
}
|
|
6
|
+
export declare function useApiErrorSnackbar({ showAPIErrors, showSnackbar, }: UseApiErrorSnackbarArgs): void;
|
|
7
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{useRef as r,useEffect as e}from"react";import{ApiError as t}from"@equinor/subsurface-app-management";import{useIsFetching as s,useQueryClient as o}from"@tanstack/react-query";function a({showAPIErrors:a,showSnackbar:n}){const c=s()>0,u=o(),i=u.getQueryCache().findAll({predicate:r=>null!==r.state.error}),f=r([]);e((()=>{if(a&&!c){const r=i.filter((r=>!f.current.includes(r.queryHash)));for(const e of r){f.current.push(e.queryHash);const r=e.state.error;if(r instanceof t){let e=r.message;"userMessage"in r.body&&(e=r.body.userMessage),n({text:`${r.status}: ${e}`,variant:"error"})}}}}),[i,c,u,a,n])}export{a as useApiErrorSnackbar};
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{useRef as r,useEffect as e}from"react";import{ApiError as t}from"@equinor/subsurface-app-management";import{useQueryClient as s}from"@tanstack/react-query";import{useSnackbar as o}from"./SnackbarProvider.js";const a=({children:a})=>{const n=s(),{showSnackbar:i}=o(),u=r(!1);return e((()=>{if(!u.current){u.current=!0;const r=n.getDefaultOptions();n.setDefaultOptions({...r,queries:{throwOnError:r=>{if(r instanceof t){let e=r.message;"userMessage"in r.body&&(e=r.body.userMessage),i({text:`${r.status}: ${e}`,variant:"error"})}return!1}},mutations:{throwOnError:r=>{if(r instanceof t){let e=r.message;"userMessage"in r.body&&(e=r.body.userMessage),i({text:`${r.status}: ${e}`,variant:"error"})}return!1}}})}}),[n,i]),a};export{a as APIErrorSnackbar};
|