anonaddy/resources/js/app.js
2023-10-04 11:32:39 +01:00

80 lines
2 KiB
JavaScript
Vendored

import './bootstrap'
import '../css/app.css'
import dayjs from 'dayjs'
import advancedFormat from 'dayjs/plugin/advancedFormat'
import relativeTime from 'dayjs/plugin/relativeTime'
import utc from 'dayjs/plugin/utc'
dayjs.extend(advancedFormat)
dayjs.extend(relativeTime)
dayjs.extend(utc)
window.dayjs = dayjs
import { createApp, h } from 'vue'
import { createInertiaApp } from '@inertiajs/vue3'
import { ZiggyVue } from '../../vendor/tightenco/ziggy/dist/vue.m'
import Notifications from '@kyvg/vue3-notification'
// Styles
import 'tippy.js/dist/svg-arrow.css'
import 'tippy.js/dist/tippy.css'
import '@vueform/multiselect/themes/default.css'
const appName = window.document.getElementsByTagName('title')[0]?.innerText || 'addy.io'
import AppLayout from './Layouts/AppLayout.vue'
// Global components
import Icon from './Components/Icon.vue'
import Loader from './Components/Loader.vue'
createInertiaApp({
progress: {
color: '#3AE7E1',
delay: 50,
},
resolve: name => {
const pages = import.meta.glob('./Pages/**/*.vue', { eager: true })
let page = pages[`./Pages/${name}.vue`]
page.default.layout = page.default.layout || AppLayout
return page
},
title: title => `${title} - ${appName}`,
setup({ el, App, props, plugin }) {
const addy = createApp({
render: () => h(App, props),
})
addy.use(plugin)
addy.use(ZiggyVue)
addy.use(Notifications)
addy.component('Icon', Icon)
addy.component('Loader', Loader)
addy.config.globalProperties.$filters = {
formatDate(value) {
return dayjs.utc(value).local().format('Do MMM YYYY')
},
formatDateTime(value) {
return dayjs.utc(value).local().format('Do MMM YYYY h:mm A')
},
timeAgo(value) {
return dayjs.utc(value).fromNow()
},
dateTimeNow() {
return dayjs.utc().format()
},
truncate(value, length) {
if (length >= value.length) {
return value
}
return value.substring(0, length) + '...'
},
}
return addy.mount(el)
},
})