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 image image ## 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 @@