@@ -16,6 +16,7 @@ import toStyle from 'css-to-style';
1616
1717import { isReactNode } from '../renderer/react-node' ;
1818import { renderComponent , renderFunc , renderTemplate } from '../renderer/renderprop-helpers' ;
19+ import { ExternalReactContentProps } from '../renderer/react-content' ;
1920import { unreachable } from '../utils/types/unreachable' ;
2021
2122type AttributeNameAlternative = [ string , string | undefined ] ;
@@ -133,32 +134,34 @@ export abstract class ReactWrapperComponent<TProps extends {}> implements AfterV
133134 /**
134135 * Create an JSX renderer for an `@Input` property.
135136 * @param input The input property
137+ * @param additionalProps optional additional props to pass to the `ReactContent` object that will render the content.
136138 */
137139 protected createInputJsxRenderer < TContext extends object > (
138- input : InputRendererOptions < TContext >
140+ input : InputRendererOptions < TContext > ,
141+ additionalProps ?: ExternalReactContentProps
139142 ) : JsxRenderFunc < TContext > | undefined {
140143 if ( input === undefined ) {
141144 return undefined ;
142145 }
143146
144147 if ( input instanceof TemplateRef ) {
145- return ( context : TContext ) => renderTemplate ( input , context ) ;
148+ return ( context : TContext ) => renderTemplate ( input , context , additionalProps ) ;
146149 }
147150
148151 if ( input instanceof ComponentRef ) {
149- return ( context : TContext ) => renderComponent ( input , context ) ;
152+ return ( context : TContext ) => renderComponent ( input , context , additionalProps ) ;
150153 }
151154
152155 if ( input instanceof Function ) {
153- return ( context : TContext ) => renderFunc ( input , context ) ;
156+ return ( context : TContext ) => renderFunc ( input , context , additionalProps ) ;
154157 }
155158
156159 if ( typeof input === 'object' ) {
157160 const { componentType, factoryResolver, injector } = input ;
158161 const componentFactory = factoryResolver . resolveComponentFactory ( componentType ) ;
159162 const componentRef = componentFactory . create ( injector ) ;
160163
161- return ( context : TContext ) => renderComponent ( componentRef , context ) ;
164+ return ( context : TContext ) => renderComponent ( componentRef , context , additionalProps ) ;
162165 }
163166
164167 unreachable ( input ) ;
@@ -168,12 +171,14 @@ export abstract class ReactWrapperComponent<TProps extends {}> implements AfterV
168171 * Create an event handler for a render prop
169172 * @param renderInputValue the value of the render `@Input` property.
170173 * @param jsxRenderer an optional renderer to use.
174+ * @param additionalProps optional additional props to pass to the `ReactContent` object that will render the content.
171175 */
172176 protected createRenderPropHandler < TProps extends object > (
173177 renderInputValue : InputRendererOptions < TProps > ,
174- jsxRenderer ?: JsxRenderFunc < TProps >
178+ jsxRenderer ?: JsxRenderFunc < TProps > ,
179+ additionalProps ?: ExternalReactContentProps
175180 ) : ( props ?: TProps , defaultRender ?: JsxRenderFunc < TProps > ) => JSX . Element | null {
176- const renderer = jsxRenderer || this . createInputJsxRenderer ( renderInputValue ) ;
181+ const renderer = jsxRenderer || this . createInputJsxRenderer ( renderInputValue , additionalProps ) ;
177182
178183 return ( props ?: TProps , defaultRender ?: JsxRenderFunc < TProps > ) => {
179184 if ( ! renderInputValue ) {
0 commit comments