@flipdish/portal-library 1.0.28 → 1.0.29
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/components/index.cjs.js +1 -1
- package/dist/components/index.d.ts +3 -0
- package/dist/components/index.js +1 -1
- package/dist/components/ui/GenericTable/GenericTable.cjs.js +18 -0
- package/dist/components/ui/GenericTable/GenericTable.cjs.js.map +1 -0
- package/dist/components/ui/GenericTable/GenericTable.js +18 -0
- package/dist/components/ui/GenericTable/GenericTable.js.map +1 -0
- package/dist/components/ui/GenericTable/GenericTableBody.cjs.js +2 -0
- package/dist/components/ui/GenericTable/GenericTableBody.cjs.js.map +1 -0
- package/dist/components/ui/GenericTable/GenericTableBody.d.ts +15 -0
- package/dist/components/ui/GenericTable/GenericTableBody.js +2 -0
- package/dist/components/ui/GenericTable/GenericTableBody.js.map +1 -0
- package/dist/components/ui/GenericTable/GenericTableBodyRow.d.ts +6 -0
- package/dist/components/ui/GenericTable/GenericTableTitle.cjs.js +2 -0
- package/dist/components/ui/GenericTable/GenericTableTitle.cjs.js.map +1 -0
- package/dist/components/ui/GenericTable/GenericTableTitle.js +2 -0
- package/dist/components/ui/GenericTable/GenericTableTitle.js.map +1 -0
- package/dist/components/ui/GenericTable/HighlightScrollbar.cjs.js +2 -0
- package/dist/components/ui/GenericTable/HighlightScrollbar.cjs.js.map +1 -0
- package/dist/components/ui/GenericTable/HighlightScrollbar.js +2 -0
- package/dist/components/ui/GenericTable/HighlightScrollbar.js.map +1 -0
- package/dist/components/ui/GenericTable/types.d.ts +11 -0
- package/package.json +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var e=require("./themes/flipdishPublicTheme.cjs.js"),r=require("./ui/NotFoundPage/NotFoundPage.cjs.js"),i=require("./ui/PageLayout/PageLayout.cjs.js"),
|
|
1
|
+
"use strict";var e=require("./themes/flipdishPublicTheme.cjs.js"),r=require("./ui/NotFoundPage/NotFoundPage.cjs.js"),i=require("./ui/PageLayout/PageLayout.cjs.js"),u=require("./ui/PortalMock/PortalMock.cjs.js"),a=require("./ui/LazyComponent/LazyComponent.cjs.js"),o=require("./ui/Spacer/Spacer.cjs.js"),s=require("./ui/Chip/Chip.cjs.js"),t=require("./ui/Form/utilities/formValidation.cjs.js");require("react/jsx-runtime"),require("@mui/material/Button"),require("formik"),require("@mui/material/TextField"),require("react"),require("../providers/TranslationProvider.cjs.js"),require("./ui/Form/FormItemLayout.cjs.js"),require("@mui/material/Typography"),require("./ui/GenericTable/GenericTable.cjs.js"),require("./ui/GenericTable/GenericTableBody.cjs.js"),require("@mui/material/TableRow"),require("./ui/GenericTable/GenericTableTitle.cjs.js"),exports.flipdishPublicTheme=e,exports.NotFoundPage=r,exports.PageLayout=i.default,exports.PortalMock=u,exports.LazyComponent=a,exports.Spacer=o,exports.Chip=s,exports.formikValidate=t.formikValidate;
|
|
2
2
|
//# sourceMappingURL=index.cjs.js.map
|
|
@@ -6,3 +6,6 @@ export { default as LazyComponent } from './ui/LazyComponent/LazyComponent.js';
|
|
|
6
6
|
export { default as Spacer } from './ui/Spacer/Spacer.js';
|
|
7
7
|
export { default as Chip } from './ui/Chip/Chip.js';
|
|
8
8
|
export { formikValidate } from './ui/Form/utilities/formValidation.js';
|
|
9
|
+
export { GenericTableColumns } from './ui/GenericTable/types.js';
|
|
10
|
+
export { TableCellProps } from './ui/GenericTable/GenericTableBody.js';
|
|
11
|
+
export { TableBodyRowProps } from './ui/GenericTable/GenericTableBodyRow.js';
|
package/dist/components/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export{default as flipdishPublicTheme}from"./themes/flipdishPublicTheme.js";export{default as NotFoundPage}from"./ui/NotFoundPage/NotFoundPage.js";export{default as PageLayout}from"./ui/PageLayout/PageLayout.js";export{default as PortalMock}from"./ui/PortalMock/PortalMock.js";export{default as LazyComponent}from"./ui/LazyComponent/LazyComponent.js";export{default as Spacer}from"./ui/Spacer/Spacer.js";export{default as Chip}from"./ui/Chip/Chip.js";export{formikValidate}from"./ui/Form/utilities/formValidation.js";import"react/jsx-runtime";import"@mui/material/Button";import"formik";import"@mui/material/TextField";import"react";import"../providers/TranslationProvider.js";import"./ui/Form/FormItemLayout.js";import"@mui/material/Typography";
|
|
1
|
+
export{default as flipdishPublicTheme}from"./themes/flipdishPublicTheme.js";export{default as NotFoundPage}from"./ui/NotFoundPage/NotFoundPage.js";export{default as PageLayout}from"./ui/PageLayout/PageLayout.js";export{default as PortalMock}from"./ui/PortalMock/PortalMock.js";export{default as LazyComponent}from"./ui/LazyComponent/LazyComponent.js";export{default as Spacer}from"./ui/Spacer/Spacer.js";export{default as Chip}from"./ui/Chip/Chip.js";export{formikValidate}from"./ui/Form/utilities/formValidation.js";import"react/jsx-runtime";import"@mui/material/Button";import"formik";import"@mui/material/TextField";import"react";import"../providers/TranslationProvider.js";import"./ui/Form/FormItemLayout.js";import"@mui/material/Typography";import"./ui/GenericTable/GenericTable.js";import"./ui/GenericTable/GenericTableBody.js";import"@mui/material/TableRow";import"./ui/GenericTable/GenericTableTitle.js";
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";require("react/jsx-runtime");var e=require("@mui/material/styles");require("@mui/material/Table");var r=require("@mui/material/TableCell");require("@mui/material/TableHead"),require("@mui/material/TableRow"),require("@mui/material/useMediaQuery"),require("./GenericTableTitle.cjs.js"),require("./HighlightScrollbar.cjs.js"),require("./GenericTableBody.cjs.js");var i=require("@mui/material/Card");e.styled("div")`
|
|
2
|
+
overflow-x: auto;
|
|
3
|
+
&::-webkit-scrollbar {
|
|
4
|
+
padding: 2px 0;
|
|
5
|
+
height: 6px;
|
|
6
|
+
border: 1px solid #d5d5d5;
|
|
7
|
+
}
|
|
8
|
+
&::-webkit-scrollbar-track {
|
|
9
|
+
background: #f1f1f1;
|
|
10
|
+
}
|
|
11
|
+
&::-webkit-scrollbar-thumb {
|
|
12
|
+
background: #f5f5f5;
|
|
13
|
+
border-radius: 3px;
|
|
14
|
+
}
|
|
15
|
+
`,e.styled(r)((({theme:e,isSticky:r})=>({fontSize:13,padding:e.spacing(1.25,2),whiteSpace:"nowrap",position:r?"sticky":"relative",zIndex:r?1:"auto"}))),e.styled(i)`
|
|
16
|
+
overflow: hidden;
|
|
17
|
+
`;
|
|
18
|
+
//# sourceMappingURL=GenericTable.cjs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GenericTable.cjs.js","sources":["../../../../src/components/ui/GenericTable/GenericTable.tsx"],"sourcesContent":["import { styled, useTheme } from '@mui/material/styles';\n\nimport Table from '@mui/material/Table';\nimport TableCell from '@mui/material/TableCell';\nimport TableHead from '@mui/material/TableHead';\nimport TableRow from '@mui/material/TableRow';\nimport useMediaQuery from '@mui/material/useMediaQuery';\nimport { GenericTableColumns } from './types';\nimport GenericTableTitle from './GenericTableTitle';\nimport HighlightScrollbar from './HighlightScrollbar';\nimport GenericTableBody from './GenericTableBody';\nimport Card from '@mui/material/Card';\n\ntype GenericTableProps = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data?: any[];\n loading?: boolean;\n metadata: GenericTableColumns[];\n // eslint-disable-next-line @typescript-eslint/ban-types\n onRowClick?: Function;\n showTitle?: boolean;\n subTitle?: string;\n title?: string;\n};\n\nconst StyledContainer = styled('div')`\n overflow-x: auto;\n &::-webkit-scrollbar {\n padding: 2px 0;\n height: 6px;\n border: 1px solid #d5d5d5;\n }\n &::-webkit-scrollbar-track {\n background: #f1f1f1;\n }\n &::-webkit-scrollbar-thumb {\n background: #f5f5f5;\n border-radius: 3px;\n }\n`;\n\nconst StyledTableCell = styled(TableCell)<{ isSticky: boolean }>(({ theme, isSticky }) => ({\n fontSize: 13,\n padding: theme.spacing(1.25, 2),\n whiteSpace: 'nowrap',\n position: isSticky ? 'sticky' : 'relative',\n zIndex: isSticky ? 1 : 'auto',\n}));\n\nconst StyledPaper = styled(Card)`\n overflow: hidden;\n`;\n\nconst GenericTable = ({ data, title, subTitle, showTitle = true, onRowClick, loading, metadata }: GenericTableProps) => {\n const columns = new Set(\n metadata\n .filter((m) => m.isVisible)\n .sort((a, b) => a.ordinal - b.ordinal)\n .map((m) => m.columnName),\n );\n const tableMeta = metadata.reduce<{ [key: string]: GenericTableColumns }>((obj, mData) => {\n obj[mData.columnName] = mData;\n return obj;\n }, {});\n\n const theme = useTheme();\n const isMobile = !useMediaQuery(theme.breakpoints.up('sm'));\n\n // We never want sticky on mobile - only on desktop\n const firstColumnStylePosition = isMobile ? 'normal' : 'sticky';\n\n const renderTableHeader = () => (\n <TableHead>\n <TableRow>\n {Array.from(columns).map((prop, idx) => {\n const { columnName, columnTitle, align = 'left' } = tableMeta[prop];\n return (\n <StyledTableCell key={columnName} align={align} isSticky={idx === 0 && !isMobile}>\n <div>\n <span>{columnTitle}</span>\n </div>\n </StyledTableCell>\n );\n })}\n </TableRow>\n </TableHead>\n );\n\n return (\n <StyledContainer>\n {showTitle && <GenericTableTitle title={title} subTitle={subTitle}></GenericTableTitle>}\n <StyledPaper>\n <HighlightScrollbar>\n <Table aria-label={title}>\n {renderTableHeader()}\n <GenericTableBody\n type={firstColumnStylePosition}\n data={data}\n columns={columns}\n onRowClick={onRowClick}\n loading={loading}\n meta={tableMeta}\n />\n </Table>\n </HighlightScrollbar>\n </StyledPaper>\n </StyledContainer>\n );\n};\n\nexport default GenericTable;\n"],"names":["styled","TableCell","theme","isSticky","fontSize","padding","spacing","whiteSpace","position","zIndex","Card"],"mappings":"0ZAyBwBA,EAAAA,OAAO,MAAM;;;;;;;;;;;;;;EAgBbA,EAAMA,OAACC,EAAPD,EAAyC,EAAGE,QAAOC,eAAgB,CACvFC,SAAU,GACVC,QAASH,EAAMI,QAAQ,KAAM,GAC7BC,WAAY,SACZC,SAAUL,EAAW,SAAW,WAChCM,OAAQN,EAAW,EAAI,WAGPH,EAAAA,OAAOU,EAAK"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import"react/jsx-runtime";import{styled as i}from"@mui/material/styles";import"@mui/material/Table";import r from"@mui/material/TableCell";import"@mui/material/TableHead";import"@mui/material/TableRow";import"@mui/material/useMediaQuery";import"./GenericTableTitle.js";import"./HighlightScrollbar.js";import"./GenericTableBody.js";import e from"@mui/material/Card";i("div")`
|
|
2
|
+
overflow-x: auto;
|
|
3
|
+
&::-webkit-scrollbar {
|
|
4
|
+
padding: 2px 0;
|
|
5
|
+
height: 6px;
|
|
6
|
+
border: 1px solid #d5d5d5;
|
|
7
|
+
}
|
|
8
|
+
&::-webkit-scrollbar-track {
|
|
9
|
+
background: #f1f1f1;
|
|
10
|
+
}
|
|
11
|
+
&::-webkit-scrollbar-thumb {
|
|
12
|
+
background: #f5f5f5;
|
|
13
|
+
border-radius: 3px;
|
|
14
|
+
}
|
|
15
|
+
`,i(r)((({theme:i,isSticky:r})=>({fontSize:13,padding:i.spacing(1.25,2),whiteSpace:"nowrap",position:r?"sticky":"relative",zIndex:r?1:"auto"}))),i(e)`
|
|
16
|
+
overflow: hidden;
|
|
17
|
+
`;
|
|
18
|
+
//# sourceMappingURL=GenericTable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GenericTable.js","sources":["../../../../src/components/ui/GenericTable/GenericTable.tsx"],"sourcesContent":["import { styled, useTheme } from '@mui/material/styles';\n\nimport Table from '@mui/material/Table';\nimport TableCell from '@mui/material/TableCell';\nimport TableHead from '@mui/material/TableHead';\nimport TableRow from '@mui/material/TableRow';\nimport useMediaQuery from '@mui/material/useMediaQuery';\nimport { GenericTableColumns } from './types';\nimport GenericTableTitle from './GenericTableTitle';\nimport HighlightScrollbar from './HighlightScrollbar';\nimport GenericTableBody from './GenericTableBody';\nimport Card from '@mui/material/Card';\n\ntype GenericTableProps = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data?: any[];\n loading?: boolean;\n metadata: GenericTableColumns[];\n // eslint-disable-next-line @typescript-eslint/ban-types\n onRowClick?: Function;\n showTitle?: boolean;\n subTitle?: string;\n title?: string;\n};\n\nconst StyledContainer = styled('div')`\n overflow-x: auto;\n &::-webkit-scrollbar {\n padding: 2px 0;\n height: 6px;\n border: 1px solid #d5d5d5;\n }\n &::-webkit-scrollbar-track {\n background: #f1f1f1;\n }\n &::-webkit-scrollbar-thumb {\n background: #f5f5f5;\n border-radius: 3px;\n }\n`;\n\nconst StyledTableCell = styled(TableCell)<{ isSticky: boolean }>(({ theme, isSticky }) => ({\n fontSize: 13,\n padding: theme.spacing(1.25, 2),\n whiteSpace: 'nowrap',\n position: isSticky ? 'sticky' : 'relative',\n zIndex: isSticky ? 1 : 'auto',\n}));\n\nconst StyledPaper = styled(Card)`\n overflow: hidden;\n`;\n\nconst GenericTable = ({ data, title, subTitle, showTitle = true, onRowClick, loading, metadata }: GenericTableProps) => {\n const columns = new Set(\n metadata\n .filter((m) => m.isVisible)\n .sort((a, b) => a.ordinal - b.ordinal)\n .map((m) => m.columnName),\n );\n const tableMeta = metadata.reduce<{ [key: string]: GenericTableColumns }>((obj, mData) => {\n obj[mData.columnName] = mData;\n return obj;\n }, {});\n\n const theme = useTheme();\n const isMobile = !useMediaQuery(theme.breakpoints.up('sm'));\n\n // We never want sticky on mobile - only on desktop\n const firstColumnStylePosition = isMobile ? 'normal' : 'sticky';\n\n const renderTableHeader = () => (\n <TableHead>\n <TableRow>\n {Array.from(columns).map((prop, idx) => {\n const { columnName, columnTitle, align = 'left' } = tableMeta[prop];\n return (\n <StyledTableCell key={columnName} align={align} isSticky={idx === 0 && !isMobile}>\n <div>\n <span>{columnTitle}</span>\n </div>\n </StyledTableCell>\n );\n })}\n </TableRow>\n </TableHead>\n );\n\n return (\n <StyledContainer>\n {showTitle && <GenericTableTitle title={title} subTitle={subTitle}></GenericTableTitle>}\n <StyledPaper>\n <HighlightScrollbar>\n <Table aria-label={title}>\n {renderTableHeader()}\n <GenericTableBody\n type={firstColumnStylePosition}\n data={data}\n columns={columns}\n onRowClick={onRowClick}\n loading={loading}\n meta={tableMeta}\n />\n </Table>\n </HighlightScrollbar>\n </StyledPaper>\n </StyledContainer>\n );\n};\n\nexport default GenericTable;\n"],"names":["styled","TableCell","theme","isSticky","fontSize","padding","spacing","whiteSpace","position","zIndex","Card"],"mappings":"6WAyBwBA,EAAO,MAAM;;;;;;;;;;;;;;EAgBbA,EAAOC,EAAPD,EAAyC,EAAGE,QAAOC,eAAgB,CACvFC,SAAU,GACVC,QAASH,EAAMI,QAAQ,KAAM,GAC7BC,WAAY,SACZC,SAAUL,EAAW,SAAW,WAChCM,OAAQN,EAAW,EAAI,WAGPH,EAAOU,EAAK"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";require("react/jsx-runtime");var e=require("@mui/material/styles");require("@mui/material/TableBody");var i=require("@mui/material/TableCell"),r=require("@mui/material/TableRow");require("@mui/material/Skeleton"),e.styled(i)((({align:e,titleCell:i,warning:r,sticky:t})=>({textAlign:e,fontWeight:i?"bold":"normal",backgroundColor:r?"#ffcccb":"inherit",position:t?"sticky":"static"}))),e.styled(r)((({theme:e})=>({"&:hover":{backgroundColor:e.palette.action.hover}})));
|
|
2
|
+
//# sourceMappingURL=GenericTableBody.cjs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GenericTableBody.cjs.js","sources":["../../../../src/components/ui/GenericTable/GenericTableBody.tsx"],"sourcesContent":["import React from 'react';\nimport { styled } from '@mui/material/styles';\nimport MuiTableBody from '@mui/material/TableBody';\nimport TableCell from '@mui/material/TableCell';\nimport TableRow from '@mui/material/TableRow';\n\nimport { GenericTableColumns } from './types';\nimport Skeleton from '@mui/material/Skeleton';\nimport GenericTableBodyRow from './GenericTableBodyRow';\n\nconst StyledTableCell = styled(TableCell)<{ align: string; titleCell: boolean; warning: boolean; sticky: boolean }>(\n ({ align, titleCell, warning, sticky }) => ({\n textAlign: align,\n fontWeight: titleCell ? 'bold' : 'normal',\n backgroundColor: warning ? '#ffcccb' : 'inherit',\n position: sticky ? 'sticky' : 'static',\n }),\n);\n\nconst StyledTableRow = styled(TableRow)(({ theme }) => ({\n '&:hover': {\n backgroundColor: theme.palette.action.hover,\n },\n}));\n\nexport type TableCellProps = {\n colIdx: number;\n colName: string;\n hasWarning?: boolean;\n hasTitle?: boolean;\n meta: { [key: string]: GenericTableColumns };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n row: Record<string, any>;\n type: 'sticky' | 'normal';\n};\n\nconst RenderTableCell: React.FC<TableCellProps> = ({ colIdx, colName, hasWarning, hasTitle, meta, row, type }) => {\n const prop = row[colName];\n const align = meta[colName].align ?? 'left';\n const tableCellProps = { align, warning: hasWarning, titleCell: hasTitle, sticky: type === 'sticky' && colIdx === 0 };\n\n switch (meta[colName].columnType) {\n case 'String':\n return <StyledTableCell {...tableCellProps}>{prop ?? '-'}</StyledTableCell>;\n case 'Custom':\n return <StyledTableCell {...tableCellProps}>{prop ? meta[colName].customComponent(prop) : '-'}</StyledTableCell>;\n default:\n return <StyledTableCell {...tableCellProps}>{prop ?? '-'}</StyledTableCell>;\n }\n};\n\ntype TableBodyProps = {\n columns: Set<string>;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data?: any[];\n loading?: boolean;\n meta?: { [key: string]: GenericTableColumns };\n // eslint-disable-next-line @typescript-eslint/ban-types\n onRowClick?: Function;\n type: 'sticky' | 'normal';\n};\n\nconst TableBody: React.FC<TableBodyProps> = ({ columns, data, loading, type, onRowClick, meta }) => {\n const rowsPerPage = 5;\n return (\n <MuiTableBody>\n {loading\n ? Array.from(Array(rowsPerPage)).map((_, idx) => (\n <StyledTableRow key={idx}>\n {Array.from(columns).map((_col, colIdx) => (\n <StyledTableCell key={colIdx} align={'left'} titleCell={false} warning={false} sticky={false}>\n <Skeleton width=\"90%\" height={22} />\n </StyledTableCell>\n ))}\n </StyledTableRow>\n ))\n : data?.map((row, rowIdx) => (\n <GenericTableBodyRow key={rowIdx} onRowClick={onRowClick} row={row}>\n {Array.from(columns).map((colName, colIdx) => (\n <RenderTableCell colIdx={colIdx} colName={colName} row={row} type={type} meta={meta} />\n ))}\n </GenericTableBodyRow>\n ))}\n </MuiTableBody>\n );\n};\n\nexport default TableBody;\n"],"names":["styled","TableCell","align","titleCell","warning","sticky","textAlign","fontWeight","backgroundColor","position","TableRow","theme","palette","action","hover"],"mappings":"kOAUwBA,EAAAA,OAAOC,EAAPD,EACpB,EAAGE,QAAOC,YAAWC,UAASC,aAAc,CACxCC,UAAWJ,EACXK,WAAYJ,EAAY,OAAS,SACjCK,gBAAiBJ,EAAU,UAAY,UACvCK,SAAUJ,EAAS,SAAW,aAIfL,EAAMA,OAACU,EAAPV,EAAiB,EAAGW,YAAa,CACpD,UAAW,CACPH,gBAAiBG,EAAMC,QAAQC,OAAOC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { GenericTableColumns } from './types.js';
|
|
2
|
+
|
|
3
|
+
type TableCellProps = {
|
|
4
|
+
colIdx: number;
|
|
5
|
+
colName: string;
|
|
6
|
+
hasWarning?: boolean;
|
|
7
|
+
hasTitle?: boolean;
|
|
8
|
+
meta: {
|
|
9
|
+
[key: string]: GenericTableColumns;
|
|
10
|
+
};
|
|
11
|
+
row: Record<string, any>;
|
|
12
|
+
type: 'sticky' | 'normal';
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
export type { TableCellProps };
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import"react/jsx-runtime";import{styled as t}from"@mui/material/styles";import"@mui/material/TableBody";import i from"@mui/material/TableCell";import o from"@mui/material/TableRow";import"@mui/material/Skeleton";t(i)((({align:t,titleCell:i,warning:o,sticky:e})=>({textAlign:t,fontWeight:i?"bold":"normal",backgroundColor:o?"#ffcccb":"inherit",position:e?"sticky":"static"}))),t(o)((({theme:t})=>({"&:hover":{backgroundColor:t.palette.action.hover}})));
|
|
2
|
+
//# sourceMappingURL=GenericTableBody.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GenericTableBody.js","sources":["../../../../src/components/ui/GenericTable/GenericTableBody.tsx"],"sourcesContent":["import React from 'react';\nimport { styled } from '@mui/material/styles';\nimport MuiTableBody from '@mui/material/TableBody';\nimport TableCell from '@mui/material/TableCell';\nimport TableRow from '@mui/material/TableRow';\n\nimport { GenericTableColumns } from './types';\nimport Skeleton from '@mui/material/Skeleton';\nimport GenericTableBodyRow from './GenericTableBodyRow';\n\nconst StyledTableCell = styled(TableCell)<{ align: string; titleCell: boolean; warning: boolean; sticky: boolean }>(\n ({ align, titleCell, warning, sticky }) => ({\n textAlign: align,\n fontWeight: titleCell ? 'bold' : 'normal',\n backgroundColor: warning ? '#ffcccb' : 'inherit',\n position: sticky ? 'sticky' : 'static',\n }),\n);\n\nconst StyledTableRow = styled(TableRow)(({ theme }) => ({\n '&:hover': {\n backgroundColor: theme.palette.action.hover,\n },\n}));\n\nexport type TableCellProps = {\n colIdx: number;\n colName: string;\n hasWarning?: boolean;\n hasTitle?: boolean;\n meta: { [key: string]: GenericTableColumns };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n row: Record<string, any>;\n type: 'sticky' | 'normal';\n};\n\nconst RenderTableCell: React.FC<TableCellProps> = ({ colIdx, colName, hasWarning, hasTitle, meta, row, type }) => {\n const prop = row[colName];\n const align = meta[colName].align ?? 'left';\n const tableCellProps = { align, warning: hasWarning, titleCell: hasTitle, sticky: type === 'sticky' && colIdx === 0 };\n\n switch (meta[colName].columnType) {\n case 'String':\n return <StyledTableCell {...tableCellProps}>{prop ?? '-'}</StyledTableCell>;\n case 'Custom':\n return <StyledTableCell {...tableCellProps}>{prop ? meta[colName].customComponent(prop) : '-'}</StyledTableCell>;\n default:\n return <StyledTableCell {...tableCellProps}>{prop ?? '-'}</StyledTableCell>;\n }\n};\n\ntype TableBodyProps = {\n columns: Set<string>;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data?: any[];\n loading?: boolean;\n meta?: { [key: string]: GenericTableColumns };\n // eslint-disable-next-line @typescript-eslint/ban-types\n onRowClick?: Function;\n type: 'sticky' | 'normal';\n};\n\nconst TableBody: React.FC<TableBodyProps> = ({ columns, data, loading, type, onRowClick, meta }) => {\n const rowsPerPage = 5;\n return (\n <MuiTableBody>\n {loading\n ? Array.from(Array(rowsPerPage)).map((_, idx) => (\n <StyledTableRow key={idx}>\n {Array.from(columns).map((_col, colIdx) => (\n <StyledTableCell key={colIdx} align={'left'} titleCell={false} warning={false} sticky={false}>\n <Skeleton width=\"90%\" height={22} />\n </StyledTableCell>\n ))}\n </StyledTableRow>\n ))\n : data?.map((row, rowIdx) => (\n <GenericTableBodyRow key={rowIdx} onRowClick={onRowClick} row={row}>\n {Array.from(columns).map((colName, colIdx) => (\n <RenderTableCell colIdx={colIdx} colName={colName} row={row} type={type} meta={meta} />\n ))}\n </GenericTableBodyRow>\n ))}\n </MuiTableBody>\n );\n};\n\nexport default TableBody;\n"],"names":["styled","TableCell","align","titleCell","warning","sticky","textAlign","fontWeight","backgroundColor","position","TableRow","theme","palette","action","hover"],"mappings":"oNAUwBA,EAAOC,EAAPD,EACpB,EAAGE,QAAOC,YAAWC,UAASC,aAAc,CACxCC,UAAWJ,EACXK,WAAYJ,EAAY,OAAS,SACjCK,gBAAiBJ,EAAU,UAAY,UACvCK,SAAUJ,EAAS,SAAW,aAIfL,EAAOU,EAAPV,EAAiB,EAAGW,YAAa,CACpD,UAAW,CACPH,gBAAiBG,EAAMC,QAAQC,OAAOC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";require("react/jsx-runtime");var e=require("@mui/material/Grid"),i=require("@mui/material/Typography"),r=require("@mui/material/styles");r.styled(e)((({theme:e,titlePadding:i})=>{switch(i){case"small":return{padding:e.spacing(3,0,1.5),[e.breakpoints.down("md")]:{padding:e.spacing(3,2,1.5)}};case"medium":return{padding:e.spacing(4,0,2),[e.breakpoints.down("md")]:{padding:e.spacing(4,2,2)}};default:return{padding:0}}})),r.styled(i)({width:191,height:16,fontSize:12,fontWeight:"normal",lineHeight:1.33,letterSpacing:.4,color:"rgba(0, 0, 0, 0.38)"});
|
|
2
|
+
//# sourceMappingURL=GenericTableTitle.cjs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GenericTableTitle.cjs.js","sources":["../../../../src/components/ui/GenericTable/GenericTableTitle.tsx"],"sourcesContent":["import { ReactNode } from 'react';\nimport Grid from '@mui/material/Grid';\nimport Typography from '@mui/material/Typography';\nimport { styled } from '@mui/material/styles';\n\ntype OuterProps = {\n maxGridWidth?: boolean | 'auto' | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;\n subTitle?: string;\n title?: string;\n children?: ReactNode;\n titlePadding?: 'small' | 'medium';\n};\n\nconst HeaderContainer = styled(Grid)<{ titlePadding: OuterProps['titlePadding'] }>(({ theme, titlePadding }) => {\n switch (titlePadding) {\n case 'small':\n return {\n padding: theme.spacing(3, 0, 1.5),\n [theme.breakpoints.down('md')]: {\n padding: theme.spacing(3, 2, 1.5),\n },\n };\n case 'medium':\n return {\n padding: theme.spacing(4, 0, 2),\n [theme.breakpoints.down('md')]: {\n padding: theme.spacing(4, 2, 2),\n },\n };\n default:\n return { padding: 0 };\n }\n});\n\nconst SubTitle = styled(Typography)({\n width: 191,\n height: 16,\n fontSize: 12,\n fontWeight: 'normal',\n lineHeight: 1.33,\n letterSpacing: 0.4,\n color: 'rgba(0, 0, 0, 0.38)',\n});\n\nconst GenericTableTitle = ({ maxGridWidth = 12, subTitle, title, children, titlePadding = 'medium' }: OuterProps) => {\n return (\n <HeaderContainer container titlePadding={titlePadding}>\n <Grid item xs={maxGridWidth} sm={maxGridWidth}>\n {title && <Typography variant=\"h5\">{title}</Typography>}\n {subTitle && (\n <div>\n <SubTitle variant=\"caption\">{subTitle}</SubTitle>\n </div>\n )}\n </Grid>\n\n {children}\n </HeaderContainer>\n );\n};\n\nexport default GenericTableTitle;\n"],"names":["styled","Grid","theme","titlePadding","padding","spacing","breakpoints","down","Typography","width","height","fontSize","fontWeight","lineHeight","letterSpacing","color"],"mappings":"sJAawBA,EAAMA,OAACC,EAAPD,EAA2D,EAAGE,QAAOC,mBACzF,OAAQA,GACJ,IAAK,QACD,MAAO,CACHC,QAASF,EAAMG,QAAQ,EAAG,EAAG,KAC7B,CAACH,EAAMI,YAAYC,KAAK,OAAQ,CAC5BH,QAASF,EAAMG,QAAQ,EAAG,EAAG,OAGzC,IAAK,SACD,MAAO,CACHD,QAASF,EAAMG,QAAQ,EAAG,EAAG,GAC7B,CAACH,EAAMI,YAAYC,KAAK,OAAQ,CAC5BH,QAASF,EAAMG,QAAQ,EAAG,EAAG,KAGzC,QACI,MAAO,CAAED,QAAS,GACzB,IAGYJ,EAAMA,OAACQ,EAAPR,CAAmB,CAChCS,MAAO,IACPC,OAAQ,GACRC,SAAU,GACVC,WAAY,SACZC,WAAY,KACZC,cAAe,GACfC,MAAO"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import"react/jsx-runtime";import i from"@mui/material/Grid";import t from"@mui/material/Typography";import{styled as a}from"@mui/material/styles";a(i)((({theme:i,titlePadding:t})=>{switch(t){case"small":return{padding:i.spacing(3,0,1.5),[i.breakpoints.down("md")]:{padding:i.spacing(3,2,1.5)}};case"medium":return{padding:i.spacing(4,0,2),[i.breakpoints.down("md")]:{padding:i.spacing(4,2,2)}};default:return{padding:0}}})),a(t)({width:191,height:16,fontSize:12,fontWeight:"normal",lineHeight:1.33,letterSpacing:.4,color:"rgba(0, 0, 0, 0.38)"});
|
|
2
|
+
//# sourceMappingURL=GenericTableTitle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GenericTableTitle.js","sources":["../../../../src/components/ui/GenericTable/GenericTableTitle.tsx"],"sourcesContent":["import { ReactNode } from 'react';\nimport Grid from '@mui/material/Grid';\nimport Typography from '@mui/material/Typography';\nimport { styled } from '@mui/material/styles';\n\ntype OuterProps = {\n maxGridWidth?: boolean | 'auto' | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;\n subTitle?: string;\n title?: string;\n children?: ReactNode;\n titlePadding?: 'small' | 'medium';\n};\n\nconst HeaderContainer = styled(Grid)<{ titlePadding: OuterProps['titlePadding'] }>(({ theme, titlePadding }) => {\n switch (titlePadding) {\n case 'small':\n return {\n padding: theme.spacing(3, 0, 1.5),\n [theme.breakpoints.down('md')]: {\n padding: theme.spacing(3, 2, 1.5),\n },\n };\n case 'medium':\n return {\n padding: theme.spacing(4, 0, 2),\n [theme.breakpoints.down('md')]: {\n padding: theme.spacing(4, 2, 2),\n },\n };\n default:\n return { padding: 0 };\n }\n});\n\nconst SubTitle = styled(Typography)({\n width: 191,\n height: 16,\n fontSize: 12,\n fontWeight: 'normal',\n lineHeight: 1.33,\n letterSpacing: 0.4,\n color: 'rgba(0, 0, 0, 0.38)',\n});\n\nconst GenericTableTitle = ({ maxGridWidth = 12, subTitle, title, children, titlePadding = 'medium' }: OuterProps) => {\n return (\n <HeaderContainer container titlePadding={titlePadding}>\n <Grid item xs={maxGridWidth} sm={maxGridWidth}>\n {title && <Typography variant=\"h5\">{title}</Typography>}\n {subTitle && (\n <div>\n <SubTitle variant=\"caption\">{subTitle}</SubTitle>\n </div>\n )}\n </Grid>\n\n {children}\n </HeaderContainer>\n );\n};\n\nexport default GenericTableTitle;\n"],"names":["styled","Grid","theme","titlePadding","padding","spacing","breakpoints","down","Typography","width","height","fontSize","fontWeight","lineHeight","letterSpacing","color"],"mappings":"kJAawBA,EAAOC,EAAPD,EAA2D,EAAGE,QAAOC,mBACzF,OAAQA,GACJ,IAAK,QACD,MAAO,CACHC,QAASF,EAAMG,QAAQ,EAAG,EAAG,KAC7B,CAACH,EAAMI,YAAYC,KAAK,OAAQ,CAC5BH,QAASF,EAAMG,QAAQ,EAAG,EAAG,OAGzC,IAAK,SACD,MAAO,CACHD,QAASF,EAAMG,QAAQ,EAAG,EAAG,GAC7B,CAACH,EAAMI,YAAYC,KAAK,OAAQ,CAC5BH,QAASF,EAAMG,QAAQ,EAAG,EAAG,KAGzC,QACI,MAAO,CAAED,QAAS,GACzB,IAGYJ,EAAOQ,EAAPR,CAAmB,CAChCS,MAAO,IACPC,OAAQ,GACRC,SAAU,GACVC,WAAY,SACZC,WAAY,KACZC,cAAe,GACfC,MAAO"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";require("react/jsx-runtime");var r=require("@mui/material/styles");require("react"),r.styled("div")((({hovered:r,isScrolling:e})=>({overflowX:"auto","&::-webkit-scrollbar":{padding:"2px 0",height:"6px",border:"1px solid #d5d5d5"},"&::-webkit-scrollbar-track":{background:"#f1f1f1"},"&::-webkit-scrollbar-thumb":{background:r?"rgba(5, 20, 158, 0.3)":"#f5f5f5",borderRadius:"3px"},"&::-webkit-scrollbar-thumb:horizontal:active, &::-webkit-scrollbar-thumb:vertical:active":{background:r?"rgba(5, 20, 158, 0.6)":"#f5f5f5"},"&:hover .sticky":{boxShadow:e?"0px 2px 6px rgba(0, 0, 0, 0.5)":"none",transition:"box-shadow 200ms"}})));
|
|
2
|
+
//# sourceMappingURL=HighlightScrollbar.cjs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HighlightScrollbar.cjs.js","sources":["../../../../src/components/ui/GenericTable/HighlightScrollbar.tsx"],"sourcesContent":["import { styled } from '@mui/material/styles';\nimport React, { useState } from 'react';\n\ntype HighlightScrollbarProps = {\n children: React.ReactNode;\n onScroll?: () => void;\n setIsScrolling?: React.Dispatch<React.SetStateAction<boolean>>;\n setScrollStarted?: React.Dispatch<React.SetStateAction<boolean>>;\n};\n\ninterface ContainerProps {\n hovered: boolean;\n isScrolling: boolean;\n}\n\nconst StyledContainer = styled('div')<ContainerProps>(({ hovered, isScrolling }) => ({\n overflowX: 'auto',\n '&::-webkit-scrollbar': {\n padding: '2px 0',\n height: '6px',\n border: '1px solid #d5d5d5',\n },\n '&::-webkit-scrollbar-track': {\n background: '#f1f1f1',\n },\n '&::-webkit-scrollbar-thumb': {\n background: hovered ? 'rgba(5, 20, 158, 0.3)' : '#f5f5f5',\n borderRadius: '3px',\n },\n '&::-webkit-scrollbar-thumb:horizontal:active, &::-webkit-scrollbar-thumb:vertical:active': {\n background: hovered ? 'rgba(5, 20, 158, 0.6)' : '#f5f5f5',\n },\n '&:hover .sticky': {\n boxShadow: isScrolling ? '0px 2px 6px rgba(0, 0, 0, 0.5)' : 'none',\n transition: 'box-shadow 200ms',\n },\n}));\n\nconst HighlightScrollbar: React.FC<React.PropsWithChildren<HighlightScrollbarProps>> = (props) => {\n const { children, onScroll, setIsScrolling, setScrollStarted } = props;\n const [hoveredTable, setHoveredTable] = useState(false);\n\n const highlightScrollbar = () => setHoveredTable(true);\n\n const fadeScrollbar = () => {\n setHoveredTable(false);\n if (setIsScrolling) setIsScrolling(false);\n if (setScrollStarted) setScrollStarted(false);\n };\n\n return (\n <StyledContainer\n hovered={hoveredTable}\n isScrolling={!!setIsScrolling}\n onMouseEnter={highlightScrollbar}\n onMouseLeave={fadeScrollbar}\n onScroll={onScroll}\n >\n {children}\n </StyledContainer>\n );\n};\n\nexport default HighlightScrollbar;\n"],"names":["styled","hovered","isScrolling","overflowX","padding","height","border","background","borderRadius","boxShadow","transition"],"mappings":"iGAewBA,EAAMA,OAAC,MAAPA,EAA8B,EAAGC,UAASC,kBAAmB,CACjFC,UAAW,OACX,uBAAwB,CACpBC,QAAS,QACTC,OAAQ,MACRC,OAAQ,qBAEZ,6BAA8B,CAC1BC,WAAY,WAEhB,6BAA8B,CAC1BA,WAAYN,EAAU,wBAA0B,UAChDO,aAAc,OAElB,2FAA4F,CACxFD,WAAYN,EAAU,wBAA0B,WAEpD,kBAAmB,CACfQ,UAAWP,EAAc,iCAAmC,OAC5DQ,WAAY"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import"react/jsx-runtime";import{styled as r}from"@mui/material/styles";import"react";r("div")((({hovered:r,isScrolling:o})=>({overflowX:"auto","&::-webkit-scrollbar":{padding:"2px 0",height:"6px",border:"1px solid #d5d5d5"},"&::-webkit-scrollbar-track":{background:"#f1f1f1"},"&::-webkit-scrollbar-thumb":{background:r?"rgba(5, 20, 158, 0.3)":"#f5f5f5",borderRadius:"3px"},"&::-webkit-scrollbar-thumb:horizontal:active, &::-webkit-scrollbar-thumb:vertical:active":{background:r?"rgba(5, 20, 158, 0.6)":"#f5f5f5"},"&:hover .sticky":{boxShadow:o?"0px 2px 6px rgba(0, 0, 0, 0.5)":"none",transition:"box-shadow 200ms"}})));
|
|
2
|
+
//# sourceMappingURL=HighlightScrollbar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HighlightScrollbar.js","sources":["../../../../src/components/ui/GenericTable/HighlightScrollbar.tsx"],"sourcesContent":["import { styled } from '@mui/material/styles';\nimport React, { useState } from 'react';\n\ntype HighlightScrollbarProps = {\n children: React.ReactNode;\n onScroll?: () => void;\n setIsScrolling?: React.Dispatch<React.SetStateAction<boolean>>;\n setScrollStarted?: React.Dispatch<React.SetStateAction<boolean>>;\n};\n\ninterface ContainerProps {\n hovered: boolean;\n isScrolling: boolean;\n}\n\nconst StyledContainer = styled('div')<ContainerProps>(({ hovered, isScrolling }) => ({\n overflowX: 'auto',\n '&::-webkit-scrollbar': {\n padding: '2px 0',\n height: '6px',\n border: '1px solid #d5d5d5',\n },\n '&::-webkit-scrollbar-track': {\n background: '#f1f1f1',\n },\n '&::-webkit-scrollbar-thumb': {\n background: hovered ? 'rgba(5, 20, 158, 0.3)' : '#f5f5f5',\n borderRadius: '3px',\n },\n '&::-webkit-scrollbar-thumb:horizontal:active, &::-webkit-scrollbar-thumb:vertical:active': {\n background: hovered ? 'rgba(5, 20, 158, 0.6)' : '#f5f5f5',\n },\n '&:hover .sticky': {\n boxShadow: isScrolling ? '0px 2px 6px rgba(0, 0, 0, 0.5)' : 'none',\n transition: 'box-shadow 200ms',\n },\n}));\n\nconst HighlightScrollbar: React.FC<React.PropsWithChildren<HighlightScrollbarProps>> = (props) => {\n const { children, onScroll, setIsScrolling, setScrollStarted } = props;\n const [hoveredTable, setHoveredTable] = useState(false);\n\n const highlightScrollbar = () => setHoveredTable(true);\n\n const fadeScrollbar = () => {\n setHoveredTable(false);\n if (setIsScrolling) setIsScrolling(false);\n if (setScrollStarted) setScrollStarted(false);\n };\n\n return (\n <StyledContainer\n hovered={hoveredTable}\n isScrolling={!!setIsScrolling}\n onMouseEnter={highlightScrollbar}\n onMouseLeave={fadeScrollbar}\n onScroll={onScroll}\n >\n {children}\n </StyledContainer>\n );\n};\n\nexport default HighlightScrollbar;\n"],"names":["styled","hovered","isScrolling","overflowX","padding","height","border","background","borderRadius","boxShadow","transition"],"mappings":"sFAewBA,EAAO,MAAPA,EAA8B,EAAGC,UAASC,kBAAmB,CACjFC,UAAW,OACX,uBAAwB,CACpBC,QAAS,QACTC,OAAQ,MACRC,OAAQ,qBAEZ,6BAA8B,CAC1BC,WAAY,WAEhB,6BAA8B,CAC1BA,WAAYN,EAAU,wBAA0B,UAChDO,aAAc,OAElB,2FAA4F,CACxFD,WAAYN,EAAU,wBAA0B,WAEpD,kBAAmB,CACfQ,UAAWP,EAAc,iCAAmC,OAC5DQ,WAAY"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
type GenericTableColumns = {
|
|
2
|
+
columnName: string;
|
|
3
|
+
columnTitle: string;
|
|
4
|
+
columnType: 'String' | 'Custom';
|
|
5
|
+
align?: 'left' | 'right';
|
|
6
|
+
isVisible: boolean;
|
|
7
|
+
ordinal: number;
|
|
8
|
+
customComponent?: (data: any) => JSX.Element;
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
export type { GenericTableColumns };
|