@rainbow-oh/yee-c 0.1.0 → 0.2.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 (228) 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/Checkbox/checkbox-group.js +4 -1
  13. package/dist/cjs/Checkbox/demo/group.js +1 -0
  14. package/dist/cjs/Checkbox/interface.d.ts +5 -0
  15. package/dist/cjs/Checkbox/style/index.less +21 -1
  16. package/dist/cjs/Dropdown/demo/placement.js +2 -1
  17. package/dist/cjs/Dropdown/dropdown.js +3 -0
  18. package/dist/cjs/Dropdown/style/index.less +6 -0
  19. package/dist/cjs/Form/Field.js +33 -3
  20. package/dist/cjs/Form/Group.js +3 -2
  21. package/dist/cjs/Form/demo/form-table.js +1 -8
  22. package/dist/cjs/Form/demo/tooltip.d.ts +3 -0
  23. package/dist/cjs/Form/demo/tooltip.js +84 -0
  24. package/dist/cjs/Form/interface.d.ts +34 -1
  25. package/dist/cjs/Form/style/index.less +22 -7
  26. package/dist/cjs/Popconfirm/popconfirm.js +1 -1
  27. package/dist/cjs/Popconfirm/style/index.less +6 -0
  28. package/dist/cjs/Popover/popover.js +1 -1
  29. package/dist/cjs/Popover/style/index.less +6 -0
  30. package/dist/cjs/Progress/progress.js +2 -2
  31. package/dist/cjs/Radio/style/index.less +13 -6
  32. package/dist/cjs/Select/option.js +3 -2
  33. package/dist/cjs/Select/options.js +9 -1
  34. package/dist/cjs/Select/select.js +1 -0
  35. package/dist/cjs/Skeleton/demo/basic.js +1 -1
  36. package/dist/cjs/Space/interface.d.ts +4 -0
  37. package/dist/cjs/Space/space.js +36 -16
  38. package/dist/cjs/Splitter/demo/basic.js +1 -1
  39. package/dist/cjs/Splitter/demo/vertical.js +23 -1
  40. package/dist/cjs/Splitter/index.d.ts +1 -1
  41. package/dist/cjs/Splitter/interface.d.ts +9 -3
  42. package/dist/cjs/Splitter/splitter-handler.d.ts +1 -1
  43. package/dist/cjs/Splitter/splitter-handler.js +2 -1
  44. package/dist/cjs/Splitter/splitter.d.ts +2 -9
  45. package/dist/cjs/Splitter/splitter.js +53 -50
  46. package/dist/cjs/Splitter/style/index.less +21 -0
  47. package/dist/cjs/Table/demo/size.js +1 -1
  48. package/dist/cjs/Tabs/hooks/useTabScroll.d.ts +1 -1
  49. package/dist/cjs/Tabs/interface.d.ts +1 -1
  50. package/dist/cjs/Tabs/style/index.less +4 -0
  51. package/dist/cjs/Tabs/tab-header/index.js +56 -25
  52. package/dist/cjs/Tooltip/interface.d.ts +4 -0
  53. package/dist/cjs/Tooltip/style/index.less +8 -8
  54. package/dist/cjs/Tooltip/tooltip.js +11 -3
  55. package/dist/cjs/Tree/demo/draggable.d.ts +3 -0
  56. package/dist/cjs/Tree/demo/draggable.js +88 -0
  57. package/dist/cjs/Tree/demo/expanded.js +6 -6
  58. package/dist/cjs/Tree/index.d.ts +1 -0
  59. package/dist/cjs/Tree/index.js +3 -1
  60. package/dist/cjs/Tree/interface.d.ts +26 -0
  61. package/dist/cjs/Tree/style/index.less +25 -0
  62. package/dist/cjs/Tree/tree-node.js +38 -4
  63. package/dist/cjs/Tree/tree.d.ts +12 -1
  64. package/dist/cjs/Tree/tree.js +174 -18
  65. package/dist/cjs/Tree/utils/tree-tools.d.ts +21 -0
  66. package/dist/cjs/Tree/utils/tree-tools.js +88 -0
  67. package/dist/cjs/Trigger/style/index.less +17 -0
  68. package/dist/cjs/Trigger/trigger.js +3 -1
  69. package/dist/cjs/hooks/useDebounceFunction.d.ts +1 -1
  70. package/dist/cjs/hooks/useLayoutEffect.d.ts +1 -1
  71. package/dist/cjs/style/size.css +13 -4
  72. package/dist/cjs/style/themes.css +1 -1
  73. package/dist/cjs/style/variables.css +14 -5
  74. package/dist/cjs/utils/debounce.d.ts +6 -1
  75. package/dist/cjs/utils/debounce.js +9 -1
  76. package/dist/cjs/version.d.ts +1 -1
  77. package/dist/cjs/version.js +1 -1
  78. package/dist/esm/Alert/alert.js +24 -8
  79. package/dist/esm/Alert/style/index.less +3 -0
  80. package/dist/esm/Anchor/anchor-item.js +6 -3
  81. package/dist/esm/Anchor/anchor.js +38 -19
  82. package/dist/esm/Anchor/demo/auto.d.ts +11 -0
  83. package/dist/esm/Anchor/demo/auto.js +62 -0
  84. package/dist/esm/Anchor/demo/basic.js +3 -1
  85. package/dist/esm/Anchor/demo/controlled.js +14 -9
  86. package/dist/esm/Anchor/interface.d.ts +2 -0
  87. package/dist/esm/Anchor/style/index.less +2 -2
  88. package/dist/esm/Button/button.d.ts +1 -1
  89. package/dist/esm/Checkbox/checkbox-group.js +4 -2
  90. package/dist/esm/Checkbox/demo/group.js +1 -0
  91. package/dist/esm/Checkbox/interface.d.ts +5 -0
  92. package/dist/esm/Checkbox/style/index.less +21 -1
  93. package/dist/esm/Dropdown/demo/placement.js +2 -1
  94. package/dist/esm/Dropdown/dropdown.js +6 -1
  95. package/dist/esm/Dropdown/style/index.less +6 -0
  96. package/dist/esm/Form/Field.js +43 -5
  97. package/dist/esm/Form/Group.js +4 -2
  98. package/dist/esm/Form/demo/form-table.js +8 -6
  99. package/dist/esm/Form/demo/tooltip.d.ts +3 -0
  100. package/dist/esm/Form/demo/tooltip.js +59 -0
  101. package/dist/esm/Form/interface.d.ts +34 -1
  102. package/dist/esm/Form/style/index.less +22 -7
  103. package/dist/esm/Popconfirm/popconfirm.js +3 -1
  104. package/dist/esm/Popconfirm/style/index.less +6 -0
  105. package/dist/esm/Popover/popover.js +3 -1
  106. package/dist/esm/Popover/style/index.less +6 -0
  107. package/dist/esm/Progress/progress.js +5 -5
  108. package/dist/esm/Radio/style/index.less +13 -6
  109. package/dist/esm/Select/option.js +4 -2
  110. package/dist/esm/Select/options.js +5 -3
  111. package/dist/esm/Select/select.js +1 -0
  112. package/dist/esm/Skeleton/demo/basic.js +2 -8
  113. package/dist/esm/Space/interface.d.ts +4 -0
  114. package/dist/esm/Space/space.js +24 -13
  115. package/dist/esm/Splitter/demo/basic.js +2 -0
  116. package/dist/esm/Splitter/demo/vertical.js +13 -5
  117. package/dist/esm/Splitter/index.d.ts +1 -1
  118. package/dist/esm/Splitter/interface.d.ts +9 -3
  119. package/dist/esm/Splitter/splitter-handler.d.ts +1 -1
  120. package/dist/esm/Splitter/splitter-handler.js +3 -1
  121. package/dist/esm/Splitter/splitter.d.ts +2 -9
  122. package/dist/esm/Splitter/splitter.js +59 -56
  123. package/dist/esm/Splitter/style/index.less +21 -0
  124. package/dist/esm/Table/demo/size.js +2 -7
  125. package/dist/esm/Tabs/hooks/useTabScroll.d.ts +1 -1
  126. package/dist/esm/Tabs/interface.d.ts +1 -1
  127. package/dist/esm/Tabs/style/index.less +4 -0
  128. package/dist/esm/Tabs/tab-header/index.js +11 -5
  129. package/dist/esm/Tooltip/interface.d.ts +4 -0
  130. package/dist/esm/Tooltip/style/index.less +8 -8
  131. package/dist/esm/Tooltip/tooltip.js +14 -2
  132. package/dist/esm/Tree/demo/draggable.d.ts +3 -0
  133. package/dist/esm/Tree/demo/draggable.js +61 -0
  134. package/dist/esm/Tree/demo/expanded.js +6 -6
  135. package/dist/esm/Tree/index.d.ts +1 -0
  136. package/dist/esm/Tree/index.js +1 -0
  137. package/dist/esm/Tree/interface.d.ts +26 -0
  138. package/dist/esm/Tree/style/index.less +25 -0
  139. package/dist/esm/Tree/tree-node.js +29 -4
  140. package/dist/esm/Tree/tree.d.ts +12 -1
  141. package/dist/esm/Tree/tree.js +135 -4
  142. package/dist/esm/Tree/utils/tree-tools.d.ts +21 -0
  143. package/dist/esm/Tree/utils/tree-tools.js +128 -1
  144. package/dist/esm/Trigger/style/index.less +17 -0
  145. package/dist/esm/Trigger/trigger.js +4 -3
  146. package/dist/esm/hooks/useDebounceFunction.d.ts +1 -1
  147. package/dist/esm/hooks/useLayoutEffect.d.ts +1 -1
  148. package/dist/esm/style/size.css +13 -4
  149. package/dist/esm/style/themes.css +1 -1
  150. package/dist/esm/style/variables.css +14 -5
  151. package/dist/esm/utils/debounce.d.ts +6 -1
  152. package/dist/esm/utils/debounce.js +9 -2
  153. package/dist/esm/version.d.ts +1 -1
  154. package/dist/esm/version.js +1 -1
  155. package/dist/umd/yee-c.min.css +2 -2
  156. package/dist/umd/yee-c.min.js +1 -1
  157. package/package.json +21 -23
  158. package/src/Alert/alert.tsx +10 -4
  159. package/src/Alert/style/index.less +3 -0
  160. package/src/Anchor/anchor-item.tsx +7 -2
  161. package/src/Anchor/anchor.tsx +49 -23
  162. package/src/Anchor/demo/auto.tsx +55 -0
  163. package/src/Anchor/demo/basic.tsx +7 -1
  164. package/src/Anchor/demo/controlled.tsx +18 -14
  165. package/src/Anchor/index.en-US.md +17 -0
  166. package/src/Anchor/index.zh-CN.md +17 -0
  167. package/src/Anchor/interface.ts +2 -0
  168. package/src/Anchor/style/index.less +2 -2
  169. package/src/Checkbox/checkbox-group.tsx +5 -1
  170. package/src/Checkbox/demo/group.tsx +1 -0
  171. package/src/Checkbox/interface.ts +5 -0
  172. package/src/Checkbox/style/index.less +21 -1
  173. package/src/Dropdown/demo/placement.tsx +1 -0
  174. package/src/Dropdown/dropdown.tsx +2 -0
  175. package/src/Dropdown/style/index.less +6 -0
  176. package/src/Form/Field.tsx +45 -3
  177. package/src/Form/Group.tsx +4 -1
  178. package/src/Form/demo/form-table.tsx +7 -7
  179. package/src/Form/demo/tooltip.tsx +72 -0
  180. package/src/Form/form-store.ts +1 -1
  181. package/src/Form/index.en-US.md +2 -0
  182. package/src/Form/index.zh-CN.md +83 -85
  183. package/src/Form/interface.ts +36 -1
  184. package/src/Form/style/index.less +22 -7
  185. package/src/Popconfirm/popconfirm.tsx +1 -1
  186. package/src/Popconfirm/style/index.less +6 -0
  187. package/src/Popover/popover.tsx +1 -1
  188. package/src/Popover/style/index.less +6 -0
  189. package/src/Progress/progress.tsx +2 -2
  190. package/src/Radio/style/index.less +13 -6
  191. package/src/Select/option.tsx +2 -1
  192. package/src/Select/options.tsx +7 -2
  193. package/src/Select/select.tsx +1 -0
  194. package/src/Skeleton/demo/basic.tsx +3 -3
  195. package/src/Space/interface.ts +4 -0
  196. package/src/Space/space.tsx +40 -16
  197. package/src/Splitter/demo/basic.tsx +2 -2
  198. package/src/Splitter/demo/vertical.tsx +19 -5
  199. package/src/Splitter/index.ts +5 -1
  200. package/src/Splitter/interface.ts +10 -3
  201. package/src/Splitter/splitter-handler.tsx +4 -2
  202. package/src/Splitter/splitter.tsx +55 -60
  203. package/src/Splitter/style/index.less +21 -0
  204. package/src/Table/demo/size.tsx +3 -3
  205. package/src/Table/index.zh-CN.md +50 -50
  206. package/src/Tabs/interface.ts +1 -1
  207. package/src/Tabs/style/index.less +4 -0
  208. package/src/Tabs/tab-header/index.tsx +26 -5
  209. package/src/Tooltip/index.en-US.md +1 -0
  210. package/src/Tooltip/index.zh-CN.md +1 -0
  211. package/src/Tooltip/interface.ts +4 -0
  212. package/src/Tooltip/style/index.less +8 -8
  213. package/src/Tooltip/tooltip.tsx +10 -1
  214. package/src/Tree/demo/draggable.tsx +58 -0
  215. package/src/Tree/demo/expanded.tsx +7 -7
  216. package/src/Tree/index.en-US.md +3 -0
  217. package/src/Tree/index.ts +1 -0
  218. package/src/Tree/index.zh-CN.md +3 -0
  219. package/src/Tree/interface.ts +28 -0
  220. package/src/Tree/style/index.less +25 -0
  221. package/src/Tree/tree-node.tsx +26 -0
  222. package/src/Tree/tree.tsx +183 -2
  223. package/src/Tree/utils/tree-tools.ts +107 -0
  224. package/src/Trigger/style/index.less +17 -0
  225. package/src/Trigger/trigger.tsx +3 -1
  226. package/src/style/size.css +13 -4
  227. package/src/utils/debounce.ts +22 -3
  228. package/src/version.ts +1 -1
