style: scrollbar isolée dans la zone de contenu + suppression des flèches
All checks were successful
Deploy / deploy (push) Successful in 2m38s
All checks were successful
Deploy / deploy (push) Successful in 2m38s
- Layout: h-screen overflow-hidden, <main> flex-col avec mt-16 - Pages avec toolbar: toolbar hors du conteneur scrollable (flex-col + overflow-y-auto flex-1) - Pages sans toolbar: wrapper overflow-y-auto h-full - app.scss: scrollbar-width/color limité à Firefox via @supports (-moz-appearance: none) pour éviter le conflit avec les pseudo-éléments webkit sur Chrome 121+ - Suppression des flèches de scrollbar via ::-webkit-scrollbar-button - html/body overflow:hidden pour éviter la double scrollbar
This commit is contained in:
parent
d4e456961a
commit
15cb59e420
@@ -3,6 +3,11 @@
|
|||||||
@import "tailwindcss/components";
|
@import "tailwindcss/components";
|
||||||
@import "tailwindcss/utilities";
|
@import "tailwindcss/utilities";
|
||||||
|
|
||||||
|
html, body {
|
||||||
|
overflow: hidden;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
body {
|
body {
|
||||||
background-color: white;
|
background-color: white;
|
||||||
}
|
}
|
||||||
@@ -82,6 +87,33 @@ body {
|
|||||||
@apply bg-gray-700;
|
@apply bg-gray-700;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Firefox uniquement — évite le conflit avec les pseudo-éléments webkit sur Chrome 121+ */
|
||||||
|
@supports (-moz-appearance: none) {
|
||||||
|
* {
|
||||||
|
scrollbar-width: thin;
|
||||||
|
scrollbar-color: #16a34a transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dark * {
|
||||||
|
scrollbar-color: #16a34a #1f2937;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Dark mode — webkit track */
|
||||||
|
.dark ::-webkit-scrollbar-track {
|
||||||
|
@apply bg-gray-800;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Supprime les flèches de la scrollbar */
|
||||||
|
::-webkit-scrollbar-button:start:decrement,
|
||||||
|
::-webkit-scrollbar-button:end:increment,
|
||||||
|
::-webkit-scrollbar-button:start:increment,
|
||||||
|
::-webkit-scrollbar-button:end:decrement {
|
||||||
|
display: none;
|
||||||
|
width: 0;
|
||||||
|
height: 0;
|
||||||
|
}
|
||||||
|
|
||||||
///* Custom styles for the scrollbar buttons */
|
///* Custom styles for the scrollbar buttons */
|
||||||
//::-webkit-scrollbar-button {
|
//::-webkit-scrollbar-button {
|
||||||
// @apply bg-gray-700;
|
// @apply bg-gray-700;
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<div>
|
<div class="overflow-y-auto h-full">
|
||||||
<Toolbar :config="toolbarConfig" class="mb-6" />
|
<Toolbar :config="toolbarConfig" class="mb-6" />
|
||||||
|
|
||||||
<div v-if="activityStore.loading" class="flex justify-center py-8">
|
<div v-if="activityStore.loading" class="flex justify-center py-8">
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="container mx-auto px-4 py-8 max-w-4xl">
|
<div class="overflow-y-auto h-full"><div class="container mx-auto px-4 py-8 max-w-4xl">
|
||||||
<!-- En-tête -->
|
<!-- En-tête -->
|
||||||
<div class="mb-8">
|
<div class="mb-8">
|
||||||
<div class="flex items-center space-x-3 mb-4">
|
<div class="flex items-center space-x-3 mb-4">
|
||||||
@@ -150,7 +150,7 @@
|
|||||||
<XMarkIcon class="w-4 h-4" />
|
<XMarkIcon class="w-4 h-4" />
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div></div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="container mx-auto px-4 py-8">
|
<div class="overflow-y-auto h-full"><div class="container mx-auto px-4 py-8">
|
||||||
<!-- Header -->
|
<!-- Header -->
|
||||||
<div class="mb-8">
|
<div class="mb-8">
|
||||||
<h1 class="text-3xl font-bold text-gray-900 dark:text-gray-100 mb-2">Import de Bibliothèque</h1>
|
<h1 class="text-3xl font-bold text-gray-900 dark:text-gray-100 mb-2">Import de Bibliothèque</h1>
|
||||||
@@ -92,7 +92,7 @@
|
|||||||
<div v-if="store.allFilesProcessed" class="mt-8">
|
<div v-if="store.allFilesProcessed" class="mt-8">
|
||||||
<ImportResults />
|
<ImportResults />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div></div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div>
|
<div class="flex flex-col h-full">
|
||||||
<Toolbar :config="toolbarConfig" class="sticky top-16 z-10" />
|
<Toolbar :config="toolbarConfig" />
|
||||||
|
<div class="overflow-y-auto flex-1">
|
||||||
<div class="container mx-auto px-4">
|
<div class="container mx-auto px-4">
|
||||||
<MangaGrid v-if="viewMode === 'grid'" :mangas="pagedItems" />
|
<MangaGrid v-if="viewMode === 'grid'" :mangas="pagedItems" />
|
||||||
<MangaList
|
<MangaList
|
||||||
@@ -22,6 +23,7 @@
|
|||||||
Mise à jour en cours...
|
Mise à jour en cours...
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,12 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="min-h-screen bg-gray-50 dark:bg-gray-900">
|
<div class="flex flex-col h-full bg-gray-50 dark:bg-gray-900">
|
||||||
<!-- Notifications Toast -->
|
<!-- Notifications Toast -->
|
||||||
<NotificationToast />
|
<NotificationToast />
|
||||||
|
|
||||||
|
<Toolbar v-if="currentManga" :config="toolbarConfig" />
|
||||||
|
|
||||||
|
<div class="overflow-y-auto flex-1">
|
||||||
|
|
||||||
<div v-if="errorDetails" class="bg-red-100 dark:bg-red-900/20 border border-red-400 dark:border-red-700 text-red-700 dark:text-red-400 px-4 py-3 rounded mx-4 mt-4">
|
<div v-if="errorDetails" class="bg-red-100 dark:bg-red-900/20 border border-red-400 dark:border-red-700 text-red-700 dark:text-red-400 px-4 py-3 rounded mx-4 mt-4">
|
||||||
{{ errorDetails.message || 'Une erreur est survenue lors du chargement des détails.' }}
|
{{ errorDetails.message || 'Une erreur est survenue lors du chargement des détails.' }}
|
||||||
</div>
|
</div>
|
||||||
@@ -11,8 +15,6 @@
|
|||||||
<!-- Composant invisible qui écoute les mises à jour Mercure -->
|
<!-- Composant invisible qui écoute les mises à jour Mercure -->
|
||||||
<MercureListener :manga-id="String(mangaId)" />
|
<MercureListener :manga-id="String(mangaId)" />
|
||||||
|
|
||||||
<Toolbar :config="toolbarConfig" class="sticky top-16 z-10" />
|
|
||||||
|
|
||||||
<div v-if="isRefreshingDetails" class="absolute top-2 right-2 text-gray-500 dark:text-gray-400 z-20">
|
<div v-if="isRefreshingDetails" class="absolute top-2 right-2 text-gray-500 dark:text-gray-400 z-20">
|
||||||
<ArrowPathIcon class="h-5 w-5 animate-spin" />
|
<ArrowPathIcon class="h-5 w-5 animate-spin" />
|
||||||
</div>
|
</div>
|
||||||
@@ -87,6 +89,8 @@
|
|||||||
<div v-else class="text-center text-gray-500 dark:text-gray-400 py-10 px-4">
|
<div v-else class="text-center text-gray-500 dark:text-gray-400 py-10 px-4">
|
||||||
Aucun manga sélectionné ou trouvé.
|
Aucun manga sélectionné ou trouvé.
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
<template>
|
<template>
|
||||||
<div>
|
<div class="flex flex-col h-full">
|
||||||
<Toolbar :config="toolbarConfig" class="sticky top-16 z-10" />
|
<Toolbar :config="toolbarConfig" />
|
||||||
|
|
||||||
|
<div class="overflow-y-auto flex-1">
|
||||||
<div class="container mx-auto px-4 py-6">
|
<div class="container mx-auto px-4 py-6">
|
||||||
<!-- Header -->
|
<!-- Header -->
|
||||||
<div class="mb-8">
|
<div class="mb-8">
|
||||||
@@ -71,6 +72,7 @@
|
|||||||
Configuration exportée !
|
Configuration exportée !
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<!-- Import Modal -->
|
<!-- Import Modal -->
|
||||||
<div v-if="showImportModal" class="fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50 p-4">
|
<div v-if="showImportModal" class="fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50 p-4">
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
<template>
|
<template>
|
||||||
<div>
|
<div class="flex flex-col h-full">
|
||||||
<Toolbar :config="toolbarConfig" class="sticky top-16 z-10" />
|
<Toolbar :config="toolbarConfig" />
|
||||||
|
|
||||||
|
<div class="overflow-y-auto flex-1">
|
||||||
<div class="container mx-auto px-4 py-6">
|
<div class="container mx-auto px-4 py-6">
|
||||||
<!-- Back Navigation -->
|
<!-- Back Navigation -->
|
||||||
<div class="mb-6">
|
<div class="mb-6">
|
||||||
@@ -180,6 +181,7 @@
|
|||||||
Configuration {{ isEditing ? 'mise à jour' : 'créée' }} avec succès !
|
Configuration {{ isEditing ? 'mise à jour' : 'créée' }} avec succès !
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="container mx-auto px-4 py-8 max-w-3xl">
|
<div class="overflow-y-auto h-full"><div class="container mx-auto px-4 py-8 max-w-3xl">
|
||||||
<div class="flex items-center justify-between mb-6">
|
<div class="flex items-center justify-between mb-6">
|
||||||
<div>
|
<div>
|
||||||
<h1 class="text-2xl font-bold text-gray-900 dark:text-white">{{ t('preferences.title') }}</h1>
|
<h1 class="text-2xl font-bold text-gray-900 dark:text-white">{{ t('preferences.title') }}</h1>
|
||||||
@@ -175,7 +175,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
</div>
|
</div></div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="min-h-screen bg-gray-50 dark:bg-gray-900 flex">
|
<div class="h-screen overflow-hidden bg-gray-50 dark:bg-gray-900 flex">
|
||||||
<Header
|
<Header
|
||||||
:show-menu-button="isReaderMode"
|
:show-menu-button="isReaderMode"
|
||||||
@menu-click="toggleSidebar"
|
@menu-click="toggleSidebar"
|
||||||
@@ -12,7 +12,7 @@
|
|||||||
@add-manga-click="$emit('add-manga-click', $event)" />
|
@add-manga-click="$emit('add-manga-click', $event)" />
|
||||||
|
|
||||||
<main :class="[
|
<main :class="[
|
||||||
'flex-1 pt-16',
|
'flex-1 mt-16 flex flex-col overflow-hidden',
|
||||||
isReaderMode ? '' : 'md:ml-60'
|
isReaderMode ? '' : 'md:ml-60'
|
||||||
]">
|
]">
|
||||||
<RouterView></RouterView>
|
<RouterView></RouterView>
|
||||||
|
|||||||
@@ -18,7 +18,6 @@
|
|||||||
type: Object,
|
type: Object,
|
||||||
required: true,
|
required: true,
|
||||||
validator: value => {
|
validator: value => {
|
||||||
// Vérifie que leftSection et rightSection sont des tableaux
|
|
||||||
return Array.isArray(value.leftSection) && Array.isArray(value.rightSection);
|
return Array.isArray(value.leftSection) && Array.isArray(value.rightSection);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user