Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
16 commits
Select commit Hold shift + click to select a range
536f203
feat: implement FormHelperText base component wrapper for MUI
abhinavkdeval08-design Jun 28, 2026
e344196
refactor: rename file to FormHelperTextIcon and revert package-lock
abhinavkdeval08-design Jul 6, 2026
483690c
refactor: revert filename to FormHelperText.tsx as per maintainer review
abhinavkdeval08-design Jul 6, 2026
f760be4
Merge branch 'master' into feature/implement-form-helper-text
abhinavkdeval08-design Jul 6, 2026
302f373
Merge branch 'master' into feature/implement-form-helper-text
abhinavkdeval08-design Jul 7, 2026
2d07600
Merge branch 'master' into feature/implement-form-helper-text
abhinavkdeval08-design Jul 14, 2026
e18dbff
Merge branch 'master' into feature/implement-form-helper-text
abhinavkdeval08-design Jul 23, 2026
1d33bf0
refactor: replace empty interface with type alias
abhinavkdeval08-design Aug 29, 2026
c4a0a9f
Merge branch 'master' into feature/implement-form-helper-text
abhinavkdeval08-design Aug 29, 2026
0df750f
test: add unit tests for FormHelperText covering render and ref forwa…
abhinavkdeval08-design Aug 30, 2026
27807a7
refactor(FormHelperText): preserve polymorphic component typing and a…
abhinavkdeval08-design Sep 26, 2026
3e583ad
Merge branch 'master' into feature/implement-form-helper-text
abhinavkdeval08-design Sep 26, 2026
a7cadc8
refactor(FormHelperText): resolve ESLint and TypeScript warnings for …
abhinavkdeval08-design Sep 26, 2026
f77f335
Merge branch 'feature/implement-form-helper-text' of https://github.c…
abhinavkdeval08-design Sep 26, 2026
66b92bd
refactor(FormHelperText): align polymorphic ref typing and add custom…
abhinavkdeval08-design Sep 27, 2026
9bbb4e0
refactor(FormHelperText): use HTMLElement ref type to satisfy linter …
abhinavkdeval08-design Sep 27, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 46 additions & 0 deletions src/base/FormHelperText/FormHelperText.test.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
import { render, screen } from '@testing-library/react';
import React from 'react';
import FormHelperText from './FormHelperText';

describe('FormHelperText Component', () => {
it('renders children correctly', () => {
render(<FormHelperText>Sample Helper Text</FormHelperText>);
expect(screen.getByText('Sample Helper Text')).toBeTruthy();
});

it('forwards ref correctly to the underlying HTML element', () => {
const ref = React.createRef<HTMLParagraphElement>();
render(<FormHelperText ref={ref}>Ref Attached Text</FormHelperText>);
expect(ref.current).toBeInstanceOf(HTMLParagraphElement);
expect(ref.current?.textContent).toBe('Ref Attached Text');
});

it('renders with custom component prop', () => {
render(<FormHelperText component="span">Span Helper Text</FormHelperText>);
const element = screen.getByText('Span Helper Text');
expect(element.tagName).toBe('SPAN');
expect(element).toBeTruthy();
});

it('forwards ref correctly when rendered with a custom component', () => {
const ref = React.createRef<HTMLSpanElement>();
render(
<FormHelperText component="span" ref={ref}>
Span Helper Text
</FormHelperText>
);
expect(ref.current).toBeInstanceOf(HTMLSpanElement);
expect(ref.current?.tagName).toBe('SPAN');
});

it('applies custom className and props', () => {
render(
<FormHelperText data-testid="custom-helper" className="custom-class" error>
Error state text
</FormHelperText>
);
const element = screen.getByTestId('custom-helper');
expect(element.className).toContain('custom-class');
expect(element.className).toContain('Mui-error');
});
});
29 changes: 29 additions & 0 deletions src/base/FormHelperText/FormHelperText.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import MuiFormHelperText, {
FormHelperTextProps as MuiFormHelperTextProps,
FormHelperTextTypeMap
} from '@mui/material/FormHelperText';
import { OverridableComponent } from '@mui/material/OverridableComponent';
import React from 'react';

export type SistentFormHelperTextProps<
D extends React.ElementType = FormHelperTextTypeMap['defaultComponent'],
P extends object = object
> = MuiFormHelperTextProps<D, P>;

type FormHelperTextComponent = OverridableComponent<FormHelperTextTypeMap> & {
displayName?: string;
};

export const FormHelperText: FormHelperTextComponent = React.forwardRef(
({ children, ...props }: SistentFormHelperTextProps, ref: React.Ref<HTMLElement>) => {
return (
<MuiFormHelperText ref={ref as React.Ref<HTMLParagraphElement>} {...props}>
{children}
</MuiFormHelperText>
);
}
) as FormHelperTextComponent;

FormHelperText.displayName = 'FormHelperText';

export default FormHelperText;
1 change: 1 addition & 0 deletions src/base/FormHelperText/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export * from './FormHelperText';
1 change: 1 addition & 0 deletions src/base/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -96,3 +96,4 @@ export * from './Toolbar';
export * from './Tooltip';
export * from './Typography';
export * from './Zoom';
export * from './FormHelperText';
Loading