@ndla/ui 25.3.0 → 26.1.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/LanguageSelector/LanguageSelector.js +12 -7
- package/es/MyNdla/Resource/Folder.js +10 -8
- package/es/Resource/BlockResource.js +9 -7
- package/es/Resource/ListResource.js +10 -8
- package/es/TreeStructure/FolderItem.js +110 -94
- package/es/TreeStructure/FolderItems.js +26 -30
- package/es/TreeStructure/FolderNameInput.js +35 -27
- package/es/TreeStructure/NavigationLink.js +81 -0
- package/es/TreeStructure/TreeStructure.js +169 -45
- package/es/locale/messages-en.js +4 -1
- package/es/locale/messages-nb.js +4 -1
- package/es/locale/messages-nn.js +4 -1
- package/es/locale/messages-se.js +4 -1
- package/es/locale/messages-sma.js +4 -1
- package/lib/LanguageSelector/LanguageSelector.js +13 -7
- package/lib/MyNdla/Resource/Folder.d.ts +2 -1
- package/lib/MyNdla/Resource/Folder.js +10 -8
- package/lib/Resource/BlockResource.d.ts +2 -1
- package/lib/Resource/BlockResource.js +9 -7
- package/lib/Resource/ListResource.d.ts +2 -1
- package/lib/Resource/ListResource.js +10 -8
- package/lib/TreeStructure/FolderItem.d.ts +2 -3
- package/lib/TreeStructure/FolderItem.js +107 -92
- package/lib/TreeStructure/FolderItems.d.ts +1 -3
- package/lib/TreeStructure/FolderItems.js +26 -29
- package/lib/TreeStructure/FolderNameInput.d.ts +2 -1
- package/lib/TreeStructure/FolderNameInput.js +33 -26
- package/lib/TreeStructure/NavigationLink.d.ts +15 -0
- package/lib/TreeStructure/NavigationLink.js +100 -0
- package/lib/TreeStructure/TreeStructure.d.ts +1 -2
- package/lib/TreeStructure/TreeStructure.js +163 -45
- package/lib/TreeStructure/types.d.ts +4 -1
- package/lib/locale/messages-en.d.ts +3 -0
- package/lib/locale/messages-en.js +4 -1
- package/lib/locale/messages-nb.d.ts +3 -0
- package/lib/locale/messages-nb.js +4 -1
- package/lib/locale/messages-nn.d.ts +3 -0
- package/lib/locale/messages-nn.js +4 -1
- package/lib/locale/messages-se.d.ts +3 -0
- package/lib/locale/messages-se.js +4 -1
- package/lib/locale/messages-sma.d.ts +3 -0
- package/lib/locale/messages-sma.js +4 -1
- package/package.json +11 -11
- package/src/.DS_Store +0 -0
- package/src/LanguageSelector/LanguageSelector.tsx +4 -1
- package/src/MyNdla/Resource/Folder.tsx +3 -2
- package/src/Resource/BlockResource.tsx +3 -1
- package/src/Resource/ListResource.tsx +3 -1
- package/src/TreeStructure/FolderItem.tsx +126 -104
- package/src/TreeStructure/FolderItems.tsx +51 -43
- package/src/TreeStructure/FolderNameInput.tsx +43 -28
- package/src/TreeStructure/NavigationLink.tsx +100 -0
- package/src/TreeStructure/TreeStructure.tsx +187 -61
- package/src/TreeStructure/types.ts +5 -1
- package/src/locale/messages-en.ts +3 -0
- package/src/locale/messages-nb.ts +3 -0
- package/src/locale/messages-nn.ts +3 -0
- package/src/locale/messages-se.ts +3 -0
- package/src/locale/messages-sma.ts +3 -0
- package/es/TreeStructure/TreeStructureWrapper.js +0 -13
- package/lib/TreeStructure/TreeStructureWrapper.d.ts +0 -12
- package/lib/TreeStructure/TreeStructureWrapper.js +0 -24
- package/src/TreeStructure/TreeStructureWrapper.tsx +0 -31
|
@@ -10,7 +10,9 @@ import { IFolder, IResource } from '@ndla/types-learningpath-api';
|
|
|
10
10
|
import { MenuItemProps } from '@ndla/button';
|
|
11
11
|
export interface FolderType extends IFolder {
|
|
12
12
|
icon?: ReactNode;
|
|
13
|
+
isNavigation?: boolean;
|
|
13
14
|
}
|
|
15
|
+
export declare type TreeStructureType = 'normal' | 'navigation' | 'picker';
|
|
14
16
|
export interface TreeStructureMenuProps extends Omit<MenuItemProps, 'onClick'> {
|
|
15
17
|
onClick: (e: MouseEvent<HTMLDivElement> | undefined, folder: FolderType) => void;
|
|
16
18
|
}
|
|
@@ -18,13 +20,14 @@ export interface CommonTreeStructureProps {
|
|
|
18
20
|
loading?: boolean;
|
|
19
21
|
onSelectFolder?: (id: string) => void;
|
|
20
22
|
openOnFolderClick?: boolean;
|
|
21
|
-
menuItems?: TreeStructureMenuProps[];
|
|
22
23
|
targetResource?: IResource;
|
|
23
24
|
framed?: boolean;
|
|
25
|
+
type: TreeStructureType;
|
|
24
26
|
}
|
|
25
27
|
export interface CommonFolderItemsProps extends CommonTreeStructureProps {
|
|
26
28
|
focusedFolderId?: string;
|
|
27
29
|
level: number;
|
|
30
|
+
maxLevel: number;
|
|
28
31
|
selectedFolder?: FolderType;
|
|
29
32
|
onCloseFolder: (id: string) => void;
|
|
30
33
|
onOpenFolder: (id: string) => void;
|
|
@@ -67,6 +67,7 @@ declare const messages: {
|
|
|
67
67
|
edit: string;
|
|
68
68
|
missingName: string;
|
|
69
69
|
folderDeleted: string;
|
|
70
|
+
folderCreated: string;
|
|
70
71
|
};
|
|
71
72
|
tags: string;
|
|
72
73
|
tags_plural: string;
|
|
@@ -169,6 +170,8 @@ declare const messages: {
|
|
|
169
170
|
edit: string;
|
|
170
171
|
delete: string;
|
|
171
172
|
};
|
|
173
|
+
hideFolders: string;
|
|
174
|
+
showFolders: string;
|
|
172
175
|
createFolder: string;
|
|
173
176
|
maxFoldersAlreadyAdded: string;
|
|
174
177
|
newFolder: {
|
|
@@ -33,6 +33,8 @@ var messages = _objectSpread(_objectSpread({
|
|
|
33
33
|
edit: 'Edit foldername',
|
|
34
34
|
"delete": 'Delete'
|
|
35
35
|
},
|
|
36
|
+
hideFolders: 'Hide all folders',
|
|
37
|
+
showFolders: 'Show all folders',
|
|
36
38
|
createFolder: 'Create folder',
|
|
37
39
|
maxFoldersAlreadyAdded: 'Maximum subfolders reached',
|
|
38
40
|
newFolder: {
|
|
@@ -954,7 +956,8 @@ var messages = _objectSpread(_objectSpread({
|
|
|
954
956
|
"delete": 'Delete folder',
|
|
955
957
|
edit: 'Edit folder',
|
|
956
958
|
missingName: 'Folder name required',
|
|
957
|
-
folderDeleted: '"{{folderName}}" deleted'
|
|
959
|
+
folderDeleted: '"{{folderName}}" deleted',
|
|
960
|
+
folderCreated: '"{{folderName}} created'
|
|
958
961
|
},
|
|
959
962
|
tags: '{{count}} tag',
|
|
960
963
|
tags_plural: '{{count}} tags',
|
|
@@ -67,6 +67,7 @@ declare const messages: {
|
|
|
67
67
|
edit: string;
|
|
68
68
|
missingName: string;
|
|
69
69
|
folderDeleted: string;
|
|
70
|
+
folderCreated: string;
|
|
70
71
|
};
|
|
71
72
|
tags: string;
|
|
72
73
|
tags_plural: string;
|
|
@@ -169,6 +170,8 @@ declare const messages: {
|
|
|
169
170
|
edit: string;
|
|
170
171
|
delete: string;
|
|
171
172
|
};
|
|
173
|
+
hideFolders: string;
|
|
174
|
+
showFolders: string;
|
|
172
175
|
createFolder: string;
|
|
173
176
|
maxFoldersAlreadyAdded: string;
|
|
174
177
|
newFolder: {
|
|
@@ -33,6 +33,8 @@ var messages = _objectSpread(_objectSpread({
|
|
|
33
33
|
edit: 'Endre mappenavn',
|
|
34
34
|
"delete": 'Slett'
|
|
35
35
|
},
|
|
36
|
+
hideFolders: 'Skjul alle mapper',
|
|
37
|
+
showFolders: 'Vis alle mapper',
|
|
36
38
|
createFolder: 'Lag mappe',
|
|
37
39
|
maxFoldersAlreadyAdded: 'Maks nivå av undermapper nådd',
|
|
38
40
|
newFolder: {
|
|
@@ -954,7 +956,8 @@ var messages = _objectSpread(_objectSpread({
|
|
|
954
956
|
"delete": 'Slett mappe',
|
|
955
957
|
edit: 'Rediger mappe',
|
|
956
958
|
missingName: 'Skriv navn på mappe',
|
|
957
|
-
folderDeleted: '"{{folderName}}" er slettet'
|
|
959
|
+
folderDeleted: '"{{folderName}}" er slettet',
|
|
960
|
+
folderCreated: '"{{folderName}}" er opprettet'
|
|
958
961
|
},
|
|
959
962
|
tags: '{{count}} emneknagg',
|
|
960
963
|
tags_plural: '{{count}} emneknagger',
|
|
@@ -67,6 +67,7 @@ declare const messages: {
|
|
|
67
67
|
edit: string;
|
|
68
68
|
missingName: string;
|
|
69
69
|
folderDeleted: string;
|
|
70
|
+
folderCreated: string;
|
|
70
71
|
};
|
|
71
72
|
tags: string;
|
|
72
73
|
tags_plural: string;
|
|
@@ -169,6 +170,8 @@ declare const messages: {
|
|
|
169
170
|
edit: string;
|
|
170
171
|
delete: string;
|
|
171
172
|
};
|
|
173
|
+
hideFolders: string;
|
|
174
|
+
showFolders: string;
|
|
172
175
|
createFolder: string;
|
|
173
176
|
maxFoldersAlreadyAdded: string;
|
|
174
177
|
newFolder: {
|
|
@@ -33,6 +33,8 @@ var messages = _objectSpread(_objectSpread({
|
|
|
33
33
|
edit: 'Endre mappenamn',
|
|
34
34
|
"delete": 'Slett'
|
|
35
35
|
},
|
|
36
|
+
hideFolders: 'Skjul alle mapper',
|
|
37
|
+
showFolders: 'Vis alle mapper',
|
|
36
38
|
createFolder: 'Lag mappe',
|
|
37
39
|
maxFoldersAlreadyAdded: 'Maks nivå av undermapper nådd',
|
|
38
40
|
newFolder: {
|
|
@@ -954,7 +956,8 @@ var messages = _objectSpread(_objectSpread({
|
|
|
954
956
|
"delete": 'Slett mappe',
|
|
955
957
|
edit: 'Rediger mappe',
|
|
956
958
|
missingName: 'Skriv namn på mappe',
|
|
957
|
-
folderDeleted: '"{{folderName}}" er sletta'
|
|
959
|
+
folderDeleted: '"{{folderName}}" er sletta',
|
|
960
|
+
folderCreated: '"{{folderName}}" er oppretta'
|
|
958
961
|
},
|
|
959
962
|
tags: '{{count}} emneknagg',
|
|
960
963
|
tags_plural: '{{count}} emneknaggar',
|
|
@@ -67,6 +67,7 @@ declare const messages: {
|
|
|
67
67
|
edit: string;
|
|
68
68
|
missingName: string;
|
|
69
69
|
folderDeleted: string;
|
|
70
|
+
folderCreated: string;
|
|
70
71
|
};
|
|
71
72
|
tags: string;
|
|
72
73
|
tags_plural: string;
|
|
@@ -169,6 +170,8 @@ declare const messages: {
|
|
|
169
170
|
edit: string;
|
|
170
171
|
delete: string;
|
|
171
172
|
};
|
|
173
|
+
hideFolders: string;
|
|
174
|
+
showFolders: string;
|
|
172
175
|
createFolder: string;
|
|
173
176
|
maxFoldersAlreadyAdded: string;
|
|
174
177
|
newFolder: {
|
|
@@ -33,6 +33,8 @@ var messages = _objectSpread(_objectSpread({
|
|
|
33
33
|
edit: 'Rievdat máhpa nama',
|
|
34
34
|
"delete": 'Sihko'
|
|
35
35
|
},
|
|
36
|
+
hideFolders: 'Skjul alle mapper',
|
|
37
|
+
showFolders: 'Vis alle mapper',
|
|
36
38
|
createFolder: 'Ráhkat máhpa',
|
|
37
39
|
maxFoldersAlreadyAdded: 'Vuollemáhpaid badjerádji lea olahuvvon',
|
|
38
40
|
newFolder: {
|
|
@@ -954,7 +956,8 @@ var messages = _objectSpread(_objectSpread({
|
|
|
954
956
|
"delete": 'Sihko',
|
|
955
957
|
edit: 'Redigere',
|
|
956
958
|
missingName: 'Čále nama máhppii',
|
|
957
|
-
folderDeleted: '"{{folderName}}" lea sihkkojuvvon'
|
|
959
|
+
folderDeleted: '"{{folderName}}" lea sihkkojuvvon',
|
|
960
|
+
folderCreated: '"{{folderName}}" er oppretta'
|
|
958
961
|
},
|
|
959
962
|
tags: '{{count}} fáddágilkor',
|
|
960
963
|
tags_plural: '{{count}} fáddágilkorat',
|
|
@@ -67,6 +67,7 @@ declare const messages: {
|
|
|
67
67
|
edit: string;
|
|
68
68
|
missingName: string;
|
|
69
69
|
folderDeleted: string;
|
|
70
|
+
folderCreated: string;
|
|
70
71
|
};
|
|
71
72
|
tags: string;
|
|
72
73
|
tags_plural: string;
|
|
@@ -169,6 +170,8 @@ declare const messages: {
|
|
|
169
170
|
edit: string;
|
|
170
171
|
delete: string;
|
|
171
172
|
};
|
|
173
|
+
hideFolders: string;
|
|
174
|
+
showFolders: string;
|
|
172
175
|
createFolder: string;
|
|
173
176
|
maxFoldersAlreadyAdded: string;
|
|
174
177
|
newFolder: {
|
|
@@ -33,6 +33,8 @@ var messages = _objectSpread(_objectSpread({
|
|
|
33
33
|
edit: 'Endre mappenavn',
|
|
34
34
|
"delete": 'Slett'
|
|
35
35
|
},
|
|
36
|
+
hideFolders: 'Skjul alle mapper',
|
|
37
|
+
showFolders: 'Vis alle mapper',
|
|
36
38
|
createFolder: 'Lag mappe',
|
|
37
39
|
maxFoldersAlreadyAdded: 'Maks nivå av undermapper nådd',
|
|
38
40
|
newFolder: {
|
|
@@ -954,7 +956,8 @@ var messages = _objectSpread(_objectSpread({
|
|
|
954
956
|
"delete": 'Slett mappe',
|
|
955
957
|
edit: 'Rediger mappe',
|
|
956
958
|
missingName: 'Skriv navn på mappe',
|
|
957
|
-
folderDeleted: '"{{folderName}}" er slettet'
|
|
959
|
+
folderDeleted: '"{{folderName}}" er slettet',
|
|
960
|
+
folderCreated: '"{{folderName}}" er oppretta'
|
|
958
961
|
},
|
|
959
962
|
tags: '{{count}} emneknagg',
|
|
960
963
|
tags_plural: '{{count}} emneknagger',
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ndla/ui",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "26.1.0",
|
|
4
4
|
"description": "UI component library for NDLA.",
|
|
5
5
|
"license": "GPL-3.0",
|
|
6
6
|
"main": "lib/index.js",
|
|
@@ -32,18 +32,18 @@
|
|
|
32
32
|
],
|
|
33
33
|
"dependencies": {
|
|
34
34
|
"@ndla/article-scripts": "^3.0.2",
|
|
35
|
-
"@ndla/button": "^3.
|
|
36
|
-
"@ndla/carousel": "^1.2.
|
|
35
|
+
"@ndla/button": "^3.5.0",
|
|
36
|
+
"@ndla/carousel": "^1.2.22",
|
|
37
37
|
"@ndla/core": "^2.3.5",
|
|
38
|
-
"@ndla/forms": "^3.
|
|
38
|
+
"@ndla/forms": "^3.3.0",
|
|
39
39
|
"@ndla/hooks": "^1.1.6",
|
|
40
|
-
"@ndla/icons": "^1.12.
|
|
41
|
-
"@ndla/licenses": "^5.0.
|
|
42
|
-
"@ndla/modal": "^1.3.
|
|
43
|
-
"@ndla/notion": "^3.1.
|
|
44
|
-
"@ndla/safelink": "^2.2.
|
|
40
|
+
"@ndla/icons": "^1.12.1",
|
|
41
|
+
"@ndla/licenses": "^5.0.16",
|
|
42
|
+
"@ndla/modal": "^1.3.6",
|
|
43
|
+
"@ndla/notion": "^3.1.40",
|
|
44
|
+
"@ndla/safelink": "^2.2.14",
|
|
45
45
|
"@ndla/switch": "^0.1.13",
|
|
46
|
-
"@ndla/tabs": "^1.1.
|
|
46
|
+
"@ndla/tabs": "^1.1.21",
|
|
47
47
|
"@ndla/tooltip": "^2.2.1",
|
|
48
48
|
"@ndla/types-learningpath-api": "^0.0.13",
|
|
49
49
|
"@ndla/util": "^3.1.0",
|
|
@@ -85,5 +85,5 @@
|
|
|
85
85
|
"publishConfig": {
|
|
86
86
|
"access": "public"
|
|
87
87
|
},
|
|
88
|
-
"gitHead": "
|
|
88
|
+
"gitHead": "578a4353f768a0eb2b3e2334272c10d920de9632"
|
|
89
89
|
}
|
package/src/.DS_Store
ADDED
|
Binary file
|
|
@@ -115,7 +115,9 @@ interface StyledButtonProps {
|
|
|
115
115
|
inverted?: boolean;
|
|
116
116
|
}
|
|
117
117
|
|
|
118
|
-
const
|
|
118
|
+
const shouldForwardProp = (name: string) => name !== 'outline';
|
|
119
|
+
|
|
120
|
+
const StyledButton = styled(Button, { shouldForwardProp })<StyledButtonProps>`
|
|
119
121
|
border-color: ${({ inverted, outline }) =>
|
|
120
122
|
outline ? (inverted ? colors.white : colors.brand.primary) : 'transparent'};
|
|
121
123
|
`;
|
|
@@ -139,6 +141,7 @@ const LanguageSelector = ({ currentLanguage, outline, center, inverted, alwaysVi
|
|
|
139
141
|
</StyledSpan>
|
|
140
142
|
<ChevronDown />
|
|
141
143
|
</StyledButton>
|
|
144
|
+
|
|
142
145
|
{isOpen && (
|
|
143
146
|
<FocusTrapReact
|
|
144
147
|
active
|
|
@@ -78,6 +78,7 @@ const FolderWrapper = styled(SafeLink)`
|
|
|
78
78
|
`;
|
|
79
79
|
|
|
80
80
|
interface Props {
|
|
81
|
+
id: string;
|
|
81
82
|
title: string;
|
|
82
83
|
subFolders?: number;
|
|
83
84
|
subResources?: number;
|
|
@@ -131,10 +132,10 @@ const IconCount = ({ type, count, layoutType }: IconCountProps) => {
|
|
|
131
132
|
|
|
132
133
|
type LayoutType = 'list' | 'block';
|
|
133
134
|
|
|
134
|
-
const Folder = ({ link, title, subFolders, subResources, type = 'list', menuItems }: Props) => {
|
|
135
|
+
const Folder = ({ id, link, title, subFolders, subResources, type = 'list', menuItems }: Props) => {
|
|
135
136
|
const { t } = useTranslation();
|
|
136
137
|
return (
|
|
137
|
-
<FolderWrapper to={link}>
|
|
138
|
+
<FolderWrapper to={link} id={id}>
|
|
138
139
|
<FolderIconWrapper type={type}>
|
|
139
140
|
<FolderOutlined aria-label={t('myNdla.folder.folder')} />
|
|
140
141
|
</FolderIconWrapper>
|
|
@@ -16,6 +16,7 @@ import { CompressedTagList, ResourceImageProps, ResourceTitle, Row, TopicList }
|
|
|
16
16
|
import ContentLoader from '../ContentLoader';
|
|
17
17
|
|
|
18
18
|
interface BlockResourceProps {
|
|
19
|
+
id: string;
|
|
19
20
|
link: string;
|
|
20
21
|
tagLinkPrefix?: string;
|
|
21
22
|
title: string;
|
|
@@ -132,6 +133,7 @@ const BlockTopicList = ({ topics, loading }: BlockTopicListProps) => {
|
|
|
132
133
|
};
|
|
133
134
|
|
|
134
135
|
const BlockResource = ({
|
|
136
|
+
id,
|
|
135
137
|
link,
|
|
136
138
|
tagLinkPrefix,
|
|
137
139
|
title,
|
|
@@ -143,7 +145,7 @@ const BlockResource = ({
|
|
|
143
145
|
isLoading,
|
|
144
146
|
}: BlockResourceProps) => {
|
|
145
147
|
return (
|
|
146
|
-
<BlockElementWrapper to={link}>
|
|
148
|
+
<BlockElementWrapper to={link} id={id}>
|
|
147
149
|
<ImageWrapper>
|
|
148
150
|
<BlockImage image={resourceImage} loading={isLoading} />
|
|
149
151
|
</ImageWrapper>
|
|
@@ -108,6 +108,7 @@ interface StyledImageProps {
|
|
|
108
108
|
}
|
|
109
109
|
|
|
110
110
|
export interface ListResourceProps {
|
|
111
|
+
id: string;
|
|
111
112
|
link: string;
|
|
112
113
|
tagLinkPrefix?: string;
|
|
113
114
|
title: string;
|
|
@@ -186,6 +187,7 @@ const ResourceDescription = ({ description, loading }: ResourceDescriptionProps)
|
|
|
186
187
|
};
|
|
187
188
|
|
|
188
189
|
const ListResource = ({
|
|
190
|
+
id,
|
|
189
191
|
link,
|
|
190
192
|
tagLinkPrefix,
|
|
191
193
|
title,
|
|
@@ -200,7 +202,7 @@ const ListResource = ({
|
|
|
200
202
|
const imageType = showDescription ? 'normal' : 'compact';
|
|
201
203
|
|
|
202
204
|
return (
|
|
203
|
-
<ResourceWrapper to={link}>
|
|
205
|
+
<ResourceWrapper to={link} id={id}>
|
|
204
206
|
<StyledImageWrapper imageSize={imageType}>
|
|
205
207
|
<ListResourceImage resourceImage={resourceImage} loading={isLoading} type={imageType} />
|
|
206
208
|
</StyledImageWrapper>
|