@ndla/ui 22.0.0 → 22.0.1
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/ActionBreadcrumb.js +4 -4
- package/es/Search/ContentTypeResult.js +1 -2
- package/es/SearchTypeResult/SearchItem.js +8 -8
- package/es/TreeStructure/FolderItem.js +64 -44
- package/es/TreeStructure/FolderItems.js +4 -4
- package/es/TreeStructure/TreeStructure.js +15 -8
- package/es/locale/messages-en.js +8 -0
- package/es/locale/messages-nb.js +8 -0
- package/es/locale/messages-nn.js +8 -0
- package/es/locale/messages-se.js +8 -0
- package/es/locale/messages-sma.js +8 -0
- package/lib/Breadcrumb/ActionBreadcrumb.js +4 -4
- package/lib/Search/ContentTypeResult.js +1 -2
- package/lib/SearchTypeResult/SearchItem.js +8 -8
- package/lib/TreeStructure/FolderItem.d.ts +1 -1
- package/lib/TreeStructure/FolderItem.js +65 -44
- package/lib/TreeStructure/FolderItems.js +4 -4
- package/lib/TreeStructure/TreeStructure.d.ts +1 -1
- package/lib/TreeStructure/TreeStructure.js +15 -8
- package/lib/TreeStructure/types.d.ts +2 -1
- package/lib/locale/messages-en.d.ts +8 -0
- package/lib/locale/messages-en.js +8 -0
- package/lib/locale/messages-nb.d.ts +8 -0
- package/lib/locale/messages-nb.js +8 -0
- package/lib/locale/messages-nn.d.ts +8 -0
- package/lib/locale/messages-nn.js +8 -0
- package/lib/locale/messages-se.d.ts +8 -0
- package/lib/locale/messages-se.js +8 -0
- package/lib/locale/messages-sma.d.ts +8 -0
- package/lib/locale/messages-sma.js +8 -0
- package/package.json +2 -2
- package/src/.DS_Store +0 -0
- package/src/Breadcrumb/ActionBreadcrumb.tsx +1 -1
- package/src/Search/ContentTypeResult.tsx +0 -1
- package/src/SearchTypeResult/SearchItem.tsx +0 -1
- package/src/TreeStructure/FolderItem.tsx +56 -37
- package/src/TreeStructure/FolderItems.tsx +3 -2
- package/src/TreeStructure/TreeStructure.tsx +9 -4
- package/src/TreeStructure/types.ts +2 -1
- package/src/locale/messages-en.ts +8 -0
- package/src/locale/messages-nb.ts +8 -0
- package/src/locale/messages-nn.ts +8 -0
- package/src/locale/messages-se.ts +8 -0
- package/src/locale/messages-sma.ts +8 -0
|
@@ -959,6 +959,8 @@ var messages = _objectSpread(_objectSpread({
|
|
|
959
959
|
edit: 'Edit',
|
|
960
960
|
missingName: 'Folder name required'
|
|
961
961
|
},
|
|
962
|
+
tags: '{{count}} tag',
|
|
963
|
+
tags_plural: '{{count}} tags',
|
|
962
964
|
confirmDeleteFolder: 'Are you sure you want to delete this folder? This process cannot be undone.',
|
|
963
965
|
confirmDeleteTag: 'Are you sure you want to delete this tag? This process cannot be undone.',
|
|
964
966
|
myFolders: 'My folders',
|
|
@@ -969,6 +971,7 @@ var messages = _objectSpread(_objectSpread({
|
|
|
969
971
|
favourites: 'Favourites',
|
|
970
972
|
addToFavourites: 'Add to my favourites',
|
|
971
973
|
alreadyFavourited: 'Already in my favourites',
|
|
974
|
+
alreadyInFolder: 'Already in folder',
|
|
972
975
|
help: 'Help',
|
|
973
976
|
more: 'More options',
|
|
974
977
|
listView: 'List view',
|
|
@@ -977,6 +980,9 @@ var messages = _objectSpread(_objectSpread({
|
|
|
977
980
|
myPage: {
|
|
978
981
|
myPage: 'My page',
|
|
979
982
|
logout: 'Log out of My NDLA',
|
|
983
|
+
loginTerms: 'Log in with Feide to receive access. By logging on your accept your terms of service',
|
|
984
|
+
loginResourcePitch: 'Do you want to favorite this page?',
|
|
985
|
+
loginWelcome: 'Welcome to My NDLA! This page allows you to organize your articles in your <i>own</i> way!',
|
|
980
986
|
deleteAccount: 'Delete My NDLA',
|
|
981
987
|
welcome: 'Welcome to my NDLA! You can now save your favourite resources from NDLA and organise them in folders with tags',
|
|
982
988
|
read: {
|
|
@@ -1013,6 +1019,8 @@ var messages = _objectSpread(_objectSpread({
|
|
|
1013
1019
|
resource: {
|
|
1014
1020
|
add: 'Add folder/tag',
|
|
1015
1021
|
remove: 'Remove',
|
|
1022
|
+
removeTitle: 'Remove resource',
|
|
1023
|
+
confirmRemove: 'Are you sure you want to remove the resource from this folder?',
|
|
1016
1024
|
copyLink: 'Copy link to this page',
|
|
1017
1025
|
addToMyNdla: 'Add to My NDLA',
|
|
1018
1026
|
addedToMyNdla: 'Added to My NDLA'
|
|
@@ -64,6 +64,8 @@ declare const messages: {
|
|
|
64
64
|
edit: string;
|
|
65
65
|
missingName: string;
|
|
66
66
|
};
|
|
67
|
+
tags: string;
|
|
68
|
+
tags_plural: string;
|
|
67
69
|
confirmDeleteFolder: string;
|
|
68
70
|
confirmDeleteTag: string;
|
|
69
71
|
myFolders: string;
|
|
@@ -74,6 +76,7 @@ declare const messages: {
|
|
|
74
76
|
favourites: string;
|
|
75
77
|
addToFavourites: string;
|
|
76
78
|
alreadyFavourited: string;
|
|
79
|
+
alreadyInFolder: string;
|
|
77
80
|
help: string;
|
|
78
81
|
more: string;
|
|
79
82
|
listView: string;
|
|
@@ -83,6 +86,9 @@ declare const messages: {
|
|
|
83
86
|
myPage: string;
|
|
84
87
|
deleteAccount: string;
|
|
85
88
|
logout: string;
|
|
89
|
+
loginTerms: string;
|
|
90
|
+
loginResourcePitch: string;
|
|
91
|
+
loginWelcome: string;
|
|
86
92
|
welcome: string;
|
|
87
93
|
read: {
|
|
88
94
|
our: string;
|
|
@@ -118,6 +124,8 @@ declare const messages: {
|
|
|
118
124
|
resource: {
|
|
119
125
|
add: string;
|
|
120
126
|
remove: string;
|
|
127
|
+
removeTitle: string;
|
|
128
|
+
confirmRemove: string;
|
|
121
129
|
copyLink: string;
|
|
122
130
|
addToMyNdla: string;
|
|
123
131
|
addedToMyNdla: string;
|
|
@@ -959,6 +959,8 @@ var messages = _objectSpread(_objectSpread({
|
|
|
959
959
|
edit: 'Rediger',
|
|
960
960
|
missingName: 'Mappenavn er påkrevd'
|
|
961
961
|
},
|
|
962
|
+
tags: '{{count}} tag',
|
|
963
|
+
tags_plural: '{{count}} tags',
|
|
962
964
|
confirmDeleteFolder: 'Er du sikker på at du vil slette mappen? Denne handlingen kan ikke angres.',
|
|
963
965
|
confirmDeleteTag: 'Er du sikker på at du vil slette tag? Denne handlingen kan ikke angres.',
|
|
964
966
|
myFolders: 'Mine mapper',
|
|
@@ -969,6 +971,7 @@ var messages = _objectSpread(_objectSpread({
|
|
|
969
971
|
favourites: 'Favoritter',
|
|
970
972
|
addToFavourites: 'Legg til i mine favoritter',
|
|
971
973
|
alreadyFavourited: 'Allerede lagt til i mine favoritter',
|
|
974
|
+
alreadyInFolder: 'Finnes allerede i mappen',
|
|
972
975
|
help: 'Hjelp',
|
|
973
976
|
more: 'Flere valg',
|
|
974
977
|
listView: 'Listevisning',
|
|
@@ -978,6 +981,9 @@ var messages = _objectSpread(_objectSpread({
|
|
|
978
981
|
myPage: 'Min side',
|
|
979
982
|
deleteAccount: 'Slett Min NDLA',
|
|
980
983
|
logout: 'Logg ut av Min NDLA',
|
|
984
|
+
loginTerms: 'Logg på med Feide for å få tilgang. Ved å logge på godkjenner du våre vilkår for bruk',
|
|
985
|
+
loginResourcePitch: 'Ønsker du å favorittmerke denne siden?',
|
|
986
|
+
loginWelcome: 'Velkommen til NDLA! Her kan du organisere fagstoffet på <i>din</i> måte!',
|
|
981
987
|
welcome: 'Velkommen til Min NDLA! Nå kan du lagre dine favorittressurser fra NDLA og organisere dem slik du ønsker i mapper og med tags.',
|
|
982
988
|
read: {
|
|
983
989
|
our: 'Les våre',
|
|
@@ -1013,6 +1019,8 @@ var messages = _objectSpread(_objectSpread({
|
|
|
1013
1019
|
resource: {
|
|
1014
1020
|
add: 'Legg til mappe/tag',
|
|
1015
1021
|
remove: 'Fjern',
|
|
1022
|
+
removeTitle: 'Fjern ressurs',
|
|
1023
|
+
confirmRemove: 'Er du sikker på at du ønsker å fjerne ressursen fra denne mappen?',
|
|
1016
1024
|
copyLink: 'Kopier lenke til siden',
|
|
1017
1025
|
addToMyNdla: 'Legg i Min NDLA',
|
|
1018
1026
|
addedToMyNdla: 'Lagt i Min NDLA'
|
|
@@ -64,6 +64,8 @@ declare const messages: {
|
|
|
64
64
|
edit: string;
|
|
65
65
|
missingName: string;
|
|
66
66
|
};
|
|
67
|
+
tags: string;
|
|
68
|
+
tags_plural: string;
|
|
67
69
|
confirmDeleteFolder: string;
|
|
68
70
|
confirmDeleteTag: string;
|
|
69
71
|
myFolders: string;
|
|
@@ -74,6 +76,7 @@ declare const messages: {
|
|
|
74
76
|
favourites: string;
|
|
75
77
|
addToFavourites: string;
|
|
76
78
|
alreadyFavourited: string;
|
|
79
|
+
alreadyInFolder: string;
|
|
77
80
|
help: string;
|
|
78
81
|
more: string;
|
|
79
82
|
listView: string;
|
|
@@ -83,6 +86,9 @@ declare const messages: {
|
|
|
83
86
|
myPage: string;
|
|
84
87
|
deleteAccount: string;
|
|
85
88
|
logout: string;
|
|
89
|
+
loginTerms: string;
|
|
90
|
+
loginResourcePitch: string;
|
|
91
|
+
loginWelcome: string;
|
|
86
92
|
welcome: string;
|
|
87
93
|
read: {
|
|
88
94
|
our: string;
|
|
@@ -118,6 +124,8 @@ declare const messages: {
|
|
|
118
124
|
resource: {
|
|
119
125
|
add: string;
|
|
120
126
|
remove: string;
|
|
127
|
+
removeTitle: string;
|
|
128
|
+
confirmRemove: string;
|
|
121
129
|
copyLink: string;
|
|
122
130
|
addToMyNdla: string;
|
|
123
131
|
addedToMyNdla: string;
|
|
@@ -959,6 +959,8 @@ var messages = _objectSpread(_objectSpread({
|
|
|
959
959
|
edit: 'Rediger',
|
|
960
960
|
missingName: 'Mappenavn er påkrevd'
|
|
961
961
|
},
|
|
962
|
+
tags: '{{count}} tag',
|
|
963
|
+
tags_plural: '{{count}} tags',
|
|
962
964
|
confirmDeleteFolder: 'Er du sikker på at du vil slette mappa? Denne handlinga kan ikkje angres.',
|
|
963
965
|
confirmDeleteTag: 'Er du sikker på at du vil slette tag? Denne handlinga kan ikkje angres.',
|
|
964
966
|
myFolders: 'Mine mapper',
|
|
@@ -969,6 +971,7 @@ var messages = _objectSpread(_objectSpread({
|
|
|
969
971
|
favourites: 'Favorittar',
|
|
970
972
|
addToFavourites: 'Legg til i mine favorittar',
|
|
971
973
|
alreadyFavourited: 'Allereie lagt til i mine favorittar',
|
|
974
|
+
alreadyInFolder: 'Finnes allereie i mappa',
|
|
972
975
|
help: 'Hjelp',
|
|
973
976
|
more: 'Fleire val',
|
|
974
977
|
listView: 'Listevisning',
|
|
@@ -978,6 +981,9 @@ var messages = _objectSpread(_objectSpread({
|
|
|
978
981
|
myPage: 'Min side',
|
|
979
982
|
deleteAccount: 'Slett Min NDLA',
|
|
980
983
|
logout: 'Logg ut av Min NDLA',
|
|
984
|
+
loginTerms: 'Logg på med Feide for å få tilgang. Ved å logge på godkjennar du våre vilkår for bruk',
|
|
985
|
+
loginResourcePitch: 'Ønsker du å favorittmerke denne sida?',
|
|
986
|
+
loginWelcome: 'Velkommen til NDLA! Her kan du organisere fagstoffet på <i>din</i> måte!',
|
|
981
987
|
welcome: 'Velkommen til Min NDLA! Nå kan du lagre dine favorittressurser fra NDLA og organisere dem slik du ønsker i mapper og med tags.',
|
|
982
988
|
read: {
|
|
983
989
|
our: 'Les våre',
|
|
@@ -1013,6 +1019,8 @@ var messages = _objectSpread(_objectSpread({
|
|
|
1013
1019
|
resource: {
|
|
1014
1020
|
add: 'Legg til mappe/tag',
|
|
1015
1021
|
remove: 'Fjern',
|
|
1022
|
+
removeTitle: 'Fjern ressurs',
|
|
1023
|
+
confirmRemove: 'Er du sikker på at du ønsker å fjerne ressursen frå denne mappen?',
|
|
1016
1024
|
copyLink: 'Kopier lenke til sida',
|
|
1017
1025
|
addToMyNdla: 'Legg i Min NDLA',
|
|
1018
1026
|
addedToMyNdla: 'Lagt i Min NDLA'
|
|
@@ -64,6 +64,8 @@ declare const messages: {
|
|
|
64
64
|
edit: string;
|
|
65
65
|
missingName: string;
|
|
66
66
|
};
|
|
67
|
+
tags: string;
|
|
68
|
+
tags_plural: string;
|
|
67
69
|
confirmDeleteFolder: string;
|
|
68
70
|
confirmDeleteTag: string;
|
|
69
71
|
myFolders: string;
|
|
@@ -74,6 +76,7 @@ declare const messages: {
|
|
|
74
76
|
favourites: string;
|
|
75
77
|
addToFavourites: string;
|
|
76
78
|
alreadyFavourited: string;
|
|
79
|
+
alreadyInFolder: string;
|
|
77
80
|
help: string;
|
|
78
81
|
more: string;
|
|
79
82
|
listView: string;
|
|
@@ -83,6 +86,9 @@ declare const messages: {
|
|
|
83
86
|
myPage: string;
|
|
84
87
|
deleteAccount: string;
|
|
85
88
|
logout: string;
|
|
89
|
+
loginTerms: string;
|
|
90
|
+
loginResourcePitch: string;
|
|
91
|
+
loginWelcome: string;
|
|
86
92
|
welcome: string;
|
|
87
93
|
read: {
|
|
88
94
|
our: string;
|
|
@@ -118,6 +124,8 @@ declare const messages: {
|
|
|
118
124
|
resource: {
|
|
119
125
|
add: string;
|
|
120
126
|
remove: string;
|
|
127
|
+
removeTitle: string;
|
|
128
|
+
confirmRemove: string;
|
|
121
129
|
copyLink: string;
|
|
122
130
|
addToMyNdla: string;
|
|
123
131
|
addedToMyNdla: string;
|
|
@@ -959,6 +959,8 @@ var messages = _objectSpread(_objectSpread({
|
|
|
959
959
|
edit: 'Rediger',
|
|
960
960
|
missingName: 'Mappenavn er påkrevd'
|
|
961
961
|
},
|
|
962
|
+
tags: '{{count}} tag',
|
|
963
|
+
tags_plural: '{{count}} tags',
|
|
962
964
|
confirmDeleteFolder: 'Er du sikker på at du vil slette mappen? Denne handlingen kan ikke angres.',
|
|
963
965
|
confirmDeleteTag: 'Er du sikker på at du vil slette tag? Denne handlingen kan ikke angres.',
|
|
964
966
|
myFolders: 'Mine mapper',
|
|
@@ -969,6 +971,7 @@ var messages = _objectSpread(_objectSpread({
|
|
|
969
971
|
favourites: 'Favoritter',
|
|
970
972
|
addToFavourites: 'Legg til i mine favoritter',
|
|
971
973
|
alreadyFavourited: 'Allerede lagt til i mine favoritter',
|
|
974
|
+
alreadyInFolder: 'Finnes allerede i mappen',
|
|
972
975
|
help: 'Hjelp',
|
|
973
976
|
more: 'Flere valg',
|
|
974
977
|
listView: 'Listevisning',
|
|
@@ -978,6 +981,9 @@ var messages = _objectSpread(_objectSpread({
|
|
|
978
981
|
myPage: 'Min side',
|
|
979
982
|
deleteAccount: 'Slett Min NDLA',
|
|
980
983
|
logout: 'Logg ut av Min NDLA',
|
|
984
|
+
loginTerms: 'Logg på med Feide for å få tilgang. Ved å logge på godkjennar du våre vilkår for bruk',
|
|
985
|
+
loginResourcePitch: 'Ønsker du å favorittmerke denne sida?',
|
|
986
|
+
loginWelcome: 'Velkommen til NDLA! Her kan du organisere fagstoffet på <i>din</i> måte!',
|
|
981
987
|
welcome: 'Velkommen til Min NDLA! Nå kan du lagre dine favorittressurser fra NDLA og organisere dem slik du ønsker i mapper og med tags.',
|
|
982
988
|
read: {
|
|
983
989
|
our: 'Les våre',
|
|
@@ -1013,6 +1019,8 @@ var messages = _objectSpread(_objectSpread({
|
|
|
1013
1019
|
resource: {
|
|
1014
1020
|
add: 'Legg til mappe/tag',
|
|
1015
1021
|
remove: 'Fjern',
|
|
1022
|
+
removeTitle: 'Fjern ressurs',
|
|
1023
|
+
confirmRemove: 'Er du sikker på at du ønsker å fjerne ressursen frå denne mappen?',
|
|
1016
1024
|
copyLink: 'Kopier lenke til siden',
|
|
1017
1025
|
addToMyNdla: 'Legg i Min NDLA',
|
|
1018
1026
|
addedToMyNdla: 'Lagt i Min NDLA'
|
|
@@ -64,6 +64,8 @@ declare const messages: {
|
|
|
64
64
|
edit: string;
|
|
65
65
|
missingName: string;
|
|
66
66
|
};
|
|
67
|
+
tags: string;
|
|
68
|
+
tags_plural: string;
|
|
67
69
|
confirmDeleteFolder: string;
|
|
68
70
|
confirmDeleteTag: string;
|
|
69
71
|
myFolders: string;
|
|
@@ -74,6 +76,7 @@ declare const messages: {
|
|
|
74
76
|
favourites: string;
|
|
75
77
|
addToFavourites: string;
|
|
76
78
|
alreadyFavourited: string;
|
|
79
|
+
alreadyInFolder: string;
|
|
77
80
|
help: string;
|
|
78
81
|
more: string;
|
|
79
82
|
listView: string;
|
|
@@ -83,6 +86,9 @@ declare const messages: {
|
|
|
83
86
|
myPage: string;
|
|
84
87
|
deleteAccount: string;
|
|
85
88
|
logout: string;
|
|
89
|
+
loginTerms: string;
|
|
90
|
+
loginResourcePitch: string;
|
|
91
|
+
loginWelcome: string;
|
|
86
92
|
welcome: string;
|
|
87
93
|
read: {
|
|
88
94
|
our: string;
|
|
@@ -118,6 +124,8 @@ declare const messages: {
|
|
|
118
124
|
resource: {
|
|
119
125
|
add: string;
|
|
120
126
|
remove: string;
|
|
127
|
+
removeTitle: string;
|
|
128
|
+
confirmRemove: string;
|
|
121
129
|
copyLink: string;
|
|
122
130
|
addToMyNdla: string;
|
|
123
131
|
addedToMyNdla: string;
|
|
@@ -959,6 +959,8 @@ var messages = _objectSpread(_objectSpread({
|
|
|
959
959
|
edit: 'Rediger',
|
|
960
960
|
missingName: 'Mappenavn er påkrevd'
|
|
961
961
|
},
|
|
962
|
+
tags: '{{count}} tag',
|
|
963
|
+
tags_plural: '{{count}} tags',
|
|
962
964
|
confirmDeleteFolder: 'Er du sikker på at du vil slette mappen? Denne handlingen kan ikke angres.',
|
|
963
965
|
confirmDeleteTag: 'Er du sikker på at du vil slette tag? Denne handlingen kan ikke angres.',
|
|
964
966
|
myFolders: 'Mine mapper',
|
|
@@ -969,6 +971,7 @@ var messages = _objectSpread(_objectSpread({
|
|
|
969
971
|
favourites: 'Favoritter',
|
|
970
972
|
addToFavourites: 'Legg til i mine favoritter',
|
|
971
973
|
alreadyFavourited: 'Allerede lagt til i mine favoritter',
|
|
974
|
+
alreadyInFolder: 'Finnes allerede i mappen',
|
|
972
975
|
help: 'Hjelp',
|
|
973
976
|
more: 'Flere valg',
|
|
974
977
|
listView: 'Listevisning',
|
|
@@ -978,6 +981,9 @@ var messages = _objectSpread(_objectSpread({
|
|
|
978
981
|
myPage: 'Min side',
|
|
979
982
|
deleteAccount: 'Slett Min NDLA',
|
|
980
983
|
logout: 'Logg ut av Min NDLA',
|
|
984
|
+
loginTerms: 'Logg på med Feide for å få tilgang. Ved å logge på godkjennar du våre vilkår for bruk',
|
|
985
|
+
loginResourcePitch: 'Ønsker du å favorittmerke denne sida?',
|
|
986
|
+
loginWelcome: 'Velkommen til NDLA! Her kan du organisere fagstoffet på <i>din</i> måte!',
|
|
981
987
|
welcome: 'Velkommen til Min NDLA! Nå kan du lagre dine favorittressurser fra NDLA og organisere dem slik du ønsker i mapper og med tags.',
|
|
982
988
|
read: {
|
|
983
989
|
our: 'Les våre',
|
|
@@ -1013,6 +1019,8 @@ var messages = _objectSpread(_objectSpread({
|
|
|
1013
1019
|
resource: {
|
|
1014
1020
|
add: 'Legg til mappe/tag',
|
|
1015
1021
|
remove: 'Fjern',
|
|
1022
|
+
removeTitle: 'Fjern ressurs',
|
|
1023
|
+
confirmRemove: 'Er du sikker på at du ønsker å fjerne ressursen frå denne mappen?',
|
|
1016
1024
|
copyLink: 'Kopier lenke til siden',
|
|
1017
1025
|
addToMyNdla: 'Legg i Min NDLA',
|
|
1018
1026
|
addedToMyNdla: 'Lagt i Min NDLA'
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ndla/ui",
|
|
3
|
-
"version": "22.0.
|
|
3
|
+
"version": "22.0.1",
|
|
4
4
|
"description": "UI component library for NDLA.",
|
|
5
5
|
"license": "GPL-3.0",
|
|
6
6
|
"main": "lib/index.js",
|
|
@@ -83,5 +83,5 @@
|
|
|
83
83
|
"publishConfig": {
|
|
84
84
|
"access": "public"
|
|
85
85
|
},
|
|
86
|
-
"gitHead": "
|
|
86
|
+
"gitHead": "b4b0a48ca5d00d92fadafa85326a8ee86b91f152"
|
|
87
87
|
}
|
package/src/.DS_Store
ADDED
|
Binary file
|
|
@@ -47,7 +47,7 @@ const ActionBreadcrumb = ({ items, actionItems }: Props) => {
|
|
|
47
47
|
if (totalCount === 1) {
|
|
48
48
|
return <StyledSpan title={item.name}>{item.name}</StyledSpan>;
|
|
49
49
|
}
|
|
50
|
-
if (item.index === totalCount - 1) {
|
|
50
|
+
if (item.index === totalCount - 1 && actionItems.length > 0) {
|
|
51
51
|
return (
|
|
52
52
|
<MenuButton menuItems={actionItems} size="small">
|
|
53
53
|
<StyledSpan title={item.name}>{item.name}</StyledSpan>
|
|
@@ -154,7 +154,6 @@ const ItemText = styled.div<ItemTypeProps>`
|
|
|
154
154
|
|
|
155
155
|
const ContextWrapper = styled.div`
|
|
156
156
|
background: white;
|
|
157
|
-
z-index: 1;
|
|
158
157
|
padding: 0 ${spacing.normal} ${spacing.small};
|
|
159
158
|
transition: all ${animations.durations.fast} ease-in-out;
|
|
160
159
|
${ItemWrapper}:hover & {
|
|
@@ -7,8 +7,10 @@
|
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
9
|
import React, { KeyboardEvent, MouseEvent, useEffect, useRef } from 'react';
|
|
10
|
+
import { useTranslation } from 'react-i18next';
|
|
10
11
|
import styled from '@emotion/styled';
|
|
11
12
|
import { ArrowDropDown } from '@ndla/icons/common';
|
|
13
|
+
import { Done } from '@ndla/icons/editor';
|
|
12
14
|
import { MenuButton } from '@ndla/button';
|
|
13
15
|
import { FolderOutlined } from '@ndla/icons/contentType';
|
|
14
16
|
import { colors, spacing, misc, animations } from '@ndla/core';
|
|
@@ -40,15 +42,11 @@ const FolderItemWrapper = styled.div`
|
|
|
40
42
|
align-items: center;
|
|
41
43
|
`;
|
|
42
44
|
|
|
43
|
-
const WrapperForFolderChild = styled.div
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
&:focus,
|
|
49
|
-
&:focus-within {
|
|
50
|
-
opacity: 1;
|
|
51
|
-
}
|
|
45
|
+
const WrapperForFolderChild = styled.div`
|
|
46
|
+
display: flex;
|
|
47
|
+
flex-direction: row;
|
|
48
|
+
align-items: center;
|
|
49
|
+
gap: ${spacing.xsmall};
|
|
52
50
|
`;
|
|
53
51
|
|
|
54
52
|
const shouldForwardProp = (name: string) => !['selected', 'noArrow'].includes(name);
|
|
@@ -59,9 +57,24 @@ interface FolderNameProps {
|
|
|
59
57
|
}
|
|
60
58
|
|
|
61
59
|
const FolderName = styled('button', { shouldForwardProp })<FolderNameProps>`
|
|
62
|
-
|
|
60
|
+
cursor: pointer;
|
|
61
|
+
padding: ${spacing.xsmall};
|
|
62
|
+
margin: 0;
|
|
63
|
+
margin-left: ${({ noArrow }) => (noArrow ? `29px` : `0px`)};
|
|
64
|
+
flex-grow: 1;
|
|
65
|
+
display: grid;
|
|
66
|
+
grid-template-columns: auto 1fr auto;
|
|
67
|
+
align-items: center;
|
|
68
|
+
gap: ${spacing.xxsmall};
|
|
69
|
+
border: 0;
|
|
70
|
+
border-radius: ${misc.borderRadius};
|
|
71
|
+
box-shadow: none;
|
|
63
72
|
background: ${({ selected }) => (selected ? colors.brand.lighter : 'transparent')};
|
|
64
73
|
color: ${colors.text.primary};
|
|
74
|
+
transition: ${animations.durations.superFast};
|
|
75
|
+
text-align: left;
|
|
76
|
+
line-height: 1;
|
|
77
|
+
word-break: break-word;
|
|
65
78
|
&:hover,
|
|
66
79
|
&:focus {
|
|
67
80
|
background: ${({ selected }) => (selected ? colors.brand.light : colors.brand.lightest)};
|
|
@@ -70,19 +83,10 @@ const FolderName = styled('button', { shouldForwardProp })<FolderNameProps>`
|
|
|
70
83
|
opacity: 1;
|
|
71
84
|
}
|
|
72
85
|
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
gap: ${spacing.xxsmall};
|
|
78
|
-
align-items: center;
|
|
79
|
-
cursor: pointer;
|
|
80
|
-
padding: ${spacing.xsmall};
|
|
81
|
-
margin: 0;
|
|
82
|
-
margin-left: ${({ noArrow }) => (noArrow ? `29px` : `0px`)};
|
|
83
|
-
flex-grow: 1;
|
|
84
|
-
box-shadow: none;
|
|
85
|
-
text-align: left;
|
|
86
|
+
`;
|
|
87
|
+
|
|
88
|
+
const StyledDone = styled(Done)`
|
|
89
|
+
color: ${colors.support.green};
|
|
86
90
|
`;
|
|
87
91
|
|
|
88
92
|
const FolderNameLink = FolderName.withComponent(SafeLink);
|
|
@@ -110,24 +114,30 @@ const FolderItem = ({
|
|
|
110
114
|
openOnFolderClick,
|
|
111
115
|
setFocusedId,
|
|
112
116
|
setSelectedFolder,
|
|
117
|
+
targetResource,
|
|
113
118
|
visibleFolders,
|
|
114
119
|
}: Props) => {
|
|
120
|
+
const { t } = useTranslation();
|
|
115
121
|
const { id, icon, name } = folder;
|
|
116
122
|
const ref = useRef<HTMLButtonElement & HTMLAnchorElement>(null);
|
|
117
123
|
const selected = selectedFolder && selectedFolder.id === id;
|
|
118
124
|
const focused = focusedFolderId === id;
|
|
119
125
|
|
|
120
126
|
const handleClickFolder = () => {
|
|
121
|
-
setSelectedFolder(folder);
|
|
122
|
-
setFocusedId(id);
|
|
123
|
-
onSelectFolder?.(id);
|
|
124
127
|
if (openOnFolderClick) {
|
|
125
|
-
if (
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
128
|
+
if (selected) {
|
|
129
|
+
if (isOpen) {
|
|
130
|
+
onCloseFolder(id);
|
|
131
|
+
} else {
|
|
132
|
+
onOpenFolder(id);
|
|
133
|
+
}
|
|
129
134
|
}
|
|
130
135
|
}
|
|
136
|
+
if (!selected) {
|
|
137
|
+
setSelectedFolder(folder);
|
|
138
|
+
setFocusedId(id);
|
|
139
|
+
}
|
|
140
|
+
onSelectFolder?.(id);
|
|
131
141
|
};
|
|
132
142
|
|
|
133
143
|
useEffect(() => {
|
|
@@ -144,7 +154,10 @@ const FolderItem = ({
|
|
|
144
154
|
};
|
|
145
155
|
});
|
|
146
156
|
|
|
147
|
-
const linkPath = `/minndla${level >
|
|
157
|
+
const linkPath = `/minndla${level > 0 ? '/folders' : ''}/${id}`;
|
|
158
|
+
|
|
159
|
+
const containsResource =
|
|
160
|
+
targetResource && folder.resources.some((resource) => resource.resourceId === targetResource.resourceId);
|
|
148
161
|
|
|
149
162
|
return (
|
|
150
163
|
<FolderItemWrapper>
|
|
@@ -170,12 +183,18 @@ const FolderItem = ({
|
|
|
170
183
|
onClick={handleClickFolder}>
|
|
171
184
|
{icon || <FolderOutlined />}
|
|
172
185
|
{name}
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
186
|
+
<WrapperForFolderChild>
|
|
187
|
+
{containsResource && <StyledDone title={t('myNdla.alreadyInFolder')} />}
|
|
188
|
+
{actions && (
|
|
189
|
+
<MenuButton
|
|
190
|
+
onClick={(e) => e.stopPropagation()}
|
|
191
|
+
size="xsmall"
|
|
192
|
+
menuItems={actions}
|
|
193
|
+
tabIndex={selected || id === focusedFolderId ? 0 : -1}
|
|
194
|
+
/>
|
|
195
|
+
)}
|
|
177
196
|
</WrapperForFolderChild>
|
|
178
|
-
|
|
197
|
+
</FolderName>
|
|
179
198
|
</>
|
|
180
199
|
) : (
|
|
181
200
|
<FolderNameLink
|
|
@@ -185,7 +204,7 @@ const FolderItem = ({
|
|
|
185
204
|
}
|
|
186
205
|
noArrow={hideArrow}
|
|
187
206
|
to={loading ? '' : linkPath}
|
|
188
|
-
tabIndex={selected || focused || level ===
|
|
207
|
+
tabIndex={selected || focused || level === 0 ? 0 : -1}
|
|
189
208
|
selected={selected}
|
|
190
209
|
onFocus={() => setFocusedId(id)}
|
|
191
210
|
onClick={handleClickFolder}>
|
|
@@ -52,10 +52,11 @@ const FolderItems = ({
|
|
|
52
52
|
openFolders,
|
|
53
53
|
...rest
|
|
54
54
|
}: FolderItemsProps) => (
|
|
55
|
-
<StyledUL role="group" firstLevel={level ===
|
|
55
|
+
<StyledUL role="group" firstLevel={level === 0}>
|
|
56
56
|
{folders.map((folder) => {
|
|
57
57
|
const { subfolders, id } = folder;
|
|
58
58
|
const isOpen = openFolders?.includes(id);
|
|
59
|
+
|
|
59
60
|
return (
|
|
60
61
|
<StyledLI key={id} role="treeitem">
|
|
61
62
|
<div>
|
|
@@ -65,7 +66,7 @@ const FolderItems = ({
|
|
|
65
66
|
isOpen={isOpen}
|
|
66
67
|
level={level}
|
|
67
68
|
loading={loading}
|
|
68
|
-
noPaddingWhenArrowIsHidden={editable && level ===
|
|
69
|
+
noPaddingWhenArrowIsHidden={editable && level === 0 && subfolders?.length === 0}
|
|
69
70
|
{...rest}
|
|
70
71
|
/>
|
|
71
72
|
</div>
|
|
@@ -52,6 +52,7 @@ const TreeStructure = ({
|
|
|
52
52
|
onNewFolder,
|
|
53
53
|
onSelectFolder,
|
|
54
54
|
openOnFolderClick,
|
|
55
|
+
targetResource,
|
|
55
56
|
}: TreeStructureProps) => {
|
|
56
57
|
const { t } = useTranslation();
|
|
57
58
|
|
|
@@ -68,10 +69,13 @@ const TreeStructure = ({
|
|
|
68
69
|
|
|
69
70
|
useEffect(() => {
|
|
70
71
|
if (defaultOpenFolders) {
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
72
|
+
if (!defaultOpenFolders.every((element) => openFolders.includes(element))) {
|
|
73
|
+
setOpenFolders((prev) => {
|
|
74
|
+
return uniq(defaultOpenFolders.concat(prev));
|
|
75
|
+
});
|
|
76
|
+
}
|
|
74
77
|
}
|
|
78
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
75
79
|
}, [defaultOpenFolders]);
|
|
76
80
|
|
|
77
81
|
useEffect(() => {
|
|
@@ -136,7 +140,7 @@ const TreeStructure = ({
|
|
|
136
140
|
focusedFolderId={focusedId}
|
|
137
141
|
menuItems={menuItems}
|
|
138
142
|
folders={folders}
|
|
139
|
-
level={
|
|
143
|
+
level={0}
|
|
140
144
|
loading={loading}
|
|
141
145
|
selectedFolder={selectedFolder}
|
|
142
146
|
maximumLevelsOfFoldersAllowed={maximumLevelsOfFoldersAllowed}
|
|
@@ -150,6 +154,7 @@ const TreeStructure = ({
|
|
|
150
154
|
openOnFolderClick={openOnFolderClick}
|
|
151
155
|
setFocusedId={setFocusedId}
|
|
152
156
|
setSelectedFolder={setSelectedFolder}
|
|
157
|
+
targetResource={targetResource}
|
|
153
158
|
visibleFolders={visibleFolderIds}
|
|
154
159
|
/>
|
|
155
160
|
</TreeStructureStyledWrapper>
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
9
|
import { MouseEvent, ReactNode } from 'react';
|
|
10
|
-
import { IFolder } from '@ndla/types-learningpath-api';
|
|
10
|
+
import { IFolder, IResource } from '@ndla/types-learningpath-api';
|
|
11
11
|
import { MenuItemProps } from '@ndla/button/src';
|
|
12
12
|
|
|
13
13
|
export interface FolderType extends IFolder {
|
|
@@ -23,6 +23,7 @@ export interface CommonTreeStructureProps {
|
|
|
23
23
|
onSelectFolder?: (id: string) => void;
|
|
24
24
|
openOnFolderClick?: boolean;
|
|
25
25
|
menuItems?: TreeStructureMenuProps[];
|
|
26
|
+
targetResource?: IResource;
|
|
26
27
|
}
|
|
27
28
|
|
|
28
29
|
export interface CommonFolderItemsProps extends CommonTreeStructureProps {
|
|
@@ -997,6 +997,8 @@ const messages = {
|
|
|
997
997
|
edit: 'Edit',
|
|
998
998
|
missingName: 'Folder name required',
|
|
999
999
|
},
|
|
1000
|
+
tags: '{{count}} tag',
|
|
1001
|
+
tags_plural: '{{count}} tags',
|
|
1000
1002
|
confirmDeleteFolder: 'Are you sure you want to delete this folder? This process cannot be undone.',
|
|
1001
1003
|
confirmDeleteTag: 'Are you sure you want to delete this tag? This process cannot be undone.',
|
|
1002
1004
|
myFolders: 'My folders',
|
|
@@ -1007,6 +1009,7 @@ const messages = {
|
|
|
1007
1009
|
favourites: 'Favourites',
|
|
1008
1010
|
addToFavourites: 'Add to my favourites',
|
|
1009
1011
|
alreadyFavourited: 'Already in my favourites',
|
|
1012
|
+
alreadyInFolder: 'Already in folder',
|
|
1010
1013
|
help: 'Help',
|
|
1011
1014
|
more: 'More options',
|
|
1012
1015
|
listView: 'List view',
|
|
@@ -1015,6 +1018,9 @@ const messages = {
|
|
|
1015
1018
|
myPage: {
|
|
1016
1019
|
myPage: 'My page',
|
|
1017
1020
|
logout: 'Log out of My NDLA',
|
|
1021
|
+
loginTerms: 'Log in with Feide to receive access. By logging on your accept your terms of service',
|
|
1022
|
+
loginResourcePitch: 'Do you want to favorite this page?',
|
|
1023
|
+
loginWelcome: 'Welcome to My NDLA! This page allows you to organize your articles in your <i>own</i> way!',
|
|
1018
1024
|
deleteAccount: 'Delete My NDLA',
|
|
1019
1025
|
welcome:
|
|
1020
1026
|
'Welcome to my NDLA! You can now save your favourite resources from NDLA and organise them in folders with tags',
|
|
@@ -1047,6 +1053,8 @@ const messages = {
|
|
|
1047
1053
|
resource: {
|
|
1048
1054
|
add: 'Add folder/tag',
|
|
1049
1055
|
remove: 'Remove',
|
|
1056
|
+
removeTitle: 'Remove resource',
|
|
1057
|
+
confirmRemove: 'Are you sure you want to remove the resource from this folder?',
|
|
1050
1058
|
copyLink: 'Copy link to this page',
|
|
1051
1059
|
addToMyNdla: 'Add to My NDLA',
|
|
1052
1060
|
addedToMyNdla: 'Added to My NDLA',
|