File tree Expand file tree Collapse file tree 1 file changed +55
-0
lines changed
Expand file tree Collapse file tree 1 file changed +55
-0
lines changed Original file line number Diff line number Diff line change 1+ <template ></template >
2+
3+ <script >
4+ import { watch , defineComponent , onMounted } from " vue" ;
5+ import { escapeRegExp } from " ../utils/regex" ;
6+
7+ export default defineComponent ({
8+ props: {
9+ container: {
10+ type: String ,
11+ default: " body" ,
12+ },
13+ pattern: {
14+ type: String ,
15+ required: true ,
16+ },
17+ replacement: {
18+ type: String ,
19+ required: true ,
20+ },
21+ prefix: {
22+ type: String ,
23+ default: " " ,
24+ },
25+ suffix: {
26+ type: String ,
27+ default: " " ,
28+ },
29+ },
30+ setup : (props ) => {
31+ const replaceDomText = (container , pattern , replacement ) => {
32+ pattern = new RegExp (escapeRegExp (pattern), " g" );
33+ document .querySelectorAll (container).forEach ((el ) => {
34+ el .innerHTML = el .innerHTML .replace (pattern, replacement);
35+ });
36+ };
37+
38+ let replacedText;
39+ onMounted (() => {
40+ watch (
41+ () => props .replacement ,
42+ (value ) => {
43+ if (props .replacement && props .replacement !== " " ) {
44+ const pattern = replacedText ? replacedText : props .pattern ;
45+ const replacement = props .prefix + value + props .suffix ;
46+ replaceDomText (props .container , pattern, replacement);
47+ replacedText = replacement;
48+ }
49+ },
50+ { immediate: true }
51+ );
52+ });
53+ },
54+ });
55+ </script >
You can’t perform that action at this time.
0 commit comments