@ndla/ui 56.0.38-alpha.0 → 56.0.40-alpha.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/dist/panda.buildinfo.json +4 -0
- package/dist/styles.css +18 -0
- package/es/Article/Article.js +6 -2
- package/es/Embed/CopyrightEmbed.js +10 -1
- package/es/Embed/EmbedWrapper.js +24 -0
- package/es/Embed/UuDisclaimerEmbed.js +17 -14
- package/es/Embed/index.js +2 -1
- package/es/KeyFigure/KeyFigure.js +5 -1
- package/es/LicenseByline/EmbedByline.js +8 -4
- package/es/LicenseByline/LicenseLink.js +11 -1
- package/es/index.js +1 -1
- package/es/locale/messages-en.js +1 -7
- package/es/locale/messages-nb.js +1 -7
- package/es/locale/messages-nn.js +1 -7
- package/es/locale/messages-se.js +1 -7
- package/es/locale/messages-sma.js +1 -7
- package/lib/Article/Article.d.ts +4 -2
- package/lib/Article/Article.js +6 -2
- package/lib/Embed/CopyrightEmbed.js +10 -1
- package/lib/Embed/EmbedWrapper.d.ts +11 -0
- package/lib/Embed/EmbedWrapper.js +30 -0
- package/lib/Embed/UuDisclaimerEmbed.js +16 -13
- package/lib/Embed/index.d.ts +1 -0
- package/lib/Embed/index.js +7 -0
- package/lib/KeyFigure/KeyFigure.js +5 -1
- package/lib/LicenseByline/EmbedByline.js +8 -4
- package/lib/LicenseByline/LicenseLink.d.ts +2 -1
- package/lib/LicenseByline/LicenseLink.js +11 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.js +6 -0
- package/lib/locale/messages-en.d.ts +1 -7
- package/lib/locale/messages-en.js +1 -7
- package/lib/locale/messages-nb.d.ts +1 -7
- package/lib/locale/messages-nb.js +1 -7
- package/lib/locale/messages-nn.d.ts +1 -7
- package/lib/locale/messages-nn.js +1 -7
- package/lib/locale/messages-se.d.ts +1 -7
- package/lib/locale/messages-se.js +1 -7
- package/lib/locale/messages-sma.d.ts +1 -7
- package/lib/locale/messages-sma.js +1 -7
- package/package.json +6 -6
- package/src/Article/Article.tsx +6 -1
- package/src/Embed/CopyrightEmbed.tsx +8 -1
- package/src/Embed/EmbedWrapper.tsx +25 -0
- package/src/Embed/UuDisclaimerEmbed.tsx +10 -10
- package/src/Embed/index.ts +1 -0
- package/src/Grid/Grid.stories.tsx +15 -9
- package/src/KeyFigure/KeyFigure.tsx +5 -0
- package/src/LicenseByline/EmbedByline.tsx +11 -6
- package/src/LicenseByline/LicenseLink.tsx +9 -2
- package/src/index.ts +1 -0
- package/src/locale/messages-en.ts +2 -8
- package/src/locale/messages-nb.ts +2 -8
- package/src/locale/messages-nn.ts +2 -8
- package/src/locale/messages-se.ts +2 -8
- package/src/locale/messages-sma.ts +2 -8
package/lib/Embed/index.d.ts
CHANGED
|
@@ -22,3 +22,4 @@ export { default as UuDisclaimerEmbed } from "./UuDisclaimerEmbed";
|
|
|
22
22
|
export { default as CopyrightEmbed } from "./CopyrightEmbed";
|
|
23
23
|
export { default as CodeEmbed } from "./CodeEmbed";
|
|
24
24
|
export type { HeartButtonType, CanonicalUrlFuncs, RenderContext } from "./types";
|
|
25
|
+
export { EmbedWrapper } from "./EmbedWrapper";
|
package/lib/Embed/index.js
CHANGED
|
@@ -45,6 +45,12 @@ Object.defineProperty(exports, "CopyrightEmbed", {
|
|
|
45
45
|
return _CopyrightEmbed.default;
|
|
46
46
|
}
|
|
47
47
|
});
|
|
48
|
+
Object.defineProperty(exports, "EmbedWrapper", {
|
|
49
|
+
enumerable: true,
|
|
50
|
+
get: function () {
|
|
51
|
+
return _EmbedWrapper.EmbedWrapper;
|
|
52
|
+
}
|
|
53
|
+
});
|
|
48
54
|
Object.defineProperty(exports, "ExternalEmbed", {
|
|
49
55
|
enumerable: true,
|
|
50
56
|
get: function () {
|
|
@@ -132,6 +138,7 @@ var _UnknownEmbed = _interopRequireDefault(require("./UnknownEmbed"));
|
|
|
132
138
|
var _UuDisclaimerEmbed = _interopRequireDefault(require("./UuDisclaimerEmbed"));
|
|
133
139
|
var _CopyrightEmbed = _interopRequireDefault(require("./CopyrightEmbed"));
|
|
134
140
|
var _CodeEmbed = _interopRequireDefault(require("./CodeEmbed"));
|
|
141
|
+
var _EmbedWrapper = require("./EmbedWrapper");
|
|
135
142
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
136
143
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
137
144
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
@@ -21,7 +21,11 @@ const ContentWrapper = (0, _jsx2.styled)("div", {
|
|
|
21
21
|
display: "flex",
|
|
22
22
|
flexDirection: "column",
|
|
23
23
|
alignItems: "center",
|
|
24
|
-
justifyContent: "center"
|
|
24
|
+
justifyContent: "center",
|
|
25
|
+
gap: "xsmall",
|
|
26
|
+
"&:not(:has(> img))": {
|
|
27
|
+
paddingBlock: "xxlarge"
|
|
28
|
+
}
|
|
25
29
|
}
|
|
26
30
|
});
|
|
27
31
|
const StyledImage = (0, _jsx2.styled)("img", {
|
|
@@ -25,7 +25,6 @@ const BylineWrapper = (0, _jsx2.styled)("figcaption", {
|
|
|
25
25
|
display: "flex",
|
|
26
26
|
flexDirection: "column",
|
|
27
27
|
paddingBlock: "xsmall",
|
|
28
|
-
background: "surface.default",
|
|
29
28
|
textStyle: "label.medium",
|
|
30
29
|
color: "text.subtle"
|
|
31
30
|
}
|
|
@@ -151,9 +150,10 @@ const StyledButton = (0, _jsx2.styled)(_primitives.Button, {
|
|
|
151
150
|
});
|
|
152
151
|
const LicenseDescription = _ref2 => {
|
|
153
152
|
let {
|
|
154
|
-
children
|
|
153
|
+
children,
|
|
154
|
+
isOpen,
|
|
155
|
+
setIsOpen
|
|
155
156
|
} = _ref2;
|
|
156
|
-
const [isOpen, setIsOpen] = (0, _react.useState)(false);
|
|
157
157
|
const open = isOpen ? {
|
|
158
158
|
"data-open": ""
|
|
159
159
|
} : {};
|
|
@@ -191,18 +191,22 @@ const LicenseContainerContent = _ref3 => {
|
|
|
191
191
|
const license = copyright ? (0, _licenses.getLicenseByAbbreviation)(copyright.license?.license ?? "", i18n.language) : undefined;
|
|
192
192
|
const authors = (0, _licenses.getLicenseCredits)(copyright);
|
|
193
193
|
const captionAuthors = Object.values(authors).find(i => i.length > 0) ?? [];
|
|
194
|
+
const [isOpen, setIsOpen] = (0, _react.useState)(false);
|
|
194
195
|
const content = /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
195
196
|
children: [children, ` ${t(`embed.type.${type}`)}${captionAuthors.length ? ": " : ""}`, /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
|
|
196
197
|
property: "cc:attributionName",
|
|
197
198
|
children: captionAuthors.map(author => author.name).join(", ")
|
|
198
199
|
}), license ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
199
200
|
children: [" / ", /*#__PURE__*/(0, _jsxRuntime.jsx)(_LicenseLink.LicenseLink, {
|
|
200
|
-
license: license
|
|
201
|
+
license: license,
|
|
202
|
+
hideLink: !isOpen && !!children
|
|
201
203
|
})]
|
|
202
204
|
}) : null]
|
|
203
205
|
});
|
|
204
206
|
if (children) {
|
|
205
207
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(LicenseDescription, {
|
|
208
|
+
isOpen: isOpen,
|
|
209
|
+
setIsOpen: setIsOpen,
|
|
206
210
|
children: content
|
|
207
211
|
});
|
|
208
212
|
}
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
import { LicenseLocaleType } from "@ndla/licenses";
|
|
9
9
|
interface Props {
|
|
10
10
|
license: LicenseLocaleType;
|
|
11
|
+
hideLink?: boolean;
|
|
11
12
|
}
|
|
12
|
-
export declare const LicenseLink: ({ license }: Props) => import("react/jsx-runtime").JSX.Element | null;
|
|
13
|
+
export declare const LicenseLink: ({ license, hideLink }: Props) => import("react/jsx-runtime").JSX.Element | null;
|
|
13
14
|
export {};
|
|
@@ -25,13 +25,22 @@ const StyledSafeLink = (0, _jsx2.styled)(_safelink.SafeLink, {
|
|
|
25
25
|
},
|
|
26
26
|
_focusWithin: {
|
|
27
27
|
textDecoration: "none"
|
|
28
|
+
},
|
|
29
|
+
mobileWideDown: {
|
|
30
|
+
_disabled: {
|
|
31
|
+
display: "none"
|
|
32
|
+
}
|
|
28
33
|
}
|
|
29
34
|
}
|
|
30
35
|
});
|
|
31
36
|
const LicenseLink = _ref => {
|
|
32
37
|
let {
|
|
33
|
-
license
|
|
38
|
+
license,
|
|
39
|
+
hideLink
|
|
34
40
|
} = _ref;
|
|
41
|
+
const disabled = hideLink ? {
|
|
42
|
+
"data-disabled": ""
|
|
43
|
+
} : {};
|
|
35
44
|
if (license.abbreviation === "unknown") {
|
|
36
45
|
return null;
|
|
37
46
|
}
|
|
@@ -39,6 +48,7 @@ const LicenseLink = _ref => {
|
|
|
39
48
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(StyledSafeLink, {
|
|
40
49
|
to: license.url,
|
|
41
50
|
rel: "license",
|
|
51
|
+
...disabled,
|
|
42
52
|
children: license.abbreviation
|
|
43
53
|
});
|
|
44
54
|
}
|
package/lib/index.d.ts
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*
|
|
7
7
|
*/
|
|
8
8
|
export { Concept } from "./Concept/Concept";
|
|
9
|
-
export { ImageEmbed, getCrop, getFocalPoint, AudioEmbed, H5pEmbed, ExternalEmbed, IframeEmbed, FootnoteEmbed, BrightcoveEmbed, ContentLinkEmbed, RelatedContentEmbed, ConceptEmbed, UnknownEmbed, InlineConcept, BlockConcept, UuDisclaimerEmbed, CopyrightEmbed, CodeEmbed, InlineTriggerButton, } from "./Embed";
|
|
9
|
+
export { ImageEmbed, getCrop, getFocalPoint, AudioEmbed, H5pEmbed, ExternalEmbed, IframeEmbed, FootnoteEmbed, BrightcoveEmbed, ContentLinkEmbed, RelatedContentEmbed, ConceptEmbed, UnknownEmbed, InlineConcept, BlockConcept, UuDisclaimerEmbed, CopyrightEmbed, CodeEmbed, InlineTriggerButton, EmbedWrapper, } from "./Embed";
|
|
10
10
|
export { LicenseLink, EmbedByline } from "./LicenseByline";
|
|
11
11
|
export { ArticleByline, ArticleBylineAccordionItem, ArticleFootNotes, ArticleWrapper, Article, ArticleFooter, ArticleHeader, ArticleContent, ArticleHGroup, ArticleTitle, } from "./Article";
|
|
12
12
|
export { getPossiblyRelativeUrl } from "./utils/relativeUrl";
|
package/lib/index.js
CHANGED
|
@@ -207,6 +207,12 @@ Object.defineProperty(exports, "EmbedByline", {
|
|
|
207
207
|
return _LicenseByline.EmbedByline;
|
|
208
208
|
}
|
|
209
209
|
});
|
|
210
|
+
Object.defineProperty(exports, "EmbedWrapper", {
|
|
211
|
+
enumerable: true,
|
|
212
|
+
get: function () {
|
|
213
|
+
return _Embed.EmbedWrapper;
|
|
214
|
+
}
|
|
215
|
+
});
|
|
210
216
|
Object.defineProperty(exports, "ErrorMessage", {
|
|
211
217
|
enumerable: true,
|
|
212
218
|
get: function () {
|
|
@@ -1208,10 +1208,7 @@ declare const messages: {
|
|
|
1208
1208
|
learningpathUnsupported: string;
|
|
1209
1209
|
drawerButton: string;
|
|
1210
1210
|
drawerTitle: string;
|
|
1211
|
-
description:
|
|
1212
|
-
all: string;
|
|
1213
|
-
info1: string;
|
|
1214
|
-
};
|
|
1211
|
+
description: string;
|
|
1215
1212
|
willOpenInNewTab: string;
|
|
1216
1213
|
};
|
|
1217
1214
|
myPage: {
|
|
@@ -1397,9 +1394,6 @@ declare const messages: {
|
|
|
1397
1394
|
pinyin: string;
|
|
1398
1395
|
};
|
|
1399
1396
|
};
|
|
1400
|
-
uuDisclaimer: {
|
|
1401
|
-
alternative: string;
|
|
1402
|
-
};
|
|
1403
1397
|
wordClass: {
|
|
1404
1398
|
[x: string]: string;
|
|
1405
1399
|
};
|
|
@@ -1225,10 +1225,7 @@ const messages = {
|
|
|
1225
1225
|
learningpathUnsupported: "Learning paths and multidisciplinary cases cannot be shown directly in a shared folder. You can open the learning path in a new tab by clicking the link in the navigation menu to the left.",
|
|
1226
1226
|
drawerButton: "Show folders and resources",
|
|
1227
1227
|
drawerTitle: "Folders and resources",
|
|
1228
|
-
description:
|
|
1229
|
-
all: "In this folder you find articles and tasks from NDLA. The articles have been collected and placed in order by a teacher.\n\nYou can use the menu to navigate through the articles.",
|
|
1230
|
-
info1: "In this folder you find articles and tasks from NDLA. The articles have been collected and placed in order by a teacher."
|
|
1231
|
-
},
|
|
1228
|
+
description: "In this folder you find articles and tasks from NDLA. The articles have been collected and placed in order by a teacher.",
|
|
1232
1229
|
willOpenInNewTab: "Opens in a new tab."
|
|
1233
1230
|
},
|
|
1234
1231
|
myPage: {
|
|
@@ -1414,9 +1411,6 @@ const messages = {
|
|
|
1414
1411
|
pinyin: "Pinyin"
|
|
1415
1412
|
}
|
|
1416
1413
|
},
|
|
1417
|
-
uuDisclaimer: {
|
|
1418
|
-
alternative: "You can find alternative content in the article"
|
|
1419
|
-
},
|
|
1420
1414
|
wordClass: {
|
|
1421
1415
|
[wordClass.wordClass.adjective]: "Adjective",
|
|
1422
1416
|
[wordClass.wordClass.adverb]: "Adverb",
|
|
@@ -1208,10 +1208,7 @@ declare const messages: {
|
|
|
1208
1208
|
learningpathUnsupported: string;
|
|
1209
1209
|
drawerButton: string;
|
|
1210
1210
|
drawerTitle: string;
|
|
1211
|
-
description:
|
|
1212
|
-
all: string;
|
|
1213
|
-
info1: string;
|
|
1214
|
-
};
|
|
1211
|
+
description: string;
|
|
1215
1212
|
willOpenInNewTab: string;
|
|
1216
1213
|
};
|
|
1217
1214
|
myPage: {
|
|
@@ -1397,9 +1394,6 @@ declare const messages: {
|
|
|
1397
1394
|
pinyin: string;
|
|
1398
1395
|
};
|
|
1399
1396
|
};
|
|
1400
|
-
uuDisclaimer: {
|
|
1401
|
-
alternative: string;
|
|
1402
|
-
};
|
|
1403
1397
|
wordClass: {
|
|
1404
1398
|
[x: string]: string;
|
|
1405
1399
|
};
|
|
@@ -1225,10 +1225,7 @@ const messages = {
|
|
|
1225
1225
|
learningpathUnsupported: "Læringsstier og tverrfaglige caser kan ikke vises direkte i delte mapper. Dersom du trykker på lenka i navigasjonsmenyen til venstre, vil stien åpnes i en ny fane.",
|
|
1226
1226
|
drawerButton: "Vis mapper og ressurser",
|
|
1227
1227
|
drawerTitle: "Mapper og ressurser",
|
|
1228
|
-
description:
|
|
1229
|
-
all: "I denne delte mappa finner du fagstoff og oppgaver fra NDLA. Artiklene er samlet inn og satt i rekkefølge av en lærer.\n\nDu kan bla i artiklene ved å bruke menyen.",
|
|
1230
|
-
info1: "I denne delte mappa finner du fagstoff og oppgaver fra NDLA. Artiklene er samlet inn og satt i rekkefølge av en lærer."
|
|
1231
|
-
},
|
|
1228
|
+
description: "I denne delte mappa finner du fagstoff og oppgaver fra NDLA. Artiklene er samlet inn og satt i rekkefølge av en lærer.",
|
|
1232
1229
|
willOpenInNewTab: "Åpnes i ny fane."
|
|
1233
1230
|
},
|
|
1234
1231
|
myPage: {
|
|
@@ -1414,9 +1411,6 @@ const messages = {
|
|
|
1414
1411
|
pinyin: "Pinyin"
|
|
1415
1412
|
}
|
|
1416
1413
|
},
|
|
1417
|
-
uuDisclaimer: {
|
|
1418
|
-
alternative: "Du kan finne alternativt innhold i artikkelen"
|
|
1419
|
-
},
|
|
1420
1414
|
wordClass: {
|
|
1421
1415
|
[wordClass.wordClass.adjective]: "Adjektiv",
|
|
1422
1416
|
[wordClass.wordClass.adverb]: "Adverb",
|
|
@@ -1208,10 +1208,7 @@ declare const messages: {
|
|
|
1208
1208
|
drawerButton: string;
|
|
1209
1209
|
drawerTitle: string;
|
|
1210
1210
|
learningpathUnsupported: string;
|
|
1211
|
-
description:
|
|
1212
|
-
all: string;
|
|
1213
|
-
info1: string;
|
|
1214
|
-
};
|
|
1211
|
+
description: string;
|
|
1215
1212
|
willOpenInNewTab: string;
|
|
1216
1213
|
};
|
|
1217
1214
|
myPage: {
|
|
@@ -1397,9 +1394,6 @@ declare const messages: {
|
|
|
1397
1394
|
pinyin: string;
|
|
1398
1395
|
};
|
|
1399
1396
|
};
|
|
1400
|
-
uuDisclaimer: {
|
|
1401
|
-
alternative: string;
|
|
1402
|
-
};
|
|
1403
1397
|
wordClass: {
|
|
1404
1398
|
[x: string]: string;
|
|
1405
1399
|
};
|
|
@@ -1225,10 +1225,7 @@ const messages = {
|
|
|
1225
1225
|
drawerButton: "Vis mapper og ressursar",
|
|
1226
1226
|
drawerTitle: "Mapper og ressursar",
|
|
1227
1227
|
learningpathUnsupported: "Læringsstiar og tverrfaglege caser kan ikkje visast direkte i delte mapper. Dersom du trykker på lenka i navigasjonsmenyen til venstre, blir stien opna i ei ny fane.",
|
|
1228
|
-
description:
|
|
1229
|
-
all: "I denne delte mappa finn du fagstoff og oppgåver frå NDLA. Artiklane er samla inn og sette i rekkefølge av ein lærar.\n\nDu kan bla i artiklane ved å bruke menyen.",
|
|
1230
|
-
info1: "I denne delte mappa finn du fagstoff og oppgåver frå NDLA. Artiklane er samla inn og sette i rekkefølge av ein lærar."
|
|
1231
|
-
},
|
|
1228
|
+
description: "I denne delte mappa finn du fagstoff og oppgåver frå NDLA. Artiklane er samla inn og sette i rekkefølge av ein lærar.",
|
|
1232
1229
|
willOpenInNewTab: "Blir opna i ny fane."
|
|
1233
1230
|
},
|
|
1234
1231
|
myPage: {
|
|
@@ -1414,9 +1411,6 @@ const messages = {
|
|
|
1414
1411
|
pinyin: "Pinyin"
|
|
1415
1412
|
}
|
|
1416
1413
|
},
|
|
1417
|
-
uuDisclaimer: {
|
|
1418
|
-
alternative: "Du kan finne alternativt innhald i artikkelen"
|
|
1419
|
-
},
|
|
1420
1414
|
wordClass: {
|
|
1421
1415
|
[wordClass.wordClass.adjective]: "Adjektiv",
|
|
1422
1416
|
[wordClass.wordClass.adverb]: "Adverb",
|
|
@@ -1208,10 +1208,7 @@ declare const messages: {
|
|
|
1208
1208
|
learningpathUnsupported: string;
|
|
1209
1209
|
drawerButton: string;
|
|
1210
1210
|
drawerTitle: string;
|
|
1211
|
-
description:
|
|
1212
|
-
all: string;
|
|
1213
|
-
info1: string;
|
|
1214
|
-
};
|
|
1211
|
+
description: string;
|
|
1215
1212
|
willOpenInNewTab: string;
|
|
1216
1213
|
};
|
|
1217
1214
|
myPage: {
|
|
@@ -1397,9 +1394,6 @@ declare const messages: {
|
|
|
1397
1394
|
pinyin: string;
|
|
1398
1395
|
};
|
|
1399
1396
|
};
|
|
1400
|
-
uuDisclaimer: {
|
|
1401
|
-
alternative: string;
|
|
1402
|
-
};
|
|
1403
1397
|
wordClass: {
|
|
1404
1398
|
[x: string]: string;
|
|
1405
1399
|
};
|
|
@@ -1225,10 +1225,7 @@ const messages = {
|
|
|
1225
1225
|
learningpathUnsupported: "Læringsstier og tverrfaglige caser kan ikke vises direkte i delte mapper. Dersom du trykker på lenka i navigasjonsmenyen til venstre, vil stien åpnes i en ny fane.",
|
|
1226
1226
|
drawerButton: "Vis mapper og ressurser",
|
|
1227
1227
|
drawerTitle: "Mapper og ressurser",
|
|
1228
|
-
description:
|
|
1229
|
-
all: "I denne delte mappa finner du fagstoff og oppgaver fra NDLA. Artiklene er samlet inn og satt i rekkefølge av en lærer.\n\nDu kan bla i artiklene ved å bruke menyen.",
|
|
1230
|
-
info1: "I denne delte mappa finner du fagstoff og oppgaver fra NDLA. Artiklene er samlet inn og satt i rekkefølge av en lærer."
|
|
1231
|
-
},
|
|
1228
|
+
description: "I denne delte mappa finner du fagstoff og oppgaver fra NDLA. Artiklene er samlet inn og satt i rekkefølge av en lærer.",
|
|
1232
1229
|
willOpenInNewTab: "Åpnes i ny fane."
|
|
1233
1230
|
},
|
|
1234
1231
|
myPage: {
|
|
@@ -1414,9 +1411,6 @@ const messages = {
|
|
|
1414
1411
|
pinyin: "Pinyin"
|
|
1415
1412
|
}
|
|
1416
1413
|
},
|
|
1417
|
-
uuDisclaimer: {
|
|
1418
|
-
alternative: "Du kan finne alternativt innhold i artikkelen"
|
|
1419
|
-
},
|
|
1420
1414
|
wordClass: {
|
|
1421
1415
|
[wordClass.wordClass.adjective]: "Adjektiivvat",
|
|
1422
1416
|
[wordClass.wordClass.adverb]: "Advearba",
|
|
@@ -1208,10 +1208,7 @@ declare const messages: {
|
|
|
1208
1208
|
learningpathUnsupported: string;
|
|
1209
1209
|
drawerButton: string;
|
|
1210
1210
|
drawerTitle: string;
|
|
1211
|
-
description:
|
|
1212
|
-
all: string;
|
|
1213
|
-
info1: string;
|
|
1214
|
-
};
|
|
1211
|
+
description: string;
|
|
1215
1212
|
willOpenInNewTab: string;
|
|
1216
1213
|
};
|
|
1217
1214
|
myPage: {
|
|
@@ -1397,9 +1394,6 @@ declare const messages: {
|
|
|
1397
1394
|
pinyin: string;
|
|
1398
1395
|
};
|
|
1399
1396
|
};
|
|
1400
|
-
uuDisclaimer: {
|
|
1401
|
-
alternative: string;
|
|
1402
|
-
};
|
|
1403
1397
|
wordClass: {
|
|
1404
1398
|
[x: string]: string;
|
|
1405
1399
|
};
|
|
@@ -1225,10 +1225,7 @@ const messages = {
|
|
|
1225
1225
|
learningpathUnsupported: "Læringsstier og tverrfaglige caser kan ikke vises direkte i delte mapper. Dersom du trykker på lenka i navigasjonsmenyen til venstre, vil stien åpnes i en ny fane.",
|
|
1226
1226
|
drawerButton: "Vis mapper og ressurser",
|
|
1227
1227
|
drawerTitle: "Mapper og ressurser",
|
|
1228
|
-
description:
|
|
1229
|
-
all: "I denne delte mappa finner du fagstoff og oppgaver fra NDLA. Artiklene er samlet inn og satt i rekkefølge av en lærer.\n\nDu kan bla i artiklene ved å bruke menyen.",
|
|
1230
|
-
info1: "I denne delte mappa finner du fagstoff og oppgaver fra NDLA. Artiklene er samlet inn og satt i rekkefølge av en lærer."
|
|
1231
|
-
},
|
|
1228
|
+
description: "I denne delte mappa finner du fagstoff og oppgaver fra NDLA. Artiklene er samlet inn og satt i rekkefølge av en lærer.",
|
|
1232
1229
|
willOpenInNewTab: "Åpnes i ny fane."
|
|
1233
1230
|
},
|
|
1234
1231
|
myPage: {
|
|
@@ -1414,9 +1411,6 @@ const messages = {
|
|
|
1414
1411
|
pinyin: "Pinyin"
|
|
1415
1412
|
}
|
|
1416
1413
|
},
|
|
1417
|
-
uuDisclaimer: {
|
|
1418
|
-
alternative: "Du kan finne alternativt innhold i artikkelen"
|
|
1419
|
-
},
|
|
1420
1414
|
wordClass: {
|
|
1421
1415
|
[wordClass.wordClass.adjective]: "Adjektiv",
|
|
1422
1416
|
[wordClass.wordClass.adverb]: "Adverb",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ndla/ui",
|
|
3
|
-
"version": "56.0.
|
|
3
|
+
"version": "56.0.40-alpha.0",
|
|
4
4
|
"description": "UI component library for NDLA",
|
|
5
5
|
"license": "GPL-3.0",
|
|
6
6
|
"main": "lib/index.js",
|
|
@@ -33,10 +33,10 @@
|
|
|
33
33
|
],
|
|
34
34
|
"dependencies": {
|
|
35
35
|
"@ndla/core": "^5.0.2",
|
|
36
|
-
"@ndla/icons": "^8.0.
|
|
36
|
+
"@ndla/icons": "^8.0.27-alpha.0",
|
|
37
37
|
"@ndla/licenses": "^8.0.3-alpha.0",
|
|
38
|
-
"@ndla/primitives": "^1.0.
|
|
39
|
-
"@ndla/safelink": "^7.0.
|
|
38
|
+
"@ndla/primitives": "^1.0.36-alpha.0",
|
|
39
|
+
"@ndla/safelink": "^7.0.36-alpha.0",
|
|
40
40
|
"@ndla/styled-system": "^0.0.23",
|
|
41
41
|
"@ndla/util": "^5.0.0-alpha.0",
|
|
42
42
|
"html-react-parser": "^5.1.8",
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
"react-router-dom": "> 6.0.0"
|
|
51
51
|
},
|
|
52
52
|
"devDependencies": {
|
|
53
|
-
"@ndla/preset-panda": "^0.0.
|
|
53
|
+
"@ndla/preset-panda": "^0.0.36",
|
|
54
54
|
"@ndla/types-backend": "^0.2.86",
|
|
55
55
|
"@ndla/types-embed": "^5.0.3-alpha.0",
|
|
56
56
|
"@pandacss/dev": "^0.46.0"
|
|
@@ -58,5 +58,5 @@
|
|
|
58
58
|
"publishConfig": {
|
|
59
59
|
"access": "public"
|
|
60
60
|
},
|
|
61
|
-
"gitHead": "
|
|
61
|
+
"gitHead": "4bdd26c1af4c3ed459924af5888de4040de6d47b"
|
|
62
62
|
}
|
package/src/Article/Article.tsx
CHANGED
|
@@ -113,6 +113,7 @@ const StyledStack = styled(Stack, {
|
|
|
113
113
|
interface ArticleTitleProps {
|
|
114
114
|
heartButton?: ReactNode;
|
|
115
115
|
contentType?: ContentType;
|
|
116
|
+
contentTypeLabel?: ReactNode;
|
|
116
117
|
competenceGoals?: ReactNode;
|
|
117
118
|
id: string;
|
|
118
119
|
lang?: string;
|
|
@@ -127,6 +128,7 @@ export const ArticleTitle = ({
|
|
|
127
128
|
lang,
|
|
128
129
|
id,
|
|
129
130
|
introduction,
|
|
131
|
+
contentTypeLabel,
|
|
130
132
|
competenceGoals,
|
|
131
133
|
}: ArticleTitleProps) => {
|
|
132
134
|
return (
|
|
@@ -134,7 +136,7 @@ export const ArticleTitle = ({
|
|
|
134
136
|
<ArticleHGroup>
|
|
135
137
|
{(!!contentType || !!heartButton) && (
|
|
136
138
|
<StyledStack justify="space-between" align="center" direction="row" gap="small">
|
|
137
|
-
{!!contentType && <ContentTypeBadgeNew contentType={contentType}
|
|
139
|
+
{!!contentType && <ContentTypeBadgeNew contentType={contentType}>{contentTypeLabel}</ContentTypeBadgeNew>}
|
|
138
140
|
{heartButton}
|
|
139
141
|
</StyledStack>
|
|
140
142
|
)}
|
|
@@ -157,6 +159,7 @@ interface Props {
|
|
|
157
159
|
article: ArticleType;
|
|
158
160
|
licenseBox?: ReactNode;
|
|
159
161
|
contentType?: ContentType;
|
|
162
|
+
contentTypeLabel?: ReactNode;
|
|
160
163
|
children?: ReactNode;
|
|
161
164
|
competenceGoals?: ReactNode;
|
|
162
165
|
id: string;
|
|
@@ -169,6 +172,7 @@ export const Article = ({
|
|
|
169
172
|
licenseBox,
|
|
170
173
|
children,
|
|
171
174
|
competenceGoals,
|
|
175
|
+
contentTypeLabel,
|
|
172
176
|
id,
|
|
173
177
|
heartButton,
|
|
174
178
|
lang,
|
|
@@ -188,6 +192,7 @@ export const Article = ({
|
|
|
188
192
|
introduction={introduction}
|
|
189
193
|
competenceGoals={competenceGoals}
|
|
190
194
|
lang={lang}
|
|
195
|
+
contentTypeLabel={contentTypeLabel}
|
|
191
196
|
/>
|
|
192
197
|
<ArticleContent>{content}</ArticleContent>
|
|
193
198
|
<ArticleFooter>
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
9
|
import { ReactNode } from "react";
|
|
10
|
+
import { styled } from "@ndla/styled-system/jsx";
|
|
10
11
|
import { CopyrightMetaData } from "@ndla/types-embed";
|
|
11
12
|
import { EmbedByline } from "../LicenseByline";
|
|
12
13
|
|
|
@@ -15,10 +16,16 @@ interface Props {
|
|
|
15
16
|
children?: ReactNode;
|
|
16
17
|
}
|
|
17
18
|
|
|
19
|
+
const StyledCopyrightContent = styled("div", {
|
|
20
|
+
base: {
|
|
21
|
+
marginBlockEnd: "xsmall",
|
|
22
|
+
},
|
|
23
|
+
});
|
|
24
|
+
|
|
18
25
|
const CopyrightEmbed = ({ embed, children }: Props) => {
|
|
19
26
|
return (
|
|
20
27
|
<figure data-embed-type="copyright">
|
|
21
|
-
{children}
|
|
28
|
+
<StyledCopyrightContent data-copyright-content="">{children}</StyledCopyrightContent>
|
|
22
29
|
<EmbedByline type="copyright" copyright={embed.embedData.copyright} />
|
|
23
30
|
</figure>
|
|
24
31
|
);
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2024-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 { ComponentPropsWithRef, forwardRef } from "react";
|
|
10
|
+
import { ark } from "@ark-ui/react";
|
|
11
|
+
import { styled } from "@ndla/styled-system/jsx";
|
|
12
|
+
|
|
13
|
+
const StyledEmbedWrapper = styled(
|
|
14
|
+
ark.div,
|
|
15
|
+
{
|
|
16
|
+
base: {
|
|
17
|
+
position: "relative",
|
|
18
|
+
},
|
|
19
|
+
},
|
|
20
|
+
{ baseComponent: true },
|
|
21
|
+
);
|
|
22
|
+
|
|
23
|
+
export const EmbedWrapper = forwardRef<HTMLDivElement, ComponentPropsWithRef<"div">>((props, ref) => (
|
|
24
|
+
<StyledEmbedWrapper data-embed-wrapper="" {...props} ref={ref} />
|
|
25
|
+
));
|
|
@@ -7,7 +7,6 @@
|
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
9
|
import { ReactNode } from "react";
|
|
10
|
-
import { useTranslation } from "react-i18next";
|
|
11
10
|
import { InformationLine } from "@ndla/icons/common";
|
|
12
11
|
import { MessageBox } from "@ndla/primitives";
|
|
13
12
|
import { SafeLink } from "@ndla/safelink";
|
|
@@ -23,6 +22,7 @@ const StyledMessageBox = styled(MessageBox, {
|
|
|
23
22
|
base: {
|
|
24
23
|
display: "flex",
|
|
25
24
|
alignItems: "center",
|
|
25
|
+
marginBlockEnd: "xsmall",
|
|
26
26
|
},
|
|
27
27
|
});
|
|
28
28
|
const Disclaimer = styled("div", {
|
|
@@ -30,10 +30,13 @@ const Disclaimer = styled("div", {
|
|
|
30
30
|
textStyle: "body.medium",
|
|
31
31
|
},
|
|
32
32
|
});
|
|
33
|
+
const StyledSafeLink = styled(SafeLink, {
|
|
34
|
+
base: {
|
|
35
|
+
paddingInlineStart: "4xsmall",
|
|
36
|
+
},
|
|
37
|
+
});
|
|
33
38
|
|
|
34
39
|
const UuDisclaimerEmbed = ({ embed, children }: Props) => {
|
|
35
|
-
const { t } = useTranslation();
|
|
36
|
-
|
|
37
40
|
if (embed.status === "error") {
|
|
38
41
|
return null;
|
|
39
42
|
}
|
|
@@ -41,12 +44,9 @@ const UuDisclaimerEmbed = ({ embed, children }: Props) => {
|
|
|
41
44
|
const { embedData, data } = embed;
|
|
42
45
|
|
|
43
46
|
const disclaimerLink = data?.disclaimerLink ? (
|
|
44
|
-
|
|
45
|
-
{
|
|
46
|
-
|
|
47
|
-
{data.disclaimerLink.text}
|
|
48
|
-
</SafeLink>
|
|
49
|
-
</>
|
|
47
|
+
<StyledSafeLink to={data.disclaimerLink.href} target="_blank" rel="noopener noreferrer">
|
|
48
|
+
{data.disclaimerLink.text}
|
|
49
|
+
</StyledSafeLink>
|
|
50
50
|
) : null;
|
|
51
51
|
|
|
52
52
|
return (
|
|
@@ -58,7 +58,7 @@ const UuDisclaimerEmbed = ({ embed, children }: Props) => {
|
|
|
58
58
|
{disclaimerLink}
|
|
59
59
|
</Disclaimer>
|
|
60
60
|
</StyledMessageBox>
|
|
61
|
-
{children}
|
|
61
|
+
<div data-uu-content="">{children}</div>
|
|
62
62
|
</div>
|
|
63
63
|
);
|
|
64
64
|
};
|
package/src/Embed/index.ts
CHANGED
|
@@ -23,3 +23,4 @@ export { default as UuDisclaimerEmbed } from "./UuDisclaimerEmbed";
|
|
|
23
23
|
export { default as CopyrightEmbed } from "./CopyrightEmbed";
|
|
24
24
|
export { default as CodeEmbed } from "./CodeEmbed";
|
|
25
25
|
export type { HeartButtonType, CanonicalUrlFuncs, RenderContext } from "./types";
|
|
26
|
+
export { EmbedWrapper } from "./EmbedWrapper";
|
|
@@ -50,7 +50,11 @@ export const GridKeyPerformanceStory: StoryFn<typeof Grid> = ({ ...args }) => {
|
|
|
50
50
|
const columns = args.columns === "2x2" ? 4 : parseInt(args.columns);
|
|
51
51
|
const items = new Array(columns).fill(0).map((_, idx) => {
|
|
52
52
|
const args = keyFigureArgs[idx % keyFigureArgs.length];
|
|
53
|
-
return
|
|
53
|
+
return (
|
|
54
|
+
<div key={idx} data-type="grid-cell" data-parallax-cell="false">
|
|
55
|
+
<Plain key={idx} {...args} />
|
|
56
|
+
</div>
|
|
57
|
+
);
|
|
54
58
|
});
|
|
55
59
|
return <Grid {...args}>{items}</Grid>;
|
|
56
60
|
};
|
|
@@ -58,14 +62,16 @@ export const GridKeyPerformanceStory: StoryFn<typeof Grid> = ({ ...args }) => {
|
|
|
58
62
|
export const GridBlogPostStory: StoryFn<typeof Grid> = ({ ...args }) => {
|
|
59
63
|
const columns = args.columns === "2x2" ? 4 : parseInt(args.columns);
|
|
60
64
|
const items = new Array(columns).fill(
|
|
61
|
-
<
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
65
|
+
<div data-type="grid-cell" data-parallax-cell="false">
|
|
66
|
+
<BlogPostStory
|
|
67
|
+
metaImage={BlogPostStory.args?.metaImage!}
|
|
68
|
+
title={BlogPostStory.args?.title!}
|
|
69
|
+
size={"normal"}
|
|
70
|
+
headingLevel={BlogPostStory.args?.headingLevel}
|
|
71
|
+
url={BlogPostStory.args?.url!}
|
|
72
|
+
author={BlogPostStory.args?.author}
|
|
73
|
+
/>
|
|
74
|
+
</div>,
|
|
69
75
|
);
|
|
70
76
|
return <Grid {...args}>{items}</Grid>;
|
|
71
77
|
};
|