diff --git a/addons/im_livechat/__manifest__.py b/addons/im_livechat/__manifest__.py
index 5703bf19b67..21bd5cc9573 100644
--- a/addons/im_livechat/__manifest__.py
+++ b/addons/im_livechat/__manifest__.py
@@ -62,8 +62,7 @@ Help your customers with this chat, and analyse their feedback.
'mail/static/src/services/messaging_service.js',
],
'web.assets_backend': [
- 'im_livechat/static/src/js/im_livechat_channel_form_view.js',
- 'im_livechat/static/src/js/im_livechat_channel_form_controller.js',
+ 'im_livechat/static/src/js/colors_reset_button/*',
'im_livechat/static/src/js/im_livechat_chatbot_form_view.js',
'im_livechat/static/src/js/im_livechat_chatbot_form_controller.js',
'im_livechat/static/src/js/im_livechat_chatbot_step_form_view_dialog.js',
diff --git a/addons/im_livechat/static/src/js/colors_reset_button/colors_reset_button.js b/addons/im_livechat/static/src/js/colors_reset_button/colors_reset_button.js
new file mode 100644
index 00000000000..05921151955
--- /dev/null
+++ b/addons/im_livechat/static/src/js/colors_reset_button/colors_reset_button.js
@@ -0,0 +1,23 @@
+/** @odoo-module **/
+
+import { registry } from '@web/core/registry';
+import { standardWidgetProps } from "@web/views/widgets/standard_widget_props";
+
+const { Component } = owl;
+
+export class ColorsResetButton extends Component {
+ onColorsResetButtonClick() {
+ this.props.record.update(this.props.default_colors);
+ }
+}
+ColorsResetButton.template = `im_livechat.ColorsResetButton`;
+ColorsResetButton.props = {
+ ...standardWidgetProps,
+ default_colors: { type: Object },
+};
+ColorsResetButton.extractProps = ({ attrs }) => {
+ // Note: `options` should have `default_colors`. It's specified when using the widget.
+ return attrs.options;
+};
+
+registry.category('view_widgets').add('colors_reset_button', ColorsResetButton);
diff --git a/addons/im_livechat/static/src/js/colors_reset_button/colors_reset_button.xml b/addons/im_livechat/static/src/js/colors_reset_button/colors_reset_button.xml
new file mode 100644
index 00000000000..97144a1409b
--- /dev/null
+++ b/addons/im_livechat/static/src/js/colors_reset_button/colors_reset_button.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
diff --git a/addons/im_livechat/static/src/js/im_livechat_channel_form_controller.js b/addons/im_livechat/static/src/js/im_livechat_channel_form_controller.js
deleted file mode 100644
index c89472a48af..00000000000
--- a/addons/im_livechat/static/src/js/im_livechat_channel_form_controller.js
+++ /dev/null
@@ -1,51 +0,0 @@
-/** @odoo-module **/
-
-import FormController from 'web.FormController';
-
-const ImLivechatChannelFormController = FormController.extend({
- events: Object.assign({}, FormController.prototype.events, {
- 'click .o_im_livechat_channel_form_button_colors_reset_button': '_onClickLivechatButtonColorsResetButton',
- 'click .o_im_livechat_channel_form_chat_window_colors_reset_button': '_onClickLivechatChatWindowColorsResetButton',
- }),
-
- //--------------------------------------------------------------------------
- // Private
- //--------------------------------------------------------------------------
-
- /**
- * @private
- * @param {Object} colorValues
- */
- async _updateColors(colorValues) {
- for (const name in colorValues) {
- this.$(`[name="${name}"] .o_field_color`).css('background-color', colorValues[name]);
- }
- const result = await this.model.notifyChanges(this.handle, colorValues);
- this._updateRendererState(this.model.get(this.handle), { fieldNames: result });
- },
-
- //--------------------------------------------------------------------------
- // Handlers
- //--------------------------------------------------------------------------
-
- /**
- * @private
- */
- async _onClickLivechatButtonColorsResetButton() {
- await this._updateColors({
- button_background_color: "#878787",
- button_text_color: "#FFFFFF",
- });
- },
- /**
- * @private
- */
- async _onClickLivechatChatWindowColorsResetButton() {
- await this._updateColors({
- header_background_color: "#875A7B",
- title_color: "#FFFFFF",
- });
- },
-});
-
-export default ImLivechatChannelFormController;
diff --git a/addons/im_livechat/static/src/js/im_livechat_channel_form_view.js b/addons/im_livechat/static/src/js/im_livechat_channel_form_view.js
deleted file mode 100644
index 15e90f60d38..00000000000
--- a/addons/im_livechat/static/src/js/im_livechat_channel_form_view.js
+++ /dev/null
@@ -1,16 +0,0 @@
-/** @odoo-module **/
-
-import ImLivechatChannelFormController from '@im_livechat/js/im_livechat_channel_form_controller';
-
-import FormView from 'web.FormView';
-import viewRegistry from 'web.view_registry';
-
-const ImLivechatChannelFormView = FormView.extend({
- config: Object.assign({}, FormView.prototype.config, {
- Controller: ImLivechatChannelFormController,
- }),
-});
-
-viewRegistry.add('im_livechat_channel_form_view_js', ImLivechatChannelFormView);
-
-export default ImLivechatChannelFormView;
diff --git a/addons/im_livechat/views/im_livechat_channel_views.xml b/addons/im_livechat/views/im_livechat_channel_views.xml
index b0f535abc08..7180c0df23f 100644
--- a/addons/im_livechat/views/im_livechat_channel_views.xml
+++ b/addons/im_livechat/views/im_livechat_channel_views.xml
@@ -69,7 +69,7 @@
im_livechat.channel.form
im_livechat.channel
-