Skip to content

Commit 5f392da

Browse files
committed
refactor: enhance settings page layout and tab structure
- Updated the settings page to improve the layout of the sidebar and main tabs. - Introduced a new wrapper for main tabs and adjusted the conditional rendering of health-related tabs based on user permissions. - Added responsive design adjustments for better usability on different screen sizes. - Cleaned up commented-out code for clarity.
1 parent c0c7b6a commit 5f392da

File tree

1 file changed

+72
-25
lines changed

1 file changed

+72
-25
lines changed

apps/web/src/pages/settings.vue

Lines changed: 72 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -17,28 +17,49 @@ q-dialog(
1717
q-btn(icon="mdi-close" flat round dense to='/')
1818
q-tooltip.text-body2(anchor="top middle" self="bottom middle") Fermer
1919
.flex.fit(:style='{ flexDirection: $q.screen.gt.sm ? "row" : "column" }')
20-
.col-0
21-
q-tabs.full-height.border-right(
22-
v-if='drawer'
23-
v-model="tab"
24-
:vertical='$q.screen.gt.sm'
25-
:inline-label="$q.screen.lt.md"
26-
mobile-arrows
27-
outside-arrows
20+
.col-0.settings-sidebar(v-if='drawer')
21+
.settings-main-tabs-wrapper
22+
q-tabs.border-right.settings-main-tabs(
23+
v-model="tab"
24+
:vertical="$q.screen.gt.sm"
25+
:inline-label="$q.screen.lt.md"
26+
mobile-arrows
27+
outside-arrows
28+
)
29+
q-tab(
30+
v-for="item in navItems"
31+
:key="item.route"
32+
:name="item.route"
33+
:label="item.label"
34+
:icon="item.icon"
35+
:disable="item._disabled"
36+
)
37+
q-tooltip.text-body2.bg-negative.text-white(
38+
v-if="item._disabled"
39+
anchor="top middle"
40+
self="center middle"
41+
) Vous n'avez pas les permissions nécessaires pour accéder à cette page
42+
43+
q-separator(v-if="!$q.screen.gt.sm && index !== navItems.length - 1 && hasPermission('/core/health', 'read')" inset vertical)
44+
q-tab(
45+
v-if="!$q.screen.gt.sm && hasPermission('/core/health', 'read')"
46+
name="/settings/health"
47+
label="Santé applicative"
48+
icon="mdi-heart-pulse"
49+
)
50+
51+
.settings-bottom-tabs-wrapper(
52+
v-if="$q.screen.gt.sm && hasPermission('/core/health', 'read')"
2853
)
29-
q-tab(
30-
v-for="item in navItems"
31-
:key="item.route"
32-
:name="item.route"
33-
:label="item.label"
34-
:icon="item.icon"
35-
:disable="item._disabled"
54+
q-tabs.border-right(
55+
v-model="tab"
56+
vertical
3657
)
37-
q-tooltip.text-body2.bg-negative.text-white(
38-
v-if="item._disabled"
39-
anchor="top middle"
40-
self="center middle"
41-
) Vous n'avez pas les permissions nécessaires pour accéder à cette page
58+
q-tab(
59+
name="/settings/health"
60+
label="Santé applicative"
61+
icon="mdi-heart-pulse"
62+
)
4263
.col
4364
q-tab-panels.fit(v-model="tab")
4465
q-tab-panel.q-pa-none(
@@ -68,6 +89,7 @@ export default defineNuxtComponent({
6889
router.push(val)
6990
},
7091
})
92+
7193
const drawer = ref(true)
7294
7395
const navItemsInternal = ref<NavItem[]>([
@@ -113,11 +135,11 @@ export default defineNuxtComponent({
113135
label: 'trousseau de clés API',
114136
_acl: '/core/keyrings',
115137
},
116-
{
117-
route: '/settings/health',
118-
icon: 'mdi-heart-pulse',
119-
label: 'Santé applicative',
120-
},
138+
// {
139+
// route: '/settings/health',
140+
// icon: 'mdi-heart-pulse',
141+
// label: 'Santé applicative',
142+
// },
121143
])
122144
123145
const navItems = computed(() => {
@@ -139,6 +161,7 @@ export default defineNuxtComponent({
139161
drawer,
140162
navItems,
141163
router,
164+
hasPermission,
142165
}
143166
},
144167
methods: {
@@ -149,3 +172,27 @@ export default defineNuxtComponent({
149172
},
150173
})
151174
</script>
175+
176+
<style scoped>
177+
@media (min-width: 1024px) {
178+
.settings-sidebar {
179+
height: 100%;
180+
display: flex;
181+
flex-direction: column;
182+
}
183+
184+
.settings-main-tabs-wrapper {
185+
flex: 1 1 auto;
186+
min-height: 0;
187+
overflow-y: auto;
188+
}
189+
190+
.settings-bottom-tabs-wrapper {
191+
flex: 0 0 auto;
192+
}
193+
194+
:deep(.settings-main-tabs.q-tabs--vertical) {
195+
height: 100%;
196+
}
197+
}
198+
</style>

0 commit comments

Comments
 (0)