@material-ui/core#TableCell TypeScript Examples
The following examples show how to use
@material-ui/core#TableCell.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: styles.tsx From DamnVulnerableCryptoApp with MIT License | 6 votes |
StyledTableCell = withStyles((theme: Theme) =>
createStyles({
head: {
backgroundColor: amber[500],
color: theme.palette.common.white,
},
body: {
fontSize: 14,
},
}),
)(TableCell)
Example #2
Source File: LogsPage.tsx From ow-mod-manager with MIT License | 6 votes |
LogCell = withStyles((theme) => ({
body: {
borderBottom: `1px solid rgba(255, 255, 255, 0.05)`,
},
stickyHeader: {
paddingTop: theme.spacing(1),
background: theme.palette.background.paper,
},
}))(TableCell)
Example #3
Source File: index.tsx From prism-frontend with MIT License | 6 votes |
DataTableRow = ({ className, columns, rowData }: TableRowProps) => {
const { t } = useSafeTranslation();
return (
<TableRow>
{columns.map(column => {
const colValue = rowData ? rowData[column] : column;
const formattedColValue = isNumber(colValue)
? getRoundedData(colValue, t)
: t(colValue).toLocaleString();
return (
<TableCell className={className} key={column}>
{' '}
{formattedColValue}{' '}
</TableCell>
);
})}
</TableRow>
);
}
Example #4
Source File: body.tsx From aqualink-app with MIT License | 6 votes |
RowNameCell = ({
site: { locationName, region },
classes,
}: {
site: Row;
classes: SiteTableBodyProps["classes"];
}) => {
return (
<TableCell className={classes.nameCells}>
<Typography align="left" variant="h6" color="textSecondary">
{locationName}
</Typography>
{locationName !== region && region && (
<Typography className={classes.regionName} variant="subtitle1">
{region}
</Typography>
)}
</TableCell>
);
}
Example #5
Source File: MetadataView.tsx From backstage with Apache License 2.0 | 6 votes |
export function MetadataViewRow({ label, text, data }: MetadataViewRowProps) {
if (text === undefined && data === undefined) {
return null;
}
return (
<TableRow>
<TableCell style={{ width: 160 }}>
<Typography variant="body1" noWrap style={{ fontWeight: 900 }}>
{label}
</Typography>
</TableCell>
<TableCell>
<Typography variant="body1">
{data ? JSON.stringify(data) : text}
</Typography>
</TableCell>
</TableRow>
);
}
Example #6
Source File: TableProp.tsx From clearflask with Apache License 2.0 | 6 votes |
renderDataCell(prop: ConfigEditor.Page | ConfigEditor.PageGroup | ConfigEditor.Property) {
return (
<TableCell key={prop.key} align='center' size='small'>
<Property
server={this.props.server}
isInsideMuiTable
bare
key={prop.key}
prop={prop}
pageClicked={this.props.pageClicked}
width='100%'
/>
</TableCell>
);
}
Example #7
Source File: UsersTable.tsx From homebase-app with MIT License | 6 votes |
DesktopUsersTable: React.FC<{ data: RowData[] }> = ({ data }) => {
return (
<>
<Table>
<StyledTableHead>
<StyledTableRow>
<TableCell><TableText>Top Addresses</TableText></TableCell>
</StyledTableRow>
<TableRow>
{titles.map((title, i) => (
<TableCell key={`userstitle-${i}`}><TableText>{title}</TableText></TableCell>
))}
</TableRow>
</StyledTableHead>
<TableBody>
{data.map((row, i) => (
<TableRow key={`usersrow-${i}`}>
<OverflowCell>
<UserBadge smallText={true} address={row.address} size={44} gap={16} />
</OverflowCell>
<TableCell>{row.votes}</TableCell>
<TableCell>{row.availableStaked}</TableCell>
<TableCell>{row.totalStaked}</TableCell>
<TableCell>{row.proposalsVoted}</TableCell>
</TableRow>
))}
</TableBody>
</Table>
</>
);
}
Example #8
Source File: TableExpandable.tsx From frontegg-react with MIT License | 6 votes |
TableExpandable: FC<TableExpandableProps<any>> = <T extends object>(props: TableExpandableProps<T>) => { const { isExpanded, renderExpandedComponent, row } = props; return ( <TableRow> <TableCell style={{ paddingBottom: 0, paddingTop: 0 }} colSpan={row.cells.length}> <Collapse in={isExpanded} timeout='auto' unmountOnExit> <Box margin='0 auto'>{renderExpandedComponent?.(row.original, row.index)}</Box> </Collapse> </TableCell> </TableRow> ); }
Example #9
Source File: Pager.tsx From glific-frontend with GNU Affero General Public License v3.0 | 6 votes |
collapsedRowData = (dataObj: any, columnStyles: any, recordId: any) => {
// if empty dataObj
if (Object.keys(dataObj).length === 0) {
return (
<TableRow className={styles.CollapseTableRow}>
<TableCell className={`${styles.TableCell} ${columnStyles ? columnStyles[1] : null}`}>
<div>
<p className={styles.TableText}>No data available</p>
</div>
</TableCell>
</TableRow>
);
}
const additionalRowInformation = Object.keys(dataObj).map((key, index) => {
const rowIdentifier = `collapsedRowData-${recordId}-${index}`;
return (
<TableRow className={styles.CollapseTableRow} key={rowIdentifier}>
<TableCell className={`${styles.TableCell} ${columnStyles ? columnStyles[0] : null}`}>
<div>
<div className={styles.LabelText}>{dataObj[key].label}</div>
</div>
</TableCell>
<TableCell className={`${styles.TableCell} ${columnStyles ? columnStyles[1] : null}`}>
<div>
<p className={styles.TableText}>{dataObj[key].body}</p>
</div>
</TableCell>
<TableCell className={`${styles.TableCell} ${columnStyles ? columnStyles[2] : null}`} />
<TableCell className={`${styles.TableCell} ${columnStyles ? columnStyles[3] : null}`} />
</TableRow>
);
});
return additionalRowInformation;
}
Example #10
Source File: Header.tsx From postgres-nest-react-typescript-boilerplate with GNU General Public License v3.0 | 6 votes |
TableHeader: FC<{
data: TodosTableHeader[];
headerStyle?: HeaderStyle;
}> = ({ data, headerStyle = {} }) => {
return (
<TableHead>
<TableRow>
{data.map((column, i) => (
<TableCell
key={i}
align="left"
style={{
minWidth: column.minWidth,
fontSize: '1.5rem',
fontWeight: 600,
height: '48px',
background: 'black',
color: 'white',
...headerStyle
}}
>
{column.label}
</TableCell>
))}
</TableRow>
</TableHead>
);
}
Example #11
Source File: TableDetails.tsx From SeeQR with MIT License | 6 votes |
TableDetails = ({ table }: TableDetailsProps) => (
<>
<Typography variant="h3">{`${table?.table_name}`}</Typography>
<br />
<TableContainer component={StyledPaper}>
<Table>
<TableHead>
<TableRow>
<TableCell>
<strong>Column</strong>
</TableCell>
<TableCell align="right">
<strong>Type</strong>
</TableCell>
<TableCell align="right">
<strong>Is Nullable?</strong>
</TableCell>
</TableRow>
</TableHead>
<TableBody>
{table?.columns.map((row) => (
<TableRow key={row.column_name}>
<StyledCell key={row?.column_name}>{row?.column_name}</StyledCell>
<StyledCell align="right">
{`${row?.data_type}${
row?.character_maximum_length
? `(${row.character_maximum_length})`
: ''
}`}
</StyledCell>
<StyledCell align="right">{row?.is_nullable}</StyledCell>
</TableRow>
))}
</TableBody>
</Table>
</TableContainer>
</>
)
Example #12
Source File: OpenOrdersDialog.tsx From swap-ui with Apache License 2.0 | 6 votes |
function OpenOrdersAccounts() {
const styles = useStyles();
const openOrders = useOpenOrders();
const openOrdersEntries: Array<[PublicKey, OpenOrders[]]> = useMemo(() => {
return Array.from(openOrders.entries()).map(([market, oo]) => [
new PublicKey(market),
oo,
]);
}, [openOrders]);
return (
<TableContainer component={Paper} elevation={0}>
<Table className={styles.table} aria-label="simple table">
<TableHead>
<TableRow>
<TableCell>Market</TableCell>
<TableCell align="center">Open Orders Account</TableCell>
<TableCell align="center">Base Used</TableCell>
<TableCell align="center">Base Free</TableCell>
<TableCell align="center">Quote Used</TableCell>
<TableCell align="center">Quote Free</TableCell>
<TableCell align="center">Settle</TableCell>
<TableCell align="center">Close</TableCell>
</TableRow>
</TableHead>
<TableBody>
{openOrdersEntries.map(([market, oos]) => {
return (
<OpenOrdersRow
key={market.toString()}
market={market}
openOrders={oos}
/>
);
})}
</TableBody>
</Table>
</TableContainer>
);
}
Example #13
Source File: PriceCompare.tsx From akashlytics with GNU General Public License v3.0 | 5 votes |
ProviderCell = ({ cell, marketData }: { cell: any; marketData: MarketData }) => {
const isAkash = cell.provider === "akash";
const classes = useCellStyles();
return (
<TableCell align="center" className={classes.root}>
<div className={classes.amount}>
{isAkash ? (
<div>
<FormattedNumber value={cell.amount * 0.432 * marketData.price} style="currency" currency="USD" />
</div>
) : (
<FormattedNumber value={cell.amount} style="currency" currency="USD" />
)}
</div>
<div className={classes.unitContainer}>
<div className={classes.unitLabel}>cpu:</div>
<div className={classes.unitValue}>{cell.cpu}</div>
</div>
<div className={classes.unitContainer}>
<div className={classes.unitLabel}>ram:</div>
<div className={classes.unitValue}>{cell.ram}</div>
</div>
{cell.machineType && (
<div className={classes.unitContainer}>
<div className={classes.unitLabel}>type:</div>
<div className={classes.unitValue}>{cell.machineType}</div>
</div>
)}
{cell.storage && (
<div className={classes.unitContainer}>
<div className={classes.unitLabel}>storage:</div>
<div className={classes.unitValue}>{cell.storage}</div>
</div>
)}
{isAkash && <div className={classes.aktAmount}>({cell.amount} uakt)</div>}
</TableCell>
);
}
Example #14
Source File: HealthIndicatorTable.tsx From abacus with GNU General Public License v2.0 | 5 votes |
export default function HealthIndicatorTable({
className,
indicators,
}: {
className?: string
indicators: HealthIndicator[]
}): JSX.Element {
const classes = useStyles()
const decorationClasses = useDecorationStyles()
return (
<TableContainer className={className}>
<Table className={classes.table} aria-label='simple table'>
<TableHead>
<TableRow>
<TableCell>Name</TableCell>
<TableCell>Unit</TableCell>
<TableCell>Value</TableCell>
<TableCell>{/* Indication Emoji */}</TableCell>
<TableCell>Indication</TableCell>
<TableCell>Reason</TableCell>
<TableCell>Recommendation</TableCell>
</TableRow>
</TableHead>
<TableBody>
{indicators.map((indicator) => (
<TableRow key={indicator.name}>
<TableCell scope='row'>
<Link href={indicator.link} target='_blank'>
{indicator.name}
</Link>
</TableCell>
<TableCell scope='row' className={clsx(classes.monospace, classes.deemphasized, classes.nowrap)}>
{indicator.unit === HealthIndicatorUnit.Pvalue ? (
<Tooltip title='The smaller the p-value the more likely there is an issue.'>
<span className={decorationClasses.tooltipped}>p-value</span>
</Tooltip>
) : (
<span>{indicator.unit}</span>
)}
</TableCell>
<TableCell scope='row' className={clsx(classes.monospace, classes.deemphasized, classes.nowrap)}>
{indicator.value.toFixed(4)}
</TableCell>
<TableCell scope='row'>
<span>{severityEmoji[indicator.indication.severity]}</span>
</TableCell>
<TableCell
scope='row'
className={clsx(
classes.indication,
classes[indicationSeverityClassSymbol(indicator.indication.severity)],
classes.monospace,
classes.nowrap,
)}
>
<span>{indicator.indication.code}</span>
</TableCell>
<TableCell scope='row' className={clsx(classes.monospace, classes.deemphasized, classes.nowrap)}>
{indicator.indication.reason}
</TableCell>
<TableCell scope='row' className={clsx(classes.deemphasized, classes.recommendation)}>
<Typography variant='body1'>{indicator.indication.recommendation}</Typography>
</TableCell>
</TableRow>
))}
</TableBody>
</Table>
</TableContainer>
)
}
Example #15
Source File: BondRow.tsx From lobis-frontend with MIT License | 5 votes |
export function BondTableData({ bond }: IBondProps) {
const isBondLoading = !bond.bondPrice ?? true;
const dispatch = useDispatch();
const { provider, address, chainID, checkWrongNetwork } = useWeb3Context();
const pendingTransactions = useSelector<IReduxState, IPendingTxn[]>(state => {
return state.pendingTransactions;
});
async function onRedeem(autostake: boolean) {
if (await checkWrongNetwork()) return;
if (bond.interestDue === 0 || bond.pendingPayout === 0) {
dispatch(warning({ text: messages.nothing_to_claim }));
return;
}
await dispatch(redeemBond({ address, bond, networkID: chainID, provider, autostake }));
}
return (
<TableRow>
<TableCell align="left">
<BondLogo bond={bond} />
<div className="bond-name">
<p className="bond-name-title">{bond.displayName}</p>
{bond.isLP && (
<Link color="primary" href={bond.lpUrl} target="_blank">
<p className="bond-name-title-link">View Contract</p>
</Link>
)}
</div>
</TableCell>
<TableCell align="center">
<p className="bond-name-title">
<>{isBondLoading ? <Skeleton width="50px" /> : `$${trim(bond.bondPrice, 2)}`}</>
</p>
</TableCell>
<TableCell align="right">
<p className="bond-name-title">{isBondLoading ? <Skeleton width="50px" /> : `${trim(bond.bondDiscount * 100, 2)}%`}</p>
</TableCell>
<TableCell align="right">
<p className="bond-name-title">
{isBondLoading ? (
<Skeleton width="50px" />
) : (
new Intl.NumberFormat("en-US", {
style: "currency",
currency: "USD",
maximumFractionDigits: 0,
minimumFractionDigits: 0,
}).format(bond.purchased)
)}
</p>
</TableCell>
<TableCell>
<Link component={NavLink} to={`/mints/${bond.name}`}>
<div className="bond-table-btn">
<p>Mint</p>
</div>
</Link>{" "}
</TableCell>
</TableRow>
);
}
Example #16
Source File: CustomTable.tsx From interface-v2 with GNU General Public License v3.0 | 5 votes |
CustomTable: React.FC<CustomTableProps<any>> = ({
rowsPerPage = 5,
showPagination = true,
emptyMessage,
headCells,
data,
defaultOrderBy,
defaultOrder,
mobileHTML,
desktopHTML,
}) => {
const theme = useTheme();
const mobileWindowSize = useMediaQuery(theme.breakpoints.down('xs'));
const classes = useStyles();
return (
<Box className={classes.tableContainer}>
{mobileWindowSize ? (
<>
{data.map((item: any, index: number) => {
return mobileHTML(item, index);
})}
</>
) : (
<DataTable
defaultOrderBy={defaultOrderBy}
defaultOrder={defaultOrder}
emptyMesage={emptyMessage}
showPagination={showPagination}
headCells={headCells}
data={data}
rowPerPage={rowsPerPage}
sortUpIcon={<ArrowUpward />}
sortDownIcon={<ArrowDownward />}
showEmptyRows={false}
renderRow={(item, index, page, rowsPerPage) => {
return (
<TableRow key={index}>
{desktopHTML(item, index, page, rowsPerPage).map(
(cellItem: any, ind: number) => (
<TableCell
key={ind}
className={cellItem.button ? 'buttonCell' : ''}
>
{cellItem.html}
</TableCell>
),
)}
</TableRow>
);
}}
/>
)}
</Box>
);
}
Example #17
Source File: BondRow.tsx From rugenerous-frontend with MIT License | 5 votes |
export function BondTableData({ bond }: IBondProps) {
const isBondLoading = !bond.bondPrice ?? true;
return (
<>
<TableRow>
<TableCell align="left">
<BondLogo bond={bond} />
<div className="bond-name">
<p className="bond-name-title">{bond.displayName}</p>
{bond.isLP && (
<Link color="primary" href={bond.lpUrl} target="_blank">
<p className="bond-name-title">View Contract</p>
</Link>
)}
</div>
</TableCell>
<TableCell align="center">
<p className="bond-name-title">
<>
{isBondLoading ? (
<Skeleton width="50px" />
) : bond.available ? (
<>
<span className="currency-icon">{priceUnits(bond)}</span> {trim(bond.bondPrice, 2)}
</>
) : bond.purchased > 1000 ? (
"Sold Out"
) : (
"Coming Soon"
)}{" "}
</>
</p>
</TableCell>
<TableCell align="right">
<p className="bond-name-title">
{isBondLoading ? <Skeleton width="50px" /> : bond.available ? `${trim(bond.bondDiscount * 100, 2)}%` : "-"}
</p>
</TableCell>
<TableCell align="right">
<p className="bond-name-title">
{isBondLoading ? (
<Skeleton width="50px" />
) : (
new Intl.NumberFormat("en-US", {
style: "currency",
currency: "USD",
maximumFractionDigits: 0,
minimumFractionDigits: 0,
}).format(bond.purchased)
)}
</p>
</TableCell>
{/* {bond.purchased > 1000 ? ( */}
<TableCell>
<Link component={NavLink} to={`/mints/${bond.name}`}>
{bond.available ? (
<div className="bond-table-btn">
<p>Mint</p>
</div>
) : (
<div className="bond-table-btn">
<p>Withdraw</p>
</div>
)}
</Link>
</TableCell>
{/* // ) : undefined} */}
</TableRow>
</>
);
}
Example #18
Source File: BondRow.tsx From wonderland-frontend with MIT License | 5 votes |
export function BondTableData({ bond }: IBondProps) {
const isBondLoading = !bond.bondPrice ?? true;
return (
<TableRow>
<TableCell align="left">
<BondLogo bond={bond} />
<div className="bond-name">
<p className="bond-name-title">{bond.displayName}</p>
{bond.isLP && (
<Link color="primary" href={bond.lpUrl} target="_blank">
<p className="bond-name-title">View Contract</p>
</Link>
)}
</div>
</TableCell>
<TableCell align="center">
<p className="bond-name-title">
<>
<span className="currency-icon">{priceUnits(bond)}</span> {isBondLoading ? <Skeleton width="50px" /> : trim(bond.bondPrice, 2)}
</>
</p>
</TableCell>
<TableCell align="right">
<p className="bond-name-title">{isBondLoading ? <Skeleton width="50px" /> : `${trim(bond.bondDiscount * 100, 2)}%`}</p>
</TableCell>
<TableCell align="right">
<p className="bond-name-title">
{isBondLoading ? (
<Skeleton width="50px" />
) : (
new Intl.NumberFormat("en-US", {
style: "currency",
currency: "USD",
maximumFractionDigits: 0,
minimumFractionDigits: 0,
}).format(bond.purchased)
)}
</p>
</TableCell>
<TableCell>
<Link component={NavLink} to={`/mints/${bond.name}`}>
<div className="bond-table-btn">
<p>Mint</p>
</div>
</Link>
</TableCell>
</TableRow>
);
}
Example #19
Source File: CartTable.tsx From storefront with MIT License | 5 votes |
CartTable: React.VFC<Props> = ({ cart, loading, onUpdate }) => {
const styles = useStyles();
return (
<Table className={styles.root}>
<TableHead sx={{ display: { xs: 'none', sm: 'table-header-group' } }}>
<TableRow>
<TableCell colSpan={2}>Product</TableCell>
<TableCell>Price</TableCell>
<TableCell>Quantity</TableCell>
<TableCell colSpan={2}>Total Price</TableCell>
</TableRow>
</TableHead>
<TableBody sx={{ display: { xs: 'block', sm: 'table-row-group' } }}>
{cart.contents?.nodes?.map(
(item) =>
item != null && (
<CartTableRow key={item.key} item={item} loading={loading} onUpdate={onUpdate} />
),
)}
</TableBody>
<TableFooter className={styles.footer}>
<TableRow>
<TableCell colSpan={3} />
<TableCell>
<Typography>Subtotal</Typography>
</TableCell>
<TableCell colSpan={2}>
<Price>{cart.subtotal}</Price>
</TableCell>
</TableRow>
{(cart.appliedCoupons?.length ?? 0) > 0 && (
<TableRow>
<TableCell colSpan={3} />
<TableCell>
<Typography>Discount</Typography>
</TableCell>
<TableCell colSpan={2}>
<Price color="error">{`-${cart.discountTotal}`}</Price>
</TableCell>
</TableRow>
)}
</TableFooter>
</Table>
);
}
Example #20
Source File: DialogBody.tsx From backstage with Apache License 2.0 | 5 votes |
export function DialogBody() {
const classes = useStyles();
const { stats } = useGetStats();
const { project } = useProjectContext();
if (stats.error) {
return (
<Alert severity="error">Unexpected error: {stats.error.message}</Alert>
);
}
if (stats.loading) {
return <Progress />;
}
if (!stats.value) {
return <Alert severity="error">Couldn't find any stats :(</Alert>;
}
const { allReleases, allTags } = stats.value;
const { mappedReleases } = getMappedReleases({ allReleases, project });
const { releaseStats } = getReleaseStats({
mappedReleases,
allTags,
project,
});
return (
<ReleaseStatsContext.Provider value={{ releaseStats }}>
<Info />
<TableContainer>
<Table className={classes.table} size="small">
<TableHead>
<TableRow>
<TableCell />
<TableCell>Release</TableCell>
<TableCell>Created at</TableCell>
<TableCell># candidate patches</TableCell>
<TableCell># release patches</TableCell>
</TableRow>
</TableHead>
<TableBody>
{Object.entries(releaseStats.releases).map(
([baseVersion, releaseStat], index) => {
return (
<Row
key={`row-${index}`}
baseVersion={baseVersion}
releaseStat={releaseStat}
/>
);
},
)}
</TableBody>
</Table>
{(releaseStats.unmappableTags.length > 0 ||
releaseStats.unmatchedTags.length > 0 ||
releaseStats.unmatchedReleases.length > 0) && <Warn />}
</TableContainer>
</ReleaseStatsContext.Provider>
);
}
Example #21
Source File: TableRow.tsx From signer with Apache License 2.0 | 5 votes |
TooltippedTableRow = (props: TooltippedTableRowProps) => {
// If the row displays Motes use the CSPR specific tooltip styling
const isMotesValue = isCSPRValueByKey(props.data.key);
return (
<Tooltip
title={props.data.tooltipContent}
placement="top"
classes={{
tooltip: isMotesValue
? props.classes.csprToolTip
: props.classes.tooltip
}}
>
<TableRow>
<TableCell style={{ fontWeight: 'bold' }}>{props.data.key}</TableCell>
<TableCell align="right">
{
/**
* Checks if the string represents a list so it can be displayed properly
*/
Array.isArray(props.data.value) ? (
<ul style={{ listStyleType: 'none' }}>
{props.data.value.map((item: string) => {
const listItemData: SigningDataRow = {
key: props.data.key,
value: item,
tooltipContent: BlankTooltipContent
};
// Utilises the parseRow method to properly parse the inner value and then display it
return <TooltippedListItem data={parseRow(listItemData)} />;
})}
</ul>
) : (
props.data.value
)
}
</TableCell>
</TableRow>
</Tooltip>
);
}
Example #22
Source File: MTable.tsx From crossfeed with Creative Commons Zero v1.0 Universal | 5 votes |
MTable = <T extends object>(props: Props<T>) => { const { instance, footerRows, ...rest } = props; const classes = useStyles(); return ( <Table {...instance.getTableProps} {...rest}> <TableHead classes={{ root: classes.head }}> {instance.headerGroups.map((group) => ( <TableRow {...group.getHeaderGroupProps()} key={group.id}> {group.headers.map((column) => ( <TableCell {...column.getHeaderProps()} key={column.id} classes={{ root: classes.cell }} > {column.render('Header')} </TableCell> ))} </TableRow> ))} </TableHead> <TableBody {...instance.getTableBodyProps()}> {instance.rows.map((row) => { instance.prepareRow(row); const { key, ...rest } = row.getRowProps(); return ( <React.Fragment key={key}> <TableRow {...rest}> {row.cells.map((cell) => ( <TableCell {...cell.getCellProps()} key={`${cell.row},${cell.column}`} classes={{ root: classes.cell }} > {cell.render('Cell')} </TableCell> ))} </TableRow> </React.Fragment> ); })} </TableBody> {footerRows && <TableFooter>{footerRows}</TableFooter>} </Table> ); }
Example #23
Source File: NotificationList.tsx From clearflask with Apache License 2.0 | 5 votes |
render() {
if (!this.props.userId) {
return (<ErrorMsg msg='You need to log in to see your notifications' variant='info' />);
}
const hasNotifications = this.props.notifications && this.props.notifications.length > 0;
return (
<div className={this.props.className}>
<div className={this.props.classes.table}>
<Table size='medium'>
<TableBody>
{!hasNotifications ? (
<Typography
className={this.props.classes.noNotificationsLabel}
variant='overline'
>{this.props.t('no-notifications')}</Typography>
) : this.props.notifications!.map(notification => (
<TableRow
key={notification.notificationId}
hover
>
<Link
to={this.getNotificationTo(notification)}
onClick={() => this.clearNotification(notification)}
>
<TableCell key='date'><Typography><TimeAgo date={notification.created} /></Typography></TableCell>
<TableCell key='description'><Typography>{notification.description}</Typography></TableCell>
</Link>
</TableRow>
))}
</TableBody>
</Table>
</div>
{hasNotifications && (
<Button fullWidth className={this.props.classes.button} onClick={() => this.clearAll()}>
{this.props.t('clear-all')}
</Button>
)}
{this.props.getNextNotifications && (
<Button fullWidth className={this.props.classes.button} onClick={() => this.props.getNextNotifications && this.props.getNextNotifications()}>
{this.props.t('show-more')}
</Button>
)}
</div>
);
}
Example #24
Source File: UsersTable.tsx From homebase-app with MIT License | 5 votes |
OverflowCell = styled(TableCell)({
whiteSpace: "nowrap",
overflow: "hidden",
textOverflow: "ellipsis",
maxWidth: 300,
})
Example #25
Source File: TableHead.tsx From frontegg-react with MIT License | 5 votes |
TableHead: FC<FeTableTHeadProps<any>> = <T extends object>(props: FeTableTHeadProps<T>) => { const { headerGroups, onSortChange, onFilterChange, toggleAllRowsSelected, selectedFlatRows, isAllRowsSelected, } = props; const classes = useStyles(); return ( <MaterialTableHead className={classes.head}> {headerGroups.map((headerGroup) => ( <TableRow {...headerGroup.getHeaderGroupProps()}> {headerGroup.headers.map((c, index) => { const column = c as FeTableColumnProps<T>; if (column.id === 'fe-selection') { return ( <TableCell {...column.getHeaderProps()}> <Checkbox className={classes.checkBox} indeterminate={!isAllRowsSelected && (selectedFlatRows ?? []).length > 0} checked={isAllRowsSelected} onChange={() => toggleAllRowsSelected?.(!isAllRowsSelected)} /> </TableCell> ); } const withExpander = headerGroup.headers[0].id === 'fe-expander'; const tableCellProps = column.getHeaderProps( column.getSortByToggleProps((p: Partial<TableSortByToggleProps>) => ({ ...p, onClick: column.canSort ? () => onSortChange?.(column) : undefined, })) ); const minWidth = headerGroup.headers[0].minWidth || 0; const ownWidth = column.width || 0; const width = index === 1 && withExpander ? { width: Number(ownWidth) + minWidth, paddingLeft: 32 } : {}; const cellStyle = { ...tableCellProps?.style, ...width }; tableCellProps.className = classNames(tableCellProps.className, { [classes.firstHeadCell]: index === 0, [classes.expander]: index === 0 && withExpander, }); return ( <TableCell padding='default' {...tableCellProps} style={cellStyle}> <Box display='flex' alignItems='center' justifyContent='space-between' flexWrap='nowrap'> <Box display='flex' flexGrow='1'> {column.canSort ? ( <TableSortLabel className='fe-sortLabel' active={column.isSorted} direction={column.isSortedDesc ? 'desc' : 'asc'} > {column.render('Header')} </TableSortLabel> ) : ( <>{column.render('Header')}</> )} </Box> {column.canFilter && <TableFilterColumn column={column} onFilterChange={onFilterChange} />} </Box> </TableCell> ); })} </TableRow> ))} </MaterialTableHead> ); }
Example #26
Source File: Pager.tsx From glific-frontend with GNU Affero General Public License v3.0 | 5 votes |
createRows = (
data: any,
columnStyles: any,
showCheckbox?: boolean,
collapseRow?: string,
collapseOpen: boolean = false
) => {
const createRow = (entry: any) => {
let stylesIndex = -1;
return Object.keys(entry).map((item: any) => {
// let's not display recordId in the UI
if (item === 'recordId' || item === 'translations' || item === 'id') {
return null;
}
// maintain columnStyles index
stylesIndex += 1;
return (
<TableCell
key={item + entry.recordId}
className={`${styles.TableCell} ${columnStyles ? columnStyles[stylesIndex] : null}`}
>
<div>{entry[item]}</div>
</TableCell>
);
});
};
return data.map((entry: any) => {
let batchAction = null;
if (showCheckbox) {
batchAction = <Checkbox />;
}
let dataObj: any;
if (entry.translations) dataObj = JSON.parse(entry.translations);
return (
<React.Fragment key={entry.recordId}>
<TableRow key={entry.recordId} className={styles.TableRow}>
{batchAction}
{createRow(entry)}
</TableRow>
{collapseOpen && dataObj && entry.id === collapseRow
? collapsedRowData(dataObj, columnStyles, entry.recordId)
: null}
</React.Fragment>
);
});
}
Example #27
Source File: RecentGames.tsx From planning-poker with MIT License | 5 votes |
RecentGames = () => {
const history = useHistory();
const [recentGames, setRecentGames] = useState<Game[] | undefined>(undefined);
useEffect(() => {
async function fetchData() {
const games = await getPlayerRecentGames();
if (games) {
setRecentGames(games);
}
}
fetchData();
}, []);
const isEmptyRecentGames = (): boolean => {
if (!recentGames) {
return true;
}
if (recentGames && recentGames.length === 0) {
return true;
}
return false;
};
return (
<Card variant='outlined' className='RecentGamesCard'>
<CardHeader
className='RecentGamesCardTitle'
title='Recent Session'
titleTypographyProps={{ variant: 'h6', noWrap: true }}
/>
<CardContent className='RecentGamesCardContent'>
{isEmptyRecentGames() && (
<Typography variant='body2'>No recent sessions found</Typography>
)}
{recentGames && recentGames.length > 0 && (
<TableContainer className='RecentGamesTableContainer'>
<Table stickyHeader>
<TableHead>
<TableRow>
<TableCell>Name</TableCell>
<TableCell>Created By</TableCell>
<TableCell></TableCell>
</TableRow>
</TableHead>
<TableBody>
{recentGames.map((recentGame) => (
<TableRow
hover
key={recentGame.id}
className='RecentGamesTableRow'
onClick={() => history.push(`/game/${recentGame.id}`)}
>
<TableCell>{recentGame.name}</TableCell>
<TableCell align='left'>{recentGame.createdBy}</TableCell>
<TableCell align='left'></TableCell>
</TableRow>
))}
</TableBody>
</Table>
</TableContainer>
)}
</CardContent>
</Card>
);
}
Example #28
Source File: RouteTable.tsx From dashboard with Apache License 2.0 | 5 votes |
RoutesTable = ({ routes }: RoutesTableProps) => {
return (
<Card>
<CardHeader
title="Routes (List of Pods)"
titleTypographyProps={{ variant: "subtitle1" }}
/>
{routes && routes?.length && (
<CardContent>
<Table>
<TableHead>
<TableRow>
<TableCell>Pod</TableCell>
<TableCell>Pod Id</TableCell>
<TableCell>Start time</TableCell>
<TableCell>End time</TableCell>
<TableCell>Elapsed Time</TableCell>
</TableRow>
</TableHead>
<TableBody>
{routes.map((route) => {
const { pod_id, pod, start_time, end_time } = route
return (
<TableRow key={pod_id}>
<TableCell> {pod} </TableCell>
<TableCell>{pod_id}</TableCell>
<TableCell>{start_time}</TableCell>
<TableCell>{end_time}</TableCell>
<TableCell>
{getElapsedTime(start_time, end_time)}
</TableCell>
</TableRow>
)
})}
</TableBody>
</Table>
</CardContent>
)}
</Card>
)
}
Example #29
Source File: object-parameters.tsx From mtcute with GNU Lesser General Public License v3.0 | 5 votes |
export function ObjectParameters({
obj,
diff,
history,
}: {
obj: ExtendedTlObject
diff?: boolean
history?: boolean
}): JSX.Element {
const classes = useStyles()
return (
<Table className={classes.table}>
<TableHead>
<TableRow>
{diff && <TableCell>Change</TableCell>}
<TableCell>Name</TableCell>
<TableCell>Type</TableCell>
<TableCell>Description</TableCell>
</TableRow>
</TableHead>
<TableBody>
{obj.arguments.map((arg) => (
<TableRow key={arg.name} className={arg.className}>
{diff && (
<TableCell
className={clsx(
classes.changed,
classes[arg.changed!]
)}
>
{arg.changed}
</TableCell>
)}
<TableCell>
<code
className={
!arg.optional &&
arg.type !== '$FlagsBitField'
? classes.bold
: undefined
}
>
{arg.name}
</code>
</TableCell>
<TableCell className={classes.mono}>
{arg.optional ? (
<span title={arg.predicate}>
{LinkToTl(arg.type, history)}?
</span>
) : (
LinkToTl(arg.type, history)
)}
</TableCell>
<Description
description={arg.description}
component={TableCell}
/>
</TableRow>
))}
</TableBody>
</Table>
)
}