@ndla/ui 30.2.0 → 30.2.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.
Files changed (321) hide show
  1. package/es/Article/ArticleHeaderWrapper.js +75 -112
  2. package/es/Footer/FooterLinks.js +13 -10
  3. package/es/Frontpage/FrontpageFilm.js +11 -8
  4. package/es/Frontpage/FrontpageMultidisciplinarySubject.js +13 -10
  5. package/es/Frontpage/FrontpageToolbox.js +11 -8
  6. package/es/LearningPaths/LearningPathLastStepNavigation.js +11 -8
  7. package/es/LearningPaths/LearningPathMenuAside.js +13 -10
  8. package/es/LearningPaths/LearningPathMobileHeader.js +8 -6
  9. package/es/LearningPaths/LearningPathMobileStepInfo.js +8 -5
  10. package/es/Masthead/MastheadSearchModal.js +10 -7
  11. package/es/Messages/MessageBox.js +11 -12
  12. package/es/NDLAFilm/CategorySelect.js +106 -146
  13. package/es/SearchTypeResult/ActiveFilterContent.js +9 -6
  14. package/es/SearchTypeResult/SearchHeader.js +14 -12
  15. package/es/SearchTypeResult/SearchNotionsResult.js +5 -6
  16. package/es/SearchTypeResult/SearchTypeHeader.js +17 -15
  17. package/es/Subject/SubjectCarousel.js +11 -8
  18. package/es/ToolboxPage/ToolboxInfo.js +9 -6
  19. package/es/User/UserInfo.js +23 -2
  20. package/es/User/parseUserObject.js +22 -12
  21. package/es/locale/messages-en.js +5 -1
  22. package/es/locale/messages-nb.js +5 -1
  23. package/es/locale/messages-nn.js +5 -1
  24. package/es/locale/messages-se.js +33 -29
  25. package/es/locale/messages-sma.js +5 -1
  26. package/es/utils/createUniversalPortal.js +1 -1
  27. package/lib/Animation/DisplayOnPageYOffset.d.ts +2 -2
  28. package/lib/Animation/Fade.d.ts +2 -2
  29. package/lib/Article/Article.d.ts +3 -3
  30. package/lib/Article/ArticleAccessMessage.d.ts +1 -1
  31. package/lib/Article/ArticleByline.d.ts +1 -1
  32. package/lib/Article/ArticleContent.d.ts +1 -1
  33. package/lib/Article/ArticleFootNotes.d.ts +1 -1
  34. package/lib/Article/ArticleHeaderWrapper.d.ts +4 -5
  35. package/lib/Article/ArticleHeaderWrapper.js +73 -108
  36. package/lib/Article/ArticleNotions.d.ts +1 -1
  37. package/lib/Article/ArticleSideBar.d.ts +1 -1
  38. package/lib/Aside/Aside.d.ts +1 -1
  39. package/lib/AudioPlayer/AudioPlayer.d.ts +1 -1
  40. package/lib/AudioPlayer/Controls.d.ts +1 -1
  41. package/lib/AudioPlayer/SpeechControl.d.ts +1 -1
  42. package/lib/AuthorInfo/AuthorInfo.d.ts +1 -1
  43. package/lib/BannerCard/BannerCard.d.ts +1 -1
  44. package/lib/BlogPosts/BlogPost.d.ts +1 -1
  45. package/lib/BlogPosts/BlogPostWrapper.d.ts +1 -1
  46. package/lib/Breadcrumb/ActionBreadcrumb.d.ts +1 -1
  47. package/lib/Breadcrumb/Breadcrumb.d.ts +1 -1
  48. package/lib/Breadcrumb/HeaderBreadcrumb.d.ts +1 -1
  49. package/lib/Breadcrumb/HomeBreadcrumb.d.ts +1 -1
  50. package/lib/Breadcrumblist/Breadcrumblist.d.ts +1 -1
  51. package/lib/CompetenceGoalTab/CompetenceGoalItem.d.ts +1 -1
  52. package/lib/CompetenceGoalTab/CompetenceGoalTab.d.ts +1 -1
  53. package/lib/CompetenceGoalTab/CompetenceItem.d.ts +1 -1
  54. package/lib/CompetenceGoalTab/SearchButton.d.ts +1 -1
  55. package/lib/CompetenceGoals/CompetenceGoalsDialog.d.ts +1 -1
  56. package/lib/ComponentCursor/ComponentCursor.d.ts +1 -1
  57. package/lib/ContentCard/ContentCard.d.ts +1 -1
  58. package/lib/ContentLoader/index.d.ts +1 -1
  59. package/lib/ContentPlaceholder/ContentPlaceholder.d.ts +1 -1
  60. package/lib/ContentTypeBadge/ContentTypeBadge.d.ts +9 -9
  61. package/lib/CopyParagraphButton/CopyParagraphButton.d.ts +1 -1
  62. package/lib/CreatedBy/CreatedBy.d.ts +1 -1
  63. package/lib/Dialog/Dialog.d.ts +1 -1
  64. package/lib/ErrorMessage/ErrorMessage.d.ts +1 -1
  65. package/lib/ErrorMessage/ErrorResourceAccessDenied.d.ts +1 -1
  66. package/lib/FactBox/FactBox.d.ts +1 -1
  67. package/lib/Figure/Figure.d.ts +2 -2
  68. package/lib/Figure/FigureBylineExpandButton.d.ts +1 -1
  69. package/lib/Figure/FigureExpandButton.d.ts +1 -1
  70. package/lib/Figure/FigureLicense.d.ts +2 -2
  71. package/lib/Figure/FigureLicenseDialog.d.ts +1 -1
  72. package/lib/Figure/FigureOpenDialogButton.d.ts +1 -1
  73. package/lib/FileList/File.d.ts +1 -1
  74. package/lib/FileList/FileList.d.ts +1 -1
  75. package/lib/Filter/FilterButtons.d.ts +1 -1
  76. package/lib/Filter/FilterCarousel.d.ts +1 -1
  77. package/lib/Filter/FilterList.d.ts +1 -1
  78. package/lib/Filter/FilterListPhone.d.ts +1 -1
  79. package/lib/Filter/ToggleItem.d.ts +1 -1
  80. package/lib/Footer/EditorName.d.ts +1 -1
  81. package/lib/Footer/Footer.d.ts +1 -1
  82. package/lib/Footer/FooterAuth.d.ts +1 -1
  83. package/lib/Footer/FooterLinks.d.ts +3 -4
  84. package/lib/Footer/FooterLinks.js +12 -10
  85. package/lib/Footer/FooterPrivacy.d.ts +1 -1
  86. package/lib/Footer/FooterText.d.ts +1 -1
  87. package/lib/Footer/privacy_en.d.ts +1 -1
  88. package/lib/Footer/privacy_nb.d.ts +1 -1
  89. package/lib/Footer/privacy_nn.d.ts +1 -1
  90. package/lib/Frontpage/FrontpageAllSubjects.d.ts +1 -1
  91. package/lib/Frontpage/FrontpageFilm.d.ts +2 -4
  92. package/lib/Frontpage/FrontpageFilm.js +10 -8
  93. package/lib/Frontpage/FrontpageHeader.d.ts +1 -1
  94. package/lib/Frontpage/FrontpageInfo.d.ts +1 -1
  95. package/lib/Frontpage/FrontpageMultidisciplinarySubject.d.ts +7 -8
  96. package/lib/Frontpage/FrontpageMultidisciplinarySubject.js +12 -10
  97. package/lib/Frontpage/FrontpageProgramMenu.d.ts +1 -1
  98. package/lib/Frontpage/FrontpageSearch.d.ts +1 -1
  99. package/lib/Frontpage/FrontpageToolbox.d.ts +2 -4
  100. package/lib/Frontpage/FrontpageToolbox.js +10 -8
  101. package/lib/Frontpage/illustrations/Fellesfag.d.ts +1 -1
  102. package/lib/Frontpage/illustrations/FrontpageHeaderIllustration.d.ts +1 -1
  103. package/lib/Frontpage/illustrations/FrontpageIllustrations.d.ts +2 -2
  104. package/lib/Frontpage/illustrations/FrontpageSubjectIllustration.d.ts +1 -1
  105. package/lib/Frontpage/illustrations/MenuFellesfag.d.ts +1 -1
  106. package/lib/Frontpage/illustrations/MenuStudiespesialiserende.d.ts +1 -1
  107. package/lib/Frontpage/illustrations/MenuYrkesfag.d.ts +1 -1
  108. package/lib/Frontpage/illustrations/Studiespesialiserende.d.ts +1 -1
  109. package/lib/Frontpage/illustrations/Yrkesfag.d.ts +1 -1
  110. package/lib/Frontpage/illustrations/index.d.ts +6 -6
  111. package/lib/Hero/Hero.d.ts +8 -8
  112. package/lib/Image/Image.d.ts +2 -2
  113. package/lib/Image/ImageLink.d.ts +1 -1
  114. package/lib/Image/LazyLoadImage.d.ts +1 -1
  115. package/lib/InfoBlock/InfoBlock.d.ts +1 -1
  116. package/lib/InfoBox/InfoBox.d.ts +1 -1
  117. package/lib/InfoWidget/InfoWidget.d.ts +1 -1
  118. package/lib/LanguageSelector/LanguageSelector.d.ts +1 -1
  119. package/lib/LanguageSelector/LanguageSelectorContent.d.ts +1 -1
  120. package/lib/Layout/Content.d.ts +2 -2
  121. package/lib/Layout/LayoutItem.d.ts +1 -1
  122. package/lib/Layout/OneColumn.d.ts +1 -1
  123. package/lib/Layout/PageContainer.d.ts +1 -1
  124. package/lib/LearningPaths/LearningPathContent.d.ts +1 -1
  125. package/lib/LearningPaths/LearningPathInformation.d.ts +1 -1
  126. package/lib/LearningPaths/LearningPathLastStepNavigation.d.ts +3 -4
  127. package/lib/LearningPaths/LearningPathLastStepNavigation.js +10 -8
  128. package/lib/LearningPaths/LearningPathMenu.d.ts +1 -1
  129. package/lib/LearningPaths/LearningPathMenuAside.d.ts +2 -4
  130. package/lib/LearningPaths/LearningPathMenuAside.js +12 -10
  131. package/lib/LearningPaths/LearningPathMenuAsideCopyright.d.ts +1 -1
  132. package/lib/LearningPaths/LearningPathMenuContent.d.ts +1 -1
  133. package/lib/LearningPaths/LearningPathMenuIntro.d.ts +1 -1
  134. package/lib/LearningPaths/LearningPathMenuModalWrapper.d.ts +1 -1
  135. package/lib/LearningPaths/LearningPathMobileHeader.d.ts +2 -4
  136. package/lib/LearningPaths/LearningPathMobileHeader.js +7 -6
  137. package/lib/LearningPaths/LearningPathMobileStepInfo.d.ts +2 -4
  138. package/lib/LearningPaths/LearningPathMobileStepInfo.js +7 -5
  139. package/lib/LearningPaths/LearningPathSticky.d.ts +3 -3
  140. package/lib/LearningPaths/LearningPathWrapper.d.ts +1 -1
  141. package/lib/Logo/Logo.d.ts +1 -1
  142. package/lib/Logo/SvgLogo.d.ts +1 -1
  143. package/lib/Masthead/Masthead.d.ts +2 -2
  144. package/lib/Masthead/MastheadAuthModal.d.ts +1 -1
  145. package/lib/Masthead/MastheadSearchModal.d.ts +3 -4
  146. package/lib/Masthead/MastheadSearchModal.js +9 -7
  147. package/lib/Masthead/SkipToMainContent.d.ts +1 -1
  148. package/lib/MediaList/MediaList.d.ts +8 -8
  149. package/lib/Messages/MessageBanner.d.ts +1 -1
  150. package/lib/Messages/MessageBox.d.ts +2 -5
  151. package/lib/Messages/MessageBox.js +10 -14
  152. package/lib/Messages/MessageBoxTag.d.ts +1 -1
  153. package/lib/MultidisciplinarySubject/Illustrations.d.ts +7 -7
  154. package/lib/MultidisciplinarySubject/List.d.ts +1 -1
  155. package/lib/MultidisciplinarySubject/ListItem.d.ts +1 -1
  156. package/lib/MultidisciplinarySubject/MultidisciplinarySubject.d.ts +1 -1
  157. package/lib/MultidisciplinarySubject/MultidisciplinarySubjectHeader.d.ts +1 -1
  158. package/lib/MyNdla/Resource/Folder.d.ts +1 -1
  159. package/lib/MyNdla/Resource/FolderInput.d.ts +1 -1
  160. package/lib/NDLAFilm/AboutNdlaFilm.d.ts +1 -1
  161. package/lib/NDLAFilm/AllMoviesAlphabetically.d.ts +1 -1
  162. package/lib/NDLAFilm/CategorySelect.d.ts +10 -5
  163. package/lib/NDLAFilm/CategorySelect.js +99 -145
  164. package/lib/NDLAFilm/FilmContentCard.d.ts +1 -1
  165. package/lib/NDLAFilm/FilmContentCardTags.d.ts +1 -1
  166. package/lib/NDLAFilm/FilmMovieList.d.ts +1 -1
  167. package/lib/NDLAFilm/FilmMovieSearch.d.ts +1 -1
  168. package/lib/NDLAFilm/FilmSlideshow.d.ts +1 -1
  169. package/lib/NDLAFilm/MovieGrid.d.ts +1 -1
  170. package/lib/NDLAFilm/NavigationArrow.d.ts +2 -2
  171. package/lib/NDLAFilm/SlideshowIndicator.d.ts +1 -1
  172. package/lib/NDLAFilm/VisualElement.d.ts +1 -1
  173. package/lib/NDLAFilm/filmStyles.d.ts +2 -2
  174. package/lib/Navigation/NavigationBox.d.ts +1 -1
  175. package/lib/Navigation/NavigationHeading.d.ts +1 -1
  176. package/lib/Navigation/NavigationTopicAbout.d.ts +1 -1
  177. package/lib/NoContentBox/NoContentBox.d.ts +1 -1
  178. package/lib/Notion/ConceptNotion.d.ts +1 -1
  179. package/lib/Notion/FigureNotion.d.ts +1 -1
  180. package/lib/Notion/Notion.d.ts +1 -1
  181. package/lib/Notion/NotionImage.d.ts +1 -1
  182. package/lib/Notion/NotionVisualElement.d.ts +1 -1
  183. package/lib/Portrait/Portrait.d.ts +1 -1
  184. package/lib/Programme/Programme.d.ts +1 -1
  185. package/lib/Programme/ProgrammeSubjects.d.ts +1 -1
  186. package/lib/RadioButtonGroup/RadioButtonGroup.d.ts +1 -1
  187. package/lib/RelatedArticleList/RelatedArticleList.d.ts +2 -2
  188. package/lib/Resource/BlockResource.d.ts +1 -1
  189. package/lib/Resource/ListResource.d.ts +1 -1
  190. package/lib/Resource/resourceComponents.d.ts +7 -7
  191. package/lib/ResourceBox/ResourceBox.d.ts +1 -1
  192. package/lib/ResourceGroup/ResourceGroup.d.ts +1 -1
  193. package/lib/ResourceGroup/ResourceItem.d.ts +1 -1
  194. package/lib/ResourceGroup/ResourceList.d.ts +1 -1
  195. package/lib/ResourcesWrapper/ResourcesTitle.d.ts +1 -1
  196. package/lib/ResourcesWrapper/ResourcesTopicTitle.d.ts +1 -1
  197. package/lib/ResourcesWrapper/ResourcesWrapper.d.ts +1 -1
  198. package/lib/Search/ActiveFilterContent.d.ts +2 -2
  199. package/lib/Search/ActiveFilters.d.ts +1 -1
  200. package/lib/Search/ContentTypeResult.d.ts +1 -1
  201. package/lib/Search/ContentTypeResultStyles.d.ts +6 -6
  202. package/lib/Search/LoadingWrapper.d.ts +1 -1
  203. package/lib/Search/SearchField.d.ts +1 -1
  204. package/lib/Search/SearchFieldForm.d.ts +1 -1
  205. package/lib/Search/SearchResult.d.ts +2 -2
  206. package/lib/Search/SearchResultSleeve.d.ts +1 -1
  207. package/lib/Search/ToggleSearchButton.d.ts +1 -1
  208. package/lib/SearchTypeResult/ActiveFilterContent.d.ts +3 -4
  209. package/lib/SearchTypeResult/ActiveFilterContent.js +8 -6
  210. package/lib/SearchTypeResult/ActiveFilters.d.ts +1 -1
  211. package/lib/SearchTypeResult/PopupFilter.d.ts +1 -1
  212. package/lib/SearchTypeResult/ResultNavigation.d.ts +1 -1
  213. package/lib/SearchTypeResult/SearchFieldHeader.d.ts +1 -1
  214. package/lib/SearchTypeResult/SearchFilterContent.d.ts +1 -1
  215. package/lib/SearchTypeResult/SearchHeader.d.ts +3 -4
  216. package/lib/SearchTypeResult/SearchHeader.js +13 -12
  217. package/lib/SearchTypeResult/SearchItem.d.ts +1 -1
  218. package/lib/SearchTypeResult/SearchItemList.d.ts +1 -1
  219. package/lib/SearchTypeResult/SearchItems.d.ts +1 -1
  220. package/lib/SearchTypeResult/SearchNotionItem.d.ts +1 -1
  221. package/lib/SearchTypeResult/SearchNotionsResult.d.ts +3 -4
  222. package/lib/SearchTypeResult/SearchNotionsResult.js +5 -6
  223. package/lib/SearchTypeResult/SearchSubjectItem.d.ts +1 -1
  224. package/lib/SearchTypeResult/SearchSubjectResult.d.ts +1 -1
  225. package/lib/SearchTypeResult/SearchTypeHeader.d.ts +1 -2
  226. package/lib/SearchTypeResult/SearchTypeHeader.js +15 -12
  227. package/lib/SearchTypeResult/SearchTypeResult.d.ts +1 -1
  228. package/lib/SearchTypeResult/SearchViewType.d.ts +1 -1
  229. package/lib/SearchTypeResult/components/ItemContexts.d.ts +1 -1
  230. package/lib/SearchTypeResult/components/ItemResourceHeader.d.ts +1 -1
  231. package/lib/SearchTypeResult/components/ItemTopicHeader.d.ts +1 -1
  232. package/lib/SearchTypeResult/components/SubjectFilters.d.ts +1 -1
  233. package/lib/SectionHeading/SectionHeading.d.ts +1 -1
  234. package/lib/SnackBar/DefaultSnackbar.d.ts +1 -1
  235. package/lib/SnackBar/SnackbarProvider.d.ts +2 -2
  236. package/lib/Subject/Subject.d.ts +8 -8
  237. package/lib/Subject/SubjectAbout.d.ts +1 -1
  238. package/lib/Subject/SubjectArchive.d.ts +1 -1
  239. package/lib/Subject/SubjectBanner.d.ts +1 -1
  240. package/lib/Subject/SubjectCarousel.d.ts +2 -4
  241. package/lib/Subject/SubjectCarousel.js +10 -8
  242. package/lib/Subject/SubjectHeader.d.ts +1 -1
  243. package/lib/Subject/SubjectLinks.d.ts +1 -1
  244. package/lib/Subject/SubjectNewContent.d.ts +1 -1
  245. package/lib/Subject/SubjectShortcuts.d.ts +1 -1
  246. package/lib/Subject/SubjectSocial.d.ts +2 -2
  247. package/lib/Table/Table.d.ts +1 -1
  248. package/lib/TagSelector/Control.d.ts +1 -1
  249. package/lib/TagSelector/DropdownIndicator.d.ts +1 -1
  250. package/lib/TagSelector/Input.d.ts +1 -1
  251. package/lib/TagSelector/Menu.d.ts +1 -1
  252. package/lib/TagSelector/MenuList.d.ts +2 -2
  253. package/lib/TagSelector/Option.d.ts +1 -1
  254. package/lib/TagSelector/SelectContainer.d.ts +1 -1
  255. package/lib/TagSelector/TagSelector.d.ts +1 -1
  256. package/lib/TagSelector/ValueButton.d.ts +2 -2
  257. package/lib/ToolboxPage/ToolboxInfo.d.ts +3 -4
  258. package/lib/ToolboxPage/ToolboxInfo.js +8 -6
  259. package/lib/Topic/Loader.d.ts +1 -1
  260. package/lib/Topic/Topic.d.ts +1 -1
  261. package/lib/TopicIntroductionList/TopicIntroduction.d.ts +1 -1
  262. package/lib/TopicIntroductionList/TopicIntroductionList.d.ts +1 -1
  263. package/lib/TopicIntroductionList/TopicIntroductionShortcuts.d.ts +1 -1
  264. package/lib/TopicIntroductionList/TopicShortcutItem.d.ts +1 -1
  265. package/lib/Translation/Translation.d.ts +1 -1
  266. package/lib/Translation/TranslationBox.d.ts +1 -1
  267. package/lib/Translation/TranslationLine.d.ts +1 -1
  268. package/lib/TreeStructure/AddFolderButton.d.ts +1 -1
  269. package/lib/TreeStructure/FolderItem.d.ts +1 -1
  270. package/lib/TreeStructure/FolderItems.d.ts +1 -1
  271. package/lib/TreeStructure/NavigationLink.d.ts +1 -1
  272. package/lib/TreeStructure/TreeStructure.d.ts +1 -1
  273. package/lib/TreeStructure/helperFunctions.d.ts +1 -1
  274. package/lib/User/AuthModal.d.ts +1 -1
  275. package/lib/User/UserInfo.d.ts +1 -1
  276. package/lib/User/UserInfo.js +23 -2
  277. package/lib/User/apiTypes.d.ts +10 -2
  278. package/lib/User/parseUserObject.d.ts +2 -1
  279. package/lib/User/parseUserObject.js +22 -12
  280. package/lib/locale/LocaleProvider.d.ts +1 -1
  281. package/lib/locale/messages-en.d.ts +4 -0
  282. package/lib/locale/messages-en.js +5 -1
  283. package/lib/locale/messages-nb.d.ts +4 -0
  284. package/lib/locale/messages-nb.js +5 -1
  285. package/lib/locale/messages-nn.d.ts +4 -0
  286. package/lib/locale/messages-nn.js +5 -1
  287. package/lib/locale/messages-se.d.ts +4 -0
  288. package/lib/locale/messages-se.js +33 -29
  289. package/lib/locale/messages-sma.d.ts +4 -0
  290. package/lib/locale/messages-sma.js +5 -1
  291. package/lib/utils/createUniversalPortal.d.ts +1 -1
  292. package/lib/utils/createUniversalPortal.js +1 -1
  293. package/package.json +10 -10
  294. package/src/Article/ArticleHeaderWrapper.tsx +53 -66
  295. package/src/Footer/FooterLinks.tsx +43 -40
  296. package/src/Frontpage/FrontpageFilm.tsx +20 -17
  297. package/src/Frontpage/FrontpageMultidisciplinarySubject.tsx +33 -30
  298. package/src/Frontpage/FrontpageToolbox.tsx +21 -18
  299. package/src/LearningPaths/LearningPathLastStepNavigation.tsx +32 -29
  300. package/src/LearningPaths/LearningPathMenuAside.tsx +25 -29
  301. package/src/LearningPaths/LearningPathMobileHeader.tsx +11 -8
  302. package/src/LearningPaths/LearningPathMobileStepInfo.tsx +13 -10
  303. package/src/Masthead/MastheadSearchModal.tsx +36 -35
  304. package/src/Messages/MessageBox.tsx +2 -3
  305. package/src/NDLAFilm/CategorySelect.tsx +77 -97
  306. package/src/SearchTypeResult/ActiveFilterContent.tsx +18 -15
  307. package/src/SearchTypeResult/SearchHeader.tsx +4 -4
  308. package/src/SearchTypeResult/SearchNotionsResult.tsx +2 -3
  309. package/src/SearchTypeResult/SearchTypeHeader.tsx +48 -45
  310. package/src/Subject/SubjectCarousel.tsx +93 -96
  311. package/src/ToolboxPage/ToolboxInfo.tsx +19 -16
  312. package/src/User/UserInfo.tsx +22 -0
  313. package/src/User/__tests__/parseUserObject-test.ts +1 -0
  314. package/src/User/apiTypes.ts +11 -2
  315. package/src/User/parseUserObject.ts +17 -11
  316. package/src/locale/messages-en.ts +4 -0
  317. package/src/locale/messages-nb.ts +4 -0
  318. package/src/locale/messages-nn.ts +4 -0
  319. package/src/locale/messages-se.ts +32 -28
  320. package/src/locale/messages-sma.ts +4 -0
  321. package/src/utils/createUniversalPortal.tsx +1 -6
