diff --git a/list_view_sticky_header_and_column/README.rst b/list_view_sticky_header_and_column/README.rst new file mode 100644 index 000000000..b3e89bdab --- /dev/null +++ b/list_view_sticky_header_and_column/README.rst @@ -0,0 +1,50 @@ +.. image:: https://img.shields.io/badge/license-LGPL--3-green.svg + :target: https://www.gnu.org/licenses/lgpl-3.0-standalone.html + :alt: License: LGPL-3 + +Sticky Header And Column In List View +===================================== +* This module enhances Odoo list views by introducing sticky headers and columns. + +configuration +============= +Nothing to configure. + +License +======= +General Public License, Version 3 (LGPL v3). +(https://www.gnu.org/licenses/lgpl-3.0-standalone.html) + +Company +------- +* `Cybrosys Techno Solutions `__ + +Credits +------- +* Developers: (V18) Nivedhya T, + (V17) Shikhil Raj + Contact: odoo@cybrosys.com + +Contacts +-------- +* Mail Contact : odoo@cybrosys.com +* Website : https://cybrosys.com + +Bug Tracker +----------- +Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. + +Maintainer +========== +.. image:: https://cybrosys.com/images/logo.png + :target: https://cybrosys.com + +This module is maintained by Cybrosys Technologies. + +For support and more information, please visit https://www.cybrosys.com + +image:: https://cybrosys.com/images/logo.png + +Further information +=================== +HTML Description: ``__ diff --git a/list_view_sticky_header_and_column/__init__.py b/list_view_sticky_header_and_column/__init__.py new file mode 100644 index 000000000..d94b76c09 --- /dev/null +++ b/list_view_sticky_header_and_column/__init__.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2025-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# diff --git a/list_view_sticky_header_and_column/__manifest__.py b/list_view_sticky_header_and_column/__manifest__.py new file mode 100644 index 000000000..c32ac6ae2 --- /dev/null +++ b/list_view_sticky_header_and_column/__manifest__.py @@ -0,0 +1,48 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2025-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# +{ + 'name': "Sticky Header And Column In List View", + 'version': '18.0.1.0.0', + 'category': 'Extra Tools', + 'summary': """Enhance list views with sticky headers and columns for + improved navigation and readability.""", + 'description': """This module enhances Odoo list views by introducing sticky + headers and columns. When scrolling through long lists, the header and + selected columns remain visible, providing context and easy access to + column information. Users can interact with data more effectively without + losing track of column titles.""", + 'author': 'Cybrosys Techno Solutions', + 'company': 'Cybrosys Techno Solutions', + 'maintainer': 'Cybrosys Techno Solutions', + 'website': "https://www.cybrosys.com", + 'depends': ['account', 'purchase', 'hr_expense', 'web'], + 'assets': { + 'web.assets_backend': [ + ('after', 'web/static/src/views/list/list_renderer.xml', 'list_view_sticky_header_and_column/static/src/**/*'), + ], + }, + 'images': ['static/description/banner.jpg'], + 'license': 'LGPL-3', + 'installable': True, + 'application': False, + 'auto_install': False, +} diff --git a/list_view_sticky_header_and_column/doc/RELEASE_NOTES.md b/list_view_sticky_header_and_column/doc/RELEASE_NOTES.md new file mode 100755 index 000000000..741831e09 --- /dev/null +++ b/list_view_sticky_header_and_column/doc/RELEASE_NOTES.md @@ -0,0 +1,5 @@ +## Module +#### 16.06.2025 +#### Version 18.0.1.0.0 +#### ADD +- Initial commit for Sticky Header And Column In List View diff --git a/list_view_sticky_header_and_column/static/description/assets/cybro-icon.png b/list_view_sticky_header_and_column/static/description/assets/cybro-icon.png new file mode 100644 index 000000000..06e73e11d Binary files /dev/null and b/list_view_sticky_header_and_column/static/description/assets/cybro-icon.png differ diff --git a/list_view_sticky_header_and_column/static/description/assets/cybro-odoo.png b/list_view_sticky_header_and_column/static/description/assets/cybro-odoo.png new file mode 100644 index 000000000..ed02e07a4 Binary files /dev/null and b/list_view_sticky_header_and_column/static/description/assets/cybro-odoo.png differ diff --git a/list_view_sticky_header_and_column/static/description/assets/icons/arrows-repeat.svg b/list_view_sticky_header_and_column/static/description/assets/icons/arrows-repeat.svg new file mode 100644 index 000000000..1d7efabc5 --- /dev/null +++ b/list_view_sticky_header_and_column/static/description/assets/icons/arrows-repeat.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/list_view_sticky_header_and_column/static/description/assets/icons/banner-1.png b/list_view_sticky_header_and_column/static/description/assets/icons/banner-1.png new file mode 100644 index 000000000..c180db172 Binary files /dev/null and b/list_view_sticky_header_and_column/static/description/assets/icons/banner-1.png differ diff --git a/list_view_sticky_header_and_column/static/description/assets/icons/banner-2.svg b/list_view_sticky_header_and_column/static/description/assets/icons/banner-2.svg new file mode 100644 index 000000000..e606d97d9 --- /dev/null +++ b/list_view_sticky_header_and_column/static/description/assets/icons/banner-2.svg @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/list_view_sticky_header_and_column/static/description/assets/icons/banner-bg.png b/list_view_sticky_header_and_column/static/description/assets/icons/banner-bg.png new file mode 100644 index 000000000..a8238d3c0 Binary files /dev/null and b/list_view_sticky_header_and_column/static/description/assets/icons/banner-bg.png differ diff --git a/list_view_sticky_header_and_column/static/description/assets/icons/banner-bg.svg b/list_view_sticky_header_and_column/static/description/assets/icons/banner-bg.svg new file mode 100644 index 000000000..b1378103e --- /dev/null +++ b/list_view_sticky_header_and_column/static/description/assets/icons/banner-bg.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/list_view_sticky_header_and_column/static/description/assets/icons/banner-call.svg b/list_view_sticky_header_and_column/static/description/assets/icons/banner-call.svg new file mode 100644 index 000000000..96c687e81 --- /dev/null +++ b/list_view_sticky_header_and_column/static/description/assets/icons/banner-call.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/list_view_sticky_header_and_column/static/description/assets/icons/banner-mail.svg b/list_view_sticky_header_and_column/static/description/assets/icons/banner-mail.svg new file mode 100644 index 000000000..cbf0d158d --- /dev/null +++ b/list_view_sticky_header_and_column/static/description/assets/icons/banner-mail.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/list_view_sticky_header_and_column/static/description/assets/icons/banner-pattern.svg b/list_view_sticky_header_and_column/static/description/assets/icons/banner-pattern.svg new file mode 100644 index 000000000..9c1c7e101 --- /dev/null +++ b/list_view_sticky_header_and_column/static/description/assets/icons/banner-pattern.svg @@ -0,0 +1,343 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/list_view_sticky_header_and_column/static/description/assets/icons/banner-promo.svg b/list_view_sticky_header_and_column/static/description/assets/icons/banner-promo.svg new file mode 100644 index 000000000..d52791b11 --- /dev/null +++ b/list_view_sticky_header_and_column/static/description/assets/icons/banner-promo.svg @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/list_view_sticky_header_and_column/static/description/assets/icons/brand-pair.svg b/list_view_sticky_header_and_column/static/description/assets/icons/brand-pair.svg new file mode 100644 index 000000000..d8db7fc1e --- /dev/null +++ b/list_view_sticky_header_and_column/static/description/assets/icons/brand-pair.svg @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/list_view_sticky_header_and_column/static/description/assets/icons/check.png b/list_view_sticky_header_and_column/static/description/assets/icons/check.png new file mode 100644 index 000000000..c8e85f51d Binary files /dev/null and b/list_view_sticky_header_and_column/static/description/assets/icons/check.png differ diff --git a/list_view_sticky_header_and_column/static/description/assets/icons/chevron.png b/list_view_sticky_header_and_column/static/description/assets/icons/chevron.png new file mode 100644 index 000000000..2089293d6 Binary files /dev/null and b/list_view_sticky_header_and_column/static/description/assets/icons/chevron.png differ diff --git a/list_view_sticky_header_and_column/static/description/assets/icons/close-icon.svg b/list_view_sticky_header_and_column/static/description/assets/icons/close-icon.svg new file mode 100644 index 000000000..df8cce37a --- /dev/null +++ b/list_view_sticky_header_and_column/static/description/assets/icons/close-icon.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/list_view_sticky_header_and_column/static/description/assets/icons/cogs.png b/list_view_sticky_header_and_column/static/description/assets/icons/cogs.png new file mode 100644 index 000000000..95d0bad62 Binary files /dev/null and b/list_view_sticky_header_and_column/static/description/assets/icons/cogs.png differ diff --git a/list_view_sticky_header_and_column/static/description/assets/icons/collabarate-icon.svg b/list_view_sticky_header_and_column/static/description/assets/icons/collabarate-icon.svg new file mode 100644 index 000000000..dd4e10518 --- /dev/null +++ b/list_view_sticky_header_and_column/static/description/assets/icons/collabarate-icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/list_view_sticky_header_and_column/static/description/assets/icons/consultation.png b/list_view_sticky_header_and_column/static/description/assets/icons/consultation.png new file mode 100644 index 000000000..8319d4baa Binary files /dev/null and b/list_view_sticky_header_and_column/static/description/assets/icons/consultation.png differ diff --git a/list_view_sticky_header_and_column/static/description/assets/icons/cybro-logo.png b/list_view_sticky_header_and_column/static/description/assets/icons/cybro-logo.png new file mode 100644 index 000000000..ff4b78220 Binary files /dev/null and b/list_view_sticky_header_and_column/static/description/assets/icons/cybro-logo.png differ diff --git a/list_view_sticky_header_and_column/static/description/assets/icons/down.svg b/list_view_sticky_header_and_column/static/description/assets/icons/down.svg new file mode 100644 index 000000000..f21c36271 --- /dev/null +++ b/list_view_sticky_header_and_column/static/description/assets/icons/down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/list_view_sticky_header_and_column/static/description/assets/icons/ecom-black.png b/list_view_sticky_header_and_column/static/description/assets/icons/ecom-black.png new file mode 100644 index 000000000..a9385ff13 Binary files /dev/null and b/list_view_sticky_header_and_column/static/description/assets/icons/ecom-black.png differ diff --git a/list_view_sticky_header_and_column/static/description/assets/icons/education-black.png b/list_view_sticky_header_and_column/static/description/assets/icons/education-black.png new file mode 100644 index 000000000..3eb09b27b Binary files /dev/null and b/list_view_sticky_header_and_column/static/description/assets/icons/education-black.png differ diff --git a/list_view_sticky_header_and_column/static/description/assets/icons/faq.png b/list_view_sticky_header_and_column/static/description/assets/icons/faq.png new file mode 100644 index 000000000..4250b5b81 Binary files /dev/null and b/list_view_sticky_header_and_column/static/description/assets/icons/faq.png differ diff --git a/list_view_sticky_header_and_column/static/description/assets/icons/feature-icon.svg b/list_view_sticky_header_and_column/static/description/assets/icons/feature-icon.svg new file mode 100644 index 000000000..fa0ea6850 --- /dev/null +++ b/list_view_sticky_header_and_column/static/description/assets/icons/feature-icon.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/list_view_sticky_header_and_column/static/description/assets/icons/feature.png b/list_view_sticky_header_and_column/static/description/assets/icons/feature.png new file mode 100644 index 000000000..ac7a785c0 Binary files /dev/null and b/list_view_sticky_header_and_column/static/description/assets/icons/feature.png differ diff --git a/list_view_sticky_header_and_column/static/description/assets/icons/gear.svg b/list_view_sticky_header_and_column/static/description/assets/icons/gear.svg new file mode 100644 index 000000000..0cc66b6ea --- /dev/null +++ b/list_view_sticky_header_and_column/static/description/assets/icons/gear.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/list_view_sticky_header_and_column/static/description/assets/icons/hero.gif b/list_view_sticky_header_and_column/static/description/assets/icons/hero.gif new file mode 100644 index 000000000..845e1c6c9 Binary files /dev/null and b/list_view_sticky_header_and_column/static/description/assets/icons/hero.gif differ diff --git a/list_view_sticky_header_and_column/static/description/assets/icons/hire-odoo.svg b/list_view_sticky_header_and_column/static/description/assets/icons/hire-odoo.svg new file mode 100644 index 000000000..e1ac089b0 --- /dev/null +++ b/list_view_sticky_header_and_column/static/description/assets/icons/hire-odoo.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/list_view_sticky_header_and_column/static/description/assets/icons/hotel-black.png b/list_view_sticky_header_and_column/static/description/assets/icons/hotel-black.png new file mode 100644 index 000000000..130f613be Binary files /dev/null and b/list_view_sticky_header_and_column/static/description/assets/icons/hotel-black.png differ diff --git a/list_view_sticky_header_and_column/static/description/assets/icons/license.png b/list_view_sticky_header_and_column/static/description/assets/icons/license.png new file mode 100644 index 000000000..a5869797e Binary files /dev/null and b/list_view_sticky_header_and_column/static/description/assets/icons/license.png differ diff --git a/list_view_sticky_header_and_column/static/description/assets/icons/life-ring-icon.svg b/list_view_sticky_header_and_column/static/description/assets/icons/life-ring-icon.svg new file mode 100644 index 000000000..3ae6e1d89 --- /dev/null +++ b/list_view_sticky_header_and_column/static/description/assets/icons/life-ring-icon.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/list_view_sticky_header_and_column/static/description/assets/icons/lifebuoy.png b/list_view_sticky_header_and_column/static/description/assets/icons/lifebuoy.png new file mode 100644 index 000000000..658d56ccc Binary files /dev/null and b/list_view_sticky_header_and_column/static/description/assets/icons/lifebuoy.png differ diff --git a/list_view_sticky_header_and_column/static/description/assets/icons/mail.svg b/list_view_sticky_header_and_column/static/description/assets/icons/mail.svg new file mode 100644 index 000000000..1eedde695 --- /dev/null +++ b/list_view_sticky_header_and_column/static/description/assets/icons/mail.svg @@ -0,0 +1,3 @@ + + + diff --git a/list_view_sticky_header_and_column/static/description/assets/icons/manufacturing-black.png b/list_view_sticky_header_and_column/static/description/assets/icons/manufacturing-black.png new file mode 100644 index 000000000..697eb0e9f Binary files /dev/null and b/list_view_sticky_header_and_column/static/description/assets/icons/manufacturing-black.png differ diff --git a/list_view_sticky_header_and_column/static/description/assets/icons/notes.png b/list_view_sticky_header_and_column/static/description/assets/icons/notes.png new file mode 100644 index 000000000..ee5e95404 Binary files /dev/null and b/list_view_sticky_header_and_column/static/description/assets/icons/notes.png differ diff --git a/list_view_sticky_header_and_column/static/description/assets/icons/notification icon.svg b/list_view_sticky_header_and_column/static/description/assets/icons/notification icon.svg new file mode 100644 index 000000000..053189973 --- /dev/null +++ b/list_view_sticky_header_and_column/static/description/assets/icons/notification icon.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/list_view_sticky_header_and_column/static/description/assets/icons/odoo-consultancy.svg b/list_view_sticky_header_and_column/static/description/assets/icons/odoo-consultancy.svg new file mode 100644 index 000000000..e05f65bde --- /dev/null +++ b/list_view_sticky_header_and_column/static/description/assets/icons/odoo-consultancy.svg @@ -0,0 +1,4 @@ + + + + diff --git a/list_view_sticky_header_and_column/static/description/assets/icons/odoo-licencing.svg b/list_view_sticky_header_and_column/static/description/assets/icons/odoo-licencing.svg new file mode 100644 index 000000000..2606c88b0 --- /dev/null +++ b/list_view_sticky_header_and_column/static/description/assets/icons/odoo-licencing.svg @@ -0,0 +1,3 @@ + + + diff --git a/list_view_sticky_header_and_column/static/description/assets/icons/odoo-logo.png b/list_view_sticky_header_and_column/static/description/assets/icons/odoo-logo.png new file mode 100644 index 000000000..0e4d0eb5a Binary files /dev/null and b/list_view_sticky_header_and_column/static/description/assets/icons/odoo-logo.png differ diff --git a/list_view_sticky_header_and_column/static/description/assets/icons/patter.svg b/list_view_sticky_header_and_column/static/description/assets/icons/patter.svg new file mode 100644 index 000000000..25c9c0a8f --- /dev/null +++ b/list_view_sticky_header_and_column/static/description/assets/icons/patter.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/list_view_sticky_header_and_column/static/description/assets/icons/pattern1.png b/list_view_sticky_header_and_column/static/description/assets/icons/pattern1.png new file mode 100644 index 000000000..09ab0fb2d Binary files /dev/null and b/list_view_sticky_header_and_column/static/description/assets/icons/pattern1.png differ diff --git a/list_view_sticky_header_and_column/static/description/assets/icons/pos-black.png b/list_view_sticky_header_and_column/static/description/assets/icons/pos-black.png new file mode 100644 index 000000000..97c0f90c1 Binary files /dev/null and b/list_view_sticky_header_and_column/static/description/assets/icons/pos-black.png differ diff --git a/list_view_sticky_header_and_column/static/description/assets/icons/puzzle-piece-icon.svg b/list_view_sticky_header_and_column/static/description/assets/icons/puzzle-piece-icon.svg new file mode 100644 index 000000000..3e9ad9373 --- /dev/null +++ b/list_view_sticky_header_and_column/static/description/assets/icons/puzzle-piece-icon.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/list_view_sticky_header_and_column/static/description/assets/icons/puzzle.png b/list_view_sticky_header_and_column/static/description/assets/icons/puzzle.png new file mode 100644 index 000000000..65cf854e7 Binary files /dev/null and b/list_view_sticky_header_and_column/static/description/assets/icons/puzzle.png differ diff --git a/list_view_sticky_header_and_column/static/description/assets/icons/replace-icon.svg b/list_view_sticky_header_and_column/static/description/assets/icons/replace-icon.svg new file mode 100644 index 000000000..d0e3a7af1 --- /dev/null +++ b/list_view_sticky_header_and_column/static/description/assets/icons/replace-icon.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/list_view_sticky_header_and_column/static/description/assets/icons/restaurant-black.png b/list_view_sticky_header_and_column/static/description/assets/icons/restaurant-black.png new file mode 100644 index 000000000..4a35eb939 Binary files /dev/null and b/list_view_sticky_header_and_column/static/description/assets/icons/restaurant-black.png differ diff --git a/list_view_sticky_header_and_column/static/description/assets/icons/screenshot-main.png b/list_view_sticky_header_and_column/static/description/assets/icons/screenshot-main.png new file mode 100644 index 000000000..575f8e676 Binary files /dev/null and b/list_view_sticky_header_and_column/static/description/assets/icons/screenshot-main.png differ diff --git a/list_view_sticky_header_and_column/static/description/assets/icons/screenshot.png b/list_view_sticky_header_and_column/static/description/assets/icons/screenshot.png new file mode 100644 index 000000000..cef272529 Binary files /dev/null and b/list_view_sticky_header_and_column/static/description/assets/icons/screenshot.png differ diff --git a/list_view_sticky_header_and_column/static/description/assets/icons/service-black.png b/list_view_sticky_header_and_column/static/description/assets/icons/service-black.png new file mode 100644 index 000000000..301ab51cb Binary files /dev/null and b/list_view_sticky_header_and_column/static/description/assets/icons/service-black.png differ diff --git a/list_view_sticky_header_and_column/static/description/assets/icons/skype-fill.svg b/list_view_sticky_header_and_column/static/description/assets/icons/skype-fill.svg new file mode 100644 index 000000000..c17423639 --- /dev/null +++ b/list_view_sticky_header_and_column/static/description/assets/icons/skype-fill.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/list_view_sticky_header_and_column/static/description/assets/icons/skype.png b/list_view_sticky_header_and_column/static/description/assets/icons/skype.png new file mode 100644 index 000000000..51b409fb3 Binary files /dev/null and b/list_view_sticky_header_and_column/static/description/assets/icons/skype.png differ diff --git a/list_view_sticky_header_and_column/static/description/assets/icons/skype.svg b/list_view_sticky_header_and_column/static/description/assets/icons/skype.svg new file mode 100644 index 000000000..df3dad39b --- /dev/null +++ b/list_view_sticky_header_and_column/static/description/assets/icons/skype.svg @@ -0,0 +1,3 @@ + + + diff --git a/list_view_sticky_header_and_column/static/description/assets/icons/star-1.svg b/list_view_sticky_header_and_column/static/description/assets/icons/star-1.svg new file mode 100644 index 000000000..7e55ab162 --- /dev/null +++ b/list_view_sticky_header_and_column/static/description/assets/icons/star-1.svg @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/list_view_sticky_header_and_column/static/description/assets/icons/star-2.svg b/list_view_sticky_header_and_column/static/description/assets/icons/star-2.svg new file mode 100644 index 000000000..5ae9f507a --- /dev/null +++ b/list_view_sticky_header_and_column/static/description/assets/icons/star-2.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/list_view_sticky_header_and_column/static/description/assets/icons/support.png b/list_view_sticky_header_and_column/static/description/assets/icons/support.png new file mode 100644 index 000000000..4f18b8b82 Binary files /dev/null and b/list_view_sticky_header_and_column/static/description/assets/icons/support.png differ diff --git a/list_view_sticky_header_and_column/static/description/assets/icons/test-1 - Copy.png b/list_view_sticky_header_and_column/static/description/assets/icons/test-1 - Copy.png new file mode 100644 index 000000000..f6a902663 Binary files /dev/null and b/list_view_sticky_header_and_column/static/description/assets/icons/test-1 - Copy.png differ diff --git a/list_view_sticky_header_and_column/static/description/assets/icons/test-1.png b/list_view_sticky_header_and_column/static/description/assets/icons/test-1.png new file mode 100644 index 000000000..0908add2b Binary files /dev/null and b/list_view_sticky_header_and_column/static/description/assets/icons/test-1.png differ diff --git a/list_view_sticky_header_and_column/static/description/assets/icons/test-2.png b/list_view_sticky_header_and_column/static/description/assets/icons/test-2.png new file mode 100644 index 000000000..4671fe91e Binary files /dev/null and b/list_view_sticky_header_and_column/static/description/assets/icons/test-2.png differ diff --git a/list_view_sticky_header_and_column/static/description/assets/icons/trading-black.png b/list_view_sticky_header_and_column/static/description/assets/icons/trading-black.png new file mode 100644 index 000000000..9398ba2f1 Binary files /dev/null and b/list_view_sticky_header_and_column/static/description/assets/icons/trading-black.png differ diff --git a/list_view_sticky_header_and_column/static/description/assets/icons/training.png b/list_view_sticky_header_and_column/static/description/assets/icons/training.png new file mode 100644 index 000000000..884ca024d Binary files /dev/null and b/list_view_sticky_header_and_column/static/description/assets/icons/training.png differ diff --git a/list_view_sticky_header_and_column/static/description/assets/icons/translate.svg b/list_view_sticky_header_and_column/static/description/assets/icons/translate.svg new file mode 100644 index 000000000..af9c8a1aa --- /dev/null +++ b/list_view_sticky_header_and_column/static/description/assets/icons/translate.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/list_view_sticky_header_and_column/static/description/assets/icons/update.png b/list_view_sticky_header_and_column/static/description/assets/icons/update.png new file mode 100644 index 000000000..ecbc5a01a Binary files /dev/null and b/list_view_sticky_header_and_column/static/description/assets/icons/update.png differ diff --git a/list_view_sticky_header_and_column/static/description/assets/icons/user.png b/list_view_sticky_header_and_column/static/description/assets/icons/user.png new file mode 100644 index 000000000..6ffb23d9f Binary files /dev/null and b/list_view_sticky_header_and_column/static/description/assets/icons/user.png differ diff --git a/list_view_sticky_header_and_column/static/description/assets/icons/video.png b/list_view_sticky_header_and_column/static/description/assets/icons/video.png new file mode 100644 index 000000000..576705b17 Binary files /dev/null and b/list_view_sticky_header_and_column/static/description/assets/icons/video.png differ diff --git a/list_view_sticky_header_and_column/static/description/assets/icons/whatsapp.png b/list_view_sticky_header_and_column/static/description/assets/icons/whatsapp.png new file mode 100644 index 000000000..d513a5356 Binary files /dev/null and b/list_view_sticky_header_and_column/static/description/assets/icons/whatsapp.png differ diff --git a/list_view_sticky_header_and_column/static/description/assets/icons/wrench-icon.svg b/list_view_sticky_header_and_column/static/description/assets/icons/wrench-icon.svg new file mode 100644 index 000000000..174b5a465 --- /dev/null +++ b/list_view_sticky_header_and_column/static/description/assets/icons/wrench-icon.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/list_view_sticky_header_and_column/static/description/assets/icons/wrench.png b/list_view_sticky_header_and_column/static/description/assets/icons/wrench.png new file mode 100644 index 000000000..6c04dea0f Binary files /dev/null and b/list_view_sticky_header_and_column/static/description/assets/icons/wrench.png differ diff --git a/list_view_sticky_header_and_column/static/description/assets/modules/b1.png b/list_view_sticky_header_and_column/static/description/assets/modules/b1.png new file mode 100644 index 000000000..6e617f3d3 Binary files /dev/null and b/list_view_sticky_header_and_column/static/description/assets/modules/b1.png differ diff --git a/list_view_sticky_header_and_column/static/description/assets/modules/b2.png b/list_view_sticky_header_and_column/static/description/assets/modules/b2.png new file mode 100644 index 000000000..696582fa8 Binary files /dev/null and b/list_view_sticky_header_and_column/static/description/assets/modules/b2.png differ diff --git a/list_view_sticky_header_and_column/static/description/assets/modules/b3.png b/list_view_sticky_header_and_column/static/description/assets/modules/b3.png new file mode 100644 index 000000000..cf81c09f8 Binary files /dev/null and b/list_view_sticky_header_and_column/static/description/assets/modules/b3.png differ diff --git a/list_view_sticky_header_and_column/static/description/assets/modules/b4.png b/list_view_sticky_header_and_column/static/description/assets/modules/b4.png new file mode 100644 index 000000000..206e14c47 Binary files /dev/null and b/list_view_sticky_header_and_column/static/description/assets/modules/b4.png differ diff --git a/list_view_sticky_header_and_column/static/description/assets/modules/b5.png b/list_view_sticky_header_and_column/static/description/assets/modules/b5.png new file mode 100644 index 000000000..1b0ce4674 Binary files /dev/null and b/list_view_sticky_header_and_column/static/description/assets/modules/b5.png differ diff --git a/list_view_sticky_header_and_column/static/description/assets/modules/b6.png b/list_view_sticky_header_and_column/static/description/assets/modules/b6.png new file mode 100644 index 000000000..0249a98f1 Binary files /dev/null and b/list_view_sticky_header_and_column/static/description/assets/modules/b6.png differ diff --git a/list_view_sticky_header_and_column/static/description/assets/screenshots/screenshot1.png b/list_view_sticky_header_and_column/static/description/assets/screenshots/screenshot1.png new file mode 100644 index 000000000..14d471722 Binary files /dev/null and b/list_view_sticky_header_and_column/static/description/assets/screenshots/screenshot1.png differ diff --git a/list_view_sticky_header_and_column/static/description/assets/screenshots/screenshot2.png b/list_view_sticky_header_and_column/static/description/assets/screenshots/screenshot2.png new file mode 100644 index 000000000..9f83f047a Binary files /dev/null and b/list_view_sticky_header_and_column/static/description/assets/screenshots/screenshot2.png differ diff --git a/list_view_sticky_header_and_column/static/description/assets/screenshots/screenshot3.png b/list_view_sticky_header_and_column/static/description/assets/screenshots/screenshot3.png new file mode 100644 index 000000000..fc5a1c504 Binary files /dev/null and b/list_view_sticky_header_and_column/static/description/assets/screenshots/screenshot3.png differ diff --git a/list_view_sticky_header_and_column/static/description/banner.jpg b/list_view_sticky_header_and_column/static/description/banner.jpg new file mode 100644 index 000000000..ace7b000f Binary files /dev/null and b/list_view_sticky_header_and_column/static/description/banner.jpg differ diff --git a/list_view_sticky_header_and_column/static/description/icon.png b/list_view_sticky_header_and_column/static/description/icon.png new file mode 100644 index 000000000..374fae921 Binary files /dev/null and b/list_view_sticky_header_and_column/static/description/icon.png differ diff --git a/list_view_sticky_header_and_column/static/description/index.html b/list_view_sticky_header_and_column/static/description/index.html new file mode 100644 index 000000000..2df398177 --- /dev/null +++ b/list_view_sticky_header_and_column/static/description/index.html @@ -0,0 +1,918 @@ + + + + + + Sticky Header And Column In List View + + + + + + + + + + +
+
+ + + +
+
+ Community +
+
+ Enterprise +
+
+
+ +
+
+
+
+

