@@ -4,6 +4,8 @@ import DsfrTabContent from './DsfrTabContent.vue'
44import { addIcons } from 'oh-vue-icons'
55
66import { RiCheckboxCircleLine } from 'oh-vue-icons/icons/ri/index.js'
7+ import DsfrAccordionsGroup from '../DsfrAccordion/DsfrAccordionsGroup.vue'
8+ import DsfrAccordion from '../DsfrAccordion/DsfrAccordion.vue'
79
810addIcons ( RiCheckboxCircleLine )
911
@@ -160,3 +162,97 @@ OngletsComplexes.args = {
160162 selectedTabIndex : 1 ,
161163 initialSelectedIndex : 1 ,
162164}
165+
166+ export const OngletsAvecAccordeon = ( args ) => ( {
167+ components : { DsfrTabs, DsfrTabContent, DsfrAccordionsGroup, DsfrAccordion } ,
168+ data ( ) {
169+ return {
170+ ...args ,
171+ asc : true ,
172+ }
173+ } ,
174+
175+ template : `
176+ <DsfrTabs
177+ :tab-list-name="tabListName"
178+ :tab-titles="tabTitles"
179+ :initial-selected-index="initialSelectedIndex"
180+ @select-tab="selectTab"
181+ >
182+ <DsfrTabContent
183+ panel-id="tab-content-0"
184+ tab-id="tab-0"
185+ :selected="selectedTabIndex === 0"
186+ :asc="asc"
187+ >
188+ <DsfrAccordionsGroup>
189+ <li>
190+ <DsfrAccordion
191+ id="accordion-1"
192+ :title="title1"
193+ :expanded-id="expandedId"
194+ @expand="expandedId = $event"
195+ >
196+ Contenu de l’accordéon 1
197+ </DsfrAccordion>
198+ </li>
199+ <li>
200+ <DsfrAccordion
201+ id="accordion-2"
202+ :title="title2"
203+ :expanded-id="expandedId"
204+ @expand="id => expandedId = id"
205+ >
206+ Contenu de l’accordéon 2
207+ </DsfrAccordion>
208+ </li>
209+ <li>
210+ <DsfrAccordion
211+ id="accordion-3"
212+ :title="title3"
213+ :expanded-id="expandedId"
214+ @expand="id => expandedId = id"
215+ >
216+ Contenu de l’accordéon 3
217+ </DsfrAccordion>
218+ </li>
219+ </DsfrAccordionsGroup>
220+ </DsfrTabContent>
221+
222+ <DsfrTabContent
223+ panel-id="tab-content-1"
224+ tab-id="tab-1"
225+ :selected="selectedTabIndex === 1"
226+ :asc="asc"
227+ >
228+ <div>Contenu 2 avec d'autres composants</div>
229+ </DsfrTabContent>
230+ </DsfrTabs>
231+ ` ,
232+
233+ methods : {
234+ selectTab ( idx ) {
235+ this . onSelectTab ( idx )
236+ this . asc = this . selectedTabIndex < idx
237+ this . selectedTabIndex = idx
238+ } ,
239+ } ,
240+
241+ mounted ( ) {
242+ document . body . parentElement . setAttribute ( 'data-fr-theme' , this . dark ? 'dark' : 'light' )
243+ } ,
244+ } )
245+ OngletsAvecAccordeon . args = {
246+ dark : false ,
247+ tabListName,
248+ tabTitles : [
249+ { title : 'Onglet avec accordéon' , icon : 'ri-checkbox-circle-line' , tabId : 'tab-0' , panelId : 'tab-content-0' } ,
250+ { title : 'Titre 2' , icon : 'ri-checkbox-circle-line' , tabId : 'tab-1' , panelId : 'tab-content-1' } ,
251+ ] ,
252+ selectedTabIndex : 0 ,
253+ initialSelectedIndex : 0 ,
254+ title1 : 'Un titre d’accordéon 1' ,
255+ title2 : 'Un titre d’accordéon 2' ,
256+ title3 : 'Un titre d’accordéon 3' ,
257+ expandedId : '' ,
258+ }
0 commit comments