From b52263ff6343c5585296a2ec88540bfc51ff6ae4 Mon Sep 17 00:00:00 2001 From: Boris Diakur Date: Wed, 8 Dec 2021 15:11:01 +0100 Subject: [PATCH] fix(ld-tabs): show tabpanel according to preselected tab Resolves #179 --- src/liquid/components/ld-tabs/ld-tabs.tsx | 7 +- .../test/__snapshots__/ld-tabs.spec.ts.snap | 110 ++++++++++++++++++ .../components/ld-tabs/test/ld-tabs.spec.ts | 25 +++- 3 files changed, 139 insertions(+), 3 deletions(-) diff --git a/src/liquid/components/ld-tabs/ld-tabs.tsx b/src/liquid/components/ld-tabs/ld-tabs.tsx index f62f1058e9..e17c27fe71 100644 --- a/src/liquid/components/ld-tabs/ld-tabs.tsx +++ b/src/liquid/components/ld-tabs/ld-tabs.tsx @@ -81,7 +81,7 @@ export class LdTabs { ) } - ;((newActiveTab as unknown) as LdTab).select() + ;(newActiveTab as unknown as LdTab).select() } componentDidRender() { @@ -90,7 +90,10 @@ export class LdTabs { let selectedIndex this.el.querySelectorAll('ld-tab').forEach((tab, index) => { tab.id = `${this.idDescriber}-tab-${index}` - if (tab.hasAttribute('selected')) { + if ( + tab.hasAttribute('selected') && + tab.getAttribute('selected') !== 'false' + ) { selectedIndex = index } }) diff --git a/src/liquid/components/ld-tabs/test/__snapshots__/ld-tabs.spec.ts.snap b/src/liquid/components/ld-tabs/test/__snapshots__/ld-tabs.spec.ts.snap index 31212009a3..1f99884681 100644 --- a/src/liquid/components/ld-tabs/test/__snapshots__/ld-tabs.spec.ts.snap +++ b/src/liquid/components/ld-tabs/test/__snapshots__/ld-tabs.spec.ts.snap @@ -109,3 +109,113 @@ exports[`ld-tabs renders 1`] = ` `; + +exports[`ld-tabs shows tabpanel according to the preselected tab 1`] = ` + + + + + + +
+ +
+ +
+ +
+
+ + + + + Fruits + + + + + + Vegetables + + + + + + Nuts + + + + + + Grain + +
+ + + + + + + + + + Potato, cucumber, tomato + + + + +
+`; diff --git a/src/liquid/components/ld-tabs/test/ld-tabs.spec.ts b/src/liquid/components/ld-tabs/test/ld-tabs.spec.ts index 7a17fd36d5..ddb1183005 100644 --- a/src/liquid/components/ld-tabs/test/ld-tabs.spec.ts +++ b/src/liquid/components/ld-tabs/test/ld-tabs.spec.ts @@ -7,7 +7,7 @@ import { LdTabpanel } from '../ld-tabpanel/ld-tabpanel' class FocusManager { focus(el) { - const doc = (document as unknown) as { activeElement: Element } + const doc = document as unknown as { activeElement: Element } doc.activeElement = el } } @@ -39,6 +39,29 @@ describe('ld-tabs', () => { expect(page.root).toMatchSnapshot() }) + it('shows tabpanel according to the preselected tab', async () => { + const page = await newSpecPage({ + components, + html: ` + + + Fruits + Vegetables + Nuts + Grain + + + Apple, orange, banana + Potato, cucumber, tomato + Walnut, chestnut, strawberry + Maize, rice, soybeans, wheat + + + `, + }) + expect(page.root).toMatchSnapshot() + }) + describe('mouse interactions', () => { it('changes tab via click with preselected tab', async () => { const page = await newSpecPage({