Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<template>
<span v-html="highlightedText"></span>
</template>
<script>
import { ref, computed } from '@vue/composition-api'
export default {
name: "highlight-text",
props: {
text: String,
queries: {
type: Array,
default() {
return [{ query: "", caseSensitive: false },]
}
}
},
setup(props) {
const highlightedText = computed(() => {
let tempText = props.text
props.queries.forEach( (query) => {
if (query.query) {
tempText = tempText.replace(
new RegExp(query.query, query.caseSensitive ? "g" : "ig"),
function(match) {
return (`<mark>${match}</mark>`)
})
}
})
return tempText
})
return {
highlightedText
}
}
}
</script>