Resize List View Columns
Drag to resize any list view column in Odoo 19 - widths are saved per user, per view and restored automatically on every visit.
Key Features
Drag-to-Resize Columns
Grab any column header edge and drag to the exact width you need - a natural, desktop-quality interaction right inside Odoo's native list view.
Persistent Width Storage
Column widths are saved to the database after every drag - stored per user, per model, and per view so each person keeps their own preferred layout.
Auto-Restore on Load
Saved widths are re-applied automatically on every list view render - even after page refresh, navigation, or Odoo re-login. No manual steps required.
localStorage Fast-Cache
Widths are cached in localStorage for instant re-application on first render - the database is queried only on a cache miss, keeping the UI snappy and flicker-free.
Per-User Independence
Every user maintains their own column layout - widths set by one user never affect another. Each person's preference is stored and restored independently.
Non-Intrusive OWL Patch
Implemented as a clean OWL patch on ListRenderer - no core file modifications, no XML overrides. Seamlessly compatible with other list view customizations.
How It Works
Drag to Resize
Hover over any column header divider. When the resize cursor appears, click and drag left or right to set your preferred column width.
Auto-Save
On mouse release, all column widths are captured and saved to both localStorage (for instant reuse) and the database (for cross-device persistence).
Auto-Restore
The next time you open the same list view, widths are reloaded from localStorage (or the DB on a fresh session) and applied after render - no flicker, no reset.
Module Screenshot
Resizable Columns in Action
Drag any column header edge to your preferred width. The layout is saved immediately and restored on every future visit - per user, per view, automatically.
Technical Details
OWL Frontend Patch
A clean patch on Odoo's ListRenderer component hooks into the existing drag-resize event. On pointer release, all header widths are captured and persisted. On every render, saved widths are silently reapplied - skipping only during an active drag to avoid conflicts.
Backend Storage Model
A lightweight list.column.width model stores widths as a JSON string, keyed by (user_id, res_model, view_id) with a unique constraint. get_widths and set_widths RPC methods provide a minimal, efficient API surface.
Two-Layer Caching
Layer 1 - localStorage: widths are written to localStorage on save and read back on render for zero-latency reapplication with no server round trip. Layer 2 - Database: on a cache miss (fresh browser or cleared storage), widths are fetched from the DB via onWillStart and re-seeded into localStorage.
Safe & Compatible
No core XML or Python files are modified. The patch only wraps the existing onStartResize callback and adds a useEffect for width restoration. Column count mismatch is detected and silently skipped to prevent layout corruption on view changes.
Who Is This For?
Perfect for:
- Operations teams who scan long lists and need wider columns for key fields
- Sales users who want to see more of the customer name or order reference
- Warehouse staff who need compact columns to see more rows without scrolling
- Accountants who prefer wider amount or description columns in financial lists
- Any power user frustrated by Odoo's default equal-width column layout
Custom Development & Version Support
Need This Module for a Different Odoo Version?
We can adapt this module for any Odoo version you need.
Want Custom Features or Modifications?
We provide custom development services to enhance or modify this module for your specific workflow.
What We Can Do:
- Port to any Odoo version (14, 15, 16, 17, 18, 19)
- Add a reset-to-default button per view
- Admin panel to view/clear all user column configs
- Minimum and maximum column width constraints
- Column width presets / named layouts
- Export and import column layout profiles
Quick Turnaround:
- Fast development cycles
- Regular progress updates
- Quality assurance testing
- Documentation included
- Training and support
- Competitive pricing
devpybeans@gmail.com
Support & Warranty
90 Days FREE Support Included!
We provide 90 days of completely FREE support after module installation.
Bug Fixes
Free bug fixes and issue resolution for 90 days
Technical Support
Installation help and configuration assistance
Usage Guidance
Best practices and usage recommendations
Support Period: Starts from the date of module installation
Response Time: Within 24-48 hours on business days
Support Channels: Email, Contact Form, and Direct Communication
Contact Information
Ready to take control of your Odoo list view layouts? Get in touch with us!
Website Contact
www.pybeans.com
Contact Form
Developed by PyBeans - Enhancing Odoo for better business solutions.
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Lines of code | 114 |
| Technical Name |
resize_list_view_columns_pyb |
| License | LGPL-3 |
| Website | https://www.pybeans.com |
Please log in to comment on this module