@ndla/ui 45.0.16 → 46.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/es/Article/Article.js +3 -3
- package/es/AudioPlayer/index.js +0 -2
- package/es/Embed/conceptComponents.js +15 -8
- package/es/Figure/Figure.js +11 -89
- package/es/Figure/index.js +1 -3
- package/es/Notion/index.js +1 -3
- package/es/all.css +1 -1
- package/es/index.js +3 -4
- package/es/locale/messages-en.js +7 -2
- package/es/locale/messages-nb.js +7 -2
- package/es/locale/messages-nn.js +7 -2
- package/es/locale/messages-se.js +7 -2
- package/es/locale/messages-sma.js +7 -2
- package/lib/Article/Article.js +3 -3
- package/lib/AudioPlayer/index.d.ts +0 -2
- package/lib/AudioPlayer/index.js +0 -7
- package/lib/Embed/conceptComponents.js +17 -10
- package/lib/Figure/Figure.d.ts +0 -38
- package/lib/Figure/Figure.js +20 -96
- package/lib/Figure/index.d.ts +1 -3
- package/lib/Figure/index.js +2 -17
- package/lib/Notion/index.d.ts +0 -4
- package/lib/Notion/index.js +0 -14
- package/lib/all.css +1 -1
- package/lib/index.d.ts +3 -5
- package/lib/index.js +1 -32
- package/lib/locale/messages-en.d.ts +5 -0
- package/lib/locale/messages-en.js +7 -2
- package/lib/locale/messages-nb.d.ts +5 -0
- package/lib/locale/messages-nb.js +7 -2
- package/lib/locale/messages-nn.d.ts +5 -0
- package/lib/locale/messages-nn.js +7 -2
- package/lib/locale/messages-se.d.ts +5 -0
- package/lib/locale/messages-se.js +7 -2
- package/lib/locale/messages-sma.d.ts +5 -0
- package/lib/locale/messages-sma.js +7 -2
- package/package.json +18 -22
- package/src/Article/Article.tsx +1 -1
- package/src/AudioPlayer/AudiPlayer.stories.tsx +88 -0
- package/src/AudioPlayer/index.ts +0 -2
- package/src/Embed/IframeEmbed.stories.tsx +15 -0
- package/src/Embed/ImageEmbed.stories.tsx +169 -2
- package/src/Embed/RelatedContentEmbed.stories.tsx +438 -0
- package/src/Embed/conceptComponents.tsx +13 -1
- package/src/Figure/Figure.tsx +1 -120
- package/src/Figure/index.ts +1 -3
- package/src/Notion/index.ts +0 -4
- package/src/index.ts +3 -13
- package/src/locale/messages-en.ts +7 -2
- package/src/locale/messages-nb.ts +7 -2
- package/src/locale/messages-nn.ts +7 -2
- package/src/locale/messages-se.ts +7 -2
- package/src/locale/messages-sma.ts +7 -2
- package/src/main.scss +0 -1
- package/es/Animation/Fade.js +0 -62
- package/es/Animation/index.js +0 -1
- package/es/AudioPlayer/initAudioPlayers.js +0 -60
- package/es/Dialog/Dialog.js +0 -70
- package/es/Dialog/index.js +0 -11
- package/es/Figure/FigureLicense.js +0 -72
- package/es/Figure/FigureLicenseDialog.js +0 -54
- package/es/Notion/ConceptNotion.js +0 -135
- package/es/Notion/FigureNotion.js +0 -93
- package/es/Notion/NotionVisualElement.js +0 -68
- package/es/utils/createUniversalPortal.js +0 -25
- package/lib/Animation/Fade.d.ts +0 -17
- package/lib/Animation/Fade.js +0 -70
- package/lib/Animation/index.d.ts +0 -1
- package/lib/Animation/index.js +0 -13
- package/lib/AudioPlayer/initAudioPlayers.d.ts +0 -11
- package/lib/AudioPlayer/initAudioPlayers.js +0 -69
- package/lib/Dialog/Dialog.d.ts +0 -23
- package/lib/Dialog/Dialog.js +0 -75
- package/lib/Dialog/index.d.ts +0 -10
- package/lib/Dialog/index.js +0 -22
- package/lib/Figure/FigureLicense.d.ts +0 -33
- package/lib/Figure/FigureLicense.js +0 -76
- package/lib/Figure/FigureLicenseDialog.d.ts +0 -29
- package/lib/Figure/FigureLicenseDialog.js +0 -57
- package/lib/Notion/ConceptNotion.d.ts +0 -24
- package/lib/Notion/ConceptNotion.js +0 -141
- package/lib/Notion/FigureNotion.d.ts +0 -27
- package/lib/Notion/FigureNotion.js +0 -97
- package/lib/Notion/NotionVisualElement.d.ts +0 -22
- package/lib/Notion/NotionVisualElement.js +0 -75
- package/lib/utils/createUniversalPortal.d.ts +0 -9
- package/lib/utils/createUniversalPortal.js +0 -32
- package/src/Animation/Fade.tsx +0 -46
- package/src/Animation/index.ts +0 -1
- package/src/AudioPlayer/initAudioPlayers.tsx +0 -57
- package/src/Dialog/Dialog.tsx +0 -80
- package/src/Dialog/component.dialog.scss +0 -144
- package/src/Dialog/index.ts +0 -13
- package/src/Figure/FigureLicense.tsx +0 -75
- package/src/Figure/FigureLicenseDialog.tsx +0 -51
- package/src/Notion/ConceptNotion.tsx +0 -170
- package/src/Notion/FigureNotion.tsx +0 -104
- package/src/Notion/NotionVisualElement.tsx +0 -80
- package/src/utils/createUniversalPortal.tsx +0 -23
|
@@ -8,7 +8,8 @@
|
|
|
8
8
|
|
|
9
9
|
import { Meta, StoryObj } from '@storybook/react';
|
|
10
10
|
import { ImageEmbedData } from '@ndla/types-embed';
|
|
11
|
-
import { IImageMetaInformationV3 } from '@ndla/types-backend/
|
|
11
|
+
import { IImageMetaInformationV3 } from '@ndla/types-backend/image-api';
|
|
12
|
+
import { ReactNode } from 'react';
|
|
12
13
|
import ImageEmbed from './ImageEmbed';
|
|
13
14
|
import { defaultParameters } from '../../../../stories/defaults';
|
|
14
15
|
import StoryFavoriteButton from '../../../../stories/StoryFavoriteButton';
|
|
@@ -81,6 +82,7 @@ const metaData: IImageMetaInformationV3 = {
|
|
|
81
82
|
},
|
|
82
83
|
};
|
|
83
84
|
|
|
85
|
+
/** Bilder har tre mulige plasseringer: fullbredde midtstilt, venstrestilt og høyrestilt. Bilder kan være i størrelsene ekstra liten, liten, medium og stor (fullbredde). Bilder som ikke er fullbredde, kan ekspanderes på klikk. */
|
|
84
86
|
const meta: Meta<typeof ImageEmbed> = {
|
|
85
87
|
title: 'Components/Embeds/ImageEmbed',
|
|
86
88
|
component: ImageEmbed,
|
|
@@ -118,6 +120,8 @@ export const ImageEmbedStory: StoryObj<typeof ImageEmbed> = {
|
|
|
118
120
|
},
|
|
119
121
|
};
|
|
120
122
|
|
|
123
|
+
ImageEmbedStory.storyName = 'ImageEmbed';
|
|
124
|
+
|
|
121
125
|
export const Failed: StoryObj<typeof ImageEmbed> = {
|
|
122
126
|
args: {
|
|
123
127
|
heartButton: StoryFavoriteButton,
|
|
@@ -129,4 +133,167 @@ export const Failed: StoryObj<typeof ImageEmbed> = {
|
|
|
129
133
|
},
|
|
130
134
|
};
|
|
131
135
|
|
|
132
|
-
|
|
136
|
+
export const FullWidth: StoryObj<typeof ImageEmbed> = {
|
|
137
|
+
args: {
|
|
138
|
+
heartButton: StoryFavoriteButton,
|
|
139
|
+
embed: {
|
|
140
|
+
resource: 'image',
|
|
141
|
+
status: 'success',
|
|
142
|
+
embedData: embedData,
|
|
143
|
+
data: metaData,
|
|
144
|
+
},
|
|
145
|
+
},
|
|
146
|
+
render: (args) => (
|
|
147
|
+
<TextWrapper>
|
|
148
|
+
<ImageEmbed {...args} />
|
|
149
|
+
</TextWrapper>
|
|
150
|
+
),
|
|
151
|
+
};
|
|
152
|
+
|
|
153
|
+
const TextWrapper = ({ children }: { children: ReactNode }) => (
|
|
154
|
+
<>
|
|
155
|
+
<p>
|
|
156
|
+
Du har en kjempegod idé til en kortfilm. Men det koster mange penger å produsere filmen. Derfor er du avhengig av
|
|
157
|
+
at noen tenner på idéen din og bestemmer seg for å bruke ressurser på nettopp dette prosjektet.
|
|
158
|
+
</p>
|
|
159
|
+
{children}
|
|
160
|
+
|
|
161
|
+
<p>
|
|
162
|
+
Pitching er også en god måte å bevisstgjøre seg selv på. Når du pitcher, blir idéen og historien i den filmen du
|
|
163
|
+
planlegger å lage, tydeligere for både deg selv og dem du eventuelt jobber sammen med i klassen.
|
|
164
|
+
</p>
|
|
165
|
+
<p>
|
|
166
|
+
Pitching er også en god måte å bevisstgjøre seg selv på. Når du pitcher, blir idéen og historien i den filmen du
|
|
167
|
+
planlegger å lage, tydeligere for både deg selv og dem du eventuelt jobber sammen med i klassen.
|
|
168
|
+
</p>
|
|
169
|
+
<p>
|
|
170
|
+
Pitching er også en god måte å bevisstgjøre seg selv på. Når du pitcher, blir idéen og historien i den filmen du
|
|
171
|
+
planlegger å lage, tydeligere for både deg selv og dem du eventuelt jobber sammen med i klassen.
|
|
172
|
+
</p>
|
|
173
|
+
</>
|
|
174
|
+
);
|
|
175
|
+
|
|
176
|
+
export const FloatLeft: StoryObj<typeof ImageEmbed> = {
|
|
177
|
+
args: {
|
|
178
|
+
heartButton: StoryFavoriteButton,
|
|
179
|
+
embed: {
|
|
180
|
+
resource: 'image',
|
|
181
|
+
status: 'success',
|
|
182
|
+
embedData: {
|
|
183
|
+
...embedData,
|
|
184
|
+
align: 'left',
|
|
185
|
+
},
|
|
186
|
+
data: metaData,
|
|
187
|
+
},
|
|
188
|
+
},
|
|
189
|
+
render: (args) => (
|
|
190
|
+
<TextWrapper>
|
|
191
|
+
<ImageEmbed {...args} />
|
|
192
|
+
</TextWrapper>
|
|
193
|
+
),
|
|
194
|
+
};
|
|
195
|
+
|
|
196
|
+
export const FloatRight: StoryObj<typeof ImageEmbed> = {
|
|
197
|
+
args: {
|
|
198
|
+
heartButton: StoryFavoriteButton,
|
|
199
|
+
embed: {
|
|
200
|
+
resource: 'image',
|
|
201
|
+
status: 'success',
|
|
202
|
+
embedData: {
|
|
203
|
+
...embedData,
|
|
204
|
+
align: 'right',
|
|
205
|
+
},
|
|
206
|
+
data: metaData,
|
|
207
|
+
},
|
|
208
|
+
},
|
|
209
|
+
|
|
210
|
+
render: (args) => (
|
|
211
|
+
<TextWrapper>
|
|
212
|
+
<ImageEmbed {...args} />
|
|
213
|
+
</TextWrapper>
|
|
214
|
+
),
|
|
215
|
+
};
|
|
216
|
+
|
|
217
|
+
export const FloatRightSmall: StoryObj<typeof ImageEmbed> = {
|
|
218
|
+
args: {
|
|
219
|
+
heartButton: StoryFavoriteButton,
|
|
220
|
+
embed: {
|
|
221
|
+
resource: 'image',
|
|
222
|
+
status: 'success',
|
|
223
|
+
embedData: {
|
|
224
|
+
...embedData,
|
|
225
|
+
size: 'small',
|
|
226
|
+
align: 'right',
|
|
227
|
+
},
|
|
228
|
+
data: metaData,
|
|
229
|
+
},
|
|
230
|
+
},
|
|
231
|
+
render: (args) => (
|
|
232
|
+
<TextWrapper>
|
|
233
|
+
<ImageEmbed {...args} />
|
|
234
|
+
</TextWrapper>
|
|
235
|
+
),
|
|
236
|
+
};
|
|
237
|
+
|
|
238
|
+
export const FloatLeftSmall: StoryObj<typeof ImageEmbed> = {
|
|
239
|
+
args: {
|
|
240
|
+
heartButton: StoryFavoriteButton,
|
|
241
|
+
embed: {
|
|
242
|
+
resource: 'image',
|
|
243
|
+
status: 'success',
|
|
244
|
+
embedData: {
|
|
245
|
+
...embedData,
|
|
246
|
+
size: 'small',
|
|
247
|
+
align: 'left',
|
|
248
|
+
},
|
|
249
|
+
data: metaData,
|
|
250
|
+
},
|
|
251
|
+
},
|
|
252
|
+
render: (args) => (
|
|
253
|
+
<TextWrapper>
|
|
254
|
+
<ImageEmbed {...args} />
|
|
255
|
+
</TextWrapper>
|
|
256
|
+
),
|
|
257
|
+
};
|
|
258
|
+
|
|
259
|
+
export const FloatRightExtraSmall: StoryObj<typeof ImageEmbed> = {
|
|
260
|
+
args: {
|
|
261
|
+
heartButton: StoryFavoriteButton,
|
|
262
|
+
embed: {
|
|
263
|
+
resource: 'image',
|
|
264
|
+
status: 'success',
|
|
265
|
+
embedData: {
|
|
266
|
+
...embedData,
|
|
267
|
+
size: 'xsmall',
|
|
268
|
+
align: 'right',
|
|
269
|
+
},
|
|
270
|
+
data: metaData,
|
|
271
|
+
},
|
|
272
|
+
},
|
|
273
|
+
render: (args) => (
|
|
274
|
+
<TextWrapper>
|
|
275
|
+
<ImageEmbed {...args} />
|
|
276
|
+
</TextWrapper>
|
|
277
|
+
),
|
|
278
|
+
};
|
|
279
|
+
|
|
280
|
+
export const FloatLeftExtraSmall: StoryObj<typeof ImageEmbed> = {
|
|
281
|
+
args: {
|
|
282
|
+
heartButton: StoryFavoriteButton,
|
|
283
|
+
embed: {
|
|
284
|
+
resource: 'image',
|
|
285
|
+
status: 'success',
|
|
286
|
+
embedData: {
|
|
287
|
+
...embedData,
|
|
288
|
+
size: 'xsmall',
|
|
289
|
+
align: 'left',
|
|
290
|
+
},
|
|
291
|
+
data: metaData,
|
|
292
|
+
},
|
|
293
|
+
},
|
|
294
|
+
render: (args) => (
|
|
295
|
+
<TextWrapper>
|
|
296
|
+
<ImageEmbed {...args} />
|
|
297
|
+
</TextWrapper>
|
|
298
|
+
),
|
|
299
|
+
};
|
|
@@ -0,0 +1,438 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2023-present, NDLA.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the GPLv3 license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import { Meta, StoryObj } from '@storybook/react';
|
|
10
|
+
import { RelatedContentMetaData } from '@ndla/types-embed';
|
|
11
|
+
import { defaultParameters } from '../../../../stories/defaults';
|
|
12
|
+
import RelatedContentEmbed from './RelatedContentEmbed';
|
|
13
|
+
import { RelatedArticleListV2 } from '../RelatedArticleList';
|
|
14
|
+
|
|
15
|
+
const filmResourceMeta: RelatedContentMetaData = {
|
|
16
|
+
resource: 'related-content',
|
|
17
|
+
embedData: {
|
|
18
|
+
resource: 'related-content',
|
|
19
|
+
articleId: '27911',
|
|
20
|
+
},
|
|
21
|
+
status: 'success',
|
|
22
|
+
data: {
|
|
23
|
+
article: {
|
|
24
|
+
id: 27911,
|
|
25
|
+
revision: 40,
|
|
26
|
+
title: {
|
|
27
|
+
title: 'Dokumentaren «Influenser»',
|
|
28
|
+
language: 'nb',
|
|
29
|
+
},
|
|
30
|
+
content: {
|
|
31
|
+
content: '<section></section>',
|
|
32
|
+
language: 'nb',
|
|
33
|
+
},
|
|
34
|
+
copyright: {
|
|
35
|
+
license: {
|
|
36
|
+
license: 'CC-BY-SA-4.0',
|
|
37
|
+
description: 'Creative Commons Attribution-ShareAlike 4.0 International',
|
|
38
|
+
url: 'https://creativecommons.org/licenses/by-sa/4.0/',
|
|
39
|
+
},
|
|
40
|
+
origin: '',
|
|
41
|
+
creators: [
|
|
42
|
+
{
|
|
43
|
+
type: 'Writer',
|
|
44
|
+
name: 'Elisabeth Thoresen Olseng',
|
|
45
|
+
},
|
|
46
|
+
],
|
|
47
|
+
processors: [
|
|
48
|
+
{
|
|
49
|
+
type: 'Processor',
|
|
50
|
+
name: 'Tone Hadler-Olsen',
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
type: 'Correction',
|
|
54
|
+
name: 'Totaltekst',
|
|
55
|
+
},
|
|
56
|
+
],
|
|
57
|
+
rightsholders: [],
|
|
58
|
+
processed: false,
|
|
59
|
+
},
|
|
60
|
+
tags: {
|
|
61
|
+
tags: [
|
|
62
|
+
'influenser',
|
|
63
|
+
'influensermarkedsføring',
|
|
64
|
+
'påvirker',
|
|
65
|
+
'markedskommunikasjon',
|
|
66
|
+
'p for påvirkning',
|
|
67
|
+
'NRK',
|
|
68
|
+
'påvirkning',
|
|
69
|
+
'NRK Innafor',
|
|
70
|
+
'markedsføring',
|
|
71
|
+
],
|
|
72
|
+
language: 'nb',
|
|
73
|
+
},
|
|
74
|
+
requiredLibraries: [],
|
|
75
|
+
metaImage: {
|
|
76
|
+
url: 'https://api.test.ndla.no/image-api/raw/id/52938',
|
|
77
|
+
alt: 'Influenseren Sophie Elise Isachsen holder en blomsterbukett og et diplom og snakker i mikrofon på prisutdeling. Foto.',
|
|
78
|
+
language: 'nb',
|
|
79
|
+
},
|
|
80
|
+
introduction: {
|
|
81
|
+
introduction:
|
|
82
|
+
'I dokumentaren «Influenser» undersøker NRK-programleder Vilde Bratland Erikstad hvordan influenserbransjen jobber for å påvirke deg. ',
|
|
83
|
+
language: 'nb',
|
|
84
|
+
},
|
|
85
|
+
metaDescription: {
|
|
86
|
+
metaDescription:
|
|
87
|
+
'I dokumentaren «Influenser» undersøker NRK-programleder Vilde Bratland Erikstad hvordan influenserbransjen jobber for å påvirke deg. ',
|
|
88
|
+
language: 'nb',
|
|
89
|
+
},
|
|
90
|
+
created: '2021-01-12T13:33:00.000Z',
|
|
91
|
+
updated: '2023-03-20T14:12:41.000Z',
|
|
92
|
+
updatedBy: 'hd5ZL5Lm4kKkumWgN2gjy9wx',
|
|
93
|
+
published: '2021-01-12T13:33:00.000Z',
|
|
94
|
+
articleType: 'standard',
|
|
95
|
+
supportedLanguages: ['nb', 'nn'],
|
|
96
|
+
grepCodes: ['KE183', 'KM2055', 'KM3961', 'KM6170', 'TT1'],
|
|
97
|
+
conceptIds: [],
|
|
98
|
+
availability: 'everyone',
|
|
99
|
+
relatedContent: [],
|
|
100
|
+
revisionDate: '2030-01-01T00:00:00.000Z',
|
|
101
|
+
},
|
|
102
|
+
resource: {
|
|
103
|
+
id: 'urn:resource:e21cb6a7-0072-4066-894b-d5f6bb4f7ead',
|
|
104
|
+
name: 'Dokumentaren «Influenser»',
|
|
105
|
+
contentUri: 'urn:article:27911',
|
|
106
|
+
path: '/subject:187c1484-84a5-474d-bf63-0c7915809a7d/topic:d792acc0-d332-48cf-9116-0db520e34f19/topic:3510fff0-fe20-4742-8e25-09262df2ac45/resource:e21cb6a7-0072-4066-894b-d5f6bb4f7ead',
|
|
107
|
+
paths: [
|
|
108
|
+
'/programme:97a5a3b0-8b9f-4d05-9248-f4ad526f8ff4/programme:1b826174-01d3-4876-81be-8839727da935/programme:53720e3b-b55b-44cd-9e0e-b075ffe0d294/subject:1:ca607ca1-4dd0-4bbd-954f-67461f4b96fc/topic:1:ca8b0ee8-5863-4779-ac49-754f6eb503e0/topic:05843502-0597-4f6e-a03b-c4795cb88285/resource:e21cb6a7-0072-4066-894b-d5f6bb4f7ead',
|
|
109
|
+
'/programme:97a5a3b0-8b9f-4d05-9248-f4ad526f8ff4/programme:1b826174-01d3-4876-81be-8839727da935/programme:995c6c41-bc5e-405a-af01-0ad9233ed3a4/subject:d1fe9d0a-a54d-49db-a4c2-fd5463a7c9e7/topic:3cdf9349-4593-498c-a899-9310133a4788/topic:7e6a20d3-ceb5-46e3-ad28-1412c9a5745c/topic:abc3bafb-c27d-401a-8eab-84dc3ff8ac1e/resource:e21cb6a7-0072-4066-894b-d5f6bb4f7ead',
|
|
110
|
+
'/programme:ce0c331b-4386-4942-aef2-4f77d3844fa5/programme:8021f0e8-9928-4820-b466-ee5303ce5cd6/programme:8275f90b-f910-4b20-9e79-0f3b37317b98/subject:1:576cc40f-cc74-4418-9721-9b15ffd29cff/topic:2:537598a2-4857-40e0-b0bc-9a937e954374/topic:576b9c22-196d-4c1e-bdb5-e3c0b2354a06/resource:e21cb6a7-0072-4066-894b-d5f6bb4f7ead',
|
|
111
|
+
'/programme:e4d0dac7-773a-4317-9c3c-45f336d184db/programme:27c7d90c-0277-4ad8-addf-b2445a74bb63/programme:df1c5883-09c5-4479-b717-6ed75658d32f/subject:d1fe9d0a-a54d-49db-a4c2-fd5463a7c9e7/topic:3cdf9349-4593-498c-a899-9310133a4788/topic:7e6a20d3-ceb5-46e3-ad28-1412c9a5745c/topic:abc3bafb-c27d-401a-8eab-84dc3ff8ac1e/resource:e21cb6a7-0072-4066-894b-d5f6bb4f7ead',
|
|
112
|
+
'/subject:187c1484-84a5-474d-bf63-0c7915809a7d/topic:d792acc0-d332-48cf-9116-0db520e34f19/topic:3510fff0-fe20-4742-8e25-09262df2ac45/resource:e21cb6a7-0072-4066-894b-d5f6bb4f7ead',
|
|
113
|
+
'/subject:1:47678c7b-bc09-4fc8-b2d9-a2e3d709e105/topic:1:aa643598-5490-42c9-8ce5-62a94b42bfe0/resource:e21cb6a7-0072-4066-894b-d5f6bb4f7ead',
|
|
114
|
+
'/subject:1:4aef7156-a5ae-4476-8e81-6d2a4842143a/topic:3c7d1536-e1c9-4cf1-8ef4-bcf9aa251113/resource:e21cb6a7-0072-4066-894b-d5f6bb4f7ead',
|
|
115
|
+
'/subject:1:576cc40f-cc74-4418-9721-9b15ffd29cff/topic:2:537598a2-4857-40e0-b0bc-9a937e954374/topic:576b9c22-196d-4c1e-bdb5-e3c0b2354a06/resource:e21cb6a7-0072-4066-894b-d5f6bb4f7ead',
|
|
116
|
+
'/subject:1:ca607ca1-4dd0-4bbd-954f-67461f4b96fc/topic:1:ca8b0ee8-5863-4779-ac49-754f6eb503e0/topic:05843502-0597-4f6e-a03b-c4795cb88285/resource:e21cb6a7-0072-4066-894b-d5f6bb4f7ead',
|
|
117
|
+
'/subject:1:fa2a7d6a-5e8e-4976-82c0-9a1266684c1c/topic:62462e51-087c-42bf-b04f-8ebc36e5dff0/topic:1d3994d2-20bd-44e2-8f4c-6e716cdbfa6f/resource:e21cb6a7-0072-4066-894b-d5f6bb4f7ead',
|
|
118
|
+
'/subject:c0ce0b31-33f6-4f6f-bbe0-caa878f7ab9b/topic:4e9ae220-ab46-489c-b664-0f64abef0a26/topic:da5e6cf2-e720-414d-b7fa-4d66e41d6505/resource:e21cb6a7-0072-4066-894b-d5f6bb4f7ead',
|
|
119
|
+
'/subject:d1fe9d0a-a54d-49db-a4c2-fd5463a7c9e7/topic:3cdf9349-4593-498c-a899-9310133a4788/topic:7e6a20d3-ceb5-46e3-ad28-1412c9a5745c/topic:abc3bafb-c27d-401a-8eab-84dc3ff8ac1e/resource:e21cb6a7-0072-4066-894b-d5f6bb4f7ead',
|
|
120
|
+
],
|
|
121
|
+
metadata: {
|
|
122
|
+
grepCodes: [],
|
|
123
|
+
visible: true,
|
|
124
|
+
customFields: {},
|
|
125
|
+
},
|
|
126
|
+
relevanceId: 'urn:relevance:core',
|
|
127
|
+
translations: [
|
|
128
|
+
{
|
|
129
|
+
name: 'Dokumentaren «Influenser»',
|
|
130
|
+
language: 'nb',
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
name: 'Dokumentaren «Influenser»',
|
|
134
|
+
language: 'nn',
|
|
135
|
+
},
|
|
136
|
+
],
|
|
137
|
+
supportedLanguages: ['nb', 'nn'],
|
|
138
|
+
breadcrumbs: ['Kroppsøving (vg3)', 'Helse', 'Kropp', 'Dokumentaren «Influenser»'],
|
|
139
|
+
resourceTypes: [
|
|
140
|
+
{
|
|
141
|
+
id: 'urn:resourcetype:filmClip',
|
|
142
|
+
parentId: 'urn:resourcetype:SourceMaterial',
|
|
143
|
+
name: 'Filmklipp',
|
|
144
|
+
translations: [
|
|
145
|
+
{
|
|
146
|
+
name: 'Film Clip',
|
|
147
|
+
language: 'en',
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
name: 'Filmklipp',
|
|
151
|
+
language: 'nb',
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
name: 'Filmklipp',
|
|
155
|
+
language: 'nn',
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
name: 'Filbmaoasáš',
|
|
159
|
+
language: 'se',
|
|
160
|
+
},
|
|
161
|
+
],
|
|
162
|
+
supportedLanguages: ['en', 'nb', 'nn', 'se'],
|
|
163
|
+
connectionId: 'urn:resource-resourcetype:481968dc-7465-4aae-98ed-daae10cea860',
|
|
164
|
+
},
|
|
165
|
+
{
|
|
166
|
+
id: 'urn:resourcetype:SourceMaterial',
|
|
167
|
+
name: 'Kildemateriell',
|
|
168
|
+
translations: [
|
|
169
|
+
{
|
|
170
|
+
name: 'External resources',
|
|
171
|
+
language: 'en',
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
name: 'Kildemateriell',
|
|
175
|
+
language: 'nb',
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
name: 'Kjeldemateriale',
|
|
179
|
+
language: 'nn',
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
name: 'Gáldomateriála',
|
|
183
|
+
language: 'se',
|
|
184
|
+
},
|
|
185
|
+
],
|
|
186
|
+
supportedLanguages: ['en', 'nb', 'nn', 'se'],
|
|
187
|
+
connectionId: 'urn:resource-resourcetype:8c174c72-7d52-4bf6-b534-d8863282a166',
|
|
188
|
+
},
|
|
189
|
+
],
|
|
190
|
+
nodeType: 'RESOURCE',
|
|
191
|
+
contextId: '85a67bcdf620',
|
|
192
|
+
url: '/dokumentaren-«influenser»__85a67bcdf620',
|
|
193
|
+
contexts: [],
|
|
194
|
+
},
|
|
195
|
+
},
|
|
196
|
+
};
|
|
197
|
+
|
|
198
|
+
const learningResourceMeta: RelatedContentMetaData = {
|
|
199
|
+
resource: 'related-content',
|
|
200
|
+
embedData: {
|
|
201
|
+
resource: 'related-content',
|
|
202
|
+
articleId: '22972',
|
|
203
|
+
},
|
|
204
|
+
status: 'success',
|
|
205
|
+
data: {
|
|
206
|
+
article: {
|
|
207
|
+
id: 22972,
|
|
208
|
+
revision: 16,
|
|
209
|
+
title: {
|
|
210
|
+
title: 'Teknikker for idéutvikling',
|
|
211
|
+
language: 'nb',
|
|
212
|
+
},
|
|
213
|
+
content: {
|
|
214
|
+
content:
|
|
215
|
+
'<section><ndlaembed data-size="medium" data-align="right" data-caption="" data-alt="Gutt som skriver ned ideer. Illustrasjon." data-resource_id="42645" data-resource="image" data-url="https://api.test.ndla.no/image-api/v2/images/42645"></ndlaembed><h2> Lær deg en teknikk</h2><p>Det fins utallige teknikker for idéutvikling. Her skal du bli kjent med to av dem. Noen kan brukes individuelt. Andre egner seg best i samarbeid mellom flere. Ofte vil det være nyttig og nødvendig å kombinere ulike teknikker.</p><p>Det er ikke uvanlig at en person blir bedt om å være leder, eller los, for idéutviklingsprosessen. Han eller hun passer på tiden, sørger for at stemningen er god, og at idéutviklingen blir dokumentert. Trygge, avslappede og lekne rammer for prosessen gjør at flere tør å komme med sine ideer.</p><h3>Idémyldring etter ABC-metoden</h3><ndlaembed data-size="medium" data-align="right" data-caption="ABC-metoden" data-alt="Ark med linjer for hver bokstav i alfabetet. Illustrasjon" data-resource_id="505" data-resource="image" data-url="https://api.test.ndla.no/image-api/v2/images/505"></ndlaembed><ol><li>Skriv tema eller et spørsmålstegn øverst på en side. </li><li>Skriv alfabetet på linjer nedover siden. </li><li>Sett på en klokke som ringer etter et visst antall minutter. </li><li>Skriv ord som du kommer på, eller et spørsmål ved siden av hver bokstav i alfabetet. </li><li>Prosesslosen kan komme med forslag om for eksempel å fokusere på verb de første fem minuttene, substantiv de neste fem minuttene, og til slutt adjektiv. </li><li>Plukk ut eller få noen til å plukke ut et utvalg ord som du jobber videre med.</li></ol><h2>Idémyldring ved hjelp av tankekart</h2><ndlaembed data-size="medium" data-align="right" data-caption="Eksempel på tankekart. Det finnes mange dataprogrammer som hjelper deg å lage tankekart." data-alt="Tegning som viser flere bobler med ord om et tema. Illustrasjon." data-resource_id="504" data-resource="image" data-url="https://api.test.ndla.no/image-api/v2/images/504"></ndlaembed><p>Tankekart er en visuell utbretting av ord som har en sammenheng. Når tankekart blir brukt til idémyldring, er poenget å bruke en assosiasjonsteknikk. Det vil si at du prøver å tenke deg hvilke assosiasjoner du eller andre får til drikkevann, som er det temaet som er brukt i dette eksempelet. Assosiasjoner betyr noe du personlig forbinder med et ord, eller noe du har lyst til skal ha sammenheng med ordet.</p><p>I idémyldring er alt lov, slipp hjernen fri, og skriv det du kommer på. Det er lurt å huske på at når du forflytter deg ut et nivå, må du prøve å glemme alt det andre du har gjort. Drikkevann er ikke lenger med i assosiasjonene til iskaldt, for eksempel. Det kan være lurt å ha noen grener som strekker seg helt til fjerde nivå. Det er ofte langt ute i rekkene av bobler du finner ord som gir en interessant tvist, altså blir en god idé.</p><ol><li>Skriv hovedtema i en boble i midten. </li><li>Skriv assosiasjoner ut fra den. </li><li>Rykk videre til neste nivå. Start med ny assosiasjonsrunde og glem det du allerede har skrevet. Altså skriver du bare assosiasjoner til det ordet du jobber med. </li><li>Prøv å komme deg ut i minst fjerde nivå på enkelte boblegrener. </li><li>Når du er ferdig eller tiden er ute, se over tankekartet og plukk ut ord du liker, som du ser en ny sammenheng mellom. Du kan lukke øynene og prøve å fange de tre ordene du husker best, eller du kan også myse mens du ser på kartet og se om noen ord trer fram. </li><li>Søk eventuelt videre på nett og i bilder på nett for å utdype ordvalgene dine. </li><li>Ta alltid vare på tankekartene dine. Hvis du senere strander med en idé, kan du gå tilbake til tankekartet, jobbe videre med det eller finne en ny idé.</li></ol><div data-type="related-content"><ndlaembed data-resource="related-content" data-article-id="20378"></ndlaembed></div></section>',
|
|
216
|
+
language: 'nb',
|
|
217
|
+
},
|
|
218
|
+
copyright: {
|
|
219
|
+
license: {
|
|
220
|
+
license: 'CC-BY-SA-4.0',
|
|
221
|
+
description: 'Creative Commons Attribution-ShareAlike 4.0 International',
|
|
222
|
+
url: 'https://creativecommons.org/licenses/by-sa/4.0/',
|
|
223
|
+
},
|
|
224
|
+
origin: '',
|
|
225
|
+
creators: [
|
|
226
|
+
{
|
|
227
|
+
type: 'Writer',
|
|
228
|
+
name: 'Albertine Aaberge',
|
|
229
|
+
},
|
|
230
|
+
],
|
|
231
|
+
processors: [],
|
|
232
|
+
rightsholders: [],
|
|
233
|
+
processed: false,
|
|
234
|
+
},
|
|
235
|
+
tags: {
|
|
236
|
+
tags: ['idé', 'idédugnad', 'idéutvikling'],
|
|
237
|
+
language: 'nb',
|
|
238
|
+
},
|
|
239
|
+
requiredLibraries: [],
|
|
240
|
+
metaImage: {
|
|
241
|
+
url: 'https://api.test.ndla.no/image-api/raw/id/23909',
|
|
242
|
+
alt: 'Jente som tenker. Illustrasjon.',
|
|
243
|
+
language: 'nb',
|
|
244
|
+
},
|
|
245
|
+
introduction: {
|
|
246
|
+
introduction: 'Idéutvikling handler om å skape ideer, utvikle dem og løse problemer.',
|
|
247
|
+
language: 'nb',
|
|
248
|
+
},
|
|
249
|
+
metaDescription: {
|
|
250
|
+
metaDescription:
|
|
251
|
+
'Det fins mange teknikker for idéutvikling. Her er to av dem. Teknikkene kan brukes individuelt eller i samarbeid.',
|
|
252
|
+
language: 'nb',
|
|
253
|
+
},
|
|
254
|
+
created: '2020-03-25T10:21:31.000Z',
|
|
255
|
+
updated: '2023-02-13T12:57:57.000Z',
|
|
256
|
+
updatedBy: 'LGsHWSsXKh520VNcOueMraSB',
|
|
257
|
+
published: '2020-03-25T10:21:31.000Z',
|
|
258
|
+
articleType: 'standard',
|
|
259
|
+
supportedLanguages: ['nb', 'nn'],
|
|
260
|
+
grepCodes: ['KM6126'],
|
|
261
|
+
conceptIds: [],
|
|
262
|
+
availability: 'everyone',
|
|
263
|
+
relatedContent: [],
|
|
264
|
+
revisionDate: '2030-01-01T00:00:00.000Z',
|
|
265
|
+
},
|
|
266
|
+
resource: {
|
|
267
|
+
id: 'urn:resource:5d81f622-1fc5-49c8-943d-690e23450e09',
|
|
268
|
+
name: 'Teknikker for idéutvikling',
|
|
269
|
+
contentUri: 'urn:article:22972',
|
|
270
|
+
path: '/subject:1:54b1727c-2d91-4512-901c-8434e13339b4/topic:1:126f94e7-7b54-44b2-be7d-3edc1ca3d21e/resource:5d81f622-1fc5-49c8-943d-690e23450e09',
|
|
271
|
+
paths: [
|
|
272
|
+
'/programme:97a5a3b0-8b9f-4d05-9248-f4ad526f8ff4/programme:1b826174-01d3-4876-81be-8839727da935/programme:995c6c41-bc5e-405a-af01-0ad9233ed3a4/subject:1:54b1727c-2d91-4512-901c-8434e13339b4/topic:1:126f94e7-7b54-44b2-be7d-3edc1ca3d21e/resource:5d81f622-1fc5-49c8-943d-690e23450e09',
|
|
273
|
+
'/programme:e4d0dac7-773a-4317-9c3c-45f336d184db/programme:27c7d90c-0277-4ad8-addf-b2445a74bb63/programme:df1c5883-09c5-4479-b717-6ed75658d32f/subject:1:54b1727c-2d91-4512-901c-8434e13339b4/topic:1:126f94e7-7b54-44b2-be7d-3edc1ca3d21e/resource:5d81f622-1fc5-49c8-943d-690e23450e09',
|
|
274
|
+
'/subject:1:54b1727c-2d91-4512-901c-8434e13339b4/topic:1:126f94e7-7b54-44b2-be7d-3edc1ca3d21e/resource:5d81f622-1fc5-49c8-943d-690e23450e09',
|
|
275
|
+
'/subject:c0ce0b31-33f6-4f6f-bbe0-caa878f7ab9b/topic:fb2399da-1285-4228-9cd5-8d1ef968f6a2/topic:eac425e9-79e4-49c8-84a3-653fcbc0eb62/resource:5d81f622-1fc5-49c8-943d-690e23450e09',
|
|
276
|
+
],
|
|
277
|
+
metadata: {
|
|
278
|
+
grepCodes: [],
|
|
279
|
+
visible: true,
|
|
280
|
+
customFields: {},
|
|
281
|
+
},
|
|
282
|
+
relevanceId: 'urn:relevance:core',
|
|
283
|
+
translations: [
|
|
284
|
+
{
|
|
285
|
+
name: 'Teknikker for idéutvikling',
|
|
286
|
+
language: 'nb',
|
|
287
|
+
},
|
|
288
|
+
{
|
|
289
|
+
name: 'Teknikkar for idéutvikling',
|
|
290
|
+
language: 'nn',
|
|
291
|
+
},
|
|
292
|
+
],
|
|
293
|
+
supportedLanguages: ['nb', 'nn'],
|
|
294
|
+
breadcrumbs: ['Verktøykassa – for elever', 'Idéutvikling og kreative metoder', 'Teknikker for idéutvikling'],
|
|
295
|
+
resourceTypes: [
|
|
296
|
+
{
|
|
297
|
+
id: 'urn:resourcetype:subjectMaterial',
|
|
298
|
+
name: 'Fagstoff',
|
|
299
|
+
translations: [
|
|
300
|
+
{
|
|
301
|
+
name: 'Subject Material',
|
|
302
|
+
language: 'en',
|
|
303
|
+
},
|
|
304
|
+
{
|
|
305
|
+
name: 'Fagstoff',
|
|
306
|
+
language: 'nb',
|
|
307
|
+
},
|
|
308
|
+
{
|
|
309
|
+
name: 'Fagstoff',
|
|
310
|
+
language: 'nn',
|
|
311
|
+
},
|
|
312
|
+
{
|
|
313
|
+
name: 'Fágaávnnas',
|
|
314
|
+
language: 'se',
|
|
315
|
+
},
|
|
316
|
+
],
|
|
317
|
+
supportedLanguages: ['en', 'nb', 'nn', 'se'],
|
|
318
|
+
connectionId: 'urn:resource-resourcetype:0eb9cea7-0561-4a4d-b649-a5c9754ce5ce',
|
|
319
|
+
},
|
|
320
|
+
{
|
|
321
|
+
id: 'urn:resourcetype:academicArticle',
|
|
322
|
+
parentId: 'urn:resourcetype:subjectMaterial',
|
|
323
|
+
name: 'Fagartikkel',
|
|
324
|
+
translations: [
|
|
325
|
+
{
|
|
326
|
+
name: 'Article',
|
|
327
|
+
language: 'en',
|
|
328
|
+
},
|
|
329
|
+
{
|
|
330
|
+
name: 'Fagartikkel',
|
|
331
|
+
language: 'nb',
|
|
332
|
+
},
|
|
333
|
+
{
|
|
334
|
+
name: 'Fagartikkel',
|
|
335
|
+
language: 'nn',
|
|
336
|
+
},
|
|
337
|
+
{
|
|
338
|
+
name: 'Fágaartihkal',
|
|
339
|
+
language: 'se',
|
|
340
|
+
},
|
|
341
|
+
],
|
|
342
|
+
supportedLanguages: ['en', 'nb', 'nn', 'se'],
|
|
343
|
+
connectionId: 'urn:resource-resourcetype:25af8fa2-7f7f-450f-8f67-b4324bdb4c57',
|
|
344
|
+
},
|
|
345
|
+
],
|
|
346
|
+
nodeType: 'RESOURCE',
|
|
347
|
+
contextId: '68ad235d673f',
|
|
348
|
+
url: '/teknikker-for-idéutvikling__68ad235d673f',
|
|
349
|
+
contexts: [],
|
|
350
|
+
},
|
|
351
|
+
},
|
|
352
|
+
};
|
|
353
|
+
|
|
354
|
+
const meta: Meta<typeof RelatedContentEmbed> = {
|
|
355
|
+
title: 'Components/Embeds/RelatedContentEmbed',
|
|
356
|
+
component: RelatedContentEmbed,
|
|
357
|
+
tags: ['autodocs'],
|
|
358
|
+
decorators: [
|
|
359
|
+
(Story) => (
|
|
360
|
+
<div className="o-wrapper">
|
|
361
|
+
<article className="c-article c-article--clean">
|
|
362
|
+
<section className="u-4/6@desktop u-push-1/6@desktop u-10/12@tablet u-push-1/12@tablet">
|
|
363
|
+
<section>
|
|
364
|
+
<Story />
|
|
365
|
+
</section>
|
|
366
|
+
</section>
|
|
367
|
+
</article>
|
|
368
|
+
</div>
|
|
369
|
+
),
|
|
370
|
+
],
|
|
371
|
+
parameters: defaultParameters,
|
|
372
|
+
};
|
|
373
|
+
|
|
374
|
+
export default meta;
|
|
375
|
+
|
|
376
|
+
const linkEmbed1: RelatedContentMetaData = {
|
|
377
|
+
resource: 'related-content',
|
|
378
|
+
embedData: {
|
|
379
|
+
resource: 'related-content',
|
|
380
|
+
title: 'Test',
|
|
381
|
+
url: 'https://example.com',
|
|
382
|
+
},
|
|
383
|
+
data: undefined,
|
|
384
|
+
status: 'success',
|
|
385
|
+
};
|
|
386
|
+
|
|
387
|
+
const linkEmbed2: RelatedContentMetaData = {
|
|
388
|
+
resource: 'related-content',
|
|
389
|
+
embedData: {
|
|
390
|
+
resource: 'related-content',
|
|
391
|
+
title: 'NDLA',
|
|
392
|
+
url: 'https://ndla.no',
|
|
393
|
+
},
|
|
394
|
+
data: undefined,
|
|
395
|
+
status: 'success',
|
|
396
|
+
};
|
|
397
|
+
|
|
398
|
+
export const RelatedContentStory: StoryObj<typeof RelatedContentEmbed> = {
|
|
399
|
+
render: () => (
|
|
400
|
+
<RelatedArticleListV2>
|
|
401
|
+
<RelatedContentEmbed embed={learningResourceMeta} />
|
|
402
|
+
<RelatedContentEmbed embed={learningResourceMeta} />
|
|
403
|
+
</RelatedArticleListV2>
|
|
404
|
+
),
|
|
405
|
+
};
|
|
406
|
+
|
|
407
|
+
export const HideAllAboveTwo: StoryObj<typeof RelatedContentEmbed> = {
|
|
408
|
+
render: () => (
|
|
409
|
+
<RelatedArticleListV2>
|
|
410
|
+
<RelatedContentEmbed embed={learningResourceMeta} />
|
|
411
|
+
<RelatedContentEmbed embed={filmResourceMeta} />
|
|
412
|
+
<RelatedContentEmbed embed={learningResourceMeta} />
|
|
413
|
+
<RelatedContentEmbed embed={filmResourceMeta} />
|
|
414
|
+
</RelatedArticleListV2>
|
|
415
|
+
),
|
|
416
|
+
};
|
|
417
|
+
|
|
418
|
+
export const WithLinks: StoryObj<typeof RelatedContentEmbed> = {
|
|
419
|
+
render: () => (
|
|
420
|
+
<RelatedArticleListV2>
|
|
421
|
+
<RelatedContentEmbed embed={linkEmbed1} />
|
|
422
|
+
<RelatedContentEmbed embed={linkEmbed2} />
|
|
423
|
+
</RelatedArticleListV2>
|
|
424
|
+
),
|
|
425
|
+
};
|
|
426
|
+
|
|
427
|
+
export const Mixed: StoryObj<typeof RelatedContentEmbed> = {
|
|
428
|
+
render: () => (
|
|
429
|
+
<RelatedArticleListV2>
|
|
430
|
+
<RelatedContentEmbed embed={linkEmbed1} />
|
|
431
|
+
<RelatedContentEmbed embed={learningResourceMeta} />
|
|
432
|
+
<RelatedContentEmbed embed={filmResourceMeta} />
|
|
433
|
+
<RelatedContentEmbed embed={linkEmbed2} />
|
|
434
|
+
</RelatedArticleListV2>
|
|
435
|
+
),
|
|
436
|
+
};
|
|
437
|
+
|
|
438
|
+
RelatedContentStory.storyName = 'RelatedContentEmbed';
|
|
@@ -13,7 +13,6 @@ import { css } from '@emotion/react';
|
|
|
13
13
|
import { breakpoints, colors, fonts, misc, mq, spacing } from '@ndla/core';
|
|
14
14
|
import { parseMarkdown } from '@ndla/util';
|
|
15
15
|
import styled from '@emotion/styled';
|
|
16
|
-
import { NotionDialogContent, NotionDialogText } from '@ndla/notion';
|
|
17
16
|
import { COPYRIGHTED } from '@ndla/licenses';
|
|
18
17
|
import { Copyright } from '../types';
|
|
19
18
|
import ImageEmbed from './ImageEmbed';
|
|
@@ -51,6 +50,19 @@ interface ConceptNotionProps extends RefAttributes<HTMLDivElement>, ConceptNotio
|
|
|
51
50
|
conceptHeartButton?: ReactNode;
|
|
52
51
|
}
|
|
53
52
|
|
|
53
|
+
const NotionDialogText = styled.div`
|
|
54
|
+
font-weight: ${fonts.weight.normal};
|
|
55
|
+
${fonts.sizes('18px', 1.3)};
|
|
56
|
+
color: ${colors.text.primary};
|
|
57
|
+
font-family: ${fonts.sans};
|
|
58
|
+
`;
|
|
59
|
+
|
|
60
|
+
const NotionDialogContent = styled.div`
|
|
61
|
+
padding-bottom: ${spacing.normal};
|
|
62
|
+
display: flex;
|
|
63
|
+
flex-direction: column;
|
|
64
|
+
`;
|
|
65
|
+
|
|
54
66
|
const ContentPadding = styled.div`
|
|
55
67
|
padding: ${spacing.normal};
|
|
56
68
|
`;
|