@ndla/ui 30.0.6 → 30.0.8
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 +6 -12
- package/es/Article/index.js +1 -2
- package/es/LearningPaths/LearningPathMenu.js +5 -5
- package/es/LearningPaths/LearningPathMenuIntro.js +9 -14
- package/es/ResourceGroup/ResourceGroup.js +5 -8
- package/es/ResourceGroup/ResourceItem.js +13 -22
- package/es/ResourceGroup/ResourceList.js +4 -6
- package/es/TagSelector/Control.js +1 -1
- package/es/TagSelector/MenuList.js +1 -1
- package/es/TreeStructure/TreeStructure.js +7 -7
- package/es/index.js +1 -1
- package/es/locale/messages-en.js +3 -1
- package/es/locale/messages-nb.js +3 -1
- package/es/locale/messages-nn.js +4 -2
- package/es/locale/messages-se.js +3 -1
- package/es/locale/messages-sma.js +3 -1
- package/lib/Article/Article.d.ts +2 -3
- package/lib/Article/Article.js +6 -13
- package/lib/Article/index.d.ts +1 -2
- package/lib/Article/index.js +0 -8
- package/lib/LearningPaths/LearningPathMenu.d.ts +3 -2
- package/lib/LearningPaths/LearningPathMenu.js +5 -5
- package/lib/LearningPaths/LearningPathMenuIntro.d.ts +3 -2
- package/lib/LearningPaths/LearningPathMenuIntro.js +9 -15
- package/lib/ResourceGroup/ResourceGroup.d.ts +3 -3
- package/lib/ResourceGroup/ResourceGroup.js +5 -8
- package/lib/ResourceGroup/ResourceItem.d.ts +3 -4
- package/lib/ResourceGroup/ResourceItem.js +13 -23
- package/lib/ResourceGroup/ResourceList.d.ts +4 -4
- package/lib/ResourceGroup/ResourceList.js +4 -6
- package/lib/TagSelector/Control.js +1 -1
- package/lib/TagSelector/MenuList.js +1 -1
- package/lib/TreeStructure/TreeStructure.js +7 -7
- package/lib/index.d.ts +1 -1
- package/lib/index.js +0 -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 +4 -2
- 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/package.json +10 -10
- package/src/.DS_Store +0 -0
- package/src/Article/Article.tsx +4 -14
- package/src/Article/index.ts +0 -2
- package/src/LearningPaths/LearningPathMenu.tsx +4 -4
- package/src/LearningPaths/LearningPathMenuIntro.tsx +4 -7
- package/src/ResourceGroup/ResourceGroup.tsx +4 -7
- package/src/ResourceGroup/ResourceItem.tsx +4 -15
- package/src/ResourceGroup/ResourceList.tsx +5 -8
- package/src/TagSelector/Control.tsx +1 -0
- package/src/TagSelector/MenuList.tsx +1 -0
- package/src/TreeStructure/TreeStructure.tsx +1 -0
- package/src/index.ts +0 -1
- package/src/locale/messages-en.ts +4 -1
- package/src/locale/messages-nb.ts +4 -1
- package/src/locale/messages-nn.ts +5 -2
- package/src/locale/messages-se.ts +4 -1
- package/src/locale/messages-sma.ts +4 -1
- package/es/Article/ArticleFavoritesButton.js +0 -42
- package/lib/Article/ArticleFavoritesButton.d.ts +0 -14
- package/lib/Article/ArticleFavoritesButton.js +0 -59
- package/src/Article/ArticleFavoritesButton.tsx +0 -42
|
@@ -96,12 +96,14 @@ declare const messages: {
|
|
|
96
96
|
addToFavourites: string;
|
|
97
97
|
alreadyFavourited: string;
|
|
98
98
|
alreadyInFolder: string;
|
|
99
|
+
noFolderSelected: string;
|
|
99
100
|
help: string;
|
|
100
101
|
more: string;
|
|
101
102
|
listView: string;
|
|
102
103
|
detailView: string;
|
|
103
104
|
shortView: string;
|
|
104
105
|
myPage: {
|
|
106
|
+
imageAlt: string;
|
|
105
107
|
confirmDeleteAccount: string;
|
|
106
108
|
confirmDeleteAccountButton: string;
|
|
107
109
|
myPage: string;
|
|
@@ -1024,13 +1024,15 @@ var messages = _objectSpread(_objectSpread({
|
|
|
1024
1024
|
favourites: 'Favorittar',
|
|
1025
1025
|
addToFavourites: 'Legg til i mine favorittar',
|
|
1026
1026
|
alreadyFavourited: 'Allereie lagt til i mine favorittar',
|
|
1027
|
-
alreadyInFolder: 'Finst allereie i mappa',
|
|
1027
|
+
alreadyInFolder: 'Finst allereie i mappa. Du kan fortsatt lagre nye emneknaggar.',
|
|
1028
|
+
noFolderSelected: 'Velg eller opprett ny mappe for å lagre ressursen',
|
|
1028
1029
|
help: 'Hjelp',
|
|
1029
1030
|
more: 'Fleire val',
|
|
1030
1031
|
listView: 'Listevisning',
|
|
1031
1032
|
detailView: 'Detaljert listevisning',
|
|
1032
1033
|
shortView: 'Kortvisning',
|
|
1033
1034
|
myPage: {
|
|
1035
|
+
imageAlt: 'Halvnært bilete av jente som held eit nettbrett i hendene. Oppå nettbrettet ligg det ei samling fargeprøver i ulike former og fargar. Grafikk.',
|
|
1034
1036
|
confirmDeleteAccount: 'Er du sikker på at du vil slette kontoen?',
|
|
1035
1037
|
confirmDeleteAccountButton: 'Slett konto',
|
|
1036
1038
|
myPage: 'Mi side',
|
|
@@ -1076,7 +1078,7 @@ var messages = _objectSpread(_objectSpread({
|
|
|
1076
1078
|
}
|
|
1077
1079
|
},
|
|
1078
1080
|
resource: {
|
|
1079
|
-
add: 'Legg til mappe/
|
|
1081
|
+
add: 'Legg til mappe/emneknagg',
|
|
1080
1082
|
remove: 'Fjern',
|
|
1081
1083
|
removeTitle: 'Fjern ressurs',
|
|
1082
1084
|
confirmRemove: 'Er du sikker på at du ønsker å fjerne ressursen frå denne mappa?',
|
|
@@ -96,12 +96,14 @@ declare const messages: {
|
|
|
96
96
|
addToFavourites: string;
|
|
97
97
|
alreadyFavourited: string;
|
|
98
98
|
alreadyInFolder: string;
|
|
99
|
+
noFolderSelected: string;
|
|
99
100
|
help: string;
|
|
100
101
|
more: string;
|
|
101
102
|
listView: string;
|
|
102
103
|
detailView: string;
|
|
103
104
|
shortView: string;
|
|
104
105
|
myPage: {
|
|
106
|
+
imageAlt: string;
|
|
105
107
|
confirmDeleteAccount: string;
|
|
106
108
|
confirmDeleteAccountButton: string;
|
|
107
109
|
myPage: string;
|
|
@@ -1024,13 +1024,15 @@ var messages = _objectSpread(_objectSpread({
|
|
|
1024
1024
|
favourites: 'Oiddohat',
|
|
1025
1025
|
addToFavourites: 'Bija mu oiddohiid searvái',
|
|
1026
1026
|
alreadyFavourited: 'Lea juo biddjon oiddohin',
|
|
1027
|
-
alreadyInFolder: '
|
|
1027
|
+
alreadyInFolder: 'Finnes allerede i mappen. Du kan fortsatt lagre nye emneknagger.',
|
|
1028
|
+
noFolderSelected: 'Velg eller opprett ny mappe for å lagre ressursen',
|
|
1028
1029
|
help: 'Veahkki',
|
|
1029
1030
|
more: 'Eanet válljejumit',
|
|
1030
1031
|
listView: 'Oppalašlistu',
|
|
1031
1032
|
detailView: 'Bienalaš oppalašlistu',
|
|
1032
1033
|
shortView: 'Oanehis listu',
|
|
1033
1034
|
myPage: {
|
|
1035
|
+
imageAlt: 'Halvnært bilde av jente som holder et nettbrett i hendene. Oppå nettbrettet ligger det ei samling fargeprøver i ulike former og farger. Grafikk.',
|
|
1034
1036
|
confirmDeleteAccount: 'Leat go sihkar ahte dáhtut sihkkut kontu?',
|
|
1035
1037
|
confirmDeleteAccountButton: 'Sihko kontu',
|
|
1036
1038
|
myPage: 'Mu siidu',
|
|
@@ -96,12 +96,14 @@ declare const messages: {
|
|
|
96
96
|
addToFavourites: string;
|
|
97
97
|
alreadyFavourited: string;
|
|
98
98
|
alreadyInFolder: string;
|
|
99
|
+
noFolderSelected: string;
|
|
99
100
|
help: string;
|
|
100
101
|
more: string;
|
|
101
102
|
listView: string;
|
|
102
103
|
detailView: string;
|
|
103
104
|
shortView: string;
|
|
104
105
|
myPage: {
|
|
106
|
+
imageAlt: string;
|
|
105
107
|
confirmDeleteAccount: string;
|
|
106
108
|
confirmDeleteAccountButton: string;
|
|
107
109
|
myPage: string;
|
|
@@ -1024,13 +1024,15 @@ var messages = _objectSpread(_objectSpread({
|
|
|
1024
1024
|
favourites: 'Favoritter',
|
|
1025
1025
|
addToFavourites: 'Legg til i mine favoritter',
|
|
1026
1026
|
alreadyFavourited: 'Allerede lagt til i mine favoritter',
|
|
1027
|
-
alreadyInFolder: 'Finnes allerede i mappen',
|
|
1027
|
+
alreadyInFolder: 'Finnes allerede i mappen. Du kan fortsatt lagre nye emneknagger.',
|
|
1028
|
+
noFolderSelected: 'Velg eller opprett ny mappe for å lagre ressursen',
|
|
1028
1029
|
help: 'Hjelp',
|
|
1029
1030
|
more: 'Flere valg',
|
|
1030
1031
|
listView: 'Listevisning',
|
|
1031
1032
|
detailView: 'Detaljert listevisning',
|
|
1032
1033
|
shortView: 'Kort visning',
|
|
1033
1034
|
myPage: {
|
|
1035
|
+
imageAlt: 'Halvnært bilde av jente som holder et nettbrett i hendene. Oppå nettbrettet ligger det ei samling fargeprøver i ulike former og farger. Grafikk.',
|
|
1034
1036
|
confirmDeleteAccount: 'Er du sikker på at du vil slette kontoen?',
|
|
1035
1037
|
confirmDeleteAccountButton: 'Slett konto',
|
|
1036
1038
|
myPage: 'Min side',
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ndla/ui",
|
|
3
|
-
"version": "30.0.
|
|
3
|
+
"version": "30.0.8",
|
|
4
4
|
"description": "UI component library for NDLA.",
|
|
5
5
|
"license": "GPL-3.0",
|
|
6
6
|
"main": "lib/index.js",
|
|
@@ -31,22 +31,22 @@
|
|
|
31
31
|
"types"
|
|
32
32
|
],
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@ndla/article-scripts": "^3.0.
|
|
35
|
-
"@ndla/button": "^
|
|
34
|
+
"@ndla/article-scripts": "^3.0.8",
|
|
35
|
+
"@ndla/button": "^5.0.0",
|
|
36
36
|
"@ndla/carousel": "^2.0.5",
|
|
37
37
|
"@ndla/core": "^3.0.0",
|
|
38
|
-
"@ndla/forms": "^4.0.
|
|
39
|
-
"@ndla/hooks": "^1.1.
|
|
38
|
+
"@ndla/forms": "^4.0.6",
|
|
39
|
+
"@ndla/hooks": "^1.1.12",
|
|
40
40
|
"@ndla/icons": "^2.0.5",
|
|
41
41
|
"@ndla/licenses": "^6.0.5",
|
|
42
42
|
"@ndla/modal": "^2.0.5",
|
|
43
|
-
"@ndla/notion": "^4.0.
|
|
44
|
-
"@ndla/safelink": "^3.0.
|
|
43
|
+
"@ndla/notion": "^4.0.6",
|
|
44
|
+
"@ndla/safelink": "^3.0.6",
|
|
45
45
|
"@ndla/switch": "^1.0.0",
|
|
46
|
-
"@ndla/tabs": "^2.0.
|
|
46
|
+
"@ndla/tabs": "^2.0.6",
|
|
47
47
|
"@ndla/tooltip": "^3.0.1",
|
|
48
48
|
"@ndla/types-learningpath-api": "^0.0.13",
|
|
49
|
-
"@ndla/util": "^3.1.
|
|
49
|
+
"@ndla/util": "^3.1.6",
|
|
50
50
|
"@reach/menu-button": "^0.16.2",
|
|
51
51
|
"@reach/slider": "^0.16.0",
|
|
52
52
|
"focus-trap-react": "^8.9.2",
|
|
@@ -86,5 +86,5 @@
|
|
|
86
86
|
"publishConfig": {
|
|
87
87
|
"access": "public"
|
|
88
88
|
},
|
|
89
|
-
"gitHead": "
|
|
89
|
+
"gitHead": "5cb8d6b7fce98737fda299e7f52b70bc3af35d1d"
|
|
90
90
|
}
|
package/src/.DS_Store
ADDED
|
Binary file
|
package/src/Article/Article.tsx
CHANGED
|
@@ -19,7 +19,6 @@ import { Article as ArticleType, Locale } from '../types';
|
|
|
19
19
|
import ArticleFootNotes from './ArticleFootNotes';
|
|
20
20
|
import ArticleContent from './ArticleContent';
|
|
21
21
|
import ArticleByline from './ArticleByline';
|
|
22
|
-
import ArticleFavoritesButton from './ArticleFavoritesButton';
|
|
23
22
|
import LayoutItem from '../Layout';
|
|
24
23
|
import ArticleHeaderWrapper from './ArticleHeaderWrapper';
|
|
25
24
|
import ArticleNotions, { NotionRelatedContent } from './ArticleNotions';
|
|
@@ -116,6 +115,7 @@ const ArticleFavoritesButtonWrapper = styled.div`
|
|
|
116
115
|
`;
|
|
117
116
|
|
|
118
117
|
type Props = {
|
|
118
|
+
heartButton?: ReactNode;
|
|
119
119
|
article: ArticleType;
|
|
120
120
|
icon?: ReactNode;
|
|
121
121
|
licenseBox?: ReactNode;
|
|
@@ -135,8 +135,6 @@ type Props = {
|
|
|
135
135
|
printUrl?: string;
|
|
136
136
|
notions?: { list: ConceptNotionType[]; related: NotionRelatedContent[] };
|
|
137
137
|
accessMessage?: string;
|
|
138
|
-
isFavorite?: boolean;
|
|
139
|
-
onToggleAddToFavorites?: (id: string, add: boolean) => void;
|
|
140
138
|
};
|
|
141
139
|
|
|
142
140
|
const getArticleContent = (content: any, locale: Locale) => {
|
|
@@ -167,8 +165,7 @@ export const Article = ({
|
|
|
167
165
|
printUrl,
|
|
168
166
|
renderMarkdown,
|
|
169
167
|
accessMessage,
|
|
170
|
-
|
|
171
|
-
isFavorite,
|
|
168
|
+
heartButton,
|
|
172
169
|
}: Props) => {
|
|
173
170
|
const [articleRef, { entry }] = useIntersectionObserver({
|
|
174
171
|
root: null,
|
|
@@ -218,15 +215,8 @@ export const Article = ({
|
|
|
218
215
|
</MSGboxWrapper>
|
|
219
216
|
)}
|
|
220
217
|
<ArticleHeaderWrapper competenceGoals={competenceGoals} competenceGoalTypes={competenceGoalTypes}>
|
|
221
|
-
{
|
|
222
|
-
|
|
223
|
-
<ArticleFavoritesButton
|
|
224
|
-
articleId={id}
|
|
225
|
-
isFavorite={isFavorite}
|
|
226
|
-
onToggleAddToFavorites={onToggleAddToFavorites}
|
|
227
|
-
/>
|
|
228
|
-
</ArticleFavoritesButtonWrapper>
|
|
229
|
-
)}
|
|
218
|
+
{heartButton ? <ArticleFavoritesButtonWrapper>{heartButton}</ArticleFavoritesButtonWrapper> : null}
|
|
219
|
+
|
|
230
220
|
<ArticleTitle icon={icon} label={messages.label}>
|
|
231
221
|
{title}
|
|
232
222
|
</ArticleTitle>
|
package/src/Article/index.ts
CHANGED
|
@@ -12,7 +12,6 @@ import ArticleContent from './ArticleContent';
|
|
|
12
12
|
import ArticleFootNotes from './ArticleFootNotes';
|
|
13
13
|
import ArticleHeaderWrapper from './ArticleHeaderWrapper';
|
|
14
14
|
import ArticleSideBar from './ArticleSideBar';
|
|
15
|
-
import ArticleFavoritesButton from './ArticleFavoritesButton';
|
|
16
15
|
|
|
17
16
|
export {
|
|
18
17
|
ArticleByline,
|
|
@@ -23,6 +22,5 @@ export {
|
|
|
23
22
|
ArticleTitle,
|
|
24
23
|
ArticleIntroduction,
|
|
25
24
|
ArticleWrapper,
|
|
26
|
-
ArticleFavoritesButton,
|
|
27
25
|
};
|
|
28
26
|
export default Article;
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
-
import React, { useState } from 'react';
|
|
9
|
+
import React, { ReactNode, useState } from 'react';
|
|
10
10
|
import styled from '@emotion/styled';
|
|
11
11
|
import { css } from '@emotion/react';
|
|
12
12
|
import { useTranslation } from 'react-i18next';
|
|
@@ -76,7 +76,7 @@ export type StepProps = {
|
|
|
76
76
|
};
|
|
77
77
|
|
|
78
78
|
interface Props {
|
|
79
|
-
|
|
79
|
+
heartButton?: ReactNode;
|
|
80
80
|
learningsteps: StepProps[];
|
|
81
81
|
name: string;
|
|
82
82
|
lastUpdated: string;
|
|
@@ -110,7 +110,7 @@ const LearningPathMenu = ({
|
|
|
110
110
|
learningPathURL,
|
|
111
111
|
invertedStyle,
|
|
112
112
|
cookies,
|
|
113
|
-
|
|
113
|
+
heartButton,
|
|
114
114
|
}: Props) => {
|
|
115
115
|
const { t } = useTranslation();
|
|
116
116
|
const [isOpen, toggleOpenState] = useState(false);
|
|
@@ -136,7 +136,7 @@ const LearningPathMenu = ({
|
|
|
136
136
|
name={name}
|
|
137
137
|
invertedStyle={invertedStyle}
|
|
138
138
|
id={learningPathId}
|
|
139
|
-
|
|
139
|
+
heartButton={heartButton}
|
|
140
140
|
/>
|
|
141
141
|
<LearningPathMenuContent
|
|
142
142
|
learningsteps={learningsteps}
|
|
@@ -6,12 +6,11 @@
|
|
|
6
6
|
*
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
-
import React from 'react';
|
|
9
|
+
import React, { ReactNode } from 'react';
|
|
10
10
|
import styled from '@emotion/styled';
|
|
11
11
|
import { css } from '@emotion/react';
|
|
12
12
|
import { useTranslation } from 'react-i18next';
|
|
13
13
|
import { colors, spacing, spacingUnit, fonts, typography, mq, breakpoints, animations } from '@ndla/core';
|
|
14
|
-
import { ArticleFavoritesButton } from '../Article';
|
|
15
14
|
|
|
16
15
|
const StyledInfoHeader = styled.p`
|
|
17
16
|
${typography.smallHeading}
|
|
@@ -104,20 +103,18 @@ interface Props {
|
|
|
104
103
|
isOpen: boolean;
|
|
105
104
|
invertedStyle?: boolean;
|
|
106
105
|
name: string;
|
|
107
|
-
onToggleAddToFavorites?: () => void;
|
|
108
106
|
id: number;
|
|
107
|
+
heartButton?: ReactNode;
|
|
109
108
|
}
|
|
110
109
|
|
|
111
|
-
const LearningPathMenuIntro = ({ isOpen, name, invertedStyle,
|
|
110
|
+
const LearningPathMenuIntro = ({ isOpen, name, invertedStyle, heartButton }: Props) => {
|
|
112
111
|
const { t } = useTranslation();
|
|
113
112
|
return (
|
|
114
113
|
<StyledMenuIntro isOpen={isOpen} invertedStyle={invertedStyle}>
|
|
115
114
|
<div>
|
|
116
115
|
<StyledRow>
|
|
117
116
|
<StyledInfoHeader>{t('learningPath.youAreInALearningPath')}</StyledInfoHeader>
|
|
118
|
-
{
|
|
119
|
-
<ArticleFavoritesButton onToggleAddToFavorites={onToggleAddToFavorites} articleId={id.toString()} />
|
|
120
|
-
)}
|
|
117
|
+
{heartButton}
|
|
121
118
|
</StyledRow>
|
|
122
119
|
<StyledIntroHeader>{name}</StyledIntroHeader>
|
|
123
120
|
</div>
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
-
import React from 'react';
|
|
9
|
+
import React, { ReactNode } from 'react';
|
|
10
10
|
import styled from '@emotion/styled';
|
|
11
11
|
import { fonts, spacing } from '@ndla/core';
|
|
12
12
|
|
|
@@ -36,8 +36,7 @@ const StyledHeading = styled.h1`
|
|
|
36
36
|
type Props = {
|
|
37
37
|
invertedStyle?: boolean;
|
|
38
38
|
toggleAdditionalResources: () => void;
|
|
39
|
-
|
|
40
|
-
showAddToFavoriteButton: boolean;
|
|
39
|
+
heartButton?: (path: string) => ReactNode;
|
|
41
40
|
};
|
|
42
41
|
|
|
43
42
|
const ResourceGroup = ({
|
|
@@ -47,8 +46,7 @@ const ResourceGroup = ({
|
|
|
47
46
|
toggleAdditionalResources,
|
|
48
47
|
contentType,
|
|
49
48
|
invertedStyle,
|
|
50
|
-
|
|
51
|
-
showAddToFavoriteButton = false,
|
|
49
|
+
heartButton,
|
|
52
50
|
}: Props & ResourceListProps) => (
|
|
53
51
|
<Wrapper>
|
|
54
52
|
{title && (
|
|
@@ -63,8 +61,7 @@ const ResourceGroup = ({
|
|
|
63
61
|
showAdditionalResources={showAdditionalResources}
|
|
64
62
|
contentType={contentType}
|
|
65
63
|
resources={resources}
|
|
66
|
-
|
|
67
|
-
showAddToFavoriteButton={showAddToFavoriteButton}
|
|
64
|
+
heartButton={heartButton}
|
|
68
65
|
/>
|
|
69
66
|
) : null}
|
|
70
67
|
</Wrapper>
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
-
import React from 'react';
|
|
9
|
+
import React, { ReactNode } from 'react';
|
|
10
10
|
import { useTranslation } from 'react-i18next';
|
|
11
11
|
import styled from '@emotion/styled';
|
|
12
12
|
import { css } from '@emotion/react';
|
|
@@ -15,7 +15,6 @@ import SafeLink from '@ndla/safelink';
|
|
|
15
15
|
import { Additional, Core, HumanMaleBoard } from '@ndla/icons/common';
|
|
16
16
|
import { breakpoints, colors, fonts, mq, spacing } from '@ndla/core';
|
|
17
17
|
import Tooltip from '@ndla/tooltip';
|
|
18
|
-
import { ArticleFavoritesButton } from '../Article';
|
|
19
18
|
import { Resource } from '../types';
|
|
20
19
|
import ContentTypeBadge from '../ContentTypeBadge';
|
|
21
20
|
import * as contentTypes from '../model/ContentType';
|
|
@@ -228,9 +227,7 @@ type Props = {
|
|
|
228
227
|
extraBottomMargin?: boolean;
|
|
229
228
|
showAdditionalResources?: boolean;
|
|
230
229
|
access?: 'teacher';
|
|
231
|
-
|
|
232
|
-
onToggleAddToFavorites: (id: string) => void;
|
|
233
|
-
showAddToFavoriteButton: boolean;
|
|
230
|
+
heartButton?: (path: string) => ReactNode;
|
|
234
231
|
};
|
|
235
232
|
|
|
236
233
|
const ResourceItem = ({
|
|
@@ -245,9 +242,7 @@ const ResourceItem = ({
|
|
|
245
242
|
extraBottomMargin,
|
|
246
243
|
showAdditionalResources,
|
|
247
244
|
access,
|
|
248
|
-
|
|
249
|
-
isFavorite,
|
|
250
|
-
showAddToFavoriteButton,
|
|
245
|
+
heartButton,
|
|
251
246
|
}: Props & Resource) => {
|
|
252
247
|
const { t } = useTranslation();
|
|
253
248
|
const hidden = additional ? !showAdditionalResources : false;
|
|
@@ -310,13 +305,7 @@ const ResourceItem = ({
|
|
|
310
305
|
)}
|
|
311
306
|
</>
|
|
312
307
|
)}
|
|
313
|
-
{
|
|
314
|
-
<ArticleFavoritesButton
|
|
315
|
-
isFavorite={isFavorite}
|
|
316
|
-
articleId={id}
|
|
317
|
-
onToggleAddToFavorites={() => onToggleAddToFavorites(id)}
|
|
318
|
-
/>
|
|
319
|
-
)}
|
|
308
|
+
{heartButton?.(path)}
|
|
320
309
|
</TypeWrapper>
|
|
321
310
|
</ListElement>
|
|
322
311
|
);
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
-
import React from 'react';
|
|
9
|
+
import React, { ReactNode } from 'react';
|
|
10
10
|
import styled from '@emotion/styled';
|
|
11
11
|
import { css } from '@emotion/react';
|
|
12
12
|
import { keyframes } from '@emotion/react';
|
|
@@ -44,22 +44,20 @@ const StyledResourceList = styled.ul<StyledListProps>`
|
|
|
44
44
|
|
|
45
45
|
export type ResourceListProps = {
|
|
46
46
|
resources: Resource[];
|
|
47
|
-
onClick
|
|
47
|
+
onClick?: () => void;
|
|
48
48
|
contentType?: string;
|
|
49
49
|
title?: string;
|
|
50
50
|
showAdditionalResources?: boolean;
|
|
51
|
-
|
|
52
|
-
showAddToFavoriteButton: boolean;
|
|
51
|
+
heartButton?: (path: string) => ReactNode;
|
|
53
52
|
};
|
|
54
53
|
|
|
55
54
|
const ResourceList = ({
|
|
56
55
|
resources,
|
|
57
56
|
onClick,
|
|
58
|
-
onToggleAddToFavorites,
|
|
59
57
|
contentType,
|
|
60
58
|
title,
|
|
61
59
|
showAdditionalResources,
|
|
62
|
-
|
|
60
|
+
heartButton,
|
|
63
61
|
}: ResourceListProps) => {
|
|
64
62
|
const { t } = useTranslation();
|
|
65
63
|
const renderAdditionalResourceTrigger =
|
|
@@ -76,8 +74,7 @@ const ResourceList = ({
|
|
|
76
74
|
key={id}
|
|
77
75
|
contentType={contentType}
|
|
78
76
|
showAdditionalResources={showAdditionalResources}
|
|
79
|
-
|
|
80
|
-
onToggleAddToFavorites={onToggleAddToFavorites}
|
|
77
|
+
heartButton={heartButton}
|
|
81
78
|
{...resource}
|
|
82
79
|
contentTypeDescription={
|
|
83
80
|
resource.additional ? t('resource.tooltipAdditionalTopic') : t('resource.tooltipCoreTopic')
|
package/src/index.ts
CHANGED
|
@@ -1065,13 +1065,16 @@ const messages = {
|
|
|
1065
1065
|
favourites: 'Favourites',
|
|
1066
1066
|
addToFavourites: 'Add to my favourites',
|
|
1067
1067
|
alreadyFavourited: 'Already in my favourites',
|
|
1068
|
-
alreadyInFolder: 'Already in folder',
|
|
1068
|
+
alreadyInFolder: 'Already in folder. You can still save new tags.',
|
|
1069
|
+
noFolderSelected: 'Select or create a new folder to save the resource.',
|
|
1069
1070
|
help: 'Help',
|
|
1070
1071
|
more: 'More options',
|
|
1071
1072
|
listView: 'List view',
|
|
1072
1073
|
detailView: 'Detailed listview',
|
|
1073
1074
|
shortView: 'Card view',
|
|
1074
1075
|
myPage: {
|
|
1076
|
+
imageAlt:
|
|
1077
|
+
'Medium close-up of girl holding a tablet. On top of the tablet there are colour samples in different shapes and colours. Graphic image.',
|
|
1075
1078
|
confirmDeleteAccount: 'Are you sure you want to delete your account?',
|
|
1076
1079
|
confirmDeleteAccountButton: 'Delete account',
|
|
1077
1080
|
myPage: 'My page',
|
|
@@ -1062,13 +1062,16 @@ const messages = {
|
|
|
1062
1062
|
favourites: 'Favoritter',
|
|
1063
1063
|
addToFavourites: 'Legg til i mine favoritter',
|
|
1064
1064
|
alreadyFavourited: 'Allerede lagt til i mine favoritter',
|
|
1065
|
-
alreadyInFolder: 'Finnes allerede i mappen',
|
|
1065
|
+
alreadyInFolder: 'Finnes allerede i mappen. Du kan fortsatt lagre nye emneknagger.',
|
|
1066
|
+
noFolderSelected: 'Velg eller opprett ny mappe for å lagre ressursen',
|
|
1066
1067
|
help: 'Hjelp',
|
|
1067
1068
|
more: 'Flere valg',
|
|
1068
1069
|
listView: 'Listevisning',
|
|
1069
1070
|
detailView: 'Detaljert listevisning',
|
|
1070
1071
|
shortView: 'Kort visning',
|
|
1071
1072
|
myPage: {
|
|
1073
|
+
imageAlt:
|
|
1074
|
+
'Halvnært bilde av jente som holder et nettbrett i hendene. Oppå nettbrettet ligger det ei samling fargeprøver i ulike former og farger. Grafikk.',
|
|
1072
1075
|
confirmDeleteAccount: 'Er du sikker på at du vil slette kontoen?',
|
|
1073
1076
|
confirmDeleteAccountButton: 'Slett konto',
|
|
1074
1077
|
myPage: 'Min side',
|
|
@@ -1063,13 +1063,16 @@ const messages = {
|
|
|
1063
1063
|
favourites: 'Favorittar',
|
|
1064
1064
|
addToFavourites: 'Legg til i mine favorittar',
|
|
1065
1065
|
alreadyFavourited: 'Allereie lagt til i mine favorittar',
|
|
1066
|
-
alreadyInFolder: 'Finst allereie i mappa',
|
|
1066
|
+
alreadyInFolder: 'Finst allereie i mappa. Du kan fortsatt lagre nye emneknaggar.',
|
|
1067
|
+
noFolderSelected: 'Velg eller opprett ny mappe for å lagre ressursen',
|
|
1067
1068
|
help: 'Hjelp',
|
|
1068
1069
|
more: 'Fleire val',
|
|
1069
1070
|
listView: 'Listevisning',
|
|
1070
1071
|
detailView: 'Detaljert listevisning',
|
|
1071
1072
|
shortView: 'Kortvisning',
|
|
1072
1073
|
myPage: {
|
|
1074
|
+
imageAlt:
|
|
1075
|
+
'Halvnært bilete av jente som held eit nettbrett i hendene. Oppå nettbrettet ligg det ei samling fargeprøver i ulike former og fargar. Grafikk.',
|
|
1073
1076
|
confirmDeleteAccount: 'Er du sikker på at du vil slette kontoen?',
|
|
1074
1077
|
confirmDeleteAccountButton: 'Slett konto',
|
|
1075
1078
|
myPage: 'Mi side',
|
|
@@ -1112,7 +1115,7 @@ const messages = {
|
|
|
1112
1115
|
},
|
|
1113
1116
|
},
|
|
1114
1117
|
resource: {
|
|
1115
|
-
add: 'Legg til mappe/
|
|
1118
|
+
add: 'Legg til mappe/emneknagg',
|
|
1116
1119
|
remove: 'Fjern',
|
|
1117
1120
|
removeTitle: 'Fjern ressurs',
|
|
1118
1121
|
confirmRemove: 'Er du sikker på at du ønsker å fjerne ressursen frå denne mappa?',
|
|
@@ -1063,7 +1063,8 @@ const messages = {
|
|
|
1063
1063
|
favourites: 'Oiddohat',
|
|
1064
1064
|
addToFavourites: 'Bija mu oiddohiid searvái',
|
|
1065
1065
|
alreadyFavourited: 'Lea juo biddjon oiddohin',
|
|
1066
|
-
alreadyInFolder: '
|
|
1066
|
+
alreadyInFolder: 'Finnes allerede i mappen. Du kan fortsatt lagre nye emneknagger.',
|
|
1067
|
+
noFolderSelected: 'Velg eller opprett ny mappe for å lagre ressursen',
|
|
1067
1068
|
help: 'Veahkki',
|
|
1068
1069
|
more: 'Eanet válljejumit',
|
|
1069
1070
|
listView: 'Oppalašlistu',
|
|
@@ -1071,6 +1072,8 @@ const messages = {
|
|
|
1071
1072
|
shortView: 'Oanehis listu',
|
|
1072
1073
|
|
|
1073
1074
|
myPage: {
|
|
1075
|
+
imageAlt:
|
|
1076
|
+
'Halvnært bilde av jente som holder et nettbrett i hendene. Oppå nettbrettet ligger det ei samling fargeprøver i ulike former og farger. Grafikk.',
|
|
1074
1077
|
confirmDeleteAccount: 'Leat go sihkar ahte dáhtut sihkkut kontu?',
|
|
1075
1078
|
confirmDeleteAccountButton: 'Sihko kontu',
|
|
1076
1079
|
myPage: 'Mu siidu',
|
|
@@ -1064,13 +1064,16 @@ const messages = {
|
|
|
1064
1064
|
favourites: 'Favoritter',
|
|
1065
1065
|
addToFavourites: 'Legg til i mine favoritter',
|
|
1066
1066
|
alreadyFavourited: 'Allerede lagt til i mine favoritter',
|
|
1067
|
-
alreadyInFolder: 'Finnes allerede i mappen',
|
|
1067
|
+
alreadyInFolder: 'Finnes allerede i mappen. Du kan fortsatt lagre nye emneknagger.',
|
|
1068
|
+
noFolderSelected: 'Velg eller opprett ny mappe for å lagre ressursen',
|
|
1068
1069
|
help: 'Hjelp',
|
|
1069
1070
|
more: 'Flere valg',
|
|
1070
1071
|
listView: 'Listevisning',
|
|
1071
1072
|
detailView: 'Detaljert listevisning',
|
|
1072
1073
|
shortView: 'Kort visning',
|
|
1073
1074
|
myPage: {
|
|
1075
|
+
imageAlt:
|
|
1076
|
+
'Halvnært bilde av jente som holder et nettbrett i hendene. Oppå nettbrettet ligger det ei samling fargeprøver i ulike former og farger. Grafikk.',
|
|
1074
1077
|
confirmDeleteAccount: 'Er du sikker på at du vil slette kontoen?',
|
|
1075
1078
|
confirmDeleteAccountButton: 'Slett konto',
|
|
1076
1079
|
myPage: 'Min side',
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx } from "@emotion/react/jsx-runtime";
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Copyright (c) 2022-present, NDLA.
|
|
5
|
-
*
|
|
6
|
-
* This source code is licensed under the GPLv3 license found in the
|
|
7
|
-
* LICENSE file in the root directory of this source tree.
|
|
8
|
-
*
|
|
9
|
-
*/
|
|
10
|
-
import React from 'react';
|
|
11
|
-
import { IconButtonDualStates } from '@ndla/button';
|
|
12
|
-
import { Heart, HeartOutline } from '@ndla/icons/action';
|
|
13
|
-
import Tooltip from '@ndla/tooltip';
|
|
14
|
-
import { useTranslation } from 'react-i18next';
|
|
15
|
-
export var ArticleFavoritesButton = function ArticleFavoritesButton(_ref) {
|
|
16
|
-
var isFavorite = _ref.isFavorite,
|
|
17
|
-
onToggleAddToFavorites = _ref.onToggleAddToFavorites,
|
|
18
|
-
articleId = _ref.articleId;
|
|
19
|
-
|
|
20
|
-
var _useTranslation = useTranslation(),
|
|
21
|
-
t = _useTranslation.t;
|
|
22
|
-
|
|
23
|
-
var removeFromFavoritesLabel = t('myNdla.resource.addToMyNdla');
|
|
24
|
-
var addToFavoritesLabel = t('myNdla.resource.addedToMyNdla');
|
|
25
|
-
return _jsx(Tooltip, {
|
|
26
|
-
tooltip: isFavorite ? addToFavoritesLabel : removeFromFavoritesLabel,
|
|
27
|
-
children: _jsx(IconButtonDualStates, {
|
|
28
|
-
ariaLabelActive: t('myNdla.alreadyFavourited'),
|
|
29
|
-
ariaLabelInActive: t('myNdla.addToFavourites'),
|
|
30
|
-
activeIcon: _jsx(Heart, {}),
|
|
31
|
-
inactiveIcon: _jsx(HeartOutline, {}),
|
|
32
|
-
active: isFavorite,
|
|
33
|
-
size: "small",
|
|
34
|
-
colorTheme: "light",
|
|
35
|
-
variant: "ghost",
|
|
36
|
-
onClick: function onClick() {
|
|
37
|
-
return onToggleAddToFavorites(articleId, !isFavorite);
|
|
38
|
-
}
|
|
39
|
-
})
|
|
40
|
-
});
|
|
41
|
-
};
|
|
42
|
-
export default ArticleFavoritesButton;
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) 2022-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
|
-
export interface Props {
|
|
9
|
-
isFavorite?: boolean;
|
|
10
|
-
onToggleAddToFavorites: (id: string, add: boolean) => void;
|
|
11
|
-
articleId: string;
|
|
12
|
-
}
|
|
13
|
-
export declare const ArticleFavoritesButton: ({ isFavorite, onToggleAddToFavorites, articleId }: Props) => import("@emotion/react/types/jsx-namespace").EmotionJSX.Element;
|
|
14
|
-
export default ArticleFavoritesButton;
|