diff --git a/packages/redux-devtools-rtk-query-monitor/src/components/QueryForm.tsx b/packages/redux-devtools-rtk-query-monitor/src/components/QueryForm.tsx index 917aebe1..d0996c11 100644 --- a/packages/redux-devtools-rtk-query-monitor/src/components/QueryForm.tsx +++ b/packages/redux-devtools-rtk-query-monitor/src/components/QueryForm.tsx @@ -127,6 +127,7 @@ export class QueryForm extends React.PureComponent< {({ styling, base16Theme }) => { return (
{ selectFormattedActions: Selector< AnyAction[], @@ -74,6 +82,7 @@ export class QueryPreviewActions extends PureComponent return ( { shouldExpandApiStateNode = ( keyPath: (string | number)[], @@ -33,7 +40,7 @@ export class QueryPreviewApi extends PureComponent { return ( {({ styling }) => ( -
+

{apiState.config.reducerPath}

State} diff --git a/packages/redux-devtools-rtk-query-monitor/src/components/QueryPreviewData.tsx b/packages/redux-devtools-rtk-query-monitor/src/components/QueryPreviewData.tsx index 33dfd0ab..cab37563 100644 --- a/packages/redux-devtools-rtk-query-monitor/src/components/QueryPreviewData.tsx +++ b/packages/redux-devtools-rtk-query-monitor/src/components/QueryPreviewData.tsx @@ -1,20 +1,26 @@ import React, { ReactNode, PureComponent } from 'react'; -import { RtkResourceInfo } from '../types'; -import { TreeView } from './TreeView'; +import { QueryPreviewTabs, RtkResourceInfo } from '../types'; +import { renderTabPanelButtonId, renderTabPanelId } from '../utils/a11y'; +import { TreeView, TreeViewProps } from './TreeView'; export interface QueryPreviewDataProps { data: RtkResourceInfo['state']['data']; isWideLayout: boolean; } + +const rootProps: TreeViewProps['rootProps'] = { + 'aria-labelledby': renderTabPanelButtonId(QueryPreviewTabs.data), + id: renderTabPanelId(QueryPreviewTabs.data), + role: 'tabpanel', +}; + export class QueryPreviewData extends PureComponent { shouldExpandNode = ( keyPath: (string | number)[], value: unknown, layer: number ): boolean => { - const lastKey = keyPath[keyPath.length - 1]; - - return layer <= 1 && lastKey !== 'query' && lastKey !== 'mutation'; + return layer <= 1; }; render(): ReactNode { @@ -22,6 +28,7 @@ export class QueryPreviewData extends PureComponent { return (
{tabs.map((tab) => ( -
this.handleTabClick(tab)} key={tab.value} {...styling( @@ -42,7 +47,7 @@ export class QueryPreviewHeader extends React.Component {renderTabLabel ? renderTabLabel(tab) : tab.label} -
+ ))}
diff --git a/packages/redux-devtools-rtk-query-monitor/src/components/QueryPreviewInfo.tsx b/packages/redux-devtools-rtk-query-monitor/src/components/QueryPreviewInfo.tsx index f2bfff3a..cbd15a7b 100644 --- a/packages/redux-devtools-rtk-query-monitor/src/components/QueryPreviewInfo.tsx +++ b/packages/redux-devtools-rtk-query-monitor/src/components/QueryPreviewInfo.tsx @@ -1,11 +1,12 @@ import { createSelector, Selector } from '@reduxjs/toolkit'; import { QueryStatus } from '@reduxjs/toolkit/dist/query'; import React, { ReactNode, PureComponent } from 'react'; -import { RtkResourceInfo, RTKStatusFlags } from '../types'; +import { QueryPreviewTabs, RtkResourceInfo, RTKStatusFlags } from '../types'; +import { renderTabPanelButtonId, renderTabPanelId } from '../utils/a11y'; import { formatMs } from '../utils/formatters'; import { identity } from '../utils/object'; import { getQueryStatusFlags } from '../utils/rtk-query'; -import { TreeView } from './TreeView'; +import { TreeView, TreeViewProps } from './TreeView'; type QueryTimings = { startedAt: string; @@ -23,6 +24,12 @@ type FormattedQuery = { | { query: RtkResourceInfo['state'] } ); +const rootProps: TreeViewProps['rootProps'] = { + 'aria-labelledby': renderTabPanelButtonId(QueryPreviewTabs.queryinfo), + id: renderTabPanelId(QueryPreviewTabs.queryinfo), + role: 'tabpanel', +}; + export interface QueryPreviewInfoProps { resInfo: RtkResourceInfo; isWideLayout: boolean; @@ -97,6 +104,7 @@ export class QueryPreviewInfo extends PureComponent { return ( + ); } } diff --git a/packages/redux-devtools-rtk-query-monitor/src/components/QueryPreviewTags.tsx b/packages/redux-devtools-rtk-query-monitor/src/components/QueryPreviewTags.tsx index ba576d78..3b19729a 100644 --- a/packages/redux-devtools-rtk-query-monitor/src/components/QueryPreviewTags.tsx +++ b/packages/redux-devtools-rtk-query-monitor/src/components/QueryPreviewTags.tsx @@ -1,11 +1,18 @@ import React, { ReactNode, PureComponent } from 'react'; -import { RtkQueryTag } from '../types'; -import { TreeView } from './TreeView'; +import { QueryPreviewTabs, RtkQueryTag } from '../types'; +import { renderTabPanelButtonId, renderTabPanelId } from '../utils/a11y'; +import { TreeView, TreeViewProps } from './TreeView'; interface QueryPreviewTagsState { data: { tags: RtkQueryTag[] }; } +const rootProps: TreeViewProps['rootProps'] = { + 'aria-labelledby': renderTabPanelButtonId(QueryPreviewTabs.queryTags), + id: renderTabPanelId(QueryPreviewTabs.queryTags), + role: 'tabpanel', +}; + export interface QueryPreviewTagsProps { tags: RtkQueryTag[]; isWideLayout: boolean; @@ -26,6 +33,8 @@ export class QueryPreviewTags extends PureComponent< render(): ReactNode { const { isWideLayout, tags } = this.props; - return ; + return ( + + ); } } diff --git a/packages/redux-devtools-rtk-query-monitor/src/components/TreeView.tsx b/packages/redux-devtools-rtk-query-monitor/src/components/TreeView.tsx index d02c0349..091f18f2 100644 --- a/packages/redux-devtools-rtk-query-monitor/src/components/TreeView.tsx +++ b/packages/redux-devtools-rtk-query-monitor/src/components/TreeView.tsx @@ -22,6 +22,9 @@ export interface TreeViewProps before?: ReactNode; after?: ReactNode; children?: ReactNode; + rootProps?: Partial< + Omit, 'className' | 'style'> + >; } export class TreeView extends React.PureComponent { @@ -80,13 +83,14 @@ export class TreeView extends React.PureComponent { keyPath, shouldExpandNode, hideRoot, + rootProps, } = this.props; return ( {({ styling, invertTheme, base16Theme }) => { return ( -
+
{before} { padding: '0 8px', display: 'inline-flex', alignItems: 'center', + boxShadow: 'none', + outline: 'none', color: map.TEXT_COLOR, 'border-style': 'solid', 'border-width': '1px', diff --git a/packages/redux-devtools-rtk-query-monitor/src/utils/a11y.ts b/packages/redux-devtools-rtk-query-monitor/src/utils/a11y.ts new file mode 100644 index 00000000..e92a799a --- /dev/null +++ b/packages/redux-devtools-rtk-query-monitor/src/utils/a11y.ts @@ -0,0 +1,9 @@ +import { QueryPreviewTabs } from '../types'; + +export function renderTabPanelId(value: QueryPreviewTabs): string { + return `rtk-query-monitor-tab-panel-${value}`; +} + +export function renderTabPanelButtonId(value: QueryPreviewTabs): string { + return renderTabPanelId(value) + '-button'; +}