[Feature Request] Support Adjacent Labels on VField through label-variant
@J-Sek is already working on this.
Since Mar 3, 2026.
- Dominant language
- TypeScript
- Stars
- 41k
- Forks
- 7.1k
- Avg merge
- 1d 21h
- Merged PRs (30d)
- 11
Description
Problem to solve
The Material 3 design guidance allows for adjacent labels.
Currently there is no way to allow this on the existing inputs without some hacky css overrides and defaults.
There is the ability to specify the label separately and not pass the label to the input, but this makes the label reacting to the input focus and other usability concerns. (not as convenient as a label prop) Also has the drawback of requiring a refactor if you decide to switch between the layout variants.
Proposed solution
Create a new VField prop called label-variant, which supports the following:
default- (float)floatsingle-lineorinlineadjacentorabovefixed- permanently puts in the floating state, likepersistent-placeholder
This would likely also mean deprecating the single-line prop, which isn't very descriptive of it's function anyway.
Adding this prop would then allow the developer to set the preference in the global defaults and override easily without having to implement two template systems for labels.
Code like this:
<script setup>
import { ref } from 'vue'
const text = defineModel()
const isLabelActive = ref(false)
</script>
<template>
<div>
<v-label
text="Label"
:class="{'active-label': isLabelActive}"
/>
<v-text-field
v-model="text"
color="primary"
@focus="isLabelActive = true"
@blur="isLabelActive = false"
/>
</div>
</template>
<style scoped>
.active-label {
color: rgb(var(--v-theme-primary));
opacity: 1;
font-weight: 500;
}
</style>
would become:
<v-text-field
v-model="text"
color="primary"
label="Label"
label-variant="adjacent"
/>
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.