diff --git a/.changeset/fast-beds-crash.md b/.changeset/fast-beds-crash.md new file mode 100644 index 00000000000..6bfd32c7227 --- /dev/null +++ b/.changeset/fast-beds-crash.md @@ -0,0 +1,5 @@ +--- +'@kaizen/components': patch +--- + +Update ListBox focus management to check for stable Y position before refocusing to first element diff --git a/packages/components/src/Filter/FilterSelect/_docs/FilterSelect.stories.tsx b/packages/components/src/Filter/FilterSelect/_docs/FilterSelect.stories.tsx index acfd1145e5c..5d57f79cd00 100644 --- a/packages/components/src/Filter/FilterSelect/_docs/FilterSelect.stories.tsx +++ b/packages/components/src/Filter/FilterSelect/_docs/FilterSelect.stories.tsx @@ -2,6 +2,7 @@ import React, { useState } from 'react' import { type Meta, type StoryObj } from '@storybook/react' import { fn } from '@storybook/test' import { renderTriggerControls } from '~components/Filter/_docs/controls/renderTriggerControls' +import { Well } from '~components/Well' import { FilterButton } from '../../FilterButton' import { FilterSelect } from '../FilterSelect' import { type SelectOption } from '../types' @@ -100,3 +101,44 @@ export const AdditionalProperties: Story = { }, name: 'Additional option properties', } + +/** + * Extend the option type to have additional properties to use for rendering. + */ +export const FilterSelectBelowPageContent: Story = { + render: () => { + const [isOpen, setIsOpen] = useState(false) + + return ( +
+ + Page content above the FilterSelect + + } + items={groupedMockItems} + > + {({ items }): JSX.Element[] => + items.map((item) => { + if (item.type === 'item') { + return ( + + ) + } + return + }) + } + +
+ ) + }, + name: 'FilterSelect below page content', +} diff --git a/packages/components/src/__rc__/Select/Select.spec.tsx b/packages/components/src/__rc__/Select/Select.spec.tsx index 1a89f8f0e79..db1a0bc4517 100644 --- a/packages/components/src/__rc__/Select/Select.spec.tsx +++ b/packages/components/src/__rc__/Select/Select.spec.tsx @@ -188,14 +188,24 @@ describe('