@pautena/react-design-system 0.14.3 → 0.14.4
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/cjs/index.js +2 -2
- package/cjs/index.js.map +1 -1
- package/index.js +4 -4
- package/index.js.map +1 -1
- package/list-panel/cjs/index.js +1 -1
- package/list-panel/cjs/index.js.map +1 -1
- package/list-panel/cjs/package.json +2 -1
- package/list-panel/index.js +1 -1
- package/list-panel/index.js.map +1 -1
- package/list-panel/list-panel.d.ts +1 -0
- package/list-panel/list-panel.mocks.d.ts +1 -0
- package/list-panel/package.json +2 -1
- package/model-router/cjs/index.js +1 -1
- package/model-router/cjs/index.js.map +1 -1
- package/model-router/index.js +1 -1
- package/model-router/index.js.map +1 -1
- package/object-details/cjs/index.js +1 -1
- package/object-details/cjs/index.js.map +1 -1
- package/object-details/index.js +1 -1
- package/object-details/index.js.map +1 -1
- package/package.json +1 -1
- package/value-text/cjs/index.js +1 -1
- package/value-text/cjs/index.js.map +1 -1
- package/value-text/index.js +1 -1
- package/value-text/index.js.map +1 -1
package/list-panel/cjs/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),t=require("@mui/material/Grid"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),t=require("react"),r=require("@mui/material/Grid"),i=require("@mui/material/List"),a=require("@mui/material/ListItemButton"),o=require("@mui/material/ListItemText"),l=require("@mui/material/Paper"),u=require("@mui/material/Tooltip"),n=require("@mui/material"),s=require("@mui/material/colors"),d=require("react-router-dom"),m=require("@mui/material/Link");function c(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var h=c(r),p=c(i),x=c(a),f=c(o),g=c(l),y=c(u),j=c(m);const q=t.createContext(void 0),v=q.Provider,k=t.forwardRef(((t,r)=>{const{href:i,...a}=t;return e.jsx(d.Link,{ref:r,to:i,...a})})),L=t.forwardRef(((t,r)=>e.jsx(j.default,{...t,component:k})));exports.ListPanel=({items:r,defaultSelectedItem:i,colBreakpoint:a=3,children:o,onSelectedItemChange:l=(()=>null)})=>{const u=(({lightWeight:e=100,darkWeight:t=900}={})=>{const{palette:r}=n.useTheme();return"light"===r.mode?r.grey[e]:r.grey[t]})(),{palette:d,typography:m}=n.useTheme(),[c,j]=t.useState(i);return e.jsx(v,{value:c,children:e.jsxs(h.default,{container:!0,bgcolor:u,height:1,children:[e.jsx(h.default,{item:!0,xs:a,pl:1,height:1,children:e.jsx(p.default,{sx:{height:1,overflowY:"auto"},children:r.map((({id:r,text:i,tooltip:a,href:o})=>{const u=r===c,n=o?{component:L,href:o}:{},h=t.createElement(x.default,{...n,key:r,dense:!0,selected:u,onClick:()=>(e=>{j(e),l(e)})(r),"aria-label":i,sx:{backgroundColor:u?`${d.grey[300]} !important`:void 0}},e.jsx(f.default,{primary:i,primaryTypographyProps:{fontWeight:u?m.fontWeightMedium:void 0,color:u?m.body1.color:s.grey[600]}}));return a?e.jsx(y.default,{title:a,enterDelay:1500,placement:"right",children:h},r):h}))})}),e.jsx(h.default,{item:!0,xs:12-a,pl:1,py:1,pr:1,children:e.jsx(g.default,{elevation:0,sx:{width:1,height:1,backgroundColor:d.background.paper},children:o})})]})})},exports.ListPanelContext=q,exports.ListPanelContextProvider=v,exports.useListPanel=()=>t.useContext(q);
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/utils/theme.ts","../../../src/list-panel/list-panel.context.tsx","../../../src/list-panel/list-panel.tsx"],"sourcesContent":["import { Color, useTheme } from \"@mui/material\";\n\ntype KeyColor = keyof Color;\n\nexport const useGetDefaultThemeColor = ({\n lightWeight = 100,\n darkWeight = 900,\n}: { lightWeight?: KeyColor; darkWeight?: KeyColor } = {}) => {\n const { palette } = useTheme();\n return palette.mode === \"light\" ? palette.grey[lightWeight] : palette.grey[darkWeight];\n};\n","import { createContext, useContext } from \"react\";\n\nexport const ListPanelContext = createContext<string | undefined>(undefined);\nexport const ListPanelContextProvider = ListPanelContext.Provider;\nexport const useListPanel = () => useContext(ListPanelContext);\n","import Grid from \"@mui/material/Grid\";\nimport List from \"@mui/material/List\";\nimport ListItemButton from \"@mui/material/ListItemButton\";\nimport ListItemText from \"@mui/material/ListItemText\";\nimport Paper from \"@mui/material/Paper\";\nimport Tooltip from \"@mui/material/Tooltip\";\nimport { useTheme } from \"@mui/material\";\nimport { PropsWithChildren, useState } from \"react\";\nimport { useGetDefaultThemeColor } from \"../utils\";\nimport { ListPanelContextProvider } from \"./list-panel.context\";\nimport { grey } from \"@mui/material/colors\";\n\nexport interface ListPanelItem {\n id: string;\n text: string;\n tooltip?: string;\n}\n\nexport type ListPanelProps = PropsWithChildren<{\n defaultSelectedItem?: string;\n items: ListPanelItem[];\n colBreakpoint?: number;\n onSelectedItemChange?: (id: string) => void;\n}>;\n\nexport const ListPanel = ({\n items,\n defaultSelectedItem,\n colBreakpoint = 3,\n children,\n onSelectedItemChange = () => null,\n}: ListPanelProps) => {\n const bgColor = useGetDefaultThemeColor();\n const { palette, typography } = useTheme();\n const [selectedItem, setSelectedItem] = useState(defaultSelectedItem);\n\n const handleSelectItem = (id: string) => {\n setSelectedItem(id);\n onSelectedItemChange(id);\n };\n\n return (\n <ListPanelContextProvider value={selectedItem}>\n <Grid container bgcolor={bgColor} height={1}>\n <Grid item xs={colBreakpoint} pl={1} height={1}>\n <List sx={{ height: 1, overflowY: \"auto\" }}>\n {items.map(({ id, text, tooltip }) => {\n const selected = id === selectedItem;\n\n const contentEl = (\n <ListItemButton\n key={id}\n dense\n selected={selected}\n onClick={() => handleSelectItem(id)}\n aria-label={text}\n sx={{ backgroundColor: selected ? `${palette.grey[300]} !important` : undefined }}\n >\n <ListItemText\n primary={text}\n primaryTypographyProps={{\n fontWeight: selected ? typography.fontWeightMedium : undefined,\n color: selected ? typography.body1.color : grey[600],\n }}\n />\n </ListItemButton>\n );\n\n return tooltip ? (\n <Tooltip key={id} title={tooltip} enterDelay={1500} placement=\"right\">\n {contentEl}\n </Tooltip>\n ) : (\n contentEl\n );\n })}\n </List>\n </Grid>\n <Grid item xs={12 - colBreakpoint} pl={1} py={1} pr={1}>\n <Paper\n elevation={0}\n sx={{\n width: 1,\n height: 1,\n backgroundColor: palette.background.paper,\n }}\n >\n {children}\n </Paper>\n </Grid>\n </Grid>\n </ListPanelContextProvider>\n );\n};\n"],"names":["ListPanelContext","createContext","undefined","ListPanelContextProvider","Provider","items","defaultSelectedItem","colBreakpoint","children","onSelectedItemChange","bgColor","lightWeight","darkWeight","palette","useTheme","mode","grey","useGetDefaultThemeColor","typography","selectedItem","setSelectedItem","useState","
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/utils/theme.ts","../../../src/list-panel/list-panel.context.tsx","../../../src/link/link.tsx","../../../src/list-panel/list-panel.tsx"],"sourcesContent":["import { Color, useTheme } from \"@mui/material\";\n\ntype KeyColor = keyof Color;\n\nexport const useGetDefaultThemeColor = ({\n lightWeight = 100,\n darkWeight = 900,\n}: { lightWeight?: KeyColor; darkWeight?: KeyColor } = {}) => {\n const { palette } = useTheme();\n return palette.mode === \"light\" ? palette.grey[lightWeight] : palette.grey[darkWeight];\n};\n","import { createContext, useContext } from \"react\";\n\nexport const ListPanelContext = createContext<string | undefined>(undefined);\nexport const ListPanelContextProvider = ListPanelContext.Provider;\nexport const useListPanel = () => useContext(ListPanelContext);\n","import { Link as RouterLink, LinkProps as RouterLinkProps } from \"react-router-dom\";\nimport { forwardRef } from \"react\";\nimport MuiLink, { LinkProps } from \"@mui/material/Link\";\n\n/* eslint-disable react/display-name, @typescript-eslint/no-explicit-any */\nexport const LinkBehaviour = forwardRef<\n any,\n Omit<RouterLinkProps, \"to\"> & { href: RouterLinkProps[\"to\"] }\n>((props, ref) => {\n const { href, ...other } = props;\n return <RouterLink ref={ref} to={href} {...other} />;\n});\n\nexport const Link = forwardRef<any, LinkProps>((props, _1) => {\n return <MuiLink {...(props as any)} component={LinkBehaviour} />;\n});\n","import Grid from \"@mui/material/Grid\";\nimport List from \"@mui/material/List\";\nimport ListItemButton from \"@mui/material/ListItemButton\";\nimport ListItemText from \"@mui/material/ListItemText\";\nimport Paper from \"@mui/material/Paper\";\nimport Tooltip from \"@mui/material/Tooltip\";\nimport { useTheme } from \"@mui/material\";\nimport { PropsWithChildren, useState } from \"react\";\nimport { useGetDefaultThemeColor } from \"../utils\";\nimport { ListPanelContextProvider } from \"./list-panel.context\";\nimport { grey } from \"@mui/material/colors\";\nimport { Link } from \"../link\";\n\nexport interface ListPanelItem {\n id: string;\n text: string;\n tooltip?: string;\n href?: string;\n}\n\nexport type ListPanelProps = PropsWithChildren<{\n defaultSelectedItem?: string;\n items: ListPanelItem[];\n colBreakpoint?: number;\n onSelectedItemChange?: (id: string) => void;\n}>;\n\nexport const ListPanel = ({\n items,\n defaultSelectedItem,\n colBreakpoint = 3,\n children,\n onSelectedItemChange = () => null,\n}: ListPanelProps) => {\n const bgColor = useGetDefaultThemeColor();\n const { palette, typography } = useTheme();\n const [selectedItem, setSelectedItem] = useState(defaultSelectedItem);\n\n const handleSelectItem = (id: string) => {\n setSelectedItem(id);\n onSelectedItemChange(id);\n };\n\n return (\n <ListPanelContextProvider value={selectedItem}>\n <Grid container bgcolor={bgColor} height={1}>\n <Grid item xs={colBreakpoint} pl={1} height={1}>\n <List sx={{ height: 1, overflowY: \"auto\" }}>\n {items.map(({ id, text, tooltip, href }) => {\n const selected = id === selectedItem;\n\n const linkProps = href ? { component: Link, href } : {};\n\n const contentEl = (\n <ListItemButton\n {...linkProps}\n key={id}\n dense\n selected={selected}\n onClick={() => handleSelectItem(id)}\n aria-label={text}\n sx={{ backgroundColor: selected ? `${palette.grey[300]} !important` : undefined }}\n >\n <ListItemText\n primary={text}\n primaryTypographyProps={{\n fontWeight: selected ? typography.fontWeightMedium : undefined,\n color: selected ? typography.body1.color : grey[600],\n }}\n />\n </ListItemButton>\n );\n\n return tooltip ? (\n <Tooltip key={id} title={tooltip} enterDelay={1500} placement=\"right\">\n {contentEl}\n </Tooltip>\n ) : (\n contentEl\n );\n })}\n </List>\n </Grid>\n <Grid item xs={12 - colBreakpoint} pl={1} py={1} pr={1}>\n <Paper\n elevation={0}\n sx={{\n width: 1,\n height: 1,\n backgroundColor: palette.background.paper,\n }}\n >\n {children}\n </Paper>\n </Grid>\n </Grid>\n </ListPanelContextProvider>\n );\n};\n"],"names":["ListPanelContext","createContext","undefined","ListPanelContextProvider","Provider","LinkBehaviour","forwardRef","props","ref","href","other","_jsx","jsx","RouterLink","to","Link","_1","MuiLink","component","items","defaultSelectedItem","colBreakpoint","children","onSelectedItemChange","bgColor","lightWeight","darkWeight","palette","useTheme","mode","grey","useGetDefaultThemeColor","typography","selectedItem","setSelectedItem","useState","value","_jsxs","Grid","container","bgcolor","height","item","xs","pl","List","sx","overflowY","map","id","text","tooltip","selected","linkProps","contentEl","_createElement","createElement","ListItemButton","key","dense","onClick","handleSelectItem","backgroundColor","ListItemText","primary","primaryTypographyProps","fontWeight","fontWeightMedium","color","body1","Tooltip","title","enterDelay","placement","py","pr","Paper","elevation","width","background","paper","useContext"],"mappings":"wkBAIO,MCFMA,EAAmBC,EAAaA,mBAAqBC,GACrDC,EAA2BH,EAAiBI,SCE5CC,EAAgBC,EAAUA,YAGrC,CAACC,EAAOC,KACR,MAAMC,KAAEA,KAASC,GAAUH,EAC3B,OAAOI,EAACC,IAAAC,OAAW,CAAAL,IAAKA,EAAKM,GAAIL,KAAUC,GAAS,IAGzCK,EAAOT,EAAUA,YAAiB,CAACC,EAAOS,IAC9CL,EAAAA,IAACM,EAAAA,QAAa,IAAAV,EAAeW,UAAWb,wBCaxB,EACvBc,QACAC,sBACAC,gBAAgB,EAChBC,WACAC,uBAAuB,KAAM,UAE7B,MAAMC,EH9B+B,GACrCC,cAAc,IACdC,aAAa,KACwC,MACrD,MAAMC,QAAEA,GAAYC,EAAAA,WACpB,MAAwB,UAAjBD,EAAQE,KAAmBF,EAAQG,KAAKL,GAAeE,EAAQG,KAAKJ,EAAW,EGyBtEK,IACVJ,QAAEA,EAAOK,WAAEA,GAAeJ,EAAQA,YACjCK,EAAcC,GAAmBC,EAAQA,SAACf,GAOjD,OACET,EAAAC,IAACT,EAAwB,CAACiC,MAAOH,EAC/BX,SAAAe,OAACC,EAAAA,QAAI,CAACC,WAAS,EAACC,QAAShB,EAASiB,OAAQ,EACxCnB,SAAA,CAAAX,MAAC2B,EAAAA,QAAK,CAAAI,MAAK,EAAAC,GAAItB,EAAeuB,GAAI,EAAGH,OAAQ,EAACnB,SAC5CX,MAACkC,EAAAA,SAAKC,GAAI,CAAEL,OAAQ,EAAGM,UAAW,QAC/BzB,SAAAH,EAAM6B,KAAI,EAAGC,KAAIC,OAAMC,UAAS1C,WAC/B,MAAM2C,EAAWH,IAAOhB,EAElBoB,EAAY5C,EAAO,CAAES,UAAWH,EAAMN,QAAS,GAE/C6C,EACJC,EAAAC,cAACC,EAAc,QACT,IAAAJ,EACJK,IAAKT,EACLU,OAAK,EACLP,SAAUA,EACVQ,QAAS,IArBA,CAACX,IACxBf,EAAgBe,GAChB1B,EAAqB0B,EAAG,EAmBKY,CAAiBZ,GAAG,aACvBC,EACZJ,GAAI,CAAEgB,gBAAiBV,EAAW,GAAGzB,EAAQG,KAAK,uBAAoB5B,IAEtES,EAAAA,IAACoD,EAAAA,QACC,CAAAC,QAASd,EACTe,uBAAwB,CACtBC,WAAYd,EAAWpB,EAAWmC,sBAAmBjE,EACrDkE,MAAOhB,EAAWpB,EAAWqC,MAAMD,MAAQtC,EAAIA,KAAC,SAMxD,OAAOqB,EACLxC,EAAAA,IAAC2D,EAAAA,QAAO,CAAUC,MAAOpB,EAASqB,WAAY,KAAMC,UAAU,QAC3DnD,SAAAgC,GADWL,GAId,CACD,QAIPtC,EAAAA,IAAC2B,EAAI,QAAA,CAACI,MAAI,EAACC,GAAI,GAAKtB,EAAeuB,GAAI,EAAG8B,GAAI,EAAGC,GAAI,EAACrD,SACpDX,EAACC,IAAAgE,WACCC,UAAW,EACX/B,GAAI,CACFgC,MAAO,EACPrC,OAAQ,EACRqB,gBAAiBnC,EAAQoD,WAAWC,OACrC1D,SAEAA,UAKT,qFF7FwB,IAAM2D,EAAAA,WAAWjF"}
|
package/list-panel/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as r,jsxs as t}from"react/jsx-runtime";import e from"@mui/material/Grid";import
|
|
1
|
+
import{jsx as r,jsxs as t}from"react/jsx-runtime";import{createContext as e,useContext as o,forwardRef as i,useState as m,createElement as a}from"react";import l from"@mui/material/Grid";import n from"@mui/material/List";import p from"@mui/material/ListItemButton";import c from"@mui/material/ListItemText";import h from"@mui/material/Paper";import d from"@mui/material/Tooltip";import{useTheme as u}from"@mui/material";import{grey as g}from"@mui/material/colors";import{Link as f}from"react-router-dom";import s from"@mui/material/Link";const y=e(void 0),k=y.Provider,x=()=>o(y),v=i(((t,e)=>{const{href:o,...i}=t;return r(f,{ref:e,to:o,...i})})),b=i(((t,e)=>r(s,{...t,component:v}))),L=({items:e,defaultSelectedItem:o,colBreakpoint:i=3,children:f,onSelectedItemChange:s=(()=>null)})=>{const y=(({lightWeight:r=100,darkWeight:t=900}={})=>{const{palette:e}=u();return"light"===e.mode?e.grey[r]:e.grey[t]})(),{palette:x,typography:v}=u(),[L,C]=m(o);return r(k,{value:L,children:t(l,{container:!0,bgcolor:y,height:1,children:[r(l,{item:!0,xs:i,pl:1,height:1,children:r(n,{sx:{height:1,overflowY:"auto"},children:e.map((({id:t,text:e,tooltip:o,href:i})=>{const m=t===L,l=a(p,{...i?{component:b,href:i}:{},key:t,dense:!0,selected:m,onClick:()=>(r=>{C(r),s(r)})(t),"aria-label":e,sx:{backgroundColor:m?`${x.grey[300]} !important`:void 0}},r(c,{primary:e,primaryTypographyProps:{fontWeight:m?v.fontWeightMedium:void 0,color:m?v.body1.color:g[600]}}));return o?r(d,{title:o,enterDelay:1500,placement:"right",children:l},t):l}))})}),r(l,{item:!0,xs:12-i,pl:1,py:1,pr:1,children:r(h,{elevation:0,sx:{width:1,height:1,backgroundColor:x.background.paper},children:f})})]})})};export{L as ListPanel,y as ListPanelContext,k as ListPanelContextProvider,x as useListPanel};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/list-panel/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/utils/theme.ts","../../src/list-panel/list-panel.context.tsx","../../src/list-panel/list-panel.tsx"],"sourcesContent":["import { Color, useTheme } from \"@mui/material\";\n\ntype KeyColor = keyof Color;\n\nexport const useGetDefaultThemeColor = ({\n lightWeight = 100,\n darkWeight = 900,\n}: { lightWeight?: KeyColor; darkWeight?: KeyColor } = {}) => {\n const { palette } = useTheme();\n return palette.mode === \"light\" ? palette.grey[lightWeight] : palette.grey[darkWeight];\n};\n","import { createContext, useContext } from \"react\";\n\nexport const ListPanelContext = createContext<string | undefined>(undefined);\nexport const ListPanelContextProvider = ListPanelContext.Provider;\nexport const useListPanel = () => useContext(ListPanelContext);\n","import Grid from \"@mui/material/Grid\";\nimport List from \"@mui/material/List\";\nimport ListItemButton from \"@mui/material/ListItemButton\";\nimport ListItemText from \"@mui/material/ListItemText\";\nimport Paper from \"@mui/material/Paper\";\nimport Tooltip from \"@mui/material/Tooltip\";\nimport { useTheme } from \"@mui/material\";\nimport { PropsWithChildren, useState } from \"react\";\nimport { useGetDefaultThemeColor } from \"../utils\";\nimport { ListPanelContextProvider } from \"./list-panel.context\";\nimport { grey } from \"@mui/material/colors\";\n\nexport interface ListPanelItem {\n id: string;\n text: string;\n tooltip?: string;\n}\n\nexport type ListPanelProps = PropsWithChildren<{\n defaultSelectedItem?: string;\n items: ListPanelItem[];\n colBreakpoint?: number;\n onSelectedItemChange?: (id: string) => void;\n}>;\n\nexport const ListPanel = ({\n items,\n defaultSelectedItem,\n colBreakpoint = 3,\n children,\n onSelectedItemChange = () => null,\n}: ListPanelProps) => {\n const bgColor = useGetDefaultThemeColor();\n const { palette, typography } = useTheme();\n const [selectedItem, setSelectedItem] = useState(defaultSelectedItem);\n\n const handleSelectItem = (id: string) => {\n setSelectedItem(id);\n onSelectedItemChange(id);\n };\n\n return (\n <ListPanelContextProvider value={selectedItem}>\n <Grid container bgcolor={bgColor} height={1}>\n <Grid item xs={colBreakpoint} pl={1} height={1}>\n <List sx={{ height: 1, overflowY: \"auto\" }}>\n {items.map(({ id, text, tooltip }) => {\n const selected = id === selectedItem;\n\n const contentEl = (\n <ListItemButton\n key={id}\n dense\n selected={selected}\n onClick={() => handleSelectItem(id)}\n aria-label={text}\n sx={{ backgroundColor: selected ? `${palette.grey[300]} !important` : undefined }}\n >\n <ListItemText\n primary={text}\n primaryTypographyProps={{\n fontWeight: selected ? typography.fontWeightMedium : undefined,\n color: selected ? typography.body1.color : grey[600],\n }}\n />\n </ListItemButton>\n );\n\n return tooltip ? (\n <Tooltip key={id} title={tooltip} enterDelay={1500} placement=\"right\">\n {contentEl}\n </Tooltip>\n ) : (\n contentEl\n );\n })}\n </List>\n </Grid>\n <Grid item xs={12 - colBreakpoint} pl={1} py={1} pr={1}>\n <Paper\n elevation={0}\n sx={{\n width: 1,\n height: 1,\n backgroundColor: palette.background.paper,\n }}\n >\n {children}\n </Paper>\n </Grid>\n </Grid>\n </ListPanelContextProvider>\n );\n};\n"],"names":["ListPanelContext","createContext","undefined","ListPanelContextProvider","Provider","useListPanel","useContext","ListPanel","items","defaultSelectedItem","colBreakpoint","children","onSelectedItemChange","bgColor","lightWeight","darkWeight","palette","useTheme","mode","grey","useGetDefaultThemeColor","typography","selectedItem","setSelectedItem","useState","
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/utils/theme.ts","../../src/list-panel/list-panel.context.tsx","../../src/link/link.tsx","../../src/list-panel/list-panel.tsx"],"sourcesContent":["import { Color, useTheme } from \"@mui/material\";\n\ntype KeyColor = keyof Color;\n\nexport const useGetDefaultThemeColor = ({\n lightWeight = 100,\n darkWeight = 900,\n}: { lightWeight?: KeyColor; darkWeight?: KeyColor } = {}) => {\n const { palette } = useTheme();\n return palette.mode === \"light\" ? palette.grey[lightWeight] : palette.grey[darkWeight];\n};\n","import { createContext, useContext } from \"react\";\n\nexport const ListPanelContext = createContext<string | undefined>(undefined);\nexport const ListPanelContextProvider = ListPanelContext.Provider;\nexport const useListPanel = () => useContext(ListPanelContext);\n","import { Link as RouterLink, LinkProps as RouterLinkProps } from \"react-router-dom\";\nimport { forwardRef } from \"react\";\nimport MuiLink, { LinkProps } from \"@mui/material/Link\";\n\n/* eslint-disable react/display-name, @typescript-eslint/no-explicit-any */\nexport const LinkBehaviour = forwardRef<\n any,\n Omit<RouterLinkProps, \"to\"> & { href: RouterLinkProps[\"to\"] }\n>((props, ref) => {\n const { href, ...other } = props;\n return <RouterLink ref={ref} to={href} {...other} />;\n});\n\nexport const Link = forwardRef<any, LinkProps>((props, _1) => {\n return <MuiLink {...(props as any)} component={LinkBehaviour} />;\n});\n","import Grid from \"@mui/material/Grid\";\nimport List from \"@mui/material/List\";\nimport ListItemButton from \"@mui/material/ListItemButton\";\nimport ListItemText from \"@mui/material/ListItemText\";\nimport Paper from \"@mui/material/Paper\";\nimport Tooltip from \"@mui/material/Tooltip\";\nimport { useTheme } from \"@mui/material\";\nimport { PropsWithChildren, useState } from \"react\";\nimport { useGetDefaultThemeColor } from \"../utils\";\nimport { ListPanelContextProvider } from \"./list-panel.context\";\nimport { grey } from \"@mui/material/colors\";\nimport { Link } from \"../link\";\n\nexport interface ListPanelItem {\n id: string;\n text: string;\n tooltip?: string;\n href?: string;\n}\n\nexport type ListPanelProps = PropsWithChildren<{\n defaultSelectedItem?: string;\n items: ListPanelItem[];\n colBreakpoint?: number;\n onSelectedItemChange?: (id: string) => void;\n}>;\n\nexport const ListPanel = ({\n items,\n defaultSelectedItem,\n colBreakpoint = 3,\n children,\n onSelectedItemChange = () => null,\n}: ListPanelProps) => {\n const bgColor = useGetDefaultThemeColor();\n const { palette, typography } = useTheme();\n const [selectedItem, setSelectedItem] = useState(defaultSelectedItem);\n\n const handleSelectItem = (id: string) => {\n setSelectedItem(id);\n onSelectedItemChange(id);\n };\n\n return (\n <ListPanelContextProvider value={selectedItem}>\n <Grid container bgcolor={bgColor} height={1}>\n <Grid item xs={colBreakpoint} pl={1} height={1}>\n <List sx={{ height: 1, overflowY: \"auto\" }}>\n {items.map(({ id, text, tooltip, href }) => {\n const selected = id === selectedItem;\n\n const linkProps = href ? { component: Link, href } : {};\n\n const contentEl = (\n <ListItemButton\n {...linkProps}\n key={id}\n dense\n selected={selected}\n onClick={() => handleSelectItem(id)}\n aria-label={text}\n sx={{ backgroundColor: selected ? `${palette.grey[300]} !important` : undefined }}\n >\n <ListItemText\n primary={text}\n primaryTypographyProps={{\n fontWeight: selected ? typography.fontWeightMedium : undefined,\n color: selected ? typography.body1.color : grey[600],\n }}\n />\n </ListItemButton>\n );\n\n return tooltip ? (\n <Tooltip key={id} title={tooltip} enterDelay={1500} placement=\"right\">\n {contentEl}\n </Tooltip>\n ) : (\n contentEl\n );\n })}\n </List>\n </Grid>\n <Grid item xs={12 - colBreakpoint} pl={1} py={1} pr={1}>\n <Paper\n elevation={0}\n sx={{\n width: 1,\n height: 1,\n backgroundColor: palette.background.paper,\n }}\n >\n {children}\n </Paper>\n </Grid>\n </Grid>\n </ListPanelContextProvider>\n );\n};\n"],"names":["ListPanelContext","createContext","undefined","ListPanelContextProvider","Provider","useListPanel","useContext","LinkBehaviour","forwardRef","props","ref","href","other","_jsx","RouterLink","to","Link","_1","MuiLink","component","ListPanel","items","defaultSelectedItem","colBreakpoint","children","onSelectedItemChange","bgColor","lightWeight","darkWeight","palette","useTheme","mode","grey","useGetDefaultThemeColor","typography","selectedItem","setSelectedItem","useState","value","_jsxs","Grid","container","bgcolor","height","item","xs","pl","List","sx","overflowY","map","id","text","tooltip","selected","contentEl","_createElement","ListItemButton","key","dense","onClick","handleSelectItem","backgroundColor","ListItemText","primary","primaryTypographyProps","fontWeight","fontWeightMedium","color","body1","Tooltip","title","enterDelay","placement","py","pr","Paper","elevation","width","background","paper"],"mappings":"0hBAIO,MCFMA,EAAmBC,OAAkCC,GACrDC,EAA2BH,EAAiBI,SAC5CC,EAAe,IAAMC,EAAWN,GCChCO,EAAgBC,GAG3B,CAACC,EAAOC,KACR,MAAMC,KAAEA,KAASC,GAAUH,EAC3B,OAAOI,EAACC,EAAW,CAAAJ,IAAKA,EAAKK,GAAIJ,KAAUC,GAAS,IAGzCI,EAAOR,GAA2B,CAACC,EAAOQ,IAC9CJ,EAACK,EAAa,IAAAT,EAAeU,UAAWZ,MCapCa,EAAY,EACvBC,QACAC,sBACAC,gBAAgB,EAChBC,WACAC,uBAAuB,KAAM,UAE7B,MAAMC,EH9B+B,GACrCC,cAAc,IACdC,aAAa,KACwC,MACrD,MAAMC,QAAEA,GAAYC,IACpB,MAAwB,UAAjBD,EAAQE,KAAmBF,EAAQG,KAAKL,GAAeE,EAAQG,KAAKJ,EAAW,EGyBtEK,IACVJ,QAAEA,EAAOK,WAAEA,GAAeJ,KACzBK,EAAcC,GAAmBC,EAASf,GAOjD,OACET,EAACV,EAAwB,CAACmC,MAAOH,EAC/BX,SAAAe,EAACC,EAAI,CAACC,WAAS,EAACC,QAAShB,EAASiB,OAAQ,EACxCnB,SAAA,CAAAX,EAAC2B,EAAK,CAAAI,MAAK,EAAAC,GAAItB,EAAeuB,GAAI,EAAGH,OAAQ,EAACnB,SAC5CX,EAACkC,GAAKC,GAAI,CAAEL,OAAQ,EAAGM,UAAW,QAC/BzB,SAAAH,EAAM6B,KAAI,EAAGC,KAAIC,OAAMC,UAAS1C,WAC/B,MAAM2C,EAAWH,IAAOhB,EAIlBoB,EACJC,EAACC,EACK,IAJU9C,EAAO,CAAEQ,UAAWH,EAAML,QAAS,GAKjD+C,IAAKP,EACLQ,OAAK,EACLL,SAAUA,EACVM,QAAS,IArBA,CAACT,IACxBf,EAAgBe,GAChB1B,EAAqB0B,EAAG,EAmBKU,CAAiBV,GAAG,aACvBC,EACZJ,GAAI,CAAEc,gBAAiBR,EAAW,GAAGzB,EAAQG,KAAK,uBAAoB9B,IAEtEW,EAACkD,EACC,CAAAC,QAASZ,EACTa,uBAAwB,CACtBC,WAAYZ,EAAWpB,EAAWiC,sBAAmBjE,EACrDkE,MAAOd,EAAWpB,EAAWmC,MAAMD,MAAQpC,EAAK,SAMxD,OAAOqB,EACLxC,EAACyD,EAAO,CAAUC,MAAOlB,EAASmB,WAAY,KAAMC,UAAU,QAC3DjD,SAAA+B,GADWJ,GAId,CACD,QAIPtC,EAAC2B,EAAI,CAACI,MAAI,EAACC,GAAI,GAAKtB,EAAeuB,GAAI,EAAG4B,GAAI,EAAGC,GAAI,EAACnD,SACpDX,EAAC+D,GACCC,UAAW,EACX7B,GAAI,CACF8B,MAAO,EACPnC,OAAQ,EACRmB,gBAAiBjC,EAAQkD,WAAWC,OACrCxD,SAEAA,UAKT"}
|
|
@@ -2,3 +2,4 @@ import { ListPanelItem } from "./list-panel";
|
|
|
2
2
|
export declare const ListPanelDemoContent: () => JSX.Element;
|
|
3
3
|
export declare const mockItemsShort: ListPanelItem[];
|
|
4
4
|
export declare const mockItemsLong: ListPanelItem[];
|
|
5
|
+
export declare const mockItemsRouterNavigation: ListPanelItem[];
|
package/list-panel/package.json
CHANGED
|
@@ -20,5 +20,5 @@ object-assign
|
|
|
20
20
|
*
|
|
21
21
|
* This source code is licensed under the MIT license found in the
|
|
22
22
|
* LICENSE file in the root directory of this source tree.
|
|
23
|
-
*/Bt={exports:{}},"production"===process.env.NODE_ENV?Bt.exports=function(){if(Ft)return Lt;Ft=1;var e,t=Symbol.for("react.element"),r=Symbol.for("react.portal"),n=Symbol.for("react.fragment"),i=Symbol.for("react.strict_mode"),o=Symbol.for("react.profiler"),a=Symbol.for("react.provider"),l=Symbol.for("react.context"),s=Symbol.for("react.server_context"),u=Symbol.for("react.forward_ref"),c=Symbol.for("react.suspense"),d=Symbol.for("react.suspense_list"),f=Symbol.for("react.memo"),p=Symbol.for("react.lazy"),m=Symbol.for("react.offscreen");function y(e){if("object"==typeof e&&null!==e){var m=e.$$typeof;switch(m){case t:switch(e=e.type){case n:case o:case i:case c:case d:return e;default:switch(e=e&&e.$$typeof){case s:case l:case u:case p:case f:case a:return e;default:return m}}case r:return m}}}return e=Symbol.for("react.module.reference"),Lt.ContextConsumer=l,Lt.ContextProvider=a,Lt.Element=t,Lt.ForwardRef=u,Lt.Fragment=n,Lt.Lazy=p,Lt.Memo=f,Lt.Portal=r,Lt.Profiler=o,Lt.StrictMode=i,Lt.Suspense=c,Lt.SuspenseList=d,Lt.isAsyncMode=function(){return!1},Lt.isConcurrentMode=function(){return!1},Lt.isContextConsumer=function(e){return y(e)===l},Lt.isContextProvider=function(e){return y(e)===a},Lt.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===t},Lt.isForwardRef=function(e){return y(e)===u},Lt.isFragment=function(e){return y(e)===n},Lt.isLazy=function(e){return y(e)===p},Lt.isMemo=function(e){return y(e)===f},Lt.isPortal=function(e){return y(e)===r},Lt.isProfiler=function(e){return y(e)===o},Lt.isStrictMode=function(e){return y(e)===i},Lt.isSuspense=function(e){return y(e)===c},Lt.isSuspenseList=function(e){return y(e)===d},Lt.isValidElementType=function(t){return"string"==typeof t||"function"==typeof t||t===n||t===o||t===i||t===c||t===d||t===m||"object"==typeof t&&null!==t&&(t.$$typeof===p||t.$$typeof===f||t.$$typeof===a||t.$$typeof===l||t.$$typeof===u||t.$$typeof===e||void 0!==t.getModuleId)},Lt.typeOf=y,Lt}():Bt.exports=(Wt||(Wt=1,"production"!==process.env.NODE_ENV&&function(){var e,t=Symbol.for("react.element"),r=Symbol.for("react.portal"),n=Symbol.for("react.fragment"),i=Symbol.for("react.strict_mode"),o=Symbol.for("react.profiler"),a=Symbol.for("react.provider"),l=Symbol.for("react.context"),s=Symbol.for("react.server_context"),u=Symbol.for("react.forward_ref"),c=Symbol.for("react.suspense"),d=Symbol.for("react.suspense_list"),f=Symbol.for("react.memo"),p=Symbol.for("react.lazy"),m=Symbol.for("react.offscreen");function y(e){if("object"==typeof e&&null!==e){var m=e.$$typeof;switch(m){case t:var y=e.type;switch(y){case n:case o:case i:case c:case d:return y;default:var h=y&&y.$$typeof;switch(h){case s:case l:case u:case p:case f:case a:return h;default:return m}}case r:return m}}}e=Symbol.for("react.module.reference");var h=l,x=a,b=t,g=u,v=n,j=p,S=f,w=r,$=o,C=i,E=c,k=d,T=!1,P=!1;Ut.ContextConsumer=h,Ut.ContextProvider=x,Ut.Element=b,Ut.ForwardRef=g,Ut.Fragment=v,Ut.Lazy=j,Ut.Memo=S,Ut.Portal=w,Ut.Profiler=$,Ut.StrictMode=C,Ut.Suspense=E,Ut.SuspenseList=k,Ut.isAsyncMode=function(e){return T||(T=!0,console.warn("The ReactIs.isAsyncMode() alias has been deprecated, and will be removed in React 18+.")),!1},Ut.isConcurrentMode=function(e){return P||(P=!0,console.warn("The ReactIs.isConcurrentMode() alias has been deprecated, and will be removed in React 18+.")),!1},Ut.isContextConsumer=function(e){return y(e)===l},Ut.isContextProvider=function(e){return y(e)===a},Ut.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===t},Ut.isForwardRef=function(e){return y(e)===u},Ut.isFragment=function(e){return y(e)===n},Ut.isLazy=function(e){return y(e)===p},Ut.isMemo=function(e){return y(e)===f},Ut.isPortal=function(e){return y(e)===r},Ut.isProfiler=function(e){return y(e)===o},Ut.isStrictMode=function(e){return y(e)===i},Ut.isSuspense=function(e){return y(e)===c},Ut.isSuspenseList=function(e){return y(e)===d},Ut.isValidElementType=function(t){return"string"==typeof t||"function"==typeof t||t===n||t===o||t===i||t===c||t===d||t===m||"object"==typeof t&&null!==t&&(t.$$typeof===p||t.$$typeof===f||t.$$typeof===a||t.$$typeof===l||t.$$typeof===u||t.$$typeof===e||void 0!==t.getModuleId)},Ut.typeOf=y}()),Ut),"undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")(),xt.exports.oneOfType([xt.exports.func,xt.exports.object]);const Yt={border:0,clip:"rect(0 0 0 0)",height:"1px",margin:-1,overflow:"hidden",padding:0,position:"absolute",whiteSpace:"nowrap",width:"1px"};const Ht=Number.isInteger||function(e){return"number"==typeof e&&isFinite(e)&&Math.floor(e)===e};function Jt(e,t,r,n){const i=e[t];if(null==i||!Ht(i)){const e=function(e){const t=typeof e;switch(t){case"number":return Number.isNaN(e)?"NaN":Number.isFinite(e)?e!==Math.floor(e)?"float":"number":"Infinity";case"object":return null===e?"null":e.constructor.name;default:return t}}(i);return new RangeError(`Invalid ${n} \`${t}\` of type \`${e}\` supplied to \`${r}\`, expected \`integer\`.`)}return null}function Gt(e,t,...r){return void 0===e[t]?null:Jt(e,t,...r)}function Xt(){return null}Gt.isRequired=Jt,Xt.isRequired=Xt,process.env.NODE_ENV;const Kt=({order:t,orderBy:r,headCells:n,onRequestSort:i})=>e.jsx(Te.default,{children:e.jsx(be.default,{children:n.map((n=>{return e.jsx(ge.default,{variant:"head",padding:n.disablePadding?"none":"normal",sortDirection:r===n.id&&t,sx:{fontWeight:"bold"},children:n.sort?e.jsxs(ke.default,{active:r===n.id,direction:r===n.id?t:"asc",onClick:(o=n.id,()=>{i(o)}),children:[n.label,r===n.id?e.jsx(Z.default,{component:"span",sx:Yt,children:"desc"===t?"sorted descending":"sorted ascending"}):null]}):n.label},String(n.id));var o}))})});function Qt(e,t,r){return t[r]<e[r]?-1:t[r]>e[r]?1:0}const Zt=({children:t,data:n,search:i,columns:o,defaultSort:a,defaultOrder:l="asc",loading:s=!1})=>{const[u,c]=r.useState(""),[d,f]=r.useState(l),[p,m]=r.useState(a),y=n.slice().filter(function(e,t){return r=>!t||e.some((e=>{let n=r[e.id];return n?.toLowerCase&&(n=n.toLowerCase()),n?.toString().includes(t.toLowerCase())}))}(o,u)).sort(function(e,t){return"desc"===e?(e,r)=>Qt(e,r,t):(e,r)=>-Qt(e,r,t)}(d,p));return e.jsx(e.Fragment,{children:e.jsxs(Z.default,{sx:{paddingX:1,paddingBottom:2},children:[i&&e.jsx(Z.default,{paddingY:2,children:e.jsx(le.default,{fullWidth:!0,placeholder:"Search",InputProps:{role:"search",startAdornment:e.jsx($e.default,{position:"start",children:e.jsx(Ee.default,{})})},onChange:e=>c(e.target.value)})}),e.jsx(Se.default,{children:e.jsxs(Ce.default,{children:[e.jsx(Kt,{order:d,orderBy:p,headCells:o,onRequestSort:e=>{f(p===e&&"asc"===d?"desc":"asc"),m(e)}}),e.jsx(we.default,{children:s?e.jsx(be.default,{children:e.jsx(ge.default,{colSpan:o.length,sx:{textAlign:"center"},children:e.jsx(de.default,{})})}):0===y.length?e.jsx(be.default,{children:e.jsx(ge.default,{colSpan:o.length,sx:{textAlign:"center"},children:"No data"})}):t(y)})]})})]})})};Zt.defaultProps={defaultOrder:"asc"};const er=({columns:t,options:n,data:i,onClick:o,search:a,defaultSort:l,defaultOrder:s,loading:u})=>{const c=[...t,{id:"__options",label:"",disablePadding:!1,numeric:!1,sort:!1}],[d,f]=r.useState(null);return e.jsxs(e.Fragment,{children:[e.jsx(Zt,{columns:c,data:i,search:a,defaultSort:l,defaultOrder:s,loading:u,children:t=>t.map(((t,r)=>e.jsxs(be.default,{onClick:()=>o&&o(t),role:"row","aria-rowindex":r,sx:{cursor:o&&"pointer"},children:[c.map((({id:n},i)=>e.jsx(ge.default,{role:"cell",scope:"row","aria-rowindex":r,"aria-colindex":i,children:t[n]},n.toString()))),n&&e.jsx(ge.default,{children:e.jsx(ve.default,{"data-testid":`options-${t.id}`,onClick:e=>{e.stopPropagation(),f({item:t,anchor:e.currentTarget})},children:e.jsx(Pe.default,{})})})]},t.id)))}),n&&e.jsx(je.default,{anchorEl:d?.anchor,open:!!d,onClose:()=>f(null),anchorOrigin:{vertical:"top",horizontal:"left"},transformOrigin:{vertical:"top",horizontal:"left"},children:n.map((({id:t,label:r,onClick:n})=>e.jsx(oe.default,{onClick:()=>{d&&n(d?.item),f(null)},children:r},t)))})]})},tr=({model:n,modelName:i,listData:o,listRequest:a,deleteRequest:l,basePath:s="",deleteFeature:u=!0,updateFeature:c=!0,addFeature:d=!0,detailsFeature:f=!0,onRequestList:p,onClickDeleteItem:m})=>{const y=t.useNavigate();r.useEffect((()=>{p()}),[]),lt({title:"Item deleted",message:"The item has been deleted successfully",severity:"success"},!!l.success,{from:!1,to:!0}),lt({title:"We had an error",message:l.error||"",severity:"error"},!!l.error,{from:!1,to:!0});const h=f?e=>{y(`${s}/${e.id}`)}:void 0,x=(e,t)=>{"edit"===e?y(`${s}/${t.id}/update`):m(t)},b=[];c&&b.push({id:"edit",label:"Edit",onClick:e=>x("edit",e)}),u&&b.push({id:"remove",label:"Remove",onClick:e=>x("remove",e)});const g=[];return d&&g.push({id:"add",text:"Add",href:`${s}/add`}),e.jsxs(it,{loading:a.loading||l.loading,children:[e.jsx(ft,{title:i,preset:"default",actions:g.length>0?g:void 0}),e.jsx(pt,{children:e.jsx(er,{columns:n.fields.filter((({listable:e})=>e)).map((({id:e,name:t,type:r})=>({disablePadding:!1,id:e,label:t,numeric:"number"===r,sort:!1}))),data:o,defaultSort:n.fields[0].id,onClick:h,options:b.length>0?b:void 0})})]})},rr=({model:t,modelName:r,basePath:n="",onSubmitNewItem:i,newItemRequest:o})=>(lt({message:"Item added successfully",severity:"success"},!!o.success,{from:!1,to:!0}),Ke(`${n}/`,!!o.success,{from:!1,to:!0}),lt({title:"We had an error",message:o.error||"",severity:"error"},!!o.error,{from:!1,to:!0}),e.jsxs(it,{loading:o.loading,children:[e.jsx(ft,{title:`Add ${r}`,preset:"default",breadcrumbs:[{id:"list",text:r,link:`${n}/`},{id:"add",text:`Add new ${r}`,link:`${n}/add`}]}),e.jsx(pt,{children:e.jsx(Xe,{model:t,saveButtonText:"Save",onSubmit:i})})]})),nr=({onClickCancel:t,onClickSubmit:r,sx:n})=>e.jsxs($e.default,{position:"end",sx:n,children:[e.jsx(K.default,{variant:"contained",size:"small",color:"error","aria-label":"cancel button",startIcon:e.jsx(Re.default,{sx:{fontSize:12}}),onClick:t,sx:{paddingRight:0,minWidth:0,marginRight:1}}),e.jsx(K.default,{variant:"contained",size:"small",color:"primary","aria-label":"submit button",startIcon:e.jsx(Oe.default,{sx:{fontSize:12}}),onClick:r,sx:{paddingRight:0,minWidth:0}})]}),ir=(e,t)=>{const[n,i]=r.useState(!1),[o,a]=r.useState(e),l=()=>{i(!1),a(e)};return{isEditing:n,cancelEdit:l,editValue:o,setEditValue:a,startEdit:()=>{i(!0)},submitEdit:()=>{t(o),l()}}},or=({dense:t,onClick:r})=>{const{typography:n}=b.useTheme();return e.jsx(ve.default,{size:"small",onClick:r,sx:{ml:t?.5:1},"aria-label":"edit button",children:e.jsx(Ne.default,{sx:{fontSize:n.pxToRem(t?18:24)}})})},ar=e=>`label-${e.replace(/ /g,"-")}`,lr=({label:t,hideLabel:r,tooltip:n,tooltipEnterDelay:i=2e3,children:o,dense:a,sx:l})=>{const{typography:s}=b.useTheme(),u=ar(t);return e.jsxs(Z.default,{width:1,lineHeight:a?0:void 0,sx:l,children:[!r&&e.jsx(ue.default,{variant:a?"caption":"subtitle2",role:"label",id:u,lineHeight:a?s.pxToRem(15):void 0,children:t}),n?e.jsx(Me.default,{title:n,placement:"top",enterDelay:i,children:o}):o]})},sr=({label:t,value:r,placeholder:n="-",editable:i,dense:o,onEdit:a=(()=>null)})=>{const l=ar(t),{typography:s}=b.useTheme(),{isEditing:u,editValue:c,startEdit:d,cancelEdit:f,setEditValue:p,submitEdit:m}=ir(r,a),y={fontSize:o?s.h6.fontSize:s.h5.fontSize};return e.jsx(lr,{label:t,dense:o,children:u?e.jsxs(Z.default,{display:"flex",alignItems:"center",children:[e.jsx(qe.default,{size:o?"small":"medium",checked:c,onChange:e=>p(e.target.checked)}),e.jsx(nr,{onClickCancel:f,onClickSubmit:m})]}):e.jsxs(Z.default,{display:"flex",alignItems:"center","aria-labelledby":l,role:"checkbox","aria-checked":r,children:[void 0===r?e.jsx(ue.default,{variant:"h5",children:n}):r?e.jsx(Oe.default,{color:"success",sx:y}):e.jsx(Ie.default,{color:"error",sx:y}),i&&e.jsx(or,{dense:o,onClick:d})]})})},ur=({label:t,value:r,format:n,placeholder:i="-",editable:o,editInputType:a="datetime",dense:l,onEdit:s=(()=>null)})=>{const{isEditing:u,editValue:c,startEdit:d,cancelEdit:f,setEditValue:p,submitEdit:m}=ir(r,s),y=ar(t),h=r&&U.format(r,n)||i,x="datetime"===a?H.DateTimePicker:"time"===a?J.TimePicker:Y.DatePicker;return e.jsx(lr,{label:t,hideLabel:u,tooltip:h,dense:l,sx:{display:"flex",flexDirection:"column"},children:u?e.jsx(x,{value:c,format:n,label:t,onChange:e=>p(e||void 0),slots:{textField:t=>e.jsx(le.default,{...t,size:"small",InputProps:{...t.InputProps,endAdornment:e.jsxs(e.Fragment,{children:[t.InputProps?.endAdornment,e.jsx(nr,{onClickCancel:f,onClickSubmit:m,sx:{ml:2}})]}),sx:{marginY:l?.2:1}}})}}):e.jsxs(Z.default,{display:"flex",alignItems:"center",children:[e.jsx(ue.default,{variant:l?"body1":"h5",noWrap:!0,"aria-labelledby":y,children:h}),o&&e.jsx(or,{dense:l,onClick:d})]})})},cr=({label:t,value:n,placeholder:i="-",editable:o,dense:a,onEdit:l=(()=>null)})=>{const s=r.useRef(null),{isEditing:u,editValue:c,startEdit:d,cancelEdit:f,setEditValue:p,submitEdit:m}=ir(n?.toString(),l),y=ar(t),h=n?.toString()||i,x=e=>{"Enter"===e.key&&l(e.target.value)};return r.useEffect((()=>(s.current?.addEventListener("keypress",x),()=>s.current?.removeEventListener("keypress",x))),[s.current]),e.jsx(lr,{hideLabel:u,label:t,tooltip:h,dense:a,children:u?e.jsx(le.default,{inputRef:s,value:c,label:t,size:"small",onChange:e=>p(e.target.value),InputProps:{endAdornment:e.jsx(nr,{onClickCancel:f,onClickSubmit:m})},sx:{marginY:a?0:1}}):e.jsxs(ue.default,{variant:a?"body1":"h5",noWrap:!0,"aria-labelledby":y,children:[h,o&&e.jsx(or,{dense:a,onClick:d})]})})},dr="RdsValueItem-root",fr="RdsValueItem-content",pr=({children:t,bordered:r=!0,...n})=>{const i=((e,t)=>{const r=`solid ${t} 1px`,n="none";if(e){if(Array.isArray(e))return e.map((e=>e?r:n));if("object"==typeof e){const t={};return Object.entries(e).forEach((([e,i])=>{t[e]=i?r:n})),t}return r}})(r,De({lightWeight:200,darkWeight:800}));return e.jsx(Q.default,{item:!0,className:dr,...n,children:e.jsx(Z.default,{className:fr,px:1,borderLeft:i,children:t})})},mr=(t,r,{dense:n}={})=>{const{id:i,name:o,type:a}=t,l=r[i];return"boolean"===a?e.jsx(sr,{dense:n,label:o,value:l}):"date"===a||"time"===a||"datetime"===a?e.jsx(ur,{dense:n,label:o,value:l,format:t.format}):"object"!=typeof l||Array.isArray(l)?e.jsx(cr,{dense:n,label:o,value:l?.toString()}):e.jsx(cr,{dense:n,label:o,value:JSON.stringify(l)})},yr=({field:{name:t,description:r,value:n},instance:i,dense:o})=>{const a=[{field:"id",headerName:"ID",width:70}];n.forEach((e=>{a.push({field:e.id,headerName:e.name})}));const l=i.map(((e,t)=>({id:t,...e})));return e.jsx(Ae,{title:t,subtitle:r,dense:o,children:e.jsx(Q.default,{item:!0,xs:12,children:e.jsx(G.DataGrid,{rows:l,columns:a,density:o?"compact":"standard",disableRowSelectionOnClick:!0,pageSizeOptions:[5],initialState:{pagination:{paginationModel:{pageSize:5}}},sx:{height:400}})})})},hr=({field:{name:t,description:r,value:n},instance:i,dense:o})=>{const a=Ve();return e.jsx(Ae,{title:t,subtitle:r,dense:o,children:n.map((t=>{const{id:r,xs:n,sm:l,md:s,lg:u,xl:c}=t,d=a.increment(t);return e.jsx(pr,{xs:n,sm:l,md:s,lg:u,xl:c,bordered:d,children:mr(t,i,{dense:o})},r)}))})},xr=({model:t,instance:r,dense:n})=>{const i=Ve();return e.jsx(Q.default,{container:!0,spacing:n?1:2,children:t.fields.map((t=>{const{id:o,type:a,xs:l=3,sm:s=0,md:u=0,lg:c=0,xl:d=0}=t;if("group"===a)return i.increment({xs:12}),e.jsx(Q.default,{item:!0,xs:12,children:e.jsx(hr,{field:t,instance:r[o],dense:n})},o);if("group[]"===a)return i.increment({xs:12}),e.jsx(Q.default,{item:!0,xs:12,children:e.jsx(yr,{field:t,instance:r[o],dense:n})},o);const f=i.increment(t);return e.jsx(pr,{xs:l,sm:s,md:u,lg:c,xl:d,bordered:f,children:mr(t,r,{dense:n})},o)}))})},br=({model:n,modelName:i,basePath:o="",onRequestItem:a,itemRequest:l,detailsItem:s})=>{const{id:u=""}=t.useParams();return r.useEffect((()=>{a(u)}),[u]),e.jsxs(it,{loading:l.loading,children:[e.jsx(ft,{title:u,preset:"default",breadcrumbs:[{id:"list",text:i,link:`${o}/`},{id:"detail",text:u,link:`${o}/${u}`}]}),e.jsx(pt,{children:s&&e.jsx(xr,{model:n,instance:s})})]})};exports.IdleRequest={idle:!0},exports.LoadingRequest={loading:!0},exports.ModelRouter=r=>{const{updateFeature:n=!0,addFeature:i=!0,detailsFeature:o=!0}=r;return e.jsxs(t.Routes,{children:[e.jsx(t.Route,{path:"",element:e.jsx(tr,{...r})}),o&&e.jsx(t.Route,{path:":id",element:e.jsx(br,{...r})}),i&&e.jsx(t.Route,{path:"add",element:e.jsx(rr,{...r})}),n&&e.jsx(t.Route,{path:":id/update",element:e.jsx(mt,{...r})})]})},exports.SuccessRequest={success:!0};
|
|
23
|
+
*/Bt={exports:{}},"production"===process.env.NODE_ENV?Bt.exports=function(){if(Ft)return Lt;Ft=1;var e,t=Symbol.for("react.element"),r=Symbol.for("react.portal"),n=Symbol.for("react.fragment"),i=Symbol.for("react.strict_mode"),o=Symbol.for("react.profiler"),a=Symbol.for("react.provider"),l=Symbol.for("react.context"),s=Symbol.for("react.server_context"),u=Symbol.for("react.forward_ref"),c=Symbol.for("react.suspense"),d=Symbol.for("react.suspense_list"),f=Symbol.for("react.memo"),p=Symbol.for("react.lazy"),m=Symbol.for("react.offscreen");function y(e){if("object"==typeof e&&null!==e){var m=e.$$typeof;switch(m){case t:switch(e=e.type){case n:case o:case i:case c:case d:return e;default:switch(e=e&&e.$$typeof){case s:case l:case u:case p:case f:case a:return e;default:return m}}case r:return m}}}return e=Symbol.for("react.module.reference"),Lt.ContextConsumer=l,Lt.ContextProvider=a,Lt.Element=t,Lt.ForwardRef=u,Lt.Fragment=n,Lt.Lazy=p,Lt.Memo=f,Lt.Portal=r,Lt.Profiler=o,Lt.StrictMode=i,Lt.Suspense=c,Lt.SuspenseList=d,Lt.isAsyncMode=function(){return!1},Lt.isConcurrentMode=function(){return!1},Lt.isContextConsumer=function(e){return y(e)===l},Lt.isContextProvider=function(e){return y(e)===a},Lt.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===t},Lt.isForwardRef=function(e){return y(e)===u},Lt.isFragment=function(e){return y(e)===n},Lt.isLazy=function(e){return y(e)===p},Lt.isMemo=function(e){return y(e)===f},Lt.isPortal=function(e){return y(e)===r},Lt.isProfiler=function(e){return y(e)===o},Lt.isStrictMode=function(e){return y(e)===i},Lt.isSuspense=function(e){return y(e)===c},Lt.isSuspenseList=function(e){return y(e)===d},Lt.isValidElementType=function(t){return"string"==typeof t||"function"==typeof t||t===n||t===o||t===i||t===c||t===d||t===m||"object"==typeof t&&null!==t&&(t.$$typeof===p||t.$$typeof===f||t.$$typeof===a||t.$$typeof===l||t.$$typeof===u||t.$$typeof===e||void 0!==t.getModuleId)},Lt.typeOf=y,Lt}():Bt.exports=(Wt||(Wt=1,"production"!==process.env.NODE_ENV&&function(){var e,t=Symbol.for("react.element"),r=Symbol.for("react.portal"),n=Symbol.for("react.fragment"),i=Symbol.for("react.strict_mode"),o=Symbol.for("react.profiler"),a=Symbol.for("react.provider"),l=Symbol.for("react.context"),s=Symbol.for("react.server_context"),u=Symbol.for("react.forward_ref"),c=Symbol.for("react.suspense"),d=Symbol.for("react.suspense_list"),f=Symbol.for("react.memo"),p=Symbol.for("react.lazy"),m=Symbol.for("react.offscreen");function y(e){if("object"==typeof e&&null!==e){var m=e.$$typeof;switch(m){case t:var y=e.type;switch(y){case n:case o:case i:case c:case d:return y;default:var h=y&&y.$$typeof;switch(h){case s:case l:case u:case p:case f:case a:return h;default:return m}}case r:return m}}}e=Symbol.for("react.module.reference");var h=l,x=a,b=t,g=u,v=n,j=p,S=f,w=r,$=o,C=i,E=c,k=d,T=!1,P=!1;Ut.ContextConsumer=h,Ut.ContextProvider=x,Ut.Element=b,Ut.ForwardRef=g,Ut.Fragment=v,Ut.Lazy=j,Ut.Memo=S,Ut.Portal=w,Ut.Profiler=$,Ut.StrictMode=C,Ut.Suspense=E,Ut.SuspenseList=k,Ut.isAsyncMode=function(e){return T||(T=!0,console.warn("The ReactIs.isAsyncMode() alias has been deprecated, and will be removed in React 18+.")),!1},Ut.isConcurrentMode=function(e){return P||(P=!0,console.warn("The ReactIs.isConcurrentMode() alias has been deprecated, and will be removed in React 18+.")),!1},Ut.isContextConsumer=function(e){return y(e)===l},Ut.isContextProvider=function(e){return y(e)===a},Ut.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===t},Ut.isForwardRef=function(e){return y(e)===u},Ut.isFragment=function(e){return y(e)===n},Ut.isLazy=function(e){return y(e)===p},Ut.isMemo=function(e){return y(e)===f},Ut.isPortal=function(e){return y(e)===r},Ut.isProfiler=function(e){return y(e)===o},Ut.isStrictMode=function(e){return y(e)===i},Ut.isSuspense=function(e){return y(e)===c},Ut.isSuspenseList=function(e){return y(e)===d},Ut.isValidElementType=function(t){return"string"==typeof t||"function"==typeof t||t===n||t===o||t===i||t===c||t===d||t===m||"object"==typeof t&&null!==t&&(t.$$typeof===p||t.$$typeof===f||t.$$typeof===a||t.$$typeof===l||t.$$typeof===u||t.$$typeof===e||void 0!==t.getModuleId)},Ut.typeOf=y}()),Ut),"undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")(),xt.exports.oneOfType([xt.exports.func,xt.exports.object]);const Yt={border:0,clip:"rect(0 0 0 0)",height:"1px",margin:-1,overflow:"hidden",padding:0,position:"absolute",whiteSpace:"nowrap",width:"1px"};const Ht=Number.isInteger||function(e){return"number"==typeof e&&isFinite(e)&&Math.floor(e)===e};function Jt(e,t,r,n){const i=e[t];if(null==i||!Ht(i)){const e=function(e){const t=typeof e;switch(t){case"number":return Number.isNaN(e)?"NaN":Number.isFinite(e)?e!==Math.floor(e)?"float":"number":"Infinity";case"object":return null===e?"null":e.constructor.name;default:return t}}(i);return new RangeError(`Invalid ${n} \`${t}\` of type \`${e}\` supplied to \`${r}\`, expected \`integer\`.`)}return null}function Gt(e,t,...r){return void 0===e[t]?null:Jt(e,t,...r)}function Xt(){return null}Gt.isRequired=Jt,Xt.isRequired=Xt,process.env.NODE_ENV;const Kt=({order:t,orderBy:r,headCells:n,onRequestSort:i})=>e.jsx(Te.default,{children:e.jsx(be.default,{children:n.map((n=>{return e.jsx(ge.default,{variant:"head",padding:n.disablePadding?"none":"normal",sortDirection:r===n.id&&t,sx:{fontWeight:"bold"},children:n.sort?e.jsxs(ke.default,{active:r===n.id,direction:r===n.id?t:"asc",onClick:(o=n.id,()=>{i(o)}),children:[n.label,r===n.id?e.jsx(Z.default,{component:"span",sx:Yt,children:"desc"===t?"sorted descending":"sorted ascending"}):null]}):n.label},String(n.id));var o}))})});function Qt(e,t,r){return t[r]<e[r]?-1:t[r]>e[r]?1:0}const Zt=({children:t,data:n,search:i,columns:o,defaultSort:a,defaultOrder:l="asc",loading:s=!1})=>{const[u,c]=r.useState(""),[d,f]=r.useState(l),[p,m]=r.useState(a),y=n.slice().filter(function(e,t){return r=>!t||e.some((e=>{let n=r[e.id];return n?.toLowerCase&&(n=n.toLowerCase()),n?.toString().includes(t.toLowerCase())}))}(o,u)).sort(function(e,t){return"desc"===e?(e,r)=>Qt(e,r,t):(e,r)=>-Qt(e,r,t)}(d,p));return e.jsx(e.Fragment,{children:e.jsxs(Z.default,{sx:{paddingX:1,paddingBottom:2},children:[i&&e.jsx(Z.default,{paddingY:2,children:e.jsx(le.default,{fullWidth:!0,placeholder:"Search",InputProps:{role:"search",startAdornment:e.jsx($e.default,{position:"start",children:e.jsx(Ee.default,{})})},onChange:e=>c(e.target.value)})}),e.jsx(Se.default,{children:e.jsxs(Ce.default,{children:[e.jsx(Kt,{order:d,orderBy:p,headCells:o,onRequestSort:e=>{f(p===e&&"asc"===d?"desc":"asc"),m(e)}}),e.jsx(we.default,{children:s?e.jsx(be.default,{children:e.jsx(ge.default,{colSpan:o.length,sx:{textAlign:"center"},children:e.jsx(de.default,{})})}):0===y.length?e.jsx(be.default,{children:e.jsx(ge.default,{colSpan:o.length,sx:{textAlign:"center"},children:"No data"})}):t(y)})]})})]})})};Zt.defaultProps={defaultOrder:"asc"};const er=({columns:t,options:n,data:i,onClick:o,search:a,defaultSort:l,defaultOrder:s,loading:u})=>{const c=[...t,{id:"__options",label:"",disablePadding:!1,numeric:!1,sort:!1}],[d,f]=r.useState(null);return e.jsxs(e.Fragment,{children:[e.jsx(Zt,{columns:c,data:i,search:a,defaultSort:l,defaultOrder:s,loading:u,children:t=>t.map(((t,r)=>e.jsxs(be.default,{onClick:()=>o&&o(t),role:"row","aria-rowindex":r,sx:{cursor:o&&"pointer"},children:[c.map((({id:n},i)=>e.jsx(ge.default,{role:"cell",scope:"row","aria-rowindex":r,"aria-colindex":i,children:t[n]},n.toString()))),n&&e.jsx(ge.default,{children:e.jsx(ve.default,{"data-testid":`options-${t.id}`,onClick:e=>{e.stopPropagation(),f({item:t,anchor:e.currentTarget})},children:e.jsx(Pe.default,{})})})]},t.id)))}),n&&e.jsx(je.default,{anchorEl:d?.anchor,open:!!d,onClose:()=>f(null),anchorOrigin:{vertical:"top",horizontal:"left"},transformOrigin:{vertical:"top",horizontal:"left"},children:n.map((({id:t,label:r,onClick:n})=>e.jsx(oe.default,{onClick:()=>{d&&n(d?.item),f(null)},children:r},t)))})]})},tr=({model:n,modelName:i,listData:o,listRequest:a,deleteRequest:l,basePath:s="",deleteFeature:u=!0,updateFeature:c=!0,addFeature:d=!0,detailsFeature:f=!0,onRequestList:p,onClickDeleteItem:m})=>{const y=t.useNavigate();r.useEffect((()=>{p()}),[]),lt({title:"Item deleted",message:"The item has been deleted successfully",severity:"success"},!!l.success,{from:!1,to:!0}),lt({title:"We had an error",message:l.error||"",severity:"error"},!!l.error,{from:!1,to:!0});const h=f?e=>{y(`${s}/${e.id}`)}:void 0,x=(e,t)=>{"edit"===e?y(`${s}/${t.id}/update`):m(t)},b=[];c&&b.push({id:"edit",label:"Edit",onClick:e=>x("edit",e)}),u&&b.push({id:"remove",label:"Remove",onClick:e=>x("remove",e)});const g=[];return d&&g.push({id:"add",text:"Add",href:`${s}/add`}),e.jsxs(it,{loading:a.loading||l.loading,children:[e.jsx(ft,{title:i,preset:"default",actions:g.length>0?g:void 0}),e.jsx(pt,{children:e.jsx(er,{columns:n.fields.filter((({listable:e})=>e)).map((({id:e,name:t,type:r})=>({disablePadding:!1,id:e,label:t,numeric:"number"===r,sort:!1}))),data:o,defaultSort:n.fields[0].id,onClick:h,options:b.length>0?b:void 0})})]})},rr=({model:t,modelName:r,basePath:n="",onSubmitNewItem:i,newItemRequest:o})=>(lt({message:"Item added successfully",severity:"success"},!!o.success,{from:!1,to:!0}),Ke(`${n}/`,!!o.success,{from:!1,to:!0}),lt({title:"We had an error",message:o.error||"",severity:"error"},!!o.error,{from:!1,to:!0}),e.jsxs(it,{loading:o.loading,children:[e.jsx(ft,{title:`Add ${r}`,preset:"default",breadcrumbs:[{id:"list",text:r,link:`${n}/`},{id:"add",text:`Add new ${r}`,link:`${n}/add`}]}),e.jsx(pt,{children:e.jsx(Xe,{model:t,saveButtonText:"Save",onSubmit:i})})]})),nr=({onClickCancel:t,onClickSubmit:r,sx:n})=>e.jsxs($e.default,{position:"end",sx:n,children:[e.jsx(K.default,{variant:"contained",size:"small",color:"error","aria-label":"cancel button",startIcon:e.jsx(Re.default,{sx:{fontSize:12}}),onClick:t,sx:{paddingRight:0,minWidth:0,marginRight:1}}),e.jsx(K.default,{variant:"contained",size:"small",color:"primary","aria-label":"submit button",startIcon:e.jsx(Oe.default,{sx:{fontSize:12}}),onClick:r,sx:{paddingRight:0,minWidth:0}})]}),ir=(e,t)=>{const[n,i]=r.useState(!1),[o,a]=r.useState(e),l=()=>{i(!1),a(e)};return{isEditing:n,cancelEdit:l,editValue:o,setEditValue:a,startEdit:()=>{i(!0)},submitEdit:()=>{t(o),l()}}},or=({dense:t,onClick:r})=>{const{typography:n}=b.useTheme();return e.jsx(ve.default,{size:"small",onClick:r,sx:{ml:t?.5:1},"aria-label":"edit button",children:e.jsx(Ne.default,{sx:{fontSize:n.pxToRem(t?18:24)}})})},ar=e=>`label-${e.replace(/ /g,"-")}`,lr=({label:t,hideLabel:r,tooltip:n,tooltipEnterDelay:i=2e3,children:o,dense:a,sx:l})=>{const{typography:s}=b.useTheme(),u=ar(t);return e.jsxs(Z.default,{width:1,lineHeight:a?0:void 0,sx:l,children:[!r&&e.jsx(ue.default,{variant:a?"caption":"subtitle2",role:"label",id:u,lineHeight:a?s.pxToRem(15):void 0,children:t}),n?e.jsx(Me.default,{title:n,placement:"top",enterDelay:i,children:o}):o]})},sr=({label:t,value:r,placeholder:n="-",editable:i,dense:o,onEdit:a=(()=>null)})=>{const l=ar(t),{typography:s}=b.useTheme(),{isEditing:u,editValue:c,startEdit:d,cancelEdit:f,setEditValue:p,submitEdit:m}=ir(r,a),y={fontSize:o?s.h6.fontSize:s.h5.fontSize};return e.jsx(lr,{label:t,dense:o,children:u?e.jsxs(Z.default,{display:"flex",alignItems:"center",children:[e.jsx(qe.default,{size:o?"small":"medium",checked:c,onChange:e=>p(e.target.checked)}),e.jsx(nr,{onClickCancel:f,onClickSubmit:m})]}):e.jsxs(Z.default,{display:"flex",alignItems:"center","aria-labelledby":l,role:"checkbox","aria-checked":r,children:[void 0===r?e.jsx(ue.default,{variant:"h5",children:n}):r?e.jsx(Oe.default,{color:"success",sx:y}):e.jsx(Ie.default,{color:"error",sx:y}),i&&e.jsx(or,{dense:o,onClick:d})]})})},ur=({label:t,value:r,format:n,placeholder:i="-",editable:o,editInputType:a="datetime",dense:l,onEdit:s=(()=>null)})=>{const{isEditing:u,editValue:c,startEdit:d,cancelEdit:f,setEditValue:p,submitEdit:m}=ir(r,s),y=ar(t),h=r&&U.format(r,n)||i,x="datetime"===a?H.DateTimePicker:"time"===a?J.TimePicker:Y.DatePicker;return e.jsx(lr,{label:t,hideLabel:u,tooltip:h,dense:l,sx:{display:"flex",flexDirection:"column"},children:u?e.jsx(x,{value:c,format:n,label:t,onChange:e=>p(e||void 0),slots:{textField:t=>e.jsx(le.default,{...t,size:"small",InputProps:{...t.InputProps,endAdornment:e.jsxs(e.Fragment,{children:[t.InputProps?.endAdornment,e.jsx(nr,{onClickCancel:f,onClickSubmit:m,sx:{ml:2}})]}),sx:{marginY:l?.2:1}}})}}):e.jsxs(Z.default,{display:"flex",alignItems:"center",children:[e.jsx(ue.default,{variant:l?"body1":"h5",noWrap:!0,"aria-labelledby":y,children:h}),o&&e.jsx(or,{dense:l,onClick:d})]})})},cr=({label:t,value:n,placeholder:i="-",editable:o,dense:a,onEdit:l=(()=>null)})=>{const s=r.useRef(null),{isEditing:u,editValue:c,startEdit:d,cancelEdit:f,setEditValue:p,submitEdit:m}=ir(n?.toString(),l),y=ar(t),h=n?.toString()||i,x=e=>{"Enter"===e.key&&l(e.target.value)};return r.useEffect((()=>(s.current?.addEventListener("keypress",x),()=>s.current?.removeEventListener("keypress",x))),[s.current]),e.jsx(lr,{hideLabel:u,label:t,tooltip:h,dense:a,children:u?e.jsx(le.default,{inputRef:s,value:c,label:t,size:"small",onChange:e=>p(e.target.value),InputProps:{endAdornment:e.jsx(nr,{onClickCancel:f,onClickSubmit:m})},sx:{marginY:a?0:1}}):e.jsxs(Z.default,{display:"flex",children:[e.jsx(ue.default,{variant:a?"body1":"h5",noWrap:!0,"aria-labelledby":y,children:h}),o&&e.jsx(or,{dense:a,onClick:d})]})})},dr="RdsValueItem-root",fr="RdsValueItem-content",pr=({children:t,bordered:r=!0,...n})=>{const i=((e,t)=>{const r=`solid ${t} 1px`,n="none";if(e){if(Array.isArray(e))return e.map((e=>e?r:n));if("object"==typeof e){const t={};return Object.entries(e).forEach((([e,i])=>{t[e]=i?r:n})),t}return r}})(r,De({lightWeight:200,darkWeight:800}));return e.jsx(Q.default,{item:!0,className:dr,...n,children:e.jsx(Z.default,{className:fr,px:1,borderLeft:i,children:t})})},mr=(t,r,{dense:n}={})=>{const{id:i,name:o,type:a}=t,l=r[i];return"boolean"===a?e.jsx(sr,{dense:n,label:o,value:l}):"date"===a||"time"===a||"datetime"===a?e.jsx(ur,{dense:n,label:o,value:l,format:t.format}):"object"!=typeof l||Array.isArray(l)?e.jsx(cr,{dense:n,label:o,value:l?.toString()}):e.jsx(cr,{dense:n,label:o,value:JSON.stringify(l)})},yr=({field:{name:t,description:r,value:n},instance:i,dense:o})=>{const a=[{field:"id",headerName:"ID",width:70}];n.forEach((e=>{a.push({field:e.id,headerName:e.name})}));const l=i.map(((e,t)=>({id:t,...e})));return e.jsx(Ae,{title:t,subtitle:r,dense:o,children:e.jsx(Q.default,{item:!0,xs:12,children:e.jsx(G.DataGrid,{rows:l,columns:a,density:o?"compact":"standard",disableRowSelectionOnClick:!0,pageSizeOptions:[5],initialState:{pagination:{paginationModel:{pageSize:5}}},sx:{height:400}})})})},hr=({field:{name:t,description:r,value:n},instance:i,dense:o})=>{const a=Ve();return e.jsx(Ae,{title:t,subtitle:r,dense:o,children:n.map((t=>{const{id:r,xs:n,sm:l,md:s,lg:u,xl:c}=t,d=a.increment(t);return e.jsx(pr,{xs:n,sm:l,md:s,lg:u,xl:c,bordered:d,children:mr(t,i,{dense:o})},r)}))})},xr=({model:t,instance:r,dense:n})=>{const i=Ve();return e.jsx(Q.default,{container:!0,spacing:n?1:2,children:t.fields.map((t=>{const{id:o,type:a,xs:l=3,sm:s=0,md:u=0,lg:c=0,xl:d=0}=t;if("group"===a)return i.increment({xs:12}),e.jsx(Q.default,{item:!0,xs:12,children:e.jsx(hr,{field:t,instance:r[o],dense:n})},o);if("group[]"===a)return i.increment({xs:12}),e.jsx(Q.default,{item:!0,xs:12,children:e.jsx(yr,{field:t,instance:r[o],dense:n})},o);const f=i.increment(t);return e.jsx(pr,{xs:l,sm:s,md:u,lg:c,xl:d,bordered:f,children:mr(t,r,{dense:n})},o)}))})},br=({model:n,modelName:i,basePath:o="",onRequestItem:a,itemRequest:l,detailsItem:s})=>{const{id:u=""}=t.useParams();return r.useEffect((()=>{a(u)}),[u]),e.jsxs(it,{loading:l.loading,children:[e.jsx(ft,{title:u,preset:"default",breadcrumbs:[{id:"list",text:i,link:`${o}/`},{id:"detail",text:u,link:`${o}/${u}`}]}),e.jsx(pt,{children:s&&e.jsx(xr,{model:n,instance:s})})]})};exports.IdleRequest={idle:!0},exports.LoadingRequest={loading:!0},exports.ModelRouter=r=>{const{updateFeature:n=!0,addFeature:i=!0,detailsFeature:o=!0}=r;return e.jsxs(t.Routes,{children:[e.jsx(t.Route,{path:"",element:e.jsx(tr,{...r})}),o&&e.jsx(t.Route,{path:":id",element:e.jsx(br,{...r})}),i&&e.jsx(t.Route,{path:"add",element:e.jsx(rr,{...r})}),n&&e.jsx(t.Route,{path:":id/update",element:e.jsx(mt,{...r})})]})},exports.SuccessRequest={success:!0};
|
|
24
24
|
//# sourceMappingURL=index.js.map
|