@digigov/ui 0.30.2 → 0.31.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 (313) hide show
  1. package/CHANGELOG.md +16 -1
  2. package/admin/AccessibilityMenu/index.d.ts +13 -0
  3. package/admin/AccessibilityMenu/index.js +170 -0
  4. package/admin/AutoComplete/index.d.ts +2 -2
  5. package/admin/Chip/index.d.ts +1 -0
  6. package/admin/Chip/index.js +14 -0
  7. package/admin/Drawer/__stories__/Default.js +18 -7
  8. package/admin/Dropdown/__stories__/AlignRight.js +0 -2
  9. package/admin/Dropdown/__stories__/Default.js +0 -2
  10. package/admin/Dropdown/__stories__/PlacementTop.js +0 -2
  11. package/admin/FilterSection/index.d.ts +1 -2
  12. package/admin/FilterSection/index.js +4 -18
  13. package/admin/Modal/index.d.ts +2 -2
  14. package/admin/Modal/index.js +17 -12
  15. package/admin/Pagination/__stories__/Default.js +4 -7
  16. package/admin/Pagination/__stories__/PaginationSmall.js +2 -3
  17. package/app/Footer/__stories__/FooterAllInclusive.js +1 -0
  18. package/app/Footer/__stories__/FooterWithSecondaryNavigation.js +1 -0
  19. package/app/Header/__stories__/WithNavigation.js +10 -8
  20. package/app/QrCodeScanner/__stories__/Default.js +3 -3
  21. package/app/QrCodeViewer/QRCode.stories.d.ts +0 -1
  22. package/app/QrCodeViewer/index.d.ts +1 -2
  23. package/app/QrCodeViewer/index.js +10 -10
  24. package/app/ThemeOptionsForm/index.d.ts +2 -0
  25. package/app/ThemeOptionsForm/index.js +243 -0
  26. package/app/ThemePaletteForm/index.d.ts +2 -0
  27. package/app/{ThemeSelectorOptions → ThemePaletteForm}/index.js +9 -8
  28. package/app/index.d.ts +2 -1
  29. package/app/index.js +17 -4
  30. package/core/Accordion/index.d.ts +2 -2
  31. package/core/Accordion/index.js +7 -7
  32. package/core/Divider/__stories__/Default.js +5 -10
  33. package/core/ErrorSummary/__stories__/Default.js +3 -3
  34. package/core/ErrorSummary/__stories__/LinkedToCheckbox.js +3 -3
  35. package/core/ErrorSummary/__stories__/LinkedToField.js +3 -3
  36. package/core/ErrorSummary/__stories__/LinkedToInput.js +3 -3
  37. package/core/Link/__stories__/DarkBackground.js +6 -2
  38. package/core/Link/__stories__/DarkBackgroundNoUnderline.js +6 -2
  39. package/core/NavList/NavList.stories.d.ts +3 -1
  40. package/core/NavList/NavList.stories.js +32 -4
  41. package/core/NavList/NavList.stories.playwright.json +6 -6
  42. package/core/NavList/{NavListAuto.js → NavListAuto/NavListAuto.js} +11 -5
  43. package/core/NavList/{NavListBase.d.ts → NavListAuto/NavListBaseAuto.d.ts} +1 -1
  44. package/core/NavList/{NavListBase.js → NavListAuto/NavListBaseAuto.js} +6 -4
  45. package/core/NavList/{NavListContext.d.ts → NavListAuto/NavListContextAuto.d.ts} +7 -4
  46. package/core/NavList/{NavListContext.js → NavListAuto/NavListContextAuto.js} +23 -11
  47. package/core/NavList/NavListAuto/NavListItemAnchorAuto.d.ts +11 -0
  48. package/core/NavList/{NavListSubMenu.js → NavListAuto/NavListItemAnchorAuto.js} +25 -21
  49. package/core/NavList/{NavListItemAuto.js → NavListAuto/NavListItemAuto.js} +23 -20
  50. package/core/NavList/NavListAuto/NavListItemButtonAuto.d.ts +12 -0
  51. package/core/NavList/NavListAuto/NavListItemButtonAuto.js +50 -0
  52. package/core/NavList/NavListAuto/NavListMenuAuto.d.ts +11 -0
  53. package/core/NavList/NavListAuto/NavListMenuAuto.js +59 -0
  54. package/core/NavList/NavListAuto/NavListSubMenuAuto.d.ts +9 -0
  55. package/core/NavList/NavListAuto/NavListSubMenuAuto.js +46 -0
  56. package/core/NavList/NavListItem.js +6 -5
  57. package/core/NavList/NavListItemBase.d.ts +1 -1
  58. package/core/NavList/NavListItemBase.js +3 -3
  59. package/core/NavList/NavMenuContainerContentList.d.ts +3 -1
  60. package/core/NavList/NavMenuContainerContentList.js +76 -3
  61. package/core/NavList/__stories__/Default.js +19 -6
  62. package/core/NavList/__stories__/NavHorizontalLayout.js +17 -5
  63. package/core/NavList/__stories__/NavListEpathlaExample.js +24 -12
  64. package/core/NavList/__stories__/NavListHorizontalAutoExample.d.ts +2 -0
  65. package/core/NavList/__stories__/NavListHorizontalAutoExample.js +67 -0
  66. package/core/NavList/__stories__/NavListSecondaryAutoExample.d.ts +2 -0
  67. package/core/NavList/__stories__/NavListSecondaryAutoExample.js +281 -0
  68. package/core/NavList/__stories__/NavListVerticalAutoExample.d.ts +2 -0
  69. package/core/NavList/__stories__/NavListVerticalAutoExample.js +67 -0
  70. package/core/NavList/index.d.ts +2 -5
  71. package/core/NavList/index.js +5 -33
  72. package/core/NavList/types.d.ts +20 -10
  73. package/core/Tabs/__stories__/Default.js +5 -5
  74. package/core/Tabs/index.d.ts +2 -2
  75. package/core/Tabs/index.js +5 -7
  76. package/es/admin/AccessibilityMenu/index.js +13 -0
  77. package/es/admin/Chip/index.js +1 -0
  78. package/es/admin/Drawer/__stories__/Default.js +19 -8
  79. package/es/admin/Dropdown/__stories__/AlignRight.js +0 -2
  80. package/es/admin/Dropdown/__stories__/Default.js +0 -2
  81. package/es/admin/Dropdown/__stories__/PlacementTop.js +0 -2
  82. package/es/admin/FilterSection/index.js +1 -2
  83. package/es/admin/Modal/index.js +16 -11
  84. package/es/admin/Pagination/__stories__/Default.js +4 -7
  85. package/es/admin/Pagination/__stories__/PaginationSmall.js +2 -3
  86. package/es/app/Footer/__stories__/FooterAllInclusive.js +1 -0
  87. package/es/app/Footer/__stories__/FooterWithSecondaryNavigation.js +1 -0
  88. package/es/app/Header/__stories__/WithNavigation.js +10 -8
  89. package/es/app/QrCodeScanner/__stories__/Default.js +3 -3
  90. package/es/app/QrCodeViewer/index.js +8 -9
  91. package/es/app/ThemeOptionsForm/index.js +215 -0
  92. package/es/app/{ThemeSelectorOptions → ThemePaletteForm}/index.js +5 -4
  93. package/es/app/index.js +2 -1
  94. package/es/core/Accordion/index.js +7 -7
  95. package/es/core/Divider/__stories__/Default.js +5 -10
  96. package/es/core/ErrorSummary/__stories__/Default.js +3 -3
  97. package/es/core/ErrorSummary/__stories__/LinkedToCheckbox.js +3 -3
  98. package/es/core/ErrorSummary/__stories__/LinkedToField.js +3 -3
  99. package/es/core/ErrorSummary/__stories__/LinkedToInput.js +3 -3
  100. package/es/core/Link/__stories__/DarkBackground.js +6 -2
  101. package/es/core/Link/__stories__/DarkBackgroundNoUnderline.js +6 -2
  102. package/es/core/NavList/NavList.stories.js +3 -1
  103. package/es/core/NavList/NavList.stories.playwright.json +6 -6
  104. package/{esm/core/NavList → es/core/NavList/NavListAuto}/NavListAuto.js +11 -5
  105. package/{esm/core/NavList/NavListBase.js → es/core/NavList/NavListAuto/NavListBaseAuto.js} +4 -2
  106. package/es/core/NavList/{NavListContext.js → NavListAuto/NavListContextAuto.js} +20 -8
  107. package/es/core/NavList/NavListAuto/NavListItemAnchorAuto.js +29 -0
  108. package/es/core/NavList/NavListAuto/NavListItemAuto.js +42 -0
  109. package/es/core/NavList/NavListAuto/NavListItemButtonAuto.js +32 -0
  110. package/es/core/NavList/NavListAuto/NavListMenuAuto.js +39 -0
  111. package/es/core/NavList/NavListAuto/NavListSubMenuAuto.js +28 -0
  112. package/es/core/NavList/NavListItem.js +8 -7
  113. package/es/core/NavList/NavListItemBase.js +3 -3
  114. package/es/core/NavList/NavMenuContainerContentList.js +67 -1
  115. package/es/core/NavList/__stories__/Default.js +19 -6
  116. package/es/core/NavList/__stories__/NavHorizontalLayout.js +17 -5
  117. package/es/core/NavList/__stories__/NavListEpathlaExample.js +24 -12
  118. package/es/core/NavList/__stories__/NavListHorizontalAutoExample.js +51 -0
  119. package/es/core/NavList/__stories__/NavListSecondaryAutoExample.js +255 -0
  120. package/es/core/NavList/__stories__/NavListVerticalAutoExample.js +51 -0
  121. package/es/core/NavList/index.js +2 -5
  122. package/es/core/Tabs/__stories__/Default.js +5 -5
  123. package/es/core/Tabs/index.js +5 -7
  124. package/es/hooks/useFontSize.js +10 -0
  125. package/es/hooks/useHighlightLinks.js +38 -0
  126. package/es/hooks/useLetterSpacing.js +10 -0
  127. package/es/hooks/useLineHeight.js +10 -0
  128. package/es/hooks/useNavList.js +10 -7
  129. package/es/hooks/useTheme.js +19 -11
  130. package/es/hooks/useTogglableNav.js +292 -0
  131. package/es/hooks/{useTogglableSections.js → useTogglableTab.js} +2 -8
  132. package/es/hooks/useVariantVars.js +30 -0
  133. package/es/layouts/Basic/__stories__/Default.js +2 -2
  134. package/es/layouts/Basic/__stories__/MultipleRowsLayout.js +3 -3
  135. package/es/layouts/Basic/__stories__/TwoThirdsOneThirdColumns.js +3 -3
  136. package/es/registry.js +36 -14
  137. package/es/typography/NormalText/__stories__/FontSizes.js +18 -6
  138. package/es/typography/NormalText/__stories__/FontWeight.js +3 -1
  139. package/es/typography/NormalText/__stories__/Variants.js +3 -1
  140. package/esm/admin/AccessibilityMenu/index.js +13 -0
  141. package/esm/admin/Chip/index.js +1 -0
  142. package/esm/admin/Drawer/__stories__/Default.js +19 -8
  143. package/esm/admin/Dropdown/__stories__/AlignRight.js +0 -2
  144. package/esm/admin/Dropdown/__stories__/Default.js +0 -2
  145. package/esm/admin/Dropdown/__stories__/PlacementTop.js +0 -2
  146. package/esm/admin/FilterSection/index.js +1 -2
  147. package/esm/admin/Modal/index.js +16 -11
  148. package/esm/admin/Pagination/__stories__/Default.js +4 -7
  149. package/esm/admin/Pagination/__stories__/PaginationSmall.js +2 -3
  150. package/esm/app/Footer/__stories__/FooterAllInclusive.js +1 -0
  151. package/esm/app/Footer/__stories__/FooterWithSecondaryNavigation.js +1 -0
  152. package/esm/app/Header/__stories__/WithNavigation.js +10 -8
  153. package/esm/app/QrCodeScanner/__stories__/Default.js +3 -3
  154. package/esm/app/QrCodeViewer/index.js +8 -9
  155. package/esm/app/ThemeOptionsForm/index.js +215 -0
  156. package/esm/app/{ThemeSelectorOptions → ThemePaletteForm}/index.js +5 -4
  157. package/esm/app/index.js +2 -1
  158. package/esm/core/Accordion/index.js +7 -7
  159. package/esm/core/Divider/__stories__/Default.js +5 -10
  160. package/esm/core/ErrorSummary/__stories__/Default.js +3 -3
  161. package/esm/core/ErrorSummary/__stories__/LinkedToCheckbox.js +3 -3
  162. package/esm/core/ErrorSummary/__stories__/LinkedToField.js +3 -3
  163. package/esm/core/ErrorSummary/__stories__/LinkedToInput.js +3 -3
  164. package/esm/core/Link/__stories__/DarkBackground.js +6 -2
  165. package/esm/core/Link/__stories__/DarkBackgroundNoUnderline.js +6 -2
  166. package/esm/core/NavList/NavList.stories.js +3 -1
  167. package/esm/core/NavList/NavList.stories.playwright.json +6 -6
  168. package/{es/core/NavList → esm/core/NavList/NavListAuto}/NavListAuto.js +11 -5
  169. package/{es/core/NavList/NavListBase.js → esm/core/NavList/NavListAuto/NavListBaseAuto.js} +4 -2
  170. package/esm/core/NavList/{NavListContext.js → NavListAuto/NavListContextAuto.js} +20 -8
  171. package/esm/core/NavList/NavListAuto/NavListItemAnchorAuto.js +29 -0
  172. package/esm/core/NavList/NavListAuto/NavListItemAuto.js +42 -0
  173. package/esm/core/NavList/NavListAuto/NavListItemButtonAuto.js +32 -0
  174. package/esm/core/NavList/NavListAuto/NavListMenuAuto.js +39 -0
  175. package/esm/core/NavList/NavListAuto/NavListSubMenuAuto.js +28 -0
  176. package/esm/core/NavList/NavListItem.js +8 -7
  177. package/esm/core/NavList/NavListItemBase.js +3 -3
  178. package/esm/core/NavList/NavMenuContainerContentList.js +67 -1
  179. package/esm/core/NavList/__stories__/Default.js +19 -6
  180. package/esm/core/NavList/__stories__/NavHorizontalLayout.js +17 -5
  181. package/esm/core/NavList/__stories__/NavListEpathlaExample.js +24 -12
  182. package/esm/core/NavList/__stories__/NavListHorizontalAutoExample.js +51 -0
  183. package/esm/core/NavList/__stories__/NavListSecondaryAutoExample.js +255 -0
  184. package/esm/core/NavList/__stories__/NavListVerticalAutoExample.js +51 -0
  185. package/esm/core/NavList/index.js +2 -5
  186. package/esm/core/Tabs/__stories__/Default.js +5 -5
  187. package/esm/core/Tabs/index.js +5 -7
  188. package/esm/hooks/useFontSize.js +10 -0
  189. package/esm/hooks/useHighlightLinks.js +38 -0
  190. package/esm/hooks/useLetterSpacing.js +10 -0
  191. package/esm/hooks/useLineHeight.js +10 -0
  192. package/esm/hooks/useNavList.js +10 -7
  193. package/esm/hooks/useTheme.js +19 -11
  194. package/esm/hooks/useTogglableNav.js +292 -0
  195. package/esm/hooks/{useTogglableSections.js → useTogglableTab.js} +2 -8
  196. package/esm/hooks/useVariantVars.js +30 -0
  197. package/esm/index.js +1 -1
  198. package/esm/layouts/Basic/__stories__/Default.js +2 -2
  199. package/esm/layouts/Basic/__stories__/MultipleRowsLayout.js +3 -3
  200. package/esm/layouts/Basic/__stories__/TwoThirdsOneThirdColumns.js +3 -3
  201. package/esm/registry.js +36 -14
  202. package/esm/typography/NormalText/__stories__/FontSizes.js +18 -6
  203. package/esm/typography/NormalText/__stories__/FontWeight.js +3 -1
  204. package/esm/typography/NormalText/__stories__/Variants.js +3 -1
  205. package/hooks/useFontSize.d.ts +6 -0
  206. package/hooks/useFontSize.js +23 -0
  207. package/hooks/useHighlightLinks.d.ts +8 -0
  208. package/hooks/useHighlightLinks.js +52 -0
  209. package/hooks/useLetterSpacing.d.ts +6 -0
  210. package/hooks/useLetterSpacing.js +23 -0
  211. package/hooks/useLineHeight.d.ts +6 -0
  212. package/hooks/useLineHeight.js +23 -0
  213. package/hooks/useNavList.d.ts +2 -2
  214. package/hooks/useNavList.js +11 -8
  215. package/hooks/useTheme.d.ts +4 -4
  216. package/hooks/useTheme.js +19 -12
  217. package/hooks/useTogglableNav.d.ts +25 -0
  218. package/hooks/useTogglableNav.js +305 -0
  219. package/hooks/{useTogglableSections.d.ts → useTogglableTab.d.ts} +4 -3
  220. package/hooks/{useTogglableSections.js → useTogglableTab.js} +3 -9
  221. package/hooks/useVariantVars.d.ts +11 -0
  222. package/hooks/useVariantVars.js +41 -0
  223. package/layouts/Basic/__stories__/Default.js +2 -2
  224. package/layouts/Basic/__stories__/MultipleRowsLayout.js +3 -3
  225. package/layouts/Basic/__stories__/TwoThirdsOneThirdColumns.js +3 -3
  226. package/package.json +3 -3
  227. package/registry.d.ts +18 -7
  228. package/registry.js +49 -16
  229. package/src/admin/AccessibilityMenu/index.tsx +14 -0
  230. package/src/admin/AutoComplete/index.tsx +2 -2
  231. package/src/admin/Chip/index.tsx +1 -0
  232. package/src/admin/Drawer/__stories__/Default.tsx +23 -9
  233. package/src/admin/Dropdown/__stories__/AlignRight.tsx +2 -2
  234. package/src/admin/Dropdown/__stories__/Default.tsx +2 -2
  235. package/src/admin/Dropdown/__stories__/PlacementTop.tsx +2 -2
  236. package/src/admin/FilterSection/index.tsx +1 -2
  237. package/src/admin/Modal/index.tsx +43 -39
  238. package/src/admin/Pagination/__stories__/Default.tsx +4 -4
  239. package/src/admin/Pagination/__stories__/PaginationSmall.tsx +2 -2
  240. package/src/app/Footer/__stories__/FooterAllInclusive.tsx +1 -1
  241. package/src/app/Footer/__stories__/FooterWithSecondaryNavigation.tsx +1 -1
  242. package/src/app/Header/__stories__/WithNavigation.tsx +8 -8
  243. package/src/app/QrCodeScanner/__stories__/Default.tsx +2 -2
  244. package/src/app/QrCodeViewer/index.tsx +16 -14
  245. package/src/app/ThemeOptionsForm/index.tsx +220 -0
  246. package/src/app/{ThemeSelectorOptions → ThemePaletteForm}/index.tsx +3 -3
  247. package/src/app/index.ts +2 -1
  248. package/src/core/Accordion/index.tsx +5 -11
  249. package/src/core/Divider/__stories__/Default.tsx +5 -5
  250. package/src/core/ErrorSummary/__stories__/Default.tsx +2 -2
  251. package/src/core/ErrorSummary/__stories__/LinkedToCheckbox.tsx +2 -2
  252. package/src/core/ErrorSummary/__stories__/LinkedToField.tsx +2 -2
  253. package/src/core/ErrorSummary/__stories__/LinkedToInput.tsx +2 -2
  254. package/src/core/Link/__stories__/DarkBackground.tsx +2 -3
  255. package/src/core/Link/__stories__/DarkBackgroundNoUnderline.tsx +2 -3
  256. package/src/core/NavList/NavList.stories.js +3 -1
  257. package/src/core/NavList/NavList.stories.playwright.json +6 -6
  258. package/src/core/NavList/NavListAuto/NavListAuto.tsx +34 -0
  259. package/src/core/NavList/{NavListBase.tsx → NavListAuto/NavListBaseAuto.tsx} +2 -2
  260. package/src/core/NavList/{NavListContext.tsx → NavListAuto/NavListContextAuto.tsx} +26 -11
  261. package/src/core/NavList/NavListAuto/NavListItemAnchorAuto.tsx +41 -0
  262. package/src/core/NavList/NavListAuto/NavListItemAuto.tsx +51 -0
  263. package/src/core/NavList/NavListAuto/NavListItemButtonAuto.tsx +53 -0
  264. package/src/core/NavList/NavListAuto/NavListMenuAuto.tsx +51 -0
  265. package/src/core/NavList/NavListAuto/NavListSubMenuAuto.tsx +32 -0
  266. package/src/core/NavList/NavListItem.tsx +15 -9
  267. package/src/core/NavList/NavListItemBase.tsx +3 -3
  268. package/src/core/NavList/NavMenuContainerContentList.tsx +63 -1
  269. package/src/core/NavList/__stories__/Default.tsx +23 -8
  270. package/src/core/NavList/__stories__/NavHorizontalLayout.tsx +24 -8
  271. package/src/core/NavList/__stories__/NavListEpathlaExample.tsx +46 -25
  272. package/src/core/NavList/__stories__/NavListHorizontalAutoExample.tsx +65 -0
  273. package/src/core/NavList/__stories__/NavListSecondaryAutoExample.tsx +284 -0
  274. package/src/core/NavList/__stories__/NavListVerticalAutoExample.tsx +65 -0
  275. package/src/core/NavList/index.tsx +2 -5
  276. package/src/core/NavList/types.tsx +23 -9
  277. package/src/core/Tabs/__stories__/Default.tsx +5 -5
  278. package/src/core/Tabs/index.tsx +5 -9
  279. package/src/hooks/useFontSize.ts +32 -0
  280. package/src/hooks/useHighlightLinks.ts +45 -0
  281. package/src/hooks/useLetterSpacing.ts +27 -0
  282. package/src/hooks/useLineHeight.ts +31 -0
  283. package/src/hooks/useNavList.ts +5 -7
  284. package/src/hooks/useTheme.ts +28 -20
  285. package/src/hooks/useTogglableNav.tsx +294 -0
  286. package/src/hooks/{useTogglableSections.tsx → useTogglableTab.tsx} +12 -13
  287. package/src/hooks/useVariantVars.ts +35 -0
  288. package/src/layouts/Basic/__stories__/Default.tsx +3 -3
  289. package/src/layouts/Basic/__stories__/MultipleRowsLayout.tsx +8 -8
  290. package/src/layouts/Basic/__stories__/TwoThirdsOneThirdColumns.tsx +6 -6
  291. package/src/registry.js +36 -14
  292. package/src/typography/NormalText/__stories__/FontSizes.tsx +6 -6
  293. package/src/typography/NormalText/__stories__/FontWeight.tsx +1 -1
  294. package/src/typography/NormalText/__stories__/Variants.tsx +1 -1
  295. package/typography/NormalText/__stories__/FontSizes.js +18 -6
  296. package/typography/NormalText/__stories__/FontWeight.js +3 -1
  297. package/typography/NormalText/__stories__/Variants.js +3 -1
  298. package/app/ThemeSelectorOptions/index.d.ts +0 -2
  299. package/core/NavList/NavListSubMenu.d.ts +0 -8
  300. package/core/NavList/__stories__/NavListAutoExample.d.ts +0 -2
  301. package/core/NavList/__stories__/NavListAutoExample.js +0 -63
  302. package/es/core/NavList/NavListItemAuto.js +0 -40
  303. package/es/core/NavList/NavListSubMenu.js +0 -25
  304. package/es/core/NavList/__stories__/NavListAutoExample.js +0 -48
  305. package/esm/core/NavList/NavListItemAuto.js +0 -40
  306. package/esm/core/NavList/NavListSubMenu.js +0 -25
  307. package/esm/core/NavList/__stories__/NavListAutoExample.js +0 -48
  308. package/src/core/NavList/NavListAuto.tsx +0 -20
  309. package/src/core/NavList/NavListItemAuto.tsx +0 -41
  310. package/src/core/NavList/NavListSubMenu.tsx +0 -28
  311. package/src/core/NavList/__stories__/NavListAutoExample.tsx +0 -53
  312. /package/core/NavList/{NavListAuto.d.ts → NavListAuto/NavListAuto.d.ts} +0 -0
  313. /package/core/NavList/{NavListItemAuto.d.ts → NavListAuto/NavListItemAuto.d.ts} +0 -0
