diff --git a/responsive_web/README.rst b/responsive_web/README.rst new file mode 100644 index 000000000..a0e9ed4fe --- /dev/null +++ b/responsive_web/README.rst @@ -0,0 +1,48 @@ +.. image:: https://img.shields.io/badge/license-AGPL--3-blue.svg + :target: https://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 + +Web Responsive +============== +This module adds responsiveness to web backend. + +Configuration +============= +* No additional configurations needed + +Company +------- +* `Cybrosys Techno Solutions `__ + +License +------- +Affero General Public License v3.0 (AGPL v3) +(https://www.gnu.org/licenses/agpl-3.0-standalone.html) + +Credits +------- +* Developers: (V16) Ramees Jaman, + (V17) Jumana Jabin MP , Vyshnav AR +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 `Our Website `__ + +Further information +=================== +HTML Description: ``__ diff --git a/responsive_web/__init__.py b/responsive_web/__init__.py new file mode 100644 index 000000000..fbed008e5 --- /dev/null +++ b/responsive_web/__init__.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Jumana Jabin MP(odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL 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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################### diff --git a/responsive_web/__manifest__.py b/responsive_web/__manifest__.py new file mode 100644 index 000000000..67b51bdf7 --- /dev/null +++ b/responsive_web/__manifest__.py @@ -0,0 +1,56 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Jumana Jabin MP(odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL 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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################### +{ + 'name': "Web Responsive", + 'version': '17.0.1.0.0', + 'category': 'Extra Tools', + 'summary': 'This module helps to create enterprise like app drawer,' + 'Responsiveness and sticky headers included.', + 'description': """This module helps to create enterprise like app drawer, + Responsiveness and sticky headers included.""", + 'author': 'Cybrosys Techno Solutions', + 'company': 'Cybrosys Techno Solutions', + 'maintainer': 'Cybrosys Techno Solutions', + 'website': 'https://www.cybrosys.com', + 'depends': ['base', 'web', 'mail'], + 'data': [ + 'views/responsive_web_menus.xml', + ], + 'assets': { + 'web.assets_backend': [ + 'responsive_web/static/src/css/main_menu.css', + 'responsive_web/static/src/css/sticky.css', + 'responsive_web/static/src/xml/WebMenu.xml', + 'responsive_web/static/src/xml/PivotCustom.xml', + 'responsive_web/static/src/js/WebMenu.js', + 'responsive_web/static/src/xml/SearchResult.xml', + 'responsive_web/static/src/xml/ResponsiveWebTemplates.xml', + 'responsive_web/static/src/js/SearchResult.js', + 'responsive_web/static/src/js/ResponsiveWeb.js', + ] + }, + 'images': ['static/description/banner.jpg'], + 'license': 'AGPL-3', + 'installable': True, + 'auto_install': False, + 'application': False, +} diff --git a/responsive_web/doc/RELEASE_NOTES.md b/responsive_web/doc/RELEASE_NOTES.md new file mode 100644 index 000000000..fcaf7e4ef --- /dev/null +++ b/responsive_web/doc/RELEASE_NOTES.md @@ -0,0 +1,5 @@ +## Module +#### 04.09.2024 +#### Version 17.0.1.0.0 +#### ADD +- Initial commit for Web Responsive diff --git a/responsive_web/static/description/assets/icons/capture (1).png b/responsive_web/static/description/assets/icons/capture (1).png new file mode 100644 index 000000000..8824deafc Binary files /dev/null and b/responsive_web/static/description/assets/icons/capture (1).png differ diff --git a/responsive_web/static/description/assets/icons/check.png b/responsive_web/static/description/assets/icons/check.png new file mode 100644 index 000000000..c8e85f51d Binary files /dev/null and b/responsive_web/static/description/assets/icons/check.png differ diff --git a/responsive_web/static/description/assets/icons/chevron.png b/responsive_web/static/description/assets/icons/chevron.png new file mode 100644 index 000000000..2089293d6 Binary files /dev/null and b/responsive_web/static/description/assets/icons/chevron.png differ diff --git a/responsive_web/static/description/assets/icons/cogs.png b/responsive_web/static/description/assets/icons/cogs.png new file mode 100644 index 000000000..95d0bad62 Binary files /dev/null and b/responsive_web/static/description/assets/icons/cogs.png differ diff --git a/responsive_web/static/description/assets/icons/consultation.png b/responsive_web/static/description/assets/icons/consultation.png new file mode 100644 index 000000000..8319d4baa Binary files /dev/null and b/responsive_web/static/description/assets/icons/consultation.png differ diff --git a/responsive_web/static/description/assets/icons/ecom-black.png b/responsive_web/static/description/assets/icons/ecom-black.png new file mode 100644 index 000000000..a9385ff13 Binary files /dev/null and b/responsive_web/static/description/assets/icons/ecom-black.png differ diff --git a/responsive_web/static/description/assets/icons/education-black.png b/responsive_web/static/description/assets/icons/education-black.png new file mode 100644 index 000000000..3eb09b27b Binary files /dev/null and b/responsive_web/static/description/assets/icons/education-black.png differ diff --git a/responsive_web/static/description/assets/icons/hotel-black.png b/responsive_web/static/description/assets/icons/hotel-black.png new file mode 100644 index 000000000..130f613be Binary files /dev/null and b/responsive_web/static/description/assets/icons/hotel-black.png differ diff --git a/responsive_web/static/description/assets/icons/img.png b/responsive_web/static/description/assets/icons/img.png new file mode 100644 index 000000000..70197f477 Binary files /dev/null and b/responsive_web/static/description/assets/icons/img.png differ diff --git a/responsive_web/static/description/assets/icons/license.png b/responsive_web/static/description/assets/icons/license.png new file mode 100644 index 000000000..a5869797e Binary files /dev/null and b/responsive_web/static/description/assets/icons/license.png differ diff --git a/responsive_web/static/description/assets/icons/lifebuoy.png b/responsive_web/static/description/assets/icons/lifebuoy.png new file mode 100644 index 000000000..658d56ccc Binary files /dev/null and b/responsive_web/static/description/assets/icons/lifebuoy.png differ diff --git a/responsive_web/static/description/assets/icons/manufacturing-black.png b/responsive_web/static/description/assets/icons/manufacturing-black.png new file mode 100644 index 000000000..697eb0e9f Binary files /dev/null and b/responsive_web/static/description/assets/icons/manufacturing-black.png differ diff --git a/responsive_web/static/description/assets/icons/photo-capture.png b/responsive_web/static/description/assets/icons/photo-capture.png new file mode 100644 index 000000000..06c111758 Binary files /dev/null and b/responsive_web/static/description/assets/icons/photo-capture.png differ diff --git a/responsive_web/static/description/assets/icons/pos-black.png b/responsive_web/static/description/assets/icons/pos-black.png new file mode 100644 index 000000000..97c0f90c1 Binary files /dev/null and b/responsive_web/static/description/assets/icons/pos-black.png differ diff --git a/responsive_web/static/description/assets/icons/puzzle.png b/responsive_web/static/description/assets/icons/puzzle.png new file mode 100644 index 000000000..65cf854e7 Binary files /dev/null and b/responsive_web/static/description/assets/icons/puzzle.png differ diff --git a/responsive_web/static/description/assets/icons/restaurant-black.png b/responsive_web/static/description/assets/icons/restaurant-black.png new file mode 100644 index 000000000..4a35eb939 Binary files /dev/null and b/responsive_web/static/description/assets/icons/restaurant-black.png differ diff --git a/responsive_web/static/description/assets/icons/service-black.png b/responsive_web/static/description/assets/icons/service-black.png new file mode 100644 index 000000000..301ab51cb Binary files /dev/null and b/responsive_web/static/description/assets/icons/service-black.png differ diff --git a/responsive_web/static/description/assets/icons/trading-black.png b/responsive_web/static/description/assets/icons/trading-black.png new file mode 100644 index 000000000..9398ba2f1 Binary files /dev/null and b/responsive_web/static/description/assets/icons/trading-black.png differ diff --git a/responsive_web/static/description/assets/icons/training.png b/responsive_web/static/description/assets/icons/training.png new file mode 100644 index 000000000..884ca024d Binary files /dev/null and b/responsive_web/static/description/assets/icons/training.png differ diff --git a/responsive_web/static/description/assets/icons/update.png b/responsive_web/static/description/assets/icons/update.png new file mode 100644 index 000000000..ecbc5a01a Binary files /dev/null and b/responsive_web/static/description/assets/icons/update.png differ diff --git a/responsive_web/static/description/assets/icons/user.png b/responsive_web/static/description/assets/icons/user.png new file mode 100644 index 000000000..6ffb23d9f Binary files /dev/null and b/responsive_web/static/description/assets/icons/user.png differ diff --git a/responsive_web/static/description/assets/icons/wrench.png b/responsive_web/static/description/assets/icons/wrench.png new file mode 100644 index 000000000..6c04dea0f Binary files /dev/null and b/responsive_web/static/description/assets/icons/wrench.png differ diff --git a/responsive_web/static/description/assets/misc/Cybrosys R.png b/responsive_web/static/description/assets/misc/Cybrosys R.png new file mode 100644 index 000000000..da4058087 Binary files /dev/null and b/responsive_web/static/description/assets/misc/Cybrosys R.png differ diff --git a/responsive_web/static/description/assets/misc/email.svg b/responsive_web/static/description/assets/misc/email.svg new file mode 100644 index 000000000..15291cdc3 --- /dev/null +++ b/responsive_web/static/description/assets/misc/email.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/responsive_web/static/description/assets/misc/phone.svg b/responsive_web/static/description/assets/misc/phone.svg new file mode 100644 index 000000000..b7bd7f251 --- /dev/null +++ b/responsive_web/static/description/assets/misc/phone.svg @@ -0,0 +1,3 @@ + + + diff --git a/responsive_web/static/description/assets/misc/star (1) 2.svg b/responsive_web/static/description/assets/misc/star (1) 2.svg new file mode 100644 index 000000000..5ae9f507a --- /dev/null +++ b/responsive_web/static/description/assets/misc/star (1) 2.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/responsive_web/static/description/assets/misc/support (1) 1.svg b/responsive_web/static/description/assets/misc/support (1) 1.svg new file mode 100644 index 000000000..7d37a8f30 --- /dev/null +++ b/responsive_web/static/description/assets/misc/support (1) 1.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/responsive_web/static/description/assets/misc/support-email.svg b/responsive_web/static/description/assets/misc/support-email.svg new file mode 100644 index 000000000..eb70370d6 --- /dev/null +++ b/responsive_web/static/description/assets/misc/support-email.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/responsive_web/static/description/assets/misc/tick-mark.svg b/responsive_web/static/description/assets/misc/tick-mark.svg new file mode 100644 index 000000000..2dbb40187 --- /dev/null +++ b/responsive_web/static/description/assets/misc/tick-mark.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/responsive_web/static/description/assets/misc/whatsapp 1.svg b/responsive_web/static/description/assets/misc/whatsapp 1.svg new file mode 100644 index 000000000..0bfaf8fc6 --- /dev/null +++ b/responsive_web/static/description/assets/misc/whatsapp 1.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/responsive_web/static/description/assets/misc/whatsapp.svg b/responsive_web/static/description/assets/misc/whatsapp.svg new file mode 100644 index 000000000..b618aea1d --- /dev/null +++ b/responsive_web/static/description/assets/misc/whatsapp.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/responsive_web/static/description/assets/modules/m1.png b/responsive_web/static/description/assets/modules/m1.png new file mode 100644 index 000000000..acb4c76c6 Binary files /dev/null and b/responsive_web/static/description/assets/modules/m1.png differ diff --git a/responsive_web/static/description/assets/modules/m2.png b/responsive_web/static/description/assets/modules/m2.png new file mode 100644 index 000000000..3ef91f771 Binary files /dev/null and b/responsive_web/static/description/assets/modules/m2.png differ diff --git a/responsive_web/static/description/assets/modules/m3.png b/responsive_web/static/description/assets/modules/m3.png new file mode 100644 index 000000000..72febf6ae Binary files /dev/null and b/responsive_web/static/description/assets/modules/m3.png differ diff --git a/responsive_web/static/description/assets/modules/m4.png b/responsive_web/static/description/assets/modules/m4.png new file mode 100644 index 000000000..f7d7f9241 Binary files /dev/null and b/responsive_web/static/description/assets/modules/m4.png differ diff --git a/responsive_web/static/description/assets/modules/m5.png b/responsive_web/static/description/assets/modules/m5.png new file mode 100644 index 000000000..1d3324e88 Binary files /dev/null and b/responsive_web/static/description/assets/modules/m5.png differ diff --git a/responsive_web/static/description/assets/modules/m6.png b/responsive_web/static/description/assets/modules/m6.png new file mode 100644 index 000000000..80938c15a Binary files /dev/null and b/responsive_web/static/description/assets/modules/m6.png differ diff --git a/responsive_web/static/description/assets/screenshots/1.png b/responsive_web/static/description/assets/screenshots/1.png new file mode 100644 index 000000000..eac9bb376 Binary files /dev/null and b/responsive_web/static/description/assets/screenshots/1.png differ diff --git a/responsive_web/static/description/assets/screenshots/2.png b/responsive_web/static/description/assets/screenshots/2.png new file mode 100644 index 000000000..81a869d95 Binary files /dev/null and b/responsive_web/static/description/assets/screenshots/2.png differ diff --git a/responsive_web/static/description/assets/screenshots/3.png b/responsive_web/static/description/assets/screenshots/3.png new file mode 100644 index 000000000..bae40903c Binary files /dev/null and b/responsive_web/static/description/assets/screenshots/3.png differ diff --git a/responsive_web/static/description/assets/screenshots/4.png b/responsive_web/static/description/assets/screenshots/4.png new file mode 100644 index 000000000..8a4819879 Binary files /dev/null and b/responsive_web/static/description/assets/screenshots/4.png differ diff --git a/responsive_web/static/description/assets/screenshots/5.png b/responsive_web/static/description/assets/screenshots/5.png new file mode 100644 index 000000000..e3bc2bc41 Binary files /dev/null and b/responsive_web/static/description/assets/screenshots/5.png differ diff --git a/responsive_web/static/description/assets/screenshots/hero.gif b/responsive_web/static/description/assets/screenshots/hero.gif new file mode 100644 index 000000000..48615fa6c Binary files /dev/null and b/responsive_web/static/description/assets/screenshots/hero.gif differ diff --git a/responsive_web/static/description/banner.jpg b/responsive_web/static/description/banner.jpg new file mode 100644 index 000000000..779fc2080 Binary files /dev/null and b/responsive_web/static/description/banner.jpg differ diff --git a/responsive_web/static/description/icon.png b/responsive_web/static/description/icon.png new file mode 100644 index 000000000..70aee8e0f Binary files /dev/null and b/responsive_web/static/description/icon.png differ diff --git a/responsive_web/static/description/index.html b/responsive_web/static/description/index.html new file mode 100644 index 000000000..a60b65c64 --- /dev/null +++ b/responsive_web/static/description/index.html @@ -0,0 +1,709 @@ + + + + + + Odoo App 3 Index + + + + + + + + +
+
+
+
+
+ +
+
+
+ Community +
+
+
+
+
+
+

