@ndla/ui 26.0.0 → 27.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/Breadcrumb/Breadcrumb.js +3 -4
- package/es/MyNdla/Resource/Folder.js +32 -14
- package/es/Resource/BlockResource.js +43 -61
- package/es/Resource/ListResource.js +44 -23
- package/es/Resource/resourceComponents.js +64 -38
- package/es/TreeStructure/ComboboxButton.js +162 -0
- package/es/TreeStructure/FolderItem.js +98 -78
- package/es/TreeStructure/FolderItems.js +25 -14
- package/es/TreeStructure/FolderNameInput.js +40 -33
- package/es/TreeStructure/NavigationLink.js +18 -10
- package/es/TreeStructure/TreeStructure.js +92 -165
- package/es/TreeStructure/arrowNavigation.js +3 -3
- package/es/TreeStructure/helperFunctions.js +3 -0
- package/es/locale/messages-en.js +8 -2
- package/es/locale/messages-nb.js +8 -2
- package/es/locale/messages-nn.js +8 -2
- package/es/locale/messages-se.js +8 -2
- package/es/locale/messages-sma.js +8 -2
- package/lib/Breadcrumb/Breadcrumb.js +3 -5
- package/lib/MyNdla/Resource/Folder.d.ts +2 -1
- package/lib/MyNdla/Resource/Folder.js +37 -14
- package/lib/Resource/BlockResource.d.ts +2 -1
- package/lib/Resource/BlockResource.js +48 -61
- package/lib/Resource/ListResource.d.ts +2 -1
- package/lib/Resource/ListResource.js +49 -23
- package/lib/Resource/resourceComponents.d.ts +6 -1
- package/lib/Resource/resourceComponents.js +64 -37
- package/lib/TreeStructure/ComboboxButton.d.ts +28 -0
- package/lib/TreeStructure/ComboboxButton.js +176 -0
- package/lib/TreeStructure/FolderItem.d.ts +1 -1
- package/lib/TreeStructure/FolderItem.js +99 -77
- package/lib/TreeStructure/FolderItems.d.ts +4 -2
- package/lib/TreeStructure/FolderItems.js +26 -14
- package/lib/TreeStructure/FolderNameInput.d.ts +3 -1
- package/lib/TreeStructure/FolderNameInput.js +41 -32
- package/lib/TreeStructure/NavigationLink.d.ts +1 -1
- package/lib/TreeStructure/NavigationLink.js +18 -10
- package/lib/TreeStructure/TreeStructure.d.ts +2 -2
- package/lib/TreeStructure/TreeStructure.js +92 -165
- package/lib/TreeStructure/arrowNavigation.d.ts +2 -1
- package/lib/TreeStructure/arrowNavigation.js +3 -3
- package/lib/TreeStructure/helperFunctions.d.ts +2 -1
- package/lib/TreeStructure/helperFunctions.js +8 -2
- package/lib/TreeStructure/types.d.ts +6 -7
- package/lib/locale/messages-en.d.ts +6 -0
- package/lib/locale/messages-en.js +8 -2
- package/lib/locale/messages-nb.d.ts +6 -0
- package/lib/locale/messages-nb.js +8 -2
- package/lib/locale/messages-nn.d.ts +6 -0
- package/lib/locale/messages-nn.js +8 -2
- package/lib/locale/messages-se.d.ts +6 -0
- package/lib/locale/messages-se.js +8 -2
- package/lib/locale/messages-sma.d.ts +6 -0
- package/lib/locale/messages-sma.js +8 -2
- package/package.json +11 -11
- package/src/Breadcrumb/Breadcrumb.tsx +1 -2
- package/src/MyNdla/Resource/Folder.tsx +21 -5
- package/src/Resource/BlockResource.tsx +43 -33
- package/src/Resource/ListResource.tsx +37 -29
- package/src/Resource/resourceComponents.tsx +60 -26
- package/src/TreeStructure/ComboboxButton.tsx +189 -0
- package/src/TreeStructure/FolderItem.tsx +89 -70
- package/src/TreeStructure/FolderItems.tsx +36 -16
- package/src/TreeStructure/FolderNameInput.tsx +43 -18
- package/src/TreeStructure/NavigationLink.tsx +17 -10
- package/src/TreeStructure/TreeStructure.tsx +63 -139
- package/src/TreeStructure/arrowNavigation.ts +7 -6
- package/src/TreeStructure/helperFunctions.ts +5 -1
- package/src/TreeStructure/types.ts +6 -7
- package/src/locale/messages-en.ts +7 -0
- package/src/locale/messages-nb.ts +6 -0
- package/src/locale/messages-nn.ts +6 -0
- package/src/locale/messages-se.ts +7 -0
- package/src/locale/messages-sma.ts +7 -0
|
@@ -6,4 +6,5 @@
|
|
|
6
6
|
*
|
|
7
7
|
*/
|
|
8
8
|
import { KeyboardEvent } from 'react';
|
|
9
|
-
|
|
9
|
+
import { FolderType } from './types';
|
|
10
|
+
export declare const arrowNavigation: (e: KeyboardEvent<HTMLElement>, id: string, visibleFolders: FolderType[], setFocusedFolderId: (id: FolderType) => void, onOpen: (id: string) => void, onClose: (id: string) => void) => void;
|
|
@@ -13,8 +13,8 @@ exports.arrowNavigation = void 0;
|
|
|
13
13
|
*
|
|
14
14
|
*/
|
|
15
15
|
var navigateVertical = function navigateVertical(visibleFolders, folderId, setFocusedFolderId, direction) {
|
|
16
|
-
var currentIndex = visibleFolders.findIndex(function (
|
|
17
|
-
return id === folderId;
|
|
16
|
+
var currentIndex = visibleFolders.findIndex(function (folder) {
|
|
17
|
+
return folder.id === folderId;
|
|
18
18
|
});
|
|
19
19
|
var target = visibleFolders[currentIndex + direction];
|
|
20
20
|
|
|
@@ -23,7 +23,7 @@ var navigateVertical = function navigateVertical(visibleFolders, folderId, setFo
|
|
|
23
23
|
}
|
|
24
24
|
};
|
|
25
25
|
|
|
26
|
-
var arrowKeys = ['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight'];
|
|
26
|
+
var arrowKeys = ['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight', 'Enter'];
|
|
27
27
|
|
|
28
28
|
var arrowNavigation = function arrowNavigation(e, id, visibleFolders, setFocusedFolderId, onOpen, onClose) {
|
|
29
29
|
if (!arrowKeys.includes(e.key)) {
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
import { FolderType } from './types';
|
|
1
|
+
import { FolderType, TreeStructureType } from './types';
|
|
2
2
|
export declare const flattenFolders: (folders: FolderType[], openFolders?: string[] | undefined) => FolderType[];
|
|
3
|
+
export declare const treestructureId: (type: TreeStructureType, modifier: string) => string;
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.flattenFolders = void 0;
|
|
6
|
+
exports.treestructureId = exports.flattenFolders = void 0;
|
|
7
7
|
|
|
8
8
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
|
9
9
|
|
|
@@ -35,4 +35,10 @@ var flattenFolders = function flattenFolders(folders, openFolders) {
|
|
|
35
35
|
}, []);
|
|
36
36
|
};
|
|
37
37
|
|
|
38
|
-
exports.flattenFolders = flattenFolders;
|
|
38
|
+
exports.flattenFolders = flattenFolders;
|
|
39
|
+
|
|
40
|
+
var treestructureId = function treestructureId(type, modifier) {
|
|
41
|
+
return "".concat(type, "-treestructure-").concat(modifier);
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
exports.treestructureId = treestructureId;
|
|
@@ -12,26 +12,25 @@ export interface FolderType extends IFolder {
|
|
|
12
12
|
icon?: ReactNode;
|
|
13
13
|
isNavigation?: boolean;
|
|
14
14
|
}
|
|
15
|
-
export declare type TreeStructureType = '
|
|
15
|
+
export declare type TreeStructureType = 'navigation' | 'picker';
|
|
16
16
|
export interface TreeStructureMenuProps extends Omit<MenuItemProps, 'onClick'> {
|
|
17
17
|
onClick: (e: MouseEvent<HTMLDivElement> | undefined, folder: FolderType) => void;
|
|
18
18
|
}
|
|
19
19
|
export interface CommonTreeStructureProps {
|
|
20
20
|
loading?: boolean;
|
|
21
21
|
onSelectFolder?: (id: string) => void;
|
|
22
|
-
openOnFolderClick?: boolean;
|
|
23
22
|
targetResource?: IResource;
|
|
24
|
-
framed?: boolean;
|
|
25
23
|
type: TreeStructureType;
|
|
26
24
|
}
|
|
27
25
|
export interface CommonFolderItemsProps extends CommonTreeStructureProps {
|
|
28
|
-
|
|
26
|
+
focusedFolder?: FolderType;
|
|
29
27
|
level: number;
|
|
30
28
|
maxLevel: number;
|
|
31
29
|
selectedFolder?: FolderType;
|
|
32
30
|
onCloseFolder: (id: string) => void;
|
|
33
31
|
onOpenFolder: (id: string) => void;
|
|
34
|
-
|
|
35
|
-
setSelectedFolder: (
|
|
36
|
-
visibleFolders:
|
|
32
|
+
setFocusedFolder: (folder: FolderType, focus?: boolean) => void;
|
|
33
|
+
setSelectedFolder: (folder: FolderType) => void;
|
|
34
|
+
visibleFolders: FolderType[];
|
|
35
|
+
closeTree: () => void;
|
|
37
36
|
}
|
|
@@ -67,9 +67,13 @@ declare const messages: {
|
|
|
67
67
|
edit: string;
|
|
68
68
|
missingName: string;
|
|
69
69
|
folderDeleted: string;
|
|
70
|
+
folderCreated: string;
|
|
70
71
|
};
|
|
72
|
+
tagList: string;
|
|
71
73
|
tags: string;
|
|
72
74
|
tags_plural: string;
|
|
75
|
+
moreTags: string;
|
|
76
|
+
moreTags_plural: string;
|
|
73
77
|
confirmDeleteFolder: string;
|
|
74
78
|
confirmDeleteTag: string;
|
|
75
79
|
myFolders: string;
|
|
@@ -176,6 +180,7 @@ declare const messages: {
|
|
|
176
180
|
newFolder: {
|
|
177
181
|
placeholder: string;
|
|
178
182
|
defaultName: string;
|
|
183
|
+
folderName: string;
|
|
179
184
|
};
|
|
180
185
|
};
|
|
181
186
|
tagSelector: {
|
|
@@ -990,6 +995,7 @@ declare const messages: {
|
|
|
990
995
|
};
|
|
991
996
|
cancel: string;
|
|
992
997
|
close: string;
|
|
998
|
+
loading: string;
|
|
993
999
|
title: string;
|
|
994
1000
|
save: string;
|
|
995
1001
|
image: {
|
|
@@ -39,7 +39,8 @@ var messages = _objectSpread(_objectSpread({
|
|
|
39
39
|
maxFoldersAlreadyAdded: 'Maximum subfolders reached',
|
|
40
40
|
newFolder: {
|
|
41
41
|
placeholder: 'Add foldername',
|
|
42
|
-
defaultName: 'New folder'
|
|
42
|
+
defaultName: 'New folder',
|
|
43
|
+
folderName: 'Folder name'
|
|
43
44
|
}
|
|
44
45
|
},
|
|
45
46
|
tagSelector: {
|
|
@@ -820,6 +821,7 @@ var messages = _objectSpread(_objectSpread({
|
|
|
820
821
|
},
|
|
821
822
|
cancel: 'Cancel',
|
|
822
823
|
close: 'Close',
|
|
824
|
+
loading: 'Loading',
|
|
823
825
|
title: 'Title',
|
|
824
826
|
save: 'Save',
|
|
825
827
|
image: {
|
|
@@ -956,10 +958,14 @@ var messages = _objectSpread(_objectSpread({
|
|
|
956
958
|
"delete": 'Delete folder',
|
|
957
959
|
edit: 'Edit folder',
|
|
958
960
|
missingName: 'Folder name required',
|
|
959
|
-
folderDeleted: '"{{folderName}}" deleted'
|
|
961
|
+
folderDeleted: '"{{folderName}}" deleted',
|
|
962
|
+
folderCreated: '"{{folderName}} created'
|
|
960
963
|
},
|
|
964
|
+
tagList: 'Tags',
|
|
961
965
|
tags: '{{count}} tag',
|
|
962
966
|
tags_plural: '{{count}} tags',
|
|
967
|
+
moreTags: 'Show one more tag',
|
|
968
|
+
moreTags_plural: 'Show {{count}} more tags',
|
|
963
969
|
confirmDeleteFolder: 'Are you sure you want to delete this folder? Subfolders of this folder will also be deleted. This action cannot be undone.',
|
|
964
970
|
confirmDeleteTag: 'Are you sure you want to delete this tag? This process cannot be undone.',
|
|
965
971
|
myFolders: 'My folders',
|
|
@@ -67,9 +67,13 @@ declare const messages: {
|
|
|
67
67
|
edit: string;
|
|
68
68
|
missingName: string;
|
|
69
69
|
folderDeleted: string;
|
|
70
|
+
folderCreated: string;
|
|
70
71
|
};
|
|
72
|
+
tagList: string;
|
|
71
73
|
tags: string;
|
|
72
74
|
tags_plural: string;
|
|
75
|
+
moreTags: string;
|
|
76
|
+
moreTags_plural: string;
|
|
73
77
|
confirmDeleteFolder: string;
|
|
74
78
|
confirmDeleteTag: string;
|
|
75
79
|
myFolders: string;
|
|
@@ -176,6 +180,7 @@ declare const messages: {
|
|
|
176
180
|
newFolder: {
|
|
177
181
|
placeholder: string;
|
|
178
182
|
defaultName: string;
|
|
183
|
+
folderName: string;
|
|
179
184
|
};
|
|
180
185
|
};
|
|
181
186
|
tagSelector: {
|
|
@@ -989,6 +994,7 @@ declare const messages: {
|
|
|
989
994
|
close: string;
|
|
990
995
|
};
|
|
991
996
|
close: string;
|
|
997
|
+
loading: string;
|
|
992
998
|
title: string;
|
|
993
999
|
cancel: string;
|
|
994
1000
|
save: string;
|
|
@@ -39,7 +39,8 @@ var messages = _objectSpread(_objectSpread({
|
|
|
39
39
|
maxFoldersAlreadyAdded: 'Maks nivå av undermapper nådd',
|
|
40
40
|
newFolder: {
|
|
41
41
|
placeholder: 'Skriv navn på mappe',
|
|
42
|
-
defaultName: 'Ny mappe'
|
|
42
|
+
defaultName: 'Ny mappe',
|
|
43
|
+
folderName: 'Mappenavn'
|
|
43
44
|
}
|
|
44
45
|
},
|
|
45
46
|
tagSelector: {
|
|
@@ -819,6 +820,7 @@ var messages = _objectSpread(_objectSpread({
|
|
|
819
820
|
close: 'Lukk meny'
|
|
820
821
|
},
|
|
821
822
|
close: 'Lukk',
|
|
823
|
+
loading: 'Laster',
|
|
822
824
|
title: 'Tittel',
|
|
823
825
|
cancel: 'Avbryt',
|
|
824
826
|
save: 'Lagre',
|
|
@@ -956,10 +958,14 @@ var messages = _objectSpread(_objectSpread({
|
|
|
956
958
|
"delete": 'Slett mappe',
|
|
957
959
|
edit: 'Rediger mappe',
|
|
958
960
|
missingName: 'Skriv navn på mappe',
|
|
959
|
-
folderDeleted: '"{{folderName}}" er slettet'
|
|
961
|
+
folderDeleted: '"{{folderName}}" er slettet',
|
|
962
|
+
folderCreated: '"{{folderName}}" er opprettet'
|
|
960
963
|
},
|
|
964
|
+
tagList: 'Emneknagger',
|
|
961
965
|
tags: '{{count}} emneknagg',
|
|
962
966
|
tags_plural: '{{count}} emneknagger',
|
|
967
|
+
moreTags: 'Vis en emneknagg til',
|
|
968
|
+
moreTags_plural: 'Vis {{count}} emneknagger til',
|
|
963
969
|
confirmDeleteFolder: 'Er du sikker på at du vil slette mappen? Dersom mappen har undermapper vil disse også slettes. Handlingen kan ikke endres.',
|
|
964
970
|
confirmDeleteTag: 'Er du sikker på at du vil slette emneknagg? Denne handlingen kan ikke endres.',
|
|
965
971
|
myFolders: 'Mine mapper',
|
|
@@ -67,9 +67,13 @@ declare const messages: {
|
|
|
67
67
|
edit: string;
|
|
68
68
|
missingName: string;
|
|
69
69
|
folderDeleted: string;
|
|
70
|
+
folderCreated: string;
|
|
70
71
|
};
|
|
72
|
+
tagList: string;
|
|
71
73
|
tags: string;
|
|
72
74
|
tags_plural: string;
|
|
75
|
+
moreTags: string;
|
|
76
|
+
moreTags_plural: string;
|
|
73
77
|
confirmDeleteFolder: string;
|
|
74
78
|
confirmDeleteTag: string;
|
|
75
79
|
myFolders: string;
|
|
@@ -176,6 +180,7 @@ declare const messages: {
|
|
|
176
180
|
newFolder: {
|
|
177
181
|
placeholder: string;
|
|
178
182
|
defaultName: string;
|
|
183
|
+
folderName: string;
|
|
179
184
|
};
|
|
180
185
|
};
|
|
181
186
|
tagSelector: {
|
|
@@ -990,6 +995,7 @@ declare const messages: {
|
|
|
990
995
|
};
|
|
991
996
|
cancel: string;
|
|
992
997
|
close: string;
|
|
998
|
+
loading: string;
|
|
993
999
|
title: string;
|
|
994
1000
|
save: string;
|
|
995
1001
|
image: {
|
|
@@ -39,7 +39,8 @@ var messages = _objectSpread(_objectSpread({
|
|
|
39
39
|
maxFoldersAlreadyAdded: 'Maks nivå av undermapper nådd',
|
|
40
40
|
newFolder: {
|
|
41
41
|
placeholder: 'Skriv namn på mappe',
|
|
42
|
-
defaultName: 'Ny mappe'
|
|
42
|
+
defaultName: 'Ny mappe',
|
|
43
|
+
folderName: 'Mappenavn'
|
|
43
44
|
}
|
|
44
45
|
},
|
|
45
46
|
tagSelector: {
|
|
@@ -820,6 +821,7 @@ var messages = _objectSpread(_objectSpread({
|
|
|
820
821
|
},
|
|
821
822
|
cancel: 'Avbryt',
|
|
822
823
|
close: 'Lukk',
|
|
824
|
+
loading: 'Laster',
|
|
823
825
|
title: 'Tittel',
|
|
824
826
|
save: 'Lagre',
|
|
825
827
|
image: {
|
|
@@ -956,10 +958,14 @@ var messages = _objectSpread(_objectSpread({
|
|
|
956
958
|
"delete": 'Slett mappe',
|
|
957
959
|
edit: 'Rediger mappe',
|
|
958
960
|
missingName: 'Skriv namn på mappe',
|
|
959
|
-
folderDeleted: '"{{folderName}}" er sletta'
|
|
961
|
+
folderDeleted: '"{{folderName}}" er sletta',
|
|
962
|
+
folderCreated: '"{{folderName}}" er oppretta'
|
|
960
963
|
},
|
|
964
|
+
tagList: 'Emneknaggar',
|
|
961
965
|
tags: '{{count}} emneknagg',
|
|
962
966
|
tags_plural: '{{count}} emneknaggar',
|
|
967
|
+
moreTags: 'Vis ein emneknagg til',
|
|
968
|
+
moreTags_plural: 'Vis {{count}} emneknaggar til',
|
|
963
969
|
confirmDeleteFolder: 'Er du sikker på at du vil slette mappa? Dersom mappa har undermapper vil desse også slettast. Denne handlinga kan ikkje endrast.',
|
|
964
970
|
confirmDeleteTag: 'Er du sikker på at du vil slette tag? Denne handlinga kan ikkje endrast.',
|
|
965
971
|
myFolders: 'Mine mapper',
|
|
@@ -67,9 +67,13 @@ declare const messages: {
|
|
|
67
67
|
edit: string;
|
|
68
68
|
missingName: string;
|
|
69
69
|
folderDeleted: string;
|
|
70
|
+
folderCreated: string;
|
|
70
71
|
};
|
|
72
|
+
tagList: string;
|
|
71
73
|
tags: string;
|
|
72
74
|
tags_plural: string;
|
|
75
|
+
moreTags: string;
|
|
76
|
+
moreTags_plural: string;
|
|
73
77
|
confirmDeleteFolder: string;
|
|
74
78
|
confirmDeleteTag: string;
|
|
75
79
|
myFolders: string;
|
|
@@ -176,6 +180,7 @@ declare const messages: {
|
|
|
176
180
|
newFolder: {
|
|
177
181
|
placeholder: string;
|
|
178
182
|
defaultName: string;
|
|
183
|
+
folderName: string;
|
|
179
184
|
};
|
|
180
185
|
};
|
|
181
186
|
tagSelector: {
|
|
@@ -989,6 +994,7 @@ declare const messages: {
|
|
|
989
994
|
close: string;
|
|
990
995
|
};
|
|
991
996
|
close: string;
|
|
997
|
+
loading: string;
|
|
992
998
|
title: string;
|
|
993
999
|
cancel: string;
|
|
994
1000
|
save: string;
|
|
@@ -39,7 +39,8 @@ var messages = _objectSpread(_objectSpread({
|
|
|
39
39
|
maxFoldersAlreadyAdded: 'Vuollemáhpaid badjerádji lea olahuvvon',
|
|
40
40
|
newFolder: {
|
|
41
41
|
placeholder: 'Čále nama máhppii',
|
|
42
|
-
defaultName: 'Ođđa máhppa'
|
|
42
|
+
defaultName: 'Ođđa máhppa',
|
|
43
|
+
folderName: 'Mappenavn'
|
|
43
44
|
}
|
|
44
45
|
},
|
|
45
46
|
tagSelector: {
|
|
@@ -819,6 +820,7 @@ var messages = _objectSpread(_objectSpread({
|
|
|
819
820
|
close: 'Govčča fálu'
|
|
820
821
|
},
|
|
821
822
|
close: 'Govčča',
|
|
823
|
+
loading: 'Laster',
|
|
822
824
|
title: 'Tihttel',
|
|
823
825
|
cancel: 'Botkke',
|
|
824
826
|
save: 'Vurke',
|
|
@@ -956,10 +958,14 @@ var messages = _objectSpread(_objectSpread({
|
|
|
956
958
|
"delete": 'Sihko',
|
|
957
959
|
edit: 'Redigere',
|
|
958
960
|
missingName: 'Čále nama máhppii',
|
|
959
|
-
folderDeleted: '"{{folderName}}" lea sihkkojuvvon'
|
|
961
|
+
folderDeleted: '"{{folderName}}" lea sihkkojuvvon',
|
|
962
|
+
folderCreated: '"{{folderName}}" er oppretta'
|
|
960
963
|
},
|
|
964
|
+
tagList: 'Emneknagger',
|
|
961
965
|
tags: '{{count}} fáddágilkor',
|
|
962
966
|
tags_plural: '{{count}} fáddágilkorat',
|
|
967
|
+
moreTags: 'Vis ein emneknagg til',
|
|
968
|
+
moreTags_plural: 'Vis {{count}} emneknaggar til',
|
|
963
969
|
confirmDeleteFolder: 'Leat go áibbas sihkar ahte dáhtut sihkkut máhpa? Dan ii sáhte gáhtat.',
|
|
964
970
|
confirmDeleteTag: 'Leat go áibbas sihkar ahte dáhtut sihkkut fáddágilkora? Dan ii sáhte gáhtat.',
|
|
965
971
|
myFolders: 'Mu máhpat',
|
|
@@ -67,9 +67,13 @@ declare const messages: {
|
|
|
67
67
|
edit: string;
|
|
68
68
|
missingName: string;
|
|
69
69
|
folderDeleted: string;
|
|
70
|
+
folderCreated: string;
|
|
70
71
|
};
|
|
72
|
+
tagList: string;
|
|
71
73
|
tags: string;
|
|
72
74
|
tags_plural: string;
|
|
75
|
+
moreTags: string;
|
|
76
|
+
moreTags_plural: string;
|
|
73
77
|
confirmDeleteFolder: string;
|
|
74
78
|
confirmDeleteTag: string;
|
|
75
79
|
myFolders: string;
|
|
@@ -176,6 +180,7 @@ declare const messages: {
|
|
|
176
180
|
newFolder: {
|
|
177
181
|
placeholder: string;
|
|
178
182
|
defaultName: string;
|
|
183
|
+
folderName: string;
|
|
179
184
|
};
|
|
180
185
|
};
|
|
181
186
|
tagSelector: {
|
|
@@ -989,6 +994,7 @@ declare const messages: {
|
|
|
989
994
|
close: string;
|
|
990
995
|
};
|
|
991
996
|
close: string;
|
|
997
|
+
loading: string;
|
|
992
998
|
title: string;
|
|
993
999
|
cancel: string;
|
|
994
1000
|
save: string;
|
|
@@ -39,7 +39,8 @@ var messages = _objectSpread(_objectSpread({
|
|
|
39
39
|
maxFoldersAlreadyAdded: 'Maks nivå av undermapper nådd',
|
|
40
40
|
newFolder: {
|
|
41
41
|
placeholder: 'Skriv navn på mappe',
|
|
42
|
-
defaultName: 'Ny mappe'
|
|
42
|
+
defaultName: 'Ny mappe',
|
|
43
|
+
folderName: 'Mappenavn'
|
|
43
44
|
}
|
|
44
45
|
},
|
|
45
46
|
tagSelector: {
|
|
@@ -819,6 +820,7 @@ var messages = _objectSpread(_objectSpread({
|
|
|
819
820
|
close: 'Lukk meny'
|
|
820
821
|
},
|
|
821
822
|
close: 'Lukk',
|
|
823
|
+
loading: 'Laster',
|
|
822
824
|
title: 'Tittel',
|
|
823
825
|
cancel: 'Avbryt',
|
|
824
826
|
save: 'Lagre',
|
|
@@ -956,10 +958,14 @@ var messages = _objectSpread(_objectSpread({
|
|
|
956
958
|
"delete": 'Slett mappe',
|
|
957
959
|
edit: 'Rediger mappe',
|
|
958
960
|
missingName: 'Skriv navn på mappe',
|
|
959
|
-
folderDeleted: '"{{folderName}}" er slettet'
|
|
961
|
+
folderDeleted: '"{{folderName}}" er slettet',
|
|
962
|
+
folderCreated: '"{{folderName}}" er oppretta'
|
|
960
963
|
},
|
|
964
|
+
tagList: 'Emneknagg',
|
|
961
965
|
tags: '{{count}} emneknagg',
|
|
962
966
|
tags_plural: '{{count}} emneknagger',
|
|
967
|
+
moreTags: 'Vis ein emneknagg til',
|
|
968
|
+
moreTags_plural: 'Vis {{count}} emneknaggar til',
|
|
963
969
|
confirmDeleteFolder: 'Er du sikker på at du vil slette mappa? Dersom mappa har undermappar vil disse også slettes. Denne handlinga kan ikkje endrast.',
|
|
964
970
|
confirmDeleteTag: 'Er du sikker på at du vil slette emneknagg? Denne handlingen kan ikke endres.',
|
|
965
971
|
myFolders: 'Mine mapper',
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ndla/ui",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "27.0.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.5.
|
|
36
|
-
"@ndla/carousel": "^1.2.
|
|
35
|
+
"@ndla/button": "^3.5.1",
|
|
36
|
+
"@ndla/carousel": "^1.2.23",
|
|
37
37
|
"@ndla/core": "^2.3.5",
|
|
38
|
-
"@ndla/forms": "^3.
|
|
38
|
+
"@ndla/forms": "^3.3.1",
|
|
39
39
|
"@ndla/hooks": "^1.1.6",
|
|
40
|
-
"@ndla/icons": "^1.
|
|
41
|
-
"@ndla/licenses": "^5.0.
|
|
42
|
-
"@ndla/modal": "^1.3.
|
|
43
|
-
"@ndla/notion": "^3.1.
|
|
44
|
-
"@ndla/safelink": "^2.2.
|
|
40
|
+
"@ndla/icons": "^1.13.0",
|
|
41
|
+
"@ndla/licenses": "^5.0.17",
|
|
42
|
+
"@ndla/modal": "^1.3.7",
|
|
43
|
+
"@ndla/notion": "^3.1.41",
|
|
44
|
+
"@ndla/safelink": "^2.2.15",
|
|
45
45
|
"@ndla/switch": "^0.1.13",
|
|
46
|
-
"@ndla/tabs": "^1.1.
|
|
46
|
+
"@ndla/tabs": "^1.1.22",
|
|
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": "62733541c9b13e7233c0752fd302f35cdd50b453"
|
|
89
89
|
}
|
|
@@ -8,7 +8,6 @@
|
|
|
8
8
|
|
|
9
9
|
import React, { ReactNode, useRef } from 'react';
|
|
10
10
|
import { useComponentSize, useIsomorphicLayoutEffect } from '@ndla/hooks';
|
|
11
|
-
import { uuid } from '@ndla/util';
|
|
12
11
|
import styled from '@emotion/styled';
|
|
13
12
|
import { useTranslation } from 'react-i18next';
|
|
14
13
|
import BreadcrumbItem, { IndexedBreadcrumbItem, SimpleBreadcrumbItem } from './BreadcrumbItem';
|
|
@@ -83,7 +82,7 @@ const Breadcrumb = ({
|
|
|
83
82
|
? breadcrumbItemRefs.delete(item.to)
|
|
84
83
|
: breadcrumbItemRefs.set(item.to, element)
|
|
85
84
|
}
|
|
86
|
-
key={
|
|
85
|
+
key={typeof item.to === 'string' ? item.to : item.to.pathname}
|
|
87
86
|
totalCount={items.length}
|
|
88
87
|
item={{ ...item, index }}
|
|
89
88
|
/>
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
9
|
import styled from '@emotion/styled';
|
|
10
|
-
import React from 'react';
|
|
10
|
+
import React, { useRef } from 'react';
|
|
11
11
|
import { FolderOutlined } from '@ndla/icons/contentType';
|
|
12
12
|
import { FileDocumentOutline } from '@ndla/icons/common';
|
|
13
13
|
import { fonts, spacing, colors, mq, breakpoints } from '@ndla/core';
|
|
@@ -40,6 +40,12 @@ const FolderIconWrapper = styled.div<FolderIconWrapperProps>`
|
|
|
40
40
|
`};
|
|
41
41
|
`;
|
|
42
42
|
|
|
43
|
+
const FolderTitleLink = styled(SafeLink)`
|
|
44
|
+
box-shadow: none;
|
|
45
|
+
color: ${colors.text.primary};
|
|
46
|
+
flex: 1;
|
|
47
|
+
`;
|
|
48
|
+
|
|
43
49
|
const FolderTitle = styled.h2`
|
|
44
50
|
${fonts.sizes(18)};
|
|
45
51
|
font-weight: ${fonts.weight.normal};
|
|
@@ -55,11 +61,12 @@ const FolderTitle = styled.h2`
|
|
|
55
61
|
-webkit-box-orient: vertical;
|
|
56
62
|
`;
|
|
57
63
|
|
|
58
|
-
const FolderWrapper = styled
|
|
64
|
+
const FolderWrapper = styled.div`
|
|
59
65
|
display: flex;
|
|
60
66
|
align-items: center;
|
|
61
67
|
padding: ${spacing.small};
|
|
62
68
|
border: 1px solid ${colors.brand.neutral7};
|
|
69
|
+
cursor: pointer;
|
|
63
70
|
border-radius: 2px;
|
|
64
71
|
box-shadow: none;
|
|
65
72
|
text-decoration: none;
|
|
@@ -78,6 +85,7 @@ const FolderWrapper = styled(SafeLink)`
|
|
|
78
85
|
`;
|
|
79
86
|
|
|
80
87
|
interface Props {
|
|
88
|
+
id: string;
|
|
81
89
|
title: string;
|
|
82
90
|
subFolders?: number;
|
|
83
91
|
subResources?: number;
|
|
@@ -131,14 +139,22 @@ const IconCount = ({ type, count, layoutType }: IconCountProps) => {
|
|
|
131
139
|
|
|
132
140
|
type LayoutType = 'list' | 'block';
|
|
133
141
|
|
|
134
|
-
const Folder = ({ link, title, subFolders, subResources, type = 'list', menuItems }: Props) => {
|
|
142
|
+
const Folder = ({ id, link, title, subFolders, subResources, type = 'list', menuItems }: Props) => {
|
|
135
143
|
const { t } = useTranslation();
|
|
144
|
+
const linkRef = useRef<HTMLAnchorElement | null>(null);
|
|
145
|
+
|
|
146
|
+
const onClick = () => {
|
|
147
|
+
linkRef?.current?.click();
|
|
148
|
+
};
|
|
149
|
+
|
|
136
150
|
return (
|
|
137
|
-
<FolderWrapper
|
|
151
|
+
<FolderWrapper onClick={onClick} id={id}>
|
|
138
152
|
<FolderIconWrapper type={type}>
|
|
139
153
|
<FolderOutlined aria-label={t('myNdla.folder.folder')} />
|
|
140
154
|
</FolderIconWrapper>
|
|
141
|
-
<
|
|
155
|
+
<FolderTitleLink to={link} ref={linkRef}>
|
|
156
|
+
<FolderTitle>{title}</FolderTitle>
|
|
157
|
+
</FolderTitleLink>
|
|
142
158
|
<IconCount layoutType={type} type={'folder'} count={subFolders} />
|
|
143
159
|
<IconCount layoutType={type} type={'resource'} count={subResources} />
|
|
144
160
|
{menuItems && menuItems.length > 0 && <MenuButton alignRight size="small" menuItems={menuItems} />}
|