diff options
| author | Armand Philippot <git@armandphilippot.com> | 2022-05-16 12:46:38 +0200 | 
|---|---|---|
| committer | Armand Philippot <git@armandphilippot.com> | 2022-05-16 12:46:38 +0200 | 
| commit | 2155550fa36a3bc3c8f66e0926530123b4018cd4 (patch) | |
| tree | 1b7472d7ceeb9c95b2c6de6440b48b94405e155e /src/components/templates/sectioned | |
| parent | 8a55aa83bd4b64d1d989cb49b7d9c3fdc1cc6ea5 (diff) | |
refactor: use custom hook for breadcrumb items and schema
Diffstat (limited to 'src/components/templates/sectioned')
3 files changed, 26 insertions, 15 deletions
| diff --git a/src/components/templates/sectioned/sectioned-layout.stories.tsx b/src/components/templates/sectioned/sectioned-layout.stories.tsx index 9ff3b75..ce31a83 100644 --- a/src/components/templates/sectioned/sectioned-layout.stories.tsx +++ b/src/components/templates/sectioned/sectioned-layout.stories.tsx @@ -1,5 +1,4 @@  import { ComponentMeta, ComponentStory } from '@storybook/react'; -import { IntlProvider } from 'react-intl';  import SectionedLayoutComponent from './sectioned-layout';  /** @@ -8,7 +7,21 @@ import SectionedLayoutComponent from './sectioned-layout';  export default {    title: 'Templates/Sectioned',    component: SectionedLayoutComponent, +  args: { +    breadcrumbSchema: [], +  },    argTypes: { +    breadcrumbSchema: { +      control: { +        type: null, +      }, +      description: 'The JSON schema for breadcrumb items.', +      type: { +        name: 'object', +        required: true, +        value: {}, +      }, +    },      sections: {        description: 'The different sections.',        type: { @@ -18,15 +31,6 @@ export default {        },      },    }, -  decorators: [ -    (Story) => ( -      <IntlProvider locale="en"> -        <div id="__next"> -          <Story /> -        </div> -      </IntlProvider> -    ), -  ],    parameters: {      layout: 'fullscreen',    }, diff --git a/src/components/templates/sectioned/sectioned-layout.test.tsx b/src/components/templates/sectioned/sectioned-layout.test.tsx index 334d1cc..9b8bab5 100644 --- a/src/components/templates/sectioned/sectioned-layout.test.tsx +++ b/src/components/templates/sectioned/sectioned-layout.test.tsx @@ -1,6 +1,8 @@  import { render, screen } from '@test-utils'; +import { BreadcrumbList } from 'schema-dts';  import SectionedLayout from './sectioned-layout'; +const breadcrumbSchema: BreadcrumbList['itemListElement'][] = [];  const sections = [    {      title: 'Section 1', @@ -26,7 +28,12 @@ const sections = [  describe('SectionedLayout', () => {    it('renders the correct number of section', () => { -    render(<SectionedLayout sections={sections} />); +    render( +      <SectionedLayout +        breadcrumbSchema={breadcrumbSchema} +        sections={sections} +      /> +    );      expect(screen.getAllByRole('heading', { name: /^Section/ })).toHaveLength(        sections.length      ); diff --git a/src/components/templates/sectioned/sectioned-layout.tsx b/src/components/templates/sectioned/sectioned-layout.tsx index 36ca039..58d5ad0 100644 --- a/src/components/templates/sectioned/sectioned-layout.tsx +++ b/src/components/templates/sectioned/sectioned-layout.tsx @@ -3,11 +3,11 @@ import Section, {    type SectionVariant,  } from '@components/atoms/layout/section';  import { FC } from 'react'; -import Layout from '../layout/layout'; +import Layout, { type LayoutProps } from '../layout/layout';  export type Section = Pick<SectionProps, 'content' | 'title'>; -export type SectionedLayoutProps = { +export type SectionedLayoutProps = Pick<LayoutProps, 'breadcrumbSchema'> & {    /**     * An array of objects describing each section.     */ @@ -19,7 +19,7 @@ export type SectionedLayoutProps = {   *   * Render a sectioned layout.   */ -const SectionedLayout: FC<SectionedLayoutProps> = ({ sections }) => { +const SectionedLayout: FC<SectionedLayoutProps> = ({ sections, ...props }) => {    const getSections = (items: SectionProps[]) => {      return items.map((section, index) => {        const variant: SectionVariant = index % 2 ? 'light' : 'dark'; @@ -37,7 +37,7 @@ const SectionedLayout: FC<SectionedLayoutProps> = ({ sections }) => {      });    }; -  return <Layout>{getSections(sections)}</Layout>; +  return <Layout {...props}>{getSections(sections)}</Layout>;  };  export default SectionedLayout; | 
