PaginaLijst
Een verticale lijstlay-out voor het weergeven van inhoud in een gestapeld formaat.
Gebruik
De PageList-component biedt een flexibele manier om inhoud weer te geven in een verticale lijstindeling. Het is perfect voor het maken van gestapelde lijsten met PageCard componenten of andere elementen, met optionele verdelers tussen items.
<script setup lang="ts">
const users = ref([
{
name: 'Benjamin Canac',
description: 'benjamincanac',
to: 'https://github.com/benjamincanac',
target: '_blank',
avatar: {
src: 'https://github.com/benjamincanac.png',
alt: 'benjamincanac',
loading: 'lazy' as const
}
},
{
name: 'Hugo Richard',
description: 'HugoRCD',
to: 'https://github.com/HugoRCD',
target: '_blank',
avatar: {
src: 'https://github.com/HugoRCD.png',
alt: 'HugoRCD',
loading: 'lazy' as const
}
},
{
name: 'Sébastien Chopin',
description: 'atinux',
to: 'https://github.com/atinux',
target: '_blank',
avatar: {
src: 'https://github.com/atinux.png',
alt: 'atinux',
loading: 'lazy' as const
}
},
{
name: 'Romain Hamel',
description: 'romhml',
to: 'https://github.com/romhml',
target: '_blank',
avatar: {
src: 'https://github.com/romhml.png',
alt: 'romhml',
loading: 'lazy' as const
}
},
{
name: 'Sandro Circi',
description: 'sandros94',
to: 'https://github.com/sandros94',
target: '_blank',
avatar: {
src: 'https://github.com/sandros94.png',
alt: 'sandros94',
loading: 'lazy' as const
}
},
{
name: 'Jakub Michálek',
description: 'J-Michalek',
to: 'https://github.com/J-Michalek',
target: '_blank',
avatar: {
src: 'https://github.com/J-Michalek.png',
alt: 'J-Michalek',
loading: 'lazy' as const
}
},
{
name: 'Alex',
description: 'hywax',
to: 'https://github.com/hywax',
target: '_blank',
avatar: {
src: 'https://github.com/hywax.png',
alt: 'hywax',
loading: 'lazy' as const
}
},
{
name: 'Maxime Pauvert',
description: 'maximepvrt',
to: 'https://github.com/maximepvrt',
target: '_blank',
avatar: {
src: 'https://github.com/maximepvrt.png',
alt: 'maximepvrt',
loading: 'lazy' as const
}
}
])
</script>
<template>
<UPageList>
<UPageCard
v-for="(user, index) in users"
:key="index"
variant="ghost"
:to="user.to"
:target="user.target"
>
<template #body>
<UUser :name="user.name" :description="user.description" :avatar="user.avatar" size="xl" class="relative" />
</template>
</UPageCard>
</UPageList>
</template>
<script setup lang="ts">
import { ref } from 'vue'
const users = ref([
{
name: 'Benjamin Canac',
description: 'benjamincanac',
to: 'https://github.com/benjamincanac',
target: '_blank',
avatar: {
src: 'https://github.com/benjamincanac.png',
alt: 'benjamincanac',
loading: 'lazy' as const
}
},
{
name: 'Hugo Richard',
description: 'HugoRCD',
to: 'https://github.com/HugoRCD',
target: '_blank',
avatar: {
src: 'https://github.com/HugoRCD.png',
alt: 'HugoRCD',
loading: 'lazy' as const
}
},
{
name: 'Sébastien Chopin',
description: 'atinux',
to: 'https://github.com/atinux',
target: '_blank',
avatar: {
src: 'https://github.com/atinux.png',
alt: 'atinux',
loading: 'lazy' as const
}
},
{
name: 'Romain Hamel',
description: 'romhml',
to: 'https://github.com/romhml',
target: '_blank',
avatar: {
src: 'https://github.com/romhml.png',
alt: 'romhml',
loading: 'lazy' as const
}
},
{
name: 'Sandro Circi',
description: 'sandros94',
to: 'https://github.com/sandros94',
target: '_blank',
avatar: {
src: 'https://github.com/sandros94.png',
alt: 'sandros94',
loading: 'lazy' as const
}
},
{
name: 'Jakub Michálek',
description: 'J-Michalek',
to: 'https://github.com/J-Michalek',
target: '_blank',
avatar: {
src: 'https://github.com/J-Michalek.png',
alt: 'J-Michalek',
loading: 'lazy' as const
}
},
{
name: 'Alex',
description: 'hywax',
to: 'https://github.com/hywax',
target: '_blank',
avatar: {
src: 'https://github.com/hywax.png',
alt: 'hywax',
loading: 'lazy' as const
}
},
{
name: 'Maxime Pauvert',
description: 'maximepvrt',
to: 'https://github.com/maximepvrt',
target: '_blank',
avatar: {
src: 'https://github.com/maximepvrt.png',
alt: 'maximepvrt',
loading: 'lazy' as const
}
}
])
</script>
<template>
<UPageList>
<UPageCard
v-for="(user, index) in users"
:key="index"
variant="ghost"
:to="user.to"
:target="user.target"
>
<template #body>
<UUser :name="user.name" :description="user.description" :avatar="user.avatar" size="xl" class="relative" />
</template>
</UPageCard>
</UPageList>
</template>
Verdelen
Gebruik de divide prop om een scheidingslijn toe te voegen tussen elk onderliggende element.
<script setup lang="ts">
const users = ref([
{
name: 'Benjamin Canac',
description: 'benjamincanac',
to: 'https://github.com/benjamincanac',
target: '_blank',
avatar: {
src: 'https://github.com/benjamincanac.png',
alt: 'benjamincanac',
loading: 'lazy' as const
}
},
{
name: 'Hugo Richard',
description: 'HugoRCD',
to: 'https://github.com/HugoRCD',
target: '_blank',
avatar: {
src: 'https://github.com/HugoRCD.png',
alt: 'HugoRCD',
loading: 'lazy' as const
}
},
{
name: 'Sébastien Chopin',
description: 'atinux',
to: 'https://github.com/atinux',
target: '_blank',
avatar: {
src: 'https://github.com/atinux.png',
alt: 'atinux',
loading: 'lazy' as const
}
},
{
name: 'Romain Hamel',
description: 'romhml',
to: 'https://github.com/romhml',
target: '_blank',
avatar: {
src: 'https://github.com/romhml.png',
alt: 'romhml',
loading: 'lazy' as const
}
},
{
name: 'Sandro Circi',
description: 'sandros94',
to: 'https://github.com/sandros94',
target: '_blank',
avatar: {
src: 'https://github.com/sandros94.png',
alt: 'sandros94',
loading: 'lazy' as const
}
},
{
name: 'Jakub Michálek',
description: 'J-Michalek',
to: 'https://github.com/J-Michalek',
target: '_blank',
avatar: {
src: 'https://github.com/J-Michalek.png',
alt: 'J-Michalek',
loading: 'lazy' as const
}
},
{
name: 'Alex',
description: 'hywax',
to: 'https://github.com/hywax',
target: '_blank',
avatar: {
src: 'https://github.com/hywax.png',
alt: 'hywax',
loading: 'lazy' as const
}
},
{
name: 'Maxime Pauvert',
description: 'maximepvrt',
to: 'https://github.com/maximepvrt',
target: '_blank',
avatar: {
src: 'https://github.com/maximepvrt.png',
alt: 'maximepvrt',
loading: 'lazy' as const
}
}
])
</script>
<template>
<UPageList divide>
<UPageCard
v-for="(user, index) in users"
:key="index"
variant="ghost"
:to="user.to"
:target="user.target"
>
<template #body>
<UUser :name="user.name" :description="user.description" :avatar="user.avatar" size="xl" />
</template>
</UPageCard>
</UPageList>
</template>
<script setup lang="ts">
import { ref } from 'vue'
const users = ref([
{
name: 'Benjamin Canac',
description: 'benjamincanac',
to: 'https://github.com/benjamincanac',
target: '_blank',
avatar: {
src: 'https://github.com/benjamincanac.png',
alt: 'benjamincanac',
loading: 'lazy' as const
}
},
{
name: 'Hugo Richard',
description: 'HugoRCD',
to: 'https://github.com/HugoRCD',
target: '_blank',
avatar: {
src: 'https://github.com/HugoRCD.png',
alt: 'HugoRCD',
loading: 'lazy' as const
}
},
{
name: 'Sébastien Chopin',
description: 'atinux',
to: 'https://github.com/atinux',
target: '_blank',
avatar: {
src: 'https://github.com/atinux.png',
alt: 'atinux',
loading: 'lazy' as const
}
},
{
name: 'Romain Hamel',
description: 'romhml',
to: 'https://github.com/romhml',
target: '_blank',
avatar: {
src: 'https://github.com/romhml.png',
alt: 'romhml',
loading: 'lazy' as const
}
},
{
name: 'Sandro Circi',
description: 'sandros94',
to: 'https://github.com/sandros94',
target: '_blank',
avatar: {
src: 'https://github.com/sandros94.png',
alt: 'sandros94',
loading: 'lazy' as const
}
},
{
name: 'Jakub Michálek',
description: 'J-Michalek',
to: 'https://github.com/J-Michalek',
target: '_blank',
avatar: {
src: 'https://github.com/J-Michalek.png',
alt: 'J-Michalek',
loading: 'lazy' as const
}
},
{
name: 'Alex',
description: 'hywax',
to: 'https://github.com/hywax',
target: '_blank',
avatar: {
src: 'https://github.com/hywax.png',
alt: 'hywax',
loading: 'lazy' as const
}
},
{
name: 'Maxime Pauvert',
description: 'maximepvrt',
to: 'https://github.com/maximepvrt',
target: '_blank',
avatar: {
src: 'https://github.com/maximepvrt.png',
alt: 'maximepvrt',
loading: 'lazy' as const
}
}
])
</script>
<template>
<UPageList divide>
<UPageCard
v-for="(user, index) in users"
:key="index"
variant="ghost"
:to="user.to"
:target="user.target"
>
<template #body>
<UUser :name="user.name" :description="user.description" :avatar="user.avatar" size="xl" />
</template>
</UPageCard>
</UPageList>
</template>
API
Props
| Prop | Default | Type |
|---|---|---|
as | 'div' | anyThe element or component this component should render as. |
divide | false | boolean |
ui | { base?: any; } |
Slots
| Slot | Type |
|---|---|
default | {} |
Thema
app.config.ts
export default defineAppConfig({
ui: {
pageList: {
base: 'relative flex flex-col',
variants: {
divide: {
true: '*:not-last:after:absolute *:not-last:after:inset-x-1 *:not-last:after:bottom-0 *:not-last:after:bg-border *:not-last:after:h-px'
}
}
}
}
})vite.config.ts
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import ui from '@nuxt/ui/vite'
export default defineConfig({
plugins: [
vue(),
ui({
ui: {
pageList: {
base: 'relative flex flex-col',
variants: {
divide: {
true: '*:not-last:after:absolute *:not-last:after:inset-x-1 *:not-last:after:bottom-0 *:not-last:after:bg-border *:not-last:after:h-px'
}
}
}
}
})
]
})Changelog
No recent changes