@rainbow-oh/yee-c 0.1.0 → 0.3.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 (419) hide show
  1. package/dist/cjs/Alert/alert.js +10 -4
  2. package/dist/cjs/Alert/style/index.less +3 -0
  3. package/dist/cjs/Anchor/anchor-item.js +6 -4
  4. package/dist/cjs/Anchor/anchor.js +38 -22
  5. package/dist/cjs/Anchor/demo/auto.d.ts +11 -0
  6. package/dist/cjs/Anchor/demo/auto.js +85 -0
  7. package/dist/cjs/Anchor/demo/basic.js +7 -1
  8. package/dist/cjs/Anchor/demo/controlled.js +42 -30
  9. package/dist/cjs/Anchor/interface.d.ts +2 -0
  10. package/dist/cjs/Anchor/style/index.less +2 -2
  11. package/dist/cjs/Button/button.d.ts +1 -1
  12. package/dist/cjs/Button/button.js +2 -2
  13. package/dist/cjs/Button/style/index.less +23 -8
  14. package/dist/cjs/Card/demo/collapsible.js +2 -1
  15. package/dist/cjs/Carousel/demo/arrows.js +1 -1
  16. package/dist/cjs/Carousel/demo/autoplay.js +1 -1
  17. package/dist/cjs/Carousel/demo/effect.js +1 -1
  18. package/dist/cjs/Carousel/demo/position.js +1 -1
  19. package/dist/cjs/Checkbox/checkbox-group.js +4 -1
  20. package/dist/cjs/Checkbox/demo/group.js +1 -0
  21. package/dist/cjs/Checkbox/interface.d.ts +5 -0
  22. package/dist/cjs/Checkbox/style/index.less +21 -1
  23. package/dist/cjs/Config-Provider/interface.d.ts +4 -0
  24. package/dist/cjs/Dropdown/demo/placement.js +2 -1
  25. package/dist/cjs/Dropdown/dropdown.js +3 -0
  26. package/dist/cjs/Dropdown/style/index.less +6 -0
  27. package/dist/cjs/Form/Field.js +64 -12
  28. package/dist/cjs/Form/Group.js +3 -2
  29. package/dist/cjs/Form/demo/form-table.js +1 -8
  30. package/dist/cjs/Form/demo/tooltip.d.ts +3 -0
  31. package/dist/cjs/Form/demo/tooltip.js +84 -0
  32. package/dist/cjs/Form/interface.d.ts +51 -2
  33. package/dist/cjs/Form/style/index.less +22 -7
  34. package/dist/cjs/Menu/style/index.less +2 -2
  35. package/dist/cjs/Popconfirm/popconfirm.js +1 -1
  36. package/dist/cjs/Popconfirm/style/index.less +6 -0
  37. package/dist/cjs/Popover/popover.js +1 -1
  38. package/dist/cjs/Popover/style/index.less +6 -0
  39. package/dist/cjs/Progress/progress.js +2 -2
  40. package/dist/cjs/Radio/demo/button.js +1 -0
  41. package/dist/cjs/Radio/interface.d.ts +4 -0
  42. package/dist/cjs/Radio/radio-group.js +28 -14
  43. package/dist/cjs/Radio/radio.js +3 -1
  44. package/dist/cjs/Radio/style/index.less +26 -5
  45. package/dist/cjs/Segmented/demo/basic.d.ts +3 -0
  46. package/dist/cjs/Segmented/demo/basic.js +51 -0
  47. package/dist/cjs/Segmented/demo/block.d.ts +3 -0
  48. package/dist/cjs/Segmented/demo/block.js +49 -0
  49. package/dist/cjs/Segmented/demo/disabled.d.ts +3 -0
  50. package/dist/cjs/Segmented/demo/disabled.js +47 -0
  51. package/dist/cjs/Segmented/demo/size.d.ts +3 -0
  52. package/dist/cjs/Segmented/demo/size.js +37 -0
  53. package/dist/cjs/Segmented/index.d.ts +3 -0
  54. package/dist/cjs/Segmented/index.js +36 -0
  55. package/dist/cjs/Segmented/interface.d.ts +82 -0
  56. package/dist/cjs/Segmented/interface.js +17 -0
  57. package/dist/cjs/Segmented/segmented.d.ts +5 -0
  58. package/dist/cjs/Segmented/segmented.js +177 -0
  59. package/dist/cjs/Segmented/style/index.less +104 -0
  60. package/dist/cjs/Select/option.js +3 -2
  61. package/dist/cjs/Select/options.js +9 -1
  62. package/dist/cjs/Select/select.js +1 -0
  63. package/dist/cjs/Skeleton/demo/basic.js +1 -1
  64. package/dist/cjs/Space/interface.d.ts +4 -0
  65. package/dist/cjs/Space/space.js +36 -16
  66. package/dist/cjs/Spin/spin.js +2 -1
  67. package/dist/cjs/Splitter/demo/basic.js +1 -1
  68. package/dist/cjs/Splitter/demo/vertical.js +23 -1
  69. package/dist/cjs/Splitter/index.d.ts +1 -1
  70. package/dist/cjs/Splitter/interface.d.ts +9 -3
  71. package/dist/cjs/Splitter/splitter-handler.d.ts +1 -1
  72. package/dist/cjs/Splitter/splitter-handler.js +2 -1
  73. package/dist/cjs/Splitter/splitter.d.ts +2 -9
  74. package/dist/cjs/Splitter/splitter.js +53 -50
  75. package/dist/cjs/Splitter/style/index.less +21 -0
  76. package/dist/cjs/Steps/step.js +1 -1
  77. package/dist/cjs/Steps/style/index.less +8 -2
  78. package/dist/cjs/Switch/demo/content.js +22 -1
  79. package/dist/cjs/Switch/style/index.less +16 -0
  80. package/dist/cjs/Switch/switch.js +9 -2
  81. package/dist/cjs/Table/demo/size.js +1 -1
  82. package/dist/cjs/Table/interface.d.ts +5 -1
  83. package/dist/cjs/Table/theader/cell.js +4 -5
  84. package/dist/cjs/Tabs/hooks/useTabScroll.d.ts +1 -1
  85. package/dist/cjs/Tabs/interface.d.ts +1 -1
  86. package/dist/cjs/Tabs/style/index.less +4 -0
  87. package/dist/cjs/Tabs/tab-header/index.js +56 -25
  88. package/dist/cjs/Tag/demo/size.js +1 -1
  89. package/dist/cjs/Tag/style/index.less +1 -0
  90. package/dist/cjs/Tooltip/interface.d.ts +4 -0
  91. package/dist/cjs/Tooltip/style/index.less +8 -8
  92. package/dist/cjs/Tooltip/tooltip.js +11 -3
  93. package/dist/cjs/Tour/demo/basic.d.ts +3 -0
  94. package/dist/cjs/Tour/demo/basic.js +69 -0
  95. package/dist/cjs/Tour/demo/indicators.d.ts +3 -0
  96. package/dist/cjs/Tour/demo/indicators.js +76 -0
  97. package/dist/cjs/Tour/demo/placement.d.ts +3 -0
  98. package/dist/cjs/Tour/demo/placement.js +80 -0
  99. package/dist/cjs/Tour/demo/scroll.d.ts +3 -0
  100. package/dist/cjs/Tour/demo/scroll.js +72 -0
  101. package/dist/cjs/Tour/index.d.ts +3 -0
  102. package/dist/cjs/Tour/index.js +36 -0
  103. package/dist/cjs/Tour/interface.d.ts +118 -0
  104. package/dist/cjs/Tour/interface.js +17 -0
  105. package/dist/cjs/Tour/style/index.less +103 -0
  106. package/dist/cjs/Tour/tour.d.ts +5 -0
  107. package/dist/cjs/Tour/tour.js +403 -0
  108. package/dist/cjs/Tree/demo/checkable.js +6 -6
  109. package/dist/cjs/Tree/demo/draggable.d.ts +3 -0
  110. package/dist/cjs/Tree/demo/draggable.js +88 -0
  111. package/dist/cjs/Tree/demo/expanded.js +6 -6
  112. package/dist/cjs/Tree/index.d.ts +1 -0
  113. package/dist/cjs/Tree/index.js +3 -1
  114. package/dist/cjs/Tree/interface.d.ts +26 -0
  115. package/dist/cjs/Tree/style/index.less +25 -0
  116. package/dist/cjs/Tree/tree-node.js +38 -4
  117. package/dist/cjs/Tree/tree.d.ts +12 -1
  118. package/dist/cjs/Tree/tree.js +174 -18
  119. package/dist/cjs/Tree/utils/tree-tools.d.ts +21 -0
  120. package/dist/cjs/Tree/utils/tree-tools.js +88 -0
  121. package/dist/cjs/Trigger/style/index.less +17 -0
  122. package/dist/cjs/Trigger/trigger.js +3 -1
  123. package/dist/cjs/hooks/useDebounceFunction.d.ts +1 -1
  124. package/dist/cjs/hooks/useLayoutEffect.d.ts +1 -1
  125. package/dist/cjs/index.d.ts +4 -0
  126. package/dist/cjs/index.js +6 -0
  127. package/dist/cjs/locale/interface.d.ts +7 -0
  128. package/dist/cjs/locale/lang/en_US.js +6 -0
  129. package/dist/cjs/locale/lang/ja_JP.js +6 -0
  130. package/dist/cjs/locale/lang/zh_CN.js +6 -0
  131. package/dist/cjs/locale/lang/zh_TW.js +6 -0
  132. package/dist/cjs/style/color.blue.css +1 -1
  133. package/dist/cjs/style/color.crimson.css +1 -1
  134. package/dist/cjs/style/color.css +18 -1
  135. package/dist/cjs/style/size.css +51 -4
  136. package/dist/cjs/style/themes.css +3 -3
  137. package/dist/cjs/style/variables.css +70 -6
  138. package/dist/cjs/utils/debounce.d.ts +6 -1
  139. package/dist/cjs/utils/debounce.js +9 -1
  140. package/dist/cjs/version.d.ts +1 -1
  141. package/dist/cjs/version.js +1 -1
  142. package/dist/esm/Alert/alert.js +24 -8
  143. package/dist/esm/Alert/style/index.less +3 -0
  144. package/dist/esm/Anchor/anchor-item.js +6 -3
  145. package/dist/esm/Anchor/anchor.js +38 -19
  146. package/dist/esm/Anchor/demo/auto.d.ts +11 -0
  147. package/dist/esm/Anchor/demo/auto.js +62 -0
  148. package/dist/esm/Anchor/demo/basic.js +3 -1
  149. package/dist/esm/Anchor/demo/controlled.js +14 -9
  150. package/dist/esm/Anchor/interface.d.ts +2 -0
  151. package/dist/esm/Anchor/style/index.less +2 -2
  152. package/dist/esm/Button/button.d.ts +1 -1
  153. package/dist/esm/Button/button.js +2 -2
  154. package/dist/esm/Button/style/index.less +23 -8
  155. package/dist/esm/Card/demo/collapsible.js +2 -1
  156. package/dist/esm/Carousel/demo/arrows.js +1 -1
  157. package/dist/esm/Carousel/demo/autoplay.js +1 -1
  158. package/dist/esm/Carousel/demo/effect.js +1 -1
  159. package/dist/esm/Carousel/demo/position.js +1 -1
  160. package/dist/esm/Checkbox/checkbox-group.js +4 -2
  161. package/dist/esm/Checkbox/demo/group.js +1 -0
  162. package/dist/esm/Checkbox/interface.d.ts +5 -0
  163. package/dist/esm/Checkbox/style/index.less +21 -1
  164. package/dist/esm/Config-Provider/interface.d.ts +4 -0
  165. package/dist/esm/Dropdown/demo/placement.js +2 -1
  166. package/dist/esm/Dropdown/dropdown.js +6 -1
  167. package/dist/esm/Dropdown/style/index.less +6 -0
  168. package/dist/esm/Form/Field.js +53 -8
  169. package/dist/esm/Form/Group.js +4 -2
  170. package/dist/esm/Form/demo/form-table.js +8 -6
  171. package/dist/esm/Form/demo/tooltip.d.ts +3 -0
  172. package/dist/esm/Form/demo/tooltip.js +59 -0
  173. package/dist/esm/Form/interface.d.ts +51 -2
  174. package/dist/esm/Form/style/index.less +22 -7
  175. package/dist/esm/Menu/style/index.less +2 -2
  176. package/dist/esm/Popconfirm/popconfirm.js +3 -1
  177. package/dist/esm/Popconfirm/style/index.less +6 -0
  178. package/dist/esm/Popover/popover.js +3 -1
  179. package/dist/esm/Popover/style/index.less +6 -0
  180. package/dist/esm/Progress/progress.js +5 -5
  181. package/dist/esm/Radio/demo/button.js +1 -0
  182. package/dist/esm/Radio/interface.d.ts +4 -0
  183. package/dist/esm/Radio/radio-group.js +9 -2
  184. package/dist/esm/Radio/radio.js +3 -1
  185. package/dist/esm/Radio/style/index.less +26 -5
  186. package/dist/esm/Segmented/demo/basic.d.ts +3 -0
  187. package/dist/esm/Segmented/demo/basic.js +33 -0
  188. package/dist/esm/Segmented/demo/block.d.ts +3 -0
  189. package/dist/esm/Segmented/demo/block.js +29 -0
  190. package/dist/esm/Segmented/demo/disabled.d.ts +3 -0
  191. package/dist/esm/Segmented/demo/disabled.js +22 -0
  192. package/dist/esm/Segmented/demo/size.d.ts +3 -0
  193. package/dist/esm/Segmented/demo/size.js +15 -0
  194. package/dist/esm/Segmented/index.d.ts +3 -0
  195. package/dist/esm/Segmented/index.js +2 -0
  196. package/dist/esm/Segmented/interface.d.ts +82 -0
  197. package/dist/esm/Segmented/interface.js +1 -0
  198. package/dist/esm/Segmented/segmented.d.ts +5 -0
  199. package/dist/esm/Segmented/segmented.js +110 -0
  200. package/dist/esm/Segmented/style/index.less +104 -0
  201. package/dist/esm/Select/option.js +4 -2
  202. package/dist/esm/Select/options.js +5 -3
  203. package/dist/esm/Select/select.js +1 -0
  204. package/dist/esm/Skeleton/demo/basic.js +2 -8
  205. package/dist/esm/Space/interface.d.ts +4 -0
  206. package/dist/esm/Space/space.js +24 -13
  207. package/dist/esm/Spin/spin.js +2 -1
  208. package/dist/esm/Splitter/demo/basic.js +2 -0
  209. package/dist/esm/Splitter/demo/vertical.js +13 -5
  210. package/dist/esm/Splitter/index.d.ts +1 -1
  211. package/dist/esm/Splitter/interface.d.ts +9 -3
  212. package/dist/esm/Splitter/splitter-handler.d.ts +1 -1
  213. package/dist/esm/Splitter/splitter-handler.js +3 -1
  214. package/dist/esm/Splitter/splitter.d.ts +2 -9
  215. package/dist/esm/Splitter/splitter.js +59 -56
  216. package/dist/esm/Splitter/style/index.less +21 -0
  217. package/dist/esm/Steps/step.js +4 -1
  218. package/dist/esm/Steps/style/index.less +8 -2
  219. package/dist/esm/Switch/demo/content.js +12 -3
  220. package/dist/esm/Switch/style/index.less +16 -0
  221. package/dist/esm/Switch/switch.js +7 -5
  222. package/dist/esm/Table/demo/size.js +2 -7
  223. package/dist/esm/Table/interface.d.ts +5 -1
  224. package/dist/esm/Table/theader/cell.js +2 -3
  225. package/dist/esm/Tabs/hooks/useTabScroll.d.ts +1 -1
  226. package/dist/esm/Tabs/interface.d.ts +1 -1
  227. package/dist/esm/Tabs/style/index.less +4 -0
  228. package/dist/esm/Tabs/tab-header/index.js +11 -5
  229. package/dist/esm/Tag/demo/size.js +6 -2
  230. package/dist/esm/Tag/style/index.less +1 -0
  231. package/dist/esm/Tooltip/interface.d.ts +4 -0
  232. package/dist/esm/Tooltip/style/index.less +8 -8
  233. package/dist/esm/Tooltip/tooltip.js +14 -2
  234. package/dist/esm/Tour/demo/basic.d.ts +3 -0
  235. package/dist/esm/Tour/demo/basic.js +69 -0
  236. package/dist/esm/Tour/demo/indicators.d.ts +3 -0
  237. package/dist/esm/Tour/demo/indicators.js +73 -0
  238. package/dist/esm/Tour/demo/placement.d.ts +3 -0
  239. package/dist/esm/Tour/demo/placement.js +53 -0
  240. package/dist/esm/Tour/demo/scroll.d.ts +3 -0
  241. package/dist/esm/Tour/demo/scroll.js +58 -0
  242. package/dist/esm/Tour/index.d.ts +3 -0
  243. package/dist/esm/Tour/index.js +2 -0
  244. package/dist/esm/Tour/interface.d.ts +118 -0
  245. package/dist/esm/Tour/interface.js +1 -0
  246. package/dist/esm/Tour/style/index.less +103 -0
  247. package/dist/esm/Tour/tour.d.ts +5 -0
  248. package/dist/esm/Tour/tour.js +383 -0
  249. package/dist/esm/Tree/demo/checkable.js +6 -6
  250. package/dist/esm/Tree/demo/draggable.d.ts +3 -0
  251. package/dist/esm/Tree/demo/draggable.js +61 -0
  252. package/dist/esm/Tree/demo/expanded.js +6 -6
  253. package/dist/esm/Tree/index.d.ts +1 -0
  254. package/dist/esm/Tree/index.js +1 -0
  255. package/dist/esm/Tree/interface.d.ts +26 -0
  256. package/dist/esm/Tree/style/index.less +25 -0
  257. package/dist/esm/Tree/tree-node.js +29 -4
  258. package/dist/esm/Tree/tree.d.ts +12 -1
  259. package/dist/esm/Tree/tree.js +135 -4
  260. package/dist/esm/Tree/utils/tree-tools.d.ts +21 -0
  261. package/dist/esm/Tree/utils/tree-tools.js +128 -1
  262. package/dist/esm/Trigger/style/index.less +17 -0
  263. package/dist/esm/Trigger/trigger.js +4 -3
  264. package/dist/esm/hooks/useDebounceFunction.d.ts +1 -1
  265. package/dist/esm/hooks/useLayoutEffect.d.ts +1 -1
  266. package/dist/esm/index.d.ts +4 -0
  267. package/dist/esm/index.js +4 -0
  268. package/dist/esm/locale/interface.d.ts +7 -0
  269. package/dist/esm/locale/lang/en_US.js +6 -0
  270. package/dist/esm/locale/lang/ja_JP.js +6 -0
  271. package/dist/esm/locale/lang/zh_CN.js +6 -0
  272. package/dist/esm/locale/lang/zh_TW.js +6 -0
  273. package/dist/esm/style/color.blue.css +1 -1
  274. package/dist/esm/style/color.crimson.css +1 -1
  275. package/dist/esm/style/color.css +18 -1
  276. package/dist/esm/style/size.css +51 -4
  277. package/dist/esm/style/themes.css +3 -3
  278. package/dist/esm/style/variables.css +70 -6
  279. package/dist/esm/utils/debounce.d.ts +6 -1
  280. package/dist/esm/utils/debounce.js +9 -2
  281. package/dist/esm/version.d.ts +1 -1
  282. package/dist/esm/version.js +1 -1
  283. package/dist/umd/yee-c.min.css +3 -3
  284. package/dist/umd/yee-c.min.js +1 -1
  285. package/package.json +21 -23
  286. package/src/Alert/alert.tsx +10 -4
  287. package/src/Alert/style/index.less +3 -0
  288. package/src/Anchor/anchor-item.tsx +7 -2
  289. package/src/Anchor/anchor.tsx +49 -23
  290. package/src/Anchor/demo/auto.tsx +55 -0
  291. package/src/Anchor/demo/basic.tsx +7 -1
  292. package/src/Anchor/demo/controlled.tsx +18 -14
  293. package/src/Anchor/index.en-US.md +17 -0
  294. package/src/Anchor/index.zh-CN.md +17 -0
  295. package/src/Anchor/interface.ts +2 -0
  296. package/src/Anchor/style/index.less +2 -2
  297. package/src/Button/button.tsx +2 -2
  298. package/src/Button/style/index.less +23 -8
  299. package/src/Card/demo/collapsible.tsx +1 -0
  300. package/src/Carousel/demo/arrows.tsx +1 -1
  301. package/src/Carousel/demo/autoplay.tsx +1 -1
  302. package/src/Carousel/demo/effect.tsx +1 -1
  303. package/src/Carousel/demo/position.tsx +1 -1
  304. package/src/Checkbox/checkbox-group.tsx +5 -1
  305. package/src/Checkbox/demo/group.tsx +1 -0
  306. package/src/Checkbox/interface.ts +5 -0
  307. package/src/Checkbox/style/index.less +21 -1
  308. package/src/Config-Provider/index.en-US.md +2 -0
  309. package/src/Config-Provider/index.zh-CN.md +2 -0
  310. package/src/Config-Provider/interface.ts +4 -0
  311. package/src/Dropdown/demo/placement.tsx +1 -0
  312. package/src/Dropdown/dropdown.tsx +2 -0
  313. package/src/Dropdown/style/index.less +6 -0
  314. package/src/Form/Field.tsx +70 -9
  315. package/src/Form/Group.tsx +4 -1
  316. package/src/Form/demo/form-table.tsx +7 -7
  317. package/src/Form/demo/tooltip.tsx +72 -0
  318. package/src/Form/form-store.ts +1 -1
  319. package/src/Form/index.en-US.md +6 -0
  320. package/src/Form/index.zh-CN.md +87 -85
  321. package/src/Form/interface.ts +53 -2
  322. package/src/Form/style/index.less +22 -7
  323. package/src/Menu/style/index.less +2 -2
  324. package/src/Popconfirm/popconfirm.tsx +1 -1
  325. package/src/Popconfirm/style/index.less +6 -0
  326. package/src/Popover/popover.tsx +1 -1
  327. package/src/Popover/style/index.less +6 -0
  328. package/src/Progress/progress.tsx +2 -2
  329. package/src/Radio/demo/button.tsx +1 -0
  330. package/src/Radio/index.en-US.md +2 -0
  331. package/src/Radio/index.zh-CN.md +2 -0
  332. package/src/Radio/interface.ts +4 -0
  333. package/src/Radio/radio-group.tsx +9 -1
  334. package/src/Radio/radio.tsx +2 -1
  335. package/src/Radio/style/index.less +26 -5
  336. package/src/Segmented/demo/basic.tsx +24 -0
  337. package/src/Segmented/demo/block.tsx +17 -0
  338. package/src/Segmented/demo/disabled.tsx +18 -0
  339. package/src/Segmented/demo/size.tsx +10 -0
  340. package/src/Segmented/index.en-US.md +47 -0
  341. package/src/Segmented/index.ts +12 -0
  342. package/src/Segmented/index.zh-CN.md +47 -0
  343. package/src/Segmented/interface.ts +87 -0
  344. package/src/Segmented/segmented.tsx +134 -0
  345. package/src/Segmented/style/index.less +104 -0
  346. package/src/Select/option.tsx +2 -1
  347. package/src/Select/options.tsx +7 -2
  348. package/src/Select/select.tsx +1 -0
  349. package/src/Skeleton/demo/basic.tsx +3 -3
  350. package/src/Space/interface.ts +4 -0
  351. package/src/Space/space.tsx +40 -16
  352. package/src/Spin/spin.tsx +1 -0
  353. package/src/Splitter/demo/basic.tsx +2 -2
  354. package/src/Splitter/demo/vertical.tsx +19 -5
  355. package/src/Splitter/index.ts +5 -1
  356. package/src/Splitter/interface.ts +10 -3
  357. package/src/Splitter/splitter-handler.tsx +4 -2
  358. package/src/Splitter/splitter.tsx +55 -60
  359. package/src/Splitter/style/index.less +21 -0
  360. package/src/Steps/step.tsx +1 -1
  361. package/src/Steps/style/index.less +8 -2
  362. package/src/Switch/demo/content.tsx +15 -5
  363. package/src/Switch/style/index.less +16 -0
  364. package/src/Switch/switch.tsx +14 -6
  365. package/src/Table/demo/size.tsx +3 -3
  366. package/src/Table/index.en-US.md +1 -0
  367. package/src/Table/index.zh-CN.md +51 -50
  368. package/src/Table/interface.ts +5 -1
  369. package/src/Table/theader/cell.tsx +2 -9
  370. package/src/Tabs/interface.ts +1 -1
  371. package/src/Tabs/style/index.less +4 -0
  372. package/src/Tabs/tab-header/index.tsx +26 -5
  373. package/src/Tag/demo/size.tsx +2 -2
  374. package/src/Tag/style/index.less +1 -0
  375. package/src/Tooltip/index.en-US.md +1 -0
  376. package/src/Tooltip/index.zh-CN.md +1 -0
  377. package/src/Tooltip/interface.ts +4 -0
  378. package/src/Tooltip/style/index.less +8 -8
  379. package/src/Tooltip/tooltip.tsx +10 -1
  380. package/src/Tour/demo/basic.tsx +52 -0
  381. package/src/Tour/demo/indicators.tsx +63 -0
  382. package/src/Tour/demo/placement.tsx +55 -0
  383. package/src/Tour/demo/scroll.tsx +49 -0
  384. package/src/Tour/index.en-US.md +61 -0
  385. package/src/Tour/index.ts +10 -0
  386. package/src/Tour/index.zh-CN.md +61 -0
  387. package/src/Tour/interface.ts +126 -0
  388. package/src/Tour/style/index.less +103 -0
  389. package/src/Tour/tour.tsx +399 -0
  390. package/src/Tree/demo/checkable.tsx +6 -6
  391. package/src/Tree/demo/draggable.tsx +58 -0
  392. package/src/Tree/demo/expanded.tsx +7 -7
  393. package/src/Tree/index.en-US.md +3 -0
  394. package/src/Tree/index.ts +1 -0
  395. package/src/Tree/index.zh-CN.md +3 -0
  396. package/src/Tree/interface.ts +28 -0
  397. package/src/Tree/style/index.less +25 -0
  398. package/src/Tree/tree-node.tsx +26 -0
  399. package/src/Tree/tree.tsx +183 -2
  400. package/src/Tree/utils/tree-tools.ts +107 -0
  401. package/src/Trigger/style/index.less +17 -0
  402. package/src/Trigger/trigger.tsx +3 -1
  403. package/src/index.ts +6 -0
  404. package/src/locale/interface.ts +9 -0
  405. package/src/locale/lang/en_US.ts +7 -0
  406. package/src/locale/lang/ja_JP.ts +7 -0
  407. package/src/locale/lang/zh_CN.ts +7 -0
  408. package/src/locale/lang/zh_TW.ts +7 -0
  409. package/src/style/color.blue.css +1 -1
  410. package/src/style/color.crimson.css +1 -1
  411. package/src/style/color.css +18 -1
  412. package/src/style/size.css +51 -4
  413. package/src/utils/debounce.ts +22 -3
  414. package/src/version.ts +1 -1
  415. package/dist/cjs/utils/x.d.ts +0 -11
  416. package/dist/cjs/utils/x.js +0 -51
  417. package/dist/esm/utils/x.d.ts +0 -11
  418. package/dist/esm/utils/x.js +0 -49
  419. package/src/utils/x.ts +0 -33
