Nuxt UI table, tooltip on row.
How would one create a tooltip on a complete row. Couldn't figure it out with the templating...
UTableUTableUTableUTableUTableUTableUTableUTableUTooltipUTooltipUTooltipUTooltipUTooltipUTooltipUTooltipUTooltip#default-row#default-row#<column>-datav-for#name-data#name-data<template>
<UTable :rows="people">
<template #default-row="{ row }">
<UTooltip :text="getTooltipText(row)">
<tr>
<td v-for="(value, key) in row" :key="key">
{{ value }}
</td>
</tr>
</UTooltip>
</template>
</UTable>
</template>
<script setup>
const people = [
// Your table data here
]
function getTooltipText(row) {
// Customize this function to return the desired tooltip text for each row
return `${row.name} - ${row.title}`
}
</script><template>
<UTable :rows="people" :columns="columns">
<template v-for="column in columns" :key="column.key" #[`${column.key}-data`]="{ row }">
<UTooltip :text="getTooltipText(row)">
{{ row[column.key] }}
</UTooltip>
</template>
</UTable>
</template>
<script setup>
const columns = [
{ key: 'name', label: 'Name' },
{ key: 'title', label: 'Title' },
{ key: 'email', label: 'Email' },
{ key: 'role', label: 'Role' }
]
const people = [
// Your table data here
]
function getTooltipText(row) {
return `${row.name} - ${row.title}`
}
</script><template>
<UTable :rows="people" :columns="columns">
<template #name-data="{ row }">
<UTooltip :text="getTooltipText(row)">
<div class="full-row-tooltip">
<span v-for="column in columns" :key="column.key" class="tooltip-cell">
{{ row[column.key] }}
</span>
</div>
</UTooltip>
</template>
</UTable>
</template>
<script setup>
const columns = [
{ key: 'name', label: 'Name' },
{ key: 'title', label: 'Title' },
{ key: 'email', label: 'Email' },
{ key: 'role', label: 'Role' }
]
const people = [
// Your table data here
]
function getTooltipText(row) {
return `${row.name} - ${row.title}`
}
</script>
<style scoped>
.full-row-tooltip {
display: grid;
grid-template-columns: repeat(4, 1fr); /* Adjust based on your column count */
width: 100%;
}
.tooltip-cell {
padding: 0.5rem; /* Adjust as needed */
}
/* Override Nuxt UI styles to allow our custom layout */
:deep(td) {
padding: 0 !important;
}
:deep(td:not(:first-child)) {
display: none;
}
:deep(td:first-child) {
width: 100%;
}
</style>