feat(ui/tables): resizable columns with horizontal scroll + autofit#861
Open
akira69 wants to merge 5 commits intoDonkie:masterfrom
Open
feat(ui/tables): resizable columns with horizontal scroll + autofit#861akira69 wants to merge 5 commits intoDonkie:masterfrom
akira69 wants to merge 5 commits intoDonkie:masterfrom
Conversation
This was referenced Feb 24, 2026
0e2506e to
778fdd4
Compare
778fdd4 to
2a1b736
Compare
## Code Quality Compliance ✅ Per https://github.com/Donkie/Spoolman/wiki/Contribute#style - ESLint (frontend) ✓ - Prettier (frontend) ✓ Fixed: resizableTable.tsx formatting - Pre-commit hooks validated ✓
14 tasks
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.
Summary
This PR introduces a reusable table interaction layer for column resizing and horizontal-scroll behavior across key list/settings tables. It also guards the new saved column-width state so a malformed local-storage entry recovers to defaults instead of blanking the page.
Why This Matters
What Changed
Reusable table interaction primitive
ResizableTablewrapper for AntD tables.Hardening
useSavedStateso invalid persisted JSON falls back to defaults and self-heals on reload.Wired pages
Files of interest
client/src/components/column.tsxclient/src/components/resizableTable.tsxclient/src/pages/filaments/list.tsxclient/src/pages/settings/extraFieldsSettings.tsxclient/src/pages/spools/list.tsxclient/src/pages/vendors/list.tsxclient/src/utils/overrides.cssclient/src/utils/saveload.tsScope / Independence
#862.Testing Performed
cd client && npm cicd client && ./node_modules/.bin/eslint src/utils/saveload.ts src/components/resizableTable.tsx src/components/column.tsx src/pages/filaments/list.tsx src/pages/spools/list.tsx src/pages/vendors/list.tsx src/pages/settings/extraFieldsSettings.tsxcd client && ./node_modules/.bin/prettier --check src/utils/saveload.ts src/components/resizableTable.tsx src/components/column.tsx src/pages/filaments/list.tsx src/pages/spools/list.tsx src/pages/vendors/list.tsx src/pages/settings/extraFieldsSettings.tsxcd client && VITE_APIURL=/api/v1 npm run builduv run uvicorn spoolman.main:app --host 0.0.0.0 --port 9861http://localhost:9861/filamentNamecolumn wider and confirmed the width updated immediatelyNamecolumn handle and confirmed auto-fit returned it to content width{}instead of blankinghttp://localhost:9861/filamentat800x900Actionscolumn is hidden belowlghttp://localhost:9861/filamentat1000x900Actionscolumn remains pinned while the table body scrolls horizontallyhttp://localhost:9861/spoolhttp://localhost:9861/vendorhttp://localhost:9861/settings/extra/vendorhttp://localhost:9861/spoolMaterial,Price)Locationcolumnhttp://localhost:9861/vendorNamecolumnNamecolumnhttp://localhost:9861/settings/extra/vendorNamecolumnNamecolumnNamecolumnTest Checklist
Actionscolumn pinned while horizontally scrolling at desktop widthsActionscolumn belowlg