Skip to content

Commit bace059

Browse files
committed
init
1 parent 3f59dad commit bace059

File tree

3 files changed

+75
-0
lines changed

3 files changed

+75
-0
lines changed

src/components/parts/PartsMapper.tsx

+3
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ import { MainArticleLegacyPart } from 'components/parts/_legacy/main-article/Mai
3232
import { PublishingCalendarLegacyPart } from 'components/parts/_legacy/publishing-calendar/PublishingCalendarLegacyPart';
3333
import { PublishingCalendarEntryLegacyPart } from 'components/parts/_legacy/publishing-calendar/PublishingCalendarEntryLegacyPart';
3434
import { ComponentEditorProps } from 'components/ComponentMapper';
35+
import { FrontpagePersonShortcutsPart } from 'components/parts/frontpage-person-shortcuts/FrontpagePersonShortcutsPart';
3536
import { AlertBoxPart } from './alert-box/AlertBoxPart';
3637
import { LinkPanelPart } from './linkPanelPart/LinkPanelPart';
3738
import { LinkPanelsLegacyPart } from './_legacy/link-panels/LinkPanelsLegacyPart';
@@ -95,6 +96,8 @@ const PartComponentMapper = ({
9596
return <FrontpageCurrentTopicsPart {...partProps} />;
9697
case PartType.FrontpageShortcuts:
9798
return <FrontpageShortcutsPart {...partProps} />;
99+
case PartType.FrontpagePersonShortcuts:
100+
return <FrontpagePersonShortcutsPart {...partProps} />;
98101
case PartType.Header:
99102
return <HeaderPart {...partProps} />;
100103
case PartType.HtmlArea:
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
import React from 'react';
2+
import { Header } from 'components/_common/headers/Header';
3+
import { EditorHelp } from 'components/_editor-only/editor-help/EditorHelp';
4+
import { LinkPanelNavnoSimple } from 'components/_common/linkpanel/LinkPanelNavnoSimple/LinkPanelNavnoSimple';
5+
import { PartComponentProps, PartType } from 'types/component-props/parts';
6+
import { Icon } from 'types/content-props/pictograms';
7+
8+
type Shortcut = {
9+
target: {
10+
_path: string;
11+
displayName: string;
12+
data: {
13+
url?: string;
14+
icon?: Icon;
15+
title?: string;
16+
};
17+
};
18+
customTitle: string;
19+
customIcon?: Icon;
20+
};
21+
22+
export type PartConfigFrontpagePersonShortcuts = {
23+
title?: string;
24+
shortcuts: Shortcut[];
25+
};
26+
27+
export const FrontpagePersonShortcutsPart = ({
28+
config,
29+
}: PartComponentProps<PartType.FrontpagePersonShortcuts>) => {
30+
const { shortcuts, title: sectionTitle } = config;
31+
32+
if (!shortcuts || shortcuts.length === 0) {
33+
return <EditorHelp text={'Velg minst en snarvei'} />;
34+
}
35+
36+
return (
37+
<div>
38+
{sectionTitle && (
39+
<Header size="large" level="2">
40+
{sectionTitle}
41+
</Header>
42+
)}
43+
<ul>
44+
{shortcuts.map((item) => {
45+
const { target, customTitle } = item;
46+
if (!target?.data) {
47+
return null;
48+
}
49+
50+
const href = target.data.url || target._path;
51+
const title = customTitle || target.data.title || target.displayName;
52+
// const illustration = customIllustration || target.data.illustration;
53+
54+
return (
55+
<li key={title}>
56+
<LinkPanelNavnoSimple
57+
href={href}
58+
analyticsLinkGroup={title}
59+
// icon={<IllustrationStatic illustration={illustration} />}
60+
>
61+
{title}
62+
</LinkPanelNavnoSimple>
63+
</li>
64+
);
65+
})}
66+
</ul>
67+
</div>
68+
);
69+
};

src/types/component-props/parts.ts

+3
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import { PartConfigFormDetails } from 'components/parts/form-details/FormDetails
1212
import { PartConfigFrontpageContact } from 'components/parts/frontpage-contact/FrontpageContactPart';
1313
import { PartConfigFrontpageCurrentTopics } from 'components/parts/frontpage-current-topics/FrontpageCurrentTopicsPart';
1414
import { PartConfigFrontpageShortcuts } from 'components/parts/frontpage-shortcuts/FrontpageShortcutsPart';
15+
import { PartConfigFrontpagePersonShortcuts } from 'components/parts/frontpage-person-shortcuts/FrontpagePersonShortcutsPart';
1516
import { PartConfigHeader } from 'components/parts/header/HeaderPart';
1617
import { PartConfigHtmlArea } from 'components/parts/html-area/HtmlAreaPart';
1718
import { PartConfigLinkList } from 'components/parts/link-list/LinkListPart';
@@ -60,6 +61,7 @@ export enum PartType {
6061
FrontpageContact = 'no.nav.navno:frontpage-contact',
6162
FrontpageCurrentTopics = 'no.nav.navno:frontpage-current-topics',
6263
FrontpageShortcuts = 'no.nav.navno:frontpage-shortcuts',
64+
FrontpagePersonShortcuts = 'no.nav.navno:frontpage-person-shortcuts',
6365
UxSignalsWidget = 'no.nav.navno:uxsignals-widget',
6466
UserTests = 'no.nav.navno:user-tests',
6567
ReadMore = 'no.nav.navno:read-more',
@@ -103,6 +105,7 @@ type PartConfigs = {
103105
[PartType.FrontpageContact]: PartConfigFrontpageContact;
104106
[PartType.FrontpageCurrentTopics]: PartConfigFrontpageCurrentTopics;
105107
[PartType.FrontpageShortcuts]: PartConfigFrontpageShortcuts;
108+
[PartType.FrontpagePersonShortcuts]: PartConfigFrontpagePersonShortcuts;
106109
[PartType.Header]: PartConfigHeader;
107110
[PartType.HtmlArea]: PartConfigHtmlArea;
108111
[PartType.LinkList]: PartConfigLinkList;

0 commit comments

Comments
 (0)