You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
60 lines
1.7 KiB
JavaScript
60 lines
1.7 KiB
JavaScript
import './bootstrap'
|
|
import '../css/app.css'
|
|
import '../css/spinner.css'
|
|
import 'flowbite'
|
|
|
|
import React from 'react'
|
|
import NProgress from 'nprogress'
|
|
import { createRoot } from 'react-dom/client'
|
|
import { createInertiaApp, router } from '@inertiajs/react'
|
|
import { resolvePageComponent } from 'laravel-vite-plugin/inertia-helpers'
|
|
|
|
const appName =
|
|
window.document.getElementsByTagName('title')[0]?.innerText || 'Laravel'
|
|
|
|
createInertiaApp({
|
|
title: (title) => `${title} - ${appName}`,
|
|
resolve: (name) =>
|
|
resolvePageComponent(
|
|
`./Customer/${name}.jsx`,
|
|
import.meta.glob('./Customer/**/*.jsx')
|
|
),
|
|
setup({ el, App, props }) {
|
|
const root = createRoot(el)
|
|
|
|
root.render(<App {...props} />)
|
|
},
|
|
progress: { color: '#F1A410', showSpinner: true, includeCSS: true },
|
|
})
|
|
|
|
let timeout = null
|
|
|
|
NProgress.configure({
|
|
template:
|
|
'<div class="bar" role="bar"><div class="peg"></div></div><div class="spinner" role="spinner"><div class="spinner-bg"><div class="spinner-icon"></div><div>Loading</div></div></div>',
|
|
})
|
|
|
|
router.on('start', () => {
|
|
timeout = setTimeout(() => NProgress.start(), 250)
|
|
})
|
|
|
|
router.on('progress', (event) => {
|
|
if (NProgress.isStarted() && event.detail.progress.percentage) {
|
|
NProgress.set((event.detail.progress.percentage / 100) * 0.9)
|
|
}
|
|
})
|
|
|
|
router.on('finish', (event) => {
|
|
clearTimeout(timeout)
|
|
if (!NProgress.isStarted()) {
|
|
return
|
|
} else if (event.detail.visit.completed) {
|
|
NProgress.done()
|
|
} else if (event.detail.visit.interrupted) {
|
|
NProgress.set(0)
|
|
} else if (event.detail.visit.cancelled) {
|
|
NProgress.done()
|
|
NProgress.remove()
|
|
}
|
|
})
|