From 3b5d5944a43d6f97ccb733fda551ac7ee23f8b4a Mon Sep 17 00:00:00 2001 From: Jason Date: Fri, 20 Sep 2024 16:00:51 -0500 Subject: [PATCH] fix a11y issue --- .../react/src/components/Drawer/index.tsx | 2 +- .../react/src/utils/getElementOrRef.test.ts | 33 +++++++++++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 packages/react/src/utils/getElementOrRef.test.ts diff --git a/packages/react/src/components/Drawer/index.tsx b/packages/react/src/components/Drawer/index.tsx index 066d27397..00cdc94bc 100644 --- a/packages/react/src/components/Drawer/index.tsx +++ b/packages/react/src/components/Drawer/index.tsx @@ -142,7 +142,7 @@ const Drawer = forwardRef( visibility: !open && !isTransitioning ? 'hidden' : undefined, ...style }} - tabIndex={-1} + tabIndex={open ? -1 : undefined} {...props} > {children} diff --git a/packages/react/src/utils/getElementOrRef.test.ts b/packages/react/src/utils/getElementOrRef.test.ts new file mode 100644 index 000000000..097f3ebfc --- /dev/null +++ b/packages/react/src/utils/getElementOrRef.test.ts @@ -0,0 +1,33 @@ +import { createRef, type MutableRefObject } from 'react'; +import getElementOrRef from './getElementOrRef'; + +test('should return element', () => { + expect(getElementOrRef(document.body)).toBe(document.body); +}); + +test('should return ref element', () => { + const ref = createRef() as MutableRefObject; + ref.current = document.body; + expect(getElementOrRef(ref)).toBe(document.body); +}); + +test('should return null when element is undefined', () => { + expect(getElementOrRef(undefined)).toBe(null); +}); + +test('should return null when ref is undefined', () => { + const ref = createRef() as MutableRefObject; + expect(getElementOrRef(ref)).toBe(null); +}); + +test('should return null when element is not instance of Element', () => { + // @ts-expect-error bad data + expect(getElementOrRef('thing')).toBe(null); +}); + +test('should return null when ref is not instance of Element', () => { + const ref = createRef() as MutableRefObject; + // @ts-expect-error bad data + ref.current = 'thing'; + expect(getElementOrRef(ref)).toBe(null); +});