-
Notifications
You must be signed in to change notification settings - Fork 1.2k
fix(#1231) fix(#1070) A11y: add minimum/maximum labels, use output for displayValue #1148
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
2ff4fdb
b84c6f9
20dab74
c1ca2a4
5523a4c
5f68a43
bd6db84
6175bbd
bc8e421
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
{ | ||
"maximum": "الحد الأقصى", | ||
"minimum": "الحد الأدنى" | ||
} | ||
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
{ | ||
"maximum": "Максимум", | ||
"minimum": "Минимум" | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
{ | ||
"maximum": "Maximum", | ||
"minimum": "Minimální" | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
{ | ||
"maximum": "Maksimum", | ||
"minimum": "Minimum" | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
{ | ||
"maximum": "Maximal", | ||
"minimum": "Minimum" | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
{ | ||
"maximum": "Το μέγιστο", | ||
"minimum": "Ελάχιστο" | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
{ | ||
"minimum": "Minimum", | ||
"maximum": "Maximum" | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
{ | ||
"maximum": "Máximo", | ||
"minimum": "Mínimo" | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
{ | ||
"maximum": "Maksimaalne", | ||
"minimum": "Minimaalne" | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
{ | ||
"maximum": "Maksimi", | ||
"minimum": "Minimi" | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
{ | ||
"maximum": "Maximum", | ||
"minimum": "Minimum" | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
{ | ||
"maximum": "מַקסִימוּם", | ||
"minimum": "מִינִימוּם" | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
{ | ||
"maximum": "Maximális", | ||
"minimum": "Minimális" | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
{ | ||
"maximum": "Massimo", | ||
"minimum": "Minimo" | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
{ | ||
"maximum": "最大", | ||
"minimum": "最小" | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
{ | ||
"maximum": "최대", | ||
"minimum": "최소" | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
{ | ||
"maximum": "Maksimalus", | ||
"minimum": "Minimumas" | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
{ | ||
"maximum": "Maksimums", | ||
"minimum": "Minimālais" | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
{ | ||
"maximum": "Maksimum", | ||
"minimum": "Minimum" | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
{ | ||
"maximum": "Maximaal", | ||
"minimum": "Minimum" | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
{ | ||
"maximum": "Maksimum", | ||
"minimum": "Minimum" | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
{ | ||
"maximum": "Máximo", | ||
"minimum": "Mínimo" | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
{ | ||
"maximum": "Maxim", | ||
"minimum": "Minim" | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
{ | ||
"maximum": "Максимум", | ||
"minimum": "Минимум" | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
{ | ||
"maximum": "Maximum", | ||
"minimum": "Minimálne" | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
{ | ||
"maximum": "Največ", | ||
"minimum": "Najmanj" | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
{ | ||
"maximum": "Максимум", | ||
"minimum": "Минимум" | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
{ | ||
"maximum": "Maximal", | ||
"minimum": "Minimum" | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
{ | ||
"maximum": "Maksimum", | ||
"minimum": "Minimum" | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
{ | ||
"maximum": "Максимум", | ||
"minimum": "Мінімум" | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
{ | ||
"maximum": "最大", | ||
"minimum": "最小" | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
{ | ||
"maximum": "最大值", | ||
"minimum": "最小值" | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,11 +1,13 @@ | ||
import {clamp, focusWithoutScrolling, mergeProps, useGlobalListeners} from '@react-aria/utils'; | ||
// @ts-ignore | ||
import intlMessages from '../intl/*.json'; | ||
import React, {ChangeEvent, HTMLAttributes, useCallback, useEffect, useRef} from 'react'; | ||
import {sliderIds} from './utils'; | ||
import {SliderState} from '@react-stately/slider'; | ||
import {SliderThumbProps} from '@react-types/slider'; | ||
import {useFocusable} from '@react-aria/focus'; | ||
import {useLabel} from '@react-aria/label'; | ||
import {useLocale} from '@react-aria/i18n'; | ||
import {useLocale, useMessageFormatter} from '@react-aria/i18n'; | ||
import {useMove} from '@react-aria/interactions'; | ||
|
||
interface SliderThumbAria { | ||
|
@@ -40,9 +42,20 @@ export function useSliderThumb( | |
isDisabled, | ||
validationState, | ||
trackRef, | ||
inputRef | ||
inputRef, | ||
'aria-label': ariaLabel | ||
} = opts; | ||
|
||
// Provide minimum and maximum aria-label when there are more than one slider thumb. | ||
let formatMessage = useMessageFormatter(intlMessages); | ||
if (state.values.length === 2 && !ariaLabel) { | ||
if (index === 0) { | ||
ariaLabel = formatMessage('minimum'); | ||
} else if (index === 1) { | ||
ariaLabel = formatMessage('maximum'); | ||
} | ||
} | ||
Comment on lines
+51
to
+57
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Perhaps overkill for now, but should this account for cases that have more than 2 slider thumbs? I guess it would just need to check that Not sure if it is appropriate though, perhaps these aria messages are for range sliders only There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I'm also not sure if we should put this here as it kinda assumes that all two-thumbed sliders are range sliders. IMO the labels should go in Spectrum RangeSlider since we don't have a range specific aria hook. |
||
|
||
let isVertical = opts.orientation === 'vertical'; | ||
|
||
let {direction} = useLocale(); | ||
|
@@ -51,6 +64,7 @@ export function useSliderThumb( | |
let labelId = sliderIds.get(state); | ||
const {labelProps, fieldProps} = useLabel({ | ||
...opts, | ||
'aria-label': ariaLabel, | ||
'aria-labelledby': `${labelId} ${opts['aria-labelledby'] ?? ''}`.trim() | ||
}); | ||
|
||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I presume these translations were vetted by the localization team or came from a prior source that was vetted?