From 645730a6e68899cf219ee3f97a9d66949bdaa3f2 Mon Sep 17 00:00:00 2001 From: David Wiese <21321101+davidwiese@users.noreply.github.com> Date: Tue, 26 Mar 2024 11:05:39 -0700 Subject: [PATCH] Remove `back` button from normal keyboard navigation flow --- .../src/components-layout/FlowNavigation.tsx | 19 +++++- .../src/components/Button.tsx | 66 +++++++++++-------- 2 files changed, 57 insertions(+), 28 deletions(-) diff --git a/products/statement-generator/src/components-layout/FlowNavigation.tsx b/products/statement-generator/src/components-layout/FlowNavigation.tsx index 5f7b2053..2035c248 100644 --- a/products/statement-generator/src/components-layout/FlowNavigation.tsx +++ b/products/statement-generator/src/components-layout/FlowNavigation.tsx @@ -1,4 +1,4 @@ -import React, { useContext } from 'react'; +import React, { useContext, useRef } from 'react'; import { makeStyles, createStyles } from '@material-ui/core'; import FormStateContext from 'contexts/FormStateContext'; @@ -41,6 +41,9 @@ export default function FlowNavigation({ const { goNextStep, goBackStep } = useContext(FormStateContext); const { appTheme } = useContext(RoutingContext); + const backButtonRef = useRef(null); + const nextButtonRef = useRef(null); + const utilityClasses = useUtilityStyles({ pageTheme: appTheme }); const classes = useStyles(); @@ -63,11 +66,22 @@ export default function FlowNavigation({ } }; + const handleNextButtonKeyDown = ( + event: React.KeyboardEvent + ) => { + if (event.shiftKey && event.key === 'Tab') { + event.preventDefault(); + backButtonRef.current?.focus(); + } + }; + return (
{showBack && ( - ); -}; +const ButtonComponent = forwardRef( + ( + { + className = '', + theme, + hasBackArrow, + hasForwardArrow, + disabled = false, + icon, + buttonText, + onClick, + tabIndex, + onKeyDown, + }, + ref + ) => { + const styleProps = { theme, hasBackArrow, hasForwardArrow }; + const classes = useStyles(styleProps); + return ( + + ); + } +); interface ILinkButtonComponent { className?: string;