Skip to content

Commit d89bb4e

Browse files
authored
Add a Vue 2 mixin for Umami Analytics
1 parent d76500f commit d89bb4e

File tree

1 file changed

+53
-0
lines changed

1 file changed

+53
-0
lines changed

vue-umami-mixin.js

+53
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
export default {
2+
data() {
3+
return {
4+
umamiInstalled: document.getElementById("umami-script") !== null
5+
};
6+
},
7+
created() {
8+
if (
9+
!this.$developmentMode &&
10+
localStorage.getItem("umamiTracking") !== "false"
11+
) {
12+
this.installUmami();
13+
14+
if (localStorage.getItem("umamiTracking") === null) {
15+
localStorage.setItem("umamiTracking", "true");
16+
}
17+
}
18+
},
19+
methods: {
20+
installUmami: function() {
21+
if (
22+
!this.$developmentMode &&
23+
!document.getElementById("umami-script")
24+
) {
25+
let umamiScript = document.createElement("script"),
26+
scriptTag = document.getElementsByTagName("script")[0];
27+
28+
umamiScript.async = true;
29+
umamiScript.defer = true;
30+
umamiScript.src = "https://domain.com/umami.js";
31+
umamiScript.id = "umami-script";
32+
umamiScript.setAttribute(
33+
"data-website-id",
34+
"umami-site-id"
35+
);
36+
37+
scriptTag.parentNode.insertBefore(umamiScript, scriptTag);
38+
39+
console.log("Activated Umami anonymous analytics");
40+
}
41+
},
42+
uninstallUmami: function() {
43+
if (!this.$developmentMode) {
44+
let umamiScript = document.getElementById("umami-script");
45+
46+
umamiScript.remove();
47+
localStorage.setItem("umamiTracking", "false");
48+
49+
console.log("Deactivated Umami anonymous analytics");
50+
}
51+
}
52+
}
53+
};

0 commit comments

Comments
 (0)