feat: add truncated tooltip

This commit is contained in:
tdgao
2026-07-03 11:47:56 -07:00
parent ff78d41bc7
commit 074ae3cb0b
3 changed files with 32 additions and 8 deletions
@@ -19,6 +19,8 @@
</span>
<a
v-if="dependency.projectHref"
ref="dependencyNameRef"
v-tooltip="truncatedTooltip(dependencyNameRef, dependency.name)"
:href="dependency.projectHref"
target="_blank"
rel="noopener noreferrer"
@@ -26,7 +28,12 @@
>
{{ dependency.name }}
</a>
<span v-else class="min-w-0 truncate text-base font-semibold text-contrast">
<span
v-else
ref="dependencyNameRef"
v-tooltip="truncatedTooltip(dependencyNameRef, dependency.name)"
class="min-w-0 truncate text-base font-semibold text-contrast"
>
{{ dependency.name }}
</span>
<TagItem class="shrink-0 border !border-solid border-surface-5 !px-3 !py-1 text-base">
@@ -71,7 +78,8 @@
<script setup lang="ts">
import { DownloadIcon, PackageIcon } from '@modrinth/assets'
import { Avatar, ButtonStyled, TagItem } from '@modrinth/ui'
import { Avatar, ButtonStyled, TagItem, truncatedTooltip } from '@modrinth/ui'
import { ref } from 'vue'
defineOptions({
name: 'DownloadDependency',
@@ -96,4 +104,6 @@ defineProps<{
const emit = defineEmits<{
download: []
}>()
const dependencyNameRef = ref<HTMLElement | null>(null)
</script>
@@ -75,13 +75,15 @@
<div class="flex min-w-0 flex-col gap-1">
<div class="flex min-w-0 items-center gap-2">
<nuxt-link
v-tooltip="selectedVersion.version_number"
v-tooltip="truncatedTooltip(versionNumberRef, selectedVersion.version_number)"
:to="`/${project.project_type}/${project.slug || project.id}/version/${selectedVersion.id}`"
target="_blank"
rel="noopener noreferrer"
class="block min-w-0 truncate font-semibold text-contrast no-underline hover:underline"
class="block min-w-0 text-contrast no-underline hover:underline"
>
{{ selectedVersion.version_number }}
<span ref="versionNumberRef" class="block truncate font-semibold">
{{ selectedVersion.version_number }}
</span>
</nuxt-link>
<VersionChannelTag
:channel="selectedVersion.version_type"
@@ -89,7 +91,8 @@
/>
</div>
<p
v-tooltip="selectedVersion.name"
ref="versionNameRef"
v-tooltip="truncatedTooltip(versionNameRef, selectedVersion.name)"
class="m-0 w-fit max-w-full truncate text-sm text-secondary"
>
{{ selectedVersion.name }}
@@ -132,6 +135,7 @@ import {
type ComboboxOption,
defineMessages,
getTagMessage,
truncatedTooltip,
useDebugLogger,
useVIntl,
} from '@modrinth/ui'
@@ -193,6 +197,8 @@ const userSelectedGameVersion = ref<string | null>(props.initialGameVersion)
const userSelectedPlatform = ref<string | null>(props.initialPlatform)
const showAllVersions = ref(defaultShowAllVersions())
const versionFilter = ref('')
const versionNumberRef = ref<HTMLElement | null>(null)
const versionNameRef = ref<HTMLElement | null>(null)
const incompatibleGameVersionsSet = computed(() => new Set(props.incompatibleGameVersions))
const incompatibleLoadersSet = computed(() => new Set(props.incompatibleLoaders))
@@ -3,10 +3,11 @@
<template v-if="project" #title>
<Avatar :src="project.icon_url" :alt="project.title" class="icon" size="32px" />
<div
ref="downloadTitleRef"
class="truncate text-lg font-extrabold text-contrast"
v-tooltip="formatMessage(messages.downloadTitle, { title: project.title })"
v-tooltip="truncatedTooltip(downloadTitleRef, downloadTitle)"
>
{{ formatMessage(messages.downloadTitle, { title: project.title }) }}
{{ downloadTitle }}
</div>
</template>
<template #default>
@@ -89,6 +90,7 @@ import {
injectModrinthClient,
NewModal,
ServersPromo,
truncatedTooltip,
useDebugLogger,
useVIntl,
} from '@modrinth/ui'
@@ -160,6 +162,7 @@ const { formatMessage } = useVIntl()
const debug = useDebugLogger('DownloadModal')
const modal = ref<NewModalRef | null>(null)
const downloadTitleRef = ref<HTMLElement | null>(null)
const modalOpen = ref(false)
const showProjectId = ref<string | null>(null)
const showOptions = ref<ResolvedProjectDownloadModalShowOptions>(getDefaultShowOptions())
@@ -193,6 +196,11 @@ const project = computed<DownloadModalProject | null>(() => {
}
})
const downloadTitle = computed(() => {
if (!project.value) return ''
return formatMessage(messages.downloadTitle, { title: project.value.title })
})
const versionsEnabled = ref(false)
const {
data: versionsV3,