@broxus/react-uikit 0.22.0 → 0.23.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 (406) hide show
  1. package/dist/assets/accordion.css +135 -0
  2. package/dist/assets/alert.css +120 -0
  3. package/dist/assets/align.css +105 -0
  4. package/dist/assets/animation.css +387 -0
  5. package/dist/assets/article.css +51 -0
  6. package/dist/assets/background.css +209 -0
  7. package/dist/assets/badge.css +46 -0
  8. package/dist/assets/base.css +571 -0
  9. package/dist/assets/breadcrumb.css +69 -0
  10. package/dist/assets/button.css +491 -0
  11. package/dist/assets/card.css +255 -0
  12. package/dist/assets/checkbox.css +240 -0
  13. package/dist/assets/close.css +24 -0
  14. package/dist/assets/column.css +145 -0
  15. package/dist/assets/comment.css +87 -0
  16. package/dist/assets/container.css +171 -0
  17. package/dist/assets/control.css +262 -0
  18. package/dist/assets/cover.css +55 -0
  19. package/dist/assets/datepicker.css +662 -0
  20. package/dist/assets/description-list.css +39 -0
  21. package/dist/assets/divider.css +98 -0
  22. package/dist/assets/dotnav.css +100 -0
  23. package/dist/assets/drawer.css +562 -0
  24. package/dist/assets/drop.css +47 -0
  25. package/dist/assets/dropdown.css +118 -0
  26. package/dist/assets/flex.css +392 -0
  27. package/dist/assets/form.css +486 -0
  28. package/dist/assets/grid.css +545 -0
  29. package/dist/assets/heading.css +175 -0
  30. package/dist/assets/height.css +63 -0
  31. package/dist/assets/icon.css +188 -0
  32. package/dist/assets/iconnav.css +83 -0
  33. package/dist/assets/input-number.css +89 -0
  34. package/dist/assets/input-password.css +24 -0
  35. package/dist/assets/inverse.css +746 -0
  36. package/dist/assets/label.css +70 -0
  37. package/dist/assets/leader.css +44 -0
  38. package/dist/assets/link.css +79 -0
  39. package/dist/assets/list.css +211 -0
  40. package/dist/assets/margin.css +362 -0
  41. package/dist/assets/marker.css +28 -0
  42. package/dist/assets/mixin.css +1 -0
  43. package/dist/assets/mixins.css +1 -0
  44. package/dist/assets/modal.css +227 -0
  45. package/dist/assets/motion.css +492 -0
  46. package/dist/assets/nav.css +406 -0
  47. package/dist/assets/navbar.css +468 -0
  48. package/dist/assets/overlay.css +38 -0
  49. package/dist/assets/padding.css +70 -0
  50. package/dist/assets/pagination.css +78 -0
  51. package/dist/assets/placeholder.css +27 -0
  52. package/dist/assets/position.css +216 -0
  53. package/dist/assets/print.css +43 -0
  54. package/dist/assets/progress.css +79 -0
  55. package/dist/assets/radio.css +196 -0
  56. package/dist/assets/search.css +258 -0
  57. package/dist/assets/section.css +138 -0
  58. package/dist/assets/segmented.css +193 -0
  59. package/dist/assets/select.css +515 -0
  60. package/dist/assets/slider.css +392 -0
  61. package/dist/assets/spinner.css +51 -0
  62. package/dist/assets/sticky.css +31 -0
  63. package/dist/assets/subnav.css +171 -0
  64. package/dist/assets/svg.css +23 -0
  65. package/dist/assets/switch.css +167 -0
  66. package/dist/assets/table.css +224 -0
  67. package/dist/assets/tabs.css +631 -0
  68. package/dist/assets/text.css +385 -0
  69. package/dist/assets/textarea.css +54 -0
  70. package/dist/assets/thumbnav.css +67 -0
  71. package/dist/assets/tile.css +138 -0
  72. package/dist/assets/tooltip.css +47 -0
  73. package/dist/assets/totop.css +32 -0
  74. package/dist/assets/transition.css +154 -0
  75. package/dist/assets/uikit.min.css +1 -0
  76. package/dist/assets/utility.css +494 -0
  77. package/dist/assets/variables.css +1 -0
  78. package/dist/assets/vars.css +89 -0
  79. package/dist/assets/visibility.css +140 -0
  80. package/dist/assets/width.css +538 -0
  81. package/dist/cjs/components/Accordion/Accordion.d.ts +3 -2
  82. package/dist/cjs/components/Accordion/Item.d.ts +1 -5
  83. package/dist/cjs/components/Accordion/Item.js +0 -4
  84. package/dist/cjs/components/Accordion/index.d.ts +1 -1
  85. package/dist/cjs/components/Alert/index.js +1 -3
  86. package/dist/cjs/components/Align/Align.d.ts +1 -1
  87. package/dist/cjs/components/Align/Center.d.ts +1 -1
  88. package/dist/cjs/components/Align/Left.d.ts +1 -1
  89. package/dist/cjs/components/Align/Right.d.ts +1 -1
  90. package/dist/cjs/components/Article/Article.d.ts +1 -1
  91. package/dist/cjs/components/Article/Meta.d.ts +1 -1
  92. package/dist/cjs/components/Article/Title.d.ts +1 -1
  93. package/dist/cjs/components/Badge/index.d.ts +1 -1
  94. package/dist/cjs/components/Breadcrumb/Breadcrumb.d.ts +1 -1
  95. package/dist/cjs/components/Breadcrumb/Item.d.ts +1 -1
  96. package/dist/cjs/components/Button/Group.d.ts +1 -1
  97. package/dist/cjs/components/Card/Badge.d.ts +1 -1
  98. package/dist/cjs/components/Card/Body.d.ts +1 -1
  99. package/dist/cjs/components/Card/Card.d.ts +1 -1
  100. package/dist/cjs/components/Card/Footer.d.ts +1 -1
  101. package/dist/cjs/components/Card/Header.d.ts +1 -1
  102. package/dist/cjs/components/Card/Media.d.ts +1 -1
  103. package/dist/cjs/components/Card/Title.d.ts +1 -1
  104. package/dist/cjs/components/Close/index.d.ts +1 -1
  105. package/dist/cjs/components/Component/index.d.ts +1 -1
  106. package/dist/cjs/components/ConfigProvider/index.d.ts +55 -40
  107. package/dist/cjs/components/Container/index.d.ts +1 -1
  108. package/dist/cjs/components/Control/Checkbox/Checkbox.d.ts +2 -2
  109. package/dist/cjs/components/Control/Checkbox/Group.d.ts +2 -2
  110. package/dist/cjs/components/Control/Checkbox/index.d.ts +1 -1
  111. package/dist/cjs/components/Control/Input/Input.js +2 -2
  112. package/dist/cjs/components/Control/Input/Number/index.js +4 -4
  113. package/dist/cjs/components/Control/Input/useInput.js +2 -1
  114. package/dist/cjs/components/Control/Radio/Group.js +2 -4
  115. package/dist/cjs/components/Control/Radio/index.d.ts +1 -1
  116. package/dist/cjs/components/Control/Select/Select.d.ts +18 -0
  117. package/dist/cjs/components/Control/Select/Select.js +248 -0
  118. package/dist/cjs/components/Control/Select/index.d.ts +4 -21
  119. package/dist/cjs/components/Control/Select/index.js +2 -246
  120. package/dist/cjs/components/Control/Select/placements.d.ts +1 -1
  121. package/dist/cjs/components/Control/TextArea/index.d.ts +3 -3
  122. package/dist/cjs/components/Control/TextArea/index.js +6 -5
  123. package/dist/cjs/components/Cover/index.d.ts +1 -1
  124. package/dist/cjs/components/DatePicker/PickerButton.d.ts +1 -1
  125. package/dist/cjs/components/DatePicker/generatePurePicker.js +1 -3
  126. package/dist/cjs/components/DescriptionList/Description.d.ts +1 -1
  127. package/dist/cjs/components/DescriptionList/DescriptionList.d.ts +1 -1
  128. package/dist/cjs/components/DescriptionList/Term.d.ts +1 -1
  129. package/dist/cjs/components/Divider/index.d.ts +1 -1
  130. package/dist/cjs/components/Dotnav/Dotnav.d.ts +1 -1
  131. package/dist/cjs/components/Dotnav/Item.d.ts +1 -1
  132. package/dist/cjs/components/Drawer/index.d.ts +1 -1
  133. package/dist/cjs/components/Drop/index.d.ts +1 -2
  134. package/dist/cjs/components/Drop/index.js +2 -1
  135. package/dist/cjs/components/Flex/Flex.d.ts +1 -1
  136. package/dist/cjs/components/Flex/Item.d.ts +1 -1
  137. package/dist/cjs/components/Flex/index.d.ts +1 -1
  138. package/dist/cjs/components/Form/Controls.d.ts +1 -1
  139. package/dist/cjs/components/Form/ControlsText.d.ts +1 -1
  140. package/dist/cjs/components/Form/Fieldset.d.ts +1 -1
  141. package/dist/cjs/components/Form/Form.d.ts +1 -1
  142. package/dist/cjs/components/Form/Label.d.ts +1 -1
  143. package/dist/cjs/components/Form/Legend.d.ts +1 -1
  144. package/dist/cjs/components/Grid/index.d.ts +1 -1
  145. package/dist/cjs/components/Heading/index.d.ts +1 -1
  146. package/dist/cjs/components/Icon/Button.d.ts +1 -1
  147. package/dist/cjs/components/Icon/Icon.d.ts +1 -1
  148. package/dist/cjs/components/Icon/Link.d.ts +1 -1
  149. package/dist/cjs/components/Icon/index.d.ts +1 -1
  150. package/dist/cjs/components/Iconnav/Iconnav.d.ts +1 -1
  151. package/dist/cjs/components/Iconnav/Item.d.ts +1 -1
  152. package/dist/cjs/components/Inverse/index.d.ts +2 -2
  153. package/dist/cjs/components/Label/index.d.ts +1 -1
  154. package/dist/cjs/components/List/Item.d.ts +1 -1
  155. package/dist/cjs/components/List/List.d.ts +1 -1
  156. package/dist/cjs/components/Modal/index.d.ts +1 -1
  157. package/dist/cjs/components/Nav/Divider.d.ts +1 -1
  158. package/dist/cjs/components/Nav/Divider.js +4 -8
  159. package/dist/cjs/components/Nav/Group/InternalNavGroup.d.ts +10 -0
  160. package/dist/cjs/components/Nav/Group/{InternalNavItemGroup.js → InternalNavGroup.js} +9 -9
  161. package/dist/cjs/components/Nav/Group/index.d.ts +4 -5
  162. package/dist/cjs/components/Nav/Group/index.js +12 -15
  163. package/dist/cjs/components/Nav/Header.d.ts +1 -3
  164. package/dist/cjs/components/Nav/Header.js +4 -4
  165. package/dist/cjs/components/Nav/Icon/index.d.ts +7 -0
  166. package/dist/cjs/components/Nav/{context/PrivateContext.js → Icon/index.js} +13 -5
  167. package/dist/cjs/components/Nav/Item/InternalNavItem.d.ts +1 -5
  168. package/dist/cjs/components/Nav/Item/InternalNavItem.js +26 -47
  169. package/dist/cjs/components/Nav/Item/LegacyNavItem.js +12 -6
  170. package/dist/cjs/components/Nav/Item/index.d.ts +1 -4
  171. package/dist/cjs/components/Nav/Item/index.js +9 -12
  172. package/dist/cjs/components/Nav/Nav.d.ts +8 -21
  173. package/dist/cjs/components/Nav/Nav.js +84 -89
  174. package/dist/cjs/components/Nav/Sub/InlineSubNavList.d.ts +1 -1
  175. package/dist/cjs/components/Nav/Sub/InlineSubNavList.js +6 -6
  176. package/dist/cjs/components/Nav/Sub/InternalSubNav.d.ts +15 -0
  177. package/dist/cjs/components/Nav/Sub/InternalSubNav.js +196 -0
  178. package/dist/cjs/components/Nav/Sub/PopupTrigger.d.ts +2 -1
  179. package/dist/cjs/components/Nav/Sub/PopupTrigger.js +10 -11
  180. package/dist/cjs/components/Nav/Sub/SubNavList.d.ts +1 -2
  181. package/dist/cjs/components/Nav/Sub/SubNavList.js +5 -5
  182. package/dist/cjs/components/Nav/Sub/index.d.ts +4 -15
  183. package/dist/cjs/components/Nav/Sub/index.js +11 -174
  184. package/dist/cjs/components/Nav/context/NavContext.d.ts +7 -3
  185. package/dist/cjs/components/Nav/context/NavContext.js +6 -6
  186. package/dist/cjs/components/Nav/context/index.d.ts +3 -0
  187. package/dist/cjs/components/Nav/context/index.js +19 -0
  188. package/dist/cjs/components/Nav/hooks/index.d.ts +5 -0
  189. package/dist/cjs/components/Nav/hooks/index.js +21 -0
  190. package/dist/cjs/components/Nav/hooks/useAccessibility.d.ts +11 -0
  191. package/dist/cjs/components/Nav/hooks/useAccessibility.js +97 -99
  192. package/dist/cjs/components/Nav/hooks/useActive.js +5 -13
  193. package/dist/cjs/components/Nav/hooks/useDirectionStyle.js +2 -2
  194. package/dist/cjs/components/Nav/hooks/useKeyRecords.d.ts +3 -3
  195. package/dist/cjs/components/Nav/hooks/useKeyRecords.js +5 -8
  196. package/dist/cjs/components/Nav/types.d.ts +14 -1
  197. package/dist/cjs/components/Nav/utils/alignUtil.d.ts +1 -1
  198. package/dist/cjs/components/Nav/utils/alignUtil.js +1 -4
  199. package/dist/cjs/components/Nav/utils/index.d.ts +5 -0
  200. package/dist/cjs/components/Nav/utils/index.js +21 -0
  201. package/dist/cjs/components/Nav/utils/nodeUtil.d.ts +2 -2
  202. package/dist/cjs/components/Nav/utils/nodeUtil.js +38 -34
  203. package/dist/cjs/components/Nav/utils/warnUtil.js +2 -5
  204. package/dist/cjs/components/Navbar/Center.d.ts +1 -1
  205. package/dist/cjs/components/Navbar/Container.d.ts +1 -1
  206. package/dist/cjs/components/Navbar/Item.d.ts +1 -1
  207. package/dist/cjs/components/Navbar/Left.d.ts +1 -1
  208. package/dist/cjs/components/Navbar/Navbar.d.ts +1 -1
  209. package/dist/cjs/components/Navbar/Right.d.ts +1 -1
  210. package/dist/cjs/components/Navbar/Toggle.d.ts +1 -1
  211. package/dist/cjs/components/Overlay/index.d.ts +1 -1
  212. package/dist/cjs/components/Progress/index.d.ts +1 -1
  213. package/dist/cjs/components/Section/index.d.ts +1 -1
  214. package/dist/cjs/components/Segmented/index.d.ts +1 -1
  215. package/dist/cjs/components/Slider/index.d.ts +1 -2
  216. package/dist/cjs/components/Spinner/index.d.ts +1 -1
  217. package/dist/cjs/components/Subnav/Item.d.ts +1 -1
  218. package/dist/cjs/components/Subnav/Subnav.d.ts +1 -1
  219. package/dist/cjs/components/Tabs/index.d.ts +6 -4
  220. package/dist/cjs/components/Tabs/index.js +8 -7
  221. package/dist/cjs/components/Text/index.d.ts +1 -1
  222. package/dist/cjs/components/Tile/index.d.ts +1 -1
  223. package/dist/cjs/components/Width/Width.d.ts +1 -1
  224. package/dist/cjs/constants.d.ts +12 -0
  225. package/dist/cjs/constants.js +16 -0
  226. package/dist/cjs/index.js +1 -1
  227. package/dist/cjs/utils/motion.d.ts +1 -1
  228. package/dist/esm/components/Accordion/Accordion.d.ts +3 -2
  229. package/dist/esm/components/Accordion/Item.d.ts +1 -5
  230. package/dist/esm/components/Accordion/Item.js +0 -4
  231. package/dist/esm/components/Accordion/index.d.ts +1 -1
  232. package/dist/esm/components/Alert/index.js +1 -3
  233. package/dist/esm/components/Align/Align.d.ts +1 -1
  234. package/dist/esm/components/Align/Center.d.ts +1 -1
  235. package/dist/esm/components/Align/Left.d.ts +1 -1
  236. package/dist/esm/components/Align/Right.d.ts +1 -1
  237. package/dist/esm/components/Article/Article.d.ts +1 -1
  238. package/dist/esm/components/Article/Meta.d.ts +1 -1
  239. package/dist/esm/components/Article/Title.d.ts +1 -1
  240. package/dist/esm/components/Badge/index.d.ts +1 -1
  241. package/dist/esm/components/Breadcrumb/Breadcrumb.d.ts +1 -1
  242. package/dist/esm/components/Breadcrumb/Item.d.ts +1 -1
  243. package/dist/esm/components/Button/Group.d.ts +1 -1
  244. package/dist/esm/components/Card/Badge.d.ts +1 -1
  245. package/dist/esm/components/Card/Body.d.ts +1 -1
  246. package/dist/esm/components/Card/Card.d.ts +1 -1
  247. package/dist/esm/components/Card/Footer.d.ts +1 -1
  248. package/dist/esm/components/Card/Header.d.ts +1 -1
  249. package/dist/esm/components/Card/Media.d.ts +1 -1
  250. package/dist/esm/components/Card/Title.d.ts +1 -1
  251. package/dist/esm/components/Close/index.d.ts +1 -1
  252. package/dist/esm/components/Component/index.d.ts +1 -1
  253. package/dist/esm/components/ConfigProvider/index.d.ts +55 -40
  254. package/dist/esm/components/Container/index.d.ts +1 -1
  255. package/dist/esm/components/Control/Checkbox/Checkbox.d.ts +2 -2
  256. package/dist/esm/components/Control/Checkbox/Group.d.ts +2 -2
  257. package/dist/esm/components/Control/Checkbox/index.d.ts +1 -1
  258. package/dist/esm/components/Control/Input/Input.js +1 -1
  259. package/dist/esm/components/Control/Input/Number/index.js +3 -3
  260. package/dist/esm/components/Control/Input/useInput.js +2 -1
  261. package/dist/esm/components/Control/Radio/Group.js +2 -4
  262. package/dist/esm/components/Control/Radio/index.d.ts +1 -1
  263. package/dist/esm/components/Control/Select/Select.d.ts +18 -0
  264. package/dist/esm/components/Control/Select/Select.js +209 -0
  265. package/dist/esm/components/Control/Select/index.d.ts +4 -21
  266. package/dist/esm/components/Control/Select/index.js +1 -210
  267. package/dist/esm/components/Control/Select/placements.d.ts +1 -1
  268. package/dist/esm/components/Control/TextArea/index.d.ts +3 -3
  269. package/dist/esm/components/Control/TextArea/index.js +5 -4
  270. package/dist/esm/components/Cover/index.d.ts +1 -1
  271. package/dist/esm/components/DatePicker/PickerButton.d.ts +1 -1
  272. package/dist/esm/components/DatePicker/generatePurePicker.js +1 -3
  273. package/dist/esm/components/DescriptionList/Description.d.ts +1 -1
  274. package/dist/esm/components/DescriptionList/DescriptionList.d.ts +1 -1
  275. package/dist/esm/components/DescriptionList/Term.d.ts +1 -1
  276. package/dist/esm/components/Divider/index.d.ts +1 -1
  277. package/dist/esm/components/Dotnav/Dotnav.d.ts +1 -1
  278. package/dist/esm/components/Dotnav/Item.d.ts +1 -1
  279. package/dist/esm/components/Drawer/index.d.ts +1 -1
  280. package/dist/esm/components/Drop/index.d.ts +1 -2
  281. package/dist/esm/components/Drop/index.js +2 -1
  282. package/dist/esm/components/Flex/Flex.d.ts +1 -1
  283. package/dist/esm/components/Flex/Item.d.ts +1 -1
  284. package/dist/esm/components/Flex/index.d.ts +1 -1
  285. package/dist/esm/components/Form/Controls.d.ts +1 -1
  286. package/dist/esm/components/Form/ControlsText.d.ts +1 -1
  287. package/dist/esm/components/Form/Fieldset.d.ts +1 -1
  288. package/dist/esm/components/Form/Form.d.ts +1 -1
  289. package/dist/esm/components/Form/Label.d.ts +1 -1
  290. package/dist/esm/components/Form/Legend.d.ts +1 -1
  291. package/dist/esm/components/Grid/index.d.ts +1 -1
  292. package/dist/esm/components/Heading/index.d.ts +1 -1
  293. package/dist/esm/components/Icon/Button.d.ts +1 -1
  294. package/dist/esm/components/Icon/Icon.d.ts +1 -1
  295. package/dist/esm/components/Icon/Link.d.ts +1 -1
  296. package/dist/esm/components/Icon/index.d.ts +1 -1
  297. package/dist/esm/components/Iconnav/Iconnav.d.ts +1 -1
  298. package/dist/esm/components/Iconnav/Item.d.ts +1 -1
  299. package/dist/esm/components/Inverse/index.d.ts +2 -2
  300. package/dist/esm/components/Label/index.d.ts +1 -1
  301. package/dist/esm/components/List/Item.d.ts +1 -1
  302. package/dist/esm/components/List/List.d.ts +1 -1
  303. package/dist/esm/components/Modal/index.d.ts +1 -1
  304. package/dist/esm/components/Nav/Divider.d.ts +1 -1
  305. package/dist/esm/components/Nav/Divider.js +2 -6
  306. package/dist/esm/components/Nav/Group/InternalNavGroup.d.ts +10 -0
  307. package/dist/esm/components/Nav/Group/InternalNavGroup.js +16 -0
  308. package/dist/esm/components/Nav/Group/index.d.ts +4 -5
  309. package/dist/esm/components/Nav/Group/index.js +7 -7
  310. package/dist/esm/components/Nav/Header.d.ts +1 -3
  311. package/dist/esm/components/Nav/Header.js +3 -3
  312. package/dist/esm/components/Nav/Icon/index.d.ts +7 -0
  313. package/dist/esm/components/Nav/Icon/index.js +14 -0
  314. package/dist/esm/components/Nav/Item/InternalNavItem.d.ts +1 -5
  315. package/dist/esm/components/Nav/Item/InternalNavItem.js +16 -37
  316. package/dist/esm/components/Nav/Item/LegacyNavItem.js +11 -5
  317. package/dist/esm/components/Nav/Item/index.d.ts +1 -4
  318. package/dist/esm/components/Nav/Item/index.js +5 -8
  319. package/dist/esm/components/Nav/Nav.d.ts +8 -21
  320. package/dist/esm/components/Nav/Nav.js +70 -75
  321. package/dist/esm/components/Nav/Sub/InlineSubNavList.d.ts +1 -1
  322. package/dist/esm/components/Nav/Sub/InlineSubNavList.js +3 -3
  323. package/dist/esm/components/Nav/Sub/InternalSubNav.d.ts +15 -0
  324. package/dist/esm/components/Nav/Sub/InternalSubNav.js +157 -0
  325. package/dist/esm/components/Nav/Sub/PopupTrigger.d.ts +2 -1
  326. package/dist/esm/components/Nav/Sub/PopupTrigger.js +9 -10
  327. package/dist/esm/components/Nav/Sub/SubNavList.d.ts +1 -2
  328. package/dist/esm/components/Nav/Sub/SubNavList.js +4 -4
  329. package/dist/esm/components/Nav/Sub/index.d.ts +4 -15
  330. package/dist/esm/components/Nav/Sub/index.js +7 -167
  331. package/dist/esm/components/Nav/context/NavContext.d.ts +7 -3
  332. package/dist/esm/components/Nav/context/NavContext.js +6 -6
  333. package/dist/esm/components/Nav/context/index.d.ts +3 -0
  334. package/dist/esm/components/Nav/context/index.js +3 -0
  335. package/dist/esm/components/Nav/hooks/index.d.ts +5 -0
  336. package/dist/esm/components/Nav/hooks/index.js +5 -0
  337. package/dist/esm/components/Nav/hooks/useAccessibility.d.ts +11 -0
  338. package/dist/esm/components/Nav/hooks/useAccessibility.js +96 -100
  339. package/dist/esm/components/Nav/hooks/useActive.js +5 -13
  340. package/dist/esm/components/Nav/hooks/useDirectionStyle.js +1 -1
  341. package/dist/esm/components/Nav/hooks/useKeyRecords.d.ts +3 -3
  342. package/dist/esm/components/Nav/hooks/useKeyRecords.js +3 -3
  343. package/dist/esm/components/Nav/types.d.ts +14 -1
  344. package/dist/esm/components/Nav/utils/alignUtil.d.ts +1 -1
  345. package/dist/esm/components/Nav/utils/alignUtil.js +1 -4
  346. package/dist/esm/components/Nav/utils/index.d.ts +5 -0
  347. package/dist/esm/components/Nav/utils/index.js +5 -0
  348. package/dist/esm/components/Nav/utils/nodeUtil.d.ts +2 -2
  349. package/dist/esm/components/Nav/utils/nodeUtil.js +38 -31
  350. package/dist/esm/components/Nav/utils/warnUtil.js +1 -1
  351. package/dist/esm/components/Navbar/Center.d.ts +1 -1
  352. package/dist/esm/components/Navbar/Container.d.ts +1 -1
  353. package/dist/esm/components/Navbar/Item.d.ts +1 -1
  354. package/dist/esm/components/Navbar/Left.d.ts +1 -1
  355. package/dist/esm/components/Navbar/Navbar.d.ts +1 -1
  356. package/dist/esm/components/Navbar/Right.d.ts +1 -1
  357. package/dist/esm/components/Navbar/Toggle.d.ts +1 -1
  358. package/dist/esm/components/Overlay/index.d.ts +1 -1
  359. package/dist/esm/components/Progress/index.d.ts +1 -1
  360. package/dist/esm/components/Section/index.d.ts +1 -1
  361. package/dist/esm/components/Segmented/index.d.ts +1 -1
  362. package/dist/esm/components/Slider/index.d.ts +1 -2
  363. package/dist/esm/components/Spinner/index.d.ts +1 -1
  364. package/dist/esm/components/Subnav/Item.d.ts +1 -1
  365. package/dist/esm/components/Subnav/Subnav.d.ts +1 -1
  366. package/dist/esm/components/Tabs/index.d.ts +6 -4
  367. package/dist/esm/components/Tabs/index.js +8 -7
  368. package/dist/esm/components/Text/index.d.ts +1 -1
  369. package/dist/esm/components/Tile/index.d.ts +1 -1
  370. package/dist/esm/components/Width/Width.d.ts +1 -1
  371. package/dist/esm/constants.d.ts +12 -0
  372. package/dist/esm/constants.js +13 -0
  373. package/dist/esm/utils/motion.d.ts +1 -1
  374. package/package.json +23 -20
  375. package/styles/accordion.scss +56 -30
  376. package/styles/alert.scss +6 -5
  377. package/styles/animation.scss +64 -213
  378. package/styles/background.scss +34 -131
  379. package/styles/base.scss +37 -65
  380. package/styles/breadcrumb.scss +6 -9
  381. package/styles/button.scss +22 -62
  382. package/styles/control.scss +1 -0
  383. package/styles/datepicker.scss +3 -2
  384. package/styles/input-number.scss +11 -21
  385. package/styles/leader.scss +2 -2
  386. package/styles/mixins.scss +10 -19
  387. package/styles/nav.scss +7 -28
  388. package/styles/navbar.scss +185 -160
  389. package/styles/search.scss +16 -46
  390. package/styles/select.scss +9 -4
  391. package/styles/subnav.scss +1 -1
  392. package/styles/switch.scss +12 -0
  393. package/styles/tabs.scss +65 -37
  394. package/styles/text.scss +65 -65
  395. package/styles/thumbnav.scss +4 -4
  396. package/styles/variables.scss +36 -19
  397. package/dist/cjs/components/Nav/Group/InternalNavItemGroup.d.ts +0 -14
  398. package/dist/cjs/components/Nav/context/PrivateContext.d.ts +0 -7
  399. package/dist/cjs/components/Nav/hooks/useUUID.d.ts +0 -1
  400. package/dist/cjs/components/Nav/hooks/useUUID.js +0 -56
  401. package/dist/esm/components/Nav/Group/InternalNavItemGroup.d.ts +0 -14
  402. package/dist/esm/components/Nav/Group/InternalNavItemGroup.js +0 -16
  403. package/dist/esm/components/Nav/context/PrivateContext.d.ts +0 -7
  404. package/dist/esm/components/Nav/context/PrivateContext.js +0 -6
  405. package/dist/esm/components/Nav/hooks/useUUID.d.ts +0 -1
  406. package/dist/esm/components/Nav/hooks/useUUID.js +0 -17