@@ -31,47 +31,47 @@ toc: 'content'
31
31
 
32
32
  ### TableProps
33
33
 
34
- | 属性名 | 类型 | 描述 | 默认值 |
35
- | ----------------- | ---------------------------------------------------------------------- | ------------------------------------ | ------ |
36
- | prefixCls | `string` | 自定义类名前缀 | - |
37
- | className | `string` | 自定义根类名 | - |
38
- | style | `React.CSSProperties` | 自定义根样式 | - |
39
- | classNames | `Partial<Record<SemanticType, string>>` | 语义化类名 | - |
40
- | styles | `Partial<Record<SemanticType, React.CSSProperties>>` | 语义化样式 | - |
41
- | components | `Partial<Record<SemanticType, React.ReactNode>>` | 自定义表格元素 | - |
42
- | bordered | `boolean` | 是否展示外边框和列边框 | - |
43
- | columns | `ColumnProps[]` | 表格列的配置信息 | - |
34
+ | 属性名 | 类型 | 描述 | 默认值 |
35
+ | ----------------- | --------------------------------------------------------------------------- | ------------------------------------ | ------ |
36
+ | prefixCls | `string` | 自定义类名前缀 | - |
37
+ | className | `string` | 自定义根类名 | - |
38
+ | style | `React.CSSProperties` | 自定义根样式 | - |
39
+ | classNames | `Partial<Record<SemanticType, string>>` | 语义化类名 | - |
40
+ | styles | `Partial<Record<SemanticType, React.CSSProperties>>` | 语义化样式 | - |
41
+ | components | `Partial<Record<SemanticType, React.ReactNode>>` | 自定义表格元素 | - |
42
+ | bordered | `boolean` | 是否展示外边框和列边框 | - |
43
+ | columns | `ColumnProps[]` | 表格列的配置信息 | - |
44
44
  | children | `Array<React.ReactElement<ColumnProps>> \| React.ReactElement<ColumnProps>` | 子元素 | - |
