dashboardpanneau
Utilisation
Son état (taille, effondrement, etc.) sera enregistré en fonction des accessoires storage et storage-key que vous fournissez au composant DashboardGroup.
Utilisez-le dans l'emplacement par défaut du composant DashboardGroup, vous pouvez placer plusieurs panneaux les uns à côté des autres:
<script setup lang="ts">
definePageMeta({
layout: 'dashboard'
})
</script>
<template>
<UDashboardPanel id="inbox-1" resizable />
<UDashboardPanel id="inbox-2" class="hidden lg:flex" />
</template>
id lorsque vous utilisez plusieurs panneaux dans différentes pages pour éviter les conflits.resizable, donc enveloppez-le dans un conteneur (par exemple <div class="flex flex-1">) si vous utilisez des transitions de page ou si vous avez besoin d'une seule racine pour la mise en page.Utilisez les emplacements header, body et footer pour personnaliser le panneau ou l'emplacement par défaut si vous ne voulez pas un corps défilable avec rembourrage.
Inbox
<template>
<UDashboardPanel resizable>
<template #header>
<UDashboardNavbar title="Inbox">
<template #leading>
<UDashboardSidebarCollapse />
</template>
</UDashboardNavbar>
</template>
<template #body>
<Placeholder class="h-full" />
</template>
</UDashboardPanel>
</template>
DashboardNavbar dans l'emplacement header.Redimensionnable
Utilisez le prop resizable pour redimensionner le panneau.
<template>
<UDashboardPanel resizable>
<template #body>
<Placeholder class="h-96" />
</template>
</UDashboardPanel>
</template>taille
Utilisez les accessoires min-size, max-size et default-size pour personnaliser la taille du panneau.
<template>
<UDashboardPanel resizable :min-size="22" :default-size="35" :max-size="40">
<template #body>
<Placeholder class="h-96" />
</template>
</UDashboardPanel>
</template>unit sur le composant DashboardGroup.api
Props
| Prop | Default | Type |
|---|---|---|
id | useId() | stringThe id of the panel. |
minSize | 15 | numberThe minimum size of the panel. |
maxSize | 100 | numberThe maximum size of the panel. |
defaultSize | 0 | numberThe default size of the panel. |
resizable | false | boolean Whether to allow the user to resize the panel. |
ui | { root?: SlotClass; body?: SlotClass; handle?: SlotClass; } |
Slots électroniques
| Slot | Type |
|---|---|
default | {} |
header | {} |
body | {} |
footer | {} |
resize-handle | { onMouseDown: (e: MouseEvent) => void; onTouchStart: (e: TouchEvent) => void; onDoubleClick: (e: MouseEvent) => void; } |
Thème
export default defineAppConfig({
ui: {
dashboardPanel: {
slots: {
root: 'relative flex flex-col min-w-0 min-h-svh lg:not-last:border-e lg:not-last:border-default shrink-0',
body: 'flex flex-col gap-4 sm:gap-6 flex-1 overflow-y-auto p-4 sm:p-6',
handle: ''
},
variants: {
size: {
true: {
root: 'w-full lg:w-(--width)'
},
false: {
root: 'flex-1'
}
}
}
}
}
})import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import ui from '@nuxt/ui/vite'
export default defineConfig({
plugins: [
vue(),
ui({
ui: {
dashboardPanel: {
slots: {
root: 'relative flex flex-col min-w-0 min-h-svh lg:not-last:border-e lg:not-last:border-default shrink-0',
body: 'flex flex-col gap-4 sm:gap-6 flex-1 overflow-y-auto p-4 sm:p-6',
handle: ''
},
variants: {
size: {
true: {
root: 'w-full lg:w-(--width)'
},
false: {
root: 'flex-1'
}
}
}
}
}
})
]
})