@ndla/ui 13.2.2 → 15.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.
Files changed (236) hide show
  1. package/es/Article/Article.js +22 -3
  2. package/es/Article/ArticleFavoritesButton.js +38 -0
  3. package/es/Article/index.js +2 -1
  4. package/es/Breadcrumb/ActionBreadcrumb.js +57 -0
  5. package/es/Breadcrumb/index.js +1 -0
  6. package/es/Footer/FooterAuth.js +15 -22
  7. package/es/InfoBlock/InfoBlock.js +55 -0
  8. package/es/InfoBlock/index.js +1 -0
  9. package/es/LearningPaths/LearningPathMenu.js +3 -4
  10. package/es/Masthead/MastheadAuthModal.js +2 -2
  11. package/es/MyNdla/Navigation/VerticalNavigation.js +51 -0
  12. package/es/MyNdla/Navigation/index.js +2 -0
  13. package/es/MyNdla/Resource/Folder.js +86 -0
  14. package/es/MyNdla/Resource/FolderInput.js +96 -0
  15. package/{lib/MyNdla/ResourceDash/ResourcesView.d.ts → es/MyNdla/Resource/index.js} +3 -3
  16. package/es/MyNdla/index.js +4 -4
  17. package/es/Resource/BlockResource.js +73 -0
  18. package/es/Resource/ListResource.js +66 -0
  19. package/es/Resource/index.js +10 -0
  20. package/es/Resource/resourceComponents.js +97 -0
  21. package/es/ResourceGroup/ResourceGroup.js +7 -5
  22. package/es/ResourceGroup/ResourceItem.js +28 -30
  23. package/es/ResourceGroup/ResourceList.js +18 -6
  24. package/es/Search/ActiveFilters.js +6 -7
  25. package/es/Search/ContentTypeResult.js +6 -8
  26. package/es/SearchTypeResult/ActiveFilters.js +6 -10
  27. package/es/SnackBar/SnackBar.js +117 -0
  28. package/es/SnackBar/index.js +9 -0
  29. package/es/TagSelector/SuggestionInput.js +240 -0
  30. package/es/TagSelector/Suggestions.js +93 -0
  31. package/es/TagSelector/TagSelector.js +137 -0
  32. package/es/TagSelector/index.js +9 -0
  33. package/es/TopicIntroductionList/TopicIntroduction.js +2 -4
  34. package/es/TopicIntroductionList/TopicShortcutItem.js +1 -3
  35. package/es/TreeStructure/FolderItem.js +130 -0
  36. package/es/TreeStructure/FolderItems.js +123 -0
  37. package/es/TreeStructure/FolderNameInput.js +112 -0
  38. package/es/TreeStructure/TreeStructure.js +254 -0
  39. package/es/TreeStructure/TreeStructure.types.js +0 -0
  40. package/es/TreeStructure/TreeStructureWrapper.js +13 -0
  41. package/es/TreeStructure/helperFunctions.js +92 -0
  42. package/es/TreeStructure/index.js +9 -0
  43. package/es/TreeStructure/keyboardNavigation/keyboardNavigation.js +182 -0
  44. package/es/TreeStructure/keyboardNavigation/keyboardNavigation.types.js +0 -0
  45. package/es/User/AuthModal.js +15 -24
  46. package/es/User/UserInfo.js +70 -0
  47. package/es/User/apiTypes.js +0 -0
  48. package/es/User/index.js +2 -0
  49. package/es/User/parseUserObject.js +102 -0
  50. package/es/all.css +90 -0
  51. package/es/index.js +9 -3
  52. package/es/locale/messages-en.js +71 -4
  53. package/es/locale/messages-nb.js +70 -3
  54. package/es/locale/messages-nn.js +70 -3
  55. package/es/locale/messages-se.js +70 -3
  56. package/es/locale/messages-sma.js +70 -3
  57. package/lib/Article/Article.d.ts +3 -1
  58. package/lib/Article/Article.js +43 -23
  59. package/lib/Article/ArticleFavoritesButton.d.ts +15 -0
  60. package/lib/Article/ArticleFavoritesButton.js +56 -0
  61. package/lib/Article/index.d.ts +2 -1
  62. package/lib/Article/index.js +8 -0
  63. package/lib/Breadcrumb/ActionBreadcrumb.d.ts +16 -0
  64. package/lib/Breadcrumb/ActionBreadcrumb.js +72 -0
  65. package/lib/Breadcrumb/index.d.ts +1 -0
  66. package/lib/Breadcrumb/index.js +8 -0
  67. package/lib/Footer/FooterAuth.d.ts +1 -1
  68. package/lib/Footer/FooterAuth.js +17 -17
  69. package/lib/InfoBlock/InfoBlock.d.ts +8 -0
  70. package/lib/InfoBlock/InfoBlock.js +58 -0
  71. package/lib/InfoBlock/index.d.ts +1 -0
  72. package/lib/InfoBlock/index.js +13 -0
  73. package/lib/LearningPaths/LearningPathMenu.js +3 -4
  74. package/lib/Masthead/MastheadAuthModal.d.ts +3 -3
  75. package/lib/Masthead/MastheadAuthModal.js +3 -3
  76. package/lib/MyNdla/Navigation/VerticalNavigation.d.ts +10 -0
  77. package/lib/MyNdla/Navigation/VerticalNavigation.js +61 -0
  78. package/lib/MyNdla/Navigation/index.d.ts +2 -0
  79. package/lib/MyNdla/Navigation/index.js +15 -0
  80. package/lib/MyNdla/Resource/Folder.d.ts +20 -0
  81. package/lib/MyNdla/Resource/Folder.js +100 -0
  82. package/lib/MyNdla/Resource/FolderInput.d.ts +15 -0
  83. package/lib/MyNdla/Resource/FolderInput.js +116 -0
  84. package/lib/MyNdla/Resource/index.d.ts +10 -0
  85. package/lib/MyNdla/Resource/index.js +23 -0
  86. package/lib/MyNdla/index.d.ts +4 -4
  87. package/lib/MyNdla/index.js +13 -7
  88. package/lib/Resource/BlockResource.d.ts +20 -0
  89. package/lib/Resource/BlockResource.js +84 -0
  90. package/lib/Resource/ListResource.d.ts +20 -0
  91. package/lib/Resource/ListResource.js +78 -0
  92. package/lib/Resource/index.d.ts +11 -0
  93. package/lib/Resource/index.js +29 -0
  94. package/lib/Resource/resourceComponents.d.ts +24 -0
  95. package/lib/Resource/resourceComponents.js +106 -0
  96. package/lib/ResourceGroup/ResourceGroup.d.ts +2 -1
  97. package/lib/ResourceGroup/ResourceGroup.js +7 -5
  98. package/lib/ResourceGroup/ResourceItem.d.ts +5 -1
  99. package/lib/ResourceGroup/ResourceItem.js +29 -30
  100. package/lib/ResourceGroup/ResourceList.d.ts +3 -1
  101. package/lib/ResourceGroup/ResourceList.js +18 -6
  102. package/lib/Search/ActiveFilters.js +6 -7
  103. package/lib/Search/ContentTypeResult.js +6 -8
  104. package/lib/SearchTypeResult/ActiveFilters.js +6 -10
  105. package/lib/SnackBar/SnackBar.d.ts +23 -0
  106. package/lib/SnackBar/SnackBar.js +127 -0
  107. package/lib/SnackBar/index.d.ts +10 -0
  108. package/lib/SnackBar/index.js +15 -0
  109. package/lib/TagSelector/SuggestionInput.d.ts +19 -0
  110. package/lib/TagSelector/SuggestionInput.js +255 -0
  111. package/lib/TagSelector/Suggestions.d.ts +12 -0
  112. package/lib/TagSelector/Suggestions.js +96 -0
  113. package/lib/TagSelector/TagSelector.d.ts +16 -0
  114. package/lib/TagSelector/TagSelector.js +150 -0
  115. package/lib/TagSelector/index.d.ts +10 -0
  116. package/lib/TagSelector/index.js +19 -0
  117. package/lib/TopicIntroductionList/TopicIntroduction.js +2 -4
  118. package/lib/TopicIntroductionList/TopicShortcutItem.js +1 -3
  119. package/lib/TreeStructure/FolderItem.d.ts +27 -0
  120. package/lib/TreeStructure/FolderItem.js +140 -0
  121. package/lib/TreeStructure/FolderItems.d.ts +11 -0
  122. package/lib/TreeStructure/FolderItems.js +130 -0
  123. package/lib/TreeStructure/FolderNameInput.d.ts +15 -0
  124. package/lib/TreeStructure/FolderNameInput.js +125 -0
  125. package/lib/TreeStructure/TreeStructure.d.ts +12 -0
  126. package/lib/TreeStructure/TreeStructure.js +273 -0
  127. package/lib/TreeStructure/TreeStructure.types.d.ts +63 -0
  128. package/lib/TreeStructure/TreeStructure.types.js +1 -0
  129. package/lib/TreeStructure/TreeStructureWrapper.d.ts +12 -0
  130. package/lib/TreeStructure/TreeStructureWrapper.js +24 -0
  131. package/lib/TreeStructure/helperFunctions.d.ts +5 -0
  132. package/lib/TreeStructure/helperFunctions.js +103 -0
  133. package/lib/TreeStructure/index.d.ts +10 -0
  134. package/lib/TreeStructure/index.js +15 -0
  135. package/lib/TreeStructure/keyboardNavigation/keyboardNavigation.d.ts +11 -0
  136. package/lib/TreeStructure/keyboardNavigation/keyboardNavigation.js +186 -0
  137. package/lib/TreeStructure/keyboardNavigation/keyboardNavigation.types.d.ts +26 -0
  138. package/lib/TreeStructure/keyboardNavigation/keyboardNavigation.types.js +1 -0
  139. package/lib/User/AuthModal.d.ts +3 -3
  140. package/lib/User/AuthModal.js +16 -23
  141. package/lib/User/UserInfo.d.ts +13 -0
  142. package/lib/User/UserInfo.js +84 -0
  143. package/lib/User/apiTypes.d.ts +61 -0
  144. package/lib/User/apiTypes.js +1 -0
  145. package/lib/User/index.d.ts +4 -0
  146. package/lib/User/index.js +8 -0
  147. package/lib/User/parseUserObject.d.ts +32 -0
  148. package/lib/User/parseUserObject.js +105 -0
  149. package/lib/all.css +90 -0
  150. package/lib/index.d.ts +14 -3
  151. package/lib/index.js +83 -10
  152. package/lib/locale/messages-en.d.ts +67 -0
  153. package/lib/locale/messages-en.js +71 -4
  154. package/lib/locale/messages-nb.d.ts +67 -0
  155. package/lib/locale/messages-nb.js +70 -3
  156. package/lib/locale/messages-nn.d.ts +67 -0
  157. package/lib/locale/messages-nn.js +70 -3
  158. package/lib/locale/messages-se.d.ts +67 -0
  159. package/lib/locale/messages-se.js +70 -3
  160. package/lib/locale/messages-sma.d.ts +67 -0
  161. package/lib/locale/messages-sma.js +70 -3
  162. package/lib/types.d.ts +1 -1
  163. package/package.json +11 -11
  164. package/src/Article/Article.tsx +31 -0
  165. package/src/Article/ArticleFavoritesButton.tsx +40 -0
  166. package/src/Article/index.ts +2 -0
  167. package/src/Breadcrumb/ActionBreadcrumb.tsx +68 -0
  168. package/src/Breadcrumb/index.ts +2 -0
  169. package/src/Footer/FooterAuth.tsx +7 -9
  170. package/src/InfoBlock/InfoBlock.tsx +61 -0
  171. package/src/InfoBlock/index.ts +1 -0
  172. package/src/LearningPaths/LearningPathMenu.tsx +1 -1
  173. package/src/Masthead/MastheadAuthModal.tsx +4 -5
  174. package/src/MyNdla/Navigation/VerticalNavigation.tsx +93 -0
  175. package/src/MyNdla/Navigation/index.ts +2 -0
  176. package/src/MyNdla/Resource/Folder.tsx +145 -0
  177. package/src/MyNdla/Resource/FolderInput.tsx +104 -0
  178. package/src/MyNdla/Resource/index.ts +11 -0
  179. package/src/MyNdla/index.ts +4 -5
  180. package/src/Resource/BlockResource.tsx +101 -0
  181. package/src/Resource/ListResource.tsx +111 -0
  182. package/src/Resource/index.ts +12 -0
  183. package/src/Resource/resourceComponents.tsx +143 -0
  184. package/src/ResourceGroup/ResourceGroup.tsx +3 -0
  185. package/src/ResourceGroup/ResourceItem.tsx +20 -3
  186. package/src/ResourceGroup/ResourceList.tsx +16 -3
  187. package/src/Search/ActiveFilters.jsx +0 -1
  188. package/src/Search/ContentTypeResult.tsx +8 -9
  189. package/src/SearchTypeResult/ActiveFilters.tsx +1 -3
  190. package/src/SnackBar/SnackBar.tsx +183 -0
  191. package/src/SnackBar/index.ts +13 -0
  192. package/src/TagSelector/SuggestionInput.tsx +230 -0
  193. package/src/TagSelector/Suggestions.tsx +125 -0
  194. package/src/TagSelector/TagSelector.tsx +111 -0
  195. package/src/TagSelector/index.ts +13 -0
  196. package/src/TopicIntroductionList/TopicIntroduction.tsx +2 -2
  197. package/src/TopicIntroductionList/TopicShortcutItem.tsx +1 -5
  198. package/src/TreeStructure/FolderItem.tsx +160 -0
  199. package/src/TreeStructure/FolderItems.tsx +109 -0
  200. package/src/TreeStructure/FolderNameInput.tsx +109 -0
  201. package/src/TreeStructure/TreeStructure.tsx +184 -0
  202. package/src/TreeStructure/TreeStructure.types.ts +69 -0
  203. package/src/TreeStructure/TreeStructureWrapper.tsx +34 -0
  204. package/src/TreeStructure/helperFunctions.ts +52 -0
  205. package/src/TreeStructure/index.ts +11 -0
  206. package/src/TreeStructure/keyboardNavigation/keyboardNavigation.ts +161 -0
  207. package/src/TreeStructure/keyboardNavigation/keyboardNavigation.types.ts +28 -0
  208. package/src/User/AuthModal.tsx +5 -26
  209. package/src/User/UserInfo.tsx +80 -0
  210. package/src/User/__tests__/parseUserObject-test.ts +315 -0
  211. package/src/User/apiTypes.ts +74 -0
  212. package/src/User/index.ts +4 -0
  213. package/src/User/parseUserObject.ts +83 -0
  214. package/src/all.scss +2 -0
  215. package/src/index.ts +15 -4
  216. package/src/locale/messages-en.ts +65 -3
  217. package/src/locale/messages-nb.ts +64 -2
  218. package/src/locale/messages-nn.ts +64 -2
  219. package/src/locale/messages-se.ts +64 -2
  220. package/src/locale/messages-sma.ts +64 -2
  221. package/src/types.ts +1 -1
  222. package/es/MyNdla/ResourceDash/Breadcrumbs.js +0 -22
  223. package/es/MyNdla/ResourceDash/ResourceElement.js +0 -27
  224. package/es/MyNdla/ResourceDash/ResourcesView.js +0 -43
  225. package/es/MyNdla/ResourceDash/index.js +0 -4
  226. package/lib/MyNdla/ResourceDash/Breadcrumbs.d.ts +0 -15
  227. package/lib/MyNdla/ResourceDash/Breadcrumbs.js +0 -35
  228. package/lib/MyNdla/ResourceDash/ResourceElement.d.ts +0 -18
  229. package/lib/MyNdla/ResourceDash/ResourceElement.js +0 -38
  230. package/lib/MyNdla/ResourceDash/ResourcesView.js +0 -57
  231. package/lib/MyNdla/ResourceDash/index.d.ts +0 -4
  232. package/lib/MyNdla/ResourceDash/index.js +0 -31
  233. package/src/MyNdla/ResourceDash/Breadcrumbs.tsx +0 -31
  234. package/src/MyNdla/ResourceDash/ResourceElement.tsx +0 -50
  235. package/src/MyNdla/ResourceDash/ResourcesView.tsx +0 -42
  236. package/src/MyNdla/ResourceDash/index.ts +0 -5
