aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/molecules/modals
diff options
context:
space:
mode:
authorArmand Philippot <git@armandphilippot.com>2022-04-16 16:08:49 +0200
committerArmand Philippot <git@armandphilippot.com>2022-04-16 16:41:30 +0200
commit5a6e4eea16047083e2de0e91a1b3ed9be8d6eb68 (patch)
treeea0c5390aca73907aade5321f30cb7bf8d3ab1cb /src/components/molecules/modals
parentdaffe6e8b9e2021ffb9d006482143bc4db985f02 (diff)
refactor: support React 18
I replaced the deprecated VFC type with FC type and made all children explicits. Formatjs is still not compatible with React 18 so I need to skip type checking when comitting. There are some type errors because of IntlProvider in Storybook stories.
Diffstat (limited to 'src/components/molecules/modals')
-rw-r--r--src/components/molecules/modals/modal.test.tsx13
-rw-r--r--src/components/molecules/modals/modal.tsx14
-rw-r--r--src/components/molecules/modals/tooltip.tsx4
3 files changed, 22 insertions, 9 deletions
diff --git a/src/components/molecules/modals/modal.test.tsx b/src/components/molecules/modals/modal.test.tsx
index 14fb224..9a0e237 100644
--- a/src/components/molecules/modals/modal.test.tsx
+++ b/src/components/molecules/modals/modal.test.tsx
@@ -1,9 +1,18 @@
import { render, screen } from '@test-utils';
import Modal from './modal';
+const title = 'A custom title';
+const children =
+ 'Labore ullam delectus sit modi quam dolores. Ratione id sint aliquid facilis ipsum. Unde necessitatibus provident minus.';
+
describe('Modal', () => {
it('renders a title', () => {
- render(<Modal title="A custom title" />);
- expect(screen.getByText('A custom title')).toBeInTheDocument();
+ render(<Modal title={title}>{children}</Modal>);
+ expect(screen.getByText(title)).toBeInTheDocument();
+ });
+
+ it('renders the modal body', () => {
+ render(<Modal title={title}>{children}</Modal>);
+ expect(screen.getByText(children)).toBeInTheDocument();
});
});
diff --git a/src/components/molecules/modals/modal.tsx b/src/components/molecules/modals/modal.tsx
index 52ada57..58f5fa0 100644
--- a/src/components/molecules/modals/modal.tsx
+++ b/src/components/molecules/modals/modal.tsx
@@ -1,21 +1,25 @@
-import Heading from '@components/atoms/headings/heading';
-import { CogProps } from '@components/atoms/icons/cog';
-import { MagnifyingGlassProps } from '@components/atoms/icons/magnifying-glass';
+import Heading, { type HeadingProps } from '@components/atoms/headings/heading';
+import { type CogProps } from '@components/atoms/icons/cog';
+import { type MagnifyingGlassProps } from '@components/atoms/icons/magnifying-glass';
import dynamic from 'next/dynamic';
-import { FC } from 'react';
+import { FC, ReactNode } from 'react';
import styles from './modal.module.scss';
export type Icons = 'cogs' | 'search';
export type ModalProps = {
/**
+ * The modal body.
+ */
+ children: ReactNode;
+ /**
* Set additional classnames.
*/
className?: string;
/**
* Set additional classnames to the heading.
*/
- headingClassName?: string;
+ headingClassName?: HeadingProps['className'];
/**
* A icon to illustrate the modal.
*/
diff --git a/src/components/molecules/modals/tooltip.tsx b/src/components/molecules/modals/tooltip.tsx
index 73f36e7..80721f3 100644
--- a/src/components/molecules/modals/tooltip.tsx
+++ b/src/components/molecules/modals/tooltip.tsx
@@ -1,5 +1,5 @@
import List, { type ListItem } from '@components/atoms/lists/list';
-import { ReactNode, VFC } from 'react';
+import { FC, ReactNode } from 'react';
import styles from './tooltip.module.scss';
export type TooltipProps = {
@@ -26,7 +26,7 @@ export type TooltipProps = {
*
* Render a tooltip modal.
*/
-const Tooltip: VFC<TooltipProps> = ({
+const Tooltip: FC<TooltipProps> = ({
className = '',
content,
icon,