@@ -2,7 +2,7 @@ import React from 'react';
2
2
  import styled from '@emotion/styled';
3
3
  import { css } from '@emotion/react';
4
4
  import { Carousel, CarouselAutosize } from '@ndla/carousel';
5
- import { withTranslation, WithTranslation } from 'react-i18next';
5
+ import { useTranslation } from 'react-i18next';
6
6
  import { breakpoints, mq, spacing, spacingUnit } from '@ndla/core';
7
7
  import { SafeLinkProps } from '@ndla/safelink';
8
8
  import { ContentCard } from '../index';
@@ -59,99 +59,96 @@ const StyledSubjectSectionTitle = styled(SubjectSectionTitle)`
59
59
  }
60
60
  `;
61
61
 
62
- const SubjectCarousel = ({
63
- subjects = [],
64
- title = '',
65
- narrowScreen = false,
66
- wideScreen = false,
67
- t,
68
- }: Props & WithTranslation) => (
69
- <StyledSection narrowScreen={narrowScreen} wideScreen={wideScreen}>
70
- <CarouselAutosize
71
- breakpoints={[
72
- {
73
- until: 'mobile',
74
- columnsPrSlide: 1,
75
- distanceBetweenItems: 26,
76
- arrowOffset: 26,
77
- },
78
- {
79
- until: 'mobileWide',
80
- columnsPrSlide: 2,
81
- distanceBetweenItems: 26,
82
- arrowOffset: 26,
83
- },
84
- {
85
- until: 'tablet',
86
- columnsPrSlide: 2.25,
87
- distanceBetweenItems: 26,
88
- arrowOffset: 26,
89
- margin: spacingUnit,
90
- },
91
- {
92
- until: 'tabletWide',
93
- columnsPrSlide: 3.25,
94
- distanceBetweenItems: 26,
95
- arrowOffset: 26,
96
- margin: spacingUnit * 1.25,
97
- },
98
- {
99
- until: 'desktop',
100
- columnsPrSlide: 4.25,
101
- distanceBetweenItems: 26,
102
- arrowOffset: 26,
103
- margin: spacingUnit * 1.25,
104
- },
105
- {
106
- until: 'wide',
107
- columnsPrSlide: 4,
108
- distanceBetweenItems: 26,
109
- arrowOffset: 26,
110
- margin: spacingUnit * 2.5,
111
- },
112
- {
113
- until: 'ultraWide',
114
- columnsPrSlide: 5,
115
- distanceBetweenItems: 26,
116
- arrowOffset: 26,
117
- margin: spacingUnit * 2.5,
118
- },
119
- {
120
- columnsPrSlide: 7,
121
- distanceBetweenItems: 26,
122
- arrowOffset: 26,
123
- margin: spacingUnit * 2.5,
124
- maxColumnWidth: 200,
125
- },
126
- ]}
127
- centered
128
- itemsLength={subjects?.length ?? 0}>
129
- {(autoSizedProps) => (
130
- <>
131
- <StyledSubjectSectionTitle>{title}</StyledSubjectSectionTitle>
132
- <Carousel
133
- {...autoSizedProps}
134
- disableScroll={(autoSizedProps?.columnsPrSlide ?? 0) >= subjects.length}
135
- slideBackwardsLabel={t('carousel.back')}
136
- slideForwardsLabel={t('carousel.forward')}
137
- buttonClass="c-carousel__arrow"
138
- wrapperClass="c-carousel__wrapper"
139
- columnWidth={autoSizedProps?.columnWidth ?? 0}
140
- columnsPrSlide={autoSizedProps?.columnsPrSlide ?? 0}
141
- items={subjects.map((subject) => (
142
- <ContentCard
143
- {...subject}
144
- columnWidth={autoSizedProps?.columnWidth ?? 0}
145
- type={subject.type ?? ''}
146
- image={subject.image ?? ''}
147
- key={subject.id}
148
- />
149
- ))}
150
- />
151
- </>
152
- )}
153
- </CarouselAutosize>
154
- </StyledSection>
155
- );
62
+ const SubjectCarousel = ({ subjects = [], title = '', narrowScreen = false, wideScreen = false }: Props) => {
63
+ const { t } = useTranslation();
64
+ return (
65
+ <StyledSection narrowScreen={narrowScreen} wideScreen={wideScreen}>
66
+ <CarouselAutosize
67
+ breakpoints={[
68
+ {
69
+ until: 'mobile',
70
+ columnsPrSlide: 1,
71
+ distanceBetweenItems: 26,
72
+ arrowOffset: 26,
73
+ },
74
+ {
75
+ until: 'mobileWide',
76
+ columnsPrSlide: 2,
77
+ distanceBetweenItems: 26,
78
+ arrowOffset: 26,
79
+ },
80
+ {
81
+ until: 'tablet',
82
+ columnsPrSlide: 2.25,
83
+ distanceBetweenItems: 26,
84
+ arrowOffset: 26,
85
+ margin: spacingUnit,
86
+ },
87
+ {
88
+ until: 'tabletWide',
89
+ columnsPrSlide: 3.25,
90
+ distanceBetweenItems: 26,
91
+ arrowOffset: 26,
92
+ margin: spacingUnit * 1.25,
93
+ },
94
+ {
95
+ until: 'desktop',
96
+ columnsPrSlide: 4.25,
97
+ distanceBetweenItems: 26,
98
+ arrowOffset: 26,
99
+ margin: spacingUnit * 1.25,
100
+ },
101
+ {
102
+ until: 'wide',
103
+ columnsPrSlide: 4,
104
+ distanceBetweenItems: 26,
105
+ arrowOffset: 26,
106
+ margin: spacingUnit * 2.5,
107
+ },
108
+ {
109
+ until: 'ultraWide',
110
+ columnsPrSlide: 5,
111
+ distanceBetweenItems: 26,
112
+ arrowOffset: 26,
113
+ margin: spacingUnit * 2.5,
114
+ },
115
+ {
116
+ columnsPrSlide: 7,
117
+ distanceBetweenItems: 26,
118
+ arrowOffset: 26,
119
+ margin: spacingUnit * 2.5,
120
+ maxColumnWidth: 200,
121
+ },
122
+ ]}
123
+ centered
124
+ itemsLength={subjects?.length ?? 0}>
125
+ {(autoSizedProps) => (
126
+ <>
127
+ <StyledSubjectSectionTitle>{title}</StyledSubjectSectionTitle>
128
+ <Carousel
129
+ {...autoSizedProps}
130
+ disableScroll={(autoSizedProps?.columnsPrSlide ?? 0) >= subjects.length}
131
+ slideBackwardsLabel={t('carousel.back')}
132
+ slideForwardsLabel={t('carousel.forward')}
133
+ buttonClass="c-carousel__arrow"
134
+ wrapperClass="c-carousel__wrapper"
135
+ columnWidth={autoSizedProps?.columnWidth ?? 0}
136
+ columnsPrSlide={autoSizedProps?.columnsPrSlide ?? 0}
137
+ items={subjects.map((subject) => (
138
+ <ContentCard
139
+ {...subject}
140
+ columnWidth={autoSizedProps?.columnWidth ?? 0}
141
+ type={subject.type ?? ''}
142
+ image={subject.image ?? ''}
143
+ key={subject.id}
144
+ />
145
+ ))}
146
+ />
147
+ </>
148
+ )}
149
+ </CarouselAutosize>
150
+ </StyledSection>
151
+ );
152
+ };
156
153
 