+ Web Responsive

+

+ This Module Helps to Create Enterprise Like App Drawer, + Responsiveness and Sticky Headers +

+
+ +
+
+
+
+
+

+ Key Highlights +

+
+
+
+
+
+ +
+
+

+ App Drawer

+

+ Helps to Create Enterprise Like App Drawer +

+
+
+
+
+
+
+ +
+
+

+ Responsiveness and Sticky Headers.

+

Contains sticky + headers in forms, sticky header and footer in + list, and sticky header in pivot.

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

+ Enterprise App Drawer.

+
+
+
+
+
+
+ +
+
+

+ Enterprise Header Menus.

+
+
+
+
+
+
+ +
+
+

+ Click any digit or letter on the keyboard to display the search view.

+
+
+
+
+
+
+ +
+
+

+ Sticky Statusbar.

+
+
+
+
+
+
+ +
+
+

+ Sticky pivot header.

+
+
+
+
+
+
+
    +
  • + Enterprise app + drawer. +
  • +
  • + Sticky statusbar + in form view. +
  • +
  • + Sticky header & + footer in list view. +
  • +
  • + Sticky pivot header. +
  • +
+
+
+
+
+
+
Version + 17.0.1.0.0|Released on:18th Aug 2024 +
+

+ Initial Commit for Web Responsive.

