From ecc21a338375b5513a698cb27bd42b2bfd024203 Mon Sep 17 00:00:00 2001 From: Xon <635541+Xon@users.noreply.github.com> Date: Thu, 5 Sep 2024 12:45:58 +0800 Subject: [PATCH] Fix regression of choices without groups where not rendered when groups where present --- src/scripts/choices.ts | 7 +++++++ test-e2e/tests/select-multiple.spec.ts | 3 ++- test-e2e/tests/select-one.spec.ts | 3 ++- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/scripts/choices.ts b/src/scripts/choices.ts index 37a22b47..45a8bc4b 100644 --- a/src/scripts/choices.ts +++ b/src/scripts/choices.ts @@ -996,6 +996,13 @@ class Choices { if (config.shouldSort) { activeGroups.sort(config.sorter); } + // render Choices without group first, regardless of sort, otherwise they won't be distinguishable + // from the last group + renderChoices( + activeChoices.filter((choice) => !choice.placeholder && !choice.group), + false, + undefined, + ); activeGroups.forEach((group) => { const groupChoices = renderableChoices(group.choices); diff --git a/test-e2e/tests/select-multiple.spec.ts b/test-e2e/tests/select-multiple.spec.ts index 498eaba4..3b4b4226 100644 --- a/test-e2e/tests/select-multiple.spec.ts +++ b/test-e2e/tests/select-multiple.spec.ts @@ -961,7 +961,8 @@ describe(`Choices - select multiple`, () => { await suite.group.locator('.destroy').click({ force: true }); await suite.advanceClock(); - await expect(suite.group.locator('select > option')).toHaveCount(3); + await expect(suite.group.locator('select > optgroup > option')).toHaveCount(1); + await expect(suite.group.locator('select > option')).toHaveCount(2); await suite.group.locator('.init').click({ force: true }); await suite.advanceClock(); diff --git a/test-e2e/tests/select-one.spec.ts b/test-e2e/tests/select-one.spec.ts index 2f2ffaf3..0eee0127 100644 --- a/test-e2e/tests/select-one.spec.ts +++ b/test-e2e/tests/select-one.spec.ts @@ -835,7 +835,8 @@ describe(`Choices - select one`, () => { await suite.group.locator('.destroy').click({ force: true }); await suite.advanceClock(); - await expect(suite.group.locator('select > option')).toHaveCount(3); + await expect(suite.group.locator('select > optgroup > option')).toHaveCount(1); + await expect(suite.group.locator('select > option')).toHaveCount(2); await suite.group.locator('.init').click({ force: true }); await suite.advanceClock();