From 6c8e3b789b026f0728bbe6dbb453984c1f9a2e24 Mon Sep 17 00:00:00 2001 From: Lukas Maurer Date: Wed, 17 Jul 2024 15:22:02 +0200 Subject: [PATCH] fix(core/tabs): minimize tab auto scroll distance (#1390) Co-authored-by: Andreas Berliner Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .changeset/neat-sloths-talk.md | 5 ++ packages/core/component-doc.json | 2 +- packages/core/src/components.d.ts | 2 +- .../core/src/components/tab-item/tab-item.tsx | 4 +- packages/core/src/components/tabs/tabs.tsx | 51 ++++++++++++------ .../core/src/components/tabs/test/tabs.ct.ts | 20 +++++++ .../core/src/tests/tabs/overflow/index.html | 36 ------------- packages/core/src/tests/tabs/tabs.e2e.ts | 2 +- ...-1-chromium---theme-classic-dark-linux.png | Bin 17288 -> 14440 bytes ...1-chromium---theme-classic-light-linux.png | Bin 17094 -> 14262 bytes 10 files changed, 64 insertions(+), 58 deletions(-) create mode 100644 .changeset/neat-sloths-talk.md diff --git a/.changeset/neat-sloths-talk.md b/.changeset/neat-sloths-talk.md new file mode 100644 index 0000000000..3275311a8e --- /dev/null +++ b/.changeset/neat-sloths-talk.md @@ -0,0 +1,5 @@ +--- +"@siemens/ix": patch +--- + +fix(core/tabs): minimize tab auto scroll distance diff --git a/packages/core/component-doc.json b/packages/core/component-doc.json index 5cf638e57a..40b2f14b94 100644 --- a/packages/core/component-doc.json +++ b/packages/core/component-doc.json @@ -14312,7 +14312,7 @@ "type": "number" } ], - "optional": false, + "optional": true, "required": false }, { diff --git a/packages/core/src/components.d.ts b/packages/core/src/components.d.ts index cfe3b94633..93406c06fd 100644 --- a/packages/core/src/components.d.ts +++ b/packages/core/src/components.d.ts @@ -2035,7 +2035,7 @@ export namespace Components { /** * Set counter value */ - "counter": number; + "counter"?: number; /** * Set disabled tab */ diff --git a/packages/core/src/components/tab-item/tab-item.tsx b/packages/core/src/components/tab-item/tab-item.tsx index 85116b6dad..a08f289685 100644 --- a/packages/core/src/components/tab-item/tab-item.tsx +++ b/packages/core/src/components/tab-item/tab-item.tsx @@ -47,7 +47,7 @@ export class TabItem { /** * Set counter value */ - @Prop() counter: number; + @Prop() counter?: number; /** * Set layout width style @@ -64,7 +64,7 @@ export class TabItem { * * @since 2.0.0 */ - @Event() tabClick: EventEmitter; + @Event() tabClick!: EventEmitter; private tabItemClasses(props: { selected: boolean; diff --git a/packages/core/src/components/tabs/tabs.tsx b/packages/core/src/components/tabs/tabs.tsx index 516f5ad063..abbc9de175 100644 --- a/packages/core/src/components/tabs/tabs.tsx +++ b/packages/core/src/components/tabs/tabs.tsx @@ -17,6 +17,7 @@ import { Listen, Prop, State, + Watch, } from '@stencil/core'; import { requestAnimationFrameNoNgZone } from '../utils/requestAnimationFrame'; @@ -126,7 +127,7 @@ export class Tabs { private showPreviousArrow() { try { - return this.showArrows() && this.scrollActionAmount < 0; + return this.showArrows() === true && this.scrollActionAmount < 0; } catch (error) { return false; } @@ -143,7 +144,7 @@ export class Tabs { const tabWrapperRect = tabWrapper.getBoundingClientRect(); return ( - this.showArrows() && + this.showArrows() === true && this.scrollActionAmount > (tabWrapper.scrollWidth - tabWrapperRect.width) * -1 ); @@ -153,30 +154,46 @@ export class Tabs { } private move(amount: number, click = false) { - const tabWrapper = this.getTabsWrapper(); + const tabsWrapper = this.getTabsWrapper(); + + if (!tabsWrapper) { + return; + } + + const tabsWrapperVisibleWidth = tabsWrapper.getBoundingClientRect().width; const maxScrollWidth = - (tabWrapper.scrollWidth - tabWrapper.getBoundingClientRect().width) * -1; + -this.currentScrollAmount + + tabsWrapperVisibleWidth - + tabsWrapper.scrollWidth; - amount = this.currentScrollAmount + amount; - amount = amount > 0 ? 0 : amount < maxScrollWidth ? maxScrollWidth : amount; + amount = amount < maxScrollWidth ? maxScrollWidth : amount; + amount += this.currentScrollAmount; + amount = Math.min(amount, 0); const styles = [ `transform: translateX(${amount}px);`, click ? 'transition: all ease-in-out 400ms;' : '', ].join(''); - tabWrapper.setAttribute('style', styles); + tabsWrapper.setAttribute('style', styles); if (click) this.currentScrollAmount = this.scrollActionAmount = amount; else this.scrollActionAmount = amount; } - private moveTabToView(tabIndex: number) { + @Watch('selected') + onSelectedChange(newValue: number) { if (!this.showArrows()) return; - const tab = this.getTab(tabIndex).getBoundingClientRect(); - const amount = tab.x * -1; - this.move(amount, true); + const tabRect = this.getTab(newValue).getBoundingClientRect(); + const wrapperWidth = this.getTabsWrapper()?.clientWidth; + const arrowWidth = 32; + + if (tabRect.left < arrowWidth) { + this.move(-tabRect.left + arrowWidth, true); + } else if (wrapperWidth && tabRect.right > wrapperWidth - arrowWidth) { + this.move(wrapperWidth - tabRect.right - arrowWidth, true); + } } private setSelected(index: number) { @@ -184,7 +201,7 @@ export class Tabs { } private clickTab(index: number) { - if (this.dragStop()) { + if (!this.clickAction.isClick || this.dragStop()) { return; } @@ -194,7 +211,6 @@ export class Tabs { } this.setSelected(index); - this.moveTabToView(index); } private dragStart(element: HTMLIxTabItemElement, event: MouseEvent) { @@ -210,11 +226,12 @@ export class Tabs { const mousedownPositionX = event.clientX; const move = (event: MouseEvent) => this.dragMove(event, tabPositionX, mousedownPositionX); - - window.addEventListener('mouseup', () => { + const windowClick = () => { window.removeEventListener('mousemove', move, false); + window.removeEventListener('click', windowClick, false); this.dragStop(); - }); + }; + window.addEventListener('click', windowClick); window.addEventListener('mousemove', move, false); } @@ -225,8 +242,8 @@ export class Tabs { private dragStop() { if (this.clickAction.timeout) { clearTimeout(this.clickAction.timeout); + this.clickAction.timeout = null; } - this.clickAction.timeout = null; if (this.clickAction.isClick) return false; diff --git a/packages/core/src/components/tabs/test/tabs.ct.ts b/packages/core/src/components/tabs/test/tabs.ct.ts index bb8420929a..9eff6d52d5 100644 --- a/packages/core/src/components/tabs/test/tabs.ct.ts +++ b/packages/core/src/components/tabs/test/tabs.ct.ts @@ -105,3 +105,23 @@ test('should update layout on resize', async ({ mount, page }) => { await page.setViewportSize({ width: 1000, height: 100 }); await expect(arrowNext).not.toBeVisible(); }); + +test('should scroll selected tab into view', async ({ mount, page }) => { + await mount(` + + Item 1 + Item 2 + Item 3 + Item 4 + Item 5 + Item 6 + + `); + await page.setViewportSize({ width: 300, height: 100 }); + const clickedTab = page.locator('ix-tab-item').nth(3); + const lastTab = page.locator('ix-tab-item').last(); + await clickedTab.click(); + await page.waitForTimeout(500); + await expect(clickedTab).toBeInViewport(); + await expect(lastTab).not.toBeInViewport(); +}); diff --git a/packages/core/src/tests/tabs/overflow/index.html b/packages/core/src/tests/tabs/overflow/index.html index cbd25345c9..c220d065e7 100644 --- a/packages/core/src/tests/tabs/overflow/index.html +++ b/packages/core/src/tests/tabs/overflow/index.html @@ -16,18 +16,8 @@
@@ -40,33 +30,7 @@ Biggest Tab 7 Biggest Tab 8 -
Content Tab 1
-
Content Tab 2
-
Content Tab 3
-
Should be in overflow
- - diff --git a/packages/core/src/tests/tabs/tabs.e2e.ts b/packages/core/src/tests/tabs/tabs.e2e.ts index f11ea79f39..35c2e37579 100644 --- a/packages/core/src/tests/tabs/tabs.e2e.ts +++ b/packages/core/src/tests/tabs/tabs.e2e.ts @@ -29,7 +29,7 @@ regressionTest.describe('tabs', () => { regressionTest('overflow', async ({ page }) => { await page.goto('tabs/overflow'); - const selectItem = await page.waitForSelector("[data-tab-id='7']"); + const selectItem = await page.waitForSelector("[data-tab-id='5']"); await selectItem.click(); await page.waitForTimeout(500); diff --git a/packages/core/src/tests/tabs/tabs.e2e.ts-snapshots/tabs-overflow-1-chromium---theme-classic-dark-linux.png b/packages/core/src/tests/tabs/tabs.e2e.ts-snapshots/tabs-overflow-1-chromium---theme-classic-dark-linux.png index 6e348978d7c576fa1b2880e70ceefdcbef46450f..848b994d346b250c55a11a8a003b36acd7599d71 100644 GIT binary patch literal 14440 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 literal 17288 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 KSA2K%*Z&2+bt&Hf literal 17094 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