exchange/resources/js/app.js

92 lines
2.3 KiB
JavaScript

require('./bootstrap');
// Import modules...
import Vue from 'vue';
import { App as InertiaApp, plugin as InertiaPlugin } from '@inertiajs/inertia-vue';
import { InertiaProgress } from '@inertiajs/progress';
import PortalVue from 'portal-vue';
import Antd from 'ant-design-vue';
import Layout from '@/Layouts/AppLayout'
import VueMeta from 'vue-meta'
import VueCountryCode from "vue-country-code";
Vue.mixin({ methods: { route } });
Vue.use(InertiaPlugin);
Vue.use(PortalVue);
Vue.use(Antd);
Vue.use(VueMeta);
Vue.use(VueCountryCode);
const app = document.getElementById('app');
var globalHelpers = Vue.mixin({
methods: {
url(value) {
return `${this.$page.props.url}${value}`
},
formStatus(prop) {
return this.form.errors[prop] ? 'error' : ''
},
formHelp(prop) {
return this.form.errors[prop] ? this.form.errors[prop] : ''
},
/**
* Destroy with confirm
*/
destroy(resource, id) {
if (confirm("Are you sure you want to remove this item?")) {
this.$inertia.delete(this.route(`${resource}.destroy`, id), {
onSuccess: () => {
this.$message.success('Deleted successfully')
}
});
}
},
/**
* Download excel file
*/
download(group) {
window.location.href = this.route('download', group)
},
/**
* Translate
*/
trans(key, replace = {}) {
var translation = this.$page.props.language[key]
? this.$page.props.language[key]
: key
Object.keys(replace).forEach(function (key) {
translation = translation.replace(':' + key, replace[key])
});
return translation
},
}
})
new Vue({
mixins: [globalHelpers],
render: (h) =>
h(InertiaApp, {
props: {
initialPage: JSON.parse(app.dataset.page),
// resolveComponent: (name) => require(`./Pages/${name}`).default,
resolveComponent: name => import(`./Pages/${name}`)
.then(({ default: page }) => {
if (page.layout === undefined) {
page.layout = Layout
}
return page
}),
},
}),
}).$mount(app);
InertiaProgress.init({ color: '#4B5563' });