@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.
Files changed (826) hide show
  1. package/es/Animation/DisplayOnPageYOffset.js +1 -1
  2. package/es/Animation/Fade.js +1 -1
  3. package/es/Article/Article.js +18 -14
  4. package/es/Article/ArticleAccessMessage.js +14 -10
  5. package/es/Article/ArticleByline.js +22 -14
  6. package/es/Article/ArticleContent.js +1 -1
  7. package/es/Article/ArticleFavoritesButton.js +1 -1
  8. package/es/Article/ArticleFootNotes.js +1 -1
  9. package/es/Article/ArticleHeaderWrapper.js +27 -19
  10. package/es/Article/ArticleNotions.js +22 -12
  11. package/es/Article/ArticleSideBar.js +26 -18
  12. package/es/Aside/Aside.js +1 -1
  13. package/es/AudioPlayer/AudioPlayer.js +67 -39
  14. package/es/AudioPlayer/Controls.js +137 -85
  15. package/es/AudioPlayer/SpeechControl.js +5 -3
  16. package/es/AudioPlayer/initAudioPlayers.js +1 -1
  17. package/es/AuthorInfo/AuthorInfo.js +14 -8
  18. package/es/BannerCard/BannerCard.js +29 -15
  19. package/es/BlogPosts/BlogPost.js +22 -14
  20. package/es/BlogPosts/BlogPostWrapper.js +7 -5
  21. package/es/Breadcrumb/ActionBreadcrumb.js +26 -10
  22. package/es/Breadcrumb/Breadcrumb.js +14 -10
  23. package/es/Breadcrumb/BreadcrumbItem.js +38 -26
  24. package/es/Breadcrumb/HeaderBreadcrumb.js +21 -7
  25. package/es/Breadcrumb/HomeBreadcrumb.js +37 -18
  26. package/es/Breadcrumblist/Breadcrumblist.js +37 -25
  27. package/es/CompetenceGoalTab/CompetenceGoalItem.js +42 -26
  28. package/es/CompetenceGoalTab/CompetenceGoalTab.js +26 -16
  29. package/es/CompetenceGoalTab/CompetenceItem.js +74 -54
  30. package/es/CompetenceGoalTab/SearchButton.js +10 -6
  31. package/es/CompetenceGoals/CompetenceGoalsDialog.js +17 -11
  32. package/es/ComponentCursor/ComponentCursor.js +54 -36
  33. package/es/ContentCard/ContentCard.js +35 -19
  34. package/es/ContentLoader/index.js +1 -1
  35. package/es/ContentPlaceholder/ContentPlaceholder.js +21 -15
  36. package/es/ContentTypeBadge/ContentTypeBadge.js +1 -1
  37. package/es/CopyParagraphButton/CopyParagraphButton.js +47 -35
  38. package/es/CopyParagraphButton/initCopyParagraphButtons.js +1 -1
  39. package/es/CreatedBy/CreatedBy.js +26 -18
  40. package/es/Dialog/Dialog.js +1 -1
  41. package/es/ErrorMessage/ErrorMessage.js +23 -15
  42. package/es/ErrorMessage/ErrorResourceAccessDenied.js +5 -3
  43. package/es/FactBox/FactBox.js +1 -1
  44. package/es/Figure/Figure.js +1 -1
  45. package/es/Figure/FigureBylineExpandButton.js +1 -1
  46. package/es/Figure/FigureExpandButton.js +1 -1
  47. package/es/Figure/FigureLicense.js +1 -1
  48. package/es/Figure/FigureLicenseDialog.js +1 -1
  49. package/es/Figure/FigureOpenDialogButton.js +1 -1
  50. package/es/FileList/File.js +17 -11
  51. package/es/FileList/FileList.js +17 -11
  52. package/es/Filter/FilterButtons.js +45 -27
  53. package/es/Filter/FilterCarousel.js +31 -25
  54. package/es/Filter/FilterList.js +1 -1
  55. package/es/Filter/FilterListPhone.js +1 -1
  56. package/es/Filter/ToggleItem.js +1 -1
  57. package/es/Footer/EditorName.js +1 -1
  58. package/es/Footer/Footer.js +37 -23
  59. package/es/Footer/FooterAuth.js +36 -15
  60. package/es/Footer/FooterLinks.js +31 -19
  61. package/es/Footer/FooterPrivacy.js +13 -9
  62. package/es/Footer/FooterText.js +8 -6
  63. package/es/Footer/privacy_en.js +1 -1
  64. package/es/Footer/privacy_nb.js +1 -1
  65. package/es/Footer/privacy_nn.js +1 -1
  66. package/es/Frontpage/FrontpageAllSubjects.js +46 -32
  67. package/es/Frontpage/FrontpageFilm.js +22 -12
  68. package/es/Frontpage/FrontpageHeader.js +18 -10
  69. package/es/Frontpage/FrontpageInfo.js +6 -4
  70. package/es/Frontpage/FrontpageMultidisciplinarySubject.js +38 -24
  71. package/es/Frontpage/FrontpageProgramMenu.js +55 -37
  72. package/es/Frontpage/FrontpageSearch.js +11 -7
  73. package/es/Frontpage/FrontpageToolbox.js +18 -10
  74. package/es/Frontpage/illustrations/Fellesfag.js +1 -1
  75. package/es/Frontpage/illustrations/FrontpageHeaderIllustration.js +1 -1
  76. package/es/Frontpage/illustrations/FrontpageIllustrations.js +13 -9
  77. package/es/Frontpage/illustrations/FrontpageSubjectIllustration.js +7 -7
  78. package/es/Frontpage/illustrations/MenuFellesfag.js +1 -1
  79. package/es/Frontpage/illustrations/MenuStudiespesialiserende.js +1 -1
  80. package/es/Frontpage/illustrations/MenuYrkesfag.js +1 -1
  81. package/es/Frontpage/illustrations/Studiespesialiserende.js +1 -1
  82. package/es/Frontpage/illustrations/Yrkesfag.js +1 -1
  83. package/es/Hero/Hero.js +1 -1
  84. package/es/Image/Image.js +9 -7
  85. package/es/Image/ImageLink.js +9 -7
  86. package/es/Image/LazyLoadImage.js +2 -2
  87. package/es/InfoBlock/InfoBlock.js +22 -12
  88. package/es/InfoBox/InfoBox.js +6 -4
  89. package/es/InfoWidget/InfoWidget.js +46 -28
  90. package/es/LanguageSelector/LanguageSelector.js +42 -21
  91. package/es/LanguageSelector/LanguageSelectorContent.js +18 -6
  92. package/es/Layout/Content.js +1 -1
  93. package/es/Layout/LayoutItem.js +1 -1
  94. package/es/Layout/OneColumn.js +1 -1
  95. package/es/Layout/PageContainer.js +1 -1
  96. package/es/LearningPaths/LearningPathContent.js +6 -4
  97. package/es/LearningPaths/LearningPathInformation.js +16 -10
  98. package/es/LearningPaths/LearningPathLastStepNavigation.js +26 -16
  99. package/es/LearningPaths/LearningPathMenu.js +19 -11
  100. package/es/LearningPaths/LearningPathMenuAside.js +35 -15
  101. package/es/LearningPaths/LearningPathMenuAsideCopyright.js +10 -6
  102. package/es/LearningPaths/LearningPathMenuContent.js +33 -21
  103. package/es/LearningPaths/LearningPathMenuIntro.js +39 -23
  104. package/es/LearningPaths/LearningPathMenuModalWrapper.js +8 -4
  105. package/es/LearningPaths/LearningPathMobileHeader.js +18 -6
  106. package/es/LearningPaths/LearningPathMobileStepInfo.js +5 -3
  107. package/es/LearningPaths/LearningPathSticky.js +21 -13
  108. package/es/LearningPaths/LearningPathWrapper.js +13 -7
  109. package/es/Logo/Logo.js +1 -1
  110. package/es/Logo/SvgLogo.js +1 -1
  111. package/es/Masthead/Masthead.js +32 -20
  112. package/es/Masthead/MastheadAuthModal.js +5 -3
  113. package/es/Masthead/MastheadSearchModal.js +20 -10
  114. package/es/Masthead/SkipToMainContent.js +5 -3
  115. package/es/MediaList/MediaList.js +1 -1
  116. package/es/Messages/MessageBanner.js +18 -12
  117. package/es/Messages/MessageBox.js +51 -29
  118. package/es/Messages/MessageBoxTag.js +9 -7
  119. package/es/MultidisciplinarySubject/Illustrations.js +28 -14
  120. package/es/MultidisciplinarySubject/List.js +19 -13
  121. package/es/MultidisciplinarySubject/ListItem.js +41 -27
  122. package/es/MultidisciplinarySubject/MultidisciplinarySubject.js +42 -28
  123. package/es/MultidisciplinarySubject/MultidisciplinarySubjectHeader.js +38 -26
  124. package/es/MyNdla/Resource/Folder.js +45 -19
  125. package/es/MyNdla/Resource/FolderInput.js +17 -6
  126. package/es/NDLAFilm/AboutNdlaFilm.js +7 -5
  127. package/es/NDLAFilm/AllMoviesAlphabetically.js +62 -42
  128. package/es/NDLAFilm/CategorySelect.js +17 -11
  129. package/es/NDLAFilm/FilmContentCard.js +15 -9
  130. package/es/NDLAFilm/FilmContentCardTags.js +10 -6
  131. package/es/NDLAFilm/FilmMovieList.js +5 -3
  132. package/es/NDLAFilm/FilmMovieSearch.js +10 -6
  133. package/es/NDLAFilm/FilmSlideshow.js +44 -32
  134. package/es/NDLAFilm/MovieGrid.js +11 -7
  135. package/es/NDLAFilm/NavigationArrow.js +25 -13
  136. package/es/NDLAFilm/SlideshowIndicator.js +12 -8
  137. package/es/NDLAFilm/VisualElement.js +9 -7
  138. package/es/NDLAFilm/filmStyles.js +7 -3
  139. package/es/Navigation/NavigationBox.js +120 -82
  140. package/es/Navigation/NavigationHeading.js +26 -20
  141. package/es/Navigation/NavigationTopicAbout.js +82 -64
  142. package/es/NoContentBox/NoContentBox.js +1 -1
  143. package/es/Notion/ConceptNotion.js +12 -6
  144. package/es/Notion/FigureNotion.js +11 -3
  145. package/es/Notion/Notion.js +26 -18
  146. package/es/Notion/NotionImage.js +10 -6
  147. package/es/Notion/NotionVisualElement.js +12 -10
  148. package/es/Portrait/Portrait.js +14 -4
  149. package/es/Programme/Programme.js +30 -20
  150. package/es/Programme/ProgrammeSubjects.js +6 -4
  151. package/es/RadioButtonGroup/RadioButtonGroup.js +20 -12
  152. package/es/RelatedArticleList/RelatedArticleList.js +1 -1
  153. package/es/Resource/BlockResource.js +32 -13
  154. package/es/Resource/ListResource.js +53 -32
  155. package/es/Resource/resourceComponents.js +61 -30
  156. package/es/ResourceBox/ResourceBox.js +27 -15
  157. package/es/ResourceGroup/ResourceGroup.js +13 -7
  158. package/es/ResourceGroup/ResourceItem.js +59 -29
  159. package/es/ResourceGroup/ResourceList.js +13 -7
  160. package/es/ResourcesWrapper/ResourcesTitle.js +1 -1
  161. package/es/ResourcesWrapper/ResourcesTopicTitle.js +31 -19
  162. package/es/ResourcesWrapper/ResourcesWrapper.js +1 -1
  163. package/es/Search/ActiveFilterContent.js +10 -6
  164. package/es/Search/ActiveFilters.js +36 -24
  165. package/es/Search/ContentTypeResult.js +2 -4
  166. package/es/Search/ContentTypeResultStyles.js +76 -32
  167. package/es/Search/LoadingWrapper.js +6 -4
  168. package/es/Search/SearchField.js +13 -7
  169. package/es/Search/SearchFieldForm.js +19 -9
  170. package/es/Search/SearchResult.js +46 -26
  171. package/es/Search/SearchResultSleeve.js +35 -19
  172. package/es/Search/ToggleSearchButton.js +10 -6
  173. package/es/SearchTypeResult/ActiveFilterContent.js +14 -10
  174. package/es/SearchTypeResult/ActiveFilters.js +36 -24
  175. package/es/SearchTypeResult/PopupFilter.js +41 -27
  176. package/es/SearchTypeResult/ResultNavigation.js +18 -10
  177. package/es/SearchTypeResult/SearchFieldHeader.js +22 -14
  178. package/es/SearchTypeResult/SearchFilterContent.js +14 -10
  179. package/es/SearchTypeResult/SearchHeader.js +34 -18
  180. package/es/SearchTypeResult/SearchItem.js +51 -37
  181. package/es/SearchTypeResult/SearchItemList.js +71 -44
  182. package/es/SearchTypeResult/SearchItems.js +16 -12
  183. package/es/SearchTypeResult/SearchNotionItem.js +63 -39
  184. package/es/SearchTypeResult/SearchNotionsResult.js +19 -11
  185. package/es/SearchTypeResult/SearchSubjectItem.js +14 -8
  186. package/es/SearchTypeResult/SearchSubjectResult.js +9 -7
  187. package/es/SearchTypeResult/SearchTypeHeader.js +41 -23
  188. package/es/SearchTypeResult/SearchTypeResult.js +11 -7
  189. package/es/SearchTypeResult/SearchViewType.js +22 -14
  190. package/es/SearchTypeResult/components/ItemContexts.js +33 -19
  191. package/es/SearchTypeResult/components/ItemResourceHeader.js +47 -25
  192. package/es/SearchTypeResult/components/ItemTopicHeader.js +33 -15
  193. package/es/SearchTypeResult/components/SubjectFilters.js +9 -7
  194. package/es/SectionHeading/SectionHeading.js +16 -8
  195. package/es/SnackBar/DefaultSnackbar.js +13 -7
  196. package/es/SnackBar/SnackbarProvider.js +17 -13
  197. package/es/Subject/Subject.js +64 -38
  198. package/es/Subject/SubjectAbout.js +46 -26
  199. package/es/Subject/SubjectArchive.js +54 -32
  200. package/es/Subject/SubjectBanner.js +7 -5
  201. package/es/Subject/SubjectCarousel.js +26 -14
  202. package/es/Subject/SubjectHeader.js +23 -13
  203. package/es/Subject/SubjectLinks.js +17 -11
  204. package/es/Subject/SubjectNewContent.js +39 -23
  205. package/es/Subject/SubjectShortcuts.js +22 -14
  206. package/es/Subject/SubjectSocial.js +10 -6
  207. package/es/Table/Table.js +1 -1
  208. package/es/TagSelector/Control.js +32 -0
  209. package/es/TagSelector/DropdownIndicator.js +68 -0
  210. package/es/TagSelector/Input.js +28 -0
  211. package/es/TagSelector/Menu.js +35 -0
  212. package/es/TagSelector/MenuList.js +31 -0
  213. package/es/TagSelector/Option.js +59 -0
  214. package/es/TagSelector/SelectContainer.js +28 -0
  215. package/es/TagSelector/TagSelector.js +167 -102
  216. package/es/TagSelector/ValueButton.js +48 -0
  217. package/es/TagSelector/ariaMessages.js +104 -0
  218. package/es/TagSelector/index.js +2 -1
  219. package/es/TagSelector/types.js +0 -0
  220. package/es/ToolboxPage/ToolboxInfo.js +10 -6
  221. package/es/Topic/Loader.js +1 -1
  222. package/es/Topic/Topic.js +117 -83
  223. package/es/TopicIntroductionList/TopicIntroduction.js +1 -1
  224. package/es/TopicIntroductionList/TopicIntroductionList.js +1 -1
  225. package/es/TopicIntroductionList/TopicIntroductionShortcuts.js +1 -1
  226. package/es/TopicIntroductionList/TopicShortcutItem.js +1 -1
  227. package/es/TopicMenu/SubtopicLinkList.js +33 -19
  228. package/es/TopicMenu/TopicMenu.js +5 -3
  229. package/es/TopicMenu/TopicMenuButton.js +8 -4
  230. package/es/Translation/Translation.js +1 -1
  231. package/es/Translation/TranslationBox.js +1 -1
  232. package/es/Translation/TranslationLine.js +1 -1
  233. package/es/TreeStructure/AddFolderButton.js +14 -10
  234. package/es/TreeStructure/ComboboxButton.js +29 -24
  235. package/es/TreeStructure/FolderItem.js +27 -15
  236. package/es/TreeStructure/FolderItems.js +11 -7
  237. package/es/TreeStructure/NavigationLink.js +21 -10
  238. package/es/TreeStructure/TreeStructure.js +46 -28
  239. package/es/User/AuthModal.js +33 -19
  240. package/es/User/UserInfo.js +20 -10
  241. package/es/internal-icons/Book.js +1 -1
  242. package/es/internal-icons/Download.js +1 -1
  243. package/es/internal-icons/Embed.js +1 -1
  244. package/es/internal-icons/InsertTemplate.js +1 -1
  245. package/es/internal-icons/OpenWindow.js +1 -1
  246. package/es/locale/LocaleProvider.js +1 -1
  247. package/es/locale/messages-en.js +41 -3
  248. package/es/locale/messages-nb.js +41 -3
  249. package/es/locale/messages-nn.js +41 -3
  250. package/es/locale/messages-se.js +41 -3
  251. package/es/locale/messages-sma.js +41 -3
  252. package/es/utils/createUniversalPortal.js +1 -1
  253. package/lib/Animation/DisplayOnPageYOffset.d.ts +1 -1
  254. package/lib/Animation/DisplayOnPageYOffset.js +2 -2
  255. package/lib/Animation/Fade.d.ts +1 -1
  256. package/lib/Animation/Fade.js +2 -2
  257. package/lib/Article/Article.d.ts +3 -3
  258. package/lib/Article/Article.js +39 -35
  259. package/lib/Article/ArticleAccessMessage.d.ts +1 -2
  260. package/lib/Article/ArticleAccessMessage.js +15 -11
  261. package/lib/Article/ArticleByline.d.ts +1 -1
  262. package/lib/Article/ArticleByline.js +33 -25
  263. package/lib/Article/ArticleContent.d.ts +1 -2
  264. package/lib/Article/ArticleContent.js +2 -2
  265. package/lib/Article/ArticleFavoritesButton.d.ts +1 -2
  266. package/lib/Article/ArticleFavoritesButton.js +5 -5
  267. package/lib/Article/ArticleFootNotes.d.ts +1 -2
  268. package/lib/Article/ArticleFootNotes.js +7 -7
  269. package/lib/Article/ArticleHeaderWrapper.d.ts +2 -2
  270. package/lib/Article/ArticleHeaderWrapper.js +36 -28
  271. package/lib/Article/ArticleNotions.d.ts +1 -2
  272. package/lib/Article/ArticleNotions.js +33 -23
  273. package/lib/Article/ArticleSideBar.d.ts +1 -1
  274. package/lib/Article/ArticleSideBar.js +34 -26
  275. package/lib/Aside/Aside.d.ts +1 -1
  276. package/lib/Aside/Aside.js +2 -2
  277. package/lib/AudioPlayer/AudioPlayer.d.ts +1 -1
  278. package/lib/AudioPlayer/AudioPlayer.js +83 -55
  279. package/lib/AudioPlayer/Controls.d.ts +1 -2
  280. package/lib/AudioPlayer/Controls.js +161 -109
  281. package/lib/AudioPlayer/SpeechControl.d.ts +1 -2
  282. package/lib/AudioPlayer/SpeechControl.js +8 -6
  283. package/lib/AudioPlayer/initAudioPlayers.js +3 -3
  284. package/lib/AuthorInfo/AuthorInfo.d.ts +1 -2
  285. package/lib/AuthorInfo/AuthorInfo.js +16 -10
  286. package/lib/BannerCard/BannerCard.d.ts +1 -2
  287. package/lib/BannerCard/BannerCard.js +31 -17
  288. package/lib/BlogPosts/BlogPost.d.ts +1 -2
  289. package/lib/BlogPosts/BlogPost.js +26 -18
  290. package/lib/BlogPosts/BlogPostWrapper.d.ts +1 -1
  291. package/lib/BlogPosts/BlogPostWrapper.js +8 -6
  292. package/lib/Breadcrumb/ActionBreadcrumb.d.ts +1 -2
  293. package/lib/Breadcrumb/ActionBreadcrumb.js +31 -16
  294. package/lib/Breadcrumb/Breadcrumb.d.ts +1 -1
  295. package/lib/Breadcrumb/Breadcrumb.js +17 -13
  296. package/lib/Breadcrumb/BreadcrumbItem.js +41 -29
  297. package/lib/Breadcrumb/HeaderBreadcrumb.d.ts +1 -2
  298. package/lib/Breadcrumb/HeaderBreadcrumb.js +24 -11
  299. package/lib/Breadcrumb/HomeBreadcrumb.d.ts +1 -2
  300. package/lib/Breadcrumb/HomeBreadcrumb.js +37 -25
  301. package/lib/Breadcrumblist/Breadcrumblist.d.ts +1 -1
  302. package/lib/Breadcrumblist/Breadcrumblist.js +51 -39
  303. package/lib/CompetenceGoalTab/CompetenceGoalItem.d.ts +1 -2
  304. package/lib/CompetenceGoalTab/CompetenceGoalItem.js +45 -29
  305. package/lib/CompetenceGoalTab/CompetenceGoalTab.d.ts +1 -2
  306. package/lib/CompetenceGoalTab/CompetenceGoalTab.js +32 -22
  307. package/lib/CompetenceGoalTab/CompetenceItem.d.ts +1 -2
  308. package/lib/CompetenceGoalTab/CompetenceItem.js +84 -64
  309. package/lib/CompetenceGoalTab/SearchButton.d.ts +1 -2
  310. package/lib/CompetenceGoalTab/SearchButton.js +13 -9
  311. package/lib/CompetenceGoals/CompetenceGoalsDialog.d.ts +1 -1
  312. package/lib/CompetenceGoals/CompetenceGoalsDialog.js +22 -16
  313. package/lib/ComponentCursor/ComponentCursor.d.ts +1 -2
  314. package/lib/ComponentCursor/ComponentCursor.js +59 -41
  315. package/lib/ContentCard/ContentCard.d.ts +1 -2
  316. package/lib/ContentCard/ContentCard.js +39 -23
  317. package/lib/ContentLoader/index.d.ts +1 -1
  318. package/lib/ContentLoader/index.js +11 -11
  319. package/lib/ContentPlaceholder/ContentPlaceholder.d.ts +1 -2
  320. package/lib/ContentPlaceholder/ContentPlaceholder.js +22 -16
  321. package/lib/ContentTypeBadge/ContentTypeBadge.d.ts +9 -10
  322. package/lib/ContentTypeBadge/ContentTypeBadge.js +19 -19
  323. package/lib/CopyParagraphButton/CopyParagraphButton.d.ts +1 -2
  324. package/lib/CopyParagraphButton/CopyParagraphButton.js +47 -35
  325. package/lib/CopyParagraphButton/initCopyParagraphButtons.js +2 -2
  326. package/lib/CreatedBy/CreatedBy.d.ts +1 -2
  327. package/lib/CreatedBy/CreatedBy.js +29 -21
  328. package/lib/Dialog/Dialog.d.ts +1 -1
  329. package/lib/Dialog/Dialog.js +4 -4
  330. package/lib/ErrorMessage/ErrorMessage.d.ts +1 -1
  331. package/lib/ErrorMessage/ErrorMessage.js +31 -25
  332. package/lib/ErrorMessage/ErrorResourceAccessDenied.d.ts +1 -2
  333. package/lib/ErrorMessage/ErrorResourceAccessDenied.js +10 -8
  334. package/lib/FactBox/FactBox.d.ts +1 -1
  335. package/lib/FactBox/FactBox.js +4 -4
  336. package/lib/Figure/Figure.d.ts +2 -2
  337. package/lib/Figure/Figure.js +10 -10
  338. package/lib/Figure/FigureBylineExpandButton.d.ts +1 -2
  339. package/lib/Figure/FigureBylineExpandButton.js +4 -4
  340. package/lib/Figure/FigureExpandButton.d.ts +1 -2
  341. package/lib/Figure/FigureExpandButton.js +4 -4
  342. package/lib/Figure/FigureLicense.d.ts +2 -2
  343. package/lib/Figure/FigureLicense.js +7 -7
  344. package/lib/Figure/FigureLicenseDialog.d.ts +1 -1
  345. package/lib/Figure/FigureLicenseDialog.js +5 -5
  346. package/lib/Figure/FigureOpenDialogButton.d.ts +1 -2
  347. package/lib/Figure/FigureOpenDialogButton.js +7 -7
  348. package/lib/FileList/File.d.ts +1 -2
  349. package/lib/FileList/File.js +23 -17
  350. package/lib/FileList/FileList.d.ts +1 -2
  351. package/lib/FileList/FileList.js +19 -13
  352. package/lib/Filter/FilterButtons.d.ts +1 -2
  353. package/lib/Filter/FilterButtons.js +64 -46
  354. package/lib/Filter/FilterCarousel.d.ts +1 -1
  355. package/lib/Filter/FilterCarousel.js +37 -31
  356. package/lib/Filter/FilterList.d.ts +1 -1
  357. package/lib/Filter/FilterList.js +5 -5
  358. package/lib/Filter/FilterListPhone.d.ts +1 -2
  359. package/lib/Filter/FilterListPhone.js +19 -19
  360. package/lib/Filter/ToggleItem.d.ts +1 -1
  361. package/lib/Filter/ToggleItem.js +4 -4
  362. package/lib/Footer/EditorName.d.ts +1 -2
  363. package/lib/Footer/EditorName.js +2 -2
  364. package/lib/Footer/Footer.d.ts +1 -1
  365. package/lib/Footer/Footer.js +43 -29
  366. package/lib/Footer/FooterAuth.d.ts +1 -2
  367. package/lib/Footer/FooterAuth.js +38 -24
  368. package/lib/Footer/FooterLinks.d.ts +1 -1
  369. package/lib/Footer/FooterLinks.js +38 -26
  370. package/lib/Footer/FooterPrivacy.d.ts +1 -2
  371. package/lib/Footer/FooterPrivacy.js +21 -17
  372. package/lib/Footer/FooterText.d.ts +1 -1
  373. package/lib/Footer/FooterText.js +9 -7
  374. package/lib/Footer/privacy_en.d.ts +1 -2
  375. package/lib/Footer/privacy_en.js +2 -2
  376. package/lib/Footer/privacy_nb.d.ts +1 -2
  377. package/lib/Footer/privacy_nb.js +2 -2
  378. package/lib/Footer/privacy_nn.d.ts +1 -2
  379. package/lib/Footer/privacy_nn.js +2 -2
  380. package/lib/Frontpage/FrontpageAllSubjects.d.ts +1 -2
  381. package/lib/Frontpage/FrontpageAllSubjects.js +55 -41
  382. package/lib/Frontpage/FrontpageFilm.d.ts +1 -1
  383. package/lib/Frontpage/FrontpageFilm.js +39 -29
  384. package/lib/Frontpage/FrontpageHeader.d.ts +1 -1
  385. package/lib/Frontpage/FrontpageHeader.js +22 -14
  386. package/lib/Frontpage/FrontpageInfo.d.ts +1 -1
  387. package/lib/Frontpage/FrontpageInfo.js +7 -5
  388. package/lib/Frontpage/FrontpageMultidisciplinarySubject.d.ts +21 -6
  389. package/lib/Frontpage/FrontpageMultidisciplinarySubject.js +46 -32
  390. package/lib/Frontpage/FrontpageProgramMenu.d.ts +1 -2
  391. package/lib/Frontpage/FrontpageProgramMenu.js +61 -43
  392. package/lib/Frontpage/FrontpageSearch.d.ts +1 -1
  393. package/lib/Frontpage/FrontpageSearch.js +16 -12
  394. package/lib/Frontpage/FrontpageToolbox.d.ts +1 -1
  395. package/lib/Frontpage/FrontpageToolbox.js +23 -15
  396. package/lib/Frontpage/illustrations/Fellesfag.d.ts +1 -2
  397. package/lib/Frontpage/illustrations/Fellesfag.js +15 -15
  398. package/lib/Frontpage/illustrations/FrontpageHeaderIllustration.d.ts +1 -2
  399. package/lib/Frontpage/illustrations/FrontpageHeaderIllustration.js +31 -31
  400. package/lib/Frontpage/illustrations/FrontpageIllustrations.d.ts +8 -2
  401. package/lib/Frontpage/illustrations/FrontpageIllustrations.js +13 -9
  402. package/lib/Frontpage/illustrations/FrontpageSubjectIllustration.d.ts +1 -2
  403. package/lib/Frontpage/illustrations/FrontpageSubjectIllustration.js +47 -47
  404. package/lib/Frontpage/illustrations/MenuFellesfag.d.ts +1 -2
  405. package/lib/Frontpage/illustrations/MenuFellesfag.js +16 -16
  406. package/lib/Frontpage/illustrations/MenuStudiespesialiserende.d.ts +1 -2
  407. package/lib/Frontpage/illustrations/MenuStudiespesialiserende.js +13 -13
  408. package/lib/Frontpage/illustrations/MenuYrkesfag.d.ts +1 -2
  409. package/lib/Frontpage/illustrations/MenuYrkesfag.js +20 -20
  410. package/lib/Frontpage/illustrations/Studiespesialiserende.d.ts +1 -2
  411. package/lib/Frontpage/illustrations/Studiespesialiserende.js +13 -13
  412. package/lib/Frontpage/illustrations/Yrkesfag.d.ts +1 -2
  413. package/lib/Frontpage/illustrations/Yrkesfag.js +19 -19
  414. package/lib/Frontpage/illustrations/index.d.ts +6 -7
  415. package/lib/Hero/Hero.d.ts +8 -8
  416. package/lib/Hero/Hero.js +9 -9
  417. package/lib/Image/Image.d.ts +1 -1
  418. package/lib/Image/Image.js +13 -11
  419. package/lib/Image/ImageLink.d.ts +1 -1
  420. package/lib/Image/ImageLink.js +10 -8
  421. package/lib/Image/LazyLoadImage.d.ts +1 -2
  422. package/lib/Image/LazyLoadImage.js +4 -4
  423. package/lib/InfoBlock/InfoBlock.d.ts +1 -1
  424. package/lib/InfoBlock/InfoBlock.js +23 -13
  425. package/lib/InfoBox/InfoBox.d.ts +1 -1
  426. package/lib/InfoBox/InfoBox.js +7 -5
  427. package/lib/InfoWidget/InfoWidget.d.ts +1 -1
  428. package/lib/InfoWidget/InfoWidget.js +56 -38
  429. package/lib/LanguageSelector/LanguageSelector.d.ts +1 -2
  430. package/lib/LanguageSelector/LanguageSelector.js +51 -30
  431. package/lib/LanguageSelector/LanguageSelectorContent.d.ts +1 -2
  432. package/lib/LanguageSelector/LanguageSelectorContent.js +21 -10
  433. package/lib/Layout/Content.d.ts +1 -1
  434. package/lib/Layout/Content.js +2 -2
  435. package/lib/Layout/LayoutItem.d.ts +1 -1
  436. package/lib/Layout/LayoutItem.js +5 -5
  437. package/lib/Layout/OneColumn.d.ts +1 -1
  438. package/lib/Layout/OneColumn.js +2 -2
  439. package/lib/Layout/PageContainer.d.ts +1 -1
  440. package/lib/Layout/PageContainer.js +2 -2
  441. package/lib/LearningPaths/LearningPathContent.d.ts +1 -1
  442. package/lib/LearningPaths/LearningPathContent.js +7 -5
  443. package/lib/LearningPaths/LearningPathInformation.d.ts +1 -2
  444. package/lib/LearningPaths/LearningPathInformation.js +21 -15
  445. package/lib/LearningPaths/LearningPathLastStepNavigation.d.ts +1 -1
  446. package/lib/LearningPaths/LearningPathLastStepNavigation.js +32 -22
  447. package/lib/LearningPaths/LearningPathMenu.d.ts +1 -2
  448. package/lib/LearningPaths/LearningPathMenu.js +38 -30
  449. package/lib/LearningPaths/LearningPathMenuAside.d.ts +1 -1
  450. package/lib/LearningPaths/LearningPathMenuAside.js +49 -29
  451. package/lib/LearningPaths/LearningPathMenuAsideCopyright.d.ts +1 -2
  452. package/lib/LearningPaths/LearningPathMenuAsideCopyright.js +13 -9
  453. package/lib/LearningPaths/LearningPathMenuContent.d.ts +1 -2
  454. package/lib/LearningPaths/LearningPathMenuContent.js +53 -41
  455. package/lib/LearningPaths/LearningPathMenuIntro.d.ts +1 -2
  456. package/lib/LearningPaths/LearningPathMenuIntro.js +48 -32
  457. package/lib/LearningPaths/LearningPathMenuModalWrapper.d.ts +1 -1
  458. package/lib/LearningPaths/LearningPathMenuModalWrapper.js +13 -9
  459. package/lib/LearningPaths/LearningPathMobileHeader.d.ts +1 -1
  460. package/lib/LearningPaths/LearningPathMobileHeader.js +19 -8
  461. package/lib/LearningPaths/LearningPathMobileStepInfo.d.ts +1 -1
  462. package/lib/LearningPaths/LearningPathMobileStepInfo.js +6 -4
  463. package/lib/LearningPaths/LearningPathSticky.d.ts +3 -3
  464. package/lib/LearningPaths/LearningPathSticky.js +37 -29
  465. package/lib/LearningPaths/LearningPathWrapper.d.ts +1 -1
  466. package/lib/LearningPaths/LearningPathWrapper.js +17 -11
  467. package/lib/Logo/Logo.d.ts +1 -2
  468. package/lib/Logo/Logo.js +5 -5
  469. package/lib/Logo/SvgLogo.d.ts +1 -2
  470. package/lib/Logo/SvgLogo.js +8 -8
  471. package/lib/Masthead/Masthead.d.ts +2 -2
  472. package/lib/Masthead/Masthead.js +48 -36
  473. package/lib/Masthead/MastheadAuthModal.d.ts +1 -2
  474. package/lib/Masthead/MastheadAuthModal.js +8 -6
  475. package/lib/Masthead/MastheadSearchModal.d.ts +1 -1
  476. package/lib/Masthead/MastheadSearchModal.js +40 -30
  477. package/lib/Masthead/SkipToMainContent.d.ts +1 -2
  478. package/lib/Masthead/SkipToMainContent.js +6 -4
  479. package/lib/MediaList/MediaList.d.ts +8 -8
  480. package/lib/MediaList/MediaList.js +15 -15
  481. package/lib/Messages/MessageBanner.d.ts +1 -2
  482. package/lib/Messages/MessageBanner.js +21 -15
  483. package/lib/Messages/MessageBox.d.ts +2 -2
  484. package/lib/Messages/MessageBox.js +60 -38
  485. package/lib/Messages/MessageBoxTag.d.ts +1 -2
  486. package/lib/Messages/MessageBoxTag.js +10 -8
  487. package/lib/MultidisciplinarySubject/Illustrations.d.ts +28 -7
  488. package/lib/MultidisciplinarySubject/Illustrations.js +28 -14
  489. package/lib/MultidisciplinarySubject/List.d.ts +1 -2
  490. package/lib/MultidisciplinarySubject/List.js +21 -15
  491. package/lib/MultidisciplinarySubject/ListItem.d.ts +1 -2
  492. package/lib/MultidisciplinarySubject/ListItem.js +45 -31
  493. package/lib/MultidisciplinarySubject/MultidisciplinarySubject.d.ts +1 -1
  494. package/lib/MultidisciplinarySubject/MultidisciplinarySubject.js +47 -33
  495. package/lib/MultidisciplinarySubject/MultidisciplinarySubjectHeader.d.ts +1 -2
  496. package/lib/MultidisciplinarySubject/MultidisciplinarySubjectHeader.js +47 -35
  497. package/lib/MyNdla/Resource/Folder.d.ts +1 -2
  498. package/lib/MyNdla/Resource/Folder.js +53 -28
  499. package/lib/MyNdla/Resource/FolderInput.d.ts +1 -1
  500. package/lib/MyNdla/Resource/FolderInput.js +15 -11
  501. package/lib/NDLAFilm/AboutNdlaFilm.d.ts +1 -1
  502. package/lib/NDLAFilm/AboutNdlaFilm.js +14 -12
  503. package/lib/NDLAFilm/AllMoviesAlphabetically.d.ts +1 -2
  504. package/lib/NDLAFilm/AllMoviesAlphabetically.js +80 -60
  505. package/lib/NDLAFilm/CategorySelect.js +31 -25
  506. package/lib/NDLAFilm/FilmContentCard.d.ts +1 -2
  507. package/lib/NDLAFilm/FilmContentCard.js +20 -14
  508. package/lib/NDLAFilm/FilmContentCardTags.d.ts +1 -2
  509. package/lib/NDLAFilm/FilmContentCardTags.js +12 -8
  510. package/lib/NDLAFilm/FilmMovieList.d.ts +1 -2
  511. package/lib/NDLAFilm/FilmMovieList.js +8 -6
  512. package/lib/NDLAFilm/FilmMovieSearch.d.ts +1 -2
  513. package/lib/NDLAFilm/FilmMovieSearch.js +17 -13
  514. package/lib/NDLAFilm/FilmSlideshow.d.ts +1 -2
  515. package/lib/NDLAFilm/FilmSlideshow.js +91 -79
  516. package/lib/NDLAFilm/MovieGrid.d.ts +1 -2
  517. package/lib/NDLAFilm/MovieGrid.js +15 -11
  518. package/lib/NDLAFilm/NavigationArrow.d.ts +5 -2
  519. package/lib/NDLAFilm/NavigationArrow.js +27 -15
  520. package/lib/NDLAFilm/SlideshowIndicator.d.ts +1 -2
  521. package/lib/NDLAFilm/SlideshowIndicator.js +15 -11
  522. package/lib/NDLAFilm/VisualElement.d.ts +1 -2
  523. package/lib/NDLAFilm/VisualElement.js +11 -9
  524. package/lib/NDLAFilm/filmStyles.d.ts +8 -2
  525. package/lib/NDLAFilm/filmStyles.js +7 -3
  526. package/lib/Navigation/NavigationBox.d.ts +1 -1
  527. package/lib/Navigation/NavigationBox.js +128 -90
  528. package/lib/Navigation/NavigationHeading.d.ts +1 -1
  529. package/lib/Navigation/NavigationHeading.js +35 -29
  530. package/lib/Navigation/NavigationTopicAbout.d.ts +1 -1
  531. package/lib/Navigation/NavigationTopicAbout.js +88 -70
  532. package/lib/NoContentBox/NoContentBox.d.ts +1 -2
  533. package/lib/NoContentBox/NoContentBox.js +2 -2
  534. package/lib/Notion/ConceptNotion.d.ts +1 -2
  535. package/lib/Notion/ConceptNotion.js +16 -16
  536. package/lib/Notion/FigureNotion.d.ts +1 -1
  537. package/lib/Notion/FigureNotion.js +10 -8
  538. package/lib/Notion/Notion.d.ts +1 -1
  539. package/lib/Notion/Notion.js +31 -23
  540. package/lib/Notion/NotionImage.d.ts +1 -2
  541. package/lib/Notion/NotionImage.js +13 -9
  542. package/lib/Notion/NotionVisualElement.d.ts +1 -1
  543. package/lib/Notion/NotionVisualElement.js +16 -14
  544. package/lib/Portrait/Portrait.d.ts +1 -2
  545. package/lib/Portrait/Portrait.js +15 -6
  546. package/lib/Programme/Programme.d.ts +1 -2
  547. package/lib/Programme/Programme.js +34 -24
  548. package/lib/Programme/ProgrammeSubjects.d.ts +1 -2
  549. package/lib/Programme/ProgrammeSubjects.js +10 -8
  550. package/lib/RadioButtonGroup/RadioButtonGroup.d.ts +1 -1
  551. package/lib/RadioButtonGroup/RadioButtonGroup.js +25 -17
  552. package/lib/RelatedArticleList/RelatedArticleList.d.ts +2 -2
  553. package/lib/RelatedArticleList/RelatedArticleList.js +7 -7
  554. package/lib/Resource/BlockResource.d.ts +1 -2
  555. package/lib/Resource/BlockResource.js +41 -29
  556. package/lib/Resource/ListResource.d.ts +1 -2
  557. package/lib/Resource/ListResource.js +68 -54
  558. package/lib/Resource/resourceComponents.d.ts +18 -7
  559. package/lib/Resource/resourceComponents.js +65 -41
  560. package/lib/ResourceBox/ResourceBox.d.ts +1 -2
  561. package/lib/ResourceBox/ResourceBox.js +30 -18
  562. package/lib/ResourceGroup/ResourceGroup.d.ts +1 -2
  563. package/lib/ResourceGroup/ResourceGroup.js +15 -9
  564. package/lib/ResourceGroup/ResourceItem.d.ts +1 -2
  565. package/lib/ResourceGroup/ResourceItem.js +89 -59
  566. package/lib/ResourceGroup/ResourceList.d.ts +1 -2
  567. package/lib/ResourceGroup/ResourceList.js +15 -9
  568. package/lib/ResourcesWrapper/ResourcesTitle.d.ts +1 -1
  569. package/lib/ResourcesWrapper/ResourcesTitle.js +3 -3
  570. package/lib/ResourcesWrapper/ResourcesTopicTitle.d.ts +1 -2
  571. package/lib/ResourcesWrapper/ResourcesTopicTitle.js +43 -31
  572. package/lib/ResourcesWrapper/ResourcesWrapper.d.ts +1 -1
  573. package/lib/ResourcesWrapper/ResourcesWrapper.js +3 -3
  574. package/lib/Search/ActiveFilterContent.d.ts +5 -2
  575. package/lib/Search/ActiveFilterContent.js +12 -8
  576. package/lib/Search/ActiveFilters.d.ts +1 -2
  577. package/lib/Search/ActiveFilters.js +46 -34
  578. package/lib/Search/ContentTypeResult.d.ts +1 -2
  579. package/lib/Search/ContentTypeResult.js +15 -17
  580. package/lib/Search/ContentTypeResultStyles.d.ts +24 -6
  581. package/lib/Search/ContentTypeResultStyles.js +84 -40
  582. package/lib/Search/LoadingWrapper.d.ts +1 -2
  583. package/lib/Search/LoadingWrapper.js +7 -5
  584. package/lib/Search/SearchField.d.ts +1 -1
  585. package/lib/Search/SearchField.js +25 -19
  586. package/lib/Search/SearchFieldForm.d.ts +1 -1
  587. package/lib/Search/SearchFieldForm.js +21 -11
  588. package/lib/Search/SearchResult.d.ts +2 -2
  589. package/lib/Search/SearchResult.js +61 -41
  590. package/lib/Search/SearchResultSleeve.d.ts +1 -2
  591. package/lib/Search/SearchResultSleeve.js +46 -30
  592. package/lib/Search/ToggleSearchButton.d.ts +1 -2
  593. package/lib/Search/ToggleSearchButton.js +12 -8
  594. package/lib/SearchTypeResult/ActiveFilterContent.d.ts +5 -2
  595. package/lib/SearchTypeResult/ActiveFilterContent.js +16 -12
  596. package/lib/SearchTypeResult/ActiveFilters.d.ts +1 -1
  597. package/lib/SearchTypeResult/ActiveFilters.js +53 -41
  598. package/lib/SearchTypeResult/PopupFilter.d.ts +1 -2
  599. package/lib/SearchTypeResult/PopupFilter.js +50 -36
  600. package/lib/SearchTypeResult/ResultNavigation.d.ts +1 -2
  601. package/lib/SearchTypeResult/ResultNavigation.js +22 -14
  602. package/lib/SearchTypeResult/SearchFieldHeader.d.ts +1 -1
  603. package/lib/SearchTypeResult/SearchFieldHeader.js +29 -21
  604. package/lib/SearchTypeResult/SearchFilterContent.d.ts +1 -2
  605. package/lib/SearchTypeResult/SearchFilterContent.js +16 -12
  606. package/lib/SearchTypeResult/SearchHeader.d.ts +1 -1
  607. package/lib/SearchTypeResult/SearchHeader.js +40 -24
  608. package/lib/SearchTypeResult/SearchItem.d.ts +1 -1
  609. package/lib/SearchTypeResult/SearchItem.js +58 -44
  610. package/lib/SearchTypeResult/SearchItemList.d.ts +1 -2
  611. package/lib/SearchTypeResult/SearchItemList.js +79 -52
  612. package/lib/SearchTypeResult/SearchItems.d.ts +1 -1
  613. package/lib/SearchTypeResult/SearchItems.js +18 -14
  614. package/lib/SearchTypeResult/SearchNotionItem.d.ts +1 -1
  615. package/lib/SearchTypeResult/SearchNotionItem.js +75 -51
  616. package/lib/SearchTypeResult/SearchNotionsResult.d.ts +1 -1
  617. package/lib/SearchTypeResult/SearchNotionsResult.js +21 -13
  618. package/lib/SearchTypeResult/SearchSubjectItem.d.ts +1 -2
  619. package/lib/SearchTypeResult/SearchSubjectItem.js +16 -10
  620. package/lib/SearchTypeResult/SearchSubjectResult.d.ts +1 -2
  621. package/lib/SearchTypeResult/SearchSubjectResult.js +11 -9
  622. package/lib/SearchTypeResult/SearchTypeHeader.d.ts +1 -1
  623. package/lib/SearchTypeResult/SearchTypeHeader.js +47 -29
  624. package/lib/SearchTypeResult/SearchTypeResult.d.ts +1 -1
  625. package/lib/SearchTypeResult/SearchTypeResult.js +14 -10
  626. package/lib/SearchTypeResult/SearchViewType.d.ts +1 -2
  627. package/lib/SearchTypeResult/SearchViewType.js +28 -20
  628. package/lib/SearchTypeResult/components/ItemContexts.d.ts +1 -2
  629. package/lib/SearchTypeResult/components/ItemContexts.js +46 -32
  630. package/lib/SearchTypeResult/components/ItemResourceHeader.d.ts +1 -2
  631. package/lib/SearchTypeResult/components/ItemResourceHeader.js +50 -29
  632. package/lib/SearchTypeResult/components/ItemTopicHeader.d.ts +1 -1
  633. package/lib/SearchTypeResult/components/ItemTopicHeader.js +35 -24
  634. package/lib/SearchTypeResult/components/SubjectFilters.d.ts +1 -2
  635. package/lib/SearchTypeResult/components/SubjectFilters.js +14 -12
  636. package/lib/SectionHeading/SectionHeading.d.ts +1 -1
  637. package/lib/SectionHeading/SectionHeading.js +21 -13
  638. package/lib/SnackBar/DefaultSnackbar.d.ts +1 -2
  639. package/lib/SnackBar/DefaultSnackbar.js +15 -9
  640. package/lib/SnackBar/SnackbarProvider.d.ts +2 -2
  641. package/lib/SnackBar/SnackbarProvider.js +27 -23
  642. package/lib/Subject/Subject.d.ts +8 -8
  643. package/lib/Subject/Subject.js +97 -71
  644. package/lib/Subject/SubjectAbout.d.ts +1 -1
  645. package/lib/Subject/SubjectAbout.js +63 -43
  646. package/lib/Subject/SubjectArchive.d.ts +1 -1
  647. package/lib/Subject/SubjectArchive.js +65 -43
  648. package/lib/Subject/SubjectBanner.d.ts +1 -2
  649. package/lib/Subject/SubjectBanner.js +8 -6
  650. package/lib/Subject/SubjectCarousel.d.ts +1 -1
  651. package/lib/Subject/SubjectCarousel.js +43 -31
  652. package/lib/Subject/SubjectHeader.d.ts +1 -2
  653. package/lib/Subject/SubjectHeader.js +39 -29
  654. package/lib/Subject/SubjectLinks.d.ts +1 -2
  655. package/lib/Subject/SubjectLinks.js +20 -14
  656. package/lib/Subject/SubjectNewContent.d.ts +1 -2
  657. package/lib/Subject/SubjectNewContent.js +42 -26
  658. package/lib/Subject/SubjectShortcuts.d.ts +1 -1
  659. package/lib/Subject/SubjectShortcuts.js +28 -20
  660. package/lib/Subject/SubjectSocial.d.ts +2 -2
  661. package/lib/Subject/SubjectSocial.js +12 -8
  662. package/lib/Table/Table.d.ts +1 -1
  663. package/lib/Table/Table.js +5 -5
  664. package/lib/TagSelector/Control.d.ts +11 -0
  665. package/lib/TagSelector/Control.js +37 -0
  666. package/lib/TagSelector/DropdownIndicator.d.ts +11 -0
  667. package/lib/TagSelector/DropdownIndicator.js +82 -0
  668. package/lib/TagSelector/Input.d.ts +11 -0
  669. package/lib/TagSelector/Input.js +35 -0
  670. package/lib/TagSelector/Menu.d.ts +11 -0
  671. package/lib/TagSelector/Menu.js +42 -0
  672. package/lib/TagSelector/MenuList.d.ts +16 -0
  673. package/lib/TagSelector/MenuList.js +38 -0
  674. package/lib/TagSelector/Option.d.ts +11 -0
  675. package/lib/TagSelector/Option.js +65 -0
  676. package/lib/TagSelector/SelectContainer.d.ts +11 -0
  677. package/lib/TagSelector/SelectContainer.js +40 -0
  678. package/lib/TagSelector/TagSelector.d.ts +14 -12
  679. package/lib/TagSelector/TagSelector.js +171 -98
  680. package/lib/TagSelector/ValueButton.d.ts +19 -0
  681. package/lib/TagSelector/ValueButton.js +57 -0
  682. package/lib/TagSelector/ariaMessages.d.ts +16 -0
  683. package/lib/TagSelector/ariaMessages.js +113 -0
  684. package/lib/TagSelector/index.d.ts +2 -1
  685. package/lib/TagSelector/index.js +3 -5
  686. package/lib/TagSelector/types.d.ts +11 -0
  687. package/lib/TagSelector/types.js +1 -0
  688. package/lib/ToolboxPage/ToolboxInfo.d.ts +1 -1
  689. package/lib/ToolboxPage/ToolboxInfo.js +11 -7
  690. package/lib/Topic/Loader.d.ts +1 -2
  691. package/lib/Topic/Loader.js +15 -15
  692. package/lib/Topic/Topic.d.ts +1 -1
  693. package/lib/Topic/Topic.js +132 -98
  694. package/lib/TopicIntroductionList/TopicIntroduction.d.ts +1 -2
  695. package/lib/TopicIntroductionList/TopicIntroduction.js +15 -15
  696. package/lib/TopicIntroductionList/TopicIntroductionList.d.ts +1 -2
  697. package/lib/TopicIntroductionList/TopicIntroductionList.js +4 -4
  698. package/lib/TopicIntroductionList/TopicIntroductionShortcuts.d.ts +1 -2
  699. package/lib/TopicIntroductionList/TopicIntroductionShortcuts.js +7 -7
  700. package/lib/TopicIntroductionList/TopicShortcutItem.d.ts +1 -2
  701. package/lib/TopicIntroductionList/TopicShortcutItem.js +5 -5
  702. package/lib/TopicMenu/SubtopicLinkList.js +50 -36
  703. package/lib/TopicMenu/TopicMenu.js +32 -30
  704. package/lib/TopicMenu/TopicMenuButton.js +11 -7
  705. package/lib/Translation/Translation.d.ts +1 -1
  706. package/lib/Translation/Translation.js +2 -2
  707. package/lib/Translation/TranslationBox.d.ts +1 -1
  708. package/lib/Translation/TranslationBox.js +4 -4
  709. package/lib/Translation/TranslationLine.d.ts +1 -1
  710. package/lib/Translation/TranslationLine.js +5 -5
  711. package/lib/TreeStructure/AddFolderButton.d.ts +1 -2
  712. package/lib/TreeStructure/AddFolderButton.js +17 -13
  713. package/lib/TreeStructure/ComboboxButton.js +33 -28
  714. package/lib/TreeStructure/FolderItem.d.ts +1 -2
  715. package/lib/TreeStructure/FolderItem.js +32 -20
  716. package/lib/TreeStructure/FolderItems.d.ts +1 -1
  717. package/lib/TreeStructure/FolderItems.js +17 -13
  718. package/lib/TreeStructure/NavigationLink.d.ts +1 -2
  719. package/lib/TreeStructure/NavigationLink.js +16 -12
  720. package/lib/TreeStructure/TreeStructure.d.ts +1 -2
  721. package/lib/TreeStructure/TreeStructure.js +51 -33
  722. package/lib/User/AuthModal.d.ts +1 -1
  723. package/lib/User/AuthModal.js +42 -28
  724. package/lib/User/UserInfo.d.ts +1 -2
  725. package/lib/User/UserInfo.js +24 -20
  726. package/lib/internal-icons/Book.js +3 -3
  727. package/lib/internal-icons/Download.js +3 -3
  728. package/lib/internal-icons/Embed.js +3 -3
  729. package/lib/internal-icons/InsertTemplate.js +3 -3
  730. package/lib/internal-icons/OpenWindow.js +3 -3
  731. package/lib/locale/LocaleProvider.d.ts +1 -1
  732. package/lib/locale/LocaleProvider.js +4 -4
  733. package/lib/locale/messages-en.d.ts +40 -2
  734. package/lib/locale/messages-en.js +41 -3
  735. package/lib/locale/messages-nb.d.ts +40 -2
  736. package/lib/locale/messages-nb.js +41 -3
  737. package/lib/locale/messages-nn.d.ts +40 -2
  738. package/lib/locale/messages-nn.js +41 -3
  739. package/lib/locale/messages-se.d.ts +40 -2
  740. package/lib/locale/messages-se.js +41 -3
  741. package/lib/locale/messages-sma.d.ts +40 -2
  742. package/lib/locale/messages-sma.js +41 -3
  743. package/lib/utils/createUniversalPortal.d.ts +1 -1
  744. package/lib/utils/createUniversalPortal.js +2 -2
  745. package/package.json +19 -18
  746. package/src/Breadcrumb/BreadcrumbItem.tsx +1 -1
  747. package/src/ComponentCursor/ComponentCursor.tsx +1 -1
  748. package/src/CopyParagraphButton/CopyParagraphButton.tsx +21 -19
  749. package/src/Filter/FilterCarousel.tsx +1 -1
  750. package/src/Frontpage/FrontpageFilm.tsx +1 -1
  751. package/src/Frontpage/illustrations/FrontpageSubjectIllustration.tsx +1 -1
  752. package/src/Image/LazyLoadImage.tsx +0 -1
  753. package/src/Image/__tests__/Image-test.jsx +8 -7
  754. package/src/Image/__tests__/__snapshots__/Image-test.jsx.snap +8 -20
  755. package/src/InfoWidget/InfoWidget.tsx +1 -1
  756. package/src/LanguageSelector/LanguageSelector.tsx +1 -1
  757. package/src/LearningPaths/LearningPathLastStepNavigation.tsx +1 -1
  758. package/src/LearningPaths/LearningPathMenu.tsx +1 -1
  759. package/src/LearningPaths/LearningPathMenuAside.tsx +1 -1
  760. package/src/LearningPaths/LearningPathMenuContent.tsx +1 -1
  761. package/src/LearningPaths/LearningPathMenuIntro.tsx +1 -1
  762. package/src/LearningPaths/LearningPathMenuModalWrapper.tsx +1 -1
  763. package/src/LearningPaths/LearningPathSticky.tsx +1 -1
  764. package/src/LearningPaths/LearningPathWrapper.tsx +1 -1
  765. package/src/Masthead/Masthead.tsx +1 -1
  766. package/src/Masthead/MastheadSearchModal.tsx +1 -1
  767. package/src/Messages/MessageBox.tsx +1 -1
  768. package/src/MyNdla/Resource/Folder.tsx +1 -1
  769. package/src/NDLAFilm/AllMoviesAlphabetically.tsx +1 -1
  770. package/src/NDLAFilm/CategorySelect.tsx +1 -1
  771. package/src/NDLAFilm/FilmSlideshow.tsx +1 -1
  772. package/src/NDLAFilm/NavigationArrow.tsx +1 -1
  773. package/src/Navigation/NavigationBox.tsx +1 -1
  774. package/src/Navigation/NavigationHeading.tsx +1 -1
  775. package/src/Navigation/NavigationTopicAbout.tsx +1 -1
  776. package/src/Notion/ConceptNotion.tsx +0 -2
  777. package/src/Notion/NotionVisualElement.tsx +1 -1
  778. package/src/Resource/ListResource.tsx +1 -1
  779. package/src/ResourceGroup/ResourceItem.tsx +2 -2
  780. package/src/ResourceGroup/ResourceList.tsx +2 -2
  781. package/src/ResourcesWrapper/ResourcesTopicTitle.tsx +1 -1
  782. package/src/Search/ActiveFilters.tsx +1 -1
  783. package/src/Search/ContentTypeResultStyles.tsx +1 -1
  784. package/src/Search/SearchField.tsx +1 -1
  785. package/src/Search/SearchFieldForm.tsx +1 -1
  786. package/src/SearchTypeResult/ActiveFilters.tsx +1 -1
  787. package/src/SearchTypeResult/SearchItem.tsx +6 -49
  788. package/src/SearchTypeResult/SearchItemList.tsx +12 -19
  789. package/src/SearchTypeResult/components/ItemResourceHeader.tsx +19 -23
  790. package/src/SearchTypeResult/components/ItemTopicHeader.tsx +3 -5
  791. package/src/SectionHeading/SectionHeading.tsx +1 -1
  792. package/src/SnackBar/SnackbarProvider.tsx +1 -1
  793. package/src/Subject/Subject.tsx +1 -1
  794. package/src/Subject/SubjectAbout.tsx +1 -1
  795. package/src/Subject/SubjectCarousel.tsx +1 -1
  796. package/src/Subject/SubjectHeader.tsx +1 -1
  797. package/src/TagSelector/Control.tsx +34 -0
  798. package/src/TagSelector/DropdownIndicator.tsx +47 -0
  799. package/src/TagSelector/Input.tsx +31 -0
  800. package/src/TagSelector/Menu.tsx +38 -0
  801. package/src/TagSelector/MenuList.tsx +30 -0
  802. package/src/TagSelector/Option.tsx +53 -0
  803. package/src/TagSelector/SelectContainer.tsx +32 -0
  804. package/src/TagSelector/TagSelector.tsx +105 -84
  805. package/src/TagSelector/ValueButton.tsx +46 -0
  806. package/src/TagSelector/ariaMessages.ts +87 -0
  807. package/src/TagSelector/index.ts +2 -1
  808. package/src/TagSelector/types.ts +12 -0
  809. package/src/Topic/Topic.tsx +1 -1
  810. package/src/TopicMenu/SubtopicLinkList.jsx +1 -1
  811. package/src/TopicMenu/TopicMenuButton.jsx +1 -1
  812. package/src/TreeStructure/ComboboxButton.tsx +15 -17
  813. package/src/TreeStructure/TreeStructure.tsx +3 -12
  814. package/src/locale/messages-en.ts +42 -3
  815. package/src/locale/messages-nb.ts +42 -3
  816. package/src/locale/messages-nn.ts +42 -3
  817. package/src/locale/messages-se.ts +42 -3
  818. package/src/locale/messages-sma.ts +42 -3
  819. package/es/TagSelector/SuggestionInput.js +0 -285
  820. package/es/TagSelector/Suggestions.js +0 -97
  821. package/lib/TagSelector/SuggestionInput.d.ts +0 -19
  822. package/lib/TagSelector/SuggestionInput.js +0 -299
  823. package/lib/TagSelector/Suggestions.d.ts +0 -12
  824. package/lib/TagSelector/Suggestions.js +0 -99
  825. package/src/TagSelector/SuggestionInput.tsx +0 -287
  826. 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, { useState, useRef, useEffect, ChangeEvent } from '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 { spacingUnit, fonts } from '@ndla/core';
