diff --git a/react/features/authentication/components/web/LoginDialog.tsx b/react/features/authentication/components/web/LoginDialog.tsx index 35a0f7f15..1d531cafe 100644 --- a/react/features/authentication/components/web/LoginDialog.tsx +++ b/react/features/authentication/components/web/LoginDialog.tsx @@ -268,6 +268,7 @@ class LoginDialog extends Component { titleKey = { t('dialog.authenticationRequired') }> {
void; - id?: string; + + /** + * The id to set on the input element. + * This is required because we need it internally to tie the input to its + * info (label, error) so that screen reader users don't get lost. + */ + id: string; maxLength?: number; maxRows?: number; minRows?: number; @@ -168,7 +174,11 @@ const Input = React.forwardRef(({ return (
- {label && {label}} + {label && }
{icon && (({ className = { cx(styles.input, isMobile && 'is-mobile', error && 'error', clearable && styles.clearableInput, icon && 'icon-input') } disabled = { disabled } - { ...(id ? { id } : {}) } + id = { id } maxLength = { maxLength } maxRows = { maxRows } minRows = { minRows } @@ -198,6 +208,7 @@ const Input = React.forwardRef(({ value = { value } /> ) : ( (({ error && 'error', clearable && styles.clearableInput, icon && 'icon-input') } data-testid = { testId } disabled = { disabled } - { ...(id ? { id } : {}) } + id = { id } maxLength = { maxLength } name = { name } onChange = { handleChange } @@ -225,7 +236,9 @@ const Input = React.forwardRef(({ }
{bottomLabel && ( - + {bottomLabel} )} diff --git a/react/features/chat/components/web/ChatInput.tsx b/react/features/chat/components/web/ChatInput.tsx index 2a8b40923..5919c0333 100644 --- a/react/features/chat/components/web/ChatInput.tsx +++ b/react/features/chat/components/web/ChatInput.tsx @@ -118,6 +118,7 @@ class ChatInput extends Component { className = 'chat-input' icon = { this.props._areSmileysDisabled ? undefined : IconFaceSmile } iconClick = { this._toggleSmileysPanel } + id = 'chat-input-messagebox' maxRows = { 5 } onChange = { this._onMessageChange } onKeyPress = { this._onDetectSubmit } diff --git a/react/features/display-name/components/web/DisplayNamePrompt.tsx b/react/features/display-name/components/web/DisplayNamePrompt.tsx index 1bbd5c659..8e8943024 100644 --- a/react/features/display-name/components/web/DisplayNamePrompt.tsx +++ b/react/features/display-name/components/web/DisplayNamePrompt.tsx @@ -58,6 +58,7 @@ class DisplayNamePrompt extends AbstractDisplayNamePrompt { diff --git a/react/features/gifs/components/web/GifsMenu.tsx b/react/features/gifs/components/web/GifsMenu.tsx index 8c3580fb8..19ad213ac 100644 --- a/react/features/gifs/components/web/GifsMenu.tsx +++ b/react/features/gifs/components/web/GifsMenu.tsx @@ -196,6 +196,7 @@ function GifsMenu() { { return ( diff --git a/react/features/polls/components/web/PollCreate.tsx b/react/features/polls/components/web/PollCreate.tsx index 84870af9c..a76952875 100644 --- a/react/features/polls/components/web/PollCreate.tsx +++ b/react/features/polls/components/web/PollCreate.tsx @@ -191,6 +191,7 @@ const PollCreate = ({
setAnswer(i, val) } diff --git a/react/features/prejoin/components/web/Prejoin.tsx b/react/features/prejoin/components/web/Prejoin.tsx index 466c02be0..6679f708a 100644 --- a/react/features/prejoin/components/web/Prejoin.tsx +++ b/react/features/prejoin/components/web/Prejoin.tsx @@ -354,6 +354,7 @@ class Prejoin extends Component { autoFocus = { true } className = 'prejoin-input' error = { showErrorOnJoin } + id = 'premeeting-name-input' onChange = { _setName } onKeyPress = { _onInputKeyPress } placeholder = { t('dialog.enterDisplayName') } diff --git a/react/features/recording/components/LiveStream/web/StreamKeyForm.js b/react/features/recording/components/LiveStream/web/StreamKeyForm.js index 708cd3feb..4398eb3c3 100644 --- a/react/features/recording/components/LiveStream/web/StreamKeyForm.js +++ b/react/features/recording/components/LiveStream/web/StreamKeyForm.js @@ -43,6 +43,7 @@ class StreamKeyForm extends AbstractStreamKeyForm {
{ { autoFocus = { true } className = 'dialog-bottom-margin' error = { error } + id = 'shared-video-url-input' label = { t('dialog.videoLink') } name = 'sharedVideoUrl' onChange = { this._onChange }