@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.
- package/dist/cjs/Alert/alert.js +10 -4
- package/dist/cjs/Alert/style/index.less +3 -0
- package/dist/cjs/Anchor/anchor-item.js +6 -4
- package/dist/cjs/Anchor/anchor.js +38 -22
- package/dist/cjs/Anchor/demo/auto.d.ts +11 -0
- package/dist/cjs/Anchor/demo/auto.js +85 -0
- package/dist/cjs/Anchor/demo/basic.js +7 -1
- package/dist/cjs/Anchor/demo/controlled.js +42 -30
- package/dist/cjs/Anchor/interface.d.ts +2 -0
- package/dist/cjs/Anchor/style/index.less +2 -2
- package/dist/cjs/Button/button.d.ts +1 -1
- package/dist/cjs/Checkbox/checkbox-group.js +4 -1
- package/dist/cjs/Checkbox/demo/group.js +1 -0
- package/dist/cjs/Checkbox/interface.d.ts +5 -0
- package/dist/cjs/Checkbox/style/index.less +21 -1
- package/dist/cjs/Dropdown/demo/placement.js +2 -1
- package/dist/cjs/Dropdown/dropdown.js +3 -0
- package/dist/cjs/Dropdown/style/index.less +6 -0
- package/dist/cjs/Form/Field.js +33 -3
- package/dist/cjs/Form/Group.js +3 -2
- package/dist/cjs/Form/demo/form-table.js +1 -8
- package/dist/cjs/Form/demo/tooltip.d.ts +3 -0
- package/dist/cjs/Form/demo/tooltip.js +84 -0
- package/dist/cjs/Form/interface.d.ts +34 -1
- package/dist/cjs/Form/style/index.less +22 -7
- package/dist/cjs/Popconfirm/popconfirm.js +1 -1
- package/dist/cjs/Popconfirm/style/index.less +6 -0
- package/dist/cjs/Popover/popover.js +1 -1
- package/dist/cjs/Popover/style/index.less +6 -0
- package/dist/cjs/Progress/progress.js +2 -2
- package/dist/cjs/Radio/style/index.less +13 -6
- package/dist/cjs/Select/option.js +3 -2
- package/dist/cjs/Select/options.js +9 -1
- package/dist/cjs/Select/select.js +1 -0
- package/dist/cjs/Skeleton/demo/basic.js +1 -1
- package/dist/cjs/Space/interface.d.ts +4 -0
- package/dist/cjs/Space/space.js +36 -16
- package/dist/cjs/Splitter/demo/basic.js +1 -1
- package/dist/cjs/Splitter/demo/vertical.js +23 -1
- package/dist/cjs/Splitter/index.d.ts +1 -1
- package/dist/cjs/Splitter/interface.d.ts +9 -3
- package/dist/cjs/Splitter/splitter-handler.d.ts +1 -1
- package/dist/cjs/Splitter/splitter-handler.js +2 -1
- package/dist/cjs/Splitter/splitter.d.ts +2 -9
- package/dist/cjs/Splitter/splitter.js +53 -50
- package/dist/cjs/Splitter/style/index.less +21 -0
- package/dist/cjs/Table/demo/size.js +1 -1
- package/dist/cjs/Tabs/hooks/useTabScroll.d.ts +1 -1
- package/dist/cjs/Tabs/interface.d.ts +1 -1
- package/dist/cjs/Tabs/style/index.less +4 -0
- package/dist/cjs/Tabs/tab-header/index.js +56 -25
- package/dist/cjs/Tooltip/interface.d.ts +4 -0
- package/dist/cjs/Tooltip/style/index.less +8 -8
- package/dist/cjs/Tooltip/tooltip.js +11 -3
- package/dist/cjs/Tree/demo/draggable.d.ts +3 -0
- package/dist/cjs/Tree/demo/draggable.js +88 -0
- package/dist/cjs/Tree/demo/expanded.js +6 -6
- package/dist/cjs/Tree/index.d.ts +1 -0
- package/dist/cjs/Tree/index.js +3 -1
- package/dist/cjs/Tree/interface.d.ts +26 -0
- package/dist/cjs/Tree/style/index.less +25 -0
- package/dist/cjs/Tree/tree-node.js +38 -4
- package/dist/cjs/Tree/tree.d.ts +12 -1
- package/dist/cjs/Tree/tree.js +174 -18
- package/dist/cjs/Tree/utils/tree-tools.d.ts +21 -0
- package/dist/cjs/Tree/utils/tree-tools.js +88 -0
- package/dist/cjs/Trigger/style/index.less +17 -0
- package/dist/cjs/Trigger/trigger.js +3 -1
- package/dist/cjs/hooks/useDebounceFunction.d.ts +1 -1
- package/dist/cjs/hooks/useLayoutEffect.d.ts +1 -1
- package/dist/cjs/style/size.css +13 -4
- package/dist/cjs/style/themes.css +1 -1
- package/dist/cjs/style/variables.css +14 -5
- package/dist/cjs/utils/debounce.d.ts +6 -1
- package/dist/cjs/utils/debounce.js +9 -1
- package/dist/cjs/version.d.ts +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/esm/Alert/alert.js +24 -8
- package/dist/esm/Alert/style/index.less +3 -0
- package/dist/esm/Anchor/anchor-item.js +6 -3
- package/dist/esm/Anchor/anchor.js +38 -19
- package/dist/esm/Anchor/demo/auto.d.ts +11 -0
- package/dist/esm/Anchor/demo/auto.js +62 -0
- package/dist/esm/Anchor/demo/basic.js +3 -1
- package/dist/esm/Anchor/demo/controlled.js +14 -9
- package/dist/esm/Anchor/interface.d.ts +2 -0
- package/dist/esm/Anchor/style/index.less +2 -2
- package/dist/esm/Button/button.d.ts +1 -1
- package/dist/esm/Checkbox/checkbox-group.js +4 -2
- package/dist/esm/Checkbox/demo/group.js +1 -0
- package/dist/esm/Checkbox/interface.d.ts +5 -0
- package/dist/esm/Checkbox/style/index.less +21 -1
- package/dist/esm/Dropdown/demo/placement.js +2 -1
- package/dist/esm/Dropdown/dropdown.js +6 -1
- package/dist/esm/Dropdown/style/index.less +6 -0
- package/dist/esm/Form/Field.js +43 -5
- package/dist/esm/Form/Group.js +4 -2
- package/dist/esm/Form/demo/form-table.js +8 -6
- package/dist/esm/Form/demo/tooltip.d.ts +3 -0
- package/dist/esm/Form/demo/tooltip.js +59 -0
- package/dist/esm/Form/interface.d.ts +34 -1
- package/dist/esm/Form/style/index.less +22 -7
- package/dist/esm/Popconfirm/popconfirm.js +3 -1
- package/dist/esm/Popconfirm/style/index.less +6 -0
- package/dist/esm/Popover/popover.js +3 -1
- package/dist/esm/Popover/style/index.less +6 -0
- package/dist/esm/Progress/progress.js +5 -5
- package/dist/esm/Radio/style/index.less +13 -6
- package/dist/esm/Select/option.js +4 -2
- package/dist/esm/Select/options.js +5 -3
- package/dist/esm/Select/select.js +1 -0
- package/dist/esm/Skeleton/demo/basic.js +2 -8
- package/dist/esm/Space/interface.d.ts +4 -0
- package/dist/esm/Space/space.js +24 -13
- package/dist/esm/Splitter/demo/basic.js +2 -0
- package/dist/esm/Splitter/demo/vertical.js +13 -5
- package/dist/esm/Splitter/index.d.ts +1 -1
- package/dist/esm/Splitter/interface.d.ts +9 -3
- package/dist/esm/Splitter/splitter-handler.d.ts +1 -1
- package/dist/esm/Splitter/splitter-handler.js +3 -1
- package/dist/esm/Splitter/splitter.d.ts +2 -9
- package/dist/esm/Splitter/splitter.js +59 -56
- package/dist/esm/Splitter/style/index.less +21 -0
- package/dist/esm/Table/demo/size.js +2 -7
- package/dist/esm/Tabs/hooks/useTabScroll.d.ts +1 -1
- package/dist/esm/Tabs/interface.d.ts +1 -1
- package/dist/esm/Tabs/style/index.less +4 -0
- package/dist/esm/Tabs/tab-header/index.js +11 -5
- package/dist/esm/Tooltip/interface.d.ts +4 -0
- package/dist/esm/Tooltip/style/index.less +8 -8
- package/dist/esm/Tooltip/tooltip.js +14 -2
- package/dist/esm/Tree/demo/draggable.d.ts +3 -0
- package/dist/esm/Tree/demo/draggable.js +61 -0
- package/dist/esm/Tree/demo/expanded.js +6 -6
- package/dist/esm/Tree/index.d.ts +1 -0
- package/dist/esm/Tree/index.js +1 -0
- package/dist/esm/Tree/interface.d.ts +26 -0
- package/dist/esm/Tree/style/index.less +25 -0
- package/dist/esm/Tree/tree-node.js +29 -4
- package/dist/esm/Tree/tree.d.ts +12 -1
- package/dist/esm/Tree/tree.js +135 -4
- package/dist/esm/Tree/utils/tree-tools.d.ts +21 -0
- package/dist/esm/Tree/utils/tree-tools.js +128 -1
- package/dist/esm/Trigger/style/index.less +17 -0
- package/dist/esm/Trigger/trigger.js +4 -3
- package/dist/esm/hooks/useDebounceFunction.d.ts +1 -1
- package/dist/esm/hooks/useLayoutEffect.d.ts +1 -1
- package/dist/esm/style/size.css +13 -4
- package/dist/esm/style/themes.css +1 -1
- package/dist/esm/style/variables.css +14 -5
- package/dist/esm/utils/debounce.d.ts +6 -1
- package/dist/esm/utils/debounce.js +9 -2
- package/dist/esm/version.d.ts +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/umd/yee-c.min.css +2 -2
- package/dist/umd/yee-c.min.js +1 -1
- package/package.json +21 -23
- package/src/Alert/alert.tsx +10 -4
- package/src/Alert/style/index.less +3 -0
- package/src/Anchor/anchor-item.tsx +7 -2
- package/src/Anchor/anchor.tsx +49 -23
- package/src/Anchor/demo/auto.tsx +55 -0
- package/src/Anchor/demo/basic.tsx +7 -1
- package/src/Anchor/demo/controlled.tsx +18 -14
- package/src/Anchor/index.en-US.md +17 -0
- package/src/Anchor/index.zh-CN.md +17 -0
- package/src/Anchor/interface.ts +2 -0
- package/src/Anchor/style/index.less +2 -2
- package/src/Checkbox/checkbox-group.tsx +5 -1
- package/src/Checkbox/demo/group.tsx +1 -0
- package/src/Checkbox/interface.ts +5 -0
- package/src/Checkbox/style/index.less +21 -1
- package/src/Dropdown/demo/placement.tsx +1 -0
- package/src/Dropdown/dropdown.tsx +2 -0
- package/src/Dropdown/style/index.less +6 -0
- package/src/Form/Field.tsx +45 -3
- package/src/Form/Group.tsx +4 -1
- package/src/Form/demo/form-table.tsx +7 -7
- package/src/Form/demo/tooltip.tsx +72 -0
- package/src/Form/form-store.ts +1 -1
- package/src/Form/index.en-US.md +2 -0
- package/src/Form/index.zh-CN.md +83 -85
- package/src/Form/interface.ts +36 -1
- package/src/Form/style/index.less +22 -7
- package/src/Popconfirm/popconfirm.tsx +1 -1
- package/src/Popconfirm/style/index.less +6 -0
- package/src/Popover/popover.tsx +1 -1
- package/src/Popover/style/index.less +6 -0
- package/src/Progress/progress.tsx +2 -2
- package/src/Radio/style/index.less +13 -6
- package/src/Select/option.tsx +2 -1
- package/src/Select/options.tsx +7 -2
- package/src/Select/select.tsx +1 -0
- package/src/Skeleton/demo/basic.tsx +3 -3
- package/src/Space/interface.ts +4 -0
- package/src/Space/space.tsx +40 -16
- package/src/Splitter/demo/basic.tsx +2 -2
- package/src/Splitter/demo/vertical.tsx +19 -5
- package/src/Splitter/index.ts +5 -1
- package/src/Splitter/interface.ts +10 -3
- package/src/Splitter/splitter-handler.tsx +4 -2
- package/src/Splitter/splitter.tsx +55 -60
- package/src/Splitter/style/index.less +21 -0
- package/src/Table/demo/size.tsx +3 -3
- package/src/Table/index.zh-CN.md +50 -50
- package/src/Tabs/interface.ts +1 -1
- package/src/Tabs/style/index.less +4 -0
- package/src/Tabs/tab-header/index.tsx +26 -5
- package/src/Tooltip/index.en-US.md +1 -0
- package/src/Tooltip/index.zh-CN.md +1 -0
- package/src/Tooltip/interface.ts +4 -0
- package/src/Tooltip/style/index.less +8 -8
- package/src/Tooltip/tooltip.tsx +10 -1
- package/src/Tree/demo/draggable.tsx +58 -0
- package/src/Tree/demo/expanded.tsx +7 -7
- package/src/Tree/index.en-US.md +3 -0
- package/src/Tree/index.ts +1 -0
- package/src/Tree/index.zh-CN.md +3 -0
- package/src/Tree/interface.ts +28 -0
- package/src/Tree/style/index.less +25 -0
- package/src/Tree/tree-node.tsx +26 -0
- package/src/Tree/tree.tsx +183 -2
- package/src/Tree/utils/tree-tools.ts +107 -0
- package/src/Trigger/style/index.less +17 -0
- package/src/Trigger/trigger.tsx +3 -1
- package/src/style/size.css +13 -4
- package/src/utils/debounce.ts +22 -3
- package/src/version.ts +1 -1
package/src/Table/index.zh-CN.md
CHANGED
|
@@ -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
|
|
53
|
-
| rowSelection | `RowSelectionType`
|
|
54
|
-
| expandable | `ExpandableType`
|
|
55
|
-
| scroll | `{ y?: number; x?: number }`
|
|
56
|
-
| showHeader | `boolean`
|
|
57
|
-
| showSorterTooltip | `boolean`
|
|
58
|
-
| size | `'small' \| 'default' \| 'large'`
|
|
59
|
-
| rowKey
|
|
60
|
-
| summary | `(pageData: Array<Record<string, any>>) => React.ReactNode`
|
|
61
|
-
| tableLayout | `'auto' \| 'fixed'`
|
|
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
|
|
72
|
-
| style
|
|
73
|
-
| classNames
|
|
74
|
-
| styles
|
|
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:
|
|
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`
|
|
96
|
-
| selectedRowKeys | `Array<SelectionKeyType> \| SelectionKeyType`
|
|
97
|
-
| defaultSelectedRowKeys | `string[] \| number[]`
|
|
98
|
-
| index | `number`
|
|
99
|
-
| disabled | `boolean \| Array<boolean> \| ((record: Record<string, unknown>, index: number) => boolean)` | 是否禁用
|
|
100
|
-
| onCell | `(record: Record<string, unknown>, rowIndex: number) => Record<string, unknown>`
|
|
101
|
-
| renderCell | `(record: Record<string, any>, rowIndex: number) => React.ReactNode`
|
|
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
|
|
package/src/Tabs/interface.ts
CHANGED
|
@@ -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 {
|
|
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
|
|
155
|
-
|
|
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={
|
|
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
|
|
package/src/Tooltip/interface.ts
CHANGED
|
@@ -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
|
}
|
package/src/Tooltip/tooltip.tsx
CHANGED
|
@@ -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={
|
|
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
|
-
|
|
9
|
+
label: 'parent 1',
|
|
10
10
|
key: '0-0',
|
|
11
11
|
children: [
|
|
12
12
|
{
|
|
13
|
-
|
|
13
|
+
label: 'parent 1-0',
|
|
14
14
|
key: '0-0-0',
|
|
15
15
|
children: [
|
|
16
16
|
{
|
|
17
|
-
|
|
17
|
+
label: 'leaf',
|
|
18
18
|
key: '0-0-0-0',
|
|
19
19
|
},
|
|
20
20
|
{
|
|
21
|
-
|
|
21
|
+
label: 'leaf',
|
|
22
22
|
key: '0-0-0-1',
|
|
23
23
|
},
|
|
24
24
|
],
|
|
25
25
|
},
|
|
26
26
|
{
|
|
27
|
-
|
|
27
|
+
label: 'parent 1-1',
|
|
28
28
|
key: '0-0-1',
|
|
29
29
|
children: [
|
|
30
30
|
{
|
|
31
|
-
|
|
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
|
-
|
|
42
|
+
label: string;
|
|
43
43
|
key: string;
|
|
44
44
|
children?: TreeNodeData[];
|
|
45
45
|
};
|
package/src/Tree/index.en-US.md
CHANGED
|
@@ -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
package/src/Tree/index.zh-CN.md
CHANGED
|
@@ -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 | - |
|
package/src/Tree/interface.ts
CHANGED
|
@@ -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;
|
package/src/Tree/tree-node.tsx
CHANGED
|
@@ -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()}
|