Skip to content

Commit

Permalink
Merge pull request #1280 from hackforla/dev
Browse files Browse the repository at this point in the history
Dev
  • Loading branch information
sydneywalcoff authored Mar 26, 2024
2 parents 327d40d + c13877d commit 7ab721c
Show file tree
Hide file tree
Showing 2 changed files with 57 additions and 28 deletions.
Original file line number Diff line number Diff line change
@@ -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';
Expand Down Expand Up @@ -41,6 +41,9 @@ export default function FlowNavigation({
const { goNextStep, goBackStep } = useContext(FormStateContext);
const { appTheme } = useContext(RoutingContext);

const backButtonRef = useRef<HTMLButtonElement>(null);
const nextButtonRef = useRef<HTMLButtonElement>(null);

const utilityClasses = useUtilityStyles({ pageTheme: appTheme });
const classes = useStyles();

Expand All @@ -63,11 +66,22 @@ export default function FlowNavigation({
}
};

const handleNextButtonKeyDown = (
event: React.KeyboardEvent<HTMLButtonElement>
) => {
if (event.shiftKey && event.key === 'Tab') {
event.preventDefault();
backButtonRef.current?.focus();
}
};

return (
<div className={utilityClasses.buttonContainer}>
{showBack && (
<Button
ref={backButtonRef}
className={classes.buttonLeft}
tabIndex={-1}
onClick={handleBack}
disabled={isBackDisabled}
buttonText={backButtonLabel || 'BACK'}
Expand All @@ -78,8 +92,11 @@ export default function FlowNavigation({

{showNext && (
<Button
ref={nextButtonRef}
className={classes.buttonRight}
tabIndex={0}
onClick={handleNext}
onKeyDown={handleNextButtonKeyDown}
disabled={isNextDisabled}
buttonText={nextButtonLabel || 'NEXT'}
theme="dark"
Expand Down
66 changes: 39 additions & 27 deletions products/statement-generator/src/components/Button.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import React, { useContext } from 'react';
import React, { useContext, forwardRef } from 'react';
import { Link } from 'react-router-dom';
import { Button, Theme, makeStyles, createStyles } from '@material-ui/core';
import ArrowForwardIcon from '@material-ui/icons/ArrowForward';
Expand Down Expand Up @@ -133,34 +133,46 @@ interface ComponentProps {
icon?: React.ReactNode;
buttonText?: string;
onClick?: () => void;
tabIndex?: number;
onKeyDown?: (event: React.KeyboardEvent<HTMLButtonElement>) => void;
}

const ButtonComponent = ({
className = '',
theme,
hasBackArrow,
hasForwardArrow,
disabled = false,
icon,
buttonText,
onClick,
}: ComponentProps) => {
const styleProps = { theme, hasBackArrow, hasForwardArrow };
const classes = useStyles(styleProps);
return (
<Button
disabled={disabled}
type="button"
className={`${classes.root} ${className}`}
onClick={onClick}
>
{hasBackArrow && <ArrowBackIcon style={{ height: '.8em' }} />}
{icon}
{buttonText}
{hasForwardArrow && <ArrowForwardIcon style={{ height: '.8em' }} />}
</Button>
);
};
const ButtonComponent = forwardRef<HTMLButtonElement, ComponentProps>(
(
{
className = '',
theme,
hasBackArrow,
hasForwardArrow,
disabled = false,
icon,
buttonText,
onClick,
tabIndex,
onKeyDown,
},
ref
) => {
const styleProps = { theme, hasBackArrow, hasForwardArrow };
const classes = useStyles(styleProps);
return (
<Button
ref={ref}
disabled={disabled}
type="button"
className={`${classes.root} ${className}`}
onClick={onClick}
tabIndex={tabIndex}
onKeyDown={onKeyDown}
>
{hasBackArrow && <ArrowBackIcon style={{ height: '.8em' }} />}
{icon}
{buttonText}
{hasForwardArrow && <ArrowForwardIcon style={{ height: '.8em' }} />}
</Button>
);
}
);

interface ILinkButtonComponent {
className?: string;
Expand Down

0 comments on commit 7ab721c

Please sign in to comment.