@@ -0,0 +1,34 @@
1
+ import React from 'react';
2
+ import { NavListProviderAuto } from '@digigov/ui/core/NavList/NavListAuto/NavListContextAuto';
3
+ import { NavListAutoProps } from '@digigov/ui/core/NavList/types';
4
+ import { NavListBaseAuto } from '@digigov/ui/core/NavList/NavListAuto/NavListBaseAuto';
5
+
6
+ export const NavListAuto: React.FC<NavListAutoProps> = ({
7
+ layout,
8
+ border,
9
+ fixed,
10
+ openSubMenus = false,
11
+ links = [],
12
+ role,
13
+ ...props
14
+ }) => {
15
+ return (
16
+ <NavListProviderAuto
17
+ openSubMenus={openSubMenus}
18
+ layout={layout}
19
+ border={border}
20
+ fixed={fixed}
21
+ links={links}
22
+ >
23
+ <NavListBaseAuto
24
+ layout={layout}
25
+ border={border}
26
+ fixed={fixed}
27
+ role={role}
28
+ {...props}
29
+ />
30
+ </NavListProviderAuto>
31
+ );
32
+ };
33
+
34
+ export default NavListAuto;
@@ -3,7 +3,7 @@ import { NavListAutoProps } from '@digigov/ui/core/NavList/types';
3
3
  import Nav from '@digigov/ui/core/NavList/Nav';
