diff options
| author | Armand Philippot <git@armandphilippot.com> | 2022-04-16 16:08:49 +0200 |
|---|---|---|
| committer | Armand Philippot <git@armandphilippot.com> | 2022-04-16 16:41:30 +0200 |
| commit | 5a6e4eea16047083e2de0e91a1b3ed9be8d6eb68 (patch) | |
| tree | ea0c5390aca73907aade5321f30cb7bf8d3ab1cb /src/components/organisms/toolbar | |
| parent | daffe6e8b9e2021ffb9d006482143bc4db985f02 (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/organisms/toolbar')
| -rw-r--r-- | src/components/organisms/toolbar/main-nav.tsx | 18 | ||||
| -rw-r--r-- | src/components/organisms/toolbar/search.tsx | 16 | ||||
| -rw-r--r-- | src/components/organisms/toolbar/settings.tsx | 14 | ||||
| -rw-r--r-- | src/components/organisms/toolbar/toolbar.tsx | 4 |
4 files changed, 29 insertions, 23 deletions
diff --git a/src/components/organisms/toolbar/main-nav.tsx b/src/components/organisms/toolbar/main-nav.tsx index 50bbe8b..35e3fd6 100644 --- a/src/components/organisms/toolbar/main-nav.tsx +++ b/src/components/organisms/toolbar/main-nav.tsx @@ -1,17 +1,20 @@ import Checkbox, { type CheckboxProps } from '@components/atoms/forms/checkbox'; import Label from '@components/atoms/forms/label'; import Hamburger from '@components/atoms/icons/hamburger'; -import Nav, { type NavItem } from '@components/molecules/nav/nav'; -import { VFC } from 'react'; +import Nav, { + type NavProps, + type NavItem, +} from '@components/molecules/nav/nav'; +import { FC } from 'react'; import { useIntl } from 'react-intl'; -import sharedStyles from './toolbar-items.module.scss'; import mainNavStyles from './main-nav.module.scss'; +import sharedStyles from './toolbar-items.module.scss'; export type MainNavProps = { /** * Set additional classnames to the nav element. */ - className?: string; + className?: NavProps['className']; /** * The button state. */ @@ -26,7 +29,12 @@ export type MainNavProps = { setIsActive: CheckboxProps['setValue']; }; -const MainNav: VFC<MainNavProps> = ({ +/** + * MainNav component + * + * Render the main navigation. + */ +const MainNav: FC<MainNavProps> = ({ className = '', isActive, items, diff --git a/src/components/organisms/toolbar/search.tsx b/src/components/organisms/toolbar/search.tsx index 070bce0..72cd576 100644 --- a/src/components/organisms/toolbar/search.tsx +++ b/src/components/organisms/toolbar/search.tsx @@ -1,17 +1,17 @@ -import Checkbox, { CheckboxProps } from '@components/atoms/forms/checkbox'; +import Checkbox, { type CheckboxProps } from '@components/atoms/forms/checkbox'; import Label from '@components/atoms/forms/label'; import MagnifyingGlass from '@components/atoms/icons/magnifying-glass'; -import { VFC } from 'react'; +import { FC } from 'react'; import { useIntl } from 'react-intl'; -import SearchModal from '../modals/search-modal'; -import sharedStyles from './toolbar-items.module.scss'; +import SearchModal, { type SearchModalProps } from '../modals/search-modal'; import searchStyles from './search.module.scss'; +import sharedStyles from './toolbar-items.module.scss'; export type SearchProps = { /** * Set additional classnames to the modal wrapper. */ - className?: string; + className?: SearchModalProps['className']; /** * The button state. */ @@ -22,11 +22,7 @@ export type SearchProps = { setIsActive: CheckboxProps['setValue']; }; -const Search: VFC<SearchProps> = ({ - className = '', - isActive, - setIsActive, -}) => { +const Search: FC<SearchProps> = ({ className = '', isActive, setIsActive }) => { const intl = useIntl(); const label = isActive ? intl.formatMessage({ diff --git a/src/components/organisms/toolbar/settings.tsx b/src/components/organisms/toolbar/settings.tsx index 88539fb..3b10226 100644 --- a/src/components/organisms/toolbar/settings.tsx +++ b/src/components/organisms/toolbar/settings.tsx @@ -1,11 +1,13 @@ -import Checkbox, { CheckboxProps } from '@components/atoms/forms/checkbox'; +import Checkbox, { type CheckboxProps } from '@components/atoms/forms/checkbox'; import Label from '@components/atoms/forms/label'; import Cog from '@components/atoms/icons/cog'; -import { VFC } from 'react'; +import { FC } from 'react'; import { useIntl } from 'react-intl'; -import SettingsModal from '../modals/settings-modal'; -import sharedStyles from './toolbar-items.module.scss'; +import SettingsModal, { + type SettingsModalProps, +} from '../modals/settings-modal'; import settingsStyles from './settings.module.scss'; +import sharedStyles from './toolbar-items.module.scss'; export type SettingsProps = { /** @@ -23,10 +25,10 @@ export type SettingsProps = { /** * Set additional classnames to the tooltip wrapper. */ - tooltipClassName?: string; + tooltipClassName?: SettingsModalProps['tooltipClassName']; }; -const Settings: VFC<SettingsProps> = ({ +const Settings: FC<SettingsProps> = ({ className = '', isActive, setIsActive, diff --git a/src/components/organisms/toolbar/toolbar.tsx b/src/components/organisms/toolbar/toolbar.tsx index 81e80cf..f1ce530 100644 --- a/src/components/organisms/toolbar/toolbar.tsx +++ b/src/components/organisms/toolbar/toolbar.tsx @@ -1,4 +1,4 @@ -import { useState, VFC } from 'react'; +import { FC, useState } from 'react'; import MainNav, { type MainNavProps } from '../toolbar/main-nav'; import Search from '../toolbar/search'; import Settings from '../toolbar/settings'; @@ -20,7 +20,7 @@ export type ToolbarProps = { * * Render the website toolbar. */ -const Toolbar: VFC<ToolbarProps> = ({ className = '', nav }) => { +const Toolbar: FC<ToolbarProps> = ({ className = '', nav }) => { const [isNavOpened, setIsNavOpened] = useState<boolean>(false); const [isSettingsOpened, setIsSettingsOpened] = useState<boolean>(false); const [isSearchOpened, setIsSearchOpened] = useState<boolean>(false); |
