fix(ui): label is inline with neighboring labels (toggle component)

This commit is contained in:
upsiflu 2025-03-22 15:03:40 +01:00
parent f4fee5dc8c
commit f2763a6586
2 changed files with 10 additions and 17 deletions

View File

@ -21,10 +21,7 @@ const diameter = big ? '28px' : '20px'
type="checkbox" type="checkbox"
style="opacity: 0; /* Hide even before stylesheet is loaded */" style="opacity: 0; /* Hide even before stylesheet is loaded */"
> >
<span <span v-if="label">{{ label }}</span>
v-if="label"
:class="[$props.big ? $style.big : '']"
>{{ label }}</span>
</label> </label>
</template> </template>
@ -71,28 +68,19 @@ const diameter = big ? '28px' : '20px'
aspect-ratio: 2; aspect-ratio: 2;
background-color: var(--void-color); background-color: var(--void-color);
left: 0; left: 0;
top: var(--padding); top: calc(var(--padding) * 2 - var(--diameter) / 2);
} }
&::after { &::after {
height: calc(var(--diameter) - var(--lineWidth) * 2); height: calc(var(--diameter) - var(--lineWidth) * 2);
aspect-ratio: 1; aspect-ratio: 1;
background-color: var(--pin-color); background-color: var(--pin-color);
left: var(--lineWidth); left: var(--lineWidth);
top: calc(var(--padding) + var(--lineWidth)); top: calc(var(--padding) * 2 - var(--diameter) / 2 + var(--lineWidth));
transition: all .2s; transition: all .2s;
} }
> span { > span {
padding-left: calc(var(--diameter) + 8px); padding-left: calc(var(--diameter) * 2 - 12px);
position: relative;
top: 2px;
}
> span.big {
padding-left: calc(var(--diameter) + 16px);
position: relative;
top: 6px;
font-size: 16px;
} }
} }
</style> </style>

View File

@ -57,9 +57,14 @@ Pass a `big` prop to create a larger toggle.
<Toggle <Toggle
big big
v-model="toggle" v-model="toggle"
label="I am big"
/> />
``` ```
<Toggle big v-model="toggle" /> <Toggle
big
v-model="toggle"
label="I am big"
/>
</Layout> </Layout>