45
- | locale | `Record<string, string>` | 提示信息 | - |
46
- | dataSource | `Array<Record<string, any>>` | 数据 | - |
47
- | footer | `React.ReactNode \| (() => React.ReactNode)` | 表格底部 | - |
48
- | loading | `boolean` | 加载状态 | - |
49
- | stripe | `boolean` | 斑马条纹 | - |
50
- | getPopupContainer | `() => HTMLElement` | 设置表格内的弹出组件的渲染节点 | - |
51
- | rowClassName | `(record: object) => string` | 每行类名 | - |
52
- | pagination | `Partial<PaginationType> \| boolean` | 分页器配置 | - |
53
- | rowSelection | `RowSelectionType` | 表格行是否可选中 | - |
54
- | expandable | `ExpandableType` | 是否可展开 | - |
55
- | scroll | `{ y?: number; x?: number }` | 表格是否可滚动 | - |
56
- | showHeader | `boolean` | 是否显示表头 | `true` |
57
- | showSorterTooltip | `boolean` | 配置排序时的提示 | - |
58
- | size | `'small' \| 'default' \| 'large'` | 表格尺寸 | - |
59
- | rowKey | `string \| ((record: Record<string, any>) => string)` | 设置行的唯一键 | `id` |
60
- | summary | `(pageData: Array<Record<string, any>>) => React.ReactNode` | 总结栏 | - |
61
- | tableLayout | `'auto' \| 'fixed'` | 设置Table布局 | - |
62
- | virtual | `boolean` | 是否开启虚拟列表 | - |
63
- | onChange | `({ pagination, filters, sorter, currentDataSource, action }) => void` | 分页,排序,筛选发生变化时的回调函数 | - |
64
- | onRow | `(record: Record<string, any>, index: number) => Record<string, any>` | 自定义行属性 | - |
65
- | onHeaderRow | `() => Record<string, any>` | 自定义表头行属性 | - |
45
+ | locale | `Record<string, string>` | 提示信息 | - |
46
+ | dataSource | `Array<Record<string, any>>` | 数据 | - |
47
+ | footer | `React.ReactNode \| (() => React.ReactNode)` | 表格底部 | - |
48
+ | loading | `boolean` | 加载状态 | - |
49
+ | stripe | `boolean` | 斑马条纹 | - |
50
+ | getPopupContainer | `() => HTMLElement` | 设置表格内的弹出组件的渲染节点 | - |
51
+ | rowClassName | `(record: object) => string` | 每行类名 | - |
52
+ | pagination | `Partial<PaginationType> \| boolean` | 分页器配置 | - |
53
+ | rowSelection | `RowSelectionType` | 表格行是否可选中 | - |
54
+ | expandable | `ExpandableType` | 是否可展开 | - |
55
+ | scroll | `{ y?: number; x?: number }` | 表格是否可滚动 | - |
56
+ | showHeader | `boolean` | 是否显示表头 | `true` |
57
+ | showSorterTooltip | `boolean` | 配置排序时的提示 | - |
58
+ | size | `'small' \| 'default' \| 'large'` | 表格尺寸 | - |
59
+ | rowKey | `string \| ((record: Record<string, any>) => string)` | 设置行的唯一键 | `id` |
60
+ | summary | `(pageData: Array<Record<string, any>>) => React.ReactNode` | 总结栏 | - |
61
+ | tableLayout | `'auto' \| 'fixed'` | 设置Table布局 | - |
62
+ | virtual | `boolean` | 是否开启虚拟列表 | - |
63
+ | onChange | `({ pagination, filters, sorter, currentDataSource, action }) => void` | 分页,排序,筛选发生变化时的回调函数 | - |
64
+ | onRow | `(record: Record<string, any>, index: number) => Record<string, any>` | 自定义行属性 | - |
65
+ | onHeaderRow | `() => Record<string, any>` | 自定义表头行属性 | - |
66
66
 
