From 1691541b2f64804724e859be3cfe1e1a6f639d11 Mon Sep 17 00:00:00 2001 From: Gear <84141000+macgeargear@users.noreply.github.com> Date: Fri, 13 Sep 2024 14:11:47 +0700 Subject: [PATCH 01/14] feat(tab): tab content --- src/lib/components/Tabs/TabsContent.svelte | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 src/lib/components/Tabs/TabsContent.svelte diff --git a/src/lib/components/Tabs/TabsContent.svelte b/src/lib/components/Tabs/TabsContent.svelte new file mode 100644 index 0000000..56d6081 --- /dev/null +++ b/src/lib/components/Tabs/TabsContent.svelte @@ -0,0 +1,14 @@ + + +{#if isActive} +
+ +
+{/if} From 9121f1502fc6a7274f71906b176b89ff9feceace Mon Sep 17 00:00:00 2001 From: Gear <84141000+macgeargear@users.noreply.github.com> Date: Fri, 13 Sep 2024 14:12:15 +0700 Subject: [PATCH 02/14] feat(tab): tab list --- src/lib/components/Tabs/TabsList.svelte | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 src/lib/components/Tabs/TabsList.svelte diff --git a/src/lib/components/Tabs/TabsList.svelte b/src/lib/components/Tabs/TabsList.svelte new file mode 100644 index 0000000..aa870af --- /dev/null +++ b/src/lib/components/Tabs/TabsList.svelte @@ -0,0 +1,5 @@ +
+ +
From 859366b23d351e8c15f205da54e4e83fa262182d Mon Sep 17 00:00:00 2001 From: Gear <84141000+macgeargear@users.noreply.github.com> Date: Fri, 13 Sep 2024 14:12:25 +0700 Subject: [PATCH 03/14] feat(tab): tab root --- src/lib/components/Tabs/TabsRoot.svelte | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 src/lib/components/Tabs/TabsRoot.svelte diff --git a/src/lib/components/Tabs/TabsRoot.svelte b/src/lib/components/Tabs/TabsRoot.svelte new file mode 100644 index 0000000..1f0eb2e --- /dev/null +++ b/src/lib/components/Tabs/TabsRoot.svelte @@ -0,0 +1,15 @@ + + +
+ +
From 59e2a08751b9fe94d5a2bf1622b9d1f6c3806da2 Mon Sep 17 00:00:00 2001 From: Gear <84141000+macgeargear@users.noreply.github.com> Date: Fri, 13 Sep 2024 14:12:34 +0700 Subject: [PATCH 04/14] feat(tab): tab trigger --- src/lib/components/Tabs/TabsTrigger.svelte | 50 ++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 src/lib/components/Tabs/TabsTrigger.svelte diff --git a/src/lib/components/Tabs/TabsTrigger.svelte b/src/lib/components/Tabs/TabsTrigger.svelte new file mode 100644 index 0000000..4d0fae0 --- /dev/null +++ b/src/lib/components/Tabs/TabsTrigger.svelte @@ -0,0 +1,50 @@ + + +
+ + + {#if isActive} +
+ {/if} +
From 2015db1f02a6562d63fc189c10ee05b5cbbf6197 Mon Sep 17 00:00:00 2001 From: Gear <84141000+macgeargear@users.noreply.github.com> Date: Fri, 13 Sep 2024 14:12:43 +0700 Subject: [PATCH 05/14] feat(tab): tab context --- src/lib/components/Tabs/tabsContext.ts | 44 ++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 src/lib/components/Tabs/tabsContext.ts diff --git a/src/lib/components/Tabs/tabsContext.ts b/src/lib/components/Tabs/tabsContext.ts new file mode 100644 index 0000000..f76abd0 --- /dev/null +++ b/src/lib/components/Tabs/tabsContext.ts @@ -0,0 +1,44 @@ +import { writable, get, type Writable } from 'svelte/store'; +import { setContext, getContext } from 'svelte'; + +interface Tab { + value: string; +} + +export interface TabsContext { + activeTab: Writable; + tabs: Writable; + registerTab: (tab: Tab) => void; + selectTab: (value: string) => void; +} + +const createTabs = (): TabsContext => { + const activeTab = writable(''); + const tabs = writable([]); + + const registerTab = (tab: Tab) => { + tabs.update((currTabs) => [...currTabs, tab]); + if (get(activeTab) === null) activeTab.set(tab.value); + }; + + const selectTab = (value: string) => { + activeTab.set(value); + }; + + return { + activeTab, + tabs, + registerTab, + selectTab + }; +}; + +export const setTabsContext = (): TabsContext => { + const tabs = createTabs(); + setContext('tabs', tabs); + return tabs; +}; + +export const getTabsContext = (): TabsContext => { + return getContext('tabs'); +}; From 6324e4bd8722f4d187bc825bf15717253d9fe509 Mon Sep 17 00:00:00 2001 From: Gear <84141000+macgeargear@users.noreply.github.com> Date: Fri, 13 Sep 2024 14:13:03 +0700 Subject: [PATCH 06/14] feat(tab): example tab's usage --- src/lib/components/Playground.svelte | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/lib/components/Playground.svelte b/src/lib/components/Playground.svelte index b9d649b..b441e17 100644 --- a/src/lib/components/Playground.svelte +++ b/src/lib/components/Playground.svelte @@ -4,6 +4,10 @@ import TabCapsuleItem from './TabCapsule.svelte'; import Modal from '$lib/components/Modal/Modal.svelte'; import { modalShow } from './Modal/store'; + import TabsRoot from './Tabs/TabsRoot.svelte'; + import TabsList from './Tabs/TabsList.svelte'; + import TabsTrigger from './Tabs/TabsTrigger.svelte'; + import TabsContent from './Tabs/TabsContent.svelte'; modalShow.set(false); @@ -158,6 +162,26 @@ {/if} + +
+ + + ทั้งหมด + อบจ. + สภานิสิต + + + +

This is the all tab content.

+
+ +

This is the sgcu tab content.

+
+ +

This is the sccu tab content.

+
+
+