From cd909ad8c7f9286e2c8b8d23a5f60c54aa66fdc4 Mon Sep 17 00:00:00 2001 From: Cameron Dutro Date: Wed, 15 Jan 2025 14:39:30 -0800 Subject: [PATCH 1/2] Avoid accessing properties of undefined in useAnnouncements --- packages/react/src/FilteredActionList/useAnnouncements.tsx | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/react/src/FilteredActionList/useAnnouncements.tsx b/packages/react/src/FilteredActionList/useAnnouncements.tsx index aa48a8a2b45..43e11c08400 100644 --- a/packages/react/src/FilteredActionList/useAnnouncements.tsx +++ b/packages/react/src/FilteredActionList/useAnnouncements.tsx @@ -4,6 +4,7 @@ import {announce} from '@primer/live-region-element' import {useEffect, useRef} from 'react' import type {FilteredActionListProps} from './FilteredActionListEntry' +import type {ItemInput} from '../deprecated/ActionList/List' // we add a delay so that it does not interrupt default screen reader announcement and queues after it const delayMs = 500 @@ -28,10 +29,10 @@ const getItemWithActiveDescendant = ( const optionElements = listElement.querySelectorAll('[role="option"]') const index = Array.from(optionElements).indexOf(activeItemElement) - const activeItem = items[index] + const activeItem = items[index] as ItemInput | undefined - const text = activeItem.text - const selected = activeItem.selected + const text = activeItem?.text + const selected = activeItem?.selected return {index, text, selected} } From 342955a688334dac83328cb8c45fc9d1bd62f9e7 Mon Sep 17 00:00:00 2001 From: Cameron Dutro Date: Wed, 15 Jan 2025 14:43:51 -0800 Subject: [PATCH 2/2] Add changeset --- .changeset/giant-bees-impress.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/giant-bees-impress.md diff --git a/.changeset/giant-bees-impress.md b/.changeset/giant-bees-impress.md new file mode 100644 index 00000000000..0b9d17e7e92 --- /dev/null +++ b/.changeset/giant-bees-impress.md @@ -0,0 +1,5 @@ +--- +"@primer/react": patch +--- + +Fix an issue in useAnnouncements.tsx causing a TypeError in production. The activeItem variable may be null.