@@ -0,0 +1,74 @@
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
+
9
+ type OrgType =
10
+ | 'higher_education'
11
+ | 'primary_and_lower_secondary'
12
+ | 'primary_and_lower_secondary_owner'
13
+ | 'upper_secondary'
14
+ | 'upper_secondary_owner';
15
+
16
+ type AffiliationType = 'member' | 'student' | 'faculty' | 'staff' | 'affiliate' | 'employee';
17
+
18
+ export interface FeideMembershipType {
19
+ basic: 'member' | 'admin' | 'owner'; // Basic membership role of user.
20
+ affiliation?: AffiliationType[] | AffiliationType;
21
+ primarySchool?: boolean;
22
+ primaryAffiliation?: AffiliationType;
23
+ displayName?: string;
24
+ }
25
+
26
+ interface FeideBaseGroup {
27
+ id: string;
28
+ type: 'fc:org' | 'fc:gogroup';
29
+ displayName: string;
30
+ membership: FeideMembershipType;
31
+ }
32
+
33
+ export interface FeideOrg extends FeideBaseGroup {
34
+ type: 'fc:org';
35
+ orgType: OrgType[];
36
+ norEduOrgNIN?: string;
37
+ eduOrgLegalName?: string;
38
+ mail?: string;
39
+ parent?: string;
40
+ public: boolean;
41
+ }
42
+
43
+ export interface FeideGoGroup extends FeideBaseGroup {
44
+ type: 'fc:gogroup';
45
+ notBefore: string;
46
+ notAfter: string;
47
+ go_type: 'b' | 'u' | 'a';
48
+ parent: string;
49
+ go_type_displayName: string;
50
+ grep?: {
51
+ displayName: string;
52
+ code: string;
53
+ };
54
+ }
55
+
56
+ export type FeideGroup = FeideOrg | FeideGoGroup;
57
+
58
+ export interface FeideUser {
59
+ cn: string[];
60
+ displayName: string;
61
+ eduPersonAffiliation: AffiliationType[] | AffiliationType;
62
+ eduPersonPrimaryAffiliation: string;
63
+ eduPersonPrincipalName: string;
64
+ givenName: string[];
65
+ mail?: string[];
66
+ schacHomeOrganization?: string;
67
+ sn: string[];
68
+ uid: string[];
69
+ }
70
+
71
+ export interface FeideUserApiType extends FeideUser {
72
+ groups: FeideGroup[];
73
+ primarySchool?: FeideGroup;
74
+ }
package/src/User/index.ts CHANGED
@@ -7,5 +7,9 @@
7
7
  */