12
- import { uuid } from '@ndla/util';
13
- import SuggestionInput from './SuggestionInput';
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 DEFAULT_DROPDOWN_MAXHEIGHT = '240px';
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 StyledLabel = styled.label`
18
- font-weight: ${fonts.weight.semibold};
45
+ const StyledTagSelector = styled.div`
46
+ display: flex;
47
+ flex-direction: column;
48
+ flex: 1;
49
+ overflow: hidden;
19
50
  `;
20
51
 
21
- export interface TagType {
22
- name: string;
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: TagType[];
29
- tagsSelected: string[];
30
- onToggleTag: (id: string) => void;
31
- onCreateTag: (tagName: string) => void;
32
- inline?: boolean;
33
- prefix?: string;
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 sortedTags = (tags: TagType[], selectedTags: string[]): TagType[] => {
37
- const returnTags = selectedTags
38
- .map((selectedId) => tags.find(({ id }) => selectedId === id))
39
- .filter((notUndefined) => notUndefined) as unknown as TagType[];
40
- return returnTags;
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 getSuggestions = (tags: TagType[], inputValue: string): TagType[] => {
44
- if (inputValue === '') {
45
- return [];
46
- }
47
- const inputLowercase = inputValue.toLowerCase();
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
- return () => {
83
- typeof window !== 'undefined' && window.removeEventListener('resize', setMaxDropdownMaxHeight);
84
- };
85
- }, [expanded, inline]);
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
- <div ref={containerRef}>
89
- <StyledLabel htmlFor={inputIdRef.current}>{label}</StyledLabel>
90
- <SuggestionInput
91
- onChange={(e: ChangeEvent<HTMLInputElement>) => {
92
- const target = e.target as HTMLInputElement;
93
- setInputValue(target.value);
94
- setExpanded(false);
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
- suggestions={expanded ? tags : getSuggestions(tags, inputValue)}
97
- value={inputValue}
98
- onCreateTag={onCreateTag}
99
- onToggleTag={onToggleTag}
100
- setInputValue={setInputValue}
101
- addedTags={sortedTags(tags, tagsSelected)}
102
- expanded={expanded}
103
- setExpanded={setExpanded}
104
- dropdownMaxHeight={dropdownMaxHeight}
105
- inline={inline}
106
- scrollAnchorElement={containerRef}
107
- prefix={prefix}
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
- </div>
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
+ });
@@ -6,7 +6,8 @@
6
6
  *
7
7
  */
8
8
 
9
- import TagSelector, { TagType } from './TagSelector';
9
+ import TagSelector from './TagSelector';
10
+ import { TagType } from './types';
10
11
 
11
12
  export type { TagType };
12
13
 
@@ -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
+ }
@@ -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/core';
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/core';
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/core';
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 isOpen={showTree}>
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, spacing } from '@ndla/core';
12
- import { css } from '@emotion/core';
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
- ::-webkit-scrollbar {
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
- hideAllTags: 'Hide all tags',
37
- showAllTags: 'Show all tags',
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: 'Show concept description',
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
- hideAllTags: 'Skjul alle emneknagger',
37
- showAllTags: 'Vis alle emneknagger',
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: 'Vis beskrivelsen av forklaringen.',
966
+ showDescription: '{{title}}, begrepsforklaring. Trykk for å åpne forklaring.',
928
967
  reuse: 'Bruk forklaring',
929
968
  error: {
930
969
  title: 'En feil oppstod',