+
+
+
+
+
+
+
+

+ Related Products

+
+
+ +
+
+

+ Our Services

+ +
+
+
+
+
+
+
+
+ service-icon +
+
+

Odoo + Customization

+
+
+
+
+
+
+ service-icon +
+
+

Odoo + Implementation

+
+
+
+
+
+
+ service-icon +
+
+

Odoo + Support

+
+
+
+
+
+
+ service-icon +
+
+

Hire + Odoo Developer

+
+
+
+
+ +
+
+ service-icon +
+
+

Odoo + Integration

+
+
+
+
+
+
+ service-icon +
+
+

Odoo + Migration

+
+
+
+
+
+
+ service-icon +
+
+

Odoo + Consultancy

+
+
+
+
+
+
+ service-icon +
+
+

Odoo + Implementation

+
+
+
+
+
+
+ service-icon +
+
+

Odoo + Licensing Consultancy

+
+
+
+
+
+
+

+ Our Industries

+ +
+
+
+
+
+
+ +

Trading

+

Easily procure and sell your products

+
+
+
+
+ +

POS

+

Easy configuration and convivial experience

+
+
+
+
+ +

+ Education

+

A platform for educational management

+
+
+
+
+ +

+ Manufacturing

+

Plan, track and schedule your operations

+
+
+
+
+ +