+ Enhance List Views With Sticky Headers And Columns For + Improved Navigation And Readability. +

+

Sticky Header And Column In List View +

+
+
+ +
+ +
+ +
+
+
+ +
+
+ +
+
+ +
+
+
+

Key + Highlights

+
+
+
+
+ +
+
+ Community & Enterprise Support. +
+

Available in Odoo 18.0 Community and Enterprise. +

+
+
+
+
+
+ +
+
+ Enhanced Data Visibility +
+

+

+
+
+
+
+
+ +
+
+ Support for Different Modules. +
+

+

+
+
+
+
+ +
+
+
+ Sticky Header And Column In List View +

+ Are you ready to make your business more + organized? +
Improve now! +

+ +
+
+ +
+
+
+ + + + +
+
+ +
+
+
+
+ acc_bg +
+ +
+
+
+
+

+ select the + + sticky column +

+
+
+

+ Click the pin icon in the list view headers to select the sticky column. + Clicking on a column outside the pinned area will unselect the sticky header. +

+
+
+
+ +
+
+
+
+
+
+
+

+ scroll + + horizontally +

+
+
+

+ As you scroll horizontally, you will notice that the pinned records and header row remain in place, + maintaining visibility. +

+
+
+
+ +
+
+
+
+
+
+
+

