summaryrefslogtreecommitdiffstats
path: root/src/main.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.js')
-rw-r--r--src/main.js58
1 files changed, 58 insertions, 0 deletions
diff --git a/src/main.js b/src/main.js
new file mode 100644
index 0000000..1fda9df
--- /dev/null
+++ b/src/main.js
@@ -0,0 +1,58 @@
+import "bootstrap";
+import { createApp, h } from "vue";
+import contenteditable from "vue-contenteditable";
+import Toast from "vue-toastification";
+import "vue-toastification/dist/index.css";
+import App from "./App.vue";
+import "./assets/app.scss";
+import "./assets/vue-datepicker.scss";
+import { i18n } from "./i18n";
+import { FontAwesomeIcon } from "./icon.js";
+import datetime from "./mixins/datetime";
+import mobile from "./mixins/mobile";
+import publicMixin from "./mixins/public";
+import socket from "./mixins/socket";
+import theme from "./mixins/theme";
+import lang from "./mixins/lang";
+import { router } from "./router";
+import { appName } from "./util.ts";
+import dayjs from "dayjs";
+import timezone from "./modules/dayjs/plugin/timezone";
+import utc from "dayjs/plugin/utc";
+import relativeTime from "dayjs/plugin/relativeTime";
+import { loadToastSettings } from "./util-frontend";
+dayjs.extend(utc);
+dayjs.extend(timezone);
+dayjs.extend(relativeTime);
+
+const app = createApp({
+ mixins: [
+ socket,
+ theme,
+ mobile,
+ datetime,
+ publicMixin,
+ lang,
+ ],
+ data() {
+ return {
+ appName: appName
+ };
+ },
+ render: () => h(App),
+});
+
+app.use(router);
+app.use(i18n);
+
+app.use(Toast, loadToastSettings());
+app.component("Editable", contenteditable);
+app.component("FontAwesomeIcon", FontAwesomeIcon);
+
+app.mount("#app");
+
+// Expose the vue instance for development
+if (process.env.NODE_ENV === "development") {
+ console.log("Dev Only: window.app is the vue instance");
+ window.app = app._instance;
+}