Type Disclosure with $$Props

This commit is contained in:
Ryan Gossiaux
2022-02-07 17:25:14 -08:00
parent 231775e60b
commit 696b25eb95
3 changed files with 55 additions and 8 deletions

View File

@@ -1,3 +1,12 @@
<script lang="ts" context="module">
type TDisclosureButtonProps<
TSlotProps extends {},
TAsProp extends SupportedAs
> = TPassThroughProps<TSlotProps, TAsProp> & {
disabled?: boolean;
};
</script>
<script lang="ts">
import { useDisclosureContext, DisclosureStates } from "./Disclosure.svelte";
import { usePanelContext } from "./DisclosurePanel.svelte";
@@ -6,15 +15,22 @@
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";
import Render, { type TPassThroughProps } from "$lib/utils/Render.svelte";
import { writable } from "svelte/store";
import { resolveButtonType } from "$lib/utils/resolve-button-type";
const forwardEvents = forwardEventsBuilder(get_current_component());
/***** Props *****/
type TAsProp = $$Generic<SupportedAs>;
type $$Props = TDisclosureButtonProps<typeof slotProps, TAsProp>;
export let as: SupportedAs = "button";
export let use: HTMLActionArray = [];
export let disabled = false;
/***** Events *****/
const forwardEvents = forwardEventsBuilder(get_current_component());
/***** Component *****/
const api = useDisclosureContext("DisclosureButton");
const panelContext = usePanelContext();