@ndla/ui 28.0.0 → 30.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/es/Animation/DisplayOnPageYOffset.js +1 -1
- package/es/Animation/Fade.js +1 -1
- package/es/Article/Article.js +18 -14
- package/es/Article/ArticleAccessMessage.js +14 -10
- package/es/Article/ArticleByline.js +22 -14
- package/es/Article/ArticleContent.js +1 -1
- package/es/Article/ArticleFavoritesButton.js +1 -1
- package/es/Article/ArticleFootNotes.js +1 -1
- package/es/Article/ArticleHeaderWrapper.js +27 -19
- package/es/Article/ArticleNotions.js +22 -12
- package/es/Article/ArticleSideBar.js +26 -18
- package/es/Aside/Aside.js +1 -1
- package/es/AudioPlayer/AudioPlayer.js +67 -39
- package/es/AudioPlayer/Controls.js +137 -85
- package/es/AudioPlayer/SpeechControl.js +5 -3
- package/es/AudioPlayer/initAudioPlayers.js +1 -1
- package/es/AuthorInfo/AuthorInfo.js +14 -8
- package/es/BannerCard/BannerCard.js +29 -15
- package/es/BlogPosts/BlogPost.js +22 -14
- package/es/BlogPosts/BlogPostWrapper.js +7 -5
- package/es/Breadcrumb/ActionBreadcrumb.js +26 -10
- package/es/Breadcrumb/Breadcrumb.js +14 -10
- package/es/Breadcrumb/BreadcrumbItem.js +38 -26
- package/es/Breadcrumb/HeaderBreadcrumb.js +21 -7
- package/es/Breadcrumb/HomeBreadcrumb.js +37 -18
- package/es/Breadcrumblist/Breadcrumblist.js +37 -25
- package/es/CompetenceGoalTab/CompetenceGoalItem.js +42 -26
- package/es/CompetenceGoalTab/CompetenceGoalTab.js +26 -16
- package/es/CompetenceGoalTab/CompetenceItem.js +74 -54
- package/es/CompetenceGoalTab/SearchButton.js +10 -6
- package/es/CompetenceGoals/CompetenceGoalsDialog.js +17 -11
- package/es/ComponentCursor/ComponentCursor.js +54 -36
- package/es/ContentCard/ContentCard.js +35 -19
- package/es/ContentLoader/index.js +1 -1
- package/es/ContentPlaceholder/ContentPlaceholder.js +21 -15
- package/es/ContentTypeBadge/ContentTypeBadge.js +1 -1
- package/es/CopyParagraphButton/CopyParagraphButton.js +47 -35
- package/es/CopyParagraphButton/initCopyParagraphButtons.js +1 -1
- package/es/CreatedBy/CreatedBy.js +26 -18
- package/es/Dialog/Dialog.js +1 -1
- package/es/ErrorMessage/ErrorMessage.js +23 -15
- package/es/ErrorMessage/ErrorResourceAccessDenied.js +5 -3
- package/es/FactBox/FactBox.js +1 -1
- package/es/Figure/Figure.js +1 -1
- package/es/Figure/FigureBylineExpandButton.js +1 -1
- package/es/Figure/FigureExpandButton.js +1 -1
- package/es/Figure/FigureLicense.js +1 -1
- package/es/Figure/FigureLicenseDialog.js +1 -1
- package/es/Figure/FigureOpenDialogButton.js +1 -1
- package/es/FileList/File.js +17 -11
- package/es/FileList/FileList.js +17 -11
- package/es/Filter/FilterButtons.js +45 -27
- package/es/Filter/FilterCarousel.js +31 -25
- package/es/Filter/FilterList.js +1 -1
- package/es/Filter/FilterListPhone.js +1 -1
- package/es/Filter/ToggleItem.js +1 -1
- package/es/Footer/EditorName.js +1 -1
- package/es/Footer/Footer.js +37 -23
- package/es/Footer/FooterAuth.js +36 -15
- package/es/Footer/FooterLinks.js +31 -19
- package/es/Footer/FooterPrivacy.js +13 -9
- package/es/Footer/FooterText.js +8 -6
- package/es/Footer/privacy_en.js +1 -1
- package/es/Footer/privacy_nb.js +1 -1
- package/es/Footer/privacy_nn.js +1 -1
- package/es/Frontpage/FrontpageAllSubjects.js +46 -32
- package/es/Frontpage/FrontpageFilm.js +22 -12
- package/es/Frontpage/FrontpageHeader.js +18 -10
- package/es/Frontpage/FrontpageInfo.js +6 -4
- package/es/Frontpage/FrontpageMultidisciplinarySubject.js +38 -24
- package/es/Frontpage/FrontpageProgramMenu.js +55 -37
- package/es/Frontpage/FrontpageSearch.js +11 -7
- package/es/Frontpage/FrontpageToolbox.js +18 -10
- package/es/Frontpage/illustrations/Fellesfag.js +1 -1
- package/es/Frontpage/illustrations/FrontpageHeaderIllustration.js +1 -1
- package/es/Frontpage/illustrations/FrontpageIllustrations.js +13 -9
- package/es/Frontpage/illustrations/FrontpageSubjectIllustration.js +7 -7
- package/es/Frontpage/illustrations/MenuFellesfag.js +1 -1
- package/es/Frontpage/illustrations/MenuStudiespesialiserende.js +1 -1
- package/es/Frontpage/illustrations/MenuYrkesfag.js +1 -1
- package/es/Frontpage/illustrations/Studiespesialiserende.js +1 -1
- package/es/Frontpage/illustrations/Yrkesfag.js +1 -1
- package/es/Hero/Hero.js +1 -1
- package/es/Image/Image.js +9 -7
- package/es/Image/ImageLink.js +9 -7
- package/es/Image/LazyLoadImage.js +2 -2
- package/es/InfoBlock/InfoBlock.js +22 -12
- package/es/InfoBox/InfoBox.js +6 -4
- package/es/InfoWidget/InfoWidget.js +46 -28
- package/es/LanguageSelector/LanguageSelector.js +42 -21
- package/es/LanguageSelector/LanguageSelectorContent.js +18 -6
- package/es/Layout/Content.js +1 -1
- package/es/Layout/LayoutItem.js +1 -1
- package/es/Layout/OneColumn.js +1 -1
- package/es/Layout/PageContainer.js +1 -1
- package/es/LearningPaths/LearningPathContent.js +6 -4
- package/es/LearningPaths/LearningPathInformation.js +16 -10
- package/es/LearningPaths/LearningPathLastStepNavigation.js +26 -16
- package/es/LearningPaths/LearningPathMenu.js +19 -11
- package/es/LearningPaths/LearningPathMenuAside.js +35 -15
- package/es/LearningPaths/LearningPathMenuAsideCopyright.js +10 -6
- package/es/LearningPaths/LearningPathMenuContent.js +33 -21
- package/es/LearningPaths/LearningPathMenuIntro.js +39 -23
- package/es/LearningPaths/LearningPathMenuModalWrapper.js +8 -4
- package/es/LearningPaths/LearningPathMobileHeader.js +18 -6
- package/es/LearningPaths/LearningPathMobileStepInfo.js +5 -3
- package/es/LearningPaths/LearningPathSticky.js +21 -13
- package/es/LearningPaths/LearningPathWrapper.js +13 -7
- package/es/Logo/Logo.js +1 -1
- package/es/Logo/SvgLogo.js +1 -1
- package/es/Masthead/Masthead.js +32 -20
- package/es/Masthead/MastheadAuthModal.js +5 -3
- package/es/Masthead/MastheadSearchModal.js +20 -10
- package/es/Masthead/SkipToMainContent.js +5 -3
- package/es/MediaList/MediaList.js +1 -1
- package/es/Messages/MessageBanner.js +18 -12
- package/es/Messages/MessageBox.js +51 -29
- package/es/Messages/MessageBoxTag.js +9 -7
- package/es/MultidisciplinarySubject/Illustrations.js +28 -14
- package/es/MultidisciplinarySubject/List.js +19 -13
- package/es/MultidisciplinarySubject/ListItem.js +41 -27
- package/es/MultidisciplinarySubject/MultidisciplinarySubject.js +42 -28
- package/es/MultidisciplinarySubject/MultidisciplinarySubjectHeader.js +38 -26
- package/es/MyNdla/Resource/Folder.js +45 -19
- package/es/MyNdla/Resource/FolderInput.js +17 -6
- package/es/NDLAFilm/AboutNdlaFilm.js +7 -5
- package/es/NDLAFilm/AllMoviesAlphabetically.js +62 -42
- package/es/NDLAFilm/CategorySelect.js +17 -11
- package/es/NDLAFilm/FilmContentCard.js +15 -9
- package/es/NDLAFilm/FilmContentCardTags.js +10 -6
- package/es/NDLAFilm/FilmMovieList.js +5 -3
- package/es/NDLAFilm/FilmMovieSearch.js +10 -6
- package/es/NDLAFilm/FilmSlideshow.js +44 -32
- package/es/NDLAFilm/MovieGrid.js +11 -7
- package/es/NDLAFilm/NavigationArrow.js +25 -13
- package/es/NDLAFilm/SlideshowIndicator.js +12 -8
- package/es/NDLAFilm/VisualElement.js +9 -7
- package/es/NDLAFilm/filmStyles.js +7 -3
- package/es/Navigation/NavigationBox.js +120 -82
- package/es/Navigation/NavigationHeading.js +26 -20
- package/es/Navigation/NavigationTopicAbout.js +82 -64
- package/es/NoContentBox/NoContentBox.js +1 -1
- package/es/Notion/ConceptNotion.js +12 -6
- package/es/Notion/FigureNotion.js +11 -3
- package/es/Notion/Notion.js +26 -18
- package/es/Notion/NotionImage.js +10 -6
- package/es/Notion/NotionVisualElement.js +12 -10
- package/es/Portrait/Portrait.js +14 -4
- package/es/Programme/Programme.js +30 -20
- package/es/Programme/ProgrammeSubjects.js +6 -4
- package/es/RadioButtonGroup/RadioButtonGroup.js +20 -12
- package/es/RelatedArticleList/RelatedArticleList.js +1 -1
- package/es/Resource/BlockResource.js +32 -13
- package/es/Resource/ListResource.js +53 -32
- package/es/Resource/resourceComponents.js +61 -30
- package/es/ResourceBox/ResourceBox.js +27 -15
- package/es/ResourceGroup/ResourceGroup.js +13 -7
- package/es/ResourceGroup/ResourceItem.js +59 -29
- package/es/ResourceGroup/ResourceList.js +13 -7
- package/es/ResourcesWrapper/ResourcesTitle.js +1 -1
- package/es/ResourcesWrapper/ResourcesTopicTitle.js +31 -19
- package/es/ResourcesWrapper/ResourcesWrapper.js +1 -1
- package/es/Search/ActiveFilterContent.js +10 -6
- package/es/Search/ActiveFilters.js +36 -24
- package/es/Search/ContentTypeResult.js +2 -4
- package/es/Search/ContentTypeResultStyles.js +76 -32
- package/es/Search/LoadingWrapper.js +6 -4
- package/es/Search/SearchField.js +13 -7
- package/es/Search/SearchFieldForm.js +19 -9
- package/es/Search/SearchResult.js +46 -26
- package/es/Search/SearchResultSleeve.js +35 -19
- package/es/Search/ToggleSearchButton.js +10 -6
- package/es/SearchTypeResult/ActiveFilterContent.js +14 -10
- package/es/SearchTypeResult/ActiveFilters.js +36 -24
- package/es/SearchTypeResult/PopupFilter.js +41 -27
- package/es/SearchTypeResult/ResultNavigation.js +18 -10
- package/es/SearchTypeResult/SearchFieldHeader.js +22 -14
- package/es/SearchTypeResult/SearchFilterContent.js +14 -10
- package/es/SearchTypeResult/SearchHeader.js +34 -18
- package/es/SearchTypeResult/SearchItem.js +51 -37
- package/es/SearchTypeResult/SearchItemList.js +71 -44
- package/es/SearchTypeResult/SearchItems.js +16 -12
- package/es/SearchTypeResult/SearchNotionItem.js +63 -39
- package/es/SearchTypeResult/SearchNotionsResult.js +19 -11
- package/es/SearchTypeResult/SearchSubjectItem.js +14 -8
- package/es/SearchTypeResult/SearchSubjectResult.js +9 -7
- package/es/SearchTypeResult/SearchTypeHeader.js +41 -23
- package/es/SearchTypeResult/SearchTypeResult.js +11 -7
- package/es/SearchTypeResult/SearchViewType.js +22 -14
- package/es/SearchTypeResult/components/ItemContexts.js +33 -19
- package/es/SearchTypeResult/components/ItemResourceHeader.js +47 -25
- package/es/SearchTypeResult/components/ItemTopicHeader.js +33 -15
- package/es/SearchTypeResult/components/SubjectFilters.js +9 -7
- package/es/SectionHeading/SectionHeading.js +16 -8
- package/es/SnackBar/DefaultSnackbar.js +13 -7
- package/es/SnackBar/SnackbarProvider.js +17 -13
- package/es/Subject/Subject.js +64 -38
- package/es/Subject/SubjectAbout.js +46 -26
- package/es/Subject/SubjectArchive.js +54 -32
- package/es/Subject/SubjectBanner.js +7 -5
- package/es/Subject/SubjectCarousel.js +26 -14
- package/es/Subject/SubjectHeader.js +23 -13
- package/es/Subject/SubjectLinks.js +17 -11
- package/es/Subject/SubjectNewContent.js +39 -23
- package/es/Subject/SubjectShortcuts.js +22 -14
- package/es/Subject/SubjectSocial.js +10 -6
- package/es/Table/Table.js +1 -1
- package/es/TagSelector/Control.js +32 -0
- package/es/TagSelector/DropdownIndicator.js +68 -0
- package/es/TagSelector/Input.js +28 -0
- package/es/TagSelector/Menu.js +35 -0
- package/es/TagSelector/MenuList.js +31 -0
- package/es/TagSelector/Option.js +59 -0
- package/es/TagSelector/SelectContainer.js +28 -0
- package/es/TagSelector/TagSelector.js +167 -102
- package/es/TagSelector/ValueButton.js +48 -0
- package/es/TagSelector/ariaMessages.js +104 -0
- package/es/TagSelector/index.js +2 -1
- package/es/TagSelector/types.js +0 -0
- package/es/ToolboxPage/ToolboxInfo.js +10 -6
- package/es/Topic/Loader.js +1 -1
- package/es/Topic/Topic.js +117 -83
- package/es/TopicIntroductionList/TopicIntroduction.js +1 -1
- package/es/TopicIntroductionList/TopicIntroductionList.js +1 -1
- package/es/TopicIntroductionList/TopicIntroductionShortcuts.js +1 -1
- package/es/TopicIntroductionList/TopicShortcutItem.js +1 -1
- package/es/TopicMenu/SubtopicLinkList.js +33 -19
- package/es/TopicMenu/TopicMenu.js +5 -3
- package/es/TopicMenu/TopicMenuButton.js +8 -4
- package/es/Translation/Translation.js +1 -1
- package/es/Translation/TranslationBox.js +1 -1
- package/es/Translation/TranslationLine.js +1 -1
- package/es/TreeStructure/AddFolderButton.js +14 -10
- package/es/TreeStructure/ComboboxButton.js +29 -24
- package/es/TreeStructure/FolderItem.js +27 -15
- package/es/TreeStructure/FolderItems.js +11 -7
- package/es/TreeStructure/NavigationLink.js +21 -10
- package/es/TreeStructure/TreeStructure.js +46 -28
- package/es/User/AuthModal.js +33 -19
- package/es/User/UserInfo.js +20 -10
- package/es/internal-icons/Book.js +1 -1
- package/es/internal-icons/Download.js +1 -1
- package/es/internal-icons/Embed.js +1 -1
- package/es/internal-icons/InsertTemplate.js +1 -1
- package/es/internal-icons/OpenWindow.js +1 -1
- package/es/locale/LocaleProvider.js +1 -1
- package/es/locale/messages-en.js +41 -3
- package/es/locale/messages-nb.js +41 -3
- package/es/locale/messages-nn.js +41 -3
- package/es/locale/messages-se.js +41 -3
- package/es/locale/messages-sma.js +41 -3
- package/es/utils/createUniversalPortal.js +1 -1
- package/lib/Animation/DisplayOnPageYOffset.d.ts +1 -1
- package/lib/Animation/DisplayOnPageYOffset.js +2 -2
- package/lib/Animation/Fade.d.ts +1 -1
- package/lib/Animation/Fade.js +2 -2
- package/lib/Article/Article.d.ts +3 -3
- package/lib/Article/Article.js +39 -35
- package/lib/Article/ArticleAccessMessage.d.ts +1 -2
- package/lib/Article/ArticleAccessMessage.js +15 -11
- package/lib/Article/ArticleByline.d.ts +1 -1
- package/lib/Article/ArticleByline.js +33 -25
- package/lib/Article/ArticleContent.d.ts +1 -2
- package/lib/Article/ArticleContent.js +2 -2
- package/lib/Article/ArticleFavoritesButton.d.ts +1 -2
- package/lib/Article/ArticleFavoritesButton.js +5 -5
- package/lib/Article/ArticleFootNotes.d.ts +1 -2
- package/lib/Article/ArticleFootNotes.js +7 -7
- package/lib/Article/ArticleHeaderWrapper.d.ts +2 -2
- package/lib/Article/ArticleHeaderWrapper.js +36 -28
- package/lib/Article/ArticleNotions.d.ts +1 -2
- package/lib/Article/ArticleNotions.js +33 -23
- package/lib/Article/ArticleSideBar.d.ts +1 -1
- package/lib/Article/ArticleSideBar.js +34 -26
- package/lib/Aside/Aside.d.ts +1 -1
- package/lib/Aside/Aside.js +2 -2
- package/lib/AudioPlayer/AudioPlayer.d.ts +1 -1
- package/lib/AudioPlayer/AudioPlayer.js +83 -55
- package/lib/AudioPlayer/Controls.d.ts +1 -2
- package/lib/AudioPlayer/Controls.js +161 -109
- package/lib/AudioPlayer/SpeechControl.d.ts +1 -2
- package/lib/AudioPlayer/SpeechControl.js +8 -6
- package/lib/AudioPlayer/initAudioPlayers.js +3 -3
- package/lib/AuthorInfo/AuthorInfo.d.ts +1 -2
- package/lib/AuthorInfo/AuthorInfo.js +16 -10
- package/lib/BannerCard/BannerCard.d.ts +1 -2
- package/lib/BannerCard/BannerCard.js +31 -17
- package/lib/BlogPosts/BlogPost.d.ts +1 -2
- package/lib/BlogPosts/BlogPost.js +26 -18
- package/lib/BlogPosts/BlogPostWrapper.d.ts +1 -1
- package/lib/BlogPosts/BlogPostWrapper.js +8 -6
- package/lib/Breadcrumb/ActionBreadcrumb.d.ts +1 -2
- package/lib/Breadcrumb/ActionBreadcrumb.js +31 -16
- package/lib/Breadcrumb/Breadcrumb.d.ts +1 -1
- package/lib/Breadcrumb/Breadcrumb.js +17 -13
- package/lib/Breadcrumb/BreadcrumbItem.js +41 -29
- package/lib/Breadcrumb/HeaderBreadcrumb.d.ts +1 -2
- package/lib/Breadcrumb/HeaderBreadcrumb.js +24 -11
- package/lib/Breadcrumb/HomeBreadcrumb.d.ts +1 -2
- package/lib/Breadcrumb/HomeBreadcrumb.js +37 -25
- package/lib/Breadcrumblist/Breadcrumblist.d.ts +1 -1
- package/lib/Breadcrumblist/Breadcrumblist.js +51 -39
- package/lib/CompetenceGoalTab/CompetenceGoalItem.d.ts +1 -2
- package/lib/CompetenceGoalTab/CompetenceGoalItem.js +45 -29
- package/lib/CompetenceGoalTab/CompetenceGoalTab.d.ts +1 -2
- package/lib/CompetenceGoalTab/CompetenceGoalTab.js +32 -22
- package/lib/CompetenceGoalTab/CompetenceItem.d.ts +1 -2
- package/lib/CompetenceGoalTab/CompetenceItem.js +84 -64
- package/lib/CompetenceGoalTab/SearchButton.d.ts +1 -2
- package/lib/CompetenceGoalTab/SearchButton.js +13 -9
- package/lib/CompetenceGoals/CompetenceGoalsDialog.d.ts +1 -1
- package/lib/CompetenceGoals/CompetenceGoalsDialog.js +22 -16
- package/lib/ComponentCursor/ComponentCursor.d.ts +1 -2
- package/lib/ComponentCursor/ComponentCursor.js +59 -41
- package/lib/ContentCard/ContentCard.d.ts +1 -2
- package/lib/ContentCard/ContentCard.js +39 -23
- package/lib/ContentLoader/index.d.ts +1 -1
- package/lib/ContentLoader/index.js +11 -11
- package/lib/ContentPlaceholder/ContentPlaceholder.d.ts +1 -2
- package/lib/ContentPlaceholder/ContentPlaceholder.js +22 -16
- package/lib/ContentTypeBadge/ContentTypeBadge.d.ts +9 -10
- package/lib/ContentTypeBadge/ContentTypeBadge.js +19 -19
- package/lib/CopyParagraphButton/CopyParagraphButton.d.ts +1 -2
- package/lib/CopyParagraphButton/CopyParagraphButton.js +47 -35
- package/lib/CopyParagraphButton/initCopyParagraphButtons.js +2 -2
- package/lib/CreatedBy/CreatedBy.d.ts +1 -2
- package/lib/CreatedBy/CreatedBy.js +29 -21
- package/lib/Dialog/Dialog.d.ts +1 -1
- package/lib/Dialog/Dialog.js +4 -4
- package/lib/ErrorMessage/ErrorMessage.d.ts +1 -1
- package/lib/ErrorMessage/ErrorMessage.js +31 -25
- package/lib/ErrorMessage/ErrorResourceAccessDenied.d.ts +1 -2
- package/lib/ErrorMessage/ErrorResourceAccessDenied.js +10 -8
- package/lib/FactBox/FactBox.d.ts +1 -1
- package/lib/FactBox/FactBox.js +4 -4
- package/lib/Figure/Figure.d.ts +2 -2
- package/lib/Figure/Figure.js +10 -10
- package/lib/Figure/FigureBylineExpandButton.d.ts +1 -2
- package/lib/Figure/FigureBylineExpandButton.js +4 -4
- package/lib/Figure/FigureExpandButton.d.ts +1 -2
- package/lib/Figure/FigureExpandButton.js +4 -4
- package/lib/Figure/FigureLicense.d.ts +2 -2
- package/lib/Figure/FigureLicense.js +7 -7
- package/lib/Figure/FigureLicenseDialog.d.ts +1 -1
- package/lib/Figure/FigureLicenseDialog.js +5 -5
- package/lib/Figure/FigureOpenDialogButton.d.ts +1 -2
- package/lib/Figure/FigureOpenDialogButton.js +7 -7
- package/lib/FileList/File.d.ts +1 -2
- package/lib/FileList/File.js +23 -17
- package/lib/FileList/FileList.d.ts +1 -2
- package/lib/FileList/FileList.js +19 -13
- package/lib/Filter/FilterButtons.d.ts +1 -2
- package/lib/Filter/FilterButtons.js +64 -46
- package/lib/Filter/FilterCarousel.d.ts +1 -1
- package/lib/Filter/FilterCarousel.js +37 -31
- package/lib/Filter/FilterList.d.ts +1 -1
- package/lib/Filter/FilterList.js +5 -5
- package/lib/Filter/FilterListPhone.d.ts +1 -2
- package/lib/Filter/FilterListPhone.js +19 -19
- package/lib/Filter/ToggleItem.d.ts +1 -1
- package/lib/Filter/ToggleItem.js +4 -4
- package/lib/Footer/EditorName.d.ts +1 -2
- package/lib/Footer/EditorName.js +2 -2
- package/lib/Footer/Footer.d.ts +1 -1
- package/lib/Footer/Footer.js +43 -29
- package/lib/Footer/FooterAuth.d.ts +1 -2
- package/lib/Footer/FooterAuth.js +38 -24
- package/lib/Footer/FooterLinks.d.ts +1 -1
- package/lib/Footer/FooterLinks.js +38 -26
- package/lib/Footer/FooterPrivacy.d.ts +1 -2
- package/lib/Footer/FooterPrivacy.js +21 -17
- package/lib/Footer/FooterText.d.ts +1 -1
- package/lib/Footer/FooterText.js +9 -7
- package/lib/Footer/privacy_en.d.ts +1 -2
- package/lib/Footer/privacy_en.js +2 -2
- package/lib/Footer/privacy_nb.d.ts +1 -2
- package/lib/Footer/privacy_nb.js +2 -2
- package/lib/Footer/privacy_nn.d.ts +1 -2
- package/lib/Footer/privacy_nn.js +2 -2
- package/lib/Frontpage/FrontpageAllSubjects.d.ts +1 -2
- package/lib/Frontpage/FrontpageAllSubjects.js +55 -41
- package/lib/Frontpage/FrontpageFilm.d.ts +1 -1
- package/lib/Frontpage/FrontpageFilm.js +39 -29
- package/lib/Frontpage/FrontpageHeader.d.ts +1 -1
- package/lib/Frontpage/FrontpageHeader.js +22 -14
- package/lib/Frontpage/FrontpageInfo.d.ts +1 -1
- package/lib/Frontpage/FrontpageInfo.js +7 -5
- package/lib/Frontpage/FrontpageMultidisciplinarySubject.d.ts +21 -6
- package/lib/Frontpage/FrontpageMultidisciplinarySubject.js +46 -32
- package/lib/Frontpage/FrontpageProgramMenu.d.ts +1 -2
- package/lib/Frontpage/FrontpageProgramMenu.js +61 -43
- package/lib/Frontpage/FrontpageSearch.d.ts +1 -1
- package/lib/Frontpage/FrontpageSearch.js +16 -12
- package/lib/Frontpage/FrontpageToolbox.d.ts +1 -1
- package/lib/Frontpage/FrontpageToolbox.js +23 -15
- package/lib/Frontpage/illustrations/Fellesfag.d.ts +1 -2
- package/lib/Frontpage/illustrations/Fellesfag.js +15 -15
- package/lib/Frontpage/illustrations/FrontpageHeaderIllustration.d.ts +1 -2
- package/lib/Frontpage/illustrations/FrontpageHeaderIllustration.js +31 -31
- package/lib/Frontpage/illustrations/FrontpageIllustrations.d.ts +8 -2
- package/lib/Frontpage/illustrations/FrontpageIllustrations.js +13 -9
- package/lib/Frontpage/illustrations/FrontpageSubjectIllustration.d.ts +1 -2
- package/lib/Frontpage/illustrations/FrontpageSubjectIllustration.js +47 -47
- package/lib/Frontpage/illustrations/MenuFellesfag.d.ts +1 -2
- package/lib/Frontpage/illustrations/MenuFellesfag.js +16 -16
- package/lib/Frontpage/illustrations/MenuStudiespesialiserende.d.ts +1 -2
- package/lib/Frontpage/illustrations/MenuStudiespesialiserende.js +13 -13
- package/lib/Frontpage/illustrations/MenuYrkesfag.d.ts +1 -2
- package/lib/Frontpage/illustrations/MenuYrkesfag.js +20 -20
- package/lib/Frontpage/illustrations/Studiespesialiserende.d.ts +1 -2
- package/lib/Frontpage/illustrations/Studiespesialiserende.js +13 -13
- package/lib/Frontpage/illustrations/Yrkesfag.d.ts +1 -2
- package/lib/Frontpage/illustrations/Yrkesfag.js +19 -19
- package/lib/Frontpage/illustrations/index.d.ts +6 -7
- package/lib/Hero/Hero.d.ts +8 -8
- package/lib/Hero/Hero.js +9 -9
- package/lib/Image/Image.d.ts +1 -1
- package/lib/Image/Image.js +13 -11
- package/lib/Image/ImageLink.d.ts +1 -1
- package/lib/Image/ImageLink.js +10 -8
- package/lib/Image/LazyLoadImage.d.ts +1 -2
- package/lib/Image/LazyLoadImage.js +4 -4
- package/lib/InfoBlock/InfoBlock.d.ts +1 -1
- package/lib/InfoBlock/InfoBlock.js +23 -13
- package/lib/InfoBox/InfoBox.d.ts +1 -1
- package/lib/InfoBox/InfoBox.js +7 -5
- package/lib/InfoWidget/InfoWidget.d.ts +1 -1
- package/lib/InfoWidget/InfoWidget.js +56 -38
- package/lib/LanguageSelector/LanguageSelector.d.ts +1 -2
- package/lib/LanguageSelector/LanguageSelector.js +51 -30
- package/lib/LanguageSelector/LanguageSelectorContent.d.ts +1 -2
- package/lib/LanguageSelector/LanguageSelectorContent.js +21 -10
- package/lib/Layout/Content.d.ts +1 -1
- package/lib/Layout/Content.js +2 -2
- package/lib/Layout/LayoutItem.d.ts +1 -1
- package/lib/Layout/LayoutItem.js +5 -5
- package/lib/Layout/OneColumn.d.ts +1 -1
- package/lib/Layout/OneColumn.js +2 -2
- package/lib/Layout/PageContainer.d.ts +1 -1
- package/lib/Layout/PageContainer.js +2 -2
- package/lib/LearningPaths/LearningPathContent.d.ts +1 -1
- package/lib/LearningPaths/LearningPathContent.js +7 -5
- package/lib/LearningPaths/LearningPathInformation.d.ts +1 -2
- package/lib/LearningPaths/LearningPathInformation.js +21 -15
- package/lib/LearningPaths/LearningPathLastStepNavigation.d.ts +1 -1
- package/lib/LearningPaths/LearningPathLastStepNavigation.js +32 -22
- package/lib/LearningPaths/LearningPathMenu.d.ts +1 -2
- package/lib/LearningPaths/LearningPathMenu.js +38 -30
- package/lib/LearningPaths/LearningPathMenuAside.d.ts +1 -1
- package/lib/LearningPaths/LearningPathMenuAside.js +49 -29
- package/lib/LearningPaths/LearningPathMenuAsideCopyright.d.ts +1 -2
- package/lib/LearningPaths/LearningPathMenuAsideCopyright.js +13 -9
- package/lib/LearningPaths/LearningPathMenuContent.d.ts +1 -2
- package/lib/LearningPaths/LearningPathMenuContent.js +53 -41
- package/lib/LearningPaths/LearningPathMenuIntro.d.ts +1 -2
- package/lib/LearningPaths/LearningPathMenuIntro.js +48 -32
- package/lib/LearningPaths/LearningPathMenuModalWrapper.d.ts +1 -1
- package/lib/LearningPaths/LearningPathMenuModalWrapper.js +13 -9
- package/lib/LearningPaths/LearningPathMobileHeader.d.ts +1 -1
- package/lib/LearningPaths/LearningPathMobileHeader.js +19 -8
- package/lib/LearningPaths/LearningPathMobileStepInfo.d.ts +1 -1
- package/lib/LearningPaths/LearningPathMobileStepInfo.js +6 -4
- package/lib/LearningPaths/LearningPathSticky.d.ts +3 -3
- package/lib/LearningPaths/LearningPathSticky.js +37 -29
- package/lib/LearningPaths/LearningPathWrapper.d.ts +1 -1
- package/lib/LearningPaths/LearningPathWrapper.js +17 -11
- package/lib/Logo/Logo.d.ts +1 -2
- package/lib/Logo/Logo.js +5 -5
- package/lib/Logo/SvgLogo.d.ts +1 -2
- package/lib/Logo/SvgLogo.js +8 -8
- package/lib/Masthead/Masthead.d.ts +2 -2
- package/lib/Masthead/Masthead.js +48 -36
- package/lib/Masthead/MastheadAuthModal.d.ts +1 -2
- package/lib/Masthead/MastheadAuthModal.js +8 -6
- package/lib/Masthead/MastheadSearchModal.d.ts +1 -1
- package/lib/Masthead/MastheadSearchModal.js +40 -30
- package/lib/Masthead/SkipToMainContent.d.ts +1 -2
- package/lib/Masthead/SkipToMainContent.js +6 -4
- package/lib/MediaList/MediaList.d.ts +8 -8
- package/lib/MediaList/MediaList.js +15 -15
- package/lib/Messages/MessageBanner.d.ts +1 -2
- package/lib/Messages/MessageBanner.js +21 -15
- package/lib/Messages/MessageBox.d.ts +2 -2
- package/lib/Messages/MessageBox.js +60 -38
- package/lib/Messages/MessageBoxTag.d.ts +1 -2
- package/lib/Messages/MessageBoxTag.js +10 -8
- package/lib/MultidisciplinarySubject/Illustrations.d.ts +28 -7
- package/lib/MultidisciplinarySubject/Illustrations.js +28 -14
- package/lib/MultidisciplinarySubject/List.d.ts +1 -2
- package/lib/MultidisciplinarySubject/List.js +21 -15
- package/lib/MultidisciplinarySubject/ListItem.d.ts +1 -2
- package/lib/MultidisciplinarySubject/ListItem.js +45 -31
- package/lib/MultidisciplinarySubject/MultidisciplinarySubject.d.ts +1 -1
- package/lib/MultidisciplinarySubject/MultidisciplinarySubject.js +47 -33
- package/lib/MultidisciplinarySubject/MultidisciplinarySubjectHeader.d.ts +1 -2
- package/lib/MultidisciplinarySubject/MultidisciplinarySubjectHeader.js +47 -35
- package/lib/MyNdla/Resource/Folder.d.ts +1 -2
- package/lib/MyNdla/Resource/Folder.js +53 -28
- package/lib/MyNdla/Resource/FolderInput.d.ts +1 -1
- package/lib/MyNdla/Resource/FolderInput.js +15 -11
- package/lib/NDLAFilm/AboutNdlaFilm.d.ts +1 -1
- package/lib/NDLAFilm/AboutNdlaFilm.js +14 -12
- package/lib/NDLAFilm/AllMoviesAlphabetically.d.ts +1 -2
- package/lib/NDLAFilm/AllMoviesAlphabetically.js +80 -60
- package/lib/NDLAFilm/CategorySelect.js +31 -25
- package/lib/NDLAFilm/FilmContentCard.d.ts +1 -2
- package/lib/NDLAFilm/FilmContentCard.js +20 -14
- package/lib/NDLAFilm/FilmContentCardTags.d.ts +1 -2
- package/lib/NDLAFilm/FilmContentCardTags.js +12 -8
- package/lib/NDLAFilm/FilmMovieList.d.ts +1 -2
- package/lib/NDLAFilm/FilmMovieList.js +8 -6
- package/lib/NDLAFilm/FilmMovieSearch.d.ts +1 -2
- package/lib/NDLAFilm/FilmMovieSearch.js +17 -13
- package/lib/NDLAFilm/FilmSlideshow.d.ts +1 -2
- package/lib/NDLAFilm/FilmSlideshow.js +91 -79
- package/lib/NDLAFilm/MovieGrid.d.ts +1 -2
- package/lib/NDLAFilm/MovieGrid.js +15 -11
- package/lib/NDLAFilm/NavigationArrow.d.ts +5 -2
- package/lib/NDLAFilm/NavigationArrow.js +27 -15
- package/lib/NDLAFilm/SlideshowIndicator.d.ts +1 -2
- package/lib/NDLAFilm/SlideshowIndicator.js +15 -11
- package/lib/NDLAFilm/VisualElement.d.ts +1 -2
- package/lib/NDLAFilm/VisualElement.js +11 -9
- package/lib/NDLAFilm/filmStyles.d.ts +8 -2
- package/lib/NDLAFilm/filmStyles.js +7 -3
- package/lib/Navigation/NavigationBox.d.ts +1 -1
- package/lib/Navigation/NavigationBox.js +128 -90
- package/lib/Navigation/NavigationHeading.d.ts +1 -1
- package/lib/Navigation/NavigationHeading.js +35 -29
- package/lib/Navigation/NavigationTopicAbout.d.ts +1 -1
- package/lib/Navigation/NavigationTopicAbout.js +88 -70
- package/lib/NoContentBox/NoContentBox.d.ts +1 -2
- package/lib/NoContentBox/NoContentBox.js +2 -2
- package/lib/Notion/ConceptNotion.d.ts +1 -2
- package/lib/Notion/ConceptNotion.js +16 -16
- package/lib/Notion/FigureNotion.d.ts +1 -1
- package/lib/Notion/FigureNotion.js +10 -8
- package/lib/Notion/Notion.d.ts +1 -1
- package/lib/Notion/Notion.js +31 -23
- package/lib/Notion/NotionImage.d.ts +1 -2
- package/lib/Notion/NotionImage.js +13 -9
- package/lib/Notion/NotionVisualElement.d.ts +1 -1
- package/lib/Notion/NotionVisualElement.js +16 -14
- package/lib/Portrait/Portrait.d.ts +1 -2
- package/lib/Portrait/Portrait.js +15 -6
- package/lib/Programme/Programme.d.ts +1 -2
- package/lib/Programme/Programme.js +34 -24
- package/lib/Programme/ProgrammeSubjects.d.ts +1 -2
- package/lib/Programme/ProgrammeSubjects.js +10 -8
- package/lib/RadioButtonGroup/RadioButtonGroup.d.ts +1 -1
- package/lib/RadioButtonGroup/RadioButtonGroup.js +25 -17
- package/lib/RelatedArticleList/RelatedArticleList.d.ts +2 -2
- package/lib/RelatedArticleList/RelatedArticleList.js +7 -7
- package/lib/Resource/BlockResource.d.ts +1 -2
- package/lib/Resource/BlockResource.js +41 -29
- package/lib/Resource/ListResource.d.ts +1 -2
- package/lib/Resource/ListResource.js +68 -54
- package/lib/Resource/resourceComponents.d.ts +18 -7
- package/lib/Resource/resourceComponents.js +65 -41
- package/lib/ResourceBox/ResourceBox.d.ts +1 -2
- package/lib/ResourceBox/ResourceBox.js +30 -18
- package/lib/ResourceGroup/ResourceGroup.d.ts +1 -2
- package/lib/ResourceGroup/ResourceGroup.js +15 -9
- package/lib/ResourceGroup/ResourceItem.d.ts +1 -2
- package/lib/ResourceGroup/ResourceItem.js +89 -59
- package/lib/ResourceGroup/ResourceList.d.ts +1 -2
- package/lib/ResourceGroup/ResourceList.js +15 -9
- package/lib/ResourcesWrapper/ResourcesTitle.d.ts +1 -1
- package/lib/ResourcesWrapper/ResourcesTitle.js +3 -3
- package/lib/ResourcesWrapper/ResourcesTopicTitle.d.ts +1 -2
- package/lib/ResourcesWrapper/ResourcesTopicTitle.js +43 -31
- package/lib/ResourcesWrapper/ResourcesWrapper.d.ts +1 -1
- package/lib/ResourcesWrapper/ResourcesWrapper.js +3 -3
- package/lib/Search/ActiveFilterContent.d.ts +5 -2
- package/lib/Search/ActiveFilterContent.js +12 -8
- package/lib/Search/ActiveFilters.d.ts +1 -2
- package/lib/Search/ActiveFilters.js +46 -34
- package/lib/Search/ContentTypeResult.d.ts +1 -2
- package/lib/Search/ContentTypeResult.js +15 -17
- package/lib/Search/ContentTypeResultStyles.d.ts +24 -6
- package/lib/Search/ContentTypeResultStyles.js +84 -40
- package/lib/Search/LoadingWrapper.d.ts +1 -2
- package/lib/Search/LoadingWrapper.js +7 -5
- package/lib/Search/SearchField.d.ts +1 -1
- package/lib/Search/SearchField.js +25 -19
- package/lib/Search/SearchFieldForm.d.ts +1 -1
- package/lib/Search/SearchFieldForm.js +21 -11
- package/lib/Search/SearchResult.d.ts +2 -2
- package/lib/Search/SearchResult.js +61 -41
- package/lib/Search/SearchResultSleeve.d.ts +1 -2
- package/lib/Search/SearchResultSleeve.js +46 -30
- package/lib/Search/ToggleSearchButton.d.ts +1 -2
- package/lib/Search/ToggleSearchButton.js +12 -8
- package/lib/SearchTypeResult/ActiveFilterContent.d.ts +5 -2
- package/lib/SearchTypeResult/ActiveFilterContent.js +16 -12
- package/lib/SearchTypeResult/ActiveFilters.d.ts +1 -1
- package/lib/SearchTypeResult/ActiveFilters.js +53 -41
- package/lib/SearchTypeResult/PopupFilter.d.ts +1 -2
- package/lib/SearchTypeResult/PopupFilter.js +50 -36
- package/lib/SearchTypeResult/ResultNavigation.d.ts +1 -2
- package/lib/SearchTypeResult/ResultNavigation.js +22 -14
- package/lib/SearchTypeResult/SearchFieldHeader.d.ts +1 -1
- package/lib/SearchTypeResult/SearchFieldHeader.js +29 -21
- package/lib/SearchTypeResult/SearchFilterContent.d.ts +1 -2
- package/lib/SearchTypeResult/SearchFilterContent.js +16 -12
- package/lib/SearchTypeResult/SearchHeader.d.ts +1 -1
- package/lib/SearchTypeResult/SearchHeader.js +40 -24
- package/lib/SearchTypeResult/SearchItem.d.ts +1 -1
- package/lib/SearchTypeResult/SearchItem.js +58 -44
- package/lib/SearchTypeResult/SearchItemList.d.ts +1 -2
- package/lib/SearchTypeResult/SearchItemList.js +79 -52
- package/lib/SearchTypeResult/SearchItems.d.ts +1 -1
- package/lib/SearchTypeResult/SearchItems.js +18 -14
- package/lib/SearchTypeResult/SearchNotionItem.d.ts +1 -1
- package/lib/SearchTypeResult/SearchNotionItem.js +75 -51
- package/lib/SearchTypeResult/SearchNotionsResult.d.ts +1 -1
- package/lib/SearchTypeResult/SearchNotionsResult.js +21 -13
- package/lib/SearchTypeResult/SearchSubjectItem.d.ts +1 -2
- package/lib/SearchTypeResult/SearchSubjectItem.js +16 -10
- package/lib/SearchTypeResult/SearchSubjectResult.d.ts +1 -2
- package/lib/SearchTypeResult/SearchSubjectResult.js +11 -9
- package/lib/SearchTypeResult/SearchTypeHeader.d.ts +1 -1
- package/lib/SearchTypeResult/SearchTypeHeader.js +47 -29
- package/lib/SearchTypeResult/SearchTypeResult.d.ts +1 -1
- package/lib/SearchTypeResult/SearchTypeResult.js +14 -10
- package/lib/SearchTypeResult/SearchViewType.d.ts +1 -2
- package/lib/SearchTypeResult/SearchViewType.js +28 -20
- package/lib/SearchTypeResult/components/ItemContexts.d.ts +1 -2
- package/lib/SearchTypeResult/components/ItemContexts.js +46 -32
- package/lib/SearchTypeResult/components/ItemResourceHeader.d.ts +1 -2
- package/lib/SearchTypeResult/components/ItemResourceHeader.js +50 -29
- package/lib/SearchTypeResult/components/ItemTopicHeader.d.ts +1 -1
- package/lib/SearchTypeResult/components/ItemTopicHeader.js +35 -24
- package/lib/SearchTypeResult/components/SubjectFilters.d.ts +1 -2
- package/lib/SearchTypeResult/components/SubjectFilters.js +14 -12
- package/lib/SectionHeading/SectionHeading.d.ts +1 -1
- package/lib/SectionHeading/SectionHeading.js +21 -13
- package/lib/SnackBar/DefaultSnackbar.d.ts +1 -2
- package/lib/SnackBar/DefaultSnackbar.js +15 -9
- package/lib/SnackBar/SnackbarProvider.d.ts +2 -2
- package/lib/SnackBar/SnackbarProvider.js +27 -23
- package/lib/Subject/Subject.d.ts +8 -8
- package/lib/Subject/Subject.js +97 -71
- package/lib/Subject/SubjectAbout.d.ts +1 -1
- package/lib/Subject/SubjectAbout.js +63 -43
- package/lib/Subject/SubjectArchive.d.ts +1 -1
- package/lib/Subject/SubjectArchive.js +65 -43
- package/lib/Subject/SubjectBanner.d.ts +1 -2
- package/lib/Subject/SubjectBanner.js +8 -6
- package/lib/Subject/SubjectCarousel.d.ts +1 -1
- package/lib/Subject/SubjectCarousel.js +43 -31
- package/lib/Subject/SubjectHeader.d.ts +1 -2
- package/lib/Subject/SubjectHeader.js +39 -29
- package/lib/Subject/SubjectLinks.d.ts +1 -2
- package/lib/Subject/SubjectLinks.js +20 -14
- package/lib/Subject/SubjectNewContent.d.ts +1 -2
- package/lib/Subject/SubjectNewContent.js +42 -26
- package/lib/Subject/SubjectShortcuts.d.ts +1 -1
- package/lib/Subject/SubjectShortcuts.js +28 -20
- package/lib/Subject/SubjectSocial.d.ts +2 -2
- package/lib/Subject/SubjectSocial.js +12 -8
- package/lib/Table/Table.d.ts +1 -1
- package/lib/Table/Table.js +5 -5
- package/lib/TagSelector/Control.d.ts +11 -0
- package/lib/TagSelector/Control.js +37 -0
- package/lib/TagSelector/DropdownIndicator.d.ts +11 -0
- package/lib/TagSelector/DropdownIndicator.js +82 -0
- package/lib/TagSelector/Input.d.ts +11 -0
- package/lib/TagSelector/Input.js +35 -0
- package/lib/TagSelector/Menu.d.ts +11 -0
- package/lib/TagSelector/Menu.js +42 -0
- package/lib/TagSelector/MenuList.d.ts +16 -0
- package/lib/TagSelector/MenuList.js +38 -0
- package/lib/TagSelector/Option.d.ts +11 -0
- package/lib/TagSelector/Option.js +65 -0
- package/lib/TagSelector/SelectContainer.d.ts +11 -0
- package/lib/TagSelector/SelectContainer.js +40 -0
- package/lib/TagSelector/TagSelector.d.ts +14 -12
- package/lib/TagSelector/TagSelector.js +171 -98
- package/lib/TagSelector/ValueButton.d.ts +19 -0
- package/lib/TagSelector/ValueButton.js +57 -0
- package/lib/TagSelector/ariaMessages.d.ts +16 -0
- package/lib/TagSelector/ariaMessages.js +113 -0
- package/lib/TagSelector/index.d.ts +2 -1
- package/lib/TagSelector/index.js +3 -5
- package/lib/TagSelector/types.d.ts +11 -0
- package/lib/TagSelector/types.js +1 -0
- package/lib/ToolboxPage/ToolboxInfo.d.ts +1 -1
- package/lib/ToolboxPage/ToolboxInfo.js +11 -7
- package/lib/Topic/Loader.d.ts +1 -2
- package/lib/Topic/Loader.js +15 -15
- package/lib/Topic/Topic.d.ts +1 -1
- package/lib/Topic/Topic.js +132 -98
- package/lib/TopicIntroductionList/TopicIntroduction.d.ts +1 -2
- package/lib/TopicIntroductionList/TopicIntroduction.js +15 -15
- package/lib/TopicIntroductionList/TopicIntroductionList.d.ts +1 -2
- package/lib/TopicIntroductionList/TopicIntroductionList.js +4 -4
- package/lib/TopicIntroductionList/TopicIntroductionShortcuts.d.ts +1 -2
- package/lib/TopicIntroductionList/TopicIntroductionShortcuts.js +7 -7
- package/lib/TopicIntroductionList/TopicShortcutItem.d.ts +1 -2
- package/lib/TopicIntroductionList/TopicShortcutItem.js +5 -5
- package/lib/TopicMenu/SubtopicLinkList.js +50 -36
- package/lib/TopicMenu/TopicMenu.js +32 -30
- package/lib/TopicMenu/TopicMenuButton.js +11 -7
- package/lib/Translation/Translation.d.ts +1 -1
- package/lib/Translation/Translation.js +2 -2
- package/lib/Translation/TranslationBox.d.ts +1 -1
- package/lib/Translation/TranslationBox.js +4 -4
- package/lib/Translation/TranslationLine.d.ts +1 -1
- package/lib/Translation/TranslationLine.js +5 -5
- package/lib/TreeStructure/AddFolderButton.d.ts +1 -2
- package/lib/TreeStructure/AddFolderButton.js +17 -13
- package/lib/TreeStructure/ComboboxButton.js +33 -28
- package/lib/TreeStructure/FolderItem.d.ts +1 -2
- package/lib/TreeStructure/FolderItem.js +32 -20
- package/lib/TreeStructure/FolderItems.d.ts +1 -1
- package/lib/TreeStructure/FolderItems.js +17 -13
- package/lib/TreeStructure/NavigationLink.d.ts +1 -2
- package/lib/TreeStructure/NavigationLink.js +16 -12
- package/lib/TreeStructure/TreeStructure.d.ts +1 -2
- package/lib/TreeStructure/TreeStructure.js +51 -33
- package/lib/User/AuthModal.d.ts +1 -1
- package/lib/User/AuthModal.js +42 -28
- package/lib/User/UserInfo.d.ts +1 -2
- package/lib/User/UserInfo.js +24 -20
- package/lib/internal-icons/Book.js +3 -3
- package/lib/internal-icons/Download.js +3 -3
- package/lib/internal-icons/Embed.js +3 -3
- package/lib/internal-icons/InsertTemplate.js +3 -3
- package/lib/internal-icons/OpenWindow.js +3 -3
- package/lib/locale/LocaleProvider.d.ts +1 -1
- package/lib/locale/LocaleProvider.js +4 -4
- package/lib/locale/messages-en.d.ts +40 -2
- package/lib/locale/messages-en.js +41 -3
- package/lib/locale/messages-nb.d.ts +40 -2
- package/lib/locale/messages-nb.js +41 -3
- package/lib/locale/messages-nn.d.ts +40 -2
- package/lib/locale/messages-nn.js +41 -3
- package/lib/locale/messages-se.d.ts +40 -2
- package/lib/locale/messages-se.js +41 -3
- package/lib/locale/messages-sma.d.ts +40 -2
- package/lib/locale/messages-sma.js +41 -3
- package/lib/utils/createUniversalPortal.d.ts +1 -1
- package/lib/utils/createUniversalPortal.js +2 -2
- package/package.json +19 -18
- package/src/Breadcrumb/BreadcrumbItem.tsx +1 -1
- package/src/ComponentCursor/ComponentCursor.tsx +1 -1
- package/src/CopyParagraphButton/CopyParagraphButton.tsx +21 -19
- package/src/Filter/FilterCarousel.tsx +1 -1
- package/src/Frontpage/FrontpageFilm.tsx +1 -1
- package/src/Frontpage/illustrations/FrontpageSubjectIllustration.tsx +1 -1
- package/src/Image/LazyLoadImage.tsx +0 -1
- package/src/Image/__tests__/Image-test.jsx +8 -7
- package/src/Image/__tests__/__snapshots__/Image-test.jsx.snap +8 -20
- package/src/InfoWidget/InfoWidget.tsx +1 -1
- package/src/LanguageSelector/LanguageSelector.tsx +1 -1
- package/src/LearningPaths/LearningPathLastStepNavigation.tsx +1 -1
- package/src/LearningPaths/LearningPathMenu.tsx +1 -1
- package/src/LearningPaths/LearningPathMenuAside.tsx +1 -1
- package/src/LearningPaths/LearningPathMenuContent.tsx +1 -1
- package/src/LearningPaths/LearningPathMenuIntro.tsx +1 -1
- package/src/LearningPaths/LearningPathMenuModalWrapper.tsx +1 -1
- package/src/LearningPaths/LearningPathSticky.tsx +1 -1
- package/src/LearningPaths/LearningPathWrapper.tsx +1 -1
- package/src/Masthead/Masthead.tsx +1 -1
- package/src/Masthead/MastheadSearchModal.tsx +1 -1
- package/src/Messages/MessageBox.tsx +1 -1
- package/src/MyNdla/Resource/Folder.tsx +1 -1
- package/src/NDLAFilm/AllMoviesAlphabetically.tsx +1 -1
- package/src/NDLAFilm/CategorySelect.tsx +1 -1
- package/src/NDLAFilm/FilmSlideshow.tsx +1 -1
- package/src/NDLAFilm/NavigationArrow.tsx +1 -1
- package/src/Navigation/NavigationBox.tsx +1 -1
- package/src/Navigation/NavigationHeading.tsx +1 -1
- package/src/Navigation/NavigationTopicAbout.tsx +1 -1
- package/src/Notion/ConceptNotion.tsx +0 -2
- package/src/Notion/NotionVisualElement.tsx +1 -1
- package/src/Resource/ListResource.tsx +1 -1
- package/src/ResourceGroup/ResourceItem.tsx +2 -2
- package/src/ResourceGroup/ResourceList.tsx +2 -2
- package/src/ResourcesWrapper/ResourcesTopicTitle.tsx +1 -1
- package/src/Search/ActiveFilters.tsx +1 -1
- package/src/Search/ContentTypeResultStyles.tsx +1 -1
- package/src/Search/SearchField.tsx +1 -1
- package/src/Search/SearchFieldForm.tsx +1 -1
- package/src/SearchTypeResult/ActiveFilters.tsx +1 -1
- package/src/SearchTypeResult/SearchItem.tsx +6 -49
- package/src/SearchTypeResult/SearchItemList.tsx +12 -19
- package/src/SearchTypeResult/components/ItemResourceHeader.tsx +19 -23
- package/src/SearchTypeResult/components/ItemTopicHeader.tsx +3 -5
- package/src/SectionHeading/SectionHeading.tsx +1 -1
- package/src/SnackBar/SnackbarProvider.tsx +1 -1
- package/src/Subject/Subject.tsx +1 -1
- package/src/Subject/SubjectAbout.tsx +1 -1
- package/src/Subject/SubjectCarousel.tsx +1 -1
- package/src/Subject/SubjectHeader.tsx +1 -1
- package/src/TagSelector/Control.tsx +34 -0
- package/src/TagSelector/DropdownIndicator.tsx +47 -0
- package/src/TagSelector/Input.tsx +31 -0
- package/src/TagSelector/Menu.tsx +38 -0
- package/src/TagSelector/MenuList.tsx +30 -0
- package/src/TagSelector/Option.tsx +53 -0
- package/src/TagSelector/SelectContainer.tsx +32 -0
- package/src/TagSelector/TagSelector.tsx +105 -84
- package/src/TagSelector/ValueButton.tsx +46 -0
- package/src/TagSelector/ariaMessages.ts +87 -0
- package/src/TagSelector/index.ts +2 -1
- package/src/TagSelector/types.ts +12 -0
- package/src/Topic/Topic.tsx +1 -1
- package/src/TopicMenu/SubtopicLinkList.jsx +1 -1
- package/src/TopicMenu/TopicMenuButton.jsx +1 -1
- package/src/TreeStructure/ComboboxButton.tsx +15 -17
- package/src/TreeStructure/TreeStructure.tsx +3 -12
- package/src/locale/messages-en.ts +42 -3
- package/src/locale/messages-nb.ts +42 -3
- package/src/locale/messages-nn.ts +42 -3
- package/src/locale/messages-se.ts +42 -3
- package/src/locale/messages-sma.ts +42 -3
- package/es/TagSelector/SuggestionInput.js +0 -285
- package/es/TagSelector/Suggestions.js +0 -97
- package/lib/TagSelector/SuggestionInput.d.ts +0 -19
- package/lib/TagSelector/SuggestionInput.js +0 -299
- package/lib/TagSelector/Suggestions.d.ts +0 -12
- package/lib/TagSelector/Suggestions.js +0 -99
- package/src/TagSelector/SuggestionInput.tsx +0 -287
- package/src/TagSelector/Suggestions.tsx +0 -139
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
2
|
* Copyright (c) 2022-present, NDLA.
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the GPLv3 license found in the
|
|
@@ -6,107 +6,128 @@
|
|
|
6
6
|
*
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
-
import React, {
|
|
9
|
+
import React, { KeyboardEvent, useMemo, useState } from 'react';
|
|
10
|
+
import CreatableSelect from 'react-select/creatable';
|
|
11
|
+
import { MultiValue, StylesConfig } from 'react-select';
|
|
10
12
|
import styled from '@emotion/styled';
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import
|
|
13
|
+
import { colors, fonts, spacing, utils } from '@ndla/core';
|
|
14
|
+
import { useTranslation } from 'react-i18next';
|
|
15
|
+
import { TagType } from './types';
|
|
16
|
+
import ValueButton from './ValueButton';
|
|
17
|
+
import DropdownIndicator from './DropdownIndicator';
|
|
18
|
+
import SelectContainer from './SelectContainer';
|
|
19
|
+
import MenuList from './MenuList';
|
|
20
|
+
import Control from './Control';
|
|
21
|
+
import Option from './Option';
|
|
22
|
+
import Menu from './Menu';
|
|
23
|
+
import { createAriaMessages } from './ariaMessages';
|
|
24
|
+
import Input from './Input';
|
|
14
25
|
|
|
15
|
-
const
|
|
26
|
+
const styles: StylesConfig<TagType, true> = {
|
|
27
|
+
menu: () => ({}),
|
|
28
|
+
dropdownIndicator: () => ({}),
|
|
29
|
+
placeholder: (provided) => ({
|
|
30
|
+
...provided,
|
|
31
|
+
padding: `0 ${spacing.small}`,
|
|
32
|
+
color: colors.brand.primary,
|
|
33
|
+
margin: 0,
|
|
34
|
+
}),
|
|
35
|
+
valueContainer: (provided) => ({ ...provided, padding: 0 }),
|
|
36
|
+
indicatorSeparator: () => ({
|
|
37
|
+
display: 'none',
|
|
38
|
+
}),
|
|
39
|
+
indicatorsContainer: (provided) => ({
|
|
40
|
+
...provided,
|
|
41
|
+
alignSelf: 'flex-end',
|
|
42
|
+
}),
|
|
43
|
+
};
|
|
16
44
|
|
|
17
|
-
const
|
|
18
|
-
|
|
45
|
+
const StyledTagSelector = styled.div`
|
|
46
|
+
display: flex;
|
|
47
|
+
flex-direction: column;
|
|
48
|
+
flex: 1;
|
|
49
|
+
overflow: hidden;
|
|
19
50
|
`;
|
|
20
51
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
id: string;
|
|
52
|
+
interface StyledLabelProps {
|
|
53
|
+
labelHidden?: boolean;
|
|
24
54
|
}
|
|
25
55
|
|
|
56
|
+
const StyledLabel = styled.label<StyledLabelProps>`
|
|
57
|
+
font-weight: ${fonts.weight.semibold};
|
|
58
|
+
${(p) => p.labelHidden && utils.labelHidden}
|
|
59
|
+
`;
|
|
60
|
+
|
|
26
61
|
interface Props {
|
|
27
62
|
label: string;
|
|
28
|
-
tags:
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
onCreateTag: (
|
|
32
|
-
|
|
33
|
-
|
|
63
|
+
tags: string[];
|
|
64
|
+
selected: string[];
|
|
65
|
+
onChange: (tags: string[]) => void;
|
|
66
|
+
onCreateTag: (name: string) => void;
|
|
67
|
+
className?: string;
|
|
68
|
+
labelHidden?: boolean;
|
|
34
69
|
}
|
|
35
70
|
|
|
36
|
-
const
|
|
37
|
-
const
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
};
|
|
71
|
+
const TagSelector = ({ selected: _selected, tags: _tags, onChange, onCreateTag, className, label }: Props) => {
|
|
72
|
+
const { t } = useTranslation();
|
|
73
|
+
const [input, setInput] = useState('');
|
|
74
|
+
const tags = useMemo(() => _tags.map((tag) => ({ value: tag, label: tag })), [_tags]);
|
|
75
|
+
const selected = useMemo(() => _selected.map((tag) => ({ value: tag, label: tag })), [_selected]);
|
|
42
76
|
|
|
43
|
-
const
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
return tags
|
|
49
|
-
.filter(({ name }) => name.toLowerCase().startsWith(inputLowercase))
|
|
50
|
-
.sort((a, b) => a.name.localeCompare(b.name, 'nb'));
|
|
51
|
-
};
|
|
52
|
-
|
|
53
|
-
const TagSelector = ({ label, tags, tagsSelected, onCreateTag, onToggleTag, inline, prefix }: Props) => {
|
|
54
|
-
const [inputValue, setInputValue] = useState('');
|
|
55
|
-
const [expanded, setExpanded] = useState(false);
|
|
56
|
-
const [dropdownMaxHeight, setDropdownMaxHeight] = useState(DEFAULT_DROPDOWN_MAXHEIGHT);
|
|
57
|
-
const containerRef = useRef<HTMLDivElement>(null);
|
|
58
|
-
const inputIdRef = useRef<string>(uuid());
|
|
59
|
-
|
|
60
|
-
useEffect(() => {
|
|
61
|
-
setExpanded(false);
|
|
62
|
-
}, [tagsSelected]);
|
|
63
|
-
|
|
64
|
-
useEffect(() => {
|
|
65
|
-
const setMaxDropdownMaxHeight = () => {
|
|
66
|
-
if (!inline && containerRef.current && typeof window !== 'undefined') {
|
|
67
|
-
// Calculate distance from bottom of container to bottom of viewport
|
|
68
|
-
const containerBottom = containerRef.current.getBoundingClientRect().bottom;
|
|
69
|
-
const viewportBottom = document.documentElement.scrollHeight;
|
|
70
|
-
const maxDropdownHeight = viewportBottom - containerBottom;
|
|
71
|
-
setDropdownMaxHeight(`${maxDropdownHeight - spacingUnit}px`);
|
|
72
|
-
}
|
|
73
|
-
};
|
|
74
|
-
if (!inline && typeof window !== 'undefined') {
|
|
75
|
-
if (expanded) {
|
|
76
|
-
setMaxDropdownMaxHeight();
|
|
77
|
-
window.addEventListener('resize', setMaxDropdownMaxHeight);
|
|
78
|
-
} else {
|
|
79
|
-
window.removeEventListener('resize', setMaxDropdownMaxHeight);
|
|
77
|
+
const handleSpaceClick = (e: KeyboardEvent<HTMLDivElement>) => {
|
|
78
|
+
if (e.key === ' ') {
|
|
79
|
+
e.preventDefault();
|
|
80
|
+
if (!_selected.find((tag) => tag === input) && input !== '') {
|
|
81
|
+
onChange(_selected.concat(input));
|
|
80
82
|
}
|
|
83
|
+
setInput('');
|
|
81
84
|
}
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
const handleChange = (tags: MultiValue<TagType>) => {
|
|
88
|
+
onChange(tags.map((tag) => tag.value));
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
const createLabel = (tag: string) => t('tagSelector.createLabel', { tag });
|
|
86
92
|
|
|
87
93
|
return (
|
|
88
|
-
<
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
94
|
+
<StyledTagSelector className={className}>
|
|
95
|
+
{label && (
|
|
96
|
+
<StyledLabel labelHidden htmlFor="tagselector-creatable" id="tagselector-label">
|
|
97
|
+
{label}
|
|
98
|
+
</StyledLabel>
|
|
99
|
+
)}
|
|
100
|
+
<CreatableSelect
|
|
101
|
+
id="tagselector-creatable"
|
|
102
|
+
aria-labelledby={label ? 'tagselector-label' : undefined}
|
|
103
|
+
ariaLiveMessages={createAriaMessages(t)}
|
|
104
|
+
components={{
|
|
105
|
+
DropdownIndicator,
|
|
106
|
+
MultiValue: ValueButton,
|
|
107
|
+
SelectContainer,
|
|
108
|
+
MenuList,
|
|
109
|
+
Control,
|
|
110
|
+
Option,
|
|
111
|
+
Menu,
|
|
112
|
+
Input,
|
|
95
113
|
}}
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
114
|
+
formatCreateLabel={createLabel}
|
|
115
|
+
inputValue={input}
|
|
116
|
+
isClearable={false}
|
|
117
|
+
isMulti
|
|
118
|
+
noOptionsMessage={() => t('tagSelector.noOptions')}
|
|
119
|
+
onChange={handleChange}
|
|
120
|
+
onCreateOption={onCreateTag}
|
|
121
|
+
onInputChange={setInput}
|
|
122
|
+
onKeyDown={handleSpaceClick}
|
|
123
|
+
options={tags}
|
|
124
|
+
placeholder={t('tagSelector.placeholder')}
|
|
125
|
+
screenReaderStatus={({ count }) => t('tagSelector.aria.screenReaderStatus', { count })}
|
|
126
|
+
styles={styles}
|
|
127
|
+
tabSelectsValue={false}
|
|
128
|
+
value={selected}
|
|
108
129
|
/>
|
|
109
|
-
</
|
|
130
|
+
</StyledTagSelector>
|
|
110
131
|
);
|
|
111
132
|
};
|
|
112
133
|
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2022-present, NDLA.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the GPLv3 license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import React from 'react';
|
|
10
|
+
import { MultiValueProps } from 'react-select';
|
|
11
|
+
import { buttonStyleV2 as buttonStyle } from '@ndla/button';
|
|
12
|
+
import styled from '@emotion/styled';
|
|
13
|
+
import { colors, spacing } from '@ndla/core';
|
|
14
|
+
import { Cross } from '@ndla/icons/action';
|
|
15
|
+
import { TagType } from './types';
|
|
16
|
+
|
|
17
|
+
interface StyledProps {
|
|
18
|
+
selected: boolean;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export const StyledValueButton = styled.div<StyledProps>`
|
|
22
|
+
&& {
|
|
23
|
+
background: ${({ selected }) => selected && colors.brand.primary};
|
|
24
|
+
color: ${({ selected }) => selected && colors.white};
|
|
25
|
+
padding: ${spacing.xxsmall} ${spacing.small};
|
|
26
|
+
margin: ${spacing.xxsmall};
|
|
27
|
+
border: none;
|
|
28
|
+
}
|
|
29
|
+
`;
|
|
30
|
+
|
|
31
|
+
const ValueButton = ({ innerProps, children, removeProps, isFocused }: MultiValueProps<TagType, true>) => {
|
|
32
|
+
return (
|
|
33
|
+
<StyledValueButton
|
|
34
|
+
selected={isFocused}
|
|
35
|
+
role="button"
|
|
36
|
+
css={buttonStyle({ colorTheme: 'lighter', shape: 'pill', size: 'small' })}
|
|
37
|
+
{...innerProps}
|
|
38
|
+
{...removeProps}>
|
|
39
|
+
<span aria-hidden>#</span>
|
|
40
|
+
{children}
|
|
41
|
+
<Cross />
|
|
42
|
+
</StyledValueButton>
|
|
43
|
+
);
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
export default ValueButton;
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2022-present, NDLA.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the GPLv3 license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import { TFunction } from 'react-i18next';
|
|
10
|
+
import {
|
|
11
|
+
AriaGuidanceProps,
|
|
12
|
+
AriaOnChangeProps,
|
|
13
|
+
AriaOnFilterProps,
|
|
14
|
+
AriaOnFocusProps,
|
|
15
|
+
GroupBase,
|
|
16
|
+
OptionsOrGroups,
|
|
17
|
+
} from 'react-select';
|
|
18
|
+
import { TagType } from './types';
|
|
19
|
+
|
|
20
|
+
export const createAriaMessages = (t: TFunction) => ({
|
|
21
|
+
guidance: (props: AriaGuidanceProps) => {
|
|
22
|
+
const { isSearchable, isMulti, isDisabled, tabSelectsValue, context } = props;
|
|
23
|
+
switch (context) {
|
|
24
|
+
case 'menu':
|
|
25
|
+
return `${t('tagSelector.aria.guidance.menu.updown')}${
|
|
26
|
+
isDisabled ? '' : `, ${t('tagSelector.aria.guidance.menu.enter')}`
|
|
27
|
+
}, ${t('tagSelector.aria.guidance.menu.escape')}${
|
|
28
|
+
tabSelectsValue ? `, ${t('tagSelector.aria.guidance.menu.tab')}` : ''
|
|
29
|
+
}.`;
|
|
30
|
+
case 'input':
|
|
31
|
+
return `${props['aria-label'] || t('tagSelector.aria.guidance.input.select')} ${t(
|
|
32
|
+
'tagSelector.aria.guidance.input.focused',
|
|
33
|
+
)} ${isSearchable ? `, ${t('tagSelector.aria.guidance.input.refine')}` : ''}, ${t(
|
|
34
|
+
'tagSelector.aria.guidance.input.down',
|
|
35
|
+
)}, ${isMulti ? ` ${t('tagSelector.aria.guidance.input.left')}` : ''}, ${t(
|
|
36
|
+
'tagSelector.aria.guidance.input.space',
|
|
37
|
+
)}`;
|
|
38
|
+
case 'value':
|
|
39
|
+
return t('tagSelector.aria.guidance.value');
|
|
40
|
+
default:
|
|
41
|
+
return '';
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
|
|
45
|
+
onChange: (props: AriaOnChangeProps<TagType, true>) => {
|
|
46
|
+
const { action, label = '', labels, isDisabled } = props;
|
|
47
|
+
switch (action) {
|
|
48
|
+
case 'deselect-option':
|
|
49
|
+
case 'pop-value':
|
|
50
|
+
case 'remove-value':
|
|
51
|
+
return t('tagSelector.aria.onChange.deselect', { label });
|
|
52
|
+
case 'clear':
|
|
53
|
+
return t('tagSelector.aria.onChange.clear');
|
|
54
|
+
case 'initial-input-focus':
|
|
55
|
+
return t('tagSelector.aria.onChange.initialFocus', { labels: labels.join(',') });
|
|
56
|
+
case 'select-option':
|
|
57
|
+
return isDisabled
|
|
58
|
+
? t('tagSelector.aria.onChange.selectedDisabled', { label })
|
|
59
|
+
: t('tagSelector.aria.onChange.selected', { label });
|
|
60
|
+
default:
|
|
61
|
+
return '';
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
|
|
65
|
+
onFocus: (props: AriaOnFocusProps<TagType, GroupBase<TagType>>) => {
|
|
66
|
+
const { context, focused, options, label = '', selectValue, isDisabled, isSelected } = props;
|
|
67
|
+
|
|
68
|
+
const getArrayIndex = (arr: OptionsOrGroups<TagType, GroupBase<TagType>>, item: TagType) =>
|
|
69
|
+
arr && arr.length ? `${arr.indexOf(item) + 1} ${t('tagSelector.aria.onFocus.of')} ${arr.length}` : '';
|
|
70
|
+
|
|
71
|
+
if (context === 'value' && selectValue) {
|
|
72
|
+
return t('tagSelector.aria.onFocus.value', { label, position: getArrayIndex(selectValue, focused) });
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
if (context === 'menu') {
|
|
76
|
+
const disabled = isDisabled ? ` ${t('tagSelector.aria.disabled')}` : '';
|
|
77
|
+
const status = `${isSelected ? t('tagSelector.aria.selected') : t('tagSelector.aria.focused')}${disabled}`;
|
|
78
|
+
return t('tagSelector.aria.onFocus.menu', { label, status, position: getArrayIndex(options, focused) });
|
|
79
|
+
}
|
|
80
|
+
return '';
|
|
81
|
+
},
|
|
82
|
+
|
|
83
|
+
onFilter: (props: AriaOnFilterProps) => {
|
|
84
|
+
const { inputValue, resultsMessage } = props;
|
|
85
|
+
return `${resultsMessage}${inputValue ? ` ${t('tagSelector.aria.onFilter')} ` + inputValue : ''}.`;
|
|
86
|
+
},
|
|
87
|
+
});
|
package/src/TagSelector/index.ts
CHANGED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2022-present, NDLA.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the GPLv3 license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
export interface TagType {
|
|
10
|
+
readonly value: string;
|
|
11
|
+
readonly label: string;
|
|
12
|
+
}
|
package/src/Topic/Topic.tsx
CHANGED
|
@@ -15,7 +15,7 @@ import { ChevronDown, ChevronUp, PlayCircleFilled } from '@ndla/icons/common';
|
|
|
15
15
|
import Modal, { ModalCloseButton, ModalHeader, ModalBody } from '@ndla/modal';
|
|
16
16
|
import Button from '@ndla/button';
|
|
17
17
|
import { CursorClick, ExpandTwoArrows } from '@ndla/icons/action';
|
|
18
|
-
import { css } from '@emotion/
|
|
18
|
+
import { css } from '@emotion/react';
|
|
19
19
|
import { useTranslation } from 'react-i18next';
|
|
20
20
|
import Loader from './Loader';
|
|
21
21
|
import { ItemProps } from '../Navigation/NavigationBox';
|
|
@@ -11,7 +11,7 @@ import PropTypes from 'prop-types';
|
|
|
11
11
|
import { Back, ChevronRight } from '@ndla/icons/common';
|
|
12
12
|
import { Switch } from '@ndla/switch';
|
|
13
13
|
import styled from '@emotion/styled';
|
|
14
|
-
import { css } from '@emotion/
|
|
14
|
+
import { css } from '@emotion/react';
|
|
15
15
|
import { mq, breakpoints, fonts, spacing } from '@ndla/core';
|
|
16
16
|
import SafeLink from '@ndla/safelink';
|
|
17
17
|
import { withTranslation } from 'react-i18next';
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
|
|
9
9
|
import React from 'react';
|
|
10
10
|
import PropTypes from 'prop-types';
|
|
11
|
-
import { css } from '@emotion/
|
|
11
|
+
import { css } from '@emotion/react';
|
|
12
12
|
import { spacing, fonts, colors, mq, breakpoints } from '@ndla/core';
|
|
13
13
|
import { Menu } from '@ndla/icons/common';
|
|
14
14
|
import { ButtonV2 as Button } from '@ndla/button';
|
|
@@ -31,6 +31,7 @@ const StyledSelectedFolder = styled(Button)`
|
|
|
31
31
|
flex: 1;
|
|
32
32
|
justify-content: flex-start;
|
|
33
33
|
color: ${colors.black};
|
|
34
|
+
border: none;
|
|
34
35
|
:hover,
|
|
35
36
|
:focus {
|
|
36
37
|
background: none;
|
|
@@ -82,6 +83,7 @@ const ComboboxButton = forwardRef<HTMLButtonElement, Props>(
|
|
|
82
83
|
|
|
83
84
|
const onKeyDown = (e: KeyboardEvent<HTMLButtonElement>) => {
|
|
84
85
|
if (e.key === 'Enter') {
|
|
86
|
+
onToggleTree(!showTree);
|
|
85
87
|
if (showTree && focusedFolder) {
|
|
86
88
|
setSelectedFolder(focusedFolder);
|
|
87
89
|
}
|
|
@@ -89,6 +91,7 @@ const ComboboxButton = forwardRef<HTMLButtonElement, Props>(
|
|
|
89
91
|
}
|
|
90
92
|
if (e.key === 'Escape') {
|
|
91
93
|
onToggleTree(false);
|
|
94
|
+
e.preventDefault();
|
|
92
95
|
return;
|
|
93
96
|
}
|
|
94
97
|
if (['ArrowUp', 'ArrowDown'].includes(e.key) && !showTree) {
|
|
@@ -101,7 +104,16 @@ const ComboboxButton = forwardRef<HTMLButtonElement, Props>(
|
|
|
101
104
|
};
|
|
102
105
|
|
|
103
106
|
return (
|
|
104
|
-
<StyledRow
|
|
107
|
+
<StyledRow
|
|
108
|
+
isOpen={showTree}
|
|
109
|
+
onMouseDown={(e) => {
|
|
110
|
+
if (!e.defaultPrevented) {
|
|
111
|
+
e.preventDefault();
|
|
112
|
+
e.stopPropagation();
|
|
113
|
+
onToggleTree(!showTree);
|
|
114
|
+
innerRef.current?.focus();
|
|
115
|
+
}
|
|
116
|
+
}}>
|
|
105
117
|
<StyledSelectedFolder
|
|
106
118
|
ref={innerRef}
|
|
107
119
|
tabIndex={0}
|
|
@@ -116,24 +128,10 @@ const ComboboxButton = forwardRef<HTMLButtonElement, Props>(
|
|
|
116
128
|
colorTheme="light"
|
|
117
129
|
fontWeight="normal"
|
|
118
130
|
shape="sharp"
|
|
119
|
-
onKeyDown={onKeyDown}
|
|
120
|
-
onClick={() => {
|
|
121
|
-
innerRef.current?.focus();
|
|
122
|
-
onToggleTree(!showTree);
|
|
123
|
-
}}>
|
|
131
|
+
onKeyDown={onKeyDown}>
|
|
124
132
|
{selectedFolder?.name}
|
|
125
133
|
</StyledSelectedFolder>
|
|
126
|
-
<IconButton
|
|
127
|
-
aria-hidden
|
|
128
|
-
aria-label=""
|
|
129
|
-
tabIndex={-1}
|
|
130
|
-
variant="ghost"
|
|
131
|
-
colorTheme="greyLighter"
|
|
132
|
-
size="small"
|
|
133
|
-
onClick={() => {
|
|
134
|
-
innerRef.current?.focus();
|
|
135
|
-
onToggleTree(!showTree);
|
|
136
|
-
}}>
|
|
134
|
+
<IconButton aria-hidden aria-label="" tabIndex={-1} variant="ghost" colorTheme="greyLighter" size="small">
|
|
137
135
|
{showTree ? <ChevronUp /> : <ChevronDown />}
|
|
138
136
|
</IconButton>
|
|
139
137
|
</StyledRow>
|
|
@@ -8,8 +8,8 @@
|
|
|
8
8
|
|
|
9
9
|
import React, { useEffect, useState, useMemo, useRef } from 'react';
|
|
10
10
|
import styled from '@emotion/styled';
|
|
11
|
-
import { colors, fonts, misc,
|
|
12
|
-
import { css } from '@emotion/
|
|
11
|
+
import { colors, fonts, misc, utils } from '@ndla/core';
|
|
12
|
+
import { css } from '@emotion/react';
|
|
13
13
|
import { uniq } from 'lodash';
|
|
14
14
|
import { IFolder } from '@ndla/types-learningpath-api';
|
|
15
15
|
import FolderItems from './FolderItems';
|
|
@@ -62,16 +62,7 @@ const ScrollableDiv = styled.div<ScrollableDivProps>`
|
|
|
62
62
|
type === 'picker' &&
|
|
63
63
|
css`
|
|
64
64
|
overflow: overlay;
|
|
65
|
-
|
|
66
|
-
width: ${spacing.small};
|
|
67
|
-
}
|
|
68
|
-
::-webkit-scrollbar-thumb {
|
|
69
|
-
border: 4px solid transparent;
|
|
70
|
-
border-radius: 14px;
|
|
71
|
-
background-clip: padding-box;
|
|
72
|
-
padding: 0 4px;
|
|
73
|
-
background-color: ${colors.brand.neutral7};
|
|
74
|
-
}
|
|
65
|
+
${utils.scrollbar}
|
|
75
66
|
`}
|
|
76
67
|
`;
|
|
77
68
|
|
|
@@ -30,11 +30,50 @@ const messages = {
|
|
|
30
30
|
},
|
|
31
31
|
},
|
|
32
32
|
tagSelector: {
|
|
33
|
+
aria: {
|
|
34
|
+
screenReaderStatus: '{{count}} results available',
|
|
35
|
+
disabled: 'disabled',
|
|
36
|
+
selected: 'selected',
|
|
37
|
+
focused: 'focused',
|
|
38
|
+
guidance: {
|
|
39
|
+
menu: {
|
|
40
|
+
updown: 'Use Up and Down to choose tags',
|
|
41
|
+
enter: 'press Enter to select the currently focused tag',
|
|
42
|
+
escape: 'press Escape to exit the menu',
|
|
43
|
+
tab: 'press Tab to select the tag and exit the menu',
|
|
44
|
+
},
|
|
45
|
+
input: {
|
|
46
|
+
select: 'Tag menu',
|
|
47
|
+
focused: 'is focused',
|
|
48
|
+
refine: 'type to refine list',
|
|
49
|
+
down: 'press Down to open the menu',
|
|
50
|
+
left: 'press Left to focus selected tags',
|
|
51
|
+
space: 'press Space to create new tag',
|
|
52
|
+
},
|
|
53
|
+
value:
|
|
54
|
+
'Use left and right to toggle between focused tags, press Backspace to remove the currently focused value. The last tag will be removed if none are selected.',
|
|
55
|
+
},
|
|
56
|
+
onChange: {
|
|
57
|
+
deselect: 'tag {{label}}, deselected.',
|
|
58
|
+
clear: 'All selected options have been cleared.',
|
|
59
|
+
initialFocus: `Tags {{labels}}, selected.`,
|
|
60
|
+
selectedDisabled: 'Tag {{label}} is disabled. Select another option.',
|
|
61
|
+
selected: 'Tag {{label}}, selected.',
|
|
62
|
+
},
|
|
63
|
+
onFocus: {
|
|
64
|
+
value: 'tag {{label}} focused, {{position}}.',
|
|
65
|
+
menu: 'tag {{label}} {{status}}, {{position}}.',
|
|
66
|
+
of: 'of',
|
|
67
|
+
},
|
|
68
|
+
onFilter: ' for search term ',
|
|
69
|
+
},
|
|
70
|
+
noOptions: 'No options',
|
|
33
71
|
label: 'Add tag',
|
|
72
|
+
createLabel: 'Add tag {{tag}}',
|
|
34
73
|
placeholder: 'Enter tag name',
|
|
35
74
|
removeTag: 'Remove tag {{name}}',
|
|
36
|
-
|
|
37
|
-
|
|
75
|
+
hideTags: 'Hide tags',
|
|
76
|
+
showTags: 'Show tags',
|
|
38
77
|
},
|
|
39
78
|
htmlTitles: {
|
|
40
79
|
titleTemplate,
|
|
@@ -926,7 +965,7 @@ const messages = {
|
|
|
926
965
|
error: 'An error occurred while loading an external resource.',
|
|
927
966
|
},
|
|
928
967
|
concept: {
|
|
929
|
-
showDescription: '
|
|
968
|
+
showDescription: '{{title}}, concept description. Press to open the description',
|
|
930
969
|
reuse: 'Use concept',
|
|
931
970
|
error: {
|
|
932
971
|
title: 'An error occurred',
|
|
@@ -30,11 +30,50 @@ const messages = {
|
|
|
30
30
|
},
|
|
31
31
|
},
|
|
32
32
|
tagSelector: {
|
|
33
|
+
aria: {
|
|
34
|
+
screenReaderStatus: '{{count}} resultater tilgjengelig',
|
|
35
|
+
disabled: 'utilgjengelig',
|
|
36
|
+
selected: 'valgt',
|
|
37
|
+
focused: 'fokusert',
|
|
38
|
+
guidance: {
|
|
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',
|
|
44
|
+
},
|
|
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',
|
|
52
|
+
},
|
|
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.',
|
|
55
|
+
},
|
|
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.',
|
|
62
|
+
},
|
|
63
|
+
onFocus: {
|
|
64
|
+
value: 'emneknagg {{label}} fokusert, {{position}}.',
|
|
65
|
+
menu: 'emneknagg {{label}} {{status}}, {{position}}.',
|
|
66
|
+
of: 'av',
|
|
67
|
+
},
|
|
68
|
+
onFilter: ' for søkeord ',
|
|
69
|
+
},
|
|
70
|
+
noOptions: 'Ingen valgmuligheter',
|
|
33
71
|
label: 'Legg til emneknagg',
|
|
72
|
+
createLabel: 'Legg til emneknagg {{tag}}',
|
|
34
73
|
placeholder: 'Skriv inn emneknagg',
|
|
35
74
|
removeTag: 'Ta vekk {{name}}',
|
|
36
|
-
|
|
37
|
-
|
|
75
|
+
hideTags: 'Skjul emneknagger',
|
|
76
|
+
showTags: 'Vis emneknagger',
|
|
38
77
|
},
|
|
39
78
|
htmlTitles: {
|
|
40
79
|
titleTemplate,
|
|
@@ -924,7 +963,7 @@ const messages = {
|
|
|
924
963
|
error: 'En feil oppstod ved lasting av en ekstern ressurs.',
|
|
925
964
|
},
|
|
926
965
|
concept: {
|
|
927
|
-
showDescription: '
|
|
966
|
+
showDescription: '{{title}}, begrepsforklaring. Trykk for å åpne forklaring.',
|
|
928
967
|
reuse: 'Bruk forklaring',
|
|
929
968
|
error: {
|
|
930
969
|
title: 'En feil oppstod',
|