@universal-tennis/ui-shared 0.1.65 → 0.1.68
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/.eslintignore +1 -1
- package/.eslintrc.js +73 -73
- package/.storybook/preview.js +12 -12
- package/.storybook/variables.css +15 -15
- package/README.md +129 -129
- package/dist/App.d.ts +2 -2
- package/dist/App.js +12 -12
- package/dist/components.d.ts +4 -32
- package/dist/components.js +8 -37
- package/dist/components.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +12 -12
- package/dist/items.d.ts +2 -2
- package/dist/items.js +1 -1
- package/dist/stories/Button.d.ts +27 -0
- package/dist/stories/Button.js +51 -0
- package/dist/stories/Button.js.map +1 -0
- package/dist/stories/Button.stories.d.ts +15 -0
- package/dist/stories/Button.stories.js +34 -0
- package/dist/stories/Button.stories.js.map +1 -0
- package/dist/stories/Header.d.ts +19 -0
- package/dist/stories/Header.js +31 -0
- package/dist/stories/Header.js.map +1 -0
- package/dist/stories/Header.stories.d.ts +11 -0
- package/dist/stories/Header.stories.js +20 -0
- package/dist/stories/Header.stories.js.map +1 -0
- package/dist/stories/Page.d.ts +1 -0
- package/dist/stories/Page.js +38 -0
- package/dist/stories/Page.js.map +1 -0
- package/dist/stories/Page.stories.d.ts +11 -0
- package/dist/stories/Page.stories.js +30 -0
- package/dist/stories/Page.stories.js.map +1 -0
- package/dist/stories/assets/comments.svg +1 -0
- package/dist/stories/assets/css/variables.css +3 -6
- package/dist/stories/assets/direction.svg +1 -0
- package/dist/stories/assets/icon-chat-blue.svg +10 -10
- package/dist/stories/atoms/Button/Button.d.ts +9 -10
- package/dist/stories/atoms/Button/Button.js +79 -95
- package/dist/stories/atoms/Button/Button.js.map +1 -1
- package/dist/stories/atoms/Button/Button.stories.d.ts +16 -17
- package/dist/stories/atoms/Button/Button.stories.js +36 -45
- package/dist/stories/atoms/Button/Button.stories.js.map +1 -1
- package/dist/stories/atoms/Button/index.d.ts +1 -0
- package/dist/stories/atoms/Button/index.js +2 -0
- package/dist/stories/atoms/Button/index.js.map +1 -0
- package/dist/stories/atoms/Button.d.ts +7 -0
- package/dist/stories/atoms/Button.js +20 -0
- package/dist/stories/atoms/Button.js.map +1 -0
- package/dist/stories/atoms/Button.stories.d.ts +13 -0
- package/dist/stories/atoms/Button.stories.js +22 -0
- package/dist/stories/atoms/Button.stories.js.map +1 -0
- package/dist/stories/atoms/Typography/Typography.d.ts +10 -49
- package/dist/stories/atoms/Typography/Typography.js +99 -143
- package/dist/stories/atoms/Typography/Typography.js.map +1 -1
- package/dist/stories/atoms/Typography/Typography.stories.d.ts +37 -37
- package/dist/stories/atoms/Typography/Typography.stories.js +190 -190
- package/dist/stories/atoms/Typography/index.d.ts +1 -0
- package/dist/stories/atoms/Typography/index.js +2 -0
- package/dist/stories/atoms/Typography/index.js.map +1 -0
- package/dist/stories/molecules/Cards/Cards.stories.d.ts +6 -7
- package/dist/stories/molecules/Cards/Cards.stories.js +26 -64
- package/dist/stories/molecules/Cards/Cards.stories.js.map +1 -1
- package/dist/stories/molecules/Cards/ContactCard.d.ts +9 -3
- package/dist/stories/molecules/Cards/ContactCard.js +38 -38
- package/dist/stories/molecules/Cards/ContactCard.js.map +1 -1
- package/dist/stories/molecules/Cards/TeamCard.d.ts +7 -3
- package/dist/stories/molecules/Cards/TeamCard.js +20 -20
- package/dist/stories/molecules/Cards/TeamCard.js.map +1 -1
- package/dist/stories/molecules/Cards/shared.d.ts +9 -4
- package/dist/stories/molecules/Cards/shared.js +12 -12
- package/infrastructure/azure-pipelines.yml +112 -110
- package/package.json +94 -94
- package/src/App.js +25 -25
- package/src/components.jsx +41 -41
- package/src/custom.d.ts +13 -13
- package/src/index.js +17 -17
- package/src/items.jsx +1 -1
- package/src/stories/assets/css/variables.css +14 -14
- package/src/stories/assets/icon-chat-blue.svg +10 -10
- package/src/stories/assets/icons/icon-add.svg +7 -7
- package/src/stories/assets/icons/icon-availability-maybe.svg +3 -3
- package/src/stories/assets/icons/icon-availability-no.svg +3 -3
- package/src/stories/assets/icons/icon-availability-not-set.svg +8 -8
- package/src/stories/assets/icons/icon-availability-yes.svg +3 -3
- package/src/stories/assets/icons/icon-calendar.svg +4 -4
- package/src/stories/assets/icons/icon-clock.svg +7 -7
- package/src/stories/assets/icons/icon-close.svg +3 -3
- package/src/stories/assets/icons/icon-delete.svg +9 -9
- package/src/stories/assets/icons/icon-edit.svg +3 -3
- package/src/stories/assets/icons/icon-location.svg +6 -6
- package/src/stories/assets/icons/icon-message.svg +3 -3
- package/src/stories/assets/icons/icon-session.svg +3 -3
- package/src/stories/assets/icons/icon-swap.svg +3 -3
- package/src/stories/assets/icons/icon-visibility-off.svg +7 -7
- package/src/stories/assets/icons/icon-visibility.svg +6 -6
- package/src/stories/atoms/Button/Button.stories.tsx +63 -63
- package/src/stories/atoms/Button/Button.tsx +145 -145
- package/src/stories/atoms/Icons/AddIcon.tsx +13 -13
- package/src/stories/atoms/Icons/AvailabilityMaybeIcon.tsx +11 -11
- package/src/stories/atoms/Icons/AvailabilityNoIcon.tsx +11 -11
- package/src/stories/atoms/Icons/AvailabilityNotSetIcon.tsx +12 -12
- package/src/stories/atoms/Icons/AvailabilityYesIcon.tsx +11 -11
- package/src/stories/atoms/Icons/CalendarIcon.tsx +11 -11
- package/src/stories/atoms/Icons/ClockIcon.tsx +14 -14
- package/src/stories/atoms/Icons/CloseIcon.tsx +11 -11
- package/src/stories/atoms/Icons/DeleteIcon.tsx +15 -15
- package/src/stories/atoms/Icons/EditIcon.tsx +11 -11
- package/src/stories/atoms/Icons/Icons.stories.tsx +218 -218
- package/src/stories/atoms/Icons/LeftChevronIcon.tsx +13 -13
- package/src/stories/atoms/Icons/LocationIcon.tsx +12 -12
- package/src/stories/atoms/Icons/MessageIcon.tsx +12 -12
- package/src/stories/atoms/Icons/RightChevronIcon.tsx +11 -11
- package/src/stories/atoms/Icons/SessionIcon.tsx +16 -16
- package/src/stories/atoms/Icons/SwapIcon.tsx +11 -11
- package/src/stories/atoms/Icons/VisibilityIcon.tsx +12 -12
- package/src/stories/atoms/Icons/VisibilityOffIcon.tsx +13 -13
- package/src/stories/atoms/Icons/WinnerIndicatorIcon.tsx +39 -39
- package/src/stories/atoms/Icons/sharedTypes.tsx +10 -10
- package/src/stories/atoms/Map/Map.stories.tsx +43 -43
- package/src/stories/atoms/Map/Map.tsx +25 -25
- package/src/stories/atoms/Typography/Typography.tsx +185 -185
- package/src/stories/molecules/AvatarWithName/AvatarWithName.stories.tsx +86 -86
- package/src/stories/molecules/AvatarWithName/AvatarWithName.tsx +68 -68
- package/src/stories/molecules/Cards/Cards.stories.tsx +76 -76
- package/src/stories/molecules/Cards/ContactCard.tsx +45 -45
- package/src/stories/molecules/Cards/DrawCard.tsx +211 -211
- package/src/stories/molecules/Cards/Modals.stories.tsx +137 -137
- package/src/stories/molecules/Cards/TeamCard.tsx +14 -14
- package/src/stories/molecules/Cards/TeamDrawCard.tsx +135 -134
- package/src/stories/molecules/Cards/sharedTypes.ts +67 -67
- package/src/stories/molecules/SquareAvatarWithName/SquareAvatarWithName.stories.tsx +77 -77
- package/src/stories/molecules/SquareAvatarWithName/SquareAvatarWithName.tsx +84 -84
- package/src/stories/organisms/Modals/FullPageModal.tsx +93 -93
- package/src/stories/organisms/Modals/Modals.stories.tsx +138 -138
- package/src/stories/organisms/Modals/sharedTypes.ts +15 -15
- package/src/stories/organisms/Tables/DrawCardTable.tsx +92 -92
- package/src/stories/organisms/Tables/SortableTable.tsx +112 -112
- package/src/stories/organisms/Tables/Tables.stories.tsx +104 -104
- package/src/stories/organisms/Tables/TeamDrawCardTable/DesktopTableRows.tsx +102 -0
- package/src/stories/organisms/Tables/TeamDrawCardTable/MobileTableRows.tsx +67 -0
- package/src/stories/organisms/Tables/TeamDrawCardTable/TeamDrawCardTable.tsx +24 -0
- package/src/stories/organisms/Tables/mockData.tsx +129 -129
- package/src/stories/organisms/Tables/sharedTypes.ts +17 -9
- package/src/stories/utils/constants.ts +3 -3
- package/src/stories/utils/useScreenSize.ts +28 -28
- package/src/types/tableDataTypes.ts +42 -42
- package/tsconfig.json +23 -23
- package/dist/stories/atoms/Icons/AddIcon.d.ts +0 -3
- package/dist/stories/atoms/Icons/AddIcon.js +0 -9
- package/dist/stories/atoms/Icons/AddIcon.js.map +0 -1
- package/dist/stories/atoms/Icons/AvailabilityMaybeIcon.d.ts +0 -3
- package/dist/stories/atoms/Icons/AvailabilityMaybeIcon.js +0 -7
- package/dist/stories/atoms/Icons/AvailabilityMaybeIcon.js.map +0 -1
- package/dist/stories/atoms/Icons/AvailabilityNoIcon.d.ts +0 -3
- package/dist/stories/atoms/Icons/AvailabilityNoIcon.js +0 -7
- package/dist/stories/atoms/Icons/AvailabilityNoIcon.js.map +0 -1
- package/dist/stories/atoms/Icons/AvailabilityNotSetIcon.d.ts +0 -3
- package/dist/stories/atoms/Icons/AvailabilityNotSetIcon.js +0 -8
- package/dist/stories/atoms/Icons/AvailabilityNotSetIcon.js.map +0 -1
- package/dist/stories/atoms/Icons/AvailabilityYesIcon.d.ts +0 -3
- package/dist/stories/atoms/Icons/AvailabilityYesIcon.js +0 -7
- package/dist/stories/atoms/Icons/AvailabilityYesIcon.js.map +0 -1
- package/dist/stories/atoms/Icons/CalendarIcon.d.ts +0 -3
- package/dist/stories/atoms/Icons/CalendarIcon.js +0 -7
- package/dist/stories/atoms/Icons/CalendarIcon.js.map +0 -1
- package/dist/stories/atoms/Icons/ClockIcon.d.ts +0 -3
- package/dist/stories/atoms/Icons/ClockIcon.js +0 -9
- package/dist/stories/atoms/Icons/ClockIcon.js.map +0 -1
- package/dist/stories/atoms/Icons/CloseIcon.d.ts +0 -3
- package/dist/stories/atoms/Icons/CloseIcon.js +0 -7
- package/dist/stories/atoms/Icons/CloseIcon.js.map +0 -1
- package/dist/stories/atoms/Icons/DeleteIcon.d.ts +0 -3
- package/dist/stories/atoms/Icons/DeleteIcon.js +0 -11
- package/dist/stories/atoms/Icons/DeleteIcon.js.map +0 -1
- package/dist/stories/atoms/Icons/EditIcon.d.ts +0 -3
- package/dist/stories/atoms/Icons/EditIcon.js +0 -7
- package/dist/stories/atoms/Icons/EditIcon.js.map +0 -1
- package/dist/stories/atoms/Icons/Icons.stories.d.ts +0 -23
- package/dist/stories/atoms/Icons/Icons.stories.js +0 -178
- package/dist/stories/atoms/Icons/Icons.stories.js.map +0 -1
- package/dist/stories/atoms/Icons/LeftChevronIcon.d.ts +0 -3
- package/dist/stories/atoms/Icons/LeftChevronIcon.js +0 -7
- package/dist/stories/atoms/Icons/LeftChevronIcon.js.map +0 -1
- package/dist/stories/atoms/Icons/LocationIcon.d.ts +0 -3
- package/dist/stories/atoms/Icons/LocationIcon.js +0 -8
- package/dist/stories/atoms/Icons/LocationIcon.js.map +0 -1
- package/dist/stories/atoms/Icons/MessageIcon.d.ts +0 -3
- package/dist/stories/atoms/Icons/MessageIcon.js +0 -7
- package/dist/stories/atoms/Icons/MessageIcon.js.map +0 -1
- package/dist/stories/atoms/Icons/RightChevronIcon.d.ts +0 -3
- package/dist/stories/atoms/Icons/RightChevronIcon.js +0 -7
- package/dist/stories/atoms/Icons/RightChevronIcon.js.map +0 -1
- package/dist/stories/atoms/Icons/SessionIcon.d.ts +0 -3
- package/dist/stories/atoms/Icons/SessionIcon.js +0 -7
- package/dist/stories/atoms/Icons/SessionIcon.js.map +0 -1
- package/dist/stories/atoms/Icons/SwapIcon.d.ts +0 -3
- package/dist/stories/atoms/Icons/SwapIcon.js +0 -7
- package/dist/stories/atoms/Icons/SwapIcon.js.map +0 -1
- package/dist/stories/atoms/Icons/VisibilityIcon.d.ts +0 -3
- package/dist/stories/atoms/Icons/VisibilityIcon.js +0 -8
- package/dist/stories/atoms/Icons/VisibilityIcon.js.map +0 -1
- package/dist/stories/atoms/Icons/VisibilityOffIcon.d.ts +0 -3
- package/dist/stories/atoms/Icons/VisibilityOffIcon.js +0 -9
- package/dist/stories/atoms/Icons/VisibilityOffIcon.js.map +0 -1
- package/dist/stories/atoms/Icons/WinnerIndicatorIcon.d.ts +0 -3
- package/dist/stories/atoms/Icons/WinnerIndicatorIcon.js +0 -32
- package/dist/stories/atoms/Icons/WinnerIndicatorIcon.js.map +0 -1
- package/dist/stories/atoms/Icons/sharedTypes.d.ts +0 -9
- package/dist/stories/atoms/Icons/sharedTypes.js +0 -2
- package/dist/stories/atoms/Icons/sharedTypes.js.map +0 -1
- package/dist/stories/atoms/Map/Map.d.ts +0 -7
- package/dist/stories/atoms/Map/Map.js +0 -9
- package/dist/stories/atoms/Map/Map.js.map +0 -1
- package/dist/stories/atoms/Map/Map.stories.d.ts +0 -9
- package/dist/stories/atoms/Map/Map.stories.js +0 -36
- package/dist/stories/atoms/Map/Map.stories.js.map +0 -1
- package/dist/stories/molecules/AvatarWithName/AvatarWithName.d.ts +0 -27
- package/dist/stories/molecules/AvatarWithName/AvatarWithName.js +0 -21
- package/dist/stories/molecules/AvatarWithName/AvatarWithName.js.map +0 -1
- package/dist/stories/molecules/AvatarWithName/AvatarWithName.stories.d.ts +0 -15
- package/dist/stories/molecules/AvatarWithName/AvatarWithName.stories.js +0 -73
- package/dist/stories/molecules/AvatarWithName/AvatarWithName.stories.js.map +0 -1
- package/dist/stories/molecules/Cards/DrawCard.d.ts +0 -3
- package/dist/stories/molecules/Cards/DrawCard.js +0 -117
- package/dist/stories/molecules/Cards/DrawCard.js.map +0 -1
- package/dist/stories/molecules/Cards/Modals.stories.d.ts +0 -5
- package/dist/stories/molecules/Cards/Modals.stories.js +0 -73
- package/dist/stories/molecules/Cards/Modals.stories.js.map +0 -1
- package/dist/stories/molecules/Cards/TeamDrawCard.d.ts +0 -3
- package/dist/stories/molecules/Cards/TeamDrawCard.js +0 -75
- package/dist/stories/molecules/Cards/TeamDrawCard.js.map +0 -1
- package/dist/stories/molecules/Cards/sharedTypes.d.ts +0 -59
- package/dist/stories/molecules/Cards/sharedTypes.js +0 -3
- package/dist/stories/molecules/Cards/sharedTypes.js.map +0 -1
- package/dist/stories/molecules/SquareAvatarWithName/SquareAvatarWithName.d.ts +0 -27
- package/dist/stories/molecules/SquareAvatarWithName/SquareAvatarWithName.js +0 -25
- package/dist/stories/molecules/SquareAvatarWithName/SquareAvatarWithName.js.map +0 -1
- package/dist/stories/molecules/SquareAvatarWithName/SquareAvatarWithName.stories.d.ts +0 -13
- package/dist/stories/molecules/SquareAvatarWithName/SquareAvatarWithName.stories.js +0 -66
- package/dist/stories/molecules/SquareAvatarWithName/SquareAvatarWithName.stories.js.map +0 -1
- package/dist/stories/organisms/Modals/FullPageModal.d.ts +0 -4
- package/dist/stories/organisms/Modals/FullPageModal.js +0 -60
- package/dist/stories/organisms/Modals/FullPageModal.js.map +0 -1
- package/dist/stories/organisms/Modals/Modals.stories.d.ts +0 -5
- package/dist/stories/organisms/Modals/Modals.stories.js +0 -74
- package/dist/stories/organisms/Modals/Modals.stories.js.map +0 -1
- package/dist/stories/organisms/Modals/sharedTypes.d.ts +0 -14
- package/dist/stories/organisms/Modals/sharedTypes.js +0 -2
- package/dist/stories/organisms/Modals/sharedTypes.js.map +0 -1
- package/dist/stories/organisms/Tables/DrawCardTable.d.ts +0 -3
- package/dist/stories/organisms/Tables/DrawCardTable.js +0 -59
- package/dist/stories/organisms/Tables/DrawCardTable.js.map +0 -1
- package/dist/stories/organisms/Tables/SortableTable.d.ts +0 -23
- package/dist/stories/organisms/Tables/SortableTable.js +0 -34
- package/dist/stories/organisms/Tables/SortableTable.js.map +0 -1
- package/dist/stories/organisms/Tables/Tables.stories.d.ts +0 -8
- package/dist/stories/organisms/Tables/Tables.stories.js +0 -91
- package/dist/stories/organisms/Tables/Tables.stories.js.map +0 -1
- package/dist/stories/organisms/Tables/TeamDrawCardTable.d.ts +0 -3
- package/dist/stories/organisms/Tables/TeamDrawCardTable.js +0 -96
- package/dist/stories/organisms/Tables/TeamDrawCardTable.js.map +0 -1
- package/dist/stories/organisms/Tables/mockData.d.ts +0 -69
- package/dist/stories/organisms/Tables/mockData.js +0 -98
- package/dist/stories/organisms/Tables/mockData.js.map +0 -1
- package/dist/stories/organisms/Tables/sharedTypes.d.ts +0 -8
- package/dist/stories/organisms/Tables/sharedTypes.js +0 -2
- package/dist/stories/organisms/Tables/sharedTypes.js.map +0 -1
- package/dist/stories/utils/constants.d.ts +0 -3
- package/dist/stories/utils/constants.js +0 -4
- package/dist/stories/utils/constants.js.map +0 -1
- package/dist/stories/utils/useScreenSize.d.ts +0 -4
- package/dist/stories/utils/useScreenSize.js +0 -28
- package/dist/stories/utils/useScreenSize.js.map +0 -1
- package/dist/types/tableDataTypes.d.ts +0 -38
- package/dist/types/tableDataTypes.js +0 -2
- package/dist/types/tableDataTypes.js.map +0 -1
- package/src/stories/organisms/Tables/TeamDrawCardTable.tsx +0 -156
|
@@ -1,112 +1,112 @@
|
|
|
1
|
-
import React, { ComponentType, SyntheticEvent } from "react";
|
|
2
|
-
|
|
3
|
-
import Table from "@mui/material/Table";
|
|
4
|
-
import TableBody from "@mui/material/TableBody";
|
|
5
|
-
import TableCell from "@mui/material/TableCell";
|
|
6
|
-
import TableContainer from "@mui/material/TableContainer";
|
|
7
|
-
import TableHead from "@mui/material/TableHead";
|
|
8
|
-
import MuiTableRow from "@mui/material/TableRow";
|
|
9
|
-
import TableSortLabel from "@mui/material/TableSortLabel";
|
|
10
|
-
import Toolbar from "@mui/material/Toolbar";
|
|
11
|
-
import Paper from "@mui/material/Paper";
|
|
12
|
-
|
|
13
|
-
import { TableData } from "types/tableDataTypes";
|
|
14
|
-
import Typography from '../../atoms/Typography/Typography';
|
|
15
|
-
|
|
16
|
-
type Order = 'asc' | 'desc';
|
|
17
|
-
type OrderProperty = string | number;
|
|
18
|
-
|
|
19
|
-
interface HeadCell {
|
|
20
|
-
id: string;
|
|
21
|
-
label?: string;
|
|
22
|
-
isSortingDisabled: boolean
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
export type SortableTableProps = {
|
|
26
|
-
headCells: Array<HeadCell>;
|
|
27
|
-
tableData: Array<TableData>;
|
|
28
|
-
sortOrder: Order;
|
|
29
|
-
sortByProperty: OrderProperty;
|
|
30
|
-
rowComponent: ComponentType<{rowData: TableData, labelId: string}>;
|
|
31
|
-
title?: string;
|
|
32
|
-
onOrderPropertyChange?: (property: OrderProperty) => VoidFunction
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
function SortableTable({
|
|
36
|
-
headCells,
|
|
37
|
-
tableData,
|
|
38
|
-
rowComponent,
|
|
39
|
-
sortOrder,
|
|
40
|
-
sortByProperty,
|
|
41
|
-
title = '',
|
|
42
|
-
onOrderPropertyChange,
|
|
43
|
-
}: SortableTableProps) {
|
|
44
|
-
const TableRow = rowComponent;
|
|
45
|
-
|
|
46
|
-
const handleRequestSort = (property: OrderProperty) => (event: SyntheticEvent) => {
|
|
47
|
-
event.preventDefault();
|
|
48
|
-
if (onOrderPropertyChange) {
|
|
49
|
-
onOrderPropertyChange(property);
|
|
50
|
-
}
|
|
51
|
-
};
|
|
52
|
-
|
|
53
|
-
return (
|
|
54
|
-
<Paper sx={{ width: "100%", mb: 2 }}>
|
|
55
|
-
{title && (
|
|
56
|
-
<Toolbar sx={{ pl: { sm: 2 }, pr: { xs: 1, sm: 1 } }}>
|
|
57
|
-
<Typography
|
|
58
|
-
category="secondary"
|
|
59
|
-
size="large-medium"
|
|
60
|
-
id="tableTitle"
|
|
61
|
-
>
|
|
62
|
-
{title}
|
|
63
|
-
</Typography>
|
|
64
|
-
</Toolbar>
|
|
65
|
-
)}
|
|
66
|
-
<TableContainer>
|
|
67
|
-
<Table
|
|
68
|
-
sx={{ minWidth: 750 }}
|
|
69
|
-
aria-labelledby="tableTitle"
|
|
70
|
-
size="medium"
|
|
71
|
-
>
|
|
72
|
-
<TableHead>
|
|
73
|
-
<MuiTableRow>
|
|
74
|
-
{headCells.map((headCell) => (
|
|
75
|
-
<TableCell
|
|
76
|
-
key={headCell.id}
|
|
77
|
-
align="left"
|
|
78
|
-
padding="normal"
|
|
79
|
-
sortDirection={sortByProperty === headCell.id ? sortOrder : false}
|
|
80
|
-
>
|
|
81
|
-
<TableSortLabel
|
|
82
|
-
disabled={headCell.isSortingDisabled}
|
|
83
|
-
hideSortIcon={!headCell?.label}
|
|
84
|
-
active={sortByProperty === headCell.id}
|
|
85
|
-
direction={sortByProperty === headCell.id ? sortOrder : 'asc'}
|
|
86
|
-
onClick={handleRequestSort(headCell.id)}
|
|
87
|
-
>
|
|
88
|
-
{headCell?.label}
|
|
89
|
-
</TableSortLabel>
|
|
90
|
-
</TableCell>
|
|
91
|
-
))}
|
|
92
|
-
</MuiTableRow>
|
|
93
|
-
</TableHead>
|
|
94
|
-
<TableBody>
|
|
95
|
-
{tableData && tableData.map((data: TableData, index: number) => {
|
|
96
|
-
const labelId = `table-${index}`;
|
|
97
|
-
return (
|
|
98
|
-
<TableRow
|
|
99
|
-
key={data.id}
|
|
100
|
-
rowData={data}
|
|
101
|
-
labelId={labelId}
|
|
102
|
-
/>
|
|
103
|
-
);
|
|
104
|
-
})}
|
|
105
|
-
</TableBody>
|
|
106
|
-
</Table>
|
|
107
|
-
</TableContainer>
|
|
108
|
-
</Paper>
|
|
109
|
-
);
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
export default SortableTable;
|
|
1
|
+
import React, { ComponentType, SyntheticEvent } from "react";
|
|
2
|
+
|
|
3
|
+
import Table from "@mui/material/Table";
|
|
4
|
+
import TableBody from "@mui/material/TableBody";
|
|
5
|
+
import TableCell from "@mui/material/TableCell";
|
|
6
|
+
import TableContainer from "@mui/material/TableContainer";
|
|
7
|
+
import TableHead from "@mui/material/TableHead";
|
|
8
|
+
import MuiTableRow from "@mui/material/TableRow";
|
|
9
|
+
import TableSortLabel from "@mui/material/TableSortLabel";
|
|
10
|
+
import Toolbar from "@mui/material/Toolbar";
|
|
11
|
+
import Paper from "@mui/material/Paper";
|
|
12
|
+
|
|
13
|
+
import { TableData } from "types/tableDataTypes";
|
|
14
|
+
import Typography from '../../atoms/Typography/Typography';
|
|
15
|
+
|
|
16
|
+
type Order = 'asc' | 'desc';
|
|
17
|
+
type OrderProperty = string | number;
|
|
18
|
+
|
|
19
|
+
interface HeadCell {
|
|
20
|
+
id: string;
|
|
21
|
+
label?: string;
|
|
22
|
+
isSortingDisabled: boolean
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export type SortableTableProps = {
|
|
26
|
+
headCells: Array<HeadCell>;
|
|
27
|
+
tableData: Array<TableData>;
|
|
28
|
+
sortOrder: Order;
|
|
29
|
+
sortByProperty: OrderProperty;
|
|
30
|
+
rowComponent: ComponentType<{rowData: TableData, labelId: string}>;
|
|
31
|
+
title?: string;
|
|
32
|
+
onOrderPropertyChange?: (property: OrderProperty) => VoidFunction
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
function SortableTable({
|
|
36
|
+
headCells,
|
|
37
|
+
tableData,
|
|
38
|
+
rowComponent,
|
|
39
|
+
sortOrder,
|
|
40
|
+
sortByProperty,
|
|
41
|
+
title = '',
|
|
42
|
+
onOrderPropertyChange,
|
|
43
|
+
}: SortableTableProps) {
|
|
44
|
+
const TableRow = rowComponent;
|
|
45
|
+
|
|
46
|
+
const handleRequestSort = (property: OrderProperty) => (event: SyntheticEvent) => {
|
|
47
|
+
event.preventDefault();
|
|
48
|
+
if (onOrderPropertyChange) {
|
|
49
|
+
onOrderPropertyChange(property);
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
return (
|
|
54
|
+
<Paper sx={{ width: "100%", mb: 2 }}>
|
|
55
|
+
{title && (
|
|
56
|
+
<Toolbar sx={{ pl: { sm: 2 }, pr: { xs: 1, sm: 1 } }}>
|
|
57
|
+
<Typography
|
|
58
|
+
category="secondary"
|
|
59
|
+
size="large-medium"
|
|
60
|
+
id="tableTitle"
|
|
61
|
+
>
|
|
62
|
+
{title}
|
|
63
|
+
</Typography>
|
|
64
|
+
</Toolbar>
|
|
65
|
+
)}
|
|
66
|
+
<TableContainer>
|
|
67
|
+
<Table
|
|
68
|
+
sx={{ minWidth: 750 }}
|
|
69
|
+
aria-labelledby="tableTitle"
|
|
70
|
+
size="medium"
|
|
71
|
+
>
|
|
72
|
+
<TableHead>
|
|
73
|
+
<MuiTableRow>
|
|
74
|
+
{headCells.map((headCell) => (
|
|
75
|
+
<TableCell
|
|
76
|
+
key={headCell.id}
|
|
77
|
+
align="left"
|
|
78
|
+
padding="normal"
|
|
79
|
+
sortDirection={sortByProperty === headCell.id ? sortOrder : false}
|
|
80
|
+
>
|
|
81
|
+
<TableSortLabel
|
|
82
|
+
disabled={headCell.isSortingDisabled}
|
|
83
|
+
hideSortIcon={!headCell?.label}
|
|
84
|
+
active={sortByProperty === headCell.id}
|
|
85
|
+
direction={sortByProperty === headCell.id ? sortOrder : 'asc'}
|
|
86
|
+
onClick={handleRequestSort(headCell.id)}
|
|
87
|
+
>
|
|
88
|
+
{headCell?.label}
|
|
89
|
+
</TableSortLabel>
|
|
90
|
+
</TableCell>
|
|
91
|
+
))}
|
|
92
|
+
</MuiTableRow>
|
|
93
|
+
</TableHead>
|
|
94
|
+
<TableBody>
|
|
95
|
+
{tableData && tableData.map((data: TableData, index: number) => {
|
|
96
|
+
const labelId = `table-${index}`;
|
|
97
|
+
return (
|
|
98
|
+
<TableRow
|
|
99
|
+
key={data.id}
|
|
100
|
+
rowData={data}
|
|
101
|
+
labelId={labelId}
|
|
102
|
+
/>
|
|
103
|
+
);
|
|
104
|
+
})}
|
|
105
|
+
</TableBody>
|
|
106
|
+
</Table>
|
|
107
|
+
</TableContainer>
|
|
108
|
+
</Paper>
|
|
109
|
+
);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
export default SortableTable;
|
|
@@ -1,104 +1,104 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import TeamDrawCard from 'stories/molecules/Cards/TeamDrawCard';
|
|
3
|
-
import DrawCard from '../../molecules/Cards/DrawCard';
|
|
4
|
-
import DrawCardTable from './DrawCardTable';
|
|
5
|
-
import TeamDrawCardTable from './TeamDrawCardTable';
|
|
6
|
-
import { DrawCardTableProps } from './sharedTypes';
|
|
7
|
-
import {
|
|
8
|
-
MOCK_HEAD_CELLS, mockRowComponent, MOCK_TABLE_DATA, SAMPLE_CARD_DATA, SAMPLE_TEAM_PAGE_CARD_DATA
|
|
9
|
-
} from './mockData';
|
|
10
|
-
|
|
11
|
-
const onOrderPropertyChange = () => {};
|
|
12
|
-
|
|
13
|
-
// Default
|
|
14
|
-
export default {
|
|
15
|
-
title: 'Organisms/Tables',
|
|
16
|
-
};
|
|
17
|
-
|
|
18
|
-
// Templates
|
|
19
|
-
function DrawCardTableTemplate(args: DrawCardTableProps) {
|
|
20
|
-
return <DrawCardTable {...args} />;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
function TeamDrawCardTableTemplate(args: DrawCardTableProps) {
|
|
24
|
-
return <TeamDrawCardTable {...args} />;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
const headerRows = [
|
|
28
|
-
{ name: 'Round 1' },
|
|
29
|
-
{ name: 'Quarterfinal' },
|
|
30
|
-
{ name: 'SemiFinal' },
|
|
31
|
-
];
|
|
32
|
-
|
|
33
|
-
const tableRows = [
|
|
34
|
-
[
|
|
35
|
-
<DrawCard isSelectActive isFlexWidth emptyLabel="Select a team" {...SAMPLE_CARD_DATA} />,
|
|
36
|
-
<DrawCard isSelectActive isFlexWidth emptyLabel="Select a team" {...SAMPLE_CARD_DATA} locationLabel="hi" />,
|
|
37
|
-
<DrawCard isSelectActive isFlexWidth emptyLabel="Select a team" {...SAMPLE_CARD_DATA} />,
|
|
38
|
-
<DrawCard isSelectActive isFlexWidth emptyLabel="Select a team" {...SAMPLE_CARD_DATA} locationLabel="hi" />,
|
|
39
|
-
<DrawCard isSelectActive isFlexWidth emptyLabel="Select a team" {...SAMPLE_CARD_DATA} />,
|
|
40
|
-
<DrawCard isSelectActive isFlexWidth emptyLabel="Select a team" {...SAMPLE_CARD_DATA} />,
|
|
41
|
-
<DrawCard isSelectActive isFlexWidth emptyLabel="Select a team" {...SAMPLE_CARD_DATA} locationLabel="hi" />,
|
|
42
|
-
<DrawCard isSelectActive isFlexWidth emptyLabel="Select a team" {...SAMPLE_CARD_DATA} />,
|
|
43
|
-
],
|
|
44
|
-
[
|
|
45
|
-
<DrawCard emptyLabel="Select a team" {...SAMPLE_CARD_DATA} onViewClick={() => {}} />,
|
|
46
|
-
<DrawCard emptyLabel="Select a team" {...SAMPLE_CARD_DATA} />,
|
|
47
|
-
<DrawCard isScorelessMatch emptyLabel="Select a team" {...SAMPLE_CARD_DATA} />,
|
|
48
|
-
<DrawCard isScorelessMatch emptyLabel="Select a team" {...SAMPLE_CARD_DATA} />,
|
|
49
|
-
],
|
|
50
|
-
[
|
|
51
|
-
<DrawCard emptyLabel="Select a team" {...SAMPLE_CARD_DATA} />,
|
|
52
|
-
<DrawCard emptyLabel="Select a team" {...SAMPLE_CARD_DATA} />,
|
|
53
|
-
],
|
|
54
|
-
[
|
|
55
|
-
<DrawCard emptyLabel="Select a team" {...SAMPLE_CARD_DATA} />,
|
|
56
|
-
],
|
|
57
|
-
];
|
|
58
|
-
|
|
59
|
-
const teamTableRows = [
|
|
60
|
-
[
|
|
61
|
-
<TeamDrawCard {...SAMPLE_TEAM_PAGE_CARD_DATA} />,
|
|
62
|
-
<TeamDrawCard {...SAMPLE_TEAM_PAGE_CARD_DATA} />,
|
|
63
|
-
<TeamDrawCard isScorelessMatch {...SAMPLE_TEAM_PAGE_CARD_DATA} />,
|
|
64
|
-
<TeamDrawCard isScorelessMatch {...SAMPLE_TEAM_PAGE_CARD_DATA} />,
|
|
65
|
-
],
|
|
66
|
-
[
|
|
67
|
-
<TeamDrawCard {...SAMPLE_TEAM_PAGE_CARD_DATA} />,
|
|
68
|
-
<TeamDrawCard {...SAMPLE_TEAM_PAGE_CARD_DATA} />,
|
|
69
|
-
],
|
|
70
|
-
[
|
|
71
|
-
<TeamDrawCard {...SAMPLE_TEAM_PAGE_CARD_DATA} />,
|
|
72
|
-
],
|
|
73
|
-
];
|
|
74
|
-
|
|
75
|
-
// Stories
|
|
76
|
-
export const DrawTable = DrawCardTableTemplate.bind({});
|
|
77
|
-
DrawTable.args = {
|
|
78
|
-
headerRows,
|
|
79
|
-
tableRows,
|
|
80
|
-
};
|
|
81
|
-
|
|
82
|
-
export const TeamDrawTable = TeamDrawCardTableTemplate.bind({});
|
|
83
|
-
TeamDrawTable.args = {
|
|
84
|
-
headerRows,
|
|
85
|
-
tableRows: teamTableRows,
|
|
86
|
-
};
|
|
87
|
-
|
|
88
|
-
export const MobileTeamDrawTable = TeamDrawCardTableTemplate.bind({});
|
|
89
|
-
MobileTeamDrawTable.args = {
|
|
90
|
-
headerRows,
|
|
91
|
-
tableRows: teamTableRows,
|
|
92
|
-
isMobile: true
|
|
93
|
-
};
|
|
94
|
-
|
|
95
|
-
export const SortableTable = DrawCardTableTemplate.bind({});
|
|
96
|
-
SortableTable.args = {
|
|
97
|
-
headCells: MOCK_HEAD_CELLS,
|
|
98
|
-
sortOrder: 'asc',
|
|
99
|
-
sortByProperty: 'player',
|
|
100
|
-
title: 'Player Table',
|
|
101
|
-
tableData: MOCK_TABLE_DATA,
|
|
102
|
-
rowComponent: mockRowComponent,
|
|
103
|
-
onOrderPropertyChange,
|
|
104
|
-
};
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import TeamDrawCard from 'stories/molecules/Cards/TeamDrawCard';
|
|
3
|
+
import DrawCard from '../../molecules/Cards/DrawCard';
|
|
4
|
+
import DrawCardTable from './DrawCardTable';
|
|
5
|
+
import TeamDrawCardTable from './TeamDrawCardTable/TeamDrawCardTable';
|
|
6
|
+
import { DrawCardTableProps } from './sharedTypes';
|
|
7
|
+
import {
|
|
8
|
+
MOCK_HEAD_CELLS, mockRowComponent, MOCK_TABLE_DATA, SAMPLE_CARD_DATA, SAMPLE_TEAM_PAGE_CARD_DATA
|
|
9
|
+
} from './mockData';
|
|
10
|
+
|
|
11
|
+
const onOrderPropertyChange = () => {};
|
|
12
|
+
|
|
13
|
+
// Default
|
|
14
|
+
export default {
|
|
15
|
+
title: 'Organisms/Tables',
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
// Templates
|
|
19
|
+
function DrawCardTableTemplate(args: DrawCardTableProps) {
|
|
20
|
+
return <DrawCardTable {...args} />;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
function TeamDrawCardTableTemplate(args: DrawCardTableProps) {
|
|
24
|
+
return <TeamDrawCardTable {...args} />;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
const headerRows = [
|
|
28
|
+
{ name: 'Round 1' },
|
|
29
|
+
{ name: 'Quarterfinal' },
|
|
30
|
+
{ name: 'SemiFinal' },
|
|
31
|
+
];
|
|
32
|
+
|
|
33
|
+
const tableRows = [
|
|
34
|
+
[
|
|
35
|
+
<DrawCard isSelectActive isFlexWidth emptyLabel="Select a team" {...SAMPLE_CARD_DATA} />,
|
|
36
|
+
<DrawCard isSelectActive isFlexWidth emptyLabel="Select a team" {...SAMPLE_CARD_DATA} locationLabel="hi" />,
|
|
37
|
+
<DrawCard isSelectActive isFlexWidth emptyLabel="Select a team" {...SAMPLE_CARD_DATA} />,
|
|
38
|
+
<DrawCard isSelectActive isFlexWidth emptyLabel="Select a team" {...SAMPLE_CARD_DATA} locationLabel="hi" />,
|
|
39
|
+
<DrawCard isSelectActive isFlexWidth emptyLabel="Select a team" {...SAMPLE_CARD_DATA} />,
|
|
40
|
+
<DrawCard isSelectActive isFlexWidth emptyLabel="Select a team" {...SAMPLE_CARD_DATA} />,
|
|
41
|
+
<DrawCard isSelectActive isFlexWidth emptyLabel="Select a team" {...SAMPLE_CARD_DATA} locationLabel="hi" />,
|
|
42
|
+
<DrawCard isSelectActive isFlexWidth emptyLabel="Select a team" {...SAMPLE_CARD_DATA} />,
|
|
43
|
+
],
|
|
44
|
+
[
|
|
45
|
+
<DrawCard emptyLabel="Select a team" {...SAMPLE_CARD_DATA} onViewClick={() => {}} />,
|
|
46
|
+
<DrawCard emptyLabel="Select a team" {...SAMPLE_CARD_DATA} />,
|
|
47
|
+
<DrawCard isScorelessMatch emptyLabel="Select a team" {...SAMPLE_CARD_DATA} />,
|
|
48
|
+
<DrawCard isScorelessMatch emptyLabel="Select a team" {...SAMPLE_CARD_DATA} />,
|
|
49
|
+
],
|
|
50
|
+
[
|
|
51
|
+
<DrawCard emptyLabel="Select a team" {...SAMPLE_CARD_DATA} />,
|
|
52
|
+
<DrawCard emptyLabel="Select a team" {...SAMPLE_CARD_DATA} />,
|
|
53
|
+
],
|
|
54
|
+
[
|
|
55
|
+
<DrawCard emptyLabel="Select a team" {...SAMPLE_CARD_DATA} />,
|
|
56
|
+
],
|
|
57
|
+
];
|
|
58
|
+
|
|
59
|
+
const teamTableRows = [
|
|
60
|
+
[
|
|
61
|
+
<TeamDrawCard {...SAMPLE_TEAM_PAGE_CARD_DATA} />,
|
|
62
|
+
<TeamDrawCard {...SAMPLE_TEAM_PAGE_CARD_DATA} />,
|
|
63
|
+
<TeamDrawCard isScorelessMatch {...SAMPLE_TEAM_PAGE_CARD_DATA} />,
|
|
64
|
+
<TeamDrawCard isScorelessMatch {...SAMPLE_TEAM_PAGE_CARD_DATA} />,
|
|
65
|
+
],
|
|
66
|
+
[
|
|
67
|
+
<TeamDrawCard {...SAMPLE_TEAM_PAGE_CARD_DATA} />,
|
|
68
|
+
<TeamDrawCard {...SAMPLE_TEAM_PAGE_CARD_DATA} />,
|
|
69
|
+
],
|
|
70
|
+
[
|
|
71
|
+
<TeamDrawCard {...SAMPLE_TEAM_PAGE_CARD_DATA} />,
|
|
72
|
+
],
|
|
73
|
+
];
|
|
74
|
+
|
|
75
|
+
// Stories
|
|
76
|
+
export const DrawTable = DrawCardTableTemplate.bind({});
|
|
77
|
+
DrawTable.args = {
|
|
78
|
+
headerRows,
|
|
79
|
+
tableRows,
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
export const TeamDrawTable = TeamDrawCardTableTemplate.bind({});
|
|
83
|
+
TeamDrawTable.args = {
|
|
84
|
+
headerRows,
|
|
85
|
+
tableRows: teamTableRows,
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
export const MobileTeamDrawTable = TeamDrawCardTableTemplate.bind({});
|
|
89
|
+
MobileTeamDrawTable.args = {
|
|
90
|
+
headerRows,
|
|
91
|
+
tableRows: teamTableRows,
|
|
92
|
+
isMobile: true
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
export const SortableTable = DrawCardTableTemplate.bind({});
|
|
96
|
+
SortableTable.args = {
|
|
97
|
+
headCells: MOCK_HEAD_CELLS,
|
|
98
|
+
sortOrder: 'asc',
|
|
99
|
+
sortByProperty: 'player',
|
|
100
|
+
title: 'Player Table',
|
|
101
|
+
tableData: MOCK_TABLE_DATA,
|
|
102
|
+
rowComponent: mockRowComponent,
|
|
103
|
+
onOrderPropertyChange,
|
|
104
|
+
};
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { styled } from "@mui/material/styles";
|
|
3
|
+
import Grid from "@mui/material/Grid";
|
|
4
|
+
import Box from "@mui/material/Box";
|
|
5
|
+
|
|
6
|
+
import { TableRowProps } from '../sharedTypes';
|
|
7
|
+
import Typography from "../../../atoms/Typography/Typography";
|
|
8
|
+
import { teamDrawCardSideMargin, standardSideMargin } from "../../../utils/constants";
|
|
9
|
+
|
|
10
|
+
const StyledHeader = styled(Grid)({
|
|
11
|
+
alignItems: "center",
|
|
12
|
+
justifyContent: "center",
|
|
13
|
+
display: "flex"
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
const gridCommonStyles = {
|
|
17
|
+
content: "''",
|
|
18
|
+
position: "absolute",
|
|
19
|
+
backgroundColor: "var(--cool-grey-600)",
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
const horizontalLineCommonStyles = {
|
|
23
|
+
height: "1px",
|
|
24
|
+
top: "50%",
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
const StyledGrid = styled(Grid)({
|
|
28
|
+
position: "relative",
|
|
29
|
+
|
|
30
|
+
"&:nth-last-child(-n+2) .team-draw-card": {
|
|
31
|
+
"&:before": {
|
|
32
|
+
...gridCommonStyles,
|
|
33
|
+
...horizontalLineCommonStyles,
|
|
34
|
+
width: `${teamDrawCardSideMargin}`,
|
|
35
|
+
left: 0,
|
|
36
|
+
transform: "translateX(-100%)"
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
"&:nth-of-type(-n+2) .team-draw-card": {
|
|
40
|
+
"&:after": {
|
|
41
|
+
...gridCommonStyles,
|
|
42
|
+
...horizontalLineCommonStyles,
|
|
43
|
+
width: `calc(${standardSideMargin + 1}px)`,
|
|
44
|
+
right: 0,
|
|
45
|
+
transform: "translateX(100%)"
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
const GridSections = styled(Box)({
|
|
51
|
+
display: "flex",
|
|
52
|
+
alignItems: "center",
|
|
53
|
+
position: 'relative',
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
export default function DesktopTableRows({
|
|
57
|
+
headerRows, totalColumns, tableRows
|
|
58
|
+
}: TableRowProps) {
|
|
59
|
+
const formatTableRows = tableRows.map((row, index) => {
|
|
60
|
+
if (index > 2) return; // Table can only support 3 columns
|
|
61
|
+
const rowSectionsHeight = `${100 / tableRows[index].length}%`;
|
|
62
|
+
const sectionAmount = tableRows[index].length;
|
|
63
|
+
const isFirstRow = index === 0;
|
|
64
|
+
|
|
65
|
+
return (
|
|
66
|
+
<StyledGrid key={index} xs={totalColumns}>
|
|
67
|
+
{[...Array(sectionAmount)].map((section, idx) => (
|
|
68
|
+
<GridSections
|
|
69
|
+
key={idx}
|
|
70
|
+
sx={{
|
|
71
|
+
height: rowSectionsHeight,
|
|
72
|
+
'&:before': {
|
|
73
|
+
display: isFirstRow ? 'none' : 'block',
|
|
74
|
+
...gridCommonStyles,
|
|
75
|
+
height: `calc(50% + 1px)`,
|
|
76
|
+
width: "1px",
|
|
77
|
+
top: `calc(25% - 4px)`
|
|
78
|
+
},
|
|
79
|
+
}}
|
|
80
|
+
>
|
|
81
|
+
{row[idx]}
|
|
82
|
+
</GridSections>
|
|
83
|
+
))}
|
|
84
|
+
</StyledGrid>
|
|
85
|
+
);
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
return (
|
|
89
|
+
<>
|
|
90
|
+
<Grid container sx={{ height: "60px" }}>
|
|
91
|
+
{headerRows.map((row) => (
|
|
92
|
+
<StyledHeader key={row.name} xs={totalColumns}>
|
|
93
|
+
<Typography category="secondary" size="small-medium-cap">
|
|
94
|
+
{row.name}
|
|
95
|
+
</Typography>
|
|
96
|
+
</StyledHeader>
|
|
97
|
+
))}
|
|
98
|
+
</Grid>
|
|
99
|
+
<Grid container>{formatTableRows}</Grid>
|
|
100
|
+
</>
|
|
101
|
+
);
|
|
102
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import Box from "@mui/material/Box";
|
|
3
|
+
import Button from "@mui/material/Button";
|
|
4
|
+
import { styled } from "@mui/material/styles";
|
|
5
|
+
import Grid from "@mui/material/Grid";
|
|
6
|
+
|
|
7
|
+
import { TableRowProps } from '../sharedTypes';
|
|
8
|
+
import RightChevronIcon from '../../../atoms/Icons/RightChevronIcon';
|
|
9
|
+
import LeftChevronIcon from '../../../atoms/Icons/LeftChevronIcon';
|
|
10
|
+
import Typography from "../../../atoms/Typography/Typography";
|
|
11
|
+
|
|
12
|
+
const StyledHeader = styled(Grid)({
|
|
13
|
+
alignItems: "center",
|
|
14
|
+
justifyContent: "center",
|
|
15
|
+
display: "flex"
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
const GridSections = styled(Box)({
|
|
19
|
+
display: "flex",
|
|
20
|
+
alignItems: "center",
|
|
21
|
+
position: 'relative',
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
export default function MobileTableRows({
|
|
25
|
+
totalColumns, headerRows, tableRows
|
|
26
|
+
}: TableRowProps) {
|
|
27
|
+
const [activeStep, setActiveStep] = React.useState(0);
|
|
28
|
+
|
|
29
|
+
const handleNext = () => {
|
|
30
|
+
setActiveStep((prevActiveStep) => prevActiveStep + 1);
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
const handleBack = () => {
|
|
34
|
+
setActiveStep((prevActiveStep) => prevActiveStep - 1);
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
const disabledBackButton = activeStep === 0;
|
|
38
|
+
const disabledForwardButton = activeStep === tableRows.length - 1;
|
|
39
|
+
|
|
40
|
+
return (
|
|
41
|
+
<Box>
|
|
42
|
+
<Grid container justifyContent="space-between" mb={1}>
|
|
43
|
+
<Button color="inherit" disabled={disabledBackButton} onClick={handleBack} sx={{ mr: 1, alignSelf: "flex-start" }}>
|
|
44
|
+
<LeftChevronIcon size={16} color={disabledBackButton ? "transparent" : "var(--primary)"} />
|
|
45
|
+
</Button>
|
|
46
|
+
<StyledHeader xs={totalColumns}>
|
|
47
|
+
<Typography category="secondary" size="small-medium-cap">
|
|
48
|
+
{headerRows[activeStep].name}
|
|
49
|
+
</Typography>
|
|
50
|
+
</StyledHeader>
|
|
51
|
+
<Button onClick={handleNext} disabled={disabledForwardButton}>
|
|
52
|
+
<RightChevronIcon size={16} color={disabledForwardButton ? "transparent" : "var(--primary)"} />
|
|
53
|
+
</Button>
|
|
54
|
+
</Grid>
|
|
55
|
+
<Grid flexDirection="column" container>
|
|
56
|
+
<GridSections
|
|
57
|
+
sx={{
|
|
58
|
+
flexDirection: "column",
|
|
59
|
+
gap: "10px",
|
|
60
|
+
}}
|
|
61
|
+
>
|
|
62
|
+
{tableRows[activeStep]}
|
|
63
|
+
</GridSections>
|
|
64
|
+
</Grid>
|
|
65
|
+
</Box>
|
|
66
|
+
);
|
|
67
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import Box from "@mui/material/Box";
|
|
3
|
+
|
|
4
|
+
import DesktopTableRows from './DesktopTableRows';
|
|
5
|
+
import MobileTableRow from './MobileTableRows';
|
|
6
|
+
import { DrawCardTableProps } from "../sharedTypes";
|
|
7
|
+
|
|
8
|
+
export default function TeamDrawCardTable({
|
|
9
|
+
headerRows, tableRows, isMobile, ...props
|
|
10
|
+
}: DrawCardTableProps) {
|
|
11
|
+
if (!headerRows || !tableRows) return null;
|
|
12
|
+
|
|
13
|
+
const totalColumns = Math.floor(12 / headerRows.length);
|
|
14
|
+
|
|
15
|
+
return (
|
|
16
|
+
<Box {...props} sx={{ flexGrow: 1 }} aria-label="draw table">
|
|
17
|
+
{isMobile ? (
|
|
18
|
+
<MobileTableRow totalColumns={totalColumns} tableRows={tableRows} headerRows={headerRows} />
|
|
19
|
+
) : (
|
|
20
|
+
<DesktopTableRows totalColumns={totalColumns} tableRows={tableRows} headerRows={headerRows} />
|
|
21
|
+
)}
|
|
22
|
+
</Box>
|
|
23
|
+
);
|
|
24
|
+
}
|