diff --git a/docs/src/pages/components/Tabs.svx b/docs/src/pages/components/Tabs.svx index bf6340f7..779b6a29 100644 --- a/docs/src/pages/components/Tabs.svx +++ b/docs/src/pages/components/Tabs.svx @@ -33,13 +33,19 @@ components: ["Tabs", "Tab", "TabContent", "TabsSkeleton"] +### Reactive example + +Use the `selected` prop to bind the current tab index. + + + ### Re-rendering tabs +In the example below, tabs are rendered using the `#each` block. However, the Tabs component can lose track of the current index if the number of rendered tabs changes. + Use the [`#key` block](https://svelte.dev/docs#key) to dynamically update tab items or content. -The example below shows tabs and the bound `selected` index being programmatically updated. - - + ### Skeleton diff --git a/docs/src/pages/framed/Tabs/TabsDynamic.svelte b/docs/src/pages/framed/Tabs/TabsDynamic.svelte index 7af795c3..65a54bb2 100644 --- a/docs/src/pages/framed/Tabs/TabsDynamic.svelte +++ b/docs/src/pages/framed/Tabs/TabsDynamic.svelte @@ -1,12 +1,5 @@ + }; - + let selected = 0; + {#key tabs} @@ -50,34 +39,6 @@

Selected index: {selected}

-
- - {#each tabs as { title } (title)} - - {/each} - -
- -
- -
+{#each tabs as { title } (title)} + +{/each} diff --git a/docs/src/pages/framed/Tabs/TabsReactive.svelte b/docs/src/pages/framed/Tabs/TabsReactive.svelte new file mode 100644 index 00000000..5a58fc72 --- /dev/null +++ b/docs/src/pages/framed/Tabs/TabsReactive.svelte @@ -0,0 +1,36 @@ + + + + + + + + +
+ Content 1 + Content 2 + Content 3 +
+
+ +
+ +
+ +
Selected index: {selected}
diff --git a/docs/src/pages/framed/Tabs/TabsReactiveEach.svelte b/docs/src/pages/framed/Tabs/TabsReactiveEach.svelte new file mode 100644 index 00000000..fef0d81c --- /dev/null +++ b/docs/src/pages/framed/Tabs/TabsReactiveEach.svelte @@ -0,0 +1,61 @@ + + + + +{#key items} + + {#each items as item} + + {/each} +
+ {#each items as item} + Content {item} + {/each} +
+
+{/key} + +
+ +
+ +
+ +
+ +
Selected index: {selected}