@docusaurus/theme-classic 2.0.0-beta.12faed89d → 2.0.0-beta.13

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 (350) hide show
  1. package/README.md +1 -1
  2. package/lib/__tests__/validateThemeConfig.test.js +277 -3
  3. package/lib/admonitions.css +35 -0
  4. package/lib/deps.d.ts +13 -0
  5. package/lib/index.js +16 -15
  6. package/lib/prism-include-languages.js +9 -5
  7. package/lib/theme/AnnouncementBar/index.js +8 -12
  8. package/lib/theme/AnnouncementBar/styles.module.css +23 -32
  9. package/lib/theme/BackToTopButton/index.js +140 -0
  10. package/lib/theme/BackToTopButton/styles.module.css +42 -0
  11. package/lib/theme/BlogArchivePage/index.js +89 -0
  12. package/lib/theme/BlogLayout/index.js +51 -0
  13. package/lib/theme/BlogListPage/index.js +10 -21
  14. package/lib/theme/BlogPostAuthor/index.js +51 -0
  15. package/lib/theme/BlogPostAuthor/styles.module.css +12 -0
  16. package/lib/theme/BlogPostAuthors/index.js +47 -0
  17. package/lib/theme/BlogPostAuthors/styles.module.css +11 -0
  18. package/lib/theme/BlogPostItem/index.js +58 -67
  19. package/lib/theme/BlogPostPage/index.js +37 -24
  20. package/lib/theme/BlogSidebar/index.js +5 -7
  21. package/lib/theme/BlogSidebar/styles.module.css +2 -2
  22. package/lib/theme/BlogTagsListPage/index.js +8 -44
  23. package/lib/theme/BlogTagsPostsPage/index.js +24 -38
  24. package/lib/theme/CodeBlock/index.js +18 -138
  25. package/lib/theme/CodeBlock/styles.module.css +6 -9
  26. package/lib/theme/Details/index.js +30 -0
  27. package/lib/theme/Details/styles.module.css +13 -0
  28. package/lib/theme/DocCard/index.js +84 -0
  29. package/lib/theme/DocCard/styles.module.css +43 -0
  30. package/lib/theme/DocCardList/index.js +28 -0
  31. package/lib/theme/DocCategoryGeneratedIndexPage/index.js +57 -0
  32. package/lib/theme/DocCategoryGeneratedIndexPage/styles.module.css +18 -0
  33. package/lib/theme/DocItem/index.js +22 -48
  34. package/lib/theme/DocItem/styles.module.css +2 -11
  35. package/lib/theme/DocItemFooter/index.js +79 -0
  36. package/lib/theme/DocItemFooter/styles.module.css +18 -0
  37. package/lib/theme/DocPage/index.js +35 -20
  38. package/lib/theme/DocPaginator/index.js +6 -7
  39. package/lib/theme/DocSidebar/index.js +23 -22
  40. package/lib/theme/DocSidebarItem/index.js +84 -50
  41. package/lib/theme/DocSidebarItem/styles.module.css +4 -0
  42. package/lib/theme/DocTagDocListPage/index.js +89 -0
  43. package/lib/theme/DocTagsListPage/index.js +44 -0
  44. package/lib/theme/DocVersionBadge/index.js +34 -0
  45. package/lib/theme/DocVersionBanner/index.js +12 -10
  46. package/lib/theme/EditThisPage/index.js +3 -1
  47. package/lib/theme/ErrorPageContent.js +43 -0
  48. package/lib/theme/Footer/index.js +8 -4
  49. package/lib/theme/Heading/index.js +17 -22
  50. package/lib/theme/Heading/styles.css +5 -6
  51. package/lib/theme/Heading/styles.module.css +9 -5
  52. package/lib/theme/IconArrow/index.js +2 -2
  53. package/lib/theme/IconClose/index.js +31 -0
  54. package/lib/theme/IconEdit/index.js +3 -3
  55. package/lib/theme/IconExternalLink/index.js +3 -3
  56. package/lib/theme/IconLanguage/index.js +3 -3
  57. package/lib/theme/IconMenu/index.js +3 -3
  58. package/lib/theme/LastUpdated/index.js +4 -2
  59. package/lib/theme/Layout/index.js +5 -1
  60. package/lib/theme/LayoutHead/index.js +22 -17
  61. package/lib/theme/LayoutProviders/index.js +7 -5
  62. package/lib/theme/Logo/index.js +16 -14
  63. package/lib/theme/MDXComponents/index.js +45 -4
  64. package/lib/theme/MDXComponents/styles.css +11 -0
  65. package/lib/theme/MDXPage/index.js +2 -1
  66. package/lib/theme/Navbar/index.js +46 -27
  67. package/lib/theme/Navbar/styles.module.css +3 -39
  68. package/lib/theme/NavbarItem/DefaultNavbarItem.js +27 -124
  69. package/lib/theme/NavbarItem/DocNavbarItem.js +7 -8
  70. package/lib/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +19 -12
  71. package/lib/theme/NavbarItem/DropdownNavbarItem.js +155 -0
  72. package/lib/theme/NavbarItem/{LocaleDropdownNavbarItem.js → LocaleDropdownNavbarItem/index.js} +6 -10
  73. package/lib/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
  74. package/lib/theme/NavbarItem/index.js +31 -11
  75. package/lib/theme/{SearchMetadatas → SearchMetadata}/index.js +2 -2
  76. package/lib/theme/Seo/index.js +10 -7
  77. package/lib/theme/TOC/index.js +9 -30
  78. package/lib/theme/TOC/styles.module.css +1 -1
  79. package/lib/theme/TOCCollapsible/index.js +7 -5
  80. package/lib/theme/TOCCollapsible/styles.module.css +1 -0
  81. package/lib/theme/TOCInline/index.js +7 -27
  82. package/lib/theme/TOCItems/index.js +78 -0
  83. package/lib/theme/Tabs/__tests__/index.test.js +123 -0
  84. package/lib/theme/Tabs/index.js +73 -50
  85. package/lib/theme/Tabs/styles.module.css +0 -13
  86. package/lib/theme/Tag/index.js +40 -0
  87. package/lib/theme/Tag/styles.module.css +70 -0
  88. package/lib/theme/TagsListByLetter/index.js +48 -0
  89. package/lib/theme/TagsListByLetter/styles.module.css +11 -0
  90. package/lib/theme/TagsListInline/index.js +44 -0
  91. package/lib/theme/TagsListInline/styles.module.css +15 -0
  92. package/lib/theme/ThemeProvider/index.js +8 -3
  93. package/lib/theme/ThemedImage/index.js +5 -7
  94. package/lib/theme/Toggle/index.js +41 -44
  95. package/lib/theme/Toggle/styles.module.css +91 -3
  96. package/lib/theme/UserPreferencesProvider/index.js +8 -3
  97. package/lib/theme/hooks/useHideableNavbar.js +14 -32
  98. package/lib/theme/hooks/useTheme.js +3 -5
  99. package/lib/theme/hooks/useWindowSize.js +2 -7
  100. package/lib/theme/prism-include-languages.js +4 -3
  101. package/lib/theme-classic.d.ts +806 -0
  102. package/lib/translations.js +4 -4
  103. package/lib/types.d.ts +0 -629
  104. package/lib/validateThemeConfig.js +230 -248
  105. package/lib-next/__tests__/validateThemeConfig.test.js +277 -3
  106. package/lib-next/admonitions.css +35 -0
  107. package/lib-next/deps.d.ts +13 -0
  108. package/lib-next/index.js +16 -10
  109. package/lib-next/prism-include-languages.js +0 -2
  110. package/lib-next/theme/AnnouncementBar/index.js +7 -12
  111. package/lib-next/theme/AnnouncementBar/styles.module.css +23 -32
  112. package/lib-next/theme/BackToTopButton/index.js +131 -0
  113. package/lib-next/theme/BackToTopButton/styles.module.css +42 -0
  114. package/lib-next/theme/BlogArchivePage/index.js +80 -0
  115. package/lib-next/theme/BlogLayout/index.js +40 -0
  116. package/lib-next/theme/BlogListPage/index.js +17 -25
  117. package/lib-next/theme/BlogPostAuthor/index.js +46 -0
  118. package/lib-next/theme/BlogPostAuthor/styles.module.css +12 -0
  119. package/lib-next/theme/BlogPostAuthors/index.js +34 -0
  120. package/lib-next/theme/BlogPostAuthors/styles.module.css +11 -0
  121. package/lib-next/theme/BlogPostItem/index.js +79 -86
  122. package/lib-next/theme/BlogPostPage/index.js +70 -35
  123. package/lib-next/theme/BlogSidebar/index.js +11 -13
  124. package/lib-next/theme/BlogSidebar/styles.module.css +2 -2
  125. package/lib-next/theme/BlogTagsListPage/index.js +14 -55
  126. package/lib-next/theme/BlogTagsPostsPage/index.js +29 -39
  127. package/lib-next/theme/CodeBlock/index.js +17 -149
  128. package/lib-next/theme/CodeBlock/styles.module.css +6 -9
  129. package/lib-next/theme/Details/index.js +20 -0
  130. package/lib-next/theme/Details/styles.module.css +13 -0
  131. package/lib-next/theme/DocCard/index.js +80 -0
  132. package/lib-next/theme/DocCard/styles.module.css +43 -0
  133. package/lib-next/theme/DocCardList/index.js +19 -0
  134. package/lib-next/theme/DocCategoryGeneratedIndexPage/index.js +49 -0
  135. package/lib-next/theme/DocCategoryGeneratedIndexPage/styles.module.css +18 -0
  136. package/lib-next/theme/DocItem/index.js +30 -59
  137. package/lib-next/theme/DocItem/styles.module.css +2 -11
  138. package/lib-next/theme/DocItemFooter/index.js +79 -0
  139. package/lib-next/theme/DocItemFooter/styles.module.css +18 -0
  140. package/lib-next/theme/DocPage/index.js +46 -23
  141. package/lib-next/theme/DocPaginator/index.js +7 -11
  142. package/lib-next/theme/DocSidebar/index.js +37 -43
  143. package/lib-next/theme/DocSidebarItem/index.js +115 -65
  144. package/lib-next/theme/DocSidebarItem/styles.module.css +4 -0
  145. package/lib-next/theme/DocTagDocListPage/index.js +89 -0
  146. package/lib-next/theme/DocTagsListPage/index.js +38 -0
  147. package/lib-next/theme/DocVersionBadge/index.js +27 -0
  148. package/lib-next/theme/DocVersionBanner/index.js +28 -14
  149. package/lib-next/theme/EditThisPage/index.js +6 -1
  150. package/lib-next/theme/ErrorPageContent.js +35 -0
  151. package/lib-next/theme/Footer/index.js +17 -4
  152. package/lib-next/theme/Heading/index.js +25 -29
  153. package/lib-next/theme/Heading/styles.css +5 -6
  154. package/lib-next/theme/Heading/styles.module.css +9 -5
  155. package/lib-next/theme/IconArrow/index.js +2 -2
  156. package/lib-next/theme/IconClose/index.js +23 -0
  157. package/lib-next/theme/IconEdit/index.js +2 -2
  158. package/lib-next/theme/IconExternalLink/index.js +2 -2
  159. package/lib-next/theme/IconLanguage/index.js +2 -2
  160. package/lib-next/theme/IconMenu/index.js +2 -2
  161. package/lib-next/theme/LastUpdated/index.js +3 -2
  162. package/lib-next/theme/Layout/index.js +3 -1
  163. package/lib-next/theme/LayoutHead/index.js +18 -23
  164. package/lib-next/theme/LayoutProviders/index.js +8 -5
  165. package/lib-next/theme/Logo/index.js +25 -21
  166. package/lib-next/theme/MDXComponents/index.js +34 -7
  167. package/lib-next/theme/MDXComponents/styles.css +11 -0
  168. package/lib-next/theme/MDXPage/index.js +10 -2
  169. package/lib-next/theme/Navbar/index.js +62 -34
  170. package/lib-next/theme/Navbar/styles.module.css +3 -39
  171. package/lib-next/theme/NavbarItem/DefaultNavbarItem.js +45 -143
  172. package/lib-next/theme/NavbarItem/DocNavbarItem.js +7 -7
  173. package/lib-next/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +31 -19
  174. package/lib-next/theme/NavbarItem/DropdownNavbarItem.js +159 -0
  175. package/lib-next/theme/NavbarItem/{LocaleDropdownNavbarItem.js → LocaleDropdownNavbarItem/index.js} +4 -12
  176. package/lib-next/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
  177. package/lib-next/theme/NavbarItem/index.js +25 -12
  178. package/lib-next/theme/{SearchMetadatas → SearchMetadata}/index.js +1 -1
  179. package/lib-next/theme/Seo/index.js +11 -7
  180. package/lib-next/theme/TOC/index.js +12 -36
  181. package/lib-next/theme/TOC/styles.module.css +1 -1
  182. package/lib-next/theme/TOCCollapsible/index.js +13 -4
  183. package/lib-next/theme/TOCCollapsible/styles.module.css +1 -0
  184. package/lib-next/theme/TOCInline/index.js +10 -28
  185. package/lib-next/theme/TOCItems/index.js +85 -0
  186. package/lib-next/theme/Tabs/__tests__/index.test.js +142 -0
  187. package/lib-next/theme/Tabs/index.js +91 -43
  188. package/lib-next/theme/Tabs/styles.module.css +0 -13
  189. package/lib-next/theme/Tag/index.js +27 -0
  190. package/lib-next/theme/Tag/styles.module.css +70 -0
  191. package/lib-next/theme/TagsListByLetter/index.js +42 -0
  192. package/lib-next/theme/TagsListByLetter/styles.module.css +11 -0
  193. package/lib-next/theme/TagsListInline/index.js +31 -0
  194. package/lib-next/theme/TagsListInline/styles.module.css +15 -0
  195. package/lib-next/theme/ThemeProvider/index.js +10 -7
  196. package/lib-next/theme/ThemedImage/index.js +5 -5
  197. package/lib-next/theme/Toggle/index.js +34 -37
  198. package/lib-next/theme/Toggle/styles.module.css +91 -3
  199. package/lib-next/theme/UserPreferencesProvider/index.js +9 -6
  200. package/lib-next/theme/hooks/useHideableNavbar.js +31 -44
  201. package/lib-next/theme/hooks/useTheme.js +4 -5
  202. package/lib-next/theme/hooks/useWindowSize.js +2 -6
  203. package/lib-next/theme/prism-include-languages.js +2 -1
  204. package/lib-next/theme-classic.d.ts +806 -0
  205. package/lib-next/translations.js +6 -10
  206. package/lib-next/types.d.ts +0 -629
  207. package/lib-next/validateThemeConfig.js +141 -116
  208. package/package.json +27 -24
  209. package/src/__tests__/validateThemeConfig.test.js +277 -3
  210. package/src/admonitions.css +35 -0
  211. package/src/deps.d.ts +13 -0
  212. package/src/index.ts +23 -17
  213. package/src/{prism-include-languages.js → prism-include-languages.ts} +0 -0
  214. package/src/theme/AnnouncementBar/index.tsx +8 -12
  215. package/src/theme/AnnouncementBar/styles.module.css +23 -32
  216. package/src/theme/BackToTopButton/index.tsx +142 -0
  217. package/src/theme/BackToTopButton/styles.module.css +42 -0
  218. package/src/theme/BlogArchivePage/index.tsx +91 -0
  219. package/src/theme/BlogLayout/index.tsx +44 -0
  220. package/src/theme/BlogListPage/index.tsx +18 -25
  221. package/src/theme/BlogPostAuthor/index.tsx +49 -0
  222. package/src/theme/BlogPostAuthor/styles.module.css +12 -0
  223. package/src/theme/BlogPostAuthors/index.tsx +39 -0
  224. package/src/theme/BlogPostAuthors/styles.module.css +11 -0
  225. package/src/theme/BlogPostItem/index.tsx +70 -80
  226. package/src/theme/BlogPostPage/index.tsx +72 -35
  227. package/src/theme/BlogSidebar/index.tsx +11 -13
  228. package/src/theme/BlogSidebar/styles.module.css +2 -2
  229. package/src/theme/BlogTagsListPage/index.tsx +14 -57
  230. package/src/theme/BlogTagsPostsPage/index.tsx +29 -39
  231. package/src/theme/CodeBlock/index.tsx +21 -151
  232. package/src/theme/CodeBlock/styles.module.css +6 -9
  233. package/src/theme/Details/index.tsx +24 -0
  234. package/src/theme/Details/styles.module.css +13 -0
  235. package/src/theme/DocCard/index.tsx +100 -0
  236. package/src/theme/DocCard/styles.module.css +43 -0
  237. package/src/theme/DocCardList/index.tsx +27 -0
  238. package/src/theme/DocCategoryGeneratedIndexPage/index.tsx +53 -0
  239. package/src/theme/DocCategoryGeneratedIndexPage/styles.module.css +18 -0
  240. package/src/theme/DocItem/index.tsx +30 -60
  241. package/src/theme/DocItem/styles.module.css +2 -11
  242. package/src/theme/DocItemFooter/index.tsx +91 -0
  243. package/src/theme/DocItemFooter/styles.module.css +18 -0
  244. package/src/theme/DocPage/index.tsx +44 -22
  245. package/src/theme/DocPaginator/index.tsx +9 -13
  246. package/src/theme/DocSidebar/index.tsx +38 -39
  247. package/src/theme/DocSidebarItem/index.tsx +108 -49
  248. package/src/theme/DocSidebarItem/styles.module.css +4 -0
  249. package/src/theme/DocTagDocListPage/index.tsx +89 -0
  250. package/src/theme/DocTagsListPage/index.tsx +41 -0
  251. package/src/theme/DocVersionBadge/index.tsx +30 -0
  252. package/src/theme/DocVersionBanner/index.tsx +48 -21
  253. package/src/theme/EditThisPage/index.tsx +6 -1
  254. package/src/theme/ErrorPageContent.tsx +41 -0
  255. package/src/theme/Footer/index.tsx +20 -5
  256. package/src/theme/Heading/index.tsx +25 -31
  257. package/src/theme/Heading/styles.css +5 -6
  258. package/src/theme/Heading/styles.module.css +9 -5
  259. package/src/theme/IconArrow/index.tsx +2 -2
  260. package/src/theme/IconClose/index.tsx +26 -0
  261. package/src/theme/IconEdit/index.tsx +2 -2
  262. package/src/theme/IconExternalLink/index.tsx +2 -5
  263. package/src/theme/IconLanguage/index.tsx +2 -6
  264. package/src/theme/IconMenu/index.tsx +3 -3
  265. package/src/theme/LastUpdated/index.tsx +3 -2
  266. package/src/theme/Layout/index.tsx +3 -1
  267. package/src/theme/LayoutHead/index.tsx +18 -17
  268. package/src/theme/LayoutProviders/index.tsx +8 -5
  269. package/src/theme/Logo/index.tsx +21 -17
  270. package/src/theme/MDXComponents/index.tsx +39 -5
  271. package/src/theme/MDXComponents/styles.css +11 -0
  272. package/src/theme/MDXPage/index.tsx +10 -2
  273. package/src/theme/Navbar/index.tsx +62 -35
  274. package/src/theme/Navbar/styles.module.css +3 -39
  275. package/src/theme/NavbarItem/DefaultNavbarItem.tsx +42 -149
  276. package/src/theme/NavbarItem/DocNavbarItem.tsx +12 -16
  277. package/src/theme/NavbarItem/DocsVersionDropdownNavbarItem.tsx +33 -21
  278. package/src/theme/NavbarItem/DocsVersionNavbarItem.tsx +7 -3
  279. package/src/theme/NavbarItem/DropdownNavbarItem.tsx +181 -0
  280. package/src/theme/NavbarItem/{LocaleDropdownNavbarItem.tsx → LocaleDropdownNavbarItem/index.tsx} +8 -9
  281. package/src/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
  282. package/src/theme/NavbarItem/index.tsx +41 -16
  283. package/src/theme/{SearchMetadatas → SearchMetadata}/index.tsx +2 -2
  284. package/src/theme/Seo/index.tsx +7 -4
  285. package/src/theme/TOC/index.tsx +13 -35
  286. package/src/theme/TOC/styles.module.css +1 -1
  287. package/src/theme/TOCCollapsible/index.tsx +13 -4
  288. package/src/theme/TOCCollapsible/styles.module.css +1 -0
  289. package/src/theme/TOCInline/index.tsx +13 -32
  290. package/src/theme/TOCItems/index.tsx +96 -0
  291. package/src/theme/Tabs/__tests__/index.test.tsx +129 -0
  292. package/src/theme/Tabs/index.tsx +93 -49
  293. package/src/theme/Tabs/styles.module.css +0 -13
  294. package/src/theme/Tag/index.tsx +31 -0
  295. package/src/theme/Tag/styles.module.css +70 -0
  296. package/src/theme/TagsListByLetter/index.tsx +45 -0
  297. package/src/theme/TagsListByLetter/styles.module.css +11 -0
  298. package/src/theme/TagsListInline/index.tsx +35 -0
  299. package/src/theme/TagsListInline/styles.module.css +15 -0
  300. package/src/theme/ThemeProvider/index.tsx +6 -2
  301. package/src/theme/ThemedImage/index.tsx +5 -5
  302. package/src/theme/Toggle/index.tsx +36 -43
  303. package/src/theme/Toggle/styles.module.css +91 -3
  304. package/src/theme/UserPreferencesProvider/index.tsx +9 -6
  305. package/src/theme/hooks/useHideableNavbar.ts +32 -45
  306. package/src/theme/hooks/useTabGroupChoice.ts +2 -2
  307. package/src/theme/hooks/useTheme.ts +4 -5
  308. package/src/theme/hooks/useWindowSize.ts +2 -7
  309. package/src/theme/prism-include-languages.ts +3 -2
  310. package/src/theme-classic.d.ts +806 -0
  311. package/src/translations.ts +8 -10
  312. package/src/types.d.ts +0 -629
  313. package/src/{validateThemeConfig.js → validateThemeConfig.ts} +151 -96
  314. package/tsconfig.json +1 -2
  315. package/codeTranslations/README.md +0 -20
  316. package/codeTranslations/ar.json +0 -56
  317. package/codeTranslations/base.json +0 -110
  318. package/codeTranslations/bn.json +0 -56
  319. package/codeTranslations/da.json +0 -56
  320. package/codeTranslations/de.json +0 -56
  321. package/codeTranslations/es.json +0 -56
  322. package/codeTranslations/fa.json +0 -56
  323. package/codeTranslations/fil.json +0 -56
  324. package/codeTranslations/fr.json +0 -56
  325. package/codeTranslations/he.json +0 -56
  326. package/codeTranslations/hi.json +0 -56
  327. package/codeTranslations/ja.json +0 -56
  328. package/codeTranslations/ko.json +0 -56
  329. package/codeTranslations/pl.json +0 -56
  330. package/codeTranslations/pt-BR.json +0 -56
  331. package/codeTranslations/pt-PT.json +0 -56
  332. package/codeTranslations/ru.json +0 -56
  333. package/codeTranslations/tr.json +0 -56
  334. package/codeTranslations/vi.json +0 -56
  335. package/codeTranslations/zh-Hans.json +0 -56
  336. package/codeTranslations/zh-Hant.json +0 -56
  337. package/lib/theme/Toggle/styles.css +0 -103
  338. package/lib/theme/hooks/useContextualSearchFilters.js +0 -47
  339. package/lib/theme/hooks/useScrollPosition.js +0 -49
  340. package/lib/theme/hooks/useTOCHighlight.js +0 -87
  341. package/lib-next/theme/Toggle/styles.css +0 -103
  342. package/lib-next/theme/hooks/useContextualSearchFilters.js +0 -41
  343. package/lib-next/theme/hooks/useScrollPosition.js +0 -38
  344. package/lib-next/theme/hooks/useTOCHighlight.js +0 -84
  345. package/src/theme/Toggle/styles.css +0 -103
  346. package/src/theme/hooks/useContextualSearchFilters.ts +0 -52
  347. package/src/theme/hooks/useScrollPosition.ts +0 -45
  348. package/src/theme/hooks/useTOCHighlight.ts +0 -98
  349. package/update-code-translations.js +0 -242
  350. package/update-code-translations.test.js +0 -33
