Skip to content

Commit 7c194f8

Browse files
authored
Merge pull request #1787 from dxc-technology/gomezivann/select-fix
Fixed Assure Answers Select bug
2 parents 324b670 + 519b2a5 commit 7c194f8

File tree

2 files changed

+16
-4
lines changed

2 files changed

+16
-4
lines changed

lib/src/select/Select.test.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -299,6 +299,18 @@ describe("Select component tests", () => {
299299
await userEvent.click(getAllByRole("option")[2]);
300300
await userEvent.click(submit);
301301
});
302+
303+
test("Searching for a value with an empty list of options passed doesn't open the listbox", async () => {
304+
const { container, getByRole, queryByRole } = render(<DxcSelect label="test-select-label" options={[]} searchable />);
305+
const select = getByRole("combobox");
306+
const searchInput = container.querySelectorAll("input")[1];
307+
await userEvent.click(select);
308+
await act(async () => {
309+
userEvent.type(searchInput, "test");
310+
});
311+
expect(queryByRole("listbox")).toBeFalsy();
312+
expect(select.getAttribute("aria-expanded")).toBe("false");
313+
});
302314

303315
test("Disabled select - Cannot gain focus or open the listbox via click", async () => {
304316
const { getByRole, queryByRole } = render(

lib/src/select/Select.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ const getLastOptionIndex = (options, filteredOptions, searchable, optional, mult
4343
let last = 0;
4444
const reducer = (acc, current) => acc + current.options?.length;
4545

46-
if (searchable && filteredOptions.length > 0)
46+
if (searchable && filteredOptions?.length > 0)
4747
filteredOptions[0].options ? (last = filteredOptions.reduce(reducer, 0) - 1) : (last = filteredOptions.length - 1);
4848
else if (options?.length > 0)
4949
options[0].options ? (last = options.reduce(reducer, 0) - 1) : (last = options.length - 1);
@@ -58,11 +58,11 @@ const getSelectedOption = (value, options, multiple, optional, optionalItem) =>
5858
if (multiple) {
5959
if (options?.length > 0) {
6060
options.forEach((option) => {
61-
if (option.options) {
61+
if (option.options)
6262
option.options.forEach((singleOption) => {
6363
if (value.includes(singleOption.value) && Array.isArray(selectedOption)) selectedOption.push(singleOption);
6464
});
65-
} else if (value.includes(option.value) && Array.isArray(selectedOption)) selectedOption.push(option);
65+
else if (value.includes(option.value) && Array.isArray(selectedOption)) selectedOption.push(option);
6666
});
6767
}
6868
} else {
@@ -211,7 +211,7 @@ const DxcSelect = React.forwardRef<RefType, SelectPropsType>(
211211
if (!event.currentTarget.contains(event.relatedTarget)) searchable && selectSearchInputRef.current.focus();
212212
};
213213
const handleSelectOnBlur = (event) => {
214-
// focus leaves container (outside, not to childs)
214+
// focus leaves container (outside, not to child)
215215
if (!event.currentTarget.contains(event.relatedTarget)) {
216216
closeOptions();
217217
setSearchValue("");

0 commit comments

Comments
 (0)