one-design-next 0.0.4-alpha.57

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 (459) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +32 -0
  3. package/dist/_util/color.d.ts +103 -0
  4. package/dist/_util/color.js +250 -0
  5. package/dist/_util/date.d.ts +53 -0
  6. package/dist/_util/date.js +656 -0
  7. package/dist/_util/focusManager.d.ts +12 -0
  8. package/dist/_util/focusManager.js +56 -0
  9. package/dist/_util/queueMtPolyfill.d.ts +5 -0
  10. package/dist/_util/queueMtPolyfill.js +19 -0
  11. package/dist/_util/time.d.ts +44 -0
  12. package/dist/_util/time.js +150 -0
  13. package/dist/_util/useActive.d.ts +6 -0
  14. package/dist/_util/useActive.js +25 -0
  15. package/dist/alert/index.d.ts +63 -0
  16. package/dist/alert/index.js +137 -0
  17. package/dist/alert/style/index.css +199 -0
  18. package/dist/alert/style/index.d.ts +2 -0
  19. package/dist/alert/style/index.js +2 -0
  20. package/dist/auto-complete/index.d.ts +51 -0
  21. package/dist/auto-complete/index.js +104 -0
  22. package/dist/avatar/index.d.ts +68 -0
  23. package/dist/avatar/index.js +177 -0
  24. package/dist/avatar/primitive.d.ts +6 -0
  25. package/dist/avatar/primitive.js +23 -0
  26. package/dist/avatar/style/index.css +79 -0
  27. package/dist/avatar/style/index.d.ts +2 -0
  28. package/dist/avatar/style/index.js +2 -0
  29. package/dist/button/index.d.ts +15 -0
  30. package/dist/button/index.js +64 -0
  31. package/dist/button/style/index.css +347 -0
  32. package/dist/button/style/index.d.ts +2 -0
  33. package/dist/button/style/index.js +2 -0
  34. package/dist/calendar/index.d.ts +25 -0
  35. package/dist/calendar/index.js +379 -0
  36. package/dist/calendar/style/index.css +3 -0
  37. package/dist/calendar/style/index.d.ts +2 -0
  38. package/dist/calendar/style/index.js +2 -0
  39. package/dist/cascader/CascaderOptionContent.d.ts +20 -0
  40. package/dist/cascader/CascaderOptionContent.js +75 -0
  41. package/dist/cascader/Panel.d.ts +53 -0
  42. package/dist/cascader/Panel.js +116 -0
  43. package/dist/cascader/index.d.ts +54 -0
  44. package/dist/cascader/index.js +314 -0
  45. package/dist/cascader/style/index.css +458 -0
  46. package/dist/cascader/style/index.d.ts +2 -0
  47. package/dist/cascader/style/index.js +2 -0
  48. package/dist/cascader/utils.d.ts +12 -0
  49. package/dist/cascader/utils.js +85 -0
  50. package/dist/chart/index.d.ts +14 -0
  51. package/dist/chart/index.js +11 -0
  52. package/dist/chart/style/index.css +0 -0
  53. package/dist/chart/style/index.d.ts +2 -0
  54. package/dist/chart/style/index.js +2 -0
  55. package/dist/checkbox/Checkbox.d.ts +69 -0
  56. package/dist/checkbox/Checkbox.js +148 -0
  57. package/dist/checkbox/Context.d.ts +21 -0
  58. package/dist/checkbox/Context.js +2 -0
  59. package/dist/checkbox/Group.d.ts +49 -0
  60. package/dist/checkbox/Group.js +125 -0
  61. package/dist/checkbox/index.d.ts +5 -0
  62. package/dist/checkbox/index.js +3 -0
  63. package/dist/checkbox/style/index.css +306 -0
  64. package/dist/checkbox/style/index.d.ts +2 -0
  65. package/dist/checkbox/style/index.js +2 -0
  66. package/dist/collapse/index.d.ts +43 -0
  67. package/dist/collapse/index.js +111 -0
  68. package/dist/collapse/primitive.d.ts +21 -0
  69. package/dist/collapse/primitive.js +107 -0
  70. package/dist/collapse/style/index.css +63 -0
  71. package/dist/collapse/style/index.d.ts +2 -0
  72. package/dist/collapse/style/index.js +2 -0
  73. package/dist/color-picker/index.d.ts +55 -0
  74. package/dist/color-picker/index.js +588 -0
  75. package/dist/color-picker/style/index.css +153 -0
  76. package/dist/color-picker/style/index.d.ts +2 -0
  77. package/dist/color-picker/style/index.js +2 -0
  78. package/dist/config-provider/index.d.ts +46 -0
  79. package/dist/config-provider/index.js +37 -0
  80. package/dist/date-picker/MonthPicker.d.ts +15 -0
  81. package/dist/date-picker/MonthPicker.js +134 -0
  82. package/dist/date-picker/QuarterPicker.d.ts +15 -0
  83. package/dist/date-picker/QuarterPicker.js +135 -0
  84. package/dist/date-picker/YearPicker.d.ts +13 -0
  85. package/dist/date-picker/YearPicker.js +81 -0
  86. package/dist/date-picker/index.d.ts +172 -0
  87. package/dist/date-picker/index.js +1138 -0
  88. package/dist/date-picker/style/index.css +548 -0
  89. package/dist/date-picker/style/index.d.ts +2 -0
  90. package/dist/date-picker/style/index.js +2 -0
  91. package/dist/date-range-picker/index.d.ts +46 -0
  92. package/dist/date-range-picker/index.js +1034 -0
  93. package/dist/dialog/index.d.ts +132 -0
  94. package/dist/dialog/index.js +282 -0
  95. package/dist/dialog/style/index.css +252 -0
  96. package/dist/dialog/style/index.d.ts +2 -0
  97. package/dist/dialog/style/index.js +2 -0
  98. package/dist/dialog/useModalPosition.d.ts +6 -0
  99. package/dist/dialog/useModalPosition.js +34 -0
  100. package/dist/drawer/index.d.ts +76 -0
  101. package/dist/drawer/index.js +186 -0
  102. package/dist/drawer/style/index.css +235 -0
  103. package/dist/drawer/style/index.d.ts +2 -0
  104. package/dist/drawer/style/index.js +2 -0
  105. package/dist/dropdown/index.d.ts +86 -0
  106. package/dist/dropdown/index.js +836 -0
  107. package/dist/dropdown/style/index.css +236 -0
  108. package/dist/dropdown/style/index.d.ts +2 -0
  109. package/dist/dropdown/style/index.js +2 -0
  110. package/dist/hover-fill/index.d.ts +43 -0
  111. package/dist/hover-fill/index.js +222 -0
  112. package/dist/hover-fill/style/index.css +38 -0
  113. package/dist/hover-fill/style/index.d.ts +2 -0
  114. package/dist/hover-fill/style/index.js +2 -0
  115. package/dist/icon/index.d.ts +11 -0
  116. package/dist/icon/index.js +95 -0
  117. package/dist/icon/style/index.css +15 -0
  118. package/dist/icon/style/index.d.ts +2 -0
  119. package/dist/icon/style/index.js +2 -0
  120. package/dist/icon/svg/alert/alert-circle-filled.svg +1 -0
  121. package/dist/icon/svg/alert/alert-circle.svg +1 -0
  122. package/dist/icon/svg/alert/help-circle-filled.svg +1 -0
  123. package/dist/icon/svg/alert/help-circle.svg +1 -0
  124. package/dist/icon/svg/alert/info-circle-filled.svg +1 -0
  125. package/dist/icon/svg/alert/info-circle.svg +1 -0
  126. package/dist/icon/svg/alert/stop.svg +1 -0
  127. package/dist/icon/svg/alert/warning-filled.svg +1 -0
  128. package/dist/icon/svg/alert/warning.svg +1 -0
  129. package/dist/icon/svg/content/QRcode.svg +1 -0
  130. package/dist/icon/svg/content/bell-filled.svg +1 -0
  131. package/dist/icon/svg/content/bell.svg +1 -0
  132. package/dist/icon/svg/content/bidding.svg +1 -0
  133. package/dist/icon/svg/content/calendar.svg +1 -0
  134. package/dist/icon/svg/content/code.svg +1 -0
  135. package/dist/icon/svg/content/customColumn.svg +1 -0
  136. package/dist/icon/svg/content/data.svg +1 -0
  137. package/dist/icon/svg/content/dataReport-filled.svg +1 -0
  138. package/dist/icon/svg/content/dataReport.svg +1 -0
  139. package/dist/icon/svg/content/download-1.svg +1 -0
  140. package/dist/icon/svg/content/download-filled.svg +1 -0
  141. package/dist/icon/svg/content/download.svg +1 -0
  142. package/dist/icon/svg/content/exchange.svg +1 -0
  143. package/dist/icon/svg/content/filter-filled.svg +1 -0
  144. package/dist/icon/svg/content/filter.svg +1 -0
  145. package/dist/icon/svg/content/hot-filled.svg +1 -0
  146. package/dist/icon/svg/content/hot.svg +1 -0
  147. package/dist/icon/svg/content/link.svg +1 -0
  148. package/dist/icon/svg/content/location.svg +1 -0
  149. package/dist/icon/svg/content/maxSize.svg +1 -0
  150. package/dist/icon/svg/content/mobile-filled.svg +1 -0
  151. package/dist/icon/svg/content/mobile.svg +1 -0
  152. package/dist/icon/svg/content/mute.svg +1 -0
  153. package/dist/icon/svg/content/mutiImage-filled.svg +1 -0
  154. package/dist/icon/svg/content/mutiImage.svg +1 -0
  155. package/dist/icon/svg/content/refresh.svg +1 -0
  156. package/dist/icon/svg/content/report.svg +1 -0
  157. package/dist/icon/svg/content/save.svg +1 -0
  158. package/dist/icon/svg/content/search-bold.svg +1 -0
  159. package/dist/icon/svg/content/search-filled.svg +1 -0
  160. package/dist/icon/svg/content/search.svg +1 -0
  161. package/dist/icon/svg/content/setting.svg +1 -0
  162. package/dist/icon/svg/content/share.svg +1 -0
  163. package/dist/icon/svg/content/sort.svg +1 -0
  164. package/dist/icon/svg/content/sound.svg +1 -0
  165. package/dist/icon/svg/content/sticker-filled.svg +1 -0
  166. package/dist/icon/svg/content/sticker.svg +1 -0
  167. package/dist/icon/svg/content/tag-filled.svg +1 -0
  168. package/dist/icon/svg/content/tag.svg +1 -0
  169. package/dist/icon/svg/content/thumbDown-filled.svg +1 -0
  170. package/dist/icon/svg/content/thumbDown.svg +1 -0
  171. package/dist/icon/svg/content/thumbUp-filled.svg +1 -0
  172. package/dist/icon/svg/content/thumbUp.svg +1 -0
  173. package/dist/icon/svg/content/time-bold.svg +1 -0
  174. package/dist/icon/svg/content/time.svg +1 -0
  175. package/dist/icon/svg/content/verify.svg +1 -0
  176. package/dist/icon/svg/content/video.svg +1 -0
  177. package/dist/icon/svg/content/videoScreenshot.svg +1 -0
  178. package/dist/icon/svg/content/zoomIn.svg +1 -0
  179. package/dist/icon/svg/content/zoomOut.svg +1 -0
  180. package/dist/icon/svg/data/compare.svg +1 -0
  181. package/dist/icon/svg/data/histogram.svg +1 -0
  182. package/dist/icon/svg/editor/cancel-circle-filled.svg +1 -0
  183. package/dist/icon/svg/editor/cancel-circle.svg +1 -0
  184. package/dist/icon/svg/editor/cancel.svg +1 -0
  185. package/dist/icon/svg/editor/check-circle-filled.svg +1 -0
  186. package/dist/icon/svg/editor/check-circle.svg +1 -0
  187. package/dist/icon/svg/editor/check.svg +1 -0
  188. package/dist/icon/svg/editor/copy.svg +1 -0
  189. package/dist/icon/svg/editor/custom-filled.svg +1 -0
  190. package/dist/icon/svg/editor/custom.svg +1 -0
  191. package/dist/icon/svg/editor/delete.svg +1 -0
  192. package/dist/icon/svg/editor/deleteAD-filled.svg +1 -0
  193. package/dist/icon/svg/editor/draggable.svg +1 -0
  194. package/dist/icon/svg/editor/edit.svg +1 -0
  195. package/dist/icon/svg/editor/import.svg +1 -0
  196. package/dist/icon/svg/editor/minus-circle-filled.svg +1 -0
  197. package/dist/icon/svg/editor/minus-circle.svg +1 -0
  198. package/dist/icon/svg/editor/minus.svg +1 -0
  199. package/dist/icon/svg/editor/modify-bold.svg +1 -0
  200. package/dist/icon/svg/editor/modify.svg +1 -0
  201. package/dist/icon/svg/editor/multiCreate.svg +1 -0
  202. package/dist/icon/svg/editor/mutiSelect-filled.svg +1 -0
  203. package/dist/icon/svg/editor/mutiSelect.svg +1 -0
  204. package/dist/icon/svg/editor/pause-filled.svg +1 -0
  205. package/dist/icon/svg/editor/play-filled.svg +1 -0
  206. package/dist/icon/svg/editor/plus-circle-filled.svg +1 -0
  207. package/dist/icon/svg/editor/plus-circle.svg +1 -0
  208. package/dist/icon/svg/editor/plus.svg +1 -0
  209. package/dist/icon/svg/editor/send.svg +1 -0
  210. package/dist/icon/svg/editor/subdivide.svg +1 -0
  211. package/dist/icon/svg/navigation/arrowDown-filled.svg +1 -0
  212. package/dist/icon/svg/navigation/arrowDown.svg +1 -0
  213. package/dist/icon/svg/navigation/arrowLeft-filled.svg +1 -0
  214. package/dist/icon/svg/navigation/arrowLeft.svg +1 -0
  215. package/dist/icon/svg/navigation/arrowRight-filled.svg +1 -0
  216. package/dist/icon/svg/navigation/arrowRight.svg +1 -0
  217. package/dist/icon/svg/navigation/arrowUp-filled.svg +1 -0
  218. package/dist/icon/svg/navigation/arrowUp.svg +1 -0
  219. package/dist/icon/svg/navigation/bottom-filled.svg +1 -0
  220. package/dist/icon/svg/navigation/bottom.svg +1 -0
  221. package/dist/icon/svg/navigation/doubleLeft-filled.svg +1 -0
  222. package/dist/icon/svg/navigation/doubleLeft.svg +1 -0
  223. package/dist/icon/svg/navigation/doubleRight-filled.svg +1 -0
  224. package/dist/icon/svg/navigation/doubleRight.svg +1 -0
  225. package/dist/icon/svg/navigation/down-bold.svg +1 -0
  226. package/dist/icon/svg/navigation/down-filled.svg +1 -0
  227. package/dist/icon/svg/navigation/down.svg +1 -0
  228. package/dist/icon/svg/navigation/fall-filled.svg +1 -0
  229. package/dist/icon/svg/navigation/fold.svg +1 -0
  230. package/dist/icon/svg/navigation/fullScreen.svg +1 -0
  231. package/dist/icon/svg/navigation/left-bold.svg +1 -0
  232. package/dist/icon/svg/navigation/left-filled.svg +1 -0
  233. package/dist/icon/svg/navigation/left.svg +1 -0
  234. package/dist/icon/svg/navigation/leftFirst-filled.svg +1 -0
  235. package/dist/icon/svg/navigation/leftFirst.svg +1 -0
  236. package/dist/icon/svg/navigation/logout.svg +1 -0
  237. package/dist/icon/svg/navigation/menu.svg +1 -0
  238. package/dist/icon/svg/navigation/menuLeft-bold.svg +1 -0
  239. package/dist/icon/svg/navigation/menuLeft.svg +1 -0
  240. package/dist/icon/svg/navigation/menuRight-bold.svg +1 -0
  241. package/dist/icon/svg/navigation/menuRight.svg +1 -0
  242. package/dist/icon/svg/navigation/more-vertical.svg +1 -0
  243. package/dist/icon/svg/navigation/more.svg +1 -0
  244. package/dist/icon/svg/navigation/pointerLeft-filled.svg +1 -0
  245. package/dist/icon/svg/navigation/pointerRight-filled.svg +1 -0
  246. package/dist/icon/svg/navigation/right-bold.svg +1 -0
  247. package/dist/icon/svg/navigation/right-filled.svg +1 -0
  248. package/dist/icon/svg/navigation/right.svg +1 -0
  249. package/dist/icon/svg/navigation/rightLast-filled.svg +1 -0
  250. package/dist/icon/svg/navigation/rightLast.svg +1 -0
  251. package/dist/icon/svg/navigation/rise-filled.svg +1 -0
  252. package/dist/icon/svg/navigation/top-filled.svg +1 -0
  253. package/dist/icon/svg/navigation/top.svg +1 -0
  254. package/dist/icon/svg/navigation/unfold-filled.svg +1 -0
  255. package/dist/icon/svg/navigation/unfold.svg +1 -0
  256. package/dist/icon/svg/navigation/up-bold.svg +1 -0
  257. package/dist/icon/svg/navigation/up-filled.svg +1 -0
  258. package/dist/icon/svg/navigation/up.svg +1 -0
  259. package/dist/icon/svg/product/AIFile.svg +1 -0
  260. package/dist/icon/svg/product/LandingPage.svg +1 -0
  261. package/dist/icon/svg/product/addressBook.svg +1 -0
  262. package/dist/icon/svg/product/alarmClock.svg +1 -0
  263. package/dist/icon/svg/product/asset-square.svg +1 -0
  264. package/dist/icon/svg/product/assetProtecting.svg +1 -0
  265. package/dist/icon/svg/product/autoAD-square-filled.svg +1 -0
  266. package/dist/icon/svg/product/channels-square-filled.svg +1 -0
  267. package/dist/icon/svg/product/channels.svg +1 -0
  268. package/dist/icon/svg/product/chatBubble-filled.svg +1 -0
  269. package/dist/icon/svg/product/checkBadge.svg +1 -0
  270. package/dist/icon/svg/product/comments.svg +1 -0
  271. package/dist/icon/svg/product/container.svg +1 -0
  272. package/dist/icon/svg/product/dataAuth.svg +1 -0
  273. package/dist/icon/svg/product/dataBoard.svg +1 -0
  274. package/dist/icon/svg/product/dataBox.svg +1 -0
  275. package/dist/icon/svg/product/dataFolder.svg +1 -0
  276. package/dist/icon/svg/product/dataRising.svg +1 -0
  277. package/dist/icon/svg/product/detect.svg +1 -0
  278. package/dist/icon/svg/product/exposure-filled.svg +1 -0
  279. package/dist/icon/svg/product/extendedConfig.svg +1 -0
  280. package/dist/icon/svg/product/file-filled.svg +1 -0
  281. package/dist/icon/svg/product/flag.svg +1 -0
  282. package/dist/icon/svg/product/folderZip.svg +1 -0
  283. package/dist/icon/svg/product/folderzip-bold.svg +1 -0
  284. package/dist/icon/svg/product/guideBook.svg +1 -0
  285. package/dist/icon/svg/product/hosting.svg +1 -0
  286. package/dist/icon/svg/product/icon-outlined.svg +1 -0
  287. package/dist/icon/svg/product/idea-bold.svg +1 -0
  288. package/dist/icon/svg/product/idea.svg +1 -0
  289. package/dist/icon/svg/product/image-bold.svg +1 -0
  290. package/dist/icon/svg/product/image-filled.svg +1 -0
  291. package/dist/icon/svg/product/image.svg +1 -0
  292. package/dist/icon/svg/product/images.svg +1 -0
  293. package/dist/icon/svg/product/keyword.svg +1 -0
  294. package/dist/icon/svg/product/linkSquare.svg +1 -0
  295. package/dist/icon/svg/product/lock.svg +1 -0
  296. package/dist/icon/svg/product/magic-filled.svg +1 -0
  297. package/dist/icon/svg/product/magic.svg +1 -0
  298. package/dist/icon/svg/product/miniProgram.svg +1 -0
  299. package/dist/icon/svg/product/minigame-filled.svg +1 -0
  300. package/dist/icon/svg/product/mobilePage.svg +1 -0
  301. package/dist/icon/svg/product/moments-filled.svg +1 -0
  302. package/dist/icon/svg/product/notepad-bold.svg +1 -0
  303. package/dist/icon/svg/product/notepad.svg +1 -0
  304. package/dist/icon/svg/product/offiaccount-filled.svg +1 -0
  305. package/dist/icon/svg/product/playing.svg +1 -0
  306. package/dist/icon/svg/product/qualification.svg +1 -0
  307. package/dist/icon/svg/product/quickFile.svg +1 -0
  308. package/dist/icon/svg/product/ringStruckture.svg +1 -0
  309. package/dist/icon/svg/product/searchAD-filled.svg +1 -0
  310. package/dist/icon/svg/product/searchAD.svg +1 -0
  311. package/dist/icon/svg/product/shield-filled.svg +1 -0
  312. package/dist/icon/svg/product/shield.svg +1 -0
  313. package/dist/icon/svg/product/shop.svg +1 -0
  314. package/dist/icon/svg/product/shopping.svg +1 -0
  315. package/dist/icon/svg/product/star-filled.svg +1 -0
  316. package/dist/icon/svg/product/star.svg +1 -0
  317. package/dist/icon/svg/product/support-bold.svg +1 -0
  318. package/dist/icon/svg/product/target.svg +1 -0
  319. package/dist/icon/svg/product/targeting.svg +1 -0
  320. package/dist/icon/svg/product/task-filled.svg +1 -0
  321. package/dist/icon/svg/product/task.svg +1 -0
  322. package/dist/icon/svg/product/template.svg +1 -0
  323. package/dist/icon/svg/product/templateBag.svg +1 -0
  324. package/dist/icon/svg/product/text.svg +1 -0
  325. package/dist/icon/svg/product/treeStructure.svg +1 -0
  326. package/dist/icon/svg/product/user-circle.svg +1 -0
  327. package/dist/icon/svg/product/userList.svg +1 -0
  328. package/dist/icon/svg/product/userPack.svg +1 -0
  329. package/dist/icon/svg/product/users-bold.svg +1 -0
  330. package/dist/icon/svg/product/users.svg +1 -0
  331. package/dist/icon/svg/product/videoBag-filled.svg +1 -0
  332. package/dist/icon/svg/product/viewMask.svg +1 -0
  333. package/dist/icon/svg/product/wallet.svg +1 -0
  334. package/dist/icon/svg/product/wechatBubble-filled.svg +1 -0
  335. package/dist/icon/svg/product/wechatBubble.svg +1 -0
  336. package/dist/icon/svg/product/wechatSearch.svg +1 -0
  337. package/dist/icon/svg/product/writing.svg +1 -0
  338. package/dist/icon/svg-data.d.ts +221 -0
  339. package/dist/icon/svg-data.js +224 -0
  340. package/dist/icon/test-icons.html +122 -0
  341. package/dist/icon/types.d.ts +3 -0
  342. package/dist/icon/types.js +10 -0
  343. package/dist/index.d.ts +43 -0
  344. package/dist/index.js +46 -0
  345. package/dist/input/index.d.ts +80 -0
  346. package/dist/input/index.js +437 -0
  347. package/dist/input/style/index.css +256 -0
  348. package/dist/input/style/index.d.ts +2 -0
  349. package/dist/input/style/index.js +2 -0
  350. package/dist/input-number/index.d.ts +36 -0
  351. package/dist/input-number/index.js +429 -0
  352. package/dist/input-number/style/index.css +70 -0
  353. package/dist/input-number/style/index.d.ts +2 -0
  354. package/dist/input-number/style/index.js +2 -0
  355. package/dist/input-otp/index.d.ts +71 -0
  356. package/dist/input-otp/index.js +87 -0
  357. package/dist/input-otp/style/index.css +114 -0
  358. package/dist/input-otp/style/index.d.ts +2 -0
  359. package/dist/input-otp/style/index.js +2 -0
  360. package/dist/message/MessageBase.d.ts +86 -0
  361. package/dist/message/MessageBase.js +395 -0
  362. package/dist/message/MessageReact16.d.ts +2 -0
  363. package/dist/message/MessageReact16.js +86 -0
  364. package/dist/message/MessageReact18.d.ts +2 -0
  365. package/dist/message/MessageReact18.js +98 -0
  366. package/dist/message/index.d.ts +3 -0
  367. package/dist/message/index.js +7 -0
  368. package/dist/message/style/index.css +133 -0
  369. package/dist/message/style/index.d.ts +2 -0
  370. package/dist/message/style/index.js +2 -0
  371. package/dist/modal-base/gap.d.ts +14 -0
  372. package/dist/modal-base/gap.js +31 -0
  373. package/dist/modal-base/index.d.ts +26 -0
  374. package/dist/modal-base/index.js +110 -0
  375. package/dist/number-flow/index.d.ts +13 -0
  376. package/dist/number-flow/index.js +25 -0
  377. package/dist/number-flow/style/index.css +0 -0
  378. package/dist/number-flow/style/index.d.ts +2 -0
  379. package/dist/number-flow/style/index.js +2 -0
  380. package/dist/pagination/index.d.ts +38 -0
  381. package/dist/pagination/index.js +349 -0
  382. package/dist/pagination/style/index.css +128 -0
  383. package/dist/pagination/style/index.d.ts +2 -0
  384. package/dist/pagination/style/index.js +2 -0
  385. package/dist/pop-base/index.d.ts +123 -0
  386. package/dist/pop-base/index.js +349 -0
  387. package/dist/pop-base/mergeProps.d.ts +37 -0
  388. package/dist/pop-base/mergeProps.js +144 -0
  389. package/dist/pop-base/style/index.css +150 -0
  390. package/dist/pop-base/style/index.d.ts +2 -0
  391. package/dist/pop-base/style/index.js +2 -0
  392. package/dist/pop-base/useForkRef.d.ts +5 -0
  393. package/dist/pop-base/useForkRef.js +52 -0
  394. package/dist/popover/index.d.ts +4 -0
  395. package/dist/popover/index.js +9 -0
  396. package/dist/radio/index.d.ts +21 -0
  397. package/dist/radio/index.js +45 -0
  398. package/dist/radio/primitive.d.ts +5 -0
  399. package/dist/radio/primitive.js +28 -0
  400. package/dist/radio/style/index.css +219 -0
  401. package/dist/radio/style/index.d.ts +2 -0
  402. package/dist/radio/style/index.js +2 -0
  403. package/dist/scroll-area/index.d.ts +24 -0
  404. package/dist/scroll-area/index.js +96 -0
  405. package/dist/scroll-area/style/index.css +77 -0
  406. package/dist/scroll-area/style/index.d.ts +2 -0
  407. package/dist/scroll-area/style/index.js +2 -0
  408. package/dist/select/index.d.ts +85 -0
  409. package/dist/select/index.js +262 -0
  410. package/dist/select/style/index.css +1736 -0
  411. package/dist/select/style/index.d.ts +2 -0
  412. package/dist/select/style/index.js +2 -0
  413. package/dist/select/useIcons.d.ts +25 -0
  414. package/dist/select/useIcons.js +80 -0
  415. package/dist/slider/index.d.ts +69 -0
  416. package/dist/slider/index.js +264 -0
  417. package/dist/slider/style/index.css +237 -0
  418. package/dist/slider/style/index.d.ts +2 -0
  419. package/dist/slider/style/index.js +2 -0
  420. package/dist/style/base.css +298 -0
  421. package/dist/style/index.d.ts +6 -0
  422. package/dist/style/index.js +17 -0
  423. package/dist/switch/index.d.ts +12 -0
  424. package/dist/switch/index.js +55 -0
  425. package/dist/switch/style/index.css +152 -0
  426. package/dist/switch/style/index.d.ts +2 -0
  427. package/dist/switch/style/index.js +2 -0
  428. package/dist/table/TableCellContent.d.ts +20 -0
  429. package/dist/table/TableCellContent.js +77 -0
  430. package/dist/table/index.d.ts +97 -0
  431. package/dist/table/index.js +791 -0
  432. package/dist/table/style/index.css +320 -0
  433. package/dist/table/style/index.d.ts +2 -0
  434. package/dist/table/style/index.js +2 -0
  435. package/dist/table/useSelection.d.ts +13 -0
  436. package/dist/table/useSelection.js +259 -0
  437. package/dist/tabs/index.d.ts +51 -0
  438. package/dist/tabs/index.js +617 -0
  439. package/dist/tabs/style/index.css +369 -0
  440. package/dist/tabs/style/index.d.ts +2 -0
  441. package/dist/tabs/style/index.js +2 -0
  442. package/dist/text-swap/index.d.ts +58 -0
  443. package/dist/text-swap/index.js +280 -0
  444. package/dist/text-swap/style/index.css +32 -0
  445. package/dist/text-swap/style/index.d.ts +2 -0
  446. package/dist/text-swap/style/index.js +2 -0
  447. package/dist/time-picker/index.d.ts +67 -0
  448. package/dist/time-picker/index.js +945 -0
  449. package/dist/time-picker/style/index.css +166 -0
  450. package/dist/time-picker/style/index.d.ts +2 -0
  451. package/dist/time-picker/style/index.js +2 -0
  452. package/dist/tooltip/index.d.ts +10 -0
  453. package/dist/tooltip/index.js +178 -0
  454. package/dist/tree-select/index.d.ts +25 -0
  455. package/dist/tree-select/index.js +140 -0
  456. package/dist/tree-select/style/index.css +204 -0
  457. package/dist/tree-select/style/index.d.ts +1 -0
  458. package/dist/tree-select/style/index.js +1 -0
  459. package/package.json +124 -0
