Skip to content

Commit 838dc9b

Browse files
committed
feat(DsfrTabs): ✨ permet la sélection d'un index depuis le composant parent
Ces 3 méthodes de DsfrTabs sont désormais exposées : - `selectIndex(index: number): void` - `selectFirst(): void` - `selectLast(): void`
1 parent 58812c3 commit 838dc9b

File tree

2 files changed

+27
-1
lines changed

2 files changed

+27
-1
lines changed

src/components/DsfrTabs/DsfrTabs.stories.ts

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { expect } from '@storybook/jest'
22
import { within, userEvent } from '@storybook/testing-library'
3+
import DsfrButton from '../DsfrButton/DsfrButton.vue'
34
import DsfrTabs from './DsfrTabs.vue'
45
import DsfrTabContent from './DsfrTabContent.vue'
56

@@ -130,7 +131,7 @@ const customTabTitles = [
130131
]
131132

132133
export const OngletsComplexes = (args) => ({
133-
components: { DsfrTabs, DsfrTabContent },
134+
components: { DsfrTabs, DsfrTabContent, DsfrButton },
134135
data () {
135136
return {
136137
...args,
@@ -140,6 +141,7 @@ export const OngletsComplexes = (args) => ({
140141

141142
template: `
142143
<DsfrTabs
144+
ref="tabs"
143145
:tab-list-name="tabListName"
144146
:tab-titles="tabTitles"
145147
:initial-selected-index="initialSelectedIndex"
@@ -181,6 +183,24 @@ export const OngletsComplexes = (args) => ({
181183
<div>Contenu 4 avec d'autres composants</div>
182184
</DsfrTabContent>
183185
</DsfrTabs>
186+
<div style="display: flex; gap: 1rem; margin-block: 1rem;">
187+
<DsfrButton
188+
label="Activer le 1er onglet"
189+
@click="() => { $refs.tabs.selectFirst() }"
190+
/>
191+
<DsfrButton
192+
label="Activer le 2è onglet"
193+
@click="() => { $refs.tabs.selectIndex(1) }"
194+
/>
195+
<DsfrButton
196+
label="Activer le 3è onglet"
197+
@click="() => { $refs.tabs.selectIndex(2) }"
198+
/>
199+
<DsfrButton
200+
label="Activer le dernier onglet"
201+
@click="() => { $refs.tabs.selectLast() }"
202+
/>
203+
</div>
184204
`,
185205

186206
methods: {

src/components/DsfrTabs/DsfrTabs.vue

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,12 @@ const selectFirst = async () => {
105105
const selectLast = async () => {
106106
await selectIndex(props.tabTitles.length - 1)
107107
}
108+
109+
defineExpose({
110+
selectIndex,
111+
selectFirst,
112+
selectLast,
113+
})
108114
</script>
109115

110116
<template>

0 commit comments

Comments
 (0)