Skip to content

Commit

Permalink
refactor(NumberField)!: remove NumberFieldLabel (#969)
Browse files Browse the repository at this point in the history
* refactor(NumberField): remove NumberFieldLabel, pass id to NumberFieldRootContext

* fix(NumberField): add label to pass axe tests

* fix(NumberFieldInput): remove aria-labelledby

* docs: add back label

---------

Co-authored-by: zernonia <zernonia@gmail.com>
  • Loading branch information
romanslonov and zernonia committed May 27, 2024
1 parent 2dad7cf commit 663d102
Show file tree
Hide file tree
Showing 11 changed files with 16 additions and 67 deletions.
6 changes: 3 additions & 3 deletions docs/components/demo/NumberField/css/index.vue
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
<script setup lang="ts">
import { NumberFieldDecrement, NumberFieldIncrement, NumberFieldInput, NumberFieldLabel, NumberFieldRoot } from 'radix-vue'
import { NumberFieldDecrement, NumberFieldIncrement, NumberFieldInput, NumberFieldRoot } from 'radix-vue'
import { Icon } from '@iconify/vue'
</script>

<template>
<NumberFieldRoot
id="age"
class="text-sm text-white"
:min="0"
:default-value="18"
>
<NumberFieldLabel>Age</NumberFieldLabel>

<label for="age">Age</label>
<div class="mt-1 flex items-center border bg-blackA7 border-blackA9 rounded-md">
<NumberFieldDecrement class="p-2 disabled:opacity-20">
<Icon icon="radix-icons:minus" />
Expand Down
7 changes: 0 additions & 7 deletions docs/components/demo/NumberField/css/styles.css
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,4 @@ button {

.CheckboxIndicator {
color: var(--grass-11);
}

.Label {
color: white;
padding-left: 15px;
font-size: 15px;
line-height: 1;
}
6 changes: 3 additions & 3 deletions docs/components/demo/NumberField/tailwind/index.vue
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
<script setup lang="ts">
import { NumberFieldDecrement, NumberFieldIncrement, NumberFieldInput, NumberFieldLabel, NumberFieldRoot } from 'radix-vue'
import { NumberFieldDecrement, NumberFieldIncrement, NumberFieldInput, NumberFieldRoot } from 'radix-vue'
import { Icon } from '@iconify/vue'
</script>

<template>
<NumberFieldRoot
id="age"
class="text-sm text-white"
:min="0"
:default-value="18"
>
<NumberFieldLabel>Age</NumberFieldLabel>

<label for="age">Age</label>
<div class="mt-1 flex items-center border bg-blackA7 border-blackA9 rounded-md">
<NumberFieldDecrement class="p-2 disabled:opacity-20">
<Icon icon="radix-icons:minus" />
Expand Down
10 changes: 1 addition & 9 deletions docs/content/components/number-field.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,13 +42,11 @@ Import all parts and piece them together.

```vue
<script setup>
import { NumberFieldDecrement, NumberFieldIncrement, NumberFieldInput, NumberFieldLabel, NumberFieldRoot } from 'radix-vue'
import { NumberFieldDecrement, NumberFieldIncrement, NumberFieldInput, NumberFieldRoot } from 'radix-vue'
</script>
<template>
<NumberFieldRoot>
<NumberFieldLabel />
<NumberFieldDecrement />
<NumberFieldInput />
<NumberFieldIncrement />
Expand All @@ -73,12 +71,6 @@ Contains all the parts of a number field. An `input` will also render when used
]"
/>

### Label

Label for the input.

<!-- @include: @/meta/NumberFieldLabel.md -->

### Input

Input
Expand Down
1 change: 0 additions & 1 deletion packages/radix-vue/constant/components.ts
Original file line number Diff line number Diff line change
Expand Up @@ -248,7 +248,6 @@ export const components = {

numberField: [
'NumberFieldRoot',
'NumberFieldLabel',
'NumberFieldInput',
'NumberFieldIncrement',
'NumberFieldDecrement',
Expand Down
4 changes: 2 additions & 2 deletions packages/radix-vue/src/NumberField/NumberFieldInput.vue
Original file line number Diff line number Diff line change
Expand Up @@ -38,13 +38,14 @@ function handleWheelEvent(event: WheelEvent) {
onMounted(() => {
rootContext.onInputElement(currentElement.value as HTMLInputElement)
})
</script>

<template>
<Primitive
v-bind="props"
:id="rootContext.inputId"
:id="rootContext.id.value"
ref="primitiveElement"
role="spinbutton"
type="text"
Expand All @@ -60,7 +61,6 @@ onMounted(() => {
:aria-valuenow="rootContext.modelValue.value"
:aria-valuemin="rootContext.min.value"
:aria-valuemax="rootContext.max.value"
:aria-labelledby="rootContext.labelId"
@keydown.up.prevent="rootContext.handleIncrease()"
@keydown.down.prevent="rootContext.handleDecrease()"
@keydown.page-up.prevent="rootContext.handleIncrease(10)"
Expand Down
27 changes: 0 additions & 27 deletions packages/radix-vue/src/NumberField/NumberFieldLabel.vue

This file was deleted.

10 changes: 3 additions & 7 deletions packages/radix-vue/src/NumberField/NumberFieldRoot.vue
Original file line number Diff line number Diff line change
Expand Up @@ -43,12 +43,11 @@ interface NumberFieldRootContext {
validate: (val: string) => boolean
applyInputValue: (val: string) => void
disabled: Ref<boolean>
labelId: string
inputId: string
max: Ref<number | undefined>
min: Ref<number | undefined>
isDecreaseDisabled: Ref<boolean>
isIncreaseDisabled: Ref<boolean>
id: Ref<string | undefined>
}
export const [injectNumberFieldRootContext, provideNumberFieldRootContext] = createContext<NumberFieldRootContext>('NumberFieldRoot')
Expand All @@ -69,7 +68,7 @@ const props = withDefaults(defineProps<NumberFieldRootProps>(), {
step: 1,
})
const emits = defineEmits<NumberFieldRootEmits>()
const { disabled, min, max, step, locale, formatOptions } = toRefs(props)
const { disabled, min, max, step, locale, formatOptions, id } = toRefs(props)
const modelValue = useVModel(props, 'modelValue', emits, {
defaultValue: props.defaultValue,
Expand All @@ -78,8 +77,6 @@ const modelValue = useVModel(props, 'modelValue', emits, {
const { primitiveElement, currentElement } = usePrimitiveElement()
const labelId = useId(undefined, 'number-field-label')
const inputId = useId(undefined, 'number-field-input')
const isFormControl = useFormControl(currentElement)
const inputEl = ref<HTMLInputElement>()
Expand Down Expand Up @@ -180,8 +177,6 @@ provideNumberFieldRootContext({
handleDecrease,
handleIncrease,
handleMinMaxValue,
labelId,
inputId,
inputMode,
inputEl,
onInputElement: el => inputEl.value = el,
Expand All @@ -193,6 +188,7 @@ provideNumberFieldRootContext({
min,
isDecreaseDisabled,
isIncreaseDisabled,
id,
})
</script>

Expand Down
1 change: 0 additions & 1 deletion packages/radix-vue/src/NumberField/index.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
export { default as NumberFieldRoot, type NumberFieldRootProps, type NumberFieldRootEmits } from './NumberFieldRoot.vue'
export { default as NumberFieldLabel, type NumberFieldLabelProps } from './NumberFieldLabel.vue'
export { default as NumberFieldInput, type NumberFieldInputProps } from './NumberFieldInput.vue'
export { default as NumberFieldIncrement, type NumberFieldIncrementProps } from './NumberFieldIncrement.vue'
export { default as NumberFieldDecrement, type NumberFieldDecrementProps } from './NumberFieldDecrement.vue'
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<script setup lang="ts">
import { NumberFieldDecrement, NumberFieldIncrement, NumberFieldInput, NumberFieldLabel, NumberFieldRoot } from '../'
import { NumberFieldDecrement, NumberFieldIncrement, NumberFieldInput, NumberFieldRoot } from '../'
import { Icon } from '@iconify/vue'
</script>

Expand All @@ -11,8 +11,6 @@ import { Icon } from '@iconify/vue'
:min="0"
:default-value="18"
>
<NumberFieldLabel>Age</NumberFieldLabel>

<div class="mt-1 flex items-center border bg-blackA7 border-blackA9 rounded-md">
<NumberFieldDecrement class="p-2 disabled:opacity-20">
<Icon icon="radix-icons:minus" />
Expand Down
7 changes: 3 additions & 4 deletions packages/radix-vue/src/NumberField/story/_NumberField.vue
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<script setup lang="ts">
import type { NumberFieldRootProps } from '../'
import { NumberFieldDecrement, NumberFieldIncrement, NumberFieldInput, NumberFieldLabel, NumberFieldRoot } from '../'
import { NumberFieldDecrement, NumberFieldIncrement, NumberFieldInput, NumberFieldRoot } from '../'
import { Icon } from '@iconify/vue'
const props = defineProps<NumberFieldRootProps>()
Expand All @@ -11,10 +11,9 @@ const props = defineProps<NumberFieldRootProps>()
data-testid="root"
class="text-sm flex items-center border bg-blackA7 border-blackA9 rounded-md text-white"
v-bind="props"
id="number-field"
>
<NumberFieldLabel data-testid="label">
Number
</NumberFieldLabel>
<label for="number-field" data-testid="label">Number Field</label>
<NumberFieldDecrement class="p-2" data-testid="decrement">
<Icon icon="radix-icons:minus" />
</NumberFieldDecrement>
Expand Down

0 comments on commit 663d102

Please sign in to comment.