From 8df31bf2959ba825da4ae0e845a55c5cea7c0c8c Mon Sep 17 00:00:00 2001 From: matthias Date: Mon, 20 Jan 2025 14:35:06 +0100 Subject: [PATCH 1/3] feat: adapt animation behavior --- .../core/src/components/select/select.tsx | 9 ++-- .../src/components/select/test/select.ct.ts | 46 +++++++++++++++++++ 2 files changed, 50 insertions(+), 5 deletions(-) diff --git a/packages/core/src/components/select/select.tsx b/packages/core/src/components/select/select.tsx index ee9c338488..605a3f981a 100644 --- a/packages/core/src/components/select/select.tsx +++ b/packages/core/src/components/select/select.tsx @@ -561,12 +561,11 @@ export class Select implements IxInputFieldComponent { const trimmedInput = this.inputFilterText.trim(); const itemLabel = (el as HTMLIxSelectItemElement)?.label; + const item = this.itemExists(trimmedInput); - if ( - this.editable && - !this.itemExists(trimmedInput) && - !this.itemExists(itemLabel) - ) { + if (item) { + this.itemClick(item.value); + } else if (this.editable && !this.itemExists(itemLabel)) { const defaultPrevented = this.emitAddItem(trimmedInput); if (defaultPrevented) { return; diff --git a/packages/core/src/components/select/test/select.ct.ts b/packages/core/src/components/select/test/select.ct.ts index 99f2000744..b4327aa73a 100644 --- a/packages/core/src/components/select/test/select.ct.ts +++ b/packages/core/src/components/select/test/select.ct.ts @@ -505,3 +505,49 @@ test('async set content and check input value', async ({ mount, page }) => { const input = page.locator('input'); await expect(input).toHaveValue('Item 1'); }); + +test.describe('Enter selection with non-existing and existing items', () => { + test('editable', async ({ mount, page }) => { + await mount(` + + Test + Test + + `); + + const selectElement = page.locator('ix-select'); + const input = selectElement.locator('input'); + + await input.fill('Item 1'); + await page.keyboard.press('Enter'); + + await expect(input).toHaveValue('Item 1'); + + await input.fill('Item 3'); + await page.keyboard.press('Enter'); + + await expect(input).toHaveValue('Item 3'); + }); + + test('non-editable', async ({ mount, page }) => { + await mount(` + + Test + Test + + `); + + const selectElement = page.locator('ix-select'); + const input = selectElement.locator('input'); + + await input.fill('Item 1'); + await page.keyboard.press('Enter'); + + await expect(input).toHaveValue('Item 1'); + + await input.fill('Item 3'); + await page.keyboard.press('Enter'); + + await expect(input).toHaveValue('Item 1'); + }); +}); From aea2b2ca2831aa24f7fe557826d603a577f3a767 Mon Sep 17 00:00:00 2001 From: matthias Date: Tue, 21 Jan 2025 08:55:56 +0100 Subject: [PATCH 2/3] chore: changeset, fix: strict typing --- .changeset/dirty-garlics-unite.md | 5 +++++ packages/core/src/components/select/select.tsx | 6 +++++- 2 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 .changeset/dirty-garlics-unite.md diff --git a/.changeset/dirty-garlics-unite.md b/.changeset/dirty-garlics-unite.md new file mode 100644 index 0000000000..c54f2e1160 --- /dev/null +++ b/.changeset/dirty-garlics-unite.md @@ -0,0 +1,5 @@ +--- +'@siemens/ix': patch +--- + +fix `ix-select` to correctly select known items in ediable mode on enter navigation diff --git a/packages/core/src/components/select/select.tsx b/packages/core/src/components/select/select.tsx index 605a3f981a..e2bbfb814b 100644 --- a/packages/core/src/components/select/select.tsx +++ b/packages/core/src/components/select/select.tsx @@ -487,7 +487,11 @@ export class Select implements IxInputFieldComponent { } componentDidRender(): void { - if (!this.dropdownShow || this.arrowFocusController) { + if ( + !this.dropdownShow || + this.arrowFocusController || + !this.dropdownElement + ) { return; } From 64d06e313c9fed46c46e5f3c3ef6b853cca830bf Mon Sep 17 00:00:00 2001 From: matthias Date: Tue, 28 Jan 2025 13:32:39 +0100 Subject: [PATCH 3/3] fix: improve message --- .changeset/dirty-garlics-unite.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/dirty-garlics-unite.md b/.changeset/dirty-garlics-unite.md index c54f2e1160..08a3074f02 100644 --- a/.changeset/dirty-garlics-unite.md +++ b/.changeset/dirty-garlics-unite.md @@ -2,4 +2,4 @@ '@siemens/ix': patch --- -fix `ix-select` to correctly select known items in ediable mode on enter navigation +Fix `ix-select` in editable mode to correctly select a known item when confirmed with Enter.