@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.
@@ -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,..._})=>{const[A,D]=r("");i((()=>{f||(async t=>{const e=await w(t);D(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&&!R&&x(y.name)?e(p,{children:e("img",{src:A,alt:` ${y.name}`})}):C&&!R?e(p,{children:e(n,{data:k(y.name)})}):t(c,{children:[e(h,{variant:_.indeterminate||R?"indeterminate":"determinate",value:_.isDone||_.indeterminate?void 0:_.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,R,E,A,y.name,_]);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})}),!R&&e(u,{"data-testid":"attachment-delete-button",onClick:T,children:e(n,{color:S.text.static_icons__tertiary.rgba,data:l})})]})};export{y as default};
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,a]=o(!1),l=r((()=>!!(n.isError??void 0===n.isDone)||n.isDone),[n.isError,n.isDone]),m=async()=>{!l&&n.onCancel?n.onCancel():(a(!0),await n.onDelete(),a(!1))};return n.compact?e(t,{...n,isDeleting:s,showCompleteState:l,handleOnClick:m}):e(i,{...n,isDeleting:s,showCompleteState:l,handleOnClick:m})};export{n as FileProgress};
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: () => Promise<void> | void;
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 z,RegularFileProgressDetails as _}from"./RegularFileProgress.styles.js";const f=({onRetry:f,file:x,customLoadingText:j,customCompleteText:y,isError:C,fullErrorText:E,showCompleteState:F,handleOnClick:T,isDeleting:b,...P})=>{const R=i((()=>{if(!x?.size||P.isDone||P.indeterminate||void 0===P.progressPercent)return 1;const e=x.size/100*P.progressPercent;return p({inputFormat:"B",size:e,decimals:1})}),[x?.size,P]),k=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.danger__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:[r(n,b?{variant:"ghost_icon",children:r(s,{size:24})}:{variant:"ghost_icon",onClick:T,children:r(t,{data:F?c:l,color:d.text.static_icons__tertiary.rgba,size:24})}),C&&f&&r(n,{variant:"ghost_icon",onClick:f,children:r(t,{data:m,color:d.text.static_icons__tertiary.rgba,size:24})})]})]}),r(g,{children:!F&&!P.isDone&&r(z,{variant:P.indeterminate?"indeterminate":"determinate",value:P.indeterminate?void 0:P.progressPercent})}),e(_,{children:[r(o,{variant:"overline",children:k}),x?.size&&r(o,{variant:"overline",children:F?p({size:x.size,decimals:1,inputFormat:"B"}):`${R} of ${p({size:x.size,decimals:1,inputFormat:"B"})}`})]})]})]})};export{f as default};
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.ui.background__danger.rgba:i.ui.background__medium.rgba};
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 e}from"react";import{Progress as i,StarProgress as n,Scrim as a}from"@equinor/eds-core-react";import{colors as c}from"../../atoms/style/colors.js";import o from"styled-components";const s=o.div`
2
- width: 100vw;
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: 0;
7
- left: 0;
8
- justify-content: center;
9
- align-items: center;
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=o(i.Circular)`
9
+ `,p=s(e.Circular)`
10
+ padding: 2px;
14
11
  circle {
15
- stroke: ${c.interactive.primary__resting.rgba};
12
+ stroke: ${o.interactive.primary__resting.rgba};
16
13
  }
17
14
  circle:first-child {
18
- stroke: ${c.interactive.primary__hover_alt.rgba};
15
+ stroke: ${o.interactive.primary__hover_alt.rgba};
19
16
  }
20
- `,d=({variant:c="application",withScrim:o=!1,children:d})=>{const m=e((()=>{switch(c){case"dots":return r(i.Dots,{color:"primary","data-testid":`full-page-spinner-${c}`});case"circle":return r(p,{"data-testid":`full-page-spinner-${c}`});case"equinor":return r(n,{"data-testid":`full-page-spinner-${c}`});case"application":return r(p,{"data-testid":"app-icon-svg"})}}),[c]);return o?t(a,{open:!0,children:[m,d&&r(l,{children:d})]}):t(s,{children:[m,d&&r(l,{children:d})]})};export{d as FullPageSpinner};
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 t}from"../../../atoms/style/animation.js";import"../../../atoms/style/colors.js";import{spacings as o}from"../../../atoms/style/spacings.js";import a from"styled-components";const{colors:e,shape:n}=i,s=a.button`
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: ${o.x_small};
4
+ outline-offset: ${t.x_small};
5
5
  background: none;
6
6
  cursor: pointer;
