|
106 | 106 | <!-- https://github.com/kenkoooo/AtCoderProblems/blob/master/atcoder-problems-frontend/src/pages/TablePage/AtCoderRegularTable.tsx --> |
107 | 107 | <!-- https://github.com/birdou/atcoder-blogs/blob/main/app/atcoder-blogs-frontend/src/pages/BlogTablePage/BlogTablePage.tsx --> |
108 | 108 | <!-- https://tailwindcss.com/docs/position#sticky-positioning-elements --> |
109 | | -<div class="container w-full overflow-auto border rounded-md"> |
110 | | - <Table shadow id="task-table" class="text-md table-fixed" aria-label="Task table"> |
111 | | - <TableHead class="text-sm bg-gray-100"> |
112 | | - <TableHeadCell class="w-full xl:w-16 px-2 text-center border" scope="col"> |
113 | | - Round |
114 | | - </TableHeadCell> |
115 | | - |
116 | | - {#if taskTableHeaderIds.length} |
117 | | - {#each taskTableHeaderIds as taskTableHeaderId} |
118 | | - <TableHeadCell class="text-center border" scope="col">{taskTableHeaderId}</TableHeadCell> |
119 | | - {/each} |
120 | | - {/if} |
121 | | - </TableHead> |
122 | | - |
123 | | - <TableBody class="divide-y"> |
124 | | - {#if contestIds.length && taskTableHeaderIds.length} |
125 | | - {#each contestIds as contestId} |
126 | | - <TableBodyRow class="flex flex-wrap xl:table-row"> |
127 | | - <TableBodyCell class="w-full xl:w-16 truncate px-2 py-2 text-center border"> |
128 | | - {getContestRoundLabel(provider, contestId)} |
129 | | - </TableBodyCell> |
130 | | - |
131 | | - {#each taskTableHeaderIds as taskTableHeaderId} |
132 | | - <TableBodyCell |
133 | | - id={contestId + '-' + taskTableHeaderId} |
134 | | - class={getBodyCellClasses(contestId, taskTableHeaderId)} |
135 | | - > |
136 | | - {#if taskTable[contestId][taskTableHeaderId]} |
137 | | - <TaskTableBodyCell |
138 | | - taskResult={taskTable[contestId][taskTableHeaderId]} |
139 | | - {isLoggedIn} |
140 | | - onClick={() => openModal(taskTable[contestId][taskTableHeaderId])} |
141 | | - /> |
142 | | - {/if} |
| 109 | +<div class="container w-full overflow-hidden rounded-md border border-gray-300 shadow-sm"> |
| 110 | + <div class="w-full overflow-auto"> |
| 111 | + <Table id="task-table" class="text-md table-fixed w-full" aria-label="Task table"> |
| 112 | + <TableHead class="text-sm bg-gray-100"> |
| 113 | + <TableHeadCell class="w-full xl:w-16 px-2 text-center border" scope="col"> |
| 114 | + Round |
| 115 | + </TableHeadCell> |
| 116 | + |
| 117 | + {#if taskTableHeaderIds.length} |
| 118 | + {#each taskTableHeaderIds as taskTableHeaderId} |
| 119 | + <TableHeadCell class="text-center border" scope="col">{taskTableHeaderId}</TableHeadCell |
| 120 | + > |
| 121 | + {/each} |
| 122 | + {/if} |
| 123 | + </TableHead> |
| 124 | + |
| 125 | + <TableBody class="divide-y"> |
| 126 | + {#if contestIds.length && taskTableHeaderIds.length} |
| 127 | + {#each contestIds as contestId} |
| 128 | + <TableBodyRow class="flex flex-wrap xl:table-row"> |
| 129 | + <TableBodyCell class="w-full xl:w-16 truncate px-2 py-2 text-center border"> |
| 130 | + {getContestRoundLabel(provider, contestId)} |
143 | 131 | </TableBodyCell> |
144 | | - {/each} |
145 | | - </TableBodyRow> |
146 | | - {/each} |
147 | | - {/if} |
148 | | - </TableBody> |
149 | | - </Table> |
| 132 | + |
| 133 | + {#each taskTableHeaderIds as taskTableHeaderId} |
| 134 | + <TableBodyCell |
| 135 | + id={contestId + '-' + taskTableHeaderId} |
| 136 | + class={getBodyCellClasses(contestId, taskTableHeaderId)} |
| 137 | + > |
| 138 | + {#if taskTable[contestId][taskTableHeaderId]} |
| 139 | + <TaskTableBodyCell |
| 140 | + taskResult={taskTable[contestId][taskTableHeaderId]} |
| 141 | + {isLoggedIn} |
| 142 | + onClick={() => openModal(taskTable[contestId][taskTableHeaderId])} |
| 143 | + /> |
| 144 | + {/if} |
| 145 | + </TableBodyCell> |
| 146 | + {/each} |
| 147 | + </TableBodyRow> |
| 148 | + {/each} |
| 149 | + {/if} |
| 150 | + </TableBody> |
| 151 | + </Table> |
| 152 | + </div> |
150 | 153 | </div> |
151 | 154 |
|
152 | 155 | <UpdatingModal bind:this={updatingModal} {isLoggedIn} /> |
0 commit comments