Files
nuxt-address-book/layouts/default.vue
2025-04-15 21:36:09 +02:00

56 lines
1.5 KiB
Vue

<script setup lang="ts">
const { $trpc } = useNuxtApp();
const { data: contacts } = await $trpc.contactList.useQuery();
</script>
<template>
<div id="app">
<div id="sidebar">
<h1>
<NuxtLink to="/about">Nuxt Contacts</NuxtLink>
</h1>
<div>
<form id="search-form" role="search">
<input
id="q"
aria-label="Search contacts"
name="q"
placeholder="Search"
type="search"
>
<div
id="search-spinner"
aria-hidden
hidden
/>
</form>
<form method="post">
<button type="submit">New</button>
</form>
</div>
<nav>
<ul v-if="contacts?.length">
<li v-for="contact in contacts" :key="contact.id">
<NuxtLink :to="{name: 'contacts-contactId', params: {contactId: contact.id}}">
<template v-if="contact.first || contact.last">{{ contact.first }} {{ contact.last }}</template>
<i v-else>No Name</i>
<span v-if="contact.favorite"></span>
</NuxtLink>
</li>
<li>
<NuxtLink :to="{name: 'contacts-contactId', params: {contactId: 1}}">Your Name</NuxtLink>
</li>
<li>
<NuxtLink :to="{name: 'contacts-contactId', params: {contactId: 2}}">Your Friend</NuxtLink>
</li>
</ul>
<p v-else><i>No contacts</i></p>
</nav>
</div>
<div id="detail">
<slot/>
</div>
</div>
</template>