@ndla/ui 56.0.129-alpha.0 → 56.0.131-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/es/Embed/ConceptEmbed.js +5 -5
- package/es/Embed/ConceptEmbed.js.map +1 -1
- package/es/Embed/GlossEmbed.js +3 -3
- package/es/Embed/GlossEmbed.js.map +1 -1
- package/lib/Article/Article.js +4 -4
- package/lib/Article/ArticleByline.js +2 -2
- package/lib/Article/ArticleByline.js.map +1 -1
- package/lib/AudioPlayer/AudioPlayer.js +4 -4
- package/lib/AudioPlayer/index.js +2 -2
- package/lib/Breadcrumb/Breadcrumb.js +2 -2
- package/lib/Breadcrumb/HomeBreadcrumb.js +2 -2
- package/lib/Breadcrumb/index.js +3 -3
- package/lib/CampaignBlock/CampaignBlock.js +2 -2
- package/lib/CampaignBlock/CampaignBlock.js.map +1 -1
- package/lib/Concept/Concept.js +11 -11
- package/lib/Concept/Concept.js.map +1 -1
- package/lib/ContactBlock/ContactBlock.js +2 -2
- package/lib/ContentTypeBadge/ContentTypeBadge.js +20 -20
- package/lib/ContentTypeBadge/ContentTypeBadge.js.map +1 -1
- package/lib/ContentTypeHero/ContentTypeHero.js +20 -20
- package/lib/ContentTypeHero/ContentTypeHero.js.map +1 -1
- package/lib/CopyParagraphButton/index.js +2 -2
- package/lib/Embed/AudioEmbed.js +9 -9
- package/lib/Embed/AudioEmbed.js.map +1 -1
- package/lib/Embed/BrightcoveEmbed.js +6 -6
- package/lib/Embed/BrightcoveEmbed.js.map +1 -1
- package/lib/Embed/CodeEmbed.js +6 -6
- package/lib/Embed/CodeEmbed.js.map +1 -1
- package/lib/Embed/ConceptEmbed.d.ts +4 -2
- package/lib/Embed/ConceptEmbed.js +13 -13
- package/lib/Embed/ConceptEmbed.js.map +1 -1
- package/lib/Embed/ConceptInlineTriggerButton.js +2 -2
- package/lib/Embed/ConceptInlineTriggerButton.js.map +1 -1
- package/lib/Embed/CopyrightEmbed.js +2 -2
- package/lib/Embed/EmbedErrorPlaceholder.js +2 -2
- package/lib/Embed/ExternalEmbed.js +4 -4
- package/lib/Embed/ExternalEmbed.js.map +1 -1
- package/lib/Embed/GlossEmbed.d.ts +3 -1
- package/lib/Embed/GlossEmbed.js +9 -9
- package/lib/Embed/GlossEmbed.js.map +1 -1
- package/lib/Embed/H5pEmbed.js +2 -2
- package/lib/Embed/H5pEmbed.js.map +1 -1
- package/lib/Embed/IframeEmbed.js +4 -4
- package/lib/Embed/IframeEmbed.js.map +1 -1
- package/lib/Embed/ImageEmbed.js +6 -6
- package/lib/Embed/ImageEmbed.js.map +1 -1
- package/lib/Embed/RelatedContentEmbed.js +6 -6
- package/lib/Embed/RelatedContentEmbed.js.map +1 -1
- package/lib/ErrorMessage/index.js +2 -2
- package/lib/FactBox/index.js +2 -2
- package/lib/FileList/File.js +2 -2
- package/lib/FileList/File.js.map +1 -1
- package/lib/Gloss/Gloss.js +4 -4
- package/lib/LicenseByline/EmbedByline.js +2 -2
- package/lib/LinkBlock/LinkBlock.js +2 -2
- package/lib/LinkBlock/LinkBlock.js.map +1 -1
- package/lib/Pitch/Pitch.js +2 -2
- package/lib/Pitch/Pitch.js.map +1 -1
- package/lib/RelatedArticleList/RelatedArticleList.js +4 -4
- package/lib/RelatedArticleList/RelatedArticleList.js.map +1 -1
- package/lib/RelatedArticleList/index.js +2 -2
- package/lib/i18n/i18n.js +8 -8
- package/lib/i18n/i18n.js.map +1 -1
- package/lib/index.js +156 -156
- package/lib/locale/messages-en.js +2 -2
- package/lib/locale/messages-nb.js +2 -2
- package/lib/locale/messages-nn.js +2 -2
- package/lib/locale/messages-se.js +2 -2
- package/lib/model/index.js +10 -10
- package/lib/utils/relativeUrl.js +2 -2
- package/lib/utils/relativeUrl.js.map +1 -1
- package/package.json +7 -7
- package/src/Embed/ConceptEmbed.stories.tsx +5 -2
- package/src/Embed/ConceptEmbed.tsx +8 -7
- package/src/Embed/GlossEmbed.stories.tsx +5 -2
- package/src/Embed/GlossEmbed.tsx +5 -4
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
9
|
import parse from "html-react-parser";
|
|
10
|
-
import { forwardRef, useMemo, useRef } from "react";
|
|
10
|
+
import { forwardRef, useMemo, useRef, type ReactNode } from "react";
|
|
11
11
|
import { Portal } from "@ark-ui/react";
|
|
12
12
|
import { PopoverContent, PopoverRoot, PopoverTrigger } from "@ndla/primitives";
|
|
13
13
|
import { styled } from "@ndla/styled-system/jsx";
|
|
@@ -26,6 +26,7 @@ interface BaseProps {
|
|
|
26
26
|
|
|
27
27
|
interface Props extends BaseProps {
|
|
28
28
|
embed: ConceptMetaData;
|
|
29
|
+
children?: ReactNode;
|
|
29
30
|
}
|
|
30
31
|
|
|
31
32
|
const StyledPopoverContent = styled(PopoverContent, {
|
|
@@ -36,7 +37,7 @@ const StyledPopoverContent = styled(PopoverContent, {
|
|
|
36
37
|
},
|
|
37
38
|
});
|
|
38
39
|
|
|
39
|
-
export const ConceptEmbed = ({ embed, renderContext, lang, previewAlt }: Props) => {
|
|
40
|
+
export const ConceptEmbed = ({ embed, renderContext, lang, previewAlt, children }: Props) => {
|
|
40
41
|
const parsedContent = useMemo(() => {
|
|
41
42
|
if (embed.status === "error" || !embed.data.concept.content) return undefined;
|
|
42
43
|
return parse(embed.data.concept.content.htmlContent);
|
|
@@ -48,7 +49,7 @@ export const ConceptEmbed = ({ embed, renderContext, lang, previewAlt }: Props)
|
|
|
48
49
|
);
|
|
49
50
|
|
|
50
51
|
if (embed.status === "error" && embed.embedData.type === "inline") {
|
|
51
|
-
return <span>{
|
|
52
|
+
return <span>{children}</span>;
|
|
52
53
|
}
|
|
53
54
|
if (embed.status === "error") {
|
|
54
55
|
// TODO: This could be either concept or gloss. We don't know if it errors out. :)
|
|
@@ -66,7 +67,7 @@ export const ConceptEmbed = ({ embed, renderContext, lang, previewAlt }: Props)
|
|
|
66
67
|
return (
|
|
67
68
|
<InlineConcept
|
|
68
69
|
previewAlt={previewAlt}
|
|
69
|
-
|
|
70
|
+
linkContent={children}
|
|
70
71
|
copyright={concept.copyright}
|
|
71
72
|
visualElement={visualElement}
|
|
72
73
|
lang={lang}
|
|
@@ -93,18 +94,18 @@ export const ConceptEmbed = ({ embed, renderContext, lang, previewAlt }: Props)
|
|
|
93
94
|
};
|
|
94
95
|
|
|
95
96
|
export interface InlineConceptProps extends ConceptProps, BaseProps {
|
|
96
|
-
|
|
97
|
+
linkContent?: ReactNode;
|
|
97
98
|
source?: string;
|
|
98
99
|
}
|
|
99
100
|
|
|
100
101
|
export const InlineConcept = forwardRef<HTMLSpanElement, InlineConceptProps>(
|
|
101
|
-
({
|
|
102
|
+
({ linkContent, copyright, visualElement, previewAlt, lang, children, title, source, ...rest }, ref) => {
|
|
102
103
|
const contentRef = useRef<HTMLDivElement>(null);
|
|
103
104
|
return (
|
|
104
105
|
<PopoverRoot initialFocusEl={() => contentRef.current}>
|
|
105
106
|
{/* @ts-expect-error placing ref and rest on popover trigger somehow removes a bug where the popover target becomes a bit bigger */}
|
|
106
107
|
<PopoverTrigger asChild ref={ref} {...rest}>
|
|
107
|
-
<ConceptInlineTriggerButton>{
|
|
108
|
+
<ConceptInlineTriggerButton>{linkContent}</ConceptInlineTriggerButton>
|
|
108
109
|
</PopoverTrigger>
|
|
109
110
|
<Portal>
|
|
110
111
|
<StyledPopoverContent ref={contentRef}>
|
|
@@ -14,12 +14,10 @@ const glossBlockEmbedData: ConceptEmbedData = {
|
|
|
14
14
|
contentId: "4942",
|
|
15
15
|
resource: "concept",
|
|
16
16
|
type: "block",
|
|
17
|
-
linkText: "",
|
|
18
17
|
};
|
|
19
18
|
|
|
20
19
|
const glossInlineEmbedData: ConceptEmbedData = {
|
|
21
20
|
contentId: "23",
|
|
22
|
-
linkText: "glose",
|
|
23
21
|
resource: "concept",
|
|
24
22
|
type: "inline",
|
|
25
23
|
};
|
|
@@ -89,6 +87,9 @@ export default {
|
|
|
89
87
|
title: "Embeds/GlossEmbed",
|
|
90
88
|
component: GlossEmbed,
|
|
91
89
|
tags: ["autodocs"],
|
|
90
|
+
argTypes: {
|
|
91
|
+
children: { control: false },
|
|
92
|
+
},
|
|
92
93
|
render: (args) => <GlossEmbed {...args} />,
|
|
93
94
|
} satisfies Meta<typeof GlossEmbed>;
|
|
94
95
|
|
|
@@ -121,6 +122,7 @@ export const Inline: StoryObj<typeof GlossEmbed> = {
|
|
|
121
122
|
embedData: glossInlineEmbedData,
|
|
122
123
|
data: glossBlockData,
|
|
123
124
|
},
|
|
125
|
+
children: "glose",
|
|
124
126
|
},
|
|
125
127
|
};
|
|
126
128
|
|
|
@@ -131,5 +133,6 @@ export const InlineFailed: StoryObj<typeof GlossEmbed> = {
|
|
|
131
133
|
status: "error",
|
|
132
134
|
embedData: glossInlineEmbedData,
|
|
133
135
|
},
|
|
136
|
+
children: "glose",
|
|
134
137
|
},
|
|
135
138
|
};
|
package/src/Embed/GlossEmbed.tsx
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
-
import { useRef } from "react";
|
|
9
|
+
import { useRef, type ReactNode } from "react";
|
|
10
10
|
import { Portal } from "@ark-ui/react";
|
|
11
11
|
import { Figure, PopoverContent, PopoverRoot, PopoverTrigger } from "@ndla/primitives";
|
|
12
12
|
import { styled } from "@ndla/styled-system/jsx";
|
|
@@ -17,6 +17,7 @@ import { Gloss } from "../Gloss";
|
|
|
17
17
|
|
|
18
18
|
interface Props {
|
|
19
19
|
embed: ConceptMetaData;
|
|
20
|
+
children?: ReactNode;
|
|
20
21
|
}
|
|
21
22
|
|
|
22
23
|
const StyledPopoverContent = styled(PopoverContent, {
|
|
@@ -25,10 +26,10 @@ const StyledPopoverContent = styled(PopoverContent, {
|
|
|
25
26
|
},
|
|
26
27
|
});
|
|
27
28
|
|
|
28
|
-
export const GlossEmbed = ({ embed }: Props) => {
|
|
29
|
+
export const GlossEmbed = ({ embed, children }: Props) => {
|
|
29
30
|
const contentRef = useRef<HTMLDivElement>(null);
|
|
30
31
|
if (embed.status === "error" && embed.embedData.type === "inline") {
|
|
31
|
-
return <span>{
|
|
32
|
+
return <span>{children}</span>;
|
|
32
33
|
}
|
|
33
34
|
if (embed.status === "error" || !embed.data.concept.glossData) {
|
|
34
35
|
return <EmbedErrorPlaceholder type="gloss" />;
|
|
@@ -48,7 +49,7 @@ export const GlossEmbed = ({ embed }: Props) => {
|
|
|
48
49
|
return (
|
|
49
50
|
<PopoverRoot initialFocusEl={() => contentRef.current}>
|
|
50
51
|
<PopoverTrigger asChild>
|
|
51
|
-
<ConceptInlineTriggerButton>{
|
|
52
|
+
<ConceptInlineTriggerButton>{children}</ConceptInlineTriggerButton>
|
|
52
53
|
</PopoverTrigger>
|
|
53
54
|
<Portal>
|
|
54
55
|
<StyledPopoverContent ref={contentRef}>
|