aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/molecules/forms/labelled-field/labelled-field.tsx
diff options
context:
space:
mode:
authorArmand Philippot <git@armandphilippot.com>2023-10-05 18:58:30 +0200
committerArmand Philippot <git@armandphilippot.com>2023-11-11 18:14:41 +0100
commitfb860884857da73ee5b5e897745301cdf1d770a2 (patch)
tree3aaf3c192b3375a7e1bf2dbf9daa866be357a2f5 /src/components/molecules/forms/labelled-field/labelled-field.tsx
parente97325a2c174a87c29593d1b42b9a1cc1eaf11af (diff)
refactor(components): make form components compliant with Eslint rules
Diffstat (limited to 'src/components/molecules/forms/labelled-field/labelled-field.tsx')
-rw-r--r--src/components/molecules/forms/labelled-field/labelled-field.tsx43
1 files changed, 28 insertions, 15 deletions
diff --git a/src/components/molecules/forms/labelled-field/labelled-field.tsx b/src/components/molecules/forms/labelled-field/labelled-field.tsx
index af492b3..ea0bd67 100644
--- a/src/components/molecules/forms/labelled-field/labelled-field.tsx
+++ b/src/components/molecules/forms/labelled-field/labelled-field.tsx
@@ -1,5 +1,10 @@
-import { FC, HTMLAttributes, ReactElement } from 'react';
import {
+ forwardRef,
+ type HTMLAttributes,
+ type ReactElement,
+ type ForwardRefRenderFunction,
+} from 'react';
+import type {
CheckboxProps,
InputProps,
LabelProps,
@@ -37,27 +42,35 @@ export type LabelledFieldProps = Omit<
label: ReactElement<LabelProps>;
};
-/**
- * LabelledField component
- *
- * Render a field tied to a label.
- */
-export const LabelledField: FC<LabelledFieldProps> = ({
- className = '',
- field,
- isInline = false,
- isReversedOrder = false,
- label,
- ...props
-}) => {
+const LabelledFieldWithRef: ForwardRefRenderFunction<
+ HTMLDivElement,
+ LabelledFieldProps
+> = (
+ {
+ className = '',
+ field,
+ isInline = false,
+ isReversedOrder = false,
+ label,
+ ...props
+ },
+ ref
+) => {
const layoutClass = isInline ? 'wrapper--inline' : 'wrapper--stack';
const orderClass = isReversedOrder ? 'wrapper--reverse' : '';
const wrapperClass = `${styles.wrapper} ${styles[layoutClass]} ${styles[orderClass]} ${className}`;
return (
- <div {...props} className={wrapperClass}>
+ <div {...props} className={wrapperClass} ref={ref}>
{label}
{field}
</div>
);
};
+
+/**
+ * LabelledField component
+ *
+ * Render a field tied to a label.
+ */
+export const LabelledField = forwardRef(LabelledFieldWithRef);