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

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()
}
})