From 72b5851efc8540407dcff3024ca8ccc279a04bba Mon Sep 17 00:00:00 2001 From: Eric Liu Date: Mon, 30 Nov 2020 12:13:27 -0800 Subject: [PATCH] docs(tabs): add better examples --- docs/src/pages/components/Tabs.svx | 12 +++- docs/src/pages/framed/Tabs/TabsDynamic.svelte | 67 ++++--------------- .../src/pages/framed/Tabs/TabsReactive.svelte | 36 ++++++++++ .../pages/framed/Tabs/TabsReactiveEach.svelte | 61 +++++++++++++++++ 4 files changed, 120 insertions(+), 56 deletions(-) create mode 100644 docs/src/pages/framed/Tabs/TabsReactive.svelte create mode 100644 docs/src/pages/framed/Tabs/TabsReactiveEach.svelte 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}