8
8
 
9
9
  import AuthModal from './AuthModal';
10
+ import { UserInfo } from './UserInfo';
11
+ import type { FeideGoGroup, FeideGroup, FeideOrg, FeideUserApiType, FeideMembershipType, FeideUser } from './apiTypes';
10
12
 
13
+ export { UserInfo };
14
+ export type { FeideGoGroup, FeideGroup, FeideOrg, FeideUserApiType, FeideMembershipType, FeideUser };
11
15
  export default AuthModal;
@@ -0,0 +1,83 @@
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
+ import { groupBy } from 'lodash';
9
+ import { FeideGoGroup, FeideGroup, FeideOrg, FeideUserApiType } from './apiTypes';
10
+
11
+ type GoGroupType = 'basic' | 'teaching' | 'other';
12
+
13
+ /**
14
+ * The keys come from:
15
+ * https://docs.feide.no/reference/apis/groups_api/groups_data_model/primary_and_secondary_education_groups.html?highlight=gogroup#specific-attributes-for-fc-gogroup
16
+ */
17
+ const goGroupTypeMap: Record<'a' | 'b' | 'u', GoGroupType> = {
18
+ a: 'other',
19
+ b: 'basic',
20
+ u: 'teaching',
21
+ };
22
+
23
+ /**
24
+ * @param groups GoGroups to be mapped to specific GoGroupType
25
+ * @returns GoGroups mapped to GoGroupType. basic, teaching and other..
26
+ */
27
+ const createGroupings = (groups: FeideGoGroup[]) => {
28
+ return groups.reduce<Record<GoGroupType, FeideGoGroup[]>>(
29
+ (acc, curr) => {
30
+ const type = goGroupTypeMap[curr.go_type];
31
+ if (!acc[type]) return acc;
32
+
33
+ acc[type] = acc[type].concat(curr);
34
+ return acc;
35
+ },
36
+ {
37
+ basic: [],
38
+ teaching: [],
39
+ other: [],
40
+ },
41
+ );
42
+ };
43
+
44
+ /**
45
+ * @param groups GoGroups to be mapped to root/child relations.
46
+ * @returns An object containing root groups mapped with children.
47
+ */
48
+ const parseOrgs = (groups: FeideGroup[]) => {
49
+ const [roots, children] = groups.reduce<[FeideOrg[], FeideGoGroup[]]>(
50
+ (acc, curr) => {
51
+ if (curr.type === 'fc:org') {
52
+ return [acc[0].concat(curr), acc[1]];
53
+ } else {
54
+ return [acc[0], acc[1].concat(curr)];
55
+ }
56
+ },
57
+ [[], []],
58
+ );
59
+
60
+ const childrenByParentId = groupBy(children, (c) => c.parent);
61
+ const rootsWithChildren = roots.map((root) => ({ ...root, children: childrenByParentId[root.id] ?? [] }));
62
+
63
+ return rootsWithChildren.map((root) => ({
64
+ ...root,
65
+ children: createGroupings(root.children),
66
+ }));
67
+ };
68
+
69
+ /**
70
+ * @param user A user object coming from the API
71
+ * @returns A user object parsed in a presentable way to be handled by i.e UserInfo component.
72
+ */
73
+ export const parseUserObject = (user: FeideUserApiType) => {
74
+ const orgs = parseOrgs(user.groups);
75
+
76
+ return {
77
+ uid: user.uid,
78
+ primaryAffiliation: user.eduPersonPrimaryAffiliation,
79
+ displayName: user.displayName,
80
+ mail: user.mail,
81
+ organizations: orgs,
82
+ };
83
+ };
package/src/all.scss CHANGED
@@ -5,3 +5,5 @@
5
5
  @import '~@ndla/core/scss/utilities';