67
67
  ### ColumnProps
68
68
 
69
69
  | 属性名 | 类型 | 描述 | 默认值 |
70
70
  | ------------ | -------------------------------------------------------------------- | ------------------------------ | ------ |
71
- | className | `string` | 自定义类名 | - |
72
- | style | `React.CSSProperties` | 自定义样式 | - |
73
- | classNames | `Partial<Record<ColumnSemanticType, string>>` | 列结构化类名 | - |
74
- | styles | `Partial<Record<ColumnSemanticType, React.CSSProperties>>` | 列结构化样式 | - |
71
+ | className | `string` | 自定义类名 | - |
72
+ | style | `React.CSSProperties` | 自定义样式 | - |
73
+ | classNames | `Partial<Record<ColumnSemanticType, string>>` | 列结构化类名 | - |
74
+ | styles | `Partial<Record<ColumnSemanticType, React.CSSProperties>>` | 列结构化样式 | - |
75
75
  | align | `'left' \| 'right' \| 'center'` | 对齐方式 | - |
76
76
  | fixed | `'left' \| 'right' \| true` | 固定列 | - |
77
77
  | filter | `object` | 过滤配置 | - |
@@ -84,24 +84,24 @@ toc: 'content'
84
84
  | children | `(record: Record<string, any>, rowIndex: number) => React.ReactNode` | 回调函数,用于自定义单元格内容 | - |
85
85
  | onCell | `(record: object, rowIndex: number) => object` | 设置单元格属性 | - |
86
86
  | onHeaderCell | `(column: ColumnProps) => object` | 设置表头单元格属性 | - |
