diff --git a/app/javascript/dashboard/modules/search/components/MessageContent.vue b/app/javascript/dashboard/modules/search/components/MessageContent.vue index 74d85ec87..4c86862f5 100644 --- a/app/javascript/dashboard/modules/search/components/MessageContent.vue +++ b/app/javascript/dashboard/modules/search/components/MessageContent.vue @@ -71,18 +71,11 @@ export default { }, prepareContent(content = '') { const escapedText = this.escapeHtml(content); - const plainTextContent = this.getPlainText(escapedText); - const escapedSearchTerm = this.escapeRegExp(this.searchTerm); - return plainTextContent - .replace( - new RegExp(`(${escapedSearchTerm})`, 'ig'), - '$1' - ) - .replace(/\s{2,}|\n|\r/g, ' '); - }, - // from https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#escaping - escapeRegExp(string) { - return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); + return this.highlightContent( + escapedText, + this.searchTerm, + 'searchkey--highlight' + ); }, }, }; diff --git a/app/javascript/dashboard/routes/dashboard/conversation/search/PopOverSearch.vue b/app/javascript/dashboard/routes/dashboard/conversation/search/PopOverSearch.vue deleted file mode 100644 index 639b694e8..000000000 --- a/app/javascript/dashboard/routes/dashboard/conversation/search/PopOverSearch.vue +++ /dev/null @@ -1,80 +0,0 @@ - - - - diff --git a/app/javascript/dashboard/routes/dashboard/conversation/search/ResultItem.stories.js b/app/javascript/dashboard/routes/dashboard/conversation/search/ResultItem.stories.js deleted file mode 100644 index b0652e538..000000000 --- a/app/javascript/dashboard/routes/dashboard/conversation/search/ResultItem.stories.js +++ /dev/null @@ -1,41 +0,0 @@ -import ResultItem from './ResultItem'; - -export default { - title: 'Components/Search/Result Items', - component: ResultItem, - argTypes: { - conversationId: { - defaultValue: '1', - control: { - type: 'number', - }, - }, - userName: { - defaultValue: 'John davies', - control: { - type: 'text', - }, - }, - inboxName: { - defaultValue: 'Support', - control: { - type: 'text', - }, - }, - timestamp: { - defaultValue: '1618046084', - control: { - type: 'number', - }, - }, - }, -}; - -const Template = (args, { argTypes }) => ({ - props: Object.keys(argTypes), - components: { ResultItem }, - template: '', -}); - -export const ResultItems = Template.bind({}); -ResultItems.args = {}; diff --git a/app/javascript/dashboard/routes/dashboard/conversation/search/ResultItem.vue b/app/javascript/dashboard/routes/dashboard/conversation/search/ResultItem.vue deleted file mode 100644 index 2fece6f33..000000000 --- a/app/javascript/dashboard/routes/dashboard/conversation/search/ResultItem.vue +++ /dev/null @@ -1,185 +0,0 @@ - - - - - diff --git a/app/javascript/dashboard/routes/dashboard/conversation/search/SearchMessageItem.stories.js b/app/javascript/dashboard/routes/dashboard/conversation/search/SearchMessageItem.stories.js deleted file mode 100644 index 78f0d0deb..000000000 --- a/app/javascript/dashboard/routes/dashboard/conversation/search/SearchMessageItem.stories.js +++ /dev/null @@ -1,47 +0,0 @@ -import SearchMessage from './SearchMessageItem'; - -export default { - title: 'Components/Search/Messages', - component: SearchMessage, - argTypes: { - userName: { - defaultValue: 'John davies', - control: { - type: 'text', - }, - }, - timestamp: { - defaultValue: '1618046084', - control: { - type: 'number', - }, - }, - messageType: { - control: { - type: 'number', - }, - }, - content: { - defaultValue: - 'some designers and developers around the web know this and have put together a bunch of text generators', - control: { - type: 'text', - }, - }, - searchTerm: { - defaultValue: 'developers', - control: { - type: 'text', - }, - }, - }, -}; - -const Template = (args, { argTypes }) => ({ - props: Object.keys(argTypes), - components: { SearchMessage }, - template: '', -}); - -export const Messages = Template.bind({}); -Messages.args = {}; diff --git a/app/javascript/dashboard/routes/dashboard/conversation/search/SearchMessageItem.vue b/app/javascript/dashboard/routes/dashboard/conversation/search/SearchMessageItem.vue deleted file mode 100644 index 35f208341..000000000 --- a/app/javascript/dashboard/routes/dashboard/conversation/search/SearchMessageItem.vue +++ /dev/null @@ -1,163 +0,0 @@ - - - - diff --git a/app/javascript/dashboard/routes/dashboard/conversation/search/SwitchLayout.vue b/app/javascript/dashboard/routes/dashboard/conversation/search/SwitchLayout.vue deleted file mode 100644 index 1988e9974..000000000 --- a/app/javascript/dashboard/routes/dashboard/conversation/search/SwitchLayout.vue +++ /dev/null @@ -1,36 +0,0 @@ - - - - - diff --git a/app/javascript/dashboard/routes/dashboard/helpcenter/pages/portals/EditPortal.vue b/app/javascript/dashboard/routes/dashboard/helpcenter/pages/portals/EditPortal.vue index 53cc83c44..53a8bdf40 100644 --- a/app/javascript/dashboard/routes/dashboard/helpcenter/pages/portals/EditPortal.vue +++ b/app/javascript/dashboard/routes/dashboard/helpcenter/pages/portals/EditPortal.vue @@ -9,7 +9,7 @@ " :show-new-button="false" /> -
+
-
-
- +
+ +
diff --git a/app/javascript/packs/portal.js b/app/javascript/packs/portal.js index 42493615d..874d3488d 100644 --- a/app/javascript/packs/portal.js +++ b/app/javascript/packs/portal.js @@ -1,7 +1,12 @@ import Rails from '@rails/ujs'; import Turbolinks from 'turbolinks'; import '../portal/application.scss'; +import Vue from 'vue'; import { InitializationHelpers } from '../portal/portalHelpers'; +import VueDOMPurifyHTML from 'vue-dompurify-html'; +import { domPurifyConfig } from '../shared/helpers/HTMLSanitizer'; + +Vue.use(VueDOMPurifyHTML, domPurifyConfig); Rails.start(); Turbolinks.start(); diff --git a/app/javascript/portal/components/PublicArticleSearch.vue b/app/javascript/portal/components/PublicArticleSearch.vue index b06ce112f..f2afeb4ce 100644 --- a/app/javascript/portal/components/PublicArticleSearch.vue +++ b/app/javascript/portal/components/PublicArticleSearch.vue @@ -1,5 +1,5 @@