6
6
  @import '~@ndla/audio-search/scss/audio-search';
7
7
  @import '~@ndla/video-search/scss/video-search';
8
+ @import '~@ndla/button/src/all.scss';
9
+ @import '~@ndla/tooltip/src/all.css';
package/src/index.ts CHANGED
@@ -22,6 +22,7 @@ export {
22
22
  ArticleHeaderWrapper,
23
23
  ArticleSideBar,
24
24
  default as Article,
25
+ ArticleFavoritesButton,
25
26
  } from './Article';
26
27
 
27
28
  export { default as Table } from './Table';
@@ -108,7 +109,9 @@ export { SearchFieldForm } from './Search/SearchFieldForm';
108
109
 
109
110
  export { default as MastheadSearchModal } from './Masthead/MastheadSearchModal';
110
111
  export { default as MastheadAuthModal } from './Masthead/MastheadAuthModal';
112
+ export { UserInfo } from './User';
111
113
  export { default as AuthModal } from './User';
114
+ export type { FeideGoGroup, FeideGroup, FeideOrg, FeideUserApiType, FeideMembershipType, FeideUser } from './User';
112
115
 
113
116
  export { default as CreatedBy } from './CreatedBy';
114
117
 
@@ -151,7 +154,7 @@ export type { TopicProps } from './Topic';
151
154
  export { default as Aside } from './Aside';
