summaryrefslogtreecommitdiff
path: root/addons
diff options
context:
space:
mode:
authorBenoit Socias <bso@odoo.com>2021-02-03 11:13:48 +0000
committerqsm-odoo <qsm@odoo.com>2021-02-15 15:49:15 +0000
commit7f19f63b18bc7d17a393b3535492c7f90595ca39 (patch)
treeec878602432ded418100393cec194c1b4da3023f /addons
parentf2fa17540e130b5cf3f70570a3a97495cfbb7499 (diff)
[FIX] web, web_editor: avoid rendering color palettes more than once
Before this commit the palette was rendered each time it was opened. After this commit if the palette has already been rendered only the selected color is being updated in the palette (and its colorpicker). task-2439295 https://github.com/odoo/odoo/pull/65223 Co-authored-by: Samuel Degueldre <sad@odoo.com>
Diffstat (limited to 'addons')
-rw-r--r--addons/web/static/src/js/widgets/colorpicker.js11
-rw-r--r--addons/web_editor/static/src/js/editor/snippets.options.js2
-rw-r--r--addons/web_editor/static/src/js/wysiwyg/widgets/color_palette.js15
3 files changed, 25 insertions, 3 deletions
diff --git a/addons/web/static/src/js/widgets/colorpicker.js b/addons/web/static/src/js/widgets/colorpicker.js
index c0805ca20b6..29e8c22aa0b 100644
--- a/addons/web/static/src/js/widgets/colorpicker.js
+++ b/addons/web/static/src/js/widgets/colorpicker.js
@@ -108,6 +108,17 @@ var ColorpickerWidget = Widget.extend({
this._super.apply(this, arguments);
$(document).off(`.${this.uniqueId}`);
},
+ /**
+ * Sets the currently selected color
+ *
+ * @param {string} color rgb[a]
+ */
+ setSelectedColor: function (color) {
+ var rgba = ColorpickerWidget.convertCSSColorToRgba(color);
+ if (rgba) {
+ this._updateRgba(rgba.red, rgba.green, rgba.blue, rgba.opacity);
+ }
+ },
//--------------------------------------------------------------------------
// Private
diff --git a/addons/web_editor/static/src/js/editor/snippets.options.js b/addons/web_editor/static/src/js/editor/snippets.options.js
index 52f1bebb023..7496eb29018 100644
--- a/addons/web_editor/static/src/js/editor/snippets.options.js
+++ b/addons/web_editor/static/src/js/editor/snippets.options.js
@@ -1320,7 +1320,7 @@ const ColorpickerUserValueWidget = SelectUserValueWidget.extend({
async setValue(color) {
await this._super(...arguments);
- await this._renderColorPalette();
+ this.colorPalette.setSelectedColor(this._value);
const classes = weUtils.computeColorClasses(this.colorPalette.getColorNames());
this.colorPreviewEl.classList.remove(...classes);
diff --git a/addons/web_editor/static/src/js/wysiwyg/widgets/color_palette.js b/addons/web_editor/static/src/js/wysiwyg/widgets/color_palette.js
index ff5fa4b0a75..d00abd1ad38 100644
--- a/addons/web_editor/static/src/js/wysiwyg/widgets/color_palette.js
+++ b/addons/web_editor/static/src/js/wysiwyg/widgets/color_palette.js
@@ -159,6 +159,14 @@ const ColorPaletteWidget = Widget.extend({
getColorNames: function () {
return this.colorNames;
},
+ /**
+ * Sets the currently selected color
+ *
+ * @param {string} color rgb[a]
+ */
+ setSelectedColor: function (color) {
+ this._selectColor({color: color});
+ },
//--------------------------------------------------------------------------
// Private
@@ -261,13 +269,16 @@ const ColorPaletteWidget = Widget.extend({
* Set the selectedColor and trigger an event
*
* @param {Object} color
- * @param {string} eventName
+ * @param {string} [eventName]
*/
_selectColor: function (colorInfo, eventName) {
this.selectedColor = colorInfo.color = this.colorToColorNames[colorInfo.color] || colorInfo.color;
- this.trigger_up(eventName, colorInfo);
+ if (eventName) {
+ this.trigger_up(eventName, colorInfo);
+ }
this._buildCustomColors();
this._markSelectedColor();
+ this.colorPicker.setSelectedColor(colorInfo.color);
},
/**
* Mark the selected color