@@ -1,12 +1,12 @@
1
1
  import CSSMotion from '@rc-component/motion';
2
2
  import * as React from 'react';
3
3
  import { useConfig } from '../../../components/ConfigProvider';
4
- import { NavContext, NavContextProvider } from '../../../components/Nav/context/NavContext';
4
+ import { NavContext, NavContextProvider } from '../../../components/Nav/context';
5
5
  import { SubNavList } from '../../../components/Nav/Sub/SubNavList';
6
- import { getMotion } from '../../../components/Nav/utils/motionUtil';
6
+ import { getMotion } from '../../../components/Nav/utils';
7
+ const fixedMode = 'inline';
7
8
  export function InlineSubNavList({ children, id, keyPath, open }) {
8
9
  const config = useConfig();
9
- const fixedMode = 'inline';
10
10
  const { defaultMotions, forceSubNavRender, mode, motion, prefixCls, } = React.useContext(NavContext);
11
11
  // Always use the latest mode check
12
12
  const sameModeRef = React.useRef(false);
@@ -0,0 +1,15 @@
1
+ import * as React from 'react';
2
+ import { type NavPopupRender, type SubNavType } from '../../../components/Nav/types';
3
+ export type SemanticName = 'list' | 'listTitle';
4
+ export interface SubNavProps extends Omit<SubNavType, 'children' | 'key' | 'label'> {
5
+ classNames?: Partial<Record<SemanticName, string>>;
6
+ eventKey?: string;
7
+ internalPopupClose?: boolean;
8
+ popupRender?: NavPopupRender;
9
+ styles?: Partial<Record<SemanticName, React.CSSProperties>>;
10
+ title?: React.ReactNode;
11
+ warnKey?: boolean;
12
+ }
13
+ export declare const InternalSubNav: React.ForwardRefExoticComponent<SubNavProps & {
14
+ children?: React.ReactNode | undefined;
15
+ } & React.RefAttributes<HTMLLIElement>>;
@@ -0,0 +1,157 @@
1
+ /* eslint-disable jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions */
2
+ import { warning } from '@rc-component/util';
3
+ import classNames from 'classnames';
4
+ import Overflow from 'rc-overflow';
5
+ import * as React from 'react';
6
+ import { useConfig } from '../../../components/ConfigProvider';
7
+ import { NavContext, NavContextProvider, PathUserContext, useFullPath, useNavId } from '../../../components/Nav/context';
8
+ import { useActive, useDirectionStyle, useMemoCallback } from '../../../components/Nav/hooks';
9
+ import { InlineSubNavList } from '../../../components/Nav/Sub/InlineSubNavList';
10
+ import { PopupTrigger } from '../../../components/Nav/Sub/PopupTrigger';
11
+ import { SubNavList } from '../../../components/Nav/Sub/SubNavList';
12
+ import { warnItemProp } from '../../../components/Nav/utils';
13
+ export const InternalSubNav = React.forwardRef(({ children, className, classNames: navClassNames, disabled, eventKey, expandIcon, internalPopupClose, itemIcon, popupClassName, popupOffset, popupRender: propsPopupRender, popupStyle, style, styles, title, warnKey, onClick, onMouseEnter, onMouseLeave, onTitleClick, onTitleMouseEnter, onTitleMouseLeave, ...props }, ref) => {
14
+ const config = useConfig();
15
+ const connectedPath = useFullPath();
16
+ const domDataId = useNavId(eventKey);
17
+ const { activeKey, disabled: contextDisabled, expandIcon: contextExpandIcon, itemIcon: contextItemIcon, mode, openKeys, overflowDisabled, popupPrefixCls, popupRender: contextPopupRender, selectedKeys, onActive, onItemClick, onOpenChange, } = React.useContext(NavContext);
18
+ const pathUser = React.useContext(PathUserContext);
19
+ const elementRef = React.useRef(null);
20
+ const popupRef = React.useRef(null);
21
+ const mergedDisabled = contextDisabled || disabled;
22
+ // ================================ Warn ================================
23
+ if (process.env.NODE_ENV !== 'production' && warnKey) {
24
+ warning(false, 'SubNav should not leave undefined `key`.');
25
+ }
26
+ // ================================ Icon ================================
27
+ const mergedItemIcon = itemIcon || contextItemIcon;
28
+ const mergedExpandIcon = expandIcon || contextExpandIcon;
29
+ // ================================ Open ================================
30
+ const originOpen = eventKey ? openKeys.includes(eventKey) : false;
31
+ const open = !overflowDisabled && originOpen;
32
+ // =============================== Select ===============================
33
+ const childrenSelected = eventKey ? pathUser?.isSubPathKey(selectedKeys, eventKey) : false;
34
+ // =============================== Active ===============================
35
+ const { active, ...activeProps } = useActive(eventKey, mergedDisabled, onTitleMouseEnter, onTitleMouseLeave);
36
+ // Fallback of active check to avoid hover on menu title or disabled item
37
+ const [childrenActive, setChildrenActive] = React.useState(false);
38
+ const triggerChildrenActive = (newActive) => {
39
+ if (!mergedDisabled) {
40
+ setChildrenActive(newActive);
41
+ }
42
+ };
43
+ const onInternalMouseEnter = domEvent => {
44
+ triggerChildrenActive(true);
45
+ if (eventKey) {
46
+ onMouseEnter?.({ domEvent, key: eventKey });
47
+ }
48
+ };
49
+ const onInternalMouseLeave = domEvent => {
50
+ triggerChildrenActive(false);
51
+ if (eventKey) {
52
+ onMouseLeave?.({ domEvent, key: eventKey });
53
+ }
54
+ };
55
+ const mergedActive = React.useMemo(() => {
56
+ if (active) {
57
+ return active;
58
+ }
59
+ if (mode !== 'inline' && eventKey) {
60
+ return childrenActive || pathUser?.isSubPathKey([activeKey], eventKey);
61
+ }
62
+ return false;
63
+ }, [active, mode, eventKey, childrenActive, pathUser, activeKey]);
64
+ // ========================== DirectionStyle ==========================
65
+ const directionStyle = useDirectionStyle(connectedPath.length);
66
+ // =============================== Events ===============================
67
+ // Title click
68
+ const onInternalTitleClick = domEvent => {
69
+ // Skip if disabled
70
+ if (mergedDisabled) {
71
+ return;
72
+ }
73
+ if (eventKey) {
74
+ onTitleClick?.({ domEvent, key: eventKey });
75
+ }
76
+ // Trigger open by click when mode is `inline`
77
+ if (mode === 'inline' && eventKey) {
78
+ onOpenChange(eventKey, !originOpen);
79
+ }
80
+ };
81
+ // Context for children click
82
+ const onMergedItemClick = useMemoCallback((info) => {
83
+ onClick?.(warnItemProp(info));
84
+ onItemClick?.(info);
85
+ });
86
+ // Visible change
87
+ const onPopupVisibleChange = (newVisible) => {
88
+ if (mode !== 'inline' && eventKey) {
89
+ onOpenChange(eventKey, newVisible);
90
+ }
91
+ };
92
+ /**
93
+ * Used for accessibility. Helper will focus element without keyboard.
94
+ * We should manually trigger an active
95
+ */
96
+ const onInternalFocus = () => {
97
+ if (eventKey) {
98
+ onActive(eventKey);
99
+ }
100
+ };
101
+ // =============================== Render ===============================
102
+ const popupId = domDataId ? `${domDataId}-dropdown` : undefined;
103
+ // Title
104
+ let titleNode = (React.createElement("a", { ref: elementRef, "aria-controls": popupId, "aria-disabled": mergedDisabled, "aria-expanded": open, "aria-haspopup": true, "data-nav-id": overflowDisabled && domDataId ? null : domDataId, role: mergedDisabled ? undefined : 'menuitem', style: { ...directionStyle }, tabIndex: mergedDisabled ? undefined : -1, onClick: onInternalTitleClick, onFocus: onInternalFocus, ...activeProps },
105
+ React.createElement(React.Fragment, { key: "children" },
106
+ title,
107
+ typeof mergedExpandIcon === 'function' ? mergedExpandIcon({
108
+ disabled: mergedDisabled,
109
+ isOpen: open,
110
+ isSubNav: true,
111
+ }) : mergedExpandIcon)));
112
+ // Cache mode if it changes to `inline` which do not have popup motion
113
+ const triggerModeRef = React.useRef(mode);
114
+ if (mode !== 'inline' && connectedPath.length > 1) {
115
+ triggerModeRef.current = 'vertical';
116
+ }
117
+ else {
118
+ triggerModeRef.current = mode;
119
+ }
120
+ const popupContentTriggerMode = triggerModeRef.current;
121
+ const renderPopupContent = React.useMemo(() => {
122
+ const originNode = (React.createElement(NavContextProvider, { classNames: navClassNames, mode: popupContentTriggerMode === 'horizontal' ? 'vertical' : popupContentTriggerMode, styles: styles },
123
+ React.createElement(SubNavList, { ref: popupRef, className: `${popupPrefixCls}-nav`, id: popupId }, children)));
124
+ const mergedPopupRender = propsPopupRender || contextPopupRender;
125
+ if (mergedPopupRender) {
126
+ return mergedPopupRender(originNode, { item: props, keys: connectedPath });
127
+ }
128
+ return originNode;
129
+ }, [
130
+ navClassNames,
131
+ popupContentTriggerMode,
132
+ styles,
133
+ popupPrefixCls,
134
+ popupId,
135
+ children,
136
+ propsPopupRender,
137
+ contextPopupRender,
138
+ props,
139
+ connectedPath,
140
+ ]);
141
+ if (!overflowDisabled) {
142
+ const triggerMode = triggerModeRef.current;
143
+ // Still wrap with Trigger here since we need avoid react re-mount dom node
144
+ // Which makes motion failed
145
+ titleNode = (React.createElement(PopupTrigger, { disabled: mergedDisabled, mode: triggerMode, popup: renderPopupContent, popupClassName: popupClassName, popupOffset: popupOffset, popupStyle: popupStyle, prefixCls: popupPrefixCls, visible: !internalPopupClose && open && mode !== 'inline', onVisibleChange: onPopupVisibleChange }, titleNode));
146
+ }
147
+ // List node
148
+ const listNode = (React.createElement(Overflow.Item, { ref: ref, className: classNames(`${config.prefixCls}-parent`, className, {
149
+ [`${config.prefixCls}-active`]: childrenSelected,
150
+ [`${config.prefixCls}-disabled`]: mergedDisabled,
151
+ [`${config.prefixCls}-hover`]: mergedActive,
152
+ [`${config.prefixCls}-open`]: open,
153
+ }), role: "none", ...props, component: "li", style: style, onMouseEnter: onInternalMouseEnter, onMouseLeave: onInternalMouseLeave },
154
+ titleNode,
155
+ !overflowDisabled && (React.createElement(InlineSubNavList, { id: popupId, keyPath: connectedPath, open: open }, children))));
156
+ return (React.createElement(NavContextProvider, { classNames: navClassNames, expandIcon: mergedExpandIcon, itemIcon: mergedItemIcon, mode: mode === 'horizontal' ? 'vertical' : mode, styles: styles, onItemClick: onMergedItemClick }, listNode));
157
+ });
@@ -7,11 +7,12 @@ export interface PopupTriggerProps {
7
7
  popup: React.ReactNode;
8
8
  popupClassName?: string;
9
9
  popupOffset?: number[];
10
+ popupStyle?: React.CSSProperties;
10
11
  prefixCls: string;
11
12
  visible: boolean;
12
13
  onVisibleChange: (visible: boolean) => void;
13
14
  }
14
- export declare function PopupTrigger({ children, disabled, mode, popup, popupClassName, popupOffset, prefixCls, visible, onVisibleChange, }: PopupTriggerProps): React.JSX.Element;
15
+ export declare function PopupTrigger({ children, disabled, mode, popup, popupClassName, popupOffset, popupStyle, prefixCls, visible, onVisibleChange, }: PopupTriggerProps): React.ReactElement;
15
16
  export declare namespace PopupTrigger {
16
17
  var displayName: string;
17
18
  }
@@ -1,11 +1,12 @@
1
1
  import Trigger from '@rc-component/trigger';
2
- import raf from '@rc-component/util/lib/raf';
2
+ import { merge } from '@rc-component/util';
3
+ import raf from '@rc-component/util/es/raf';
3
4
  import classNames from 'classnames';
4
5
  import * as React from 'react';
5
6
  import { useConfig } from '../../../components/ConfigProvider';
6
- import { NavContext } from '../../../components/Nav/context/NavContext';
7
+ import { NavContext } from '../../../components/Nav/context';
7
8
  import { placements, placementsRtl } from '../../../components/Nav/placements';
8
- import { getMotion } from '../../../components/Nav/utils/motionUtil';
9
+ import { getMotion } from '../../../components/Nav/utils';
9
10
  const popupPlacementMap = {
10
11
  horizontal: 'bottom-left',
11
12
  inline: null,
@@ -13,13 +14,13 @@ const popupPlacementMap = {
13
14
  'vertical-left': 'right-top',
14
15
  'vertical-right': 'left-top',
15
16
  };
16
- export function PopupTrigger({ children, disabled, mode, popup, popupClassName, popupOffset, prefixCls, visible, onVisibleChange, }) {
17
+ export function PopupTrigger({ children, disabled, mode, popup, popupClassName, popupOffset, popupStyle, prefixCls, visible, onVisibleChange, }) {
17
18
  const config = useConfig();
18
- const { builtinPlacements, defaultMotions, forceSubNavRender, getPopupContainer, motion, rtl, subNavCloseDelay = 300, subNavOpenDelay, triggerSubNavAction = 'hover', } = React.useContext(NavContext);
19
+ const { builtinPlacements, defaultMotions, forceSubNavRender, getPopupContainer, motion, rootClassName, rtl, subNavCloseDelay = 300, subNavOpenDelay, triggerSubNavAction = 'hover', } = React.useContext(NavContext);
19
20
  const [innerVisible, setInnerVisible] = React.useState(false);
20
21
  const placement = rtl
21
- ? { ...placementsRtl, ...builtinPlacements }
22
- : { ...placements, ...builtinPlacements };
22
+ ? merge(placementsRtl, builtinPlacements || {})
23
+ : merge(placements, builtinPlacements || {});
23
24
  const popupPlacement = popupPlacementMap[mode];
24
25
  const targetMotion = getMotion(mode, motion, defaultMotions);
25
26
  const targetMotionRef = React.useRef(targetMotion);
@@ -48,9 +49,7 @@ export function PopupTrigger({ children, disabled, mode, popup, popupClassName,
48
49
  }
49
50
  };
50
51
  }, [visible]);
51
- return (React.createElement(Trigger, { action: disabled || !triggerSubNavAction ? [] : [triggerSubNavAction], builtinPlacements: placement, forceRender: forceSubNavRender, getPopupContainer: getPopupContainer, hideAction: disabled || !triggerSubNavAction ? [] : [triggerSubNavAction], mouseEnterDelay: subNavOpenDelay, mouseLeaveDelay: subNavCloseDelay, popup: popup, popupAlign: popupOffset && { offset: popupOffset }, popupClassName: classNames({
52
- [`${prefixCls}-rtl`]: rtl,
53
- }, popupClassName), popupMotion: mergedMotion, popupPlacement: popupPlacement, popupVisible: innerVisible, prefixCls: prefixCls, stretch: mode === 'horizontal' ? 'minWidth' : undefined, onPopupVisibleChange: onVisibleChange }, children));
52
+ return (React.createElement(Trigger, { action: disabled || !triggerSubNavAction ? [] : [triggerSubNavAction], builtinPlacements: placement, forceRender: forceSubNavRender, fresh: true, getPopupContainer: getPopupContainer, hideAction: disabled || !triggerSubNavAction ? [] : [triggerSubNavAction], mouseEnterDelay: subNavOpenDelay, mouseLeaveDelay: subNavCloseDelay, popup: popup, popupAlign: popupOffset && { offset: popupOffset }, popupClassName: classNames(`${config.prefixCls}-drop`, { [`${prefixCls}-rtl`]: rtl }, popupClassName, rootClassName), popupMotion: mergedMotion, popupPlacement: popupPlacement, popupStyle: popupStyle, popupVisible: innerVisible, prefixCls: prefixCls, stretch: mode === 'horizontal' ? 'minWidth' : undefined, onOpenChange: onVisibleChange }, children));
54
53
  }
55
54
  if (process.env.NODE_ENV !== 'production') {
56
55
  PopupTrigger.displayName = 'Nav.PopupTrigger';
@@ -1,3 +1,2 @@
1
1
  import * as React from 'react';
2
- export type SubNavListProps = React.HTMLAttributes<HTMLUListElement>;
3
- export declare const SubNavList: React.ForwardRefExoticComponent<SubNavListProps & React.RefAttributes<HTMLUListElement>>;
2
+ export declare const SubNavList: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLUListElement> & React.RefAttributes<HTMLUListElement>>;
@@ -1,13 +1,13 @@
1
1
  import classNames from 'classnames';
2
2
  import * as React from 'react';
3
- import { NavContext } from '../../../components/Nav/context/NavContext';
4
- export const SubNavList = React.forwardRef(({ children, className, ...restProps }, ref) => {
3
+ import { NavContext } from '../../../components/Nav/context';
4
+ export const SubNavList = React.forwardRef(({ children, className, ...props }, ref) => {
5
5
  const { mode, prefixCls, rtl } = React.useContext(NavContext);
6
- return (React.createElement("ul", { className: classNames({
6
+ return (React.createElement("ul", { ref: ref, className: classNames({
7
7
  [`${prefixCls}-sub-rtl`]: rtl && mode === 'inline',
8
8
  [`${prefixCls}-sub`]: mode === 'inline',
9
9
  [prefixCls]: mode !== 'inline',
10
- }, className), ...restProps, ref: ref, "data-nav-list": "" }, children));
10
+ }, className), ...props, "data-nav-list": true, role: "menu" }, children));
11
11
  });
12
12
  if (process.env.NODE_ENV !== 'production') {
13
13
  SubNavList.displayName = 'Nav.SubNavList';
@@ -1,16 +1,5 @@
1
1
  import * as React from 'react';
2
- import { type SubNavType } from '../../../components/Nav/types';
3
- export interface SubNavProps extends Omit<SubNavType, 'children' | 'key' | 'label'> {
4
- children?: React.ReactNode;
5
- /** @private Internal filled key. Do not set it directly */
6
- eventKey?: string;
7
- /** @private Used for rest popup. Do not use in your prod */
8
- internalPopupClose?: boolean;
9
- title?: React.ReactNode;
10
- /** @private Do not use. Private warning empty usage */
11
- warnKey?: boolean;
12
- }
13
- export declare function Sub({ children, eventKey, ...restProps }: SubNavProps): React.JSX.Element;
14
- export declare namespace Sub {
15
- var displayName: string;
16
- }
2
+ import { type SubNavProps } from '../../../components/Nav/Sub/InternalSubNav';
3
+ export declare const Sub: React.ForwardRefExoticComponent<SubNavProps & {
4
+ children?: React.ReactNode | undefined;
5
+ } & React.RefAttributes<HTMLLIElement>>;
@@ -1,172 +1,12 @@
1
- /* eslint-disable jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions */
2
1
  import { noop } from '@broxus/js-utils';
3
- import warning from '@rc-component/util/lib/warning';
4
- import classNames from 'classnames';
5
- import Overflow from 'rc-overflow';
6
2
  import * as React from 'react';
7
- import { useNavId } from '../../../components/Nav/context/IdContext';
8
- import { NavContext, NavContextProvider } from '../../../components/Nav/context/NavContext';
9
- import { PathTrackerContext, PathUserContext, useFullPath, useMeasure } from '../../../components/Nav/context/PathContext';
10
- import { PrivateContext } from '../../../components/Nav/context/PrivateContext';
11
- import { useActive } from '../../../components/Nav/hooks/useActive';
12
- import { useDirectionStyle } from '../../../components/Nav/hooks/useDirectionStyle';
13
- import { useMemoCallback } from '../../../components/Nav/hooks/useMemoCallback';
14
- import { InlineSubNavList } from '../../../components/Nav/Sub/InlineSubNavList';
15
- import { PopupTrigger } from '../../../components/Nav/Sub/PopupTrigger';
16
- import { SubNavList } from '../../../components/Nav/Sub/SubNavList';
17
- import { parseChildren } from '../../../components/Nav/utils/nodeUtil';
18
- import { warnItemProp } from '../../../components/Nav/utils/warnUtil';
19
- function InternalSubNav({ children, className, disabled, eventKey, expandIcon, internalPopupClose, itemIcon, popupClassName, popupOffset, style, title, warnKey, onClick, onMouseEnter, onMouseLeave, onTitleClick, onTitleMouseEnter, onTitleMouseLeave, ...props }) {
20
- const domDataId = useNavId(eventKey);
21
- const { activeKey, disabled: contextDisabled, expandIcon: contextExpandIcon, itemIcon: contextItemIcon, mode, openKeys, overflowDisabled, popupPrefixCls, selectedKeys, onActive, onItemClick, onOpenChange, } = React.useContext(NavContext);
22
- const pathUser = React.useContext(PathUserContext);
23
- const connectedPath = useFullPath();
24
- const { _internalRenderSubMenuItem } = React.useContext(PrivateContext);
25
- const mergedDisabled = contextDisabled || disabled;
26
- const elementRef = React.useRef(null);
27
- const popupRef = React.useRef(null);
28
- // ================================ Warn ================================
29
- if (process.env.NODE_ENV !== 'production' && warnKey) {
30
- warning(false, 'SubNav should not leave undefined `key`.');
31
- }
32
- // ================================ Icon ================================
33
- const mergedItemIcon = itemIcon || contextItemIcon;
34
- const mergedExpandIcon = expandIcon || contextExpandIcon;
35
- // ================================ Open ================================
36
- const originOpen = eventKey ? openKeys.includes(eventKey) : false;
37
- const open = !overflowDisabled && originOpen;
38
- // =============================== Select ===============================
39
- const childrenSelected = eventKey ? pathUser?.isSubPathKey(selectedKeys, eventKey) : false;
40
- // =============================== Active ===============================
41
- const { active, ...activeProps } = useActive(eventKey, disabled, onTitleMouseEnter, onTitleMouseLeave);
42
- // Fallback of active check to avoid hover on menu title or disabled item
43
- const [childrenActive, setChildrenActive] = React.useState(false);
44
- const triggerChildrenActive = (newActive) => {
45
- if (!disabled) {
46
- setChildrenActive(newActive);
47
- }
48
- };
49
- const onInternalMouseEnter = domEvent => {
50
- triggerChildrenActive(true);
51
- if (eventKey) {
52
- onMouseEnter?.({
53
- domEvent,
54
- key: eventKey,
55
- });
56
- }
57
- };
58
- const onInternalMouseLeave = domEvent => {
59
- triggerChildrenActive(false);
60
- if (eventKey) {
61
- onMouseLeave?.({
62
- domEvent,
63
- key: eventKey,
64
- });
65
- }
66
- };
67
- const mergedActive = React.useMemo(() => {
68
- if (active) {
69
- return active;
70
- }
71
- if (mode !== 'inline' && eventKey) {
72
- return childrenActive || pathUser?.isSubPathKey([activeKey], eventKey);
73
- }
74
- return false;
75
- }, [active, mode, eventKey, childrenActive, pathUser, activeKey]);
76
- // ========================== DirectionStyle ==========================
77
- const directionStyle = useDirectionStyle(connectedPath.length);
78
- // =============================== Events ===============================
79
- // Title click
80
- const onInternalTitleClick = e => {
81
- // Skip if disabled
82
- if (disabled) {
83
- return;
84
- }
85
- if (eventKey) {
86
- onTitleClick?.({
87
- domEvent: e,
88
- key: eventKey,
89
- });
90
- }
91
- // Trigger open by click when mode is `inline`
92
- if (mode === 'inline' && eventKey) {
93
- onOpenChange(eventKey, !originOpen);
94
- }
95
- };
96
- // Context for children click
97
- const onMergedItemClick = useMemoCallback((info) => {
98
- onClick?.(warnItemProp(info));
99
- onItemClick?.(info);
100
- });
101
- // Visible change
102
- const onPopupVisibleChange = (newVisible) => {
103
- if (mode !== 'inline' && eventKey) {
104
- onOpenChange(eventKey, newVisible);
105
- }
106
- };
107
- /**
108
- * Used for accessibility. Helper will focus element without keyboard.
109
- * We should manually trigger an active
110
- */
111
- const onInternalFocus = () => {
112
- if (eventKey) {
113
- onActive(eventKey);
114
- }
115
- };
116
- // =============================== Render ===============================
117
- const popupId = domDataId ? `${domDataId}-dropdown` : undefined;
118
- // Title
119
- let titleNode = (React.createElement("a", { ref: elementRef, "aria-controls": popupId, "aria-disabled": disabled, "aria-expanded": open, "aria-haspopup": true, "data-nav-id": overflowDisabled && domDataId ? null : domDataId, role: disabled ? undefined : 'menuitem', style: { ...directionStyle }, tabIndex: disabled ? undefined : -1, title: typeof title === 'string' ? title : undefined, onClick: onInternalTitleClick, onFocus: onInternalFocus, ...activeProps },
120
- React.createElement(React.Fragment, { key: "children" },
121
- title,
122
- typeof mergedExpandIcon === 'function' ? mergedExpandIcon({
123
- disabled,
124
- isOpen: open,
125
- isSubNav: true,
126
- }) : mergedExpandIcon)));
127
- // Cache mode if it changes to `inline` which do not have popup motion
128
- const triggerModeRef = React.useRef(mode);
129
- if (mode !== 'inline' && connectedPath.length > 1) {
130
- triggerModeRef.current = 'vertical';
131
- }
132
- else {
133
- triggerModeRef.current = mode;
134
- }
135
- if (!overflowDisabled) {
136
- const triggerMode = triggerModeRef.current;
137
- // Still wrap with Trigger here since we need avoid react re-mount dom node
138
- // Which makes motion failed
139
- titleNode = (React.createElement(PopupTrigger, { disabled: disabled, mode: triggerMode, popup: (React.createElement(NavContextProvider
140
- // Special handle of horizontal mode
141
- , {
142
- // Special handle of horizontal mode
143
- mode: triggerMode === 'horizontal' ? 'vertical' : triggerMode },
144
- React.createElement(SubNavList, { ref: popupRef, className: `${popupPrefixCls}-nav`, id: popupId }, children))), popupClassName: popupClassName, popupOffset: popupOffset, prefixCls: popupPrefixCls, visible: !internalPopupClose && open && mode !== 'inline', onVisibleChange: onPopupVisibleChange }, titleNode));
145
- }
146
- // List node
147
- let listNode = (React.createElement(Overflow.Item, { className: classNames('uk-parent', className, {
148
- 'uk-active': childrenSelected,
149
- 'uk-disabled': disabled,
150
- 'uk-hover': mergedActive,
151
- 'uk-open': open,
152
- }), role: "none", ...props, component: "li", style: style, onMouseEnter: onInternalMouseEnter, onMouseLeave: onInternalMouseLeave },
153
- titleNode,
154
- !overflowDisabled && (React.createElement(InlineSubNavList, { id: popupId, keyPath: connectedPath, open: open }, children))));
155
- if (_internalRenderSubMenuItem) {
156
- listNode = _internalRenderSubMenuItem(listNode, props, {
157
- active: !!mergedActive,
158
- disabled: !!mergedDisabled,
159
- open,
160
- selected: !!childrenSelected,
161
- });
162
- }
163
- return (React.createElement(NavContextProvider, { expandIcon: mergedExpandIcon, itemIcon: mergedItemIcon, mode: mode === 'horizontal' ? 'vertical' : mode, onItemClick: onMergedItemClick }, listNode));
164
- }
165
- // eslint-disable-next-line react/no-multi-comp
166
- export function Sub({ children, eventKey, ...restProps }) {
3
+ import { PathTrackerContext, useFullPath, useMeasure } from '../../../components/Nav/context';
4
+ import { InternalSubNav } from '../../../components/Nav/Sub/InternalSubNav';
5
+ import { parseChildren } from '../../../components/Nav/utils';
6
+ export const Sub = React.forwardRef(({ children, eventKey, ...props }, ref) => {
167
7
  const connectedKeyPath = useFullPath(eventKey);
168
- const childList = parseChildren(children, connectedKeyPath);
169
8
  const measure = useMeasure();
9
+ const childList = parseChildren(children, connectedKeyPath);
170
10
  React.useEffect(() => {
171
11
  if (measure && eventKey) {
172
12
  measure.registerPath(eventKey, connectedKeyPath);
@@ -176,8 +16,8 @@ export function Sub({ children, eventKey, ...restProps }) {
176
16
  }
177
17
  return noop;
178
18
  }, [connectedKeyPath, eventKey, measure]);
179
- return (React.createElement(PathTrackerContext.Provider, { value: connectedKeyPath }, measure ? childList : React.createElement(InternalSubNav, { eventKey: eventKey, ...restProps }, childList)));
180
- }
19
+ return (React.createElement(PathTrackerContext.Provider, { value: connectedKeyPath }, measure ? childList : (React.createElement(InternalSubNav, { ref: ref, eventKey: eventKey, ...props }, childList))));
20
+ });
181
21
  if (process.env.NODE_ENV !== 'production') {
182
22
  Sub.displayName = 'Nav.Sub';
183
23
  }
@@ -1,9 +1,11 @@
1
1
  import { type CSSMotionProps } from '@rc-component/motion';
2
2
  import * as React from 'react';
3
- import { type BuiltinPlacements, type NavClickEventHandler, type NavMode, type RenderIconType, type TriggerSubNavAction } from '../../../components/Nav/types';
3
+ import { type SemanticName } from '../../../components/Nav/Sub/InternalSubNav';
4
+ import { type BuiltinPlacements, type NavClickEventHandler, type NavMode, type NavPopupRender, type RenderIconType, type TriggerSubNavAction } from '../../../components/Nav/types';
4
5
  export interface NavContextProps {
5
6
  activeKey: string;
6
7
  builtinPlacements?: BuiltinPlacements;
8
+ classNames?: Partial<Record<SemanticName, string>>;
7
9
  defaultMotions?: Partial<{
8
10
  [key in NavMode | 'other']: CSSMotionProps;
9
11
  }>;
@@ -18,9 +20,12 @@ export interface NavContextProps {
18
20
  openKeys: string[];
19
21
  overflowDisabled?: boolean;
20
22
  popupPrefixCls: string;
23
+ popupRender?: NavPopupRender;
21
24
  prefixCls: string;
25
+ rootClassName?: string;
22
26
  rtl?: boolean;
23
27
  selectedKeys: string[];
28
+ styles?: Partial<Record<SemanticName, React.CSSProperties>>;
24
29
  subNavCloseDelay: number;
25
30
  subNavOpenDelay: number;
26
31
  triggerSubNavAction?: TriggerSubNavAction;
@@ -31,7 +36,6 @@ export interface NavContextProps {
31
36
  }
32
37
  export declare const NavContext: React.Context<NavContextProps>;
33
38
  export interface InheritableContextProps extends Partial<NavContextProps> {
34
- children?: React.ReactNode;
35
39
  locked?: boolean;
36
40
  }
37
- export declare function NavContextProvider({ children, locked, ...restProps }: InheritableContextProps): React.JSX.Element;
41
+ export declare function NavContextProvider({ children, locked, ...props }: React.PropsWithChildren<InheritableContextProps>): React.ReactElement;
@@ -1,7 +1,7 @@
1
1
  'use client';
2
- import useMemo from '@rc-component/util/lib/hooks/useMemo';
2
+ import useMemo from '@rc-component/util/es/hooks/useMemo';
3
+ import isEqual from '@rc-component/util/es/isEqual';
3
4
  import * as React from 'react';
4
- import shallowEqual from 'shallowequal';
5
5
  import { useConfig } from '../../../components/ConfigProvider';
6
6
  export const NavContext = React.createContext({
7
7
  popupPrefixCls: 'dropdown',
@@ -19,16 +19,16 @@ function mergeProps(origin, target) {
19
19
  });
20
20
  return clone;
21
21
  }
22
- export function NavContextProvider({ children, locked, ...restProps }) {
22
+ export function NavContextProvider({ children, locked, ...props }) {
23
23
  const config = useConfig();
24
24
  const context = React.useContext(NavContext);
25
25
  const inheritableContext = useMemo(() => mergeProps({
26
26
  ...context,
27
27
  popupPrefixCls: context.popupPrefixCls ?? `${config.prefixCls}-dropdown`,
28
28
  prefixCls: context.prefixCls ?? `${config.prefixCls}-nav`,
29
- }, restProps),
30
- // eslint-disable-next-line react-hooks/exhaustive-deps
31
- [context, restProps], (prev, next) => !locked && (prev[0] !== next[0] || !shallowEqual(prev[1], next[1])));
29
+ }, props), [config.prefixCls, context, props], (prev, next) => !locked && (prev[0] !== next[0]
30
+ || !isEqual(prev[1], next[1], true)
31
+ || !isEqual(prev[2], next[2], true)));
32
32
  return React.createElement(NavContext.Provider, { value: inheritableContext }, children);
33
33
  }
34
34
  if (process.env.NODE_ENV !== 'production') {
@@ -0,0 +1,3 @@
1
+ export * from '../../../components/Nav/context/IdContext';
2
+ export * from '../../../components/Nav/context/NavContext';
3
+ export * from '../../../components/Nav/context/PathContext';
@@ -0,0 +1,3 @@
1
+ export * from '../../../components/Nav/context/IdContext';
2
+ export * from '../../../components/Nav/context/NavContext';
3
+ export * from '../../../components/Nav/context/PathContext';
@@ -0,0 +1,5 @@
1
+ export * from '../../../components/Nav/hooks/useAccessibility';
2
+ export * from '../../../components/Nav/hooks/useActive';
3
+ export * from '../../../components/Nav/hooks/useDirectionStyle';
4
+ export * from '../../../components/Nav/hooks/useKeyRecords';
5
+ export * from '../../../components/Nav/hooks/useMemoCallback';
@@ -0,0 +1,5 @@
1
+ export * from '../../../components/Nav/hooks/useAccessibility';
2
+ export * from '../../../components/Nav/hooks/useActive';
3
+ export * from '../../../components/Nav/hooks/useDirectionStyle';
4
+ export * from '../../../components/Nav/hooks/useKeyRecords';
5
+ export * from '../../../components/Nav/hooks/useMemoCallback';
@@ -1,3 +1,14 @@
1
1
  import * as React from 'react';
2
2
  import { type NavMode } from '../../../components/Nav/types';
3
+ /**
4
+ * Get focusable elements from the element set under provided container
5
+ */
6
+ export declare function getFocusableElements(container: HTMLElement, elements: Set<HTMLElement>): HTMLElement[];
7
+ type RefreshElements = {
8
+ element2key: Map<HTMLElement, string>;
9
+ elements: Set<HTMLElement>;
10
+ key2element: Map<string, HTMLElement>;
11
+ };
12
+ export declare function refreshElements(keys: string[], id: string): RefreshElements;
3
13
  export declare function useAccessibility<T extends HTMLElement>(mode: NavMode, activeKey: string, isRtl: boolean, id: string, containerRef: React.RefObject<HTMLUListElement | null>, getKeys: () => string[], getKeyPath: (key: string, includeOverflow?: boolean) => string[], triggerActiveKey: (key: string) => void, triggerAccessibilityOpen: (key: string, open?: boolean) => void, originOnKeyDown?: React.KeyboardEventHandler<T>): React.KeyboardEventHandler<T>;
14
+ export {};