87
- | render | `(record: object, rowIndex: number) => React.ReactNode` | 自定义渲染函数 | - |
87
+ | render | `(record: Record<string, any>, rowIndex: number) => React.ReactNode` | 自定义渲染函数 | - |
88
88
 
89
89
  ### RowSelectionType
90
90
 
91
- | 属性名 | 类型 | 描述 | 默认值 |
92
- | ---------------------- | ------------------------------------------------------------------------ | --------------------------- | ------ |
93
- | type | `'checkbox' \| 'radio'` | 单选/多选 | - |
94
- | width | `number \| string` | 列宽 | - |
95
- | selectAll | `React.ReactNode \| boolean` | 设置全选节点 | `true` |
96
- | selectedRowKeys | `Array<SelectionKeyType> \| SelectionKeyType` | (受控)选中的行的keys | - |
97
- | defaultSelectedRowKeys | `string[] \| number[]` | 默认选中的行的keys | - |
98
- | index | `number` | 设置Checkbox或Radio在第几列 | `1` |
99
- | disabled | `boolean \| Array<boolean> \| ((record: Record<string, unknown>, index: number) => boolean)` | 是否禁用 | - |
100
- | onCell | `(record: Record<string, unknown>, rowIndex: number) => Record<string, unknown>` | 设置Checkbox或Radio属性 | - |
101
- | renderCell | `(record: Record<string, any>, rowIndex: number) => React.ReactNode` | 渲染checkbox | - |
102
- | onChange | `(selectedRowKeys, selectedRows) => void` | 选中项发生变化时的回调 | - |
103
- | onSelectAll | `(selected, selectedRowKeys, selectedRows) => void` | 全选选中或取消时的回调 | - |
104
- | selections | `Array<any>` | 选择配置 | - |
91
+ | 属性名 | 类型 | 描述 | 默认值 |
92
+ | ---------------------- | -------------------------------------------------------------------------------------------- | --------------------------- | ------ |
93
+ | type | `'checkbox' \| 'radio'` | 单选/多选 | - |
94
+ | width | `number \| string` | 列宽 | - |
95
+ | selectAll | `React.ReactNode \| boolean` | 设置全选节点 | `true` |
96
+ | selectedRowKeys | `Array<SelectionKeyType> \| SelectionKeyType` | (受控)选中的行的keys | - |
97
+ | defaultSelectedRowKeys | `string[] \| number[]` | 默认选中的行的keys | - |
98
+ | index | `number` | 设置Checkbox或Radio在第几列 | `1` |
99
+ | disabled | `boolean \| Array<boolean> \| ((record: Record<string, unknown>, index: number) => boolean)` | 是否禁用 | - |
100
+ | onCell | `(record: Record<string, unknown>, rowIndex: number) => Record<string, unknown>` | 设置Checkbox或Radio属性 | - |
101
+ | renderCell | `(record: Record<string, any>, rowIndex: number) => React.ReactNode` | 渲染checkbox | - |
102
+ | onChange | `(selectedRowKeys, selectedRows) => void` | 选中项发生变化时的回调 | - |
103
+ | onSelectAll | `(selected, selectedRowKeys, selectedRows) => void` | 全选选中或取消时的回调 | - |
104
+ | selections | `Array<any>` | 选择配置 | - |
105
105
 
106
106
  ### ExpandableType
107
107
 
@@ -1,6 +1,6 @@
1
1
  import type { DataAttributeProps } from '../utils/types';
2
2
 
3
- type SemanticDOM = 'header' | 'content';
3
+ type SemanticDOM = 'header' | 'content' | 'track' | 'list' | 'activeBar';
4
4
 
