From 4c0d096e4d189e408092c8149d3030fb70abe605 Mon Sep 17 00:00:00 2001
From: Sivin Varghese <64252451+iamsivin@users.noreply.github.com>
Date: Fri, 6 Jun 2025 00:43:46 +0530
Subject: [PATCH] feat: Add rich text support for widget welcome tagline
(#11666)
# Pull Request Template
## Description
This PR adds rich text support for the widget welcome tagline, enabling
users to format the message using basic text styling (bold, italics,
links, etc.)
https://github.com/chatwoot/chatwoot/pull/11629#issuecomment-2932448975
## Type of change
- [x] New feature (non-breaking change which adds functionality)
## How Has This Been Tested?
### Screenshots
## Checklist:
- [x] My code follows the style guidelines of this project
- [x] I have performed a self-review of my code
- [ ] I have commented on my code, particularly in hard-to-understand
areas
- [ ] I have made corresponding changes to the documentation
- [x] My changes generate no new warnings
- [ ] I have added tests that prove my fix is effective or that my
feature works
- [x] New and existing unit tests pass locally with my changes
- [ ] Any dependent changes have been merged and published in downstream
modules
---------
Co-authored-by: Muhsin Keloth
---
.../components-next/Editor/Editor.vue | 42 +++++--------------
app/javascript/dashboard/constants/editor.js | 8 ++++
.../widget-preview/components/WidgetHead.vue | 12 ++++--
.../dashboard/settings/inbox/Settings.vue | 10 ++++-
.../settings/inbox/WidgetBuilder.vue | 9 +++-
.../settings/inbox/channels/Website.vue | 35 +++++++++-------
.../widget/components/ChatHeaderExpanded.vue | 7 +++-
app/views/widgets/show.html.erb | 2 +-
8 files changed, 67 insertions(+), 58 deletions(-)
diff --git a/app/javascript/dashboard/components-next/Editor/Editor.vue b/app/javascript/dashboard/components-next/Editor/Editor.vue
index 6b5fefab9..510ae67e2 100644
--- a/app/javascript/dashboard/components-next/Editor/Editor.vue
+++ b/app/javascript/dashboard/components-next/Editor/Editor.vue
@@ -4,38 +4,14 @@ import { computed, ref, watch, useSlots } from 'vue';
import WootEditor from 'dashboard/components/widgets/WootWriter/Editor.vue';
const props = defineProps({
- modelValue: {
- type: String,
- default: '',
- },
- label: {
- type: String,
- default: '',
- },
- placeholder: {
- type: String,
- default: '',
- },
- focusOnMount: {
- type: Boolean,
- default: false,
- },
- maxLength: {
- type: Number,
- default: 200,
- },
- showCharacterCount: {
- type: Boolean,
- default: true,
- },
- disabled: {
- type: Boolean,
- default: false,
- },
- message: {
- type: String,
- default: '',
- },
+ modelValue: { type: String, default: '' },
+ label: { type: String, default: '' },
+ placeholder: { type: String, default: '' },
+ focusOnMount: { type: Boolean, default: false },
+ maxLength: { type: Number, default: 200 },
+ showCharacterCount: { type: Boolean, default: true },
+ disabled: { type: Boolean, default: false },
+ message: { type: String, default: '' },
messageType: {
type: String,
default: 'info',
@@ -43,6 +19,7 @@ const props = defineProps({
},
enableVariables: { type: Boolean, default: false },
enableCannedResponses: { type: Boolean, default: true },
+ enabledMenuOptions: { type: Array, default: () => [] },
});
const emit = defineEmits(['update:modelValue']);
@@ -120,6 +97,7 @@ watch(
:disabled="disabled"
:enable-variables="enableVariables"
:enable-canned-responses="enableCannedResponses"
+ :enabled-menu-options="enabledMenuOptions"
@input="handleInput"
@focus="handleFocus"
@blur="handleBlur"
diff --git a/app/javascript/dashboard/constants/editor.js b/app/javascript/dashboard/constants/editor.js
index 157ec46ae..9a99516e8 100644
--- a/app/javascript/dashboard/constants/editor.js
+++ b/app/javascript/dashboard/constants/editor.js
@@ -33,6 +33,14 @@ export const ARTICLE_EDITOR_MENU_OPTIONS = [
'code',
];
+export const WIDGET_BUILDER_EDITOR_MENU_OPTIONS = [
+ 'strong',
+ 'em',
+ 'link',
+ 'undo',
+ 'redo',
+];
+
export const MESSAGE_EDITOR_IMAGE_RESIZES = [
{
name: 'Small',
diff --git a/app/javascript/dashboard/modules/widget-preview/components/WidgetHead.vue b/app/javascript/dashboard/modules/widget-preview/components/WidgetHead.vue
index 4881c2a0a..5de9ca069 100644
--- a/app/javascript/dashboard/modules/widget-preview/components/WidgetHead.vue
+++ b/app/javascript/dashboard/modules/widget-preview/components/WidgetHead.vue
@@ -1,5 +1,6 @@