Files
router-lists-ui/frontend/docs/TABLE_UX.md
T

44 lines
3.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Таблицы: UX/UI по Tabler и проекту
Рекомендации по формированию таблиц в приложении — [Tabler Tables](https://docs.tabler.io/ui/components/tables/), [Preview](https://preview.tabler.io/tables.html).
## Классы (Tabler)
- **Базовые:** `table card-table table-vcenter table-nowrap mb-0`
- **Чередование строк:** `table-striped` — улучшает читаемость
- **Компактный режим:** `table-sm` — меньше отступы в ячейках
- **Обёртка:** `table-responsive` вокруг `<table>`
- **Обрезка длинного текста:** для ячейки использовать `td-truncate` (Tabler) или `text-truncate` + `max-width`
## Компонент DataTable
Используйте `DataTable` там, где подходит декларативное описание колонок и общие действия (сортировка, выбор, пагинация):
- `columns`: `{ key, title, sortable?, icon?, render?, tooltip? }` — для подсказки по заголовку задайте `tooltip`
- `striped={true}` по умолчанию
- `compact={true}` — компактные ячейки
- Колонка «Действия» получает класс `td-actions` (фиксированная минимальная ширина в проекте)
## Информативность и лаконичность
1. **Заголовки колонок** — короткие, при необходимости уточнение через `tooltip` (например, значение иконки замка).
2. **Действия в строке** — иконки с `Tooltip` и `aria-label`; колонка «Действия» справа, без лишнего текста.
3. **Копирование** — кнопка/иконка копирования рядом с ячейкой (IP, домен и т.д.) вместо дублирования в «Действия», если это основной сценарий.
4. **Пустое состояние** — через `emptyState` в DataTable или свой блок с призывом к действию (импорт, добавление).
## Доступность
- У заголовков: `scope="col"`.
- У таблицы: `role="grid"` при семантической сетке данных.
- Кнопки действий: `aria-label` и/или Tooltip.
## Где таблица своя, а не DataTable
В IPRangesManager, DomainsNewManager, ServerManager и др. таблицы рендерятся вручную. Для единообразия:
- Те же классы: `table card-table table-vcenter table-nowrap mb-0`, при желании `table-striped`.
- Заголовки: `th` с `scope="col"`, короткий текст, при необходимости иконка и тултип.
- Колонка действий: класс `td-actions` у `th` и `td`, кнопки с тултипами.
При рефакторинге страниц можно постепенно переводить такие таблицы на DataTable с описанием `columns` и общих обработчиков.