7
- `,l=a.div`
8
- padding: ${o.medium} ${o.small} 0 ${o.small};
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: ${o.small};
13
- `,d=a.div`
12
+ gap: ${t.small};
13
+ `,d=e.div`
14
14
  display: flex;
15
15
  flex-direction: column;
16
16
  align-items: center;
17
- `,m=a.section`
17
+ `,m=e.section`
18
18
  display: flex;
19
19
  flex-wrap: wrap;
20
20
  justify-content: center;
21
21
  max-width: 350px;
22
- gap: ${o.small};
23
- margin-top: ${o.small};
24
- `,c=a(r)`
25
- background: ${e.ui.background__light.rgba};
26
- border: 1px solid ${e.ui.background__medium.rgba};
27
- color: ${e.text.static_icons__default.rgba};
28
- `,g=a.div`
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: ${o.x_large};
33
+ margin-top: ${t.x_large};
31
34
  justify-content: center;
32
- `,p=a.button`
35
+ `,p=e.button`
33
36
  display: grid;
34
37
  grid-template-columns: auto 1fr auto;
35
38
  align-items: center;
36
- gap: ${o.medium_small};
39
+ gap: ${t.medium_small};
37
40
  width: 100%;
38
- padding: ${o.small};
41
+ padding: ${t.small};
39
42
  border-radius: ${n.button.borderRadius};
40
- background: ${e.ui.background__light.rgba};
41
- transition: background ${t.transitionMS};
43
+ background: ${a.ui.background__light.rgba};
44
+ transition: background ${o.transitionMS};
42
45
 
43
46
  > span {
44
- color: ${e.interactive.primary__resting.rgba};
47
+ color: ${a.interactive.primary__resting.rgba};
45
48
  }
46
49
 
47
50
  > svg {
48
- fill: ${e.interactive.primary__resting.rgba};
51
+ fill: ${a.interactive.primary__resting.rgba};
49
52
  }
50
53
 
51
54
  &:hover {
52
- background: ${e.interactive.primary__hover_alt.rgba};
55
+ background: ${a.interactive.primary__hover_alt.rgba};
53
56
  }
54
- `;export{g as ButtonWrapper,l as Container,p as OpenImpersonationMenuButton,s as ProfileButton,c as RoleChip,m as RolesContainer,d as TextContent};
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 a,Snackbar as d,Button as s}from"@equinor/eds-core-react";import{close as c}from"@equinor/eds-icons";import{APIErrorSnackbar as l}from"./APIErrorSnackbar.js";import{StyledSnackbar as m}from"./SnackbarProvider.styles.js";import{snackbarIcon as h}from"./SnackbarProvider.utils.js";const v=t(void 0),u=()=>{const r=i(v);if(void 0===r)throw new Error("useSnackbar must be used within a SnackbarContextProvider");return r},b=({children:t,showAPIErrors:i=!0,...u})=>{const[b,p]=e(!1),[f,k]=e(void 0),[S,P]=e(u),[x,C]=e(),w=()=>{p(!1),S.onClose&&S.onClose()};return r(v.Provider,{value:{showSnackbar:(r,o)=>{k("string"==typeof r?{text:r,variant:"info"}:r),P(o?.customProps??u),C(o?.action??void 0),p(!0)},setActionDisabledState:r=>{C((o=>o?{...o,disabled:r}:o))},hideSnackbar:()=>p(!1)},children:[i?o(l,{children:t}):t,r(m,{$variant:f?.variant,open:b,onClose:w,autoHideDuration:S.autoHideDuration,placement:S.placement,children:[f&&o(n,{data:h(f.variant)}),o(a,{variant:"body_short",children:f?.text}),x&&o(d.Action,{children:o(s,{disabled:x.disabled,variant:"ghost",onClick:x.handler,children:x.text})}),o(s,{variant:"ghost_icon",onClick:w,children:o(n,{data:c})})]})]})};export{b as SnackbarProvider,u as useSnackbar};
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,6 +1,6 @@
1
1
  {
2
2
  "name": "@equinor/amplify-component-lib",
3
- "version": "9.5.3",
3
+ "version": "9.6.0",
4
4
  "description": "Frontend Typescript components for the Amplify team",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -1,6 +0,0 @@
1
- import { FC, ReactNode } from 'react';
2
- interface APIErrorSnackbarProps {
3
- children: ReactNode;
4
- }
5
- export declare const APIErrorSnackbar: FC<APIErrorSnackbarProps>;
6
- export {};
@@ -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};