| Numéro du ticket | Titre du ticket | |------------------|-----------------| | | | ## Description de la PR ## Modification du .env ## Check list - [x] Pas de régression - [x] TU/TI/TF rédigée - [x] TU/TI/TF OK - [ ] CHANGELOG modifié Co-authored-by: Matthieu <mtholot19@gmail.com> Reviewed-on: MALIO-DEV/Coltura#8 Co-authored-by: tristan <tristan@yuno.malio.fr> Co-committed-by: tristan <tristan@yuno.malio.fr>
This commit was merged in pull request #8.
This commit is contained in:
@@ -14,6 +14,7 @@
|
||||
</MalioSidebar>
|
||||
|
||||
<div class="h-full flex-1 flex flex-col min-h-0 min-w-0">
|
||||
<SiteSelector v-if="showSiteSelector"/>
|
||||
<main
|
||||
class="flex flex-1 flex-col overflow-y-auto overflow-x-hidden bg-white px-4 pb-24 sm:px-8 lg:px-16">
|
||||
<div
|
||||
@@ -30,8 +31,21 @@
|
||||
const {t} = useI18n()
|
||||
const ui = useUiStore()
|
||||
const {sections} = useSidebar()
|
||||
const {isModuleActive} = useModules()
|
||||
const auth = useAuthStore()
|
||||
const route = useRoute()
|
||||
|
||||
// Le SiteSelector est rendu si :
|
||||
// - le module Sites est actif dans config/modules.php (sinon la feature
|
||||
// n'a pas de sens, cf. ticket 3 spec criteres d'acceptation) ;
|
||||
// - ET l'user connecte a au moins un site autorise (sinon "barre vide"
|
||||
// sans tile cliquable).
|
||||
// Les deux flags sont resolus par le middleware auth.global.ts avant
|
||||
// que le layout ne soit rendu (plan load parallele), donc pas de flash.
|
||||
const showSiteSelector = computed(() =>
|
||||
isModuleActive('sites') && (auth.user?.sites?.length ?? 0) > 0,
|
||||
)
|
||||
|
||||
const translatedSections = computed(() =>
|
||||
sections.value.map(section => ({
|
||||
label: t(section.label),
|
||||
|
||||
@@ -15,9 +15,16 @@ export default defineNuxtRouteMiddleware(async (to) => {
|
||||
}
|
||||
|
||||
if (auth.isAuthenticated) {
|
||||
const { loaded, loadSidebar } = useSidebar()
|
||||
if (!loaded.value) {
|
||||
await loadSidebar()
|
||||
}
|
||||
const { loaded: sidebarLoaded, loadSidebar } = useSidebar()
|
||||
const { loaded: modulesLoaded, loadModules } = useModules()
|
||||
|
||||
// Chargement parallele sidebar + modules actifs : les deux sont
|
||||
// consommes par layouts/default.vue (sidebar pour la nav, modules
|
||||
// pour conditionner le SiteSelector). Charger en parallele evite
|
||||
// le flash au premier paint de la barre.
|
||||
await Promise.all([
|
||||
sidebarLoaded.value ? Promise.resolve() : loadSidebar(),
|
||||
modulesLoaded.value ? Promise.resolve() : loadModules(),
|
||||
])
|
||||
}
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user