From 97e4f6874e8fddbb46d49733329a9c111e5de0a1 Mon Sep 17 00:00:00 2001 From: Donny Verduijn Date: Sat, 12 Oct 2024 01:26:05 +0200 Subject: [PATCH] Update create-polymorphic-component.ts Prevents TypeScript from showing the error: "Expression produces a union type that is too complex to represent.", when props are extended from interfaces such as StackProps and provided as explicit type to createPolymorphicComponent. --- .../core/factory/create-polymorphic-component.ts | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/packages/@mantine/core/src/core/factory/create-polymorphic-component.ts b/packages/@mantine/core/src/core/factory/create-polymorphic-component.ts index 5bc066e577..cdaa15e327 100644 --- a/packages/@mantine/core/src/core/factory/create-polymorphic-component.ts +++ b/packages/@mantine/core/src/core/factory/create-polymorphic-component.ts @@ -18,12 +18,19 @@ export type PolymorphicRef = C extends React.ElementType ? React.ComponentPropsWithRef['ref'] : never; -export type PolymorphicComponentProps = C extends React.ElementType - ? InheritedProps> & { +export type PolymorphicComponentProps = C extends React.ElementType + ? InheritedProps> & { ref?: PolymorphicRef; renderRoot?: (props: any) => any; } - : Props & { component: React.ElementType; renderRoot?: (props: Record) => any }; + : Props extends Record + ? Props & FallbackProps + : FallbackProps; + +type FallbackProps = { + component: React.ElementType; + renderRoot?: (props: Record) => any; +}; export function createPolymorphicComponent< ComponentDefaultType,