chore(Accessibility): Fix accessibility for 'Show x entries' dropdown in tables (#30818)

This commit is contained in:
Levis Mbote 2024-11-18 20:25:42 +03:00 committed by GitHub
parent c6685a706d
commit b84e5250f1
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 13 additions and 10 deletions

View File

@ -197,33 +197,36 @@ function SelectPageSize({
onChange, onChange,
}: SelectPageSizeRendererProps) { }: SelectPageSizeRendererProps) {
return ( return (
<span className="dt-select-page-size form-inline"> <span
{t('page_size.show')}{' '} className="dt-select-page-size form-inline"
role="group"
aria-label={t('Select page size')}
>
<label htmlFor="pageSizeSelect" className="sr-only">
{t('Select page size')}
</label>
{t('Show')}{' '}
<select <select
id="pageSizeSelect"
className="form-control input-sm" className="form-control input-sm"
value={current} value={current}
onBlur={() => {}}
onChange={e => { onChange={e => {
onChange(Number((e.target as HTMLSelectElement).value)); onChange(Number((e.target as HTMLSelectElement).value));
}} }}
aria-label={t('Show entries per page')}
> >
{options.map(option => { {options.map(option => {
const [size, text] = Array.isArray(option) const [size, text] = Array.isArray(option)
? option ? option
: [option, option]; : [option, option];
const sizeLabel = size === 0 ? t('all') : size;
return ( return (
<option <option key={size} value={size}>
aria-label={t('Show %s entries', sizeLabel)}
key={size}
value={size}
>
{text} {text}
</option> </option>
); );
})} })}
</select>{' '} </select>{' '}
{t('page_size.entries')} {t('entries per page')}
</span> </span>
); );
} }