From b973fa6fe28395ab371dd0b4f58eb504fa39fb28 Mon Sep 17 00:00:00 2001 From: Ryan Gossiaux Date: Mon, 20 Dec 2021 23:19:31 -0800 Subject: [PATCH] Move Tabs to This is the last component to move to ! --- src/lib/components/tabs/Tab.svelte | 34 +++++++++++-------- src/lib/components/tabs/TabGroup.svelte | 42 +++++++++++++++++------- src/lib/components/tabs/TabList.svelte | 23 +++++++++++-- src/lib/components/tabs/TabPanel.svelte | 18 ++++++++-- src/lib/components/tabs/TabPanels.svelte | 22 +++++++++++-- 5 files changed, 105 insertions(+), 34 deletions(-) diff --git a/src/lib/components/tabs/Tab.svelte b/src/lib/components/tabs/Tab.svelte index 748f589..96ce62e 100644 --- a/src/lib/components/tabs/Tab.svelte +++ b/src/lib/components/tabs/Tab.svelte @@ -3,9 +3,17 @@ import { Focus, focusIn } from "$lib/utils/focus-management"; import { Keys } from "$lib/utils/keyboard"; import { match } from "$lib/utils/match"; - import { useTabsContext } from "./TabGroup.svelte"; import { useId } from "$lib/hooks/use-id"; + import { forwardEventsBuilder } from "$lib/internal/forwardEventsBuilder"; + import { get_current_component } from "svelte/internal"; + import type { SupportedAs } from "$lib/internal/elements"; + import type { HTMLActionArray } from "$lib/hooks/use-actions"; + import Render from "$lib/utils/Render.svelte"; + const forwardEvents = forwardEventsBuilder(get_current_component()); + + export let as: SupportedAs = "button"; + export let use: HTMLActionArray = []; export let disabled = false; @@ -21,7 +29,8 @@ $: myIndex = $api.tabs.indexOf(tabRef); $: selected = myIndex === $api.selectedIndex; - function handleKeyDown(event: KeyboardEvent) { + function handleKeyDown(e: CustomEvent) { + let event = e as any as KeyboardEvent; let list = $api.tabs.filter(Boolean) as HTMLElement[]; if (event.key === Keys.Space || event.key === Keys.Enter) { @@ -86,22 +95,19 @@ disabled: disabled ? true : undefined, }; - $: classStyle = $$props.class - ? typeof $$props.class === "function" - ? $$props.class({ - selected, - }) - : $$props.class - : ""; + $: slotProps = { selected }; - + + diff --git a/src/lib/components/tabs/TabGroup.svelte b/src/lib/components/tabs/TabGroup.svelte index be51ddb..6ab0014 100644 --- a/src/lib/components/tabs/TabGroup.svelte +++ b/src/lib/components/tabs/TabGroup.svelte @@ -1,13 +1,4 @@ -
- -
+ + + diff --git a/src/lib/components/tabs/TabList.svelte b/src/lib/components/tabs/TabList.svelte index 4cdd608..6fd87b2 100644 --- a/src/lib/components/tabs/TabList.svelte +++ b/src/lib/components/tabs/TabList.svelte @@ -1,13 +1,30 @@ -
- -
+ + + diff --git a/src/lib/components/tabs/TabPanel.svelte b/src/lib/components/tabs/TabPanel.svelte index e3b81b4..27bc861 100644 --- a/src/lib/components/tabs/TabPanel.svelte +++ b/src/lib/components/tabs/TabPanel.svelte @@ -2,6 +2,15 @@ import { onMount } from "svelte"; import { useTabsContext } from "./TabGroup.svelte"; import { useId } from "$lib/hooks/use-id"; + import { forwardEventsBuilder } from "$lib/internal/forwardEventsBuilder"; + import { get_current_component } from "svelte/internal"; + import type { SupportedAs } from "$lib/internal/elements"; + import type { HTMLActionArray } from "$lib/hooks/use-actions"; + import Render from "$lib/utils/Render.svelte"; + const forwardEvents = forwardEventsBuilder(get_current_component()); + + export let as: SupportedAs = "div"; + export let use: HTMLActionArray = []; let api = useTabsContext("TabPanel"); let id = `headlessui-tabs-panel-${useId()}`; @@ -23,7 +32,12 @@ {#if selected} -
+ -
+
{/if} diff --git a/src/lib/components/tabs/TabPanels.svelte b/src/lib/components/tabs/TabPanels.svelte index ef8a5db..13eac23 100644 --- a/src/lib/components/tabs/TabPanels.svelte +++ b/src/lib/components/tabs/TabPanels.svelte @@ -1,9 +1,25 @@ -
- -
+ + +