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.
+
+
+