4
4
  import NavList from '@digigov/ui/core/NavList/NavList';
5
5
 
6
- export const NavListBase: React.FC<NavListAutoProps> = ({
6
+ export const NavListBaseAuto: React.FC<NavListAutoProps> = ({
7
7
  className,
8
8
  children,
9
9
  floating,
@@ -13,7 +13,7 @@ export const NavListBase: React.FC<NavListAutoProps> = ({
13
13
  ...props
14
14
  }) => {
15
15
  return (
16
- <Nav open={true} layout={layout} {...props}>
16
+ <Nav open={true} layout={layout} {...props} aria-orientation={layout}>
17
17
  <NavList layout={layout}>{children}</NavList>
18
18
  </Nav>
19
19
  );
@@ -12,6 +12,8 @@ export interface NavLinkInterface {
12
12
 
13
13
  export interface NavListContextInterface {
14
14
  layout?: NavListLayout;
15
+ border?: boolean;
16
+ fixed?: boolean;
15
17
  openSubMenus?: boolean;
16
18
  showDividers?: boolean;
17
19
  links: NavLinkInterface[];
@@ -19,11 +21,14 @@ export interface NavListContextInterface {
19
21
  activeSubMenu?: NavLinkInterface[];
20
22
  onSubMenuActive?: (name: string) => void;
21
23
  container?: (key: string) => { active: boolean; id: string };
22
- setRegister?: (name: string) => any;
24
+ setRegisterButton?: (name: string) => any;
25
+ setRegisterLink?: (name: string) => any;
23
26
  }
24
27
 
25
- export const NavListContext = createContext<NavListContextInterface>({
28
+ export const NavListContextAuto = createContext<NavListContextInterface>({
26
29
  layout: 'horizontal',
30
+ border: true,
31
+ fixed: true,
27
32
  openSubMenus: false,
28
33
  links: [],
29
34
  activeLink: {},
@@ -31,18 +36,25 @@ export const NavListContext = createContext<NavListContextInterface>({
31
36
  });
32
37
 
33
38
  const TRAILING_SLASH = /\/$/gm;
34
- export const NavListProvider: React.FC<NavListContextInterface> = ({
39
+ export const NavListProviderAuto: React.FC<NavListContextInterface> = ({
35
40
  children,
36
41
  layout,
42
+ border,
43
+ fixed,
37
44
  openSubMenus = false,
38
45
  showDividers = false,
39
46
  links = [],
40
47
  }) => {
41
48
  const [activeSubMenu, setActiveSubMenu] = useState<NavLinkInterface[]>([]);
42
49
  const [activeLink, setActiveLink] = useState<NavLinkInterface>({});
43
- const { container, register } = useNavList();
44
- const setRegister = (name: string) => {
45
- return { ...register(name) };
50
+ const { container, registerButton, registerLink } = useNavList();
51
+
52
+ const setRegisterButton = (name: string) => {
53
+ return { ...registerButton(name) };
54
+ };
55
+
56
+ const setRegisterLink = (name: string) => {
57
+ return { ...registerLink(name) };
46
58
  };
47
59
 
48
60
  // TODO: Cleanup unused props
@@ -57,7 +69,7 @@ export const NavListProvider: React.FC<NavListContextInterface> = ({
57
69
  } else {
58
70
  return (
59
71
  window?.location.pathname.replace(TRAILING_SLASH, '') ===
60
- link.href?.replace(TRAILING_SLASH, '') || false
72
+ link.href?.replace(TRAILING_SLASH, '') || false
61
73
  );
62
74
  }
63
75
  }) || { label: '', href: '' };
@@ -76,22 +88,25 @@ export const NavListProvider: React.FC<NavListContextInterface> = ({
76
88
  };
77
89
 
78
90
  return (
79
- <NavListContext.Provider
91
+ <NavListContextAuto.Provider
80
92
  value={{
81
93
  openSubMenus,
82
94
  layout,
95
+ border,
96
+ fixed,
83
97
  showDividers,
84
98
  links,
85
99
  activeLink,
86
100
  activeSubMenu,
87
101
  onSubMenuActive,
88
102
  container,
89
- setRegister,
103
+ setRegisterButton,
104
+ setRegisterLink,
90
105
  }}
91
106
  >
92
107
  {children}
93
- </NavListContext.Provider>
108
+ </NavListContextAuto.Provider>
94
109
  );
95
110
  };
96
111
 
97
- export default NavListContext;
112
+ export default NavListContextAuto;
@@ -0,0 +1,41 @@
1
+ import React, { useContext } from 'react';
2
+ import { NavListItemLink } from '@digigov/ui/core/NavList/NavListItemLink';
3
+ import NavListContextAuto from '@digigov/ui/core/NavList/NavListAuto/NavListContextAuto';
4
+ import NavListItem from '@digigov/react-core/NavListItem';
5
+ import { NavListLayout } from '@digigov/ui/core/NavList/types';
6
+
7
+ interface NavListItemAnchorAutoProps {
8
+ name: string;
9
+ href?: string;
10
+ active?: boolean;
11
+ layout?: NavListLayout;
12
+ children?: React.ReactNode;
13
+ }
14
+
15
+ export const NavListItemAnchorAuto: React.FC<NavListItemAnchorAutoProps> = ({
16
+ name,
17
+ href,
18
+ active,
19
+ layout,
20
+ children,
21
+ ...props
22
+ }) => {
23
+ const { container, setRegisterLink } = useContext(NavListContextAuto);
24
+
25
+ return (
26
+ <NavListItem layout={layout}>
27
+ {setRegisterLink && (
28
+ <NavListItemLink
29
+ href={href}
30
+ active={active || (container && container(name)?.active)}
31
+ {...props}
32
+ {...setRegisterLink(name)}
33
+ >
34
+ {children}
35
+ </NavListItemLink>
36
+ )}
37
+ </NavListItem>
38
+ );
39
+ };
40
+
41
+ export default NavListItemAnchorAuto;
@@ -0,0 +1,51 @@
1
+ import React, { useContext } from 'react';
2
+ import Divider from '@digigov/react-core/SectionBreak';
3
+ import NavListContextAuto from '@digigov/ui/core/NavList/NavListAuto/NavListContextAuto';
4
+ import NavItemAnchorAuto from '@digigov/ui/core/NavList/NavListAuto/NavListItemAnchorAuto';
5
+ import NavItemButtonAuto from '@digigov/ui/core/NavList/NavListAuto/NavListItemButtonAuto';
6
+ import { NavListItem } from '@digigov/ui/core/NavList/NavListItem';
7
+
8
+ export interface NavListItemAutoProps {
9
+ item?: any;
10
+ children?: React.ReactNode;
11
+ role?: string;
12
+ }
13
+
14
+ export const NavListItemAuto: React.FC<NavListItemAutoProps> = ({
15
+ item,
16
+ children,
17
+ role,
18
+ ...props
19
+ }) => {
20
+ const { layout, showDividers, container, setRegisterButton } = useContext(
21
+ NavListContextAuto
22
+ );
23
+ const itemName = item?.name ? item.name : item?.label;
24
+
25
+ return (
26
+ <React.Fragment>
27
+ {children ? (
28
+ <NavListItem layout={layout} {...props}>
29
+ {children}
30
+ </NavListItem>
31
+ ) : item?.menu || item?.subMenu ? (
32
+ <NavItemButtonAuto
33
+ item={item}
34
+ name={itemName}
35
+ active={container && container(itemName)?.active}
36
+ onSelect={setRegisterButton}
37
+ layout={layout}
38
+ >
39
+ {item?.label}
40
+ </NavItemButtonAuto>
41
+ ) : (
42
+ <NavItemAnchorAuto href={item?.href} name={itemName} layout={layout}>
43
+ {item?.label}
44
+ </NavItemAnchorAuto>
45
+ )}
46
+ {showDividers && <Divider />}
47
+ </React.Fragment>
48
+ );
49
+ };
50
+
51
+ export default NavListItemAuto;
@@ -0,0 +1,53 @@
1
+ import React from 'react';
2
+ import NavListItemButton from '@digigov/ui/core/NavList/NavListItemButton';
3
+ import NavItemSubMenuAuto from '@digigov/ui/core/NavList/NavListAuto/NavListSubMenuAuto';
4
+ import NavItemMenuAuto from '@digigov/ui/core/NavList/NavListAuto/NavListMenuAuto';
5
+ import NavListItem from '@digigov/ui/core/NavList/NavListItem';
6
+ import { NavListLayout } from '@digigov/ui/core/NavList/types';
7
+
8
+ interface NavListItemButtonAutoProps {
9
+ item?: any;
10
+ name: string;
11
+ active?: boolean;
12
+ onSelect?: (name: string) => any;
13
+ layout?: NavListLayout;
14
+ children?: React.ReactNode;
15
+ }
16
+
17
+ export const NavListItemButtonAuto: React.FC<NavListItemButtonAutoProps> = ({
18
+ item,
19
+ name,
20
+ active,
21
+ onSelect,
22
+ layout,
23
+ children,
24
+ }) => {
25
+ return (
26
+ <React.Fragment>
27
+ {onSelect && (
28
+ <NavListItem layout={layout}>
29
+ <NavListItemButton active={active} {...onSelect(name)}>
30
+ {children}
31
+ </NavListItemButton>
32
+ </NavListItem>
33
+ )}
34
+ {item?.subMenu ? (
35
+ <NavItemSubMenuAuto
36
+ items={item?.subMenu}
37
+ open={active}
38
+ layout={layout}
39
+ />
40
+ ) : (
41
+ <NavItemMenuAuto
42
+ subMenu={item?.menu?.links}
43
+ title={item?.menu?.title}
44
+ active={active}
45
+ layout={layout}
46
+ id={name}
47
+ />
48
+ )}
49
+ </React.Fragment>
50
+ );
51
+ };
52
+
53
+ export default NavListItemButtonAuto;
@@ -0,0 +1,51 @@
1
+ import React from 'react';
2
+ import { NavListLayout } from '@digigov/ui/core/NavList/types';
3
+ import NavMenu from '@digigov/ui/core/NavList/NavMenu';
4
+ import NavMenuContainer from '@digigov/ui/core/NavList/NavMenuContainer';
5
+ import NavMenuContainerTitle from '@digigov/ui/core/NavList/NavMenuContainerTitle';
6
+ import NavMenuContainerContent from '@digigov/ui/core/NavList/NavMenuContainerContent';
7
+ import NavMenuContainerContentList from '@digigov/ui/core/NavList/NavMenuContainerContentList';
8
+ import NavMenuContainerContentListItem from '@digigov/ui/core/NavList/NavMenuContainerContentListItem';
9
+ import { Link } from '@digigov/ui/core';
10
+
11
+ interface NavListMenuAutoProps {
12
+ layout?: NavListLayout;
13
+ title?: string;
14
+ active?: boolean;
15
+ subMenu?: any[];
16
+ id?: string;
17
+ }
18
+
19
+ export const NavListMenuAuto: React.FC<NavListMenuAutoProps> = ({
20
+ layout,
21
+ active,
22
+ title,
23
+ subMenu,
24
+ id,
25
+ }) => {
26
+ return (
27
+ <NavMenu layout={layout} active={active} id={id}>
28
+ <NavMenuContainer layout={layout} paddingLeft={5} paddingRight={5}>
29
+ <NavMenuContainerTitle layout={layout}>{title}</NavMenuContainerTitle>
30
+ <NavMenuContainerContent>
31
+ <NavMenuContainerContentList role="menu" layout={layout}>
32
+ {subMenu?.map((item, index) => {
33
+ return (
34
+ <NavMenuContainerContentListItem
35
+ role="presentation"
36
+ key={index}
37
+ >
38
+ <Link role="menuitem" id={item.name} href={item.href}>
39
+ {item.label}
40
+ </Link>
41
+ </NavMenuContainerContentListItem>
42
+ );
43
+ })}
44
+ </NavMenuContainerContentList>
45
+ </NavMenuContainerContent>
46
+ </NavMenuContainer>
47
+ </NavMenu>
48
+ );
49
+ };
50
+
51
+ export default NavListMenuAuto;
@@ -0,0 +1,32 @@
1
+ import React from 'react';
2
+ import { Nav } from '@digigov/ui/core/NavList/Nav';
3
+ import { NavList } from '@digigov/ui/core/NavList/NavList';
4
+ import NavItemAuto from '@digigov/ui/core/NavList/NavListAuto/NavListItemAuto';
5
+ import { NavListLayout } from '@digigov/ui/core/NavList/types';
6
+
7
+ export interface NavListSubMenuAutoProps {
8
+ items?: any[];
9
+ open?: boolean;
10
+ layout?: NavListLayout;
11
+ }
12
+
13
+ export const NavListSubMenuAuto: React.FC<NavListSubMenuAutoProps> = ({
14
+ items,
15
+ open,
16
+ layout,
17
+ ...props
18
+ }) => {
19
+ return open ? (
20
+ <Nav hidden={!open} layout={layout} {...props} aria-orientation={layout}>
21
+ <NavList layout={layout}>
22
+ {items?.map((subMenuItem, index) => (
23
+ <NavItemAuto key={index} item={subMenuItem} />
24
+ ))}
25
+ </NavList>
26
+ </Nav>
27
+ ) : (
28
+ <></>
29
+ );
30
+ };
31
+
32
+ export default NavListSubMenuAuto;
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import CoreNavListItem from '@digigov/react-core/NavListItem';
2
+ import NavListItemContainer from '@digigov/react-core/NavListItem';
3
3
  import NavListItemButton from '@digigov/ui/core/NavList/NavListItemButton';
4
4
  import { NavListItemLink } from '@digigov/ui/core/NavList/NavListItemLink';
5
5
  import {
@@ -11,29 +11,35 @@ import {
11
11
  export const NavListItem: React.FC<NavListItemProps> = ({
12
12
  link,
13
13
  layout,
14
- setRegister,
14
+ setRegisterButton,
15
+ setRegisterLink,
15
16
  active,
16
17
  children,
17
18
  ...props
18
19
  }) => {
19
20
  return (
20
- <CoreNavListItem layout={layout} {...props}>
21
+ <NavListItemContainer layout={layout} {...props}>
21
22
  {children ? (
22
23
  children
23
- ) : isNavListItemSubMenuInterface(link) &&
24
- link?.subMenu &&
25
- setRegister ? (
26
- <NavListItemButton {...setRegister(link.name)}>
24
+ ) : isNavListItemSubMenuInterface(link) && link?.subMenu ? (
25
+ <NavListItemButton
26
+ {...(setRegisterButton && setRegisterButton(link.name))}
27
+ >
27
28
  {link?.label}
28
29
  </NavListItemButton>
29
30
  ) : (
30
31
  isNavListItemLinkInterface(link) && (
31
- <NavListItemLink href={link?.href} {...props} active={active}>
32
+ <NavListItemLink
33
+ href={link?.href}
34
+ {...(setRegisterLink && setRegisterLink(link.name))}
35
+ active={active}
36
+ {...props}
37
+ >
32
38
  {link?.label}
33
39
  </NavListItemLink>
34
40
  )
35
41
  )}
36
- </CoreNavListItem>
42
+ </NavListItemContainer>
37
43
  );
38
44
  };
39
45
 
@@ -14,7 +14,7 @@ import NavMenuContainerContentListItem from '@digigov/ui/core/NavList/NavMenuCon
14
14
 
15
15
  export interface NavListItemBaseProps {
16
16
  container?: (key: string) => { active: boolean; id: string };
17
- setRegister?: (name: string) => any;
17
+ setRegisterButton?: (name: string) => any;
18
18
  children?: React.ReactNode;
19
19
  item?: any;
20
20
  layout?: NavListLayout;
@@ -23,7 +23,7 @@ export interface NavListItemBaseProps {
23
23
 
24
24
  export const NavListItemBase: React.FC<NavListItemBaseProps> = ({
25
25
  container,
26
- setRegister,
26
+ setRegisterButton,
27
27
  children,
28
28
  item,
29
29
  layout = 'horizontal',
@@ -35,7 +35,7 @@ export const NavListItemBase: React.FC<NavListItemBaseProps> = ({
35
35
  <NavListItem
36
36
  layout={layout}
37
37
  link={item}
38
- setRegister={setRegister}
38
+ setRegisterButton={setRegisterButton}
39
39
  role="menuitem"
40
40
  {...props}
41
41
  />
@@ -1,3 +1,65 @@
1
- import NavMenuContainerContentList from '@digigov/react-core/NavMenuContainerContentList';
1
+ import React from 'react';
2
+ import NavMenuContainerContentListWrapper, {
3
+ NavMenuContainerContentListProps,
4
+ } from '@digigov/react-core/NavMenuContainerContentList';
2
5
  export * from '@digigov/react-core/NavMenuContainerContentList';
6
+
7
+ const focusNavListItem = (e, nextItemIndex) => {
8
+ e.preventDefault();
9
+ const id = document.activeElement?.id;
10
+ const menuItems = Array.from(
11
+ e.currentTarget.querySelectorAll(`[role=menuitem]`)
12
+ );
13
+ const currentItem = menuItems.findIndex(
14
+ (x) => (x as HTMLElement).getAttribute('id') === document.activeElement?.id
15
+ );
16
+ if (
17
+ currentItem + nextItemIndex > -1 &&
18
+ currentItem + nextItemIndex < menuItems.length
19
+ ) {
20
+ (menuItems[currentItem + nextItemIndex] as HTMLElement)?.focus();
21
+ } else {
22
+ const menuElement = Array.from(
23
+ document.querySelectorAll(`[aria-controls]`)
24
+ );
25
+ const currentItem = menuElement.findIndex((x) =>
26
+ id?.includes(x.getAttribute('aria-controls') || '')
27
+ );
28
+ if (nextItemIndex > 0) {
29
+ (menuElement[currentItem + nextItemIndex] as HTMLElement)?.focus();
30
+ } else {
31
+ (menuElement[currentItem] as HTMLElement)?.focus();
32
+ }
33
+ }
34
+ };
35
+
36
+ export const NavMenuContainerContentList: React.FC<NavMenuContainerContentListProps> = ({
37
+ layout,
38
+ children,
39
+ ...props
40
+ }) => {
41
+ return (
42
+ <NavMenuContainerContentListWrapper
43
+ layout={layout}
44
+ {...props}
45
+ onKeyDown={(event) => {
46
+ switch (event.key) {
47
+ case 'ArrowDown':
48
+ case 'ArrowRight':
49
+ focusNavListItem(event, 1);
50
+ break;
51
+ case 'ArrowUp':
52
+ case 'ArrowLeft':
53
+ focusNavListItem(event, -1);
54
+ break;
55
+ default:
56
+ break;
57
+ }
58
+ }}
59
+ >
60
+ {children}
61
+ </NavMenuContainerContentListWrapper>
62
+ );
63
+ };
64
+
3
65
  export default NavMenuContainerContentList;
@@ -46,21 +46,27 @@ const links = [
46
46
 
47
47
  export const Default = () => {
48
48
  const layout = 'vertical';
49
- const { container, register } = useNavList();
49
+ const border = false;
50
+ const { container, registerButton, registerLink } = useNavList();
50
51
 
51
- const setRegister = (name: string) => {
52
- return { ...register(name) };
52
+ const setRegisterButton = (name: string) => {
53
+ return { ...registerButton(name) };
54
+ };
55
+
56
+ const setRegisterLink = (name: string) => {
57
+ return { ...registerLink(name) };
53
58
  };
54
59
 
55
60
  return (
56
- <Nav open={true} layout={layout}>
61
+ <Nav open={true} layout={layout} border={border} aria-orientation={layout}>
57
62
  <NavList layout={layout}>
58
63
  {links.map((item, key) => (
59
64
  <React.Fragment key={key}>
60
65
  <NavListItem
61
66
  layout={layout}
62
67
  link={item}
63
- setRegister={setRegister}
68
+ setRegisterButton={setRegisterButton}
69
+ setRegisterLink={setRegisterLink}
64
70
  />
65
71
  <NavMenu layout={layout} {...container(item.name)}>
66
72
  <NavMenuContainer
@@ -72,12 +78,21 @@ export const Default = () => {
72
78
  {item.label}
73
79
  </NavMenuContainerTitle>
74
80
  <NavMenuContainerContent>
75
- <NavMenuContainerContentList layout={layout}>
81
+ <NavMenuContainerContentList role="menu" layout={layout}>
76
82
  {item.subMenu?.map((subMenu, menuIndex) => {
77
83
  return (
78
84
  isNavListItemLinkInterface(subMenu) && (
79
- <NavMenuContainerContentListItem key={menuIndex}>
80
- <Link href={subMenu.href}>{subMenu.label}</Link>
85
+ <NavMenuContainerContentListItem
86
+ key={menuIndex}
87
+ role="presentation"
88
+ >
89
+ <Link
90
+ role="menuitem"
91
+ id={subMenu.name}
92
+ href={subMenu.href}
93
+ >
94
+ {subMenu.label}
95
+ </Link>
81
96
  </NavMenuContainerContentListItem>
82
97
  )
83
98
  );
@@ -42,20 +42,27 @@ const links = [
42
42
 
43
43
  export const NavHorizontalLayout = () => {
44
44
  const layout = 'horizontal';
45
- const { container, register } = useNavList();
45
+ const border = true;
46
+ const { container, registerButton, registerLink } = useNavList();
46
47
 
47
- const setRegister = (name: string) => {
48
- return { ...register(name) };
48
+ const setRegisterButton = (name: string) => {
49
+ return { ...registerButton(name) };
49
50
  };
51
+
52
+ const setRegisterLink = (name: string) => {
53
+ return { ...registerLink(name) };
54
+ };
55
+
50
56
  return (
51
- <Nav open={true} layout={layout}>
57
+ <Nav open={true} layout={layout} border={border}>
52
58
  <NavList layout={layout}>
53
59
  {links.map((item, key) => (
54
60
  <React.Fragment key={key}>
55
61
  <NavListItem
56
62
  layout={layout}
57
63
  link={item}
58
- setRegister={setRegister}
64
+ setRegisterButton={setRegisterButton}
65
+ setRegisterLink={setRegisterLink}
59
66
  />
60
67
  <NavMenu layout={layout} {...container(item.name)}>
61
68
  <NavMenuContainer
@@ -67,12 +74,21 @@ export const NavHorizontalLayout = () => {
67
74
  {item.label}
68
75
  </NavMenuContainerTitle>
69
76
  <NavMenuContainerContent>
70
- <NavMenuContainerContentList layout={layout}>
77
+ <NavMenuContainerContentList role="menu" layout={layout}>
71
78
  {item.subMenu?.map((subMenu, menuIndex) => {
72
79
  return (
73
80
  isNavListItemLinkInterface(subMenu) && (
74
- <NavMenuContainerContentListItem key={menuIndex}>
75
- <Link href={subMenu.href}>{subMenu.label}</Link>
81
+ <NavMenuContainerContentListItem
82
+ role="presentation"
83
+ key={menuIndex}
84
+ >
85
+ <Link
86
+ role="menuitem"
87
+ id={subMenu.name}
88
+ href={subMenu.href}
89
+ >
90
+ {subMenu.label}
91
+ </Link>
76
92
  </NavMenuContainerContentListItem>
77
93
  )
78
94
  );