accessability toggle button

Summary:
Should be more discoverable

changelog: UIDebugger accessibility mode for iOS launched, look for icon to the right of the search bar

Reviewed By: zats

Differential Revision: D49547952

fbshipit-source-id: 3befdffedb34907d9824bb66b86e20fd4a1a42ff
This commit is contained in:
Luke De Feo
2023-09-25 02:02:26 -07:00
committed by Facebook GitHub Bot
parent 10d5a2933a
commit a4933373b5

View File

@@ -18,22 +18,20 @@ import {
Space, Space,
Switch, Switch,
Badge, Badge,
Dropdown,
} from 'antd'; } from 'antd';
import {Glyph} from 'flipper';
import { import {
EyeOutlined, EyeOutlined,
PauseCircleOutlined, PauseCircleOutlined,
AppstoreOutlined,
PlayCircleOutlined, PlayCircleOutlined,
SearchOutlined, SearchOutlined,
} from '@ant-design/icons'; } from '@ant-design/icons';
import {usePlugin, useValue, Layout} from 'flipper-plugin'; import {usePlugin, useValue, Layout, theme} from 'flipper-plugin';
import {FrameworkEventMetadata, FrameworkEventType} from '../../ClientTypes'; import {FrameworkEventMetadata, FrameworkEventType} from '../../ClientTypes';
import { import {
buildTreeSelectData, buildTreeSelectData,
FrameworkEventsTreeSelect, FrameworkEventsTreeSelect,
} from '../shared/FrameworkEventsTreeSelect'; } from '../shared/FrameworkEventsTreeSelect';
import {TraversalMode} from '../../DesktopTypes';
export const TreeControls: React.FC = () => { export const TreeControls: React.FC = () => {
const instance = usePlugin(plugin); const instance = usePlugin(plugin);
@@ -56,43 +54,11 @@ export const TreeControls: React.FC = () => {
const supportedTraversalModes = useValue( const supportedTraversalModes = useValue(
instance.uiState.supportedTraversalModes, instance.uiState.supportedTraversalModes,
); );
const labelForMode = (mode: TraversalMode) => {
switch (mode) {
case 'view-hierarchy':
return 'UI Hierarchy';
case 'accessibility-hierarchy':
return 'Accessibility Hierarchy';
}
};
const isConnected = useValue(instance.uiState.isConnected); const isConnected = useValue(instance.uiState.isConnected);
const menus = supportedTraversalModes.map((mode) => ({
key: mode,
label: labelForMode(mode),
}));
return ( return (
<Layout.Horizontal gap="medium" pad="medium"> <Layout.Horizontal gap="medium" pad="medium">
{supportedTraversalModes.length > 1 ? (
<Dropdown
disabled={!isConnected}
menu={{
selectable: true,
selectedKeys: [currentTraversalMode],
items: menus,
onSelect: async (event) => {
const mode = event.selectedKeys[0] as TraversalMode;
instance.uiActions.onSetTraversalMode(mode); // update UI
},
}}>
<Tooltip title={isConnected ? 'Debugger Mode' : 'App disconnected'}>
<Button disabled={!isConnected} shape="circle">
<AppstoreOutlined />
</Button>
</Tooltip>
</Dropdown>
) : null}
<Input <Input
value={searchTerm} value={searchTerm}
onChange={(e) => { onChange={(e) => {
@@ -111,6 +77,33 @@ export const TreeControls: React.FC = () => {
{isPaused ? <PlayCircleOutlined /> : <PauseCircleOutlined />} {isPaused ? <PlayCircleOutlined /> : <PauseCircleOutlined />}
</Tooltip> </Tooltip>
}></Button> }></Button>
{supportedTraversalModes.length > 1 &&
supportedTraversalModes.includes('accessibility-hierarchy') && (
<Tooltip title="Accessibility mode">
<Button
disabled={!isConnected}
shape="circle"
onClick={() => {
if (currentTraversalMode === 'accessibility-hierarchy') {
instance.uiActions.onSetTraversalMode('view-hierarchy');
} else {
instance.uiActions.onSetTraversalMode(
'accessibility-hierarchy',
);
}
}}>
<Glyph
name={'accessibility'}
size={16}
color={
currentTraversalMode === 'accessibility-hierarchy'
? theme.primaryColor
: theme.textColorPrimary
}
/>
</Button>
</Tooltip>
)}
{frameworkEventMonitoring.size > 0 && ( {frameworkEventMonitoring.size > 0 && (
<> <>
<Badge <Badge