File: /home/slfopp7cb1df/public_html/inventorypacket.com/resources/src/main.js
import store from "./store";
import Vue from "vue";
import router from "./router";
import App from "./App.vue";
import Auth from './auth/index.js';
window.auth = new Auth();
import { ValidationObserver, ValidationProvider, extend, localize } from 'vee-validate';
import * as rules from "vee-validate/dist/rules";
localize({
en: {
messages: {
required: 'This field is required',
required_if: 'This field is required',
regex: 'This field must be a valid',
mimes: `This field must have a valid file type.`,
size: (_, { size }) => `This field size must be less than ${size}.`,
min: 'This field must have no less than {length} characters',
max: (_, { length }) => `This field must have no more than ${length} characters`
}
},
});
// Install VeeValidate rules and localization
Object.keys(rules).forEach(rule => {
extend(rule, rules[rule]);
});
// Register it globally
Vue.component("ValidationObserver", ValidationObserver);
Vue.component('ValidationProvider', ValidationProvider);
Vue.component('qrcode-scanner', {
props: {
qrbox: {
type: Number,
default: 250
},
fps: {
type: Number,
default: 10
},
},
data() {
return {
isFirstScan: true,
html5QrcodeScanner: null,
};
},
template: `<div id="reader"></div>`, // Use ref instead of id for dynamic rendering
mounted () {
this.initializeScanner();
},
methods: {
initializeScanner() {
const config = {
fps: this.fps,
qrbox: this.qrbox,
};
this.html5QrcodeScanner = new Html5QrcodeScanner('reader', config); // Use id for dynamic rendering
this.html5QrcodeScanner.render(this.onScanSuccess);
},
onScanSuccess (decodedText, decodedResult) {
if (this.isFirstScan) {
this.isFirstScan = false;
this.$emit('result', decodedText, decodedResult);
} else {
this.html5QrcodeScanner.stop();
}
},
},
beforeDestroy() {
if (this.html5QrcodeScanner) {
this.html5QrcodeScanner.clear();
}
}
});
import StockyKit from "./plugins/stocky.kit";
Vue.use(StockyKit);
import VueCookies from 'vue-cookies'
Vue.use(VueCookies);
var VueCookie = require('vue-cookie');
Vue.use(VueCookie);
import VueExcelXlsx from "vue-excel-xlsx";
Vue.use(VueExcelXlsx);
window.axios = require('axios');
window.axios.defaults.baseURL = '/api/';
window.axios.defaults.withCredentials = true;
window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';
axios.interceptors.response.use((response) => {
return response;
}, (error) => {
if (error.response && error.response.data) {
if (error.response.status === 401) {
window.location.href='/login';
}
if (error.response.status === 404) {
router.push({ name: 'NotFound' });
}
if (error.response.status === 403) {
router.push({ name: 'not_authorize' });
}
return Promise.reject(error.response.data);
}
return Promise.reject(error.message);
});
import vSelect from 'vue-select'
Vue.component('v-select', vSelect)
import 'vue-select/dist/vue-select.css';
import '@trevoreyre/autocomplete-vue/dist/style.css';
window.Fire = new Vue();
import Breadcumb from "./components/breadcumb";
import { i18n } from "./plugins/i18n";
Vue.component("breadcumb", Breadcumb);
Vue.config.productionTip = true;
Vue.config.silent = true;
Vue.config.devtools = false;
new Vue({
store,
router,
VueCookie,
i18n,
render: h => h(App),
}).$mount("#app");