vikunja-frontend/src/main.js

148 lines
4.8 KiB
JavaScript
Raw Normal View History

2018-08-28 22:50:22 +02:00
import Vue from 'vue'
import App from './App.vue'
import router from './router'
import auth from './auth'
2018-08-28 22:50:22 +02:00
2018-09-12 08:22:17 +02:00
// Register the modal
import Modal from './components/modal/Modal'
Vue.component('modal', Modal)
// Register the task overview component
2019-04-29 23:41:39 +02:00
import TaskOverview from './components/tasks/ShowTasks'
Vue.component('TaskOverview', TaskOverview)
// Add CSS
2019-12-19 23:09:23 +01:00
import './styles/vikunja.scss'
2018-09-06 19:56:44 +02:00
2018-08-28 22:50:22 +02:00
Vue.config.productionTip = false
2018-09-08 21:43:16 +02:00
// Notifications
import Notifications from 'vue-notification'
Vue.use(Notifications)
2019-09-09 19:32:57 +02:00
import config from './config'
config.initConfig()
.then(() => {
Vue.prototype.$config = config.getConfig()
})
2018-09-09 17:23:06 +02:00
// Icons
import { library } from '@fortawesome/fontawesome-svg-core'
import { faSignOutAlt } from '@fortawesome/free-solid-svg-icons'
2018-09-09 19:09:46 +02:00
import { faPlus } from '@fortawesome/free-solid-svg-icons'
import { faListOl } from '@fortawesome/free-solid-svg-icons'
import { faTasks } from '@fortawesome/free-solid-svg-icons'
2018-09-10 21:06:39 +02:00
import { faCog } from '@fortawesome/free-solid-svg-icons'
import { faAngleRight } from '@fortawesome/free-solid-svg-icons'
2018-09-11 19:20:07 +02:00
import { faLayerGroup } from '@fortawesome/free-solid-svg-icons'
2018-09-11 20:16:08 +02:00
import { faTrashAlt } from '@fortawesome/free-solid-svg-icons'
import { faUsers } from '@fortawesome/free-solid-svg-icons'
import { faUser } from '@fortawesome/free-solid-svg-icons'
import { faLock } from '@fortawesome/free-solid-svg-icons'
import { faPen } from '@fortawesome/free-solid-svg-icons'
2018-11-25 22:02:22 +01:00
import { faTimes } from '@fortawesome/free-solid-svg-icons'
2018-12-25 16:03:51 +01:00
import { faTachometerAlt } from '@fortawesome/free-solid-svg-icons'
import { faCalendar } from '@fortawesome/free-solid-svg-icons'
import { faBars } from '@fortawesome/free-solid-svg-icons'
import { faPowerOff } from '@fortawesome/free-solid-svg-icons'
import { faCalendarWeek } from '@fortawesome/free-solid-svg-icons'
2019-03-03 16:03:08 +01:00
import { faExclamation } from '@fortawesome/free-solid-svg-icons'
2019-03-07 20:48:40 +01:00
import { faTags } from '@fortawesome/free-solid-svg-icons'
2019-04-23 21:50:37 +02:00
import { faChevronDown } from '@fortawesome/free-solid-svg-icons'
2019-04-29 23:41:39 +02:00
import { faCheck } from '@fortawesome/free-solid-svg-icons'
2019-09-09 19:55:43 +02:00
import { faPaste } from '@fortawesome/free-solid-svg-icons'
2019-10-19 21:41:23 +02:00
import { faPencilAlt } from '@fortawesome/free-solid-svg-icons'
2018-12-25 16:03:51 +01:00
import { faTimesCircle } from '@fortawesome/free-regular-svg-icons'
import { faCalendarAlt } from '@fortawesome/free-regular-svg-icons'
2019-11-24 14:16:24 +01:00
import { faCloudDownloadAlt } from '@fortawesome/free-solid-svg-icons'
import { faCloudUploadAlt } from '@fortawesome/free-solid-svg-icons'
import { faPercent } from '@fortawesome/free-solid-svg-icons'
import { faStar } from '@fortawesome/free-regular-svg-icons'
import { faAlignLeft } from '@fortawesome/free-solid-svg-icons'
import { faPaperclip } from '@fortawesome/free-solid-svg-icons'
import { faClock } from '@fortawesome/free-regular-svg-icons'
import { faHistory } from '@fortawesome/free-solid-svg-icons'
import { faSearch } from '@fortawesome/free-solid-svg-icons'
import { faCheckDouble } from '@fortawesome/free-solid-svg-icons'
2018-09-09 17:23:06 +02:00
import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome'
library.add(faSignOutAlt)
2018-09-09 19:09:46 +02:00
library.add(faPlus)
library.add(faListOl)
library.add(faTasks)
2018-09-10 21:06:39 +02:00
library.add(faCog)
library.add(faAngleRight)
2018-09-11 19:20:07 +02:00
library.add(faLayerGroup)
2018-09-11 20:16:08 +02:00
library.add(faTrashAlt)
library.add(faUsers)
library.add(faUser)
library.add(faLock)
library.add(faPen)
2018-11-25 22:02:22 +01:00
library.add(faTimes)
2018-12-25 16:03:51 +01:00
library.add(faTachometerAlt)
library.add(faCalendar)
library.add(faTimesCircle)
library.add(faBars)
library.add(faPowerOff)
library.add(faCalendarWeek)
library.add(faCalendarAlt)
2019-03-03 16:03:08 +01:00
library.add(faExclamation)
2019-03-07 20:48:40 +01:00
library.add(faTags)
2019-04-23 21:50:37 +02:00
library.add(faChevronDown)
2019-04-29 23:41:39 +02:00
library.add(faCheck)
2019-09-09 19:55:43 +02:00
library.add(faPaste)
2019-10-19 21:41:23 +02:00
library.add(faPencilAlt)
2019-11-24 14:16:24 +01:00
library.add(faCloudDownloadAlt)
library.add(faCloudUploadAlt)
library.add(faPercent)
library.add(faStar)
library.add(faAlignLeft)
library.add(faPaperclip)
library.add(faClock)
library.add(faHistory)
library.add(faSearch)
library.add(faCheckDouble)
2018-09-09 17:23:06 +02:00
Vue.component('icon', FontAwesomeIcon)
2018-12-25 16:03:51 +01:00
// Tooltip
import VTooltip from 'v-tooltip'
Vue.use(VTooltip)
2019-10-16 20:25:10 +02:00
// PWA
import './registerServiceWorker'
2018-12-25 16:03:51 +01:00
// Set focus
Vue.directive('focus', {
// When the bound element is inserted into the DOM...
inserted: el => {
// Focus the element only if the viewport is big enough
// auto focusing elements on mobile can be annoying since in these cases the
// keyboard always pops up and takes half of the available space on the screen.
// The threshhold is the same as the breakpoints in css.
if (window.innerWidth > 769) {
el.focus()
}
2018-12-25 16:03:51 +01:00
}
})
// Check the user's auth status when the app starts
auth.checkAuth()
// Mixins
import moment from 'moment'
import message from './message'
Vue.mixin({
methods: {
formatDateSince: date => moment(date).fromNow(),
formatDate: date => moment(date).format('LLL'),
error: (e, context) => message.error(e, context),
success: (s, context) => message.success(s, context),
}
})
2018-08-28 22:50:22 +02:00
new Vue({
router,
render: h => h(App)
2018-08-28 22:50:22 +02:00
}).$mount('#app')