@@ -15,6 +15,7 @@ toc: 'content'
15
15
  ## 代码演示
16
16
 
17
17
  <code src="./demo/basic.tsx" title="基础用法" description="Form的基础用法"></code>
18
+ <code src="./demo/tooltip.tsx" title="标签帮助提示" description="在标签旁展示帮助图标,支持自定义触发图标"></code>
18
19
  <code src="./demo/group.tsx" title="字段分组" description="Field.Group 共享标签和组级别校验"></code>
19
20
  <code src="./demo/watch.tsx" title="字段监听" description="useWatch 监听字段值变化实现联动"></code>
20
21
  <code src="./demo/list.tsx" title="表单列表" description="Form的列表字段用法"></code>
@@ -22,110 +23,111 @@ toc: 'content'
22
23
  <code src="./demo/layout.tsx" title="表单布局" description="不同的表单布局"></code>
23
24
  <code src="./demo/validate.tsx" title="表单校验" description="表单校验功能"></code>
24
25
 
25
- <!-- <code src="./demo/dynamic.tsx" title="动态表单" description="动态增减表单项"></code> -->
26
-
27
- <!-- <code src="./demo/virtual.tsx" title="虚拟表单" description="虚拟表单"></code> -->
28
-
29
26
  ## API
30
27
 