5
5
  export type TabItemType = {
6
6
  /**
@@ -522,6 +522,10 @@
522
522
  // background-color: var(--yee-color-bg-container);
523
523
  }
524
524
 
525
+ @{pls}-tab-content {
526
+ height: 100%;
527
+ }
528
+
525
529
  @{pls}-active {
526
530
  z-index: 2;
527
531
 
@@ -49,7 +49,15 @@ export interface TabHeaderProps {
49
49
 
50
50
  const TabHeader: React.FC<TabHeaderProps> = (props) => {
51
51
  const { items, activeKey } = useContext(TabsCtx);
52
- const { prefixCls, type, position = 'top', headerExtra, onEdit } = props;
52
+ const {
53
+ prefixCls,
54
+ type,
55
+ position = 'top',
56
+ headerExtra,
57
+ classNames,
58
+ styles,
59
+ onEdit,
60
+ } = props;
53
61
 
54
62
  const direction =
55
63
  position === 'top' || position === 'bottom' ? 'horizontal' : 'vertical';
@@ -135,6 +143,7 @@ const TabHeader: React.FC<TabHeaderProps> = (props) => {
135
143
  const cls = clsx(
136
144
  `${prefixCls}-nav-wrapper`,
137
145
  `${prefixCls}-nav-wrapper-${position}`,
146
+ classNames?.header,
138
147
  );
139
148
 
140
149
  const contextValue = {
@@ -147,12 +156,20 @@ const TabHeader: React.FC<TabHeaderProps> = (props) => {
147
156
  } as TabHeaderCtxType;
148
157
 
149
158
  return (
150
- <div className={cls}>
159
+ <div className={cls} style={styles?.header}>
151
160
  {renderPrefixExtra()}
152
161
 
153
162
  <TabHeaderCtx.Provider value={contextValue}>
154
- <div className={`${prefixCls}-nav-wrap`} ref={navContainer}>
155
- <div className={`${prefixCls}-nav-list`} ref={navList}>
163
+ <div
164
+ className={clsx(`${prefixCls}-nav-wrap`, classNames?.track)}
165
+ style={styles?.track}
166
+ ref={navContainer}
167
+ >
168
+ <div
169
+ className={clsx(`${prefixCls}-nav-list`, classNames?.list)}
170
+ style={styles?.list}
171
+ ref={navList}
172
+ >
156
173
  {items?.map((item: TabItemType, index: number) => (
157
174
  <TabHeaderTitle
158
175
  {...item}
@@ -164,7 +181,11 @@ const TabHeader: React.FC<TabHeaderProps> = (props) => {
164
181
 
165
182
  {!type && (
166
183
  <div
167
- className={`${prefixCls}-active-bar`}
184
+ className={clsx(
185
+ `${prefixCls}-active-bar`,
186
+ classNames?.activeBar,
187
+ )}
188
+ style={styles?.activeBar}
168
189
  ref={activebar}
169
190
  aria-hidden="true"
170
191
  />
@@ -28,6 +28,7 @@ A simple text popup tip.
28
28
  | --- | --- | --- | --- |
29
29
  | title | `React.ReactNode \| (() => React.ReactNode)` | Tooltip content | - |
30
30
  | mouseEnterDelay | `number` | Mouse enter delay time (seconds) | `0.1` |
31
+ | color | `string` | Custom tooltip background color (applies to both the bubble and the arrow) | - |
31
32
 
32
33
  Other properties are inherited from [Trigger](/components/trigger), including:
33
34
 
@@ -28,6 +28,7 @@ toc: 'content'
28
28
  | --- | --- | --- | --- |
29
29
  | title | `React.ReactNode \| (() => React.ReactNode)` | 提示文字 | - |
30
30
  | mouseEnterDelay | `number` | 鼠标移入后延时多少秒才显示 Tooltip | `0.1` |
31
+ | color | `string` | 自定义提示背景色(同时作用于气泡和箭头) | - |
31
32
 
32
33
  其他属性继承自 [Trigger](/components/trigger),包括:
33
34
 
@@ -10,4 +10,8 @@ export interface TooltipProps extends Omit<TriggerProps, 'popup'> {
10
10
  * @default 0.1
11
11
  */
12
12
  mouseEnterDelay?: number;
13
+ /***
14
+ * Tooltip custom background color
15
+ * */
16
+ color?: string;
13
17
  }
@@ -8,19 +8,19 @@
8
8
 
9
9
  &-arrow {
10
10
  &::after {
11
- position: absolute;
12
- bottom: 0;
13
- z-index: 0;
14
- width: var(--yee-tooltip-arrow-width);
15
- height: var(--yee-tooltip-arrow-height);
16
- margin: auto;
11
+ // position: absolute;
12
+ // bottom: 0;
13
+ // z-index: 0;
14
+ // width: var(--yee-tooltip-arrow-width);
15
+ // height: var(--yee-tooltip-arrow-height);
16
+ // margin: auto;
17
17
  background-color: var(--yee-tooltip-bg-color);
18
18
  border-radius: var(--yee-tooltip-arrow-border-radius);
19
19
  box-shadow: var(--yee-box-shadow-popover-arrow);
20
20
  transform: translateY(var(--yee-tooltip-arrow-translate-y))
21
21
  rotate(var(--yee-tooltip-arrow-rotate));
22
- content: '';
23
- inset-inline: 0;
22
+ // content: '';
23
+ // inset-inline: 0;
24
24
  }
25
25
  }
26
26
  }
@@ -17,9 +17,17 @@ const Tooltip = (baseprops: TooltipProps) => {
17
17
  placement = 'top',
18
18
  trigger = ['hover', 'focus'],
19
19
  mouseEnterDelay = 0.1,
20
+ color,
21
+ popupStyle,
22
+ hideOnClick = false,
20
23
  ...rest
21
24
  } = props;
22
25
 