152
155
  export { default as AuthorInfo } from './AuthorInfo';
153
156
 
154
- export { default as Breadcrumb, HeaderBreadcrumb, HomeBreadcrumb } from './Breadcrumb';
157
+ export { default as Breadcrumb, HeaderBreadcrumb, HomeBreadcrumb, ActionBreadcrumb } from './Breadcrumb';
155
158
  export type { SimpleBreadcrumbItem, IndexedBreadcrumbItem } from './Breadcrumb';
156
159
 
157
160
  export type { BreadcrumbItemProps } from './Breadcrumblist/Breadcrumblist';
@@ -219,7 +222,15 @@ export { default as CopyParagraphButton } from './CopyParagraphButton';
219
222
 
220
223
  export { default as ContentPlaceholder } from './ContentPlaceholder';
221
224
  export { Notion, ConceptNotion } from './Notion';
222
-
223
225
  export { BannerCard } from './BannerCard';
224
-
225
- export { ResourcesView, ResourceElement, Breadcrumbs } from './MyNdla';
226
+ export { VerticalNavigation, Folder, FolderInput } from './MyNdla';
227
+ export { ListResource, BlockResource } from './Resource';
228
+ export type { ListResourceProps } from './Resource';
229
+ export type { TagType } from './TagSelector';
230
+ export { TagSelector } from './TagSelector';
231
+
232
+ export type { SnackBarItem } from './SnackBar';
233
+ export { SnackBar } from './SnackBar';
234
+ export { InfoBlock } from './InfoBlock';
235
+ export { TreeStructure } from './TreeStructure';
236
+ export type { FolderStructureProps, TreeStructureProps } from './TreeStructure';
@@ -14,6 +14,19 @@ export const { contentTypes, subjectCategories, subjectTypes } = constants;
14
14
  const titleTemplate = ' - NDLA';
15
15
 
