diff --git a/app/javascript/entrypoints/sdk.js b/app/javascript/entrypoints/sdk.js index a2cf297f1..2a919f42c 100755 --- a/app/javascript/entrypoints/sdk.js +++ b/app/javascript/entrypoints/sdk.js @@ -72,6 +72,13 @@ const runSDK = ({ baseUrl, websiteToken }) => { widgetStyle: getWidgetStyle(chatwootSettings.widgetStyle) || 'standard', resetTriggered: false, darkMode: getDarkMode(chatwootSettings.darkMode), + welcomeTitle: chatwootSettings.welcomeTitle || '', + welcomeDescription: chatwootSettings.welcomeDescription || '', + availableMessage: chatwootSettings.availableMessage || '', + unavailableMessage: chatwootSettings.unavailableMessage || '', + enableFileUpload: chatwootSettings.enableFileUpload ?? true, + enableEmojiPicker: chatwootSettings.enableEmojiPicker ?? true, + enableEndConversation: chatwootSettings.enableEndConversation ?? true, toggle(state) { IFrameHelper.events.toggleBubble(state); diff --git a/app/javascript/sdk/IFrameHelper.js b/app/javascript/sdk/IFrameHelper.js index 469fbe8de..3ab1ba1f5 100644 --- a/app/javascript/sdk/IFrameHelper.js +++ b/app/javascript/sdk/IFrameHelper.js @@ -166,6 +166,13 @@ export const IFrameHelper = { darkMode: window.$chatwoot.darkMode, showUnreadMessagesDialog: window.$chatwoot.showUnreadMessagesDialog, campaignsSnoozedTill, + welcomeTitle: window.$chatwoot.welcomeTitle, + welcomeDescription: window.$chatwoot.welcomeDescription, + availableMessage: window.$chatwoot.availableMessage, + unavailableMessage: window.$chatwoot.unavailableMessage, + enableFileUpload: window.$chatwoot.enableFileUpload, + enableEmojiPicker: window.$chatwoot.enableEmojiPicker, + enableEndConversation: window.$chatwoot.enableEndConversation, }); IFrameHelper.onLoad({ widgetColor: message.config.channelConfig.widgetColor, diff --git a/app/javascript/widget/components/ChatAttachment.vue b/app/javascript/widget/components/ChatAttachment.vue index ac5a54127..64a20bcc7 100755 --- a/app/javascript/widget/components/ChatAttachment.vue +++ b/app/javascript/widget/components/ChatAttachment.vue @@ -24,7 +24,10 @@ export default { return { isUploading: false }; }, computed: { - ...mapGetters({ globalConfig: 'globalConfig/get' }), + ...mapGetters({ + globalConfig: 'globalConfig/get', + shouldShowFilePicker: 'appConfig/getShouldShowFilePicker', + }), fileUploadSizeLimit() { return MAXIMUM_FILE_UPLOAD_SIZE; }, @@ -40,6 +43,9 @@ export default { }, methods: { handleClipboardPaste(e) { + // If file picker is not enabled, do not allow paste + if (!this.shouldShowFilePicker) return; + const items = (e.clipboardData || e.originalEvent.clipboardData).items; // items is a DataTransferItemList object which does not have forEach method const itemsArray = Array.from(items); diff --git a/app/javascript/widget/components/ChatHeaderExpanded.vue b/app/javascript/widget/components/ChatHeaderExpanded.vue index 6d8ac4a96..e89b1aef0 100755 --- a/app/javascript/widget/components/ChatHeaderExpanded.vue +++ b/app/javascript/widget/components/ChatHeaderExpanded.vue @@ -47,11 +47,11 @@ const containerClasses = computed(() => [
diff --git a/app/javascript/widget/components/ChatInputWrap.vue b/app/javascript/widget/components/ChatInputWrap.vue index 64997eed8..c423ab220 100755 --- a/app/javascript/widget/components/ChatInputWrap.vue +++ b/app/javascript/widget/components/ChatInputWrap.vue @@ -41,9 +41,15 @@ export default { ...mapGetters({ widgetColor: 'appConfig/getWidgetColor', isWidgetOpen: 'appConfig/getIsWidgetOpen', + shouldShowFilePicker: 'appConfig/getShouldShowFilePicker', + shouldShowEmojiPicker: 'appConfig/getShouldShowEmojiPicker', }), showAttachment() { - return this.hasAttachmentsEnabled && this.userInput.length === 0; + return ( + this.shouldShowFilePicker && + this.hasAttachmentsEnabled && + this.userInput.length === 0 + ); }, showSendButton() { return this.userInput.length > 0; @@ -143,7 +149,7 @@ export default { :on-attach="onSendAttachment" />