<template> <div class="field"> <span class="field-title" v-if="title">{{ title }}</span> <Tooltip :display="`${value}`" :class="{ fullWidth: !title }"> <input type="range" v-model="value" :min="min" :max="max" /> </Tooltip> </div> </template> <script setup lang="ts"> import { computed, toRefs, unref } from "vue"; import Tooltip from "../system/Tooltip.vue"; const props = toRefs( defineProps<{ title?: string; modelValue?: number; min?: number; max?: number; }>() ); const emit = defineEmits<{ (e: "update:modelValue", value: number): void; }>(); const value = computed({ get() { return unref(props.modelValue) || 0; }, set(value: number) { emit("update:modelValue", value); } }); </script> <style scoped> .fullWidth { width: 100%; } </style>