@rainbow-oh/yee-c 0.2.0 → 0.4.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/Button/button.js +2 -2
- package/dist/cjs/Button/style/index.less +23 -8
- package/dist/cjs/Card/demo/collapsible.js +2 -1
- package/dist/cjs/Carousel/demo/arrows.js +1 -1
- package/dist/cjs/Carousel/demo/autoplay.js +1 -1
- package/dist/cjs/Carousel/demo/effect.js +1 -1
- package/dist/cjs/Carousel/demo/position.js +1 -1
- package/dist/cjs/Config-Provider/interface.d.ts +4 -0
- package/dist/cjs/Form/Field.js +32 -10
- package/dist/cjs/Form/demo/basic.js +56 -81
- package/dist/cjs/Form/demo/form-table.js +68 -67
- package/dist/cjs/Form/interface.d.ts +17 -1
- package/dist/cjs/Menu/style/index.less +4 -2
- package/dist/cjs/Radio/demo/button.js +1 -0
- package/dist/cjs/Radio/interface.d.ts +4 -0
- package/dist/cjs/Radio/radio-group.js +28 -14
- package/dist/cjs/Radio/radio.js +3 -1
- package/dist/cjs/Radio/style/index.less +19 -5
- package/dist/cjs/Segmented/demo/basic.d.ts +3 -0
- package/dist/cjs/Segmented/demo/basic.js +51 -0
- package/dist/cjs/Segmented/demo/block.d.ts +3 -0
- package/dist/cjs/Segmented/demo/block.js +49 -0
- package/dist/cjs/Segmented/demo/disabled.d.ts +3 -0
- package/dist/cjs/Segmented/demo/disabled.js +47 -0
- package/dist/cjs/Segmented/demo/size.d.ts +3 -0
- package/dist/cjs/Segmented/demo/size.js +37 -0
- package/dist/cjs/Segmented/demo/variant.d.ts +3 -0
- package/dist/cjs/Segmented/demo/variant.js +50 -0
- package/dist/cjs/Segmented/index.d.ts +3 -0
- package/dist/cjs/Segmented/index.js +36 -0
- package/dist/cjs/Segmented/interface.d.ts +87 -0
- package/dist/cjs/Segmented/interface.js +17 -0
- package/dist/cjs/Segmented/segmented.d.ts +5 -0
- package/dist/cjs/Segmented/segmented.js +180 -0
- package/dist/cjs/Segmented/style/index.less +128 -0
- package/dist/cjs/Spin/spin.js +2 -1
- package/dist/cjs/Steps/step.js +1 -1
- package/dist/cjs/Steps/style/index.less +8 -2
- package/dist/cjs/Switch/demo/content.js +22 -1
- package/dist/cjs/Switch/style/index.less +16 -0
- package/dist/cjs/Switch/switch.js +9 -2
- package/dist/cjs/Table/interface.d.ts +5 -1
- package/dist/cjs/Table/theader/cell.js +4 -5
- package/dist/cjs/Tag/demo/size.js +1 -1
- package/dist/cjs/Tag/demo/variant.d.ts +3 -0
- package/dist/cjs/Tag/demo/variant.js +39 -0
- package/dist/cjs/Tag/interface.d.ts +5 -0
- package/dist/cjs/Tag/style/index.less +109 -25
- package/dist/cjs/Tag/tag.js +3 -0
- package/dist/cjs/Tour/demo/basic.d.ts +3 -0
- package/dist/cjs/Tour/demo/basic.js +69 -0
- package/dist/cjs/Tour/demo/indicators.d.ts +3 -0
- package/dist/cjs/Tour/demo/indicators.js +76 -0
- package/dist/cjs/Tour/demo/placement.d.ts +3 -0
- package/dist/cjs/Tour/demo/placement.js +80 -0
- package/dist/cjs/Tour/demo/scroll.d.ts +3 -0
- package/dist/cjs/Tour/demo/scroll.js +72 -0
- package/dist/cjs/Tour/index.d.ts +3 -0
- package/dist/cjs/Tour/index.js +36 -0
- package/dist/cjs/Tour/interface.d.ts +118 -0
- package/dist/cjs/Tour/interface.js +17 -0
- package/dist/cjs/Tour/style/index.less +103 -0
- package/dist/cjs/Tour/tour.d.ts +5 -0
- package/dist/cjs/Tour/tour.js +403 -0
- package/dist/cjs/Tree/demo/checkable.js +6 -6
- package/dist/cjs/index.d.ts +4 -0
- package/dist/cjs/index.js +6 -0
- package/dist/cjs/locale/interface.d.ts +7 -0
- package/dist/cjs/locale/lang/en_US.js +6 -0
- package/dist/cjs/locale/lang/ja_JP.js +6 -0
- package/dist/cjs/locale/lang/zh_CN.js +6 -0
- package/dist/cjs/locale/lang/zh_TW.js +6 -0
- package/dist/cjs/style/color.blue.css +1 -1
- package/dist/cjs/style/color.crimson.css +1 -1
- package/dist/cjs/style/color.css +21 -4
- package/dist/cjs/style/size.css +38 -0
- package/dist/cjs/style/themes.css +3 -3
- package/dist/cjs/style/variables.css +60 -5
- package/dist/cjs/version.d.ts +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/esm/Button/button.js +2 -2
- package/dist/esm/Button/style/index.less +23 -8
- package/dist/esm/Card/demo/collapsible.js +2 -1
- package/dist/esm/Carousel/demo/arrows.js +1 -1
- package/dist/esm/Carousel/demo/autoplay.js +1 -1
- package/dist/esm/Carousel/demo/effect.js +1 -1
- package/dist/esm/Carousel/demo/position.js +1 -1
- package/dist/esm/Config-Provider/interface.d.ts +4 -0
- package/dist/esm/Form/Field.js +11 -4
- package/dist/esm/Form/demo/basic.js +2 -18
- package/dist/esm/Form/demo/form-table.js +4 -10
- package/dist/esm/Form/interface.d.ts +17 -1
- package/dist/esm/Menu/style/index.less +4 -2
- package/dist/esm/Radio/demo/button.js +1 -0
- package/dist/esm/Radio/interface.d.ts +4 -0
- package/dist/esm/Radio/radio-group.js +9 -2
- package/dist/esm/Radio/radio.js +3 -1
- package/dist/esm/Radio/style/index.less +19 -5
- package/dist/esm/Segmented/demo/basic.d.ts +3 -0
- package/dist/esm/Segmented/demo/basic.js +33 -0
- package/dist/esm/Segmented/demo/block.d.ts +3 -0
- package/dist/esm/Segmented/demo/block.js +29 -0
- package/dist/esm/Segmented/demo/disabled.d.ts +3 -0
- package/dist/esm/Segmented/demo/disabled.js +22 -0
- package/dist/esm/Segmented/demo/size.d.ts +3 -0
- package/dist/esm/Segmented/demo/size.js +15 -0
- package/dist/esm/Segmented/demo/variant.d.ts +3 -0
- package/dist/esm/Segmented/demo/variant.js +49 -0
- package/dist/esm/Segmented/index.d.ts +3 -0
- package/dist/esm/Segmented/index.js +2 -0
- package/dist/esm/Segmented/interface.d.ts +87 -0
- package/dist/esm/Segmented/interface.js +1 -0
- package/dist/esm/Segmented/segmented.d.ts +5 -0
- package/dist/esm/Segmented/segmented.js +112 -0
- package/dist/esm/Segmented/style/index.less +128 -0
- package/dist/esm/Spin/spin.js +2 -1
- package/dist/esm/Steps/step.js +4 -1
- package/dist/esm/Steps/style/index.less +8 -2
- package/dist/esm/Switch/demo/content.js +12 -3
- package/dist/esm/Switch/style/index.less +16 -0
- package/dist/esm/Switch/switch.js +7 -5
- package/dist/esm/Table/interface.d.ts +5 -1
- package/dist/esm/Table/theader/cell.js +2 -3
- package/dist/esm/Tag/demo/size.js +6 -2
- package/dist/esm/Tag/demo/variant.d.ts +3 -0
- package/dist/esm/Tag/demo/variant.js +48 -0
- package/dist/esm/Tag/interface.d.ts +5 -0
- package/dist/esm/Tag/style/index.less +109 -25
- package/dist/esm/Tag/tag.js +4 -2
- package/dist/esm/Tour/demo/basic.d.ts +3 -0
- package/dist/esm/Tour/demo/basic.js +69 -0
- package/dist/esm/Tour/demo/indicators.d.ts +3 -0
- package/dist/esm/Tour/demo/indicators.js +73 -0
- package/dist/esm/Tour/demo/placement.d.ts +3 -0
- package/dist/esm/Tour/demo/placement.js +53 -0
- package/dist/esm/Tour/demo/scroll.d.ts +3 -0
- package/dist/esm/Tour/demo/scroll.js +58 -0
- package/dist/esm/Tour/index.d.ts +3 -0
- package/dist/esm/Tour/index.js +2 -0
- package/dist/esm/Tour/interface.d.ts +118 -0
- package/dist/esm/Tour/interface.js +1 -0
- package/dist/esm/Tour/style/index.less +103 -0
- package/dist/esm/Tour/tour.d.ts +5 -0
- package/dist/esm/Tour/tour.js +383 -0
- package/dist/esm/Tree/demo/checkable.js +6 -6
- package/dist/esm/index.d.ts +4 -0
- package/dist/esm/index.js +4 -0
- package/dist/esm/locale/interface.d.ts +7 -0
- package/dist/esm/locale/lang/en_US.js +6 -0
- package/dist/esm/locale/lang/ja_JP.js +6 -0
- package/dist/esm/locale/lang/zh_CN.js +6 -0
- package/dist/esm/locale/lang/zh_TW.js +6 -0
- package/dist/esm/style/color.blue.css +1 -1
- package/dist/esm/style/color.crimson.css +1 -1
- package/dist/esm/style/color.css +21 -4
- package/dist/esm/style/size.css +38 -0
- package/dist/esm/style/themes.css +3 -3
- package/dist/esm/style/variables.css +60 -5
- package/dist/esm/version.d.ts +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/umd/yee-c.min.css +4 -4
- package/dist/umd/yee-c.min.js +1 -1
- package/package.json +1 -1
- package/src/Button/button.tsx +2 -2
- package/src/Button/style/index.less +23 -8
- package/src/Card/demo/collapsible.tsx +1 -0
- package/src/Carousel/demo/arrows.tsx +1 -1
- package/src/Carousel/demo/autoplay.tsx +1 -1
- package/src/Carousel/demo/effect.tsx +1 -1
- package/src/Carousel/demo/position.tsx +1 -1
- package/src/Config-Provider/index.en-US.md +2 -0
- package/src/Config-Provider/index.zh-CN.md +2 -0
- package/src/Config-Provider/interface.ts +4 -0
- package/src/Form/Field.tsx +30 -11
- package/src/Form/demo/basic.tsx +2 -24
- package/src/Form/demo/form-table.tsx +16 -13
- package/src/Form/index.en-US.md +4 -0
- package/src/Form/index.zh-CN.md +4 -0
- package/src/Form/interface.ts +17 -1
- package/src/Menu/style/index.less +4 -2
- package/src/Radio/demo/button.tsx +1 -0
- package/src/Radio/index.en-US.md +2 -0
- package/src/Radio/index.zh-CN.md +2 -0
- package/src/Radio/interface.ts +4 -0
- package/src/Radio/radio-group.tsx +9 -1
- package/src/Radio/radio.tsx +2 -1
- package/src/Radio/style/index.less +19 -5
- package/src/Segmented/demo/basic.tsx +24 -0
- package/src/Segmented/demo/block.tsx +17 -0
- package/src/Segmented/demo/disabled.tsx +18 -0
- package/src/Segmented/demo/size.tsx +10 -0
- package/src/Segmented/demo/variant.tsx +28 -0
- package/src/Segmented/index.en-US.md +49 -0
- package/src/Segmented/index.ts +12 -0
- package/src/Segmented/index.zh-CN.md +49 -0
- package/src/Segmented/interface.ts +92 -0
- package/src/Segmented/segmented.tsx +136 -0
- package/src/Segmented/style/index.less +128 -0
- package/src/Spin/spin.tsx +1 -0
- package/src/Steps/step.tsx +1 -1
- package/src/Steps/style/index.less +8 -2
- package/src/Switch/demo/content.tsx +15 -5
- package/src/Switch/style/index.less +16 -0
- package/src/Switch/switch.tsx +14 -6
- package/src/Table/index.en-US.md +1 -0
- package/src/Table/index.zh-CN.md +1 -0
- package/src/Table/interface.ts +5 -1
- package/src/Table/theader/cell.tsx +2 -9
- package/src/Tag/demo/size.tsx +2 -2
- package/src/Tag/demo/variant.tsx +47 -0
- package/src/Tag/index.en-US.md +2 -0
- package/src/Tag/index.zh-CN.md +2 -0
- package/src/Tag/interface.ts +5 -0
- package/src/Tag/style/index.less +109 -25
- package/src/Tag/tag.tsx +2 -0
- package/src/Tour/demo/basic.tsx +52 -0
- package/src/Tour/demo/indicators.tsx +63 -0
- package/src/Tour/demo/placement.tsx +55 -0
- package/src/Tour/demo/scroll.tsx +49 -0
- package/src/Tour/index.en-US.md +61 -0
- package/src/Tour/index.ts +10 -0
- package/src/Tour/index.zh-CN.md +61 -0
- package/src/Tour/interface.ts +126 -0
- package/src/Tour/style/index.less +103 -0
- package/src/Tour/tour.tsx +399 -0
- package/src/Tree/demo/checkable.tsx +6 -6
- package/src/index.ts +6 -0
- package/src/locale/interface.ts +9 -0
- package/src/locale/lang/en_US.ts +7 -0
- package/src/locale/lang/ja_JP.ts +7 -0
- package/src/locale/lang/zh_CN.ts +7 -0
- package/src/locale/lang/zh_TW.ts +7 -0
- package/src/style/color.blue.css +1 -1
- package/src/style/color.crimson.css +1 -1
- package/src/style/color.css +21 -4
- package/src/style/size.css +38 -0
- package/src/version.ts +1 -1
- package/dist/cjs/utils/x.d.ts +0 -11
- package/dist/cjs/utils/x.js +0 -51
- package/dist/esm/utils/x.d.ts +0 -11
- package/dist/esm/utils/x.js +0 -49
- package/src/utils/x.ts +0 -33
package/src/Table/index.zh-CN.md
CHANGED
|
@@ -43,6 +43,7 @@ toc: 'content'
|
|
|
43
43
|
| columns | `ColumnProps[]` | 表格列的配置信息 | - |
|
|
44
44
|
| children | `Array<React.ReactElement<ColumnProps>> \| React.ReactElement<ColumnProps>` | 子元素 | - |
|
|
45
45
|
| locale | `Record<string, string>` | 提示信息 | - |
|
|
46
|
+
| noData | `React.ReactNode` | 无数据时展示的内容 | - |
|
|
46
47
|
| dataSource | `Array<Record<string, any>>` | 数据 | - |
|
|
47
48
|
| footer | `React.ReactNode \| (() => React.ReactNode)` | 表格底部 | - |
|
|
48
49
|
| loading | `boolean` | 加载状态 | - |
|
package/src/Table/interface.ts
CHANGED
|
@@ -267,7 +267,7 @@ export interface ColumnProps {
|
|
|
267
267
|
* Custom render cell content
|
|
268
268
|
*/
|
|
269
269
|
render?: (
|
|
270
|
-
record:
|
|
270
|
+
record: Record<string, unknown>,
|
|
271
271
|
rowIndex: number,
|
|
272
272
|
) => React.ReactNode;
|
|
273
273
|
}
|
|
@@ -492,6 +492,10 @@ export interface TableProps
|
|
|
492
492
|
* Locale text, including sort and empty data hints
|
|
493
493
|
*/
|
|
494
494
|
locale?: Record<string, string>;
|
|
495
|
+
/**
|
|
496
|
+
* Content displayed when no data is available
|
|
497
|
+
* */
|
|
498
|
+
noData?: React.ReactNode;
|
|
495
499
|
/**
|
|
496
500
|
* Data
|
|
497
501
|
*/
|
|
@@ -29,7 +29,6 @@ const HeadCell: React.FC<HeadCellProps> = (props) => {
|
|
|
29
29
|
onHeaderCell,
|
|
30
30
|
onSort,
|
|
31
31
|
onInternalFilter,
|
|
32
|
-
render,
|
|
33
32
|
...rest
|
|
34
33
|
} = props;
|
|
35
34
|
|
|
@@ -117,14 +116,8 @@ const HeadCell: React.FC<HeadCellProps> = (props) => {
|
|
|
117
116
|
className={`${prefixCls}-thead-cell`}
|
|
118
117
|
style={{ justifyContent: align }}
|
|
119
118
|
>
|
|
120
|
-
{
|
|
121
|
-
|
|
122
|
-
) : (
|
|
123
|
-
<>
|
|
124
|
-
{renderTitle()}
|
|
125
|
-
{renderFilter()}
|
|
126
|
-
</>
|
|
127
|
-
)}
|
|
119
|
+
{renderTitle()}
|
|
120
|
+
{renderFilter()}
|
|
128
121
|
</div>
|
|
129
122
|
);
|
|
130
123
|
};
|
package/src/Tag/demo/size.tsx
CHANGED
|
@@ -4,13 +4,13 @@ import React from 'react';
|
|
|
4
4
|
export default () => {
|
|
5
5
|
return (
|
|
6
6
|
<Space direction="vertical">
|
|
7
|
-
<Space>
|
|
7
|
+
<Space block>
|
|
8
8
|
<Tag size="small">Small</Tag>
|
|
9
9
|
<Tag size="default">Default</Tag>
|
|
10
10
|
<Tag size="large">Large</Tag>
|
|
11
11
|
</Space>
|
|
12
12
|
|
|
13
|
-
<Space>
|
|
13
|
+
<Space block>
|
|
14
14
|
<Tag size="small" status="success">
|
|
15
15
|
Small Success
|
|
16
16
|
</Tag>
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { Space, Tag } from '@rainbow-oh/yee-c';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
|
|
4
|
+
export default () => {
|
|
5
|
+
return (
|
|
6
|
+
<Space direction="vertical">
|
|
7
|
+
<Space block>
|
|
8
|
+
<Tag variant="filled">Filled</Tag>
|
|
9
|
+
<Tag variant="solid">Solid</Tag>
|
|
10
|
+
<Tag variant="outlined">Outlined</Tag>
|
|
11
|
+
</Space>
|
|
12
|
+
<Space block>
|
|
13
|
+
<Tag variant="filled" status="success">
|
|
14
|
+
Success
|
|
15
|
+
</Tag>
|
|
16
|
+
<Tag variant="solid" status="success">
|
|
17
|
+
Success
|
|
18
|
+
</Tag>
|
|
19
|
+
<Tag variant="outlined" status="success">
|
|
20
|
+
Success
|
|
21
|
+
</Tag>
|
|
22
|
+
</Space>
|
|
23
|
+
<Space block>
|
|
24
|
+
<Tag variant="filled" status="warning">
|
|
25
|
+
Warning
|
|
26
|
+
</Tag>
|
|
27
|
+
<Tag variant="solid" status="warning">
|
|
28
|
+
Warning
|
|
29
|
+
</Tag>
|
|
30
|
+
<Tag variant="outlined" status="warning">
|
|
31
|
+
Warning
|
|
32
|
+
</Tag>
|
|
33
|
+
</Space>
|
|
34
|
+
<Space block>
|
|
35
|
+
<Tag variant="filled" status="error">
|
|
36
|
+
Error
|
|
37
|
+
</Tag>
|
|
38
|
+
<Tag variant="solid" status="error">
|
|
39
|
+
Error
|
|
40
|
+
</Tag>
|
|
41
|
+
<Tag variant="outlined" status="error">
|
|
42
|
+
Error
|
|
43
|
+
</Tag>
|
|
44
|
+
</Space>
|
|
45
|
+
</Space>
|
|
46
|
+
);
|
|
47
|
+
};
|
package/src/Tag/index.en-US.md
CHANGED
|
@@ -16,6 +16,7 @@ Tag for categorizing or markup.
|
|
|
16
16
|
|
|
17
17
|
<code src="./demo/basic.tsx" title="Basic" description="Basic usage of Tag"></code>
|
|
18
18
|
<code src="./demo/type.tsx" title="Type" description="Different types of Tag"></code>
|
|
19
|
+
<code src="./demo/variant.tsx" title="Variant" description="Three tag styles: filled, solid, outlined"></code>
|
|
19
20
|
<code src="./demo/closable.tsx" title="Closable" description="Closable Tag"></code>
|
|
20
21
|
<code src="./demo/size.tsx" title="Size" description="Different sizes of Tag"></code>
|
|
21
22
|
<code src="./demo/checkable.tsx" title="Checkable" description="Checkable Tag"></code>
|
|
@@ -37,6 +38,7 @@ Tag for categorizing or markup.
|
|
|
37
38
|
| closable | `boolean \| React.ReactNode` | Whether closable or custom close icon | - |
|
|
38
39
|
| status | `TagType` | Built-in status | - |
|
|
39
40
|
| dashed | `boolean` | Whether dashed border | - |
|
|
41
|
+
| variant | `'filled' \| 'solid' \| 'outlined'` | Tag style variant | `filled` |
|
|
40
42
|
| size | `'small' \| 'default' \| 'large'` | Size | `default` |
|
|
41
43
|
| icon | `React.ReactNode` | Icon | - |
|
|
42
44
|
| checkable | `boolean` | Whether checkable | - |
|
package/src/Tag/index.zh-CN.md
CHANGED
|
@@ -16,6 +16,7 @@ toc: 'content'
|
|
|
16
16
|
|
|
17
17
|
<code src="./demo/basic.tsx" title="基础用法" description="Tag的基础用法"></code>
|
|
18
18
|
<code src="./demo/type.tsx" title="类型" description="不同类型的标签"></code>
|
|
19
|
+
<code src="./demo/variant.tsx" title="变体" description="三种风格的标签:filled、solid、outlined"></code>
|
|
19
20
|
<code src="./demo/closable.tsx" title="可关闭" description="可关闭的标签"></code>
|
|
20
21
|
<code src="./demo/size.tsx" title="尺寸" description="不同尺寸的标签"></code>
|
|
21
22
|
<code src="./demo/checkable.tsx" title="可选择" description="可选择的标签"></code>
|
|
@@ -37,6 +38,7 @@ toc: 'content'
|
|
|
37
38
|
| closable | `boolean \| React.ReactNode` | 是否可关闭,也可自定义关闭图标 | - |
|
|
38
39
|
| status | `TagType` | 内置状态 | - |
|
|
39
40
|
| dashed | `boolean` | 是否为虚线 | - |
|
|
41
|
+
| variant | `'filled' \| 'solid' \| 'outlined'` | 标签风格变体 | `filled` |
|
|
40
42
|
| size | `'small' \| 'default' \| 'large'` | 尺寸 | `default` |
|
|
41
43
|
| icon | `React.ReactNode` | 设置图标 | - |
|
|
42
44
|
| checkable | `boolean` | 是否可选中 | - |
|
package/src/Tag/interface.ts
CHANGED
package/src/Tag/style/index.less
CHANGED
|
@@ -5,47 +5,131 @@
|
|
|
5
5
|
align-items: center;
|
|
6
6
|
box-sizing: content-box;
|
|
7
7
|
max-width: 100%;
|
|
8
|
+
white-space: nowrap;
|
|
8
9
|
height: var(--yee-tag-height);
|
|
9
10
|
padding: var(--yee-tag-padding);
|
|
10
|
-
color: var(--yee-tag-color);
|
|
11
11
|
font-size: var(--yee-tag-font-size);
|
|
12
12
|
line-height: var(--yee-tag-line-height);
|
|
13
|
-
background-color: var(--yee-tag-item-bg-color);
|
|
14
13
|
background-clip: padding-box;
|
|
15
14
|
border: var(--yee-tag-border-width) solid var(--yee-tag-border-color);
|
|
16
15
|
border-radius: var(--yee-tag-border-radius);
|
|
17
16
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
17
|
+
// ============ 变体 variant ============
|
|
18
|
+
// filled:浅色底 + 彩色字(默认)
|
|
19
|
+
&-filled {
|
|
20
|
+
color: var(--yee-tag-color);
|
|
21
|
+
background-color: var(--yee-tag-item-bg-color);
|
|
22
|
+
border-color: var(--yee-tag-border-color);
|
|
23
23
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
24
|
+
&@{pls}-info {
|
|
25
|
+
color: var(--yee-tag-info-color);
|
|
26
|
+
background-color: var(--yee-tag-info-bg-color);
|
|
27
|
+
border-color: var(--yee-tag-info-border-color);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
&@{pls}-success {
|
|
31
|
+
color: var(--yee-tag-success-color);
|
|
32
|
+
background-color: var(--yee-tag-success-bg-color);
|
|
33
|
+
border-color: var(--yee-tag-success-border-color);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
&@{pls}-warning {
|
|
37
|
+
color: var(--yee-tag-warning-color);
|
|
38
|
+
background-color: var(--yee-tag-warning-bg-color);
|
|
39
|
+
border-color: var(--yee-tag-warning-border-color);
|
|
40
|
+
}
|
|
29
41
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
42
|
+
&@{pls}-error {
|
|
43
|
+
color: var(--yee-tag-error-color);
|
|
44
|
+
background-color: var(--yee-tag-error-bg-color);
|
|
45
|
+
border-color: var(--yee-tag-error-border-color);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
&@{pls}-disabled {
|
|
49
|
+
color: var(--yee-tag-disabled-color);
|
|
50
|
+
background-color: var(--yee-tag-disabled-bg-color);
|
|
51
|
+
border-color: var(--yee-tag-disabled-border-color);
|
|
52
|
+
cursor: not-allowed;
|
|
53
|
+
}
|
|
34
54
|
}
|
|
35
55
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
56
|
+
// solid:纯色底 + 白字
|
|
57
|
+
&-solid {
|
|
58
|
+
color: var(--yee-tag-solid-color, #fff);
|
|
59
|
+
background-color: var(--yee-tag-color);
|
|
60
|
+
border-color: transparent;
|
|
61
|
+
|
|
62
|
+
&@{pls}-info {
|
|
63
|
+
color: var(--yee-tag-solid-color, #fff);
|
|
64
|
+
background-color: var(--yee-tag-info-color);
|
|
65
|
+
border-color: transparent;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
&@{pls}-success {
|
|
69
|
+
color: var(--yee-tag-solid-color, #fff);
|
|
70
|
+
background-color: var(--yee-tag-success-color);
|
|
71
|
+
border-color: transparent;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
&@{pls}-warning {
|
|
75
|
+
color: var(--yee-tag-solid-color, #fff);
|
|
76
|
+
background-color: var(--yee-tag-warning-color);
|
|
77
|
+
border-color: transparent;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
&@{pls}-error {
|
|
81
|
+
color: var(--yee-tag-solid-color, #fff);
|
|
82
|
+
background-color: var(--yee-tag-error-color);
|
|
83
|
+
border-color: transparent;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
&@{pls}-disabled {
|
|
87
|
+
color: var(--yee-tag-solid-color, #fff);
|
|
88
|
+
background-color: var(--yee-tag-disabled-color);
|
|
89
|
+
border-color: transparent;
|
|
90
|
+
cursor: not-allowed;
|
|
91
|
+
}
|
|
40
92
|
}
|
|
41
93
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
94
|
+
// outlined:透明底 + 彩色字 + 彩色描边
|
|
95
|
+
&-outlined {
|
|
96
|
+
color: var(--yee-tag-color);
|
|
97
|
+
background-color: transparent;
|
|
98
|
+
border-color: var(--yee-tag-border-color);
|
|
99
|
+
|
|
100
|
+
&@{pls}-info {
|
|
101
|
+
color: var(--yee-tag-info-color);
|
|
102
|
+
background-color: transparent;
|
|
103
|
+
border-color: var(--yee-tag-info-color);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
&@{pls}-success {
|
|
107
|
+
color: var(--yee-tag-success-color);
|
|
108
|
+
background-color: transparent;
|
|
109
|
+
border-color: var(--yee-tag-success-color);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
&@{pls}-warning {
|
|
113
|
+
color: var(--yee-tag-warning-color);
|
|
114
|
+
background-color: transparent;
|
|
115
|
+
border-color: var(--yee-tag-warning-color);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
&@{pls}-error {
|
|
119
|
+
color: var(--yee-tag-error-color);
|
|
120
|
+
background-color: transparent;
|
|
121
|
+
border-color: var(--yee-tag-error-color);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
&@{pls}-disabled {
|
|
125
|
+
color: var(--yee-tag-disabled-color);
|
|
126
|
+
background-color: transparent;
|
|
127
|
+
border-color: var(--yee-tag-disabled-color);
|
|
128
|
+
cursor: not-allowed;
|
|
129
|
+
}
|
|
47
130
|
}
|
|
48
131
|
|
|
132
|
+
// ============ 其他修饰 ============
|
|
49
133
|
&-dashed {
|
|
50
134
|
background-color: var(--yee-tag-item-dashed-bg-color);
|
|
51
135
|
border-style: dashed;
|
package/src/Tag/tag.tsx
CHANGED
|
@@ -24,6 +24,7 @@ const Tag = forwardRef(
|
|
|
24
24
|
icon,
|
|
25
25
|
classNames,
|
|
26
26
|
styles,
|
|
27
|
+
variant = 'filled',
|
|
27
28
|
onClose,
|
|
28
29
|
onChange,
|
|
29
30
|
...rest
|
|
@@ -37,6 +38,7 @@ const Tag = forwardRef(
|
|
|
37
38
|
|
|
38
39
|
const cls = clsx(
|
|
39
40
|
prefixCls,
|
|
41
|
+
[`${prefixCls}-${variant}`],
|
|
40
42
|
{
|
|
41
43
|
[`${prefixCls}-${status}`]: status,
|
|
42
44
|
[`${prefixCls}-dashed`]: dashed,
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { Button, Space, Tour } from '@rainbow-oh/yee-c';
|
|
2
|
+
import React, { useRef, useState } from 'react';
|
|
3
|
+
|
|
4
|
+
export default () => {
|
|
5
|
+
const [open, setOpen] = useState(false);
|
|
6
|
+
const startRef = useRef<HTMLDivElement>(null);
|
|
7
|
+
const midRef = useRef<HTMLDivElement>(null);
|
|
8
|
+
const endRef = useRef<HTMLDivElement>(null);
|
|
9
|
+
|
|
10
|
+
return (
|
|
11
|
+
<Space direction="vertical">
|
|
12
|
+
<Space>
|
|
13
|
+
<div ref={startRef} style={{ display: 'inline-block' }}>
|
|
14
|
+
<Button type="primary" onClick={() => setOpen(true)}>
|
|
15
|
+
开始引导
|
|
16
|
+
</Button>
|
|
17
|
+
</div>
|
|
18
|
+
<div ref={midRef} style={{ display: 'inline-block' }}>
|
|
19
|
+
<Button>导出</Button>
|
|
20
|
+
</div>
|
|
21
|
+
<div ref={endRef} style={{ display: 'inline-block' }}>
|
|
22
|
+
<Button>设置</Button>
|
|
23
|
+
</div>
|
|
24
|
+
</Space>
|
|
25
|
+
|
|
26
|
+
<Tour
|
|
27
|
+
open={open}
|
|
28
|
+
onClose={() => setOpen(false)}
|
|
29
|
+
onFinish={() => setOpen(false)}
|
|
30
|
+
steps={[
|
|
31
|
+
{
|
|
32
|
+
target: () => startRef.current,
|
|
33
|
+
title: '欢迎使用',
|
|
34
|
+
description: '点击此处开始你的操作流程。',
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
target: () => midRef.current,
|
|
38
|
+
title: '导出数据',
|
|
39
|
+
description: '在这里可以将数据导出为文件。',
|
|
40
|
+
placement: 'bottom',
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
target: () => endRef.current,
|
|
44
|
+
title: '系统设置',
|
|
45
|
+
description: '配置系统参数。点击「完成」结束引导。',
|
|
46
|
+
placement: 'left',
|
|
47
|
+
},
|
|
48
|
+
]}
|
|
49
|
+
/>
|
|
50
|
+
</Space>
|
|
51
|
+
);
|
|
52
|
+
};
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { Button, Space, Tour } from '@rainbow-oh/yee-c';
|
|
2
|
+
import React, { useRef, useState } from 'react';
|
|
3
|
+
|
|
4
|
+
export default () => {
|
|
5
|
+
const [open, setOpen] = useState(false);
|
|
6
|
+
const aRef = useRef<HTMLDivElement>(null);
|
|
7
|
+
const bRef = useRef<HTMLDivElement>(null);
|
|
8
|
+
|
|
9
|
+
return (
|
|
10
|
+
<Space direction="vertical">
|
|
11
|
+
<Space>
|
|
12
|
+
<div ref={aRef} style={{ display: 'inline-block' }}>
|
|
13
|
+
<Button>导入</Button>
|
|
14
|
+
</div>
|
|
15
|
+
<div ref={bRef} style={{ display: 'inline-block' }}>
|
|
16
|
+
<Button>筛选</Button>
|
|
17
|
+
</div>
|
|
18
|
+
<Button type="primary" onClick={() => setOpen(true)}>
|
|
19
|
+
开始
|
|
20
|
+
</Button>
|
|
21
|
+
</Space>
|
|
22
|
+
|
|
23
|
+
<Tour
|
|
24
|
+
open={open}
|
|
25
|
+
onClose={() => setOpen(false)}
|
|
26
|
+
onFinish={() => setOpen(false)}
|
|
27
|
+
indicatorsRender={(current, total) => (
|
|
28
|
+
<>
|
|
29
|
+
{Array.from({ length: total }).map((_, i) => (
|
|
30
|
+
<span
|
|
31
|
+
key={i}
|
|
32
|
+
style={{
|
|
33
|
+
display: 'inline-block',
|
|
34
|
+
width: 8,
|
|
35
|
+
height: 8,
|
|
36
|
+
marginInlineEnd: 4,
|
|
37
|
+
borderRadius: '50%',
|
|
38
|
+
background:
|
|
39
|
+
i === current
|
|
40
|
+
? 'var(--yee-primary-color)'
|
|
41
|
+
: 'var(--yee-border-color)',
|
|
42
|
+
transition: 'background 0.2s',
|
|
43
|
+
}}
|
|
44
|
+
/>
|
|
45
|
+
))}
|
|
46
|
+
</>
|
|
47
|
+
)}
|
|
48
|
+
steps={[
|
|
49
|
+
{
|
|
50
|
+
target: () => aRef.current,
|
|
51
|
+
title: '导入',
|
|
52
|
+
description: '点击此处导入数据文件。',
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
target: () => bRef.current,
|
|
56
|
+
title: '筛选',
|
|
57
|
+
description: '在这里筛选你需要的数据。',
|
|
58
|
+
},
|
|
59
|
+
]}
|
|
60
|
+
/>
|
|
61
|
+
</Space>
|
|
62
|
+
);
|
|
63
|
+
};
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { Button, Space, Tour } from '@rainbow-oh/yee-c';
|
|
2
|
+
import React, { useRef, useState } from 'react';
|
|
3
|
+
|
|
4
|
+
const placements = ['top', 'right', 'bottom', 'left'] as const;
|
|
5
|
+
type P = (typeof placements)[number];
|
|
6
|
+
|
|
7
|
+
export default () => {
|
|
8
|
+
const [open, setOpen] = useState(false);
|
|
9
|
+
const [p, setP] = useState<P>('top');
|
|
10
|
+
const targetRef = useRef<HTMLDivElement>(null);
|
|
11
|
+
|
|
12
|
+
return (
|
|
13
|
+
<Space direction="vertical">
|
|
14
|
+
<Space>
|
|
15
|
+
{placements.map((pl) => (
|
|
16
|
+
<Button
|
|
17
|
+
key={pl}
|
|
18
|
+
type={p === pl ? 'primary' : 'default'}
|
|
19
|
+
onClick={() => {
|
|
20
|
+
setP(pl);
|
|
21
|
+
setOpen(true);
|
|
22
|
+
}}
|
|
23
|
+
>
|
|
24
|
+
{pl}
|
|
25
|
+
</Button>
|
|
26
|
+
))}
|
|
27
|
+
</Space>
|
|
28
|
+
|
|
29
|
+
<div
|
|
30
|
+
ref={targetRef}
|
|
31
|
+
style={{
|
|
32
|
+
display: 'inline-block',
|
|
33
|
+
padding: '16px 24px',
|
|
34
|
+
border: '1px dashed var(--yee-border-color)',
|
|
35
|
+
borderRadius: 6,
|
|
36
|
+
}}
|
|
37
|
+
>
|
|
38
|
+
目标元素
|
|
39
|
+
</div>
|
|
40
|
+
|
|
41
|
+
<Tour
|
|
42
|
+
open={open}
|
|
43
|
+
placement={p}
|
|
44
|
+
onClose={() => setOpen(false)}
|
|
45
|
+
steps={[
|
|
46
|
+
{
|
|
47
|
+
target: () => targetRef.current,
|
|
48
|
+
title: `placement: ${p}`,
|
|
49
|
+
description: '气泡卡片相对目标元素的位置;靠近视口边缘时会自动翻转。',
|
|
50
|
+
},
|
|
51
|
+
]}
|
|
52
|
+
/>
|
|
53
|
+
</Space>
|
|
54
|
+
);
|
|
55
|
+
};
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { Button, Space, Tour } from '@rainbow-oh/yee-c';
|
|
2
|
+
import React, { useRef, useState } from 'react';
|
|
3
|
+
|
|
4
|
+
export default () => {
|
|
5
|
+
const [open, setOpen] = useState(false);
|
|
6
|
+
const farRef = useRef<HTMLDivElement>(null);
|
|
7
|
+
|
|
8
|
+
return (
|
|
9
|
+
<Space direction="vertical" style={{ width: '100%' }}>
|
|
10
|
+
<Button type="primary" onClick={() => setOpen(true)}>
|
|
11
|
+
开始引导(自动滚动定位)
|
|
12
|
+
</Button>
|
|
13
|
+
|
|
14
|
+
<div
|
|
15
|
+
style={{
|
|
16
|
+
height: 600,
|
|
17
|
+
padding: 24,
|
|
18
|
+
background: 'var(--yee-color-bg-layout)',
|
|
19
|
+
borderRadius: 8,
|
|
20
|
+
color: '#999',
|
|
21
|
+
}}
|
|
22
|
+
>
|
|
23
|
+
↓ 目标在下方,切换步骤时引导会自动滚动定位
|
|
24
|
+
</div>
|
|
25
|
+
|
|
26
|
+
<div ref={farRef} style={{ display: 'inline-block' }}>
|
|
27
|
+
<Button>远处的目标</Button>
|
|
28
|
+
</div>
|
|
29
|
+
|
|
30
|
+
<Tour
|
|
31
|
+
open={open}
|
|
32
|
+
onClose={() => setOpen(false)}
|
|
33
|
+
onFinish={() => setOpen(false)}
|
|
34
|
+
steps={[
|
|
35
|
+
{
|
|
36
|
+
target: () => farRef.current,
|
|
37
|
+
title: '滚动定位',
|
|
38
|
+
description: '切换到这一步时,目标会自动滚动到视口内。',
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
target: '#tour-nonexistent-target',
|
|
42
|
+
title: '目标不存在',
|
|
43
|
+
description: '找不到目标元素时,卡片居中显示(无高亮)。',
|
|
44
|
+
},
|
|
45
|
+
]}
|
|
46
|
+
/>
|
|
47
|
+
</Space>
|
|
48
|
+
);
|
|
49
|
+
};
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
---
|
|
2
|
+
category: Components
|
|
3
|
+
title: Tour
|
|
4
|
+
subtitle: Tour
|
|
5
|
+
group:
|
|
6
|
+
title: Feedback
|
|
7
|
+
order: 29
|
|
8
|
+
toc: 'content'
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Tour
|
|
12
|
+
|
|
13
|
+
Step-by-step guided tour: full-screen mask + highlighted target element + attached explanation card, with multi-step navigation, progress indicators, and automatic scroll-into-view. Commonly used for feature walkthroughs and new-user onboarding.
|
|
14
|
+
|
|
15
|
+
## Code Demo
|
|
16
|
+
|
|
17
|
+
<code src="./demo/basic.tsx" title="Basic" description="Multi-step tour, controlled open, with previous/next/finish/skip"></code>
|
|
18
|
+
<code src="./demo/placement.tsx" title="Placement" description="Card placement relative to the target; auto-flips near viewport edges"></code>
|
|
19
|
+
<code src="./demo/indicators.tsx" title="Custom Indicators" description="Customize step indicators via indicatorsRender"></code>
|
|
20
|
+
<code src="./demo/scroll.tsx" title="Scroll & Fallback" description="Auto scroll-into-view on step change; centered card when target is missing"></code>
|
|
21
|
+
|
|
22
|
+
## API
|
|
23
|
+
|
|
24
|
+
### TourProps
|
|
25
|
+
|
|
26
|
+
| Property | Type | Description | Default |
|
|
27
|
+
| --- | --- | --- | --- |
|
|
28
|
+
| open | `boolean` | Whether the tour is visible (controlled) | - |
|
|
29
|
+
| steps | `TourStep[]` | Tour steps | - |
|
|
30
|
+
| current | `number` | Controlled current step index | - |
|
|
31
|
+
| defaultCurrent | `number` | Default current step index | `0` |
|
|
32
|
+
| onClose | `() => void` | Callback when closed / skipped | - |
|
|
33
|
+
| onFinish | `() => void` | Callback when all steps are finished | - |
|
|
34
|
+
| onChange | `(current: number) => void` | Callback when current step changes | - |
|
|
35
|
+
| placement | `Placement` | Default card placement | `'bottom'` |
|
|
36
|
+
| arrow | `boolean` | Whether to show the card arrow | - |
|
|
37
|
+
| mask | `boolean` | Whether to show the mask (highlight cutout + click lock) | `true` |
|
|
38
|
+
| closable | `boolean` | Whether the top-right close button is shown | `true` |
|
|
39
|
+
| closeIcon | `React.ReactNode` | Custom close icon | - |
|
|
40
|
+
| maskClosable | `boolean` | Whether clicking the mask closes the tour | `false` |
|
|
41
|
+
| indicatorsRender | `(current: number, total: number) => React.ReactNode` | Custom step indicators | default `current+1 / total` |
|
|
42
|
+
| scrollIntoViewOptions | `boolean \| ScrollIntoViewOptions` | Options for target.scrollIntoView on each step | `true` |
|
|
43
|
+
| className / style | | Custom root class/style | - |
|
|
44
|
+
| classNames / styles | `Partial<Record<'highlight' \| 'content' \| 'header' \| 'body' \| 'footer', …>>` | Semantic structure class/style | - |
|
|
45
|
+
|
|
46
|
+
> `Placement` = `'top' \| 'right' \| 'bottom' \| 'left' \| 'topLeft' \| 'topRight' \| 'bottomLeft' \| 'bottomRight' \| 'leftTop' \| 'leftBottom' \| 'rightTop' \| 'rightBottom'`, same as `Trigger`.
|
|
47
|
+
|
|
48
|
+
### TourStep
|
|
49
|
+
|
|
50
|
+
| Property | Type | Description | Default |
|
|
51
|
+
| --- | --- | --- | --- |
|
|
52
|
+
| target | `(() => HTMLElement \| null) \| string \| HTMLElement` | Highlight target (finder function / CSS selector / element) | - |
|
|
53
|
+
| title | `React.ReactNode` | Card title | - |
|
|
54
|
+
| description | `React.ReactNode` | Card description | - |
|
|
55
|
+
| placement | `Placement` | Card placement for this step, overrides TourProps.placement | - |
|
|
56
|
+
| arrow | `boolean` | Whether to show the arrow for this step | - |
|
|
57
|
+
| className | `string` | Custom card class name for this step | - |
|
|
58
|
+
|
|
59
|
+
### Built-in text
|
|
60
|
+
|
|
61
|
+
Button labels (previous/next/finish/skip) come from `locale.tour` (`previous`/`next`/`finish`/`skip`) and follow the `ConfigProvider` locale; override via the language pack or `ConfigProvider.value.tour`.
|