diff --git a/multicolor_backend_theme/README.md b/multicolor_backend_theme/README.md new file mode 100644 index 000000000..8214dd776 --- /dev/null +++ b/multicolor_backend_theme/README.md @@ -0,0 +1,44 @@ +Chameleon Multi color Backend Theme +=================================== +* Chameleon Multi color Backend Theme module for Odoo 15 + +Installation +============ + - www.odoo.com/documentation/15.0/setup/install.html + - Install our custom addon + +License +------- +General Public License, Version 3 (LGPL v3). +(https://www.odoo.com/documentation/user/15.0/legal/licenses/licenses.html) + +Company +------- +* 'Cybrosys Techno Solutions '__ + +Credits +------- +* Developer: + Linto CT @ Cybrosys + Sanjith Rashin @ Cybrosys + V14 Dino @ Cybrosys + V15 Sigha Ck @ Cybrosys + +Contacts +-------- +* Mail Contact : odoo@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 +========== +This module is maintained by Cybrosys Technologies. + +For support and more information, please visit https://www.cybrosys.com + +Further information +=================== +HTML Description: ``__ + diff --git a/multicolor_backend_theme/__init__.py b/multicolor_backend_theme/__init__.py new file mode 100644 index 000000000..64bc5d277 --- /dev/null +++ b/multicolor_backend_theme/__init__.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# 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 . +# +############################################################################## + +from . import models +from . import controllers diff --git a/multicolor_backend_theme/__manifest__.py b/multicolor_backend_theme/__manifest__.py new file mode 100644 index 000000000..c0830fc3f --- /dev/null +++ b/multicolor_backend_theme/__manifest__.py @@ -0,0 +1,78 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# 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": "Chameleon Multi Color Backend Theme", + "version": "15.0.1.0.0", + "category": "Themes/Backend", + "summary": "Configurable multi color backend theme for Odoo 15", + "description": """ + Configurable multi color backend theme for Odoo 15 + """, + 'author': 'Cybrosys Techno Solutions', + 'company': 'Cybrosys Techno Solutions', + 'maintainer': 'Cybrosys Techno Solutions', + "website": "https://www.cybrosys.com", + 'images': [ + 'static/description/banner.png', + 'static/description/theme_screenshot.png', + ], + 'license': 'LGPL-3', + 'installable': True, + 'auto_install': False, + 'application': False, + "depends": [ + 'website', + 'portal', + 'mail', + + ], + "data": [ + 'security/ir.model.access.csv', + 'data/theme_data.xml', + 'views/login_templates.xml', + ], + "assets": { + 'web.assets_backend': [ + '/multicolor_backend_theme/static/src/scss/theme_style_backend.scss', + '/multicolor_backend_theme/static/src/css/img_picker.css', + '/multicolor_backend_theme/static/src/wcolpick/wcolpick.css', + '/multicolor_backend_theme/static/src/js/sidebar_menu.js', + '/multicolor_backend_theme/static/src/wcolpick/wcolpick.js', + '/multicolor_backend_theme/static/src/js/jquery_img_picker.js', + '/multicolor_backend_theme/static/src/js/search_apps.js', + '/multicolor_backend_theme/static/src/js/systray_theme_menu.js' + + ], + 'web.assets_frontend': [ + '/multicolor_backend_theme/static/src/scss/theme_style.scss', + '/multicolor_backend_theme/static/src/js/login_page.js' + ], + 'web.assets_qweb': [ + 'multicolor_backend_theme/static/src/xml/base_ext.xml', + 'multicolor_backend_theme/static/src/xml/sidebar_menu_icon.xml', + 'multicolor_backend_theme/static/src/xml/systray_ext.xml', + ], + }, + + +} diff --git a/multicolor_backend_theme/controllers/__init__.py b/multicolor_backend_theme/controllers/__init__.py new file mode 100644 index 000000000..55381262c --- /dev/null +++ b/multicolor_backend_theme/controllers/__init__.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# 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 . +# +############################################################################## + +from . import main diff --git a/multicolor_backend_theme/controllers/main.py b/multicolor_backend_theme/controllers/main.py new file mode 100644 index 000000000..1ed95abb4 --- /dev/null +++ b/multicolor_backend_theme/controllers/main.py @@ -0,0 +1,39 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# 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 . +# +############################################################################## + +import json + +from odoo import http +from odoo.http import request + + +class LoginPage(http.Controller): + @http.route(['/active_theme'], auth='public', type='http') + def find_active_theme(self): + active_theme = request.env['theme.config'].search_read( + domain=[('theme_active', '=', True)], + fields=['theme_main_color', + 'view_font_color', + 'theme_font_color']) + active_theme = active_theme[0] if active_theme else [] + print("active_theme_from cont",active_theme) + return json.dumps(active_theme) diff --git a/multicolor_backend_theme/data/theme_data.xml b/multicolor_backend_theme/data/theme_data.xml new file mode 100644 index 000000000..45e6261eb --- /dev/null +++ b/multicolor_backend_theme/data/theme_data.xml @@ -0,0 +1,28 @@ + + + + + Theme 1 + #6fb702 + #fff + #333 + true + + + + Theme 2 + #404a5e + #fff + #404a5e + false + + + + Theme 3 + #f39b12 + #000 + #333 + false + + + diff --git a/multicolor_backend_theme/doc/RELEASE_NOTES.md b/multicolor_backend_theme/doc/RELEASE_NOTES.md new file mode 100644 index 000000000..0abf4cf26 --- /dev/null +++ b/multicolor_backend_theme/doc/RELEASE_NOTES.md @@ -0,0 +1,6 @@ +## Module + +#### 28.02.2023 +#### Version 15.0.1.0.0 +#### ADD +- Initial Commit for Theme Chameleon Multi color Backend \ No newline at end of file diff --git a/multicolor_backend_theme/models/__init__.py b/multicolor_backend_theme/models/__init__.py new file mode 100644 index 000000000..934da500f --- /dev/null +++ b/multicolor_backend_theme/models/__init__.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# 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 . +# +############################################################################# +from . import theme_config diff --git a/multicolor_backend_theme/models/theme_config.py b/multicolor_backend_theme/models/theme_config.py new file mode 100644 index 000000000..999ae2604 --- /dev/null +++ b/multicolor_backend_theme/models/theme_config.py @@ -0,0 +1,121 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# 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 . +# +############################################################################# +from odoo import models, fields, _, api +from odoo.exceptions import ValidationError + + +class ThemeConfig(models.Model): + _name = 'theme.config' + + name = fields.Char(string="Name") + sidebar_image = fields.Binary(string="Sidebar image") + + theme_main_color = fields.Char( + string="Theme main color", help="main theme color") + view_font_color = fields.Char( + string="View font color", help="backend font color") + theme_font_color = fields.Char( + string="Font color", help="backend view font color") + + theme_active = fields.Boolean(string="Active") + + def write(self, vals_data): + """only one theme can be active at a time""" + + if ('theme_active' in vals_data.keys() and + vals_data['theme_active']): + + for theme_rec in self.search([]): + theme_rec.theme_active = False + try: + res = super(ThemeConfig, self).write(vals_data) + return res + except: + raise ValidationError(_('Please change the image')) + + @api.model + def create_new_theme(self): + """ create new theme""" + theme_data = self.theme_defaults() + theme_obj = self.create(theme_data) + theme_data = self.search_read([]) + return [theme_obj.id, theme_data] + + @api.model + def update_color(self, vals): + vals_data = { + vals['key']: '#' + vals['value'] + } + self.browse(int(vals['theme_id'])).write(vals_data) + return + + @api.model + def update_image(self, vals): + new = self.browse(int(vals['theme_id'])) + vals_data = { + 'sidebar_image': vals['sidebar_image'] + } + try: + self.browse(int(vals['theme_id'])).write(vals_data) + except: + raise ValidationError(_('Please use .jpg format image or Change the image extension to .jpg')) + return False + + @api.model + def find_active(self): + """ find active theme""" + active_theme = self.search_read([('theme_active', '=', True)]) + return active_theme[0] if active_theme else False + + @api.model + def update_active_theme(self, theme_id): + """ update active theme""" + for theme_obj in self.search([]): + if theme_obj.theme_active and theme_obj.id != int(theme_id): + theme_obj.theme_active = False + elif not theme_obj.theme_active and theme_obj.id == int(theme_id): + theme_obj.theme_active = True + return + + @api.model + def check_for_removal(self, theme_id): + theme_rec = self.search([('id', '=', int(theme_id))]) + if not theme_rec: + return False + if not theme_rec.theme_active: + theme_rec.unlink() + theme_data = self.search_read([]) + return theme_data + + def theme_defaults(self): + """ set default theme""" + cr = self._cr + cr.execute("select count(*) from theme_config") + max_id = cr.fetchone() + return { + 'name': 'Theme ' + str(max_id[0] + 1 if max_id else 1), + 'theme_main_color': '#6fb702', + 'view_font_color': '#333', + 'theme_font_color': '#fff', + 'theme_active': False, + 'sidebar_image': 'data:image/jpeg;base64,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' + } diff --git a/multicolor_backend_theme/security/ir.model.access.csv b/multicolor_backend_theme/security/ir.model.access.csv new file mode 100644 index 000000000..034d3341d --- /dev/null +++ b/multicolor_backend_theme/security/ir.model.access.csv @@ -0,0 +1,2 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_themes,themes_selection,model_theme_config,,1,1,1,1 diff --git a/multicolor_backend_theme/static/description/assets/all_screens.png b/multicolor_backend_theme/static/description/assets/all_screens.png new file mode 100644 index 000000000..a56059ac3 Binary files /dev/null and b/multicolor_backend_theme/static/description/assets/all_screens.png differ diff --git a/multicolor_backend_theme/static/description/assets/banner.jpg b/multicolor_backend_theme/static/description/assets/banner.jpg new file mode 100644 index 000000000..1736ac3d2 Binary files /dev/null and b/multicolor_backend_theme/static/description/assets/banner.jpg differ diff --git a/multicolor_backend_theme/static/description/assets/hero.gif b/multicolor_backend_theme/static/description/assets/hero.gif new file mode 100644 index 000000000..b9edb2523 Binary files /dev/null and b/multicolor_backend_theme/static/description/assets/hero.gif differ diff --git a/multicolor_backend_theme/static/description/assets/hero1.gif b/multicolor_backend_theme/static/description/assets/hero1.gif new file mode 100644 index 000000000..ceb5a4f98 Binary files /dev/null and b/multicolor_backend_theme/static/description/assets/hero1.gif differ diff --git a/multicolor_backend_theme/static/description/assets/icon.png b/multicolor_backend_theme/static/description/assets/icon.png new file mode 100644 index 000000000..6f7278309 Binary files /dev/null and b/multicolor_backend_theme/static/description/assets/icon.png differ diff --git a/multicolor_backend_theme/static/description/assets/icons/._.DS_Store b/multicolor_backend_theme/static/description/assets/icons/._.DS_Store new file mode 100644 index 000000000..9ad849cdb Binary files /dev/null and b/multicolor_backend_theme/static/description/assets/icons/._.DS_Store differ diff --git a/multicolor_backend_theme/static/description/assets/icons/._cogs.png b/multicolor_backend_theme/static/description/assets/icons/._cogs.png new file mode 100644 index 000000000..f7148d473 Binary files /dev/null and b/multicolor_backend_theme/static/description/assets/icons/._cogs.png differ diff --git a/multicolor_backend_theme/static/description/assets/icons/._consultation.png b/multicolor_backend_theme/static/description/assets/icons/._consultation.png new file mode 100644 index 000000000..aa8a531ac Binary files /dev/null and b/multicolor_backend_theme/static/description/assets/icons/._consultation.png differ diff --git a/multicolor_backend_theme/static/description/assets/icons/._ecom-black.png b/multicolor_backend_theme/static/description/assets/icons/._ecom-black.png new file mode 100644 index 000000000..ff71cac34 Binary files /dev/null and b/multicolor_backend_theme/static/description/assets/icons/._ecom-black.png differ diff --git a/multicolor_backend_theme/static/description/assets/icons/._education-black.png b/multicolor_backend_theme/static/description/assets/icons/._education-black.png new file mode 100644 index 000000000..038789127 Binary files /dev/null and b/multicolor_backend_theme/static/description/assets/icons/._education-black.png differ diff --git a/multicolor_backend_theme/static/description/assets/icons/._hotel-black.png b/multicolor_backend_theme/static/description/assets/icons/._hotel-black.png new file mode 100644 index 000000000..962af8bbc Binary files /dev/null and b/multicolor_backend_theme/static/description/assets/icons/._hotel-black.png differ diff --git a/multicolor_backend_theme/static/description/assets/icons/._license.png b/multicolor_backend_theme/static/description/assets/icons/._license.png new file mode 100644 index 000000000..26ba90fe5 Binary files /dev/null and b/multicolor_backend_theme/static/description/assets/icons/._license.png differ diff --git a/multicolor_backend_theme/static/description/assets/icons/._lifebuoy.png b/multicolor_backend_theme/static/description/assets/icons/._lifebuoy.png new file mode 100644 index 000000000..51bb6606d Binary files /dev/null and b/multicolor_backend_theme/static/description/assets/icons/._lifebuoy.png differ diff --git a/multicolor_backend_theme/static/description/assets/icons/._manufacturing-black.png b/multicolor_backend_theme/static/description/assets/icons/._manufacturing-black.png new file mode 100644 index 000000000..54bc914ea Binary files /dev/null and b/multicolor_backend_theme/static/description/assets/icons/._manufacturing-black.png differ diff --git a/multicolor_backend_theme/static/description/assets/icons/._pos-black.png b/multicolor_backend_theme/static/description/assets/icons/._pos-black.png new file mode 100644 index 000000000..a11f4cd96 Binary files /dev/null and b/multicolor_backend_theme/static/description/assets/icons/._pos-black.png differ diff --git a/multicolor_backend_theme/static/description/assets/icons/._puzzle.png b/multicolor_backend_theme/static/description/assets/icons/._puzzle.png new file mode 100644 index 000000000..f7e7e7e33 Binary files /dev/null and b/multicolor_backend_theme/static/description/assets/icons/._puzzle.png differ diff --git a/multicolor_backend_theme/static/description/assets/icons/._restaurant-black.png b/multicolor_backend_theme/static/description/assets/icons/._restaurant-black.png new file mode 100644 index 000000000..33ea178a3 Binary files /dev/null and b/multicolor_backend_theme/static/description/assets/icons/._restaurant-black.png differ diff --git a/multicolor_backend_theme/static/description/assets/icons/._service-black.png b/multicolor_backend_theme/static/description/assets/icons/._service-black.png new file mode 100644 index 000000000..0ec2cf2a5 Binary files /dev/null and b/multicolor_backend_theme/static/description/assets/icons/._service-black.png differ diff --git a/multicolor_backend_theme/static/description/assets/icons/._trading-black.png b/multicolor_backend_theme/static/description/assets/icons/._trading-black.png new file mode 100644 index 000000000..d6299d375 Binary files /dev/null and b/multicolor_backend_theme/static/description/assets/icons/._trading-black.png differ diff --git a/multicolor_backend_theme/static/description/assets/icons/._training.png b/multicolor_backend_theme/static/description/assets/icons/._training.png new file mode 100644 index 000000000..9bade5f8e Binary files /dev/null and b/multicolor_backend_theme/static/description/assets/icons/._training.png differ diff --git a/multicolor_backend_theme/static/description/assets/icons/._update.png b/multicolor_backend_theme/static/description/assets/icons/._update.png new file mode 100644 index 000000000..48784837e Binary files /dev/null and b/multicolor_backend_theme/static/description/assets/icons/._update.png differ diff --git a/multicolor_backend_theme/static/description/assets/icons/._user.png b/multicolor_backend_theme/static/description/assets/icons/._user.png new file mode 100644 index 000000000..d5b105ad2 Binary files /dev/null and b/multicolor_backend_theme/static/description/assets/icons/._user.png differ diff --git a/multicolor_backend_theme/static/description/assets/icons/._wrench.png b/multicolor_backend_theme/static/description/assets/icons/._wrench.png new file mode 100644 index 000000000..db48ce407 Binary files /dev/null and b/multicolor_backend_theme/static/description/assets/icons/._wrench.png differ diff --git a/multicolor_backend_theme/static/description/assets/icons/chevron.png b/multicolor_backend_theme/static/description/assets/icons/chevron.png new file mode 100644 index 000000000..2089293d6 Binary files /dev/null and b/multicolor_backend_theme/static/description/assets/icons/chevron.png differ diff --git a/multicolor_backend_theme/static/description/assets/icons/cogs.png b/multicolor_backend_theme/static/description/assets/icons/cogs.png new file mode 100644 index 000000000..95d0bad62 Binary files /dev/null and b/multicolor_backend_theme/static/description/assets/icons/cogs.png differ diff --git a/multicolor_backend_theme/static/description/assets/icons/consultation.png b/multicolor_backend_theme/static/description/assets/icons/consultation.png new file mode 100644 index 000000000..8319d4baa Binary files /dev/null and b/multicolor_backend_theme/static/description/assets/icons/consultation.png differ diff --git a/multicolor_backend_theme/static/description/assets/icons/design.png b/multicolor_backend_theme/static/description/assets/icons/design.png new file mode 100644 index 000000000..87c297bdb Binary files /dev/null and b/multicolor_backend_theme/static/description/assets/icons/design.png differ diff --git a/multicolor_backend_theme/static/description/assets/icons/ecom-black.png b/multicolor_backend_theme/static/description/assets/icons/ecom-black.png new file mode 100644 index 000000000..a9385ff13 Binary files /dev/null and b/multicolor_backend_theme/static/description/assets/icons/ecom-black.png differ diff --git a/multicolor_backend_theme/static/description/assets/icons/education-black.png b/multicolor_backend_theme/static/description/assets/icons/education-black.png new file mode 100644 index 000000000..3eb09b27b Binary files /dev/null and b/multicolor_backend_theme/static/description/assets/icons/education-black.png differ diff --git a/multicolor_backend_theme/static/description/assets/icons/feature-icons/._lifebuoy.png b/multicolor_backend_theme/static/description/assets/icons/feature-icons/._lifebuoy.png new file mode 100644 index 000000000..4f178d2ad Binary files /dev/null and b/multicolor_backend_theme/static/description/assets/icons/feature-icons/._lifebuoy.png differ diff --git a/multicolor_backend_theme/static/description/assets/icons/feature-icons/document.png b/multicolor_backend_theme/static/description/assets/icons/feature-icons/document.png new file mode 100644 index 000000000..4054e8480 Binary files /dev/null and b/multicolor_backend_theme/static/description/assets/icons/feature-icons/document.png differ diff --git a/multicolor_backend_theme/static/description/assets/icons/feature-icons/down.png b/multicolor_backend_theme/static/description/assets/icons/feature-icons/down.png new file mode 100644 index 000000000..65a94a23b Binary files /dev/null and b/multicolor_backend_theme/static/description/assets/icons/feature-icons/down.png differ diff --git a/multicolor_backend_theme/static/description/assets/icons/feature-icons/lifebuoy.png b/multicolor_backend_theme/static/description/assets/icons/feature-icons/lifebuoy.png new file mode 100644 index 000000000..658d56ccc Binary files /dev/null and b/multicolor_backend_theme/static/description/assets/icons/feature-icons/lifebuoy.png differ diff --git a/multicolor_backend_theme/static/description/assets/icons/hotel-black.png b/multicolor_backend_theme/static/description/assets/icons/hotel-black.png new file mode 100644 index 000000000..130f613be Binary files /dev/null and b/multicolor_backend_theme/static/description/assets/icons/hotel-black.png differ diff --git a/multicolor_backend_theme/static/description/assets/icons/license.png b/multicolor_backend_theme/static/description/assets/icons/license.png new file mode 100644 index 000000000..a5869797e Binary files /dev/null and b/multicolor_backend_theme/static/description/assets/icons/license.png differ diff --git a/multicolor_backend_theme/static/description/assets/icons/lifebuoy.png b/multicolor_backend_theme/static/description/assets/icons/lifebuoy.png new file mode 100644 index 000000000..658d56ccc Binary files /dev/null and b/multicolor_backend_theme/static/description/assets/icons/lifebuoy.png differ diff --git a/multicolor_backend_theme/static/description/assets/icons/manufacturing-black.png b/multicolor_backend_theme/static/description/assets/icons/manufacturing-black.png new file mode 100644 index 000000000..697eb0e9f Binary files /dev/null and b/multicolor_backend_theme/static/description/assets/icons/manufacturing-black.png differ diff --git a/multicolor_backend_theme/static/description/assets/icons/pos-black.png b/multicolor_backend_theme/static/description/assets/icons/pos-black.png new file mode 100644 index 000000000..97c0f90c1 Binary files /dev/null and b/multicolor_backend_theme/static/description/assets/icons/pos-black.png differ diff --git a/multicolor_backend_theme/static/description/assets/icons/puzzle.png b/multicolor_backend_theme/static/description/assets/icons/puzzle.png new file mode 100644 index 000000000..65cf854e7 Binary files /dev/null and b/multicolor_backend_theme/static/description/assets/icons/puzzle.png differ diff --git a/multicolor_backend_theme/static/description/assets/icons/quality.png b/multicolor_backend_theme/static/description/assets/icons/quality.png new file mode 100644 index 000000000..8f128c57f Binary files /dev/null and b/multicolor_backend_theme/static/description/assets/icons/quality.png differ diff --git a/multicolor_backend_theme/static/description/assets/icons/responsive.png b/multicolor_backend_theme/static/description/assets/icons/responsive.png new file mode 100644 index 000000000..aa7f437e3 Binary files /dev/null and b/multicolor_backend_theme/static/description/assets/icons/responsive.png differ diff --git a/multicolor_backend_theme/static/description/assets/icons/restaurant-black.png b/multicolor_backend_theme/static/description/assets/icons/restaurant-black.png new file mode 100644 index 000000000..4a35eb939 Binary files /dev/null and b/multicolor_backend_theme/static/description/assets/icons/restaurant-black.png differ diff --git a/multicolor_backend_theme/static/description/assets/icons/service-black.png b/multicolor_backend_theme/static/description/assets/icons/service-black.png new file mode 100644 index 000000000..301ab51cb Binary files /dev/null and b/multicolor_backend_theme/static/description/assets/icons/service-black.png differ diff --git a/multicolor_backend_theme/static/description/assets/icons/trading-black.png b/multicolor_backend_theme/static/description/assets/icons/trading-black.png new file mode 100644 index 000000000..9398ba2f1 Binary files /dev/null and b/multicolor_backend_theme/static/description/assets/icons/trading-black.png differ diff --git a/multicolor_backend_theme/static/description/assets/icons/training.png b/multicolor_backend_theme/static/description/assets/icons/training.png new file mode 100644 index 000000000..884ca024d Binary files /dev/null and b/multicolor_backend_theme/static/description/assets/icons/training.png differ diff --git a/multicolor_backend_theme/static/description/assets/icons/update.png b/multicolor_backend_theme/static/description/assets/icons/update.png new file mode 100644 index 000000000..ecbc5a01a Binary files /dev/null and b/multicolor_backend_theme/static/description/assets/icons/update.png differ diff --git a/multicolor_backend_theme/static/description/assets/icons/user.png b/multicolor_backend_theme/static/description/assets/icons/user.png new file mode 100644 index 000000000..6ffb23d9f Binary files /dev/null and b/multicolor_backend_theme/static/description/assets/icons/user.png differ diff --git a/multicolor_backend_theme/static/description/assets/icons/wrench.png b/multicolor_backend_theme/static/description/assets/icons/wrench.png new file mode 100644 index 000000000..6c04dea0f Binary files /dev/null and b/multicolor_backend_theme/static/description/assets/icons/wrench.png differ diff --git a/multicolor_backend_theme/static/description/assets/screenshots/advance_search.png b/multicolor_backend_theme/static/description/assets/screenshots/advance_search.png new file mode 100644 index 000000000..57e54cd12 Binary files /dev/null and b/multicolor_backend_theme/static/description/assets/screenshots/advance_search.png differ diff --git a/multicolor_backend_theme/static/description/assets/screenshots/chameleon_1.png b/multicolor_backend_theme/static/description/assets/screenshots/chameleon_1.png new file mode 100644 index 000000000..e24ffd220 Binary files /dev/null and b/multicolor_backend_theme/static/description/assets/screenshots/chameleon_1.png differ diff --git a/multicolor_backend_theme/static/description/assets/screenshots/chameleon_2.png b/multicolor_backend_theme/static/description/assets/screenshots/chameleon_2.png new file mode 100644 index 000000000..478c31664 Binary files /dev/null and b/multicolor_backend_theme/static/description/assets/screenshots/chameleon_2.png differ diff --git a/multicolor_backend_theme/static/description/assets/screenshots/chameleon_3.png b/multicolor_backend_theme/static/description/assets/screenshots/chameleon_3.png new file mode 100644 index 000000000..8672b37f0 Binary files /dev/null and b/multicolor_backend_theme/static/description/assets/screenshots/chameleon_3.png differ diff --git a/multicolor_backend_theme/static/description/assets/screenshots/chameleon_4.png b/multicolor_backend_theme/static/description/assets/screenshots/chameleon_4.png new file mode 100644 index 000000000..27e527b75 Binary files /dev/null and b/multicolor_backend_theme/static/description/assets/screenshots/chameleon_4.png differ diff --git a/multicolor_backend_theme/static/description/assets/screenshots/chameleon_5.png b/multicolor_backend_theme/static/description/assets/screenshots/chameleon_5.png new file mode 100644 index 000000000..94fe15fb0 Binary files /dev/null and b/multicolor_backend_theme/static/description/assets/screenshots/chameleon_5.png differ diff --git a/multicolor_backend_theme/static/description/assets/screenshots/chameleon_6.png b/multicolor_backend_theme/static/description/assets/screenshots/chameleon_6.png new file mode 100644 index 000000000..cfbbc6e43 Binary files /dev/null and b/multicolor_backend_theme/static/description/assets/screenshots/chameleon_6.png differ diff --git a/multicolor_backend_theme/static/description/assets/screenshots/chameleon_7.png b/multicolor_backend_theme/static/description/assets/screenshots/chameleon_7.png new file mode 100644 index 000000000..5cc8e73b2 Binary files /dev/null and b/multicolor_backend_theme/static/description/assets/screenshots/chameleon_7.png differ diff --git a/multicolor_backend_theme/static/description/assets/screenshots/chameleon_8.png b/multicolor_backend_theme/static/description/assets/screenshots/chameleon_8.png new file mode 100644 index 000000000..fcd6bdb09 Binary files /dev/null and b/multicolor_backend_theme/static/description/assets/screenshots/chameleon_8.png differ diff --git a/multicolor_backend_theme/static/description/assets/screenshots/chat_box.png b/multicolor_backend_theme/static/description/assets/screenshots/chat_box.png new file mode 100644 index 000000000..f00f8626b Binary files /dev/null and b/multicolor_backend_theme/static/description/assets/screenshots/chat_box.png differ diff --git a/multicolor_backend_theme/static/description/assets/screenshots/color_picker.png b/multicolor_backend_theme/static/description/assets/screenshots/color_picker.png new file mode 100644 index 000000000..e56823ff1 Binary files /dev/null and b/multicolor_backend_theme/static/description/assets/screenshots/color_picker.png differ diff --git a/multicolor_backend_theme/static/description/assets/screenshots/control_panel.png b/multicolor_backend_theme/static/description/assets/screenshots/control_panel.png new file mode 100644 index 000000000..5dc7fc151 Binary files /dev/null and b/multicolor_backend_theme/static/description/assets/screenshots/control_panel.png differ diff --git a/multicolor_backend_theme/static/description/assets/screenshots/exp_sidebar.png b/multicolor_backend_theme/static/description/assets/screenshots/exp_sidebar.png new file mode 100644 index 000000000..d1ad2e0de Binary files /dev/null and b/multicolor_backend_theme/static/description/assets/screenshots/exp_sidebar.png differ diff --git a/multicolor_backend_theme/static/description/assets/screenshots/form.png b/multicolor_backend_theme/static/description/assets/screenshots/form.png new file mode 100644 index 000000000..39f9b00d8 Binary files /dev/null and b/multicolor_backend_theme/static/description/assets/screenshots/form.png differ diff --git a/multicolor_backend_theme/static/description/assets/screenshots/kanban.png b/multicolor_backend_theme/static/description/assets/screenshots/kanban.png new file mode 100644 index 000000000..c067bd1c4 Binary files /dev/null and b/multicolor_backend_theme/static/description/assets/screenshots/kanban.png differ diff --git a/multicolor_backend_theme/static/description/assets/screenshots/login.png b/multicolor_backend_theme/static/description/assets/screenshots/login.png new file mode 100644 index 000000000..ed6f2d596 Binary files /dev/null and b/multicolor_backend_theme/static/description/assets/screenshots/login.png differ diff --git a/multicolor_backend_theme/static/description/assets/screenshots/min_sidebar.png b/multicolor_backend_theme/static/description/assets/screenshots/min_sidebar.png new file mode 100644 index 000000000..b285ade41 Binary files /dev/null and b/multicolor_backend_theme/static/description/assets/screenshots/min_sidebar.png differ diff --git a/multicolor_backend_theme/static/description/assets/screenshots/tree.png b/multicolor_backend_theme/static/description/assets/screenshots/tree.png new file mode 100644 index 000000000..6ad4031ee Binary files /dev/null and b/multicolor_backend_theme/static/description/assets/screenshots/tree.png differ diff --git a/multicolor_backend_theme/static/description/banner.png b/multicolor_backend_theme/static/description/banner.png new file mode 100644 index 000000000..07621fe12 Binary files /dev/null and b/multicolor_backend_theme/static/description/banner.png differ diff --git a/multicolor_backend_theme/static/description/icon.png b/multicolor_backend_theme/static/description/icon.png new file mode 100644 index 000000000..aeee33a03 Binary files /dev/null and b/multicolor_backend_theme/static/description/icon.png differ diff --git a/multicolor_backend_theme/static/description/index.html b/multicolor_backend_theme/static/description/index.html new file mode 100644 index 000000000..8188948be --- /dev/null +++ b/multicolor_backend_theme/static/description/index.html @@ -0,0 +1,613 @@ + +
+
+
+

+ Chameleon Backend theme +

+

Choose your color by yourself.

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

+ Enables a user friendly backend theme for Odoo 15.0 community edition. +

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

+ Features

+
+
+ + +
+
+
+
+ +
+
Carefully Crafted
+
+ +
+
+ +
+
Responsive Design
+
+ +
+
+ +
+
Quality Checked
+
+
+
+ +
+ + + +
+
+
+
+
+ + +

Modified Font

+
+ + + +

New Color Combination

+
+ + + +

Full Screen View

+
+
+ +
+ + +

Stages are Seperated in View

+
+ + + +

Clean Layout

+
+ + + +

Buttons with New Colors

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

+ Screenshots

+
+
+ +
+
+
+
+
1
+
+
Login Page
+
+
+
+ + +
+
+ +
+
+
+
+
2
+
+
Expanded side bar
+
+
+
+ +
+
+ +
+
+
+
+
3
+
+
Minimized side bar
+
+
+
+ +
+
+ +
+
+
+
+
4
+
+
Tree view
+
+
+
+ +
+
+ +
+
+
+
+
5
+
+
Kanban view
+
+
+
+ +
+
+ +
+
+
+
+
6
+
+
Form view
+
+
+
+ +
+
+ +
+
+
+
+
7
+
+
Color picker
+
+
+
+ +
+
+
+
+
+
+
8
+
+
Control panel +
+
+
+
+ +
+
+
+
+
+
+
8
+
+
Chat Box +
+
+
+
+ +
+
+
+
+
+
+
8
+
+
Advanced Search +
+
+
+
+ +
+
+ +
+ + + + +
+
+
+
+

+ Our Services

+
+ +
+
+ +
+
+ Odoo + Customization
+
+ +
+
+ +
+
+ Odoo + Implementation
+
+ +
+
+ +
+
+ Odoo + Support
+
+ + +
+
+ +
+
+ Hire + Odoo + Developer
+
+ +
+
+ +
+
+ Odoo + Integration
+
+ +
+
+ +
+
+ Odoo + Migration
+
+ + +
+
+ +
+
+ Odoo + Consultancy
+
+ +
+
+ +
+
+ Odoo + Implementation
+
+ +
+
+ +
+
+ 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

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

+ Need Help?

+
+
+ + +
+ +
+ + +
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ \ No newline at end of file diff --git a/multicolor_backend_theme/static/description/theme_screenshot.png b/multicolor_backend_theme/static/description/theme_screenshot.png new file mode 100644 index 000000000..fbeafe0ea Binary files /dev/null and b/multicolor_backend_theme/static/description/theme_screenshot.png differ diff --git a/multicolor_backend_theme/static/src/css/img_picker.css b/multicolor_backend_theme/static/src/css/img_picker.css new file mode 100644 index 000000000..b6f287b5f --- /dev/null +++ b/multicolor_backend_theme/static/src/css/img_picker.css @@ -0,0 +1,57 @@ +:root{ + --theme_main_color: #AD7B90 !default; + --theme_font_color: black !default; + --view_font_color + } +.img-upload-btn { + position: relative; + overflow: hidden; + padding-top: 95%; +} + +.img-upload-btn input[type=file] { + position: absolute; + top: 0; + right: 0; + min-width: 100%; + min-height: 100%; + font-size: 100px; + text-align: right; + filter: alpha(opacity=0); + opacity: 0; + outline: none; + background: white; + cursor: inherit; + display: block; +} + +.img-upload-btn i { + position: absolute; + height: 16px; + width: 16px; + top: 50%; + left: 50%; + margin-top: -8px; + margin-left: -8px; +} + +.btn-radio { + position: relative; + overflow: hidden; +} + +.btn-radio input[type=radio] { + position: absolute; + top: 0; + right: 0; + min-width: 100%; + min-height: 100%; + font-size: 100px; + text-align: right; + filter: alpha(opacity=0); + opacity: 0; + outline: none; + background: white; + cursor: inherit; + display: block; +} diff --git a/multicolor_backend_theme/static/src/img/dashboard-header.jpg b/multicolor_backend_theme/static/src/img/dashboard-header.jpg new file mode 100644 index 000000000..6a1044f6f Binary files /dev/null and b/multicolor_backend_theme/static/src/img/dashboard-header.jpg differ diff --git a/multicolor_backend_theme/static/src/js/jquery_img_picker.js b/multicolor_backend_theme/static/src/js/jquery_img_picker.js new file mode 100644 index 000000000..bcd3e062c --- /dev/null +++ b/multicolor_backend_theme/static/src/js/jquery_img_picker.js @@ -0,0 +1,94 @@ +(function ($) { + $.fn.imagePicker = function (options) { + + // Define plugin options + var settings = $.extend({ + // Input name attribute + name: "", + + // Classes for styling the input + class: "form-control btn btn-default btn-block", + // Icon which displays in center of input + icon: "fa fa-plus" + }, options); + + // Create an input inside each matched element + return this.each(function () { + $(this).html(create_btn(this, settings)); + }); + + }; + + // Private function for creating the input element + function create_btn(that, settings) { + // The input icon element + var picker_btn_icon = $(''); +///home/cybrosys/odoo14 + if (settings.remove != true && settings.widget.active_theme.sidebar_image) { + var picker_btn_input = create_preview( + that, + settings.widget.active_theme.sidebar_image, + settings); + var picker_btn = picker_btn_input; + } + else { + // The actual file input which stays hidden + var picker_btn_input = $(''); + var picker_btn = $('
') + .append(picker_btn_icon) + .append(picker_btn_input); + } + // The actual element displayed + + + // File load listener + picker_btn_input.change(function () { + if ($(this).prop('files')[0]) { + // Use FileReader to get file + var reader = new FileReader(); + + // Create a preview once image has loaded + reader.onload = function (e) { + var preview = create_preview(that, e.target.result, settings); + $(that).html(preview); + settings.widget._onImageLoad(e.target.result); + }; + + // Load image + reader.readAsDataURL(picker_btn_input.prop('files')[0]); + } + }); + + return picker_btn + }; + + // Private function for creating a preview element + function create_preview(that, src, settings) { + + // The preview image + var picker_preview_image = $(''); + + // The remove image button + var picker_preview_remove = $(''); + + // The preview element + var picker_preview = $('
') + .append(picker_preview_image) + .append(picker_preview_remove); + + // Remove image listener + picker_preview_remove.click(function () { + settings.remove = true; + var btn = create_btn(that, settings); + $(that).html(btn); + settings.widget._onRemoveImage(); + }); + + return picker_preview; + }; + +}(jQuery)); + +$(document).ready(function () { + $('.img-picker').imagePicker({name: 'images'}); +}); diff --git a/multicolor_backend_theme/static/src/js/login_page.js b/multicolor_backend_theme/static/src/js/login_page.js new file mode 100644 index 000000000..a926c8405 --- /dev/null +++ b/multicolor_backend_theme/static/src/js/login_page.js @@ -0,0 +1,22 @@ +odoo.define('multicolor_backend_theme.LoginPage', function (require) { + "use strict"; + var rpc = require('web.rpc'); + + var selected_theme = {}; + + $(document).ready(function () { + $.ajax({ + url: '/active_theme', + type: 'get', + }).then(function (result) { + var colors = JSON.parse(result); + $('.cybro-login-btn').css({ + 'background-color': colors.theme_main_color, + 'color': colors.theme_font_color + }); + $('.cybro-super-btn').css({ + 'color': colors.view_font_color + }); + }); + }); +}); \ No newline at end of file diff --git a/multicolor_backend_theme/static/src/js/search_apps.js b/multicolor_backend_theme/static/src/js/search_apps.js new file mode 100644 index 000000000..5b0853084 --- /dev/null +++ b/multicolor_backend_theme/static/src/js/search_apps.js @@ -0,0 +1,95 @@ +/** @odoo-module */ + +import { NavBar } from "@web/webclient/navbar/navbar"; +import { registry } from "@web/core/registry"; +const { fuzzyLookup } = require('@web/core/utils/search'); +import { computeAppsAndMenuItems } from "@web/webclient/menus/menu_helpers"; +import core from 'web.core'; + +const commandProviderRegistry = registry.category("command_provider"); + +import { patch } from 'web.utils'; +patch(NavBar.prototype, 'multicolor_backend_theme/static/src/js/search_apps.js', { + + //-------------------------------------------------------------------------- + // Public + //-------------------------------------------------------------------------- + + /** + * @override + */ + setup() { + this._super(); + this._search_def = $.Deferred(); + let { apps, menuItems } = computeAppsAndMenuItems(this.menuService.getMenuAsTree("root")); + this._apps = apps; + this._searchableMenus = menuItems; + }, + + + mounted() { + this._super(); + this.$search_container = $(".search-container"); + this.$search_input = $(".search-input input"); + this.$search_results = $(".search-results"); + this.$app_menu = $(".app-menu"); + this.$dropdown_menu = $(".dropdown-menu"); + }, + + _searchMenusSchedule: function () { + this.$search_results.removeClass("o_hidden") + this.$app_menu.addClass("o_hidden"); + this._search_def.reject(); + this._search_def = $.Deferred(); + setTimeout(this._search_def.resolve.bind(this._search_def), 50); + this._search_def.done(this._searchMenus.bind(this)); + }, + + _searchMenus: function () { + var query = this.$search_input.val(); + if (query === "") { + this.$search_container.removeClass("has-results"); + this.$app_menu.removeClass("o_hidden"); + this.$search_results.empty(); + return; + } + var results = []; + + 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, + }); + }); + + 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.$search_container.toggleClass( + "has-results", + Boolean(results.length) + ); + this.$search_results.html( + core.qweb.render( + "multicolor_backend_theme.SearchResults", + { + results: results, + widget: this, + } + ) + ); + }, + +}); \ No newline at end of file diff --git a/multicolor_backend_theme/static/src/js/sidebar_menu.js b/multicolor_backend_theme/static/src/js/sidebar_menu.js new file mode 100644 index 000000000..4a835b5bb --- /dev/null +++ b/multicolor_backend_theme/static/src/js/sidebar_menu.js @@ -0,0 +1,87 @@ +odoo.define('multicolor_backend_theme.sidebar', function (require) { + 'use strict'; + + + //sidebar toggle effect + $(document).on("click", "#closeSidebar", function(event){ + $("#closeSidebar").hide(); + $("#openSidebar").show(); + }); + $(document).on("click", "#openSidebar", function(event){ + $("#openSidebar").hide(); + $("#closeSidebar").show(); + }); + $(document).on("click", "#openSidebar", function(event){ + $("#sidebar_panel").css({'display':'block'}); + $(".o_action_manager").css({'margin-left': '320px','transition':'all .1s linear'}); + + //add class in navbar + var navbar = $(".o_main_navbar"); + var navbar_id = navbar.data("id"); + $("nav").addClass(navbar_id); + navbar.addClass("small_nav"); + + //add class in action-manager + var action_manager = $(".o_action_manager"); + var action_manager_id = action_manager.data("id"); + $("div").addClass(action_manager_id); + action_manager.addClass("sidebar_margin"); + + //add class in top_heading + var top_head = $(".top_heading"); + var top_head_id = top_head.data("id"); + $("div").addClass(top_head_id); + top_head.addClass("sidebar_margin"); + }); + $(document).on("click", "#closeSidebar", function(event){ + $("#sidebar_panel").css({'display':'none'}); + $(".o_action_manager").css({'margin-left': '0px'}); + + //remove class in navbar + var navbar = $(".o_main_navbar"); + var navbar_id = navbar.data("id"); + $("nav").removeClass(navbar_id); + navbar.removeClass("small_nav"); + + //remove class in action-manager + var action_manager = $(".o_action_manager"); + var action_manager_id = action_manager.data("id"); + $("div").removeClass(action_manager_id); + action_manager.removeClass("sidebar_margin"); + + }); + + $(document).on("click", ".sidebar a", function(event){ + var menu = $(".sidebar a"); + var $this = $(this); + var id = $this.data("id"); + $("header").removeClass().addClass(id); + menu.removeClass("active"); + $this.addClass("active"); + + //sidebar close on menu-item click + $("#sidebar_panel").css({'display':'none'}); + $(".o_action_manager").css({'margin-left': '0px'}); + $("#closeSidebar").hide(); + $("#openSidebar").show(); + + //remove class in navbar + var navbar = $(".o_main_navbar"); + var navbar_id = navbar.data("id"); + $("nav").removeClass(navbar_id); + navbar.removeClass("small_nav"); + + //remove class in action-manager + var action_manager = $(".o_action_manager"); + var action_manager_id = action_manager.data("id"); + $("div").removeClass(action_manager_id); + action_manager.removeClass("sidebar_margin"); + + //remove class in top_heading + var top_head = $(".top_heading"); + var top_head_id = top_head.data("id"); + $("div").removeClass(top_head_id); + top_head.removeClass("sidebar_margin"); + }); + +}); diff --git a/multicolor_backend_theme/static/src/js/systray_theme_menu.js b/multicolor_backend_theme/static/src/js/systray_theme_menu.js new file mode 100644 index 000000000..c5b03496b --- /dev/null +++ b/multicolor_backend_theme/static/src/js/systray_theme_menu.js @@ -0,0 +1,583 @@ +/** @odoo-module **/ + +import SystrayMenu from 'web.SystrayMenu'; +import Widget from 'web.Widget'; +import Session from 'web.session'; +import { patch } from 'web.utils'; +import { LoadingIndicator } from "@web/webclient/loading_indicator/loading_indicator"; +import { Discuss } from "@mail/components/discuss/discuss"; +import { Chatter} from "@mail/components/chatter/chatter"; + + var core = require('web.core'); + var session = require('web.session'); + var QWeb = core.qweb; + var _t = core._t; + var rpc = require('web.rpc'); + var allowedExtensions = /(\.jpg|\.jpeg)$/i; + var ControlPanel = require('web.ControlPanel'); + var DropdownMenu = require('web.DropdownMenu'); + var FormRenderer = require('web.FormRenderer'); + var ListRenderer = require('web.ListRenderer'); + var KanbanRenderer = require('web.KanbanRenderer'); + var KanbanRecord = require('web.KanbanRecord'); + var AbstractController = require('web.AbstractController'); + var utils = require('web.utils'); + var web_settings_dashboard = require("website.backend.dashboard"); + var selected_theme = {}; + var themes_to_update = {}; + + $(document).ready(function () { + rpc.query({ + model: 'theme.config', + method: 'search_read', + domain: [['theme_active', '=', true]], + }).then(function (res) { + var index_str = -1 + if (res[0].sidebar_image){ + index_str= res[0].sidebar_image.indexOf('dataimage/jpegbase64') + } + var res_theme = '' + if (index_str > -1){ + res_theme = res[0].sidebar_image.replace('dataimage/jpegbase64','data:image/jpeg;base64,') + } + else{ + res_theme = res[0].sidebar_image + } + res[0].sidebar_image = res_theme + + selected_theme = res_theme; + }); + }); + var Temple = Widget.extend({ + name: 'activity_menu', + template:'multicolor_theme_systray', + events: { + 'click .themes_selector_button': '_onThemeSelectorClick', + 'change .theme_select': '_onThemeClick', + 'click .button-create': '_onThemeCreate', + 'click .button-remove': '_onThemeRemove', + 'click .button-apply': '_onThemeApply', + 'click .row.name i.fa-pencil': '_onNameEdit', + 'click .row.name i.fa-check': '_onNameSave', + 'change .row.name input#name': '_onNameSave', + 'keyup .row.name input#name': '_onNameChange' + }, + start:function(){ + this._loadDefaults(); + this._apply_theme(); + if (session.is_admin == false) { + $('.themes_selector_button').css('display', 'none'); + } + return this._super(); + }, + init: function (parent) { + this.theme_data = {}; + this.selected_theme = {}; + this.themes_by_id = {}; + return this._super.apply(this, arguments); + }, + willStart: function () { + var self = this; + var get_them_data = rpc.query({ + model: 'theme.config', + method: 'search_read', + args: [] + }); + return $.when(get_them_data).then(function (theme_data) { + self.theme_data = theme_data; + for (var i in theme_data) { + + if (theme_data[i].theme_active == true) { + + self.selected_theme = theme_data[i]; + selected_theme = theme_data[i]; + } + self.themes_by_id[theme_data[i].id] = theme_data[i]; + } + if (!self.selected_theme) { + self.selected_theme = theme_data[0]; + } + }); + }, + _loadDefaults: function () { + var self = this; + var item_theme = '' + var theme = '' + + if(self.themes_by_id[$('.theme_select').val()] != undefined){ + item_theme = self.themes_by_id[$('.theme_select').val()] + var index_of = -1 + if (item_theme.sidebar_image){ + index_of = item_theme.sidebar_image.indexOf('dataimage/jpegbase64') + } + if (index_of > -1){ + theme = item_theme.sidebar_image.replace('dataimage/jpegbase64','data:image/jpeg;base64,') + } + else{ + theme = item_theme.sidebar_image + } + item_theme.sidebar_image = theme + } + self.active_theme = item_theme + $('.img-picker').imagePicker({ + name: 'images', + widget: self + }); + var color_el = [ + 'theme_main_color', + 'theme_font_color', + 'view_font_color' + ]; + for (var i in color_el) { + var el_color = self.selected_theme[color_el[i]]; + $('#' + color_el[i]).loads({ + layout: 'hex', + flat: false, + enableAlpha: false, + color: el_color, + onSubmit: function(ev) { + var el_id = $(ev.el).attr('id'); + $('#'+el_id).css('background-color', '#' + ev.hex); + $('#'+el_id).val("#" + ev.hex); + $('#'+el_id).hides(); + self._onchangeColor($(ev.el), ev.hex); + }, + onLoaded: function(ev) { + $('.picker').css('color', 'green'); + }, + onChange: function(ev) { + var el_id = $(ev.el).attr('id'); + //$('#'+el_id).css('background-color', '#' + ev.hex); + $('#'+el_id).setColor(ev.hex, false); + $('.picker').css('color', 'red'); + } + }); + } + return; + }, + _onNameEdit: function () { + $('.row.name #name').removeAttr('readonly'); + $('.row.name #name').css('background-color', 'rgb(238, 250, 239)'); + }, + _onRemoveImage: function () { + //this._updateActiveTheme(); + this.themes_by_id[$('.theme_select').val()].sidebar_image = ''; + if (this.themes_by_id[$('.theme_select').val()].theme_active == true) { + this.selected_theme.sidebar_image = ''; + } + rpc.query({ + model: 'theme.config', + method: 'write', + args: [ + parseInt($('.theme_select').val()), + {'sidebar_image': ''} + ] + }).then(function () { + $('.button-apply.fa-check').css('color', 'green'); + themes_to_update[$('.theme_select').val()] = true; + }); + }, + _onNameSave: function () { + var name_inp = $('.row.name input#name').val().trim(); + if (this.themes_by_id[$('.theme_select').val()].theme_active == true) { + this.selected_theme.name = name_inp; + } + //this.selected_theme.name = name_inp; + this.themes_by_id[$('.theme_select').val()].name = name_inp; + rpc.query({ + model: 'theme.config', + method: 'write', + args: [ + parseInt($('.theme_select').val()), + {'name': name_inp} + ] + }).then(function () { + $('.button-apply.fa-check').css('color', 'green'); + themes_to_update[$('.theme_select').val()] = true; + }); + $('.row.name #name').attr('readonly', 'readonly'); + $('.row.name #name').css('background-color', 'white'); + $('.row.name i').replaceWith( + "" + ); + $('option#' + $('.theme_select').val()).text(name_inp); + }, + _onNameChange: function () { + $('.button-apply.fa-check').css('color', 'red'); + delete themes_to_update[$('.theme_select').val()]; + var name_inp = $('.row.name input#name').val().trim(); + if (name_inp && (this.themes_by_id[$('.theme_select').val()].name != name_inp)) { + $('.row.name i').replaceWith( + "" + ); + } + }, + _onThemeSelectorClick: function () { + $('.themes_selector').toggleClass('show'); + $('.row.name #name').attr('readonly', 'readonly'); + $('.row.name #name').css('background-color', 'white'); + }, + _onImageLoad: function (img_data) { + this._onchangeColor("image", img_data); + }, + _onchangeColor: function (element, data) { + var $apply = $('.button-apply.fa-check'); + + var current_theme = this.themes_by_id[$('.theme_select').val()]; + if (element == "image") { + $apply.css('color', 'red'); + delete themes_to_update[$('.theme_select').val()]; + current_theme.sidebar_image = data; + this.themes_by_id[current_theme.id].sidebar_image = data; + var index_str= data.indexOf('dataimage/jpegbase64') + if (index_str > -1){ + var img_data = data.replace('dataimage/jpegbase64','data:image/jpeg;base64,') + } + else{ + img_data = data + } + var vals = { + 'sidebar_image': img_data, + 'theme_id': current_theme.id, + }; + rpc.query({ + model: 'theme.config', + method: 'update_image', + args: [vals] + }).then(function () { + $apply.css('color', 'green'); + themes_to_update[$('.theme_select').val()] = true; + }); + + } + else if ('#' + data != current_theme[element.attr('id')]) { + $apply.css('color', 'red'); + current_theme[element.attr('id')] = '#' + data; + this.themes_by_id[current_theme.id][element.attr('id')] = '#' + data; + var el_id = element.attr('id'); + var vals = { + 'theme_id': current_theme.id, + 'key': el_id, + 'value': data + }; + rpc.query({ + model: 'theme.config', + method: 'update_color', + args: [vals] + }).then(function () { + $apply.css('color', 'green'); + }); + } + return; + }, + _onThemeClick: function () { + var $theme_el = QWeb.render( + 'multicolor_backend_theme.selected_theme', { + widget: { + selected_theme: this.themes_by_id[$('.theme_select').val()] + } + }); + $('div.theme_data').replaceWith($($theme_el)); + this._loadDefaults(); + if (themes_to_update[$('.theme_select').val()] == true) { + $('.button-apply.fa-check').css('color', 'green'); + } + else { + $('.button-apply.fa-check').css('color', '#4c4c4c'); + } + }, + _onThemeCreate: function () { + var self = this; + rpc.query({ + model: 'theme.config', + method: 'create_new_theme' + }).then(function (result) { + self._updateThemeData(result[1]); + var theme_el = QWeb.render( + 'multicolor_backend_theme.selected_theme', { + widget: { + selected_theme: self.themes_by_id[result[0]] + } + }); + $('div.theme_data').replaceWith($(theme_el)); + + var opt_el = ""; + $('.theme_select').append($(opt_el)); + $('.theme_select').val(result[0]); + self._loadDefaults(); + }); + }, + _onThemeRemove: function () { + var self = this; + var curr_theme = $('.theme_select').val(); + var theme_rec = this.themes_by_id[curr_theme]; + if (theme_rec.theme_active == true) { + alert("You cannot delete an active theme.") + } + else { + rpc.query({ + model: 'theme.config', + method: 'check_for_removal', + args: [curr_theme] + }).then(function (theme_data) { + if (theme_data) { + self._updateThemeData(theme_data); + + var theme_el = QWeb.render( + 'multicolor_backend_theme.selected_theme', { + widget: self + }); + $('div.theme_data').replaceWith($(theme_el)); + $(".theme_select option[value='" + theme_rec.id + "']").remove(); + $(".theme_select").val(self.selected_theme.id); + self._loadDefaults(); + } + }); + } + }, + _onThemeApply: function () { + var curr_theme_id = $('.theme_select').val(); + rpc.query({ + model: 'theme.config', + method: 'update_active_theme', + args: [curr_theme_id] + }).then(function () { + window.location.reload(); + }); + }, + _updateThemeData: function (theme_data) { + this.themes_by_id = {}; + this.theme_data = theme_data; + for (var i in theme_data) { + this.themes_by_id[theme_data[i].id] = theme_data[i]; + } + return; + }, + + _apply_theme: function () { + if (this.selected_theme) { + document.documentElement.style.setProperty("--theme_main_color",this.selected_theme.theme_main_color); + document.documentElement.style.setProperty("--theme_font_color",this.selected_theme.theme_font_color); + document.documentElement.style.setProperty("--view_font_color",this.selected_theme.view_font_color); + var index_of = -1 + if (this.selected_theme.sidebar_image){ + index_of = this.selected_theme.sidebar_image.indexOf('dataimage/jpegbase64') + } + var img = '' + if (index_of > -1){ + img = this.selected_theme.sidebar_image.replace('dataimage/jpegbase64','data:image/jpeg;base64,') + } + else{ + img = this.selected_theme.sidebar_image + } + + $('.sidebar-overlay-image').append( + ""); + $('.cybro-main-menu .input-group-text').css({ + 'background-color': this.selected_theme.theme_main_color, + 'border-color': this.selected_theme.theme_main_color, + 'color': this.selected_theme.theme_font_color, + }); + + $('.o_loading').css({ + 'background-color': this.selected_theme.theme_main_color, + 'color': this.selected_theme.theme_font_color, + }); + $('.btn-primary').css({ + 'background-color': this.selected_theme.theme_main_color, + 'color': this.selected_theme.theme_font_color, + }); + } + }, + + }); + patch(Discuss.prototype,'multicolor_backend_theme/static/src/js/systray_theme_menu.js',{ + _onDiscussItemClicked: function (ev) { + this._super(ev); + this.$('.o_mail_discuss_title_main').css({ + 'box-shadow': 'none', + }); + this.$('.o_mail_discuss_title_main.o_active').css({ + 'box-shadow': 'inset 3px 0 0 ' + selected_theme.theme_main_color, + }); + }, + _renderSidebar: function (options) { + var res = this._super(options); + res.find('.o_mail_discuss_title_main').css({ + 'box-shadow': 'none', + }); + res.find('.o_mail_discuss_title_main.o_active').css({ + 'box-shadow': 'inset 3px 0 0 ' + selected_theme.theme_main_color, + }); + + return res; + }, + }); + + + SystrayMenu.Items.push(Temple); + patch(ControlPanel.prototype,'multicolor_backend_theme/static/src/js/systray_theme_menu.js',{ + _update_search_view: function (searchview, isHidden, groupable, enableTimeRangeMenu) { + this._super(searchview, isHidden, groupable, enableTimeRangeMenu); + if (selected_theme) { + this.$('span.o_searchview_more').css({ + background: selected_theme.theme_main_color, + color: selected_theme.theme_font_color + }); + document.documentElement.style.setProperty("--theme_main_color",this.selected_theme.theme_main_color); + + this.$('.o_searchview .o_searchview_facet .o_searchview_facet_label').css({ + 'background-color': selected_theme.theme_main_color + }); + this.$('.o_searchview .o_searchview_input_container .o_searchview_facet .o_searchview_facet_label').css({ + 'color': selected_theme.theme_font_color + }); + // button properties + this.$('.btn-primary').css({ + 'background-color': selected_theme.theme_main_color, + 'border-color': selected_theme.theme_main_color, + 'color': selected_theme.theme_font_color + }); + + this.$('.btn-primary:hover').css({ + 'background-color': selected_theme.theme_main_color, + 'border-color': selected_theme.theme_main_color, + 'color': selected_theme.theme_font_color + }); + } + + }, + update: function (status, options) { + this._super(status, options); + this.$('button.o_dropdown_toggler_btn.btn.btn-secondary.dropdown-toggle').css({ + 'background-color': selected_theme.theme_main_color, + 'border-color': selected_theme.theme_main_color, + 'color': selected_theme.theme_font_color + }); + }, + /** + * Private function that renders a breadcrumbs' li Jquery element + */ + _render_breadcrumbs_li: function (bc, index, length) { + var $bc = this._super(bc, index, length); + $bc.find('a').css({ + 'color': selected_theme.view_font_color + }); + return $bc; + } + }); + FormRenderer.include({ + _renderTagSheet: function (node) { + var sheet = this._super(node); + sheet.find('.fa, .o_stat_value').css( + 'color', selected_theme.view_font_color); + return sheet; + }, + _renderHeaderButtons: function (node) { + var buttons_obj = this._super(node); + buttons_obj.find('.btn-primary').css({ + 'background-color': selected_theme.theme_main_color, + 'border-color': selected_theme.theme_main_color, + 'color': selected_theme.theme_font_color + }); + buttons_obj.find('.btn-primary:hover').css({ + 'background-color': selected_theme.theme_main_color, + 'border-color': selected_theme.theme_main_color, + 'color': selected_theme.theme_font_color + }); + + return buttons_obj; + }, + _renderTagHeader: function (node) { + var statusbar_el = this._super(node); + statusbar_el.find('button.btn.o_arrow_button.btn-primary.disabled').css({ + 'color': selected_theme.view_font_color + }); + return statusbar_el; + }, + _renderTagForm: function (node) { + var $res = this._super(node); + + $res.find('a').css( + 'color', selected_theme.view_font_color); + $res.find('.o_field_widget.o_field_many2one .o_external_button').css( + 'color', selected_theme.view_font_color); + $res.find('.btn-primary').css( + 'background-color', selected_theme.theme_main_color); + $res.find('.btn-primary').css( + 'color', selected_theme.theme_font_color); + + return $res; + }, + }); + ListRenderer.include({ + setRowMode: function (recordID, mode) { + var self = this; + return this._super(recordID, mode).then(function () { + self.$('.o_external_button').css('color', selected_theme.view_font_color); + }); + } + }); + KanbanRenderer.include({ + _renderView: function () { + return this._super().then(function () { + $('.btn-primary').css('background-color', + selected_theme.theme_main_color); + $('.btn-primary').css('color', + selected_theme.theme_font_color); + + }); + } + }); + KanbanRecord.include({ + _render: function () { + var self = this; + return this._super().then(function () { + self.$el.find('.o_kanban_image_fill_left.d-none.d-md-block').css({ + 'border': '2px solid ' + selected_theme.theme_main_color + }); + self.$el.find('.o_field_widget.badge.badge-primary').css({ + 'background': selected_theme.theme_main_color + }); + }); + } + }); + patch(DropdownMenu.prototype,'multicolor_backend_theme/static/src/js/systray_theme_menu.js',{ + _renderMenuItems: function () { + this._super(); + if (selected_theme) { + $('span.o_searchview_more').css({ + background: selected_theme.theme_main_color, + color: selected_theme.theme_font_color + }); + $('.o_searchview .o_searchview_facet .o_searchview_facet_label').css({ + 'background-color': selected_theme.theme_main_color + }); + $('.o_searchview .o_searchview_input_container .o_searchview_facet .o_searchview_facet_label').css({ + 'color': selected_theme.theme_font_color + }); + } + }, + }); + patch(AbstractController.prototype,'multicolor_backend_theme/static/src/js/systray_theme_menu.js',{ + _renderBanner: function () { + var self = this; + return this._super().then(function () { + if (selected_theme) { + self.$('.o_onboarding_wrap').css({ + 'background-color': selected_theme.theme_main_color + }); + var color_val = 'color:' + + selected_theme.theme_font_color + + ' !important;'; + self.$('.o_onboarding_wrap a,.o_onboarding_wrap p').attr( + 'style', color_val + ); + } + }); + }, + }); + + return Temple; + diff --git a/multicolor_backend_theme/static/src/scss/theme_style.scss b/multicolor_backend_theme/static/src/scss/theme_style.scss new file mode 100644 index 000000000..c07e448d4 --- /dev/null +++ b/multicolor_backend_theme/static/src/scss/theme_style.scss @@ -0,0 +1,202 @@ +@import url('https://fonts.googleapis.com/css?family=Poppins'); +body { + font-size: 14px; + font-family: lato, sans-serif +} + +h1, h2, h3, h4, h5, h6 { + margin: 0; + font-family: poppins, sans-serif +} + +p { + font-family: lato, sans-serif; + font-size: 15px; + line-height: 26px; + color: #444; + margin-bottom: 0 +} + +p img { + margin: 0 +} + +a, a:visited { + text-decoration: none; + transition: all .3s ease-in-out; + -webkit-transition: all .3s ease-in-out; + -moz-transition: all .3s ease-in-out; + -o-transition: all .3s ease-in-out; + outline: 0; + font-family: poppins, sans-serif +} + +a:hover { + text-decoration: none +} + +a:focus { + text-decoration: none; + outline: 0 +} + +p a, p a:visited { + line-height: inherit; + outline: 0 +} + +ul, ol { + margin-bottom: 0; + margin-top: 0; + padding: 0 +} + +ul { + margin: 0; + list-style-type: none +} + +ol { + list-style: decimal +} + +ol, ul.square, ul.circle, ul.disc { + margin-left: 0 +} + +ul.square { + list-style: square outside +} + +ul.circle { + list-style: circle outside +} + +ul.disc { + list-style: disc outside +} + +ul ul, ul ol, ol ol, ol ul { + margin: 0 +} + +ul ul li, ul ol li, ol ol li, ol ul li { + margin-bottom: 0 +} + +button { + cursor: pointer; + outline: none !important; + letter-spacing: 0 +} + +blockquote { + padding: 60px; + position: relative; + background: #853bfa +} + +blockquote:before { + content: '\f10d'; + font-family: fontawesome; + color: #fff; + font-size: 32px; + position: absolute; + left: 16px; + top: 46px +} + +blockquote p { + font-size: 17px; + color: #fff +} + +.blockquote-footer { + color: #fff +} +/*==============login================*/ +.oe_website_login_container { + padding: 1rem 5rem 5rem; + background: #f1f4f5; +} +.oe_login_form, .oe_signup_form, .oe_reset_password_form { + color: #fff !important; +} +.oe_login_form, .oe_signup_form, .oe_reset_password_form { + max-width: 360px; + position: relative; + margin: 50px auto; + border-radius: 7px; + padding: 3rem; + background: #ffffff; + box-shadow: 0 0 11px 0px #4477d4; +} + +.oe_login_form input { + height: 40px !important; + border-radius: 0 !important; + background: #fff !important; + border: 1px solid #ffffff; +} + +.oe_login_form i.fa.fa-database { + margin-left: 6px; +} + +.oe_login_form a.btn.btn-secondary { + display: flex; + justify-content: space-between; + align-items: center; + border-radius: 0 !important; +} +.cybro-login-btn { + height: 47px; + border-radius: 0; + //background: #3e8df7 !important; + border: none; + //color: #ffffff !important; + font-size: 16px; +} +.cybro-super-btn { + //color: #fff; + font-size: 14px; + text-decoration: none; +} +.cybro-super-btn:hover { + color: black !important; + text-decoration: none; +} +.cybro-bg footer{ + background: #303641 !important; + color: #fff; + padding-top: 2rem; +} +.cybro-bg .navbar { + background: #303641 !important; + color: #fff; +} +.cybro-bg footer a,.cybro-bg footer p,.cybro-bg header a,.cybro-bg header p { + color: #fff; +} +.cybro-bg .navbar-light .navbar-nav .nav-link { + color: #ffffff !important; +} +.homepage .dropdown-menu.js_usermenu.dropdown-menu-right.show { + background: #303641; +} +.oe_website_login_container .btn-secondary { + color: #FFFFFF; + background-color: #afafaf; + border-color: #afafae; +} +input { + border: 1px solid #e4eaec !important; +} +.oe_login_form, .oe_signup_form, .oe_reset_password_form { + color: #37474f !important; + font-weight: 300 !important; +} +form label { + font-weight: 300 !important; +} +/*==============//login================*/ diff --git a/multicolor_backend_theme/static/src/scss/theme_style_backend.scss b/multicolor_backend_theme/static/src/scss/theme_style_backend.scss new file mode 100644 index 000000000..6a4b09f28 --- /dev/null +++ b/multicolor_backend_theme/static/src/scss/theme_style_backend.scss @@ -0,0 +1,1706 @@ +@import url('https://fonts.googleapis.com/css?family=Roboto:300,400,500'); + +body { + font-size: 14px; + font-family: lato, sans-serif +} + +h1, h2, h3, h4, h5, h6 { + margin: 0; + font-family: 'Roboto', sans-serif; +} + +p { + font-family: lato, sans-serif; + font-size: 15px; + line-height: 26px; + color: #555; + margin-bottom: 0 +} + +p img { + margin: 0 +} + +a, a:visited { + text-decoration: none; + transition: all .3s ease-in-out; + -webkit-transition: all .3s ease-in-out; + -moz-transition: all .3s ease-in-out; + -o-transition: all .3s ease-in-out; + outline: 0; + font-family: 'Roboto', sans-serif; +} + +a:hover { + text-decoration: none +} + +a:focus { + text-decoration: none; + outline: 0 +} + +p a, p a:visited { + line-height: inherit; + outline: 0 +} + +ul, ol { + margin-bottom: 0; + margin-top: 0; + padding: 0 +} + +ul { + margin: 0; + list-style-type: none +} + +ol { + list-style: decimal +} + +ol, ul.square, ul.circle, ul.disc { + margin-left: 0 +} + +ul.square { + list-style: square outside +} + +ul.circle { + list-style: circle outside +} + +ul.disc { + list-style: disc outside +} + +ul ul, ul ol, ol ol, ol ul { + margin: 0 +} + +ul ul li, ul ol li, ol ol li, ol ul li { + margin-bottom: 0 +} + +input { + font-size: 14px !important; + border: 1px solid rgba(170, 170, 170, .3) !important; + padding: 10.72px 12.8px; + padding: .67rem .8rem; + display: block; + width: 100%; + height: 37px !important; + padding: 2.375rem .75rem; + font-size: 1rem; + line-height: 1.5; + color: #495057; + background-color: #fff; + background-clip: padding-box; + border: 1px solid #ced4da !important; + border-radius: 0 !important; + transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out; +} + +button { + cursor: pointer; + outline: none !important; + letter-spacing: 0 +} + +blockquote { + padding: 60px; + position: relative; + background: #853bfa +} + +blockquote:before { + content: '\f10d'; + font-family: fontawesome; + color: #fff; + font-size: 32px; + position: absolute; + left: 16px; + top: 46px +} + +blockquote p { + font-size: 17px; + color: #fff +} + +.blockquote-footer { + color: #fff +} + +/*Menu Bar*/ +.o_main_navbar .cybro-main-menu { + max-height: 100vh; + min-width: 100%; + overflow: auto; + margin-top: 0; + z-index: 99; + height: 100vh; + width: 280px; + overflow-y: scroll; + background: #30363F; + box-shadow: 2px 0 32px rgba(0, 0, 0, .05); + -webkit-transition: all .3s ease 0s; + transition: all .3s ease 0s; + transform: none !important; + border: none; +} + +i.fa.fa-th-large { + font-size: 26px !important; + color: #3e8df7 !important; + margin-top: 10px; +} + +.cybro-main-menu a.dropdown-item.o_app { + position: relative; + display: block; + color: #8d97ad !important; + font-size: 15px; + text-transform: capitalize; + padding: 15px !important; + letter-spacing: 0; + font-weight: 400; + padding-left: 32px !important; +} + +.cybro-main-menu a:hover { + color: #fff !important; + background: #f3f7fe !important; +} + +.dropdown-item.active, .dropdown-item:active { + color: #fff !important; + background: rgba(11, 105, 227, 0.05) !important; +} + +img.cybro-menuicon { + width: 28px; + margin-right: 10px; +} + +/*//Menu Bar*/ +/*Top bar*/ +.o_main_navbar { + position: relative; + height: 60px; + padding-top: 6px; + border-bottom: 1px solid #d8e3e7; + color: #fff !important; +} + +.o_main_navbar > ul > li > a, .o_main_navbar > ul > li > label { + height: 46px; + padding: 0 10px; + line-height: 46px; + transition: .3s all ease; +} + +.o_main_navbar > ul > li > a:hover, .o_main_navbar > ul > li > label:hover { + background: none !important; + border: none; + color: #000 !important; +} + +.o_main_navbar > a:hover, .o_main_navbar > a:focus, .o_main_navbar > button:hover, .o_main_navbar > button:focus { + background: none; + color: inherit; + color: #000 !important; +} + +li.o_user_menu a.dropdown-toggle { + display: -webkit-box; + display: -ms-flexbox; + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + padding: 0px 38px; + color: #fff !important; + height: 60px; + ffont-size: 14px; + font-family: 'Roboto', sans-serif; + margin-top: -5px !important; +} + +.o_user_menu a.dropdown-toggle:hover { + border: none; + color: #020202 !important; +} + +.o_main_navbar .o_user_menu .oe_topbar_avatar { + height: 35px; + transform: translateY(-2px); + margin-right: 9px; +} + +.cybro-main-menu a:hover { + color: #fff !important; + background: #f3f7fe !important; +} + +.btn { + display: inline-block; + font-weight: 300; + text-align: center; + white-space: nowrap; + vertical-align: middle; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + padding: .429rem 1rem; + font-size: 1rem; + line-height: 1.571429; + border-radius: .215rem; + border-top-left-radius: 0.215rem; + border-bottom-left-radius: 0.215rem; + -webkit-transition: background-color .15s ease-in-out, border-color .15s ease-in-out, -webkit-box-shadow .15s ease-in-out; + -o-transition: background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out; + transition: background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out; +} + +.o_form_view .o_form_statusbar > .o_statusbar_status > .o_arrow_button:not(:first-child):before, .o_form_view .o_form_statusbar > .o_statusbar_status > .o_arrow_button:not(:first-child):after { + content: " "; + display: block; + position: absolute; + top: 0; + left: auto; + bottom: auto; + right: -10px; + border-top: 19px solid transparent; + border-bottom: 23px solid transparent; + border-right: none; + border-left: 11px solid white; + transition: border 0.2s ease 0s; + -moz-transform: scale(0.9999); +} + +.o_form_view .o_form_statusbar > .o_statusbar_status > .o_arrow_button.btn-primary.disabled { + font-size: 11px; + background-color: #e9ecef; + cursor: default; +} +.o_form_view .o_form_statusbar > .o_statusbar_status > .o_arrow_button.disabled { + color: black; +} + +.o_control_panel { + border-bottom: 1px solid #d8e3e7; +} + +.o_form_view .o_form_statusbar { + border-bottom: 1px solid #d8e3e7; +} + +.o_mail_systray_item .o_notification_counter { + + background: #dc3545; + box-shadow: 0px 0px 2px -1px #000000; + +} + +.o_searchview .o_searchview_input { + border: none !important; + padding: 0px 0 0 0; +} + +.o_searchview { + + width: 96%; + display: block; + font-size: 1rem; + line-height: 1.571429; + color: #76838f; + background-color: #fff; + background-image: none; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #e4eaec; + border-top-color: rgb(228, 234, 236); + border-right-color: rgb(228, 234, 236); + border-bottom-color: rgb(228, 234, 236); + border-left-color: rgb(228, 234, 236); + border-radius: .215rem; + border-top-right-radius: 0.215rem; + border-bottom-right-radius: 0.215rem; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s; + -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; + transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; + +} + +.o_searchview_more { + position: absolute; + top: 0px !important; + left: auto; + bottom: auto; + right: 0px !important; + padding: 13px; +} + +.ui-autocomplete .ui-menu-item > a, .show .dropdown-menu .dropdown-item, .show .dropdown-menu .dropdown-header, .navbar-nav .show .dropdown-menu .dropdown-item, .navbar-nav .show .dropdown-menu .dropdown-header { + padding: 3px 20px; + transition: 0s !important; + color: #000 !important; +} + +.ui-autocomplete .ui-menu-item > a:hover { + display: block; + background-color: #1d517f !important; + color: #fff !important; +} +.ui-autocomplete .ui-menu-item.o_m2o_dropdown_option:hover { + background: #1d507f; +} +.ui-state-focus{ + background-color: #1d517f !important; + color: #fff !important; +} +.o_searchview_facet { + border-radius: 30px; + border: none !important; + margin: 6px 3px 6px 0 !important; +} + +.o_facet_values { + display: flex; + justify-content: center; + align-items: center; + border-radius: 30px !important; + background: #fff; + border-top-left-radius: 0px !important; + border-bottom-left-radius: 0px !important; +} + +span.o_searchview_facet_label { + border-radius: 30px; + border-top-right-radius: 0px; + border-bottom-right-radius: 0px; + padding: 3px 12px !important; +} + +.o_facet_values span { + padding: 0 2px 0 0px; + font-size: 12px; +} + +/*controll panel*/ + +.o_control_panel { + display: flex; + flex-flow: row wrap; + border-bottom: 1px solid darken($o-control-panel-background-color, 20%); + @include o-webclient-padding($top: 10px, $bottom: 10px); + background-color: $o-control-panel-background-color; + + > .breadcrumb { + width: 50%; + } + + &.o_breadcrumb_full > .breadcrumb { + width: 100%; + } + + > .o_cp_searchview { + width: 40%; + min-height: $o-cp-breadcrumb-height; + } + > .o_cp_left { + display: flex; + justify-content: space-between; + width: 50%; + margin-top: 5px; + } + > .o_cp_right { + display: flex; + width: 60%; + margin-top: 5px; + } +} + +.o_control_panel hr { + flex-basis: 100%; + background: #f0f4f5; +} + +.o_control_panel span.o_pager_counter { + font-size: 12px; +} + +.o_control_panel nav.o_cp_pager span.btn-group { + font-size: 12px !important; +} + +.o_control_panel button.fa.fa-chevron-left.btn.btn-secondary.o_pager_previous { + font-size: 12px; + padding-right: 4px; + padding-left: 5px; + padding-bottom: .8rem !important; + padding-top: .8rem !important; +} + +.o_control_panel button.fa.fa-chevron-right.btn.btn-secondary.o_pager_next { + font-size: 12px; + padding-left: 5px; + padding-right: 5px; + padding-bottom: .8rem !important; + padding-top: .8rem !important; +} + +.o_control_panel button.btn.btn-secondary.fa { + padding: 11px; + padding-bottom: .8rem !important; + padding-top: .8rem !important; + +} + +.o_control_panel button.o_dropdown_toggler_btn.btn.btn-secondary.dropdown-toggle { + margin-right: 8px; + padding: 1rem 1rem; + font-size: 12px; + border: 1px solid #e4eaec; + animation: show-navbar-dropdown .5s ease forwards; +} + +.o_control_panel .o_cp_left { + justify-content: flex-end; +} + +/*//Controll panel*/ +.o_calendar_container .o_calendar_sidebar_container .ui-datepicker table .ui-state-active { + background: none; + background-color: grey; + color: black; +} + +.o_calendar_container .o_calendar_sidebar_container .ui-datepicker table .ui-state-default:hover { + background: none; + background-color: darkgrey; + border-color: #7C7BAD; + color: white; +} + +/*form header*/ +.o_control_panel.o_breadcrumb_full .o_cp_right { + order: 2; + width: auto; +} + +.o_control_panel.o_breadcrumb_full hr { + flex-basis: 0; +} + +.o_control_panel.o_breadcrumb_full ol.breadcrumb { + order: 1; +} + +.o_control_panel.o_breadcrumb_full .o_cp_left { + order: 3; + width: 58%; + justify-content: space-between; +} + +.o_control_panel.o_breadcrumb_full { + justify-content: space-between; +} + +.o_control_panel.o_breadcrumb_full .o_cp_buttons { + order: 2; +} + +.o_control_panel.o_breadcrumb_full aside.o_cp_sidebar { + order: 1; +} + +/*//Form Header*/ +.btn-group.o_date_range_buttons.d-none.d-md-inline-flex.float-right { + float: left !important; + margin-bottom: 5px; +} + +.btn-group.d-none.d-md-inline-block.float-right { + float: left !important; +} + +a.btn.btn-primary { + color: #fff !important; + background-color:var(--theme_main_color) !important; + +} + +.oe_kanban_card.oe_kanban_global_click.o_kanban_record { + box-shadow: 1px 3px 12px 1px #d2c9eab5; + margin-right: 8px; + padding: .8rem 1rem; + font-size: 12px; + border: none !important; +} + +.o_view_controller { + background: #fff; +} + +.o_field_widget.badge.badge-primary { + padding: 5px 8px; + border-radius: 0px !important; +} + +.clearfix.o_form_sheet { + box-shadow: 1px 3px 12px 1px #d2c9eab5; + border: none !important; +} + +.modal.o_technical_modal .modal-content .modal-footer button.btn-primary { + background-color: grey; + color: black; +} + +.o_form_sheet_bg { + background: #ffffff !important; +} + +ul.nav.nav-tabs li.nav-item a { + padding: 1rem 1rem; +} + +.nav-tabs .nav-link.active, .nav-tabs .nav-item.show .nav-link { + background-color: #ffffff; + border: 1px solid #3e8df7; + border-bottom: 0; +} + +.o_form_view .o_horizontal_separator { + color: #000000 !important; + font-weight: 500 !important; +} + +::-webkit-scrollbar-track { + -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3); + border-radius: 10px; + background-color: #F5F5F5; + position: relative; + width: 5px; +} + +::-webkit-scrollbar { + width: 5px; + background-color: #F5F5F5; + position: absolute; +} + +::-webkit-scrollbar-thumb { + border-radius: 0px; + -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, .3); + background-color: #c8c8c8; +} + +.o_mail_discuss_content .o_mail_thread { + background: #f1f1f1; +} + +.o_mail_discuss .o_mail_discuss_content { + background-color: white; +} + +.o_mail_discuss .o_mail_discuss_sidebar { + background-color: #ffffff; + color: #000000; + box-shadow: 13px 9px 21px 20px #f1f1f1; + box-shadow: 12px 0px 4px 6px black; +} + +.o_mail_discuss .o_mail_discuss_sidebar .o_mail_discuss_item.o_active { + background-color: #ffffff; + //box-shadow: 1px 3px 12px 1px #e5e0f3d4; +} + +.o_mail_discuss .o_mail_discuss_sidebar .o_mail_discuss_item.o_mail_discuss_title_main { + padding: 1rem 16px !important; + margin-bottom: 2px; +} + +.o_mail_discuss .o_mail_discuss_sidebar .o_mail_discuss_item:hover { + background-color: #fff; + //color: #3e8df7; +} + +.o_mail_discuss .o_mail_discuss_sidebar .o_mail_sidebar_title h4.o_mail_open_channels:hover { + color: black; +} +.o_mail_discuss .o_mail_discuss_sidebar .o_mail_sidebar_title h4:hover { + color: black !important; +} + +span.fa.fa-cog.o_mail_channel_settings { + opacity: .5 !important; +} + +.o_mail_discuss .o_mail_discuss_sidebar .o_mail_sidebar_title .o_add:hover, .o_mail_discuss .o_mail_discuss_sidebar .o_mail_sidebar_title .o_add:focus, .o_mail_discuss .o_mail_discuss_sidebar .o_mail_sidebar_title .o_add.focus { + color: black; +} + +select { + border-radius: 0 !important; + height: 37px; +} + +.o_field_monetary.o_field_number.o_input.o_field_widget.o_required_modifier { + border-radius: 0; + height: 43px; +} + +.datepicker .table-sm > tbody > tr > td.active, .datepicker .table-sm > tbody > tr > td .active { + background-color: #3e8df7; + border-radius: 0 !important; +} + +.datepicker .table-sm > thead > tr > th { + border-radius: 0; +} + +.datepicker .table-sm > thead { + color: white; + background-color: #3e8df7; +} + +.datepicker .table th, .datepicker .table td { + vertical-align: top; + border-top: 1px solid #ffffff; +} + +.dropdown-menu.cybro-main-menu.show { + padding: 0 !important; + width: 240px !important; + top: 52px !important; + border-radius: 0px !important; +} + +a.dropdown-item.o_app.cybro-mainmenu { + width: 100% !important; + text-align: left !important; + display: flex; + justify-content: flex-start !important; + align-items: center !important; + flex-direction: row !important; + padding: 1rem 1rem 1rem 2rem !important; +} + +.o_menu_apps .dropdown-menu.show .o-app-icon { + max-width: 2rem !important; + margin-right: 11px; + border-radius: 100%; +} + +.cybro-main-menu .input-group { + order: 2; +} + +.cybro-main-menu input.form-control { + outline: none !important; + display: block; + padding: .429rem 1rem; + font-size: 1rem; + line-height: 1.571429; + color: #76838f; + font-size: 12px !important; + background-color: #fff; + background-image: none; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #e4eaec; + border-top-color: rgb(228, 234, 236); + border-right-color: rgb(228, 234, 236); + border-bottom-color: rgb(228, 234, 236); + border-left-color: rgb(228, 234, 236); + border-radius: .215rem; + border-top-right-radius: 0.215rem; + border-bottom-right-radius: 0.215rem; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s; + -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; + transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; +} + +.cybro-main-menu .input-group-prepend { + order: 2; +} + +.cybro-main-menu .input-group-text { + -webkit-box-shadow: none; + box-shadow: none; + border-radius: 3px !important; + border-top-left-radius: 0 !important; + border-bottom-left-radius: 0 !important; +} + +.search-input.col-md-10.ml-auto.mr-auto.mb-2 { + margin: 0 !important; + width: 100%; +} + +.cybro-main-menu a.o-menu-search-result.dropdown-item.col-12.ml-auto.mr-auto { + padding-left: 10px !important; + font-size: 12px; + text-align: left !important; + width: 100%; + padding-right: 0px !important; + flex-wrap: wrap; + word-break: normal; + color: #8d97ad !important; +} + +.cybro-main-menu .search-results.col-md-10.ml-auto.mr-auto { + background: #fff; + margin: 0px 0 !important; + color: #8d97ad !important; + flex: 100% !important; + max-width: 100%; +} + +.o_menu_apps .dropdown-menu.show .form-row { + width: 100%; + margin: 25px 0px 0px 0px !important; +} + +.o_kanban_record { + border: none !important; + box-shadow: 2px 4px 8px 2px rgba(67, 54, 251, .1) !important; +} + +.o_mail_discuss .o_mail_discuss_sidebar .o_mail_discuss_item.o_unread_message { + color: #6c757d !important; +} + +.o_mail_discuss .o_mail_discuss_sidebar .o_mail_discuss_item > .badge { + color: white; + background-color: #3e8df7 !important; +} + +/*.o_onboarding.o_onboarding_blue .o_onboarding_wrap { + background: #3e8df7 !important; + color: #fff; +}*/ + +/*.o_onboarding_step_title .mt16 a { + color: #fff !important; +}*/ + +/*h4.o_onboarding_step_title.mt16 a { + color: #fff !important; +}*/ + +/*.o_onboarding_step_content_info p { + color: #ececec !important; +}*/ + +.btn-info { + color: #fff !important; + background-color: #717171; + border-color: #717171; +} + +.o_main_navbar > .o_menu_brand { + display: block; + float: left; + margin-right: 35px; + user-select: none; + color: white; + font-size: 15px; + font-weight: 400; + line-height: 46px; + cursor: pointer; + background-color:var(--theme_main_color) !important; +} + +.o_mail_systray_item.o_no_notification > a { + opacity: 1; +} + +.dropdown-menu.cybro-main-menu.show { + transition: all .5s; + width: 260px; + background: #fff; + color: rgba(163, 175, 183, .9); + font-family: Roboto, sans-serif; + -webkit-box-shadow: 3px 0 6px 0 rgba(0, 0, 0, .05), 3px 0 15px 0 rgba(0, 0, 0, .1); + box-shadow: 3px 0 6px 0 rgba(0, 0, 0, .05), 3px 0 15px 0 rgba(0, 0, 0, .1); + -ms-transform: translate(-240px, 0); + -webkit-transform: translate3d(-240px, 0, 0); + transform: translate3d(-240px, 0, 0); + scrollbar-width: thin; +} + +.cybro-main-menu a.dropdown-item.o_app:hover { + + color: #37474f !important; + background-color: rgba(11, 105, 227, .05) !important; + +} + +.dropdown-menu.cybro-main-menu .search-input { + flex: 0 0 100% !important; + max-width: 100% !important; +} + .o_searchview .o_searchview_facet .o_searchview_facet_label{ + background-color:var(--theme_main_color) !important; + } +.badge-primary{ + background-color:var(--theme_main_color) !important; + color:var(--theme_font_color) !important; +} +.o_form_view .oe_button_box .oe_stat_button .o_button_icon{ + color:var(--theme_main_color) !important; + +} +.o_dashboards .o_website_dashboard .o_dashboard_common .o_inner_box{ + background-color:var(--theme_main_color) !important; + color:var(--theme_font_color) !important; +} +.o_form_view .oe_button_box .btn.oe_stat_button > .o_stat_info .o_stat_value, .o_form_view .oe_button_box .btn.oe_stat_button > span .o_stat_value { + color:var(--view_font_color) !important; + +} +.btn-link { + color:var(--view_font_color) !important; + +} +.o_form_view .o_form_uri > span:first-child{ + color:var(--view_font_color) !important; +} +.o_dashboards .o_website_dashboard div.o_box h2, .o_dashboards .o_website_dashboard div.o_box h4{ + color:var(--theme_main_color) !important; + +} +.sidebar_app_name { + color:var(--view_font_color) !important; +} +.fa.fa-comments { + color:var(--theme_main_color) !important; +} +.o_loading{ + + background-color:var(--theme_main_color) !important; + color:var(--theme_font_color) !important; +} +.o_search_panel .o_search_panel_category .o_search_panel_section_icon { + color:var(--theme_main_color) !important; + +} +.o_ChatWindowHeader { + background-color:var(--theme_main_color) !important; + color:var(--theme_font_color) !important; +} +.o_dashboard_sales .o_link_enable .o_highlight{ + color:var(--theme_main_color) !important; + +} +.o_field_widget.o_field_many2one .o_external_button{ + color:var(--view_font_color) !important; +}.o_form_view .o_form_statusbar > .o_statusbar_status > .o_arrow_button.btn-primary.disabled::after, .o_form_view .o_form_statusbar > .o_statusbar_status > .o_arrow_button.btn-primary.disabled::before { + border-left-color: var(--theme_main_color) !important; +} +.o_form_view .o_form_statusbar > .o_statusbar_status > .o_arrow_button:not(:first-child)::before, .o_form_view .o_form_statusbar > .o_statusbar_status > .o_arrow_button:not(:first-child)::after{ +border-top: 19px solid transparent; +border-bottom: 14px solid transparent; +} +.custom-control-input:checked ~ .custom-control-label::before { + color:var(--theme_font_color) !important; + background-color:var(--theme_main_color) !important; + background-color:var(--theme_main_color) !important; +} +.d-block { + color:var(--view_font_color) !important; +} +.btn-primary { + -webkit-box-shadow: none; + box-shadow: none; + background-color:var(--theme_main_color) !important; + color:var(--theme_font_color) !important; +} + +.btn-primary.focus, .btn-primary.hover, .btn-primary:focus, .btn-primary:hover { + -webkit-box-shadow: none; + box-shadow: none; +} + +.fa.fa-search { + color: #fff !important; +} + +/*Placholder*/ +::-webkit-input-placeholder { + color: #76838f; + font-size: 12px; +} + +::-moz-placeholder { + color: #76838f; + font-size: 12px; +} + +:-ms-input-placeholder { + color: #76838f; + font-size: 12px; +} + +::placeholder { + color: #76838f; + font-size: 12px; +} + +/*//place holder*/ +.form-control { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + height: 2.573rem; + font-weight: 100; + border-color: #e4eaec; + -webkit-box-shadow: none; + box-shadow: none; + -webkit-transition: -webkit-box-shadow .25s linear, border .25s linear, color .25s linear, background-color .25s linear; + -o-transition: box-shadow .25s linear, border .25s linear, color .25s linear, background-color .25s linear; + transition: box-shadow .25s linear, border .25s linear, color .25s linear, background-color .25s linear; + -webkit-appearance: none; + -moz-appearance: none; +} + +.form-control.focus, .form-control:focus { + border-color: #3e8ef7; + -webkit-box-shadow: none; + box-shadow: none; +} + +.o_searchview .o_searchview_autocomplete li.o-selection-focus { + background-color: #ffffff !important; +} + +.o_mail_discuss .o_mail_discuss_sidebar .o_mail_discuss_item.o_active { + //background-color: #212529; + //box-shadow: inset 3px 0 0 #3e8df7; +} + +.o_control_panel > .o_cp_right { + display: -webkit-box; + display: -webkit-flex; + display: flex; + width: 60%; + margin-top: 1px; +} + +.o_mail_discuss .o_mail_discuss_sidebar .o_mail_discuss_item.o_active { + //background-color: #e8e8e8; + //box-shadow: inset 3px 0 0 #3e8df7; +} + +.o_onboarding.o_onboarding_violet .o_onboarding_wrap { + background-image: -webkit-gradient(linear, left top, left bottom, from(rgba(96, 112, 195, 0.5)), to(#475DA4)); + background-image: -moz-linear-gradient(top, rgba(96, 112, 195, 0.5), #475DA4); + background-image: -ms-linear-gradient(top, rgba(96, 112, 195, 0.5), #475DA4); + background-image: -o-linear-gradient(top, rgba(96, 112, 195, 0.5), #475DA4); + background-image: linear-gradient(to bottom, rgba(96, 112, 195, 0.5), #475DA4); + box-shadow: inset 0 -7px 20px -5px rgba(0, 0, 0, 0.3); + background: #3e8df7; + background-color:var(--theme_main_color) !important; + +} + +.sidebar-menus { + + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + flex-direction: column; + padding: 1rem 0; + +} +.sidebar-menus a { + padding: .5rem 1rem; + display: flex; + justify-content: center; + align-items: center; + margin-bottom: 14px; + transition:.3s all; +} +.sidebar-menus a:hover { + background: #e3e3e3; +} +.sidebar-menus a.active { + background: + #d7d7d7; +} +.sidebar_panel .sidebar .sidebar_menu li a .sidebar_img { + max-width: 3rem; + margin-right: 8px; +} +.cybro-sidebar-qweb span.o-app-name { + display: none; +} + +.cybro-sidebar-qweb .sidebar-menus { + background: +#fff; +box-shadow: 2px 1px 5px 0px + rgba(103, 103, 103, 0.19); + position: relative; + z-index: 5; + height: 90vh; + overflow-y: auto; +} + +.cybro-sidebar-qweb .sidebar-menus img.o-app-icon { + width: 30px; + border-radius: 100%; +} + +.cybro-sidebar-qweb { + position: absolute; +} + +.o_required_modifier.o_input, .o_required_modifier .o_input { + background-color: #f7f7f7 !important; +} + +button.btn.btn-primary span { + font-weight: 400; +} + +.sidebar-user { + padding: 4rem 0.5rem; + width: 100%; + display: -webkit-box; + display: -webkit-flex; + display: flex; + color: #fff; + justify-content: center; + align-items: center; + background-size: cover; + background-position: center; + overflow: hidden; +} + +.sidebar-user img { + width: 50px; + border-radius: 30px; +} + +.sidebar-user img { + margin-right: 10px; +} + +.sidebar-overlay { + position: absolute; + width: 100%; + height: 207px; + background: #000; + opacity: .6; + z-index: 2; + margin-top: -64px; +} +.sidebar-overlay-image { + height: 207px !important; + margin-top: -64px; +} + +.sidebar-user span, .sidebar-user img { + position: relative; + z-index: 5; +} + +span.sidebar-username { + font-size: 12px; + color: rgba(255, 255, 255, .6); +} + +i.fa.fa-ellipsis-v { + color: #fff !important; +} + +.o_web_client .o_mobile_search .o_mobile_search_header { + height: 46px; + margin-bottom: 10px; + width: 100%; + background-color: #3e8df7; + color: white; +} + +.btn-secondary { + font-weight: 500; +} + +.btn-secondary.disabled, .btn-secondary:disabled { + color: #000000; + background-color: #fff; + border-color: #fff; + font-weight: 500 !important; +} + +button.btn.btn-secondary.o_mail_discuss_button_mark_all_read.disabled.d-none.d-md-inline-block { + font-weight: 600 !important; + color: black !important; + border: 1px solid #7b7b7b; +} + +.btn-secondary { + font-weight: 500; +} + +aside.o_cp_sidebar button.o_dropdown_toggler_btn.btn.btn-secondary.dropdown-toggle { + margin-right: 8px; + padding: 6px 9px !important; + font-size: 12px; + border: 1px solid #e4eaec; + border-radius: 5px; +} + +.o_cp_buttons { + order: 2; +} + +.o_control_panel.o_breadcrumb_full aside.o_cp_sidebar { + order: 1; +} + +.o_control_panel.o_breadcrumb_full .o_cp_left { + order: 3; + width: 58%; + justify-content: space-between; + padding: 10px 55px !important; +} + +li.o_user_menu span.oe_topbar_name { + display: none; +} + +.oe_kanban_global_click.o_kanban_record_has_image_fill.o_res_partner_kanban.o_kanban_record { + box-shadow: none !important; + border-bottom: 1px solid #f2f2f2 !important; + margin: 0; + align-items: center; +} + +.o_kanban_view.o_res_partner_kanban.o_kanban_ungrouped { + padding: 0; +} + +div#o_employee_main img { + border-radius: 100%; + box-shadow: none; +} + +.o_kanban_image_fill_left.d-none.d-md-block { + border-radius: 100%; + min-height: 60px !important; + min-width: 60px !important; + max-width: 60px; + max-height: 60px; + margin-left: 5px !important; +} + +.oe_kanban_global_click.o_kanban_record_has_image_fill.o_hr_kanban_record.o_kanban_record { + align-items: center; + box-shadow: none !important; + border-bottom: 1px solid #f2f2f2 !important; + margin: 0; + border-right: 1px solid #f2f2f2 !important; +} + +.o_kanban_view.o_hr_employee_kanban.o_kanban_ungrouped { + padding: 0; +} + +@keyframes show-navbar-dropdown { + 0% { + transition: visibility .25s, opacity .25s, transform .25s; + transform: translate(0, 10px) perspective(200px) rotateX(-2deg); + opacity: 0 + } + 100% { + transform: translate(0, 0); + opacity: 1 + } +} + +@keyframes hide-navbar-dropdown { + from { + opacity: 1 + } + to { + transform: translate(0, 10px); + opacity: 0 + } +} + +.o_main_navbar .show .dropdown-toggle { + background-color: transparent; +} + +.o_main_navbar .dropdown-menu.show { + max-height: 90vh; + min-width: 100%; + overflow: auto; + color:#747575; + margin-top: 0; + animation: show-navbar-dropdown .5s ease forwards; + pointer-events: auto; + opacity: 1; +} + +.o_menu_sections .dropdown-menu.show { + margin-top: 52px; +} + +ul.o_menu_sections li.show .dropdown-toggle { + color: #000 !important; +} + +/*theme selector start */ +.themes_selector { + display: none; +} + +.themes_selector.show { + display: block; + background: #fff; + position: absolute; + width: 350px; + z-index: 99; + box-shadow: 0 6px 12px -4px rgba(0, 0, 0, 0.25); + animation: show-navbar-dropdown .5s ease forwards; + pointer-events: auto; + opacity: 1; + border-radius: 3px; + color: #4c4c4c; +} + +.themes_selector .themes_list { + width: 100%; + border-right: 1px solid #ced3da; + padding: 0.2rem 1rem; + display: -webkit-box; + display: -webkit-flex; + display: -webkit-box; + display: -webkit-flex; + display: flex; + align-items: center; + justify-content: start; + font-size: 12px; +} +.selected_theme { + width: 100%; +} +.theme_data { + display: -webkit-box; + display: -webkit-flex; + display: -webkit-box; + display: -webkit-flex; + display: flex; + justify-content: space-between; + flex-wrap: wrap; + padding: 2rem 2.2rem; +} +.color_selector { + width: 100%; + display: flex; + justify-content: center; + padding-top: 1rem; + order: 4; +} +.color_selector > div { + display: flex; + flex-direction: column; +} +.theme_data p { + width: max-content; + margin: 0 !important; +} +.row.name div.cell { + display: -webkit-box; + display: -webkit-flex; + display: flex; + justify-content: left; + align-items: center; + width: 100%; +} +.row.name { + padding-bottom: 1rem; + width: 80% !important; + order: 1; +} +.row.name #name { + border: none !important; + height: auto !important; + padding: 0px; + width: auto; + font-size: 12px !important; + margin: 0px 0px; +} +.row.theme_image .cell { + width: 100%; + text-align: left; + justify-content: flex-start !important; +} +.cell .fa-check { + color: #0cbb5d; +} +.row.theme_main_color .color { + width: 30px; + height: 30px; + cursor: pointer; +} +.row.theme_font_color .color { + width: 30px; + height: 30px; + cursor: pointer; +} +.row.view_font_color .color { + width: 30px; + height: 30px; + cursor: pointer; +} +.header_buttons.row { + display: flex; + justify-content: space-around; + align-items: center; + font-size: 12px; +} + +.header_buttons.row { + display: flex; + justify-content: space-around; + align-items: center; + font-size: 12px; + border-bottom: 1px solid #ced4da; + box-shadow: 0 0 2px #ced4da; + padding: 0rem; + width: 100%; + margin: 0; +} +.header_buttons.row div { + flex-basis: 33.33%; + text-align: center; + padding: 1rem 0; + border-right: 1px solid #efefef; + cursor: pointer; +} +.row.name i{ + cursor: pointer; +} +.themes_selector.dropdown-menu-right .row { + margin: 0 !important; + width: 100%; +} +select.theme_select { + padding-left: 8px; + width: 100%; + margin-top: 1rem; + border: 1px solid #e4eaec; + color: #4c4c4c; + height: 27px; +} + +.img-picker img { + vertical-align: middle; + border-style: none; + width: 90%; + height: 60px; + float: left; + border: 1px solid #cacaca; +} +.image-container{ + display: flex; +} +.img-upload-btn { + position: relative; + overflow: hidden; + padding-top: 18% !important; +} +.img-picker input { + height: 60px !important; + max-height: 60px !important; + min-height: 60px !important; +} +.theme_extra { + order: 2; +} +.theme-active p { + padding: .1rem .8rem; + background: #00bd00; + color: #fff !important; + border-radius: 13px; + width: 48px; + float: right; +} +.row.theme_image { + order: 3; +} +.themes_selector.dropdown-menu-right .row p { + font-family: lato, sans-serif; + font-size: 11px; + line-height: 28px; + color: #676767; + margin-bottom: 0; +} + +.cp-color-picker { + z-index: 999; +} +.color { + width: 50px; + height: 50px; + border: 1px solid grey; +} + +.o_list_view .text-info td{ + color: #1d517f; +} +.sidebar-overlay-image { + position: absolute; + width: 100%; + height: 100%; + background: #000; + opacity: .6; + z-index: 2; +} + +.sidebar-overlay-image img { + margin-top: 0px; + border-radius: 0; + height: 100%; + width: auto; + min-width: 100%; + min-height: 100%; +} +.oe_tooltip_string { + background-color: grey !important; +} +.oe_tooltip_help { + font-size: 11px; +} + +/*theme selector end */ + +@media (min-width: 1200px) { + .o_mail_discuss .o_mail_discuss_content { + margin-left: 218px !important; + } + .o_mail_discuss .o_mail_discuss_sidebar { + width: 218px; + } +} + +@media (min-width: 767px) { + ul.o_menu_sections.collapse.show { + margin-top: 24px !important; + } + .o_web_client .o_mobile_search .o_mobile_search_header { + height: 46px; + margin-bottom: 10px; + width: 100%; + background-color: #3e8df7 !important; + color: white; + } + .o_searchview { + padding-right: 0 !important; + padding-left: 5px !important; + } + + button.o_enable_searchview.btn.fa.fa-search { + float: right !important; + height: 39px !important; + width: 33px !important; + background: #3e8df7 !important; + color: #fff !important; + border-top-right-radius: 30px !important; + border-bottom-right-radius: 30px !important; + } + .o_control_panel .btn.o_enable_searchview { + margin-left: 2%; + padding: 0px; + float: right; + background: white; + margin-right: -43px; + height: 40px; + border-top-right-radius: 20px; + margin-top: -1px; + border: 1px solid #f1f1f1; + padding: 11px; + border-bottom-right-radius: 20px; + } +} + +@media (max-width: 767px) { + .cybro-sidebar { + display: none; + } + .o_cp_left { + position: static !important; + bottom: 0px; + z-index: 0; + background: #fff; + width: auto; + padding: 0 !important; + } + .o_main_navbar > ul > li > a, .o_main_navbar > ul > li > label { + font-weight: 300; + } + .o_web_client .o_mobile_search .o_mobile_search_header .fa { + color: white !important; + } + .oe_website_login_container { + paddili.o_user_menu span.oe_topbar_name { + display: none; + } + ng: 1rem 1rem 5rem; + background: #f1f4f5; + } + .oe_login_form, .oe_signup_form, .oe_reset_password_form { + max-width: 99%; + position: relative; + margin: 50px auto; + border-radius: 7px; + padding: 3rem; + background: #ffffff; + box-shadow: 0 0 11px 0px #4477d4; + } +} + +.o_action_manager { + padding-left: 67px; +} +.o_cp_top { + width: 100%; +} +.o_cp_bottom { + width: 100%; +} + +.o_main_navbar { + background-color:var(--theme_main_color) !important; + +} + +#sidebar_panel { + height: calc(100% - 0%); + position: fixed; + background-color: #fff; + display: none; + width: 320px; + overflow-y: scroll; + -ms-overflow-style: none; /* Hide scrollbar for IE and Edge */ + scrollbar-width: none; /* Hide scrollbar for Firefox */ + z-index: 999; + padding-left: 16px; +} +#sidebar_panel::-webkit-scrollbar { + display: none; /* Hide scrollbar for Chrome, Safari and Opera */ +} +.sidebar_panel .sidebar { + padding: 0; + white-space: normal; + padding-bottom: 20px; + padding-top: 5px; +} +.sidebar_panel .sidebar_close { + text-align: end; + display: none; + position: sticky; + height: 35px; + padding-top: 5px; + top: 0; + background: #2a3042; + z-index: 1; +} +.sidebar_panel .sidebar_close a#closeSidebar { + font-size: 18px; + margin-right: 10px; + color: #ffffff; + opacity: .3; +} +.fa.fa-bars.fa-lg { + padding: 16px; +} +.search_icons > .o-menu-search-result{ + width: 100%; + height: auto; + background-size: contain !important; + background-position: left !important; + background-repeat: no-repeat !important; + margin-top: 5px !important; + margin-bottom: 5px !important; + padding-left: 30px; + font-size: 12px; + white-space: normal; + word-wrap: normal; + line-height: 140%; + + &::before{ + content: '' !important; + } +} +.search-results{ + max-height: calc(100vh - 47px - 6em); + padding-right: 5px; + padding-left: 5px; + overflow-y: scroll; + margin-left: 0px !important; + margin-right: 0px !important; +} +.fa.fa-paint-brush { + padding: 14px; +} +div.o_boolean_toggle.custom-control.custom-checkbox > input.custom-control-input:checked + label.custom-control-label::before { + background-color:var(--theme_main_color) !important; +} +.text-primary { + color:var(--theme_main_color) !important; +} +.bg-primary { + background-color:var(--theme_main_color) !important; + color:var(--theme_font_color); +} +.oe_kanban_action.oe_kanban_action_a { + color:var(--theme_main_color) !important; + +} +.o_purchase_dashboard .table > thead > tr > td.o_main:hover, .o_purchase_dashboard .table tbody > tr > td.o_main { + background-color:var(--theme_main_color) !important; +} +.o_purchase_dashboard .table > thead > tr > td.o_main, .o_purchase_dashboard .table tbody > tr > td.o_main { + background-color:var(--theme_main_color) !important; +} +.o_calendar_view .o_calendar_widget .fc-timeGridDay-view .fc-widget-header.fc-today, .o_calendar_view .o_calendar_widget .fc-timeGridWeek-view .fc-widget-header.fc-today { + + background-color:var(--theme_main_color) !important; + color: var(--theme_font_color) !important; +} +.mr-2 { + color:var(--theme_main_color) !important; +} +i.o_MessagingMenu_icon.fa.fa-comments { + color: #fff !important; +} +li.dropdown { + display: flex; +} +.o_action_manager.sidebar_margin { + margin-left: 255px !important; +} diff --git a/multicolor_backend_theme/static/src/wcolpick/wcolpick.css b/multicolor_backend_theme/static/src/wcolpick/wcolpick.css new file mode 100644 index 000000000..6dc3ad5d8 --- /dev/null +++ b/multicolor_backend_theme/static/src/wcolpick/wcolpick.css @@ -0,0 +1,1121 @@ +/* +Wcolpick - A Web Color Picker + +Copyright (C) 2017-2020 devpelux (Salvatore Peluso) +Find me on github: https://github.com/devpelux +Dual licensed under GPL v3.0 and MIT licenses. +(Based on Jose Vargas' Color Picker) + +Description, how to use, and examples: https://github.com/devpelux/wcolpick + +Last Edit: 2020/12/06 18:53 +*/ + + + +/* //////////////////////////////////////// + STANDARD LAYOUTS +////////////////////////////////////////*/ + + +/*////////// DEFAULT LAYOUTS //////////*/ + +/*//// FULL LAYOUT ////*/ +/*Main container*/ +.wcolpick { + position: absolute; + display: none; + width: 549px; + height: 276px; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + overflow: hidden; + text-align: left; + font-family: Arial; + direction: ltr; + border: 1px solid; + -webkit-border-radius: 7.5px; + -moz-border-radius: 7.5px; + border-radius: 7.5px; + z-index: 10; + /*Prevents selecting text when dragging the selectors*/ + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + -o-user-select: none; + user-select: none; +} +/*Color selector*/ +.wcolpick_color { + position: absolute; + top: 5px; + left: 5px; + width: 225px; + height: 225px; + overflow: hidden; + outline: 1px solid; + cursor: crosshair; +} +.wcolpick_color_overlay1 { + position: absolute; + top: 0px; + left: 0px; + width: 225px; + height: 225px; + filter: progid:DXImageTransform.Microsoft.gradient(GradientType=1,startColorstr='#ffffff',endColorstr='#00ffffff'); /* IE6-9 */ + -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=1,startColorstr='#ffffff',endColorstr='#00ffffff')"; /* IE8 */ + background: -webkit-linear-gradient(left, rgba(255,255,255,1) 0%, rgba(255,255,255,0) 100%); /* Chrome10+,Safari5.1+ */ + background: -moz-linear-gradient(left, rgba(255,255,255,1) 0%, rgba(255,255,255,0) 100%); /* FF3.6+ */ + background: -ms-linear-gradient(left, rgba(255,255,255,1) 0%, rgba(255,255,255,0) 100%); /* IE10+ */ + background: -o-linear-gradient(left, rgba(255,255,255,1) 0%, rgba(255,255,255,0) 100%); /* Opera 11.10+ */ + background: linear-gradient(to right, rgba(255,255,255,1) 0%, rgba(255,255,255,0) 100%); +} +.wcolpick_color_overlay2 { + position: absolute; + top: 0px; + left: 0px; + width: 225px; + height: 225px; + filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#00000000',endColorstr='#000000'); /* IE6-9 */ + -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#00000000',endColorstr='#000000')"; /* IE8 */ + background: -webkit-linear-gradient(top, rgba(0,0,0,0) 0%, rgba(0,0,0,1) 100%); /* Chrome10+,Safari5.1+ */ + background: -moz-linear-gradient(top, rgba(0,0,0,0) 0%, rgba(0,0,0,1) 100%); /* FF3.6+ */ + background: -ms-linear-gradient(top, rgba(0,0,0,0) 0%, rgba(0,0,0,1) 100%); /* IE10+ */ + background: -o-linear-gradient(top, rgba(0,0,0,0) 0%, rgba(0,0,0,1) 100%); /* Opera 11.10+ */ + background: linear-gradient(to bottom, rgba(0,0,0,0) 0%, rgba(0,0,0,1) 100%); +} +/*Color selector indicator*/ +.wcolpick_selector_outer { + position: absolute; + width: 14px; + height: 14px; + margin: -8px 0px 0px -8px; + background: none; + border: 1px solid black; + -webkit-border-radius: 50%; + -moz-border-radius: 50%; + border-radius: 50%; +} +.wcolpick_selector_inner { + position: absolute; + width: 12px; + height: 12px; + background: none; + border: 1px solid white; + -webkit-border-radius: 50%; + -moz-border-radius: 50%; + border-radius: 50%; +} +/*Hue bar*/ +.wcolpick_hue { + position: absolute; + top: 5px; + left: 244px; + width: 20px; + height: 225px; + cursor: ns-resize; +} +.wcolpick_hue_underlay { + position: absolute; + top: 0px; + left: 0px; + width: 100%; + height: 100%; + outline: 1px solid; +} +.wcolpick_hue_overlay { + position: absolute; + top: 0px; + left: 0px; + width: 100%; + height: 100%; +} +/*Hue bar indicator*/ +.wcolpick_hue_arrs { + position: absolute; + left: -7px; + width: 34px; + height: 6px; + margin-top: -5px; +} +.wcolpick_hue_larr { + position: absolute; + width: 0px; + height: 0px; + border-style: solid; + border-color: transparent transparent transparent black; + border-width: 5px 0px 5px 6px; +} +.wcolpick_hue_rarr { + position: absolute; + right: 0px; + width: 0px; + height: 0px; + border-style: solid; + border-color: transparent black transparent transparent; + border-width: 5px 6px 5px 0px; +} +/*Alpha bar*/ +.wcolpick_alpha { + position: absolute; + top: 244px; + left: 5px; + width: 225px; + height: 20px; + cursor: ew-resize; +} +.wcolpick_alpha_underlay { + position: absolute; + top: 0px; + left: 0px; + width: 100%; + height: 100%; + outline: 1px solid; +} +.wcolpick_alpha_overlay { + position: absolute; + top: 0px; + left: 0px; + width: 100%; + height: 100%; +} +/*Alpha bar indicator*/ +.wcolpick_alpha_arrs { + position: absolute; + top: -7px; + left: 225px; + width: 6px; + height: 34px; + margin-left: -5px; +} +.wcolpick_alpha_darr { + position: absolute; + top: 0px; + width: 0px; + height: 0px; + border-style: solid; + border-color: black transparent transparent transparent; + border-width: 6px 5px 0px 5px; +} +.wcolpick_alpha_uarr { + position: absolute; + bottom: 0px; + width: 0px; + height: 0px; + border-style: solid; + border-color: transparent transparent black transparent; + border-width: 0px 5px 6px 5px; +} +/*Fields*/ +.wcolpick_field, .wcolpick_hex_field { + position: absolute; + width: 75px; + height: 30px; + overflow: hidden; + font-size: 11px; + border: 1px solid; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} +.wcolpick_hex_field { top: 115px; left: 467px; } +.wcolpick_rgb_r { top: 115px; left: 291px; } +.wcolpick_rgb_g { top: 156px; left: 291px; } +.wcolpick_rgb_b { top: 197px; left: 291px; } +.wcolpick_hsb_h { top: 115px; left: 379px; } +.wcolpick_hsb_s { top: 156px; left: 379px; } +.wcolpick_hsb_b { top: 197px; left: 379px; } +.wcolpick_alpha_field { top: 238px; left: 291px; } +/*Fields' labels*/ +.wcolpick_field_letter { + position: absolute; + left: -1px; + height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + min-width: 10px; + max-width: 10px; + line-height: 30px; + text-align: center; + font-weight: bold; + z-index: 1; +} +/*Fields' text inputs*/ +.wcolpick_field input, .wcolpick_hex_field input { + position: absolute; + right: 15px; + height: 30px; + margin: 0px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + padding: 0px; + line-height: 30px; + text-align: right; + font-family: Arial; + font-size: 11px; + border: none; + outline: none; +} +.wcolpick_hex_field input { right: 3px; } +/*Fields on focus*/ +.wcolpick_focus { border-color: black; } +/*Fields' up/down arrows*/ +.wcolpick_field_arrs { + position: absolute; + top: 0px; + right: 0px; + width: 7px; + height: 30px; + cursor: ns-resize; +} +.wcolpick_field_uarr { + position: absolute; + top: 4px; + width: 0px; + height: 0px; + border-style: solid; + border-color: transparent transparent black transparent; + border-width: 0px 3px 3px 3px; +} +.wcolpick_field_darr { + position: absolute; + bottom: 4px; + width: 0px; + height: 0px; + border-style: solid; + border-color: black transparent transparent transparent; + border-width: 3px 3px 0px 3px; +} +/*Fields' up/down arrows while using them*/ +.wcolpick_changing .wcolpick_field_uarr { border-bottom-color: black; } +.wcolpick_changing .wcolpick_field_darr { border-top-color: black; } +/*New and Current color*/ +.wcolpick_colors { + position: absolute; + top: 5px; + left: 291px; + width: 253px; + height: 102px; +} +.wcolpick_colors_underlay { + position: absolute; + top: 0px; + left: 0px; + width: 100%; + height: 100%; + outline: 1px solid; +} +.wcolpick_new_color { + position: absolute; + top: 0px; + left: 0px; + width: 100%; + height: 50%; +} +.wcolpick_current_color { + position: absolute; + top: 50%; + left: 0px; + width: 100%; + height: 50%; +} +/*Submit button*/ +.wcolpick_submit { + position: absolute; + top: 238px; + left: 511px; + width: 31px; + height: 31px; + display: flex; + -webkit-justify-content: center; + -moz-justify-content: center; + justify-content: center; + -webkit-align-items: center; + align-items: center; + border: 1px solid; + -webkit-border-radius: 50%; + -moz-border-radius: 50%; + border-radius: 50%; +} +.wcolpick_submit:hover { opacity: 0.6; cursor: pointer; } +.wcolpick_tear { + width: 15px; + height: 15px; + margin-top: 2px; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + border: none; + -webkit-border-radius: 80% 0 55% 50% / 55% 0 80% 50%; + -moz-border-radius: 80% 0 55% 50% / 55% 0 80% 50%; + border-radius: 80% 0 55% 50% / 55% 0 80% 50%; + -webkit-transform: rotateZ(-45deg); + -moz-transform: rotateZ(-45deg); + -ms-transform: rotateZ(-45deg); + -o-transform: rotateZ(-45deg); + transform: rotateZ(-45deg); +} +/*Checkerboards*/ +.wcolpick_checkerboards { + -webkit-background-size: 10px 10px; /* Chrome10+,Safari5.1+ */ + -moz-background-size: 10px 10px; /* FF3.6+ */ + -o-background-size: 10px 10px; /* Opera 11.10+ */ + background-size: 10px 10px; +} + +/*//// FULL LAYOUT - NO SUBMIT BUTTON ////*/ +.wcolpick_full_ns .wcolpick_new_color { height: 100%; } +.wcolpick_full_ns .wcolpick_current_color, .wcolpick_full_ns .wcolpick_submit { display: none; } + +/*//// RGBHEX LAYOUT ////*/ +.wcolpick_rgbhex { width: 461px; } +.wcolpick_rgbhex .wcolpick_hex_field { left: 379px; } +.wcolpick_rgbhex .wcolpick_hsb_h, .wcolpick_rgbhex .wcolpick_hsb_s, .wcolpick_rgbhex .wcolpick_hsb_b { display: none; } +.wcolpick_rgbhex .wcolpick_colors { width: 165px; } +.wcolpick_rgbhex .wcolpick_submit { left: 423px; } + +/*//// RGBHEX LAYOUT - NO SUBMIT BUTTON ////*/ +.wcolpick_rgbhex_ns .wcolpick_new_color { height: 100%; } +.wcolpick_rgbhex_ns .wcolpick_current_color, .wcolpick_rgbhex_ns .wcolpick_submit { display: none; } + +/*//// HEX LAYOUT ////*/ +.wcolpick_hex { width: 373px; } +.wcolpick_hex .wcolpick_hex_field { left: 291px; } +.wcolpick_hex .wcolpick_rgb_r, .wcolpick_hex .wcolpick_rgb_g, .wcolpick_hex .wcolpick_rgb_b, .wcolpick_hex .wcolpick_hsb_h, .wcolpick_hex .wcolpick_hsb_s, .wcolpick_hex .wcolpick_hsb_b, .wcolpick_hex .wcolpick_alpha_field { display: none; } +.wcolpick_hex .wcolpick_colors { width: 77px; } +.wcolpick_hex .wcolpick_submit { left: 313px; } + +/*//// HEX LAYOUT - NO SUBMIT BUTTON ////*/ +.wcolpick_hex_ns .wcolpick_hex_field { top: 238px; } +.wcolpick_hex_ns .wcolpick_new_color { height: 100%; } +.wcolpick_hex_ns .wcolpick_current_color, .wcolpick_hex_ns .wcolpick_submit { display: none; } + +/*//// ALL SUB-LAYOUTS - NO ALPHA CHANNEL ////*/ +/*full layout*/ +.wcolpick_noalpha { height: 235px; } +.wcolpick_noalpha .wcolpick_alpha, .wcolpick_noalpha .wcolpick_alpha_field { display: none; } +.wcolpick_noalpha .wcolpick_submit { top: 197px; } +/*hex layout - no submit button*/ +.wcolpick_hex_noalpha_ns .wcolpick_hex_field { top: 197px; } + + +/*////////// COMPACT LAYOUTS //////////*/ + +/*//// FULL LAYOUT ////*/ +.wcolpick_compact { width: 277px; height: 392px; } +.wcolpick_compact .wcolpick_field { width: 43px; } +.wcolpick_compact .wcolpick_hex_field { top: 355px; left: 5px; width: 64px; } +.wcolpick_compact .wcolpick_rgb_r { top: 277px; left: 77px; } +.wcolpick_compact .wcolpick_rgb_g { top: 277px; left: 127px; } +.wcolpick_compact .wcolpick_rgb_b { top: 277px; left: 177px; } +.wcolpick_compact .wcolpick_hsb_h { top: 317px; left: 77px; } +.wcolpick_compact .wcolpick_hsb_s { top: 317px; left: 127px; } +.wcolpick_compact .wcolpick_hsb_b { top: 317px; left: 177px; } +.wcolpick_compact .wcolpick_alpha_field { top: 277px; left: 227px; } +.wcolpick_compact .wcolpick_field input { right: 10px; } +.wcolpick_compact .wcolpick_hex_field input { right: 2px; } +.wcolpick_compact .wcolpick_colors { top: 277px; left: 5px; width: 66px; height: 72px; } +.wcolpick_compact .wcolpick_submit { top: 354px; left: 239px; } + +/*//// FULL LAYOUT - NO SUBMIT BUTTON ////*/ +.wcolpick_compact_full_ns .wcolpick_current_color, .wcolpick_compact_full_ns .wcolpick_submit { display: none; } + +/*//// RGBHEX LAYOUT ////*/ +.wcolpick_compact_rgbhex { height: 354px; } +.wcolpick_compact_rgbhex .wcolpick_hex_field { top: 317px; left: 77px; } +.wcolpick_compact_rgbhex .wcolpick_hsb_h, .wcolpick_compact_rgbhex .wcolpick_hsb_s, .wcolpick_compact_rgbhex .wcolpick_hsb_b { display: none; } +.wcolpick_compact_rgbhex .wcolpick_submit { top: 316px; } + +/*//// RGBHEX LAYOUT - NO SUBMIT BUTTON ////*/ +.wcolpick_compact_rgbhex_ns .wcolpick_current_color, .wcolpick_compact_rgbhex_ns .wcolpick_submit { display: none; } + +/*//// HEX LAYOUT ////*/ +.wcolpick_compact_hex { height: 314px; } +.wcolpick_compact_hex .wcolpick_hex_field { top: 277px; left: 101px; } +.wcolpick_compact_hex .wcolpick_rgb_r, .wcolpick_compact_hex .wcolpick_rgb_g, .wcolpick_compact_hex .wcolpick_rgb_b, .wcolpick_compact_hex .wcolpick_hsb_h, .wcolpick_compact_hex .wcolpick_hsb_s, .wcolpick_compact_hex .wcolpick_hsb_b, .wcolpick_compact_hex .wcolpick_alpha_field { display: none; } +.wcolpick_compact_hex .wcolpick_colors { width: 90px; height: 32px; } +.wcolpick_compact_hex .wcolpick_new_color { width: 50%; height: 100%; } +.wcolpick_compact_hex .wcolpick_current_color { top: 0; left: 50%; width: 50%; height: 100%; } +.wcolpick_compact_hex .wcolpick_submit { top: 276px; } + +/*//// HEX LAYOUT - NO SUBMIT BUTTON ////*/ +.wcolpick_compact_hex_ns .wcolpick_new_color { width: 100%; } +.wcolpick_compact_hex_ns .wcolpick_current_color, .wcolpick_compact_hex_ns .wcolpick_submit { display: none; } + +/*//// ALL SUB-LAYOUTS - NO ALPHA CHANNEL ////*/ +/*full layout*/ +.wcolpick_compact_noalpha { height: 359px; } +.wcolpick_compact_noalpha .wcolpick_field { width: 60px; } +.wcolpick_compact_noalpha .wcolpick_hex_field { top: 322px; } +.wcolpick_compact_noalpha .wcolpick_rgb_r { top: 244px; } +.wcolpick_compact_noalpha .wcolpick_rgb_g { top: 244px; left: 144px; } +.wcolpick_compact_noalpha .wcolpick_rgb_b { top: 244px; left: 211px; width: 59px; } +.wcolpick_compact_noalpha .wcolpick_hsb_h { top: 284px; } +.wcolpick_compact_noalpha .wcolpick_hsb_s { top: 284px; left: 144px; } +.wcolpick_compact_noalpha .wcolpick_hsb_b { top: 284px; left: 211px; width: 59px; } +.wcolpick_compact_noalpha .wcolpick_colors { top: 244px; } +.wcolpick_compact_noalpha .wcolpick_submit { top: 321px; } +/*rgbhex layout*/ +.wcolpick_compact_rgbhex_noalpha { height: 321px; } +.wcolpick_compact_rgbhex_noalpha .wcolpick_hex_field { top: 284px; width: 60px; } +.wcolpick_compact_rgbhex_noalpha .wcolpick_submit { top: 283px; } +/*hex layout*/ +.wcolpick_compact_hex_noalpha { height: 281px; } +.wcolpick_compact_hex_noalpha .wcolpick_hex_field { top: 244px; width: 60px; } +.wcolpick_compact_hex_noalpha .wcolpick_submit { top: 243px; } + + +/*////////// STANDARD LAYOUTS - RESPONSIVE //////////*/ + +@media screen and (max-width: 650px) { + + /*//// FULL LAYOUT ////*/ + .wcolpick { width: 277px; height: 392px; } + .wcolpick_field { width: 43px; } + .wcolpick_hex_field { top: 355px; left: 5px; width: 64px; } + .wcolpick_rgb_r { top: 277px; left: 77px; } + .wcolpick_rgb_g { top: 277px; left: 127px; } + .wcolpick_rgb_b { top: 277px; left: 177px; } + .wcolpick_hsb_h { top: 317px; left: 77px; } + .wcolpick_hsb_s { top: 317px; left: 127px; } + .wcolpick_hsb_b { top: 317px; left: 177px; } + .wcolpick_alpha_field { top: 277px; left: 227px; } + .wcolpick_field input { right: 10px; } + .wcolpick_hex_field input { right: 2px; } + .wcolpick_colors { top: 277px; left: 5px; width: 66px; height: 72px; } + .wcolpick_submit { top: 354px; left: 239px; } + + /*//// FULL LAYOUT - NO SUBMIT BUTTON ////*/ + .wcolpick_full_ns .wcolpick_current_color, .wcolpick_full_ns .wcolpick_submit { display: none; } + + /*//// RGBHEX LAYOUT ////*/ + .wcolpick_rgbhex { height: 354px; } + .wcolpick_rgbhex .wcolpick_hex_field { top: 317px; left: 77px; } + .wcolpick_rgbhex .wcolpick_hsb_h, .wcolpick_rgbhex .wcolpick_hsb_s, .wcolpick_rgbhex .wcolpick_hsb_b { display: none; } + .wcolpick_rgbhex .wcolpick_colors { width: 66px; } + .wcolpick_rgbhex .wcolpick_submit { top: 316px; left: 239px; } + + /*//// RGBHEX LAYOUT - NO SUBMIT BUTTON ////*/ + .wcolpick_rgbhex_ns .wcolpick_current_color, .wcolpick_rgbhex_ns .wcolpick_submit { display: none; } + + /*//// HEX LAYOUT ////*/ + .wcolpick_hex { height: 314px; } + .wcolpick_hex .wcolpick_hex_field { top: 277px; left: 101px; } + .wcolpick_hex .wcolpick_rgb_r, .wcolpick_hex .wcolpick_rgb_g, .wcolpick_hex .wcolpick_rgb_b, .wcolpick_hex .wcolpick_hsb_h, .wcolpick_hex .wcolpick_hsb_s, .wcolpick_hex .wcolpick_hsb_b, .wcolpick_hex .wcolpick_alpha_field { display: none; } + .wcolpick_hex .wcolpick_colors { width: 90px; height: 32px; } + .wcolpick_hex .wcolpick_new_color { width: 50%; height: 100%; } + .wcolpick_hex .wcolpick_current_color { top: 0px; left: 50%; width: 50%; height: 100%; } + .wcolpick_hex .wcolpick_submit { top: 276px; left: 239px; } + + /*//// HEX LAYOUT - NO SUBMIT BUTTON ////*/ + .wcolpick_hex_ns .wcolpick_new_color { width: 100%; } + .wcolpick_hex_ns .wcolpick_current_color, .wcolpick_hex_ns .wcolpick_submit { display: none; } + + /*//// ALL SUB-LAYOUTS - NO ALPHA CHANNEL ////*/ + /*full layout*/ + .wcolpick_noalpha { height: 359px; } + .wcolpick_noalpha .wcolpick_field { width: 60px; } + .wcolpick_noalpha .wcolpick_hex_field { top: 322px; } + .wcolpick_noalpha .wcolpick_rgb_r { top: 244px; } + .wcolpick_noalpha .wcolpick_rgb_g { top: 244px; left: 144px; } + .wcolpick_noalpha .wcolpick_rgb_b { top: 244px; left: 211px; width: 59px; } + .wcolpick_noalpha .wcolpick_hsb_h { top: 284px; } + .wcolpick_noalpha .wcolpick_hsb_s { top: 284px; left: 144px; } + .wcolpick_noalpha .wcolpick_hsb_b { top: 284px; left: 211px; width: 59px; } + .wcolpick_noalpha .wcolpick_colors { top: 244px; } + .wcolpick_noalpha .wcolpick_submit { top: 321px; } + /*rgbhex layout*/ + .wcolpick_rgbhex_noalpha { height: 321px; } + .wcolpick_rgbhex_noalpha .wcolpick_hex_field { top: 284px; width: 60px; } + .wcolpick_rgbhex_noalpha .wcolpick_submit { top: 283px; } + /*hex layout*/ + .wcolpick_hex_noalpha { height: 281px; } + .wcolpick_hex_noalpha .wcolpick_hex_field { top: 244px; width: 60px; } + .wcolpick_hex_noalpha .wcolpick_submit { top: 243px; } +} + + + + + +/* //////////////////////////////////////// + SMALL LAYOUTS +////////////////////////////////////////*/ + + +/*////////// DEFAULT LAYOUTS //////////*/ + +/*//// FULL LAYOUT ////*/ +/*Main container*/ +.wcolpickS { width: 394px; height: 202px; -webkit-border-radius: 6px; -moz-border-radius: 6px; border-radius: 6px; } +/*Color selector*/ +.wcolpickS .wcolpick_color { top: 4px; left: 4px; width: 160px; height: 160px; } +.wcolpickS .wcolpick_color_overlay1 { width: 160px; height: 160px; } +.wcolpickS .wcolpick_color_overlay2 { width: 160px; height: 160px; } +/*Color selector indicator*/ +.wcolpickS .wcolpick_selector_outer { width: 12px; height: 12px; margin: -7px 0px 0px -7px; } +.wcolpickS .wcolpick_selector_inner { width: 10px; height: 10px; } +/*Hue bar*/ +.wcolpickS .wcolpick_hue { top: 4px; left: 177px; width: 15px; height: 160px; } +/*Hue bar indicator*/ +.wcolpickS .wcolpick_hue_arrs { left: -6px; width: 27px; height: 5px; margin-top: -4px; } +.wcolpickS .wcolpick_hue_larr { border-width: 4px 0px 4px 5px; } +.wcolpickS .wcolpick_hue_rarr { border-width: 4px 5px 4px 0px; } +/*Alpha bar*/ +.wcolpickS .wcolpick_alpha { top: 177px; left: 4px; width: 160px; height: 15px; } +/*Alpha bar indicator*/ +.wcolpickS .wcolpick_alpha_arrs { top: -6px; left: 160px; width: 5px; height: 27px; margin-left: -4px; } +.wcolpickS .wcolpick_alpha_darr { border-width: 5px 4px 0px 4px; } +.wcolpickS .wcolpick_alpha_uarr { border-width: 0px 4px 5px 4px; } +/*Fields*/ +.wcolpickS .wcolpick_field, .wcolpickS .wcolpick_hex_field { width: 52px; height: 20px; font-size: 8.5px; } +.wcolpickS .wcolpick_hex_field { top: 83px; left: 336px; } +.wcolpickS .wcolpick_rgb_r { top: 83px; left: 216px; } +.wcolpickS .wcolpick_rgb_g { top: 113px; left: 216px; } +.wcolpickS .wcolpick_rgb_b { top: 143px; left: 216px; } +.wcolpickS .wcolpick_hsb_h { top: 83px; left: 276px; } +.wcolpickS .wcolpick_hsb_s { top: 113px; left: 276px; } +.wcolpickS .wcolpick_hsb_b { top: 143px; left: 276px; } +.wcolpickS .wcolpick_alpha_field { top: 173px; left: 216px; } +/*Fields' labels*/ +.wcolpickS .wcolpick_field_letter { min-width: 8px; max-width: 8px; height: 20px; line-height: 20px; } +/*Fields' text inputs*/ +.wcolpickS .wcolpick_field input, .wcolpickS .wcolpick_hex_field input { right: 9px; height: 20px; line-height: 20px; font-size: 9px; } +.wcolpickS .wcolpick_hex_field input { right: 2px; } +/*Fields' up/down arrows*/ +.wcolpickS .wcolpick_field_arrs { width: 5px; height: 20px; } +.wcolpickS .wcolpick_field_uarr { top: 2px; border-width: 0px 2px 3px 2px; } +.wcolpickS .wcolpick_field_darr { bottom: 2px; border-width: 3px 2px 0px 2px; } +/*New and Current color*/ +.wcolpickS .wcolpick_colors { top: 4px; left: 216px; width: 174px; height: 70px; } +/*Submit button*/ +.wcolpickS .wcolpick_submit { top: 175px; left: 367px; width: 21px; height: 21px; } +.wcolpickS .wcolpick_tear { width: 9px; height: 9px; } + +/*//// FULL LAYOUT - NO SUBMIT BUTTON ////*/ +.wcolpickS_full_ns .wcolpick_new_color { height: 100%; } +.wcolpickS_full_ns .wcolpick_current_color, .wcolpickS_full_ns .wcolpick_submit { display: none; } + +/*//// RGBHEX LAYOUT ////*/ +.wcolpickS_rgbhex { width: 334px; } +.wcolpickS_rgbhex .wcolpick_hex_field { left: 276px; } +.wcolpickS_rgbhex .wcolpick_hsb_h, .wcolpickS_rgbhex .wcolpick_hsb_s, .wcolpickS_rgbhex .wcolpick_hsb_b { display: none; } +.wcolpickS_rgbhex .wcolpick_colors { width: 114px; } +.wcolpickS_rgbhex .wcolpick_submit { left: 307px; } + +/*//// RGBHEX LAYOUT - NO SUBMIT BUTTON ////*/ +.wcolpickS_rgbhex_ns .wcolpick_new_color { height: 100%; } +.wcolpickS_rgbhex_ns .wcolpick_current_color, .wcolpickS_rgbhex_ns .wcolpick_submit { display: none; } + +/*//// HEX LAYOUT ////*/ +.wcolpickS_hex { width: 274px; } +.wcolpickS_hex .wcolpick_hex_field { left: 216px; } +.wcolpickS_hex .wcolpick_rgb_r, .wcolpickS_hex .wcolpick_rgb_g, .wcolpickS_hex .wcolpick_rgb_b, .wcolpickS_hex .wcolpick_hsb_h, .wcolpickS_hex .wcolpick_hsb_s, .wcolpickS_hex .wcolpick_hsb_b, .wcolpickS_hex .wcolpick_alpha_field { display: none; } +.wcolpickS_hex .wcolpick_colors { width: 54px; } +.wcolpickS_hex .wcolpick_submit { left: 231px; } + +/*//// HEX LAYOUT - NO SUBMIT BUTTON ////*/ +.wcolpickS_hex_ns .wcolpick_hex_field { top: 176px; } +.wcolpickS_hex_ns .wcolpick_new_color { height: 100%; } +.wcolpickS_hex_ns .wcolpick_current_color, .wcolpickS_hex_ns .wcolpick_submit { display: none; } + +/*//// ALL SUB-LAYOUTS - NO ALPHA CHANNEL ////*/ +/*full layout*/ +.wcolpickS_noalpha { height: 168px; } +.wcolpickS_noalpha .wcolpick_alpha, .wcolpickS_noalpha .wcolpick_alpha_field { display: none; } +.wcolpickS_noalpha .wcolpick_rgb_r, .wcolpickS_noalpha .wcolpick_hsb_h, .wcolpickS_noalpha .wcolpick_hex_field { top: 82px; } +.wcolpickS_noalpha .wcolpick_rgb_g, .wcolpickS_noalpha .wcolpick_hsb_s { top: 112px; } +.wcolpickS_noalpha .wcolpick_rgb_b, .wcolpickS_noalpha .wcolpick_hsb_b { top: 142px; } +.wcolpickS_noalpha .wcolpick_submit { top: 141px; } +/*hex layout - no submit button*/ +.wcolpickS_hex_noalpha_ns .wcolpick_hex_field { top: 142px; } + + +/*////////// COMPACT LAYOUTS //////////*/ + +/*//// FULL LAYOUT ////*/ +.wcolpickS_compact { width: 204px; height: 281px; } +.wcolpickS_compact .wcolpick_field { width: 31px; } +.wcolpickS_compact .wcolpick_hex_field { top: 256px; left: 3px; width: 51px; } +.wcolpickS_compact .wcolpick_rgb_r { top: 204px; left: 59px; } +.wcolpickS_compact .wcolpick_rgb_g { top: 204px; left: 95px; } +.wcolpickS_compact .wcolpick_rgb_b { top: 204px; left: 131px; } +.wcolpickS_compact .wcolpick_hsb_h { top: 230px; left: 59px; } +.wcolpickS_compact .wcolpick_hsb_s { top: 230px; left: 95px; } +.wcolpickS_compact .wcolpick_hsb_b { top: 230px; left: 131px; } +.wcolpickS_compact .wcolpick_alpha_field { top: 204px; left: 167px; } +.wcolpickS_compact .wcolpick_field input { right: 6.3px; } +.wcolpickS_compact .wcolpick_hex_field input { right: 1px; } +.wcolpickS_compact .wcolpick_colors { top: 204px; left: 4px; width: 51px; height: 48px; } +.wcolpickS_compact .wcolpick_submit { top: 255px; left: 178px; } + +/*//// FULL LAYOUT - NO SUBMIT BUTTON ////*/ +.wcolpickS_compact_full_ns .wcolpick_current_color, .wcolpickS_compact_full_ns .wcolpick_submit { display: none; } + +/*//// RGBHEX LAYOUT ////*/ +.wcolpickS_compact_rgbhex { height: 256px; } +.wcolpickS_compact_rgbhex .wcolpick_hex_field { top: 230px; left: 59px; } +.wcolpickS_compact_rgbhex .wcolpick_hsb_h, .wcolpickS_compact_rgbhex .wcolpick_hsb_s, .wcolpickS_compact_rgbhex .wcolpick_hsb_b { display: none; } +.wcolpickS_compact_rgbhex .wcolpick_submit { top: 230px; } + +/*//// RGBHEX LAYOUT - NO SUBMIT BUTTON ////*/ +.wcolpickS_compact_rgbhex_ns .wcolpick_current_color, .wcolpickS_compact_rgbhex_ns .wcolpick_submit { display: none; } + +/*//// HEX LAYOUT ////*/ +.wcolpickS_compact_hex { height: 230px; } +.wcolpickS_compact_hex .wcolpick_hex_field { top: 204px; left: 68px; } +.wcolpickS_compact_hex .wcolpick_rgb_r, .wcolpickS_compact_hex .wcolpick_rgb_g, .wcolpickS_compact_hex .wcolpick_rgb_b, .wcolpickS_compact_hex .wcolpick_hsb_h, .wcolpickS_compact_hex .wcolpick_hsb_s, .wcolpickS_compact_hex .wcolpick_hsb_b, .wcolpickS_compact_hex .wcolpick_alpha_field { display: none; } +.wcolpickS_compact_hex .wcolpick_colors { width: 60px; height: 22px; } +.wcolpickS_compact_hex .wcolpick_new_color { width: 50%; height: 100%; } +.wcolpickS_compact_hex .wcolpick_current_color { top: 0; left: 50%; width: 50%; height: 100%; } +.wcolpickS_compact_hex .wcolpick_submit { top: 204px; } + +/*//// HEX LAYOUT - NO SUBMIT BUTTON ////*/ +.wcolpickS_compact_hex_ns .wcolpick_new_color { width: 100%; } +.wcolpickS_compact_hex_ns .wcolpick_current_color, .wcolpickS_compact_hex_ns .wcolpick_submit { display: none; } + +/*//// ALL SUB-LAYOUTS - NO ALPHA CHANNEL ////*/ +/*full layout*/ +.wcolpickS_compact_noalpha { height: 254px; } +.wcolpickS_compact_noalpha .wcolpick_field { width: 43px; } +.wcolpickS_compact_noalpha .wcolpick_hex_field { top: 229px; } +.wcolpickS_compact_noalpha .wcolpick_rgb_r { top: 177px; } +.wcolpickS_compact_noalpha .wcolpick_rgb_g { top: 177px; left: 107px; } +.wcolpickS_compact_noalpha .wcolpick_rgb_b { top: 177px; left: 155px; } +.wcolpickS_compact_noalpha .wcolpick_hsb_h { top: 203px; } +.wcolpickS_compact_noalpha .wcolpick_hsb_s { top: 203px; left: 107px; } +.wcolpickS_compact_noalpha .wcolpick_hsb_b { top: 203px; left: 155px; } +.wcolpickS_compact_noalpha .wcolpick_colors { top: 177px; } +.wcolpickS_compact_noalpha .wcolpick_submit { top: 228px; } +/*rgbhex layout*/ +.wcolpickS_compact_rgbhex_noalpha { height: 229px; } +.wcolpickS_compact_rgbhex_noalpha .wcolpick_hex_field { top: 203px; width: 43px; } +.wcolpickS_compact_rgbhex_noalpha .wcolpick_submit { top: 203px; } +/*hex layout*/ +.wcolpickS_compact_hex_noalpha { height: 203px; } +.wcolpickS_compact_hex_noalpha .wcolpick_hex_field { top: 177px; width: 43px; } +.wcolpickS_compact_hex_noalpha .wcolpick_submit { top: 177px; } + + +/*////////// SMALL LAYOUTS - RESPONSIVE //////////*/ + +@media screen and (max-width: 460px) { + + /*//// FULL LAYOUT ////*/ + .wcolpickS { width: 204px; height: 281px; } + .wcolpickS .wcolpick_field { width: 31px; } + .wcolpickS .wcolpick_hex_field { top: 256px; left: 3px; width: 51px; } + .wcolpickS .wcolpick_rgb_r { top: 204px; left: 59px; } + .wcolpickS .wcolpick_rgb_g { top: 204px; left: 95px; } + .wcolpickS .wcolpick_rgb_b { top: 204px; left: 131px; } + .wcolpickS .wcolpick_hsb_h { top: 230px; left: 59px; } + .wcolpickS .wcolpick_hsb_s { top: 230px; left: 95px; } + .wcolpickS .wcolpick_hsb_b { top: 230px; left: 131px; } + .wcolpickS .wcolpick_alpha_field { top: 204px; left: 167px; } + .wcolpickS .wcolpick_field input { right: 6.3px; } + .wcolpickS .wcolpick_hex_field input { right: 1px; } + .wcolpickS .wcolpick_colors { top: 204px; left: 4px; width: 51px; height: 48px; } + .wcolpickS .wcolpick_submit { top: 255px; left: 178px; } + + /*//// FULL LAYOUT - NO SUBMIT BUTTON ////*/ + .wcolpickS_full_ns .wcolpick_current_color, .wcolpickS_full_ns .wcolpick_submit { display: none; } + + /*//// RGBHEX LAYOUT ////*/ + .wcolpickS_rgbhex { height: 256px; } + .wcolpickS_rgbhex .wcolpick_hex_field { top: 230px; left: 59px; } + .wcolpickS_rgbhex .wcolpick_hsb_h, .wcolpickS_rgbhex .wcolpick_hsb_s, .wcolpickS_rgbhex .wcolpick_hsb_b { display: none; } + .wcolpickS_rgbhex .wcolpick_submit { top: 230px; } + + /*//// RGBHEX LAYOUT - NO SUBMIT BUTTON ////*/ + .wcolpickS_rgbhex_ns .wcolpick_current_color, .wcolpickS_rgbhex_ns .wcolpick_submit { display: none; } + + /*//// HEX LAYOUT ////*/ + .wcolpickS_hex { height: 230px; } + .wcolpickS_hex .wcolpick_hex_field { top: 204px; left: 68px; } + .wcolpickS_hex .wcolpick_rgb_r, .wcolpickS_hex .wcolpick_rgb_g, .wcolpickS_hex .wcolpick_rgb_b, .wcolpickS_hex .wcolpick_hsb_h, .wcolpickS_hex .wcolpick_hsb_s, .wcolpickS_hex .wcolpick_hsb_b, .wcolpickS_hex .wcolpick_alpha_field { display: none; } + .wcolpickS_hex .wcolpick_colors { width: 60px; height: 22px; } + .wcolpickS_hex .wcolpick_new_color { width: 50%; height: 100%; } + .wcolpickS_hex .wcolpick_current_color { top: 0px; left: 50%; width: 50%; height: 100%; } + .wcolpickS_hex .wcolpick_submit { top: 204px; } + + /*//// HEX LAYOUT - NO SUBMIT BUTTON ////*/ + .wcolpickS_hex_ns .wcolpick_new_color { width: 100%; } + .wcolpickS_hex_ns .wcolpick_current_color, .wcolpickS_hex_ns .wcolpick_submit { display: none; } + + /*//// ALL SUB-LAYOUTS - NO ALPHA CHANNEL ////*/ + /*full layout*/ + .wcolpickS_noalpha { height: 254px; } + .wcolpickS_noalpha .wcolpick_field { width: 43px; } + .wcolpickS_noalpha .wcolpick_hex_field { top: 229px; } + .wcolpickS_noalpha .wcolpick_rgb_r { top: 177px; } + .wcolpickS_noalpha .wcolpick_rgb_g { top: 177px; left: 107px; } + .wcolpickS_noalpha .wcolpick_rgb_b { top: 177px; left: 155px; } + .wcolpickS_noalpha .wcolpick_hsb_h { top: 203px; } + .wcolpickS_noalpha .wcolpick_hsb_s { top: 203px; left: 107px; } + .wcolpickS_noalpha .wcolpick_hsb_b { top: 203px; left: 155px; } + .wcolpickS_noalpha .wcolpick_colors { top: 177px; } + .wcolpickS_noalpha .wcolpick_submit { top: 228px; } + /*rgbhex layout*/ + .wcolpickS_rgbhex_noalpha { height: 229px; } + .wcolpickS_rgbhex_noalpha .wcolpick_hex_field { top: 203px; width: 43px; } + .wcolpickS_rgbhex_noalpha .wcolpick_submit { top: 203px; } + /*hex layout*/ + .wcolpickS_hex_noalpha { height: 203px; } + .wcolpickS_hex_noalpha .wcolpick_hex_field { top: 177px; width: 43px; } + .wcolpickS_hex_noalpha .wcolpick_submit { top: 177px; } +} + + + + + +/* //////////////////////////////////////// + EXTRA-LARGE LAYOUTS +////////////////////////////////////////*/ + + +/*////////// DEFAULT LAYOUTS //////////*/ + +/*//// FULL LAYOUT ////*/ +/*Main container*/ +.wcolpickXL { width: 725px; height: 363px; -webkit-border-radius: 10px; -moz-border-radius: 10px; border-radius: 10px; } +/*Color selector*/ +.wcolpickXL .wcolpick_color { top: 7px; left: 7px; width: 300px; height: 300px; } +.wcolpickXL .wcolpick_color_overlay1 { width: 300px; height: 300px; } +.wcolpickXL .wcolpick_color_overlay2 { width: 300px; height: 300px; } +/*Color selector indicator*/ +.wcolpickXL .wcolpick_selector_outer { width: 16px; height: 16px; margin: -9px 0px 0px -9px; } +.wcolpickXL .wcolpick_selector_inner { width: 14px; height: 14px; } +/*Hue bar*/ +.wcolpickXL .wcolpick_hue { top: 7px; left: 324px; width: 25px; height: 300px; } +/*Hue bar indicator*/ +.wcolpickXL .wcolpick_hue_arrs { left: -8px; width: 41px; height: 7px; margin-top: -6px; } +.wcolpickXL .wcolpick_hue_larr { border-width: 6px 0px 6px 7px; } +.wcolpickXL .wcolpick_hue_rarr { border-width: 6px 7px 6px 0px; } +/*Alpha bar*/ +.wcolpickXL .wcolpick_alpha { top: 324px; left: 7px; width: 300px; height: 25px; } +/*Alpha bar indicator*/ +.wcolpickXL .wcolpick_alpha_arrs { top: -8px; left: 300px; width: 7px; height: 41px; margin-left: -6px; } +.wcolpickXL .wcolpick_alpha_darr { border-width: 7px 6px 0px 6px; } +.wcolpickXL .wcolpick_alpha_uarr { border-width: 0px 6px 7px 6px; } +/*Fields*/ +.wcolpickXL .wcolpick_field, .wcolpickXL .wcolpick_hex_field { width: 100px; height: 40px; font-size: 15px; } +.wcolpickXL .wcolpick_hex_field { top: 154px; left: 616px; } +.wcolpickXL .wcolpick_rgb_r { top: 154px; left: 382px; } +.wcolpickXL .wcolpick_rgb_g { top: 207px; left: 382px; } +.wcolpickXL .wcolpick_rgb_b { top: 260px; left: 382px; } +.wcolpickXL .wcolpick_hsb_h { top: 154px; left: 499px; } +.wcolpickXL .wcolpick_hsb_s { top: 207px; left: 499px; } +.wcolpickXL .wcolpick_hsb_b { top: 260px; left: 499px; } +.wcolpickXL .wcolpick_alpha_field { top: 313px; left: 382px; } +/*Fields' labels*/ +.wcolpickXL .wcolpick_field_letter { min-width: 15px; max-width: 15px; height: 40px; line-height: 40px; } +/*Fields' text inputs*/ +.wcolpickXL .wcolpick_field input, .wcolpickXL .wcolpick_hex_field input { right: 20px; height: 40px; line-height: 40px; font-size: 15px; } +.wcolpickXL .wcolpick_hex_field input { right: 4px; } +/*Fields' up/down arrows*/ +.wcolpickXL .wcolpick_field_arrs { width: 9px; height: 40px; } +.wcolpickXL .wcolpick_field_uarr { top: 5px; border-width: 0px 4px 4px 4px; } +.wcolpickXL .wcolpick_field_darr { bottom: 5px; border-width: 4px 4px 0px 4px; } +/*New and Current color*/ +.wcolpickXL .wcolpick_colors { top: 7px; left: 382px; width: 336px; height: 136px; } +/*Submit button*/ +.wcolpickXL .wcolpick_submit { top: 314px; left: 676px; width: 40px; height: 40px; } +.wcolpickXL .wcolpick_tear { width: 20px; height: 20px; } + +/*//// FULL LAYOUT - NO SUBMIT BUTTON ////*/ +.wcolpickXL_full_ns .wcolpick_new_color { height: 100%; } +.wcolpickXL_full_ns .wcolpick_current_color, .wcolpickXL_full_ns .wcolpick_submit { display: none; } + +/*//// RGBHEX LAYOUT ////*/ +.wcolpickXL_rgbhex { width: 608px; } +.wcolpickXL_rgbhex .wcolpick_hex_field { left: 499px; } +.wcolpickXL_rgbhex .wcolpick_hsb_h, .wcolpickXL_rgbhex .wcolpick_hsb_s, .wcolpickXL_rgbhex .wcolpick_hsb_b { display: none; } +.wcolpickXL_rgbhex .wcolpick_colors { width: 219px; } +.wcolpickXL_rgbhex .wcolpick_submit { left: 559px; } + +/*//// RGBHEX LAYOUT - NO SUBMIT BUTTON ////*/ +.wcolpickXL_rgbhex_ns .wcolpick_new_color { height: 100%; } +.wcolpickXL_rgbhex_ns .wcolpick_current_color, .wcolpickXL_rgbhex_ns .wcolpick_submit { display: none; } + +/*//// HEX LAYOUT ////*/ +.wcolpickXL_hex { width: 491px; } +.wcolpickXL_hex .wcolpick_hex_field { left: 382px; } +.wcolpickXL_hex .wcolpick_rgb_r, .wcolpickXL_hex .wcolpick_rgb_g, .wcolpickXL_hex .wcolpick_rgb_b, .wcolpickXL_hex .wcolpick_hsb_h, .wcolpickXL_hex .wcolpick_hsb_s, .wcolpickXL_hex .wcolpick_hsb_b, .wcolpickXL_hex .wcolpick_alpha_field { display: none; } +.wcolpickXL_hex .wcolpick_colors { width: 102px; } +.wcolpickXL_hex .wcolpick_submit { left: 412px; } + +/*//// HEX LAYOUT - NO SUBMIT BUTTON ////*/ +.wcolpickXL_hex_ns .wcolpick_hex_field { top: 313px; } +.wcolpickXL_hex_ns .wcolpick_new_color { height: 100%; } +.wcolpickXL_hex_ns .wcolpick_current_color, .wcolpickXL_hex_ns .wcolpick_submit { display: none; } + +/*//// ALL SUB-LAYOUTS - NO ALPHA CHANNEL ////*/ +/*full layout*/ +.wcolpickXL_noalpha { height: 314px; } +.wcolpickXL_noalpha .wcolpick_alpha, .wcolpickXL_noalpha .wcolpick_alpha_field { display: none; } +.wcolpickXL_noalpha .wcolpick_rgb_r, .wcolpickXL_noalpha .wcolpick_hsb_h, .wcolpickXL_noalpha .wcolpick_hex_field { top: 156px; } +.wcolpickXL_noalpha .wcolpick_rgb_g, .wcolpickXL_noalpha .wcolpick_hsb_s { top: 210px; } +.wcolpickXL_noalpha .wcolpick_rgb_b, .wcolpickXL_noalpha .wcolpick_hsb_b { top: 264px; } +.wcolpickXL_noalpha .wcolpick_submit { top: 266px; } +/*hex layout - no submit button*/ +.wcolpickXL_hex_noalpha_ns .wcolpick_hex_field { top: 264px; } + + +/*////////// COMPACT LAYOUTS //////////*/ + +/*//// FULL LAYOUT ////*/ +.wcolpickXL_compact { width: 365px; height: 516px; } +.wcolpickXL_compact .wcolpick_field { width: 56px; } +.wcolpickXL_compact .wcolpick_hex_field { top: 467px; left: 7px; width: 88px; } +.wcolpickXL_compact .wcolpick_rgb_r { top: 365px; left: 105px; } +.wcolpickXL_compact .wcolpick_rgb_g { top: 365px; left: 170px; } +.wcolpickXL_compact .wcolpick_rgb_b { top: 365px; left: 235px; } +.wcolpickXL_compact .wcolpick_hsb_h { top: 417px; left: 105px; } +.wcolpickXL_compact .wcolpick_hsb_s { top: 417px; left: 170px; } +.wcolpickXL_compact .wcolpick_hsb_b { top: 417px; left: 235px; } +.wcolpickXL_compact .wcolpick_alpha_field { top: 365px; left: 300px; } +.wcolpickXL_compact .wcolpick_field input { right: 12px; } +.wcolpickXL_compact .wcolpick_hex_field input { right: 3px; } +.wcolpickXL_compact .wcolpick_colors { top: 365px; left: 7px; width: 90px; height: 94px; } +.wcolpickXL_compact .wcolpick_submit { top: 467px; left: 316px; } + +/*//// FULL LAYOUT - NO SUBMIT BUTTON ////*/ +.wcolpickXL_compact_full_ns .wcolpick_current_color, .wcolpickXL_compact_full_ns .wcolpick_submit { display: none; } + +/*//// RGBHEX LAYOUT ////*/ +.wcolpickXL_compact_rgbhex { height: 466px; } +.wcolpickXL_compact_rgbhex .wcolpick_hex_field { top: 417px; left: 105px; } +.wcolpickXL_compact_rgbhex .wcolpick_hsb_h, .wcolpickXL_compact_rgbhex .wcolpick_hsb_s, .wcolpickXL_compact_rgbhex .wcolpick_hsb_b { display: none; } +.wcolpickXL_compact_rgbhex .wcolpick_submit { top: 417px; } + +/*//// RGBHEX LAYOUT - NO SUBMIT BUTTON ////*/ +.wcolpickXL_compact_rgbhex_ns .wcolpick_current_color, .wcolpickXL_compact_rgbhex_ns .wcolpick_submit { display: none; } + +/*//// HEX LAYOUT ////*/ +.wcolpickXL_compact_hex { height: 414px; } +.wcolpickXL_compact_hex .wcolpick_hex_field { top: 365px; left: 135px; } +.wcolpickXL_compact_hex .wcolpick_rgb_r, .wcolpickXL_compact_hex .wcolpick_rgb_g, .wcolpickXL_compact_hex .wcolpick_rgb_b, .wcolpickXL_compact_hex .wcolpick_hsb_h, .wcolpickXL_compact_hex .wcolpick_hsb_s, .wcolpickXL_compact_hex .wcolpick_hsb_b, .wcolpickXL_compact_hex .wcolpick_alpha_field { display: none; } +.wcolpickXL_compact_hex .wcolpick_colors { width: 120px; height: 42px; } +.wcolpickXL_compact_hex .wcolpick_new_color { width: 50%; height: 100%; } +.wcolpickXL_compact_hex .wcolpick_current_color { top: 0; left: 50%; width: 50%; height: 100%; } +.wcolpickXL_compact_hex .wcolpick_submit { top: 365px; } + +/*//// HEX LAYOUT - NO SUBMIT BUTTON ////*/ +.wcolpickXL_compact_hex_ns .wcolpick_new_color { width: 100%; } +.wcolpickXL_compact_hex_ns .wcolpick_current_color, .wcolpickXL_compact_hex_ns .wcolpick_submit { display: none; } + +/*//// ALL SUB-LAYOUTS - NO ALPHA CHANNEL ////*/ +/*full layout*/ +.wcolpickXL_compact_noalpha { height: 475px; } +.wcolpickXL_compact_noalpha .wcolpick_field { width: 78px; } +.wcolpickXL_compact_noalpha .wcolpick_hex_field { top: 426px; } +.wcolpickXL_compact_noalpha .wcolpick_rgb_r { top: 324px; } +.wcolpickXL_compact_noalpha .wcolpick_rgb_g { top: 324px; left: 192px; } +.wcolpickXL_compact_noalpha .wcolpick_rgb_b { top: 324px; left: 279px; width: 77px; } +.wcolpickXL_compact_noalpha .wcolpick_hsb_h { top: 376px; } +.wcolpickXL_compact_noalpha .wcolpick_hsb_s { top: 376px; left: 192px; } +.wcolpickXL_compact_noalpha .wcolpick_hsb_b { top: 376px; left: 279px; width: 77px; } +.wcolpickXL_compact_noalpha .wcolpick_colors { top: 324px; } +.wcolpickXL_compact_noalpha .wcolpick_submit { top: 426px; } +/*rgbhex layout*/ +.wcolpickXL_compact_rgbhex_noalpha { height: 425px; } +.wcolpickXL_compact_rgbhex_noalpha .wcolpick_hex_field { top: 376px; width: 78px; } +.wcolpickXL_compact_rgbhex_noalpha .wcolpick_submit { top: 376px; } +/*hex layout*/ +.wcolpickXL_compact_hex_noalpha { height: 373px; } +.wcolpickXL_compact_hex_noalpha .wcolpick_hex_field { top: 324px; width: 78px; } +.wcolpickXL_compact_hex_noalpha .wcolpick_submit { top: 324px; } + + +/*////////// EXTRA-LARGE LAYOUTS - RESPONSIVE //////////*/ + +@media screen and (max-width: 840px) { + + /*//// FULL LAYOUT ////*/ + .wcolpickXL { width: 365px; height: 516px; } + .wcolpickXL .wcolpick_field { width: 56px; } + .wcolpickXL .wcolpick_hex_field { top: 467px; left: 7px; width: 88px; } + .wcolpickXL .wcolpick_rgb_r { top: 365px; left: 105px; } + .wcolpickXL .wcolpick_rgb_g { top: 365px; left: 170px; } + .wcolpickXL .wcolpick_rgb_b { top: 365px; left: 235px; } + .wcolpickXL .wcolpick_hsb_h { top: 417px; left: 105px; } + .wcolpickXL .wcolpick_hsb_s { top: 417px; left: 170px; } + .wcolpickXL .wcolpick_hsb_b { top: 417px; left: 235px; } + .wcolpickXL .wcolpick_alpha_field { top: 365px; left: 300px; } + .wcolpickXL .wcolpick_field input { right: 12px; } + .wcolpickXL .wcolpick_hex_field input { right: 3px; } + .wcolpickXL .wcolpick_colors { top: 365px; left: 7px; width: 90px; height: 94px; } + .wcolpickXL .wcolpick_submit { top: 467px; left: 316px; } + + /*//// FULL LAYOUT - NO SUBMIT BUTTON ////*/ + .wcolpickXL_full_ns .wcolpick_current_color, .wcolpickXL_full_ns .wcolpick_submit { display: none; } + + /*//// RGBHEX LAYOUT ////*/ + .wcolpickXL_rgbhex { height: 466px; } + .wcolpickXL_rgbhex .wcolpick_hex_field { top: 417px; left: 105px; } + .wcolpickXL_rgbhex .wcolpick_hsb_h, .wcolpickXL_rgbhex .wcolpick_hsb_s, .wcolpickXL_rgbhex .wcolpick_hsb_b { display: none; } + .wcolpickXL_rgbhex .wcolpick_submit { top: 417px; } + + /*//// RGBHEX LAYOUT - NO SUBMIT BUTTON ////*/ + .wcolpickXL_rgbhex_ns .wcolpick_current_color, .wcolpickXL_rgbhex_ns .wcolpick_submit { display: none; } + + /*//// HEX LAYOUT ////*/ + .wcolpickXL_hex { height: 414px; } + .wcolpickXL_hex .wcolpick_hex_field { top: 365px; left: 135px; } + .wcolpickXL_hex .wcolpick_rgb_r, .wcolpickXL_hex .wcolpick_rgb_g, .wcolpickXL_hex .wcolpick_rgb_b, .wcolpickXL_hex .wcolpick_hsb_h, .wcolpickXL_hex .wcolpick_hsb_s, .wcolpickXL_hex .wcolpick_hsb_b, .wcolpickXL_hex .wcolpick_alpha_field { display: none; } + .wcolpickXL_hex .wcolpick_colors { width: 120px; height: 42px; } + .wcolpickXL_hex .wcolpick_new_color { width: 50%; height: 100%; } + .wcolpickXL_hex .wcolpick_current_color { top: 0px; left: 50%; width: 50%; height: 100%; } + .wcolpickXL_hex .wcolpick_submit { top: 365px; } + + /*//// HEX LAYOUT - NO SUBMIT BUTTON ////*/ + .wcolpickXL_hex_ns .wcolpick_new_color { width: 100%; } + .wcolpickXL_hex_ns .wcolpick_current_color, .wcolpickXL_hex_ns .wcolpick_submit { display: none; } + + /*//// ALL SUB-LAYOUTS - NO ALPHA CHANNEL ////*/ + /*full layout*/ + .wcolpickXL_noalpha { height: 475px; } + .wcolpickXL_noalpha .wcolpick_field { width: 78px; } + .wcolpickXL_noalpha .wcolpick_hex_field { top: 426px; } + .wcolpickXL_noalpha .wcolpick_rgb_r { top: 324px; } + .wcolpickXL_noalpha .wcolpick_rgb_g { top: 324px; left: 192px; } + .wcolpickXL_noalpha .wcolpick_rgb_b { top: 324px; left: 279px; width: 77px; } + .wcolpickXL_noalpha .wcolpick_hsb_h { top: 376px; } + .wcolpickXL_noalpha .wcolpick_hsb_s { top: 376px; left: 192px; } + .wcolpickXL_noalpha .wcolpick_hsb_b { top: 376px; left: 279px; width: 77px; } + .wcolpickXL_noalpha .wcolpick_colors { top: 324px; } + .wcolpickXL_noalpha .wcolpick_submit { top: 426px; } + /*rgbhex layout*/ + .wcolpickXL_rgbhex_noalpha { height: 425px; } + .wcolpickXL_rgbhex_noalpha .wcolpick_hex_field { top: 376px; width: 78px; } + .wcolpickXL_rgbhex_noalpha .wcolpick_submit { top: 376px; } + /*hex layout*/ + .wcolpickXL_hex_noalpha { height: 373px; } + .wcolpickXL_hex_noalpha .wcolpick_hex_field { top: 324px; width: 78px; } + .wcolpickXL_hex_noalpha .wcolpick_submit { top: 324px; } +} + + + + + +/* //////////////////////////////////////// + COLOR SCHEMES +////////////////////////////////////////*/ + + +/*////////// MAIN LIGHT COLOR SCHEME //////////*/ + +/*Main container*/ +.wcolpick_light { background: transparent; border-color: transparent; } +/*Color selector*/ +.wcolpick_light .wcolpick_color { outline-color: rgba(170, 170, 170, 0.5); } +/*Hue bar*/ +.wcolpick_light .wcolpick_hue_underlay { outline-color: rgba(170, 170, 170, 0.5); } +.wcolpick_light .wcolpick_hue_larr { border-left-color: black; } +.wcolpick_light .wcolpick_hue_rarr { border-right-color: black; } +/*Alpha bar*/ +.wcolpick_light .wcolpick_alpha_underlay { outline-color: rgba(170, 170, 170, 0.5); } +.wcolpick_light .wcolpick_alpha_darr { border-top-color: black; } +.wcolpick_light .wcolpick_alpha_uarr { border-bottom-color: black; } +/*Fields*/ +.wcolpick_light .wcolpick_field, .wcolpick_light .wcolpick_hex_field { background: white; border-color: #bdbdbd; } +.wcolpick_light .wcolpick_field_letter { background: #ededed; color: #777; } +.wcolpick_light .wcolpick_field input, .wcolpick_light .wcolpick_hex_field input { background: transparent; color: #555; } +.wcolpick_light .wcolpick_focus { border-color: #999; } +.wcolpick_light .wcolpick_field_uarr { border-bottom-color: #999; } +.wcolpick_light .wcolpick_field_darr { border-top-color: #999; } +.wcolpick_light .wcolpick_changing .wcolpick_field_uarr { border-bottom-color: #0caf1a; } +.wcolpick_light .wcolpick_changing .wcolpick_field_darr { border-top-color: #0caf1a; } +/*New and Current color*/ +.wcolpick_light .wcolpick_colors_underlay { outline-color: rgba(170, 170, 170, 0.5); } +/*Submit button*/ +.wcolpick_light .wcolpick_submit { background: white; border-color: #777; } +.wcolpick_light .wcolpick_tear { background: #777; } +/*Checkerboards*/ +.wcolpick_light .wcolpick_checkerboards { background-color: white; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 2 2'%3E%3Cpath fill='rgb(204,204,204)' fill-rule='evenodd' d='M0 0h1v1H0V0zm1 1h1v1H1V1z'/%3E%3C/svg%3E"); } + + +/*////////// MAIN DARK COLOR SCHEME //////////*/ + +/*Main container*/ +.wcolpick_dark { background: transparent; border-color: transparent; } +/*Color selector*/ +.wcolpick_dark .wcolpick_color { outline-color: rgba(213, 213, 213, 0.5); } +/*Hue bar*/ +.wcolpick_dark .wcolpick_hue_underlay { outline-color: rgba(213, 213, 213, 0.5); } +.wcolpick_dark .wcolpick_hue_larr { border-left-color: white; } +.wcolpick_dark .wcolpick_hue_rarr { border-right-color: white; } +/*Alpha bar*/ +.wcolpick_dark .wcolpick_alpha_underlay { outline-color: rgba(213, 213, 213, 0.5); } +.wcolpick_dark .wcolpick_alpha_darr { border-top-color: white; } +.wcolpick_dark .wcolpick_alpha_uarr { border-bottom-color: white; } +/*Fields*/ +.wcolpick_dark .wcolpick_field, .wcolpick_dark .wcolpick_hex_field { background: black; border-color: #d5d5d5; } +.wcolpick_dark .wcolpick_field_letter { background: #d5d5d5; color: black; } +.wcolpick_dark .wcolpick_field input, .wcolpick_dark .wcolpick_hex_field input { background: transparent; color: #d5d5d5; } +.wcolpick_dark .wcolpick_focus { border-color: #adadad; } +.wcolpick_dark .wcolpick_field_uarr { border-bottom-color: #d5d5d5; } +.wcolpick_dark .wcolpick_field_darr { border-top-color: #d5d5d5; } +.wcolpick_dark .wcolpick_changing .wcolpick_field_uarr { border-bottom-color: #0caf1a; } +.wcolpick_dark .wcolpick_changing .wcolpick_field_darr { border-top-color: #0caf1a; } +/*New and Current color*/ +.wcolpick_dark .wcolpick_colors_underlay { outline-color: rgba(213, 213, 213, 0.5); } +/*Submit button*/ +.wcolpick_dark .wcolpick_submit { background: black; border-color: white; } +.wcolpick_dark .wcolpick_tear { background: white; } +/*Checkerboards*/ +.wcolpick_dark .wcolpick_checkerboards { background-color: #666; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 2 2'%3E%3Cpath fill='rgb(51,51,51)' fill-rule='evenodd' d='M0 0h1v1H0V0zm1 1h1v1H1V1z'/%3E%3C/svg%3E"); } + + +/*////////// ALTERNATIVE COLOR SCHEMES //////////*/ + +/*//// LIGHT FULL ////*/ +.wcolpick_light-full { background: white; border-color: #666; } + +/*//// DARK FULL ////*/ +.wcolpick_dark-full { background: black; border-color: white; } + + +/*////////// CHANGE COLOR OF THE HUE'S AND THE ALPHA'S ARROWS, IF REQUESTED //////////*/ + +/*Light color*/ +.wcolpick_lightArrs .wcolpick_hue_larr { border-left-color: white; } +.wcolpick_lightArrs .wcolpick_hue_rarr { border-right-color: white; } +.wcolpick_lightArrs .wcolpick_alpha_darr { border-top-color: white; } +.wcolpick_lightArrs .wcolpick_alpha_uarr { border-bottom-color: white; } +/*Dark color*/ +.wcolpick_darkArrs .wcolpick_hue_larr { border-left-color: black; } +.wcolpick_darkArrs .wcolpick_hue_rarr { border-right-color: black; } +.wcolpick_darkArrs .wcolpick_alpha_darr { border-top-color: black; } +.wcolpick_darkArrs .wcolpick_alpha_uarr { border-bottom-color: black; } + + +/*////////// CHANGE COLOR OF THE CHECKERBOARDS, IF REQUESTED //////////*/ + +/*Light color*/ +.wcolpick_lightCheckerboards .wcolpick_checkerboards { background-color: white; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 2 2'%3E%3Cpath fill='rgb(204,204,204)' fill-rule='evenodd' d='M0 0h1v1H0V0zm1 1h1v1H1V1z'/%3E%3C/svg%3E"); } +/*Dark color*/ +.wcolpick_darkCheckerboards .wcolpick_checkerboards { background-color: #666; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 2 2'%3E%3Cpath fill='rgb(51,51,51)' fill-rule='evenodd' d='M0 0h1v1H0V0zm1 1h1v1H1V1z'/%3E%3C/svg%3E"); } + + +/*////////// CHANGE COLOR OF THE SUMBIT BUTTON, IF REQUESTED //////////*/ + +/*Light color*/ +.wcolpick_lightSubmit .wcolpick_submit { border-color: white; } +.wcolpick_lightSubmit .wcolpick_tear { background: white; } +/*Dark color*/ +.wcolpick_darkSubmit .wcolpick_submit { border-color: #777; } +.wcolpick_darkSubmit .wcolpick_tear { background: #777; } + + +/*////////// HIDE OUTLINES, IF REQUESTED //////////*/ + +.wcolpick_noCSOutline .wcolpick_color { outline-style: none; } +.wcolpick_noHOutline .wcolpick_hue_underlay { outline-style: none; } +.wcolpick_noAOutline .wcolpick_alpha_underlay { outline-style: none; } +.wcolpick_noNCOutline .wcolpick_colors_underlay { outline-style: none; } diff --git a/multicolor_backend_theme/static/src/wcolpick/wcolpick.js b/multicolor_backend_theme/static/src/wcolpick/wcolpick.js new file mode 100644 index 000000000..6628922ac --- /dev/null +++ b/multicolor_backend_theme/static/src/wcolpick/wcolpick.js @@ -0,0 +1,1028 @@ +/* +Wcolpick - A Web Color Picker + +Copyright (C) 2017-2020 devpelux (Salvatore Peluso) +Find me on github: https://github.com/devpelux +Dual licensed under GPL v3.0 and MIT licenses. +(Based on Jose Vargas' Color Picker) + +Description, how to use, and examples: https://github.com/devpelux/wcolpick + +Last Edit: 2020/12/06 18:53 +*/ + + + +(function ($) { + var wcolpick = function () { + var + tpl = '
#
R
G
B
H
S
B
A
', + defaults = { + alphaOutline: true, + appendToBody: false, + arrowsColor: 'default', + backgroundColor: 'default', + border: 1, + borderColor: 'default', + checkersColor: 'default', + color: {h:0, s:0, b:20, a:1}, + colorOutline: true, + colorScheme: 'light-full', + colorSelOutline: true, + compactLayout: false, + enableAlpha: true, + enableSubmit: true, + enableUpDown: true, + fieldsBackground: 'default', + flat: true, + hueOutline: true, + layout: 'full', + livePreview: true, + polyfill: false, + position: 'auto', + readonlyFields: false, + readonlyHexField: false, + showEvent: 'click', + submitBackground: 'default', + submitColor: 'default', + variant: 'standard', + onBeforeShow: function () {}, + onChange: function () {}, + onDestroy: function () {}, + onHide: function () {}, + onLoaded: function () {}, + onShow: function () {}, + onSubmit: function () {} + }, + //Fill the inputs of the plugin + fillRGBFields = function (rgba, cal) { + $(cal).data('wcolpick').fields + .eq(1).val(rgba.r).end() + .eq(2).val(rgba.g).end() + .eq(3).val(rgba.b).end(); + }, + fillHSBFields = function (hsba, cal) { + $(cal).data('wcolpick').fields + .eq(4).val(Math.round(hsba.h)).end() + .eq(5).val(Math.round(hsba.s)).end() + .eq(6).val(Math.round(hsba.b)).end(); + }, + fillAlphaField = function (hsba, cal) { + $(cal).data('wcolpick').fields.eq(7).val(Math.round(hsba.a*100)).end(); + }, + fillHexField = function (hex, cal) { + if ($(cal).data('wcolpick').enableAlpha) $(cal).data('wcolpick').fields.eq(0).val(hex); + else $(cal).data('wcolpick').fields.eq(0).val(hex.substring(0,6)); + }, + //Set selector's color and selector's indicator position + setSelectorPos = function (hsba, cal) { + $(cal).data('wcolpick').selectorIndic.css({ + left: Math.round($(cal).data('wcolpick').size * hsba.s/100), + top: Math.round($(cal).data('wcolpick').size * (100-hsba.b)/100) + }); + }, + setSelectorColor = function (hsba, cal) { + if (isInternetExplorer()) { //Compatibility with IE 6-9 + var rgba = hsbaToRgba({h: Math.round(hsba.h), s: 100, b: 100, a: 255}); + $(cal).data('wcolpick').selector.css('backgroundColor', 'rgb('+rgba.r+','+rgba.g+','+rgba.b+')'); + } else $(cal).data('wcolpick').selector.css('backgroundColor', 'hsl('+Math.round(hsba.h)+','+100+'%,'+50+'%)'); + }, + //Set hue's arrows position + setHuePos = function (hsba, cal) { + $(cal).data('wcolpick').hue.css('top', Math.round($(cal).data('wcolpick').size - $(cal).data('wcolpick').size * hsba.h/360)); + }, + //Set alpha bar color and alpha's arrows position + setAlphaPos = function (hsba, cal) { + if ($(cal).data('wcolpick').enableAlpha) $(cal).data('wcolpick').alpha.css('left', Math.round($(cal).data('wcolpick').size * hsba.a)); + }, + setAlphaColor = function (rgba, cal) { + if ($(cal).data('wcolpick').enableAlpha) { + if (isInternetExplorer()) { //Compatibility with IE 6-9 + var end = rgbaToHex(rgba).substring(0,6); + $(cal).data('wcolpick').alphaBar.attr('style','filter:progid:DXImageTransform.Microsoft.gradient(GradientType=1,startColorstr=0,endColorstr=#'+end+'); -ms-filter:"progid:DXImageTransform.Microsoft.gradient(GradientType=1,startColorstr=0,endColorstr=#'+end+')";'); + } else { + var begin = 'rgba('+rgba.r+','+rgba.g+','+rgba.b+',0)', end = 'rgba('+rgba.r+','+rgba.g+','+rgba.b+',1)'; + } $(cal).data('wcolpick').alphaBar.attr('style','background:-webkit-linear-gradient(left,'+begin+' 0%,'+end+' 100%); background:-moz-linear-gradient(left,'+begin+' 0%,'+end+' 100%); background:-ms-linear-gradient(left,'+begin+' 0%,'+end+' 100%); background:-o-linear-gradient(left,'+begin+' 0%,'+end+' 100%); background:linear-gradient(to right,'+begin+' 0%,'+end+' 100%);'); + } + }, + //Set current and new colors + setCurrentColor = function (rgba, cal) { + $(cal).data('wcolpick').currentColor.css('backgroundColor', 'rgba('+rgba.r+','+rgba.g+','+rgba.b+','+rgba.a+')'); + }, + setNewColor = function (rgba, cal) { + $(cal).data('wcolpick').newColor.css('backgroundColor', 'rgba('+rgba.r+','+rgba.g+','+rgba.b+','+rgba.a+')'); + }, + //Called when the new color is changed + change = function () { + var cal = $(this).parent().parent(), hsba, rgba, hex; + if (this.parentNode.className.indexOf('_alpha') > 0) { + hsba = { + h: cal.data('wcolpick').color.h, + s: cal.data('wcolpick').color.s, + b: cal.data('wcolpick').color.b, + a: fixAlpha(cal.data('wcolpick').fields.eq(7).val()/100) + }; + rgba = hsbaToRgba(hsba); + hex = rgbaToHex(rgba); + } else if (this.parentNode.className.indexOf('_hex') > 0) { + rgba = hexToRgba(adaptHex(cal.data('wcolpick').fields.eq(0).val(), cal)); + hsba = rgbaToHsba(rgba); + hex = rgbaToHex(rgba); + } else if (this.parentNode.className.indexOf('_hsb') > 0) { + hsba = fixHSBA({ + h: Math.round(cal.data('wcolpick').fields.eq(4).val()), + s: Math.round(cal.data('wcolpick').fields.eq(5).val()), + b: Math.round(cal.data('wcolpick').fields.eq(6).val()), + a: cal.data('wcolpick').color.a + }); + rgba = hsbaToRgba(hsba); + hex = rgbaToHex(rgba); + } else { + rgba = fixRGBA({ + r: Math.round(cal.data('wcolpick').fields.eq(1).val()), + g: Math.round(cal.data('wcolpick').fields.eq(2).val()), + b: Math.round(cal.data('wcolpick').fields.eq(3).val()), + a: cal.data('wcolpick').color.a + }); + hsba = rgbaToHsba(rgba); + hex = rgbaToHex(rgba); + } + //Store new color + cal.data('wcolpick').color = cloneHSBA(hsba, true); + //Show new color + setNewColor(rgba, cal.get(0)); + //Fill fields with new color + fillHSBFields(hsba, cal.get(0)); + fillAlphaField(hsba, cal.get(0)); + fillRGBFields(rgba, cal.get(0)); + fillHexField(hex, cal.get(0)); + //Setup other elements with new color + setSelectorPos(hsba, cal.get(0)); + setSelectorColor(hsba, cal.get(0)); + setHuePos(hsba, cal.get(0)); + setAlphaPos(hsba, cal.get(0)); + setAlphaColor(rgba, cal.get(0)); + //Fires onChange (bySetColor = false) + var hsla = hsbaToHsla(hsba); + cal.data('wcolpick').onChange.apply(cal.parent(), [{bySetColor:false, colorDiv:cal.get(0), el:cal.data('wcolpick').el, hex:hex.substring(0,6), hexa:hex, hsb:cloneHSBA(hsba, false), hsba:hsba, hsl:cloneHSLA(hsla, false), hsla:hsla, rgb:cloneRGBA(rgba, false), rgba:rgba}]); + }, + //Change style on blur and on focus of inputs + blur = function () { + $(this).parent().removeClass('wcolpick_focus'); + }, + focus = function () { + $(this).parent().parent().data('wcolpick').fields.parent().removeClass('wcolpick_focus'); + $(this).parent().addClass('wcolpick_focus'); + }, + //Increment/decrement arrows functions + downIncrement = function (ev) { + ev.preventDefault ? ev.preventDefault() : ev.returnValue = false; + var field = $(this).parent().find('input').focus(); + var current = { + el: $(this).parent().addClass('wcolpick_changing'), + max: this.parentNode.className.indexOf('_hsb_h') > 0 ? 360 : (this.parentNode.className.indexOf('_hsb') > 0 ? 100 : (this.parentNode.className.indexOf('_alpha') > 0 ? 100 : 255)), + y: ev.pageY, + field: field, + val: Math.round(field.val()), + preview: $(this).parent().parent().data('wcolpick').livePreview + }; + $(document).mouseup(current, upIncrement); + $(document).mousemove(current, moveIncrement); + }, + moveIncrement = function (ev) { + //livePreview = true: update colors | livePreview = false: update only field's value + ev.data.field.val(fixVal(Math.round(ev.data.val - ev.pageY + ev.data.y), 0, ev.data.max)); + if (ev.data.preview) change.apply(ev.data.field.get(0)); + return false; + }, + upIncrement = function (ev) { + //livePreview = true: do nothing | livePreview = false: update colors + if (!ev.data.preview) change.apply(ev.data.field.get(0)); + ev.data.el.removeClass('wcolpick_changing').find('input').focus(); + $(document).off('mouseup', upIncrement); + $(document).off('mousemove', moveIncrement); + return false; + }, + //Alpha slider functions + downAlpha = function (ev) { + ev.preventDefault ? ev.preventDefault() : ev.returnValue = false; + var current = { + cal: $(this).parent(), + x: $(this).offset().left, + preview: $(this).parent().data('wcolpick').livePreview + }; + $(document).on('mouseup touchend',current,upAlpha); + $(document).on('mousemove touchmove',current,moveAlpha); + //Update alpha value with selected value + var pageX = ((ev.type == 'touchstart') ? ev.originalEvent.changedTouches[0].pageX : ev.pageX); + change.apply( + current.cal.data('wcolpick').fields + .eq(7).val(Math.round(100 * fixVal(pageX - current.x, 0, current.cal.data('wcolpick').size) / current.cal.data('wcolpick').size)) + .get(0) + ); + return false; + }, + moveAlpha = function (ev) { + var pageX = ((ev.type == 'touchmove') ? ev.originalEvent.changedTouches[0].pageX : ev.pageX); + var alpha = Math.round(100 * fixVal(pageX - ev.data.x, 0, ev.data.cal.data('wcolpick').size) / ev.data.cal.data('wcolpick').size); + //livePreview = true: update colors | livePreview = false: update only position + if (ev.data.preview) change.apply(ev.data.cal.data('wcolpick').fields.eq(7).val(alpha).get(0)); + else setAlphaPos({a:alpha/100}, ev.data.cal.get(0)); + return false; + }, + upAlpha = function (ev) { + //livePreview = true: do nothing | livePreview = false: update colors + if (!ev.data.preview) { + var pageX = ((ev.type == 'touchend') ? ev.originalEvent.changedTouches[0].pageX : ev.pageX); + change.apply( + ev.data.cal.data('wcolpick').fields + .eq(7).val(Math.round(100 * fixVal(pageX - ev.data.x, 0, ev.data.cal.data('wcolpick').size) / ev.data.cal.data('wcolpick').size)) + .get(0) + ); + } + $(document).off('mouseup touchend',upAlpha); + $(document).off('mousemove touchmove',moveAlpha); + return false; + }, + //Hue slider functions + downHue = function (ev) { + ev.preventDefault ? ev.preventDefault() : ev.returnValue = false; + var current = { + cal: $(this).parent(), + y: $(this).offset().top, + preview: $(this).parent().data('wcolpick').livePreview + }; + $(document).on('mouseup touchend',current,upHue); + $(document).on('mousemove touchmove',current,moveHue); + //Update hue value with selected value + var pageY = ((ev.type == 'touchstart') ? ev.originalEvent.changedTouches[0].pageY : ev.pageY); + change.apply( + current.cal.data('wcolpick').fields + .eq(4).val(Math.round(360 * (current.cal.data('wcolpick').size - fixVal(pageY - current.y, 0, current.cal.data('wcolpick').size)) / current.cal.data('wcolpick').size)) + .get(0) + ); + return false; + }, + moveHue = function (ev) { + var pageY = ((ev.type == 'touchmove') ? ev.originalEvent.changedTouches[0].pageY : ev.pageY); + var hue = Math.round(360 * (ev.data.cal.data('wcolpick').size - fixVal(pageY - ev.data.y, 0, ev.data.cal.data('wcolpick').size)) / ev.data.cal.data('wcolpick').size); + //livePreview = true: update colors | livePreview = false: update only position + if (ev.data.preview) change.apply(ev.data.cal.data('wcolpick').fields.eq(4).val(hue).get(0)); + else setHuePos({h:hue}, ev.data.cal.get(0)); + return false; + }, + upHue = function (ev) { + //livePreview = true: do nothing | livePreview = false: update colors + if (!ev.data.preview) { + var pageY = ((ev.type == 'touchend') ? ev.originalEvent.changedTouches[0].pageY : ev.pageY); + change.apply( + ev.data.cal.data('wcolpick').fields + .eq(4).val(Math.round(360 * (ev.data.cal.data('wcolpick').size - fixVal(pageY - ev.data.y, 0, ev.data.cal.data('wcolpick').size)) / ev.data.cal.data('wcolpick').size)) + .get(0) + ); + } + $(document).off('mouseup touchend',upHue); + $(document).off('mousemove touchmove',moveHue); + return false; + }, + //Color selector functions + downSelector = function (ev) { + ev.preventDefault ? ev.preventDefault() : ev.returnValue = false; + var current = { + cal: $(this).parent(), + pos: $(this).offset(), + preview: $(this).parent().data('wcolpick').livePreview + }; + $(document).on('mouseup touchend',current,upSelector); + $(document).on('mousemove touchmove',current,moveSelector); + //Update saturation and brightness with selected values + var pageX, pageY; + if(ev.type == 'touchstart') {pageX = ev.originalEvent.changedTouches[0].pageX; pageY = ev.originalEvent.changedTouches[0].pageY;} else {pageX = ev.pageX; pageY = ev.pageY;} + change.apply( + current.cal.data('wcolpick').fields + .eq(6).val(Math.round(100 * (current.cal.data('wcolpick').size - fixVal(pageY - current.pos.top, 0, current.cal.data('wcolpick').size)) / current.cal.data('wcolpick').size)).end() + .eq(5).val(Math.round(100 * fixVal(pageX - current.pos.left, 0, current.cal.data('wcolpick').size) / current.cal.data('wcolpick').size)) + .get(0) + ); + return false; + }, + moveSelector = function (ev) { + var pageX, pageY; + if(ev.type == 'touchmove') {pageX = ev.originalEvent.changedTouches[0].pageX; pageY = ev.originalEvent.changedTouches[0].pageY;} else {pageX = ev.pageX; pageY = ev.pageY;} + var saturation = Math.round(100 * fixVal(pageX - ev.data.pos.left, 0, ev.data.cal.data('wcolpick').size) / ev.data.cal.data('wcolpick').size); + var brightness = Math.round(100 * (ev.data.cal.data('wcolpick').size - fixVal(pageY - ev.data.pos.top, 0, ev.data.cal.data('wcolpick').size)) / ev.data.cal.data('wcolpick').size); + //livePreview = true: update colors | livePreview = false: update only position + if (ev.data.preview) change.apply(ev.data.cal.data('wcolpick').fields.eq(6).val(brightness).end().eq(5).val(saturation).get(0)); + else setSelectorPos({s:saturation, b:brightness}, ev.data.cal.get(0)); + return false; + }, + upSelector = function (ev) { + //livePreview = true: do nothing | livePreview = false: update colors + if (!ev.data.preview) { + var pageX, pageY; + if(ev.type == 'touchend') {pageX = ev.originalEvent.changedTouches[0].pageX; pageY = ev.originalEvent.changedTouches[0].pageY; } else { pageX = ev.pageX; pageY = ev.pageY;} + change.apply( + ev.data.cal.data('wcolpick').fields + .eq(6).val(Math.round(100 * (ev.data.cal.data('wcolpick').size - fixVal(pageY - ev.data.pos.top, 0, ev.data.cal.data('wcolpick').size)) / ev.data.cal.data('wcolpick').size)).end() + .eq(5).val(Math.round(100 * fixVal(pageX - ev.data.pos.left, 0, ev.data.cal.data('wcolpick').size) / ev.data.cal.data('wcolpick').size)) + .get(0) + ); + } + $(document).off('mouseup touchend',upSelector); + $(document).off('mousemove touchmove',moveSelector); + return false; + }, + //Change values of the fields with up/down keys + keyDownFields = function(ev) { + if ($(this).parent().parent().data('wcolpick').enableUpDown) { + //Not triggered for hexadecimal field (there is no standard to define an order among the colors) + if (this.parentNode.className.indexOf('_hex_field') == -1) { + if (ev.which == 38 || ev.which == 40) { + ev.preventDefault(); + //Get the value from the selected element + var value = $(this).val(); + if (ev.which == 38) value++; //Up + else value--; //Down + //Set the new value and apply changes + change.apply($(this).val(value).get(0)); + } + } + } + }, + //Submit button + clickSubmit = function () { + var cal = $(this).parent(); + var hsba = cloneHSBA(cal.data('wcolpick').color, true); + var rgba = hsbaToRgba(hsba); + var hex = rgbaToHex(rgba); + cal.data('wcolpick').origColor = cloneHSBA(hsba, true); + setCurrentColor(rgba, cal.get(0)); + //Fires onSubmit + var hsla = hsbaToHsla(hsba); + cal.data('wcolpick').onSubmit({colorDiv:cal.get(0), el:cal.data('wcolpick').el, hex:hex.substring(0,6), hexa:hex, hsb:cloneHSBA(hsba, false), hsba:hsba, hsl:cloneHSLA(hsla, false), hsla:hsla, rgb:cloneRGBA(rgba, false), rgba:rgba}); + }, + //Restore original color by clicking on current color + restoreOriginal = function () { + var cal = $(this).parent().parent(); + var hsba = cloneHSBA(cal.data('wcolpick').origColor, true); + var rgba = hsbaToRgba(hsba); + var hex = rgbaToHex(rgba); + cal.data('wcolpick').color = cloneHSBA(hsba, true); + //Reapplies current color to all elements + fillHexField(hex, cal.get(0)); + fillRGBFields(rgba, cal.get(0)); + fillHSBFields(hsba, cal.get(0)); + fillAlphaField(hsba, cal.get(0)); + setSelectorPos(hsba, cal.get(0)); + setSelectorColor(hsba, cal.get(0)); + setHuePos(hsba, cal.get(0)); + setAlphaPos(hsba, cal.get(0)); + setAlphaColor(rgba, cal.get(0)); + setNewColor(rgba, cal.get(0)); + //Fires onChange (bySetColor = false) + var hsla = hsbaToHsla(hsba); + cal.data('wcolpick').onChange.apply(cal.parent(), [{bySetColor:false, colorDiv:cal.get(0), el:cal.data('wcolpick').el, hex:hex.substring(0,6), hexa:hex, hsb:cloneHSBA(hsba, false), hsba:hsba, hsl:cloneHSLA(hsla, false), hsla:hsla, rgb:cloneRGBA(rgba, false), rgba:rgba}]); + }, + //Fix alpha value, if the user enters a wrong value + fixAlpha = function (alpha) { + return fixVal(isNaN(alpha) ? 1 : alpha, 0, 1); + }, + //Remove alpha from hexadecimal, if alpha channel is disabled + adaptHex = function (hex, cal) { + if (hex === undefined) hex = '000000ff'; + if (!cal.data('wcolpick').enableAlpha) { + hex = removeAlpha(hex); + } + return hex; + }, + //Remove alpha value from hexadecimals/objects + removeAlpha = function (col) { + if (col !== undefined) { + if (typeof col === 'string') { + if (col.indexOf('#') != 0) { + if (col.length == 4) col = col.substring(0,3); + if (col.length == 8) col = col.substring(0,6); + } else { + if (col.length == 5) col = col.substring(0,4); + if (col.length == 9) col = col.substring(0,7); + } + } else if (col.a !== undefined) col.a = 1; + } + return col; + }, + //Clone color objects + cloneRGBA = function (rgba, withAlpha) { + if (rgba === undefined) return {r:0, g:0, b:0, a:1}; + if (withAlpha) { + if (rgba.a === undefined) return {r:rgba.r, g:rgba.g, b:rgba.b, a:1}; + else return {r:rgba.r, g:rgba.g, b:rgba.b, a:rgba.a}; + } else return {r:rgba.r, g:rgba.g, b:rgba.b}; + }, + cloneHSBA = function (hsba, withAlpha) { + if (hsba === undefined) return {h:0, s:0, b:0, a:1}; + if (withAlpha) { + if (hsba.a === undefined) return {h:hsba.h, s:hsba.s, b:hsba.b, a:1}; + else return {h:hsba.h, s:hsba.s, b:hsba.b, a:hsba.a}; + } else return {h:hsba.h, s:hsba.s, b:hsba.b}; + }, + cloneHSLA = function (hsla, withAlpha) { + if (hsla === undefined) return {h:0, s:0, l:0, a:1}; + if (withAlpha) { + if (hsla.a === undefined) return {h:hsla.h, s:hsla.s, l:hsla.l, a:1}; + else return {h:hsla.h, s:hsla.s, l:hsla.l, a:hsla.a}; + } else return {h:hsla.h, s:hsla.s, l:hsla.l}; + }, + //Compare color objects + compareHSBA = function (hsba1, hsba2) { + if (hsba1 === undefined || hsba2 === undefined) return false; + return (hsba1.h == hsba2.h && hsba1.s == hsba2.s && hsba1.b == hsba2.b && hsba1.a == hsba2.a); + }, + //Shows/hides the color picker + show = function (ev) { + //Prevent the trigger of any direct parent + if (ev) ev.stopPropagation(); + //cal is the color picker (dom object) + var cal = $('#' + $(this).data('wcolpickId')), overridePos = {}; + //Trying to access to a property (e.g. color) and, if is generated an error, abort! + try {var temp = cal.data('wcolpick').color;} + catch (e) {return this;} + //Polyfill fixes + if (ev && !cal.data('wcolpick').polyfill) ev.preventDefault(); + //Fires onBeforeShow + cal.data('wcolpick').onBeforeShow.apply(this, [{colorDiv:cal.get(0), el:cal.data('wcolpick').el, overridePos:overridePos}]); + //If flat is true, simply shows the color picker! + if (cal.data('wcolpick').flat) { + //Fires onShow + if (!(cal.data('wcolpick').onShow.apply(this, [{colorDiv:cal.get(0), el:cal.data('wcolpick').el}]) != false)) return this; + //Shows the picker and terminates + cal.show(); + return; + } + //Positions the color picker... + if (overridePos.left === undefined || isNaN(overridePos.left) || overridePos.top === undefined || isNaN(overridePos.top)) { + //Calculates the correctly position + var finalPos = {top:0, left:0}, pos = cal.data('wcolpick').appendedToBody ? $(this).offset() : $(this).position(); + if (cal.data('wcolpick').position == 'center') { //... on center of viewport + //Positions the color picker on top-left corner of viewport + finalPos.top = pos.top - ($(this).offset().top - $(window).scrollTop()); + finalPos.left = pos.left - ($(this).offset().left - $(window).scrollLeft()); + //Positions the color picker on center of viewport by adding coordinates + var centerViewport = {top:$(window).height()/2, left:$(window).width()/2}; + finalPos.top += centerViewport.top - cal.outerHeight()/2; + finalPos.left += centerViewport.left - cal.outerWidth()/2; + } else { //... automatically (default) + //Positions the color picker under his related html object + finalPos.top = pos.top + this.offsetHeight; + finalPos.left = pos.left; + //Fixes, if the color picker is showing outside of viewport + if (outOfViewportHeight(cal, $(this), this) && $(this).offset().top - $(window).scrollTop() >= cal.outerHeight()) { + finalPos.top -= (cal.outerHeight() + this.offsetHeight); + } + if (outOfViewportWidth(cal, $(this))) { + if ($(this).offset().left - $(window).scrollLeft() + this.offsetWidth >= cal.outerWidth()) { + finalPos.left -= (cal.outerWidth() - this.offsetWidth); + } else { + var leftMargin = $(this).offset().left - $(window).scrollLeft(); + var outWidth = leftMargin + cal.outerWidth() - $(window).width(); + if (leftMargin > outWidth) { finalPos.left -= outWidth; } else { finalPos.left -= leftMargin; } + } + } + } + //Applies the result + cal.css({top: finalPos.top + 'px', left: finalPos.left + 'px'}); + } else { + //Applies the user-defined position + cal.css({top: overridePos.top + 'px', left: overridePos.left + 'px'}); + } + //Fires onShow + if (!(cal.data('wcolpick').onShow.apply(this, [{colorDiv:cal.get(0), el:cal.data('wcolpick').el}]) != false)) return this; + //Shows the picker + cal.show(); + //Hides when user clicks outside + $('html').mousedown({cal:cal}, hide); + cal.mousedown(function(ev){ev.stopPropagation();}) + }, + hide = function (ev) { + var cal = $('#' + $(this).data('wcolpickId')); + if (ev) cal = ev.data.cal; + //Trying to access to a property (e.g. color) and, if is generated an error, abort! + try {var temp = cal.data('wcolpick').color;} + catch (e) {return this;} + //Fires onHide + if (!(cal.data('wcolpick').onHide.apply(this, [{colorDiv:cal.get(0), el:cal.data('wcolpick').el}]) != false)) return this; + //Hides the picker + cal.hide(); + $('html').off('mousedown', hide); + }, + //Detect if the color picker is out of viewport + outOfViewportHeight = function (cal, wrapEl, domEl) { + var calViewTop = wrapEl.offset().top - $(window).scrollTop() + domEl.offsetHeight; //Top of the color picker in viewport + var calHeight = cal.outerHeight(); //Height of the color picker + var viewHeight = $(window).height(); //Viewport height + return (calViewTop + calHeight > viewHeight); + }, + outOfViewportWidth = function (cal, wrapEl) { + var calViewLeft = wrapEl.offset().left - $(window).scrollLeft(); //Left of the color picker in viewport + var calWidth = cal.outerWidth(); //Width of the color picker + var viewWidth = $(window).width(); //Viewport width + return (calViewLeft + calWidth > viewWidth); + }, + //Destroys the color picker + destroy = function (ev) { + var cal = $('#' + $(this).data('wcolpickId')); + if (ev) cal = ev.data.cal; + //Fires onDestroy + if (!(cal.data('wcolpick').onDestroy.apply(this, [{colorDiv:cal.get(0), el:cal.data('wcolpick').el}]) != false)) return this; + //Destroys the picker + cal.remove(); + //Prevent firing of hide event on a destroyed object! //bySetColor + $('html').off('mousedown', hide); + }, + //Generate a random unique id + getUniqueID = (function () { + var cnt = Math.round(Math.random() * 10000); + return function () { + cnt += 1; + return cnt; + }; + })(), + //Used to detect if the browser in use is Microsoft Internet Explorer + isInternetExplorer = function () { + var isIE = (navigator.appName === 'Microsoft Internet Explorer'); + if (!isIE) return false; + var UA = navigator.userAgent.toLowerCase(); + var IEver = parseFloat(UA.match( /msie ([0-9]{1,}[\.0-9]{0,})/ )[1]); + var ngIE = (isIE && IEver < 10); + return ngIE; + }; + return { + init: function (opt) { + opt = $.extend({}, defaults, opt||{}); + //Set color + if (typeof opt.color === 'string') opt.color = hexToHsba(opt.color); + else if (opt.color.r !== undefined && opt.color.g !== undefined && opt.color.b !== undefined) opt.color = rgbaToHsba(fixRGBA(opt.color)); + else if (opt.color.h !== undefined && opt.color.s !== undefined && opt.color.b !== undefined) opt.color = fixHSBA(opt.color); + else if (opt.color.h !== undefined && opt.color.s !== undefined && opt.color.l !== undefined) opt.color = hslaToHsba(fixHSLA(opt.color)); + else opt.color = {h:0, s:0, b:0, a:1}; //Black = Error color + //Normalizes string options + opt.arrowsColor = opt.arrowsColor.toLowerCase(); + opt.checkersColor = opt.checkersColor.toLowerCase(); + opt.colorScheme = opt.colorScheme.toLowerCase(); + opt.layout = opt.layout.toLowerCase(); + opt.position = opt.position.toLowerCase(); + opt.showEvent = opt.showEvent.toLowerCase(); + opt.submitColor = opt.submitColor.toLowerCase(); + opt.variant = opt.variant.toLowerCase(); + if (typeof opt.fieldsBackground === 'string') opt.fieldsBackground = opt.fieldsBackground.toLowerCase(); + if (typeof opt.submitBackground === 'string') opt.submitBackground = opt.submitBackground.toLowerCase(); + //For each selected DOM element + return this.each(function () { + //If the element does not have an ID + if (!$(this).data('wcolpickId')) { + var options = $.extend({}, opt); + //Fixes color if alpha is disabled + if (!opt.enableAlpha) opt.color = removeAlpha(opt.color); + //Setup current color + options.origColor = cloneHSBA(opt.color, true); + // Set polyfill + if (typeof opt.polyfill == 'function') options.polyfill = opt.polyfill(this); + //Input field operations + options.input = $(this).is('input'); + //Polyfill fixes + if (options.polyfill && options.input && this.type === 'color') return; + //Generate and assign a random ID + var id = 'colorpicker_' + getUniqueID(); + $(this).data('wcolpickId', id); + //Set the tpl's ID and get the HTML + var cal = $(tpl).attr('id', id); + //Setup size of the selected variant (Add other "else-if" for other future variants) + if (options.variant == 'small') options.size = 160; //Small Version! + else if (options.variant == 'extra-large') options.size = 300; //Extra Large Version! + else options.size = 225; //Standard Version (default)! + //Loading the choosen layout + if (options.variant == 'small') { //Add class according to layout (small) + cal.addClass('wcolpickS wcolpickS_'+options.layout+(options.enableSubmit?'':' wcolpickS_'+options.layout+'_ns')); + if(!options.enableAlpha) cal.addClass('wcolpickS_noalpha wcolpickS_'+options.layout+'_noalpha'+(options.enableSubmit?'':' wcolpickS_'+options.layout+'_noalpha_ns')); //Disable alpha channel, if requested + } else if (options.variant == 'extra-large') { //Add class according to layout (extra-large) + cal.addClass('wcolpickXL wcolpickXL_'+options.layout+(options.enableSubmit?'':' wcolpickXL_'+options.layout+'_ns')); + if(!options.enableAlpha) cal.addClass('wcolpickXL_noalpha wcolpickXL_'+options.layout+'_noalpha'+(options.enableSubmit?'':' wcolpickXL_'+options.layout+'_noalpha_ns')); //Disable alpha channel, if requested + } else { //Add class according to layout (default -> standard) + cal.addClass('wcolpick_'+options.layout+(options.enableSubmit?'':' wcolpick_'+options.layout+'_ns')); + if(!options.enableAlpha) cal.addClass('wcolpick_noalpha wcolpick_'+options.layout+'_noalpha'+(options.enableSubmit?'':' wcolpick_'+options.layout+'_noalpha_ns')); //Disable alpha channel, if requested + } + //Loading Compact layout, if requested + if (options.compactLayout) { + if (options.variant == 'small') { //Add class according to layout (small) + cal.addClass('wcolpickS_compact wcolpickS_compact_'+options.layout+(options.enableSubmit?'':' wcolpickS_compact_'+options.layout+'_ns')); + if(!options.enableAlpha) cal.addClass('wcolpickS_compact_noalpha wcolpickS_compact_'+options.layout+'_noalpha'+(options.enableSubmit?'':' wcolpickS_compact_'+options.layout+'_noalpha_ns')); //Disable alpha channel, if requested + } else if (options.variant == 'extra-large') { //Add class according to layout (extra-large) + cal.addClass('wcolpickXL_compact wcolpickXL_compact_'+options.layout+(options.enableSubmit?'':' wcolpickXL_compact_'+options.layout+'_ns')); + if(!options.enableAlpha) cal.addClass('wcolpickXL_compact_noalpha wcolpickXL_compact_'+options.layout+'_noalpha'+(options.enableSubmit?'':' wcolpickXL_compact_'+options.layout+'_noalpha_ns')); //Disable alpha channel, if requested + } else { //Add class according to layout (default -> standard) + cal.addClass('wcolpick_compact wcolpick_compact_'+options.layout+(options.enableSubmit?'':' wcolpick_compact_'+options.layout+'_ns')); + if(!options.enableAlpha) cal.addClass('wcolpick_compact_noalpha wcolpick_compact_'+options.layout+'_noalpha'+(options.enableSubmit?'':' wcolpick_compact_'+options.layout+'_noalpha_ns')); //Disable alpha channel, if requested + } + } + //Loading the choosen color scheme + if (options.colorScheme.indexOf('light') == 0) { //All light color schemes start with "light" + cal.addClass('wcolpick_light'); //Loading default light color scheme + if(options.colorScheme != 'light') cal.addClass('wcolpick_'+options.colorScheme); //Loading light-based color scheme + //INFO: You can implement light-based color schemes, in css, naming them: light-[name] (IMPORTANT: Use only lowercase names!) + } else if (options.colorScheme.indexOf('dark') == 0) { //All dark color schemes start with "dark" + cal.addClass('wcolpick_dark'); //Loading default dark color scheme + if(options.colorScheme != 'dark') cal.addClass('wcolpick_'+options.colorScheme); //Loading dark-based color scheme + //INFO: You can implement dark-based color schemes, in css, naming them: dark-[name] (IMPORTANT: Use only lowercase names!) + } else { //If the scheme does not starts with "light" or "dark" + cal.addClass('wcolpick_light'); //Loading default color scheme for all (light) + cal.addClass('wcolpick_'+options.colorScheme); //Loading the "strange" color scheme + } + //Change color scheme for arrows, if requested + if (options.arrowsColor == 'light') cal.addClass('wcolpick_lightArrs'); + else if (options.arrowsColor == 'dark') cal.addClass('wcolpick_darkArrs'); + //Change color scheme for checkerboards, if requested + if (options.checkersColor == 'light') cal.addClass('wcolpick_lightCheckerboards'); + else if (options.checkersColor == 'dark') cal.addClass('wcolpick_darkCheckerboards'); + //Change color scheme for submit button, if requested + if (options.submitColor == 'light') cal.addClass('wcolpick_lightSubmit'); + else if (options.submitColor == 'dark') cal.addClass('wcolpick_darkSubmit'); + //Hide outlines, if requested + if (!options.colorSelOutline) cal.addClass('wcolpick_noCSOutline'); + if (!options.hueOutline) cal.addClass('wcolpick_noHOutline'); + if (!options.alphaOutline) cal.addClass('wcolpick_noAOutline'); + if (!options.colorOutline) cal.addClass('wcolpick_noNCOutline'); + //Set border width + cal.css('border-width', options.border + 'px'); + //Setup submit button + options.submit = cal.find('div.wcolpick_submit').click(clickSubmit); + //Setup input fields + options.fields = cal.find('input').change(change).keydown(keyDownFields).blur(blur).focus(focus); + //If alpha channel is disabled, set hex field maxlength to 6 + if (!options.enableAlpha) options.fields.eq(0).prop('maxlength', 6); + //Setup readonly attribute to fields + for (var i = 0; i < 8; i++) options.fields.eq(i).prop('readonly', options.readonlyFields); + if (options.readonlyHexField) options.fields.eq(0).prop('readonly', options.readonlyHexField); + //Setup color of fields, submit button, external border, and background (if a color is different than default, it will override the default color) + if (options.fieldsBackground != 'default') { + var colstr = encodeToCSS(options.fieldsBackground); + for (var i = 0; i < 8; i++) options.fields.eq(i).parent().css('background',colstr); + } + if (options.submitBackground != 'default') options.submit.css('background',encodeToCSS(options.submitBackground)); + if (options.backgroundColor != 'default') cal.css('background',encodeToCSS(options.backgroundColor)); + if (options.borderColor != 'default') cal.css('borderColor',encodeToCSS(options.borderColor)); + //Setup restoreOriginal to current color's click event + cal.find('div.wcolpick_field_arrs').mousedown(downIncrement).end().find('div.wcolpick_current_color').click(restoreOriginal); + //Setup color selector + options.selector = cal.find('div.wcolpick_color').on('mousedown touchstart',downSelector); + options.selectorIndic = options.selector.find('div.wcolpick_selector_outer'); + //Setup hue bar and alpha bar + options.el = this; + options.hue = cal.find('div.wcolpick_hue_arrs'); + options.hueBar = cal.find('div.wcolpick_hue_overlay'); + options.alpha = cal.find('div.wcolpick_alpha_arrs'); + options.alphaBar = cal.find('div.wcolpick_alpha_overlay'); + //Painting hue bar + var stops = ['#ff0000','#ff0080','#ff00ff','#8000ff','#0000ff','#0080ff','#00ffff','#00ff80','#00ff00','#80ff00','#ffff00','#ff8000','#ff0000']; + if (isInternetExplorer()) { //Compatibility with IE 6-9 + var i, div; + for (i=0; i<=11; i++) { + div = $('
').attr('style','height:8.333333%; filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='+stops[i]+',endColorstr='+stops[i+1]+'); -ms-filter:"progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='+stops[i]+',endColorstr='+stops[i+1]+')";'); + options.hueBar.append(div); + } + } else { + var stopList = stops.join(','); + options.hueBar.attr('style','background:-webkit-linear-gradient(top,'+stopList+'); background:-moz-linear-gradient(top,'+stopList+'); background:-ms-linear-gradient(top,'+stopList+'); background:-o-linear-gradient(top,'+stopList+'); background:linear-gradient(to bottom,'+stopList+');'); + } + //Setup remaining events, new, and current color + cal.find('div.wcolpick_hue').on('mousedown touchstart',downHue); + cal.find('div.wcolpick_alpha').on('mousedown touchstart',downAlpha); + options.newColor = cal.find('div.wcolpick_new_color'); + options.currentColor = cal.find('div.wcolpick_current_color'); + //Store options + cal.data('wcolpick', options); + //Fill with default color + var rgba = hsbaToRgba(options.color); + fillHSBFields(options.color, cal.get(0)); + fillAlphaField(options.color, cal.get(0)); + fillRGBFields(rgba, cal.get(0)); + fillHexField(rgbaToHex(rgba), cal.get(0)); + setSelectorPos(options.color, cal.get(0)); + setSelectorColor(options.color, cal.get(0)); + setHuePos(options.color, cal.get(0)); + setAlphaPos(options.color, cal.get(0)); + setAlphaColor(rgba, cal.get(0)); + setCurrentColor(rgba, cal.get(0)); + setNewColor(rgba, cal.get(0)); + //Append to parent if flat=false, else show in place + if (options.flat) { + cal.appendTo(this).show(); + cal.css({position: 'relative', display: 'block'}); + } else { + cal.data('wcolpick').appendedToBody = options.appendToBody; + if (!options.appendToBody) cal.appendTo($(this).parent()); + else cal.appendTo(document.body); + $(this).on(options.showEvent, show); + cal.css({position: 'absolute'}); + } + //Loading completed + cal.data('wcolpick').onLoaded.apply(cal.parent(), [{colorDiv:cal.get(0), el:cal.data('wcolpick').el}]); + } + }); + }, + //Shows the picker + showColpick: function() { + return this.each( function () { + if ($(this).data('wcolpickId')) { + show.apply(this); + } + }); + }, + //Hides the picker + hideColpick: function() { + return this.each( function () { + if ($(this).data('wcolpickId')) { + hide.apply(this); + } + }); + }, + //Destroys the picker + destroyColpick: function() { + return this.each( function () { + if ($(this).data('wcolpickId')) { + destroy.apply(this); + } + }); + }, + //Sets a color as new and current (Default: Set only as new color) + setColpickColor: function(col, setCurrent) { + if (col !== undefined) { //If color is undefined, do nothing! + if (typeof col === 'string') col = hexToHsba(col); + else if (col.r !== undefined && col.g !== undefined && col.b !== undefined) col = rgbaToHsba(fixRGBA(col)); + else if (col.h !== undefined && col.s !== undefined && col.b !== undefined) col = fixHSBA(col); + else if (col.h !== undefined && col.s !== undefined && col.l !== undefined) col = hslaToHsba(fixHSLA(col)); + else return this; //If color is not recognized, do nothing! + if (setCurrent === undefined) setCurrent = false; //Default: Set only as new color + return this.each(function(){ + if ($(this).data('wcolpickId')) { + var cal = $('#' + $(this).data('wcolpickId')); + //Fixes color if alpha is disabled + if (!cal.data('wcolpick').enableAlpha) col = removeAlpha(col); + //Check if the color is actually changed and, if is true, do nothing! + if (setCurrent) { if (compareHSBA(col, cal.data('wcolpick').color) && compareHSBA(col, cal.data('wcolpick').origColor)) return this; } + else { if (compareHSBA(col, cal.data('wcolpick').color)) return this; } + //Setup new color + cal.data('wcolpick').color = cloneHSBA(col, true); + var rgba = hsbaToRgba(col); + var hex = rgbaToHex(rgba); + //Applies color to all elements + fillHSBFields(col, cal.get(0)); + fillAlphaField(col, cal.get(0)); + fillRGBFields(rgba, cal.get(0)); + fillHexField(hex, cal.get(0)); + setSelectorPos(col, cal.get(0)); + setSelectorColor(col, cal.get(0)); + setHuePos(col, cal.get(0)); + setAlphaPos(col, cal.get(0)); + setAlphaColor(rgba, cal.get(0)); + setNewColor(rgba, cal.get(0)); + //If setCurrent is "true", sets the color as current + if (setCurrent) { + cal.data('wcolpick').origColor = cloneHSBA(col, true); + setCurrentColor(rgba, cal.get(0)); + } + //Fires onChange (bySetColor = true) + var hsla = hsbaToHsla(col); + cal.data('wcolpick').onChange.apply(cal.parent(), [{bySetColor:true, colorDiv:cal.get(0), el:cal.data('wcolpick').el, hex:hex.substring(0,6), hexa:hex, hsb:cloneHSBA(col, false), hsba:col, hsl:cloneHSLA(hsla, false), hsla:hsla, rgb:cloneRGBA(rgba, false), rgba:rgba}]); + } + }); + } + }, + //Returns the selected color (Default: Hsb color with alpha value, and get new color (not current)) + getColpickColor: function(type, getCurrent) { + var cal = $('#' + $(this).data('wcolpickId')); + if (getCurrent === undefined) getCurrent = false; //Default: Get new color (not current) + if (type === undefined) type = 'hsba'; //Default: Hsb color with alpha value + var withAlpha = (type.indexOf('a') != -1); + //Getting the color + var col = getCurrent ? cloneHSBA(cal.data('wcolpick').origColor, true) : cloneHSBA(cal.data('wcolpick').color, true); + if (type.indexOf('rgb') != -1) { + var rgba = hsbaToRgba(col); + return withAlpha ? {r:rgba.r, g:rgba.g, b:rgba.b, a:rgba.a} : {r:rgba.r, g:rgba.g, b:rgba.b}; + } else if (type.indexOf('hsl') != -1) { + var hsla = hsbaToHsla(col); + return withAlpha ? {h:hsla.h, s:hsla.s, l:hsla.l, a:hsla.a} : {h:hsla.h, s:hsla.s, l:hsla.l}; + } else if (type.indexOf('hex') != -1) return withAlpha ? hsbaToHex(col) : hsbaToHex(col).substring(0,6); + else return withAlpha ? {h:col.h, s:col.s, b:col.b, a:col.a} : {h:col.h, s:col.s, b:col.b}; + } + }; + }(); + //Color space convertions + var hexToRgba = function (hex) { + if (hex === undefined) return {r:0, g:0, b:0, a:1}; + if (hex.indexOf('#') == 0) hex = hex.substring(1); + if (isValidHex(hex)) { + if (hex.length == 3) hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2] + 'ff'; + else if (hex.length == 4) hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2] + hex[3] + hex[3]; + else if (hex.length == 6) hex = hex + 'ff'; + else if (hex.length != 8) return {r:0, g:0, b:0, a:1}; + } else { return {r:0, g:0, b:0, a:1}; } + var hexI = parseInt(hex,16); + var rgba = {r: hexI >>> 24, g: (hexI & 0x00FF0000) >>> 16, b: (hexI & 0x0000FF00) >>> 8, a: (hexI & 0x000000FF) / 255}; + return rgba; + }; + var hexToHsba = function (hex) { + return rgbaToHsba(hexToRgba(hex)); + }; + var hexToHsla = function (hex) { + return rgbaToHsla(hexToRgba(hex)); + }; + var rgbaToHex = function (rgba) { + if (rgba === undefined) return '000000ff'; + if (rgba.a === undefined) rgba.a = 1; + var a = Math.round(rgba.a * 255); + var hex = [ rgba.r.toString(16), rgba.g.toString(16), rgba.b.toString(16), a.toString(16) ]; + $.each(hex, function (nr, val) { + if (val.length == 1) hex[nr] = '0' + val; + }); + return hex.join(''); + }; + var rgbaToHsba = function (rgba) { + if (rgba === undefined) return {h:0, s:0, b:0, a:1}; + if (rgba.a === undefined) rgba.a = 1; + var r = rgba.r / 255, g = rgba.g / 255, b = rgba.b / 255; + var min = Math.min(r, Math.min(g, b)); + var max = Math.max(r, Math.max(g, b)); + var delta = max - min; + var brightness = max; + var saturation = max != 0 ? delta / max : 0; + var hue = delta != 0 ? (r == max ? (g - b) / delta : g == max ? ((b - r) / delta) + 2 : ((r - g) / delta) + 4) * 60 : 0; + if (hue < 0) hue += 360; + return fixHSBA({h: hue, s: saturation * 100, b: brightness * 100, a: rgba.a}); + }; + var rgbaToHsla = function (rgba) { + if (rgba === undefined) return {h:0, s:0, l:0, a:1}; + if (rgba.a === undefined) rgba.a = 1; + var r = rgba.r / 255, g = rgba.g / 255, b = rgba.b / 255; + var min = Math.min(r, Math.min(g, b)); + var max = Math.max(r, Math.max(g, b)); + var delta = max - min; + var lightness = (max + min) / 2; + var saturation = delta != 0 ? delta / (1 - Math.abs(max + min - 1)) : 0; + var hue = delta != 0 ? (r == max ? (g - b) / delta : g == max ? ((b - r) / delta) + 2 : ((r - g) / delta) + 4) * 60 : 0; + if (hue < 0) hue += 360; + return fixHSLA({h: hue, s: saturation * 100, l: lightness * 100, a: rgba.a}); + }; + var hsbaToHex = function (hsba) { + return rgbaToHex(hsbaToRgba(hsba)); + }; + var hsbaToRgba = function (hsba) { + if (hsba === undefined) return {r:0, g:0, b:0, a:1}; + if (hsba.a === undefined) hsba.a = 1; + var hsbaL = {h: hsba.h, s: hsba.s / 100, b: hsba.b / 100, a: hsba.a}; + var red, green, blue; + if (hsbaL.s == 0) red = green = blue = hsbaL.b; + else + { + var t1 = hsbaL.b; + var t2 = (1 - hsbaL.s) * hsbaL.b; + var t3 = (t1 - t2) * (hsbaL.h % 60) / 60; + if (hsbaL.h < 60 || hsbaL.h == 360) { red = t1; blue = t2; green = t2 + t3; } + else if (hsbaL.h < 120) { green = t1; blue = t2; red = t1 - t3; } + else if (hsbaL.h < 180) { green = t1; red = t2; blue = t2 + t3; } + else if (hsbaL.h < 240) { blue = t1; red = t2; green = t1 - t3; } + else if (hsbaL.h < 300) { blue = t1; green = t2; red = t2 + t3; } + else { red = t1; green = t2; blue = t1 - t3; } + } + return fixRGBA({r: Math.round(red * 255), g: Math.round(green * 255), b: Math.round(blue * 255), a: hsbaL.a}); + }; + var hsbaToHsla = function (hsba) { + if (hsba === undefined) return {h:0, s:0, l:0, a:1}; + if (hsba.a === undefined) hsba.a = 1; + var hsbaL = {h: hsba.h, s: hsba.s / 100, b: hsba.b / 100, a: hsba.a}; + var lightness = hsbaL.b * (2 - hsbaL.s) / 2; + var saturation = lightness != 0 && lightness != 1 ? hsba.b * hsba.s / (1 - Math.abs((2 * lightness) - 1)) : 0; + return fixHSLA({h: hsbaL.h, s: saturation * 100, l: lightness * 100, a: hsbaL.a}); + }; + var hslaToHex = function (hsla) { + return rgbaToHex(hslaToRgba(hsla)); + }; + var hslaToRgba = function (hsla) { + if (hsla === undefined) return {r:0, g:0, b:0, a:1}; + if (hsla.a === undefined) hsla.a = 1; + var hslaL = {h: hsla.h, s: hsla.s / 100, l: hsla.l / 100, a: hsla.a}; + var red, green, blue; + var c = (1 - Math.abs(2 * hslaL.l - 1)) * hslaL.s; + var x = c * (1 - Math.abs((hslaL.h / 60 % 2) - 1)); + var m = hslaL.l - (c / 2); + if (hslaL.h < 60 || hslaL.h == 360) { red = c + m; green = x + m; blue = m; } + else if (hslaL.h < 120) { red = x + m; green = c + m; blue = m; } + else if (hslaL.h < 180) { red = m; green = c + m; blue = x + m; } + else if (hslaL.h < 240) { red = m; green = x + m; blue = c + m; } + else if (hslaL.h < 300) { red = x + m; green = m; blue = c + m; } + else { red = c + m; green = m; blue = x + m; } + return fixRGBA({r: Math.round(red * 255), g: Math.round(green * 255), b: Math.round(blue * 255), a: hslaL.a}); + }; + var hslaToHsba = function (hsla) { + if (hsla === undefined) return {h:0, s:0, b:0, a:1}; + if (hsla.a === undefined) hsla.a = 1; + var hslaL = {h: hsla.h, s: hsla.s / 100, l: hsla.l / 100, a: hsla.a}; + var brightness = ((2 * hslaL.l) + (hslaL.s * (1 - Math.abs((2 * hslaL.l) - 1)))) / 2; + var saturation = brightness != 0 ? 2 * (brightness - hslaL.l) / brightness : 0; + return fixHSBA({h: hslaL.h, s: saturation * 100, b: brightness * 100, a: hslaL.a}); + }; + //Check if a string is a valid hexadecimal string + var isValidHex = function (hex) { + if (hex === undefined) return false; + while (hex.indexOf('0') == 0) hex = hex.substring(1); + if(hex == '') hex = '0'; + return (parseInt(hex,16).toString(16) === hex.toLowerCase()); + }; + //Fix the values, if the user enters a wrong value + var fixRGBA = function (rgba) { + if (rgba === undefined) return {r:0, g:0, b:0, a:1}; + return { + r: fixVal(isNaN(rgba.r) ? 0 : rgba.r, 0, 255), + g: fixVal(isNaN(rgba.g) ? 0 : rgba.g, 0, 255), + b: fixVal(isNaN(rgba.b) ? 0 : rgba.b, 0, 255), + a: fixVal(isNaN(rgba.a) ? 1 : rgba.a, 0, 1) + }; + }; + var fixHSBA = function (hsba) { + if (hsba === undefined) return {h:0, s:0, b:0, a:1}; + return { + h: fixVal(isNaN(hsba.h) ? 0 : hsba.h, 0, 360), + s: fixVal(isNaN(hsba.s) ? 0 : hsba.s, 0, 100), + b: fixVal(isNaN(hsba.b) ? 0 : hsba.b, 0, 100), + a: fixVal(isNaN(hsba.a) ? 1 : hsba.a, 0, 1) + }; + }; + var fixHSLA = function (hsla) { + if (hsla === undefined) return {h:0, s:0, l:0, a:1}; + return { + h: fixVal(isNaN(hsla.h) ? 0 : hsla.h, 0, 360), + s: fixVal(isNaN(hsla.s) ? 0 : hsla.s, 0, 100), + l: fixVal(isNaN(hsla.l) ? 0 : hsla.l, 0, 100), + a: fixVal(isNaN(hsla.a) ? 1 : hsla.a, 0, 1) + }; + }; + var fixVal = function (val, min, max) { + return val >= max ? max : val <= min ? min : val; + }; + //Converts a color object in a css color string + var encodeToCSS = function (colobj) { + if (colobj === undefined) return 'rgb(0,0,0)'; + if (colobj.r !== undefined && colobj.g !== undefined && colobj.b !== undefined) { + var rgba = fixRGBA(colobj); + return 'rgba('+rgba.r+','+rgba.g+','+rgba.b+','+rgba.a+')'; + } else if (colobj.h !== undefined && colobj.s !== undefined && colobj.l !== undefined) { + var hsla = fixHSLA(colobj); + return 'hsla('+hsla.h+','+hsla.s+'%,'+hsla.l+'%,'+hsla.a+')'; + } else if (colobj.h !== undefined && colobj.s !== undefined && colobj.b !== undefined) { + var hsla = hsbaToHsla(fixHSBA(colobj)); + return 'hsla('+hsla.h+','+hsla.s+'%,'+hsla.l+'%,'+hsla.a+')'; + } else if (typeof colobj === 'string') { + return colobj; //If colobj is a string, returns the string untouched (maybe is a string like "green", "blue", "black", ...). + } else return 'rgb(0,0,0)'; + }; + //Converts a css color string in a color object + var decodeFromCSS = function (colstr) { + if (colstr === undefined) return {r:0, g:0, b:0, a:1}; + if (typeof colstr !== 'string') colstr = colstr.toString(); + if (colstr.indexOf('rgb') != -1) { + var elems = colstr.substring(colstr.indexOf('(')+1, colstr.indexOf(')')).split(','); + return fixRGBA({r:parseInt(elems[0]), g:parseInt(elems[1]), b:parseInt(elems[2]), a:parseFloat(elems[3])}); + } else if (colstr.indexOf('hsl') != -1) { + var elems = colstr.substring(colstr.indexOf('(')+1, colstr.indexOf(')')).split(','); + return fixHSLA({h:parseFloat(elems[0]), s:parseFloat(elems[1]), l:parseFloat(elems[2]), a:parseFloat(elems[3])}); + } else { + return hexToHsba(colstr); //Tries to treat the unidentified string as an hexadecimal string, and, in case, returns an hsba object (ready for input). + } + }; + //External accessible functions + $.fn.extend({ + loads: wcolpick.init, + shows: wcolpick.showColpick, + hides: wcolpick.hideColpick, + destroys: wcolpick.destroyColpick, + setColor: wcolpick.setColpickColor, + getColor: wcolpick.getColpickColor + }); + $.extend({ + wcolpick:{ + hexToRgba: hexToRgba, + hexToHsba: hexToHsba, + hexToHsla: hexToHsla, + rgbaToHex: rgbaToHex, + rgbaToHsba: rgbaToHsba, + rgbaToHsla: rgbaToHsla, + hsbaToHex: hsbaToHex, + hsbaToRgba: hsbaToRgba, + hsbaToHsla: hsbaToHsla, + hslaToHex: hslaToHex, + hslaToRgba: hslaToRgba, + hslaToHsba: hslaToHsba, + isValidHex: isValidHex, + encodeToCSS: encodeToCSS, + decodeFromCSS: decodeFromCSS + } + }); +})(jQuery); diff --git a/multicolor_backend_theme/static/src/xml/base_ext.xml b/multicolor_backend_theme/static/src/xml/base_ext.xml new file mode 100644 index 000000000..15b6b9230 --- /dev/null +++ b/multicolor_backend_theme/static/src/xml/base_ext.xml @@ -0,0 +1,22 @@ + + + + +
+