157
- export default withTranslation()(SubjectCarousel);
154
+ export default SubjectCarousel;
@@ -9,7 +9,7 @@
9
9
  import React, { MouseEvent } from 'react';
10
10
  import styled from '@emotion/styled';
11
11
  import { breakpoints, fonts, mq } from '@ndla/core';
12
- import { WithTranslation, withTranslation } from 'react-i18next';
12
+ import { useTranslation } from 'react-i18next';
13
13
  import { ItemProps } from '../Navigation/NavigationBox';
14
14
  import { NavigationBox } from '../Navigation';
15
15
 
@@ -46,18 +46,21 @@ type Props = {
46
46
  onSelectTopic?: (event: MouseEvent<HTMLElement>, id?: string) => void;
47
47
  };
48
48
 
49
- const ToolboxInfo = ({ title, introduction, topics, onSelectTopic, t }: Props & WithTranslation) => (
50
- <>
51
- <Heading>{title}</Heading>
52
- <Introduction>{introduction}</Introduction>
53
- <NavigationBox
54
- items={topics}
55
- listDirection="floating"
56
- heading={t('topicPage.topics')}
57
- colorMode="greyLighter"
58
- onClick={onSelectTopic}
59
- />
60
- </>
61
- );
62
-
63
- export default withTranslation()(ToolboxInfo);
49
+ const ToolboxInfo = ({ title, introduction, topics, onSelectTopic }: Props) => {
50
+ const { t } = useTranslation();
51
+ return (
52
+ <>
53
+ <Heading>{title}</Heading>
54
+ <Introduction>{introduction}</Introduction>
55
+ <NavigationBox
56
+ items={topics}
57
+ listDirection="floating"
58
+ heading={t('topicPage.topics')}
59
+ colorMode="greyLighter"
60
+ onClick={onSelectTopic}
61
+ />
62
+ </>
63
+ );
64
+ };
65
+
66
+ export default ToolboxInfo;
@@ -49,6 +49,16 @@ export const UserInfo = ({ user }: Props) => {
49
49
  <div data-hj-suppress>
50
50
  {t('user.mail')}: <b>{user.mail?.join(', ')}</b>
51
51
  </div>
52
+ {user.preferredLanguage && (
53
+ <div data-hj-suppress>
54
+ {t('user.preferredLanguage')}: <b>{t(`languages.${user.preferredLanguage}`)}</b>
55
+ </div>
56
+ )}
57
+ {user.mobile && (
58
+ <div data-hj-suppress>
59
+ {t('user.mobile')}: <b>{user.mobile}</b>
60
+ </div>
61
+ )}
52
62
  </ShortInfoDiv>
53
63
 
54
64
  {t('user.modal.collectedInfo')}
@@ -75,6 +85,18 @@ export const UserInfo = ({ user }: Props) => {
75
85
  </li>
76
86
  ))}
