1- import { component$ , Slot , useStyles$ } from '@builder.io/qwik' ;
1+ import {
2+ component$ ,
3+ Slot ,
4+ useSignal ,
5+ useStore ,
6+ useStyles$ ,
7+ } from '@builder.io/qwik' ;
28import { Tab , TabList , TabPanel , Tabs } from '@qwik-ui/headless' ;
39import { PreviewCodeExample } from '../../../../../components/preview-code-example/preview-code-example' ;
410import styles from './index.css?inline' ;
@@ -9,8 +15,8 @@ export const Example01 = component$(() => {
915 return (
1016 < PreviewCodeExample >
1117 < div q :slot = "actualComponent" class = "tabs-example" >
18+ < h3 > Danish Composers</ h3 >
1219 < Tabs behavior = "automatic" >
13- < h3 id = "tablist-1" > Danish Composers</ h3 >
1420 < TabList >
1521 < Tab > Maria Ahlefeldt</ Tab >
1622 < Tab > Carl Andersen</ Tab >
@@ -44,8 +50,9 @@ export const VerticalTabsExample = component$(() => {
4450 return (
4551 < PreviewCodeExample >
4652 < div q :slot = "actualComponent" class = "tabs-example mr-auto" >
47- < Tabs vertical >
48- < h3 id = "tablist-1" > Danish Composers</ h3 >
53+ < h3 > Danish Composers</ h3 >
54+
55+ < Tabs vertical class = "flex flex-wrap gap-5" >
4956 < TabList class = "flex flex-col w-fit" >
5057 < Tab > Maria Ahlefeldt</ Tab >
5158 < Tab > Carl Andersen</ Tab >
@@ -74,3 +81,236 @@ export const VerticalTabsExample = component$(() => {
7481 </ PreviewCodeExample >
7582 ) ;
7683} ) ;
84+
85+ export const DisabledTabsExample = component$ ( ( ) => {
86+ return (
87+ < PreviewCodeExample >
88+ < div q :slot = "actualComponent" class = "tabs-example mr-auto w-full" >
89+ < h3 > Dad jokes</ h3 >
90+ < Tabs >
91+ < TabList >
92+ < Tab style = "width: 25%" disabled = { true } >
93+ Disabled Tab
94+ </ Tab >
95+ < Tab style = "width: 25%" > Joke 2</ Tab >
96+ < Tab style = "width: 25%" > Joke 3</ Tab >
97+ < Tab style = "width: 25%" > Joke 4</ Tab >
98+ </ TabList >
99+ < TabPanel >
100+ "What did the coffee report to the police", " A mugging."
101+ </ TabPanel >
102+ < TabPanel > "What's brown and sticky", " A stick."</ TabPanel >
103+ < TabPanel >
104+ "How do the trees get on the internet?", "They log on."
105+ </ TabPanel >
106+ < TabPanel >
107+ "What did the fish say when he hit the wall", " Dam."
108+ </ TabPanel >
109+ </ Tabs >
110+ </ div >
111+
112+ < div q :slot = "codeExample" >
113+ < Slot />
114+ </ div >
115+ </ PreviewCodeExample >
116+ ) ;
117+ } ) ;
118+
119+ export const AutomaticBehaviorTabsExample = component$ ( ( ) => {
120+ return (
121+ < PreviewCodeExample >
122+ < div q :slot = "actualComponent" class = "tabs-example mr-auto" >
123+ < Tabs behavior = "automatic" >
124+ < h3 > Danish Composers</ h3 >
125+ < h4 > (Hover over the tabs)</ h4 >
126+ < TabList >
127+ < Tab > Maria Ahlefeldt</ Tab >
128+ < Tab > Carl Andersen</ Tab >
129+ < Tab > Ida Henriette da Fonseca</ Tab >
130+ </ TabList >
131+ < TabPanel >
132+ < p >
133+ Maria Theresia Ahlefeldt (16 January 1755 - 20 December 1810) was
134+ a ...
135+ </ p >
136+ </ TabPanel >
137+ < TabPanel >
138+ < p > Carl Joachim Andersen (29 April 1847 - 7 May 1909) was a ...</ p >
139+ </ TabPanel >
140+ < TabPanel >
141+ < p >
142+ Ida Henriette da Fonseca (July 27, 1802 - July 6, 1858) was a ...
143+ </ p >
144+ </ TabPanel >
145+ </ Tabs >
146+ </ div >
147+
148+ < div q :slot = "codeExample" >
149+ < Slot />
150+ </ div >
151+ </ PreviewCodeExample >
152+ ) ;
153+ } ) ;
154+
155+ export const ManualBehaviorTabsExample = component$ ( ( ) => {
156+ return (
157+ < PreviewCodeExample >
158+ < div q :slot = "actualComponent" class = "tabs-example mr-auto" >
159+ < Tabs behavior = "manual" >
160+ < h3 > Danish Composers</ h3 >
161+ < h4 > (Hover over the tabs - they should not be selected)</ h4 >
162+ < TabList >
163+ < Tab > Maria Ahlefeldt</ Tab >
164+ < Tab > Carl Andersen</ Tab >
165+ < Tab > Ida Henriette da Fonseca</ Tab >
166+ </ TabList >
167+ < TabPanel >
168+ < p >
169+ Maria Theresia Ahlefeldt (16 January 1755 - 20 December 1810) was
170+ a ...
171+ </ p >
172+ </ TabPanel >
173+ < TabPanel >
174+ < p > Carl Joachim Andersen (29 April 1847 - 7 May 1909) was a ...</ p >
175+ </ TabPanel >
176+ < TabPanel >
177+ < p >
178+ Ida Henriette da Fonseca (July 27, 1802 - July 6, 1858) was a ...
179+ </ p >
180+ </ TabPanel >
181+ </ Tabs >
182+ </ div >
183+
184+ < div q :slot = "codeExample" >
185+ < Slot />
186+ </ div >
187+ </ PreviewCodeExample >
188+ ) ;
189+ } ) ;
190+
191+ export const DynamicTabsExample = component$ ( ( ) => {
192+ const tabsState = useStore ( [
193+ 'Dynamic Tab 1' ,
194+ 'Dynamic Tab 2' ,
195+ 'Dynamic Tab 3' ,
196+ ] ) ;
197+
198+ return (
199+ < PreviewCodeExample >
200+ < div q :slot = "actualComponent" class = "tabs-example mr-auto" >
201+ < Tabs >
202+ < TabList >
203+ { tabsState . map ( ( tab ) => (
204+ < Tab key = { tab } > { tab } </ Tab >
205+ ) ) }
206+ </ TabList >
207+ { tabsState . map ( ( tab ) => (
208+ < TabPanel key = { tab } > { tab } Panel</ TabPanel >
209+ ) ) }
210+ </ Tabs >
211+
212+ < button
213+ style = { { color : 'red' , marginTop : '1rem' } }
214+ onClick$ = { ( ) => {
215+ if ( tabsState . length > 1 ) {
216+ tabsState . splice ( 0 , 1 ) ;
217+ }
218+ } }
219+ >
220+ Remove First Tab
221+ </ button >
222+ </ div >
223+
224+ < div q :slot = "codeExample" >
225+ < Slot />
226+ </ div >
227+ </ PreviewCodeExample >
228+ ) ;
229+ } ) ;
230+
231+ export const OnSelectedIndexChangeTabsExample = component$ ( ( ) => {
232+ const selectedIndexSig = useSignal ( 0 ) ;
233+
234+ return (
235+ < PreviewCodeExample >
236+ < div q :slot = "actualComponent" class = "tabs-example mr-auto" >
237+ < Tabs
238+ onSelectedIndexChange$ = { ( index ) => {
239+ selectedIndexSig . value = index ;
240+ } }
241+ >
242+ < h3 > Danish Composers</ h3 >
243+ < TabList >
244+ < Tab > Maria Ahlefeldt</ Tab >
245+ < Tab > Carl Andersen</ Tab >
246+ < Tab > Ida Henriette da Fonseca</ Tab >
247+ </ TabList >
248+ < TabPanel >
249+ < p >
250+ Maria Theresia Ahlefeldt (16 January 1755 - 20 December 1810) was
251+ a ...
252+ </ p >
253+ </ TabPanel >
254+ < TabPanel >
255+ < p > Carl Joachim Andersen (29 April 1847 - 7 May 1909) was a ...</ p >
256+ </ TabPanel >
257+ < TabPanel >
258+ < p >
259+ Ida Henriette da Fonseca (July 27, 1802 - July 6, 1858) was a ...
260+ </ p >
261+ </ TabPanel >
262+ </ Tabs >
263+
264+ < p > Selected Index: { selectedIndexSig . value } </ p >
265+ </ div >
266+
267+ < div q :slot = "codeExample" >
268+ < Slot />
269+ </ div >
270+ </ PreviewCodeExample >
271+ ) ;
272+ } ) ;
273+
274+ export const OnClickTabsExample = component$ ( ( ) => {
275+ const tabsClickedCountSig = useSignal ( 0 ) ;
276+
277+ return (
278+ < PreviewCodeExample >
279+ < div q :slot = "actualComponent" class = "tabs-example mr-auto" >
280+ < h3 > Danish Composers</ h3 >
281+ < h4 > (watch the counter below)</ h4 >
282+ < Tabs
283+ onClick$ = { ( ) => {
284+ tabsClickedCountSig . value ++ ;
285+ } }
286+ >
287+ < TabList >
288+ < Tab > Maria Ahlefeldt</ Tab >
289+ < Tab > Carl Andersen</ Tab >
290+ < Tab > Ida Henriette da Fonseca</ Tab >
291+ </ TabList >
292+ < TabPanel >
293+ < p >
294+ Maria Theresia Ahlefeldt (16 January 1755 - 20 December 1810) was
295+ a ...
296+ </ p >
297+ </ TabPanel >
298+ < TabPanel >
299+ < p > Carl Joachim Andersen (29 April 1847 - 7 May 1909) was a ...</ p >
300+ </ TabPanel >
301+ < TabPanel >
302+ < p >
303+ Ida Henriette da Fonseca (July 27, 1802 - July 6, 1858) was a ...
304+ </ p >
305+ </ TabPanel >
306+ </ Tabs >
307+
308+ < p > Click count: { tabsClickedCountSig . value } </ p >
309+ </ div >
310+
311+ < div q :slot = "codeExample" >
312+ < Slot />
313+ </ div >
314+ </ PreviewCodeExample >
315+ ) ;
316+ } ) ;
0 commit comments