16
16
  const messages = {
17
+ treeStructure: {
18
+ createFolder: 'Create folder',
19
+ newFolder: {
20
+ placeholder: 'Add foldername',
21
+ defaultName: 'New folder',
22
+ },
23
+ },
24
+ tagSelector: {
25
+ placeholder: 'Add to tag',
26
+ removeTag: 'Remove tag {{name}}',
27
+ hideAllTags: 'Hide all tags',
28
+ showAllTags: 'Show all tags',
29
+ },
17
30
  htmlTitles: {
18
31
  titleTemplate,
19
32
  welcomePage: `Frontpage${titleTemplate}`,
@@ -945,6 +958,15 @@ const messages = {
945
958
  resource: {
946
959
  accessDenied: 'We are sorry, but this resource is only available to teachers who are logged in with Feide.',
947
960
  },
961
+ primarySchool: 'Primary School',
962
+ name: 'Name',
963
+ mail: 'E-mail',
964
+ username: 'Username',
965
+ groupTypes: {
966
+ basic: 'Basic group',
967
+ teaching: 'Teaching group',
968
+ other: 'Other groups',
969
+ },
948
970
  },
949
971
  checkOutNewFeature: 'New feature',
950
972
  slateBlockMenu: {
@@ -956,15 +978,55 @@ const messages = {
956
978
  close: 'Close fact box',
957
979
  },
958
980
  myNdla: {
959
- resources: 'resources',
960
- folders: 'folders',
961
- folder: 'folder',
981
+ resources: '{{count}} Resource',
982
+ resources_plural: '{{count}} Resources',
983
+ folders: '{{count}} Folder',
984
+ folders_plural: '{{count}} Folders',
985
+ folder: 'Folder',
962
986
  myFolders: 'My folders',
963
987
  myTags: 'My tags',
964
988
  newFolder: 'New folder',
989
+ newFolderUnder: 'Create new folder under {{folderName}}',
965
990
  myAccount: 'My account',
966
991
  favourites: 'Favourites',
967
992
  help: 'Help',
993
+ more: 'More options',
994
+ listView: 'List view',
995
+ detailView: 'Detailed listview',
996
+ shortView: 'Short view',
997
+ myPage: {
998
+ myPage: 'My page',
999
+ logout: 'Log out of My NDLA',
1000
+ deleteAccount: 'Delete My NDLA',
1001
+ welcome:
1002
+ 'Welcome to my NDLA! You can now save your favourite resources from NDLA and organise them in folders with tags',
1003
+ read: { our: 'Read our', ours: 'Read our' },
1004
+ privacy: 'privacy statement',
1005
+ questions: { question: 'Any questions?', ask: 'Ask us in the chat' },
1006
+ wishToDelete: 'Do you wish to delete your account?',
1007
+ terms: 'terms of use',
1008
+ feide: 'We have retrieved this information from Feide',
1009
+ newFavourite: 'Recently favourited',
1010
+ resource: {
1011
+ addToMyNdla: 'Add to My NDLA',
1012
+ addedToMyNdla: 'Added to My NDLA',
1013
+ },
1014
+ storageInfo: {
1015
+ title: 'How to save your favourite resources from NDLA',
1016
+ text: 'When you wish to save a resource, you can do so by clicking the heart on the top right corner of the page. You will then get an option to store the resource in a folder',
1017
+ },
1018
+ folderInfo: {
1019
+ title: 'How to organise your favourite resources in folders',
1020
+ text: 'You can get to the folder overview by clicking on my folders on the menu to the left. Here you can create new folders and subfolder. You can also create a new folder in the dialogue window that is activated when you click on the heart in a resource',
1021
+ },
1022
+ tagInfo: {
1023
+ title: 'How to tag your favourite resources',
1024
+ text: 'When you save a resource, you will have the option to tag it with a keyword. This tag can be used to find the resource across folders. By selecting my tags on the menu to the left, you will see all the tags your have used. You can also see which resources are tagget with which keyword.',
1025
+ },
1026
+ },
1027
+ },
1028
+ snackbar: {
1029
+ close: 'Close notification',
968
1030
  },
969
1031
  labels: {
970
1032
  category: 'Category',
@@ -14,6 +14,19 @@ export const { contentTypes, subjectCategories, subjectTypes } = constants;
14
14
  const titleTemplate = ' - NDLA';
15
15
 
16
16
  const messages = {
17
+ treeStructure: {
18
+ createFolder: 'Lag mappe',
19
+ newFolder: {
20
+ placeholder: 'Skriv navn på mappe',
21
+ defaultName: 'Ny mappe',
22
+ },
23
+ },
24
+ tagSelector: {
25
+ placeholder: 'Tilknytt tag',
26
+ removeTag: 'Ta vekk tilknytning til {{name}}',
27
+ hideAllTags: 'Skjul alle tagger',
28
+ showAllTags: 'Vis alle tagger',
29
+ },
17
30
  htmlTitles: {
18
31
  titleTemplate,
19
32
  welcomePage: `Forsiden${titleTemplate}`,
@@ -943,6 +956,15 @@ const messages = {
943
956
  resource: {
944
957
  accessDenied: 'Vi beklager, men denne ressursen er bare for lærere innlogget med Feide.',
945
958
  },
959
+ primarySchool: 'Hovedskole',
960
+ name: 'Navn',
961
+ mail: 'E-post',
962
+ username: 'Brukernavn',
963
+ groupTypes: {
964
+ basic: 'Basisgruppe',
965
+ teaching: 'Undervisningsgruppe',
966
+ other: 'Andre grupper',
967
+ },
946
968
  },
947
969
  checkOutNewFeature: 'Sjekk ut ny funksjonalitet',
948
970
  slateBlockMenu: {
@@ -954,15 +976,55 @@ const messages = {
954
976
  close: 'Lukk faktaboks',
955
977
  },
956
978
  myNdla: {
957
- resources: 'Ressurser',
958
- folders: 'Mapper',
979
+ resources: '{{count}} ressurs',
980
+ resources_plural: '{{count}} ressurser',
981
+ folders: '{{count}} mappe',
982
+ folders_plural: '{{count}} mapper',
959
983
  folder: 'Mappe',
960
984
  myFolders: 'Mine mapper',
961
985
  myTags: 'Mine tags',
962
986
  newFolder: 'Ny mappe',
987
+ newFolderUnder: 'Lag ny mappe under {{folderName}}',
963
988
  myAccount: 'Min konto',
964
989
  favourites: 'Favoritter',
965
990
  help: 'Hjelp',
991
+ more: 'Flere valg',
992
+ listView: 'Listevisning',
993
+ detailView: 'Detaljrik listevisning',
994
+ shortView: 'Kort visning',
995
+ myPage: {
996
+ myPage: 'Min side',
997
+ deleteAccount: 'Slett Min NDLA',
998
+ logout: 'Logg ut av Min NDLA',
999
+ welcome:
1000
+ 'Velkommen til Min NDLA! Nå kan du lagre dine favorittressurser fra NDLA og organisere dem slik du ønsker i mapper og med tags.',
1001
+ read: { our: 'Les våre', ours: 'Les vår' },
1002
+ privacy: 'personvernerklæring her',
1003
+ questions: { question: 'Lurer du på noe?', ask: 'Spør oss i chatten' },
1004
+ wishToDelete: 'Ønsker du ikke ha brukerprofil hos oss lengre?',
1005
+ terms: 'vilkår for bruk',
1006
+ newFavourite: 'Nylig lagt til',
1007
+ feide: 'Dette henter vi om deg fra Feide',
1008
+ resource: {
1009
+ addToMyNdla: 'Legg i Min NDLA',
1010
+ addedToMyNdla: 'Lagt i Min NDLA',
1011
+ },
1012
+ storageInfo: {
1013
+ title: 'Slik lagrer du dine favorittressurser fra NDLA',
1014
+ text: 'Når du ønsker å lagre en ressurs, kan du gjøre dette ved å klikke på hjertet øverst til høyre på siden. Du vil da få mulighet til å lagre ressursen i en mappe.',
1015
+ },
1016
+ folderInfo: {
1017
+ title: 'Slik organiserer du dine favorittressurser i mapper',
1018
+ text: 'Du kommer til mappeoversikten din ved å klikke på mine mapper i menyen til venstre. Her kan du opprette nye mapper og undermapper. Du kan også opprette en ny mappe i dialogvinduet som kommer når du klikker på et hjerte i en ressurs.',
1019
+ },
1020
+ tagInfo: {
1021
+ title: 'Slik tagger du dine favorittressurser',
1022
+ text: 'Når du lagrer en ressurs får du mulighet til å tagge ressursen med et nøkkelord. Du kan senere bruke taggene til å finne tilbake til ressurser på tvers av mapper. Ved å velge mine tagger i venstremenyen får du oversikt over alle taggene du har brukt og du kan også her se hvilke ressurser som du har tagget med det bestemte nøkkelordet.',
1023
+ },
1024
+ },
1025
+ },
1026
+ snackbar: {
1027
+ close: 'Lukk melding',
966
1028
  },
967
1029
  labels: {
968
1030
  category: 'Kategori',
@@ -14,6 +14,19 @@ export const { contentTypes, subjectCategories, subjectTypes } = constants;
14
14
  const titleTemplate = ' - NDLA';
15
15
 
16
16
  const messages = {
17
+ treeStructure: {
18
+ createFolder: 'Lag mappe',
19
+ newFolder: {
20
+ placeholder: 'Skriv navn på mappe',
21
+ defaultName: 'Ny mappe',
22
+ },
23
+ },
24
+ tagSelector: {
25
+ placeholder: 'Tilknytt tag',
26
+ removeTag: 'Ta vekk tilknytninga til {{name}}',
27
+ hideAllTags: 'Skjul alle tagger',
28
+ showAllTags: 'Vis alle tagger',
29
+ },
17
30
  htmlTitles: {
18
31
  titleTemplate,
19
32
  welcomePage: `Framsida${titleTemplate}`,
@@ -944,6 +957,15 @@ const messages = {
944
957
  resource: {
945
958
  accessDenied: 'Vi beklagar, men denne ressursen er berre for lærarar innlogga med Feide.',
946
959
  },
960
+ primarySchool: 'Hovudskule',
961
+ name: 'Namn',
962
+ mail: 'E-post',
963
+ username: 'Brukarnamn',
964
+ groupTypes: {
965
+ basic: 'Basisgruppe',
966
+ teaching: 'Undervisningsgruppe',
967
+ other: 'Andre grupper',
968
+ },
947
969
  },
948
970
  checkOutNewFeature: 'Sjekk ut ny funksjonalitet',
949
971
  slateBlockMenu: {
@@ -955,15 +977,55 @@ const messages = {
955
977
  close: 'Lukk faktaboks',
956
978
  },
957
979
  myNdla: {
958
- resources: 'Ressursar',
959
- folders: 'Mapper',
980
+ resources: '{{count}} ressurs',
981
+ resources_plural: '{{count}} ressursar',
982
+ folders: '{{count}} mappe',
983
+ folders_plural: '{{count}} mapper',
960
984
  folder: 'Mappe',
961
985
  myFolders: 'Mine mapper',
962
986
  myTags: 'Mine tags',
963
987
  newFolder: 'Ny mappe',
988
+ newFolderUnder: 'Lag ny mappe under {{folderName}}',
964
989
  myAccount: 'Min konto',
965
990
  favourites: 'Favorittar',
966
991
  help: 'Hjelp',
992
+ more: 'Fleire val',
993
+ listView: 'Listevisning',
994
+ detailView: 'Detaljrik listevisning',
995
+ shortView: 'Kort visning',
996
+ myPage: {
997
+ myPage: 'Min side',
998
+ deleteAccount: 'Slett Min NDLA',
999
+ logout: 'Logg ut av Min NDLA',
1000
+ welcome:
1001
+ 'Velkommen til Min NDLA! Nå kan du lagre dine favorittressurser fra NDLA og organisere dem slik du ønsker i mapper og med tags.',
1002
+ read: { our: 'Les våre', ours: 'Les vår' },
1003
+ privacy: 'personvernerklæring her',
1004
+ questions: { question: 'Lurer du på noe?', ask: 'Spør oss i chatten' },
1005
+ wishToDelete: 'Ønsker du ikke ha brukerprofil hos oss lengre?',
1006
+ terms: 'vilkår for bruk',
1007
+ newFavourite: 'Nylig lagt til',
1008
+ feide: 'Dette henter vi om deg fra Feide',
1009
+ resource: {
1010
+ addToMyNdla: 'Legg i Min NDLA',
1011
+ addedToMyNdla: 'Lagt i Min NDLA',
1012
+ },
1013
+ storageInfo: {
1014
+ title: 'Slik lagrer du dine favorittressurser fra NDLA',
1015
+ text: 'Når du ønsker å lagre en ressurs, kan du gjøre dette ved å klikke på hjertet øverst til høyre på siden. Du vil da få mulighet til å lagre ressursen i en mappe.',
1016
+ },
1017
+ folderInfo: {
1018
+ title: 'Slik organiserer du dine favorittressurser i mapper',
1019
+ text: 'Du kommer til mappeoversikten din ved å klikke på mine mapper i menyen til venstre. Her kan du opprette nye mapper og undermapper. Du kan også opprette en ny mappe i dialogvinduet som kommer når du klikker på et hjerte i en ressurs.',
1020
+ },
1021
+ tagInfo: {
1022
+ title: 'Slik tagger du dine favorittressurser',
1023
+ text: 'Når du lagrer en ressurs får du mulighet til å tagge ressursen med et nøkkelord. Du kan senere bruke taggene til å finne tilbake til ressurser på tvers av mapper. Ved å velge mine tagger i venstremenyen får du oversikt over alle taggene du har brukt og du kan også her se hvilke ressurser som du har tagget med det bestemte nøkkelordet.',
1024
+ },
1025
+ },
1026
+ },
1027
+ snackbar: {
1028
+ close: 'Lukk melding',
967
1029
  },
968
1030
  labels: {
969
1031
  category: 'Kategori',
@@ -14,6 +14,19 @@ export const { contentTypes, subjectCategories, subjectTypes } = constants;
14
14
  const titleTemplate = ' - NDLA';
15
15
 
16
16
  const messages = {
17
+ treeStructure: {
18
+ createFolder: 'Lag mappe',
19
+ newFolder: {
20
+ placeholder: 'Skriv navn på mappe',
21
+ defaultName: 'Ny mappe',
22
+ },
23
+ },
24
+ tagSelector: {
25
+ placeholder: 'Legg til tag',
26
+ removeTag: 'Ta vekk tilknytninga til {{name}}',
27
+ hideAllTags: 'Skjul alla tags',
28
+ showAllTags: 'Vis alla tags',
29
+ },
17
30
  htmlTitles: {
18
31
  titleTemplate,
19
32
  welcomePage: `Forsiden${titleTemplate}`,
@@ -943,6 +956,15 @@ const messages = {
943
956
  resource: {
944
957
  accessDenied: 'Vi beklager, men denne ressursen er bare for lærere innlogget med Feide.',
945
958
  },
959
+ primarySchool: 'Hovudskule',
960
+ name: 'Namn',
961
+ mail: 'E-post',
962
+ username: 'Brukarnamn',
963
+ groupTypes: {
964
+ basic: 'Basisgruppe',
965
+ teaching: 'Undervisningsgruppe',
966
+ other: 'Andre grupper',
967
+ },
946
968
  },
947
969
  checkOutNewFeature: 'Sjekk ut ny funksjonalitet',
948
970
  slateBlockMenu: {
@@ -954,15 +976,55 @@ const messages = {
954
976
  close: 'Lukk faktaboks',
955
977
  },
956
978
  myNdla: {
957
- resources: 'Ressurser',
958
- folders: 'Mapper',
979
+ resources: '{{count}} ressurs',
980
+ resources_plural: '{{count}} ressurser',
981
+ folders: '{{count}} mappe',
982
+ folders_plural: '{{count}} mapper',
959
983
  folder: 'Mappe',
960
984
  myFolders: 'Mine mapper',
961
985
  myTags: 'Mine tags',
962
986
  newFolder: 'Ny mappe',
987
+ newFolderUnder: 'Lag ny mappe under {{folderName}}',
963
988
  myAccount: 'Min konto',
964
989
  favourites: 'Favoritter',
965
990
  help: 'Hjelp',
991
+ more: 'Flere valg',
992
+ listView: 'Listevisning',
993
+ detailView: 'Detaljrik listevisning',
994
+ shortView: 'Kort visning',
995
+ myPage: {
996
+ myPage: 'Min side',
997
+ deleteAccount: 'Slett Min NDLA',
998
+ logout: 'Logg ut av Min NDLA',
999
+ welcome:
1000
+ 'Velkommen til Min NDLA! Nå kan du lagre dine favorittressurser fra NDLA og organisere dem slik du ønsker i mapper og med tags.',
1001
+ read: { our: 'Les våre', ours: 'Les vår' },
1002
+ privacy: 'personvernerklæring her',
1003
+ questions: { question: 'Lurer du på noe?', ask: 'Spør oss i chatten' },
1004
+ wishToDelete: 'Ønsker du ikke ha brukerprofil hos oss lengre?',
1005
+ terms: 'vilkår for bruk',
1006
+ newFavourite: 'Nylig lagt til',
1007
+ feide: 'Dette henter vi om deg fra Feide',
1008
+ resource: {
1009
+ addToMyNdla: 'Legg i Min NDLA',
1010
+ addedToMyNdla: 'Lagt i Min NDLA',
1011
+ },
1012
+ storageInfo: {
1013
+ title: 'Slik lagrer du dine favorittressurser fra NDLA',
1014
+ text: 'Når du ønsker å lagre en ressurs, kan du gjøre dette ved å klikke på hjertet øverst til høyre på siden. Du vil da få mulighet til å lagre ressursen i en mappe.',
1015
+ },
1016
+ folderInfo: {
1017
+ title: 'Slik organiserer du dine favorittressurser i mapper',
1018
+ text: 'Du kommer til mappeoversikten din ved å klikke på mine mapper i menyen til venstre. Her kan du opprette nye mapper og undermapper. Du kan også opprette en ny mappe i dialogvinduet som kommer når du klikker på et hjerte i en ressurs.',
1019
+ },
1020
+ tagInfo: {
1021
+ title: 'Slik tagger du dine favorittressurser',
1022
+ text: 'Når du lagrer en ressurs får du mulighet til å tagge ressursen med et nøkkelord. Du kan senere bruke taggene til å finne tilbake til ressurser på tvers av mapper. Ved å velge mine tagger i venstremenyen får du oversikt over alle taggene du har brukt og du kan også her se hvilke ressurser som du har tagget med det bestemte nøkkelordet.',
1023
+ },
1024
+ },
1025
+ },
1026
+ snackbar: {
1027
+ close: 'Lukk melding',
966
1028
  },
967
1029
  labels: {
968
1030
  category: 'Kategori',