+ Vertical + + scrolling +

+
+
+

+ Upon vertical scrolling through a list of records, the header row of the table remains sticky. +

+
+
+
+ +
+
+
+
+
+
+
+
+ +
+
+
+
+ +
+

+ Community & Enterprise Support.

+
+ +
+
+
+
+
+
+ +
+

+ The module introduces sticky headers and columns to Odoo's list view.

+
+ +
+
+
+
+
+
+ +
+

+ Enhanced Data Visibility.

+
+ +
+
+
+
+
+
+ +
+

+ Support for Different Modules.

+
+
+
+
+
+
+
+
+
+
+ +
+ +
+ +
+

+ Only the list (tree) views + are affected. Kanban, form, + or calendar views remain unchanged. +

+
+
+ +
+ +
+

+ It adds sticky headers and + sticky columns to list views + in Odoo, so key column labels + and data stay visible while scrolling. +

+
+
+
+ +
+
+
+
+
+
+ +
+
+

+ Latest Release 18.0.1.0.0 +

+ + 16th June, 2025 + +
+
+
+
+
+ Add +
+
+
+
    +
  • + Initial Commit +
  • +
+
+
+
+
+
+
+
+
+
+ + + +
+

+ Related Products +

+ +
+ +
+

+ Our Services

+ +
+ +
+
+ .... +
+
+ +
+ + +
+
+ + + + + + diff --git a/list_view_sticky_header_and_column/static/src/js/list_view_sticky_header_and_column.js b/list_view_sticky_header_and_column/static/src/js/list_view_sticky_header_and_column.js new file mode 100755 index 000000000..d6e2a363c --- /dev/null +++ b/list_view_sticky_header_and_column/static/src/js/list_view_sticky_header_and_column.js @@ -0,0 +1,101 @@ +/** @odoo-module **/ +/** This file will used to stick the selected header and column in the list view **/ +import { patch } from "@web/core/utils/patch"; +import { ListRenderer } from "@web/views/list/list_renderer"; + +patch(ListRenderer.prototype, { + setup() { + super.setup(); + }, + /** + * function defining the button having t-on-click _onClick + */ + _onClickIcon(ev, column) { + ev.preventDefault(); + ev.stopPropagation(); + const clickedHeader = ev.currentTarget.closest('th'); + const columnIndex = Array.from(clickedHeader.parentNode.children).indexOf(clickedHeader); + console.log(this.__owl__.bdom.parentEl); + // Remove 'sticky-column' and 'clicked-header' classes from relevant elements + const stickyColumns = this.__owl__.bdom.parentEl.querySelectorAll('.sticky-column'); + stickyColumns.forEach(el => el.classList.remove('sticky-column')); + const clickedHeaders = this.__owl__.bdom.parentEl.querySelectorAll('.clicked-header'); + clickedHeaders.forEach(el => el.classList.remove('clicked-header')); + + // Add 'clicked-header' class to the clicked header + clickedHeader.classList.add('clicked-header'); + + // Select table headers, rows, and footer + const tableHeaders = this.__owl__.bdom.parentEl.querySelectorAll('.o_list_table th'); + const tableRows = this.__owl__.bdom.parentEl.querySelectorAll('.o_list_table tr'); + const tfootRowCells = this.__owl__.bdom.parentEl.querySelector('.o_list_table tfoot tr')?.children || []; + + // Select footer cells up to columnIndex (inclusive) + const selectedFooterCells = Array.from(tfootRowCells).slice(0, columnIndex + 1); + selectedFooterCells.forEach(cell => cell.classList.add('sticky-column')); + + // Select data row cells and header cells up to columnIndex (inclusive) + const selectedColumns = this.__owl__.bdom.parentEl.querySelectorAll( + `.o_data_row td:nth-child(-n+${columnIndex + 1})` + ); + const selectedHeaderCells = Array.from(tableHeaders).slice(0, columnIndex + 1); + + // Remove 'sticky-column' class and 'left' style from all headers and data cells + tableHeaders.forEach(header => { + header.classList.remove('sticky-column'); + header.style.left = ''; + }); + this.__owl__.bdom.parentEl.querySelectorAll('.o_data_row td').forEach(cell => { + cell.classList.remove('sticky-column'); + cell.style.left = ''; + }); + + // Add 'sticky-column' class to selected columns and headers + selectedColumns.forEach(cell => cell.classList.add('sticky-column')); + selectedHeaderCells.forEach(header => header.classList.add('sticky-column')); + + this.__owl__.bdom.parentEl.querySelectorAll('.sticky-column').forEach(el => { + if (el.tagName === 'TH') { + el.style.top = '0'; + } + }); + + // Calculate left position for the target column + const targetColumn = Array.from(selectedColumns).find( + (el, idx) => idx % (columnIndex + 1) === columnIndex + ); + const targetLeftPosition = targetColumn ? targetColumn.getBoundingClientRect().left - this.__owl__.bdom.parentEl.getBoundingClientRect().left : 0; + + // Adjust left position for sticky columns in headers and rows + const columnsToAdjust = columnIndex + 1; + tableRows.forEach(row => { + const headerCells = row.querySelectorAll('th'); + const rowCells = row.querySelectorAll('td'); + for (let i = 0; i < columnsToAdjust; i++) { + if (headerCells[i]) { + const leftPos = headerCells[i].getBoundingClientRect().left - this.__owl__.bdom.parentEl.getBoundingClientRect().left; + headerCells[i].style.left = `${leftPos}px`; + } + if (rowCells[i]) { + const leftPos = rowCells[i].getBoundingClientRect().left - this.__owl__.bdom.parentEl.getBoundingClientRect().left; + rowCells[i].style.left = `${leftPos}px`; + } + } + }); + }, + /** + * super onClickSortColumn function and remove the icon and element having the class sticky-column + */ + onClickSortColumn(column) { + super.onClickSortColumn(...arguments); + const stickyColumns = this.__owl__.bdom.parentEl.querySelectorAll('.sticky-column'); + stickyColumns.forEach(el => el.classList.remove('sticky-column')); + const clickedHeaders = this.__owl__.bdom.parentEl.querySelectorAll('.clicked-header'); + clickedHeaders.forEach(el => el.classList.remove('clicked-header')); + const tableHeaders = this.__owl__.bdom.parentEl.querySelectorAll('.o_list_table th'); + tableHeaders.forEach(header => { + header.classList.remove('sticky-column'); + header.style.left = ''; + }); + }, +}); diff --git a/list_view_sticky_header_and_column/static/src/scss/list_view_sticky_header_and_column.scss b/list_view_sticky_header_and_column/static/src/scss/list_view_sticky_header_and_column.scss new file mode 100755 index 000000000..463d2de99 --- /dev/null +++ b/list_view_sticky_header_and_column/static/src/scss/list_view_sticky_header_and_column.scss @@ -0,0 +1,52 @@ +.sticky-column { + position: sticky !important; + background-color: white; + z-index: 2; +} +.o_list_view .o_list_table td.sticky-column { + z-index: 4; + background-color: white; +} +.o_list_view .o_list_table thead { + position: sticky; + top: 0; + z-index: 3; + background-color: white; +} +.o_list_view .o_list_table th.sticky-column { + z-index: 4; + background-color: white; +} +.o_account_reports_page .table-responsive { + overflow-x: auto; + overflow-y: visible; +} +.table-responsive { + overflow: visible; +} +.o_list_view .table-responsive .table thead { + z-index: 5; +} +.o_list_renderer .o_list_table thead { + position: sticky; + top: 0; + z-index: 6; +} +th.sticky-column::before { + content: ""; + position: absolute; + width: 5px; + height: 100%; + background: white; + top: 0; + left: -4px; +} +.fa-thumb-tack { + display: none; +} + +th:hover .fa-thumb-tack, +th.clicked-header .fa-thumb-tack { + display: block; +} + diff --git a/list_view_sticky_header_and_column/static/src/xml/list_view_sticky_header_and_column.xml b/list_view_sticky_header_and_column/static/src/xml/list_view_sticky_header_and_column.xml new file mode 100755 index 000000000..6871dc310 --- /dev/null +++ b/list_view_sticky_header_and_column/static/src/xml/list_view_sticky_header_and_column.xml @@ -0,0 +1,15 @@ + + + + + + + + +