[967093][Screen Readers- CosmosDB – Notification] Screen reader does not pass the combo-box list information (#329)

* ‘Bug fix: Screen reader does not pass the combo-box list information under notification field.’

* ‘update for comments’

* ‘load path refator’
This commit is contained in:
Chris-MS-896 2020-11-30 14:33:18 -06:00 committed by GitHub
parent 28899f63d7
commit b784ac0f86
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 57 additions and 50 deletions

View File

@ -99,7 +99,22 @@
.notificationConsoleControls {
padding: @MediumSpace;
margin-left:@DefaultSpace;
display: flex;
align-items: center;
.ms-Dropdown-container {
display: flex;
.ms-Dropdown-title {
height: 25px;
line-height: 25px;
}
.ms-Dropdown {
min-width: 110px;
margin-left: 10px;
height: 25px;
line-height: 25px;
}
}
#consoleFilterLabel {
padding: 4px;
}
@ -107,6 +122,7 @@
.consoleSplitter {
border-left: 1px solid @BaseMedium;
margin: @MediumSpace;
height: 20px;
}
.clearNotificationsButton {

View File

@ -5,7 +5,7 @@
import * as React from "react";
import { ClientDefaults, KeyCodes } from "../../../Common/Constants";
import AnimateHeight from "react-animate-height";
import { Dropdown, IDropdownOption } from "office-ui-fabric-react";
import LoadingIcon from "../../../../images/loading.svg";
import ErrorBlackIcon from "../../../../images/error_black.svg";
import infoBubbleIcon from "../../../../images/info-bubble-9x9.svg";
@ -53,7 +53,12 @@ export class NotificationConsoleComponent extends React.Component<
NotificationConsoleComponentState
> {
private static readonly transitionDurationMs = 200;
private static readonly FilterOptions = ["All", "In Progress", "Info", "Error"];
private static readonly FilterOptions = [
{ key: "All", text: "All" },
{ key: "In Progress", text: "In progress" },
{ key: "Info", text: "Info" },
{ key: "Error", text: "Error" }
];
private headerTimeoutId: number;
private prevHeaderStatus: string;
private consoleHeaderElement: HTMLElement;
@ -62,7 +67,7 @@ export class NotificationConsoleComponent extends React.Component<
super(props);
this.state = {
headerStatus: "",
selectedFilter: NotificationConsoleComponent.FilterOptions[0],
selectedFilter: NotificationConsoleComponent.FilterOptions[0].key || "",
isExpanded: props.isConsoleExpanded
};
this.prevHeaderStatus = null;
@ -150,20 +155,15 @@ export class NotificationConsoleComponent extends React.Component<
>
<div className="notificationConsoleContents">
<div className="notificationConsoleControls">
<label id="consoleFilterLabel">Filter</label>
<select
aria-labelledby="consoleFilterLabel"
<Dropdown
label="Filter:"
role="combobox"
aria-label={this.state.selectedFilter}
value={this.state.selectedFilter}
selectedKey={this.state.selectedFilter}
options={NotificationConsoleComponent.FilterOptions}
onChange={this.onFilterSelected.bind(this)}
>
{NotificationConsoleComponent.FilterOptions.map((value: string) => (
<option value={value} key={value}>
{value}
</option>
))}
</select>
aria-labelledby="consoleFilterLabel"
aria-label={this.state.selectedFilter}
/>
<span className="consoleSplitter" />
<span
className="clearNotificationsButton"
@ -220,8 +220,8 @@ export class NotificationConsoleComponent extends React.Component<
));
}
private onFilterSelected(event: React.ChangeEvent<HTMLSelectElement>): void {
this.setState({ selectedFilter: event.target.value });
private onFilterSelected(event: React.ChangeEvent<HTMLSelectElement>, option: IDropdownOption): void {
this.setState({ selectedFilter: String(option.key) });
}
private getFilteredConsoleData(): ConsoleData[] {

View File

@ -110,43 +110,34 @@ exports[`NotificationConsoleComponent renders the console (expanded) 1`] = `
<div
className="notificationConsoleControls"
>
<label
id="consoleFilterLabel"
>
Filter
</label>
<select
<StyledWithResponsiveMode
aria-label="All"
aria-labelledby="consoleFilterLabel"
label="Filter:"
onChange={[Function]}
options={
Array [
Object {
"key": "All",
"text": "All",
},
Object {
"key": "In Progress",
"text": "In progress",
},
Object {
"key": "Info",
"text": "Info",
},
Object {
"key": "Error",
"text": "Error",
},
]
}
role="combobox"
value="All"
>
<option
key="All"
value="All"
>
All
</option>
<option
key="In Progress"
value="In Progress"
>
In Progress
</option>
<option
key="Info"
value="Info"
>
Info
</option>
<option
key="Error"
value="Error"
>
Error
</option>
</select>
selectedKey="All"
/>
<span
className="consoleSplitter"
/>