@@ -25,12 +25,16 @@ var _useLockBodyScroll = _interopRequireDefault(require("@theme/hooks/useLockBod
25
25
 
26
26
  var _useWindowSize = _interopRequireDefault(require("@theme/hooks/useWindowSize"));
27
27
 
28
+ var _useDocs = require("@theme/hooks/useDocs");
29
+
28
30
  var _NavbarItem = _interopRequireDefault(require("@theme/NavbarItem"));
29
31
 
30
32
  var _Logo = _interopRequireDefault(require("@theme/Logo"));
31
33
 
32
34
  var _IconMenu = _interopRequireDefault(require("@theme/IconMenu"));
33
35
 
36
+ var _IconClose = _interopRequireDefault(require("@theme/IconClose"));
37
+
34
38
  var _stylesModule = _interopRequireDefault(require("./styles.module.css"));
35
39
 
36
40
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -46,9 +50,15 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
46
50
  * LICENSE file in the root directory of this source tree.
47
51
  */
48
52
  // retrocompatible with v1
49
- const DefaultNavItemPosition = 'right'; // If split links by left/right
53
+ const DefaultNavItemPosition = 'right';
54
+
55
+ function useNavbarItems() {
56
+ // TODO temporary casting until ThemeConfig type is improved
57
+ return (0, _themeCommon.useThemeConfig)().navbar.items;
58
+ } // If split links by left/right
50
59
  // if position is unspecified, fallback to right (as v1)
51
60
 
61
+
52
62
  function splitNavItemsByPosition(items) {
53
63
  const leftItems = items.filter(item => {
54
64
  var _item$position;
@@ -71,7 +81,19 @@ function useMobileSidebar() {
71
81
 
72
82
  const shouldRender = windowSize === 'mobile'; // || windowSize === 'ssr';
73
83
 
74
- const [shown, setShown] = (0, _react.useState)(false);
84
+ const [shown, setShown] = (0, _react.useState)(false); // Close mobile sidebar on navigation pop
85
+ // Most likely firing when using the Android back button (but not only)
86
+
87
+ (0, _themeCommon.useHistoryPopHandler)(() => {
88
+ if (shown) {
89
+ setShown(false); // Should we prevent the navigation here?
90
+ // See https://github.com/facebook/docusaurus/pull/5462#issuecomment-911699846
91
+
92
+ return false; // prevent pop navigation
93
+ }
94
+
95
+ return undefined;
96
+ });
75
97
  const toggle = (0, _react.useCallback)(() => {
76
98
  setShown(s => !s);
77
99
  }, []);
@@ -116,12 +138,10 @@ function useSecondaryMenu({
116
138
  toggleSidebar
117
139
  });
118
140
  const previousContent = (0, _themeCommon.usePrevious)(content);
119
- const [shown, setShown] = (0, _react.useState)(() => {
120
- // /!\ content is set with useEffect,
121
- // so it's not available on mount anyway
122
- // "return !!content" => always returns false
123
- return false;
124
- }); // When content is become available for the first time (set in useEffect)
141
+ const [shown, setShown] = (0, _react.useState)(() => // /!\ content is set with useEffect,
142
+ // so it's not available on mount anyway
143
+ // "return !!content" => always returns false
144
+ false); // When content is become available for the first time (set in useEffect)
125
145
  // we set this content to be shown!
126
146
 
127
147
  (0, _react.useEffect)(() => {
@@ -159,11 +179,7 @@ function NavbarMobileSidebar({
159
179
  toggleSidebar
160
180
  }) {
161
181
  (0, _useLockBodyScroll.default)(sidebarShown);
162
- const {
163
- navbar: {
164
- items
165
- }
166
- } = (0, _themeCommon.useThemeConfig)();
182
+ const items = useNavbarItems();
167
183
  const colorModeToggle = useColorModeToggle();
168
184
  const secondaryMenu = useSecondaryMenu({
169
185
  sidebarShown,
@@ -172,25 +188,27 @@ function NavbarMobileSidebar({
172
188
  return <div className="navbar-sidebar">
173
189
  <div className="navbar-sidebar__brand">
174
190
  <_Logo.default className="navbar__brand" imageClassName="navbar__logo" titleClassName="navbar__title" />
175
- {!colorModeToggle.disabled && sidebarShown && <_Toggle.default checked={colorModeToggle.isDarkTheme} onChange={colorModeToggle.toggle} />}
191
+ {!colorModeToggle.disabled && <_Toggle.default className={_stylesModule.default.navbarSidebarToggle} checked={colorModeToggle.isDarkTheme} onChange={colorModeToggle.toggle} />}
192
+ <button type="button" className="clean-btn navbar-sidebar__close" onClick={toggleSidebar}>
193
+ <_IconClose.default color="var(--ifm-color-emphasis-600)" className={_stylesModule.default.navbarSidebarCloseSvg} />
194
+ </button>
176
195
  </div>
177
196
 
178
- <div className={(0, _clsx.default)('navbar-sidebar__items', _stylesModule.default.menuWrapper, {
179
- [_stylesModule.default.menuWrapperSecondaryMenuShown]: secondaryMenu.shown
197
+ <div className={(0, _clsx.default)('navbar-sidebar__items', {
198
+ 'navbar-sidebar__items--show-secondary': secondaryMenu.shown
180
199
  })}>
181
- <div className="menu">
200
+ <div className="navbar-sidebar__item menu">
182
201
  <ul className="menu__list">
183
- {items.map((item, i) => <_NavbarItem.default mobile {...item} // TODO fix typing
184
- onClick={toggleSidebar} key={i} />)}
202
+ {items.map((item, i) => <_NavbarItem.default mobile {...item} onClick={toggleSidebar} key={i} />)}
185
203
  </ul>
186
204
  </div>
187
205
 
188
- <div className={_stylesModule.default.secondaryMenu}>
189
- <button type="button" className={(0, _clsx.default)('clean-btn', _stylesModule.default.backButton)} onClick={secondaryMenu.hide}>
190
- <_Translate.default id="theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel" description="The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)">
191
- ← Back to main menu
192
- </_Translate.default>
193
- </button>
206
+ <div className="navbar-sidebar__item menu">
207
+ {items.length > 0 && <button type="button" className="clean-btn navbar-sidebar__back" onClick={secondaryMenu.hide}>
208
+ <_Translate.default id="theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel" description="The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)">
209
+ ← Back to main menu
210
+ </_Translate.default>
211
+ </button>}
194
212
  {secondaryMenu.content}
195
213
  </div>
196
214
  </div>
@@ -200,17 +218,18 @@ function NavbarMobileSidebar({
200
218
  function Navbar() {
201
219
  const {
202
220
  navbar: {
203
- items,
204
221
  hideOnScroll,
205
222
  style
206
223
  }
207
224
  } = (0, _themeCommon.useThemeConfig)();
208
225
  const mobileSidebar = useMobileSidebar();
209
226
  const colorModeToggle = useColorModeToggle();
227
+ const activeDocPlugin = (0, _useDocs.useActivePlugin)();
210
228
  const {
211
229
  navbarRef,
212
230
  isNavbarVisible
213
231
  } = (0, _useHideableNavbar.default)(hideOnScroll);
232
+ const items = useNavbarItems();
214
233
  const hasSearchNavbarItem = items.some(item => item.type === 'search');
215
234
  const {
216
235
  leftItems,
@@ -225,7 +244,7 @@ function Navbar() {
225
244
  })}>
226
245
  <div className="navbar__inner">
227
246
  <div className="navbar__items">
228
- {(items === null || items === void 0 ? void 0 : items.length) > 0 && <button aria-label="Navigation bar toggle" className="navbar__toggle clean-btn" type="button" tabIndex={0} onClick={mobileSidebar.toggle} onKeyDown={mobileSidebar.toggle}>
247
+ {((items === null || items === void 0 ? void 0 : items.length) > 0 || activeDocPlugin) && <button aria-label="Navigation bar toggle" className="navbar__toggle clean-btn" type="button" tabIndex={0} onClick={mobileSidebar.toggle} onKeyDown={mobileSidebar.toggle}>
229
248
  <_IconMenu.default />
230
249
  </button>}
231
250
  <_Logo.default className="navbar__brand" imageClassName="navbar__logo" titleClassName="navbar__title" />
@@ -8,7 +8,7 @@
8
8
  /*
9
9
  Hide toggle in small viewports
10
10
  */
11
- @media screen and (max-width: 997px) {
11
+ @media (max-width: 996px) {
12
12
  .toggle {
13
13
  display: none;
14
14
  }
@@ -22,42 +22,6 @@ Hide toggle in small viewports
22
22
  transform: translate3d(0, calc(-100% - 2px), 0);
23
23
  }
24
24
 
25
- :global(.navbar-sidebar__items) {
26
- padding: 0;
27
- }
28
-
29
- :global(.navbar-sidebar) {
30
- overflow-x: hidden;
31
- }
32
-
33
- .menuWrapper {
34
- display: flex;
35
- width: calc(var(--ifm-navbar-sidebar-width));
36
- transition: transform 0.2s cubic-bezier(0.4, 0, 0.2, 1);
37
- transform: translateZ(0);
38
- }
39
-
40
- .menuWrapperSecondaryMenuShown {
41
- transform: translate3d(calc((var(--ifm-navbar-sidebar-width)) * -1), 0, 0);
42
- }
43
-
44
- .menuWrapper > div {
45
- flex-shrink: 0;
46
- width: calc(var(--ifm-navbar-sidebar-width));
47
- font-weight: var(--ifm-font-weight-semibold);
48
- padding: 0.5rem;
49
- }
50
-
51
- .backButton {
52
- width: calc(100% + 1rem);
53
- margin: 0 0 0.7rem -0.5rem;
54
- text-align: left;
55
- font-size: 15px;
56
- padding: 0.6rem 1.5rem;
57
- background: var(--ifm-menu-color-background-active);
58
- font-weight: var(--ifm-button-font-weight);
59
- }
60
-
61
- .secondaryMenu {
62
- padding-top: 0 !important;
25
+ .navbarSidebarToggle {
26
+ margin-right: 1rem;
63
27
  }
@@ -3,9 +3,10 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ exports.NavLink = NavLink;
6
7
  exports.default = void 0;
7
8
 
8
- var _react = _interopRequireWildcard(require("react"));
9
+ var _react = _interopRequireDefault(require("react"));
9
10
 
10
11
  var _clsx = _interopRequireDefault(require("clsx"));
11
12
 
@@ -13,19 +14,15 @@ var _Link = _interopRequireDefault(require("@docusaurus/Link"));
13
14
 
14
15
  var _useBaseUrl = _interopRequireDefault(require("@docusaurus/useBaseUrl"));
15
16
 
16
- var _router = require("@docusaurus/router");
17
-
18
- var _themeCommon = require("@docusaurus/theme-common");
19
-
20
17
  var _IconExternalLink = _interopRequireDefault(require("@theme/IconExternalLink"));
21
18
 
22
19
  var _isInternalUrl = _interopRequireDefault(require("@docusaurus/isInternalUrl"));
23
20
 
24
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
+ var _themeCommon = require("@docusaurus/theme-common");
25
22
 
26
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
23
+ var _index = require("./index");
27
24
 
28
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
25
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
29
26
 
30
27
  /**
31
28
  * Copyright (c) Facebook, Inc. and its affiliates.
@@ -41,10 +38,12 @@ function NavLink({
41
38
  to,
42
39
  href,
43
40
  label,
44
- activeClassName = 'navbar__link--active',
41
+ activeClassName = '',
45
42
  prependBaseUrlToHref,
46
43
  ...props
47
44
  }) {
45
+ var _props$className;
46
+
48
47
  // TODO all this seems hacky
49
48
  // {to: 'version'} should probably be forbidden, in favor of {to: '/version'}
50
49
  const toUrl = (0, _useBaseUrl.default)(to);
@@ -58,10 +57,10 @@ function NavLink({
58
57
  href: prependBaseUrlToHref ? normalizedHref : href
59
58
  } : {
60
59
  isNavLink: true,
61
- activeClassName,
60
+ activeClassName: !((_props$className = props.className) !== null && _props$className !== void 0 && _props$className.includes(activeClassName)) ? activeClassName : '',
62
61
  to: toUrl,
63
62
  ...(activeBasePath || activeBaseRegex ? {
64
- isActive: (_match, location) => activeBaseRegex ? new RegExp(activeBaseRegex).test(location.pathname) : location.pathname.startsWith(activeBaseUrl)
63
+ isActive: (_match, location) => activeBaseRegex ? (0, _themeCommon.isRegexpStringMatch)(activeBaseRegex, location.pathname) : location.pathname.startsWith(activeBaseUrl)
65
64
  } : null)
66
65
  }} {...props}>
67
66
  {isExternalLink ? <span>
@@ -74,136 +73,40 @@ function NavLink({
74
73
  </_Link.default>;
75
74
  }
76
75
 
77
- function NavItemDesktop({
78
- items,
79
- position,
76
+ function DefaultNavbarItemDesktop({
80
77
  className,
78
+ isDropdownItem = false,
81
79
  ...props
82
80
  }) {
83
- var _props$children;
84
-
85
- const dropdownRef = (0, _react.useRef)(null);
86
- const dropdownMenuRef = (0, _react.useRef)(null);
87
- const [showDropdown, setShowDropdown] = (0, _react.useState)(false);
88
- (0, _react.useEffect)(() => {
89
- const handleClickOutside = event => {
90
- if (!dropdownRef.current || dropdownRef.current.contains(event.target)) {
91
- return;
92
- }
93
-
94
- setShowDropdown(false);
95
- };
96
-
97
- document.addEventListener('mousedown', handleClickOutside);
98
- document.addEventListener('touchstart', handleClickOutside);
99
- return () => {
100
- document.removeEventListener('mousedown', handleClickOutside);
101
- document.removeEventListener('touchstart', handleClickOutside);
102
- };
103
- }, [dropdownRef]);
104
-
105
- const navLinkClassNames = (extraClassName, isDropdownItem = false) => (0, _clsx.default)({
106
- 'navbar__item navbar__link': !isDropdownItem,
107
- dropdown__link: isDropdownItem
108
- }, extraClassName);
109
-
110
- if (!items) {
111
- return <NavLink className={navLinkClassNames(className)} {...props} />;
81
+ const element = <NavLink className={(0, _clsx.default)(isDropdownItem ? 'dropdown__link' : 'navbar__item navbar__link', className)} {...props} />;
82
+
83
+ if (isDropdownItem) {
84
+ return <li>{element}</li>;
112
85
  }
113
86
 
114
- return <div ref={dropdownRef} className={(0, _clsx.default)('navbar__item', 'dropdown', 'dropdown--hoverable', {
115
- 'dropdown--left': position === 'left',
116
- 'dropdown--right': position === 'right',
117
- 'dropdown--show': showDropdown
118
- })}>
119
- <NavLink className={navLinkClassNames(className)} {...props} onClick={props.to ? undefined : e => e.preventDefault()} onKeyDown={e => {
120
- if (e.key === 'Enter') {
121
- e.preventDefault();
122
- setShowDropdown(!showDropdown);
123
- }
124
- }}>
125
- {(_props$children = props.children) !== null && _props$children !== void 0 ? _props$children : props.label}
126
- </NavLink>
127
- <ul ref={dropdownMenuRef} className="dropdown__menu">
128
- {items.map(({
129
- className: childItemClassName,
130
- ...childItemProps
131
- }, i) => <li key={i}>
132
- <NavLink onKeyDown={e => {
133
- if (i === items.length - 1 && e.key === 'Tab') {
134
- e.preventDefault();
135
- setShowDropdown(false);
136
- const nextNavbarItem = dropdownRef.current.nextElementSibling;
137
-
138
- if (nextNavbarItem) {
139
- nextNavbarItem.focus();
140
- }
141
- }
142
- }} activeClassName={dropdownLinkActiveClass} className={navLinkClassNames(childItemClassName, true)} {...childItemProps} />
143
- </li>)}
144
- </ul>
145
- </div>;
87
+ return element;
146
88
  }
147
89
 
148
- function NavItemMobile({
149
- items,
90
+ function DefaultNavbarItemMobile({
150
91
  className,
151
- position: _position,
152
- // Need to destructure position from props so that it doesn't get passed on.
92
+ isDropdownItem: _isDropdownItem,
153
93
  ...props
154
94
  }) {
155
- var _props$children2;
156
-
157
- const {
158
- pathname
159
- } = (0, _router.useLocation)();
160
- const {
161
- collapsed,
162
- toggleCollapsed
163
- } = (0, _themeCommon.useCollapsible)({
164
- initialState: () => {
165
- var _items$some;
166
-
167
- return (_items$some = !(items !== null && items !== void 0 && items.some(item => (0, _themeCommon.isSamePath)(item.to, pathname)))) !== null && _items$some !== void 0 ? _items$some : true;
168
- }
169
- });
170
-
171
- const navLinkClassNames = (extraClassName, isSubList = false) => (0, _clsx.default)('menu__link', {
172
- 'menu__link--sublist': isSubList
173
- }, extraClassName);
174
-
175
- if (!items) {
176
- return <li className="menu__list-item">
177
- <NavLink className={navLinkClassNames(className)} {...props} />
178
- </li>;
179
- }
180
-
181
- return <li className={(0, _clsx.default)('menu__list-item', {
182
- 'menu__list-item--collapsed': collapsed
183
- })}>
184
- <NavLink role="button" className={navLinkClassNames(className, true)} {...props} onClick={e => {
185
- e.preventDefault();
186
- toggleCollapsed();
187
- }}>
188
- {(_props$children2 = props.children) !== null && _props$children2 !== void 0 ? _props$children2 : props.label}
189
- </NavLink>
190
- <_themeCommon.Collapsible as="ul" className="menu__list" collapsed={collapsed}>
191
- {items.map(({
192
- className: childItemClassName,
193
- ...childItemProps
194
- }, i) => <li className="menu__list-item" key={i}>
195
- <NavLink activeClassName="menu__link--active" className={navLinkClassNames(childItemClassName)} {...childItemProps} onClick={props.onClick} />
196
- </li>)}
197
- </_themeCommon.Collapsible>
95
+ return <li className="menu__list-item">
96
+ <NavLink className={(0, _clsx.default)('menu__link', className)} {...props} />
198
97
  </li>;
199
98
  }
200
99
 
201
100
  function DefaultNavbarItem({
202
101
  mobile = false,
102
+ position: _position,
103
+ // Need to destructure position from props so that it doesn't get passed on.
203
104
  ...props
204
105
  }) {
205
- const Comp = mobile ? NavItemMobile : NavItemDesktop;
206
- return <Comp {...props} />;
106
+ var _props$activeClassNam;
107
+
108
+ const Comp = mobile ? DefaultNavbarItemMobile : DefaultNavbarItemDesktop;
109
+ return <Comp {...props} activeClassName={(_props$activeClassNam = props.activeClassName) !== null && _props$activeClassNam !== void 0 ? _props$activeClassNam : (0, _index.getInfimaActiveClassName)(mobile)} />;
207
110
  }
208
111
 
209
112
  var _default = DefaultNavbarItem;
@@ -13,9 +13,9 @@ var _useDocs = require("@theme/hooks/useDocs");
13
13
 
14
14
  var _clsx = _interopRequireDefault(require("clsx"));
15
15
 
16
- var _themeCommon = require("@docusaurus/theme-common");
16
+ var _index = require("./index");
17
17
 
18
- var _utilsCommon = require("@docusaurus/utils-common");
18
+ var _themeCommon = require("@docusaurus/theme-common");
19
19
 
20
20
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
21
 
@@ -26,8 +26,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
26
26
  * LICENSE file in the root directory of this source tree.
27
27
  */
28
28
  function getDocInVersions(versions, docId) {
29
- // vanilla-js flatten, TODO replace soon by ES flat() / flatMap()
30
- const allDocs = [].concat(...versions.map(version => version.docs));
29
+ const allDocs = versions.flatMap(version => version.docs);
31
30
  const doc = allDocs.find(versionDoc => versionDoc.id === docId);
32
31
 
33
32
  if (!doc) {
@@ -41,7 +40,6 @@ Available doc ids are:\n- ${docIds}`);
41
40
 
42
41
  function DocNavbarItem({
43
42
  docId,
44
- activeSidebarClassName,
45
43
  label: staticLabel,
46
44
  docsPluginId,
47
45
  ...props
@@ -55,9 +53,10 @@ function DocNavbarItem({
55
53
  } = (0, _themeCommon.useDocsPreferredVersion)(docsPluginId);
56
54
  const latestVersion = (0, _useDocs.useLatestVersion)(docsPluginId); // Versions used to look for the doc to link to, ordered + no duplicate
57
55
 
58
- const versions = (0, _utilsCommon.uniq)([activeVersion, preferredVersion, latestVersion].filter(Boolean));
56
+ const versions = (0, _themeCommon.uniq)([activeVersion, preferredVersion, latestVersion].filter(Boolean));
59
57
  const doc = getDocInVersions(versions, docId);
58
+ const activeDocInfimaClassName = (0, _index.getInfimaActiveClassName)(props.mobile);
60
59
  return <_DefaultNavbarItem.default exact {...props} className={(0, _clsx.default)(props.className, {
61
- [activeSidebarClassName]: activeDoc && activeDoc.sidebar === doc.sidebar
62
- })} label={staticLabel !== null && staticLabel !== void 0 ? staticLabel : doc.id} to={doc.path} />;
60
+ [activeDocInfimaClassName]: (activeDoc === null || activeDoc === void 0 ? void 0 : activeDoc.sidebar) && activeDoc.sidebar === doc.sidebar
61
+ })} activeClassName={activeDocInfimaClassName} label={staticLabel !== null && staticLabel !== void 0 ? staticLabel : doc.id} to={doc.path} />;
63
62
  }
@@ -9,10 +9,14 @@ var _react = _interopRequireDefault(require("react"));
9
9
 
10
10
  var _DefaultNavbarItem = _interopRequireDefault(require("@theme/NavbarItem/DefaultNavbarItem"));
11
11
 
12
+ var _DropdownNavbarItem = _interopRequireDefault(require("@theme/NavbarItem/DropdownNavbarItem"));
13
+
12
14
  var _useDocs = require("@theme/hooks/useDocs");
13
15
 
14
16
  var _themeCommon = require("@docusaurus/theme-common");
15
17
 
18
+ var _Translate = require("@docusaurus/Translate");
19
+
16
20
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
21
 
18
22
  /**
@@ -56,21 +60,24 @@ function DocsVersionDropdownNavbarItem({
56
60
  }
57
61
  };
58
62
  });
59
- const items = [...dropdownItemsBefore, ...versionLinks, ...dropdownItemsAfter]; // We don't want to render a version dropdown with 0 or 1 item
60
- // If we build the site with a single docs version (onlyIncludeVersions: ['1.0.0'])
61
- // We'd rather render a button instead of a dropdown
62
-
63
- if (items.length <= 1) {
64
- return undefined;
65
- }
66
-
67
- return items;
63
+ return [...dropdownItemsBefore, ...versionLinks, ...dropdownItemsAfter];
68
64
  }
69
65
 
70
66
  const items = getItems();
71
67
  const dropdownVersion = (_ref = (_activeDocContext$act = activeDocContext.activeVersion) !== null && _activeDocContext$act !== void 0 ? _activeDocContext$act : preferredVersion) !== null && _ref !== void 0 ? _ref : latestVersion; // Mobile dropdown is handled a bit differently
72
68
 
73
- const dropdownLabel = mobile && items ? 'Versions' : dropdownVersion.label;
74
- const dropdownTo = mobile && items ? undefined : getVersionMainDoc(dropdownVersion).path;
75
- return <_DefaultNavbarItem.default {...props} mobile={mobile} label={dropdownLabel} to={dropdownTo} items={items} isActive={dropdownActiveClassDisabled ? () => false : undefined} />;
69
+ const dropdownLabel = mobile && items ? (0, _Translate.translate)({
70
+ id: 'theme.navbar.mobileVersionsDropdown.label',
71
+ message: 'Versions',
72
+ description: 'The label for the navbar versions dropdown on mobile view'
73
+ }) : dropdownVersion.label;
74
+ const dropdownTo = mobile && items ? undefined : getVersionMainDoc(dropdownVersion).path; // We don't want to render a version dropdown with 0 or 1 item
75
+ // If we build the site with a single docs version (onlyIncludeVersions: ['1.0.0'])
76
+ // We'd rather render a button instead of a dropdown
77
+
78
+ if (items.length <= 1) {
79
+ return <_DefaultNavbarItem.default {...props} mobile={mobile} label={dropdownLabel} to={dropdownTo} isActive={dropdownActiveClassDisabled ? () => false : undefined} />;
80
+ }
81
+
82
+ return <_DropdownNavbarItem.default {...props} mobile={mobile} label={dropdownLabel} to={dropdownTo} items={items} isActive={dropdownActiveClassDisabled ? () => false : undefined} />;
76
83
  }
@@ -0,0 +1,155 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _react = _interopRequireWildcard(require("react"));
9
+
10
+ var _clsx = _interopRequireDefault(require("clsx"));
11
+
12
+ var _themeCommon = require("@docusaurus/theme-common");
13
+
14
+ var _DefaultNavbarItem = require("@theme/NavbarItem/DefaultNavbarItem");
15
+
16
+ var _NavbarItem = _interopRequireDefault(require("@theme/NavbarItem"));
17
+
18
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
+
20
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
21
+
22
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
23
+
24
+ /**
25
+ * Copyright (c) Facebook, Inc. and its affiliates.
26
+ *
27
+ * This source code is licensed under the MIT license found in the
28
+ * LICENSE file in the root directory of this source tree.
29
+ */
30
+ const dropdownLinkActiveClass = 'dropdown__link--active';
31
+
32
+ function isItemActive(item, localPathname) {
33
+ if ((0, _themeCommon.isSamePath)(item.to, localPathname)) {
34
+ return true;
35
+ }
36
+
37
+ if ((0, _themeCommon.isRegexpStringMatch)(item.activeBaseRegex, localPathname)) {
38
+ return true;
39
+ }
40
+
41
+ if (item.activeBasePath && localPathname.startsWith(item.activeBasePath)) {
42
+ return true;
43
+ }
44
+
45
+ return false;
46
+ }
47
+
48
+ function containsActiveItems(items, localPathname) {
49
+ return items.some(item => isItemActive(item, localPathname));
50
+ }
51
+
52
+ function DropdownNavbarItemDesktop({
53
+ items,
54
+ position,
55
+ className,
56
+ ...props
57
+ }) {
58
+ var _props$children;
59
+
60
+ const dropdownRef = (0, _react.useRef)(null);
61
+ const dropdownMenuRef = (0, _react.useRef)(null);
62
+ const [showDropdown, setShowDropdown] = (0, _react.useState)(false);
63
+ (0, _react.useEffect)(() => {
64
+ const handleClickOutside = event => {
65
+ if (!dropdownRef.current || dropdownRef.current.contains(event.target)) {
66
+ return;
67
+ }
68
+
69
+ setShowDropdown(false);
70
+ };
71
+
72
+ document.addEventListener('mousedown', handleClickOutside);
73
+ document.addEventListener('touchstart', handleClickOutside);
74
+ return () => {
75
+ document.removeEventListener('mousedown', handleClickOutside);
76
+ document.removeEventListener('touchstart', handleClickOutside);
77
+ };
78
+ }, [dropdownRef]);
79
+ return <div ref={dropdownRef} className={(0, _clsx.default)('navbar__item', 'dropdown', 'dropdown--hoverable', {
80
+ 'dropdown--right': position === 'right',
81
+ 'dropdown--show': showDropdown
82
+ })}>
83
+ <_DefaultNavbarItem.NavLink href={props.to ? undefined : '#'} className={(0, _clsx.default)('navbar__link', className)} {...props} onClick={props.to ? undefined : e => e.preventDefault()} onKeyDown={e => {
84
+ if (e.key === 'Enter') {
85
+ e.preventDefault();
86
+ setShowDropdown(!showDropdown);
87
+ }
88
+ }}>
89
+ {(_props$children = props.children) !== null && _props$children !== void 0 ? _props$children : props.label}
90
+ </_DefaultNavbarItem.NavLink>
91
+ <ul ref={dropdownMenuRef} className="dropdown__menu">
92
+ {items.map((childItemProps, i) => <_NavbarItem.default isDropdownItem onKeyDown={e => {
93
+ if (i === items.length - 1 && e.key === 'Tab') {
94
+ e.preventDefault();
95
+ setShowDropdown(false);
96
+ const nextNavbarItem = dropdownRef.current.nextElementSibling;
97
+
98
+ if (nextNavbarItem) {
99
+ nextNavbarItem.focus();
100
+ }
101
+ }
102
+ }} activeClassName={dropdownLinkActiveClass} {...childItemProps} key={i} />)}
103
+ </ul>
104
+ </div>;
105
+ }
106
+
107
+ function DropdownNavbarItemMobile({
108
+ items,
109
+ className,
110
+ position: _position,
111
+ // Need to destructure position from props so that it doesn't get passed on.
112
+ ...props
113
+ }) {
114
+ var _props$children2;
115
+
116
+ const localPathname = (0, _themeCommon.useLocalPathname)();
117
+ const containsActive = containsActiveItems(items, localPathname);
118
+ const {
119
+ collapsed,
120
+ toggleCollapsed,
121
+ setCollapsed
122
+ } = (0, _themeCommon.useCollapsible)({
123
+ initialState: () => !containsActive
124
+ }); // Expand/collapse if any item active after a navigation
125
+
126
+ (0, _react.useEffect)(() => {
127
+ if (containsActive) {
128
+ setCollapsed(!containsActive);
129
+ }
130
+ }, [localPathname, containsActive, setCollapsed]);
131
+ return <li className={(0, _clsx.default)('menu__list-item', {
132
+ 'menu__list-item--collapsed': collapsed
133
+ })}>
134
+ <_DefaultNavbarItem.NavLink role="button" className={(0, _clsx.default)('menu__link menu__link--sublist', className)} {...props} onClick={e => {
135
+ e.preventDefault();
136
+ toggleCollapsed();
137
+ }}>
138
+ {(_props$children2 = props.children) !== null && _props$children2 !== void 0 ? _props$children2 : props.label}
139
+ </_DefaultNavbarItem.NavLink>
140
+ <_themeCommon.Collapsible lazy as="ul" className="menu__list" collapsed={collapsed}>
141
+ {items.map((childItemProps, i) => <_NavbarItem.default mobile isDropdownItem onClick={props.onClick} activeClassName="menu__link--active" {...childItemProps} key={i} />)}
142
+ </_themeCommon.Collapsible>
143
+ </li>;
144
+ }
145
+
146
+ function DropdownNavbarItem({
147
+ mobile = false,
148
+ ...props
149
+ }) {
150
+ const Comp = mobile ? DropdownNavbarItemMobile : DropdownNavbarItemDesktop;
151
+ return <Comp {...props} />;
152
+ }
153
+
154
+ var _default = DropdownNavbarItem;
155
+ exports.default = _default;