@@ -129,6 +129,60 @@ const classComponentNested = `class Car extends React.Component {
129129 }
130130}` ;
131131
132+ const reactForwardRef = /* tsx */ `
133+ export const InternalLink = React.forwardRef<HTMLAnchorElement, InternalLinkProps>(
134+ ({ variant, ...props }, ref) => (
135+ <Link
136+ data-component="InternalLink"
137+ ref={ref}
138+ className={classNames(css.link, { [css.inverse]: variant === 'inverse' })}
139+ {...props}
140+ >
141+ {props.children}
142+ </Link>
143+ ),
144+ );` ;
145+
146+ const reactForwardRefError = /* tsx */ `
147+ export const InternalLink = React.forwardRef<HTMLAnchorElement, InternalLinkProps>(
148+ ({ variant, ...props }, ref) => (
149+ <Link
150+ ref={ref}
151+ className={classNames(css.link, { [css.inverse]: variant === 'inverse' })}
152+ {...props}
153+ >
154+ {props.children}
155+ </Link>
156+ ),
157+ );` ;
158+
159+ const forwardRef = /* tsx */ `
160+ export const InternalLink = forwardRef<HTMLAnchorElement, InternalLinkProps>(
161+ ({ variant, ...props }, ref) => (
162+ <Link
163+ data-component="InternalLink"
164+ ref={ref}
165+ className={classNames(css.link, { [css.inverse]: variant === 'inverse' })}
166+ {...props}
167+ >
168+ {props.children}
169+ </Link>
170+ ),
171+ );` ;
172+
173+ const forwardRefError = /* tsx */ `
174+ export const InternalLink = forwardRef<HTMLAnchorElement, InternalLinkProps>(
175+ ({ variant, ...props }, ref) => (
176+ <Link
177+ ref={ref}
178+ className={classNames(css.link, { [css.inverse]: variant === 'inverse' })}
179+ {...props}
180+ >
181+ {props.children}
182+ </Link>
183+ ),
184+ );` ;
185+
132186const tests = {
133187 'data-component' : {
134188 // Require the actual rule definition
@@ -174,6 +228,12 @@ const tests = {
174228 // Multiple return paths should not trigger the eslint warning
175229 code : fragmentsWontUpdate ,
176230 } ,
231+ {
232+ code : reactForwardRef ,
233+ } ,
234+ {
235+ code : forwardRef ,
236+ } ,
177237 ] ,
178238 invalid : [
179239 {
@@ -220,6 +280,20 @@ const tests = {
220280 'Component2 is missing the data-component attribute for the top-level element.' ,
221281 ] ,
222282 } ,
283+ {
284+ code : reactForwardRefError ,
285+ output : reactForwardRef ,
286+ errors : [
287+ 'InternalLink is missing the data-component attribute for the top-level element.' ,
288+ ] ,
289+ } ,
290+ {
291+ code : forwardRefError ,
292+ output : forwardRef ,
293+ errors : [
294+ 'InternalLink is missing the data-component attribute for the top-level element.' ,
295+ ] ,
296+ } ,
223297 ] ,
224298 } ,
225299 } ,
0 commit comments