Repository navigation
Conversation
Что: @tanstack/react-table ^8.21.3 -> ^9.3.1 в apps/dokploy. Все 13 таблиц в apps/dokploy/components переведены с useReactTable на useTable: у каждой таблицы модульный объект features (tableFeatures) с нужными фичами (сортировка, пагинация, видимость колонок, фильтрация, выбор строк), row models create*RowModel вместо get*RowModel и явный реестр функций сортировки/фильтрации (alphanumeric, datetime, text; includesString, equals), чтобы 'auto' работал как в v8. ColumnDef получил параметр typeof features, VisibilityState -> ColumnVisibilityState, table.getState() -> table.state, sortingFn -> sortFn (тома Docker). DataTable в swarm/applications ограничен TData extends RowData. Зачем: волна 3 мажорных обновлений UI-библиотек. Слой совместимости useLegacyTable (@tanstack/react-table/legacy) не использован: в v9 он помечен deprecated и временным, тянет все фичи. Риски: в v9 API доступно только для зарегистрированных фич; 'auto' сортировка/фильтрация находит только зарегистрированные функции. Поведение таблиц в браузере локально не проверялось. Проверки: bun run typecheck - ок; bunx biome check по 18 файлам - ок; bun audit --audit-level=moderate - уязвимостей нет; smoke-скрипт с useTable и теми же features (сортировка, includesString, equals, пагинация, скрытие колонок) - ок. Тестов на таблицы в __test__ нет. next build не запускался (соберёт CI). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Collaborator
Author
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Зачем
Волна 3 мажорных обновлений UI-библиотек:
@tanstack/react-table8 → 9. В v9 переработан API: фичи таблицы подключаются явно,useReactTableзаменён наuseTable,get*RowModel— на слотыcreate*RowModel.Что изменилось
Версия:
@tanstack/react-table^8.21.3→^9.3.1(опубликована 2026-10-12) вapps/dokploy/package.json; вbun.lockдобавились зависимости@tanstack/storeи@tanstack/react-store0.11.2.Код (13 таблиц, 18 файлов в
apps/dokploy/components):const features = tableFeatures({...})с теми фичами, которые таблица реально использует, иuseReactTable({...})→useTable({ features, ... });getSortedRowModel/getPaginationRowModel/getFilteredRowModel→ слотыsortedRowModel/paginatedRowModel/filteredRowModelсcreate*RowModel();getCoreRowModelудалён (в v9 он встроен);'auto'сортировка и фильтрация выбирают только зарегистрированные функции, поэтому явно зарегистрированыsortFns(alphanumeric,datetime,text, аbasic— встроенный fallback) и, где есть фильтры,filterFns(includesString,equals). Так поведение совпадает с v8;columnVisibilityFeatureподключён во всех таблицах: в v9 через него работаетrow.getVisibleCells();ColumnDef<T>→ColumnDef<typeof features, T>; в файлахcolumns.tsxfeatures импортируется как тип из файла таблицы;VisibilityState→ColumnVisibilityState;table.getState().pagination→table.state.pagination(events, volumes, images, disk-usage, sessions, networks);sortingFn→sortFnв колонке Size у томов Docker (docker/volumes/show-volumes.tsx);swarm/applications/data-table.tsx: дженерикDataTable<TData extends RowData>безTValue(в v9TValueинвариантен, а вызывающий код его не задаёт).Что важно из migration guide v9:
useLegacyTable(@tanstack/react-table/legacy) позволил бы почти не трогать код, но в v9 он объявлен deprecated и временным мостом, тянет все фичи, а guide прямо советует не делать его целевым вариантом. Поэтому сделана полноценная миграция наuseTable.flexRenderв v9 остался, его не трогали. Пересмотренная семантикаgetIsSomeRowsSelectedнас не касается: эти методы в коде не используются.Проверки
bun run typecheck— ок (все 4 workspace);bunx biome checkпо 18 изменённым файлам — ок;bun audit --audit-level=moderate— уязвимостей нет;rg -l "react-table|DataTable" apps/dokploy/__test__— тестов на таблицы нет;useTable+ тот же набор features, рендер черезreact-dom/server): сортировка по убыванию, фильтрincludesStringбез учёта регистра, фильтрequals, пагинация (getPageCount,getCanNextPage), скрытие колонки черезcolumnVisibility,table.state.pagination— всё как ожидалось;next buildи прокликивание в браузере локально не запускались, сборку сделает CI.Что проверить вручную на dev
Во всех таблицах проверить, что строки отображаются и нет ошибок в консоли браузера.
deployments/show-deployments-table.tsx): сортировка по заголовкам, кнопки «назад/вперёд» пагинации.proprietary/audit-logs): сортировка по заголовкам (дата, пользователь и т. д.); пагинация и фильтры серверные, проверить переключение страниц и фильтров.application/domains): поиск по host, меню «Columns» (скрытие/показ колонок), сортировка, пагинация.docker/events): сортировка, пагинация, поле «Page N of M» и переход на страницу.docker/volumes): сортировка, особенно по колонке Size (своя функция сравнения), пагинация, «Page N of M».docker/show): поиск по имени, фильтр по state (all/running/exited… — точное совпадение), меню колонок, сортировка, пагинация.docker/images): сортировка, пагинация, «Page N of M».docker/disk-usage): сортировка, пагинация.settings/sessions): сортировка, пагинация, адаптивное скрытие колонок на узком экране (meta.className).swarm/applications): поиск по Name, меню колонок, сортировка, пагинация.networks/show-networks.tsx): сортировка, пагинация, «Page N of M».requests): серверная пагинация («назад/вперёд»), меню колонок, сортировка по заголовкам.settings/dns): сортировка, пагинация.🤖 Generated with Claude Code