77
87
  </InfoList>
88
+ {parsedUser.grepCodes.length > 0 && (
89
+ <InfoList data-hj-suppress>
90
+ <li key="grepCodes">
91
+ {t('user.groupTypes.grepCode')}
92
+ <InfoList>
93
+ {parsedUser.grepCodes.map((code) => (
94
+ <li key={code.id}>{`${code.displayName} (${code.code})`}</li>
95
+ ))}
96
+ </InfoList>
97
+ </li>
98
+ </InfoList>
99
+ )}
78
100
  </div>
79
101
  );
80
102
  };
@@ -165,6 +165,7 @@ describe('parseUserObject', () => {
165
165
  primaryAffiliation: 'employee',
166
166
  displayName: 'David LærerVGS Jonsen',
167
167
  mail: ['david_laerervgs@feide.no'],
168
+ grepCodes: [],
168
169
  organizations: [
169
170
  {
170
171
  id: 'fc:org:spusers.feide.no',
@@ -25,7 +25,7 @@ export interface FeideMembershipType {
25
25
 
26
26
  interface FeideBaseGroup {
27
27
  id: string;
28
- type: 'fc:org' | 'fc:gogroup';
28
+ type: 'fc:org' | 'fc:gogroup' | 'fc:grep';
29
29
  displayName: string;
30
30
  membership: FeideMembershipType;
31
31
  }
@@ -53,7 +53,14 @@ export interface FeideGoGroup extends FeideBaseGroup {
53
53
  };
54
54
  }
55
55
 
56
- export type FeideGroup = FeideOrg | FeideGoGroup;
56
+ export interface FeideGrep extends FeideBaseGroup {
57
+ type: 'fc:grep';
58
+ code: string;
59
+ grep_type: 'aarstrinn' | 'fagkoder';
60
+ public: boolean;
61
+ }
62
+
63
+ export type FeideGroup = FeideOrg | FeideGoGroup | FeideGrep;
57
64
 
58
65
  export interface FeideUser {
59
66
  cn: string[];
@@ -66,6 +73,8 @@ export interface FeideUser {
66
73
  schacHomeOrganization?: string;
67
74
  sn: string[];
68
75
  uid: string[];
76
+ preferredLanguage?: string;
77
+ mobile?: string;
69
78
  }
70
79
 
71
80
  export interface FeideUserApiType extends FeideUser {
@@ -6,7 +6,7 @@
6
6
  */
7
7
 
8
8
  import { groupBy } from 'lodash';
9
- import { FeideGoGroup, FeideGroup, FeideOrg, FeideUserApiType } from './apiTypes';
9
+ import { FeideGoGroup, FeideGrep, FeideGroup, FeideOrg, FeideUserApiType } from './apiTypes';
10
10
 
11
11
  type GoGroupType = 'basic' | 'teaching' | 'other';
12
12
 
@@ -46,24 +46,29 @@ const createGroupings = (groups: FeideGoGroup[]) => {
46
46
  * @returns An object containing root groups mapped with children.
47
47
  */
48
48
  const parseOrgs = (groups: FeideGroup[]) => {
49
- const [roots, children] = groups.reduce<[FeideOrg[], FeideGoGroup[]]>(
49
+ const [roots, children, grep] = groups.reduce<[FeideOrg[], FeideGoGroup[], FeideGrep[]]>(
50
50
  (acc, curr) => {
51
51
  if (curr.type === 'fc:org') {
52
- return [acc[0].concat(curr), acc[1]];
52
+ return [acc[0].concat(curr), acc[1], acc[2]];
53
+ } else if (curr.type === 'fc:gogroup') {
54
+ return [acc[0], acc[1].concat(curr), acc[2]];
53
55
  } else {
54
- return [acc[0], acc[1].concat(curr)];
56
+ return [acc[0], acc[1], acc[2].concat(curr)];
55
57
  }
56
58
  },
57
- [[], []],
59
+ [[], [], []],
58
60
  );
59
61
 
60
62
  const childrenByParentId = groupBy(children, (c) => c.parent);
61
63
  const rootsWithChildren = roots.map((root) => ({ ...root, children: childrenByParentId[root.id] ?? [] }));
62
64
 
63
- return rootsWithChildren.map((root) => ({
64
- ...root,
65
- children: createGroupings(root.children),
66
- }));
65
+ return {
66
+ grepCodes: grep,
67
+ roots: rootsWithChildren.map((root) => ({
68
+ ...root,
69
+ children: createGroupings(root.children),
70
+ })),
71
+ };
67
72
  };
68
73
 
69
74
  /**
@@ -71,13 +76,14 @@ const parseOrgs = (groups: FeideGroup[]) => {
71
76
  * @returns A user object parsed in a presentable way to be handled by i.e UserInfo component.
72
77
  */
73
78
  export const parseUserObject = (user: FeideUserApiType) => {
74
- const orgs = parseOrgs(user.groups);
79
+ const { roots, grepCodes } = parseOrgs(user.groups);
75
80
 
76
81
  return {
77
82
  uid: user.uid,
78
83
  primaryAffiliation: user.eduPersonPrimaryAffiliation,
79
84
  displayName: user.displayName,
80
85
  mail: user.mail,
81
- organizations: orgs,
86
+ organizations: roots,
87
+ grepCodes,
82
88
  };
83
89
  };
@@ -1016,10 +1016,13 @@ const messages = {
1016
1016
  name: 'Name',
1017
1017
  mail: 'E-mail',
1018
1018
  username: 'Username',
1019
+ mobile: 'Phone number',
1020
+ preferredLanguage: 'Foretrukket språk',
1019
1021
  groupTypes: {
1020
1022
  basic: 'Basic group',
1021
1023
  teaching: 'Teaching group',
1022
1024
  other: 'Other groups',
1025
+ grepCode: 'Grep codes',
1023
1026
  },
1024
1027
  wrongUserInfoDisclaimer:
1025
1028
  'If any information is wrong, it must be updated by the host organization/school owner the user belongs to. An overview of available user support can be found here: ',
@@ -1073,6 +1076,7 @@ const messages = {
1073
1076
  detailView: 'Detailed listview',
1074
1077
  shortView: 'Card view',
1075
1078
  myPage: {
1079
+ noRecents: "You haven't added any resources yet. This is how you get started:",
1076
1080
  imageAlt:
1077
1081
  'Medium close-up of girl holding a tablet. On top of the tablet there are colour samples in different shapes and colours. Graphic image.',
1078
1082
  confirmDeleteAccount: 'Are you sure you want to delete your account?',
@@ -1014,10 +1014,13 @@ const messages = {
1014
1014
  name: 'Navn',
1015
1015
  mail: 'E-post',
1016
1016
  username: 'Brukernavn',
1017
+ mobile: 'Telefonnummer',
1018
+ preferredLanguage: 'Foretrukket målform',
1017
1019
  groupTypes: {
1018
1020
  basic: 'Basisgruppe',
1019
1021
  teaching: 'Undervisningsgruppe',
1020
1022
  other: 'Andre grupper',
1023
+ grepCode: 'Grepkoder',
1021
1024
  },
1022
1025
  wrongUserInfoDisclaimer:
1023
1026
  'Dersom informasjonen er feil, må den oppdateres av vertsorganisasjon/skoleeier som brukeren tilhører. Oversikt over brukerstøtte finnes her: ',
@@ -1070,6 +1073,7 @@ const messages = {
1070
1073
  detailView: 'Detaljert listevisning',
1071
1074
  shortView: 'Kort visning',
1072
1075
  myPage: {
1076
+ noRecents: 'Du har ikke lagt til noen ressurser ennå. Slik kommer du i gang:',
1073
1077
  imageAlt:
1074
1078
  'Halvnært bilde av jente som holder et nettbrett i hendene. Oppå nettbrettet ligger det ei samling fargeprøver i ulike former og farger. Grafikk.',
1075
1079
  confirmDeleteAccount: 'Er du sikker på at du vil slette kontoen?',
@@ -1015,10 +1015,13 @@ const messages = {
1015
1015
  name: 'Namn',
1016
1016
  mail: 'E-post',
1017
1017
  username: 'Brukarnamn',
1018
+ mobile: 'Telefonnummer',
1019
+ preferredLanguage: 'Føretrekt målform',
1018
1020
  groupTypes: {
1019
1021
  basic: 'Basisgruppe',
1020
1022
  teaching: 'Undervisningsgruppe',
1021
1023
  other: 'Andre grupper',
1024
+ grepCode: 'Grepkodar',
1022
1025
  },
1023
1026
  wrongUserInfoDisclaimer:
1024
1027
  'Dersom informasjonen er feil, må han oppdaterast av vertsorganisasjon/skuleeigar som brukaren tilhøyrer. Oversikt over brukarstøtte finst her: ',
@@ -1071,6 +1074,7 @@ const messages = {
1071
1074
  detailView: 'Detaljert listevisning',
1072
1075
  shortView: 'Kortvisning',
1073
1076
  myPage: {
1077
+ noRecents: 'Du har ikkje lagt til nokon ressurar enno. Slik kjem du i gang:',
1074
1078
  imageAlt:
1075
1079
  'Halvnært bilete av jente som held eit nettbrett i hendene. Oppå nettbrettet ligg det ei samling fargeprøver i ulike former og fargar. Grafikk.',
1076
1080
  confirmDeleteAccount: 'Er du sikker på at du vil slette kontoen?',
@@ -31,49 +31,49 @@ const messages = {
31
31
  },
32
32
  tagSelector: {
33
33
  aria: {
34
- screenReaderStatus: '{{count}} resultater tilgjengelig',
35
- disabled: 'utilgjengelig',
36
- selected: 'valgt',
37
- focused: 'fokusert',
34
+ screenReaderStatus: '{{count}} bohtosa olámuttos',
35
+ disabled: 'ii olámuttos',
36
+ selected: 'válljejuvvon',
37
+ focused: 'fokuserejuvvon',
38
38
  guidance: {
39
39
  menu: {
40
- updown: 'Bruk piltaster opp og ned for å velge emneknagger',
41
- enter: 'trykk enter for å velge den markerte emneknaggen',
42
- escape: 'trykk escape for å lukke menyen',
43
- tab: 'trykk tab for å velge emneknaggen og lukke menyen',
40
+ updown: 'Geavat njuollaboaluid vulos ja bajás válljet fáddágilkoriid',
41
+ enter: 'deaddil enter válljet merkejuvvon fáddágilkora',
42
+ escape: 'deaddil escape giddet fálu',
43
+ tab: 'deaddil tab válljet fáddágilkora ja giddet fálu',
44
44
  },
45
45
  input: {
46
- select: 'Emneknagg-meny',
47
- focused: 'er fokusert',
48
- refine: 'skriv for å filtrere listen med emneknagger',
49
- down: 'trykk pil ned for å åpne menyen',
50
- left: 'trykk venstre pil for å fokusere valgte emneknagger',
51
- space: 'trykk mellomrom for å opprette ny emneknagg',
46
+ select: 'Fáddágilkor-fállu',
47
+ focused: 'lea fokuserejuvvon',
48
+ refine: 'čále vai filtarasttet fáddágilkor listtu',
49
+ down: 'deaddil njuola vulos rahpat fálu',
50
+ left: 'deaddil gurut njuola fokuseret válljejuvvon fáddágilkoriid',
51
+ space: 'deaddil sátnegaskaboalu álggahit ođđa fáddágilkora',
52
52
  },
53
53
  value:
54
- 'Bruk høyre og venstre pil for å navigere mellom valgte emneknagger, trykk backspace for å fjerne den valgte emneknaggen. Dersom ingen emneknagg er valgt fjernes den siste.',
54
+ 'Geavat olgeš ja gurut njuolaid navigeret válljejuvvon fáddágilkoriid gaskkas, deaddil backspace sihkkut válljejuvvon fáddágilkora. Jus ii leat válljejuvvon fáddágilkor de sihkkojuvvo maŋimus.',
55
55
  },
56
56
  onChange: {
57
- deselect: 'emneknagg {{label}}, fjernet.',
58
- clear: 'Alle valgte emneknagger fjernet.',
59
- initialFocus: `Emneknagger {{labels}}, valgt.`,
60
- selectedDisabled: 'Emneknagg {{label}} kan ikke velges. Velg et annet alternativ.',
61
- selected: 'Emneknagg {{label}}, valgt.',
57
+ deselect: 'fáddágilkor {{label}}, sihkkojuvvon.',
58
+ clear: 'Buot válljejuvvon fáddágilkorat sihkkojuvvon.',
59
+ initialFocus: `Fáddágilkorat {{labels}}, válljejuvvon.`,
60
+ selectedDisabled: 'Fáddágilkor {{label}} ii sáhte válljejuvvot. Vállje eará molsaeavttu.',
61
+ selected: 'Fáddágilkor {{label}}, vállejuvvon.',
62
62
  },
63
63
  onFocus: {
64
- value: 'emneknagg {{label}} fokusert, {{position}}.',
65
- menu: 'emneknagg {{label}} {{status}}, {{position}}.',
66
- of: 'av',
64
+ value: 'fáddágilkor {{label}} fokuserejuvvon, {{position}}.',
65
+ menu: 'fáddágilkor {{label}} {{status}}, {{position}}.',
66
+ of: 'eret',
67
67
  },
68
- onFilter: ' for søkeord ',
68
+ onFilter: ' ohcansátnái ',
69
69
  },
70
- noOptions: 'Ingen valgmuligheter',
70
+ noOptions: 'Eai leat válljenvejolašvuođat',
71
71
  label: 'Bija fáddágilkora',
72
- createLabel: 'Legg til emneknagg {{tag}}',
72
+ createLabel: 'Lasit fáddágilkora {{tag}}',
73
73
  placeholder: 'Čále fáddágilkora',
74
74
  removeTag: 'Váldde eret {{name}}',
75
- hideTags: 'Skjul emneknagger',
76
- showTags: 'Vis emneknagger',
75
+ hideTags: 'Čiega fáddágilkoriid',
76
+ showTags: 'Čájet fáddágilkoriid',
77
77
  },
78
78
  htmlTitles: {
79
79
  titleTemplate,
@@ -1015,10 +1015,13 @@ const messages = {
1015
1015
  name: 'Namma',
1016
1016
  mail: 'Eboasta',
1017
1017
  username: 'Geavahan namma',
1018
+ mobile: 'Telefonnummar',
1019
+ preferredLanguage: 'Háliiduvvon giella',
1018
1020
  groupTypes: {
1019
1021
  basic: 'Vuođđojoavku',
1020
1022
  teaching: 'Oahpahusjoavku',
1021
1023
  other: 'Eará joavkkut',
1024
+ grepCode: 'Grepkoda',
1022
1025
  },
1023
1026
  wrongUserInfoDisclaimer:
1024
1027
  'Jus leat boasttudieđut, de ferte organisašuvdna/skuvlaeaiggát masá geavaheaddji gullá ođasmahttit dan. Visogova geavaheaddjidoarjaga ektui gávnnat dás: ',
@@ -1072,6 +1075,7 @@ const messages = {
1072
1075
  shortView: 'Oanehis listu',
1073
1076
 
1074
1077
  myPage: {
1078
+ noRecents: 'Du har ikkje lagt til nokon ressurar enno. Slik kjem du i gang:',
1075
1079
  imageAlt:
1076
1080
  'Halvnært bilde av jente som holder et nettbrett i hendene. Oppå nettbrettet ligger det ei samling fargeprøver i ulike former og farger. Grafikk.',
1077
1081
  confirmDeleteAccount: 'Leat go sihkar ahte dáhtut sihkkut kontu?',
@@ -1015,10 +1015,13 @@ const messages = {
1015
1015
  name: 'Navn',
1016
1016
  mail: 'E-post',
1017
1017
  username: 'Brukernavn',
1018
+ mobile: 'Telefonnummer',
1019
+ preferredLanguage: 'Føretrekt målform',
1018
1020
  groupTypes: {
1019
1021
  basic: 'Basisgruppe',
1020
1022
  teaching: 'Undervisningsgruppe',
1021
1023
  other: 'Andre grupper',
1024
+ grepCode: 'Grepkodar',
1022
1025
  },
1023
1026
  wrongUserInfoDisclaimer:
1024
1027
  'Dersom informasjonen er feil, må den oppdateres av vertsorganisasjon/skoleeier som brukeren tilhører. Oversikt over brukerstøtte finnes her: ',
@@ -1072,6 +1075,7 @@ const messages = {
1072
1075
  detailView: 'Detaljert listevisning',
1073
1076
  shortView: 'Kort visning',
1074
1077
  myPage: {
1078
+ noRecents: 'Du har ikkje lagt til nokon ressurar enno. Slik kjem du i gang:',
1075
1079
  imageAlt:
1076
1080
  'Halvnært bilde av jente som holder et nettbrett i hendene. Oppå nettbrettet ligger det ei samling fargeprøver i ulike former og farger. Grafikk.',
1077
1081
  confirmDeleteAccount: 'Er du sikker på at du vil slette kontoen?',
@@ -12,12 +12,7 @@ import React, { ReactNode } from 'react';
12
12
  import ReactDOM from 'react-dom';
13
13
 
14
14
  function canUseDOM() {
15
- return !!(
16
- typeof window !== 'undefined' &&
17
- window.document &&
18
- window.document.createElement &&
19
- !window.document.hidden
20
- ); // window.document.hidden === jsdom check
15
+ return !!(typeof window !== 'undefined' && window.document && !window.document.hidden); // window.document.hidden === jsdom check
21
16
  }
22
17
 
23
18
  export function createUniversalPortal(children: ReactNode, selector: string) {