diff --git a/packages/terra-form-select/CHANGELOG.md b/packages/terra-form-select/CHANGELOG.md index 83458066649..5212402059d 100644 --- a/packages/terra-form-select/CHANGELOG.md +++ b/packages/terra-form-select/CHANGELOG.md @@ -2,6 +2,9 @@ ## Unreleased +* Fixed + * Fixed exception thrown when down arrow is pressed on a form select with no options. + ## 6.60.0 - (March 27, 2024) * Fixed diff --git a/packages/terra-form-select/src/shared/_MenuUtil.js b/packages/terra-form-select/src/shared/_MenuUtil.js index 5699941628e..ecba1aa73e5 100644 --- a/packages/terra-form-select/src/shared/_MenuUtil.js +++ b/packages/terra-form-select/src/shared/_MenuUtil.js @@ -194,6 +194,10 @@ class MenuUtil { */ static findNext(object, value) { const options = MenuUtil.flatten(object, true); + if (options.length === 0) { + return null; + } + const index = options.findIndex(({ props }) => MenuUtil.isEqual(props.value, value)); if (options.length - 1 === index) { return options[0].props.value; diff --git a/packages/terra-form-select/tests/jest/MenuUtil.test.jsx b/packages/terra-form-select/tests/jest/MenuUtil.test.jsx index bb8b9895d43..a3bc1ae33dd 100644 --- a/packages/terra-form-select/tests/jest/MenuUtil.test.jsx +++ b/packages/terra-form-select/tests/jest/MenuUtil.test.jsx @@ -323,6 +323,12 @@ describe('MenuUtil', () => { }); }); + it('should return null if there are no options', () => { + const options = []; + + expect(MenuUtil.findNext(options, null)).toBeNull(); + }); + describe('findPrevious', () => { it('should return the option after the value', () => { const options = [