add telephone link

This commit is contained in:
Timi
2026-08-03 01:27:46 +08:00
parent 2f9442e4a2
commit cd1b45eb24
13 changed files with 128 additions and 36 deletions
+44
View File
@@ -0,0 +1,44 @@
<template>
<component
:is="href ? 'a' : 'span'"
v-if="displayText"
:href="href || undefined"
class="telephone-link"
:class="{ clickable: !!href }"
@click.stop
>
<span v-text="displayText" />
</component>
</template>
<script setup lang="ts">
import { buildTelephoneURL, canDialTelephone } from "@/utils/telephone";
defineOptions({
name: "TelephoneLink"
});
const props = withDefaults(defineProps<{
placeholder?: string;
value?: string;
}>(), {
placeholder: ""
});
const textValue = computed(() => props.value?.trim() || "");
const displayText = computed(() => textValue.value || props.placeholder);
const href = computed(() => canDialTelephone(textValue.value) ? buildTelephoneURL(textValue.value) : "");
</script>
<style scoped lang="less">
.telephone-link {
color: inherit;
word-break: break-all;
text-decoration: none;
&.clickable {
text-decoration: underline;
text-underline-offset: .16rem;
}
}
</style>