26
+ const mergedPopupStyle = {
27
+ ...(color ? { ['--yee-tooltip-bg-color']: color } : null),
28
+ ...popupStyle,
29
+ } as React.CSSProperties;
30
+
23
31
  const popup = (
24
32
  <span className={`${prefixCls}-content`} role="tooltip">
25
33
  {typeof title === 'function' ? title() : title}
@@ -34,7 +42,8 @@ const Tooltip = (baseprops: TooltipProps) => {
34
42
  popup={popup}
35
43
  arrow={arrow}
36
44
  placement={placement}
37
- hideOnClick={false}
45
+ hideOnClick={hideOnClick}
46
+ popupStyle={mergedPopupStyle}
38
47
  mouseEnterDelay={mouseEnterDelay}
39
48
  >
40
49
  {children}
@@ -0,0 +1,58 @@
1
+ import { Tree, moveTreeNode } from '@rainbow-oh/yee-c';
2
+ import React, { useState } from 'react';
3
+
4
+ const FIELD_NAMES = {
5
+ key: 'key',
6
+ label: 'label',
7
+ children: 'children',
8
+ } as const;
9
+
10
+ export default () => {
11
+ const [data, setData] = useState([
12
+ {
13
+ label: 'parent 1',
14
+ key: '0-0',
15
+ children: [
16
+ {
17
+ label: 'parent 1-0',
18
+ key: '0-0-0',
19
+ children: [
20
+ { label: 'leaf-1', key: '0-0-0-0' },
21
+ { label: 'leaf-2', key: '0-0-0-1' },
22
+ ],
23
+ },
24
+ {
25
+ label: 'parent 1-1',
26
+ key: '0-0-1',
27
+ children: [{ label: 'leaf-3', key: '0-0-1-0' }],
28
+ },
29
+ ],
30
+ },
31
+ {
32
+ label: 'parent 2',
33
+ key: '0-1',
34
+ children: [{ label: 'leaf-4', key: '0-1-0' }],
35
+ },
36
+ ]);
37
+
38
+ return (
39
+ <Tree
40
+ draggable
41
+ defaultExpandAll
42
+ dataSource={data}
43
+ onDrop={(info) =>
44
+ setData((prev) =>
45
+ moveTreeNode(
46
+ prev,
47
+ {
48
+ dragKey: info.dragKey,
49
+ dropKey: info.dropKey,
50
+ position: info.position,
51
+ },
52
+ FIELD_NAMES,
53
+ ),
54
+ )
55
+ }
56
+ />
57
+ );
58
+ };
@@ -6,29 +6,29 @@ export default () => {
6
6
 
7
7
  const treeData = [
8
8
  {
9
- title: 'parent 1',
9
+ label: 'parent 1',
10
10
  key: '0-0',
11
11
  children: [
12
12
  {
13
- title: 'parent 1-0',
13
+ label: 'parent 1-0',
14
14
  key: '0-0-0',
15
15
  children: [
16
16
  {
17
- title: 'leaf',
17
+ label: 'leaf',
18
18
  key: '0-0-0-0',
19
19
  },
20
20
  {
21
- title: 'leaf',
21
+ label: 'leaf',
22
22
  key: '0-0-0-1',
23
23
  },
24
24
  ],
25
25
  },
26
26
  {
27
- title: 'parent 1-1',
27
+ label: 'parent 1-1',
28
28
  key: '0-0-1',
29
29
  children: [
30
30
  {
31
- title: 'leaf',
31
+ label: 'leaf',
32
32
  key: '0-0-1-0',
33
33
  },
34
34
  ],
@@ -39,7 +39,7 @@ export default () => {
39
39
 
40
40
  const handleExpandAll = () => {
41
41
  type TreeNodeData = {
42
- title: string;
42
+ label: string;
43
43
  key: string;
44
44
  children?: TreeNodeData[];
45
45
  };
@@ -20,6 +20,7 @@ Tree is a hierarchical data display component.
20
20
  <code src="./demo/icon.tsx" title="Icon" description="Tree with custom icons"></code>
21
21
  <code src="./demo/line.tsx" title="Line" description="Tree with connecting lines"></code>
22
22
  <code src="./demo/expanded.tsx" title="Expanded" description="Controlled expanded tree"></code>
23
+ <code src="./demo/draggable.tsx" title="Draggable" description="Drag and drop to reorder"></code>
23
24
 
24
25
  ## API
25
26
 
@@ -36,6 +37,8 @@ Tree is a hierarchical data display component.
36
37
  | expandedKeys | `string[]` | Controlled expanded tree nodes | - |
37
38
  | disabled | `boolean` | Disabled | - |
38
39
  | draggable | `boolean` | Whether allow drag | - |
40
+ | allowDrop | `(info: { dragNode: T; dropNode: T; position: 'before' \| 'after' \| 'inside' }) => boolean` | Whether to allow dropping at the given position; return false to forbid (shows no-drop cursor) | - |
41
+ | onDrop | `(info: { dragNode: T; dropNode: T; dragKey: string \| number; dropKey: string \| number; position: 'before' \| 'after' \| 'inside'; dropToGap: boolean }) => void` | Callback after a node is dropped. Controlled: reorder `dataSource` yourself, e.g. with the exported `moveTreeNode` helper. When dropping `inside` while `expandedKeys` is controlled, add the `dropKey` to the expanded set yourself | - |
39
42
  | showLine | `boolean` | Show connecting lines | - |
40
43
  | showIcon | `boolean` | Show node icons | `true` |
41
44
  | icon | `React.ReactNode \| ((props: TreeProps<T>) => React.ReactNode)` | Icon before title (requires showIcon) | - |
package/src/Tree/index.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import Tree from './tree';
2
2
 
3
3
  export type { TreeProps } from './interface';
4
+ export { moveTreeNode } from './utils/tree-tools';
4
5
  export default Tree;
@@ -20,6 +20,7 @@ toc: 'content'
20
20
  <code src="./demo/icon.tsx" title="自定义图标" description="带自定义图标的树"></code>
21
21
  <code src="./demo/line.tsx" title="连接线" description="带连接线的树"></code>
22
22
  <code src="./demo/expanded.tsx" title="受控展开" description="受控展开的树"></code>
23
+ <code src="./demo/draggable.tsx" title="拖拽排序" description="拖拽节点进行排序"></code>
23
24
 
24
25
  ## API
25
26
 
@@ -36,6 +37,8 @@ toc: 'content'
36
37
  | expandedKeys | `string[]` | 受控展开的树节点 | - |
37
38
  | disabled | `boolean` | 禁用 | - |
38
39
  | draggable | `boolean` | 是否允许拖拽 | - |
40
+ | allowDrop | `(info: { dragNode: T; dropNode: T; position: 'before' \| 'after' \| 'inside' }) => boolean` | 是否允许在指定位置放置,返回 false 则禁止(显示禁止符) | - |
41
+ | onDrop | `(info: { dragNode: T; dropNode: T; dragKey: string \| number; dropKey: string \| number; position: 'before' \| 'after' \| 'inside'; dropToGap: boolean }) => void` | 拖拽完成回调。受控模式需自行重排 `dataSource`,可配合导出的 `moveTreeNode` 工具。当 `expandedKeys` 受控且以 `inside` 方式放置时,需自行把 `dropKey` 加入展开集合 | - |
39
42
  | showLine | `boolean` | 是否显示连接线 | - |
40
43
  | showIcon | `boolean` | 是否显示节点图标 | `true` |
41
44
  | icon | `React.ReactNode \| ((props: TreeProps<T>) => React.ReactNode)` | 标题前的图标,需设置showIcon为true | - |
@@ -1,5 +1,9 @@
1
1
  export type SemanticType = '';
2
2
 
3
+ export type DragPosition = 'before' | 'after' | 'inside';
4
+
5
+ export type { MoveInfo } from './utils/tree-tools';
6
+
3
7
  export type TreeNode<T> = {
4
8
  /**
5
9
  * uid
@@ -104,6 +108,30 @@ export interface TreeProps<T> {
104
108
  * Whether to allow dragging
105
109
  */
106
110
  draggable?: boolean;
111
+ /**
112
+ * Whether to allow dropping a dragged node at the given position.
113
+ * Return false to forbid the drop (cursor shows "no-drop").
114
+ */
115
+ allowDrop?: (info: {
116
+ dragNode: T;
117
+ dropNode: T;
118
+ position: DragPosition;
119
+ }) => boolean;
120
+ /**
121
+ * Callback after a node is dropped. Pure controlled: the Tree does not
122
+ * mutate dataSource — reorder it yourself (e.g. with `moveTreeNode`).
123
+ */
124
+ onDrop?: (info: {
125
+ /** Original data of the dragged node */
126
+ dragNode: T;
127
+ /** Original data of the target node */
128
+ dropNode: T;
129
+ dragKey: string | number;
130
+ dropKey: string | number;
131
+ position: DragPosition;
132
+ /** Convenience flag: true when position is 'before' or 'after' */
133
+ dropToGap: boolean;
134
+ }) => void;
107
135
  /**
108
136
  * Whether to show connecting lines
109
137
  */
@@ -2,11 +2,36 @@
2
2
 
3
3
  @{pls} {
4
4
  &-node {
5
+ position: relative;
5
6
  display: flex;
6
7
  align-items: center;
7
8
  justify-content: flex-start;
8
9
  height: var(--yee-tree-node-height);
9
10
 
11
+ &[draggable='true'] {
12
+ cursor: grab;
13
+ }
14
+
15
+ &-dragging {
16
+ opacity: 0.4;
17
+ }
18
+
19
+ &-drag-over-before {
20
+ box-shadow: inset 0 2px 0 0 var(--yee-primary-color);
21
+ }
22
+
23
+ &-drag-over-after {
24
+ box-shadow: inset 0 -2px 0 0 var(--yee-primary-color);
25
+ }
26
+
27
+ &-drag-over-inside {
28
+ background: color-mix(
29
+ in srgb,
30
+ var(--yee-primary-color) 12%,
31
+ transparent
32
+ );
33
+ }
34
+
10
35
  &-switcher {
11
36
  display: inline-flex;
12
37
  align-items: center;
@@ -35,9 +35,16 @@ const Node = <T extends Record<string, unknown> = any>(
35
35
  checkedKeys,
36
36
  expandedKeys,
37
37
  switcherIcon,
38
+ draggable,
39
+ draggingKey,
40
+ dropState,
38
41
  onCheck,
39
42
  onSelect,
40
43
  onExpand,
44
+ onNodeDragStart,
45
+ onNodeDragOver,
46
+ onNodeDragLeave,
47
+ onNodeDrop,
41
48
  } = useContext(TreeContext);
42
49
 
43
50
  const expanded = expandedKeys.includes(key);
@@ -138,16 +145,35 @@ const Node = <T extends Record<string, unknown> = any>(
138
145
  ));
139
146
  };
140
147
 
148
+ const isDropTarget = dropState?.key === key;
149
+ const dropPosition = isDropTarget ? dropState.position : null;
150
+
151
+ const dragProps =
152
+ draggable && !disabled
153
+ ? {
154
+ draggable: true as const,
155
+ onDragStart: (e: React.DragEvent) => onNodeDragStart(key, e),
156
+ onDragOver: (e: React.DragEvent) => onNodeDragOver(key, e),
157
+ onDragLeave: (e: React.DragEvent) => onNodeDragLeave(key, e),
158
+ onDrop: (e: React.DragEvent) => onNodeDrop(key, e),
159
+ }
160
+ : {};
161
+
141
162
  return (
142
163
  <div
143
164
  className={clsx(`${prefixCls}-node`, {
144
165
  [`${prefixCls}-node-with-line`]: showLine,
145
166
  [`${prefixCls}-leaf-node`]: isLeaf,
146
167
  [`${prefixCls}-last-node`]: isLast,
168
+ [`${prefixCls}-node-dragging`]: draggingKey === key,
169
+ [`${prefixCls}-node-drag-over-before`]: dropPosition === 'before',
170
+ [`${prefixCls}-node-drag-over-after`]: dropPosition === 'after',
171
+ [`${prefixCls}-node-drag-over-inside`]: dropPosition === 'inside',
147
172
  })}
148
173
  // style={{
149
174
  // paddingLeft: depth * 28 + (isLeaf && checkable ? 24 : 0),
150
175
  // }}
176
+ {...dragProps}
151
177
  >
152
178
  {renderEmptyNodes(depth)}
153
179
  {renderExpandedIcon()}