@australiangreens/ag-internal-components 0.0.25 → 0.0.26
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/cjs/index.js +1 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/components/PageLayout/PageContainer.d.ts +1 -1
- package/dist/components/PageLayout/PageContainer.d.ts.map +1 -1
- package/dist/esm/index.js +43 -40
- package/dist/esm/index.js.map +1 -1
- package/dist/providers/SaladBar/index.d.ts +1 -0
- package/dist/providers/SaladBar/index.d.ts.map +1 -1
- package/dist/providers/SaladBar/testWrappers.d.ts +2 -0
- package/dist/providers/SaladBar/testWrappers.d.ts.map +1 -0
- package/package.json +4 -3
package/dist/cjs/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var Oe=Object.defineProperty,Be=Object.defineProperties;var _e=Object.getOwnPropertyDescriptors;var M=Object.getOwnPropertySymbols;var oe=Object.prototype.hasOwnProperty,ae=Object.prototype.propertyIsEnumerable;var K=(e,t,n)=>t in e?Oe(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,o=(e,t)=>{for(var n in t||(t={}))oe.call(t,n)&&K(e,n,t[n]);if(M)for(var n of M(t))ae.call(t,n)&&K(e,n,t[n]);return e},C=(e,t)=>Be(e,_e(t));var ie=(e,t)=>{var n={};for(var a in e)oe.call(e,a)&&t.indexOf(a)<0&&(n[a]=e[a]);if(e!=null&&M)for(var a of M(e))t.indexOf(a)<0&&ae.call(e,a)&&(n[a]=e[a]);return n};var se=(e,t,n)=>(K(e,typeof t!="symbol"?t+"":t,n),n);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react/jsx-runtime"),d=require("react"),Ie=require("@mui/material/Button"),Pe=require("@mui/material/Paper"),be=require("@mui/material/Typography"),w=require("@mui/material"),Ae=require("@mui/icons-material/ArrowForward"),Ee=require("@mui/icons-material/ArrowBack"),je=require("@mui/material/Drawer"),ke=require("@mui/material/Box"),Ne=require("@mui/material/IconButton"),De=require("@mui/material/Container"),P=require("@mui/material/styles"),Le=require("@mui/material/Snackbar"),qe=require("@mui/material/Alert"),Re=require("@mui/material/LinearProgress"),$e=require("@mui/material/CircularProgress"),Me=require("@australiangreens/ag-error"),u=e=>e&&e.__esModule?e:{default:e},He=u(Ie),ze=u(Pe),j=u(be),fe=u(Ae),ge=u(Ee),Ge=u(je),Ue=u(ke),le=u(Ne),We=u(De),Xe=u(Le),Qe=u(qe),Ve=u(Re),Ke=u($e);function Je({text:e}){const[t,n]=d.useState(0);return r.jsxs(r.Fragment,{children:[r.jsx(j.default,{variant:"h6",color:"inherit",component:"div",sx:{fontSize:"22px"},children:"Hello world"}),r.jsx(j.default,{variant:"caption",display:"block",children:r.jsx("span",{children:"Just ensuring MUI is working as planned as a peer dependency. v0.0.11"})}),r.jsx(He.default,{variant:"outlined",onClick:()=>n(a=>a+1),"aria-label":"Increment",children:"Hello I am a button"}),r.jsxs("p",{children:["This is some text: ",r.jsx("span",{children:e})]}),r.jsxs(ze.default,{children:["This number will incremember when button pressed: ",t]})]})}const Ye=24,Ze=64,F="TopBar",f={topStripe:`${F}-topStripe`,titleBar:`${F}-titleBar`,titleSlider:`${F}-titleSlider`,titleText:`${F}-titleText`,leftPanelButton:`${F}-leftPanelButton`,rightPanelButton:`${F}-leftPanelButton`},et=w.styled("div",{shouldForwardProp:e=>!["leftPanel","rightPanel"].includes(e),name:F})(({theme:e,leftPanel:t,rightPanel:n})=>{var a,l;return{width:"100%",[`& .${f.topStripe}`]:{width:"100%",height:`${Ye}px`,backgroundColor:e.palette.primary.main},[`& .${f.titleBar}`]:{backgroundColor:e.palette.primary.light,height:`${Ze}px`,padding:e.spacing(0,3),width:"100%"},[`& .${f.titleSlider}`]:o(o({height:"100%",display:"flex",alignItems:"center",color:"white",transition:e.transitions.create("margin",{easing:e.transitions.easing.sharp,duration:e.transitions.duration.leavingScreen}),[`& .${f.leftPanelButton}`]:{marginRight:e.spacing(2),flexGrow:0},[`& .${f.titleText}`]:{flexGrow:1},[`& .${f.rightPanelButton}`]:{flexGrow:0}},(t==null?void 0:t.open)&&{transition:e.transitions.create("margin",{easing:e.transitions.easing.easeOut,duration:e.transitions.duration.enteringScreen}),marginLeft:`${(a=t==null?void 0:t.width)!=null?a:0}px`}),(n==null?void 0:n.open)&&{transition:e.transitions.create("margin",{easing:e.transitions.easing.easeOut,duration:e.transitions.duration.enteringScreen}),marginRight:`${(l=n==null?void 0:n.width)!=null?l:0}px`})}});function tt({titleText:e="",leftPanel:t,rightPanel:n,"data-testid":a}){return r.jsxs(et,{leftPanel:t,rightPanel:n,"data-testid":a,children:[r.jsx("div",{className:f.topStripe}),r.jsx("div",{className:f.titleBar,children:r.jsxs(w.Box,{className:f.titleSlider,children:[t!==void 0&&!t.open&&t.showOpenArrow&&r.jsxs(w.IconButton,{className:f.leftPanelButton,color:"inherit","aria-label":"Open left side panel",onClick:t==null?void 0:t.onOpen,edge:"start",size:"large",children:[" ",r.jsx(fe.default,{})]}),r.jsx(j.default,{className:f.titleText,variant:"h6",noWrap:!0,children:e}),n!==void 0&&!n.open&&n.showOpenArrow&&r.jsxs(w.IconButton,{className:f.rightPanelButton,color:"inherit","aria-label":"Open right side panel",onClick:n==null?void 0:n.onOpen,edge:"end",size:"large",children:[" ",r.jsx(ge.default,{})]})]})})]})}const he=400,nt=w.styled(Ge.default,{shouldForwardProp:e=>!["width","debug","debugOpacity","navBarOpen","navBarWidthOpen","navBarWidthClosed"].includes(e),name:"SidePanelDrawer"})(({width:e,debugOpacity:t=!1,anchor:n,navBarOpen:a,navBarWidthOpen:l,navBarWidthClosed:m})=>({width:e,"& .MuiDrawer-paper":o(o({position:"absolute",width:e,boxSizing:"border-box",border:"unset",boxShadow:"0px 4px 5px rgba(0, 0, 0, 0.14), 0px 1px 10px rgba(0, 0, 0, 0.12), 0px 2px 4px rgba(0, 0, 0, 0.2)"},t&&{opacity:"50%"}),n==="left"&&o({marginLeft:`${m}px`},a&&{marginLeft:`${l}px`}))})),rt=w.styled(Ue.default,{shouldForwardProp:e=>!["anchor"].includes(e)})(({theme:e,anchor:t})=>C(o({display:"flex",alignItems:"center",padding:e.spacing(2)},e.mixins.toolbar),{justifyContent:t==="left"?"space-between":"flex-start",backgroundColor:e.palette.primary.light,height:"88px","&,*":{color:"white"}," .MuiTypography-root":{fontSize:"22px"}," .MuiButtonBase-root":{marginRight:t==="right"?e.spacing(2):0}}));function ce({children:e,anchor:t="left",open:n,onClose:a=()=>{},titleText:l="",width:m=he,showCloseArrow:x=!0,debugOpacity:c=!1,headerBoxProps:S={},onOpened:g,onClosed:p,"data-testid":T,navBarOpen:O=!1,navBarWidthOpen:v=0,navBarWidthClosed:B=0}){return r.jsxs(nt,{SlideProps:{onEntered:()=>g==null?void 0:g(),onExited:()=>p==null?void 0:p()},variant:"persistent",anchor:t,open:n,width:m,debugOpacity:c,"data-testid":T,navBarOpen:O,navBarWidthOpen:v,navBarWidthClosed:B,children:[r.jsx(rt,C(o({anchor:t},S),{children:t==="left"?r.jsxs(r.Fragment,{children:[r.jsx(j.default,{variant:"h6",color:"inherit",component:"div",children:l}),x&&r.jsxs(le.default,{onClick:a,size:"large","aria-label":"Close left side panel",children:[r.jsx(ge.default,{"data-testid":"arrowbackicon"})," "]})]}):r.jsxs(r.Fragment,{children:[x&&r.jsxs(le.default,{onClick:a,size:"large","aria-label":"Close right side panel",children:[r.jsx(fe.default,{})," "]}),r.jsx(j.default,{variant:"h6",color:"inherit",component:"div",children:l})]})})),e]})}const ot=w.styled("div",{shouldForwardProp:e=>!["leftPanel","rightPanel"].includes(e),name:"PanelAwareMargins"})(({theme:e,leftPanel:t,rightPanel:n})=>{var a,l;return o(o({transition:e.transitions.create("margin",{easing:e.transitions.easing.sharp,duration:e.transitions.duration.leavingScreen})},(t==null?void 0:t.open)&&{transition:e.transitions.create("margin",{easing:e.transitions.easing.easeOut,duration:e.transitions.duration.enteringScreen}),marginLeft:`${(a=t==null?void 0:t.width)!=null?a:0}px`}),(n==null?void 0:n.open)&&{transition:e.transitions.create("margin",{easing:e.transitions.easing.easeOut,duration:e.transitions.duration.enteringScreen}),marginRight:`${(l=n==null?void 0:n.width)!=null?l:0}px`})}),at=w.styled(We.default,{name:"PageContainer"})(({theme:e})=>({paddingTop:e.spacing(3),paddingBottom:e.spacing(3)})),J=!1,Y=!1,H={titleText:"",flavour:"push",width:he,arrowButtons:"both",startOpen:!1,open:void 0,onChangeOpen:void 0,content:r.jsx(r.Fragment,{}),onOpened:void 0,onClosed:void 0,dataTestId:void 0};function it({children:e,titleText:t="",leftPanel:n,rightPanel:a,sidePanelsAreMutuallyExclusive:l=!0,debugOpacity:m=!1,pageContainerProps:x,pageContentDataTestId:c,topBarDataTestId:S,navBarOpen:g,navBarWidthOpen:p,navBarWidthClosed:T}){const[O,v]=d.useState(J),[B,_]=d.useState(Y),[k,N]=d.useState(J),[G,h]=d.useState(Y),I=n!==void 0,b=a!==void 0,{titleText:D,content:s,flavour:i,open:A,onChangeOpen:Z,width:U,arrowButtons:L,startOpen:q,onOpened:we,onClosed:me,dataTestId:ve}=n?o(o({},H),n):o({},H),{titleText:ye,content:Ce,flavour:ee,open:W,onChangeOpen:te,width:X,arrowButtons:R,startOpen:$,onOpened:Fe,onClosed:Se,dataTestId:Te}=a?o(o({},H),a):o({},H);d.useEffect(()=>{q!==J&&(v(q),N(q))},[q]),d.useEffect(()=>{$!==Y&&(_($),h($))},[$]);const Q=A===void 0?O:A,V=W===void 0?B:W,ne=y=>{A===void 0&&(v(y),l&&b&&(y?(_(!1),h(B)):_(G))),Z&&Z(y)},re=y=>{W===void 0&&(_(y),l&&I&&(y?(v(!1),N(O)):v(k))),te&&te(y)};return r.jsxs(w.Box,{children:[I&&r.jsx(ce,{"data-testid":ve,anchor:"left",open:Q,onClose:()=>ne(!1),width:U,titleText:D,debugOpacity:m,showCloseArrow:L==="both"||L==="close",onOpened:we,onClosed:me,navBarOpen:g,navBarWidthOpen:p,navBarWidthClosed:T,children:s}),b&&r.jsx(ce,{"data-testid":Te,anchor:"right",open:V,onClose:()=>re(!1),width:X,titleText:ye,debugOpacity:m,showCloseArrow:R==="both"||R==="close",onOpened:Fe,onClosed:Se,navBarOpen:g,navBarWidthOpen:p,navBarWidthClosed:T,children:Ce}),r.jsx(tt,o(o({titleText:t,"data-testid":S},I&&i==="push"?{leftPanel:{open:Q,width:U,onOpen:()=>ne(!0),showOpenArrow:L==="both"||L==="open"}}:{}),b&&ee==="push"?{rightPanel:{open:V,width:X,onOpen:()=>re(!0),showOpenArrow:R==="both"||R==="open"}}:{})),r.jsx(ot,C(o(o({},i==="push"?{leftPanel:{open:Q,width:U}}:{}),ee==="push"?{rightPanel:{open:V,width:X}}:{}),{children:r.jsx(at,C(o({"data-testid":c},x),{children:e}))}))]})}const st=P.createTheme({palette:{primary:{main:"#007236",dark:"#005221",light:"#00A04E",contrastText:"#FFFFFF"},secondary:{main:"#662D91",dark:"#440E62",light:"#93268F",contrastText:"#FFFFFF"},error:{main:"#D32F2F",dark:"#C62828",light:"#EF5350"},info:{main:"#0288D1",dark:"#01579B",light:"#03A9F4"},success:{main:"#0288D1",dark:"#01579B",light:"#03A9F4"}},components:{MuiTextField:{defaultProps:{color:"secondary"}},MuiToggleButtonGroup:{defaultProps:{color:"secondary"}},MuiCheckbox:{defaultProps:{color:"secondary"}},MuiSelect:{defaultProps:{color:"secondary"}},MuiSwitch:{defaultProps:{color:"secondary"}},MuiFormControl:{defaultProps:{color:"secondary"}},MuiMenuItem:{styleOverrides:{root:({theme:e})=>({"&.Mui-selected":{backgroundColor:P.alpha(e.palette.secondary.main,e.palette.action.selectedOpacity),"&:hover":{backgroundColor:P.alpha(e.palette.secondary.main,e.palette.action.selectedOpacity)},"&.Mui-focusVisible":{backgroundColor:P.alpha(e.palette.secondary.main,e.palette.action.focusOpacity)}}})}}},typography:{explainer:{fontSize:"14px",marginBlockStart:"1em"},h3:{fontSize:"1rem",fontWeight:700}}}),lt=P.createTheme({palette:{primary:{dark:"#00A651",light:"#A3D39C",main:"#007236",contrastText:"#FFF"},warning:{main:"#F5871F",light:"#FCC589",dark:"#A2590A",contrastText:"#FFF"},secondary:{main:"#662D91",light:"#BD8CBF",dark:"#440E62",contrastText:"#FFF"},error:{main:"#D43C95",light:"#8F2064",dark:"#F9CDE0",contrastText:"#FFF"},info:{main:"#00A88D",light:"#ADDCCF",dark:"#005243",contrastText:"#FFF"},success:{main:"#00A651",light:"#A3D39C",dark:"#007236",contrastText:"#FFF"}},typography:{explainer:{fontSize:"14px",marginBlockStart:"1em"}}});function ct({name:e="internal",children:t}){const n=e==="internal"?st:e==="fed21"?lt:void 0;return r.jsx(P.ThemeProvider,{theme:n,children:t})}class z extends Me.AgError{}se(z,"errorName","ContextError");const E=()=>{throw new z("SaladBarContext can only be used in a child of a <SaladBarProvider>")},dt=e=>{throw new z("SaladBarContext can only be used in a child of a <SaladBarProvider>")},ut={enqueueNotification:E,enqueueSuccessNotification:E,enqueueInfoNotification:E,enqueueWarningNotification:E,enqueueErrorNotification:E,removeNotification:dt},xe=d.createContext(ut),pt={autoHideDuration:6e3,anchorOrigin:{vertical:"top",horizontal:"center"},disableWindowBlurListener:!1},ft={shouldClose:(e,t)=>t!=="clickaway"},de={message:"",severity:"info",variant:"standard",progressIndicator:void 0},ue=100,pe=2e3,gt=2e3,ht=(()=>{let e=0;return()=>(e+=1,e)})(),xt={borderBottomLeftRadius:"0px",borderBottomRightRadius:"0px"};function wt(a){var l=a,{children:e,shouldClose:t=ft.shouldClose}=l,n=ie(l,["children","shouldClose"]);var D;const[m,x]=d.useState(!1),c=d.useRef([]),S=d.useRef(Date.now()),g=d.useRef(0),p=(s={})=>{g.current+=1,c.current.length>=ue&&Date.now()-S.current>=pe&&(S.current=Date.now(),console.error(`SaladBarProvider: MAX_QUEUE_LENGTH (${ue}) hit ${g.current} times in last ${pe}ms)`),g.current=0);const i=o(C(o({},de),{key:ht()}),s);return c.current.push(i),c.current.length===1&&x(!0),i.key},T=(s="",i={})=>p(o({message:s,severity:"success"},i)),O=(s="",i={})=>p(o({message:s,severity:"info"},i)),v=(s="",i={})=>p(o({message:s,severity:"warning"},i)),B=(s="",i={})=>p(o({message:s,severity:"error"},i)),_=s=>{const i=c.current.findIndex(A=>A.key===s);if(i!==-1)return i===0?(x(!1),c.current[0]):c.current.splice(i,1)},k=(s,i)=>{t(s,i)&&x(!1)},N=()=>{},G=()=>{c.current.shift(),c.current.length>0&&x(!0)},h=(D=c.current[0])!=null?D:o({},de),I={};"autoHideDuration"in h&&(I.autoHideDuration=h.autoHideDuration);const b=o(o({},pt),n);return r.jsxs(xe.Provider,{value:{enqueueNotification:p,enqueueSuccessNotification:T,enqueueInfoNotification:O,enqueueWarningNotification:v,enqueueErrorNotification:B,removeNotification:_},children:[e,r.jsx(Xe.default,C(o(o({},b),I),{open:m,onClose:k,TransitionProps:{onExited:G,onExit:N},sx:{zIndex:gt},children:r.jsxs("div",{children:[r.jsx(Qe.default,{onClose:s=>k(s,"closeAlert"),severity:h.severity,variant:"filled",icon:h.progressIndicator==="circular"?r.jsx(Ke.default,{size:"1em"}):void 0,style:h.progressIndicator==="linear"?xt:void 0,children:h.message}),h.progressIndicator==="linear"&&r.jsx(Ve.default,{color:"primary"})]})}))]})}function mt(){return d.useContext(xe)}exports.AgThemeProvider=ct;exports.ContextError=z;exports.ExampleComponent=Je;exports.PageLayout=it;exports.SaladBarProvider=wt;exports.useSaladBar=mt;
|
|
1
|
+
"use strict";var Oe=Object.defineProperty,Pe=Object.defineProperties;var _e=Object.getOwnPropertyDescriptors;var M=Object.getOwnPropertySymbols;var oe=Object.prototype.hasOwnProperty,ae=Object.prototype.propertyIsEnumerable;var K=(e,t,n)=>t in e?Oe(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,o=(e,t)=>{for(var n in t||(t={}))oe.call(t,n)&&K(e,n,t[n]);if(M)for(var n of M(t))ae.call(t,n)&&K(e,n,t[n]);return e},S=(e,t)=>Pe(e,_e(t));var ie=(e,t)=>{var n={};for(var a in e)oe.call(e,a)&&t.indexOf(a)<0&&(n[a]=e[a]);if(e!=null&&M)for(var a of M(e))t.indexOf(a)<0&&ae.call(e,a)&&(n[a]=e[a]);return n};var se=(e,t,n)=>(K(e,typeof t!="symbol"?t+"":t,n),n);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react/jsx-runtime"),d=require("react"),Ie=require("@mui/material/Button"),be=require("@mui/material/Paper"),Ae=require("@mui/material/Typography"),w=require("@mui/material"),Ee=require("@mui/icons-material/ArrowForward"),je=require("@mui/icons-material/ArrowBack"),ke=require("@mui/material/Drawer"),Ne=require("@mui/material/Box"),De=require("@mui/material/IconButton"),qe=require("@mui/material/Container"),I=require("@mui/material/styles"),Le=require("@mui/material/Snackbar"),Re=require("@mui/material/Alert"),$e=require("@mui/material/LinearProgress"),Me=require("@mui/material/CircularProgress"),He=require("@australiangreens/ag-error"),ze=require("souvlaki"),u=e=>e&&e.__esModule?e:{default:e},Ge=u(Ie),Ue=u(be),j=u(Ae),fe=u(Ee),ge=u(je),We=u(ke),Xe=u(Ne),le=u(De),Qe=u(qe),Ve=u(Le),Ke=u(Re),Je=u($e),Ye=u(Me);function Ze({text:e}){const[t,n]=d.useState(0);return r.jsxs(r.Fragment,{children:[r.jsx(j.default,{variant:"h6",color:"inherit",component:"div",sx:{fontSize:"22px"},children:"Hello world"}),r.jsx(j.default,{variant:"caption",display:"block",children:r.jsx("span",{children:"Just ensuring MUI is working as planned as a peer dependency. v0.0.11"})}),r.jsx(Ge.default,{variant:"outlined",onClick:()=>n(a=>a+1),"aria-label":"Increment",children:"Hello I am a button"}),r.jsxs("p",{children:["This is some text: ",r.jsx("span",{children:e})]}),r.jsxs(Ue.default,{children:["This number will incremember when button pressed: ",t]})]})}const et=24,tt=64,C="TopBar",f={topStripe:`${C}-topStripe`,titleBar:`${C}-titleBar`,titleSlider:`${C}-titleSlider`,titleText:`${C}-titleText`,leftPanelButton:`${C}-leftPanelButton`,rightPanelButton:`${C}-leftPanelButton`},nt=w.styled("div",{shouldForwardProp:e=>!["leftPanel","rightPanel"].includes(e),name:C})(({theme:e,leftPanel:t,rightPanel:n})=>{var a,l;return{width:"100%",[`& .${f.topStripe}`]:{width:"100%",height:`${et}px`,backgroundColor:e.palette.primary.main},[`& .${f.titleBar}`]:{backgroundColor:e.palette.primary.light,height:`${tt}px`,padding:e.spacing(0,3),width:"100%"},[`& .${f.titleSlider}`]:o(o({height:"100%",display:"flex",alignItems:"center",color:"white",transition:e.transitions.create("margin",{easing:e.transitions.easing.sharp,duration:e.transitions.duration.leavingScreen}),[`& .${f.leftPanelButton}`]:{marginRight:e.spacing(2),flexGrow:0},[`& .${f.titleText}`]:{flexGrow:1},[`& .${f.rightPanelButton}`]:{flexGrow:0}},(t==null?void 0:t.open)&&{transition:e.transitions.create("margin",{easing:e.transitions.easing.easeOut,duration:e.transitions.duration.enteringScreen}),marginLeft:`${(a=t==null?void 0:t.width)!=null?a:0}px`}),(n==null?void 0:n.open)&&{transition:e.transitions.create("margin",{easing:e.transitions.easing.easeOut,duration:e.transitions.duration.enteringScreen}),marginRight:`${(l=n==null?void 0:n.width)!=null?l:0}px`})}});function rt({titleText:e="",leftPanel:t,rightPanel:n,"data-testid":a}){return r.jsxs(nt,{leftPanel:t,rightPanel:n,"data-testid":a,children:[r.jsx("div",{className:f.topStripe}),r.jsx("div",{className:f.titleBar,children:r.jsxs(w.Box,{className:f.titleSlider,children:[t!==void 0&&!t.open&&t.showOpenArrow&&r.jsxs(w.IconButton,{className:f.leftPanelButton,color:"inherit","aria-label":"Open left side panel",onClick:t==null?void 0:t.onOpen,edge:"start",size:"large",children:[" ",r.jsx(fe.default,{})]}),r.jsx(j.default,{className:f.titleText,variant:"h6",noWrap:!0,children:e}),n!==void 0&&!n.open&&n.showOpenArrow&&r.jsxs(w.IconButton,{className:f.rightPanelButton,color:"inherit","aria-label":"Open right side panel",onClick:n==null?void 0:n.onOpen,edge:"end",size:"large",children:[" ",r.jsx(ge.default,{})]})]})})]})}const he=400,ot=w.styled(We.default,{shouldForwardProp:e=>!["width","debug","debugOpacity","navBarOpen","navBarWidthOpen","navBarWidthClosed"].includes(e),name:"SidePanelDrawer"})(({width:e,debugOpacity:t=!1,anchor:n,navBarOpen:a,navBarWidthOpen:l,navBarWidthClosed:v})=>({width:e,"& .MuiDrawer-paper":o(o({position:"absolute",width:e,boxSizing:"border-box",border:"unset",boxShadow:"0px 4px 5px rgba(0, 0, 0, 0.14), 0px 1px 10px rgba(0, 0, 0, 0.12), 0px 2px 4px rgba(0, 0, 0, 0.2)"},t&&{opacity:"50%"}),n==="left"&&o({marginLeft:`${v}px`},a&&{marginLeft:`${l}px`}))})),at=w.styled(Xe.default,{shouldForwardProp:e=>!["anchor"].includes(e)})(({theme:e,anchor:t})=>S(o({display:"flex",alignItems:"center",padding:e.spacing(2)},e.mixins.toolbar),{justifyContent:t==="left"?"space-between":"flex-start",backgroundColor:e.palette.primary.light,height:"88px","&,*":{color:"white"}," .MuiTypography-root":{fontSize:"22px"}," .MuiButtonBase-root":{marginRight:t==="right"?e.spacing(2):0}}));function ce({children:e,anchor:t="left",open:n,onClose:a=()=>{},titleText:l="",width:v=he,showCloseArrow:x=!0,debugOpacity:c=!1,headerBoxProps:F={},onOpened:g,onClosed:p,"data-testid":T,navBarOpen:B=!1,navBarWidthOpen:m=0,navBarWidthClosed:O=0}){return r.jsxs(ot,{SlideProps:{onEntered:()=>g==null?void 0:g(),onExited:()=>p==null?void 0:p()},variant:"persistent",anchor:t,open:n,width:v,debugOpacity:c,"data-testid":T,navBarOpen:B,navBarWidthOpen:m,navBarWidthClosed:O,children:[r.jsx(at,S(o({anchor:t},F),{children:t==="left"?r.jsxs(r.Fragment,{children:[r.jsx(j.default,{variant:"h6",color:"inherit",component:"div",children:l}),x&&r.jsxs(le.default,{onClick:a,size:"large","aria-label":"Close left side panel",children:[r.jsx(ge.default,{"data-testid":"arrowbackicon"})," "]})]}):r.jsxs(r.Fragment,{children:[x&&r.jsxs(le.default,{onClick:a,size:"large","aria-label":"Close right side panel",children:[r.jsx(fe.default,{})," "]}),r.jsx(j.default,{variant:"h6",color:"inherit",component:"div",children:l})]})})),e]})}const it=w.styled("div",{shouldForwardProp:e=>!["leftPanel","rightPanel"].includes(e),name:"PanelAwareMargins"})(({theme:e,leftPanel:t,rightPanel:n})=>{var a,l;return o(o({transition:e.transitions.create("margin",{easing:e.transitions.easing.sharp,duration:e.transitions.duration.leavingScreen})},(t==null?void 0:t.open)&&{transition:e.transitions.create("margin",{easing:e.transitions.easing.easeOut,duration:e.transitions.duration.enteringScreen}),marginLeft:`${(a=t==null?void 0:t.width)!=null?a:0}px`}),(n==null?void 0:n.open)&&{transition:e.transitions.create("margin",{easing:e.transitions.easing.easeOut,duration:e.transitions.duration.enteringScreen}),marginRight:`${(l=n==null?void 0:n.width)!=null?l:0}px`})}),st=w.styled(Qe.default,{name:"PageContainer"})(({theme:e})=>({paddingTop:e.spacing(3),paddingBottom:e.spacing(3)})),J=!1,Y=!1,H={titleText:"",flavour:"push",width:he,arrowButtons:"both",startOpen:!1,open:void 0,onChangeOpen:void 0,content:r.jsx(r.Fragment,{}),onOpened:void 0,onClosed:void 0,dataTestId:void 0};function lt({children:e,titleText:t="",leftPanel:n,rightPanel:a,sidePanelsAreMutuallyExclusive:l=!0,debugOpacity:v=!1,pageContainerProps:x,pageContentDataTestId:c,topBarDataTestId:F,navBarOpen:g,navBarWidthOpen:p,navBarWidthClosed:T}){const[B,m]=d.useState(J),[O,P]=d.useState(Y),[k,N]=d.useState(J),[G,h]=d.useState(Y),_=n!==void 0,b=a!==void 0,{titleText:D,content:s,flavour:i,open:A,onChangeOpen:Z,width:U,arrowButtons:q,startOpen:L,onOpened:ve,onClosed:me,dataTestId:ye}=n?o(o({},H),n):o({},H),{titleText:Se,content:Ce,flavour:ee,open:W,onChangeOpen:te,width:X,arrowButtons:R,startOpen:$,onOpened:Fe,onClosed:Te,dataTestId:Be}=a?o(o({},H),a):o({},H);d.useEffect(()=>{L!==J&&(m(L),N(L))},[L]),d.useEffect(()=>{$!==Y&&(P($),h($))},[$]);const Q=A===void 0?B:A,V=W===void 0?O:W,ne=y=>{A===void 0&&(m(y),l&&b&&(y?(P(!1),h(O)):P(G))),Z&&Z(y)},re=y=>{W===void 0&&(P(y),l&&_&&(y?(m(!1),N(B)):m(k))),te&&te(y)};return r.jsxs(w.Box,{children:[_&&r.jsx(ce,{"data-testid":ye,anchor:"left",open:Q,onClose:()=>ne(!1),width:U,titleText:D,debugOpacity:v,showCloseArrow:q==="both"||q==="close",onOpened:ve,onClosed:me,navBarOpen:g,navBarWidthOpen:p,navBarWidthClosed:T,children:s}),b&&r.jsx(ce,{"data-testid":Be,anchor:"right",open:V,onClose:()=>re(!1),width:X,titleText:Se,debugOpacity:v,showCloseArrow:R==="both"||R==="close",onOpened:Fe,onClosed:Te,navBarOpen:g,navBarWidthOpen:p,navBarWidthClosed:T,children:Ce}),r.jsx(rt,o(o({titleText:t,"data-testid":F},_&&i==="push"?{leftPanel:{open:Q,width:U,onOpen:()=>ne(!0),showOpenArrow:q==="both"||q==="open"}}:{}),b&&ee==="push"?{rightPanel:{open:V,width:X,onOpen:()=>re(!0),showOpenArrow:R==="both"||R==="open"}}:{})),r.jsx(it,S(o(o({},i==="push"?{leftPanel:{open:Q,width:U}}:{}),ee==="push"?{rightPanel:{open:V,width:X}}:{}),{children:r.jsx(st,S(o({"data-testid":c},x),{children:e}))}))]})}const ct=I.createTheme({palette:{primary:{main:"#007236",dark:"#005221",light:"#00A04E",contrastText:"#FFFFFF"},secondary:{main:"#662D91",dark:"#440E62",light:"#93268F",contrastText:"#FFFFFF"},error:{main:"#D32F2F",dark:"#C62828",light:"#EF5350"},info:{main:"#0288D1",dark:"#01579B",light:"#03A9F4"},success:{main:"#0288D1",dark:"#01579B",light:"#03A9F4"}},components:{MuiTextField:{defaultProps:{color:"secondary"}},MuiToggleButtonGroup:{defaultProps:{color:"secondary"}},MuiCheckbox:{defaultProps:{color:"secondary"}},MuiSelect:{defaultProps:{color:"secondary"}},MuiSwitch:{defaultProps:{color:"secondary"}},MuiFormControl:{defaultProps:{color:"secondary"}},MuiMenuItem:{styleOverrides:{root:({theme:e})=>({"&.Mui-selected":{backgroundColor:I.alpha(e.palette.secondary.main,e.palette.action.selectedOpacity),"&:hover":{backgroundColor:I.alpha(e.palette.secondary.main,e.palette.action.selectedOpacity)},"&.Mui-focusVisible":{backgroundColor:I.alpha(e.palette.secondary.main,e.palette.action.focusOpacity)}}})}}},typography:{explainer:{fontSize:"14px",marginBlockStart:"1em"},h3:{fontSize:"1rem",fontWeight:700}}}),dt=I.createTheme({palette:{primary:{dark:"#00A651",light:"#A3D39C",main:"#007236",contrastText:"#FFF"},warning:{main:"#F5871F",light:"#FCC589",dark:"#A2590A",contrastText:"#FFF"},secondary:{main:"#662D91",light:"#BD8CBF",dark:"#440E62",contrastText:"#FFF"},error:{main:"#D43C95",light:"#8F2064",dark:"#F9CDE0",contrastText:"#FFF"},info:{main:"#00A88D",light:"#ADDCCF",dark:"#005243",contrastText:"#FFF"},success:{main:"#00A651",light:"#A3D39C",dark:"#007236",contrastText:"#FFF"}},typography:{explainer:{fontSize:"14px",marginBlockStart:"1em"}}});function ut({name:e="internal",children:t}){const n=e==="internal"?ct:e==="fed21"?dt:void 0;return r.jsx(I.ThemeProvider,{theme:n,children:t})}class z extends He.AgError{}se(z,"errorName","ContextError");const E=()=>{throw new z("SaladBarContext can only be used in a child of a <SaladBarProvider>")},pt=e=>{throw new z("SaladBarContext can only be used in a child of a <SaladBarProvider>")},ft={enqueueNotification:E,enqueueSuccessNotification:E,enqueueInfoNotification:E,enqueueWarningNotification:E,enqueueErrorNotification:E,removeNotification:pt},xe=d.createContext(ft),gt={autoHideDuration:6e3,anchorOrigin:{vertical:"top",horizontal:"center"},disableWindowBlurListener:!1},ht={shouldClose:(e,t)=>t!=="clickaway"},de={message:"",severity:"info",variant:"standard",progressIndicator:void 0},ue=100,pe=2e3,xt=2e3,wt=(()=>{let e=0;return()=>(e+=1,e)})(),vt={borderBottomLeftRadius:"0px",borderBottomRightRadius:"0px"};function we(a){var l=a,{children:e,shouldClose:t=ht.shouldClose}=l,n=ie(l,["children","shouldClose"]);var D;const[v,x]=d.useState(!1),c=d.useRef([]),F=d.useRef(Date.now()),g=d.useRef(0),p=(s={})=>{g.current+=1,c.current.length>=ue&&Date.now()-F.current>=pe&&(F.current=Date.now(),console.error(`SaladBarProvider: MAX_QUEUE_LENGTH (${ue}) hit ${g.current} times in last ${pe}ms)`),g.current=0);const i=o(S(o({},de),{key:wt()}),s);return c.current.push(i),c.current.length===1&&x(!0),i.key},T=(s="",i={})=>p(o({message:s,severity:"success"},i)),B=(s="",i={})=>p(o({message:s,severity:"info"},i)),m=(s="",i={})=>p(o({message:s,severity:"warning"},i)),O=(s="",i={})=>p(o({message:s,severity:"error"},i)),P=s=>{const i=c.current.findIndex(A=>A.key===s);if(i!==-1)return i===0?(x(!1),c.current[0]):c.current.splice(i,1)},k=(s,i)=>{t(s,i)&&x(!1)},N=()=>{},G=()=>{c.current.shift(),c.current.length>0&&x(!0)},h=(D=c.current[0])!=null?D:o({},de),_={};"autoHideDuration"in h&&(_.autoHideDuration=h.autoHideDuration);const b=o(o({},gt),n);return r.jsxs(xe.Provider,{value:{enqueueNotification:p,enqueueSuccessNotification:T,enqueueInfoNotification:B,enqueueWarningNotification:m,enqueueErrorNotification:O,removeNotification:P},children:[e,r.jsx(Ve.default,S(o(o({},b),_),{open:v,onClose:k,TransitionProps:{onExited:G,onExit:N},sx:{zIndex:xt},children:r.jsxs("div",{children:[r.jsx(Ke.default,{onClose:s=>k(s,"closeAlert"),severity:h.severity,variant:"filled",icon:h.progressIndicator==="circular"?r.jsx(Ye.default,{size:"1em"}):void 0,style:h.progressIndicator==="linear"?vt:void 0,children:h.message}),h.progressIndicator==="linear"&&r.jsx(Je.default,{color:"primary"})]})}))]})}function mt(){return d.useContext(xe)}const yt=ze.createHelper(()=>({children:e})=>r.jsx(we,{children:e}));exports.AgThemeProvider=ut;exports.ContextError=z;exports.ExampleComponent=Ze;exports.PageLayout=lt;exports.SaladBarProvider=we;exports.useSaladBar=mt;exports.withSaladBarProvider=yt;
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/components/ExampleComponent/index.tsx","../../src/components/PageLayout/TopBar.tsx","../../src/components/PageLayout/SidePanel.tsx","../../src/components/PageLayout/PanelAwareMargins.tsx","../../src/components/PageLayout/PageContainer.tsx","../../src/components/PageLayout/index.tsx","../../src/providers/AgTheme/themes.ts","../../src/providers/AgTheme/index.tsx","../../src/errors/ContextError.ts","../../src/providers/SaladBar/SaladBarContext.ts","../../src/providers/SaladBar/defaults.ts","../../src/providers/SaladBar/SaladBarProvider.tsx","../../src/providers/SaladBar/useSaladBar.ts"],"sourcesContent":["import { useState } from 'react';\nimport Button from '@mui/material/Button';\nimport Paper from '@mui/material/Paper';\nimport Typography from '@mui/material/Typography';\n\nexport interface ExampleComponentProps {\n text: string;\n}\n\nexport default function ExampleComponent({ text }: ExampleComponentProps) {\n const [num, setNum] = useState(0);\n\n return (\n <>\n <Typography variant=\"h6\" color=\"inherit\" component=\"div\" sx={{ fontSize: '22px' }}>\n Hello world\n </Typography>\n\n <Typography variant=\"caption\" display=\"block\">\n <span>Just ensuring MUI is working as planned as a peer dependency. v0.0.11</span>\n </Typography>\n <Button\n variant=\"outlined\"\n onClick={() => setNum((oldNum) => oldNum + 1)}\n aria-label=\"Increment\"\n >\n Hello I am a button\n </Button>\n <p>\n This is some text: <span>{text}</span>\n </p>\n <Paper>This number will incremember when button pressed: {num}</Paper>\n </>\n );\n}\n","import { Box, IconButton, styled } from '@mui/material';\nimport Typography from '@mui/material/Typography';\nimport ArrowForwardIcon from '@mui/icons-material/ArrowForward';\nimport ArrowBackIcon from '@mui/icons-material/ArrowBack';\n\nconst TOP_STRIPE_HEIGHT = 24;\nconst TITLE_BAR_HEIGHT = 64;\n\nconst PREFIX = 'TopBar';\n\ninterface PanelProps {\n open: boolean;\n width: number;\n showOpenArrow: boolean;\n\n /** Called when the arrow button is pressed (if showOpenButton is true) */\n onOpen?: () => void;\n\n showOpenButton?: boolean;\n}\n\nexport interface TopBarProps {\n titleText?: string;\n leftPanel?: PanelProps;\n rightPanel?: PanelProps;\n 'data-testid'?: string;\n}\n\nexport const classes = {\n topStripe: `${PREFIX}-topStripe`,\n titleBar: `${PREFIX}-titleBar`,\n titleSlider: `${PREFIX}-titleSlider`,\n\n titleText: `${PREFIX}-titleText`,\n leftPanelButton: `${PREFIX}-leftPanelButton`,\n rightPanelButton: `${PREFIX}-leftPanelButton`,\n};\n\ninterface RootProps {\n leftPanel?: PanelProps;\n rightPanel?: PanelProps;\n}\n\nconst Root = styled('div', {\n shouldForwardProp: (prop) => !(['leftPanel', 'rightPanel'] as Array<PropertyKey>).includes(prop),\n name: PREFIX,\n})<RootProps>(({ theme, leftPanel, rightPanel }) => ({\n width: '100%',\n\n [`& .${classes.topStripe}`]: {\n width: '100%',\n height: `${TOP_STRIPE_HEIGHT}px`,\n backgroundColor: theme.palette.primary.main,\n },\n\n [`& .${classes.titleBar}`]: {\n backgroundColor: theme.palette.primary.light,\n height: `${TITLE_BAR_HEIGHT}px`,\n padding: theme.spacing(0, 3),\n width: '100%',\n },\n\n [`& .${classes.titleSlider}`]: {\n height: '100%',\n display: 'flex',\n alignItems: 'center',\n color: 'white',\n\n transition: theme.transitions.create('margin', {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.leavingScreen,\n }),\n\n [`& .${classes.leftPanelButton}`]: {\n marginRight: theme.spacing(2),\n flexGrow: 0,\n },\n\n [`& .${classes.titleText}`]: {\n flexGrow: 1,\n },\n\n [`& .${classes.rightPanelButton}`]: {\n flexGrow: 0,\n },\n\n ...(leftPanel?.open && {\n transition: theme.transitions.create('margin', {\n easing: theme.transitions.easing.easeOut,\n duration: theme.transitions.duration.enteringScreen,\n }),\n marginLeft: `${leftPanel?.width ?? 0}px`,\n }),\n\n ...(rightPanel?.open && {\n transition: theme.transitions.create('margin', {\n easing: theme.transitions.easing.easeOut,\n duration: theme.transitions.duration.enteringScreen,\n }),\n marginRight: `${rightPanel?.width ?? 0}px`,\n }),\n },\n}));\n\n/**\n * Goes at the top of every page. Wasn't feeling creative in naming it.\n *\n * This differs from the typical appbar with a toolbar used in most MUI apps in\n * that it has to interact with a sliding side panel that is not the main\n * navbar.\n */\nexport default function TopBar({\n titleText = '',\n leftPanel,\n rightPanel,\n 'data-testid': dataTestId,\n}: TopBarProps) {\n return (\n <Root leftPanel={leftPanel} rightPanel={rightPanel} data-testid={dataTestId}>\n <div className={classes.topStripe} />\n <div className={classes.titleBar}>\n <Box className={classes.titleSlider}>\n {leftPanel !== undefined && !leftPanel.open && leftPanel.showOpenArrow && (\n <IconButton\n className={classes.leftPanelButton}\n color=\"inherit\"\n aria-label=\"Open left side panel\"\n onClick={leftPanel?.onOpen}\n edge=\"start\"\n size=\"large\"\n >\n {' '}\n <ArrowForwardIcon />\n </IconButton>\n )}\n\n <Typography className={classes.titleText} variant=\"h6\" noWrap>\n {titleText}\n </Typography>\n\n {rightPanel !== undefined && !rightPanel.open && rightPanel.showOpenArrow && (\n <IconButton\n className={classes.rightPanelButton}\n color=\"inherit\"\n aria-label=\"Open right side panel\"\n onClick={rightPanel?.onOpen}\n edge=\"end\"\n size=\"large\"\n >\n {' '}\n <ArrowBackIcon />\n </IconButton>\n )}\n </Box>\n </div>\n </Root>\n );\n}\n","import { PropsWithChildren } from 'react';\nimport ArrowBackIcon from '@mui/icons-material/ArrowBack';\nimport ArrowForwardIcon from '@mui/icons-material/ArrowForward';\nimport Drawer, { DrawerProps } from '@mui/material/Drawer';\nimport Box, { BoxProps } from '@mui/material/Box';\nimport Typography from '@mui/material/Typography';\nimport IconButton from '@mui/material/IconButton';\nimport { styled } from '@mui/material';\n\nexport const DEFAULT_PANEL_WIDTH = 400;\n\ninterface SidePanelDrawerProps extends DrawerProps {\n anchor: 'left' | 'right';\n width?: number;\n debugOpacity?: boolean;\n navBarOpen: boolean;\n navBarWidthOpen: number;\n navBarWidthClosed: number;\n}\n\nconst SidePanelDrawer = styled(Drawer, {\n shouldForwardProp: (prop) =>\n // Note we do want anchor to be forwarded to the Drawer component\n !(\n [\n 'width',\n 'debug',\n 'debugOpacity',\n 'navBarOpen',\n 'navBarWidthOpen',\n 'navBarWidthClosed',\n ] as Array<PropertyKey>\n ).includes(prop),\n name: 'SidePanelDrawer',\n})<SidePanelDrawerProps>(\n ({ width, debugOpacity = false, anchor, navBarOpen, navBarWidthOpen, navBarWidthClosed }) => ({\n width,\n\n '& .MuiDrawer-paper': {\n position: 'absolute',\n width,\n boxSizing: 'border-box',\n border: 'unset',\n boxShadow:\n '0px 4px 5px rgba(0, 0, 0, 0.14), 0px 1px 10px rgba(0, 0, 0, 0.12), 0px 2px 4px rgba(0, 0, 0, 0.2)',\n\n ...(debugOpacity && {\n opacity: '50%',\n }),\n\n ...(anchor === 'left' && {\n marginLeft: `${navBarWidthClosed}px`,\n ...(navBarOpen && {\n marginLeft: `${navBarWidthOpen}px`,\n }),\n }),\n },\n })\n);\n\ninterface DrawerHeaderBoxProps {\n anchor: 'left' | 'right';\n}\n\nconst DrawerHeaderBox = styled(Box, {\n shouldForwardProp: (prop) => !(['anchor'] as Array<PropertyKey>).includes(prop),\n})<DrawerHeaderBoxProps>(({ theme, anchor }) => ({\n display: 'flex',\n alignItems: 'center',\n padding: theme.spacing(2),\n ...theme.mixins.toolbar,\n justifyContent: anchor === 'left' ? 'space-between' : 'flex-start',\n backgroundColor: theme.palette.primary.light,\n height: '88px',\n\n '&,*': {\n color: 'white',\n },\n\n ' .MuiTypography-root': {\n fontSize: '22px',\n },\n\n ' .MuiButtonBase-root': {\n marginRight: anchor === 'right' ? theme.spacing(2) : 0,\n },\n}));\n\ntype SidePanelProps = PropsWithChildren<{\n open: boolean;\n anchor?: 'left' | 'right';\n onClose?: React.MouseEventHandler<HTMLElement>;\n titleText?: string;\n width?: number;\n showCloseArrow?: boolean;\n debugOpacity?: boolean;\n headerBoxProps?: BoxProps;\n onOpened?: () => void;\n onClosed?: () => void;\n 'data-testid'?: string;\n navBarOpen?: boolean;\n navBarWidthOpen?: number;\n navBarWidthClosed?: number;\n}>;\n\n/**\n * The SidePanel is designed to be used along with the TopBar component for a\n * consistent look and feel.\n */\nexport default function SidePanel({\n children,\n anchor = 'left',\n open,\n onClose = () => {},\n titleText = '',\n width = DEFAULT_PANEL_WIDTH,\n showCloseArrow = true,\n debugOpacity = false,\n headerBoxProps = {},\n onOpened,\n onClosed,\n 'data-testid': dataTestId,\n navBarOpen = false,\n navBarWidthOpen = 0,\n navBarWidthClosed = 0,\n}: SidePanelProps) {\n return (\n <SidePanelDrawer\n SlideProps={{\n onEntered: () => onOpened?.(),\n onExited: () => onClosed?.(),\n }}\n variant=\"persistent\"\n anchor={anchor}\n open={open}\n width={width}\n debugOpacity={debugOpacity}\n data-testid={dataTestId}\n navBarOpen={navBarOpen}\n navBarWidthOpen={navBarWidthOpen}\n navBarWidthClosed={navBarWidthClosed}\n >\n <DrawerHeaderBox anchor={anchor} {...headerBoxProps}>\n {/* Might be a cleaner way to do this, but it does the job */}\n {anchor === 'left' ? (\n <>\n <Typography variant=\"h6\" color=\"inherit\" component=\"div\">\n {titleText}\n </Typography>\n\n {showCloseArrow && (\n <IconButton onClick={onClose} size=\"large\" aria-label=\"Close left side panel\">\n <ArrowBackIcon data-testid=\"arrowbackicon\" />{' '}\n </IconButton>\n )}\n </>\n ) : (\n <>\n {showCloseArrow && (\n <IconButton onClick={onClose} size=\"large\" aria-label=\"Close right side panel\">\n <ArrowForwardIcon />{' '}\n </IconButton>\n )}\n\n <Typography variant=\"h6\" color=\"inherit\" component=\"div\">\n {titleText}\n </Typography>\n </>\n )}\n </DrawerHeaderBox>\n {children}\n </SidePanelDrawer>\n );\n}\n","import { styled } from '@mui/material';\n\ninterface PanelProps {\n width: number;\n open: boolean;\n}\n\ninterface PanelAwareMarginsProps {\n /** If the leftPanel prop is omitted but a left panel is still in use on the\n * page, it will slide over the top instead of the default pushing */\n leftPanel?: PanelProps;\n\n /** If the rightPanel prop is omitted but a right panel is still in use on the\n * page, it will slide over the top instead of the default pushing */\n rightPanel?: PanelProps;\n}\n\n/** With the optional leftPanel and rightPanel props providing state and width,\n * the children of of the PanelAwareMargins will looks like they is pushed aside\n * by the panels by transitioning the margins. */\nconst PanelAwareMargins = styled('div', {\n shouldForwardProp: (prop) => !(['leftPanel', 'rightPanel'] as Array<PropertyKey>).includes(prop),\n name: 'PanelAwareMargins',\n})<PanelAwareMarginsProps>(({ theme, leftPanel, rightPanel }) => ({\n transition: theme.transitions.create('margin', {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.leavingScreen,\n }),\n\n ...(leftPanel?.open && {\n transition: theme.transitions.create('margin', {\n easing: theme.transitions.easing.easeOut,\n duration: theme.transitions.duration.enteringScreen,\n }),\n marginLeft: `${leftPanel?.width ?? 0}px`,\n }),\n ...(rightPanel?.open && {\n transition: theme.transitions.create('margin', {\n easing: theme.transitions.easing.easeOut,\n duration: theme.transitions.duration.enteringScreen,\n }),\n marginRight: `${rightPanel?.width ?? 0}px`,\n }),\n}));\n\nexport default PanelAwareMargins;\n","import { styled } from '@mui/material';\nimport Container from '@mui/material/Container';\n\n/** Just a simple styled container applying our spacings*/\nconst PageContainer = styled(Container, {\n name: 'PageContainer',\n})(({ theme }) => ({\n // Horizontal padding comes from the Container's gutter\n paddingTop: theme.spacing(3),\n paddingBottom: theme.spacing(3),\n}));\n\nexport default PageContainer;\n","import { ComponentProps, PropsWithChildren, ReactNode, useEffect, useState } from 'react';\nimport { Box } from '@mui/material';\n\nimport TopBar from './TopBar';\nimport SidePanel, { DEFAULT_PANEL_WIDTH } from './SidePanel';\nimport PanelAwareMargins from './PanelAwareMargins';\nimport PageContainer from './PageContainer';\n\nconst INITIAL_LEFT_PANEL_OPEN = false;\nconst INITIAL_RIGHT_PANEL_OPEN = false;\n\nconst PANEL_DEFAULTS = {\n titleText: '',\n flavour: 'push',\n width: DEFAULT_PANEL_WIDTH,\n arrowButtons: 'both',\n startOpen: false,\n open: undefined,\n onChangeOpen: undefined,\n content: <></>,\n onOpened: undefined,\n onClosed: undefined,\n dataTestId: undefined,\n};\n\ninterface SidePanelProps {\n titleText?: string;\n content?: ReactNode;\n flavour?: 'push' | 'overlay';\n arrowButtons?: 'open' | 'close' | 'both' | 'none';\n width?: number;\n startOpen?: boolean;\n\n /** Use this and onChangeOpen if you want to use component as a controlled component */\n open?: boolean;\n onChangeOpen?: (open: boolean) => void;\n\n /** Called when the sliding transition to open has finished */\n onOpened?: () => void;\n\n /** Called when the sliding transition to open has finished */\n onClosed?: () => void;\n\n dataTestId?: string;\n}\n\ninterface BasePageLayoutProps {\n titleText?: string;\n\n leftPanel?: SidePanelProps;\n rightPanel?: SidePanelProps;\n\n /** This will only have an effect for panels whose state is not controlled by\n * parent */\n sidePanelsAreMutuallyExclusive?: boolean;\n\n /** Temporary, get rid of later */\n debugOpacity?: boolean;\n\n /** Props applied to the PageContainer component, which is a styled MUI Container */\n pageContainerProps?: ComponentProps<typeof PageContainer>;\n\n topBarDataTestId?: string;\n pageContentDataTestId?: string;\n}\n\ninterface PageLayoutWithNavBarProps extends BasePageLayoutProps {\n navBarOpen: boolean;\n navBarWidthOpen: number;\n navBarWidthClosed: number;\n}\n\ninterface PagelayoutWithoutNavBarProps extends BasePageLayoutProps {\n navBarOpen?: never;\n navBarWidthOpen?: never;\n navBarWidthClosed?: never;\n}\n\nexport type PageLayoutProps = PropsWithChildren<\n PageLayoutWithNavBarProps | PagelayoutWithoutNavBarProps\n>;\n\nexport default function PageLayout({\n children,\n titleText = '',\n leftPanel,\n rightPanel,\n sidePanelsAreMutuallyExclusive = true,\n debugOpacity = false,\n pageContainerProps,\n pageContentDataTestId,\n topBarDataTestId,\n navBarOpen,\n navBarWidthOpen,\n navBarWidthClosed,\n}: PageLayoutProps) {\n const [leftPanelOpenInternal, setLeftPanelOpenInternal] = useState(INITIAL_LEFT_PANEL_OPEN);\n const [rightPanelOpenInternal, setRightPanelOpenInternal] = useState(INITIAL_RIGHT_PANEL_OPEN);\n const [leftPanelOpenInternalPrevious, setLeftPanelOpenInternalPrevious] =\n useState(INITIAL_LEFT_PANEL_OPEN);\n const [rightPanelOpenInternalPrevious, setRightPanelOpenInternalPrevious] =\n useState(INITIAL_RIGHT_PANEL_OPEN);\n\n const includeLeftPanel = leftPanel !== undefined;\n const includeRightPanel = rightPanel !== undefined;\n\n const {\n titleText: leftPanelTitleText,\n content: leftPanelContent,\n flavour: leftPanelFlavour,\n open: leftPanelOpen,\n onChangeOpen: leftPanelOnChangeOpen,\n width: leftPanelWidth,\n arrowButtons: leftPanelArrowButtons,\n startOpen: leftPanelStartOpen,\n onOpened: leftPanelOnOpened,\n onClosed: leftPanelOnClosed,\n dataTestId: leftPanelDataTestId,\n } = leftPanel ? { ...PANEL_DEFAULTS, ...leftPanel } : { ...PANEL_DEFAULTS };\n\n const {\n titleText: rightPanelTitleText,\n content: rightPanelContent,\n flavour: rightPanelFlavour,\n open: rightPanelOpen,\n onChangeOpen: rightPanelOnChangeOpen,\n width: rightPanelWidth,\n arrowButtons: rightPanelArrowButtons,\n startOpen: rightPanelStartOpen,\n onOpened: rightPanelOnOpened,\n onClosed: rightPanelOnClosed,\n dataTestId: rightPanelDataTestId,\n } = rightPanel ? { ...PANEL_DEFAULTS, ...rightPanel } : { ...PANEL_DEFAULTS };\n\n useEffect(() => {\n if (leftPanelStartOpen !== INITIAL_LEFT_PANEL_OPEN) {\n setLeftPanelOpenInternal(leftPanelStartOpen);\n setLeftPanelOpenInternalPrevious(leftPanelStartOpen);\n }\n }, [leftPanelStartOpen]);\n\n useEffect(() => {\n if (rightPanelStartOpen !== INITIAL_RIGHT_PANEL_OPEN) {\n setRightPanelOpenInternal(rightPanelStartOpen);\n setRightPanelOpenInternalPrevious(rightPanelStartOpen);\n }\n }, [rightPanelStartOpen]);\n\n const leftPanelOpenCurrent = leftPanelOpen === undefined ? leftPanelOpenInternal : leftPanelOpen;\n\n const rightPanelOpenCurrent =\n rightPanelOpen === undefined ? rightPanelOpenInternal : rightPanelOpen;\n\n const handleLeftPanelChangeOpen = (open: boolean) => {\n if (leftPanelOpen === undefined) {\n // If not in controlled mode, update the internal state\n setLeftPanelOpenInternal(open);\n\n if (sidePanelsAreMutuallyExclusive && includeRightPanel) {\n if (open) {\n setRightPanelOpenInternal(false);\n setRightPanelOpenInternalPrevious(rightPanelOpenInternal);\n } else {\n setRightPanelOpenInternal(rightPanelOpenInternalPrevious);\n }\n }\n }\n // Likewise, if callback provided, call it\n if (leftPanelOnChangeOpen) leftPanelOnChangeOpen(open);\n };\n\n const handleRightPanelChangeOpen = (open: boolean) => {\n if (rightPanelOpen === undefined) {\n setRightPanelOpenInternal(open);\n if (sidePanelsAreMutuallyExclusive && includeLeftPanel) {\n if (open) {\n setLeftPanelOpenInternal(false);\n setLeftPanelOpenInternalPrevious(leftPanelOpenInternal);\n } else {\n setLeftPanelOpenInternal(leftPanelOpenInternalPrevious);\n }\n }\n }\n if (rightPanelOnChangeOpen) rightPanelOnChangeOpen(open);\n };\n\n return (\n <Box>\n {includeLeftPanel && (\n <SidePanel\n data-testid={leftPanelDataTestId}\n anchor=\"left\"\n open={leftPanelOpenCurrent}\n onClose={() => handleLeftPanelChangeOpen(false)}\n width={leftPanelWidth}\n titleText={leftPanelTitleText}\n debugOpacity={debugOpacity}\n showCloseArrow={leftPanelArrowButtons === 'both' || leftPanelArrowButtons === 'close'}\n onOpened={leftPanelOnOpened}\n onClosed={leftPanelOnClosed}\n navBarOpen={navBarOpen}\n navBarWidthOpen={navBarWidthOpen}\n navBarWidthClosed={navBarWidthClosed}\n >\n {leftPanelContent}\n </SidePanel>\n )}\n\n {includeRightPanel && (\n <SidePanel\n data-testid={rightPanelDataTestId}\n anchor=\"right\"\n open={rightPanelOpenCurrent}\n onClose={() => handleRightPanelChangeOpen(false)}\n width={rightPanelWidth}\n titleText={rightPanelTitleText}\n debugOpacity={debugOpacity}\n showCloseArrow={rightPanelArrowButtons === 'both' || rightPanelArrowButtons === 'close'}\n onOpened={rightPanelOnOpened}\n onClosed={rightPanelOnClosed}\n navBarOpen={navBarOpen}\n navBarWidthOpen={navBarWidthOpen}\n navBarWidthClosed={navBarWidthClosed}\n >\n {rightPanelContent}\n </SidePanel>\n )}\n\n <TopBar\n titleText={titleText}\n data-testid={topBarDataTestId}\n {...(includeLeftPanel && leftPanelFlavour === 'push'\n ? {\n leftPanel: {\n open: leftPanelOpenCurrent,\n width: leftPanelWidth,\n onOpen: () => handleLeftPanelChangeOpen(true),\n showOpenArrow: leftPanelArrowButtons === 'both' || leftPanelArrowButtons === 'open',\n },\n }\n : {})}\n {...(includeRightPanel && rightPanelFlavour === 'push'\n ? {\n rightPanel: {\n open: rightPanelOpenCurrent,\n width: rightPanelWidth,\n onOpen: () => handleRightPanelChangeOpen(true),\n showOpenArrow:\n rightPanelArrowButtons === 'both' || rightPanelArrowButtons === 'open',\n },\n }\n : {})}\n />\n\n <PanelAwareMargins\n {...(leftPanelFlavour === 'push'\n ? {\n leftPanel: {\n open: leftPanelOpenCurrent,\n width: leftPanelWidth,\n },\n }\n : {})}\n {...(rightPanelFlavour === 'push'\n ? {\n rightPanel: {\n open: rightPanelOpenCurrent,\n width: rightPanelWidth,\n },\n }\n : {})}\n >\n <PageContainer data-testid={pageContentDataTestId} {...pageContainerProps}>\n {children}\n </PageContainer>\n </PanelAwareMargins>\n </Box>\n );\n}\n","import { alpha, createTheme } from '@mui/material/styles';\n\nexport const internalAGSystemsTheme = createTheme({\n palette: {\n primary: {\n main: '#007236',\n dark: '#005221',\n light: '#00A04E',\n contrastText: '#FFFFFF',\n },\n secondary: {\n main: '#662D91',\n dark: '#440E62',\n light: '#93268F',\n contrastText: '#FFFFFF',\n },\n error: {\n main: '#D32F2F',\n dark: '#C62828',\n light: '#EF5350',\n },\n info: {\n main: '#0288D1',\n dark: '#01579B',\n light: '#03A9F4',\n },\n success: {\n main: '#0288D1',\n dark: '#01579B',\n light: '#03A9F4',\n },\n },\n components: {\n MuiTextField: {\n defaultProps: { color: 'secondary' },\n },\n MuiToggleButtonGroup: {\n defaultProps: { color: 'secondary' },\n },\n MuiCheckbox: {\n defaultProps: { color: 'secondary' },\n },\n MuiSelect: {\n defaultProps: { color: 'secondary' },\n },\n MuiSwitch: {\n defaultProps: { color: 'secondary' },\n },\n MuiFormControl: {\n defaultProps: { color: 'secondary' },\n },\n MuiMenuItem: {\n // Setting defaultProps for color on MenuItem does not work, so update manually\n styleOverrides: {\n root: ({ theme }) => ({\n '&.Mui-selected': {\n backgroundColor: alpha(\n theme.palette.secondary.main,\n theme.palette.action.selectedOpacity\n ),\n '&:hover': {\n backgroundColor: alpha(\n theme.palette.secondary.main,\n theme.palette.action.selectedOpacity\n ),\n },\n '&.Mui-focusVisible': {\n backgroundColor: alpha(\n theme.palette.secondary.main,\n theme.palette.action.focusOpacity\n ),\n },\n },\n }),\n },\n },\n },\n typography: {\n // I couldn't think of what to call this. It is an attempt to match\n // https://www.figma.com/file/atonRPl2YD9A1NCntbDtKR/List-Filter-and-Product-Concept?node-id=1187%3A43730\n // but not sure if line height should be changed\n explainer: {\n fontSize: '14px',\n marginBlockStart: '1em',\n },\n h3: {\n fontSize: '1rem',\n fontWeight: 700,\n },\n },\n});\n\nexport const fed21Theme = createTheme({\n palette: {\n primary: {\n dark: '#00A651',\n light: '#A3D39C',\n main: '#007236',\n contrastText: '#FFF',\n },\n warning: {\n main: '#F5871F',\n light: '#FCC589',\n dark: '#A2590A',\n contrastText: '#FFF',\n },\n secondary: {\n main: '#662D91',\n light: '#BD8CBF',\n dark: '#440E62',\n contrastText: '#FFF',\n },\n error: {\n main: '#D43C95',\n light: '#8F2064',\n dark: '#F9CDE0',\n contrastText: '#FFF',\n },\n info: {\n main: '#00A88D',\n light: '#ADDCCF',\n dark: '#005243',\n contrastText: '#FFF',\n },\n success: {\n main: '#00A651',\n light: '#A3D39C',\n dark: '#007236',\n contrastText: '#FFF',\n },\n },\n typography: {\n // I couldn't think of what to call this. It is an attempt to match\n // https://www.figma.com/file/atonRPl2YD9A1NCntbDtKR/List-Filter-and-Product-Concept?node-id=1187%3A43730\n // but not sure if line height should be changed\n explainer: {\n fontSize: '14px',\n marginBlockStart: '1em',\n },\n },\n});\n","import { PropsWithChildren } from 'react';\nimport { ThemeProvider } from '@mui/material/styles';\n\nimport { internalAGSystemsTheme, fed21Theme } from './themes';\n\nexport type AgThemeName = 'internal' | 'fed21';\n\nexport interface AgThemeProviderProps {\n name?: AgThemeName;\n}\n\nexport default function AgThemeProvider({\n name = 'internal',\n children,\n}: PropsWithChildren<AgThemeProviderProps>) {\n const theme =\n name === 'internal' ? internalAGSystemsTheme : name === 'fed21' ? fed21Theme : undefined;\n\n // Should be resolved when we move to React >= 18\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n return <ThemeProvider theme={theme}>{children}</ThemeProvider>;\n}\n","import { AgError } from '@australiangreens/ag-error';\n\n// Superclass for errors involving React context.\nexport class ContextError extends AgError {\n static errorName = 'ContextError';\n}\n","import { createContext } from 'react';\n\nimport { ContextError } from '../../errors/ContextError';\n\nconst stub: () => void = () => {\n throw new ContextError('SaladBarContext can only be used in a child of a <SaladBarProvider>');\n};\n\nexport type NotificationType = {\n key: number;\n message: string;\n severity: 'success' | 'info' | 'warning' | 'error' | undefined;\n variant: 'standard' | 'outlined' | 'filled' | undefined;\n progressIndicator: string | undefined;\n autoHideDuration: number | undefined;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst notstub = (key: unknown): NotificationType | NotificationType[] | void => {\n throw new ContextError('SaladBarContext can only be used in a child of a <SaladBarProvider>');\n};\n\ntype SaladBarContextFunction = typeof stub | typeof notstub;\n\ntype SaladBarContextType = {\n enqueueNotification: SaladBarContextFunction; // Call as enqueueNotification(options)\n // where options include message and severity of 'error' ,'warning', 'info' or\n // 'success'\n enqueueSuccessNotification: SaladBarContextFunction; // Call as const key =\n // enqueueSuccessNotification(msg),\n enqueueInfoNotification: SaladBarContextFunction; // Call as const key =\n // enqueueInfoNotification(msg),\n enqueueWarningNotification: SaladBarContextFunction; // Call as const key =\n // enqueueWarningNotification(msg),\n enqueueErrorNotification: SaladBarContextFunction; // Call as const key =\n // enqueueErrorNotification(msg),\n removeNotification: SaladBarContextFunction; // Call as enqueueErrorNotification(key),\n};\n\n// The defaultValue argument is only used when a component does not have a\n// matching Provider above it in the tree. See\n// https://reactjs.org/docs/context.html#reactcreatecontext\n// Using createContext doesn't itself maintain any type of state exactly, it\n// just provides a way for children to access shared references.\nconst defaultValue = {\n enqueueNotification: stub,\n enqueueSuccessNotification: stub,\n enqueueInfoNotification: stub,\n enqueueWarningNotification: stub,\n enqueueErrorNotification: stub,\n removeNotification: notstub,\n} as SaladBarContextType;\n\n/**\n * @returns A SaladBarContext\n */\nconst SaladBarContext = createContext(defaultValue);\n\nexport default SaladBarContext;\n","// The default props passed to the underlying Snackbar component\nimport { SnackbarOrigin } from '@mui/material/Snackbar';\n\nexport const defaultSnackbarProps = {\n autoHideDuration: 6000,\n anchorOrigin: { vertical: 'top', horizontal: 'center' } as SnackbarOrigin,\n\n // The default is false. If we prefer timer to continue when window loses\n // focus, change to true\n disableWindowBlurListener: false,\n};\n\nexport const defaultSaladBarProps = {\n shouldClose: (_event: Event | React.SyntheticEvent<Element, Event>, reason: string) => {\n return reason !== 'clickaway';\n },\n};\n\nexport const defaultEnqueueNotificationOptions = {\n message: '',\n severity: 'info',\n variant: 'standard',\n progressIndicator: undefined, // Can use 'circular' or 'linear'\n};\n","import React, { useRef, useState } from 'react';\nimport Snackbar, { SnackbarProps, SnackbarCloseReason } from '@mui/material/Snackbar';\nimport Alert from '@mui/material/Alert';\nimport LinearProgress from '@mui/material/LinearProgress';\nimport CircularProgress from '@mui/material/CircularProgress';\n\nimport SaladBarContext, { NotificationType } from './SaladBarContext';\nimport {\n defaultSaladBarProps,\n defaultSnackbarProps,\n defaultEnqueueNotificationOptions,\n} from './defaults';\n\nconst MAX_QUEUE_LENGTH = 100;\nconst MAX_QUEUE_HIT_REPORT_INTERVAL = 2000;\nconst SALADBAR_INDEX = 2000;\n\n// No need to use uuids, just use an incremented value\nconst generateNotificationKey = (() => {\n let previousKey = 0;\n return () => {\n previousKey += 1;\n return previousKey;\n };\n})();\n\nconst alertWithLinearProgressStyle = {\n borderBottomLeftRadius: '0px',\n borderBottomRightRadius: '0px',\n};\n\nexport type SaladBarCloseReason = SnackbarCloseReason | 'closeAlert';\n\nexport interface SaladBarProviderProps extends SnackbarProps {\n /** Called when an event triggers closing of currently displayed snackbar.\n * Default implementation returns false if reason is 'clickaway', otherwise\n * true.*/\n shouldClose?: (\n event: Event | React.SyntheticEvent<Element, Event>,\n reason: SaladBarCloseReason\n ) => boolean;\n}\n\nexport default function SaladBarProvider({\n children,\n shouldClose = defaultSaladBarProps.shouldClose,\n ...snackbarProps\n}: SaladBarProviderProps) {\n const [open, setOpen] = useState(false);\n\n // We use a ref instead of a state to store the actual data, because we want\n // queue to be persistent across the whole lifetime of component. I considered\n // using yocto-queue because it would be O(1) instead of O(n), but its not\n // designed to access the head without removing it and its not going to make\n // much difference anyway.\n const queueRef = useRef<NotificationType[]>([]);\n\n const limitLastHitAt = useRef(Date.now());\n const limitHitCountSinceLastReport = useRef(0);\n\n const enqueueNotification = (notification = {}) => {\n limitHitCountSinceLastReport.current += 1;\n if (queueRef.current.length >= MAX_QUEUE_LENGTH) {\n // If the queue length is hit, probably stuck in some sort of loop, so\n // don't want to spam logs instantly so space it out\n if (Date.now() - limitLastHitAt.current >= MAX_QUEUE_HIT_REPORT_INTERVAL) {\n limitLastHitAt.current = Date.now();\n console.error(\n `SaladBarProvider: MAX_QUEUE_LENGTH (${MAX_QUEUE_LENGTH}) hit ${limitHitCountSinceLastReport.current} times in last ${MAX_QUEUE_HIT_REPORT_INTERVAL}ms)`\n );\n limitHitCountSinceLastReport.current = 0;\n }\n }\n\n const newNotification = {\n ...defaultEnqueueNotificationOptions,\n key: generateNotificationKey(), // Can be overridden.\n ...notification, // This could result in collisons, but unlikely.\n };\n\n // Add to the end of queue\n queueRef.current.push(newNotification as NotificationType);\n\n // If the queue was previously empty, then open the snackbar. We don't do it\n // whenever enqueueNotification is called since it will mess up transitions\n if (queueRef.current.length === 1) setOpen(true);\n\n return newNotification.key;\n };\n\n const enqueueSuccessNotification = (message = '', options = {}) =>\n enqueueNotification({ message, severity: 'success', ...options });\n\n const enqueueInfoNotification = (message = '', options = {}) =>\n enqueueNotification({ message, severity: 'info', ...options });\n\n const enqueueWarningNotification = (message = '', options = {}) =>\n enqueueNotification({ message, severity: 'warning', ...options });\n\n const enqueueErrorNotification = (message = '', options = {}) =>\n enqueueNotification({ message, severity: 'error', ...options });\n\n /**\n * Remove the notification with specified key from the queue. If the key is\n * not found, immediately returns null.\n *\n * @param key - The key as returned from enqueue...() function.\n *\n * @returns The removed notification\n */\n const removeNotification = (key: unknown) => {\n const index = queueRef.current.findIndex((x) => x.key === key);\n if (index === -1) return;\n\n if (index === 0) {\n // If its at the front of the queue, it is either currently being\n // displayed or in process of being closed. Either way, we can just set\n // open to false\n setOpen(false);\n return queueRef.current[0];\n }\n // Otherwise we just remove it from the queue, it won't need to transition\n return queueRef.current.splice(index, 1);\n };\n\n const handleClose = (\n event: Event | React.SyntheticEvent<Element, Event>,\n reason: SaladBarCloseReason\n ) => {\n if (shouldClose(event, reason)) setOpen(false);\n };\n\n // Callback fired before the transition is exiting.\n const handleExit = () => {};\n\n // Callback fired when the transition has exited.\n const handleExited = () => {\n // Remove head of queue\n queueRef.current.shift();\n\n // If there is still something on the queue, then re-open\n if (queueRef.current.length > 0) setOpen(true);\n };\n\n // The notification to display is the one at head of queue\n const currentNotification = queueRef.current[0] ?? {\n ...defaultEnqueueNotificationOptions,\n };\n\n // Can also override certain props on a notification level\n const currentNotificationSnackbarProps: { autoHideDuration?: number } = {};\n // Probably a better way of doing this\n if ('autoHideDuration' in currentNotification) {\n currentNotificationSnackbarProps.autoHideDuration = currentNotification.autoHideDuration;\n }\n\n // Note the order of props in Snackbar, we don't allow overriding open and\n // onClose.\n\n const snackbarFinalProps = { ...defaultSnackbarProps, ...snackbarProps };\n\n return (\n // Should be resolved when we move to React >= 18\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n <SaladBarContext.Provider\n value={{\n enqueueNotification,\n enqueueSuccessNotification,\n enqueueInfoNotification,\n enqueueWarningNotification,\n enqueueErrorNotification,\n removeNotification,\n }}\n >\n {children}\n <Snackbar\n {...snackbarFinalProps}\n {...currentNotificationSnackbarProps}\n open={open}\n onClose={handleClose}\n TransitionProps={{\n onExited: handleExited,\n onExit: handleExit,\n }}\n sx={{ zIndex: SALADBAR_INDEX }}\n >\n <div>\n <Alert\n onClose={(event) => handleClose(event, 'closeAlert')}\n severity={currentNotification.severity}\n variant={'filled'}\n icon={\n currentNotification.progressIndicator === 'circular' ? (\n <CircularProgress size=\"1em\" />\n ) : undefined\n }\n style={\n currentNotification.progressIndicator === 'linear'\n ? alertWithLinearProgressStyle\n : undefined\n }\n >\n {currentNotification.message}\n </Alert>\n {currentNotification.progressIndicator === 'linear' && <LinearProgress color=\"primary\" />}\n </div>\n </Snackbar>\n </SaladBarContext.Provider>\n );\n}\n","import { useContext } from 'react';\nimport SaladBarContext from './SaladBarContext';\n\n/**\n * Use the `useSaladBar` hook in components to access the enqueueNotification()\n * method to add a snackbar message to queue.\n *\n * Example:\n *\n * ```js\n * const {\n * enqueueNotification,\n * enqueueSuccessNotification,\n * enqueueInfoNotification,\n * enqueueWarningNotification,\n * enqueueErrorNotification,\n * } = useSaladBar();\n * ...\n * enqueueNotification({message: 'hello', severity: 'info'});\n * // or\n * enqueueInfoNotification('hello');\n * ```\n */\nexport default function useSaladBar() {\n return useContext(SaladBarContext);\n}\n"],"names":["ExampleComponent","text","num","setNum","useState","jsxs","Fragment","jsx","Typography","Button","oldNum","Paper","TOP_STRIPE_HEIGHT","TITLE_BAR_HEIGHT","PREFIX","classes","Root","styled","prop","theme","leftPanel","rightPanel","__spreadValues","_a","_b","TopBar","titleText","dataTestId","Box","IconButton","ArrowForwardIcon","ArrowBackIcon","DEFAULT_PANEL_WIDTH","SidePanelDrawer","Drawer","width","debugOpacity","anchor","navBarOpen","navBarWidthOpen","navBarWidthClosed","DrawerHeaderBox","__spreadProps","SidePanel","children","open","onClose","showCloseArrow","headerBoxProps","onOpened","onClosed","PanelAwareMargins","PageContainer","Container","INITIAL_LEFT_PANEL_OPEN","INITIAL_RIGHT_PANEL_OPEN","PANEL_DEFAULTS","PageLayout","sidePanelsAreMutuallyExclusive","pageContainerProps","pageContentDataTestId","topBarDataTestId","leftPanelOpenInternal","setLeftPanelOpenInternal","rightPanelOpenInternal","setRightPanelOpenInternal","leftPanelOpenInternalPrevious","setLeftPanelOpenInternalPrevious","rightPanelOpenInternalPrevious","setRightPanelOpenInternalPrevious","includeLeftPanel","includeRightPanel","leftPanelTitleText","leftPanelContent","leftPanelFlavour","leftPanelOpen","leftPanelOnChangeOpen","leftPanelWidth","leftPanelArrowButtons","leftPanelStartOpen","leftPanelOnOpened","leftPanelOnClosed","leftPanelDataTestId","rightPanelTitleText","rightPanelContent","rightPanelFlavour","rightPanelOpen","rightPanelOnChangeOpen","rightPanelWidth","rightPanelArrowButtons","rightPanelStartOpen","rightPanelOnOpened","rightPanelOnClosed","rightPanelDataTestId","useEffect","leftPanelOpenCurrent","rightPanelOpenCurrent","handleLeftPanelChangeOpen","handleRightPanelChangeOpen","internalAGSystemsTheme","createTheme","alpha","fed21Theme","AgThemeProvider","name","ThemeProvider","ContextError","AgError","__publicField","stub","notstub","key","defaultValue","SaladBarContext","createContext","defaultSnackbarProps","defaultSaladBarProps","_event","reason","defaultEnqueueNotificationOptions","MAX_QUEUE_LENGTH","MAX_QUEUE_HIT_REPORT_INTERVAL","SALADBAR_INDEX","generateNotificationKey","previousKey","alertWithLinearProgressStyle","SaladBarProvider","shouldClose","snackbarProps","__objRest","setOpen","queueRef","useRef","limitLastHitAt","limitHitCountSinceLastReport","enqueueNotification","notification","newNotification","enqueueSuccessNotification","message","options","enqueueInfoNotification","enqueueWarningNotification","enqueueErrorNotification","removeNotification","index","x","handleClose","event","handleExit","handleExited","currentNotification","currentNotificationSnackbarProps","snackbarFinalProps","Snackbar","Alert","CircularProgress","LinearProgress","useSaladBar","useContext"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/components/ExampleComponent/index.tsx","../../src/components/PageLayout/TopBar.tsx","../../src/components/PageLayout/SidePanel.tsx","../../src/components/PageLayout/PanelAwareMargins.tsx","../../src/components/PageLayout/PageContainer.tsx","../../src/components/PageLayout/index.tsx","../../src/providers/AgTheme/themes.ts","../../src/providers/AgTheme/index.tsx","../../src/errors/ContextError.ts","../../src/providers/SaladBar/SaladBarContext.ts","../../src/providers/SaladBar/defaults.ts","../../src/providers/SaladBar/SaladBarProvider.tsx","../../src/providers/SaladBar/useSaladBar.ts","../../src/providers/SaladBar/testWrappers.tsx"],"sourcesContent":["import { useState } from 'react';\nimport Button from '@mui/material/Button';\nimport Paper from '@mui/material/Paper';\nimport Typography from '@mui/material/Typography';\n\nexport interface ExampleComponentProps {\n text: string;\n}\n\nexport default function ExampleComponent({ text }: ExampleComponentProps) {\n const [num, setNum] = useState(0);\n\n return (\n <>\n <Typography variant=\"h6\" color=\"inherit\" component=\"div\" sx={{ fontSize: '22px' }}>\n Hello world\n </Typography>\n\n <Typography variant=\"caption\" display=\"block\">\n <span>Just ensuring MUI is working as planned as a peer dependency. v0.0.11</span>\n </Typography>\n <Button\n variant=\"outlined\"\n onClick={() => setNum((oldNum) => oldNum + 1)}\n aria-label=\"Increment\"\n >\n Hello I am a button\n </Button>\n <p>\n This is some text: <span>{text}</span>\n </p>\n <Paper>This number will incremember when button pressed: {num}</Paper>\n </>\n );\n}\n","import { Box, IconButton, styled } from '@mui/material';\nimport Typography from '@mui/material/Typography';\nimport ArrowForwardIcon from '@mui/icons-material/ArrowForward';\nimport ArrowBackIcon from '@mui/icons-material/ArrowBack';\n\nconst TOP_STRIPE_HEIGHT = 24;\nconst TITLE_BAR_HEIGHT = 64;\n\nconst PREFIX = 'TopBar';\n\ninterface PanelProps {\n open: boolean;\n width: number;\n showOpenArrow: boolean;\n\n /** Called when the arrow button is pressed (if showOpenButton is true) */\n onOpen?: () => void;\n\n showOpenButton?: boolean;\n}\n\nexport interface TopBarProps {\n titleText?: string;\n leftPanel?: PanelProps;\n rightPanel?: PanelProps;\n 'data-testid'?: string;\n}\n\nexport const classes = {\n topStripe: `${PREFIX}-topStripe`,\n titleBar: `${PREFIX}-titleBar`,\n titleSlider: `${PREFIX}-titleSlider`,\n\n titleText: `${PREFIX}-titleText`,\n leftPanelButton: `${PREFIX}-leftPanelButton`,\n rightPanelButton: `${PREFIX}-leftPanelButton`,\n};\n\ninterface RootProps {\n leftPanel?: PanelProps;\n rightPanel?: PanelProps;\n}\n\nconst Root = styled('div', {\n shouldForwardProp: (prop) => !(['leftPanel', 'rightPanel'] as Array<PropertyKey>).includes(prop),\n name: PREFIX,\n})<RootProps>(({ theme, leftPanel, rightPanel }) => ({\n width: '100%',\n\n [`& .${classes.topStripe}`]: {\n width: '100%',\n height: `${TOP_STRIPE_HEIGHT}px`,\n backgroundColor: theme.palette.primary.main,\n },\n\n [`& .${classes.titleBar}`]: {\n backgroundColor: theme.palette.primary.light,\n height: `${TITLE_BAR_HEIGHT}px`,\n padding: theme.spacing(0, 3),\n width: '100%',\n },\n\n [`& .${classes.titleSlider}`]: {\n height: '100%',\n display: 'flex',\n alignItems: 'center',\n color: 'white',\n\n transition: theme.transitions.create('margin', {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.leavingScreen,\n }),\n\n [`& .${classes.leftPanelButton}`]: {\n marginRight: theme.spacing(2),\n flexGrow: 0,\n },\n\n [`& .${classes.titleText}`]: {\n flexGrow: 1,\n },\n\n [`& .${classes.rightPanelButton}`]: {\n flexGrow: 0,\n },\n\n ...(leftPanel?.open && {\n transition: theme.transitions.create('margin', {\n easing: theme.transitions.easing.easeOut,\n duration: theme.transitions.duration.enteringScreen,\n }),\n marginLeft: `${leftPanel?.width ?? 0}px`,\n }),\n\n ...(rightPanel?.open && {\n transition: theme.transitions.create('margin', {\n easing: theme.transitions.easing.easeOut,\n duration: theme.transitions.duration.enteringScreen,\n }),\n marginRight: `${rightPanel?.width ?? 0}px`,\n }),\n },\n}));\n\n/**\n * Goes at the top of every page. Wasn't feeling creative in naming it.\n *\n * This differs from the typical appbar with a toolbar used in most MUI apps in\n * that it has to interact with a sliding side panel that is not the main\n * navbar.\n */\nexport default function TopBar({\n titleText = '',\n leftPanel,\n rightPanel,\n 'data-testid': dataTestId,\n}: TopBarProps) {\n return (\n <Root leftPanel={leftPanel} rightPanel={rightPanel} data-testid={dataTestId}>\n <div className={classes.topStripe} />\n <div className={classes.titleBar}>\n <Box className={classes.titleSlider}>\n {leftPanel !== undefined && !leftPanel.open && leftPanel.showOpenArrow && (\n <IconButton\n className={classes.leftPanelButton}\n color=\"inherit\"\n aria-label=\"Open left side panel\"\n onClick={leftPanel?.onOpen}\n edge=\"start\"\n size=\"large\"\n >\n {' '}\n <ArrowForwardIcon />\n </IconButton>\n )}\n\n <Typography className={classes.titleText} variant=\"h6\" noWrap>\n {titleText}\n </Typography>\n\n {rightPanel !== undefined && !rightPanel.open && rightPanel.showOpenArrow && (\n <IconButton\n className={classes.rightPanelButton}\n color=\"inherit\"\n aria-label=\"Open right side panel\"\n onClick={rightPanel?.onOpen}\n edge=\"end\"\n size=\"large\"\n >\n {' '}\n <ArrowBackIcon />\n </IconButton>\n )}\n </Box>\n </div>\n </Root>\n );\n}\n","import { PropsWithChildren } from 'react';\nimport ArrowBackIcon from '@mui/icons-material/ArrowBack';\nimport ArrowForwardIcon from '@mui/icons-material/ArrowForward';\nimport Drawer, { DrawerProps } from '@mui/material/Drawer';\nimport Box, { BoxProps } from '@mui/material/Box';\nimport Typography from '@mui/material/Typography';\nimport IconButton from '@mui/material/IconButton';\nimport { styled } from '@mui/material';\n\nexport const DEFAULT_PANEL_WIDTH = 400;\n\ninterface SidePanelDrawerProps extends DrawerProps {\n anchor: 'left' | 'right';\n width?: number;\n debugOpacity?: boolean;\n navBarOpen: boolean;\n navBarWidthOpen: number;\n navBarWidthClosed: number;\n}\n\nconst SidePanelDrawer = styled(Drawer, {\n shouldForwardProp: (prop) =>\n // Note we do want anchor to be forwarded to the Drawer component\n !(\n [\n 'width',\n 'debug',\n 'debugOpacity',\n 'navBarOpen',\n 'navBarWidthOpen',\n 'navBarWidthClosed',\n ] as Array<PropertyKey>\n ).includes(prop),\n name: 'SidePanelDrawer',\n})<SidePanelDrawerProps>(\n ({ width, debugOpacity = false, anchor, navBarOpen, navBarWidthOpen, navBarWidthClosed }) => ({\n width,\n\n '& .MuiDrawer-paper': {\n position: 'absolute',\n width,\n boxSizing: 'border-box',\n border: 'unset',\n boxShadow:\n '0px 4px 5px rgba(0, 0, 0, 0.14), 0px 1px 10px rgba(0, 0, 0, 0.12), 0px 2px 4px rgba(0, 0, 0, 0.2)',\n\n ...(debugOpacity && {\n opacity: '50%',\n }),\n\n ...(anchor === 'left' && {\n marginLeft: `${navBarWidthClosed}px`,\n ...(navBarOpen && {\n marginLeft: `${navBarWidthOpen}px`,\n }),\n }),\n },\n })\n);\n\ninterface DrawerHeaderBoxProps {\n anchor: 'left' | 'right';\n}\n\nconst DrawerHeaderBox = styled(Box, {\n shouldForwardProp: (prop) => !(['anchor'] as Array<PropertyKey>).includes(prop),\n})<DrawerHeaderBoxProps>(({ theme, anchor }) => ({\n display: 'flex',\n alignItems: 'center',\n padding: theme.spacing(2),\n ...theme.mixins.toolbar,\n justifyContent: anchor === 'left' ? 'space-between' : 'flex-start',\n backgroundColor: theme.palette.primary.light,\n height: '88px',\n\n '&,*': {\n color: 'white',\n },\n\n ' .MuiTypography-root': {\n fontSize: '22px',\n },\n\n ' .MuiButtonBase-root': {\n marginRight: anchor === 'right' ? theme.spacing(2) : 0,\n },\n}));\n\ntype SidePanelProps = PropsWithChildren<{\n open: boolean;\n anchor?: 'left' | 'right';\n onClose?: React.MouseEventHandler<HTMLElement>;\n titleText?: string;\n width?: number;\n showCloseArrow?: boolean;\n debugOpacity?: boolean;\n headerBoxProps?: BoxProps;\n onOpened?: () => void;\n onClosed?: () => void;\n 'data-testid'?: string;\n navBarOpen?: boolean;\n navBarWidthOpen?: number;\n navBarWidthClosed?: number;\n}>;\n\n/**\n * The SidePanel is designed to be used along with the TopBar component for a\n * consistent look and feel.\n */\nexport default function SidePanel({\n children,\n anchor = 'left',\n open,\n onClose = () => {},\n titleText = '',\n width = DEFAULT_PANEL_WIDTH,\n showCloseArrow = true,\n debugOpacity = false,\n headerBoxProps = {},\n onOpened,\n onClosed,\n 'data-testid': dataTestId,\n navBarOpen = false,\n navBarWidthOpen = 0,\n navBarWidthClosed = 0,\n}: SidePanelProps) {\n return (\n <SidePanelDrawer\n SlideProps={{\n onEntered: () => onOpened?.(),\n onExited: () => onClosed?.(),\n }}\n variant=\"persistent\"\n anchor={anchor}\n open={open}\n width={width}\n debugOpacity={debugOpacity}\n data-testid={dataTestId}\n navBarOpen={navBarOpen}\n navBarWidthOpen={navBarWidthOpen}\n navBarWidthClosed={navBarWidthClosed}\n >\n <DrawerHeaderBox anchor={anchor} {...headerBoxProps}>\n {/* Might be a cleaner way to do this, but it does the job */}\n {anchor === 'left' ? (\n <>\n <Typography variant=\"h6\" color=\"inherit\" component=\"div\">\n {titleText}\n </Typography>\n\n {showCloseArrow && (\n <IconButton onClick={onClose} size=\"large\" aria-label=\"Close left side panel\">\n <ArrowBackIcon data-testid=\"arrowbackicon\" />{' '}\n </IconButton>\n )}\n </>\n ) : (\n <>\n {showCloseArrow && (\n <IconButton onClick={onClose} size=\"large\" aria-label=\"Close right side panel\">\n <ArrowForwardIcon />{' '}\n </IconButton>\n )}\n\n <Typography variant=\"h6\" color=\"inherit\" component=\"div\">\n {titleText}\n </Typography>\n </>\n )}\n </DrawerHeaderBox>\n {children}\n </SidePanelDrawer>\n );\n}\n","import { styled } from '@mui/material';\n\ninterface PanelProps {\n width: number;\n open: boolean;\n}\n\ninterface PanelAwareMarginsProps {\n /** If the leftPanel prop is omitted but a left panel is still in use on the\n * page, it will slide over the top instead of the default pushing */\n leftPanel?: PanelProps;\n\n /** If the rightPanel prop is omitted but a right panel is still in use on the\n * page, it will slide over the top instead of the default pushing */\n rightPanel?: PanelProps;\n}\n\n/** With the optional leftPanel and rightPanel props providing state and width,\n * the children of of the PanelAwareMargins will looks like they is pushed aside\n * by the panels by transitioning the margins. */\nconst PanelAwareMargins = styled('div', {\n shouldForwardProp: (prop) => !(['leftPanel', 'rightPanel'] as Array<PropertyKey>).includes(prop),\n name: 'PanelAwareMargins',\n})<PanelAwareMarginsProps>(({ theme, leftPanel, rightPanel }) => ({\n transition: theme.transitions.create('margin', {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.leavingScreen,\n }),\n\n ...(leftPanel?.open && {\n transition: theme.transitions.create('margin', {\n easing: theme.transitions.easing.easeOut,\n duration: theme.transitions.duration.enteringScreen,\n }),\n marginLeft: `${leftPanel?.width ?? 0}px`,\n }),\n ...(rightPanel?.open && {\n transition: theme.transitions.create('margin', {\n easing: theme.transitions.easing.easeOut,\n duration: theme.transitions.duration.enteringScreen,\n }),\n marginRight: `${rightPanel?.width ?? 0}px`,\n }),\n}));\n\nexport default PanelAwareMargins;\n","import { styled } from '@mui/material';\nimport Container from '@mui/material/Container';\n\n/** Just a simple styled container applying our spacings*/\nconst PageContainer = styled(Container, {\n name: 'PageContainer',\n})(({ theme }) => ({\n // Horizontal padding comes from the Container's gutter\n paddingTop: theme.spacing(3),\n paddingBottom: theme.spacing(3),\n}));\n\nexport default PageContainer;\n","import { ComponentProps, PropsWithChildren, ReactNode, useEffect, useState } from 'react';\nimport { Box } from '@mui/material';\n\nimport TopBar from './TopBar';\nimport SidePanel, { DEFAULT_PANEL_WIDTH } from './SidePanel';\nimport PanelAwareMargins from './PanelAwareMargins';\nimport PageContainer from './PageContainer';\n\nconst INITIAL_LEFT_PANEL_OPEN = false;\nconst INITIAL_RIGHT_PANEL_OPEN = false;\n\nconst PANEL_DEFAULTS = {\n titleText: '',\n flavour: 'push',\n width: DEFAULT_PANEL_WIDTH,\n arrowButtons: 'both',\n startOpen: false,\n open: undefined,\n onChangeOpen: undefined,\n content: <></>,\n onOpened: undefined,\n onClosed: undefined,\n dataTestId: undefined,\n};\n\ninterface SidePanelProps {\n titleText?: string;\n content?: ReactNode;\n flavour?: 'push' | 'overlay';\n arrowButtons?: 'open' | 'close' | 'both' | 'none';\n width?: number;\n startOpen?: boolean;\n\n /** Use this and onChangeOpen if you want to use component as a controlled component */\n open?: boolean;\n onChangeOpen?: (open: boolean) => void;\n\n /** Called when the sliding transition to open has finished */\n onOpened?: () => void;\n\n /** Called when the sliding transition to open has finished */\n onClosed?: () => void;\n\n dataTestId?: string;\n}\n\ninterface BasePageLayoutProps {\n titleText?: string;\n\n leftPanel?: SidePanelProps;\n rightPanel?: SidePanelProps;\n\n /** This will only have an effect for panels whose state is not controlled by\n * parent */\n sidePanelsAreMutuallyExclusive?: boolean;\n\n /** Temporary, get rid of later */\n debugOpacity?: boolean;\n\n /** Props applied to the PageContainer component, which is a styled MUI Container */\n pageContainerProps?: ComponentProps<typeof PageContainer>;\n\n topBarDataTestId?: string;\n pageContentDataTestId?: string;\n}\n\ninterface PageLayoutWithNavBarProps extends BasePageLayoutProps {\n navBarOpen: boolean;\n navBarWidthOpen: number;\n navBarWidthClosed: number;\n}\n\ninterface PagelayoutWithoutNavBarProps extends BasePageLayoutProps {\n navBarOpen?: never;\n navBarWidthOpen?: never;\n navBarWidthClosed?: never;\n}\n\nexport type PageLayoutProps = PropsWithChildren<\n PageLayoutWithNavBarProps | PagelayoutWithoutNavBarProps\n>;\n\nexport default function PageLayout({\n children,\n titleText = '',\n leftPanel,\n rightPanel,\n sidePanelsAreMutuallyExclusive = true,\n debugOpacity = false,\n pageContainerProps,\n pageContentDataTestId,\n topBarDataTestId,\n navBarOpen,\n navBarWidthOpen,\n navBarWidthClosed,\n}: PageLayoutProps) {\n const [leftPanelOpenInternal, setLeftPanelOpenInternal] = useState(INITIAL_LEFT_PANEL_OPEN);\n const [rightPanelOpenInternal, setRightPanelOpenInternal] = useState(INITIAL_RIGHT_PANEL_OPEN);\n const [leftPanelOpenInternalPrevious, setLeftPanelOpenInternalPrevious] =\n useState(INITIAL_LEFT_PANEL_OPEN);\n const [rightPanelOpenInternalPrevious, setRightPanelOpenInternalPrevious] =\n useState(INITIAL_RIGHT_PANEL_OPEN);\n\n const includeLeftPanel = leftPanel !== undefined;\n const includeRightPanel = rightPanel !== undefined;\n\n const {\n titleText: leftPanelTitleText,\n content: leftPanelContent,\n flavour: leftPanelFlavour,\n open: leftPanelOpen,\n onChangeOpen: leftPanelOnChangeOpen,\n width: leftPanelWidth,\n arrowButtons: leftPanelArrowButtons,\n startOpen: leftPanelStartOpen,\n onOpened: leftPanelOnOpened,\n onClosed: leftPanelOnClosed,\n dataTestId: leftPanelDataTestId,\n } = leftPanel ? { ...PANEL_DEFAULTS, ...leftPanel } : { ...PANEL_DEFAULTS };\n\n const {\n titleText: rightPanelTitleText,\n content: rightPanelContent,\n flavour: rightPanelFlavour,\n open: rightPanelOpen,\n onChangeOpen: rightPanelOnChangeOpen,\n width: rightPanelWidth,\n arrowButtons: rightPanelArrowButtons,\n startOpen: rightPanelStartOpen,\n onOpened: rightPanelOnOpened,\n onClosed: rightPanelOnClosed,\n dataTestId: rightPanelDataTestId,\n } = rightPanel ? { ...PANEL_DEFAULTS, ...rightPanel } : { ...PANEL_DEFAULTS };\n\n useEffect(() => {\n if (leftPanelStartOpen !== INITIAL_LEFT_PANEL_OPEN) {\n setLeftPanelOpenInternal(leftPanelStartOpen);\n setLeftPanelOpenInternalPrevious(leftPanelStartOpen);\n }\n }, [leftPanelStartOpen]);\n\n useEffect(() => {\n if (rightPanelStartOpen !== INITIAL_RIGHT_PANEL_OPEN) {\n setRightPanelOpenInternal(rightPanelStartOpen);\n setRightPanelOpenInternalPrevious(rightPanelStartOpen);\n }\n }, [rightPanelStartOpen]);\n\n const leftPanelOpenCurrent = leftPanelOpen === undefined ? leftPanelOpenInternal : leftPanelOpen;\n\n const rightPanelOpenCurrent =\n rightPanelOpen === undefined ? rightPanelOpenInternal : rightPanelOpen;\n\n const handleLeftPanelChangeOpen = (open: boolean) => {\n if (leftPanelOpen === undefined) {\n // If not in controlled mode, update the internal state\n setLeftPanelOpenInternal(open);\n\n if (sidePanelsAreMutuallyExclusive && includeRightPanel) {\n if (open) {\n setRightPanelOpenInternal(false);\n setRightPanelOpenInternalPrevious(rightPanelOpenInternal);\n } else {\n setRightPanelOpenInternal(rightPanelOpenInternalPrevious);\n }\n }\n }\n // Likewise, if callback provided, call it\n if (leftPanelOnChangeOpen) leftPanelOnChangeOpen(open);\n };\n\n const handleRightPanelChangeOpen = (open: boolean) => {\n if (rightPanelOpen === undefined) {\n setRightPanelOpenInternal(open);\n if (sidePanelsAreMutuallyExclusive && includeLeftPanel) {\n if (open) {\n setLeftPanelOpenInternal(false);\n setLeftPanelOpenInternalPrevious(leftPanelOpenInternal);\n } else {\n setLeftPanelOpenInternal(leftPanelOpenInternalPrevious);\n }\n }\n }\n if (rightPanelOnChangeOpen) rightPanelOnChangeOpen(open);\n };\n\n return (\n <Box>\n {includeLeftPanel && (\n <SidePanel\n data-testid={leftPanelDataTestId}\n anchor=\"left\"\n open={leftPanelOpenCurrent}\n onClose={() => handleLeftPanelChangeOpen(false)}\n width={leftPanelWidth}\n titleText={leftPanelTitleText}\n debugOpacity={debugOpacity}\n showCloseArrow={leftPanelArrowButtons === 'both' || leftPanelArrowButtons === 'close'}\n onOpened={leftPanelOnOpened}\n onClosed={leftPanelOnClosed}\n navBarOpen={navBarOpen}\n navBarWidthOpen={navBarWidthOpen}\n navBarWidthClosed={navBarWidthClosed}\n >\n {leftPanelContent}\n </SidePanel>\n )}\n\n {includeRightPanel && (\n <SidePanel\n data-testid={rightPanelDataTestId}\n anchor=\"right\"\n open={rightPanelOpenCurrent}\n onClose={() => handleRightPanelChangeOpen(false)}\n width={rightPanelWidth}\n titleText={rightPanelTitleText}\n debugOpacity={debugOpacity}\n showCloseArrow={rightPanelArrowButtons === 'both' || rightPanelArrowButtons === 'close'}\n onOpened={rightPanelOnOpened}\n onClosed={rightPanelOnClosed}\n navBarOpen={navBarOpen}\n navBarWidthOpen={navBarWidthOpen}\n navBarWidthClosed={navBarWidthClosed}\n >\n {rightPanelContent}\n </SidePanel>\n )}\n\n <TopBar\n titleText={titleText}\n data-testid={topBarDataTestId}\n {...(includeLeftPanel && leftPanelFlavour === 'push'\n ? {\n leftPanel: {\n open: leftPanelOpenCurrent,\n width: leftPanelWidth,\n onOpen: () => handleLeftPanelChangeOpen(true),\n showOpenArrow: leftPanelArrowButtons === 'both' || leftPanelArrowButtons === 'open',\n },\n }\n : {})}\n {...(includeRightPanel && rightPanelFlavour === 'push'\n ? {\n rightPanel: {\n open: rightPanelOpenCurrent,\n width: rightPanelWidth,\n onOpen: () => handleRightPanelChangeOpen(true),\n showOpenArrow:\n rightPanelArrowButtons === 'both' || rightPanelArrowButtons === 'open',\n },\n }\n : {})}\n />\n\n <PanelAwareMargins\n {...(leftPanelFlavour === 'push'\n ? {\n leftPanel: {\n open: leftPanelOpenCurrent,\n width: leftPanelWidth,\n },\n }\n : {})}\n {...(rightPanelFlavour === 'push'\n ? {\n rightPanel: {\n open: rightPanelOpenCurrent,\n width: rightPanelWidth,\n },\n }\n : {})}\n >\n <PageContainer data-testid={pageContentDataTestId} {...pageContainerProps}>\n {children}\n </PageContainer>\n </PanelAwareMargins>\n </Box>\n );\n}\n","import { alpha, createTheme } from '@mui/material/styles';\n\nexport const internalAGSystemsTheme = createTheme({\n palette: {\n primary: {\n main: '#007236',\n dark: '#005221',\n light: '#00A04E',\n contrastText: '#FFFFFF',\n },\n secondary: {\n main: '#662D91',\n dark: '#440E62',\n light: '#93268F',\n contrastText: '#FFFFFF',\n },\n error: {\n main: '#D32F2F',\n dark: '#C62828',\n light: '#EF5350',\n },\n info: {\n main: '#0288D1',\n dark: '#01579B',\n light: '#03A9F4',\n },\n success: {\n main: '#0288D1',\n dark: '#01579B',\n light: '#03A9F4',\n },\n },\n components: {\n MuiTextField: {\n defaultProps: { color: 'secondary' },\n },\n MuiToggleButtonGroup: {\n defaultProps: { color: 'secondary' },\n },\n MuiCheckbox: {\n defaultProps: { color: 'secondary' },\n },\n MuiSelect: {\n defaultProps: { color: 'secondary' },\n },\n MuiSwitch: {\n defaultProps: { color: 'secondary' },\n },\n MuiFormControl: {\n defaultProps: { color: 'secondary' },\n },\n MuiMenuItem: {\n // Setting defaultProps for color on MenuItem does not work, so update manually\n styleOverrides: {\n root: ({ theme }) => ({\n '&.Mui-selected': {\n backgroundColor: alpha(\n theme.palette.secondary.main,\n theme.palette.action.selectedOpacity\n ),\n '&:hover': {\n backgroundColor: alpha(\n theme.palette.secondary.main,\n theme.palette.action.selectedOpacity\n ),\n },\n '&.Mui-focusVisible': {\n backgroundColor: alpha(\n theme.palette.secondary.main,\n theme.palette.action.focusOpacity\n ),\n },\n },\n }),\n },\n },\n },\n typography: {\n // I couldn't think of what to call this. It is an attempt to match\n // https://www.figma.com/file/atonRPl2YD9A1NCntbDtKR/List-Filter-and-Product-Concept?node-id=1187%3A43730\n // but not sure if line height should be changed\n explainer: {\n fontSize: '14px',\n marginBlockStart: '1em',\n },\n h3: {\n fontSize: '1rem',\n fontWeight: 700,\n },\n },\n});\n\nexport const fed21Theme = createTheme({\n palette: {\n primary: {\n dark: '#00A651',\n light: '#A3D39C',\n main: '#007236',\n contrastText: '#FFF',\n },\n warning: {\n main: '#F5871F',\n light: '#FCC589',\n dark: '#A2590A',\n contrastText: '#FFF',\n },\n secondary: {\n main: '#662D91',\n light: '#BD8CBF',\n dark: '#440E62',\n contrastText: '#FFF',\n },\n error: {\n main: '#D43C95',\n light: '#8F2064',\n dark: '#F9CDE0',\n contrastText: '#FFF',\n },\n info: {\n main: '#00A88D',\n light: '#ADDCCF',\n dark: '#005243',\n contrastText: '#FFF',\n },\n success: {\n main: '#00A651',\n light: '#A3D39C',\n dark: '#007236',\n contrastText: '#FFF',\n },\n },\n typography: {\n // I couldn't think of what to call this. It is an attempt to match\n // https://www.figma.com/file/atonRPl2YD9A1NCntbDtKR/List-Filter-and-Product-Concept?node-id=1187%3A43730\n // but not sure if line height should be changed\n explainer: {\n fontSize: '14px',\n marginBlockStart: '1em',\n },\n },\n});\n","import { PropsWithChildren } from 'react';\nimport { ThemeProvider } from '@mui/material/styles';\n\nimport { internalAGSystemsTheme, fed21Theme } from './themes';\n\nexport type AgThemeName = 'internal' | 'fed21';\n\nexport interface AgThemeProviderProps {\n name?: AgThemeName;\n}\n\nexport default function AgThemeProvider({\n name = 'internal',\n children,\n}: PropsWithChildren<AgThemeProviderProps>) {\n const theme =\n name === 'internal' ? internalAGSystemsTheme : name === 'fed21' ? fed21Theme : undefined;\n\n // Should be resolved when we move to React >= 18\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n return <ThemeProvider theme={theme}>{children}</ThemeProvider>;\n}\n","import { AgError } from '@australiangreens/ag-error';\n\n// Superclass for errors involving React context.\nexport class ContextError extends AgError {\n static errorName = 'ContextError';\n}\n","import { createContext } from 'react';\n\nimport { ContextError } from '../../errors/ContextError';\n\nconst stub: () => void = () => {\n throw new ContextError('SaladBarContext can only be used in a child of a <SaladBarProvider>');\n};\n\nexport type NotificationType = {\n key: number;\n message: string;\n severity: 'success' | 'info' | 'warning' | 'error' | undefined;\n variant: 'standard' | 'outlined' | 'filled' | undefined;\n progressIndicator: string | undefined;\n autoHideDuration: number | undefined;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst notstub = (key: unknown): NotificationType | NotificationType[] | void => {\n throw new ContextError('SaladBarContext can only be used in a child of a <SaladBarProvider>');\n};\n\ntype SaladBarContextFunction = typeof stub | typeof notstub;\n\ntype SaladBarContextType = {\n enqueueNotification: SaladBarContextFunction; // Call as enqueueNotification(options)\n // where options include message and severity of 'error' ,'warning', 'info' or\n // 'success'\n enqueueSuccessNotification: SaladBarContextFunction; // Call as const key =\n // enqueueSuccessNotification(msg),\n enqueueInfoNotification: SaladBarContextFunction; // Call as const key =\n // enqueueInfoNotification(msg),\n enqueueWarningNotification: SaladBarContextFunction; // Call as const key =\n // enqueueWarningNotification(msg),\n enqueueErrorNotification: SaladBarContextFunction; // Call as const key =\n // enqueueErrorNotification(msg),\n removeNotification: SaladBarContextFunction; // Call as enqueueErrorNotification(key),\n};\n\n// The defaultValue argument is only used when a component does not have a\n// matching Provider above it in the tree. See\n// https://reactjs.org/docs/context.html#reactcreatecontext\n// Using createContext doesn't itself maintain any type of state exactly, it\n// just provides a way for children to access shared references.\nconst defaultValue = {\n enqueueNotification: stub,\n enqueueSuccessNotification: stub,\n enqueueInfoNotification: stub,\n enqueueWarningNotification: stub,\n enqueueErrorNotification: stub,\n removeNotification: notstub,\n} as SaladBarContextType;\n\n/**\n * @returns A SaladBarContext\n */\nconst SaladBarContext = createContext(defaultValue);\n\nexport default SaladBarContext;\n","// The default props passed to the underlying Snackbar component\nimport { SnackbarOrigin } from '@mui/material/Snackbar';\n\nexport const defaultSnackbarProps = {\n autoHideDuration: 6000,\n anchorOrigin: { vertical: 'top', horizontal: 'center' } as SnackbarOrigin,\n\n // The default is false. If we prefer timer to continue when window loses\n // focus, change to true\n disableWindowBlurListener: false,\n};\n\nexport const defaultSaladBarProps = {\n shouldClose: (_event: Event | React.SyntheticEvent<Element, Event>, reason: string) => {\n return reason !== 'clickaway';\n },\n};\n\nexport const defaultEnqueueNotificationOptions = {\n message: '',\n severity: 'info',\n variant: 'standard',\n progressIndicator: undefined, // Can use 'circular' or 'linear'\n};\n","import React, { useRef, useState } from 'react';\nimport Snackbar, { SnackbarProps, SnackbarCloseReason } from '@mui/material/Snackbar';\nimport Alert from '@mui/material/Alert';\nimport LinearProgress from '@mui/material/LinearProgress';\nimport CircularProgress from '@mui/material/CircularProgress';\n\nimport SaladBarContext, { NotificationType } from './SaladBarContext';\nimport {\n defaultSaladBarProps,\n defaultSnackbarProps,\n defaultEnqueueNotificationOptions,\n} from './defaults';\n\nconst MAX_QUEUE_LENGTH = 100;\nconst MAX_QUEUE_HIT_REPORT_INTERVAL = 2000;\nconst SALADBAR_INDEX = 2000;\n\n// No need to use uuids, just use an incremented value\nconst generateNotificationKey = (() => {\n let previousKey = 0;\n return () => {\n previousKey += 1;\n return previousKey;\n };\n})();\n\nconst alertWithLinearProgressStyle = {\n borderBottomLeftRadius: '0px',\n borderBottomRightRadius: '0px',\n};\n\nexport type SaladBarCloseReason = SnackbarCloseReason | 'closeAlert';\n\nexport interface SaladBarProviderProps extends SnackbarProps {\n /** Called when an event triggers closing of currently displayed snackbar.\n * Default implementation returns false if reason is 'clickaway', otherwise\n * true.*/\n shouldClose?: (\n event: Event | React.SyntheticEvent<Element, Event>,\n reason: SaladBarCloseReason\n ) => boolean;\n}\n\nexport default function SaladBarProvider({\n children,\n shouldClose = defaultSaladBarProps.shouldClose,\n ...snackbarProps\n}: SaladBarProviderProps) {\n const [open, setOpen] = useState(false);\n\n // We use a ref instead of a state to store the actual data, because we want\n // queue to be persistent across the whole lifetime of component. I considered\n // using yocto-queue because it would be O(1) instead of O(n), but its not\n // designed to access the head without removing it and its not going to make\n // much difference anyway.\n const queueRef = useRef<NotificationType[]>([]);\n\n const limitLastHitAt = useRef(Date.now());\n const limitHitCountSinceLastReport = useRef(0);\n\n const enqueueNotification = (notification = {}) => {\n limitHitCountSinceLastReport.current += 1;\n if (queueRef.current.length >= MAX_QUEUE_LENGTH) {\n // If the queue length is hit, probably stuck in some sort of loop, so\n // don't want to spam logs instantly so space it out\n if (Date.now() - limitLastHitAt.current >= MAX_QUEUE_HIT_REPORT_INTERVAL) {\n limitLastHitAt.current = Date.now();\n console.error(\n `SaladBarProvider: MAX_QUEUE_LENGTH (${MAX_QUEUE_LENGTH}) hit ${limitHitCountSinceLastReport.current} times in last ${MAX_QUEUE_HIT_REPORT_INTERVAL}ms)`\n );\n limitHitCountSinceLastReport.current = 0;\n }\n }\n\n const newNotification = {\n ...defaultEnqueueNotificationOptions,\n key: generateNotificationKey(), // Can be overridden.\n ...notification, // This could result in collisons, but unlikely.\n };\n\n // Add to the end of queue\n queueRef.current.push(newNotification as NotificationType);\n\n // If the queue was previously empty, then open the snackbar. We don't do it\n // whenever enqueueNotification is called since it will mess up transitions\n if (queueRef.current.length === 1) setOpen(true);\n\n return newNotification.key;\n };\n\n const enqueueSuccessNotification = (message = '', options = {}) =>\n enqueueNotification({ message, severity: 'success', ...options });\n\n const enqueueInfoNotification = (message = '', options = {}) =>\n enqueueNotification({ message, severity: 'info', ...options });\n\n const enqueueWarningNotification = (message = '', options = {}) =>\n enqueueNotification({ message, severity: 'warning', ...options });\n\n const enqueueErrorNotification = (message = '', options = {}) =>\n enqueueNotification({ message, severity: 'error', ...options });\n\n /**\n * Remove the notification with specified key from the queue. If the key is\n * not found, immediately returns null.\n *\n * @param key - The key as returned from enqueue...() function.\n *\n * @returns The removed notification\n */\n const removeNotification = (key: unknown) => {\n const index = queueRef.current.findIndex((x) => x.key === key);\n if (index === -1) return;\n\n if (index === 0) {\n // If its at the front of the queue, it is either currently being\n // displayed or in process of being closed. Either way, we can just set\n // open to false\n setOpen(false);\n return queueRef.current[0];\n }\n // Otherwise we just remove it from the queue, it won't need to transition\n return queueRef.current.splice(index, 1);\n };\n\n const handleClose = (\n event: Event | React.SyntheticEvent<Element, Event>,\n reason: SaladBarCloseReason\n ) => {\n if (shouldClose(event, reason)) setOpen(false);\n };\n\n // Callback fired before the transition is exiting.\n const handleExit = () => {};\n\n // Callback fired when the transition has exited.\n const handleExited = () => {\n // Remove head of queue\n queueRef.current.shift();\n\n // If there is still something on the queue, then re-open\n if (queueRef.current.length > 0) setOpen(true);\n };\n\n // The notification to display is the one at head of queue\n const currentNotification = queueRef.current[0] ?? {\n ...defaultEnqueueNotificationOptions,\n };\n\n // Can also override certain props on a notification level\n const currentNotificationSnackbarProps: { autoHideDuration?: number } = {};\n // Probably a better way of doing this\n if ('autoHideDuration' in currentNotification) {\n currentNotificationSnackbarProps.autoHideDuration = currentNotification.autoHideDuration;\n }\n\n // Note the order of props in Snackbar, we don't allow overriding open and\n // onClose.\n\n const snackbarFinalProps = { ...defaultSnackbarProps, ...snackbarProps };\n\n return (\n // Should be resolved when we move to React >= 18\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n <SaladBarContext.Provider\n value={{\n enqueueNotification,\n enqueueSuccessNotification,\n enqueueInfoNotification,\n enqueueWarningNotification,\n enqueueErrorNotification,\n removeNotification,\n }}\n >\n {children}\n <Snackbar\n {...snackbarFinalProps}\n {...currentNotificationSnackbarProps}\n open={open}\n onClose={handleClose}\n TransitionProps={{\n onExited: handleExited,\n onExit: handleExit,\n }}\n sx={{ zIndex: SALADBAR_INDEX }}\n >\n <div>\n <Alert\n onClose={(event) => handleClose(event, 'closeAlert')}\n severity={currentNotification.severity}\n variant={'filled'}\n icon={\n currentNotification.progressIndicator === 'circular' ? (\n <CircularProgress size=\"1em\" />\n ) : undefined\n }\n style={\n currentNotification.progressIndicator === 'linear'\n ? alertWithLinearProgressStyle\n : undefined\n }\n >\n {currentNotification.message}\n </Alert>\n {currentNotification.progressIndicator === 'linear' && <LinearProgress color=\"primary\" />}\n </div>\n </Snackbar>\n </SaladBarContext.Provider>\n );\n}\n","import { useContext } from 'react';\nimport SaladBarContext from './SaladBarContext';\n\n/**\n * Use the `useSaladBar` hook in components to access the enqueueNotification()\n * method to add a snackbar message to queue.\n *\n * Example:\n *\n * ```js\n * const {\n * enqueueNotification,\n * enqueueSuccessNotification,\n * enqueueInfoNotification,\n * enqueueWarningNotification,\n * enqueueErrorNotification,\n * } = useSaladBar();\n * ...\n * enqueueNotification({message: 'hello', severity: 'info'});\n * // or\n * enqueueInfoNotification('hello');\n * ```\n */\nexport default function useSaladBar() {\n return useContext(SaladBarContext);\n}\n","/* eslint-disable react/prop-types */\n/* eslint-disable react/display-name */\nimport { createHelper } from 'souvlaki';\n\nimport SaladBarProvider from './SaladBarProvider';\n\nexport const withSaladBarProvider = createHelper(() => ({ children }) => (\n <SaladBarProvider>{children}</SaladBarProvider>\n));\n"],"names":["ExampleComponent","text","num","setNum","useState","jsxs","Fragment","jsx","Typography","Button","oldNum","Paper","TOP_STRIPE_HEIGHT","TITLE_BAR_HEIGHT","PREFIX","classes","Root","styled","prop","theme","leftPanel","rightPanel","__spreadValues","_a","_b","TopBar","titleText","dataTestId","Box","IconButton","ArrowForwardIcon","ArrowBackIcon","DEFAULT_PANEL_WIDTH","SidePanelDrawer","Drawer","width","debugOpacity","anchor","navBarOpen","navBarWidthOpen","navBarWidthClosed","DrawerHeaderBox","__spreadProps","SidePanel","children","open","onClose","showCloseArrow","headerBoxProps","onOpened","onClosed","PanelAwareMargins","PageContainer","Container","INITIAL_LEFT_PANEL_OPEN","INITIAL_RIGHT_PANEL_OPEN","PANEL_DEFAULTS","PageLayout","sidePanelsAreMutuallyExclusive","pageContainerProps","pageContentDataTestId","topBarDataTestId","leftPanelOpenInternal","setLeftPanelOpenInternal","rightPanelOpenInternal","setRightPanelOpenInternal","leftPanelOpenInternalPrevious","setLeftPanelOpenInternalPrevious","rightPanelOpenInternalPrevious","setRightPanelOpenInternalPrevious","includeLeftPanel","includeRightPanel","leftPanelTitleText","leftPanelContent","leftPanelFlavour","leftPanelOpen","leftPanelOnChangeOpen","leftPanelWidth","leftPanelArrowButtons","leftPanelStartOpen","leftPanelOnOpened","leftPanelOnClosed","leftPanelDataTestId","rightPanelTitleText","rightPanelContent","rightPanelFlavour","rightPanelOpen","rightPanelOnChangeOpen","rightPanelWidth","rightPanelArrowButtons","rightPanelStartOpen","rightPanelOnOpened","rightPanelOnClosed","rightPanelDataTestId","useEffect","leftPanelOpenCurrent","rightPanelOpenCurrent","handleLeftPanelChangeOpen","handleRightPanelChangeOpen","internalAGSystemsTheme","createTheme","alpha","fed21Theme","AgThemeProvider","name","ThemeProvider","ContextError","AgError","__publicField","stub","notstub","key","defaultValue","SaladBarContext","createContext","defaultSnackbarProps","defaultSaladBarProps","_event","reason","defaultEnqueueNotificationOptions","MAX_QUEUE_LENGTH","MAX_QUEUE_HIT_REPORT_INTERVAL","SALADBAR_INDEX","generateNotificationKey","previousKey","alertWithLinearProgressStyle","SaladBarProvider","shouldClose","snackbarProps","__objRest","setOpen","queueRef","useRef","limitLastHitAt","limitHitCountSinceLastReport","enqueueNotification","notification","newNotification","enqueueSuccessNotification","message","options","enqueueInfoNotification","enqueueWarningNotification","enqueueErrorNotification","removeNotification","index","x","handleClose","event","handleExit","handleExited","currentNotification","currentNotificationSnackbarProps","snackbarFinalProps","Snackbar","Alert","CircularProgress","LinearProgress","useSaladBar","useContext","withSaladBarProvider","createHelper"],"mappings":"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"}
|
|
@@ -9,6 +9,6 @@ declare const PageContainer: import("@emotion/styled").StyledComponent<Pick<{
|
|
|
9
9
|
sx?: import("@mui/material").SxProps<import("@mui/material").Theme> | undefined;
|
|
10
10
|
} & import("@mui/material/OverridableComponent").CommonProps & Omit<Pick<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "key" | keyof import("react").HTMLAttributes<HTMLDivElement>> & {
|
|
11
11
|
ref?: ((instance: HTMLDivElement | null) => void) | import("react").RefObject<HTMLDivElement> | null | undefined;
|
|
12
|
-
}, keyof import("@mui/material/OverridableComponent").CommonProps | "maxWidth" | "children" | "sx" | "fixed" | "disableGutters">, keyof import("@mui/material/OverridableComponent").CommonProps | "color" | "maxWidth" | "translate" | "children" | "sx" | "ref" | "slot" | "title" | "key" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "hidden" | "id" | "lang" | "placeholder" | "spellCheck" | "tabIndex" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "fixed" | "disableGutters"> & import("@mui/system").MUIStyledCommonProps<import("@mui/material").Theme>, {}, {}>;
|
|
12
|
+
}, keyof import("@mui/material/OverridableComponent").CommonProps | "maxWidth" | "children" | "sx" | "fixed" | "disableGutters">, keyof import("@mui/material/OverridableComponent").CommonProps | "color" | "maxWidth" | "translate" | "children" | "sx" | "ref" | "slot" | "title" | "key" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "hidden" | "id" | "lang" | "nonce" | "placeholder" | "spellCheck" | "tabIndex" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onResize" | "onResizeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "fixed" | "disableGutters"> & import("@mui/system").MUIStyledCommonProps<import("@mui/material").Theme>, {}, {}>;
|
|
13
13
|
export default PageContainer;
|
|
14
14
|
//# sourceMappingURL=PageContainer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PageContainer.d.ts","sourceRoot":"","sources":["../../../../src/components/PageLayout/PageContainer.tsx"],"names":[],"mappings":";AAGA,0DAA0D;AAC1D,QAAA,MAAM,aAAa;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"PageContainer.d.ts","sourceRoot":"","sources":["../../../../src/components/PageLayout/PageContainer.tsx"],"names":[],"mappings":";AAGA,0DAA0D;AAC1D,QAAA,MAAM,aAAa;;;;;;;;;y1JAMhB,CAAC;AAEJ,eAAe,aAAa,CAAC"}
|
package/dist/esm/index.js
CHANGED
|
@@ -38,7 +38,8 @@ import Gt from "@mui/material/Alert";
|
|
|
38
38
|
import Ut from "@mui/material/LinearProgress";
|
|
39
39
|
import Wt from "@mui/material/CircularProgress";
|
|
40
40
|
import { AgError as Xt } from "@australiangreens/ag-error";
|
|
41
|
-
|
|
41
|
+
import { createHelper as jt } from "souvlaki";
|
|
42
|
+
function ke({ text: t }) {
|
|
42
43
|
const [e, n] = b(0);
|
|
43
44
|
return /* @__PURE__ */ l(q, { children: [
|
|
44
45
|
/* @__PURE__ */ i(E, { variant: "h6", color: "inherit", component: "div", sx: { fontSize: "22px" }, children: "Hello world" }),
|
|
@@ -62,14 +63,14 @@ function Pe({ text: t }) {
|
|
|
62
63
|
] })
|
|
63
64
|
] });
|
|
64
65
|
}
|
|
65
|
-
const
|
|
66
|
+
const Qt = 24, Vt = 64, C = "TopBar", u = {
|
|
66
67
|
topStripe: `${C}-topStripe`,
|
|
67
68
|
titleBar: `${C}-titleBar`,
|
|
68
69
|
titleSlider: `${C}-titleSlider`,
|
|
69
70
|
titleText: `${C}-titleText`,
|
|
70
71
|
leftPanelButton: `${C}-leftPanelButton`,
|
|
71
72
|
rightPanelButton: `${C}-leftPanelButton`
|
|
72
|
-
},
|
|
73
|
+
}, Kt = k("div", {
|
|
73
74
|
shouldForwardProp: (t) => !["leftPanel", "rightPanel"].includes(t),
|
|
74
75
|
name: C
|
|
75
76
|
})(({ theme: t, leftPanel: e, rightPanel: n }) => {
|
|
@@ -78,12 +79,12 @@ const jt = 24, Qt = 64, C = "TopBar", u = {
|
|
|
78
79
|
width: "100%",
|
|
79
80
|
[`& .${u.topStripe}`]: {
|
|
80
81
|
width: "100%",
|
|
81
|
-
height: `${
|
|
82
|
+
height: `${Qt}px`,
|
|
82
83
|
backgroundColor: t.palette.primary.main
|
|
83
84
|
},
|
|
84
85
|
[`& .${u.titleBar}`]: {
|
|
85
86
|
backgroundColor: t.palette.primary.light,
|
|
86
|
-
height: `${
|
|
87
|
+
height: `${Vt}px`,
|
|
87
88
|
padding: t.spacing(0, 3),
|
|
88
89
|
width: "100%"
|
|
89
90
|
},
|
|
@@ -121,13 +122,13 @@ const jt = 24, Qt = 64, C = "TopBar", u = {
|
|
|
121
122
|
})
|
|
122
123
|
};
|
|
123
124
|
});
|
|
124
|
-
function
|
|
125
|
+
function Jt({
|
|
125
126
|
titleText: t = "",
|
|
126
127
|
leftPanel: e,
|
|
127
128
|
rightPanel: n,
|
|
128
129
|
"data-testid": o
|
|
129
130
|
}) {
|
|
130
|
-
return /* @__PURE__ */ l(
|
|
131
|
+
return /* @__PURE__ */ l(Kt, { leftPanel: e, rightPanel: n, "data-testid": o, children: [
|
|
131
132
|
/* @__PURE__ */ i("div", { className: u.topStripe }),
|
|
132
133
|
/* @__PURE__ */ i("div", { className: u.titleBar, children: /* @__PURE__ */ l(xt, { className: u.titleSlider, children: [
|
|
133
134
|
e !== void 0 && !e.open && e.showOpenArrow && /* @__PURE__ */ l(
|
|
@@ -164,7 +165,7 @@ function Kt({
|
|
|
164
165
|
] }) })
|
|
165
166
|
] });
|
|
166
167
|
}
|
|
167
|
-
const Ft = 400,
|
|
168
|
+
const Ft = 400, Yt = k(_t, {
|
|
168
169
|
shouldForwardProp: (t) => (
|
|
169
170
|
// Note we do want anchor to be forwarded to the Drawer component
|
|
170
171
|
![
|
|
@@ -194,7 +195,7 @@ const Ft = 400, Jt = k(_t, {
|
|
|
194
195
|
marginLeft: `${c}px`
|
|
195
196
|
}))
|
|
196
197
|
})
|
|
197
|
-
),
|
|
198
|
+
), Zt = k(Ht, {
|
|
198
199
|
shouldForwardProp: (t) => !["anchor"].includes(t)
|
|
199
200
|
})(({ theme: t, anchor: e }) => v(r({
|
|
200
201
|
display: "flex",
|
|
@@ -233,7 +234,7 @@ function ft({
|
|
|
233
234
|
navBarWidthClosed: y = 0
|
|
234
235
|
}) {
|
|
235
236
|
return /* @__PURE__ */ l(
|
|
236
|
-
|
|
237
|
+
Yt,
|
|
237
238
|
{
|
|
238
239
|
SlideProps: {
|
|
239
240
|
onEntered: () => f == null ? void 0 : f(),
|
|
@@ -249,7 +250,7 @@ function ft({
|
|
|
249
250
|
navBarWidthOpen: x,
|
|
250
251
|
navBarWidthClosed: y,
|
|
251
252
|
children: [
|
|
252
|
-
/* @__PURE__ */ i(
|
|
253
|
+
/* @__PURE__ */ i(Zt, v(r({ anchor: e }, F), { children: e === "left" ? /* @__PURE__ */ l(q, { children: [
|
|
253
254
|
/* @__PURE__ */ i(E, { variant: "h6", color: "inherit", component: "div", children: c }),
|
|
254
255
|
h && /* @__PURE__ */ l(ut, { onClick: o, size: "large", "aria-label": "Close left side panel", children: [
|
|
255
256
|
/* @__PURE__ */ i(vt, { "data-testid": "arrowbackicon" }),
|
|
@@ -267,7 +268,7 @@ function ft({
|
|
|
267
268
|
}
|
|
268
269
|
);
|
|
269
270
|
}
|
|
270
|
-
const
|
|
271
|
+
const te = k("div", {
|
|
271
272
|
shouldForwardProp: (t) => !["leftPanel", "rightPanel"].includes(t),
|
|
272
273
|
name: "PanelAwareMargins"
|
|
273
274
|
})(({ theme: t, leftPanel: e, rightPanel: n }) => {
|
|
@@ -290,7 +291,7 @@ const Zt = k("div", {
|
|
|
290
291
|
}),
|
|
291
292
|
marginRight: `${(c = n == null ? void 0 : n.width) != null ? c : 0}px`
|
|
292
293
|
});
|
|
293
|
-
}),
|
|
294
|
+
}), ee = k(Mt, {
|
|
294
295
|
name: "PageContainer"
|
|
295
296
|
})(({ theme: t }) => ({
|
|
296
297
|
// Horizontal padding comes from the Container's gutter
|
|
@@ -309,7 +310,7 @@ const Zt = k("div", {
|
|
|
309
310
|
onClosed: void 0,
|
|
310
311
|
dataTestId: void 0
|
|
311
312
|
};
|
|
312
|
-
function
|
|
313
|
+
function Ne({
|
|
313
314
|
children: t,
|
|
314
315
|
titleText: e = "",
|
|
315
316
|
leftPanel: n,
|
|
@@ -398,7 +399,7 @@ function Ae({
|
|
|
398
399
|
}
|
|
399
400
|
),
|
|
400
401
|
/* @__PURE__ */ i(
|
|
401
|
-
|
|
402
|
+
Jt,
|
|
402
403
|
r(r({
|
|
403
404
|
titleText: e,
|
|
404
405
|
"data-testid": F
|
|
@@ -419,7 +420,7 @@ function Ae({
|
|
|
419
420
|
} : {})
|
|
420
421
|
),
|
|
421
422
|
/* @__PURE__ */ i(
|
|
422
|
-
|
|
423
|
+
te,
|
|
423
424
|
v(r(r({}, a === "push" ? {
|
|
424
425
|
leftPanel: {
|
|
425
426
|
open: j,
|
|
@@ -431,12 +432,12 @@ function Ae({
|
|
|
431
432
|
width: X
|
|
432
433
|
}
|
|
433
434
|
} : {}), {
|
|
434
|
-
children: /* @__PURE__ */ i(
|
|
435
|
+
children: /* @__PURE__ */ i(ee, v(r({ "data-testid": d }, h), { children: t }))
|
|
435
436
|
})
|
|
436
437
|
)
|
|
437
438
|
] });
|
|
438
439
|
}
|
|
439
|
-
const
|
|
440
|
+
const ne = Ct({
|
|
440
441
|
palette: {
|
|
441
442
|
primary: {
|
|
442
443
|
main: "#007236",
|
|
@@ -524,7 +525,7 @@ const ee = Ct({
|
|
|
524
525
|
fontWeight: 700
|
|
525
526
|
}
|
|
526
527
|
}
|
|
527
|
-
}),
|
|
528
|
+
}), re = Ct({
|
|
528
529
|
palette: {
|
|
529
530
|
primary: {
|
|
530
531
|
dark: "#00A651",
|
|
@@ -573,33 +574,33 @@ const ee = Ct({
|
|
|
573
574
|
}
|
|
574
575
|
}
|
|
575
576
|
});
|
|
576
|
-
function
|
|
577
|
+
function De({
|
|
577
578
|
name: t = "internal",
|
|
578
579
|
children: e
|
|
579
580
|
}) {
|
|
580
|
-
return /* @__PURE__ */ i(zt, { theme: t === "internal" ?
|
|
581
|
+
return /* @__PURE__ */ i(zt, { theme: t === "internal" ? ne : t === "fed21" ? re : void 0, children: e });
|
|
581
582
|
}
|
|
582
583
|
class tt extends Xt {
|
|
583
584
|
}
|
|
584
585
|
lt(tt, "errorName", "ContextError");
|
|
585
586
|
const A = () => {
|
|
586
587
|
throw new tt("SaladBarContext can only be used in a child of a <SaladBarProvider>");
|
|
587
|
-
},
|
|
588
|
+
}, oe = (t) => {
|
|
588
589
|
throw new tt("SaladBarContext can only be used in a child of a <SaladBarProvider>");
|
|
589
|
-
},
|
|
590
|
+
}, ie = {
|
|
590
591
|
enqueueNotification: A,
|
|
591
592
|
enqueueSuccessNotification: A,
|
|
592
593
|
enqueueInfoNotification: A,
|
|
593
594
|
enqueueWarningNotification: A,
|
|
594
595
|
enqueueErrorNotification: A,
|
|
595
|
-
removeNotification:
|
|
596
|
-
}, Ot = Dt(
|
|
596
|
+
removeNotification: oe
|
|
597
|
+
}, Ot = Dt(ie), ae = {
|
|
597
598
|
autoHideDuration: 6e3,
|
|
598
599
|
anchorOrigin: { vertical: "top", horizontal: "center" },
|
|
599
600
|
// The default is false. If we prefer timer to continue when window loses
|
|
600
601
|
// focus, change to true
|
|
601
602
|
disableWindowBlurListener: !1
|
|
602
|
-
},
|
|
603
|
+
}, se = {
|
|
603
604
|
shouldClose: (t, e) => e !== "clickaway"
|
|
604
605
|
}, gt = {
|
|
605
606
|
message: "",
|
|
@@ -607,17 +608,17 @@ const A = () => {
|
|
|
607
608
|
variant: "standard",
|
|
608
609
|
progressIndicator: void 0
|
|
609
610
|
// Can use 'circular' or 'linear'
|
|
610
|
-
}, ht = 100, mt = 2e3,
|
|
611
|
+
}, ht = 100, mt = 2e3, ce = 2e3, le = (() => {
|
|
611
612
|
let t = 0;
|
|
612
613
|
return () => (t += 1, t);
|
|
613
|
-
})(),
|
|
614
|
+
})(), de = {
|
|
614
615
|
borderBottomLeftRadius: "0px",
|
|
615
616
|
borderBottomRightRadius: "0px"
|
|
616
617
|
};
|
|
617
|
-
function
|
|
618
|
+
function pe(o) {
|
|
618
619
|
var c = o, {
|
|
619
620
|
children: t,
|
|
620
|
-
shouldClose: e =
|
|
621
|
+
shouldClose: e = se.shouldClose
|
|
621
622
|
} = c, n = ct(c, [
|
|
622
623
|
"children",
|
|
623
624
|
"shouldClose"
|
|
@@ -628,7 +629,7 @@ function ke(o) {
|
|
|
628
629
|
`SaladBarProvider: MAX_QUEUE_LENGTH (${ht}) hit ${f.current} times in last ${mt}ms)`
|
|
629
630
|
), f.current = 0);
|
|
630
631
|
const a = r(v(r({}, gt), {
|
|
631
|
-
key:
|
|
632
|
+
key: le()
|
|
632
633
|
}), s);
|
|
633
634
|
return d.current.push(a), d.current.length === 1 && h(!0), a.key;
|
|
634
635
|
}, O = (s = "", a = {}) => p(r({ message: s, severity: "success" }, a)), T = (s = "", a = {}) => p(r({ message: s, severity: "info" }, a)), x = (s = "", a = {}) => p(r({ message: s, severity: "warning" }, a)), y = (s = "", a = {}) => p(r({ message: s, severity: "error" }, a)), S = (s) => {
|
|
@@ -642,7 +643,7 @@ function ke(o) {
|
|
|
642
643
|
d.current.shift(), d.current.length > 0 && h(!0);
|
|
643
644
|
}, g = (L = d.current[0]) != null ? L : r({}, gt), B = {};
|
|
644
645
|
"autoHideDuration" in g && (B.autoHideDuration = g.autoHideDuration);
|
|
645
|
-
const I = r(r({},
|
|
646
|
+
const I = r(r({}, ae), n);
|
|
646
647
|
return (
|
|
647
648
|
// Should be resolved when we move to React >= 18
|
|
648
649
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
@@ -669,7 +670,7 @@ function ke(o) {
|
|
|
669
670
|
onExited: G,
|
|
670
671
|
onExit: D
|
|
671
672
|
},
|
|
672
|
-
sx: { zIndex:
|
|
673
|
+
sx: { zIndex: ce },
|
|
673
674
|
children: /* @__PURE__ */ l("div", { children: [
|
|
674
675
|
/* @__PURE__ */ i(
|
|
675
676
|
Gt,
|
|
@@ -678,7 +679,7 @@ function ke(o) {
|
|
|
678
679
|
severity: g.severity,
|
|
679
680
|
variant: "filled",
|
|
680
681
|
icon: g.progressIndicator === "circular" ? /* @__PURE__ */ i(Wt, { size: "1em" }) : void 0,
|
|
681
|
-
style: g.progressIndicator === "linear" ?
|
|
682
|
+
style: g.progressIndicator === "linear" ? de : void 0,
|
|
682
683
|
children: g.message
|
|
683
684
|
}
|
|
684
685
|
),
|
|
@@ -691,15 +692,17 @@ function ke(o) {
|
|
|
691
692
|
)
|
|
692
693
|
);
|
|
693
694
|
}
|
|
694
|
-
function
|
|
695
|
+
function Le() {
|
|
695
696
|
return Lt(Ot);
|
|
696
697
|
}
|
|
698
|
+
const $e = jt(() => ({ children: t }) => /* @__PURE__ */ i(pe, { children: t }));
|
|
697
699
|
export {
|
|
698
|
-
|
|
700
|
+
De as AgThemeProvider,
|
|
699
701
|
tt as ContextError,
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
702
|
+
ke as ExampleComponent,
|
|
703
|
+
Ne as PageLayout,
|
|
704
|
+
pe as SaladBarProvider,
|
|
705
|
+
Le as useSaladBar,
|
|
706
|
+
$e as withSaladBarProvider
|
|
704
707
|
};
|
|
705
708
|
//# sourceMappingURL=index.js.map
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/components/ExampleComponent/index.tsx","../../src/components/PageLayout/TopBar.tsx","../../src/components/PageLayout/SidePanel.tsx","../../src/components/PageLayout/PanelAwareMargins.tsx","../../src/components/PageLayout/PageContainer.tsx","../../src/components/PageLayout/index.tsx","../../src/providers/AgTheme/themes.ts","../../src/providers/AgTheme/index.tsx","../../src/errors/ContextError.ts","../../src/providers/SaladBar/SaladBarContext.ts","../../src/providers/SaladBar/defaults.ts","../../src/providers/SaladBar/SaladBarProvider.tsx","../../src/providers/SaladBar/useSaladBar.ts"],"sourcesContent":["import { useState } from 'react';\nimport Button from '@mui/material/Button';\nimport Paper from '@mui/material/Paper';\nimport Typography from '@mui/material/Typography';\n\nexport interface ExampleComponentProps {\n text: string;\n}\n\nexport default function ExampleComponent({ text }: ExampleComponentProps) {\n const [num, setNum] = useState(0);\n\n return (\n <>\n <Typography variant=\"h6\" color=\"inherit\" component=\"div\" sx={{ fontSize: '22px' }}>\n Hello world\n </Typography>\n\n <Typography variant=\"caption\" display=\"block\">\n <span>Just ensuring MUI is working as planned as a peer dependency. v0.0.11</span>\n </Typography>\n <Button\n variant=\"outlined\"\n onClick={() => setNum((oldNum) => oldNum + 1)}\n aria-label=\"Increment\"\n >\n Hello I am a button\n </Button>\n <p>\n This is some text: <span>{text}</span>\n </p>\n <Paper>This number will incremember when button pressed: {num}</Paper>\n </>\n );\n}\n","import { Box, IconButton, styled } from '@mui/material';\nimport Typography from '@mui/material/Typography';\nimport ArrowForwardIcon from '@mui/icons-material/ArrowForward';\nimport ArrowBackIcon from '@mui/icons-material/ArrowBack';\n\nconst TOP_STRIPE_HEIGHT = 24;\nconst TITLE_BAR_HEIGHT = 64;\n\nconst PREFIX = 'TopBar';\n\ninterface PanelProps {\n open: boolean;\n width: number;\n showOpenArrow: boolean;\n\n /** Called when the arrow button is pressed (if showOpenButton is true) */\n onOpen?: () => void;\n\n showOpenButton?: boolean;\n}\n\nexport interface TopBarProps {\n titleText?: string;\n leftPanel?: PanelProps;\n rightPanel?: PanelProps;\n 'data-testid'?: string;\n}\n\nexport const classes = {\n topStripe: `${PREFIX}-topStripe`,\n titleBar: `${PREFIX}-titleBar`,\n titleSlider: `${PREFIX}-titleSlider`,\n\n titleText: `${PREFIX}-titleText`,\n leftPanelButton: `${PREFIX}-leftPanelButton`,\n rightPanelButton: `${PREFIX}-leftPanelButton`,\n};\n\ninterface RootProps {\n leftPanel?: PanelProps;\n rightPanel?: PanelProps;\n}\n\nconst Root = styled('div', {\n shouldForwardProp: (prop) => !(['leftPanel', 'rightPanel'] as Array<PropertyKey>).includes(prop),\n name: PREFIX,\n})<RootProps>(({ theme, leftPanel, rightPanel }) => ({\n width: '100%',\n\n [`& .${classes.topStripe}`]: {\n width: '100%',\n height: `${TOP_STRIPE_HEIGHT}px`,\n backgroundColor: theme.palette.primary.main,\n },\n\n [`& .${classes.titleBar}`]: {\n backgroundColor: theme.palette.primary.light,\n height: `${TITLE_BAR_HEIGHT}px`,\n padding: theme.spacing(0, 3),\n width: '100%',\n },\n\n [`& .${classes.titleSlider}`]: {\n height: '100%',\n display: 'flex',\n alignItems: 'center',\n color: 'white',\n\n transition: theme.transitions.create('margin', {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.leavingScreen,\n }),\n\n [`& .${classes.leftPanelButton}`]: {\n marginRight: theme.spacing(2),\n flexGrow: 0,\n },\n\n [`& .${classes.titleText}`]: {\n flexGrow: 1,\n },\n\n [`& .${classes.rightPanelButton}`]: {\n flexGrow: 0,\n },\n\n ...(leftPanel?.open && {\n transition: theme.transitions.create('margin', {\n easing: theme.transitions.easing.easeOut,\n duration: theme.transitions.duration.enteringScreen,\n }),\n marginLeft: `${leftPanel?.width ?? 0}px`,\n }),\n\n ...(rightPanel?.open && {\n transition: theme.transitions.create('margin', {\n easing: theme.transitions.easing.easeOut,\n duration: theme.transitions.duration.enteringScreen,\n }),\n marginRight: `${rightPanel?.width ?? 0}px`,\n }),\n },\n}));\n\n/**\n * Goes at the top of every page. Wasn't feeling creative in naming it.\n *\n * This differs from the typical appbar with a toolbar used in most MUI apps in\n * that it has to interact with a sliding side panel that is not the main\n * navbar.\n */\nexport default function TopBar({\n titleText = '',\n leftPanel,\n rightPanel,\n 'data-testid': dataTestId,\n}: TopBarProps) {\n return (\n <Root leftPanel={leftPanel} rightPanel={rightPanel} data-testid={dataTestId}>\n <div className={classes.topStripe} />\n <div className={classes.titleBar}>\n <Box className={classes.titleSlider}>\n {leftPanel !== undefined && !leftPanel.open && leftPanel.showOpenArrow && (\n <IconButton\n className={classes.leftPanelButton}\n color=\"inherit\"\n aria-label=\"Open left side panel\"\n onClick={leftPanel?.onOpen}\n edge=\"start\"\n size=\"large\"\n >\n {' '}\n <ArrowForwardIcon />\n </IconButton>\n )}\n\n <Typography className={classes.titleText} variant=\"h6\" noWrap>\n {titleText}\n </Typography>\n\n {rightPanel !== undefined && !rightPanel.open && rightPanel.showOpenArrow && (\n <IconButton\n className={classes.rightPanelButton}\n color=\"inherit\"\n aria-label=\"Open right side panel\"\n onClick={rightPanel?.onOpen}\n edge=\"end\"\n size=\"large\"\n >\n {' '}\n <ArrowBackIcon />\n </IconButton>\n )}\n </Box>\n </div>\n </Root>\n );\n}\n","import { PropsWithChildren } from 'react';\nimport ArrowBackIcon from '@mui/icons-material/ArrowBack';\nimport ArrowForwardIcon from '@mui/icons-material/ArrowForward';\nimport Drawer, { DrawerProps } from '@mui/material/Drawer';\nimport Box, { BoxProps } from '@mui/material/Box';\nimport Typography from '@mui/material/Typography';\nimport IconButton from '@mui/material/IconButton';\nimport { styled } from '@mui/material';\n\nexport const DEFAULT_PANEL_WIDTH = 400;\n\ninterface SidePanelDrawerProps extends DrawerProps {\n anchor: 'left' | 'right';\n width?: number;\n debugOpacity?: boolean;\n navBarOpen: boolean;\n navBarWidthOpen: number;\n navBarWidthClosed: number;\n}\n\nconst SidePanelDrawer = styled(Drawer, {\n shouldForwardProp: (prop) =>\n // Note we do want anchor to be forwarded to the Drawer component\n !(\n [\n 'width',\n 'debug',\n 'debugOpacity',\n 'navBarOpen',\n 'navBarWidthOpen',\n 'navBarWidthClosed',\n ] as Array<PropertyKey>\n ).includes(prop),\n name: 'SidePanelDrawer',\n})<SidePanelDrawerProps>(\n ({ width, debugOpacity = false, anchor, navBarOpen, navBarWidthOpen, navBarWidthClosed }) => ({\n width,\n\n '& .MuiDrawer-paper': {\n position: 'absolute',\n width,\n boxSizing: 'border-box',\n border: 'unset',\n boxShadow:\n '0px 4px 5px rgba(0, 0, 0, 0.14), 0px 1px 10px rgba(0, 0, 0, 0.12), 0px 2px 4px rgba(0, 0, 0, 0.2)',\n\n ...(debugOpacity && {\n opacity: '50%',\n }),\n\n ...(anchor === 'left' && {\n marginLeft: `${navBarWidthClosed}px`,\n ...(navBarOpen && {\n marginLeft: `${navBarWidthOpen}px`,\n }),\n }),\n },\n })\n);\n\ninterface DrawerHeaderBoxProps {\n anchor: 'left' | 'right';\n}\n\nconst DrawerHeaderBox = styled(Box, {\n shouldForwardProp: (prop) => !(['anchor'] as Array<PropertyKey>).includes(prop),\n})<DrawerHeaderBoxProps>(({ theme, anchor }) => ({\n display: 'flex',\n alignItems: 'center',\n padding: theme.spacing(2),\n ...theme.mixins.toolbar,\n justifyContent: anchor === 'left' ? 'space-between' : 'flex-start',\n backgroundColor: theme.palette.primary.light,\n height: '88px',\n\n '&,*': {\n color: 'white',\n },\n\n ' .MuiTypography-root': {\n fontSize: '22px',\n },\n\n ' .MuiButtonBase-root': {\n marginRight: anchor === 'right' ? theme.spacing(2) : 0,\n },\n}));\n\ntype SidePanelProps = PropsWithChildren<{\n open: boolean;\n anchor?: 'left' | 'right';\n onClose?: React.MouseEventHandler<HTMLElement>;\n titleText?: string;\n width?: number;\n showCloseArrow?: boolean;\n debugOpacity?: boolean;\n headerBoxProps?: BoxProps;\n onOpened?: () => void;\n onClosed?: () => void;\n 'data-testid'?: string;\n navBarOpen?: boolean;\n navBarWidthOpen?: number;\n navBarWidthClosed?: number;\n}>;\n\n/**\n * The SidePanel is designed to be used along with the TopBar component for a\n * consistent look and feel.\n */\nexport default function SidePanel({\n children,\n anchor = 'left',\n open,\n onClose = () => {},\n titleText = '',\n width = DEFAULT_PANEL_WIDTH,\n showCloseArrow = true,\n debugOpacity = false,\n headerBoxProps = {},\n onOpened,\n onClosed,\n 'data-testid': dataTestId,\n navBarOpen = false,\n navBarWidthOpen = 0,\n navBarWidthClosed = 0,\n}: SidePanelProps) {\n return (\n <SidePanelDrawer\n SlideProps={{\n onEntered: () => onOpened?.(),\n onExited: () => onClosed?.(),\n }}\n variant=\"persistent\"\n anchor={anchor}\n open={open}\n width={width}\n debugOpacity={debugOpacity}\n data-testid={dataTestId}\n navBarOpen={navBarOpen}\n navBarWidthOpen={navBarWidthOpen}\n navBarWidthClosed={navBarWidthClosed}\n >\n <DrawerHeaderBox anchor={anchor} {...headerBoxProps}>\n {/* Might be a cleaner way to do this, but it does the job */}\n {anchor === 'left' ? (\n <>\n <Typography variant=\"h6\" color=\"inherit\" component=\"div\">\n {titleText}\n </Typography>\n\n {showCloseArrow && (\n <IconButton onClick={onClose} size=\"large\" aria-label=\"Close left side panel\">\n <ArrowBackIcon data-testid=\"arrowbackicon\" />{' '}\n </IconButton>\n )}\n </>\n ) : (\n <>\n {showCloseArrow && (\n <IconButton onClick={onClose} size=\"large\" aria-label=\"Close right side panel\">\n <ArrowForwardIcon />{' '}\n </IconButton>\n )}\n\n <Typography variant=\"h6\" color=\"inherit\" component=\"div\">\n {titleText}\n </Typography>\n </>\n )}\n </DrawerHeaderBox>\n {children}\n </SidePanelDrawer>\n );\n}\n","import { styled } from '@mui/material';\n\ninterface PanelProps {\n width: number;\n open: boolean;\n}\n\ninterface PanelAwareMarginsProps {\n /** If the leftPanel prop is omitted but a left panel is still in use on the\n * page, it will slide over the top instead of the default pushing */\n leftPanel?: PanelProps;\n\n /** If the rightPanel prop is omitted but a right panel is still in use on the\n * page, it will slide over the top instead of the default pushing */\n rightPanel?: PanelProps;\n}\n\n/** With the optional leftPanel and rightPanel props providing state and width,\n * the children of of the PanelAwareMargins will looks like they is pushed aside\n * by the panels by transitioning the margins. */\nconst PanelAwareMargins = styled('div', {\n shouldForwardProp: (prop) => !(['leftPanel', 'rightPanel'] as Array<PropertyKey>).includes(prop),\n name: 'PanelAwareMargins',\n})<PanelAwareMarginsProps>(({ theme, leftPanel, rightPanel }) => ({\n transition: theme.transitions.create('margin', {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.leavingScreen,\n }),\n\n ...(leftPanel?.open && {\n transition: theme.transitions.create('margin', {\n easing: theme.transitions.easing.easeOut,\n duration: theme.transitions.duration.enteringScreen,\n }),\n marginLeft: `${leftPanel?.width ?? 0}px`,\n }),\n ...(rightPanel?.open && {\n transition: theme.transitions.create('margin', {\n easing: theme.transitions.easing.easeOut,\n duration: theme.transitions.duration.enteringScreen,\n }),\n marginRight: `${rightPanel?.width ?? 0}px`,\n }),\n}));\n\nexport default PanelAwareMargins;\n","import { styled } from '@mui/material';\nimport Container from '@mui/material/Container';\n\n/** Just a simple styled container applying our spacings*/\nconst PageContainer = styled(Container, {\n name: 'PageContainer',\n})(({ theme }) => ({\n // Horizontal padding comes from the Container's gutter\n paddingTop: theme.spacing(3),\n paddingBottom: theme.spacing(3),\n}));\n\nexport default PageContainer;\n","import { ComponentProps, PropsWithChildren, ReactNode, useEffect, useState } from 'react';\nimport { Box } from '@mui/material';\n\nimport TopBar from './TopBar';\nimport SidePanel, { DEFAULT_PANEL_WIDTH } from './SidePanel';\nimport PanelAwareMargins from './PanelAwareMargins';\nimport PageContainer from './PageContainer';\n\nconst INITIAL_LEFT_PANEL_OPEN = false;\nconst INITIAL_RIGHT_PANEL_OPEN = false;\n\nconst PANEL_DEFAULTS = {\n titleText: '',\n flavour: 'push',\n width: DEFAULT_PANEL_WIDTH,\n arrowButtons: 'both',\n startOpen: false,\n open: undefined,\n onChangeOpen: undefined,\n content: <></>,\n onOpened: undefined,\n onClosed: undefined,\n dataTestId: undefined,\n};\n\ninterface SidePanelProps {\n titleText?: string;\n content?: ReactNode;\n flavour?: 'push' | 'overlay';\n arrowButtons?: 'open' | 'close' | 'both' | 'none';\n width?: number;\n startOpen?: boolean;\n\n /** Use this and onChangeOpen if you want to use component as a controlled component */\n open?: boolean;\n onChangeOpen?: (open: boolean) => void;\n\n /** Called when the sliding transition to open has finished */\n onOpened?: () => void;\n\n /** Called when the sliding transition to open has finished */\n onClosed?: () => void;\n\n dataTestId?: string;\n}\n\ninterface BasePageLayoutProps {\n titleText?: string;\n\n leftPanel?: SidePanelProps;\n rightPanel?: SidePanelProps;\n\n /** This will only have an effect for panels whose state is not controlled by\n * parent */\n sidePanelsAreMutuallyExclusive?: boolean;\n\n /** Temporary, get rid of later */\n debugOpacity?: boolean;\n\n /** Props applied to the PageContainer component, which is a styled MUI Container */\n pageContainerProps?: ComponentProps<typeof PageContainer>;\n\n topBarDataTestId?: string;\n pageContentDataTestId?: string;\n}\n\ninterface PageLayoutWithNavBarProps extends BasePageLayoutProps {\n navBarOpen: boolean;\n navBarWidthOpen: number;\n navBarWidthClosed: number;\n}\n\ninterface PagelayoutWithoutNavBarProps extends BasePageLayoutProps {\n navBarOpen?: never;\n navBarWidthOpen?: never;\n navBarWidthClosed?: never;\n}\n\nexport type PageLayoutProps = PropsWithChildren<\n PageLayoutWithNavBarProps | PagelayoutWithoutNavBarProps\n>;\n\nexport default function PageLayout({\n children,\n titleText = '',\n leftPanel,\n rightPanel,\n sidePanelsAreMutuallyExclusive = true,\n debugOpacity = false,\n pageContainerProps,\n pageContentDataTestId,\n topBarDataTestId,\n navBarOpen,\n navBarWidthOpen,\n navBarWidthClosed,\n}: PageLayoutProps) {\n const [leftPanelOpenInternal, setLeftPanelOpenInternal] = useState(INITIAL_LEFT_PANEL_OPEN);\n const [rightPanelOpenInternal, setRightPanelOpenInternal] = useState(INITIAL_RIGHT_PANEL_OPEN);\n const [leftPanelOpenInternalPrevious, setLeftPanelOpenInternalPrevious] =\n useState(INITIAL_LEFT_PANEL_OPEN);\n const [rightPanelOpenInternalPrevious, setRightPanelOpenInternalPrevious] =\n useState(INITIAL_RIGHT_PANEL_OPEN);\n\n const includeLeftPanel = leftPanel !== undefined;\n const includeRightPanel = rightPanel !== undefined;\n\n const {\n titleText: leftPanelTitleText,\n content: leftPanelContent,\n flavour: leftPanelFlavour,\n open: leftPanelOpen,\n onChangeOpen: leftPanelOnChangeOpen,\n width: leftPanelWidth,\n arrowButtons: leftPanelArrowButtons,\n startOpen: leftPanelStartOpen,\n onOpened: leftPanelOnOpened,\n onClosed: leftPanelOnClosed,\n dataTestId: leftPanelDataTestId,\n } = leftPanel ? { ...PANEL_DEFAULTS, ...leftPanel } : { ...PANEL_DEFAULTS };\n\n const {\n titleText: rightPanelTitleText,\n content: rightPanelContent,\n flavour: rightPanelFlavour,\n open: rightPanelOpen,\n onChangeOpen: rightPanelOnChangeOpen,\n width: rightPanelWidth,\n arrowButtons: rightPanelArrowButtons,\n startOpen: rightPanelStartOpen,\n onOpened: rightPanelOnOpened,\n onClosed: rightPanelOnClosed,\n dataTestId: rightPanelDataTestId,\n } = rightPanel ? { ...PANEL_DEFAULTS, ...rightPanel } : { ...PANEL_DEFAULTS };\n\n useEffect(() => {\n if (leftPanelStartOpen !== INITIAL_LEFT_PANEL_OPEN) {\n setLeftPanelOpenInternal(leftPanelStartOpen);\n setLeftPanelOpenInternalPrevious(leftPanelStartOpen);\n }\n }, [leftPanelStartOpen]);\n\n useEffect(() => {\n if (rightPanelStartOpen !== INITIAL_RIGHT_PANEL_OPEN) {\n setRightPanelOpenInternal(rightPanelStartOpen);\n setRightPanelOpenInternalPrevious(rightPanelStartOpen);\n }\n }, [rightPanelStartOpen]);\n\n const leftPanelOpenCurrent = leftPanelOpen === undefined ? leftPanelOpenInternal : leftPanelOpen;\n\n const rightPanelOpenCurrent =\n rightPanelOpen === undefined ? rightPanelOpenInternal : rightPanelOpen;\n\n const handleLeftPanelChangeOpen = (open: boolean) => {\n if (leftPanelOpen === undefined) {\n // If not in controlled mode, update the internal state\n setLeftPanelOpenInternal(open);\n\n if (sidePanelsAreMutuallyExclusive && includeRightPanel) {\n if (open) {\n setRightPanelOpenInternal(false);\n setRightPanelOpenInternalPrevious(rightPanelOpenInternal);\n } else {\n setRightPanelOpenInternal(rightPanelOpenInternalPrevious);\n }\n }\n }\n // Likewise, if callback provided, call it\n if (leftPanelOnChangeOpen) leftPanelOnChangeOpen(open);\n };\n\n const handleRightPanelChangeOpen = (open: boolean) => {\n if (rightPanelOpen === undefined) {\n setRightPanelOpenInternal(open);\n if (sidePanelsAreMutuallyExclusive && includeLeftPanel) {\n if (open) {\n setLeftPanelOpenInternal(false);\n setLeftPanelOpenInternalPrevious(leftPanelOpenInternal);\n } else {\n setLeftPanelOpenInternal(leftPanelOpenInternalPrevious);\n }\n }\n }\n if (rightPanelOnChangeOpen) rightPanelOnChangeOpen(open);\n };\n\n return (\n <Box>\n {includeLeftPanel && (\n <SidePanel\n data-testid={leftPanelDataTestId}\n anchor=\"left\"\n open={leftPanelOpenCurrent}\n onClose={() => handleLeftPanelChangeOpen(false)}\n width={leftPanelWidth}\n titleText={leftPanelTitleText}\n debugOpacity={debugOpacity}\n showCloseArrow={leftPanelArrowButtons === 'both' || leftPanelArrowButtons === 'close'}\n onOpened={leftPanelOnOpened}\n onClosed={leftPanelOnClosed}\n navBarOpen={navBarOpen}\n navBarWidthOpen={navBarWidthOpen}\n navBarWidthClosed={navBarWidthClosed}\n >\n {leftPanelContent}\n </SidePanel>\n )}\n\n {includeRightPanel && (\n <SidePanel\n data-testid={rightPanelDataTestId}\n anchor=\"right\"\n open={rightPanelOpenCurrent}\n onClose={() => handleRightPanelChangeOpen(false)}\n width={rightPanelWidth}\n titleText={rightPanelTitleText}\n debugOpacity={debugOpacity}\n showCloseArrow={rightPanelArrowButtons === 'both' || rightPanelArrowButtons === 'close'}\n onOpened={rightPanelOnOpened}\n onClosed={rightPanelOnClosed}\n navBarOpen={navBarOpen}\n navBarWidthOpen={navBarWidthOpen}\n navBarWidthClosed={navBarWidthClosed}\n >\n {rightPanelContent}\n </SidePanel>\n )}\n\n <TopBar\n titleText={titleText}\n data-testid={topBarDataTestId}\n {...(includeLeftPanel && leftPanelFlavour === 'push'\n ? {\n leftPanel: {\n open: leftPanelOpenCurrent,\n width: leftPanelWidth,\n onOpen: () => handleLeftPanelChangeOpen(true),\n showOpenArrow: leftPanelArrowButtons === 'both' || leftPanelArrowButtons === 'open',\n },\n }\n : {})}\n {...(includeRightPanel && rightPanelFlavour === 'push'\n ? {\n rightPanel: {\n open: rightPanelOpenCurrent,\n width: rightPanelWidth,\n onOpen: () => handleRightPanelChangeOpen(true),\n showOpenArrow:\n rightPanelArrowButtons === 'both' || rightPanelArrowButtons === 'open',\n },\n }\n : {})}\n />\n\n <PanelAwareMargins\n {...(leftPanelFlavour === 'push'\n ? {\n leftPanel: {\n open: leftPanelOpenCurrent,\n width: leftPanelWidth,\n },\n }\n : {})}\n {...(rightPanelFlavour === 'push'\n ? {\n rightPanel: {\n open: rightPanelOpenCurrent,\n width: rightPanelWidth,\n },\n }\n : {})}\n >\n <PageContainer data-testid={pageContentDataTestId} {...pageContainerProps}>\n {children}\n </PageContainer>\n </PanelAwareMargins>\n </Box>\n );\n}\n","import { alpha, createTheme } from '@mui/material/styles';\n\nexport const internalAGSystemsTheme = createTheme({\n palette: {\n primary: {\n main: '#007236',\n dark: '#005221',\n light: '#00A04E',\n contrastText: '#FFFFFF',\n },\n secondary: {\n main: '#662D91',\n dark: '#440E62',\n light: '#93268F',\n contrastText: '#FFFFFF',\n },\n error: {\n main: '#D32F2F',\n dark: '#C62828',\n light: '#EF5350',\n },\n info: {\n main: '#0288D1',\n dark: '#01579B',\n light: '#03A9F4',\n },\n success: {\n main: '#0288D1',\n dark: '#01579B',\n light: '#03A9F4',\n },\n },\n components: {\n MuiTextField: {\n defaultProps: { color: 'secondary' },\n },\n MuiToggleButtonGroup: {\n defaultProps: { color: 'secondary' },\n },\n MuiCheckbox: {\n defaultProps: { color: 'secondary' },\n },\n MuiSelect: {\n defaultProps: { color: 'secondary' },\n },\n MuiSwitch: {\n defaultProps: { color: 'secondary' },\n },\n MuiFormControl: {\n defaultProps: { color: 'secondary' },\n },\n MuiMenuItem: {\n // Setting defaultProps for color on MenuItem does not work, so update manually\n styleOverrides: {\n root: ({ theme }) => ({\n '&.Mui-selected': {\n backgroundColor: alpha(\n theme.palette.secondary.main,\n theme.palette.action.selectedOpacity\n ),\n '&:hover': {\n backgroundColor: alpha(\n theme.palette.secondary.main,\n theme.palette.action.selectedOpacity\n ),\n },\n '&.Mui-focusVisible': {\n backgroundColor: alpha(\n theme.palette.secondary.main,\n theme.palette.action.focusOpacity\n ),\n },\n },\n }),\n },\n },\n },\n typography: {\n // I couldn't think of what to call this. It is an attempt to match\n // https://www.figma.com/file/atonRPl2YD9A1NCntbDtKR/List-Filter-and-Product-Concept?node-id=1187%3A43730\n // but not sure if line height should be changed\n explainer: {\n fontSize: '14px',\n marginBlockStart: '1em',\n },\n h3: {\n fontSize: '1rem',\n fontWeight: 700,\n },\n },\n});\n\nexport const fed21Theme = createTheme({\n palette: {\n primary: {\n dark: '#00A651',\n light: '#A3D39C',\n main: '#007236',\n contrastText: '#FFF',\n },\n warning: {\n main: '#F5871F',\n light: '#FCC589',\n dark: '#A2590A',\n contrastText: '#FFF',\n },\n secondary: {\n main: '#662D91',\n light: '#BD8CBF',\n dark: '#440E62',\n contrastText: '#FFF',\n },\n error: {\n main: '#D43C95',\n light: '#8F2064',\n dark: '#F9CDE0',\n contrastText: '#FFF',\n },\n info: {\n main: '#00A88D',\n light: '#ADDCCF',\n dark: '#005243',\n contrastText: '#FFF',\n },\n success: {\n main: '#00A651',\n light: '#A3D39C',\n dark: '#007236',\n contrastText: '#FFF',\n },\n },\n typography: {\n // I couldn't think of what to call this. It is an attempt to match\n // https://www.figma.com/file/atonRPl2YD9A1NCntbDtKR/List-Filter-and-Product-Concept?node-id=1187%3A43730\n // but not sure if line height should be changed\n explainer: {\n fontSize: '14px',\n marginBlockStart: '1em',\n },\n },\n});\n","import { PropsWithChildren } from 'react';\nimport { ThemeProvider } from '@mui/material/styles';\n\nimport { internalAGSystemsTheme, fed21Theme } from './themes';\n\nexport type AgThemeName = 'internal' | 'fed21';\n\nexport interface AgThemeProviderProps {\n name?: AgThemeName;\n}\n\nexport default function AgThemeProvider({\n name = 'internal',\n children,\n}: PropsWithChildren<AgThemeProviderProps>) {\n const theme =\n name === 'internal' ? internalAGSystemsTheme : name === 'fed21' ? fed21Theme : undefined;\n\n // Should be resolved when we move to React >= 18\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n return <ThemeProvider theme={theme}>{children}</ThemeProvider>;\n}\n","import { AgError } from '@australiangreens/ag-error';\n\n// Superclass for errors involving React context.\nexport class ContextError extends AgError {\n static errorName = 'ContextError';\n}\n","import { createContext } from 'react';\n\nimport { ContextError } from '../../errors/ContextError';\n\nconst stub: () => void = () => {\n throw new ContextError('SaladBarContext can only be used in a child of a <SaladBarProvider>');\n};\n\nexport type NotificationType = {\n key: number;\n message: string;\n severity: 'success' | 'info' | 'warning' | 'error' | undefined;\n variant: 'standard' | 'outlined' | 'filled' | undefined;\n progressIndicator: string | undefined;\n autoHideDuration: number | undefined;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst notstub = (key: unknown): NotificationType | NotificationType[] | void => {\n throw new ContextError('SaladBarContext can only be used in a child of a <SaladBarProvider>');\n};\n\ntype SaladBarContextFunction = typeof stub | typeof notstub;\n\ntype SaladBarContextType = {\n enqueueNotification: SaladBarContextFunction; // Call as enqueueNotification(options)\n // where options include message and severity of 'error' ,'warning', 'info' or\n // 'success'\n enqueueSuccessNotification: SaladBarContextFunction; // Call as const key =\n // enqueueSuccessNotification(msg),\n enqueueInfoNotification: SaladBarContextFunction; // Call as const key =\n // enqueueInfoNotification(msg),\n enqueueWarningNotification: SaladBarContextFunction; // Call as const key =\n // enqueueWarningNotification(msg),\n enqueueErrorNotification: SaladBarContextFunction; // Call as const key =\n // enqueueErrorNotification(msg),\n removeNotification: SaladBarContextFunction; // Call as enqueueErrorNotification(key),\n};\n\n// The defaultValue argument is only used when a component does not have a\n// matching Provider above it in the tree. See\n// https://reactjs.org/docs/context.html#reactcreatecontext\n// Using createContext doesn't itself maintain any type of state exactly, it\n// just provides a way for children to access shared references.\nconst defaultValue = {\n enqueueNotification: stub,\n enqueueSuccessNotification: stub,\n enqueueInfoNotification: stub,\n enqueueWarningNotification: stub,\n enqueueErrorNotification: stub,\n removeNotification: notstub,\n} as SaladBarContextType;\n\n/**\n * @returns A SaladBarContext\n */\nconst SaladBarContext = createContext(defaultValue);\n\nexport default SaladBarContext;\n","// The default props passed to the underlying Snackbar component\nimport { SnackbarOrigin } from '@mui/material/Snackbar';\n\nexport const defaultSnackbarProps = {\n autoHideDuration: 6000,\n anchorOrigin: { vertical: 'top', horizontal: 'center' } as SnackbarOrigin,\n\n // The default is false. If we prefer timer to continue when window loses\n // focus, change to true\n disableWindowBlurListener: false,\n};\n\nexport const defaultSaladBarProps = {\n shouldClose: (_event: Event | React.SyntheticEvent<Element, Event>, reason: string) => {\n return reason !== 'clickaway';\n },\n};\n\nexport const defaultEnqueueNotificationOptions = {\n message: '',\n severity: 'info',\n variant: 'standard',\n progressIndicator: undefined, // Can use 'circular' or 'linear'\n};\n","import React, { useRef, useState } from 'react';\nimport Snackbar, { SnackbarProps, SnackbarCloseReason } from '@mui/material/Snackbar';\nimport Alert from '@mui/material/Alert';\nimport LinearProgress from '@mui/material/LinearProgress';\nimport CircularProgress from '@mui/material/CircularProgress';\n\nimport SaladBarContext, { NotificationType } from './SaladBarContext';\nimport {\n defaultSaladBarProps,\n defaultSnackbarProps,\n defaultEnqueueNotificationOptions,\n} from './defaults';\n\nconst MAX_QUEUE_LENGTH = 100;\nconst MAX_QUEUE_HIT_REPORT_INTERVAL = 2000;\nconst SALADBAR_INDEX = 2000;\n\n// No need to use uuids, just use an incremented value\nconst generateNotificationKey = (() => {\n let previousKey = 0;\n return () => {\n previousKey += 1;\n return previousKey;\n };\n})();\n\nconst alertWithLinearProgressStyle = {\n borderBottomLeftRadius: '0px',\n borderBottomRightRadius: '0px',\n};\n\nexport type SaladBarCloseReason = SnackbarCloseReason | 'closeAlert';\n\nexport interface SaladBarProviderProps extends SnackbarProps {\n /** Called when an event triggers closing of currently displayed snackbar.\n * Default implementation returns false if reason is 'clickaway', otherwise\n * true.*/\n shouldClose?: (\n event: Event | React.SyntheticEvent<Element, Event>,\n reason: SaladBarCloseReason\n ) => boolean;\n}\n\nexport default function SaladBarProvider({\n children,\n shouldClose = defaultSaladBarProps.shouldClose,\n ...snackbarProps\n}: SaladBarProviderProps) {\n const [open, setOpen] = useState(false);\n\n // We use a ref instead of a state to store the actual data, because we want\n // queue to be persistent across the whole lifetime of component. I considered\n // using yocto-queue because it would be O(1) instead of O(n), but its not\n // designed to access the head without removing it and its not going to make\n // much difference anyway.\n const queueRef = useRef<NotificationType[]>([]);\n\n const limitLastHitAt = useRef(Date.now());\n const limitHitCountSinceLastReport = useRef(0);\n\n const enqueueNotification = (notification = {}) => {\n limitHitCountSinceLastReport.current += 1;\n if (queueRef.current.length >= MAX_QUEUE_LENGTH) {\n // If the queue length is hit, probably stuck in some sort of loop, so\n // don't want to spam logs instantly so space it out\n if (Date.now() - limitLastHitAt.current >= MAX_QUEUE_HIT_REPORT_INTERVAL) {\n limitLastHitAt.current = Date.now();\n console.error(\n `SaladBarProvider: MAX_QUEUE_LENGTH (${MAX_QUEUE_LENGTH}) hit ${limitHitCountSinceLastReport.current} times in last ${MAX_QUEUE_HIT_REPORT_INTERVAL}ms)`\n );\n limitHitCountSinceLastReport.current = 0;\n }\n }\n\n const newNotification = {\n ...defaultEnqueueNotificationOptions,\n key: generateNotificationKey(), // Can be overridden.\n ...notification, // This could result in collisons, but unlikely.\n };\n\n // Add to the end of queue\n queueRef.current.push(newNotification as NotificationType);\n\n // If the queue was previously empty, then open the snackbar. We don't do it\n // whenever enqueueNotification is called since it will mess up transitions\n if (queueRef.current.length === 1) setOpen(true);\n\n return newNotification.key;\n };\n\n const enqueueSuccessNotification = (message = '', options = {}) =>\n enqueueNotification({ message, severity: 'success', ...options });\n\n const enqueueInfoNotification = (message = '', options = {}) =>\n enqueueNotification({ message, severity: 'info', ...options });\n\n const enqueueWarningNotification = (message = '', options = {}) =>\n enqueueNotification({ message, severity: 'warning', ...options });\n\n const enqueueErrorNotification = (message = '', options = {}) =>\n enqueueNotification({ message, severity: 'error', ...options });\n\n /**\n * Remove the notification with specified key from the queue. If the key is\n * not found, immediately returns null.\n *\n * @param key - The key as returned from enqueue...() function.\n *\n * @returns The removed notification\n */\n const removeNotification = (key: unknown) => {\n const index = queueRef.current.findIndex((x) => x.key === key);\n if (index === -1) return;\n\n if (index === 0) {\n // If its at the front of the queue, it is either currently being\n // displayed or in process of being closed. Either way, we can just set\n // open to false\n setOpen(false);\n return queueRef.current[0];\n }\n // Otherwise we just remove it from the queue, it won't need to transition\n return queueRef.current.splice(index, 1);\n };\n\n const handleClose = (\n event: Event | React.SyntheticEvent<Element, Event>,\n reason: SaladBarCloseReason\n ) => {\n if (shouldClose(event, reason)) setOpen(false);\n };\n\n // Callback fired before the transition is exiting.\n const handleExit = () => {};\n\n // Callback fired when the transition has exited.\n const handleExited = () => {\n // Remove head of queue\n queueRef.current.shift();\n\n // If there is still something on the queue, then re-open\n if (queueRef.current.length > 0) setOpen(true);\n };\n\n // The notification to display is the one at head of queue\n const currentNotification = queueRef.current[0] ?? {\n ...defaultEnqueueNotificationOptions,\n };\n\n // Can also override certain props on a notification level\n const currentNotificationSnackbarProps: { autoHideDuration?: number } = {};\n // Probably a better way of doing this\n if ('autoHideDuration' in currentNotification) {\n currentNotificationSnackbarProps.autoHideDuration = currentNotification.autoHideDuration;\n }\n\n // Note the order of props in Snackbar, we don't allow overriding open and\n // onClose.\n\n const snackbarFinalProps = { ...defaultSnackbarProps, ...snackbarProps };\n\n return (\n // Should be resolved when we move to React >= 18\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n <SaladBarContext.Provider\n value={{\n enqueueNotification,\n enqueueSuccessNotification,\n enqueueInfoNotification,\n enqueueWarningNotification,\n enqueueErrorNotification,\n removeNotification,\n }}\n >\n {children}\n <Snackbar\n {...snackbarFinalProps}\n {...currentNotificationSnackbarProps}\n open={open}\n onClose={handleClose}\n TransitionProps={{\n onExited: handleExited,\n onExit: handleExit,\n }}\n sx={{ zIndex: SALADBAR_INDEX }}\n >\n <div>\n <Alert\n onClose={(event) => handleClose(event, 'closeAlert')}\n severity={currentNotification.severity}\n variant={'filled'}\n icon={\n currentNotification.progressIndicator === 'circular' ? (\n <CircularProgress size=\"1em\" />\n ) : undefined\n }\n style={\n currentNotification.progressIndicator === 'linear'\n ? alertWithLinearProgressStyle\n : undefined\n }\n >\n {currentNotification.message}\n </Alert>\n {currentNotification.progressIndicator === 'linear' && <LinearProgress color=\"primary\" />}\n </div>\n </Snackbar>\n </SaladBarContext.Provider>\n );\n}\n","import { useContext } from 'react';\nimport SaladBarContext from './SaladBarContext';\n\n/**\n * Use the `useSaladBar` hook in components to access the enqueueNotification()\n * method to add a snackbar message to queue.\n *\n * Example:\n *\n * ```js\n * const {\n * enqueueNotification,\n * enqueueSuccessNotification,\n * enqueueInfoNotification,\n * enqueueWarningNotification,\n * enqueueErrorNotification,\n * } = useSaladBar();\n * ...\n * enqueueNotification({message: 'hello', severity: 'info'});\n * // or\n * enqueueInfoNotification('hello');\n * ```\n */\nexport default function useSaladBar() {\n return useContext(SaladBarContext);\n}\n"],"names":["ExampleComponent","text","num","setNum","useState","jsxs","Fragment","jsx","Typography","Button","oldNum","Paper","TOP_STRIPE_HEIGHT","TITLE_BAR_HEIGHT","PREFIX","classes","Root","styled","prop","theme","leftPanel","rightPanel","__spreadValues","_a","_b","TopBar","titleText","dataTestId","Box","IconButton","ArrowForwardIcon","ArrowBackIcon","DEFAULT_PANEL_WIDTH","SidePanelDrawer","Drawer","width","debugOpacity","anchor","navBarOpen","navBarWidthOpen","navBarWidthClosed","DrawerHeaderBox","__spreadProps","SidePanel","children","open","onClose","showCloseArrow","headerBoxProps","onOpened","onClosed","PanelAwareMargins","PageContainer","Container","INITIAL_LEFT_PANEL_OPEN","INITIAL_RIGHT_PANEL_OPEN","PANEL_DEFAULTS","PageLayout","sidePanelsAreMutuallyExclusive","pageContainerProps","pageContentDataTestId","topBarDataTestId","leftPanelOpenInternal","setLeftPanelOpenInternal","rightPanelOpenInternal","setRightPanelOpenInternal","leftPanelOpenInternalPrevious","setLeftPanelOpenInternalPrevious","rightPanelOpenInternalPrevious","setRightPanelOpenInternalPrevious","includeLeftPanel","includeRightPanel","leftPanelTitleText","leftPanelContent","leftPanelFlavour","leftPanelOpen","leftPanelOnChangeOpen","leftPanelWidth","leftPanelArrowButtons","leftPanelStartOpen","leftPanelOnOpened","leftPanelOnClosed","leftPanelDataTestId","rightPanelTitleText","rightPanelContent","rightPanelFlavour","rightPanelOpen","rightPanelOnChangeOpen","rightPanelWidth","rightPanelArrowButtons","rightPanelStartOpen","rightPanelOnOpened","rightPanelOnClosed","rightPanelDataTestId","useEffect","leftPanelOpenCurrent","rightPanelOpenCurrent","handleLeftPanelChangeOpen","handleRightPanelChangeOpen","internalAGSystemsTheme","createTheme","alpha","fed21Theme","AgThemeProvider","name","ThemeProvider","ContextError","AgError","__publicField","stub","notstub","key","defaultValue","SaladBarContext","createContext","defaultSnackbarProps","defaultSaladBarProps","_event","reason","defaultEnqueueNotificationOptions","MAX_QUEUE_LENGTH","MAX_QUEUE_HIT_REPORT_INTERVAL","SALADBAR_INDEX","generateNotificationKey","previousKey","alertWithLinearProgressStyle","SaladBarProvider","shouldClose","snackbarProps","__objRest","setOpen","queueRef","useRef","limitLastHitAt","limitHitCountSinceLastReport","enqueueNotification","notification","newNotification","enqueueSuccessNotification","message","options","enqueueInfoNotification","enqueueWarningNotification","enqueueErrorNotification","removeNotification","index","x","handleClose","event","handleExit","handleExited","currentNotification","currentNotificationSnackbarProps","snackbarFinalProps","Snackbar","Alert","CircularProgress","LinearProgress","useSaladBar","useContext"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/components/ExampleComponent/index.tsx","../../src/components/PageLayout/TopBar.tsx","../../src/components/PageLayout/SidePanel.tsx","../../src/components/PageLayout/PanelAwareMargins.tsx","../../src/components/PageLayout/PageContainer.tsx","../../src/components/PageLayout/index.tsx","../../src/providers/AgTheme/themes.ts","../../src/providers/AgTheme/index.tsx","../../src/errors/ContextError.ts","../../src/providers/SaladBar/SaladBarContext.ts","../../src/providers/SaladBar/defaults.ts","../../src/providers/SaladBar/SaladBarProvider.tsx","../../src/providers/SaladBar/useSaladBar.ts","../../src/providers/SaladBar/testWrappers.tsx"],"sourcesContent":["import { useState } from 'react';\nimport Button from '@mui/material/Button';\nimport Paper from '@mui/material/Paper';\nimport Typography from '@mui/material/Typography';\n\nexport interface ExampleComponentProps {\n text: string;\n}\n\nexport default function ExampleComponent({ text }: ExampleComponentProps) {\n const [num, setNum] = useState(0);\n\n return (\n <>\n <Typography variant=\"h6\" color=\"inherit\" component=\"div\" sx={{ fontSize: '22px' }}>\n Hello world\n </Typography>\n\n <Typography variant=\"caption\" display=\"block\">\n <span>Just ensuring MUI is working as planned as a peer dependency. v0.0.11</span>\n </Typography>\n <Button\n variant=\"outlined\"\n onClick={() => setNum((oldNum) => oldNum + 1)}\n aria-label=\"Increment\"\n >\n Hello I am a button\n </Button>\n <p>\n This is some text: <span>{text}</span>\n </p>\n <Paper>This number will incremember when button pressed: {num}</Paper>\n </>\n );\n}\n","import { Box, IconButton, styled } from '@mui/material';\nimport Typography from '@mui/material/Typography';\nimport ArrowForwardIcon from '@mui/icons-material/ArrowForward';\nimport ArrowBackIcon from '@mui/icons-material/ArrowBack';\n\nconst TOP_STRIPE_HEIGHT = 24;\nconst TITLE_BAR_HEIGHT = 64;\n\nconst PREFIX = 'TopBar';\n\ninterface PanelProps {\n open: boolean;\n width: number;\n showOpenArrow: boolean;\n\n /** Called when the arrow button is pressed (if showOpenButton is true) */\n onOpen?: () => void;\n\n showOpenButton?: boolean;\n}\n\nexport interface TopBarProps {\n titleText?: string;\n leftPanel?: PanelProps;\n rightPanel?: PanelProps;\n 'data-testid'?: string;\n}\n\nexport const classes = {\n topStripe: `${PREFIX}-topStripe`,\n titleBar: `${PREFIX}-titleBar`,\n titleSlider: `${PREFIX}-titleSlider`,\n\n titleText: `${PREFIX}-titleText`,\n leftPanelButton: `${PREFIX}-leftPanelButton`,\n rightPanelButton: `${PREFIX}-leftPanelButton`,\n};\n\ninterface RootProps {\n leftPanel?: PanelProps;\n rightPanel?: PanelProps;\n}\n\nconst Root = styled('div', {\n shouldForwardProp: (prop) => !(['leftPanel', 'rightPanel'] as Array<PropertyKey>).includes(prop),\n name: PREFIX,\n})<RootProps>(({ theme, leftPanel, rightPanel }) => ({\n width: '100%',\n\n [`& .${classes.topStripe}`]: {\n width: '100%',\n height: `${TOP_STRIPE_HEIGHT}px`,\n backgroundColor: theme.palette.primary.main,\n },\n\n [`& .${classes.titleBar}`]: {\n backgroundColor: theme.palette.primary.light,\n height: `${TITLE_BAR_HEIGHT}px`,\n padding: theme.spacing(0, 3),\n width: '100%',\n },\n\n [`& .${classes.titleSlider}`]: {\n height: '100%',\n display: 'flex',\n alignItems: 'center',\n color: 'white',\n\n transition: theme.transitions.create('margin', {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.leavingScreen,\n }),\n\n [`& .${classes.leftPanelButton}`]: {\n marginRight: theme.spacing(2),\n flexGrow: 0,\n },\n\n [`& .${classes.titleText}`]: {\n flexGrow: 1,\n },\n\n [`& .${classes.rightPanelButton}`]: {\n flexGrow: 0,\n },\n\n ...(leftPanel?.open && {\n transition: theme.transitions.create('margin', {\n easing: theme.transitions.easing.easeOut,\n duration: theme.transitions.duration.enteringScreen,\n }),\n marginLeft: `${leftPanel?.width ?? 0}px`,\n }),\n\n ...(rightPanel?.open && {\n transition: theme.transitions.create('margin', {\n easing: theme.transitions.easing.easeOut,\n duration: theme.transitions.duration.enteringScreen,\n }),\n marginRight: `${rightPanel?.width ?? 0}px`,\n }),\n },\n}));\n\n/**\n * Goes at the top of every page. Wasn't feeling creative in naming it.\n *\n * This differs from the typical appbar with a toolbar used in most MUI apps in\n * that it has to interact with a sliding side panel that is not the main\n * navbar.\n */\nexport default function TopBar({\n titleText = '',\n leftPanel,\n rightPanel,\n 'data-testid': dataTestId,\n}: TopBarProps) {\n return (\n <Root leftPanel={leftPanel} rightPanel={rightPanel} data-testid={dataTestId}>\n <div className={classes.topStripe} />\n <div className={classes.titleBar}>\n <Box className={classes.titleSlider}>\n {leftPanel !== undefined && !leftPanel.open && leftPanel.showOpenArrow && (\n <IconButton\n className={classes.leftPanelButton}\n color=\"inherit\"\n aria-label=\"Open left side panel\"\n onClick={leftPanel?.onOpen}\n edge=\"start\"\n size=\"large\"\n >\n {' '}\n <ArrowForwardIcon />\n </IconButton>\n )}\n\n <Typography className={classes.titleText} variant=\"h6\" noWrap>\n {titleText}\n </Typography>\n\n {rightPanel !== undefined && !rightPanel.open && rightPanel.showOpenArrow && (\n <IconButton\n className={classes.rightPanelButton}\n color=\"inherit\"\n aria-label=\"Open right side panel\"\n onClick={rightPanel?.onOpen}\n edge=\"end\"\n size=\"large\"\n >\n {' '}\n <ArrowBackIcon />\n </IconButton>\n )}\n </Box>\n </div>\n </Root>\n );\n}\n","import { PropsWithChildren } from 'react';\nimport ArrowBackIcon from '@mui/icons-material/ArrowBack';\nimport ArrowForwardIcon from '@mui/icons-material/ArrowForward';\nimport Drawer, { DrawerProps } from '@mui/material/Drawer';\nimport Box, { BoxProps } from '@mui/material/Box';\nimport Typography from '@mui/material/Typography';\nimport IconButton from '@mui/material/IconButton';\nimport { styled } from '@mui/material';\n\nexport const DEFAULT_PANEL_WIDTH = 400;\n\ninterface SidePanelDrawerProps extends DrawerProps {\n anchor: 'left' | 'right';\n width?: number;\n debugOpacity?: boolean;\n navBarOpen: boolean;\n navBarWidthOpen: number;\n navBarWidthClosed: number;\n}\n\nconst SidePanelDrawer = styled(Drawer, {\n shouldForwardProp: (prop) =>\n // Note we do want anchor to be forwarded to the Drawer component\n !(\n [\n 'width',\n 'debug',\n 'debugOpacity',\n 'navBarOpen',\n 'navBarWidthOpen',\n 'navBarWidthClosed',\n ] as Array<PropertyKey>\n ).includes(prop),\n name: 'SidePanelDrawer',\n})<SidePanelDrawerProps>(\n ({ width, debugOpacity = false, anchor, navBarOpen, navBarWidthOpen, navBarWidthClosed }) => ({\n width,\n\n '& .MuiDrawer-paper': {\n position: 'absolute',\n width,\n boxSizing: 'border-box',\n border: 'unset',\n boxShadow:\n '0px 4px 5px rgba(0, 0, 0, 0.14), 0px 1px 10px rgba(0, 0, 0, 0.12), 0px 2px 4px rgba(0, 0, 0, 0.2)',\n\n ...(debugOpacity && {\n opacity: '50%',\n }),\n\n ...(anchor === 'left' && {\n marginLeft: `${navBarWidthClosed}px`,\n ...(navBarOpen && {\n marginLeft: `${navBarWidthOpen}px`,\n }),\n }),\n },\n })\n);\n\ninterface DrawerHeaderBoxProps {\n anchor: 'left' | 'right';\n}\n\nconst DrawerHeaderBox = styled(Box, {\n shouldForwardProp: (prop) => !(['anchor'] as Array<PropertyKey>).includes(prop),\n})<DrawerHeaderBoxProps>(({ theme, anchor }) => ({\n display: 'flex',\n alignItems: 'center',\n padding: theme.spacing(2),\n ...theme.mixins.toolbar,\n justifyContent: anchor === 'left' ? 'space-between' : 'flex-start',\n backgroundColor: theme.palette.primary.light,\n height: '88px',\n\n '&,*': {\n color: 'white',\n },\n\n ' .MuiTypography-root': {\n fontSize: '22px',\n },\n\n ' .MuiButtonBase-root': {\n marginRight: anchor === 'right' ? theme.spacing(2) : 0,\n },\n}));\n\ntype SidePanelProps = PropsWithChildren<{\n open: boolean;\n anchor?: 'left' | 'right';\n onClose?: React.MouseEventHandler<HTMLElement>;\n titleText?: string;\n width?: number;\n showCloseArrow?: boolean;\n debugOpacity?: boolean;\n headerBoxProps?: BoxProps;\n onOpened?: () => void;\n onClosed?: () => void;\n 'data-testid'?: string;\n navBarOpen?: boolean;\n navBarWidthOpen?: number;\n navBarWidthClosed?: number;\n}>;\n\n/**\n * The SidePanel is designed to be used along with the TopBar component for a\n * consistent look and feel.\n */\nexport default function SidePanel({\n children,\n anchor = 'left',\n open,\n onClose = () => {},\n titleText = '',\n width = DEFAULT_PANEL_WIDTH,\n showCloseArrow = true,\n debugOpacity = false,\n headerBoxProps = {},\n onOpened,\n onClosed,\n 'data-testid': dataTestId,\n navBarOpen = false,\n navBarWidthOpen = 0,\n navBarWidthClosed = 0,\n}: SidePanelProps) {\n return (\n <SidePanelDrawer\n SlideProps={{\n onEntered: () => onOpened?.(),\n onExited: () => onClosed?.(),\n }}\n variant=\"persistent\"\n anchor={anchor}\n open={open}\n width={width}\n debugOpacity={debugOpacity}\n data-testid={dataTestId}\n navBarOpen={navBarOpen}\n navBarWidthOpen={navBarWidthOpen}\n navBarWidthClosed={navBarWidthClosed}\n >\n <DrawerHeaderBox anchor={anchor} {...headerBoxProps}>\n {/* Might be a cleaner way to do this, but it does the job */}\n {anchor === 'left' ? (\n <>\n <Typography variant=\"h6\" color=\"inherit\" component=\"div\">\n {titleText}\n </Typography>\n\n {showCloseArrow && (\n <IconButton onClick={onClose} size=\"large\" aria-label=\"Close left side panel\">\n <ArrowBackIcon data-testid=\"arrowbackicon\" />{' '}\n </IconButton>\n )}\n </>\n ) : (\n <>\n {showCloseArrow && (\n <IconButton onClick={onClose} size=\"large\" aria-label=\"Close right side panel\">\n <ArrowForwardIcon />{' '}\n </IconButton>\n )}\n\n <Typography variant=\"h6\" color=\"inherit\" component=\"div\">\n {titleText}\n </Typography>\n </>\n )}\n </DrawerHeaderBox>\n {children}\n </SidePanelDrawer>\n );\n}\n","import { styled } from '@mui/material';\n\ninterface PanelProps {\n width: number;\n open: boolean;\n}\n\ninterface PanelAwareMarginsProps {\n /** If the leftPanel prop is omitted but a left panel is still in use on the\n * page, it will slide over the top instead of the default pushing */\n leftPanel?: PanelProps;\n\n /** If the rightPanel prop is omitted but a right panel is still in use on the\n * page, it will slide over the top instead of the default pushing */\n rightPanel?: PanelProps;\n}\n\n/** With the optional leftPanel and rightPanel props providing state and width,\n * the children of of the PanelAwareMargins will looks like they is pushed aside\n * by the panels by transitioning the margins. */\nconst PanelAwareMargins = styled('div', {\n shouldForwardProp: (prop) => !(['leftPanel', 'rightPanel'] as Array<PropertyKey>).includes(prop),\n name: 'PanelAwareMargins',\n})<PanelAwareMarginsProps>(({ theme, leftPanel, rightPanel }) => ({\n transition: theme.transitions.create('margin', {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.leavingScreen,\n }),\n\n ...(leftPanel?.open && {\n transition: theme.transitions.create('margin', {\n easing: theme.transitions.easing.easeOut,\n duration: theme.transitions.duration.enteringScreen,\n }),\n marginLeft: `${leftPanel?.width ?? 0}px`,\n }),\n ...(rightPanel?.open && {\n transition: theme.transitions.create('margin', {\n easing: theme.transitions.easing.easeOut,\n duration: theme.transitions.duration.enteringScreen,\n }),\n marginRight: `${rightPanel?.width ?? 0}px`,\n }),\n}));\n\nexport default PanelAwareMargins;\n","import { styled } from '@mui/material';\nimport Container from '@mui/material/Container';\n\n/** Just a simple styled container applying our spacings*/\nconst PageContainer = styled(Container, {\n name: 'PageContainer',\n})(({ theme }) => ({\n // Horizontal padding comes from the Container's gutter\n paddingTop: theme.spacing(3),\n paddingBottom: theme.spacing(3),\n}));\n\nexport default PageContainer;\n","import { ComponentProps, PropsWithChildren, ReactNode, useEffect, useState } from 'react';\nimport { Box } from '@mui/material';\n\nimport TopBar from './TopBar';\nimport SidePanel, { DEFAULT_PANEL_WIDTH } from './SidePanel';\nimport PanelAwareMargins from './PanelAwareMargins';\nimport PageContainer from './PageContainer';\n\nconst INITIAL_LEFT_PANEL_OPEN = false;\nconst INITIAL_RIGHT_PANEL_OPEN = false;\n\nconst PANEL_DEFAULTS = {\n titleText: '',\n flavour: 'push',\n width: DEFAULT_PANEL_WIDTH,\n arrowButtons: 'both',\n startOpen: false,\n open: undefined,\n onChangeOpen: undefined,\n content: <></>,\n onOpened: undefined,\n onClosed: undefined,\n dataTestId: undefined,\n};\n\ninterface SidePanelProps {\n titleText?: string;\n content?: ReactNode;\n flavour?: 'push' | 'overlay';\n arrowButtons?: 'open' | 'close' | 'both' | 'none';\n width?: number;\n startOpen?: boolean;\n\n /** Use this and onChangeOpen if you want to use component as a controlled component */\n open?: boolean;\n onChangeOpen?: (open: boolean) => void;\n\n /** Called when the sliding transition to open has finished */\n onOpened?: () => void;\n\n /** Called when the sliding transition to open has finished */\n onClosed?: () => void;\n\n dataTestId?: string;\n}\n\ninterface BasePageLayoutProps {\n titleText?: string;\n\n leftPanel?: SidePanelProps;\n rightPanel?: SidePanelProps;\n\n /** This will only have an effect for panels whose state is not controlled by\n * parent */\n sidePanelsAreMutuallyExclusive?: boolean;\n\n /** Temporary, get rid of later */\n debugOpacity?: boolean;\n\n /** Props applied to the PageContainer component, which is a styled MUI Container */\n pageContainerProps?: ComponentProps<typeof PageContainer>;\n\n topBarDataTestId?: string;\n pageContentDataTestId?: string;\n}\n\ninterface PageLayoutWithNavBarProps extends BasePageLayoutProps {\n navBarOpen: boolean;\n navBarWidthOpen: number;\n navBarWidthClosed: number;\n}\n\ninterface PagelayoutWithoutNavBarProps extends BasePageLayoutProps {\n navBarOpen?: never;\n navBarWidthOpen?: never;\n navBarWidthClosed?: never;\n}\n\nexport type PageLayoutProps = PropsWithChildren<\n PageLayoutWithNavBarProps | PagelayoutWithoutNavBarProps\n>;\n\nexport default function PageLayout({\n children,\n titleText = '',\n leftPanel,\n rightPanel,\n sidePanelsAreMutuallyExclusive = true,\n debugOpacity = false,\n pageContainerProps,\n pageContentDataTestId,\n topBarDataTestId,\n navBarOpen,\n navBarWidthOpen,\n navBarWidthClosed,\n}: PageLayoutProps) {\n const [leftPanelOpenInternal, setLeftPanelOpenInternal] = useState(INITIAL_LEFT_PANEL_OPEN);\n const [rightPanelOpenInternal, setRightPanelOpenInternal] = useState(INITIAL_RIGHT_PANEL_OPEN);\n const [leftPanelOpenInternalPrevious, setLeftPanelOpenInternalPrevious] =\n useState(INITIAL_LEFT_PANEL_OPEN);\n const [rightPanelOpenInternalPrevious, setRightPanelOpenInternalPrevious] =\n useState(INITIAL_RIGHT_PANEL_OPEN);\n\n const includeLeftPanel = leftPanel !== undefined;\n const includeRightPanel = rightPanel !== undefined;\n\n const {\n titleText: leftPanelTitleText,\n content: leftPanelContent,\n flavour: leftPanelFlavour,\n open: leftPanelOpen,\n onChangeOpen: leftPanelOnChangeOpen,\n width: leftPanelWidth,\n arrowButtons: leftPanelArrowButtons,\n startOpen: leftPanelStartOpen,\n onOpened: leftPanelOnOpened,\n onClosed: leftPanelOnClosed,\n dataTestId: leftPanelDataTestId,\n } = leftPanel ? { ...PANEL_DEFAULTS, ...leftPanel } : { ...PANEL_DEFAULTS };\n\n const {\n titleText: rightPanelTitleText,\n content: rightPanelContent,\n flavour: rightPanelFlavour,\n open: rightPanelOpen,\n onChangeOpen: rightPanelOnChangeOpen,\n width: rightPanelWidth,\n arrowButtons: rightPanelArrowButtons,\n startOpen: rightPanelStartOpen,\n onOpened: rightPanelOnOpened,\n onClosed: rightPanelOnClosed,\n dataTestId: rightPanelDataTestId,\n } = rightPanel ? { ...PANEL_DEFAULTS, ...rightPanel } : { ...PANEL_DEFAULTS };\n\n useEffect(() => {\n if (leftPanelStartOpen !== INITIAL_LEFT_PANEL_OPEN) {\n setLeftPanelOpenInternal(leftPanelStartOpen);\n setLeftPanelOpenInternalPrevious(leftPanelStartOpen);\n }\n }, [leftPanelStartOpen]);\n\n useEffect(() => {\n if (rightPanelStartOpen !== INITIAL_RIGHT_PANEL_OPEN) {\n setRightPanelOpenInternal(rightPanelStartOpen);\n setRightPanelOpenInternalPrevious(rightPanelStartOpen);\n }\n }, [rightPanelStartOpen]);\n\n const leftPanelOpenCurrent = leftPanelOpen === undefined ? leftPanelOpenInternal : leftPanelOpen;\n\n const rightPanelOpenCurrent =\n rightPanelOpen === undefined ? rightPanelOpenInternal : rightPanelOpen;\n\n const handleLeftPanelChangeOpen = (open: boolean) => {\n if (leftPanelOpen === undefined) {\n // If not in controlled mode, update the internal state\n setLeftPanelOpenInternal(open);\n\n if (sidePanelsAreMutuallyExclusive && includeRightPanel) {\n if (open) {\n setRightPanelOpenInternal(false);\n setRightPanelOpenInternalPrevious(rightPanelOpenInternal);\n } else {\n setRightPanelOpenInternal(rightPanelOpenInternalPrevious);\n }\n }\n }\n // Likewise, if callback provided, call it\n if (leftPanelOnChangeOpen) leftPanelOnChangeOpen(open);\n };\n\n const handleRightPanelChangeOpen = (open: boolean) => {\n if (rightPanelOpen === undefined) {\n setRightPanelOpenInternal(open);\n if (sidePanelsAreMutuallyExclusive && includeLeftPanel) {\n if (open) {\n setLeftPanelOpenInternal(false);\n setLeftPanelOpenInternalPrevious(leftPanelOpenInternal);\n } else {\n setLeftPanelOpenInternal(leftPanelOpenInternalPrevious);\n }\n }\n }\n if (rightPanelOnChangeOpen) rightPanelOnChangeOpen(open);\n };\n\n return (\n <Box>\n {includeLeftPanel && (\n <SidePanel\n data-testid={leftPanelDataTestId}\n anchor=\"left\"\n open={leftPanelOpenCurrent}\n onClose={() => handleLeftPanelChangeOpen(false)}\n width={leftPanelWidth}\n titleText={leftPanelTitleText}\n debugOpacity={debugOpacity}\n showCloseArrow={leftPanelArrowButtons === 'both' || leftPanelArrowButtons === 'close'}\n onOpened={leftPanelOnOpened}\n onClosed={leftPanelOnClosed}\n navBarOpen={navBarOpen}\n navBarWidthOpen={navBarWidthOpen}\n navBarWidthClosed={navBarWidthClosed}\n >\n {leftPanelContent}\n </SidePanel>\n )}\n\n {includeRightPanel && (\n <SidePanel\n data-testid={rightPanelDataTestId}\n anchor=\"right\"\n open={rightPanelOpenCurrent}\n onClose={() => handleRightPanelChangeOpen(false)}\n width={rightPanelWidth}\n titleText={rightPanelTitleText}\n debugOpacity={debugOpacity}\n showCloseArrow={rightPanelArrowButtons === 'both' || rightPanelArrowButtons === 'close'}\n onOpened={rightPanelOnOpened}\n onClosed={rightPanelOnClosed}\n navBarOpen={navBarOpen}\n navBarWidthOpen={navBarWidthOpen}\n navBarWidthClosed={navBarWidthClosed}\n >\n {rightPanelContent}\n </SidePanel>\n )}\n\n <TopBar\n titleText={titleText}\n data-testid={topBarDataTestId}\n {...(includeLeftPanel && leftPanelFlavour === 'push'\n ? {\n leftPanel: {\n open: leftPanelOpenCurrent,\n width: leftPanelWidth,\n onOpen: () => handleLeftPanelChangeOpen(true),\n showOpenArrow: leftPanelArrowButtons === 'both' || leftPanelArrowButtons === 'open',\n },\n }\n : {})}\n {...(includeRightPanel && rightPanelFlavour === 'push'\n ? {\n rightPanel: {\n open: rightPanelOpenCurrent,\n width: rightPanelWidth,\n onOpen: () => handleRightPanelChangeOpen(true),\n showOpenArrow:\n rightPanelArrowButtons === 'both' || rightPanelArrowButtons === 'open',\n },\n }\n : {})}\n />\n\n <PanelAwareMargins\n {...(leftPanelFlavour === 'push'\n ? {\n leftPanel: {\n open: leftPanelOpenCurrent,\n width: leftPanelWidth,\n },\n }\n : {})}\n {...(rightPanelFlavour === 'push'\n ? {\n rightPanel: {\n open: rightPanelOpenCurrent,\n width: rightPanelWidth,\n },\n }\n : {})}\n >\n <PageContainer data-testid={pageContentDataTestId} {...pageContainerProps}>\n {children}\n </PageContainer>\n </PanelAwareMargins>\n </Box>\n );\n}\n","import { alpha, createTheme } from '@mui/material/styles';\n\nexport const internalAGSystemsTheme = createTheme({\n palette: {\n primary: {\n main: '#007236',\n dark: '#005221',\n light: '#00A04E',\n contrastText: '#FFFFFF',\n },\n secondary: {\n main: '#662D91',\n dark: '#440E62',\n light: '#93268F',\n contrastText: '#FFFFFF',\n },\n error: {\n main: '#D32F2F',\n dark: '#C62828',\n light: '#EF5350',\n },\n info: {\n main: '#0288D1',\n dark: '#01579B',\n light: '#03A9F4',\n },\n success: {\n main: '#0288D1',\n dark: '#01579B',\n light: '#03A9F4',\n },\n },\n components: {\n MuiTextField: {\n defaultProps: { color: 'secondary' },\n },\n MuiToggleButtonGroup: {\n defaultProps: { color: 'secondary' },\n },\n MuiCheckbox: {\n defaultProps: { color: 'secondary' },\n },\n MuiSelect: {\n defaultProps: { color: 'secondary' },\n },\n MuiSwitch: {\n defaultProps: { color: 'secondary' },\n },\n MuiFormControl: {\n defaultProps: { color: 'secondary' },\n },\n MuiMenuItem: {\n // Setting defaultProps for color on MenuItem does not work, so update manually\n styleOverrides: {\n root: ({ theme }) => ({\n '&.Mui-selected': {\n backgroundColor: alpha(\n theme.palette.secondary.main,\n theme.palette.action.selectedOpacity\n ),\n '&:hover': {\n backgroundColor: alpha(\n theme.palette.secondary.main,\n theme.palette.action.selectedOpacity\n ),\n },\n '&.Mui-focusVisible': {\n backgroundColor: alpha(\n theme.palette.secondary.main,\n theme.palette.action.focusOpacity\n ),\n },\n },\n }),\n },\n },\n },\n typography: {\n // I couldn't think of what to call this. It is an attempt to match\n // https://www.figma.com/file/atonRPl2YD9A1NCntbDtKR/List-Filter-and-Product-Concept?node-id=1187%3A43730\n // but not sure if line height should be changed\n explainer: {\n fontSize: '14px',\n marginBlockStart: '1em',\n },\n h3: {\n fontSize: '1rem',\n fontWeight: 700,\n },\n },\n});\n\nexport const fed21Theme = createTheme({\n palette: {\n primary: {\n dark: '#00A651',\n light: '#A3D39C',\n main: '#007236',\n contrastText: '#FFF',\n },\n warning: {\n main: '#F5871F',\n light: '#FCC589',\n dark: '#A2590A',\n contrastText: '#FFF',\n },\n secondary: {\n main: '#662D91',\n light: '#BD8CBF',\n dark: '#440E62',\n contrastText: '#FFF',\n },\n error: {\n main: '#D43C95',\n light: '#8F2064',\n dark: '#F9CDE0',\n contrastText: '#FFF',\n },\n info: {\n main: '#00A88D',\n light: '#ADDCCF',\n dark: '#005243',\n contrastText: '#FFF',\n },\n success: {\n main: '#00A651',\n light: '#A3D39C',\n dark: '#007236',\n contrastText: '#FFF',\n },\n },\n typography: {\n // I couldn't think of what to call this. It is an attempt to match\n // https://www.figma.com/file/atonRPl2YD9A1NCntbDtKR/List-Filter-and-Product-Concept?node-id=1187%3A43730\n // but not sure if line height should be changed\n explainer: {\n fontSize: '14px',\n marginBlockStart: '1em',\n },\n },\n});\n","import { PropsWithChildren } from 'react';\nimport { ThemeProvider } from '@mui/material/styles';\n\nimport { internalAGSystemsTheme, fed21Theme } from './themes';\n\nexport type AgThemeName = 'internal' | 'fed21';\n\nexport interface AgThemeProviderProps {\n name?: AgThemeName;\n}\n\nexport default function AgThemeProvider({\n name = 'internal',\n children,\n}: PropsWithChildren<AgThemeProviderProps>) {\n const theme =\n name === 'internal' ? internalAGSystemsTheme : name === 'fed21' ? fed21Theme : undefined;\n\n // Should be resolved when we move to React >= 18\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n return <ThemeProvider theme={theme}>{children}</ThemeProvider>;\n}\n","import { AgError } from '@australiangreens/ag-error';\n\n// Superclass for errors involving React context.\nexport class ContextError extends AgError {\n static errorName = 'ContextError';\n}\n","import { createContext } from 'react';\n\nimport { ContextError } from '../../errors/ContextError';\n\nconst stub: () => void = () => {\n throw new ContextError('SaladBarContext can only be used in a child of a <SaladBarProvider>');\n};\n\nexport type NotificationType = {\n key: number;\n message: string;\n severity: 'success' | 'info' | 'warning' | 'error' | undefined;\n variant: 'standard' | 'outlined' | 'filled' | undefined;\n progressIndicator: string | undefined;\n autoHideDuration: number | undefined;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst notstub = (key: unknown): NotificationType | NotificationType[] | void => {\n throw new ContextError('SaladBarContext can only be used in a child of a <SaladBarProvider>');\n};\n\ntype SaladBarContextFunction = typeof stub | typeof notstub;\n\ntype SaladBarContextType = {\n enqueueNotification: SaladBarContextFunction; // Call as enqueueNotification(options)\n // where options include message and severity of 'error' ,'warning', 'info' or\n // 'success'\n enqueueSuccessNotification: SaladBarContextFunction; // Call as const key =\n // enqueueSuccessNotification(msg),\n enqueueInfoNotification: SaladBarContextFunction; // Call as const key =\n // enqueueInfoNotification(msg),\n enqueueWarningNotification: SaladBarContextFunction; // Call as const key =\n // enqueueWarningNotification(msg),\n enqueueErrorNotification: SaladBarContextFunction; // Call as const key =\n // enqueueErrorNotification(msg),\n removeNotification: SaladBarContextFunction; // Call as enqueueErrorNotification(key),\n};\n\n// The defaultValue argument is only used when a component does not have a\n// matching Provider above it in the tree. See\n// https://reactjs.org/docs/context.html#reactcreatecontext\n// Using createContext doesn't itself maintain any type of state exactly, it\n// just provides a way for children to access shared references.\nconst defaultValue = {\n enqueueNotification: stub,\n enqueueSuccessNotification: stub,\n enqueueInfoNotification: stub,\n enqueueWarningNotification: stub,\n enqueueErrorNotification: stub,\n removeNotification: notstub,\n} as SaladBarContextType;\n\n/**\n * @returns A SaladBarContext\n */\nconst SaladBarContext = createContext(defaultValue);\n\nexport default SaladBarContext;\n","// The default props passed to the underlying Snackbar component\nimport { SnackbarOrigin } from '@mui/material/Snackbar';\n\nexport const defaultSnackbarProps = {\n autoHideDuration: 6000,\n anchorOrigin: { vertical: 'top', horizontal: 'center' } as SnackbarOrigin,\n\n // The default is false. If we prefer timer to continue when window loses\n // focus, change to true\n disableWindowBlurListener: false,\n};\n\nexport const defaultSaladBarProps = {\n shouldClose: (_event: Event | React.SyntheticEvent<Element, Event>, reason: string) => {\n return reason !== 'clickaway';\n },\n};\n\nexport const defaultEnqueueNotificationOptions = {\n message: '',\n severity: 'info',\n variant: 'standard',\n progressIndicator: undefined, // Can use 'circular' or 'linear'\n};\n","import React, { useRef, useState } from 'react';\nimport Snackbar, { SnackbarProps, SnackbarCloseReason } from '@mui/material/Snackbar';\nimport Alert from '@mui/material/Alert';\nimport LinearProgress from '@mui/material/LinearProgress';\nimport CircularProgress from '@mui/material/CircularProgress';\n\nimport SaladBarContext, { NotificationType } from './SaladBarContext';\nimport {\n defaultSaladBarProps,\n defaultSnackbarProps,\n defaultEnqueueNotificationOptions,\n} from './defaults';\n\nconst MAX_QUEUE_LENGTH = 100;\nconst MAX_QUEUE_HIT_REPORT_INTERVAL = 2000;\nconst SALADBAR_INDEX = 2000;\n\n// No need to use uuids, just use an incremented value\nconst generateNotificationKey = (() => {\n let previousKey = 0;\n return () => {\n previousKey += 1;\n return previousKey;\n };\n})();\n\nconst alertWithLinearProgressStyle = {\n borderBottomLeftRadius: '0px',\n borderBottomRightRadius: '0px',\n};\n\nexport type SaladBarCloseReason = SnackbarCloseReason | 'closeAlert';\n\nexport interface SaladBarProviderProps extends SnackbarProps {\n /** Called when an event triggers closing of currently displayed snackbar.\n * Default implementation returns false if reason is 'clickaway', otherwise\n * true.*/\n shouldClose?: (\n event: Event | React.SyntheticEvent<Element, Event>,\n reason: SaladBarCloseReason\n ) => boolean;\n}\n\nexport default function SaladBarProvider({\n children,\n shouldClose = defaultSaladBarProps.shouldClose,\n ...snackbarProps\n}: SaladBarProviderProps) {\n const [open, setOpen] = useState(false);\n\n // We use a ref instead of a state to store the actual data, because we want\n // queue to be persistent across the whole lifetime of component. I considered\n // using yocto-queue because it would be O(1) instead of O(n), but its not\n // designed to access the head without removing it and its not going to make\n // much difference anyway.\n const queueRef = useRef<NotificationType[]>([]);\n\n const limitLastHitAt = useRef(Date.now());\n const limitHitCountSinceLastReport = useRef(0);\n\n const enqueueNotification = (notification = {}) => {\n limitHitCountSinceLastReport.current += 1;\n if (queueRef.current.length >= MAX_QUEUE_LENGTH) {\n // If the queue length is hit, probably stuck in some sort of loop, so\n // don't want to spam logs instantly so space it out\n if (Date.now() - limitLastHitAt.current >= MAX_QUEUE_HIT_REPORT_INTERVAL) {\n limitLastHitAt.current = Date.now();\n console.error(\n `SaladBarProvider: MAX_QUEUE_LENGTH (${MAX_QUEUE_LENGTH}) hit ${limitHitCountSinceLastReport.current} times in last ${MAX_QUEUE_HIT_REPORT_INTERVAL}ms)`\n );\n limitHitCountSinceLastReport.current = 0;\n }\n }\n\n const newNotification = {\n ...defaultEnqueueNotificationOptions,\n key: generateNotificationKey(), // Can be overridden.\n ...notification, // This could result in collisons, but unlikely.\n };\n\n // Add to the end of queue\n queueRef.current.push(newNotification as NotificationType);\n\n // If the queue was previously empty, then open the snackbar. We don't do it\n // whenever enqueueNotification is called since it will mess up transitions\n if (queueRef.current.length === 1) setOpen(true);\n\n return newNotification.key;\n };\n\n const enqueueSuccessNotification = (message = '', options = {}) =>\n enqueueNotification({ message, severity: 'success', ...options });\n\n const enqueueInfoNotification = (message = '', options = {}) =>\n enqueueNotification({ message, severity: 'info', ...options });\n\n const enqueueWarningNotification = (message = '', options = {}) =>\n enqueueNotification({ message, severity: 'warning', ...options });\n\n const enqueueErrorNotification = (message = '', options = {}) =>\n enqueueNotification({ message, severity: 'error', ...options });\n\n /**\n * Remove the notification with specified key from the queue. If the key is\n * not found, immediately returns null.\n *\n * @param key - The key as returned from enqueue...() function.\n *\n * @returns The removed notification\n */\n const removeNotification = (key: unknown) => {\n const index = queueRef.current.findIndex((x) => x.key === key);\n if (index === -1) return;\n\n if (index === 0) {\n // If its at the front of the queue, it is either currently being\n // displayed or in process of being closed. Either way, we can just set\n // open to false\n setOpen(false);\n return queueRef.current[0];\n }\n // Otherwise we just remove it from the queue, it won't need to transition\n return queueRef.current.splice(index, 1);\n };\n\n const handleClose = (\n event: Event | React.SyntheticEvent<Element, Event>,\n reason: SaladBarCloseReason\n ) => {\n if (shouldClose(event, reason)) setOpen(false);\n };\n\n // Callback fired before the transition is exiting.\n const handleExit = () => {};\n\n // Callback fired when the transition has exited.\n const handleExited = () => {\n // Remove head of queue\n queueRef.current.shift();\n\n // If there is still something on the queue, then re-open\n if (queueRef.current.length > 0) setOpen(true);\n };\n\n // The notification to display is the one at head of queue\n const currentNotification = queueRef.current[0] ?? {\n ...defaultEnqueueNotificationOptions,\n };\n\n // Can also override certain props on a notification level\n const currentNotificationSnackbarProps: { autoHideDuration?: number } = {};\n // Probably a better way of doing this\n if ('autoHideDuration' in currentNotification) {\n currentNotificationSnackbarProps.autoHideDuration = currentNotification.autoHideDuration;\n }\n\n // Note the order of props in Snackbar, we don't allow overriding open and\n // onClose.\n\n const snackbarFinalProps = { ...defaultSnackbarProps, ...snackbarProps };\n\n return (\n // Should be resolved when we move to React >= 18\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n <SaladBarContext.Provider\n value={{\n enqueueNotification,\n enqueueSuccessNotification,\n enqueueInfoNotification,\n enqueueWarningNotification,\n enqueueErrorNotification,\n removeNotification,\n }}\n >\n {children}\n <Snackbar\n {...snackbarFinalProps}\n {...currentNotificationSnackbarProps}\n open={open}\n onClose={handleClose}\n TransitionProps={{\n onExited: handleExited,\n onExit: handleExit,\n }}\n sx={{ zIndex: SALADBAR_INDEX }}\n >\n <div>\n <Alert\n onClose={(event) => handleClose(event, 'closeAlert')}\n severity={currentNotification.severity}\n variant={'filled'}\n icon={\n currentNotification.progressIndicator === 'circular' ? (\n <CircularProgress size=\"1em\" />\n ) : undefined\n }\n style={\n currentNotification.progressIndicator === 'linear'\n ? alertWithLinearProgressStyle\n : undefined\n }\n >\n {currentNotification.message}\n </Alert>\n {currentNotification.progressIndicator === 'linear' && <LinearProgress color=\"primary\" />}\n </div>\n </Snackbar>\n </SaladBarContext.Provider>\n );\n}\n","import { useContext } from 'react';\nimport SaladBarContext from './SaladBarContext';\n\n/**\n * Use the `useSaladBar` hook in components to access the enqueueNotification()\n * method to add a snackbar message to queue.\n *\n * Example:\n *\n * ```js\n * const {\n * enqueueNotification,\n * enqueueSuccessNotification,\n * enqueueInfoNotification,\n * enqueueWarningNotification,\n * enqueueErrorNotification,\n * } = useSaladBar();\n * ...\n * enqueueNotification({message: 'hello', severity: 'info'});\n * // or\n * enqueueInfoNotification('hello');\n * ```\n */\nexport default function useSaladBar() {\n return useContext(SaladBarContext);\n}\n","/* eslint-disable react/prop-types */\n/* eslint-disable react/display-name */\nimport { createHelper } from 'souvlaki';\n\nimport SaladBarProvider from './SaladBarProvider';\n\nexport const withSaladBarProvider = createHelper(() => ({ children }) => (\n <SaladBarProvider>{children}</SaladBarProvider>\n));\n"],"names":["ExampleComponent","text","num","setNum","useState","jsxs","Fragment","jsx","Typography","Button","oldNum","Paper","TOP_STRIPE_HEIGHT","TITLE_BAR_HEIGHT","PREFIX","classes","Root","styled","prop","theme","leftPanel","rightPanel","__spreadValues","_a","_b","TopBar","titleText","dataTestId","Box","IconButton","ArrowForwardIcon","ArrowBackIcon","DEFAULT_PANEL_WIDTH","SidePanelDrawer","Drawer","width","debugOpacity","anchor","navBarOpen","navBarWidthOpen","navBarWidthClosed","DrawerHeaderBox","__spreadProps","SidePanel","children","open","onClose","showCloseArrow","headerBoxProps","onOpened","onClosed","PanelAwareMargins","PageContainer","Container","INITIAL_LEFT_PANEL_OPEN","INITIAL_RIGHT_PANEL_OPEN","PANEL_DEFAULTS","PageLayout","sidePanelsAreMutuallyExclusive","pageContainerProps","pageContentDataTestId","topBarDataTestId","leftPanelOpenInternal","setLeftPanelOpenInternal","rightPanelOpenInternal","setRightPanelOpenInternal","leftPanelOpenInternalPrevious","setLeftPanelOpenInternalPrevious","rightPanelOpenInternalPrevious","setRightPanelOpenInternalPrevious","includeLeftPanel","includeRightPanel","leftPanelTitleText","leftPanelContent","leftPanelFlavour","leftPanelOpen","leftPanelOnChangeOpen","leftPanelWidth","leftPanelArrowButtons","leftPanelStartOpen","leftPanelOnOpened","leftPanelOnClosed","leftPanelDataTestId","rightPanelTitleText","rightPanelContent","rightPanelFlavour","rightPanelOpen","rightPanelOnChangeOpen","rightPanelWidth","rightPanelArrowButtons","rightPanelStartOpen","rightPanelOnOpened","rightPanelOnClosed","rightPanelDataTestId","useEffect","leftPanelOpenCurrent","rightPanelOpenCurrent","handleLeftPanelChangeOpen","handleRightPanelChangeOpen","internalAGSystemsTheme","createTheme","alpha","fed21Theme","AgThemeProvider","name","ThemeProvider","ContextError","AgError","__publicField","stub","notstub","key","defaultValue","SaladBarContext","createContext","defaultSnackbarProps","defaultSaladBarProps","_event","reason","defaultEnqueueNotificationOptions","MAX_QUEUE_LENGTH","MAX_QUEUE_HIT_REPORT_INTERVAL","SALADBAR_INDEX","generateNotificationKey","previousKey","alertWithLinearProgressStyle","SaladBarProvider","shouldClose","snackbarProps","__objRest","setOpen","queueRef","useRef","limitLastHitAt","limitHitCountSinceLastReport","enqueueNotification","notification","newNotification","enqueueSuccessNotification","message","options","enqueueInfoNotification","enqueueWarningNotification","enqueueErrorNotification","removeNotification","index","x","handleClose","event","handleExit","handleExited","currentNotification","currentNotificationSnackbarProps","snackbarFinalProps","Snackbar","Alert","CircularProgress","LinearProgress","useSaladBar","useContext","withSaladBarProvider","createHelper"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/providers/SaladBar/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/providers/SaladBar/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,cAAc,gBAAgB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testWrappers.d.ts","sourceRoot":"","sources":["../../../../src/providers/SaladBar/testWrappers.tsx"],"names":[],"mappings":"AAMA,eAAO,MAAM,oBAAoB,qCAE/B,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@australiangreens/ag-internal-components",
|
|
3
3
|
"private": false,
|
|
4
|
-
"version": "0.0.
|
|
4
|
+
"version": "0.0.26",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"homepage": "https://github.com/australiangreens/ag-internal-components#readme",
|
|
7
7
|
"license": "MIT",
|
|
@@ -38,7 +38,8 @@
|
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
40
|
"@australiangreens/ag-error": "^0.1.7",
|
|
41
|
-
"@australiangreens/ag-error-jest": "^0.1.9"
|
|
41
|
+
"@australiangreens/ag-error-jest": "^0.1.9",
|
|
42
|
+
"souvlaki": "^0.3.0"
|
|
42
43
|
},
|
|
43
44
|
"peerDependencies": {
|
|
44
45
|
"@emotion/react": "11.10.5",
|
|
@@ -60,7 +61,7 @@
|
|
|
60
61
|
"@testing-library/react": "12.1.2",
|
|
61
62
|
"@testing-library/user-event": "^14.4.3",
|
|
62
63
|
"@types/node": "16.18.0",
|
|
63
|
-
"@types/react": "
|
|
64
|
+
"@types/react": "18.0.26",
|
|
64
65
|
"@types/react-dom": "^18.2.4",
|
|
65
66
|
"@types/react-test-renderer": "^18.0.0",
|
|
66
67
|
"@typescript-eslint/eslint-plugin": "^5.59.8",
|