@ndla/ui 53.0.0 → 54.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/Embed/ConceptEmbed.js +14 -8
- package/es/Embed/ImageEmbed.js +10 -4
- package/es/Embed/RelatedContentEmbed.js +2 -1
- package/es/ErrorMessage/ErrorMessage.js +14 -17
- package/es/Figure/Figure.js +36 -20
- package/es/Layout/LayoutItem.js +20 -6
- package/es/Layout/index.js +0 -1
- package/es/List/OrderedList.js +12 -11
- package/es/TreeStructure/AddFolderButton.js +2 -2
- package/es/TreeStructure/ComboboxButton.js +2 -2
- package/es/TreeStructure/FolderItem.js +7 -7
- package/es/TreeStructure/FolderItems.js +2 -2
- package/es/TreeStructure/TreeStructure.js +5 -5
- package/es/all.css +1 -1
- package/es/index.js +1 -1
- package/es/locale/messages-en.js +2 -0
- package/es/locale/messages-nb.js +2 -0
- package/es/locale/messages-nn.js +2 -0
- package/es/locale/messages-se.js +2 -0
- package/es/locale/messages-sma.js +2 -0
- package/lib/Article/Article.js +1 -1
- package/lib/Article/ArticleByline.js +1 -1
- package/lib/Article/ArticleFootNotes.js +1 -1
- package/lib/Article/ArticleHeaderWrapper.js +1 -1
- package/lib/Article/ArticleParagraph.js +1 -1
- package/lib/Article/index.js +1 -1
- package/lib/AudioPlayer/AudioPlayer.js +1 -1
- package/lib/AudioPlayer/Controls.js +1 -1
- package/lib/AudioPlayer/index.js +1 -1
- package/lib/BlogPost/BlogPost.js +1 -1
- package/lib/BlogPost/index.js +1 -1
- package/lib/Breadcrumb/Breadcrumb.js +1 -1
- package/lib/Breadcrumb/BreadcrumbItem.js +1 -1
- package/lib/Breadcrumb/HomeBreadcrumb.js +1 -1
- package/lib/Breadcrumb/index.js +1 -1
- package/lib/CampaignBlock/CampaignBlock.js +1 -1
- package/lib/CampaignBlock/index.js +1 -1
- package/lib/CodeBlock/CodeBlock.js +1 -1
- package/lib/CodeBlock/index.js +1 -1
- package/lib/ContactBlock/ContactBlock.js +1 -1
- package/lib/ContactBlock/index.js +1 -1
- package/lib/ContentPlaceholder/ContentPlaceholder.js +1 -1
- package/lib/ContentPlaceholder/index.js +1 -1
- package/lib/ContentTypeBadge/ContentTypeBadge.js +1 -1
- package/lib/CopyParagraphButton/CopyParagraphButton.js +1 -1
- package/lib/CopyParagraphButton/index.js +1 -1
- package/lib/CreatedBy/CreatedBy.js +1 -1
- package/lib/CreatedBy/index.js +1 -1
- package/lib/DefinitionList/DefinitionDescription.js +1 -1
- package/lib/DefinitionList/DefinitionTerm.js +1 -1
- package/lib/DefinitionList/index.js +1 -1
- package/lib/Embed/AudioEmbed.js +1 -1
- package/lib/Embed/BrightcoveEmbed.js +1 -1
- package/lib/Embed/ConceptEmbed.d.ts +1 -0
- package/lib/Embed/ConceptEmbed.js +15 -9
- package/lib/Embed/ConceptListEmbed.js +1 -1
- package/lib/Embed/ContentLinkEmbed.js +1 -1
- package/lib/Embed/CopyrightEmbed.js +1 -1
- package/lib/Embed/EmbedErrorPlaceholder.js +1 -1
- package/lib/Embed/ExternalEmbed.js +1 -1
- package/lib/Embed/FootnoteEmbed.js +1 -1
- package/lib/Embed/H5pEmbed.js +1 -1
- package/lib/Embed/IframeEmbed.js +1 -1
- package/lib/Embed/ImageEmbed.js +11 -5
- package/lib/Embed/RelatedContentEmbed.js +3 -1
- package/lib/Embed/UnknownEmbed.js +1 -1
- package/lib/Embed/UuDisclaimerEmbed.js +1 -1
- package/lib/Embed/conceptComponents.js +1 -1
- package/lib/Embed/index.js +1 -1
- package/lib/ErrorMessage/ErrorMessage.js +15 -18
- package/lib/ErrorMessage/ErrorResourceAccessDenied.js +1 -1
- package/lib/ErrorMessage/index.js +1 -1
- package/lib/FactBox/FactBox.js +1 -1
- package/lib/FactBox/index.js +1 -1
- package/lib/Figure/Figure.js +41 -21
- package/lib/Figure/index.js +1 -1
- package/lib/FileList/File.js +1 -1
- package/lib/FileList/FileList.js +1 -1
- package/lib/FileList/Format.js +1 -1
- package/lib/FileList/index.js +1 -1
- package/lib/Footer/FooterBlock.js +1 -1
- package/lib/FramedContent/FramedContent.js +1 -1
- package/lib/FramedContent/index.js +1 -1
- package/lib/FrontpageArticle/FrontpageArticle.js +1 -1
- package/lib/Gloss/Gloss.js +1 -1
- package/lib/Gloss/GlossExample.js +1 -1
- package/lib/Gloss/index.js +1 -1
- package/lib/Grid/Grid.js +1 -1
- package/lib/Hero/Hero.js +1 -1
- package/lib/Hero/HeroContent.js +1 -1
- package/lib/Image/Image.js +1 -1
- package/lib/Image/ImageLink.js +1 -1
- package/lib/KeyFigure/KeyFigure.js +1 -1
- package/lib/KeyFigure/index.js +1 -1
- package/lib/LanguageSelector/LanguageSelector.js +1 -1
- package/lib/LanguageSelector/index.js +1 -1
- package/lib/Layout/LayoutItem.js +20 -8
- package/lib/Layout/OneColumn.js +1 -1
- package/lib/Layout/PageContainer.js +1 -1
- package/lib/Layout/index.d.ts +0 -1
- package/lib/Layout/index.js +1 -8
- package/lib/LetterFilter/LetterFilter.js +1 -1
- package/lib/LetterFilter/index.js +1 -1
- package/lib/LicenseByline/EmbedByline.js +1 -1
- package/lib/LicenseByline/LicenseDescription.js +1 -1
- package/lib/LicenseByline/LicenseLink.js +1 -1
- package/lib/LicenseByline/index.js +1 -1
- package/lib/LinkBlock/LinkBlock.js +1 -1
- package/lib/LinkBlock/LinkBlockSection.js +1 -1
- package/lib/LinkBlock/index.js +1 -1
- package/lib/List/OrderedList.d.ts +0 -1
- package/lib/List/OrderedList.js +13 -13
- package/lib/List/UnOrderedList.js +1 -1
- package/lib/List/index.js +1 -1
- package/lib/Logo/Logo.js +1 -1
- package/lib/Logo/SvgLogo.js +1 -1
- package/lib/Logo/index.js +1 -1
- package/lib/MediaList/MediaList.js +1 -1
- package/lib/Messages/MessageBanner.js +1 -1
- package/lib/Messages/MessageBox.js +1 -1
- package/lib/Messages/index.js +1 -1
- package/lib/MyNdla/Resource/Folder.js +1 -1
- package/lib/MyNdla/Resource/index.js +1 -1
- package/lib/MyNdla/index.js +1 -1
- package/lib/Notion/Notion.js +1 -1
- package/lib/Notion/NotionImage.js +1 -1
- package/lib/Notion/index.js +1 -1
- package/lib/ProgrammeCard/ProgrammeCard.js +1 -1
- package/lib/ProgrammeCard/index.js +1 -1
- package/lib/RelatedArticleList/RelatedArticleList.js +1 -1
- package/lib/Resource/BlockResource.js +1 -1
- package/lib/Resource/ListResource.js +1 -1
- package/lib/Resource/index.js +1 -1
- package/lib/Resource/resourceComponents.js +1 -1
- package/lib/ResourceBox/ResourceBox.js +1 -1
- package/lib/ResourceBox/index.js +1 -1
- package/lib/Search/ActiveFilterContent.js +1 -1
- package/lib/Search/ActiveFilters.js +1 -1
- package/lib/Search/ContentTypeResult.js +1 -1
- package/lib/Search/ContentTypeResultStyles.js +1 -1
- package/lib/Search/LoadingWrapper.js +1 -1
- package/lib/Search/SearchField.js +1 -1
- package/lib/Search/SearchFieldForm.js +1 -1
- package/lib/Search/SearchResult.js +1 -1
- package/lib/Search/SearchResultSleeve.js +1 -1
- package/lib/Search/index.js +1 -1
- package/lib/SnackBar/DefaultSnackbar.js +1 -1
- package/lib/SnackBar/SnackbarProvider.js +1 -1
- package/lib/SnackBar/index.js +1 -1
- package/lib/Table/Table.js +1 -1
- package/lib/TagSelector/Control.js +1 -1
- package/lib/TagSelector/DropdownIndicator.js +1 -1
- package/lib/TagSelector/MenuList.js +1 -1
- package/lib/TagSelector/Option.js +1 -1
- package/lib/TagSelector/SelectContainer.js +1 -1
- package/lib/TagSelector/TagSelector.js +1 -1
- package/lib/TagSelector/ValueButton.js +1 -1
- package/lib/TagSelector/index.js +1 -1
- package/lib/TreeStructure/AddFolderButton.d.ts +1 -1
- package/lib/TreeStructure/AddFolderButton.js +3 -3
- package/lib/TreeStructure/ComboboxButton.d.ts +1 -1
- package/lib/TreeStructure/ComboboxButton.js +3 -3
- package/lib/TreeStructure/FolderItem.d.ts +1 -1
- package/lib/TreeStructure/FolderItem.js +8 -8
- package/lib/TreeStructure/FolderItems.d.ts +1 -1
- package/lib/TreeStructure/FolderItems.js +3 -3
- package/lib/TreeStructure/TreeStructure.d.ts +1 -1
- package/lib/TreeStructure/TreeStructure.js +6 -6
- package/lib/TreeStructure/arrowNavigation.d.ts +1 -1
- package/lib/TreeStructure/helperFunctions.d.ts +1 -1
- package/lib/TreeStructure/index.js +1 -1
- package/lib/TreeStructure/types.d.ts +1 -1
- package/lib/all.css +1 -1
- package/lib/i18n/i18n.js +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.js +1 -7
- package/lib/locale/messages-en.d.ts +2 -0
- package/lib/locale/messages-en.js +3 -1
- package/lib/locale/messages-nb.d.ts +2 -0
- package/lib/locale/messages-nb.js +3 -1
- package/lib/locale/messages-nn.d.ts +2 -0
- package/lib/locale/messages-nn.js +3 -1
- package/lib/locale/messages-se.d.ts +2 -0
- package/lib/locale/messages-se.js +3 -1
- package/lib/locale/messages-sma.d.ts +2 -0
- package/lib/locale/messages-sma.js +3 -1
- package/lib/utils/resourceTypeColor.js +1 -1
- package/package.json +16 -15
- package/src/CodeBlock/CodeBlock.stories.tsx +1 -3
- package/src/Embed/AudioEmbed.stories.tsx +3 -3
- package/src/Embed/BrightcoveEmbed.stories.tsx +3 -3
- package/src/Embed/ConceptEmbed.stories.tsx +3 -3
- package/src/Embed/ConceptEmbed.tsx +20 -2
- package/src/Embed/ExternalEmbed.stories.tsx +3 -3
- package/src/Embed/H5pEmbed.stories.tsx +3 -3
- package/src/Embed/IframeEmbed.stories.tsx +3 -3
- package/src/Embed/ImageEmbed.stories.tsx +3 -3
- package/src/Embed/ImageEmbed.tsx +5 -1
- package/src/Embed/RelatedContentEmbed.stories.tsx +15 -3
- package/src/Embed/RelatedContentEmbed.tsx +4 -1
- package/src/Embed/UuDisclaimerEmbed.stories.tsx +3 -3
- package/src/ErrorMessage/ErrorMessage.tsx +8 -4
- package/src/Figure/Figure.tsx +102 -24
- package/src/Layout/LayoutItem.tsx +23 -6
- package/src/Layout/index.ts +0 -1
- package/src/LicenseByline/EmbedByline.stories.tsx +2 -2
- package/src/List/OrderedList.stories.tsx +2 -2
- package/src/List/OrderedList.tsx +21 -18
- package/src/TreeStructure/AddFolderButton.tsx +1 -1
- package/src/TreeStructure/ComboboxButton.tsx +1 -1
- package/src/TreeStructure/FolderItem.tsx +1 -1
- package/src/TreeStructure/FolderItems.tsx +1 -1
- package/src/TreeStructure/TreeStructure.stories.tsx +1 -1
- package/src/TreeStructure/TreeStructure.tsx +1 -1
- package/src/TreeStructure/arrowNavigation.ts +1 -1
- package/src/TreeStructure/helperFunctions.ts +1 -1
- package/src/TreeStructure/types.ts +1 -1
- package/src/index.ts +1 -1
- package/src/locale/messages-en.ts +2 -0
- package/src/locale/messages-nb.ts +2 -0
- package/src/locale/messages-nn.ts +2 -0
- package/src/locale/messages-se.ts +2 -0
- package/src/locale/messages-sma.ts +2 -0
- package/es/Layout/Content.js +0 -19
- package/lib/Layout/Content.d.ts +0 -13
- package/lib/Layout/Content.js +0 -26
- package/src/Layout/Content.tsx +0 -17
package/lib/i18n/i18n.js
CHANGED
|
@@ -12,7 +12,7 @@ var _messagesNb = _interopRequireDefault(require("../locale/messages-nb"));
|
|
|
12
12
|
var _messagesNn = _interopRequireDefault(require("../locale/messages-nn"));
|
|
13
13
|
var _messagesSe = _interopRequireDefault(require("../locale/messages-se"));
|
|
14
14
|
var _messagesSma = _interopRequireDefault(require("../locale/messages-sma"));
|
|
15
|
-
function _interopRequireDefault(
|
|
15
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
16
16
|
/**
|
|
17
17
|
* Copyright (c) 2021-present, NDLA.
|
|
18
18
|
*
|
package/lib/index.d.ts
CHANGED
|
@@ -44,7 +44,7 @@ export { default as messagesSMA } from "./locale/messages-sma";
|
|
|
44
44
|
export { default as Breadcrumb, HomeBreadcrumb } from "./Breadcrumb";
|
|
45
45
|
export type { SimpleBreadcrumbItem, IndexedBreadcrumbItem } from "./Breadcrumb";
|
|
46
46
|
export { i18nInstance, formatNestedMessages } from "./i18n";
|
|
47
|
-
export { default as LayoutItem, OneColumn, PageContainer
|
|
47
|
+
export { default as LayoutItem, OneColumn, PageContainer } from "./Layout";
|
|
48
48
|
export { MediaList, MediaListItem, MediaListItemBody, MediaListItemActions, MediaListItemImage, MediaListItemMeta, } from "./MediaList";
|
|
49
49
|
export type { ItemType } from "./MediaList";
|
|
50
50
|
export { default as ContentTypeBadge, SubjectMaterialBadge, TasksAndActivitiesBadge, AssessmentResourcesBadge, LearningPathBadge, SubjectBadge, SourceMaterialBadge, ConceptBadge, } from "./ContentTypeBadge";
|
package/lib/index.js
CHANGED
|
@@ -171,12 +171,6 @@ Object.defineProperty(exports, "ContactBlock", {
|
|
|
171
171
|
return _ContactBlock.default;
|
|
172
172
|
}
|
|
173
173
|
});
|
|
174
|
-
Object.defineProperty(exports, "Content", {
|
|
175
|
-
enumerable: true,
|
|
176
|
-
get: function () {
|
|
177
|
-
return _Layout.Content;
|
|
178
|
-
}
|
|
179
|
-
});
|
|
180
174
|
Object.defineProperty(exports, "ContentLinkEmbed", {
|
|
181
175
|
enumerable: true,
|
|
182
176
|
get: function () {
|
|
@@ -874,4 +868,4 @@ var _LinkBlock = require("./LinkBlock");
|
|
|
874
868
|
var _CodeBlock = require("./CodeBlock");
|
|
875
869
|
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); }
|
|
876
870
|
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; }
|
|
877
|
-
function _interopRequireDefault(
|
|
871
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
@@ -923,6 +923,7 @@ declare const messages: {
|
|
|
923
923
|
unShare: string;
|
|
924
924
|
copyLink: string;
|
|
925
925
|
link: string;
|
|
926
|
+
savedLink: string;
|
|
926
927
|
header: {
|
|
927
928
|
shared: string;
|
|
928
929
|
};
|
|
@@ -1153,6 +1154,7 @@ declare const messages: {
|
|
|
1153
1154
|
examLockInfo: string;
|
|
1154
1155
|
copyFolderDisclaimer: string;
|
|
1155
1156
|
loginCopyFolderPitch: string;
|
|
1157
|
+
loginSaveFolderLinkPitch: string;
|
|
1156
1158
|
help: string;
|
|
1157
1159
|
more: string;
|
|
1158
1160
|
selectView: string;
|
|
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _licenses = require("@ndla/licenses");
|
|
8
8
|
var _model = _interopRequireDefault(require("../model"));
|
|
9
|
-
function _interopRequireDefault(
|
|
9
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
10
|
/**
|
|
11
11
|
* Copyright (c) 2018-present, NDLA.
|
|
12
12
|
*
|
|
@@ -940,6 +940,7 @@ const messages = {
|
|
|
940
940
|
unShare: "Sharing stopped. The folder is no longer shared",
|
|
941
941
|
copyLink: "Copy link to folder",
|
|
942
942
|
link: "Link is copied",
|
|
943
|
+
savedLink: "Link to {{ name }} has been added to My folders.",
|
|
943
944
|
header: {
|
|
944
945
|
shared: "This folder is shared"
|
|
945
946
|
},
|
|
@@ -1170,6 +1171,7 @@ const messages = {
|
|
|
1170
1171
|
examLockInfo: "Editing content on Min NDLA is deactivated for pupils during the exam period.",
|
|
1171
1172
|
copyFolderDisclaimer: "This creates a copy of the folder. Any changes made to the original folder will not be updated here.",
|
|
1172
1173
|
loginCopyFolderPitch: "Do you wish to copy this folder?",
|
|
1174
|
+
loginSaveFolderLinkPitch: "Do you wish to save the link to this shared folder?",
|
|
1173
1175
|
help: "Help",
|
|
1174
1176
|
more: "More options",
|
|
1175
1177
|
selectView: "Select view",
|
|
@@ -923,6 +923,7 @@ declare const messages: {
|
|
|
923
923
|
unShare: string;
|
|
924
924
|
copyLink: string;
|
|
925
925
|
link: string;
|
|
926
|
+
savedLink: string;
|
|
926
927
|
header: {
|
|
927
928
|
shared: string;
|
|
928
929
|
};
|
|
@@ -1153,6 +1154,7 @@ declare const messages: {
|
|
|
1153
1154
|
examLockInfo: string;
|
|
1154
1155
|
copyFolderDisclaimer: string;
|
|
1155
1156
|
loginCopyFolderPitch: string;
|
|
1157
|
+
loginSaveFolderLinkPitch: string;
|
|
1156
1158
|
help: string;
|
|
1157
1159
|
more: string;
|
|
1158
1160
|
selectView: string;
|
|
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _licenses = require("@ndla/licenses");
|
|
8
8
|
var _model = _interopRequireDefault(require("../model"));
|
|
9
|
-
function _interopRequireDefault(
|
|
9
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
10
|
/**
|
|
11
11
|
* Copyright (c) 2018-present, NDLA.
|
|
12
12
|
*
|
|
@@ -940,6 +940,7 @@ const messages = {
|
|
|
940
940
|
unShare: "Delingen er avsluttet. Mappen er ikke lenger delt.",
|
|
941
941
|
copyLink: "Kopier lenke til mappa",
|
|
942
942
|
link: "Lenken er kopiert",
|
|
943
|
+
savedLink: "Lenke til {{ name }} er lagt til i Mine mapper.",
|
|
943
944
|
header: {
|
|
944
945
|
shared: "Denne mappa er delt"
|
|
945
946
|
},
|
|
@@ -1170,6 +1171,7 @@ const messages = {
|
|
|
1170
1171
|
examLockInfo: "Redigering av innhold på Min NDLA er deaktivert for elever i eksamensperioden.",
|
|
1171
1172
|
copyFolderDisclaimer: "Dette lager en kopi av mappen. Eventuelle endringer i originalmappen vil ikke bli oppdatert her.",
|
|
1172
1173
|
loginCopyFolderPitch: "Ønsker du å kopiere denne mappen?",
|
|
1174
|
+
loginSaveFolderLinkPitch: "Ønsker du å lagre lenken til denne delte mappen?",
|
|
1173
1175
|
help: "Hjelp",
|
|
1174
1176
|
more: "Flere valg",
|
|
1175
1177
|
selectView: "Velg visning",
|
|
@@ -922,6 +922,7 @@ declare const messages: {
|
|
|
922
922
|
sharedFolder: string;
|
|
923
923
|
unShare: string;
|
|
924
924
|
link: string;
|
|
925
|
+
savedLink: string;
|
|
925
926
|
copyLink: string;
|
|
926
927
|
header: {
|
|
927
928
|
shared: string;
|
|
@@ -1153,6 +1154,7 @@ declare const messages: {
|
|
|
1153
1154
|
examLockInfo: string;
|
|
1154
1155
|
copyFolderDisclaimer: string;
|
|
1155
1156
|
loginCopyFolderPitch: string;
|
|
1157
|
+
loginSaveFolderLinkPitch: string;
|
|
1156
1158
|
help: string;
|
|
1157
1159
|
more: string;
|
|
1158
1160
|
selectView: string;
|
|
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _licenses = require("@ndla/licenses");
|
|
8
8
|
var _model = _interopRequireDefault(require("../model"));
|
|
9
|
-
function _interopRequireDefault(
|
|
9
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
10
|
/**
|
|
11
11
|
* Copyright (c) 2018-present, NDLA.
|
|
12
12
|
*
|
|
@@ -939,6 +939,7 @@ const messages = {
|
|
|
939
939
|
sharedFolder: "Delt mappe",
|
|
940
940
|
unShare: "Delinga er avslutta. Mappa er ikkje lenger delt",
|
|
941
941
|
link: "Lenka er kopiert",
|
|
942
|
+
savedLink: "Lenka til {{ name }} er lagt til i Mine mapper.",
|
|
942
943
|
copyLink: "Kopier lenke til mappa",
|
|
943
944
|
header: {
|
|
944
945
|
shared: "Denne mappa er delt"
|
|
@@ -1170,6 +1171,7 @@ const messages = {
|
|
|
1170
1171
|
examLockInfo: "Redigering av innhald på Min NDLA er deaktivert for elevar i eksamensperioden.",
|
|
1171
1172
|
copyFolderDisclaimer: "Dette lagar ein kopi av mappa. Eventuelle endringar i originalmappa vil ikkje bli oppdatert her.",
|
|
1172
1173
|
loginCopyFolderPitch: "Ønsker du å kopiere denne mappa?",
|
|
1174
|
+
loginSaveFolderLinkPitch: "Ønsker du å lagra lenka til denne delte mappa?",
|
|
1173
1175
|
help: "Hjelp",
|
|
1174
1176
|
more: "Fleire val",
|
|
1175
1177
|
selectView: "Velg visning",
|
|
@@ -923,6 +923,7 @@ declare const messages: {
|
|
|
923
923
|
unShare: string;
|
|
924
924
|
copyLink: string;
|
|
925
925
|
link: string;
|
|
926
|
+
savedLink: string;
|
|
926
927
|
header: {
|
|
927
928
|
shared: string;
|
|
928
929
|
};
|
|
@@ -1153,6 +1154,7 @@ declare const messages: {
|
|
|
1153
1154
|
examLockInfo: string;
|
|
1154
1155
|
copyFolderDisclaimer: string;
|
|
1155
1156
|
loginCopyFolderPitch: string;
|
|
1157
|
+
loginSaveFolderLinkPitch: string;
|
|
1156
1158
|
help: string;
|
|
1157
1159
|
more: string;
|
|
1158
1160
|
selectView: string;
|
|
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _licenses = require("@ndla/licenses");
|
|
8
8
|
var _model = _interopRequireDefault(require("../model"));
|
|
9
|
-
function _interopRequireDefault(
|
|
9
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
10
|
/**
|
|
11
11
|
* Copyright (c) 2018-present, NDLA.
|
|
12
12
|
*
|
|
@@ -940,6 +940,7 @@ const messages = {
|
|
|
940
940
|
unShare: "Delingen er avsluttet. Mappen er ikke lenger delt.",
|
|
941
941
|
copyLink: "Kopier lenke til mappa",
|
|
942
942
|
link: "Lenken er kopiert",
|
|
943
|
+
savedLink: "Lenke til {{ name }} er lagt til i Mine mapper.",
|
|
943
944
|
header: {
|
|
944
945
|
shared: "Denne mappa er delt"
|
|
945
946
|
},
|
|
@@ -1170,6 +1171,7 @@ const messages = {
|
|
|
1170
1171
|
examLockInfo: "Redigering av innhold på Min NDLA er deaktivert for elever i eksamensperioden.",
|
|
1171
1172
|
copyFolderDisclaimer: "Dette lager en kopi av mappen. Eventuelle endringer i originalmappen vil ikke bli oppdatert her.",
|
|
1172
1173
|
loginCopyFolderPitch: "Ønsker du å kopiere denne mappen?",
|
|
1174
|
+
loginSaveFolderLinkPitch: "Ønsker du å lagre lenken til denne delte mappen?",
|
|
1173
1175
|
help: "Hjelp",
|
|
1174
1176
|
more: "Flere valg",
|
|
1175
1177
|
selectView: "Velg visning",
|
|
@@ -923,6 +923,7 @@ declare const messages: {
|
|
|
923
923
|
unShare: string;
|
|
924
924
|
copyLink: string;
|
|
925
925
|
link: string;
|
|
926
|
+
savedLink: string;
|
|
926
927
|
header: {
|
|
927
928
|
shared: string;
|
|
928
929
|
};
|
|
@@ -1153,6 +1154,7 @@ declare const messages: {
|
|
|
1153
1154
|
examLockInfo: string;
|
|
1154
1155
|
copyFolderDisclaimer: string;
|
|
1155
1156
|
loginCopyFolderPitch: string;
|
|
1157
|
+
loginSaveFolderLinkPitch: string;
|
|
1156
1158
|
help: string;
|
|
1157
1159
|
more: string;
|
|
1158
1160
|
selectView: string;
|
|
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _licenses = require("@ndla/licenses");
|
|
8
8
|
var _model = _interopRequireDefault(require("../model"));
|
|
9
|
-
function _interopRequireDefault(
|
|
9
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
10
|
/**
|
|
11
11
|
* Copyright (c) 2018-present, NDLA.
|
|
12
12
|
*
|
|
@@ -940,6 +940,7 @@ const messages = {
|
|
|
940
940
|
unShare: "Delingen er avsluttet. Mappen er ikke lenger delt.",
|
|
941
941
|
copyLink: "Kopier lenke til mappa",
|
|
942
942
|
link: "Lenken er kopiert",
|
|
943
|
+
savedLink: "Lenke til {{ name }} er lagt til i Mine mapper.",
|
|
943
944
|
header: {
|
|
944
945
|
shared: "Denne mappa er delt"
|
|
945
946
|
},
|
|
@@ -1170,6 +1171,7 @@ const messages = {
|
|
|
1170
1171
|
examLockInfo: "Redigering av innhold på Min NDLA er deaktivert for elever i eksamensperioden.",
|
|
1171
1172
|
copyFolderDisclaimer: "Dette lager en kopi av mappen. Eventuelle endringer i originalmappen vil ikke bli oppdatert her.",
|
|
1172
1173
|
loginCopyFolderPitch: "Ønsker du å kopiere denne mappen?",
|
|
1174
|
+
loginSaveFolderLinkPitch: "Ønsker du å lagre lenken til denne delte mappen?",
|
|
1173
1175
|
help: "Hjelp",
|
|
1174
1176
|
more: "Flere valg",
|
|
1175
1177
|
selectView: "Velg visning",
|
|
@@ -7,7 +7,7 @@ exports.resourceTypeColor = exports.default = void 0;
|
|
|
7
7
|
var _core = require("@ndla/core");
|
|
8
8
|
var _model = _interopRequireDefault(require("../model"));
|
|
9
9
|
var _ContentType = require("../model/ContentType");
|
|
10
|
-
function _interopRequireDefault(
|
|
10
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
11
|
/**
|
|
12
12
|
* Copyright (c) 2022-present, NDLA.
|
|
13
13
|
*
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ndla/ui",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "54.0.0",
|
|
4
4
|
"description": "UI component library for NDLA.",
|
|
5
5
|
"license": "GPL-3.0",
|
|
6
6
|
"main": "lib/index.js",
|
|
@@ -31,19 +31,19 @@
|
|
|
31
31
|
"types"
|
|
32
32
|
],
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@ndla/accordion": "^4.0.
|
|
35
|
-
"@ndla/button": "^13.0.
|
|
36
|
-
"@ndla/core": "^5.0.
|
|
37
|
-
"@ndla/dropdown-menu": "^1.0.
|
|
38
|
-
"@ndla/forms": "^8.0.
|
|
34
|
+
"@ndla/accordion": "^4.0.2",
|
|
35
|
+
"@ndla/button": "^13.0.2",
|
|
36
|
+
"@ndla/core": "^5.0.1",
|
|
37
|
+
"@ndla/dropdown-menu": "^1.0.38",
|
|
38
|
+
"@ndla/forms": "^8.0.2",
|
|
39
39
|
"@ndla/hooks": "^2.1.7",
|
|
40
|
-
"@ndla/icons": "^6.1.
|
|
40
|
+
"@ndla/icons": "^6.1.5",
|
|
41
41
|
"@ndla/licenses": "^7.2.6",
|
|
42
|
-
"@ndla/modal": "^6.0.
|
|
43
|
-
"@ndla/notion": "^7.0.
|
|
44
|
-
"@ndla/safelink": "^5.1.
|
|
45
|
-
"@ndla/tooltip": "^8.0.
|
|
46
|
-
"@ndla/typography": "^0.4.
|
|
42
|
+
"@ndla/modal": "^6.0.1",
|
|
43
|
+
"@ndla/notion": "^7.0.1",
|
|
44
|
+
"@ndla/safelink": "^5.1.5",
|
|
45
|
+
"@ndla/tooltip": "^8.0.1",
|
|
46
|
+
"@ndla/typography": "^0.4.21",
|
|
47
47
|
"@ndla/util": "^4.0.4",
|
|
48
48
|
"@radix-ui/react-popover": "^1.0.7",
|
|
49
49
|
"@radix-ui/react-slider": "^1.1.2",
|
|
@@ -51,6 +51,7 @@
|
|
|
51
51
|
"html-react-parser": "^5.1.8",
|
|
52
52
|
"i18next-browser-languagedetector": "^7.1.0",
|
|
53
53
|
"lodash.throttle": "^4.1.1",
|
|
54
|
+
"punycode.js": "^2.3.1",
|
|
54
55
|
"react-device-detect": "^2.2.3",
|
|
55
56
|
"react-select": "^5.8.0",
|
|
56
57
|
"react-swipeable": "^7.0.0"
|
|
@@ -65,8 +66,8 @@
|
|
|
65
66
|
"react-router-dom": "> 6.0.0"
|
|
66
67
|
},
|
|
67
68
|
"devDependencies": {
|
|
68
|
-
"@ndla/types-backend": "^0.2.
|
|
69
|
-
"@ndla/types-embed": "^4.1.
|
|
69
|
+
"@ndla/types-backend": "^0.2.82",
|
|
70
|
+
"@ndla/types-embed": "^4.1.7",
|
|
70
71
|
"css-loader": "^6.7.3",
|
|
71
72
|
"mini-css-extract-plugin": "^2.7.5",
|
|
72
73
|
"sass-loader": "^13.2.2",
|
|
@@ -76,5 +77,5 @@
|
|
|
76
77
|
"publishConfig": {
|
|
77
78
|
"access": "public"
|
|
78
79
|
},
|
|
79
|
-
"gitHead": "
|
|
80
|
+
"gitHead": "c778ba48c327f14eaae3e2da21ed24b183719167"
|
|
80
81
|
}
|
|
@@ -61,13 +61,11 @@ export default {
|
|
|
61
61
|
argTypes: {
|
|
62
62
|
actionButton: {
|
|
63
63
|
table: {
|
|
64
|
+
disable: true,
|
|
64
65
|
type: {
|
|
65
66
|
detail: "Takes any ReactNode, but as the name implies: use a button component, preferably an icon-button",
|
|
66
67
|
},
|
|
67
68
|
},
|
|
68
|
-
control: {
|
|
69
|
-
type: null,
|
|
70
|
-
},
|
|
71
69
|
},
|
|
72
70
|
},
|
|
73
71
|
} as Meta<typeof CodeBlock>;
|
|
@@ -11,7 +11,7 @@ import { AudioEmbedData, AudioMeta } from "@ndla/types-embed";
|
|
|
11
11
|
import AudioEmbed from "./AudioEmbed";
|
|
12
12
|
import StoryFavoriteButton from "../../../../stories/StoryFavoriteButton";
|
|
13
13
|
import { ArticleWrapper } from "../Article";
|
|
14
|
-
import { OneColumn } from "../Layout";
|
|
14
|
+
import LayoutItem, { OneColumn } from "../Layout";
|
|
15
15
|
|
|
16
16
|
const embedData: AudioEmbedData = {
|
|
17
17
|
resource: "audio",
|
|
@@ -190,11 +190,11 @@ const meta: Meta<typeof AudioEmbed> = {
|
|
|
190
190
|
(Story) => (
|
|
191
191
|
<OneColumn>
|
|
192
192
|
<ArticleWrapper modifier="clean">
|
|
193
|
-
<
|
|
193
|
+
<LayoutItem layout="center">
|
|
194
194
|
<section>
|
|
195
195
|
<Story />
|
|
196
196
|
</section>
|
|
197
|
-
</
|
|
197
|
+
</LayoutItem>
|
|
198
198
|
</ArticleWrapper>
|
|
199
199
|
</OneColumn>
|
|
200
200
|
),
|
|
@@ -11,7 +11,7 @@ import { BrightcoveData, BrightcoveEmbedData, BrightcoveMetaData } from "@ndla/t
|
|
|
11
11
|
import BrightcoveEmbed from "./BrightcoveEmbed";
|
|
12
12
|
import StoryFavoriteButton from "../../../../stories/StoryFavoriteButton";
|
|
13
13
|
import { ArticleWrapper } from "../Article";
|
|
14
|
-
import { OneColumn } from "../Layout";
|
|
14
|
+
import LayoutItem, { OneColumn } from "../Layout";
|
|
15
15
|
|
|
16
16
|
const embedData: BrightcoveEmbedData = {
|
|
17
17
|
resource: "brightcove",
|
|
@@ -163,11 +163,11 @@ const meta: Meta<typeof BrightcoveEmbed> = {
|
|
|
163
163
|
(Story) => (
|
|
164
164
|
<OneColumn>
|
|
165
165
|
<ArticleWrapper modifier="clean">
|
|
166
|
-
<
|
|
166
|
+
<LayoutItem layout="center">
|
|
167
167
|
<section>
|
|
168
168
|
<Story />
|
|
169
169
|
</section>
|
|
170
|
-
</
|
|
170
|
+
</LayoutItem>
|
|
171
171
|
</ArticleWrapper>
|
|
172
172
|
</OneColumn>
|
|
173
173
|
),
|
|
@@ -11,7 +11,7 @@ import { ConceptData, ConceptEmbedData } from "@ndla/types-embed";
|
|
|
11
11
|
import ConceptEmbed from "./ConceptEmbed";
|
|
12
12
|
import StoryFavoriteButton from "../../../../stories/StoryFavoriteButton";
|
|
13
13
|
import { ArticleWrapper } from "../Article";
|
|
14
|
-
import { OneColumn } from "../Layout";
|
|
14
|
+
import LayoutItem, { OneColumn } from "../Layout";
|
|
15
15
|
|
|
16
16
|
const blockEmbedData: ConceptEmbedData = {
|
|
17
17
|
contentId: "35",
|
|
@@ -235,11 +235,11 @@ const meta: Meta<typeof ConceptEmbed> = {
|
|
|
235
235
|
(Story) => (
|
|
236
236
|
<OneColumn>
|
|
237
237
|
<ArticleWrapper modifier="clean">
|
|
238
|
-
<
|
|
238
|
+
<LayoutItem layout="center">
|
|
239
239
|
<section>
|
|
240
240
|
<Story />
|
|
241
241
|
</section>
|
|
242
|
-
</
|
|
242
|
+
</LayoutItem>
|
|
243
243
|
</ArticleWrapper>
|
|
244
244
|
</OneColumn>
|
|
245
245
|
),
|
|
@@ -177,6 +177,7 @@ interface InlineConceptProps extends ConceptNotionData {
|
|
|
177
177
|
conceptHeartButton?: ReactNode;
|
|
178
178
|
exampleIds?: string;
|
|
179
179
|
exampleLangs?: string;
|
|
180
|
+
setSelection?: (e: MouseEvent) => void;
|
|
180
181
|
}
|
|
181
182
|
|
|
182
183
|
const NotionButton = styled.span`
|
|
@@ -238,6 +239,7 @@ export const InlineConcept = forwardRef<HTMLSpanElement, InlineConceptProps>(
|
|
|
238
239
|
lang,
|
|
239
240
|
exampleIds,
|
|
240
241
|
exampleLangs,
|
|
242
|
+
setSelection,
|
|
241
243
|
...rest
|
|
242
244
|
},
|
|
243
245
|
ref,
|
|
@@ -258,13 +260,29 @@ export const InlineConcept = forwardRef<HTMLSpanElement, InlineConceptProps>(
|
|
|
258
260
|
}
|
|
259
261
|
}, []);
|
|
260
262
|
|
|
263
|
+
const preventAutoFocusInEditor = useCallback(
|
|
264
|
+
(e: MouseEvent) => {
|
|
265
|
+
e.preventDefault();
|
|
266
|
+
e.stopPropagation();
|
|
267
|
+
setSelection?.(e);
|
|
268
|
+
},
|
|
269
|
+
[setSelection],
|
|
270
|
+
);
|
|
271
|
+
|
|
261
272
|
return (
|
|
262
273
|
<Root modal={isMobile} onOpenChange={onOpenChange}>
|
|
263
274
|
<StyledAnchor ref={anchorRef} asChild>
|
|
264
275
|
<StyledAnchorSpan contentEditable={false} />
|
|
265
276
|
</StyledAnchor>
|
|
266
|
-
<Trigger asChild
|
|
267
|
-
<NotionButton
|
|
277
|
+
<Trigger asChild>
|
|
278
|
+
<NotionButton
|
|
279
|
+
onMouseDown={(e) => (setSelection ? preventAutoFocusInEditor(e.nativeEvent) : undefined)}
|
|
280
|
+
data-open={modalPos !== -9999}
|
|
281
|
+
role="button"
|
|
282
|
+
tabIndex={0}
|
|
283
|
+
ref={ref}
|
|
284
|
+
{...rest}
|
|
285
|
+
>
|
|
268
286
|
{linkText}
|
|
269
287
|
</NotionButton>
|
|
270
288
|
</Trigger>
|
|
@@ -10,7 +10,7 @@ import { Meta, StoryObj } from "@storybook/react";
|
|
|
10
10
|
import { OembedEmbedData, OembedData } from "@ndla/types-embed";
|
|
11
11
|
import ExternalEmbed from "./ExternalEmbed";
|
|
12
12
|
import { ArticleWrapper } from "../Article";
|
|
13
|
-
import { OneColumn } from "../Layout";
|
|
13
|
+
import LayoutItem, { OneColumn } from "../Layout";
|
|
14
14
|
|
|
15
15
|
const embedData: OembedEmbedData = {
|
|
16
16
|
resource: "external",
|
|
@@ -57,11 +57,11 @@ const meta: Meta<typeof ExternalEmbed> = {
|
|
|
57
57
|
(Story) => (
|
|
58
58
|
<OneColumn>
|
|
59
59
|
<ArticleWrapper modifier="clean">
|
|
60
|
-
<
|
|
60
|
+
<LayoutItem layout="center">
|
|
61
61
|
<section>
|
|
62
62
|
<Story />
|
|
63
63
|
</section>
|
|
64
|
-
</
|
|
64
|
+
</LayoutItem>
|
|
65
65
|
</ArticleWrapper>
|
|
66
66
|
</OneColumn>
|
|
67
67
|
),
|
|
@@ -10,7 +10,7 @@ import { Meta, StoryObj } from "@storybook/react";
|
|
|
10
10
|
import { H5pEmbedData, H5pData } from "@ndla/types-embed";
|
|
11
11
|
import H5pEmbed from "./H5pEmbed";
|
|
12
12
|
import { ArticleWrapper } from "../Article";
|
|
13
|
-
import { OneColumn } from "../Layout";
|
|
13
|
+
import LayoutItem, { OneColumn } from "../Layout";
|
|
14
14
|
|
|
15
15
|
const embedData: H5pEmbedData = {
|
|
16
16
|
resource: "h5p",
|
|
@@ -54,11 +54,11 @@ const meta: Meta<typeof H5pEmbed> = {
|
|
|
54
54
|
(Story) => (
|
|
55
55
|
<OneColumn>
|
|
56
56
|
<ArticleWrapper modifier="clean">
|
|
57
|
-
<
|
|
57
|
+
<LayoutItem layout="center">
|
|
58
58
|
<section>
|
|
59
59
|
<Story />
|
|
60
60
|
</section>
|
|
61
|
-
</
|
|
61
|
+
</LayoutItem>
|
|
62
62
|
</ArticleWrapper>
|
|
63
63
|
</OneColumn>
|
|
64
64
|
),
|
|
@@ -10,7 +10,7 @@ import { Meta, StoryObj } from "@storybook/react";
|
|
|
10
10
|
import { IframeData, IframeEmbedData } from "@ndla/types-embed";
|
|
11
11
|
import IframeEmbed from "./IframeEmbed";
|
|
12
12
|
import { ArticleWrapper } from "../Article";
|
|
13
|
-
import { OneColumn } from "../Layout";
|
|
13
|
+
import LayoutItem, { OneColumn } from "../Layout";
|
|
14
14
|
|
|
15
15
|
const embedData: IframeEmbedData = {
|
|
16
16
|
width: "708px",
|
|
@@ -29,11 +29,11 @@ const meta: Meta<typeof IframeEmbed> = {
|
|
|
29
29
|
(Story) => (
|
|
30
30
|
<OneColumn>
|
|
31
31
|
<ArticleWrapper modifier="clean">
|
|
32
|
-
<
|
|
32
|
+
<LayoutItem layout="center">
|
|
33
33
|
<section>
|
|
34
34
|
<Story />
|
|
35
35
|
</section>
|
|
36
|
-
</
|
|
36
|
+
</LayoutItem>
|
|
37
37
|
</ArticleWrapper>
|
|
38
38
|
</OneColumn>
|
|
39
39
|
),
|
|
@@ -13,7 +13,7 @@ import { ImageEmbedData } from "@ndla/types-embed";
|
|
|
13
13
|
import ImageEmbed from "./ImageEmbed";
|
|
14
14
|
import StoryFavoriteButton from "../../../../stories/StoryFavoriteButton";
|
|
15
15
|
import { ArticleWrapper } from "../Article";
|
|
16
|
-
import { OneColumn } from "../Layout";
|
|
16
|
+
import LayoutItem, { OneColumn } from "../Layout";
|
|
17
17
|
|
|
18
18
|
const embedData: ImageEmbedData = {
|
|
19
19
|
resource: "image",
|
|
@@ -96,11 +96,11 @@ const meta: Meta<typeof ImageEmbed> = {
|
|
|
96
96
|
(Story) => (
|
|
97
97
|
<OneColumn>
|
|
98
98
|
<ArticleWrapper modifier="clean">
|
|
99
|
-
<
|
|
99
|
+
<LayoutItem layout="center">
|
|
100
100
|
<section>
|
|
101
101
|
<Story />
|
|
102
102
|
</section>
|
|
103
|
-
</
|
|
103
|
+
</LayoutItem>
|
|
104
104
|
</ArticleWrapper>
|
|
105
105
|
</OneColumn>
|
|
106
106
|
),
|
package/src/Embed/ImageEmbed.tsx
CHANGED
|
@@ -161,6 +161,10 @@ const ImageEmbed = ({
|
|
|
161
161
|
|
|
162
162
|
const { data, embedData } = embed;
|
|
163
163
|
|
|
164
|
+
// Full-size figures automatically get a margin of {spacing.normal} on its y-axis if a float is not set (or if float is an empty string).
|
|
165
|
+
// This adds some margin to normal figures within an article, but should not happen for figures in a grid.
|
|
166
|
+
const floatAttr = inGrid && !embedData.align ? {} : { "data-float": embedData.align };
|
|
167
|
+
|
|
164
168
|
const altText = embedData.alt || "";
|
|
165
169
|
|
|
166
170
|
const figureType = getFigureType(embedData.size, embedData.align);
|
|
@@ -172,7 +176,7 @@ const ImageEmbed = ({
|
|
|
172
176
|
const isCopyrighted = data.copyright.license.license.toLowerCase() === COPYRIGHTED;
|
|
173
177
|
|
|
174
178
|
return (
|
|
175
|
-
<StyledFigure type={imageSizes ? undefined : figureType}
|
|
179
|
+
<StyledFigure type={imageSizes ? undefined : figureType} {...floatAttr}>
|
|
176
180
|
{children}
|
|
177
181
|
<ImageWrapper
|
|
178
182
|
src={!isCopyrighted ? canonicalUrl?.(data) : undefined}
|
|
@@ -10,7 +10,7 @@ import { Meta, StoryObj } from "@storybook/react";
|
|
|
10
10
|
import { RelatedContentMetaData } from "@ndla/types-embed";
|
|
11
11
|
import RelatedContentEmbed from "./RelatedContentEmbed";
|
|
12
12
|
import { ArticleWrapper } from "../Article";
|
|
13
|
-
import { OneColumn } from "../Layout";
|
|
13
|
+
import LayoutItem, { OneColumn } from "../Layout";
|
|
14
14
|
import RelatedArticleList from "../RelatedArticleList";
|
|
15
15
|
|
|
16
16
|
const filmResourceMeta: RelatedContentMetaData = {
|
|
@@ -369,11 +369,11 @@ const meta: Meta<typeof RelatedContentEmbed> = {
|
|
|
369
369
|
(Story) => (
|
|
370
370
|
<OneColumn>
|
|
371
371
|
<ArticleWrapper modifier="clean">
|
|
372
|
-
<
|
|
372
|
+
<LayoutItem layout="center">
|
|
373
373
|
<section>
|
|
374
374
|
<Story />
|
|
375
375
|
</section>
|
|
376
|
-
</
|
|
376
|
+
</LayoutItem>
|
|
377
377
|
</ArticleWrapper>
|
|
378
378
|
</OneColumn>
|
|
379
379
|
),
|
|
@@ -404,6 +404,17 @@ const linkEmbed2: RelatedContentMetaData = {
|
|
|
404
404
|
status: "success",
|
|
405
405
|
};
|
|
406
406
|
|
|
407
|
+
const linkEmbed3: RelatedContentMetaData = {
|
|
408
|
+
resource: "related-content",
|
|
409
|
+
embedData: {
|
|
410
|
+
resource: "related-content",
|
|
411
|
+
title: "Valg av tillitselev fra klassen",
|
|
412
|
+
url: "https://xn--elevrd-mua.no",
|
|
413
|
+
},
|
|
414
|
+
data: undefined,
|
|
415
|
+
status: "success",
|
|
416
|
+
};
|
|
417
|
+
|
|
407
418
|
export const RelatedContentStory: StoryObj<typeof RelatedContentEmbed> = {
|
|
408
419
|
render: () => (
|
|
409
420
|
<RelatedArticleList>
|
|
@@ -429,6 +440,7 @@ export const WithLinks: StoryObj<typeof RelatedContentEmbed> = {
|
|
|
429
440
|
<RelatedArticleList>
|
|
430
441
|
<RelatedContentEmbed embed={linkEmbed1} />
|
|
431
442
|
<RelatedContentEmbed embed={linkEmbed2} />
|
|
443
|
+
<RelatedContentEmbed embed={linkEmbed3} />
|
|
432
444
|
</RelatedArticleList>
|
|
433
445
|
),
|
|
434
446
|
};
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
*
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
+
import punycode from "punycode/";
|
|
9
10
|
import { useTranslation } from "react-i18next";
|
|
10
11
|
import { RelatedContentMetaData } from "@ndla/types-embed";
|
|
11
12
|
import { contentTypeMapping } from "../model/ContentType";
|
|
@@ -53,7 +54,9 @@ const RelatedContentEmbed = ({ embed, isOembed, subject, ndlaFrontendDomain }: P
|
|
|
53
54
|
type={"external"}
|
|
54
55
|
linkInfo={`${t("related.linkInfo")} ${
|
|
55
56
|
// Get domain name only from url
|
|
56
|
-
|
|
57
|
+
punycode.toUnicode(
|
|
58
|
+
embedData.url.match(/^(?:https?:\/\/)?(?:[^@\n]+@)?(?:www\.)?([^:/\n]+)/im)?.[1] || embedData.url,
|
|
59
|
+
)
|
|
57
60
|
}`}
|
|
58
61
|
/>
|
|
59
62
|
);
|