From 7956ba20e9b919c485dd4559a924f1dc0ae399fb Mon Sep 17 00:00:00 2001 From: StewartMckenzie Date: Fri, 24 Jan 2025 11:25:22 -0800 Subject: [PATCH] accessibility changes --- .../console/ConsoleDataLoader.styles.ts | 9 ++++++++ .../console/ConsoleDataLoader.tsx | 21 +++++++++++++++++++ .../container-app/log-stream/LogStream.tsx | 13 ++++++++++++ 3 files changed, 43 insertions(+) diff --git a/client-react/src/pages/container-app/console/ConsoleDataLoader.styles.ts b/client-react/src/pages/container-app/console/ConsoleDataLoader.styles.ts index 938fbe3cc6..e24ab3f59d 100644 --- a/client-react/src/pages/container-app/console/ConsoleDataLoader.styles.ts +++ b/client-react/src/pages/container-app/console/ConsoleDataLoader.styles.ts @@ -1,6 +1,7 @@ import { IDialogContentStyleProps, IDialogContentStyles, IDialogFooterStyleProps, IDialogFooterStyles } from '@fluentui/react/lib/Dialog'; import { mergeStyleSets } from '@fluentui/react/lib/Styling'; import { IStyleFunctionOrObject } from '@fluentui/react/lib/Utilities'; +import { CSSProperties } from 'react'; export const consoleStyles = mergeStyleSets({ customTextField: { @@ -13,6 +14,14 @@ export const consoleStyles = mergeStyleSets({ }, }); +export const liveRegionStyle: CSSProperties = { + position: 'absolute', + left: '-9999px', + width: '1px', + height: '1px', + overflow: 'hidden', +}; + export const dialogFooterStyles = (): IStyleFunctionOrObject => { return { actions: { marginTop: '34px' }, actionsRight: { textAlign: 'left' } }; }; diff --git a/client-react/src/pages/container-app/console/ConsoleDataLoader.tsx b/client-react/src/pages/container-app/console/ConsoleDataLoader.tsx index be650dbd7b..efee382edd 100644 --- a/client-react/src/pages/container-app/console/ConsoleDataLoader.tsx +++ b/client-react/src/pages/container-app/console/ConsoleDataLoader.tsx @@ -44,6 +44,7 @@ const ConsoleDataLoader: React.FC = props => { ...(terminalRef.current.terminal.options || {}), cursorStyle: 'underline', cursorBlink: true, + screenReaderMode: true, }; resizeHandler(width, height); @@ -67,6 +68,7 @@ const ConsoleDataLoader: React.FC = props => { terminalRef.current.terminal.options = { ...(terminalRef.current.terminal.options || {}), disableStdin: true, + screenReaderMode: true, }; resizeHandler(width, height); @@ -126,6 +128,13 @@ const ConsoleDataLoader: React.FC = props => { const updateConsoleText = (text: string) => { terminalRef.current?.terminal.write(text); + const liveRegion = document.getElementById('live-region'); + if (liveRegion) { + liveRegion.textContent = `${liveRegion.textContent || ''}${text}`; + setTimeout(() => { + liveRegion.textContent = ''; + }, 1000); // Clear after 1 second + } }; const onData = (data: string) => { @@ -215,6 +224,7 @@ const ConsoleDataLoader: React.FC = props => { terminalRef.current.terminal.options = { ...(terminalRef.current.terminal.options || {}), disableStdin: false, + screenReaderMode: true, }; } } @@ -268,6 +278,17 @@ const ConsoleDataLoader: React.FC = props => { return (
+