@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.
- package/es/Article/ArticleHeaderWrapper.js +75 -112
- package/es/Footer/FooterLinks.js +13 -10
- package/es/Frontpage/FrontpageFilm.js +11 -8
- package/es/Frontpage/FrontpageMultidisciplinarySubject.js +13 -10
- package/es/Frontpage/FrontpageToolbox.js +11 -8
- package/es/LearningPaths/LearningPathLastStepNavigation.js +11 -8
- package/es/LearningPaths/LearningPathMenuAside.js +13 -10
- package/es/LearningPaths/LearningPathMobileHeader.js +8 -6
- package/es/LearningPaths/LearningPathMobileStepInfo.js +8 -5
- package/es/Masthead/MastheadSearchModal.js +10 -7
- package/es/Messages/MessageBox.js +11 -12
- package/es/NDLAFilm/CategorySelect.js +106 -146
- package/es/SearchTypeResult/ActiveFilterContent.js +9 -6
- package/es/SearchTypeResult/SearchHeader.js +14 -12
- package/es/SearchTypeResult/SearchNotionsResult.js +5 -6
- package/es/SearchTypeResult/SearchTypeHeader.js +17 -15
- package/es/Subject/SubjectCarousel.js +11 -8
- package/es/ToolboxPage/ToolboxInfo.js +9 -6
- package/es/User/UserInfo.js +23 -2
- package/es/User/parseUserObject.js +22 -12
- package/es/locale/messages-en.js +5 -1
- package/es/locale/messages-nb.js +5 -1
- package/es/locale/messages-nn.js +5 -1
- package/es/locale/messages-se.js +33 -29
- package/es/locale/messages-sma.js +5 -1
- package/es/utils/createUniversalPortal.js +1 -1
- package/lib/Animation/DisplayOnPageYOffset.d.ts +2 -2
- package/lib/Animation/Fade.d.ts +2 -2
- package/lib/Article/Article.d.ts +3 -3
- package/lib/Article/ArticleAccessMessage.d.ts +1 -1
- package/lib/Article/ArticleByline.d.ts +1 -1
- package/lib/Article/ArticleContent.d.ts +1 -1
- package/lib/Article/ArticleFootNotes.d.ts +1 -1
- package/lib/Article/ArticleHeaderWrapper.d.ts +4 -5
- package/lib/Article/ArticleHeaderWrapper.js +73 -108
- package/lib/Article/ArticleNotions.d.ts +1 -1
- package/lib/Article/ArticleSideBar.d.ts +1 -1
- package/lib/Aside/Aside.d.ts +1 -1
- package/lib/AudioPlayer/AudioPlayer.d.ts +1 -1
- package/lib/AudioPlayer/Controls.d.ts +1 -1
- package/lib/AudioPlayer/SpeechControl.d.ts +1 -1
- package/lib/AuthorInfo/AuthorInfo.d.ts +1 -1
- package/lib/BannerCard/BannerCard.d.ts +1 -1
- package/lib/BlogPosts/BlogPost.d.ts +1 -1
- package/lib/BlogPosts/BlogPostWrapper.d.ts +1 -1
- package/lib/Breadcrumb/ActionBreadcrumb.d.ts +1 -1
- package/lib/Breadcrumb/Breadcrumb.d.ts +1 -1
- package/lib/Breadcrumb/HeaderBreadcrumb.d.ts +1 -1
- package/lib/Breadcrumb/HomeBreadcrumb.d.ts +1 -1
- package/lib/Breadcrumblist/Breadcrumblist.d.ts +1 -1
- package/lib/CompetenceGoalTab/CompetenceGoalItem.d.ts +1 -1
- package/lib/CompetenceGoalTab/CompetenceGoalTab.d.ts +1 -1
- package/lib/CompetenceGoalTab/CompetenceItem.d.ts +1 -1
- package/lib/CompetenceGoalTab/SearchButton.d.ts +1 -1
- package/lib/CompetenceGoals/CompetenceGoalsDialog.d.ts +1 -1
- package/lib/ComponentCursor/ComponentCursor.d.ts +1 -1
- package/lib/ContentCard/ContentCard.d.ts +1 -1
- package/lib/ContentLoader/index.d.ts +1 -1
- package/lib/ContentPlaceholder/ContentPlaceholder.d.ts +1 -1
- package/lib/ContentTypeBadge/ContentTypeBadge.d.ts +9 -9
- package/lib/CopyParagraphButton/CopyParagraphButton.d.ts +1 -1
- package/lib/CreatedBy/CreatedBy.d.ts +1 -1
- package/lib/Dialog/Dialog.d.ts +1 -1
- package/lib/ErrorMessage/ErrorMessage.d.ts +1 -1
- package/lib/ErrorMessage/ErrorResourceAccessDenied.d.ts +1 -1
- package/lib/FactBox/FactBox.d.ts +1 -1
- package/lib/Figure/Figure.d.ts +2 -2
- package/lib/Figure/FigureBylineExpandButton.d.ts +1 -1
- package/lib/Figure/FigureExpandButton.d.ts +1 -1
- package/lib/Figure/FigureLicense.d.ts +2 -2
- package/lib/Figure/FigureLicenseDialog.d.ts +1 -1
- package/lib/Figure/FigureOpenDialogButton.d.ts +1 -1
- package/lib/FileList/File.d.ts +1 -1
- package/lib/FileList/FileList.d.ts +1 -1
- package/lib/Filter/FilterButtons.d.ts +1 -1
- package/lib/Filter/FilterCarousel.d.ts +1 -1
- package/lib/Filter/FilterList.d.ts +1 -1
- package/lib/Filter/FilterListPhone.d.ts +1 -1
- package/lib/Filter/ToggleItem.d.ts +1 -1
- package/lib/Footer/EditorName.d.ts +1 -1
- package/lib/Footer/Footer.d.ts +1 -1
- package/lib/Footer/FooterAuth.d.ts +1 -1
- package/lib/Footer/FooterLinks.d.ts +3 -4
- package/lib/Footer/FooterLinks.js +12 -10
- package/lib/Footer/FooterPrivacy.d.ts +1 -1
- package/lib/Footer/FooterText.d.ts +1 -1
- package/lib/Footer/privacy_en.d.ts +1 -1
- package/lib/Footer/privacy_nb.d.ts +1 -1
- package/lib/Footer/privacy_nn.d.ts +1 -1
- package/lib/Frontpage/FrontpageAllSubjects.d.ts +1 -1
- package/lib/Frontpage/FrontpageFilm.d.ts +2 -4
- package/lib/Frontpage/FrontpageFilm.js +10 -8
- package/lib/Frontpage/FrontpageHeader.d.ts +1 -1
- package/lib/Frontpage/FrontpageInfo.d.ts +1 -1
- package/lib/Frontpage/FrontpageMultidisciplinarySubject.d.ts +7 -8
- package/lib/Frontpage/FrontpageMultidisciplinarySubject.js +12 -10
- package/lib/Frontpage/FrontpageProgramMenu.d.ts +1 -1
- package/lib/Frontpage/FrontpageSearch.d.ts +1 -1
- package/lib/Frontpage/FrontpageToolbox.d.ts +2 -4
- package/lib/Frontpage/FrontpageToolbox.js +10 -8
- package/lib/Frontpage/illustrations/Fellesfag.d.ts +1 -1
- package/lib/Frontpage/illustrations/FrontpageHeaderIllustration.d.ts +1 -1
- package/lib/Frontpage/illustrations/FrontpageIllustrations.d.ts +2 -2
- package/lib/Frontpage/illustrations/FrontpageSubjectIllustration.d.ts +1 -1
- package/lib/Frontpage/illustrations/MenuFellesfag.d.ts +1 -1
- package/lib/Frontpage/illustrations/MenuStudiespesialiserende.d.ts +1 -1
- package/lib/Frontpage/illustrations/MenuYrkesfag.d.ts +1 -1
- package/lib/Frontpage/illustrations/Studiespesialiserende.d.ts +1 -1
- package/lib/Frontpage/illustrations/Yrkesfag.d.ts +1 -1
- package/lib/Frontpage/illustrations/index.d.ts +6 -6
- package/lib/Hero/Hero.d.ts +8 -8
- package/lib/Image/Image.d.ts +2 -2
- package/lib/Image/ImageLink.d.ts +1 -1
- package/lib/Image/LazyLoadImage.d.ts +1 -1
- package/lib/InfoBlock/InfoBlock.d.ts +1 -1
- package/lib/InfoBox/InfoBox.d.ts +1 -1
- package/lib/InfoWidget/InfoWidget.d.ts +1 -1
- package/lib/LanguageSelector/LanguageSelector.d.ts +1 -1
- package/lib/LanguageSelector/LanguageSelectorContent.d.ts +1 -1
- package/lib/Layout/Content.d.ts +2 -2
- package/lib/Layout/LayoutItem.d.ts +1 -1
- package/lib/Layout/OneColumn.d.ts +1 -1
- package/lib/Layout/PageContainer.d.ts +1 -1
- package/lib/LearningPaths/LearningPathContent.d.ts +1 -1
- package/lib/LearningPaths/LearningPathInformation.d.ts +1 -1
- package/lib/LearningPaths/LearningPathLastStepNavigation.d.ts +3 -4
- package/lib/LearningPaths/LearningPathLastStepNavigation.js +10 -8
- package/lib/LearningPaths/LearningPathMenu.d.ts +1 -1
- package/lib/LearningPaths/LearningPathMenuAside.d.ts +2 -4
- package/lib/LearningPaths/LearningPathMenuAside.js +12 -10
- package/lib/LearningPaths/LearningPathMenuAsideCopyright.d.ts +1 -1
- package/lib/LearningPaths/LearningPathMenuContent.d.ts +1 -1
- package/lib/LearningPaths/LearningPathMenuIntro.d.ts +1 -1
- package/lib/LearningPaths/LearningPathMenuModalWrapper.d.ts +1 -1
- package/lib/LearningPaths/LearningPathMobileHeader.d.ts +2 -4
- package/lib/LearningPaths/LearningPathMobileHeader.js +7 -6
- package/lib/LearningPaths/LearningPathMobileStepInfo.d.ts +2 -4
- package/lib/LearningPaths/LearningPathMobileStepInfo.js +7 -5
- package/lib/LearningPaths/LearningPathSticky.d.ts +3 -3
- package/lib/LearningPaths/LearningPathWrapper.d.ts +1 -1
- package/lib/Logo/Logo.d.ts +1 -1
- package/lib/Logo/SvgLogo.d.ts +1 -1
- package/lib/Masthead/Masthead.d.ts +2 -2
- package/lib/Masthead/MastheadAuthModal.d.ts +1 -1
- package/lib/Masthead/MastheadSearchModal.d.ts +3 -4
- package/lib/Masthead/MastheadSearchModal.js +9 -7
- package/lib/Masthead/SkipToMainContent.d.ts +1 -1
- package/lib/MediaList/MediaList.d.ts +8 -8
- package/lib/Messages/MessageBanner.d.ts +1 -1
- package/lib/Messages/MessageBox.d.ts +2 -5
- package/lib/Messages/MessageBox.js +10 -14
- package/lib/Messages/MessageBoxTag.d.ts +1 -1
- package/lib/MultidisciplinarySubject/Illustrations.d.ts +7 -7
- package/lib/MultidisciplinarySubject/List.d.ts +1 -1
- package/lib/MultidisciplinarySubject/ListItem.d.ts +1 -1
- package/lib/MultidisciplinarySubject/MultidisciplinarySubject.d.ts +1 -1
- package/lib/MultidisciplinarySubject/MultidisciplinarySubjectHeader.d.ts +1 -1
- package/lib/MyNdla/Resource/Folder.d.ts +1 -1
- package/lib/MyNdla/Resource/FolderInput.d.ts +1 -1
- package/lib/NDLAFilm/AboutNdlaFilm.d.ts +1 -1
- package/lib/NDLAFilm/AllMoviesAlphabetically.d.ts +1 -1
- package/lib/NDLAFilm/CategorySelect.d.ts +10 -5
- package/lib/NDLAFilm/CategorySelect.js +99 -145
- package/lib/NDLAFilm/FilmContentCard.d.ts +1 -1
- package/lib/NDLAFilm/FilmContentCardTags.d.ts +1 -1
- package/lib/NDLAFilm/FilmMovieList.d.ts +1 -1
- package/lib/NDLAFilm/FilmMovieSearch.d.ts +1 -1
- package/lib/NDLAFilm/FilmSlideshow.d.ts +1 -1
- package/lib/NDLAFilm/MovieGrid.d.ts +1 -1
- package/lib/NDLAFilm/NavigationArrow.d.ts +2 -2
- package/lib/NDLAFilm/SlideshowIndicator.d.ts +1 -1
- package/lib/NDLAFilm/VisualElement.d.ts +1 -1
- package/lib/NDLAFilm/filmStyles.d.ts +2 -2
- package/lib/Navigation/NavigationBox.d.ts +1 -1
- package/lib/Navigation/NavigationHeading.d.ts +1 -1
- package/lib/Navigation/NavigationTopicAbout.d.ts +1 -1
- package/lib/NoContentBox/NoContentBox.d.ts +1 -1
- package/lib/Notion/ConceptNotion.d.ts +1 -1
- package/lib/Notion/FigureNotion.d.ts +1 -1
- package/lib/Notion/Notion.d.ts +1 -1
- package/lib/Notion/NotionImage.d.ts +1 -1
- package/lib/Notion/NotionVisualElement.d.ts +1 -1
- package/lib/Portrait/Portrait.d.ts +1 -1
- package/lib/Programme/Programme.d.ts +1 -1
- package/lib/Programme/ProgrammeSubjects.d.ts +1 -1
- package/lib/RadioButtonGroup/RadioButtonGroup.d.ts +1 -1
- package/lib/RelatedArticleList/RelatedArticleList.d.ts +2 -2
- package/lib/Resource/BlockResource.d.ts +1 -1
- package/lib/Resource/ListResource.d.ts +1 -1
- package/lib/Resource/resourceComponents.d.ts +7 -7
- package/lib/ResourceBox/ResourceBox.d.ts +1 -1
- package/lib/ResourceGroup/ResourceGroup.d.ts +1 -1
- package/lib/ResourceGroup/ResourceItem.d.ts +1 -1
- package/lib/ResourceGroup/ResourceList.d.ts +1 -1
- package/lib/ResourcesWrapper/ResourcesTitle.d.ts +1 -1
- package/lib/ResourcesWrapper/ResourcesTopicTitle.d.ts +1 -1
- package/lib/ResourcesWrapper/ResourcesWrapper.d.ts +1 -1
- package/lib/Search/ActiveFilterContent.d.ts +2 -2
- package/lib/Search/ActiveFilters.d.ts +1 -1
- package/lib/Search/ContentTypeResult.d.ts +1 -1
- package/lib/Search/ContentTypeResultStyles.d.ts +6 -6
- package/lib/Search/LoadingWrapper.d.ts +1 -1
- package/lib/Search/SearchField.d.ts +1 -1
- package/lib/Search/SearchFieldForm.d.ts +1 -1
- package/lib/Search/SearchResult.d.ts +2 -2
- package/lib/Search/SearchResultSleeve.d.ts +1 -1
- package/lib/Search/ToggleSearchButton.d.ts +1 -1
- package/lib/SearchTypeResult/ActiveFilterContent.d.ts +3 -4
- package/lib/SearchTypeResult/ActiveFilterContent.js +8 -6
- package/lib/SearchTypeResult/ActiveFilters.d.ts +1 -1
- package/lib/SearchTypeResult/PopupFilter.d.ts +1 -1
- package/lib/SearchTypeResult/ResultNavigation.d.ts +1 -1
- package/lib/SearchTypeResult/SearchFieldHeader.d.ts +1 -1
- package/lib/SearchTypeResult/SearchFilterContent.d.ts +1 -1
- package/lib/SearchTypeResult/SearchHeader.d.ts +3 -4
- package/lib/SearchTypeResult/SearchHeader.js +13 -12
- package/lib/SearchTypeResult/SearchItem.d.ts +1 -1
- package/lib/SearchTypeResult/SearchItemList.d.ts +1 -1
- package/lib/SearchTypeResult/SearchItems.d.ts +1 -1
- package/lib/SearchTypeResult/SearchNotionItem.d.ts +1 -1
- package/lib/SearchTypeResult/SearchNotionsResult.d.ts +3 -4
- package/lib/SearchTypeResult/SearchNotionsResult.js +5 -6
- package/lib/SearchTypeResult/SearchSubjectItem.d.ts +1 -1
- package/lib/SearchTypeResult/SearchSubjectResult.d.ts +1 -1
- package/lib/SearchTypeResult/SearchTypeHeader.d.ts +1 -2
- package/lib/SearchTypeResult/SearchTypeHeader.js +15 -12
- package/lib/SearchTypeResult/SearchTypeResult.d.ts +1 -1
- package/lib/SearchTypeResult/SearchViewType.d.ts +1 -1
- package/lib/SearchTypeResult/components/ItemContexts.d.ts +1 -1
- package/lib/SearchTypeResult/components/ItemResourceHeader.d.ts +1 -1
- package/lib/SearchTypeResult/components/ItemTopicHeader.d.ts +1 -1
- package/lib/SearchTypeResult/components/SubjectFilters.d.ts +1 -1
- package/lib/SectionHeading/SectionHeading.d.ts +1 -1
- package/lib/SnackBar/DefaultSnackbar.d.ts +1 -1
- package/lib/SnackBar/SnackbarProvider.d.ts +2 -2
- package/lib/Subject/Subject.d.ts +8 -8
- package/lib/Subject/SubjectAbout.d.ts +1 -1
- package/lib/Subject/SubjectArchive.d.ts +1 -1
- package/lib/Subject/SubjectBanner.d.ts +1 -1
- package/lib/Subject/SubjectCarousel.d.ts +2 -4
- package/lib/Subject/SubjectCarousel.js +10 -8
- package/lib/Subject/SubjectHeader.d.ts +1 -1
- package/lib/Subject/SubjectLinks.d.ts +1 -1
- package/lib/Subject/SubjectNewContent.d.ts +1 -1
- package/lib/Subject/SubjectShortcuts.d.ts +1 -1
- package/lib/Subject/SubjectSocial.d.ts +2 -2
- package/lib/Table/Table.d.ts +1 -1
- package/lib/TagSelector/Control.d.ts +1 -1
- package/lib/TagSelector/DropdownIndicator.d.ts +1 -1
- package/lib/TagSelector/Input.d.ts +1 -1
- package/lib/TagSelector/Menu.d.ts +1 -1
- package/lib/TagSelector/MenuList.d.ts +2 -2
- package/lib/TagSelector/Option.d.ts +1 -1
- package/lib/TagSelector/SelectContainer.d.ts +1 -1
- package/lib/TagSelector/TagSelector.d.ts +1 -1
- package/lib/TagSelector/ValueButton.d.ts +2 -2
- package/lib/ToolboxPage/ToolboxInfo.d.ts +3 -4
- package/lib/ToolboxPage/ToolboxInfo.js +8 -6
- package/lib/Topic/Loader.d.ts +1 -1
- package/lib/Topic/Topic.d.ts +1 -1
- package/lib/TopicIntroductionList/TopicIntroduction.d.ts +1 -1
- package/lib/TopicIntroductionList/TopicIntroductionList.d.ts +1 -1
- package/lib/TopicIntroductionList/TopicIntroductionShortcuts.d.ts +1 -1
- package/lib/TopicIntroductionList/TopicShortcutItem.d.ts +1 -1
- package/lib/Translation/Translation.d.ts +1 -1
- package/lib/Translation/TranslationBox.d.ts +1 -1
- package/lib/Translation/TranslationLine.d.ts +1 -1
- package/lib/TreeStructure/AddFolderButton.d.ts +1 -1
- package/lib/TreeStructure/FolderItem.d.ts +1 -1
- package/lib/TreeStructure/FolderItems.d.ts +1 -1
- package/lib/TreeStructure/NavigationLink.d.ts +1 -1
- package/lib/TreeStructure/TreeStructure.d.ts +1 -1
- package/lib/TreeStructure/helperFunctions.d.ts +1 -1
- package/lib/User/AuthModal.d.ts +1 -1
- package/lib/User/UserInfo.d.ts +1 -1
- package/lib/User/UserInfo.js +23 -2
- package/lib/User/apiTypes.d.ts +10 -2
- package/lib/User/parseUserObject.d.ts +2 -1
- package/lib/User/parseUserObject.js +22 -12
- package/lib/locale/LocaleProvider.d.ts +1 -1
- package/lib/locale/messages-en.d.ts +4 -0
- package/lib/locale/messages-en.js +5 -1
- package/lib/locale/messages-nb.d.ts +4 -0
- package/lib/locale/messages-nb.js +5 -1
- package/lib/locale/messages-nn.d.ts +4 -0
- package/lib/locale/messages-nn.js +5 -1
- package/lib/locale/messages-se.d.ts +4 -0
- package/lib/locale/messages-se.js +33 -29
- package/lib/locale/messages-sma.d.ts +4 -0
- package/lib/locale/messages-sma.js +5 -1
- package/lib/utils/createUniversalPortal.d.ts +1 -1
- package/lib/utils/createUniversalPortal.js +1 -1
- package/package.json +10 -10
- package/src/Article/ArticleHeaderWrapper.tsx +53 -66
- package/src/Footer/FooterLinks.tsx +43 -40
- package/src/Frontpage/FrontpageFilm.tsx +20 -17
- package/src/Frontpage/FrontpageMultidisciplinarySubject.tsx +33 -30
- package/src/Frontpage/FrontpageToolbox.tsx +21 -18
- package/src/LearningPaths/LearningPathLastStepNavigation.tsx +32 -29
- package/src/LearningPaths/LearningPathMenuAside.tsx +25 -29
- package/src/LearningPaths/LearningPathMobileHeader.tsx +11 -8
- package/src/LearningPaths/LearningPathMobileStepInfo.tsx +13 -10
- package/src/Masthead/MastheadSearchModal.tsx +36 -35
- package/src/Messages/MessageBox.tsx +2 -3
- package/src/NDLAFilm/CategorySelect.tsx +77 -97
- package/src/SearchTypeResult/ActiveFilterContent.tsx +18 -15
- package/src/SearchTypeResult/SearchHeader.tsx +4 -4
- package/src/SearchTypeResult/SearchNotionsResult.tsx +2 -3
- package/src/SearchTypeResult/SearchTypeHeader.tsx +48 -45
- package/src/Subject/SubjectCarousel.tsx +93 -96
- package/src/ToolboxPage/ToolboxInfo.tsx +19 -16
- package/src/User/UserInfo.tsx +22 -0
- package/src/User/__tests__/parseUserObject-test.ts +1 -0
- package/src/User/apiTypes.ts +11 -2
- package/src/User/parseUserObject.ts +17 -11
- package/src/locale/messages-en.ts +4 -0
- package/src/locale/messages-nb.ts +4 -0
- package/src/locale/messages-nn.ts +4 -0
- package/src/locale/messages-se.ts +32 -28
- package/src/locale/messages-sma.ts +4 -0
- 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 {
|
|
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
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
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
|
|
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 {
|
|
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
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
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;
|
package/src/User/UserInfo.tsx
CHANGED
|
@@ -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
|
};
|
package/src/User/apiTypes.ts
CHANGED
|
@@ -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
|
|
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
|
|
64
|
-
|
|
65
|
-
|
|
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
|
|
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:
|
|
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}}
|
|
35
|
-
disabled: '
|
|
36
|
-
selected: '
|
|
37
|
-
focused: '
|
|
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: '
|
|
41
|
-
enter: '
|
|
42
|
-
escape: '
|
|
43
|
-
tab: '
|
|
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: '
|
|
47
|
-
focused: '
|
|
48
|
-
refine: '
|
|
49
|
-
down: '
|
|
50
|
-
left: '
|
|
51
|
-
space: '
|
|
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
|
-
'
|
|
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: '
|
|
58
|
-
clear: '
|
|
59
|
-
initialFocus: `
|
|
60
|
-
selectedDisabled: '
|
|
61
|
-
selected: '
|
|
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: '
|
|
65
|
-
menu: '
|
|
66
|
-
of: '
|
|
64
|
+
value: 'fáddágilkor {{label}} fokuserejuvvon, {{position}}.',
|
|
65
|
+
menu: 'fáddágilkor {{label}} {{status}}, {{position}}.',
|
|
66
|
+
of: 'eret',
|
|
67
67
|
},
|
|
68
|
-
onFilter: '
|
|
68
|
+
onFilter: ' ohcansátnái ',
|
|
69
69
|
},
|
|
70
|
-
noOptions: '
|
|
70
|
+
noOptions: 'Eai leat válljenvejolašvuođat',
|
|
71
71
|
label: 'Bija fáddágilkora',
|
|
72
|
-
createLabel: '
|
|
72
|
+
createLabel: 'Lasit fáddágilkora {{tag}}',
|
|
73
73
|
placeholder: 'Čále fáddágilkora',
|
|
74
74
|
removeTag: 'Váldde eret {{name}}',
|
|
75
|
-
hideTags: '
|
|
76
|
-
showTags: '
|
|
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) {
|