E-commerce & + Website

+

Mobile friendly, awe-inspiring product pages

+
+
+
+
+ +

Service + Management

+

Keep track of services and invoice

+
+
+
+
+ +

+ Restaurant

+

Run your bar or restaurant methodically

+
+
+
+
+ +

Hotel + Management

+

An all-inclusive hotel management application

+
+
+
+
+
+
+

+ Support

+
+
+
+
+
+
+
+ +
+ Need + Help? +

Got + questions or need help? Get in touch.

+
odoo@cybrosys.com +
+
+
+
+
+
+
+
+ +
+ WhatsApp +

Say hi to + us on WhatsApp!

+
+91 + 99456767686 +
+
+
+
+
+
+
+
+
+ + + + + + diff --git a/responsive_web/static/src/css/main_menu.css b/responsive_web/static/src/css/main_menu.css new file mode 100644 index 000000000..fdf240ae8 --- /dev/null +++ b/responsive_web/static/src/css/main_menu.css @@ -0,0 +1,204 @@ +.fullscreen-menu.show{ + position:fixed !important; + min-width:100vw; + min-height:100vh; + top:-36px !important; + background: url(/responsive_web/static/src/img/img.png); + background-size: cover; + background-repeat: no-repeat; +} +.nav-container { + float: left; + position: relative; + width: 100vw; + height: 100vh; + background: transparent; + display: flex; + justify-content: start; + align-items: start; + margin-top: -20px; +} +.search-results { + width: 40%; + background: #fff; + padding-top: 0 !important; + margin: auto; +} +.o_main_navbar .dropdown-menu .show { + max-height: auto !important; + min-width: 100%; + overflow: auto; + margin-top: 0; + position: static; + top: 0; + display: flex; + box-shadow: none; + border: none; + flex-wrap: wrap; + flex-direction: row; + overflow: unset; +} +.dropdown-item.o_app.mt0 { + flex-basis: 20%; + display: flex; + justify-content: center; + align-items: center; + border-radius: 5px; + flex-direction: column; + margin-bottom: 15px; + padding-bottom: 15px + transition: box-shadow 0.3s ease-in-out; +} + +.dropdown-menu fullscreen-menu show{ + width:1000px !important; +} +.o_setting_search { + position: relative; + .searchInput { + height: 28px; + padding: 0px; + border: 0px; + border-dropdown-item bottom: 1px solid gray('400'); + border-color: gray('700'); + box-shadow: none; + font-weight: 500; + } + .searchIcon { + @include o-position-absolute(4px, 0); + color: gray('700'); + } + } + .search-container.has-results { + height: 100%; + + .search-input { + width: 100%; + } + .search-results { + height: 100vh; + overflow: scroll; + } + } +.app-menu { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(110px, 1fr)); + gap: 20px; + width: 45%; + margin: auto; + margin-top: 100px +} +.o_main_navbar .dropdown-menu.show { + max-height: none !important; + min-width: 100vw; + min-height: 100vh; + overflow: auto; + margin-top: 0; + top: -36px; +} +.o-menu-search-result.dropdown-item.col-12.ml-auto.mr-auto { + background-repeat: no-repeat; + background-size: 100%; + margin-bottom: 5%; + +} +.o-menu-search-result{ + backgrou +} +.form-control { + padding: 0 !important; +} +.input-group-text{ + width: 40%; + margin-top: 13px; +} +@media screen and (max-width:575.98px) { + .input-group-text{ + width: 70% + } +} +.o_main_navbar .o_menu_brand { + text-decoration: none !important; + margin-left: 10px; +} +.input-group-prepend{ + width: 100%; + display:flex; + align-items:center; + justify-content:center; +} +.search-input{ + margin: auto; +} +.dropdown-menu{ + border:none; important +} +.o_main_navbar .dropdown-menu.show{ +max-height: none !important; */ + padding-top: 2%; + min-width: 100vw; + min-height: 100vh; + margin-right: 0; + top: -36px; + position: absolute; + right: 0; +} +nav-container { + float: left; */ + position: fixed; + min-width: 101vw !important; + height: 100vh; + display: flex; + justify-content: end; + align-items: end; +} +.search-input { + margin: auto; + margin-top: 50px; +} +.SearchInput { + height: 40px; + margin-left: 10px; +} +.oh_dashboards { + background-image: url(/responsive_web/static/src/img/img.png); + height: 100vh; + margin-top: 0; + top: 0; + position: absolute; + background-size: cover; + background-repeat: no-repeat; + left: 0; +} +.o_menu_systray{ + position: absolute; + right: 0; + top: 0; + z-index: 999; +} +.o-mail-DiscussSystray-class .fa, .oe_topbar_name { + color : black; +} +.search-result-container { +padding: 10px 36px; +} +.menu-icon-web { + width: 30px +} +.img-wrap{ + background-color: white; + padding: 10px 10px; + border-radius: 4px; + margin-bottom: 10px; + box-shadow: rgba(149, 157, 165, 0.4) 0px 8px 24px; +} +.img-wrap:hover{ +box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1), + 0 2px 2px rgba(0, 0, 0, 0.1), + 0 4px 4px rgba(0, 0, 0, 0.1), + 0 8px 8px rgba(0, 0, 0, 0.1), + 0 16px 16px rgba(0, 0, 0, 0.04);} +.dropdown-item:hover, .dropdown-item:focus { + color: #212529; + background-color: transparent; +} diff --git a/responsive_web/static/src/css/sticky.css b/responsive_web/static/src/css/sticky.css new file mode 100644 index 000000000..1e61ae61e --- /dev/null +++ b/responsive_web/static/src/css/sticky.css @@ -0,0 +1,31 @@ +/* Form view sticky header */ +.o_form_sheet_bg .o_form_statusbar{ + position: sticky !important; + top: 0; + z-index: 2; +} +/* List view view sticky header and footer*/ +.o_list_view .table-responsive .o_list_table thead{ + position: sticky; + top: 0; + z-index: 1; +} +.o_list_view .table-responsive .o_list_table tbody{ + top:10px; +} +.o_list_view .table-responsive { + overflow-x: revert; +} +.o_list_renderer .o_list_table > :not(:first-child){ + position: sticky; + bottom: 0; +} +.o_pivot thead { + position:sticky; + top:0; + z-index:1; + background:white; +} +.o_pivot thead tr th{ + outline: 1px solid #dee2e6; +} diff --git a/responsive_web/static/src/img/img.png b/responsive_web/static/src/img/img.png new file mode 100644 index 000000000..d0af1c740 Binary files /dev/null and b/responsive_web/static/src/img/img.png differ diff --git a/responsive_web/static/src/js/ResponsiveWeb.js b/responsive_web/static/src/js/ResponsiveWeb.js new file mode 100644 index 000000000..fdc999b55 --- /dev/null +++ b/responsive_web/static/src/js/ResponsiveWeb.js @@ -0,0 +1,121 @@ +/** @odoo-module **/ +import { registry } from "@web/core/registry"; +import { useService } from "@web/core/utils/hooks"; +import { Component, useRef, useState, onWillStart } from "@odoo/owl"; +import SearchResult from './SearchResult'; +const { fuzzyLookup } = require('@web/core/utils/search'); +import { computeAppsAndMenuItems } from "@web/webclient/menus/menu_helpers"; +/** + * WebResponsive Component + * + * This component adds responsive search functionality within the Odoo web client. + * It listens for key events and initiates a search when alphanumeric keys are pressed. + * The search queries available applications and menu items and displays the matching results in a modal. + */ +class WebResponsive extends Component { + /** + * Initializes the component, sets up the state, services, and registers event listeners. + */ + setup() { + super.setup(...arguments); + this.root = useRef('root'); + this.action = useService("action"); + this.menuService = useService('menu'); + this.search_input = useRef("search-input"); + this.state = useState({ + results: [], + showModal: false, + menus: [], + should_replace_nav: false, + query: "", + }); + this._search_def = new $.Deferred(); + let { apps, menuItems } = computeAppsAndMenuItems(this.menuService.getMenuAsTree("root")); + this._apps = apps; + this._searchableMenus = menuItems; + onWillStart(async () => { + this.state.menus = await this.menuService.getApps(); + this.state.should_replace_nav = true; + }); + window.addEventListener('keydown', this.onKeyDown.bind(this)); + } + /** + * Handles keydown events to trigger the search modal. + * + * @param {Event} event - The keydown event triggered by the user. + */ + onKeyDown(event) { + if (this.state.showModal) { + return; + } + if (/^[a-zA-Z0-9]$/.test(event.key)) { + this.state.query = `${this.state.query}${event.key}`; + this._searchMenus(); + this.state.showModal = true; + setTimeout(() => this.root.el?.querySelector(".SearchInput")?.focus(), 1000); + } + } + /** + * Closes the search modal, clears the search results and query. + */ + closeModal() { + this.state.showModal = false; + this.state.results = []; + this.state.query = ""; + } + /** + * Removes the keydown event listener when the component is unmounted. + */ + willUnmount() { + window.removeEventListener('keydown', this.onKeyDown.bind(this)); + } + /** + * Performs a search through the available apps and menu items using fuzzy matching. + * Updates the search results in the component state. + */ + _searchMenus() { + var query = this.state.query; + if (query === "") { + return; + } + var results = []; + // Search through apps + fuzzyLookup(query, this._apps, (menu) => menu.label) + .forEach((menu) => { + results.push({ + category: "apps", + name: menu.label, + actionID: menu.actionID, + id: menu.id, + webIconData: menu.webIconData, + }); + }); + // Search through menu items + fuzzyLookup(query, this._searchableMenus, (menu) => + (menu.parents + " / " + menu.label).split("/").reverse().join("/")) + .forEach((menu) => { + results.push({ + category: "menu_items", + name: menu.parents + " / " + menu.label, + actionID: menu.actionID, + id: menu.id, + }); + }); + this.state.results = results; + } + /** + * Handles the input event to update the search query and trigger a new search. + * + * @param {Event} event - The input event from the search field. + */ + onInput(event) { + this.state.query = event.target.value; + this._searchMenus(); + } +} +WebResponsive.template = 'responsive_web.WebResponsiveTmp'; +WebResponsive.components = { + ...WebResponsive.components, + SearchResult +}; +registry.category('actions').add('web_responsive', WebResponsive); diff --git a/responsive_web/static/src/js/SearchResult.js b/responsive_web/static/src/js/SearchResult.js new file mode 100644 index 000000000..bcd21ce14 --- /dev/null +++ b/responsive_web/static/src/js/SearchResult.js @@ -0,0 +1,13 @@ +/** @odoo-module */ +import { Component, useRef, useState } from "@odoo/owl"; +/** + * SearchResult Component + * + * This component is a placeholder for displaying individual search results + * in the WebResponsive component. It serves as a basic structure for rendering + * search results but can be extended to include additional logic or styling + * as needed. + */ +class SearchResult extends Component {} +SearchResult.template = 'responsive_web.SearchResult'; +export default SearchResult; diff --git a/responsive_web/static/src/js/WebMenu.js b/responsive_web/static/src/js/WebMenu.js new file mode 100644 index 000000000..12092a012 --- /dev/null +++ b/responsive_web/static/src/js/WebMenu.js @@ -0,0 +1,58 @@ +/** @odoo-module **/ +import { useService, useBus } from "@web/core/utils/hooks"; +import { useRef } from "@odoo/owl"; +import { NavBar } from "@web/webclient/navbar/navbar"; +import { patch } from "@web/core/utils/patch"; +import { _t } from "@web/core/l10n/translation"; +/** + * Patch for the NavBar Component + * + * This patch modifies the setup and behavior of the existing NavBar component within the Odoo web client. + * It introduces custom actions, including detecting route changes and conditionally displaying the main navbar. + */ +patch(NavBar.prototype, { + /** + * Sets up the component by initializing services, state variables, and registering a bus listener + * for route changes. This method is called when the component is initialized. + */ + setup() { + super.setup(...arguments); + this.root = useRef('root'); + this.action = useService("action"); + this.menuService = useService("menu"); + this.isDashboardView = false; + useBus(this.env.bus, 'ROUTE_CHANGE', this._onRouteChange.bind(this)); + }, + /** + * Handles route changes by resetting the dashboard view flag and ensuring the main navbar is displayed. + * + * This method is called whenever a route change event is detected. + */ + _onRouteChange() { + this.isDashboardView = false; + const mainNavbar = this.root.el.querySelector('.o_main_navbar'); + if (mainNavbar) { + mainNavbar.style.display = ''; + } + }, + /** + * Custom action handler for when a specific action is triggered, such as switching to a dashboard view. + * This method sets the dashboard view flag, triggers a client action, and handles the visibility of + * the main navbar. + */ + _onClickCustomAction() { + this.isDashboardView = true; + // Trigger a client action to load the 'Web Responsive' dashboard + this.action.doAction({ + type: 'ir.actions.client', + tag: 'web_responsive', + name: 'Web Responsive', + name: _t('Dashboard'), + target: 'main' + }); + const mainNavbar = this.root.el.querySelector('.o_main_navbar'); + const systray = this.root.el.querySelector('o_menu_systray'); + if (mainNavbar && this.isDashboardView) { + } + } +}); diff --git a/responsive_web/static/src/xml/PivotCustom.xml b/responsive_web/static/src/xml/PivotCustom.xml new file mode 100644 index 000000000..2ea30d6a9 --- /dev/null +++ b/responsive_web/static/src/xml/PivotCustom.xml @@ -0,0 +1,9 @@ + + + + + + overflow-x:unset + + + diff --git a/responsive_web/static/src/xml/ResponsiveWebTemplates.xml b/responsive_web/static/src/xml/ResponsiveWebTemplates.xml new file mode 100644 index 000000000..4884a54f5 --- /dev/null +++ b/responsive_web/static/src/xml/ResponsiveWebTemplates.xml @@ -0,0 +1,36 @@ + + + + +
+
+ + + + + + +
+
+
+
diff --git a/responsive_web/static/src/xml/SearchResult.xml b/responsive_web/static/src/xml/SearchResult.xml new file mode 100644 index 000000000..54602ee9c --- /dev/null +++ b/responsive_web/static/src/xml/SearchResult.xml @@ -0,0 +1,57 @@ + + + + +
+ + + diff --git a/responsive_web/static/src/xml/WebMenu.xml b/responsive_web/static/src/xml/WebMenu.xml new file mode 100644 index 000000000..27bd742aa --- /dev/null +++ b/responsive_web/static/src/xml/WebMenu.xml @@ -0,0 +1,16 @@ + + + + + + + + + diff --git a/responsive_web/views/responsive_web_menus.xml b/responsive_web/views/responsive_web_menus.xml new file mode 100644 index 000000000..5ffd71acc --- /dev/null +++ b/responsive_web/views/responsive_web_menus.xml @@ -0,0 +1,8 @@ + + + + + Web Responsive + web_responsive + +