Add default as prop type for when as= is not provided

This commit is contained in:
Ryan Gossiaux
2022-02-09 15:44:38 -08:00
parent 42d792e72c
commit d7f6a58753
33 changed files with 63 additions and 54 deletions

View File

@@ -41,7 +41,7 @@
type TDialogProps< type TDialogProps<
TSlotProps extends {}, TSlotProps extends {},
TAsProp extends SupportedAs TAsProp extends SupportedAs
> = TPassThroughProps<TSlotProps, TAsProp> & { > = TPassThroughProps<TSlotProps, TAsProp, "div"> & {
open?: boolean; open?: boolean;
initialFocus?: HTMLElement | null; initialFocus?: HTMLElement | null;
static?: boolean; static?: boolean;

View File

@@ -2,7 +2,7 @@
type TDialogOverlayProps< type TDialogOverlayProps<
TSlotProps extends {}, TSlotProps extends {},
TAsProp extends SupportedAs TAsProp extends SupportedAs
> = TPassThroughProps<TSlotProps, TAsProp> & {}; > = TPassThroughProps<TSlotProps, TAsProp, "div"> & {};
</script> </script>
<script lang="ts"> <script lang="ts">

View File

@@ -2,7 +2,7 @@
type TDialogTitleProps< type TDialogTitleProps<
TSlotProps extends {}, TSlotProps extends {},
TAsProp extends SupportedAs TAsProp extends SupportedAs
> = TPassThroughProps<TSlotProps, TAsProp> & {}; > = TPassThroughProps<TSlotProps, TAsProp, "h2"> & {};
</script> </script>
<script lang="ts"> <script lang="ts">

View File

@@ -44,7 +44,7 @@
type TDisclosureProps< type TDisclosureProps<
TSlotProps extends {}, TSlotProps extends {},
TAsProp extends SupportedAs TAsProp extends SupportedAs
> = TPassThroughProps<TSlotProps, TAsProp> & { > = TPassThroughProps<TSlotProps, TAsProp, "div"> & {
defaultOpen?: boolean; defaultOpen?: boolean;
}; };
</script> </script>

View File

@@ -2,7 +2,7 @@
type TDisclosureButtonProps< type TDisclosureButtonProps<
TSlotProps extends {}, TSlotProps extends {},
TAsProp extends SupportedAs TAsProp extends SupportedAs
> = TPassThroughProps<TSlotProps, TAsProp> & { > = TPassThroughProps<TSlotProps, TAsProp, "button"> & {
disabled?: boolean; disabled?: boolean;
}; };
</script> </script>

View File

@@ -8,7 +8,7 @@
type TDisclosurePanelProps< type TDisclosurePanelProps<
TSlotProps extends {}, TSlotProps extends {},
TAsProp extends SupportedAs TAsProp extends SupportedAs
> = TPassThroughProps<TSlotProps, TAsProp> & { > = TPassThroughProps<TSlotProps, TAsProp, "div"> & {
unmount?: boolean; unmount?: boolean;
static?: boolean; static?: boolean;
}; };

View File

@@ -53,7 +53,7 @@
type TListboxProps< type TListboxProps<
TSlotProps extends {}, TSlotProps extends {},
TAsProp extends SupportedAs TAsProp extends SupportedAs
> = TPassThroughProps<TSlotProps, TAsProp> & { > = TPassThroughProps<TSlotProps, TAsProp, "div"> & {
disabled?: boolean; disabled?: boolean;
horizontal?: boolean; horizontal?: boolean;
value?: StateDefinition["value"]; value?: StateDefinition["value"];

View File

@@ -2,7 +2,7 @@
type TListboxButtonProps< type TListboxButtonProps<
TSlotProps extends {}, TSlotProps extends {},
TAsProp extends SupportedAs TAsProp extends SupportedAs
> = TPassThroughProps<TSlotProps, TAsProp> & {}; > = TPassThroughProps<TSlotProps, TAsProp, "button"> & {};
</script> </script>
<script lang="ts"> <script lang="ts">

View File

@@ -2,7 +2,7 @@
type TListboxLabelProps< type TListboxLabelProps<
TSlotProps extends {}, TSlotProps extends {},
TAsProp extends SupportedAs TAsProp extends SupportedAs
> = TPassThroughProps<TSlotProps, TAsProp> & {}; > = TPassThroughProps<TSlotProps, TAsProp, "label"> & {};
</script> </script>
<script lang="ts"> <script lang="ts">

View File

@@ -2,7 +2,7 @@
type TListboxOptionProps< type TListboxOptionProps<
TSlotProps extends {}, TSlotProps extends {},
TAsProp extends SupportedAs TAsProp extends SupportedAs
> = TPassThroughProps<TSlotProps, TAsProp> & { > = TPassThroughProps<TSlotProps, TAsProp, "li"> & {
value: unknown; value: unknown;
disabled?: boolean; disabled?: boolean;
}; };

View File

@@ -2,7 +2,7 @@
type TListboxOptionsProps< type TListboxOptionsProps<
TSlotProps extends {}, TSlotProps extends {},
TAsProp extends SupportedAs TAsProp extends SupportedAs
> = TPassThroughProps<TSlotProps, TAsProp> & { > = TPassThroughProps<TSlotProps, TAsProp, "ul"> & {
unmount?: boolean; unmount?: boolean;
static?: boolean; static?: boolean;
}; };

View File

@@ -57,7 +57,7 @@
type TMenuProps< type TMenuProps<
TSlotProps extends {}, TSlotProps extends {},
TAsProp extends SupportedAs TAsProp extends SupportedAs
> = TPassThroughProps<TSlotProps, TAsProp> & {}; > = TPassThroughProps<TSlotProps, TAsProp, "div"> & {};
</script> </script>
<script lang="ts"> <script lang="ts">

View File

@@ -2,7 +2,7 @@
type TMenuButtonProps< type TMenuButtonProps<
TSlotProps extends {}, TSlotProps extends {},
TAsProp extends SupportedAs TAsProp extends SupportedAs
> = TPassThroughProps<TSlotProps, TAsProp> & { > = TPassThroughProps<TSlotProps, TAsProp, "button"> & {
disabled?: boolean; disabled?: boolean;
}; };
</script> </script>

View File

@@ -2,7 +2,7 @@
type TMenuItemProps< type TMenuItemProps<
TSlotProps extends {}, TSlotProps extends {},
TAsProp extends SupportedAs TAsProp extends SupportedAs
> = TPassThroughProps<TSlotProps, TAsProp> & {}; > = TPassThroughProps<TSlotProps, TAsProp, "a"> & {};
</script> </script>
<script lang="ts"> <script lang="ts">

View File

@@ -2,7 +2,7 @@
type TMenuItemsProps< type TMenuItemsProps<
TSlotProp extends {}, TSlotProp extends {},
TAsProp extends SupportedAs TAsProp extends SupportedAs
> = TPassThroughProps<TSlotProp, TAsProp> & { > = TPassThroughProps<TSlotProp, TAsProp, "div"> & {
static?: boolean; static?: boolean;
unmount?: boolean; unmount?: boolean;
}; };

View File

@@ -42,7 +42,7 @@
type TPopoverProps< type TPopoverProps<
TSlotProps extends {}, TSlotProps extends {},
TAsProp extends SupportedAs TAsProp extends SupportedAs
> = TPassThroughProps<TSlotProps, TAsProp> & {}; > = TPassThroughProps<TSlotProps, TAsProp, "div"> & {};
</script> </script>
<script lang="ts"> <script lang="ts">

View File

@@ -2,7 +2,7 @@
type TPopoverButtonProps< type TPopoverButtonProps<
TSlotProps extends {}, TSlotProps extends {},
TAsProp extends SupportedAs TAsProp extends SupportedAs
> = TPassThroughProps<TSlotProps, TAsProp> & { > = TPassThroughProps<TSlotProps, TAsProp, "button"> & {
disabled?: boolean; disabled?: boolean;
}; };
</script> </script>

View File

@@ -14,7 +14,7 @@
type TPopoverGroupProps< type TPopoverGroupProps<
TSlotProps extends {}, TSlotProps extends {},
TAsProp extends SupportedAs TAsProp extends SupportedAs
> = TPassThroughProps<TSlotProps, TAsProp> & {}; > = TPassThroughProps<TSlotProps, TAsProp, "div"> & {};
</script> </script>
<script lang="ts"> <script lang="ts">

View File

@@ -2,7 +2,7 @@
type TPopoverOverlayProps< type TPopoverOverlayProps<
TSlotProps extends {}, TSlotProps extends {},
TAsProp extends SupportedAs TAsProp extends SupportedAs
> = TPassThroughProps<TSlotProps, TAsProp> & {}; > = TPassThroughProps<TSlotProps, TAsProp, "div"> & {};
</script> </script>
<script lang="ts"> <script lang="ts">

View File

@@ -11,7 +11,7 @@
type TPopoverPanelProps< type TPopoverPanelProps<
TSlotProps extends {}, TSlotProps extends {},
TAsProp extends SupportedAs TAsProp extends SupportedAs
> = TPassThroughProps<TSlotProps, TAsProp> & { > = TPassThroughProps<TSlotProps, TAsProp, "div"> & {
focus?: boolean; focus?: boolean;
static?: boolean; static?: boolean;
unmount?: boolean; unmount?: boolean;

View File

@@ -47,7 +47,7 @@
type TRadioGroupProps< type TRadioGroupProps<
TSlotProps extends {}, TSlotProps extends {},
TAsProp extends SupportedAs TAsProp extends SupportedAs
> = TPassThroughProps<TSlotProps, TAsProp> & { > = TPassThroughProps<TSlotProps, TAsProp, "div"> & {
value: StateDefinition["value"]; value: StateDefinition["value"];
disabled?: boolean; disabled?: boolean;
}; };

View File

@@ -2,7 +2,7 @@
type TRadioGroupOptionProps< type TRadioGroupOptionProps<
TSlotProps extends {}, TSlotProps extends {},
TAsProp extends SupportedAs TAsProp extends SupportedAs
> = TPassThroughProps<TSlotProps, TAsProp> & { > = TPassThroughProps<TSlotProps, TAsProp, "div"> & {
value: unknown; value: unknown;
disabled?: boolean; disabled?: boolean;
}; };

View File

@@ -2,7 +2,7 @@
type TSwitchProps< type TSwitchProps<
TSlotProps extends {}, TSlotProps extends {},
TAsProp extends SupportedAs TAsProp extends SupportedAs
> = TPassThroughProps<TSlotProps, TAsProp> & { > = TPassThroughProps<TSlotProps, TAsProp, "button"> & {
checked: boolean; checked: boolean;
}; };
</script> </script>

View File

@@ -11,7 +11,7 @@
type TSwitchGroupProps< type TSwitchGroupProps<
TSlotProps extends {}, TSlotProps extends {},
TAsProp extends SupportedAs TAsProp extends SupportedAs
> = TPassThroughProps<TSlotProps, TAsProp> & {}; > = TPassThroughProps<TSlotProps, TAsProp, "div"> & {};
</script> </script>
<script lang="ts"> <script lang="ts">

View File

@@ -2,7 +2,7 @@
type TTabProps< type TTabProps<
TSlotProps extends {}, TSlotProps extends {},
TAsProp extends SupportedAs TAsProp extends SupportedAs
> = TPassThroughProps<TSlotProps, TAsProp> & { > = TPassThroughProps<TSlotProps, TAsProp, "button"> & {
disabled?: boolean; disabled?: boolean;
}; };
</script> </script>

View File

@@ -40,7 +40,7 @@
type TTabGroupProps< type TTabGroupProps<
TSlotProps extends {}, TSlotProps extends {},
TAsProp extends SupportedAs TAsProp extends SupportedAs
> = TPassThroughProps<TSlotProps, TAsProp> & { > = TPassThroughProps<TSlotProps, TAsProp, "div"> & {
defaultIndex?: number; defaultIndex?: number;
vertical?: boolean; vertical?: boolean;
manual?: boolean; manual?: boolean;

View File

@@ -2,7 +2,7 @@
type TTabListProps< type TTabListProps<
TSlotProps extends {}, TSlotProps extends {},
TAsProp extends SupportedAs TAsProp extends SupportedAs
> = TPassThroughProps<TSlotProps, TAsProp> & {}; > = TPassThroughProps<TSlotProps, TAsProp, "div"> & {};
</script> </script>
<script lang="ts"> <script lang="ts">

View File

@@ -2,7 +2,7 @@
type TTabPanelProps< type TTabPanelProps<
TSlotProps extends {}, TSlotProps extends {},
TAsProp extends SupportedAs TAsProp extends SupportedAs
> = TPassThroughProps<TSlotProps, TAsProp> & {}; > = TPassThroughProps<TSlotProps, TAsProp, "div"> & {};
</script> </script>
<script lang="ts"> <script lang="ts">

View File

@@ -2,7 +2,7 @@
type TTabPanelsProps< type TTabPanelsProps<
TSlotProps extends {}, TSlotProps extends {},
TAsProp extends SupportedAs TAsProp extends SupportedAs
> = TPassThroughProps<TSlotProps, TAsProp> & {}; > = TPassThroughProps<TSlotProps, TAsProp, "div"> & {};
</script> </script>
<script lang="ts"> <script lang="ts">

View File

@@ -1,6 +1,8 @@
<script lang="ts" context="module"> <script lang="ts" context="module">
export type TTransitionChildProps<TAsProp extends SupportedAs> = export type TTransitionChildProps<
TPassThroughProps<{}, TAsProp> & { TAsProp extends SupportedAs,
TDefaultAs
> = TPassThroughProps<{}, TAsProp, TDefaultAs> & {
enter?: string; enter?: string;
enterFrom?: string; enterFrom?: string;
enterTo?: string; enterTo?: string;
@@ -41,7 +43,7 @@
/***** Props *****/ /***** Props *****/
type TAsProp = $$Generic<SupportedAs>; type TAsProp = $$Generic<SupportedAs>;
type $$Props = TTransitionChildProps<TAsProp>; type $$Props = TTransitionChildProps<TAsProp, "div">;
export let as: SupportedAs = "div"; export let as: SupportedAs = "div";
export let use: HTMLActionArray = []; export let use: HTMLActionArray = [];

View File

@@ -19,7 +19,7 @@
/***** Props *****/ /***** Props *****/
type TAsProp = $$Generic<SupportedAs>; type TAsProp = $$Generic<SupportedAs>;
type $$Props = TTransitionRootProps<TAsProp>; type $$Props = TTransitionRootProps<TAsProp, "div">;
export let as: SupportedAs = "div"; export let as: SupportedAs = "div";
export let use: HTMLActionArray = []; export let use: HTMLActionArray = [];

View File

@@ -1,6 +1,8 @@
<script lang="ts" context="module"> <script lang="ts" context="module">
export type TTransitionRootProps<TAsProp extends SupportedAs> = export type TTransitionRootProps<
TTransitionChildProps<TAsProp> & { TAsProp extends SupportedAs,
TDefaultAs
> = TTransitionChildProps<TAsProp, TDefaultAs> & {
show?: boolean; show?: boolean;
appear?: boolean; appear?: boolean;
}; };
@@ -38,7 +40,7 @@
/***** Props *****/ /***** Props *****/
type TAsProp = $$Generic<SupportedAs>; type TAsProp = $$Generic<SupportedAs>;
type $$Props = TTransitionRootProps<TAsProp>; type $$Props = TTransitionRootProps<TAsProp, "div">;
export let as: SupportedAs = "div"; export let as: SupportedAs = "div";
export let use: HTMLActionArray = []; export let use: HTMLActionArray = [];

View File

@@ -35,10 +35,14 @@
> >
: {}; : {};
type TResolveAs<TAsProp, TDefaultAs> = SupportedAs extends TAsProp
? TDefaultAs
: TAsProp;
type TRenderProps< type TRenderProps<
TSlotProps extends {}, TSlotProps extends {},
TAsProp extends SupportedAs TAsProp extends SupportedAs,
> = TRestProps<TAsProp> & { TDefaultAs
> = TRestProps<TResolveAs<TAsProp, TDefaultAs>> & {
name: string; name: string;
as: TAsProp; as: TAsProp;
slotProps: TSlotProps; slotProps: TSlotProps;
@@ -56,9 +60,10 @@
export type TPassThroughProps< export type TPassThroughProps<
TSlotProps extends {}, TSlotProps extends {},
TAsProp extends SupportedAs TAsProp extends SupportedAs,
TDefaultAs
> = Omit< > = Omit<
TRenderProps<TSlotProps, TAsProp>, TRenderProps<TSlotProps, TAsProp, TDefaultAs>,
TInternalProps | "as" | "static" | "unmount" TInternalProps | "as" | "static" | "unmount"
> & { > & {
as?: TAsProp; as?: TAsProp;
@@ -72,7 +77,7 @@
type TSlotProps = $$Generic<{}>; type TSlotProps = $$Generic<{}>;
type TAsProp = $$Generic<SupportedAs>; type TAsProp = $$Generic<SupportedAs>;
type $$Props = TRenderProps<TSlotProps, TAsProp>; type $$Props = TRenderProps<TSlotProps, TAsProp, TAsProp>;
export let name: string; export let name: string;
export let as: TAsProp; export let as: TAsProp;