Skip to content

Commit 784ab3d

Browse files
committed
♻️ Gjør komponenten mindre kompleks
Komponenten ble i utgangspunktet kopiert fra et annet sted. Vi hadde lik bruk begge steder den ble brukt.
1 parent 496a1bb commit 784ab3d

File tree

5 files changed

+26
-103
lines changed

5 files changed

+26
-103
lines changed

components/PageHeader/PageHeader.module.css

-27
Original file line numberDiff line numberDiff line change
@@ -30,42 +30,15 @@
3030
flex-direction: column;
3131
}
3232

33-
.navdsPageHeaderLeft > .navdsPageHeaderWrapper {
34-
text-align: left;
35-
}
36-
3733
.navdsPageHeaderCenter > .navdsPageHeaderWrapper {
3834
text-align: center;
3935
}
4036

41-
.navdsPageHeaderIllustration {
42-
margin-right: 1.5rem;
43-
pointer-events: none;
44-
}
45-
46-
.navdsPageHeaderIllustration > svg {
47-
width: 5rem;
48-
height: 5rem;
49-
}
50-
51-
.navdsPageHeaderSituation {
52-
box-shadow: 0 -4px 0 var(--a-orange-400) inset;
53-
}
54-
55-
.navdsPageHeaderProduct {
56-
box-shadow: 0 -4px 0 var(--a-green-400) inset;
57-
}
58-
5937
.navdsPageHeaderGuide {
6038
box-shadow: 0 -4px 0 var(--a-deepblue-400) inset;
6139
}
6240

6341
@media (max-width: 649px) {
64-
.navdsPageHeaderIllustration > svg {
65-
width: 3rem;
66-
height: 3rem;
67-
}
68-
6942
.navdsPageHeaderTitle {
7043
font-size: var(--a-font-size-heading-xlarge);
7144
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import { PageHeader } from 'components/PageHeader/index';
2+
import { render, screen } from 'setUpTest';
3+
4+
describe('PageHeader', () => {
5+
test('har overskrift på nivå 1', () => {
6+
render(<PageHeader>Overskriften</PageHeader>);
7+
expect(screen.getByRole('heading', { level: 1, name: 'Overskriften' })).toBeVisible();
8+
});
9+
});

components/PageHeader/index.tsx

+13-72
Original file line numberDiff line numberDiff line change
@@ -1,78 +1,19 @@
1-
import React, { forwardRef, HTMLAttributes, useMemo } from 'react';
2-
import { BodyShort, Heading } from '@navikt/ds-react';
1+
import React from 'react';
2+
import { Heading } from '@navikt/ds-react';
33
import * as classes from 'components/PageHeader/PageHeader.module.css';
44

5-
export interface PageHeaderProps extends HTMLAttributes<HTMLDivElement> {
6-
/**
7-
* PageHeader title
8-
*/
5+
export interface PageHeaderProps {
96
children: string | React.ReactNode;
10-
/**
11-
* Pictogram placed in PageHeader
12-
*/
13-
illustration?: React.ReactNode;
14-
/**
15-
* Short text placed under title
16-
*/
17-
description?: string;
18-
/**
19-
* Predefined variants for PageHeader
20-
* @default "guide"
21-
*/
22-
variant?: 'situation' | 'product' | 'guide';
23-
/**
24-
* Decides how to align content
25-
* @default "left"
26-
*/
27-
align?: 'left' | 'center';
287
}
298

30-
// eslint-disable-next-line react/display-name
31-
const PageHeader = forwardRef<HTMLDivElement, PageHeaderProps>(
32-
(
33-
{ children, className, illustration, description, variant = 'guide', align = 'left', ...rest },
34-
ref
35-
) => {
36-
const variantClass = useMemo(() => {
37-
switch (variant) {
38-
case 'situation':
39-
return 'navdsPageHeaderSituation';
40-
case 'product':
41-
return 'navdsPageHeaderProduct';
42-
default:
43-
return 'navdsPageHeaderGuide';
44-
}
45-
}, [variant]);
46-
const alignClass = useMemo(() => {
47-
switch (align) {
48-
case 'center':
49-
return 'navdsPageHeaderCenter';
50-
default:
51-
return 'navdsPageHeaderLeft';
52-
}
53-
}, [align]);
54-
return (
55-
<div className={classes?.pageHeaderWrapper}>
56-
<div
57-
ref={ref}
58-
className={`${classes?.navdsPageHeader} ${className} ${classes?.[variantClass]} ${classes?.[alignClass]}`}
59-
{...rest}
60-
>
61-
{illustration && (
62-
<div className={classes?.navdsPageHeaderIllustration}>{illustration}</div>
63-
)}
64-
<div className="navdsPageHeaderWrapper">
65-
<Heading className="navdsPageHeaderTitle" size="xlarge" level="1">
66-
{children}
67-
</Heading>
68-
{description && (
69-
<BodyShort className="navdsPageHeaderDescription">{description}</BodyShort>
70-
)}
71-
</div>
72-
</div>
9+
export const PageHeader = ({ children }: PageHeaderProps) => {
10+
return (
11+
<div className={classes.pageHeaderWrapper}>
12+
<div className={`${classes.navdsPageHeader} ${classes.navdsPageHeaderGuide} ${classes.navdsPageHeaderCenter}`}>
13+
<Heading size="xlarge" level="1">
14+
{children}
15+
</Heading>
7316
</div>
74-
);
75-
}
76-
);
77-
78-
export default PageHeader;
17+
</div>
18+
);
19+
};

pages/[uuid]/ettersendelse/index.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { BodyShort, Button, Heading, Label, Link, ReadMore } from '@navikt/ds-react';
22
import { LucaGuidePanel, ScanningGuide, Vedlegg } from '@navikt/aap-felles-react';
33
import { GetServerSidePropsResult, NextPageContext } from 'next';
4-
import PageHeader from 'components/PageHeader';
4+
import { PageHeader } from 'components/PageHeader';
55
import { Section } from 'components/Section/Section';
66
import { Søknad, VedleggType } from 'lib/types/types';
77
import * as styles from 'pages/[uuid]/ettersendelse/Ettersendelse.module.css';
@@ -56,7 +56,7 @@ const Index = ({ søknad }: PageProps) => {
5656
)} - nav.no`}
5757
</title>
5858
</Head>
59-
<PageHeader align="center" variant="guide">
59+
<PageHeader>
6060
{formatMessage(
6161
{ id: 'ettersendelse.appTittel' },
6262
{

pages/ettersendelse.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { ReadMore, Label, BodyShort, Button, Heading, Link } from '@navikt/ds-react';
2-
import PageHeader from 'components/PageHeader';
2+
import { PageHeader } from 'components/PageHeader';
33
import { Section } from 'components/Section/Section';
44
import { beskyttetSide, getAccessToken } from '@navikt/aap-felles-utils';
55
import { GetServerSidePropsResult, NextPageContext } from 'next';
@@ -40,7 +40,7 @@ const Ettersendelse = () => {
4040
)} - nav.no`}
4141
</title>
4242
</Head>
43-
<PageHeader align="center" variant="guide">
43+
<PageHeader>
4444
{formatMessage(
4545
{ id: 'ettersendelse.appTittel' },
4646
{

0 commit comments

Comments
 (0)