@ndla/ui 51.0.0 → 53.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/es/Article/Article.js +113 -120
- package/es/Article/ArticleHeaderWrapper.js +14 -20
- package/es/Article/ArticleParagraph.js +25 -0
- package/es/Article/index.js +1 -0
- package/es/AudioPlayer/AudioPlayer.js +13 -13
- package/es/AudioPlayer/Controls.js +22 -38
- package/es/Breadcrumb/Breadcrumb.js +2 -33
- package/es/Breadcrumb/BreadcrumbItem.js +16 -29
- package/es/Breadcrumb/index.js +0 -1
- package/es/CodeBlock/CodeBlock.js +115 -0
- package/es/CodeBlock/codeLanguageOptions.js +84 -0
- package/es/CodeBlock/index.js +10 -0
- package/es/CreatedBy/CreatedBy.js +4 -4
- package/es/Embed/BrightcoveEmbed.js +3 -3
- package/es/Embed/CodeEmbed.js +2 -2
- package/es/Embed/ConceptEmbed.js +37 -33
- package/es/Embed/ExternalEmbed.js +2 -2
- package/es/Embed/IframeEmbed.js +1 -1
- package/es/Embed/ImageEmbed.js +17 -14
- package/es/Embed/RelatedContentEmbed.js +3 -3
- package/es/Embed/UuDisclaimerEmbed.js +4 -3
- package/es/Embed/conceptComponents.js +10 -10
- package/es/Figure/Figure.js +32 -19
- package/es/FrontpageArticle/FrontpageArticle.js +3 -3
- package/es/Gloss/Gloss.js +12 -10
- package/es/Hero/Hero.js +1 -1
- package/es/Image/Image.js +3 -3
- package/es/LanguageSelector/LanguageSelector.js +5 -5
- package/es/Layout/LayoutItem.js +2 -1
- package/es/Layout/OneColumn.js +22 -28
- package/es/Layout/PageContainer.js +21 -17
- package/es/LicenseByline/LicenseLink.js +5 -6
- package/es/Messages/MessageBox.js +9 -7
- package/es/MyNdla/Resource/index.js +1 -2
- package/es/MyNdla/index.js +1 -2
- package/es/Notion/Notion.js +4 -4
- package/es/Resource/BlockResource.js +13 -15
- package/es/Resource/ListResource.js +13 -15
- package/es/Search/ContentTypeResult.js +4 -4
- package/es/Search/SearchResult.js +11 -11
- package/es/Search/SearchResultSleeve.js +16 -16
- package/es/TreeStructure/TreeStructure.js +6 -6
- package/es/all.css +1 -1
- package/es/index.js +5 -20
- package/es/locale/messages-en.js +15 -2
- package/es/locale/messages-nb.js +15 -2
- package/es/locale/messages-nn.js +16 -3
- package/es/locale/messages-se.js +14 -1
- package/es/locale/messages-sma.js +15 -2
- package/es/types.js +0 -9
- package/lib/Article/Article.d.ts +8 -11
- package/lib/Article/Article.js +111 -118
- package/lib/Article/ArticleHeaderWrapper.js +14 -20
- package/lib/Article/ArticleParagraph.d.ts +13 -0
- package/lib/Article/ArticleParagraph.js +32 -0
- package/lib/Article/index.d.ts +2 -0
- package/lib/Article/index.js +7 -0
- package/lib/AudioPlayer/AudioPlayer.js +13 -13
- package/lib/AudioPlayer/Controls.js +21 -37
- package/lib/Breadcrumb/Breadcrumb.d.ts +1 -2
- package/lib/Breadcrumb/Breadcrumb.js +2 -33
- package/lib/Breadcrumb/BreadcrumbItem.js +16 -29
- package/lib/Breadcrumb/index.d.ts +0 -1
- package/lib/Breadcrumb/index.js +0 -7
- package/lib/CodeBlock/CodeBlock.d.ts +18 -0
- package/lib/CodeBlock/CodeBlock.js +121 -0
- package/lib/{Navigation/index.d.ts → CodeBlock/codeLanguageOptions.d.ts} +5 -2
- package/lib/CodeBlock/codeLanguageOptions.js +90 -0
- package/lib/CodeBlock/index.d.ts +9 -0
- package/lib/CodeBlock/index.js +20 -0
- package/lib/CreatedBy/CreatedBy.js +4 -4
- package/lib/Embed/BrightcoveEmbed.js +3 -3
- package/lib/Embed/CodeEmbed.js +2 -2
- package/lib/Embed/ConceptEmbed.d.ts +1 -1
- package/lib/Embed/ConceptEmbed.js +36 -33
- package/lib/Embed/ExternalEmbed.js +2 -2
- package/lib/Embed/IframeEmbed.js +1 -1
- package/lib/Embed/ImageEmbed.js +17 -14
- package/lib/Embed/RelatedContentEmbed.js +3 -3
- package/lib/Embed/UuDisclaimerEmbed.js +4 -3
- package/lib/Embed/conceptComponents.js +10 -10
- package/lib/Figure/Figure.d.ts +2 -5
- package/lib/Figure/Figure.js +32 -23
- package/lib/FrontpageArticle/FrontpageArticle.js +3 -3
- package/lib/Gloss/Gloss.js +12 -10
- package/lib/Hero/Hero.js +1 -1
- package/lib/Image/Image.js +2 -2
- package/lib/LanguageSelector/LanguageSelector.js +5 -5
- package/lib/Layout/LayoutItem.js +2 -1
- package/lib/Layout/OneColumn.d.ts +3 -8
- package/lib/Layout/OneColumn.js +22 -30
- package/lib/Layout/PageContainer.d.ts +3 -7
- package/lib/Layout/PageContainer.js +21 -19
- package/lib/LicenseByline/LicenseLink.js +5 -6
- package/lib/Messages/MessageBox.d.ts +2 -1
- package/lib/Messages/MessageBox.js +9 -7
- package/lib/MyNdla/Resource/index.d.ts +1 -2
- package/lib/MyNdla/Resource/index.js +0 -7
- package/lib/MyNdla/index.d.ts +1 -2
- package/lib/MyNdla/index.js +0 -7
- package/lib/Notion/Notion.js +4 -4
- package/lib/Resource/BlockResource.js +13 -15
- package/lib/Resource/ListResource.js +13 -15
- package/lib/Search/ContentTypeResult.js +4 -4
- package/lib/Search/SearchResult.js +10 -10
- package/lib/Search/SearchResultSleeve.js +16 -16
- package/lib/TreeStructure/TreeStructure.js +6 -6
- package/lib/all.css +1 -1
- package/lib/index.d.ts +5 -20
- package/lib/index.js +17 -254
- package/lib/locale/messages-en.d.ts +13 -0
- package/lib/locale/messages-en.js +15 -2
- package/lib/locale/messages-nb.d.ts +13 -0
- package/lib/locale/messages-nb.js +15 -2
- package/lib/locale/messages-nn.d.ts +13 -0
- package/lib/locale/messages-nn.js +16 -3
- package/lib/locale/messages-se.d.ts +13 -0
- package/lib/locale/messages-se.js +14 -1
- package/lib/locale/messages-sma.d.ts +13 -0
- package/lib/locale/messages-sma.js +15 -2
- package/lib/types.d.ts +0 -51
- package/lib/types.js +1 -10
- package/package.json +16 -22
- package/src/Article/Article.tsx +179 -119
- package/src/Article/ArticleHeaderWrapper.tsx +17 -21
- package/src/Article/ArticleParagraph.tsx +22 -0
- package/src/Article/index.ts +4 -0
- package/src/AudioPlayer/AudioPlayer.tsx +2 -2
- package/src/AudioPlayer/Controls.tsx +5 -5
- package/src/Breadcrumb/Breadcrumb.stories.tsx +0 -4
- package/src/Breadcrumb/Breadcrumb.tsx +1 -38
- package/src/Breadcrumb/BreadcrumbItem.tsx +5 -19
- package/src/Breadcrumb/index.ts +0 -2
- package/src/CodeBlock/CodeBlock.stories.tsx +113 -0
- package/src/CodeBlock/CodeBlock.tsx +228 -0
- package/src/CodeBlock/codeLanguageOptions.ts +115 -0
- package/src/CodeBlock/index.ts +10 -0
- package/src/CreatedBy/CreatedBy.tsx +2 -2
- package/src/Embed/AudioEmbed.stories.tsx +6 -4
- package/src/Embed/BrightcoveEmbed.stories.tsx +6 -4
- package/src/Embed/BrightcoveEmbed.tsx +2 -2
- package/src/Embed/CodeEmbed.tsx +2 -2
- package/src/Embed/ConceptEmbed.stories.tsx +6 -4
- package/src/Embed/ConceptEmbed.tsx +103 -96
- package/src/Embed/ExternalEmbed.stories.tsx +6 -4
- package/src/Embed/ExternalEmbed.tsx +2 -2
- package/src/Embed/H5pEmbed.stories.tsx +6 -4
- package/src/Embed/IframeEmbed.stories.tsx +6 -4
- package/src/Embed/IframeEmbed.tsx +1 -1
- package/src/Embed/ImageEmbed.stories.tsx +6 -4
- package/src/Embed/ImageEmbed.tsx +19 -11
- package/src/Embed/RelatedContentEmbed.stories.tsx +6 -4
- package/src/Embed/RelatedContentEmbed.tsx +3 -3
- package/src/Embed/UuDisclaimerEmbed.stories.tsx +23 -4
- package/src/Embed/UuDisclaimerEmbed.tsx +1 -1
- package/src/Embed/conceptComponents.tsx +1 -0
- package/src/Figure/Figure.tsx +57 -18
- package/src/Footer/Footer.stories.tsx +1 -1
- package/src/FrontpageArticle/FrontpageArticle.tsx +3 -3
- package/src/Gloss/Gloss.tsx +4 -2
- package/src/Hero/Hero.tsx +1 -1
- package/src/Image/Image.tsx +2 -2
- package/src/LanguageSelector/LanguageSelector.tsx +1 -1
- package/src/Layout/LayoutItem.tsx +2 -1
- package/src/Layout/OneColumn.tsx +25 -35
- package/src/Layout/PageContainer.tsx +19 -23
- package/src/LicenseByline/LicenseLink.tsx +1 -2
- package/src/Messages/MessageBox.tsx +3 -2
- package/src/MyNdla/Resource/index.ts +1 -2
- package/src/MyNdla/index.ts +1 -2
- package/src/Notion/Notion.tsx +2 -2
- package/src/Resource/BlockResource.tsx +4 -8
- package/src/Resource/ListResource.tsx +4 -6
- package/src/Search/ContentTypeResult.tsx +4 -4
- package/src/Search/SearchResult.tsx +2 -2
- package/src/Search/SearchResultSleeve.tsx +7 -9
- package/src/Table/Table.stories.tsx +8 -8
- package/src/TreeStructure/TreeStructure.stories.tsx +85 -28
- package/src/TreeStructure/TreeStructure.tsx +1 -1
- package/src/all.scss +2 -3
- package/src/index.ts +7 -48
- package/src/locale/messages-en.ts +17 -1
- package/src/locale/messages-nb.ts +17 -1
- package/src/locale/messages-nn.ts +18 -2
- package/src/locale/messages-se.ts +16 -0
- package/src/locale/messages-sma.ts +17 -1
- package/src/types.ts +0 -62
- package/es/Article/ArticleAccessMessage.js +0 -43
- package/es/Article/ArticleNotions.js +0 -90
- package/es/Aside/Aside.js +0 -75
- package/es/Aside/index.js +0 -10
- package/es/BannerCard/BannerCard.js +0 -84
- package/es/BannerCard/index.js +0 -10
- package/es/Breadcrumb/HeaderBreadcrumb.js +0 -57
- package/es/CompetenceGoalTab/CompetenceGoalItem.js +0 -42
- package/es/CompetenceGoalTab/CompetenceGoalTab.js +0 -75
- package/es/CompetenceGoalTab/CompetenceItem.js +0 -108
- package/es/CompetenceGoalTab/CoreElementItem.js +0 -44
- package/es/CompetenceGoalTab/SearchButton.js +0 -43
- package/es/CompetenceGoalTab/index.js +0 -10
- package/es/CompetenceGoalTab/styles.js +0 -57
- package/es/Filter/FilterButtons.js +0 -185
- package/es/Filter/FilterCarousel.js +0 -166
- package/es/Filter/ToggleItem.js +0 -68
- package/es/Filter/index.js +0 -10
- package/es/Frontpage/FrontpageAllSubjects.js +0 -254
- package/es/LearningPaths/LearningPathContent.js +0 -25
- package/es/LearningPaths/LearningPathInformation.js +0 -74
- package/es/LearningPaths/LearningPathLastStepNavigation.js +0 -65
- package/es/LearningPaths/LearningPathMenu.js +0 -103
- package/es/LearningPaths/LearningPathMenuAside.js +0 -62
- package/es/LearningPaths/LearningPathMenuContent.js +0 -109
- package/es/LearningPaths/LearningPathMenuIntro.js +0 -72
- package/es/LearningPaths/LearningPathMenuModalWrapper.js +0 -63
- package/es/LearningPaths/LearningPathMobileHeader.js +0 -35
- package/es/LearningPaths/LearningPathMobileStepInfo.js +0 -34
- package/es/LearningPaths/LearningPathSticky.js +0 -74
- package/es/LearningPaths/LearningPathWrapper.js +0 -27
- package/es/LearningPaths/index.js +0 -18
- package/es/Masthead/Masthead.js +0 -62
- package/es/Masthead/SkipToMainContent.js +0 -30
- package/es/Masthead/index.js +0 -13
- package/es/Masthead/utils.js +0 -38
- package/es/MyNdla/Resource/FolderInput.js +0 -94
- package/es/NDLAFilm/AllMoviesAlphabetically.js +0 -127
- package/es/NDLAFilm/FilmContentCard.js +0 -93
- package/es/NDLAFilm/FilmContentCardTags.js +0 -44
- package/es/NDLAFilm/FilmMovieList.js +0 -52
- package/es/NDLAFilm/FilmMovieSearch.js +0 -106
- package/es/NDLAFilm/FilmSlideshow.js +0 -138
- package/es/NDLAFilm/MovieGrid.js +0 -54
- package/es/NDLAFilm/VisualElement.js +0 -48
- package/es/NDLAFilm/filmStyles.js +0 -31
- package/es/NDLAFilm/index.js +0 -14
- package/es/NDLAFilm/isLetter.js +0 -13
- package/es/NDLAFilm/types.js +0 -1
- package/es/Navigation/NavigationBox.js +0 -187
- package/es/Navigation/index.js +0 -10
- package/es/NoContentBox/NoContentBox.js +0 -31
- package/es/NoContentBox/index.js +0 -10
- package/es/Programme/Programme.js +0 -104
- package/es/Programme/ProgrammeSubjects.js +0 -60
- package/es/Programme/index.js +0 -12
- package/es/ResourceGroup/ResourceGroup.js +0 -46
- package/es/ResourceGroup/ResourceItem.js +0 -196
- package/es/ResourceGroup/ResourceList.js +0 -57
- package/es/ResourceGroup/index.js +0 -10
- package/es/ResourcesWrapper/ResourcesTopicTitle.js +0 -160
- package/es/ResourcesWrapper/ResourcesWrapper.js +0 -27
- package/es/ResourcesWrapper/index.js +0 -11
- package/es/SearchTypeResult/ActiveFilterContent.js +0 -53
- package/es/SearchTypeResult/ActiveFilters.js +0 -124
- package/es/SearchTypeResult/PopupFilter.js +0 -133
- package/es/SearchTypeResult/ResultNavigation.js +0 -75
- package/es/SearchTypeResult/SearchFieldHeader.js +0 -103
- package/es/SearchTypeResult/SearchFilterContent.js +0 -59
- package/es/SearchTypeResult/SearchHeader.js +0 -160
- package/es/SearchTypeResult/SearchItem.js +0 -97
- package/es/SearchTypeResult/SearchItemList.js +0 -142
- package/es/SearchTypeResult/SearchItems.js +0 -60
- package/es/SearchTypeResult/SearchSubjectItem.js +0 -62
- package/es/SearchTypeResult/SearchSubjectResult.js +0 -34
- package/es/SearchTypeResult/SearchTypeHeader.js +0 -118
- package/es/SearchTypeResult/SearchTypeResult.js +0 -55
- package/es/SearchTypeResult/SearchViewType.js +0 -90
- package/es/SearchTypeResult/components/ItemContexts.js +0 -122
- package/es/SearchTypeResult/components/ItemResourceHeader.js +0 -96
- package/es/SearchTypeResult/components/ItemTopicHeader.js +0 -66
- package/es/SearchTypeResult/components/SubjectFilters.js +0 -130
- package/es/SearchTypeResult/index.js +0 -14
- package/es/Subject/SubjectBanner.js +0 -30
- package/es/Subject/index.js +0 -9
- package/es/ToolboxPage/ToolboxInfo.js +0 -43
- package/es/ToolboxPage/index.js +0 -10
- package/es/Topic/Loader.js +0 -107
- package/es/Topic/Topic.js +0 -221
- package/es/Topic/index.js +0 -10
- package/es/locale/LocaleProvider.js +0 -38
- package/lib/Article/ArticleAccessMessage.d.ts +0 -12
- package/lib/Article/ArticleAccessMessage.js +0 -50
- package/lib/Article/ArticleNotions.d.ts +0 -14
- package/lib/Article/ArticleNotions.js +0 -96
- package/lib/Aside/Aside.d.ts +0 -15
- package/lib/Aside/Aside.js +0 -80
- package/lib/Aside/index.d.ts +0 -9
- package/lib/Aside/index.js +0 -16
- package/lib/BannerCard/BannerCard.d.ts +0 -29
- package/lib/BannerCard/BannerCard.js +0 -92
- package/lib/BannerCard/index.d.ts +0 -9
- package/lib/BannerCard/index.js +0 -13
- package/lib/Breadcrumb/HeaderBreadcrumb.d.ts +0 -14
- package/lib/Breadcrumb/HeaderBreadcrumb.js +0 -64
- package/lib/CompetenceGoalTab/CompetenceGoalItem.d.ts +0 -10
- package/lib/CompetenceGoalTab/CompetenceGoalItem.js +0 -49
- package/lib/CompetenceGoalTab/CompetenceGoalTab.d.ts +0 -14
- package/lib/CompetenceGoalTab/CompetenceGoalTab.js +0 -82
- package/lib/CompetenceGoalTab/CompetenceItem.d.ts +0 -30
- package/lib/CompetenceGoalTab/CompetenceItem.js +0 -113
- package/lib/CompetenceGoalTab/CoreElementItem.d.ts +0 -10
- package/lib/CompetenceGoalTab/CoreElementItem.js +0 -51
- package/lib/CompetenceGoalTab/SearchButton.d.ts +0 -14
- package/lib/CompetenceGoalTab/SearchButton.js +0 -50
- package/lib/CompetenceGoalTab/index.d.ts +0 -9
- package/lib/CompetenceGoalTab/index.js +0 -16
- package/lib/CompetenceGoalTab/styles.d.ts +0 -28
- package/lib/CompetenceGoalTab/styles.js +0 -62
- package/lib/Filter/FilterButtons.d.ts +0 -16
- package/lib/Filter/FilterButtons.js +0 -192
- package/lib/Filter/FilterCarousel.d.ts +0 -13
- package/lib/Filter/FilterCarousel.js +0 -171
- package/lib/Filter/ToggleItem.d.ts +0 -21
- package/lib/Filter/ToggleItem.js +0 -75
- package/lib/Filter/index.d.ts +0 -9
- package/lib/Filter/index.js +0 -20
- package/lib/Frontpage/FrontpageAllSubjects.d.ts +0 -27
- package/lib/Frontpage/FrontpageAllSubjects.js +0 -259
- package/lib/LearningPaths/LearningPathContent.d.ts +0 -13
- package/lib/LearningPaths/LearningPathContent.js +0 -33
- package/lib/LearningPaths/LearningPathInformation.d.ts +0 -18
- package/lib/LearningPaths/LearningPathInformation.js +0 -80
- package/lib/LearningPaths/LearningPathLastStepNavigation.d.ts +0 -22
- package/lib/LearningPaths/LearningPathLastStepNavigation.js +0 -72
- package/lib/LearningPaths/LearningPathMenu.d.ts +0 -38
- package/lib/LearningPaths/LearningPathMenu.js +0 -110
- package/lib/LearningPaths/LearningPathMenuAside.d.ts +0 -24
- package/lib/LearningPaths/LearningPathMenuAside.js +0 -69
- package/lib/LearningPaths/LearningPathMenuContent.d.ts +0 -22
- package/lib/LearningPaths/LearningPathMenuContent.js +0 -116
- package/lib/LearningPaths/LearningPathMenuIntro.d.ts +0 -17
- package/lib/LearningPaths/LearningPathMenuIntro.js +0 -77
- package/lib/LearningPaths/LearningPathMenuModalWrapper.d.ts +0 -14
- package/lib/LearningPaths/LearningPathMenuModalWrapper.js +0 -70
- package/lib/LearningPaths/LearningPathMobileHeader.d.ts +0 -9
- package/lib/LearningPaths/LearningPathMobileHeader.js +0 -42
- package/lib/LearningPaths/LearningPathMobileStepInfo.d.ts +0 -13
- package/lib/LearningPaths/LearningPathMobileStepInfo.js +0 -41
- package/lib/LearningPaths/LearningPathSticky.d.ts +0 -22
- package/lib/LearningPaths/LearningPathSticky.js +0 -84
- package/lib/LearningPaths/LearningPathWrapper.d.ts +0 -14
- package/lib/LearningPaths/LearningPathWrapper.js +0 -35
- package/lib/LearningPaths/index.d.ts +0 -17
- package/lib/LearningPaths/index.js +0 -74
- package/lib/Masthead/Masthead.d.ts +0 -23
- package/lib/Masthead/Masthead.js +0 -68
- package/lib/Masthead/SkipToMainContent.d.ts +0 -12
- package/lib/Masthead/SkipToMainContent.js +0 -37
- package/lib/Masthead/index.d.ts +0 -12
- package/lib/Masthead/index.js +0 -36
- package/lib/Masthead/utils.d.ts +0 -11
- package/lib/Masthead/utils.js +0 -46
- package/lib/MyNdla/Resource/FolderInput.d.ts +0 -19
- package/lib/MyNdla/Resource/FolderInput.js +0 -101
- package/lib/NDLAFilm/AllMoviesAlphabetically.d.ts +0 -13
- package/lib/NDLAFilm/AllMoviesAlphabetically.js +0 -134
- package/lib/NDLAFilm/FilmContentCard.d.ts +0 -19
- package/lib/NDLAFilm/FilmContentCard.js +0 -98
- package/lib/NDLAFilm/FilmContentCardTags.d.ts +0 -15
- package/lib/NDLAFilm/FilmContentCardTags.js +0 -51
- package/lib/NDLAFilm/FilmMovieList.d.ts +0 -17
- package/lib/NDLAFilm/FilmMovieList.js +0 -59
- package/lib/NDLAFilm/FilmMovieSearch.d.ts +0 -21
- package/lib/NDLAFilm/FilmMovieSearch.js +0 -113
- package/lib/NDLAFilm/FilmSlideshow.d.ts +0 -13
- package/lib/NDLAFilm/FilmSlideshow.js +0 -143
- package/lib/NDLAFilm/MovieGrid.d.ts +0 -17
- package/lib/NDLAFilm/MovieGrid.js +0 -61
- package/lib/NDLAFilm/VisualElement.d.ts +0 -16
- package/lib/NDLAFilm/VisualElement.js +0 -53
- package/lib/NDLAFilm/filmStyles.d.ts +0 -17
- package/lib/NDLAFilm/filmStyles.js +0 -39
- package/lib/NDLAFilm/index.d.ts +0 -13
- package/lib/NDLAFilm/index.js +0 -41
- package/lib/NDLAFilm/isLetter.d.ts +0 -8
- package/lib/NDLAFilm/isLetter.js +0 -20
- package/lib/NDLAFilm/types.d.ts +0 -22
- package/lib/NDLAFilm/types.js +0 -5
- package/lib/Navigation/NavigationBox.d.ts +0 -30
- package/lib/Navigation/NavigationBox.js +0 -193
- package/lib/Navigation/index.js +0 -13
- package/lib/NoContentBox/NoContentBox.d.ts +0 -14
- package/lib/NoContentBox/NoContentBox.js +0 -38
- package/lib/NoContentBox/index.d.ts +0 -9
- package/lib/NoContentBox/index.js +0 -16
- package/lib/Programme/Programme.d.ts +0 -16
- package/lib/Programme/Programme.js +0 -112
- package/lib/Programme/ProgrammeSubjects.d.ts +0 -26
- package/lib/Programme/ProgrammeSubjects.js +0 -67
- package/lib/Programme/index.d.ts +0 -11
- package/lib/Programme/index.js +0 -23
- package/lib/ResourceGroup/ResourceGroup.d.ts +0 -18
- package/lib/ResourceGroup/ResourceGroup.js +0 -53
- package/lib/ResourceGroup/ResourceItem.d.ts +0 -22
- package/lib/ResourceGroup/ResourceItem.js +0 -203
- package/lib/ResourceGroup/ResourceList.d.ts +0 -19
- package/lib/ResourceGroup/ResourceList.js +0 -64
- package/lib/ResourceGroup/index.d.ts +0 -9
- package/lib/ResourceGroup/index.js +0 -16
- package/lib/ResourcesWrapper/ResourcesTopicTitle.d.ts +0 -20
- package/lib/ResourcesWrapper/ResourcesTopicTitle.js +0 -165
- package/lib/ResourcesWrapper/ResourcesWrapper.d.ts +0 -16
- package/lib/ResourcesWrapper/ResourcesWrapper.js +0 -34
- package/lib/ResourcesWrapper/index.d.ts +0 -10
- package/lib/ResourcesWrapper/index.js +0 -23
- package/lib/SearchTypeResult/ActiveFilterContent.d.ts +0 -23
- package/lib/SearchTypeResult/ActiveFilterContent.js +0 -58
- package/lib/SearchTypeResult/ActiveFilters.d.ts +0 -18
- package/lib/SearchTypeResult/ActiveFilters.js +0 -131
- package/lib/SearchTypeResult/PopupFilter.d.ts +0 -26
- package/lib/SearchTypeResult/PopupFilter.js +0 -138
- package/lib/SearchTypeResult/ResultNavigation.d.ts +0 -18
- package/lib/SearchTypeResult/ResultNavigation.js +0 -82
- package/lib/SearchTypeResult/SearchFieldHeader.d.ts +0 -17
- package/lib/SearchTypeResult/SearchFieldHeader.js +0 -109
- package/lib/SearchTypeResult/SearchFilterContent.d.ts +0 -16
- package/lib/SearchTypeResult/SearchFilterContent.js +0 -64
- package/lib/SearchTypeResult/SearchHeader.d.ts +0 -26
- package/lib/SearchTypeResult/SearchHeader.js +0 -166
- package/lib/SearchTypeResult/SearchItem.d.ts +0 -30
- package/lib/SearchTypeResult/SearchItem.js +0 -104
- package/lib/SearchTypeResult/SearchItemList.d.ts +0 -10
- package/lib/SearchTypeResult/SearchItemList.js +0 -147
- package/lib/SearchTypeResult/SearchItems.d.ts +0 -17
- package/lib/SearchTypeResult/SearchItems.js +0 -65
- package/lib/SearchTypeResult/SearchSubjectItem.d.ts +0 -20
- package/lib/SearchTypeResult/SearchSubjectItem.js +0 -67
- package/lib/SearchTypeResult/SearchSubjectResult.d.ts +0 -13
- package/lib/SearchTypeResult/SearchSubjectResult.js +0 -41
- package/lib/SearchTypeResult/SearchTypeHeader.d.ts +0 -22
- package/lib/SearchTypeResult/SearchTypeHeader.js +0 -123
- package/lib/SearchTypeResult/SearchTypeResult.d.ts +0 -26
- package/lib/SearchTypeResult/SearchTypeResult.js +0 -62
- package/lib/SearchTypeResult/SearchViewType.d.ts +0 -13
- package/lib/SearchTypeResult/SearchViewType.js +0 -95
- package/lib/SearchTypeResult/components/ItemContexts.d.ts +0 -19
- package/lib/SearchTypeResult/components/ItemContexts.js +0 -127
- package/lib/SearchTypeResult/components/ItemResourceHeader.d.ts +0 -16
- package/lib/SearchTypeResult/components/ItemResourceHeader.js +0 -101
- package/lib/SearchTypeResult/components/ItemTopicHeader.d.ts +0 -17
- package/lib/SearchTypeResult/components/ItemTopicHeader.js +0 -71
- package/lib/SearchTypeResult/components/SubjectFilters.d.ts +0 -32
- package/lib/SearchTypeResult/components/SubjectFilters.js +0 -135
- package/lib/SearchTypeResult/index.d.ts +0 -14
- package/lib/SearchTypeResult/index.js +0 -41
- package/lib/Subject/SubjectBanner.d.ts +0 -14
- package/lib/Subject/SubjectBanner.js +0 -37
- package/lib/Subject/index.d.ts +0 -8
- package/lib/Subject/index.js +0 -13
- package/lib/ToolboxPage/ToolboxInfo.d.ts +0 -18
- package/lib/ToolboxPage/ToolboxInfo.js +0 -49
- package/lib/ToolboxPage/index.d.ts +0 -9
- package/lib/ToolboxPage/index.js +0 -13
- package/lib/Topic/Loader.d.ts +0 -9
- package/lib/Topic/Loader.js +0 -114
- package/lib/Topic/Topic.d.ts +0 -34
- package/lib/Topic/Topic.js +0 -228
- package/lib/Topic/index.d.ts +0 -10
- package/lib/Topic/index.js +0 -16
- package/lib/locale/LocaleProvider.d.ts +0 -15
- package/lib/locale/LocaleProvider.js +0 -44
- package/src/Article/ArticleAccessMessage.tsx +0 -44
- package/src/Article/ArticleNotions.tsx +0 -139
- package/src/Article/component.article.scss +0 -156
- package/src/Aside/Aside.tsx +0 -113
- package/src/Aside/index.ts +0 -11
- package/src/BannerCard/BannerCard.tsx +0 -99
- package/src/BannerCard/index.ts +0 -11
- package/src/Breadcrumb/HeaderBreadcrumb.tsx +0 -56
- package/src/CompetenceGoalTab/CompetenceGoalItem.tsx +0 -39
- package/src/CompetenceGoalTab/CompetenceGoalTab.tsx +0 -85
- package/src/CompetenceGoalTab/CompetenceItem.tsx +0 -130
- package/src/CompetenceGoalTab/CoreElementItem.tsx +0 -39
- package/src/CompetenceGoalTab/SearchButton.tsx +0 -50
- package/src/CompetenceGoalTab/index.ts +0 -10
- package/src/CompetenceGoalTab/styles.ts +0 -37
- package/src/Figure/component.figure.scss +0 -60
- package/src/Filter/FilterButtons.tsx +0 -199
- package/src/Filter/FilterCarousel.tsx +0 -172
- package/src/Filter/ToggleItem.tsx +0 -180
- package/src/Filter/index.ts +0 -10
- package/src/Frontpage/FrontpageAllSubjects.tsx +0 -231
- package/src/LearningPaths/LearningPathContent.tsx +0 -33
- package/src/LearningPaths/LearningPathInformation.tsx +0 -82
- package/src/LearningPaths/LearningPathLastStepNavigation.tsx +0 -89
- package/src/LearningPaths/LearningPathMenu.stories.tsx +0 -65
- package/src/LearningPaths/LearningPathMenu.tsx +0 -166
- package/src/LearningPaths/LearningPathMenuAside.tsx +0 -100
- package/src/LearningPaths/LearningPathMenuContent.tsx +0 -277
- package/src/LearningPaths/LearningPathMenuIntro.tsx +0 -126
- package/src/LearningPaths/LearningPathMenuModalWrapper.tsx +0 -71
- package/src/LearningPaths/LearningPathMobileHeader.tsx +0 -37
- package/src/LearningPaths/LearningPathMobileStepInfo.tsx +0 -38
- package/src/LearningPaths/LearningPathSticky.tsx +0 -122
- package/src/LearningPaths/LearningPathWrapper.tsx +0 -36
- package/src/LearningPaths/index.ts +0 -19
- package/src/Masthead/Masthead.tsx +0 -100
- package/src/Masthead/SkipToMainContent.tsx +0 -54
- package/src/Masthead/index.ts +0 -16
- package/src/Masthead/utils.ts +0 -45
- package/src/MyNdla/Resource/FolderInput.stories.tsx +0 -27
- package/src/MyNdla/Resource/FolderInput.tsx +0 -89
- package/src/NDLAFilm/AllMoviesAlphabetically.tsx +0 -160
- package/src/NDLAFilm/FilmContentCard.tsx +0 -138
- package/src/NDLAFilm/FilmContentCardTags.tsx +0 -57
- package/src/NDLAFilm/FilmMovieList.tsx +0 -54
- package/src/NDLAFilm/FilmMovieSearch.tsx +0 -135
- package/src/NDLAFilm/FilmSlideshow.tsx +0 -177
- package/src/NDLAFilm/MovieGrid.tsx +0 -86
- package/src/NDLAFilm/VisualElement.tsx +0 -38
- package/src/NDLAFilm/__tests__/isLetter-test.ts +0 -20
- package/src/NDLAFilm/filmStyles.ts +0 -49
- package/src/NDLAFilm/index.ts +0 -15
- package/src/NDLAFilm/isLetter.ts +0 -13
- package/src/NDLAFilm/types.ts +0 -24
- package/src/Navigation/NavigationBox.tsx +0 -252
- package/src/Navigation/index.ts +0 -11
- package/src/NoContentBox/NoContentBox.tsx +0 -32
- package/src/NoContentBox/index.ts +0 -11
- package/src/Programme/Programme.tsx +0 -101
- package/src/Programme/ProgrammeSubjects.tsx +0 -83
- package/src/Programme/index.ts +0 -13
- package/src/ResourceGroup/ResourceGroup.tsx +0 -65
- package/src/ResourceGroup/ResourceItem.stories.tsx +0 -101
- package/src/ResourceGroup/ResourceItem.tsx +0 -318
- package/src/ResourceGroup/ResourceList.tsx +0 -80
- package/src/ResourceGroup/index.ts +0 -11
- package/src/ResourcesWrapper/ResourcesTopicTitle.tsx +0 -223
- package/src/ResourcesWrapper/ResourcesWrapper.tsx +0 -32
- package/src/ResourcesWrapper/index.ts +0 -13
- package/src/SearchTypeResult/ActiveFilterContent.tsx +0 -55
- package/src/SearchTypeResult/ActiveFilters.tsx +0 -163
- package/src/SearchTypeResult/PopupFilter.tsx +0 -149
- package/src/SearchTypeResult/ResultNavigation.tsx +0 -105
- package/src/SearchTypeResult/SearchFieldHeader.tsx +0 -129
- package/src/SearchTypeResult/SearchFilterContent.tsx +0 -61
- package/src/SearchTypeResult/SearchHeader.tsx +0 -180
- package/src/SearchTypeResult/SearchItem.tsx +0 -144
- package/src/SearchTypeResult/SearchItemList.tsx +0 -161
- package/src/SearchTypeResult/SearchItems.tsx +0 -72
- package/src/SearchTypeResult/SearchSubjectItem.tsx +0 -74
- package/src/SearchTypeResult/SearchSubjectResult.tsx +0 -58
- package/src/SearchTypeResult/SearchTypeHeader.tsx +0 -148
- package/src/SearchTypeResult/SearchTypeResult.tsx +0 -89
- package/src/SearchTypeResult/SearchViewType.tsx +0 -111
- package/src/SearchTypeResult/components/ItemContexts.tsx +0 -131
- package/src/SearchTypeResult/components/ItemResourceHeader.tsx +0 -130
- package/src/SearchTypeResult/components/ItemTopicHeader.tsx +0 -88
- package/src/SearchTypeResult/components/SubjectFilters.tsx +0 -149
- package/src/SearchTypeResult/index.ts +0 -17
- package/src/Subject/SubjectBanner.tsx +0 -39
- package/src/Subject/index.ts +0 -9
- package/src/ToolboxPage/ToolboxInfo.tsx +0 -42
- package/src/ToolboxPage/index.ts +0 -11
- package/src/Topic/Loader.tsx +0 -29
- package/src/Topic/Topic.tsx +0 -348
- package/src/Topic/index.ts +0 -13
- package/src/locale/LocaleProvider.tsx +0 -31
- package/src/main.scss +0 -6
package/src/Article/Article.tsx
CHANGED
|
@@ -6,37 +6,139 @@
|
|
|
6
6
|
*
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
-
import { ReactNode,
|
|
10
|
-
import
|
|
9
|
+
import { ReactNode, forwardRef, ComponentPropsWithRef, useMemo, CSSProperties } from "react";
|
|
10
|
+
import { SerializedStyles, css } from "@emotion/react";
|
|
11
11
|
import styled from "@emotion/styled";
|
|
12
12
|
|
|
13
|
-
import { spacing, mq, breakpoints } from "@ndla/core";
|
|
14
|
-
import { useIntersectionObserver } from "@ndla/hooks";
|
|
13
|
+
import { spacing, mq, breakpoints, fonts, colors, spacingUnit } from "@ndla/core";
|
|
15
14
|
import { Heading, Text } from "@ndla/typography";
|
|
16
|
-
import { resizeObserver } from "@ndla/util";
|
|
17
|
-
import ArticleAccessMessage from "./ArticleAccessMessage";
|
|
18
15
|
import ArticleByline from "./ArticleByline";
|
|
19
16
|
import ArticleHeaderWrapper from "./ArticleHeaderWrapper";
|
|
20
|
-
import ArticleNotions from "./ArticleNotions";
|
|
21
17
|
import LayoutItem from "../Layout";
|
|
22
18
|
import MessageBox from "../Messages/MessageBox";
|
|
23
19
|
import { Article as ArticleType } from "../types";
|
|
24
20
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
21
|
+
export type ArticleModifier =
|
|
22
|
+
| "clean"
|
|
23
|
+
| "in-topic"
|
|
24
|
+
| "subject-material"
|
|
25
|
+
| "assessment-resources"
|
|
26
|
+
| "tasks-and-activities"
|
|
27
|
+
| "concept"
|
|
28
|
+
| "source-material";
|
|
29
29
|
|
|
30
|
-
|
|
31
|
-
modifier?:
|
|
32
|
-
|
|
30
|
+
interface ArticleWrapperProps extends ComponentPropsWithRef<"article"> {
|
|
31
|
+
modifier?: ArticleModifier;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
const StyledArticle = styled.article`
|
|
35
|
+
font-family: ${fonts.serif};
|
|
36
|
+
background: ${colors.white};
|
|
37
|
+
margin-top: ${spacing.large};
|
|
38
|
+
margin-right: auto;
|
|
39
|
+
margin-bottom: ${spacing.normal};
|
|
40
|
+
margin-left: auto;
|
|
41
|
+
overflow-wrap: break-word;
|
|
42
|
+
${fonts.sizes("18px", "29px")};
|
|
43
|
+
position: relative;
|
|
44
|
+
|
|
45
|
+
mjx-stretchy-v > mjx-ext > mjx-c {
|
|
46
|
+
transform: scaleY(100) translateY(0.075em);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
> section > p {
|
|
50
|
+
&:not([class]) {
|
|
51
|
+
margin-bottom: 29px;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
${mq.range({ from: breakpoints.tablet })} {
|
|
56
|
+
${fonts.sizes("18px", "29px")}; //This is probably not needed, but it's here to be sure.
|
|
57
|
+
|
|
58
|
+
> section > p {
|
|
59
|
+
&:not([class]) {
|
|
60
|
+
margin-bottom: 35px;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
padding: 0 ${spacing.normal} ${spacing.normal};
|
|
64
|
+
margin-bottom: ${spacing.large};
|
|
65
|
+
margin-top: -${spacingUnit * 6}px;
|
|
66
|
+
padding-top: ${spacing.xlarge};
|
|
67
|
+
}
|
|
68
|
+
${mq.range({ from: breakpoints.desktop })} {
|
|
69
|
+
padding-bottom: ${spacing.large};
|
|
70
|
+
margin-bottom: ${spacing.large};
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
&::after {
|
|
74
|
+
content: "";
|
|
75
|
+
display: table;
|
|
76
|
+
clear: both;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
p {
|
|
80
|
+
margin-top: 0;
|
|
81
|
+
}
|
|
82
|
+
`;
|
|
83
|
+
|
|
84
|
+
// Make sure to wrap modifiers in & {} to avoid specificity issues
|
|
85
|
+
const articleModifiers: Partial<Record<ArticleModifier, SerializedStyles>> = {
|
|
86
|
+
clean: css`
|
|
87
|
+
& {
|
|
88
|
+
margin-top: ${spacing.normal} !important;
|
|
89
|
+
padding: ${spacing.small} !important;
|
|
90
|
+
${mq.range({ from: breakpoints.tablet })} {
|
|
91
|
+
padding: 0 !important;
|
|
92
|
+
}
|
|
93
|
+
border: none;
|
|
94
|
+
}
|
|
95
|
+
`,
|
|
96
|
+
"in-topic": css`
|
|
97
|
+
& {
|
|
98
|
+
margin-top: 0 !important;
|
|
99
|
+
padding: 0 !important;
|
|
100
|
+
padding-left: ${spacing.medium} !important;
|
|
101
|
+
}
|
|
102
|
+
`,
|
|
33
103
|
};
|
|
34
104
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
105
|
+
const borderCss = css`
|
|
106
|
+
${mq.range({ from: breakpoints.tablet })} {
|
|
107
|
+
border: 2px solid var(--color);
|
|
108
|
+
}
|
|
109
|
+
`;
|
|
110
|
+
|
|
111
|
+
export const ArticleWrapper = forwardRef<HTMLElement, ArticleWrapperProps>(({ children, modifier, ...rest }, ref) => {
|
|
112
|
+
const borderColor = useMemo(() => {
|
|
113
|
+
let color = undefined;
|
|
114
|
+
if (modifier === "subject-material") {
|
|
115
|
+
color = colors.subjectMaterial.light;
|
|
116
|
+
} else if (modifier === "assessment-resources") {
|
|
117
|
+
color = colors.assessmentResource.background;
|
|
118
|
+
} else if (modifier === "tasks-and-activities") {
|
|
119
|
+
color = colors.tasksAndActivities.background;
|
|
120
|
+
} else if (modifier === "concept") {
|
|
121
|
+
color = colors.concept.light;
|
|
122
|
+
} else if (modifier === "source-material") {
|
|
123
|
+
color = colors.sourceMaterial.light;
|
|
124
|
+
}
|
|
125
|
+
if (color) {
|
|
126
|
+
return { "--color": color } as CSSProperties;
|
|
127
|
+
}
|
|
128
|
+
return undefined;
|
|
129
|
+
}, [modifier]);
|
|
130
|
+
|
|
131
|
+
return (
|
|
132
|
+
<StyledArticle
|
|
133
|
+
css={[borderColor ? borderCss : undefined, modifier ? articleModifiers[modifier] : undefined]}
|
|
134
|
+
style={borderColor}
|
|
135
|
+
{...rest}
|
|
136
|
+
ref={ref}
|
|
137
|
+
>
|
|
138
|
+
{children}
|
|
139
|
+
</StyledArticle>
|
|
140
|
+
);
|
|
141
|
+
});
|
|
40
142
|
|
|
41
143
|
type ArticleTitleProps = {
|
|
42
144
|
icon?: ReactNode;
|
|
@@ -46,28 +148,40 @@ type ArticleTitleProps = {
|
|
|
46
148
|
lang?: string;
|
|
47
149
|
};
|
|
48
150
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
let labelView = null;
|
|
151
|
+
const TitleLabelText = styled(Text)`
|
|
152
|
+
color: #757575;
|
|
153
|
+
text-transform: uppercase;
|
|
154
|
+
font-family: ${fonts.sans};
|
|
155
|
+
`;
|
|
56
156
|
|
|
57
|
-
|
|
58
|
-
|
|
157
|
+
const ArticleTitleWrapper = styled.div`
|
|
158
|
+
display: flex;
|
|
159
|
+
gap: ${spacing.normal};
|
|
160
|
+
align-items: flex-start;
|
|
161
|
+
h1 {
|
|
162
|
+
overflow-wrap: anywhere;
|
|
59
163
|
}
|
|
164
|
+
padding-bottom: ${spacing.medium};
|
|
165
|
+
[data-badge] {
|
|
166
|
+
flex-shrink: 0;
|
|
167
|
+
}
|
|
168
|
+
`;
|
|
60
169
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
170
|
+
export const ArticleTitle = ({ children, icon, label, id, lang }: ArticleTitleProps) => (
|
|
171
|
+
<ArticleTitleWrapper>
|
|
172
|
+
{icon}
|
|
173
|
+
<hgroup>
|
|
174
|
+
{!!label && (
|
|
175
|
+
<TitleLabelText textStyle="meta-text-medium" margin="none">
|
|
176
|
+
{label}
|
|
177
|
+
</TitleLabelText>
|
|
178
|
+
)}
|
|
179
|
+
<Heading element="h1" margin="none" headingStyle="h1-resource" id={id} tabIndex={-1} lang={lang}>
|
|
66
180
|
{children}
|
|
67
181
|
</Heading>
|
|
68
|
-
</
|
|
69
|
-
|
|
70
|
-
|
|
182
|
+
</hgroup>
|
|
183
|
+
</ArticleTitleWrapper>
|
|
184
|
+
);
|
|
71
185
|
|
|
72
186
|
type ArticleIntroductionProps = {
|
|
73
187
|
children: ReactNode;
|
|
@@ -107,30 +221,15 @@ type Props = {
|
|
|
107
221
|
article: ArticleType;
|
|
108
222
|
icon?: ReactNode;
|
|
109
223
|
licenseBox?: ReactNode;
|
|
110
|
-
modifier?:
|
|
224
|
+
modifier?: ArticleModifier;
|
|
111
225
|
children?: ReactNode;
|
|
112
226
|
messages: Messages;
|
|
113
|
-
contentTransformed?: boolean;
|
|
114
227
|
messageBoxLinks?: [];
|
|
115
228
|
competenceGoals?: ReactNode;
|
|
116
229
|
id: string;
|
|
117
|
-
notions?: ReactNode;
|
|
118
|
-
accessMessage?: string;
|
|
119
230
|
lang?: string;
|
|
120
231
|
};
|
|
121
232
|
|
|
122
|
-
const getArticleContent = (content: any, contentTransformed?: boolean) => {
|
|
123
|
-
if (contentTransformed) {
|
|
124
|
-
return content;
|
|
125
|
-
}
|
|
126
|
-
switch (typeof content) {
|
|
127
|
-
case "function":
|
|
128
|
-
return content();
|
|
129
|
-
default:
|
|
130
|
-
return content;
|
|
131
|
-
}
|
|
132
|
-
};
|
|
133
|
-
|
|
134
233
|
export const Article = ({
|
|
135
234
|
article,
|
|
136
235
|
icon,
|
|
@@ -141,82 +240,43 @@ export const Article = ({
|
|
|
141
240
|
children,
|
|
142
241
|
competenceGoals,
|
|
143
242
|
id,
|
|
144
|
-
notions,
|
|
145
|
-
accessMessage,
|
|
146
243
|
heartButton,
|
|
147
|
-
contentTransformed,
|
|
148
244
|
lang,
|
|
149
245
|
}: Props) => {
|
|
150
|
-
const articleRef = useRef<HTMLDivElement>(null);
|
|
151
|
-
const wrapperRef = useRef<HTMLDivElement>(null);
|
|
152
|
-
const { entry } = useIntersectionObserver({
|
|
153
|
-
rootMargin: "400px",
|
|
154
|
-
target: articleRef.current,
|
|
155
|
-
threshold: 0.1,
|
|
156
|
-
});
|
|
157
|
-
const [articlePositionRight, setArticlePositionRight] = useState(0);
|
|
158
|
-
|
|
159
|
-
const showExplainNotions = entry && entry.isIntersecting;
|
|
160
|
-
|
|
161
|
-
useEffect(() => {
|
|
162
|
-
if (wrapperRef && wrapperRef.current) {
|
|
163
|
-
const handler = () => {
|
|
164
|
-
if (wrapperRef && wrapperRef.current) {
|
|
165
|
-
const offset =
|
|
166
|
-
wrapperRef.current.getBoundingClientRect().left + wrapperRef.current.getBoundingClientRect().width;
|
|
167
|
-
setArticlePositionRight(offset);
|
|
168
|
-
}
|
|
169
|
-
};
|
|
170
|
-
handler();
|
|
171
|
-
|
|
172
|
-
return resizeObserver(document.body, handler);
|
|
173
|
-
}
|
|
174
|
-
}, [wrapperRef]);
|
|
175
|
-
|
|
176
246
|
const { title, introduction, published, content, footNotes, copyright } = article;
|
|
177
247
|
|
|
178
248
|
const authors =
|
|
179
249
|
copyright?.creators.length || copyright?.rightsholders.length ? copyright.creators : copyright?.processors;
|
|
180
250
|
|
|
181
251
|
return (
|
|
182
|
-
<
|
|
183
|
-
<
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
{
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
{
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
authors={authors}
|
|
211
|
-
suppliers={copyright?.rightsholders}
|
|
212
|
-
published={published}
|
|
213
|
-
license={copyright?.license?.license ?? ""}
|
|
214
|
-
licenseBox={licenseBox}
|
|
215
|
-
/>
|
|
216
|
-
</LayoutItem>
|
|
217
|
-
<LayoutItem layout="extend">{children}</LayoutItem>
|
|
218
|
-
</ArticleWrapper>
|
|
219
|
-
</div>
|
|
252
|
+
<ArticleWrapper modifier={modifier} data-ndla-article="">
|
|
253
|
+
<LayoutItem layout="center">
|
|
254
|
+
{messages.messageBox && (
|
|
255
|
+
<MSGboxWrapper>
|
|
256
|
+
<MessageBox links={messageBoxLinks}>{messages.messageBox}</MessageBox>
|
|
257
|
+
</MSGboxWrapper>
|
|
258
|
+
)}
|
|
259
|
+
<ArticleHeaderWrapper competenceGoals={competenceGoals}>
|
|
260
|
+
{heartButton ? <ArticleFavoritesButtonWrapper>{heartButton}</ArticleFavoritesButtonWrapper> : null}
|
|
261
|
+
<ArticleTitle id={id} icon={icon} label={messages.label} lang={lang}>
|
|
262
|
+
{title}
|
|
263
|
+
</ArticleTitle>
|
|
264
|
+
<ArticleIntroduction lang={lang}>{introduction}</ArticleIntroduction>
|
|
265
|
+
</ArticleHeaderWrapper>
|
|
266
|
+
</LayoutItem>
|
|
267
|
+
<LayoutItem layout="center">{content}</LayoutItem>
|
|
268
|
+
<LayoutItem layout="center">
|
|
269
|
+
<ArticleByline
|
|
270
|
+
footnotes={footNotes}
|
|
271
|
+
authors={authors}
|
|
272
|
+
suppliers={copyright?.rightsholders}
|
|
273
|
+
published={published}
|
|
274
|
+
license={copyright?.license?.license ?? ""}
|
|
275
|
+
licenseBox={licenseBox}
|
|
276
|
+
/>
|
|
277
|
+
</LayoutItem>
|
|
278
|
+
<LayoutItem layout="extend">{children}</LayoutItem>
|
|
279
|
+
</ArticleWrapper>
|
|
220
280
|
);
|
|
221
281
|
};
|
|
222
282
|
|
|
@@ -6,36 +6,32 @@
|
|
|
6
6
|
*
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
-
import { ReactNode
|
|
10
|
-
import
|
|
11
|
-
import {
|
|
12
|
-
|
|
13
|
-
const classes = new BEMHelper({
|
|
14
|
-
name: "article",
|
|
15
|
-
prefix: "c-",
|
|
16
|
-
});
|
|
9
|
+
import { ReactNode } from "react";
|
|
10
|
+
import styled from "@emotion/styled";
|
|
11
|
+
import { breakpoints, mq, spacing } from "@ndla/core";
|
|
17
12
|
|
|
18
13
|
type Props = {
|
|
19
14
|
competenceGoals?: ReactNode;
|
|
20
15
|
children: ReactNode;
|
|
21
16
|
};
|
|
22
17
|
|
|
23
|
-
const
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
window.scrollBy(0, heroContentList[0].offsetTop - 120); // Adjust for header
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
}, []);
|
|
18
|
+
const StyledHeaderWrapper = styled.div`
|
|
19
|
+
margin-bottom: ${spacing.normal};
|
|
20
|
+
${mq.range({ from: breakpoints.tablet })} {
|
|
21
|
+
margin-bottom: ${spacing.large};
|
|
22
|
+
}
|
|
23
|
+
`;
|
|
33
24
|
|
|
25
|
+
const CompetenceWrapper = styled.div`
|
|
26
|
+
margin-top: ${spacing.normal};
|
|
27
|
+
`;
|
|
28
|
+
|
|
29
|
+
const ArticleHeaderWrapper = ({ children, competenceGoals }: Props) => {
|
|
34
30
|
return (
|
|
35
|
-
<
|
|
31
|
+
<StyledHeaderWrapper>
|
|
36
32
|
{children}
|
|
37
|
-
<
|
|
38
|
-
</
|
|
33
|
+
<CompetenceWrapper>{competenceGoals}</CompetenceWrapper>
|
|
34
|
+
</StyledHeaderWrapper>
|
|
39
35
|
);
|
|
40
36
|
};
|
|
41
37
|
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2024-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
|
+
import { ComponentPropsWithoutRef, ReactNode } from "react";
|
|
10
|
+
import styled from "@emotion/styled";
|
|
11
|
+
|
|
12
|
+
interface Props extends ComponentPropsWithoutRef<"p"> {
|
|
13
|
+
children?: ReactNode;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
const StyledParagraph = styled.p`
|
|
17
|
+
&[data-align="center"] {
|
|
18
|
+
text-align: center;
|
|
19
|
+
}
|
|
20
|
+
`;
|
|
21
|
+
|
|
22
|
+
export const ArticleParagraph = (props: Props) => <StyledParagraph {...props} />;
|
package/src/Article/index.ts
CHANGED
|
@@ -12,4 +12,8 @@ import ArticleFootNotes from "./ArticleFootNotes";
|
|
|
12
12
|
import ArticleHeaderWrapper from "./ArticleHeaderWrapper";
|
|
13
13
|
|
|
14
14
|
export { ArticleByline, ArticleFootNotes, ArticleHeaderWrapper, ArticleTitle, ArticleIntroduction, ArticleWrapper };
|
|
15
|
+
export { ArticleParagraph } from "./ArticleParagraph";
|
|
16
|
+
|
|
17
|
+
export type { ArticleModifier } from "./Article";
|
|
18
|
+
|
|
15
19
|
export default Article;
|
|
@@ -120,7 +120,7 @@ const TextVersionHeading = styled(Heading)`
|
|
|
120
120
|
const LinkButton = styled(ButtonV2)`
|
|
121
121
|
box-shadow: none;
|
|
122
122
|
padding-left: 0;
|
|
123
|
-
padding-right:
|
|
123
|
+
padding-right: ${spacing.xxsmall};
|
|
124
124
|
min-height: ${spacing.medium};
|
|
125
125
|
flex: 0 0 auto;
|
|
126
126
|
&:hover,
|
|
@@ -200,7 +200,7 @@ const AudioPlayer = ({ src, title, subtitle, speech, description, img, textVersi
|
|
|
200
200
|
<TextWrapper data-has-image={!!img}>
|
|
201
201
|
<TitleWrapper>
|
|
202
202
|
<div>
|
|
203
|
-
{subtitle
|
|
203
|
+
{subtitle?.url ? <SafeLink to={subtitle.url}>{subtitle.title}</SafeLink> : subtitle?.title}
|
|
204
204
|
<Title element="h3" headingStyle="h4" margin="none" data-has-desc={!!description}>
|
|
205
205
|
{title}
|
|
206
206
|
</Title>
|
|
@@ -12,7 +12,7 @@ import styled from "@emotion/styled";
|
|
|
12
12
|
import { Root as PopoverRoot, PopoverContent, PopoverTrigger, PopoverPortal } from "@radix-ui/react-popover";
|
|
13
13
|
import { Root as SliderRoot, Track, Range, SliderThumb } from "@radix-ui/react-slider";
|
|
14
14
|
import { ButtonV2, IconButtonV2 } from "@ndla/button";
|
|
15
|
-
import { breakpoints, colors, fonts, mq, spacing, stackOrder } from "@ndla/core";
|
|
15
|
+
import { breakpoints, colors, fonts, misc, mq, spacing, stackOrder } from "@ndla/core";
|
|
16
16
|
import { DropdownMenu, DropdownContent, DropdownItem, DropdownTrigger } from "@ndla/dropdown-menu";
|
|
17
17
|
import { Back15, Forward15 } from "@ndla/icons/action";
|
|
18
18
|
import { Play, Pause, VolumeUp } from "@ndla/icons/common";
|
|
@@ -82,11 +82,11 @@ const SpeedValueButton = styled(ButtonV2)`
|
|
|
82
82
|
|
|
83
83
|
const SpeedSelectedMark = styled.span`
|
|
84
84
|
align-self: flex-start;
|
|
85
|
-
border-radius:
|
|
85
|
+
border-radius: ${misc.borderRadiusLarge};
|
|
86
86
|
background: #d1372e;
|
|
87
87
|
width: 6px;
|
|
88
88
|
height: 6px;
|
|
89
|
-
margin:
|
|
89
|
+
margin: ${spacing.xsmall} 0 0 2px;
|
|
90
90
|
`;
|
|
91
91
|
|
|
92
92
|
const Time = styled.div`
|
|
@@ -132,7 +132,7 @@ const StyledThumb = styled(SliderThumb)`
|
|
|
132
132
|
width: 20px;
|
|
133
133
|
height: 20px;
|
|
134
134
|
background: #5cbc80;
|
|
135
|
-
border-radius:
|
|
135
|
+
border-radius: ${misc.borderRadiusLarge};
|
|
136
136
|
outline: none;
|
|
137
137
|
`;
|
|
138
138
|
|
|
@@ -188,7 +188,7 @@ const VolumeSliderHandle = styled(SliderThumb)`
|
|
|
188
188
|
width: 20px;
|
|
189
189
|
height: 20px;
|
|
190
190
|
background: ${colors.brand.primary};
|
|
191
|
-
border-radius:
|
|
191
|
+
border-radius: ${misc.borderRadiusLarge};
|
|
192
192
|
`;
|
|
193
193
|
|
|
194
194
|
const formatTime = (seconds: number) => {
|
|
@@ -50,10 +50,6 @@ export const CollapseLast: StoryObj<typeof Breadcrumb> = {
|
|
|
50
50
|
args: { collapseLast: true },
|
|
51
51
|
};
|
|
52
52
|
|
|
53
|
-
export const AutoCollapse: StoryObj<typeof Breadcrumb> = {
|
|
54
|
-
args: { autoCollapse: true },
|
|
55
|
-
};
|
|
56
|
-
|
|
57
53
|
export const CustomSeparator: StoryObj<typeof Breadcrumb> = {
|
|
58
54
|
args: {
|
|
59
55
|
renderSeparator: (item, totalCount) => (
|
|
@@ -9,12 +9,10 @@
|
|
|
9
9
|
import { ReactNode, useRef } from "react";
|
|
10
10
|
import { useTranslation } from "react-i18next";
|
|
11
11
|
import styled from "@emotion/styled";
|
|
12
|
-
import { useComponentSize, useIsomorphicLayoutEffect } from "@ndla/hooks";
|
|
13
12
|
import BreadcrumbItem, { IndexedBreadcrumbItem, SimpleBreadcrumbItem } from "./BreadcrumbItem";
|
|
14
13
|
|
|
15
14
|
interface Props {
|
|
16
15
|
items: SimpleBreadcrumbItem[];
|
|
17
|
-
autoCollapse?: boolean;
|
|
18
16
|
collapseFirst?: boolean;
|
|
19
17
|
collapseLast?: boolean;
|
|
20
18
|
renderItem?: (item: IndexedBreadcrumbItem, totalCount: number) => ReactNode;
|
|
@@ -31,50 +29,18 @@ const StyledList = styled.ol`
|
|
|
31
29
|
list-style: none;
|
|
32
30
|
`;
|
|
33
31
|
|
|
34
|
-
const Breadcrumb = ({
|
|
35
|
-
items,
|
|
36
|
-
autoCollapse,
|
|
37
|
-
renderItem,
|
|
38
|
-
renderSeparator,
|
|
39
|
-
collapseFirst,
|
|
40
|
-
collapseLast = true,
|
|
41
|
-
}: Props) => {
|
|
32
|
+
const Breadcrumb = ({ items, renderItem, renderSeparator, collapseFirst, collapseLast = true }: Props) => {
|
|
42
33
|
const { t } = useTranslation();
|
|
43
34
|
const olRef = useRef<any>();
|
|
44
35
|
const containerRef = useRef<HTMLDivElement>(null);
|
|
45
36
|
// No idiomatic way of dealing with sets of refs yet
|
|
46
37
|
// See: https://github.com/facebook/react/issues/14072#issuecomment-446777406
|
|
47
|
-
const breadcrumbItemRefs = useRef(new Map()).current;
|
|
48
|
-
const size = useComponentSize(containerRef);
|
|
49
|
-
|
|
50
|
-
useIsomorphicLayoutEffect(() => {
|
|
51
|
-
if (!autoCollapse) {
|
|
52
|
-
return;
|
|
53
|
-
}
|
|
54
|
-
// Create an array of all breadcrumb item refs
|
|
55
|
-
const items = Array.from(breadcrumbItemRefs).map(([key, value]) => value);
|
|
56
|
-
|
|
57
|
-
// Clear max width on all items
|
|
58
|
-
items.forEach((el) => {
|
|
59
|
-
el.setMaxWidth("none");
|
|
60
|
-
});
|
|
61
|
-
|
|
62
|
-
// Set maxWidth on breadcrumb text items iteratively until
|
|
63
|
-
// the ordered list fits on a single line. It's on a single line
|
|
64
|
-
// if the height of the list is less then 70.
|
|
65
|
-
items.forEach((el) => {
|
|
66
|
-
if (olRef.current.offsetHeight > 60) {
|
|
67
|
-
el.setMaxWidth("40px");
|
|
68
|
-
}
|
|
69
|
-
});
|
|
70
|
-
}, [size, items]);
|
|
71
38
|
|
|
72
39
|
return (
|
|
73
40
|
<BreadcrumbNav ref={containerRef} aria-label={t("breadcrumb.breadcrumb")}>
|
|
74
41
|
<StyledList ref={olRef}>
|
|
75
42
|
{items.map((item, index) => (
|
|
76
43
|
<BreadcrumbItem
|
|
77
|
-
autoCollapse={autoCollapse}
|
|
78
44
|
renderItem={renderItem}
|
|
79
45
|
renderSeparator={renderSeparator}
|
|
80
46
|
ref={(element) => {
|
|
@@ -86,9 +52,6 @@ const Breadcrumb = ({
|
|
|
86
52
|
if (element) {
|
|
87
53
|
element.setMaxWidth("none");
|
|
88
54
|
}
|
|
89
|
-
breadcrumbItemRefs.delete(item.to);
|
|
90
|
-
} else {
|
|
91
|
-
breadcrumbItemRefs.set(item.to, element);
|
|
92
55
|
}
|
|
93
56
|
}}
|
|
94
57
|
key={typeof item.to === "string" ? item.to : item.to.pathname}
|
|
@@ -7,7 +7,6 @@
|
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
9
|
import { useRef, useImperativeHandle, ReactNode, forwardRef } from "react";
|
|
10
|
-
import { css } from "@emotion/react";
|
|
11
10
|
import styled from "@emotion/styled";
|
|
12
11
|
import { mq, spacing, breakpoints } from "@ndla/core";
|
|
13
12
|
import { ChevronRight } from "@ndla/icons/common";
|
|
@@ -38,27 +37,14 @@ const StyledListItem = styled.li<AutoCollapseProps>`
|
|
|
38
37
|
:before {
|
|
39
38
|
display: none;
|
|
40
39
|
}
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
css`
|
|
45
|
-
${mq.range({ until: breakpoints.tablet })} {
|
|
46
|
-
display: block;
|
|
47
|
-
}
|
|
48
|
-
`}
|
|
40
|
+
${mq.range({ until: breakpoints.tablet })} {
|
|
41
|
+
display: block;
|
|
42
|
+
}
|
|
49
43
|
`;
|
|
50
44
|
|
|
51
|
-
const CollapseContainer = styled.div
|
|
45
|
+
const CollapseContainer = styled.div`
|
|
52
46
|
display: inline-block;
|
|
53
47
|
color: inherit;
|
|
54
|
-
${({ autoCollapse }) =>
|
|
55
|
-
autoCollapse &&
|
|
56
|
-
css`
|
|
57
|
-
text-overflow: ellipsis;
|
|
58
|
-
white-space: nowrap;
|
|
59
|
-
overflow: hidden;
|
|
60
|
-
display: inline-block;
|
|
61
|
-
`}
|
|
62
48
|
`;
|
|
63
49
|
|
|
64
50
|
const StyledChevron = styled(ChevronRight)`
|
|
@@ -92,7 +78,7 @@ const BreadcrumbItem = forwardRef<any, Props>(
|
|
|
92
78
|
const isLast = index === totalCount - 1;
|
|
93
79
|
return (
|
|
94
80
|
<StyledListItem ref={liRef} autoCollapse={autoCollapse} aria-current={isLast ? "page" : undefined}>
|
|
95
|
-
<CollapseContainer
|
|
81
|
+
<CollapseContainer>
|
|
96
82
|
{renderItem ? (
|
|
97
83
|
renderItem(item, totalCount)
|
|
98
84
|
) : isLast ? (
|
package/src/Breadcrumb/index.ts
CHANGED
|
@@ -10,8 +10,6 @@ import Breadcrumb from "./Breadcrumb";
|
|
|
10
10
|
|
|
11
11
|
export type { SimpleBreadcrumbItem, IndexedBreadcrumbItem } from "./BreadcrumbItem";
|
|
12
12
|
|
|
13
|
-
export { default as HeaderBreadcrumb } from "./HeaderBreadcrumb";
|
|
14
|
-
|
|
15
13
|
export { default as HomeBreadcrumb } from "./HomeBreadcrumb";
|
|
16
14
|
|
|
17
15
|
export default Breadcrumb;
|