Примитивы
39
DataTable
Таблица, описываемая конфигом. У каждой колонки свой рендерер, поэтому таблица остаётся обобщённой по типу строки.
отрендерил aura-react
отрендерил aura-react
отрендерил aura-vue
отрендерил aura-svelte
собрано из классов самого aura-angular
| Package | Version | Parity | |
|---|---|---|---|
| @ilomee/aura-core | 1.0.0 | ok | |
| @ilomee/aura-react | 1.0.0 | ok | |
| @ilomee/aura-vue | 1.0.0 | behind |
| Package | Version | Parity | |
|---|---|---|---|
| @ilomee/aura-core | 1.0.0 | ok | |
| @ilomee/aura-react | 1.0.0 | ok | |
| @ilomee/aura-vue | 1.0.0 | behind |
| Package | Version | Parity | |
|---|---|---|---|
| @ilomee/aura-core | 1.0.0 | ok | |
| @ilomee/aura-react | 1.0.0 | ok | |
| @ilomee/aura-vue | 1.0.0 | behind |
| Package | Version | Parity | |
|---|---|---|---|
| @ilomee/aura-core | 1.0.0 | ok | |
| @ilomee/aura-react | 1.0.0 | ok | |
| @ilomee/aura-vue | 1.0.0 | behind |
Код
Рецепт — это композиция примитивов, а не один элемент, поэтому единого сниппета нет. Соберите его из классов ниже или откройте примитивы, из которых он состоит.
Demo.tsx
import { Badge, Button, DataTable, type DataTableColumn } from '@ilomee/aura-react';
interface Release {
pkg: string;
version: string;
status: 'ok' | 'behind';
}
const ROWS: Release[] = [
{ pkg: '@ilomee/aura-core', version: '1.0.0', status: 'ok' },
{ pkg: '@ilomee/aura-react', version: '1.0.0', status: 'ok' },
{ pkg: '@ilomee/aura-vue', version: '1.0.0', status: 'behind' },
];
const COLUMNS: DataTableColumn<Release>[] = [
{ key: 'pkg', header: 'Package' },
{ key: 'version', header: 'Version', align: 'end', width: '110px' },
{ key: 'status', header: 'Parity', render: (row) => <Badge tone={row.status === 'ok' ? 'success' : 'danger'}>{row.status}</Badge> },
];
export default function Demo() {
return (
<DataTable
columns={COLUMNS}
rows={ROWS}
rowKey={(row) => row.pkg}
actions={(row) => <Button variant="ghost">Publish {row.version}</Button>}
caption="Latest published versions"
/>
);
}Demo.vue
import { DataTable } from '@ilomee/aura-vue';Колонка рисуется скоуп-слотом, названным по её ключу; column.render тоже принимается, если удобнее функция.
Demo.svelte
import { DataTable } from '@ilomee/aura-svelte';Колонка рисуется через column.cell — сниппет Snippet<[Row, number]>.
Используется как aura-data-table.
demo.component.ts
import { AuraDataTable } from '@ilomee/aura-angular';Контентные входы принимают строку либо TemplateRef.
Пропсы
У чистой разметки нет пропсов — классы ниже и есть весь API. Четыре пакета не делают ничего сверх того, что проставляют вам те же самые классы.
| Имя | Тип | По умолчанию | Примечания |
|---|---|---|---|
| columns* | DataTableColumn<Row>[] | — | { key, header, render?, align?, width? }. |
| rows | Row[] | null | — | |
| rowKey | (row: Row, i: number) => string | — | |
| actions | (row: Row) => ReactNode | — | |
| emptyLabel | string | 'No rows' | |
| caption | ReactNode | — |
| Имя | Тип | По умолчанию | Примечания |
|---|---|---|---|
| columns* | DataTableColumn<Row>[] | — | |
| rows | Row[] | null | — | |
| rowKey | (row: Row, i: number) => string | — | |
| emptyLabel | string | 'No rows' | |
| caption | RecipeContent | — | |
| cell-<key> / actionsслот | Slot<{ row: Row; index: number }> | — | Ячейка колонки и ячейка действий строки. |
| Имя | Тип | По умолчанию | Примечания |
|---|---|---|---|
| columns* | DataTableColumn<Row>[] | — | |
| rows | Row[] | null | — | |
| rowKey | (row: Row, i: number) => string | — | |
| actions | Snippet<[Row, number]> | — | |
| emptyLabel | string | 'No rows' | |
| caption | RecipeContent | — |
| Имя | Тип | По умолчанию | Примечания |
|---|---|---|---|
| columns* | DataTableColumn<Row>[] | — | |
| rows | Row[] | null | — | |
| rowKey | (row: Row, i: number) => string | — | |
| cells | Record<string, TemplateRef<AuraCellContext<Row>>> | — | Шаблон ячейки на ключ колонки. Контекст — { $implicit: row, index }. |
| actions | TemplateRef<AuraCellContext<Row>> | — | |
| emptyLabel | RecipeContent | 'No rows' | |
| caption | RecipeContent | — |
Какие классы отдаёт
Все фреймворки отдают одни и те же классы — именно поэтому четыре библиотеки выглядят одинаково. Их можно использовать напрямую, вообще без библиотеки компонентов.
| Класс | Роль | Примечания |
|---|---|---|
| .aura-table | база | Обязательный. Без него модификатор не работает. |
| .aura-table__actions | элемент | |
| .aura-table--empty | модификатор |