31
28
  ### FormProps
32
29
 
33
- | 属性名 | 类型 | 描述 | 默认值 |
34
- | -------------------- | ------------------------------------------- | ------------------------ | ------ |
35
- | prefixCls | `string` | 自定义类名前缀 | - |
36
- | className | `string` | 自定义根类名 | - |
37
- | style | `React.CSSProperties` | 自定义根样式 | - |
38
- | children | `React.ReactNode` | 字段 | - |
39
- | name | `string` | 表单名 | - |
40
- | form | [FormInstance](#forminstance) | 表单实例 | - |
41
- | disabled | `boolean` | 是否禁用 | - |
42
- | initialValues | `Store` | 初始值 | - |
43
- | layout | `'vertical' \| 'horizontal'` | 布局 | - |
44
- | onFinish | `(values: Values) => void` | submit提交时触发事件 | - |
45
- | onFinishFailed | `(err: Values) => void` | submit提交报错时触发事件 | - |
46
- | onValuesChange | `(changedValues: Record<string, any>, values: Values) => void` | 表单字段值改变时触发事件 | - |
47
- | onValuesBeforeChange | `(changedValues: Record<string, any>, values: Values) => void \| any` | 表单字段值改变前触发事件 | - |
48
- | onReset | `() => void` | 表单重置时触发的事件 | - |
49
- | data-* | `string` | - | 支持所有 data-* 属性,透传到组件根 DOM 元素 |
30
+ | 属性名 | 类型 | 描述 | 默认值 |
31
+ | -------------------- | --------------------------------------------------------------------- | ------------------------ | -------------------------------------------- |
32
+ | prefixCls | `string` | 自定义类名前缀 | - |
33
+ | className | `string` | 自定义根类名 | - |
34
+ | style | `React.CSSProperties` | 自定义根样式 | - |
35
+ | children | `React.ReactNode` | 字段 | - |
36
+ | name | `string` | 表单名 | - |
37
+ | form | [FormInstance](#forminstance) | 表单实例 | - |
38
+ | disabled | `boolean` | 是否禁用 | - |
39
+ | initialValues | `Store` | 初始值 | - |
40
+ | layout | `'vertical' \| 'horizontal'` | 布局 | - |
41
+ | onFinish | `(values: Values) => void` | submit提交时触发事件 | - |
42
+ | onFinishFailed | `(err: Values) => void` | submit提交报错时触发事件 | - |
43
+ | onValuesChange | `(changedValues: Record<string, any>, values: Values) => void` | 表单字段值改变时触发事件 | - |
44
+ | onValuesBeforeChange | `(changedValues: Record<string, any>, values: Values) => void \| any` | 表单字段值改变前触发事件 | - |
45
+ | onReset | `() => void` | 表单重置时触发的事件 | - |
46
+ | data-\* | `string` | - | 支持所有 data-\* 属性,透传到组件根 DOM 元素 |
50
47
 
51
48
  ### FormInstance
52
49
 
53
- | 属性名 | 类型 | 描述 |
54
- | --------------------- | ------------------------------------------------------------------------------------------ | -------------- |
55
- | getFieldValidate | `(name: Name) => ValidateMessage \| null` | 获取字段验证 |
56
- | getFieldValue | `(name: Name) => StoreValue` | 获取字段值 |
57
- | submit | `() => void` | 提交表单 |
58
- | getFieldsValue | `() => Values` | 获取所有字段值 |
59
- | setFieldsValue | `(newStore: Store, trigger?: TRIGGER) => void` | 设置字段值 |
60
- | setCallbacks | `(callbacks: Callbacks) => void` | 设置回调 |
61
- | resetFields | `(name?: Name[]) => void` | 重置字段 |
62
- | clearFields | `(name?: Name[]) => void` | 清空字段 |
63
- | validateField | `(name: Name, trigger?: 'onChange' \| 'onBlur') => ValidateMessage[]` | 校验单个字段 |
64
- | validateFields | `(names?: Name[], trigger?: TRIGGER) => ValidateMessage[]` | 校验多个字段 |
65
- | getCallbacks | `() => Callbacks` | 获取回调 |
66
- | registerFieldEntities | `(entity: FieldEntity) => void` | 注册字段实体 |
67
- | initialize | `({ initialValues, callbacks }: { initialValues?: Store; callbacks?: Callbacks }) => void` | 初始化表单 |
68
- | getListFields | `(name: NamePath) => FormListField[]` | 获取列表字段 |
69
- | getListOperations | `(name: NamePath) => FormListOperation` | 获取列表操作 |
70
- | subscribe | `(namePath?: NamePath, callback?: () => void) => () => void` | 订阅字段值变化,不传 namePath 监听所有字段 |
50
+ | 属性名 | 类型 | 描述 |
51
+ | --------------------- | ------------------------------------------------------------------------------------------ | ------------------------------------------ |
52
+ | getFieldValidate | `(name: Name) => ValidateMessage \| null` | 获取字段验证 |
53
+ | getFieldValue | `(name: Name) => StoreValue` | 获取字段值 |
54
+ | submit | `() => void` | 提交表单 |
55
+ | getFieldsValue | `() => Values` | 获取所有字段值 |
56
+ | setFieldsValue | `(newStore: Store, trigger?: TRIGGER) => void` | 设置字段值 |
57
+ | setCallbacks | `(callbacks: Callbacks) => void` | 设置回调 |
58
+ | resetFields | `(name?: Name[]) => void` | 重置字段 |
59
+ | clearFields | `(name?: Name[]) => void` | 清空字段 |
60
+ | validateField | `(name: Name, trigger?: 'onChange' \| 'onBlur') => ValidateMessage[]` | 校验单个字段 |
61
+ | validateFields | `(names?: Name[], trigger?: TRIGGER) => ValidateMessage[]` | 校验多个字段 |
62
+ | getCallbacks | `() => Callbacks` | 获取回调 |
63
+ | registerFieldEntities | `(entity: FieldEntity) => void` | 注册字段实体 |
64
+ | initialize | `({ initialValues, callbacks }: { initialValues?: Store; callbacks?: Callbacks }) => void` | 初始化表单 |
65
+ | getListFields | `(name: NamePath) => FormListField[]` | 获取列表字段 |
66
+ | getListOperations | `(name: NamePath) => FormListOperation` | 获取列表操作 |
67
+ | subscribe | `(namePath?: NamePath, callback?: () => void) => () => void` | 订阅字段值变化,不传 namePath 监听所有字段 |
71
68
 
72
69
  ### Form 静态方法
73
70
 
74
- | 方法名 | 类型 | 描述 |
75
- | ---------- | ------------------------------------------------------- | -------------------------- |
76
- | Form.useWatch | `(namePath?: NamePath, form?: FormInstance) => T \| undefined` | 监听表单字段值变化,不传 namePath 返回所有值 |
71
+ | 方法名 | 类型 | 描述 |
72
+ | ------------- | -------------------------------------------------------------- | -------------------------------------------- |
73
+ | Form.useWatch | `(namePath?: NamePath, form?: FormInstance) => T \| undefined` | 监听表单字段值变化,不传 namePath 返回所有值 |
77
74
 
78
75
  ### Field.GroupProps
79
76
 
80
- | 属性名 | 类型 | 描述 | 默认值 |
81
- | -------- | --------------------- | -------- | ------ |
82
- | children | `React.ReactNode` | 子元素,通常为多个 Form.Field | - |
83
- | label | `React.ReactNode` | 组标签 | - |
84
- | required | `boolean` | 是否必填(显示必填标记) | - |
85
- | rules | [Rule\[\]](#rule) | 组级别校验规则,validator 接收子字段值的对象 | - |
86
- | cols | `number` | 子字段列数 | - |
87
- | style | `React.CSSProperties` | 自定义样式 | - |
88
- | className | `string` | 自定义类名 | - |
77
+ | 属性名 | 类型 | 描述 | 默认值 |
78
+ | --------- | --------------------- | -------------------------------------------- | ------ |
79
+ | children | `React.ReactNode` | 子元素,通常为多个 Form.Field | - |
80
+ | label | `React.ReactNode` | 组标签 | - |
81
+ | required | `boolean` | 是否必填(显示必填标记) | - |
82
+ | rules | [Rule\[\]](#rule) | 组级别校验规则,validator 接收子字段值的对象 | - |
83
+ | cols | `number` | 子字段列数 | - |
84
+ | style | `React.CSSProperties` | 自定义样式 | - |
85
+ | className | `string` | 自定义类名 | - |
89
86
 
90
87
  ### FieldProps
91
88
 
92
- | 属性名 | 类型 | 描述 | 默认值 |
93
- | -------- | --------------------- | -------- | ------ |
94
- | children | `React.ReactElement` | 子元素 | - |
95
- | name | `NamePath` | 字段名 | - |
96
- | rules | [Rule\[\]](#rule) | 校验规则 | - |
97
- | label | `React.ReactNode` | 标签 | - |
98
- | required | `boolean` | 是否必填 | - |
99
- | disabled | `boolean` | 是否禁用 | - |
100
- | initialValue | `unknown` | 初始值 | - |
101
- | valuePropName | `string` | 设置子组件值的属性名 | `'value'` |
89
+ | 属性名 | 类型 | 描述 | 默认值 |
90
+ | ------------- | -------------------- | -------------------- | --------- |
91
+ | className | `string` | 自定义字段根类名 | - |
92
+ | style | `React.CSSProperties` | 自定义字段根样式 | - |
93
+ | classNames | `Partial<Record<'label' \| 'control', string>>` | 语义化结构类名 | - |
94
+ | styles | `Partial<Record<'label' \| 'control', React.CSSProperties>>` | 语义化结构样式 | - |
95
+ | children | `React.ReactElement` | 子元素 | - |
96
+ | name | `NamePath` | 字段名 | - |
97
+ | rules | [Rule\[\]](#rule) | 校验规则 | - |
98
+ | label | `React.ReactNode` | 标签 | - |
99
+ | tooltip | `ReactNode \| (Omit<TooltipProps, 'children'> & { icon?: ReactNode })` | 标签旁的帮助提示。传字符串/节点使用默认图标;传对象时可自定义 `icon`,其余属性透传给 Tooltip(`title`、`color`、`placement` 等) | - |
100
+ | required | `boolean` | 是否必填 | - |
101
+ | disabled | `boolean` | 是否禁用 | - |
102
+ | initialValue | `unknown` | 初始值 | - |
103
+ | valuePropName | `string` | 设置子组件值的属性名 | `'value'` |
102
104
 
103
105
  ### Rule
104
106
 
105
- | 属性名 | 类型 | 描述 |
106
- | --------------- | --------------- | ---------- |
107
- | required | `boolean` | 是否必填 |
108
- | type | `string` | 类型 |
109
- | min | `number` | 最小值 |
110
- | max | `number` | 最大值 |
111
- | minLength | `number` | 最小长度 |
112
- | maxLength | `number` | 最大长度 |
113
- | regexp | `RegExp` | 正则表达式 |
114
- | message | `string` | 错误信息 |
115
- | validator | `(value: unknown) => boolean` | 自定义校验函数 |
116
- | validateTrigger | `'onBlur' \| 'onChange' \| 'onSubmit' \| Array<'onBlur' \| 'onChange' \| 'onSubmit'>` | 校验触发时机 |
107
+ | 属性名 | 类型 | 描述 |
108
+ | --------------- | ------------------------------------------------------------------------------------- | -------------- |
109
+ | required | `boolean` | 是否必填 |
110
+ | type | `string` | 类型 |
111
+ | min | `number` | 最小值 |
112
+ | max | `number` | 最大值 |
113
+ | minLength | `number` | 最小长度 |
114
+ | maxLength | `number` | 最大长度 |
115
+ | regexp | `RegExp` | 正则表达式 |
116
+ | message | `string` | 错误信息 |
117
+ | validator | `(value: unknown) => boolean` | 自定义校验函数 |
118
+ | validateTrigger | `'onBlur' \| 'onChange' \| 'onSubmit' \| Array<'onBlur' \| 'onChange' \| 'onSubmit'>` | 校验触发时机 |
117
119
 
118
120
  ### Types
119
121
 
120
- | 类型 | 描述 |
121
- | --------------- | --------------------------------------------------------- |
122
- | StoreValue | `any` |
123
- | Store | `Record<string, StoreValue>` |
124
- | Name | `string` |
125
- | NamePath | `string \| string[] \| number \| (string \| number)[]` |
126
- | ValidateMessage | `{ name: NamePath \| NamePath[] \| undefined; message: string; value: unknown; status: 'error' \| 'success' \| 'warning' \| 'info' }` |
127
- | FieldEntity | `{ props: fieldProps & { name?: NamePath }; onStoreChange: () => void }` |
128
- | TRIGGER | `'onChange' \| 'onBlur' \| 'onSubmit' \| 'reset' \| 'clear' \| 'update'` |
129
- | FormListField | `{ key: React.Key; name: number; isListField?: boolean }` |
130
- | FormListOperation | `{ add: (defaultValue?: any, insertIndex?: number) => void; remove: (index: number \| number[]) => void; move: (from: number, to: number) => void }` |
131
- | FormListProps | `{ name: NamePath; children: (fields: FormListField[], operation: FormListOperation, meta: { errors: React.ReactNode[] }) => React.ReactNode; initialValue?: any[]; rules?: Rule[] }` |
122
+ | 类型 | 描述 |
123
+ | ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
124
+ | StoreValue | `any` |
125
+ | Store | `Record<string, StoreValue>` |
126
+ | Name | `string` |
127
+ | NamePath | `string \| string[] \| number \| (string \| number)[]` |
128
+ | ValidateMessage | `{ name: NamePath \| NamePath[] \| undefined; message: string; value: unknown; status: 'error' \| 'success' \| 'warning' \| 'info' }` |
129
+ | FieldEntity | `{ props: fieldProps & { name?: NamePath }; onStoreChange: () => void }` |
130
+ | TRIGGER | `'onChange' \| 'onBlur' \| 'onSubmit' \| 'reset' \| 'clear' \| 'update'` |
131
+ | FormListField | `{ key: React.Key; name: number; isListField?: boolean }` |
132
+ | FormListOperation | `{ add: (defaultValue?: any, insertIndex?: number) => void; remove: (index: number \| number[]) => void; move: (from: number, to: number) => void }` |
133
+ | FormListProps | `{ name: NamePath; children: (fields: FormListField[], operation: FormListOperation, meta: { errors: React.ReactNode[] }) => React.ReactNode; initialValue?: any[]; rules?: Rule[] }` |
@@ -1,3 +1,4 @@
1
+ import type { TooltipProps } from '../Tooltip';
1
2
  import type { DataAttributeProps } from '../utils/types';
2
3
 
3
4
  export type StoreValue = any;
@@ -5,7 +6,7 @@ export type Store = Record<string, StoreValue>;
5
6
  export type Name = string;
6
7
  export type NamePath = string | string[] | number | (string | number)[];
7
8
 
8
- export type SemanticDOM = 'label' | 'control';
9
+ export type FieldSemanticDOM = 'label' | 'control';
9
10
 
10
11
  // Internal name path type, always a string array
11
12
  export type InternalNamePath = (string | number)[];
@@ -230,7 +231,7 @@ export type Rule = {
230
231
  /**
231
232
  * Error message
232
233
  */
233
- message: string;
234
+ message?: string;
234
235
  /**
235
236
  * Custom validation function, returns true for pass, false or throw for fail
236
237
  */
@@ -253,12 +254,62 @@ export type ValidateMessage = {
253
254
  status: 'error' | 'success' | 'warning' | 'info';
254
255
  };
255
256
 
257
+ export type FieldConfigurableTooltip = Omit<TooltipProps, 'children'> & {
258
+ /**
259
+ * Custom trigger icon (defaults to a built-in help icon)
260
+ */
261
+ icon?: React.ReactNode;
262
+ };
263
+
264
+ export type FieldTooltip = React.ReactNode | FieldConfigurableTooltip;
265
+
256
266
  export type FieldProps = {
267
+ /**
268
+ * custom field root className
269
+ * */
270
+ className?: string;
271
+ /**
272
+ * custom field root style
273
+ * */
274
+ style?: React.CSSProperties;
275
+ /**
276
+ * Semantic DOM className
277
+ * */
278
+ classNames?: Partial<Record<FieldSemanticDOM, string>>;
279
+ /**
280
+ * Semantic DOM style
281
+ * */
282
+ styles?: Partial<Record<FieldSemanticDOM, React.CSSProperties>>;
283
+ /**
284
+ * Child nodes
285
+ * */
257
286
  children: React.ReactElement;
287
+ /**
288
+ * Field name
289
+ * */
258
290
  name: NamePath;
291
+ /**
292
+ * Validation rules
293
+ * */
259
294
  rules?: Rule[];
295
+ /***
296
+ * Field label
297
+ */
260
298
  label?: React.ReactNode;
299
+ /**
300
+ * Tooltip shown next to the label (a help icon).
301
+ * Pass a string/node to use the default icon, or an object to customize the icon.
302
+ * */
303
+ tooltip?: FieldTooltip;
304
+ /**
305
+ * Whether required (shows required mark)
306
+ * */
261
307
  required?: boolean;
308
+ /**
309
+ * Layout of label and control
310
+ * @default 'vertical'
311
+ * */
312
+ layout?: 'vertical' | 'horizontal';
262
313
  /**
263
314
  * Format value before passing to children
264
315
  * */
@@ -18,17 +18,32 @@
18
18
  // padding-bottom: var(--yee-form-item-padding-bottom);
19
19
 
20
20
  &-label {
21
- display: inline-block;
21
+ display: inline-flex;
22
+ align-items: center;
23
+ gap: 2px;
22
24
  margin-bottom: var(--yee-form-item-label-mb, 4px);
23
25
  line-height: var(--yee-form-item-label-line-height);
24
26
  }
25
27
 
26
- &-required {
27
- &::after {
28
- color: var(--yee-input-required-font-color);
29
- content: '*';
30
- margin-inline-start: var(--yee-form-item-required-margin-inline-start);
31
- }
28
+ // The required asterisk is rendered as a real node via &-required-mark so it
29
+ // stays glued to the label text regardless of what else sits inside the label.
30
+ // The `item-required` className is still applied to the label (see Field/Group)
31
+ // as an opt-in styling hook; the mark itself lives in &-required-mark below.
32
+ &-required-mark {
33
+ color: var(--yee-input-required-font-color);
34
+ margin-inline-start: var(--yee-form-item-required-margin-inline-start);
35
+ line-height: 1;
36
+ }
37
+
38
+ &-tooltip-icon {
39
+ display: inline-flex;
40
+ align-items: center;
41
+ margin-inline-start: 4px;
42
+ color: var(
43
+ --yee-form-item-tooltip-icon-color,
44
+ var(--yee-text-color-secondary, #999)
45
+ );
46
+ cursor: pointer;
32
47
  }
33
48
 
34
49
  &-control {
@@ -82,7 +82,7 @@
82
82
  list-style: none;
83
83
 
84
84
  &-title {
85
- padding: var(--yee-menu-item-group-title-padding, 8px 16px);
85
+ padding: var(--yee-menu-item-group-title-padding, 4px 12px);
86
86
  color: var(
87
87
  --yee-menu-item-group-title-color,
88
88
  var(--yee-color-text-secondary)
@@ -106,7 +106,7 @@
106
106
  margin: var(--yee-menu-item-divider-margin, 4px 0);
107
107
  border-top: var(
108
108
  --yee-menu-item-divider-border,
109
- 1px solid var(--yee-color-border)
109
+ 1px solid var(--yee-border-color)
110
110
  );
111
111
  }
112
112
 
@@ -27,7 +27,7 @@ const Popconfirm: React.FC<PopconfirmProps> = (baseprops) => {
27
27
  defaultOpen,
28
28
  title,
29
29
  description,
30
- arrow = true,
30
+ arrow = { className: `${prefixCls}-arrow` },
31
31
  placement = 'top',
32
32
  confirmText = popconfirmLocale.okText,
33
33
  cancelText = popconfirmLocale.cancelText,
@@ -20,4 +20,10 @@
20
20
  &-footer {
21
21
  margin-top: var(--yee-popconfirm-footer-margin-top);
22
22
  }
23
+
24
+ &-arrow {
25
+ &::after {
26
+ background-color: var(--yee-popconfirm-bg-font-color);
27
+ }
28
+ }
23
29
  }
@@ -19,7 +19,7 @@ const Popover = (baseprops: PopoverProps) => {
19
19
  children,
20
20
  title,
21
21
  content,
22
- arrow = true,
22
+ arrow = { className: `${prefixCls}-arrow` },
23
23
  placement = 'top',
24
24
  trigger = 'hover',
25
25
  style,
@@ -14,4 +14,10 @@
14
14
  line-height: var(--yee-popover-header-line-height);
15
15
  background-color: var(--yee-popover-header-bg-color);
16
16
  }
17
+
18
+ &-arrow {
19
+ &::after {
20
+ background-color: var(--yee-popover-bg-color);
21
+ }
22
+ }
17
23
  }
@@ -75,13 +75,13 @@ const Progress = React.forwardRef<HTMLDivElement, ProgressProps>(
75
75
  let progress;
76
76
  if (type === 'line') {
77
77
  progress = (
78
- <Line prefixCls={prefixCls} percent={percent}>
78
+ <Line {...rest} prefixCls={prefixCls} percent={percent}>
79
79
  {progressInfo}
80
80
  </Line>
81
81
  );
82
82
  } else {
83
83
  progress = (
84
- <Circle prefixCls={prefixCls} percent={percent}>
84
+ <Circle {...rest} prefixCls={prefixCls} percent={percent}>
85
85
  {progressInfo}
86
86
  </Circle>
87
87
  );
@@ -26,6 +26,7 @@ export default () => {
26
26
  value={value2}
27
27
  onChange={(e) => setValue2(e)}
28
28
  buttonStyle="solid"
29
+ gap={8}
29
30
  options={[
30
31
  { value: 'a', label: 'Hangzhou' },
31
32
  { value: 'b', label: 'Shanghai' },
@@ -54,4 +54,6 @@ Radio button for selecting one option from a set of options.
54
54
  | disabled | `boolean` | Disable all options | - |
55
55
  | buttonStyle | `'outline' \| 'solid' \| 'cornermark'` | Button style | - |
56
56
  | options | `Array<RadioProps & { label: React.ReactNode }>` | Options in configuration form | - |
57
+ | toggleable | `boolean` | Whether selection can be toggled (click again to deselect) | - |
58
+ | gap | `number` | Set the interval between radios | - |
57
59
  | onChange | `(value: string, event: React.ChangeEvent<HTMLInputElement>) => void` | Callback when value changes | - |
@@ -54,4 +54,6 @@ toc: 'content'
54
54
  | disabled | `boolean` | 是否禁用所有选项 | - |
55
55
  | buttonStyle | `'outline' \| 'solid' \| 'cornermark'` | 按钮风格 | - |
56
56
  | options | `Array<RadioProps & { label: React.ReactNode }>` | 选项,以配置形式 | - |
57
+ | toggleable | `boolean` | 是否允许切换选中状态(再次点击取消选中) | - |
58
+ | gap | `number` | 设置单选框之间的间距 | - |
57
59
  | onChange | `(value: string, event: React.ChangeEvent<HTMLInputElement>) => void` | 值改变时的回调 | - |
@@ -96,6 +96,10 @@ export interface RadioGroupProps {
96
96
  * Whether to toggle checked state
97
97
  */
98
98
  toggleable?: boolean;
99
+ /**
100
+ * Set the interval between radios
101
+ * */
102
+ gap?: number;
99
103
  /**
100
104
  * Callback when value changes
101
105
  */
@@ -22,6 +22,7 @@ const RadioGroup = React.forwardRef<HTMLDivElement, RadioGroupProps>(
22
22
  const {
23
23
  prefixCls = 'yee-radio-group',
24
24
  className,
25
+ style,
25
26
  name = uid,
26
27
  value,
27
28
  defaultValue,
@@ -29,6 +30,7 @@ const RadioGroup = React.forwardRef<HTMLDivElement, RadioGroupProps>(
29
30
  buttonStyle,
30
31
  disabled,
31
32
  size,
33
+ gap,
32
34
  onChange,
33
35
  ...rest
34
36
  } = props;
@@ -43,6 +45,7 @@ const RadioGroup = React.forwardRef<HTMLDivElement, RadioGroupProps>(
43
45
  {
44
46
  [`${prefixCls}-${buttonStyle}`]: buttonStyle,
45
47
  [`${prefixCls}-${size}`]: size,
48
+ [`${prefixCls}-with-gap`]: gap,
46
49
  },
47
50
  className,
48
51
  );
@@ -53,7 +56,12 @@ const RadioGroup = React.forwardRef<HTMLDivElement, RadioGroupProps>(
53
56
  };
54
57
 
55
58
  return (
56
- <div className={cls} ref={ref} role="radiogroup">
59
+ <div
60
+ className={cls}
61
+ style={{ ...style, gap: gap }}
62
+ ref={ref}
63
+ role="radiogroup"
64
+ >
57
65
  <GroupCtx.Provider
58
66
  value={{ name, buttonStyle, onChange: handleChange }}
59
67
  >
@@ -16,6 +16,7 @@ const Radio = React.forwardRef<HTMLInputElement, RadioProps>(
16
16
  prefixCls = 'yee-radio',
17
17
  className,
18
18
  classNames,
19
+ style,
19
20
  styles,
20
21
  label,
21
22
  children,
@@ -66,7 +67,7 @@ const Radio = React.forwardRef<HTMLInputElement, RadioProps>(
66
67
  );
67
68
 
68
69
  return (
69
- <label className={cls} onClick={handleClick}>
70
+ <label className={cls} style={style} onClick={handleClick}>
70
71
  <span
71
72
  className={clsx(prefixCls, {
72
73
  [`${prefixCls}-disabled`]: disabled,
@@ -9,14 +9,16 @@
9
9
  gap: var(--yee-radio-group-gap);
10
10
 
11
11
  &-small {
12
- @{pls} {
13
- padding: var(--yee-radio-small-padding, 2px 4px);
12
+ @{pls}-button-wrapper {
13
+ font-size: var(--yee-radio-font-small-size);
14
+ padding: var(--yee-radio-small-padding);
14
15
  }
15
16
  }
16
17
 
17
18
  &-large {
18
- @{pls} {
19
- padding: var(--yee-radio-large-padding, 6px 12px);
19
+ @{pls}-button-wrapper {
20
+ font-size: var(--yee-radio-font-large-size);
21
+ padding: var(--yee-radio-large-padding);
20
22
  }
21
23
  }
22
24
 
@@ -61,12 +63,25 @@
61
63
  bottom: 0;
62
64
  border-color: transparent;
63
65
  border-style: solid;
64
- border-width: var(--yee-radio-cornermark-border-width);
66
+ border-width: calc(var(--yee-radio-cornermark-border-width) / 3 * 2);
65
67
  border-right-color: var(--yee-radio-inner-checked-border-color);
66
68
  border-bottom-color: var(--yee-radio-inner-checked-border-color);
67
69
  content: '';
68
70
  }
69
71
 
72
+ &::before {
73
+ position: absolute;
74
+ z-index: 1;
75
+ right: 3px;
76
+ top: 18px;
77
+ width: 3px;
78
+ height: 7px;
79
+ border: 2px solid #fff;
80
+ border-width: 0 2px 2px 0;
81
+ transform: rotate(45deg);
82
+ content: '';
83
+ }
84
+
70
85
  z-index: 1;
71
86
  }
72
87
 
@@ -74,6 +89,12 @@
74
89
  margin-left: -1px;
75
90
  }
76
91
  }
92
+
93
+ &-with-gap {
94
+ @{pls}-button-wrapper {
95
+ border-radius: var(--yee-radio-button-wrapper-border-radius);
96
+ }
97
+ }
77
98
  }
78
99
 
79
100
  &-wrapper {
@@ -0,0 +1,24 @@
1
+ import { Segmented, Space } from '@rainbow-oh/yee-c';
2
+ import React, { useState } from 'react';
3
+
4
+ export default () => {
5
+ const [value, setValue] = useState<string | number>('daily');
6
+
7
+ return (
8
+ <Space direction="vertical">
9
+ <Segmented
10
+ options={[
11
+ { label: 'Daily', value: 'daily' },
12
+ { label: 'Weekly', value: 'weekly' },
13
+ { label: 'Monthly', value: 'monthly' },
14
+ ]}
15
+ value={value}
16
+ onChange={setValue}
17
+ />
18
+
19
+ <Segmented options={['List', 'Table', 'Chart']} defaultValue="List" />
20
+
21
+ <div>Selected: {value}</div>
22
+ </Space>
23
+ );
24
+ };
@@ -0,0 +1,17 @@
1
+ import { Segmented } from '@rainbow-oh/yee-c';
2
+ import { LayoutGrid, List } from 'lucide-react';
3
+ import React from 'react';
4
+
5
+ export default () => (
6
+ <div style={{ width: 480 }}>
7
+ <Segmented
8
+ block
9
+ defaultValue="list"
10
+ options={[
11
+ { label: 'List', value: 'list', icon: <List size={16} /> },
12
+ { label: 'Grid', value: 'grid', icon: <LayoutGrid size={16} /> },
13
+ { label: 'Detail', value: 'detail' },
14
+ ]}
15
+ />
16
+ </div>
17
+ );
@@ -0,0 +1,18 @@
1
+ import { Segmented } from '@rainbow-oh/yee-c';
2
+ import React from 'react';
3
+
4
+ export default () => (
5
+ <>
6
+ <Segmented
7
+ options={[
8
+ { label: 'A', value: 'a' },
9
+ { label: 'B', value: 'b', disabled: true },
10
+ { label: 'C', value: 'c' },
11
+ ]}
12
+ defaultValue="a"
13
+ />
14
+ <br />
15
+ <br />
16
+ <Segmented disabled options={['A', 'B', 'C']} defaultValue="A" />
17
+ </>
18
+ );