feat: schema v1.7 + sections/shifts frontend
- Universeel festival/event model (parent_event_id, event_type) - event_person_activations pivot tabel - Event model: parent/children relaties + helper scopes - DevSeeder: festival structuur met sub-events - Sections & Shifts frontend (twee-kolom layout) - BACKLOG.md aangemaakt met 22 gedocumenteerde wensen
This commit is contained in:
@@ -1,15 +1,18 @@
|
||||
import { fileURLToPath } from 'node:url'
|
||||
import vue from '@vitejs/plugin-vue'
|
||||
import vueJsx from '@vitejs/plugin-vue-jsx'
|
||||
import AutoImport from 'unplugin-auto-import/vite'
|
||||
import Components from 'unplugin-vue-components/vite'
|
||||
import { VueRouterAutoImports, getPascalCaseRouteName } from 'unplugin-vue-router'
|
||||
import VueRouter from 'unplugin-vue-router/vite'
|
||||
import { defineConfig } from 'vite'
|
||||
import VueDevTools from 'vite-plugin-vue-devtools'
|
||||
import MetaLayouts from 'vite-plugin-vue-meta-layouts'
|
||||
import vuetify from 'vite-plugin-vuetify'
|
||||
import svgLoader from 'vite-svg-loader'
|
||||
import { fileURLToPath } from "node:url";
|
||||
import vue from "@vitejs/plugin-vue";
|
||||
import vueJsx from "@vitejs/plugin-vue-jsx";
|
||||
import AutoImport from "unplugin-auto-import/vite";
|
||||
import Components from "unplugin-vue-components/vite";
|
||||
import {
|
||||
VueRouterAutoImports,
|
||||
getPascalCaseRouteName,
|
||||
} from "unplugin-vue-router";
|
||||
import VueRouter from "unplugin-vue-router/vite";
|
||||
import { defineConfig } from "vite";
|
||||
import VueDevTools from "vite-plugin-vue-devtools";
|
||||
import MetaLayouts from "vite-plugin-vue-meta-layouts";
|
||||
import vuetify from "vite-plugin-vuetify";
|
||||
import svgLoader from "vite-svg-loader";
|
||||
|
||||
// https://vitejs.dev/config/
|
||||
export default defineConfig({
|
||||
@@ -17,18 +20,18 @@ export default defineConfig({
|
||||
// Docs: https://github.com/posva/unplugin-vue-router
|
||||
// ℹ️ This plugin should be placed before vue plugin
|
||||
VueRouter({
|
||||
getRouteName: routeNode => {
|
||||
getRouteName: (routeNode) => {
|
||||
// Convert pascal case to kebab case
|
||||
return getPascalCaseRouteName(routeNode)
|
||||
.replace(/([a-z\d])([A-Z])/g, '$1-$2')
|
||||
.toLowerCase()
|
||||
.replace(/([a-z\d])([A-Z])/g, "$1-$2")
|
||||
.toLowerCase();
|
||||
},
|
||||
|
||||
}),
|
||||
vue({
|
||||
template: {
|
||||
compilerOptions: {
|
||||
isCustomElement: tag => tag === 'swiper-container' || tag === 'swiper-slide',
|
||||
isCustomElement: (tag) =>
|
||||
tag === "swiper-container" || tag === "swiper-slide",
|
||||
},
|
||||
},
|
||||
}),
|
||||
@@ -39,77 +42,101 @@ export default defineConfig({
|
||||
vuetify({
|
||||
styles: {
|
||||
// Absolute URL so resolution does not depend on process cwd (fixes common SASS 404s).
|
||||
configFile: fileURLToPath(new URL('./src/styles/settings.scss', import.meta.url)),
|
||||
configFile: fileURLToPath(
|
||||
new URL("./src/styles/settings.scss", import.meta.url),
|
||||
),
|
||||
},
|
||||
}),
|
||||
|
||||
// Docs: https://github.com/dishait/vite-plugin-vue-meta-layouts?tab=readme-ov-file
|
||||
MetaLayouts({
|
||||
target: './src/layouts',
|
||||
defaultLayout: 'default',
|
||||
target: "./src/layouts",
|
||||
defaultLayout: "default",
|
||||
}),
|
||||
|
||||
// Docs: https://github.com/antfu/unplugin-vue-components#unplugin-vue-components
|
||||
Components({
|
||||
dirs: ['src/@core/components', 'src/views/demos', 'src/components'],
|
||||
dirs: ["src/@core/components", "src/views/demos", "src/components"],
|
||||
dts: true,
|
||||
resolvers: [
|
||||
componentName => {
|
||||
(componentName) => {
|
||||
// Auto import `VueApexCharts`
|
||||
if (componentName === 'VueApexCharts')
|
||||
return { name: 'default', from: 'vue3-apexcharts', as: 'VueApexCharts' }
|
||||
if (componentName === "VueApexCharts")
|
||||
return {
|
||||
name: "default",
|
||||
from: "vue3-apexcharts",
|
||||
as: "VueApexCharts",
|
||||
};
|
||||
},
|
||||
],
|
||||
}),
|
||||
|
||||
// Docs: https://github.com/antfu/unplugin-auto-import#unplugin-auto-import
|
||||
AutoImport({
|
||||
imports: ['vue', VueRouterAutoImports, '@vueuse/core', '@vueuse/math', 'vue-i18n', 'pinia'],
|
||||
imports: [
|
||||
"vue",
|
||||
VueRouterAutoImports,
|
||||
"@vueuse/core",
|
||||
"@vueuse/math",
|
||||
"vue-i18n",
|
||||
"pinia",
|
||||
],
|
||||
dirs: [
|
||||
'./src/@core/utils',
|
||||
'./src/@core/composable/',
|
||||
'./src/composables/',
|
||||
'./src/utils/',
|
||||
'./src/plugins/*/composables/*',
|
||||
"./src/@core/utils",
|
||||
"./src/@core/composable/",
|
||||
"./src/composables/",
|
||||
"./src/utils/",
|
||||
"./src/plugins/*/composables/*",
|
||||
],
|
||||
vueTemplate: true,
|
||||
|
||||
// ℹ️ Disabled to avoid confusion & accidental usage
|
||||
ignore: ['useCookies', 'useStorage'],
|
||||
ignore: ["useCookies", "useStorage"],
|
||||
}),
|
||||
|
||||
svgLoader(),
|
||||
|
||||
],
|
||||
define: { 'process.env': {} },
|
||||
define: { "process.env": {} },
|
||||
resolve: {
|
||||
alias: {
|
||||
'@': fileURLToPath(new URL('./src', import.meta.url)),
|
||||
'@themeConfig': fileURLToPath(new URL('./themeConfig.ts', import.meta.url)),
|
||||
'@core': fileURLToPath(new URL('./src/@core', import.meta.url)),
|
||||
'@layouts': fileURLToPath(new URL('./src/@layouts', import.meta.url)),
|
||||
'@images': fileURLToPath(new URL('./src/assets/images/', import.meta.url)),
|
||||
'@styles': fileURLToPath(new URL('./src/assets/styles/', import.meta.url)),
|
||||
'@configured-variables': fileURLToPath(new URL('./src/assets/styles/variables/_template.scss', import.meta.url)),
|
||||
"@": fileURLToPath(new URL("./src", import.meta.url)),
|
||||
"@themeConfig": fileURLToPath(
|
||||
new URL("./themeConfig.ts", import.meta.url),
|
||||
),
|
||||
"@core": fileURLToPath(new URL("./src/@core", import.meta.url)),
|
||||
"@layouts": fileURLToPath(new URL("./src/@layouts", import.meta.url)),
|
||||
"@images": fileURLToPath(
|
||||
new URL("./src/assets/images/", import.meta.url),
|
||||
),
|
||||
"@styles": fileURLToPath(
|
||||
new URL("./src/assets/styles/", import.meta.url),
|
||||
),
|
||||
"@configured-variables": fileURLToPath(
|
||||
new URL(
|
||||
"./src/assets/styles/variables/_template.scss",
|
||||
import.meta.url,
|
||||
),
|
||||
),
|
||||
},
|
||||
},
|
||||
server: {
|
||||
port: 5174,
|
||||
proxy: {
|
||||
'/api': {
|
||||
target: 'http://localhost:8000',
|
||||
"/api": {
|
||||
target: "http://localhost:8000",
|
||||
changeOrigin: true,
|
||||
},
|
||||
},
|
||||
warmup: {
|
||||
clientFiles: ["./src/pages/**/*.vue", "./src/components/**/*.vue"],
|
||||
},
|
||||
},
|
||||
build: {
|
||||
chunkSizeWarningLimit: 5000,
|
||||
},
|
||||
optimizeDeps: {
|
||||
exclude: ['vuetify'],
|
||||
entries: [
|
||||
'./src/**/*.vue',
|
||||
],
|
||||
exclude: ["vuetify"],
|
||||
entries: ["./src/**/*.vue"],
|
||||
force: true,
|
||||
},
|
||||
})
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user