@@ -0,0 +1,836 @@
1
+ /**
2
+ * 多选的设计稿来源于互选需求:https://www.figma.com/design/DBgqcGDjdPnr7XObtGY7ES/%F0%9F%94%B5%E3%80%90%E5%B9%BF%E5%91%8A%E4%B8%BB%E4%BE%A7%E3%80%91%E4%BA%92%E9%80%89%E5%B9%B3%E5%8F%B0---%E4%BD%93%E9%AA%8C%E5%8D%87%E7%BA%A7%E4%B8%93%E9%A1%B9?node-id=461-72709&t=r6iaLWzcmAk5VXR6-4
3
+ */
4
+
5
+ 'use client';
6
+
7
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
8
+ var _excluded = ["sideOffset", "children", "matchWidth"],
9
+ _excluded2 = ["inset", "variant"],
10
+ _excluded3 = ["children", "checked"],
11
+ _excluded4 = ["children"],
12
+ _excluded5 = ["inset"],
13
+ _excluded6 = ["inset", "children"];
14
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
15
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
16
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
17
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
18
+ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
19
+ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
20
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
21
+ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
22
+ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
23
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
24
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
25
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
26
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
27
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
28
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
29
+ function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
30
+ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
31
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
32
+ function _objectDestructuringEmpty(obj) { if (obj == null) throw new TypeError("Cannot destructure " + obj); }
33
+ import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
34
+ import * as React from 'react';
35
+ import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
36
+ import Checkbox from "../checkbox";
37
+ import Icon from "../icon";
38
+ import Radio from "../radio";
39
+ import ScrollArea from "../scroll-area";
40
+ import "./style";
41
+
42
+ // 基础组件定义 - 参考 shadcn/ui 结构
43
+ function DropdownMenu(_ref) {
44
+ var props = Object.assign({}, (_objectDestructuringEmpty(_ref), _ref));
45
+ return /*#__PURE__*/React.createElement(DropdownMenuPrimitive.Root, _extends({
46
+ "data-slot": "dropdown-menu"
47
+ }, props));
48
+ }
49
+ function DropdownMenuPortal(_ref2) {
50
+ var props = Object.assign({}, (_objectDestructuringEmpty(_ref2), _ref2));
51
+ return /*#__PURE__*/React.createElement(DropdownMenuPrimitive.Portal, _extends({
52
+ "data-slot": "dropdown-menu-portal"
53
+ }, props));
54
+ }
55
+ var DropdownMenuTrigger = /*#__PURE__*/React.forwardRef(function (_ref3, ref) {
56
+ var props = Object.assign({}, (_objectDestructuringEmpty(_ref3), _ref3));
57
+ return /*#__PURE__*/React.createElement(DropdownMenuPrimitive.Trigger, _extends({
58
+ ref: ref,
59
+ "data-slot": "dropdown-menu-trigger"
60
+ }, props));
61
+ });
62
+ DropdownMenuTrigger.displayName = 'DropdownMenuTrigger';
63
+ var DropdownMenuContent = /*#__PURE__*/React.forwardRef(function (_ref4, ref) {
64
+ var _ref4$sideOffset = _ref4.sideOffset,
65
+ sideOffset = _ref4$sideOffset === void 0 ? 4 : _ref4$sideOffset,
66
+ children = _ref4.children,
67
+ matchWidth = _ref4.matchWidth,
68
+ props = _objectWithoutProperties(_ref4, _excluded);
69
+ return /*#__PURE__*/React.createElement(DropdownMenuPrimitive.Portal, null, /*#__PURE__*/React.createElement(DropdownMenuPrimitive.Content, _extends({
70
+ ref: ref,
71
+ "data-slot": "dropdown-menu-content",
72
+ "data-odn-dropdown-content": true,
73
+ "data-odn-dropdown-match-width": matchWidth,
74
+ sideOffset: sideOffset
75
+ }, props), /*#__PURE__*/React.createElement(ScrollArea, {
76
+ "data-odn-dropdown-scroll-area": true
77
+ }, children)));
78
+ });
79
+ DropdownMenuContent.displayName = 'DropdownMenuContent';
80
+ function DropdownMenuGroup(_ref5) {
81
+ var props = Object.assign({}, (_objectDestructuringEmpty(_ref5), _ref5));
82
+ return /*#__PURE__*/React.createElement(DropdownMenuPrimitive.Group, _extends({
83
+ "data-slot": "dropdown-menu-group"
84
+ }, props));
85
+ }
86
+ var DropdownMenuItem = /*#__PURE__*/React.forwardRef(function (_ref6, ref) {
87
+ var inset = _ref6.inset,
88
+ _ref6$variant = _ref6.variant,
89
+ variant = _ref6$variant === void 0 ? 'default' : _ref6$variant,
90
+ props = _objectWithoutProperties(_ref6, _excluded2);
91
+ return /*#__PURE__*/React.createElement(DropdownMenuPrimitive.Item, _extends({
92
+ ref: ref,
93
+ "data-slot": "dropdown-menu-item",
94
+ "data-odn-dropdown-item": true,
95
+ "data-inset": inset,
96
+ "data-variant": variant
97
+ }, props));
98
+ });
99
+ DropdownMenuItem.displayName = 'DropdownMenuItem';
100
+ function DropdownMenuCheckboxItem(_ref7) {
101
+ var children = _ref7.children,
102
+ checked = _ref7.checked,
103
+ props = _objectWithoutProperties(_ref7, _excluded3);
104
+ return /*#__PURE__*/React.createElement(DropdownMenuPrimitive.CheckboxItem, _extends({
105
+ "data-slot": "dropdown-menu-checkbox-item",
106
+ "data-odn-dropdown-checkbox-item": true,
107
+ checked: checked
108
+ }, props), /*#__PURE__*/React.createElement("span", {
109
+ "data-odn-dropdown-item-indicator": true
110
+ }, /*#__PURE__*/React.createElement(DropdownMenuPrimitive.ItemIndicator, null, "\u2713")), children);
111
+ }
112
+ function DropdownMenuRadioGroup(_ref8) {
113
+ var props = Object.assign({}, (_objectDestructuringEmpty(_ref8), _ref8));
114
+ return /*#__PURE__*/React.createElement(DropdownMenuPrimitive.RadioGroup, _extends({
115
+ "data-slot": "dropdown-menu-radio-group"
116
+ }, props));
117
+ }
118
+ function DropdownMenuRadioItem(_ref9) {
119
+ var children = _ref9.children,
120
+ props = _objectWithoutProperties(_ref9, _excluded4);
121
+ return /*#__PURE__*/React.createElement(DropdownMenuPrimitive.RadioItem, _extends({
122
+ "data-slot": "dropdown-menu-radio-item",
123
+ "data-odn-dropdown-radio-item": true
124
+ }, props), /*#__PURE__*/React.createElement("span", {
125
+ "data-odn-dropdown-item-indicator": true
126
+ }, /*#__PURE__*/React.createElement(DropdownMenuPrimitive.ItemIndicator, null, "\u25CF")), children);
127
+ }
128
+ function DropdownMenuLabel(_ref10) {
129
+ var inset = _ref10.inset,
130
+ props = _objectWithoutProperties(_ref10, _excluded5);
131
+ return /*#__PURE__*/React.createElement(DropdownMenuPrimitive.Label, _extends({
132
+ "data-slot": "dropdown-menu-label",
133
+ "data-odn-dropdown-label": true,
134
+ "data-inset": inset
135
+ }, props));
136
+ }
137
+ function DropdownMenuSeparator(_ref11) {
138
+ var props = Object.assign({}, (_objectDestructuringEmpty(_ref11), _ref11));
139
+ return /*#__PURE__*/React.createElement(DropdownMenuPrimitive.Separator, _extends({
140
+ "data-slot": "dropdown-menu-separator",
141
+ "data-odn-dropdown-separator": true
142
+ }, props));
143
+ }
144
+ function DropdownMenuShortcut(_ref12) {
145
+ var props = Object.assign({}, (_objectDestructuringEmpty(_ref12), _ref12));
146
+ return /*#__PURE__*/React.createElement("span", _extends({
147
+ "data-slot": "dropdown-menu-shortcut",
148
+ "data-odn-dropdown-shortcut": true
149
+ }, props));
150
+ }
151
+ function DropdownMenuSub(_ref13) {
152
+ var props = Object.assign({}, (_objectDestructuringEmpty(_ref13), _ref13));
153
+ return /*#__PURE__*/React.createElement(DropdownMenuPrimitive.Sub, _extends({
154
+ "data-slot": "dropdown-menu-sub"
155
+ }, props));
156
+ }
157
+ var DropdownMenuSubTrigger = /*#__PURE__*/React.forwardRef(function (_ref14, ref) {
158
+ var inset = _ref14.inset,
159
+ children = _ref14.children,
160
+ props = _objectWithoutProperties(_ref14, _excluded6);
161
+ return /*#__PURE__*/React.createElement(DropdownMenuPrimitive.SubTrigger, _extends({
162
+ ref: ref,
163
+ "data-slot": "dropdown-menu-sub-trigger",
164
+ "data-odn-dropdown-sub-trigger": true,
165
+ "data-inset": inset
166
+ }, props), /*#__PURE__*/React.createElement("div", {
167
+ "data-odn-dropdown-item-label": true
168
+ }, children), /*#__PURE__*/React.createElement(Icon, {
169
+ "data-odn-dropdown-chevron": true,
170
+ name: "right"
171
+ }));
172
+ });
173
+ DropdownMenuSubTrigger.displayName = 'DropdownMenuSubTrigger';
174
+ var DropdownMenuSubContent = /*#__PURE__*/React.forwardRef(function (_ref15, ref) {
175
+ var props = Object.assign({}, (_objectDestructuringEmpty(_ref15), _ref15));
176
+ return /*#__PURE__*/React.createElement(DropdownMenuPrimitive.SubContent, _extends({
177
+ ref: ref,
178
+ "data-slot": "dropdown-menu-sub-content",
179
+ "data-odn-dropdown-sub-content": true
180
+ }, props));
181
+ });
182
+ DropdownMenuSubContent.displayName = 'DropdownMenuSubContent';
183
+
184
+ // 用户 API 接口定义
185
+
186
+ // 基础 Props 接口
187
+
188
+ // 单选模式 Props
189
+
190
+ // 多选模式 Props
191
+
192
+ // 普通模式 Props
193
+
194
+ // 为菜单项添加全选按钮的辅助函数
195
+ var addSelectAllToMenu = function addSelectAllToMenu(menu, allowSelectAll, isSelectable, multiple) {
196
+ if (!allowSelectAll || !isSelectable || !multiple) {
197
+ // 如果不需要添加全选,或者不是多选模式,只处理children
198
+ return menu.map(function (item) {
199
+ if ('children' in item && item.children) {
200
+ return _objectSpread(_objectSpread({}, item), {}, {
201
+ children: addSelectAllToMenu(item.children, allowSelectAll, isSelectable, multiple)
202
+ });
203
+ }
204
+ return item;
205
+ });
206
+ }
207
+
208
+ // 处理每个菜单项
209
+ var processedItems = menu.map(function (item) {
210
+ // 如果是 group 类型,递归处理其 children,但不在 group 层级添加全选
211
+ if (item.type === 'group' && item.children) {
212
+ return _objectSpread(_objectSpread({}, item), {}, {
213
+ children: item.children.map(function (child) {
214
+ // 只处理有 value 和 children 的子项(真正的子菜单)
215
+ if ('value' in child && 'children' in child && child.children && child.children.length > 0) {
216
+ // 生成该层的全选 value
217
+ var childrenId = "selectAll_children_".concat(Math.random().toString(36).substr(2, 9));
218
+
219
+ // 在 children 最上方添加全选按钮和分隔符
220
+ var selectAllItem = {
221
+ value: childrenId,
222
+ label: '全选'
223
+ };
224
+ var separator = {
225
+ type: 'separator'
226
+ };
227
+
228
+ // 直接处理子项,不再递归添加全选
229
+ var processedChildren = child.children.map(function (grandChild) {
230
+ // 如果孙子项也有 children,继续处理
231
+ if ('value' in grandChild && 'children' in grandChild && grandChild.children && grandChild.children.length > 0) {
232
+ var grandChildrenId = "selectAll_children_".concat(Math.random().toString(36).substr(2, 9));
233
+ var grandSelectAllItem = {
234
+ value: grandChildrenId,
235
+ label: '全选'
236
+ };
237
+ var grandSeparator = {
238
+ type: 'separator'
239
+ };
240
+ return _objectSpread(_objectSpread({}, grandChild), {}, {
241
+ children: [grandSelectAllItem, grandSeparator].concat(_toConsumableArray(grandChild.children))
242
+ });
243
+ }
244
+ return grandChild;
245
+ });
246
+ return _objectSpread(_objectSpread({}, child), {}, {
247
+ children: [selectAllItem, separator].concat(_toConsumableArray(processedChildren))
248
+ });
249
+ }
250
+ return child;
251
+ })
252
+ });
253
+ }
254
+ return item;
255
+ });
256
+
257
+ // 在最外层菜单的最上方添加全选
258
+ var topLevelSelectAll = [{
259
+ type: 'group',
260
+ children: [{
261
+ value: 'selectAll',
262
+ label: '全选'
263
+ }]
264
+ }, {
265
+ type: 'separator'
266
+ }];
267
+ return [].concat(topLevelSelectAll, _toConsumableArray(processedItems));
268
+ };
269
+
270
+ // 递归渲染菜单项的辅助函数
271
+ var renderMenuItem = function renderMenuItem(item, index, _onSelect, onItemClick, isSelectable, multiple, selectedValue, rawOnSelect, menu, layerMapping) {
272
+ var _item$value2;
273
+ var key = 'value' in item && item.value || "item-".concat(index);
274
+ switch (item.type) {
275
+ case 'label':
276
+ return /*#__PURE__*/React.createElement(DropdownMenuLabel, {
277
+ key: key
278
+ }, item.label);
279
+ case 'separator':
280
+ return /*#__PURE__*/React.createElement(DropdownMenuSeparator, {
281
+ key: key
282
+ });
283
+ case 'group':
284
+ return /*#__PURE__*/React.createElement(DropdownMenuGroup, {
285
+ key: key
286
+ }, item.children.map(function (child, childIndex) {
287
+ return renderMenuItem(child, childIndex, _onSelect, onItemClick, isSelectable, multiple, selectedValue, rawOnSelect, menu, layerMapping);
288
+ }));
289
+ default:
290
+ // 'item' or undefined (DropdownMenuItem)
291
+ // 检查是否有 children 属性,如果有则渲染为子菜单
292
+ if ('children' in item && item.children && item.children.length > 0) {
293
+ // 在多选模式下,带 children 的项目可以选择(全选该子菜单)
294
+ if (isSelectable && multiple) {
295
+ // 收集该子菜单所有可选择的子项值
296
+ var collectChildValues = function collectChildValues(items) {
297
+ var values = [];
298
+ items.forEach(function (item) {
299
+ if ('value' in item && item.value && !item.value.startsWith('selectAll')) {
300
+ // 包含当前项的值(无论是否有子项)
301
+ values.push(item.value);
302
+ }
303
+ if ('children' in item && item.children) {
304
+ // 如果有子项,递归收集子项
305
+ values.push.apply(values, _toConsumableArray(collectChildValues(item.children)));
306
+ }
307
+ });
308
+ return values;
309
+ };
310
+ var childValues = collectChildValues(item.children);
311
+ var allChildrenSelected = Array.isArray(selectedValue) && childValues.length > 0 && childValues.every(function (val) {
312
+ return selectedValue.includes(val);
313
+ });
314
+ return /*#__PURE__*/React.createElement(DropdownMenuSub, {
315
+ key: key
316
+ }, /*#__PURE__*/React.createElement(DropdownMenuSubTrigger, {
317
+ disabled: item.disabled,
318
+ onClick: function onClick(event) {
319
+ event.preventDefault();
320
+ event.stopPropagation();
321
+
322
+ // 切换该子菜单的全选状态
323
+ var currentValues = Array.isArray(selectedValue) ? selectedValue : [];
324
+ var newValues;
325
+ if (allChildrenSelected) {
326
+ // 如果全选中,则取消选中该子菜单所有项(包括自己)
327
+ var allValuesToRemove = _toConsumableArray(childValues);
328
+ if (item.value) {
329
+ allValuesToRemove.push(item.value);
330
+ }
331
+ newValues = currentValues.filter(function (val) {
332
+ return !allValuesToRemove.includes(val);
333
+ });
334
+ } else {
335
+ // 如果未全选中,则选中该子菜单所有项(包括自己)
336
+ var allValuesToAdd = _toConsumableArray(childValues);
337
+ if (item.value) {
338
+ allValuesToAdd.push(item.value);
339
+ }
340
+ var uniqueValues = new Set([].concat(_toConsumableArray(currentValues), _toConsumableArray(allValuesToAdd)));
341
+ newValues = Array.from(uniqueValues);
342
+ }
343
+
344
+ // 直接调用 rawOnSelect
345
+ if (rawOnSelect) {
346
+ rawOnSelect(newValues);
347
+ }
348
+ }
349
+ }, /*#__PURE__*/React.createElement(Checkbox, {
350
+ checked: allChildrenSelected,
351
+ indeterminate: !allChildrenSelected && Array.isArray(selectedValue) && childValues.some(function (val) {
352
+ return selectedValue.includes(val);
353
+ }),
354
+ "data-odn-dropdown-checkbox": true
355
+ }), item.label), /*#__PURE__*/React.createElement(DropdownMenuPortal, null, /*#__PURE__*/React.createElement(DropdownMenuSubContent, null, item.children.map(function (child, childIndex) {
356
+ return renderMenuItem(child, childIndex, _onSelect, onItemClick, isSelectable, multiple, selectedValue, rawOnSelect, menu, layerMapping);
357
+ }))));
358
+ }
359
+
360
+ // 普通子菜单渲染(单选模式或非选择模式)
361
+ return /*#__PURE__*/React.createElement(DropdownMenuSub, {
362
+ key: key
363
+ }, /*#__PURE__*/React.createElement(DropdownMenuSubTrigger, {
364
+ disabled: item.disabled
365
+ }, item.label), /*#__PURE__*/React.createElement(DropdownMenuPortal, null, /*#__PURE__*/React.createElement(DropdownMenuSubContent, null, item.children.map(function (child, childIndex) {
366
+ return renderMenuItem(child, childIndex, _onSelect, onItemClick, isSelectable, multiple, selectedValue, rawOnSelect, menu, layerMapping);
367
+ }))));
368
+ }
369
+
370
+ // 普通菜单项
371
+ // 计算是否选中
372
+ var isSelected = false;
373
+ if (isSelectable && selectedValue !== undefined) {
374
+ if (!multiple) {
375
+ isSelected = selectedValue === item.value;
376
+ } else if (Array.isArray(selectedValue)) {
377
+ var _item$value;
378
+ // 对于全选按钮,检查该层的所有选项是否都被选中
379
+ if ((_item$value = item.value) !== null && _item$value !== void 0 && _item$value.startsWith('selectAll') && layerMapping && item.value) {
380
+ var layerValues = layerMapping[item.value];
381
+ if (layerValues) {
382
+ isSelected = layerValues.length > 0 && layerValues.every(function (val) {
383
+ return selectedValue.includes(val);
384
+ });
385
+ }
386
+ } else {
387
+ // 普通选项,直接检查是否在选中列表中
388
+ isSelected = selectedValue.includes(item.value);
389
+ }
390
+ }
391
+ }
392
+ return /*#__PURE__*/React.createElement(DropdownMenuItem, {
393
+ key: key,
394
+ disabled: item.disabled,
395
+ onSelect: function onSelect(event) {
396
+ // 多选模式下,所有项都不关闭菜单
397
+ var shouldKeepOpen = isSelectable && multiple;
398
+ if (shouldKeepOpen) {
399
+ event.preventDefault();
400
+ }
401
+ _onSelect === null || _onSelect === void 0 || _onSelect(item.value);
402
+
403
+ // 只有在非保持打开的情况下才调用 onItemClick(关闭菜单)
404
+ if (!shouldKeepOpen) {
405
+ onItemClick === null || onItemClick === void 0 || onItemClick();
406
+ }
407
+ }
408
+ }, isSelectable && !multiple && /*#__PURE__*/React.createElement(Radio.Group, {
409
+ value: isSelected ? item.value : '',
410
+ options: [{
411
+ label: '',
412
+ value: item.value
413
+ }],
414
+ "data-odn-dropdown-radio": true
415
+ }), isSelectable && multiple && /*#__PURE__*/React.createElement(Checkbox, {
416
+ checked: isSelected,
417
+ indeterminate: (_item$value2 = item.value) !== null && _item$value2 !== void 0 && _item$value2.startsWith('selectAll') && layerMapping && item.value && Array.isArray(selectedValue) ? function () {
418
+ var layerValues = layerMapping[item.value];
419
+ if (layerValues) {
420
+ var selectedCount = layerValues.filter(function (val) {
421
+ return selectedValue.includes(val);
422
+ }).length;
423
+ // indeterminate 只在部分选中时显示(既不是全选也不是全不选)
424
+ return selectedCount > 0 && selectedCount < layerValues.length;
425
+ }
426
+ return false;
427
+ }() : false,
428
+ "data-odn-dropdown-checkbox": true
429
+ }), item.icon && /*#__PURE__*/React.createElement(Icon, {
430
+ name: item.icon,
431
+ "data-odn-dropdown-item-icon": true
432
+ }), /*#__PURE__*/React.createElement("span", {
433
+ "data-odn-dropdown-item-label": true
434
+ }, item.label), item.shortcut && /*#__PURE__*/React.createElement(DropdownMenuShortcut, null, item.shortcut));
435
+ }
436
+ };
437
+
438
+ // placement 到 Radix UI 属性的转换映射
439
+ var placementToRadixProps = function placementToRadixProps() {
440
+ var placement = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'bottom';
441
+ var placementMap = {
442
+ top: {
443
+ side: 'top',
444
+ align: 'center'
445
+ },
446
+ topLeft: {
447
+ side: 'top',
448
+ align: 'start'
449
+ },
450
+ topRight: {
451
+ side: 'top',
452
+ align: 'end'
453
+ },
454
+ right: {
455
+ side: 'right',
456
+ align: 'center'
457
+ },
458
+ rightTop: {
459
+ side: 'right',
460
+ align: 'start'
461
+ },
462
+ rightBottom: {
463
+ side: 'right',
464
+ align: 'end'
465
+ },
466
+ bottom: {
467
+ side: 'bottom',
468
+ align: 'center'
469
+ },
470
+ bottomLeft: {
471
+ side: 'bottom',
472
+ align: 'start'
473
+ },
474
+ bottomRight: {
475
+ side: 'bottom',
476
+ align: 'end'
477
+ },
478
+ left: {
479
+ side: 'left',
480
+ align: 'center'
481
+ },
482
+ leftTop: {
483
+ side: 'left',
484
+ align: 'start'
485
+ },
486
+ leftBottom: {
487
+ side: 'left',
488
+ align: 'end'
489
+ }
490
+ };
491
+ return placementMap[placement] || placementMap.bottomLeft;
492
+ };
493
+ var Dropdown = function Dropdown(props) {
494
+ var menu = props.menu,
495
+ children = props.children,
496
+ _props$placement = props.placement,
497
+ placement = _props$placement === void 0 ? 'bottomLeft' : _props$placement,
498
+ visible = props.visible,
499
+ onVisibleChange = props.onVisibleChange,
500
+ _props$trigger = props.trigger,
501
+ trigger = _props$trigger === void 0 ? 'click' : _props$trigger,
502
+ _props$disabled = props.disabled,
503
+ disabled = _props$disabled === void 0 ? false : _props$disabled,
504
+ _props$allowSelectAll = props.allowSelectAll,
505
+ allowSelectAll = _props$allowSelectAll === void 0 ? false : _props$allowSelectAll,
506
+ _props$matchWidth = props.matchWidth,
507
+ matchWidth = _props$matchWidth === void 0 ? false : _props$matchWidth;
508
+ var _useState = useState(false),
509
+ _useState2 = _slicedToArray(_useState, 2),
510
+ hoverOpen = _useState2[0],
511
+ setHoverOpen = _useState2[1];
512
+ var hoverTimeoutRef = useRef();
513
+ var containerRef = useRef(null);
514
+
515
+ // 检查是否为选择模式
516
+ var isSelectable = 'selectable' in props && props.selectable;
517
+ var multiple = isSelectable ? props.multiple : undefined;
518
+ var selectedValue = isSelectable ? props.value : undefined;
519
+ var rawOnSelect = 'onSelect' in props ? props.onSelect : undefined;
520
+
521
+ // 处理菜单数据,如果需要则添加全选按钮
522
+ var processedMenu = useMemo(function () {
523
+ if (!menu) return undefined;
524
+ return addSelectAllToMenu(menu, allowSelectAll, isSelectable || false, multiple);
525
+ }, [menu, allowSelectAll, isSelectable, multiple]);
526
+
527
+ // 创建层级映射,用于全选功能
528
+ var layerMapping = useMemo(function () {
529
+ var mapping = {};
530
+ var collectLayerValues = function collectLayerValues(items) {
531
+ var processItem = function processItem(item, parentItem) {
532
+ // 如果该项有 children,为其创建全选映射
533
+ if ('value' in item && 'children' in item && item.children) {
534
+ // 收集该层的所有后代项值(不包括全选按钮),包括直接子项和所有后代
535
+ var collectAllDescendants = function collectAllDescendants(children) {
536
+ var values = [];
537
+ children.forEach(function (child) {
538
+ if ('value' in child && child.value && !child.value.startsWith('selectAll_')) {
539
+ values.push(child.value);
540
+ }
541
+ if ('children' in child && child.children) {
542
+ values.push.apply(values, _toConsumableArray(collectAllDescendants(child.children)));
543
+ }
544
+ });
545
+ return values;
546
+ };
547
+ var allDescendantValues = collectAllDescendants(item.children);
548
+
549
+ // 如果当前项有value,也要包含当前项本身
550
+ if (item.value) {
551
+ allDescendantValues.push(item.value);
552
+ }
553
+
554
+ // 查找该层的全选按钮
555
+ var selectAllItem = item.children.find(function (c) {
556
+ var _c$value;
557
+ return 'value' in c && ((_c$value = c.value) === null || _c$value === void 0 ? void 0 : _c$value.startsWith('selectAll_'));
558
+ });
559
+ var selectAllKey = selectAllItem && 'value' in selectAllItem ? selectAllItem.value : undefined;
560
+ if (selectAllKey && allDescendantValues.length > 0) {
561
+ mapping[selectAllKey] = allDescendantValues;
562
+ }
563
+
564
+ // 递归处理子项,传递当前项作为父项
565
+ item.children.forEach(function (child) {
566
+ processItem(child, item);
567
+ });
568
+ }
569
+ };
570
+ items.forEach(function (item) {
571
+ if (item.type === 'group' && item.children) {
572
+ item.children.forEach(function (child) {
573
+ processItem(child);
574
+ });
575
+ } else {
576
+ processItem(item);
577
+ }
578
+ });
579
+ };
580
+
581
+ // 收集所有可选值用于顶级全选
582
+ var getAllSelectableValues = function getAllSelectableValues(items) {
583
+ var values = [];
584
+ items.forEach(function (item) {
585
+ if ('value' in item && item.value && !item.value.startsWith('selectAll')) {
586
+ // 添加当前项的值(包括有 children 的项目)
587
+ values.push(item.value);
588
+ }
589
+
590
+ // 如果有子项,递归收集子项
591
+ if ('children' in item && item.children) {
592
+ values.push.apply(values, _toConsumableArray(getAllSelectableValues(item.children)));
593
+ }
594
+ });
595
+ return values;
596
+ };
597
+ if (processedMenu) {
598
+ collectLayerValues(processedMenu);
599
+ // 顶级全选映射
600
+ mapping['selectAll'] = getAllSelectableValues(processedMenu);
601
+ }
602
+ return mapping;
603
+ }, [processedMenu]);
604
+
605
+ // 创建适配的 onSelect 函数
606
+ var onSelect = useCallback(function (value) {
607
+ if (!rawOnSelect) return;
608
+ if (isSelectable && multiple) {
609
+ var currentValues = Array.isArray(selectedValue) ? selectedValue : [];
610
+ var newValues;
611
+
612
+ // 检查是否是全选按钮
613
+ if (layerMapping[value]) {
614
+ // 是全选按钮,处理该层的全选逻辑
615
+ var layerValues = layerMapping[value];
616
+ var allSelected = layerValues.every(function (val) {
617
+ return currentValues.includes(val);
618
+ });
619
+ if (allSelected) {
620
+ // 如果该层已全选,则取消选中该层所有项
621
+ newValues = currentValues.filter(function (val) {
622
+ return !layerValues.includes(val);
623
+ });
624
+ } else {
625
+ // 如果该层未全选,则选中该层所有项
626
+ var valuesToAdd = layerValues.filter(function (val) {
627
+ return !currentValues.includes(val);
628
+ });
629
+ newValues = [].concat(_toConsumableArray(currentValues), _toConsumableArray(valuesToAdd));
630
+ }
631
+ } else {
632
+ // 普通选项切换
633
+ if (currentValues.includes(value)) {
634
+ newValues = currentValues.filter(function (v) {
635
+ return v !== value;
636
+ });
637
+ } else {
638
+ newValues = [].concat(_toConsumableArray(currentValues), [value]);
639
+ }
640
+ }
641
+
642
+ // 智能处理父子关系:当所有子项被选中时,自动选中父项
643
+ var processParentChildRelations = function processParentChildRelations(values) {
644
+ var processedValues = _toConsumableArray(values);
645
+
646
+ // 构建父子关系映射
647
+ var buildParentChildMap = function buildParentChildMap(items, parentValue) {
648
+ var map = {};
649
+ items.forEach(function (item) {
650
+ if ('value' in item && item.value && !item.value.startsWith('selectAll')) {
651
+ if (parentValue) {
652
+ if (!map[parentValue]) map[parentValue] = [];
653
+ map[parentValue].push(item.value);
654
+ }
655
+ if ('children' in item && item.children) {
656
+ Object.assign(map, buildParentChildMap(item.children, item.value));
657
+ }
658
+ } else if (item.type === 'group' && item.children) {
659
+ Object.assign(map, buildParentChildMap(item.children, parentValue));
660
+ }
661
+ });
662
+ return map;
663
+ };
664
+ var parentChildMap = processedMenu ? buildParentChildMap(processedMenu) : {};
665
+
666
+ // 检查每个父项是否应该被自动选中或取消选中
667
+ Object.entries(parentChildMap).forEach(function (_ref16) {
668
+ var _ref17 = _slicedToArray(_ref16, 2),
669
+ parent = _ref17[0],
670
+ children = _ref17[1];
671
+ var allChildrenSelected = children.every(function (child) {
672
+ return processedValues.includes(child);
673
+ });
674
+ var parentSelected = processedValues.includes(parent);
675
+ if (allChildrenSelected && !parentSelected) {
676
+ // 所有子项都选中但父项未选中,自动选中父项
677
+ processedValues.push(parent);
678
+ } else if (!allChildrenSelected && parentSelected) {
679
+ // 部分子项未选中但父项选中,取消选中父项
680
+ processedValues = processedValues.filter(function (v) {
681
+ return v !== parent;
682
+ });
683
+ }
684
+ });
685
+ return processedValues;
686
+ };
687
+
688
+ // 应用父子关系处理
689
+ newValues = processParentChildRelations(newValues);
690
+
691
+ // 过滤掉所有全选按钮的值,只返回实际的业务值
692
+ var filteredValues = newValues.filter(function (val) {
693
+ return !val.startsWith('selectAll');
694
+ });
695
+ rawOnSelect(filteredValues);
696
+ } else {
697
+ // radio 模式或普通模式
698
+ rawOnSelect(value);
699
+ }
700
+ }, [rawOnSelect, isSelectable, multiple, selectedValue, layerMapping]);
701
+
702
+ // 从 placement 转换为 Radix UI 所需的 align 和 side
703
+ var _placementToRadixProp = placementToRadixProps(placement),
704
+ side = _placementToRadixProp.side,
705
+ align = _placementToRadixProp.align;
706
+
707
+ // 计算最终的开启状态
708
+ var finalOpen = visible !== undefined ? visible : trigger === 'hover' ? hoverOpen : undefined;
709
+
710
+ // 处理 hover 进入
711
+ var handleMouseEnter = useCallback(function () {
712
+ if (trigger === 'hover' && !disabled) {
713
+ if (hoverTimeoutRef.current) {
714
+ clearTimeout(hoverTimeoutRef.current);
715
+ hoverTimeoutRef.current = undefined;
716
+ }
717
+ if (!hoverOpen) {
718
+ setHoverOpen(true);
719
+ onVisibleChange === null || onVisibleChange === void 0 || onVisibleChange(true);
720
+ }
721
+ }
722
+ }, [trigger, onVisibleChange, hoverOpen, disabled]);
723
+
724
+ // 处理 hover 离开
725
+ var handleMouseLeave = useCallback(function (event) {
726
+ if (trigger === 'hover') {
727
+ // 检查鼠标是否移动到了菜单内容区域
728
+ var relatedTarget = event.relatedTarget;
729
+ if (containerRef.current && relatedTarget && relatedTarget instanceof Node) {
730
+ // 如果鼠标移动到容器内的元素,不关闭菜单
731
+ if (containerRef.current.contains(relatedTarget)) {
732
+ return;
733
+ }
734
+ }
735
+ hoverTimeoutRef.current = setTimeout(function () {
736
+ setHoverOpen(false);
737
+ onVisibleChange === null || onVisibleChange === void 0 || onVisibleChange(false);
738
+ }, 150);
739
+ }
740
+ }, [trigger, onVisibleChange]);
741
+
742
+ // 处理内容区域的鼠标事件
743
+ var handleContentMouseEnter = useCallback(function () {
744
+ if (trigger === 'hover' && hoverTimeoutRef.current) {
745
+ clearTimeout(hoverTimeoutRef.current);
746
+ hoverTimeoutRef.current = undefined;
747
+ }
748
+ }, [trigger]);
749
+ var handleContentMouseLeave = useCallback(function () {
750
+ if (trigger === 'hover') {
751
+ hoverTimeoutRef.current = setTimeout(function () {
752
+ setHoverOpen(false);
753
+ onVisibleChange === null || onVisibleChange === void 0 || onVisibleChange(false);
754
+ }, 150);
755
+ }
756
+ }, [trigger, onVisibleChange]);
757
+
758
+ // 清理定时器
759
+ useEffect(function () {
760
+ return function () {
761
+ if (hoverTimeoutRef.current) {
762
+ clearTimeout(hoverTimeoutRef.current);
763
+ }
764
+ };
765
+ }, []);
766
+
767
+ // 处理菜单项点击
768
+ var handleItemClick = useCallback(function () {
769
+ if (trigger === 'hover') {
770
+ // hover 模式下点击菜单项后关闭菜单
771
+ if (visible === undefined) {
772
+ // 非受控模式,直接设置内部状态
773
+ setHoverOpen(false);
774
+ }
775
+ // 受控模式,通知外部状态变化
776
+ onVisibleChange === null || onVisibleChange === void 0 || onVisibleChange(false);
777
+ }
778
+ // click 模式下由 Radix UI 自动处理关闭
779
+ }, [trigger, visible, onVisibleChange]);
780
+
781
+ // 处理状态变化
782
+ var handleOpenChange = useCallback(function (open) {
783
+ if (trigger === 'click' && !disabled) {
784
+ onVisibleChange === null || onVisibleChange === void 0 || onVisibleChange(open);
785
+ }
786
+ // hover 模式下不响应 click 事件的状态变化
787
+ }, [trigger, onVisibleChange, disabled]);
788
+ if (trigger === 'hover') {
789
+ return /*#__PURE__*/React.createElement("div", {
790
+ ref: containerRef,
791
+ onMouseEnter: handleMouseEnter,
792
+ onMouseLeave: handleMouseLeave,
793
+ style: {
794
+ display: 'inline-block'
795
+ }
796
+ }, /*#__PURE__*/React.createElement(DropdownMenu, {
797
+ open: disabled ? false : finalOpen,
798
+ onOpenChange: handleOpenChange,
799
+ modal: false
800
+ }, /*#__PURE__*/React.createElement(DropdownMenuTrigger, {
801
+ asChild: true,
802
+ disabled: disabled
803
+ }, children), /*#__PURE__*/React.createElement(DropdownMenuContent, {
804
+ align: align,
805
+ side: side,
806
+ matchWidth: matchWidth,
807
+ onMouseEnter: handleContentMouseEnter,
808
+ onMouseLeave: handleContentMouseLeave,
809
+ onCloseAutoFocus: function onCloseAutoFocus(e) {
810
+ // 防止 hover 时的自动聚焦 bug
811
+ e.preventDefault();
812
+ }
813
+ }, processedMenu === null || processedMenu === void 0 ? void 0 : processedMenu.map(function (item, index) {
814
+ return renderMenuItem(item, index, onSelect, handleItemClick, isSelectable, multiple, selectedValue, rawOnSelect, processedMenu, layerMapping);
815
+ }))));
816
+ }
817
+
818
+ // click 模式的默认渲染
819
+ return /*#__PURE__*/React.createElement(DropdownMenu, {
820
+ open: disabled ? false : finalOpen,
821
+ onOpenChange: handleOpenChange
822
+ }, /*#__PURE__*/React.createElement(DropdownMenuTrigger, {
823
+ asChild: true,
824
+ disabled: disabled
825
+ }, children), /*#__PURE__*/React.createElement(DropdownMenuContent, {
826
+ align: align,
827
+ side: side,
828
+ matchWidth: matchWidth
829
+ }, processedMenu === null || processedMenu === void 0 ? void 0 : processedMenu.map(function (item, index) {
830
+ return renderMenuItem(item, index, onSelect, undefined, isSelectable, multiple, selectedValue, rawOnSelect, processedMenu, layerMapping);
831
+ })));
832
+ };
833
+
834
+ // 导出基础组件供高级用法
835
+ export { DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger };
836
+ export default Dropdown;