2019-08-27 12:25:38 +00:00
|
|
|
import React from 'react';
|
2022-03-29 18:53:27 +00:00
|
|
|
import { Text, View, ViewStyle } from 'react-native';
|
2019-08-27 12:25:38 +00:00
|
|
|
|
2022-04-28 18:44:40 +00:00
|
|
|
import { TSupportedThemes } from '../../theme';
|
|
|
|
import { themes } from '../../lib/constants';
|
2019-08-27 12:25:38 +00:00
|
|
|
import styles from './styles';
|
|
|
|
|
2021-10-01 18:12:19 +00:00
|
|
|
interface ITableCell {
|
|
|
|
align: '' | 'left' | 'center' | 'right';
|
2022-03-29 18:53:27 +00:00
|
|
|
children: React.ReactElement | null;
|
2021-10-01 18:12:19 +00:00
|
|
|
isLastCell: boolean;
|
2022-04-28 18:44:40 +00:00
|
|
|
theme: TSupportedThemes;
|
2021-10-01 18:12:19 +00:00
|
|
|
}
|
|
|
|
|
2019-08-27 12:25:38 +00:00
|
|
|
export const CELL_WIDTH = 100;
|
|
|
|
|
2021-10-01 18:12:19 +00:00
|
|
|
const TableCell = React.memo(({ isLastCell, align, children, theme }: ITableCell) => {
|
2022-03-29 18:53:27 +00:00
|
|
|
const cellStyle: ViewStyle[] = [styles.cell, { borderColor: themes[theme].borderColor }];
|
2019-08-27 12:25:38 +00:00
|
|
|
if (!isLastCell) {
|
|
|
|
cellStyle.push(styles.cellRightBorder);
|
|
|
|
}
|
|
|
|
|
|
|
|
let textStyle = null;
|
|
|
|
if (align === 'center') {
|
|
|
|
textStyle = styles.alignCenter;
|
|
|
|
} else if (align === 'right') {
|
|
|
|
textStyle = styles.alignRight;
|
|
|
|
}
|
|
|
|
|
|
|
|
return (
|
|
|
|
<View style={[...cellStyle, { width: CELL_WIDTH }]}>
|
2021-10-01 18:12:19 +00:00
|
|
|
<Text style={[textStyle, { color: themes[theme].bodyText }]}>{children}</Text>
|
2019-08-27 12:25:38 +00:00
|
|
|
</View>
|
|
|
|
);
|
|
|
|
});
|
|
|
|
|
|
|
|
export default TableCell;
|