правка интерфейса

This commit is contained in:
gorbenko.pavel
2026-07-29 13:47:12 +05:00
parent 8e08eef9b4
commit 2bbdcc4ef7
7 changed files with 65 additions and 47 deletions
@@ -8,8 +8,17 @@
border: 1px solid $gray-200;
}
// Внутренний скролл-контейнер: если колонок больше, чем помещается в узкую
// колонку страницы (например, в редакторе SharePoint), таблица должна
// скроллиться по горизонтали, а не обрезаться по overflow:hidden у .wrap.
.scroll {
overflow-x: auto;
}
.table {
width: 100%;
// min-width, не width: при большом числе колонок таблица должна иметь
// право стать шире контейнера — тогда её подхватит .scroll (overflow-x).
min-width: 100%;
border-collapse: collapse;
font-size: 13.5px;
}
@@ -19,28 +19,30 @@ export interface IDataTableProps<T> {
export function DataTable<T>({ columns, rows, keyOf, emptyMessage }: IDataTableProps<T>): React.ReactElement {
return (
<div className={styles.wrap}>
<table className={styles.table}>
<thead>
<tr>
{columns.map(col => (
<th key={col.key} style={{ width: col.width, textAlign: col.align ?? 'left' }}>
{col.header}
</th>
))}
</tr>
</thead>
<tbody>
{rows.map(row => (
<tr key={keyOf(row)}>
<div className={styles.scroll}>
<table className={styles.table}>
<thead>
<tr>
{columns.map(col => (
<td key={col.key} style={{ textAlign: col.align ?? 'left' }}>
{col.render(row)}
</td>
<th key={col.key} style={{ width: col.width, textAlign: col.align ?? 'left' }}>
{col.header}
</th>
))}
</tr>
))}
</tbody>
</table>
</thead>
<tbody>
{rows.map(row => (
<tr key={keyOf(row)}>
{columns.map(col => (
<td key={col.key} style={{ textAlign: col.align ?? 'left' }}>
{col.render(row)}
</td>
))}
</tr>
))}
</tbody>
</table>
</div>
{rows.length === 0 && <div className={styles.empty}>{emptyMessage}</div>}
</div>
);