@ray-js/smart-ui 2.13.2-beta-0 → 2.13.2-beta-2

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 (103) hide show
  1. package/es/@types/config-provider/index.d.ts +6 -2
  2. package/es/@types/config-provider/theme-vars.d.ts +1 -1
  3. package/es/action-sheet/README.md +613 -0
  4. package/es/battery/README.md +149 -0
  5. package/es/bottom-sheet/README.md +495 -0
  6. package/es/button/README.md +335 -0
  7. package/es/calendar/README.md +513 -0
  8. package/es/cascader/README.md +326 -0
  9. package/es/cell/README.md +317 -0
  10. package/es/checkbox/README.md +481 -0
  11. package/es/circle/README.md +132 -0
  12. package/es/col/README.md +162 -0
  13. package/es/collapse/README.md +127 -0
  14. package/es/config-provider/README.md +150 -0
  15. package/es/count-down/README.md +201 -0
  16. package/es/custom-keyboard/README.md +122 -0
  17. package/es/datetime-picker/README.md +438 -0
  18. package/es/dialog/README.md +451 -0
  19. package/es/divider/README.md +132 -0
  20. package/es/dropdown-menu/README.md +331 -0
  21. package/es/empty/README.md +119 -0
  22. package/es/field/README.md +455 -0
  23. package/es/grid/README.md +273 -0
  24. package/es/icon/README.md +178 -0
  25. package/es/image/README.md +225 -0
  26. package/es/index-bar/README.md +186 -0
  27. package/es/loading/README.md +120 -0
  28. package/es/nav-bar/README.md +410 -0
  29. package/es/notice-bar/README.md +274 -0
  30. package/es/notify/README.md +121 -0
  31. package/es/overlay/README.md +128 -0
  32. package/es/picker/README.md +412 -0
  33. package/es/popover/README.md +338 -0
  34. package/es/popup/README.md +272 -0
  35. package/es/progress/README.md +88 -0
  36. package/es/radio/README.md +423 -0
  37. package/es/rate/README.md +248 -0
  38. package/es/search/README.md +290 -0
  39. package/es/sidebar/README.md +176 -0
  40. package/es/skeleton/README.md +141 -0
  41. package/es/slider/README.md +444 -0
  42. package/es/stepper/README.md +231 -0
  43. package/es/sticky/README.md +91 -0
  44. package/es/swipe-cell/README.md +217 -0
  45. package/es/switch/README.md +316 -0
  46. package/es/tab/README.md +501 -0
  47. package/es/tabbar/README.md +397 -0
  48. package/es/tag/README.md +215 -0
  49. package/es/toast/README.md +293 -0
  50. package/es/transition/README.md +140 -0
  51. package/es/tree-select/README.md +348 -0
  52. package/lib/@types/config-provider/index.d.ts +6 -2
  53. package/lib/@types/config-provider/theme-vars.d.ts +1 -1
  54. package/lib/action-sheet/README.md +613 -0
  55. package/lib/battery/README.md +149 -0
  56. package/lib/bottom-sheet/README.md +495 -0
  57. package/lib/button/README.md +335 -0
  58. package/lib/calendar/README.md +513 -0
  59. package/lib/cascader/README.md +326 -0
  60. package/lib/cell/README.md +317 -0
  61. package/lib/checkbox/README.md +481 -0
  62. package/lib/circle/README.md +132 -0
  63. package/lib/col/README.md +162 -0
  64. package/lib/collapse/README.md +127 -0
  65. package/lib/config-provider/README.md +150 -0
  66. package/lib/count-down/README.md +201 -0
  67. package/lib/custom-keyboard/README.md +122 -0
  68. package/lib/datetime-picker/README.md +438 -0
  69. package/lib/dialog/README.md +451 -0
  70. package/lib/divider/README.md +132 -0
  71. package/lib/dropdown-menu/README.md +331 -0
  72. package/lib/empty/README.md +119 -0
  73. package/lib/field/README.md +455 -0
  74. package/lib/grid/README.md +273 -0
  75. package/lib/icon/README.md +178 -0
  76. package/lib/image/README.md +225 -0
  77. package/lib/index-bar/README.md +186 -0
  78. package/lib/loading/README.md +120 -0
  79. package/lib/nav-bar/README.md +410 -0
  80. package/lib/notice-bar/README.md +274 -0
  81. package/lib/notify/README.md +121 -0
  82. package/lib/overlay/README.md +128 -0
  83. package/lib/picker/README.md +412 -0
  84. package/lib/popover/README.md +338 -0
  85. package/lib/popup/README.md +272 -0
  86. package/lib/progress/README.md +88 -0
  87. package/lib/radio/README.md +423 -0
  88. package/lib/rate/README.md +248 -0
  89. package/lib/search/README.md +290 -0
  90. package/lib/sidebar/README.md +176 -0
  91. package/lib/skeleton/README.md +141 -0
  92. package/lib/slider/README.md +444 -0
  93. package/lib/stepper/README.md +231 -0
  94. package/lib/sticky/README.md +91 -0
  95. package/lib/swipe-cell/README.md +217 -0
  96. package/lib/switch/README.md +316 -0
  97. package/lib/tab/README.md +501 -0
  98. package/lib/tabbar/README.md +397 -0
  99. package/lib/tag/README.md +215 -0
  100. package/lib/toast/README.md +293 -0
  101. package/lib/transition/README.md +140 -0
  102. package/lib/tree-select/README.md +348 -0
  103. package/package.json +3 -3
@@ -0,0 +1,162 @@
1
+ ---
2
+ category: 布局
3
+ ---
4
+
5
+ # Layout 布局
6
+
7
+ ### 介绍
8
+
9
+ Layout 提供了`Row`和`Col`两个组件来进行行列布局。
10
+
11
+ ### 引入
12
+
13
+ ```jsx
14
+ import { Row, Col } from '@ray-js/smart-ui';
15
+ ```
16
+
17
+ ## 代码演示
18
+
19
+ ### 基础用法
20
+
21
+ Layout 组件提供了`24列栅格`,通过在`Col`上添加`span`属性设置列所占的宽度百分比。此外,添加`offset`属性可以设置列的偏移宽度,计算方式与 span 相同。
22
+
23
+ ```jsx
24
+ import { Row, Col } from '@ray-js/smart-ui';
25
+ import { View } from '@ray-js/ray';
26
+ import React from 'react';
27
+
28
+ export default function Demo() {
29
+ return (
30
+ <View>
31
+ <Row>
32
+ <Col span="8" customClass={styles.dark}>
33
+ span: 8
34
+ </Col>
35
+ <Col span="8" customClass={styles.light}>
36
+ span: 8
37
+ </Col>
38
+ <Col span="8" customClass={styles.dark}>
39
+ span: 8
40
+ </Col>
41
+ </Row>
42
+ <Row>
43
+ <Col span="4" customClass={styles.dark}>
44
+ span: 4
45
+ </Col>
46
+ <Col span="10" offset="4" customClass={styles.light}>
47
+ offset: 4, span: 10
48
+ </Col>
49
+ </Row>
50
+ <Row>
51
+ <Col offset="12" span="12" customClass={styles.dark}>
52
+ offset: 12, span: 12
53
+ </Col>
54
+ </Row>
55
+ </View>
56
+ );
57
+ }
58
+ ```
59
+
60
+ less 样式:
61
+
62
+ ```less
63
+ .dark,
64
+ .light {
65
+ color: #fff;
66
+ font-size: 13px;
67
+ line-height: 30px;
68
+ text-align: center;
69
+ margin-bottom: 10px;
70
+ background-clip: content-box;
71
+ }
72
+
73
+ .dark {
74
+ background-color: #39a9ed;
75
+ }
76
+
77
+ .light {
78
+ background-color: #66c6f2;
79
+ }
80
+ ```
81
+
82
+ ### 在列元素之间增加间距
83
+
84
+ 通过`gutter`属性可以设置列元素之间的间距,默认间距为 0。
85
+
86
+ ```jsx
87
+ import { Row, Col } from '@ray-js/smart-ui';
88
+ import React from 'react';
89
+
90
+ export default function Demo() {
91
+ return (
92
+ <Row gutter="20">
93
+ <Col span="8" customClass={styles.dark}>
94
+ span: 8
95
+ </Col>
96
+ <Col span="8" customClass={styles.light}>
97
+ span: 8
98
+ </Col>
99
+ <Col span="8" customClass={styles.dark}>
100
+ span: 8
101
+ </Col>
102
+ </Row>
103
+ );
104
+ }
105
+ ```
106
+
107
+ less 样式:
108
+
109
+ ```less
110
+ .dark,
111
+ .light {
112
+ color: #fff;
113
+ font-size: 13px;
114
+ line-height: 30px;
115
+ text-align: center;
116
+ margin-bottom: 10px;
117
+ background-clip: content-box;
118
+ }
119
+
120
+ .dark {
121
+ background-color: #39a9ed;
122
+ }
123
+
124
+ .light {
125
+ background-color: #66c6f2;
126
+ }
127
+ ```
128
+
129
+ ## API
130
+
131
+ ### Row Props
132
+
133
+ | 参数 | 说明 | 类型 | 默认值 |
134
+ | ------ | ----------------------------- | ------------------ | ------ |
135
+ | gutter | 列元素之间的间距(单位为 px) | _string \| number_ | - |
136
+
137
+ ### Col Props
138
+
139
+ | 参数 | 说明 | 类型 | 默认值 |
140
+ | ------ | -------------- | ------------------ | ------ |
141
+ | offset | 列元素偏移距离 | _string \| number_ | - |
142
+ | span | 列元素宽度 | _string \| number_ | - |
143
+
144
+ ### 外部样式类
145
+
146
+ | 类名 | 说明 |
147
+ | ------------ | ------------ |
148
+ | customClass | 根节点样式类 |
149
+
150
+ ### 样式变量
151
+
152
+ 组件提供了下列 CSS 变量,可用于自定义样式,使用方法请参考 [ConfigProvider 组件](/material/smartui?comId=config-provider)。
153
+
154
+ | 名称 | 默认值 | 描述 |
155
+ | --------------------------------------------- | -------------------------------------------- | ------------------------------------------ |
156
+ | --collapse-item-transition-duration | _0.3s_ | 折叠项过渡持续时间 |
157
+ | --collapse-item-content-padding | _15px_ | 折叠项内容内边距 |
158
+ | --collapse-item-content-font-size | _13px_ | 折叠项内容字体大小 |
159
+ | --collapse-item-content-line-height | _1.5_ | 折叠项内容行高 |
160
+ | --collapse-item-content-text-color | _#969799_ | 折叠项内容文本颜色 |
161
+ | --collapse-item-content-background-color | _var(--app-B6, #fff)_ | 折叠项内容背景颜色 |
162
+ | --collapse-item-title-disabled-color | _#c8c9cc_ | 折叠项标题禁用状态颜色 |
@@ -0,0 +1,127 @@
1
+ ---
2
+ category: 展示
3
+ ---
4
+
5
+ # Collapse 折叠面板
6
+
7
+ ### 介绍
8
+
9
+ 将一组内容放置在多个折叠面板中,点击面板的标题可以展开或收缩其内容。
10
+
11
+ ### 引入
12
+
13
+ ```jsx
14
+ import { Collapse } from '@ray-js/smart-ui';
15
+ ```
16
+
17
+ ## 代码演示
18
+
19
+ ### 基础用法
20
+
21
+ ```jsx
22
+ import { Collapse, CollapseItem } from '@ray-js/smart-ui';
23
+ import React from 'react';
24
+
25
+ export default function Demo() {
26
+ const [state, setState] = React.useState({
27
+ active1: [0],
28
+ active2: 0,
29
+ active3: [],
30
+ active4: [],
31
+ title1: '标题1',
32
+ title2: '标题2',
33
+ title3: '标题3',
34
+ content1: '代码是写出来给人看的,附带能在机器上运行',
35
+ content2: '代码是写出来给人看的,附带能在机器上运行',
36
+ content3: '代码是写出来给人看的,附带能在机器上运行',
37
+ });
38
+
39
+ const onChange = event => {
40
+ const { key } = event.currentTarget.dataset;
41
+ setState(v => ({
42
+ ...v,
43
+ [key]: event.detail,
44
+ }));
45
+ };
46
+
47
+ return (
48
+ <Collapse value={state.active1} data-key="active1" onChange={onChange}>
49
+ <CollapseItem title={state.title1}>{state.content1}</CollapseItem>
50
+ <CollapseItem title={state.title2}>{state.content2}</CollapseItem>
51
+ <CollapseItem title={state.title3} disabled>
52
+ {state.content3}
53
+ </CollapseItem>
54
+ </Collapse>
55
+ );
56
+ }
57
+ ```
58
+
59
+ ## API
60
+
61
+ ### Collapse Props
62
+
63
+ | 参数 | 说明 | 类型 | 默认值 |
64
+ | --------- | ------------------- | ---------------------------------------------------------------------- | ------- |
65
+ | accordion | 是否开启手风琴模式 | _boolean_ | `false` |
66
+ | border | 是否显示外边框 | _boolean_ | `true` |
67
+ | value | 当前展开面板的 name | 非手风琴模式:_(string \| number)[]_<br>手风琴模式:_string \| number_ | - |
68
+
69
+ ### Collapse Event
70
+
71
+ | 事件名 | 说明 | 参数 |
72
+ | ------ | -------------- | ------------------------------- |
73
+ | change | 切换面板时触发 | activeNames: _string \| Array_ |
74
+ | close | 关闭面板时触发 | currentName: _string \| number_ |
75
+ | open | 展开面板时触发 | currentName: _string \| number_ |
76
+
77
+ ### CollapseItem Props
78
+
79
+ | 参数 | 说明 | 类型 | 默认值 |
80
+ | --------- | ---------------------------------------------------------- | ------------------ | ------- |
81
+ | border | 是否显示内边框 | _boolean_ | `true` |
82
+ | clickable | 是否开启点击反馈 | _boolean_ | `false` |
83
+ | disabled | 是否禁用面板 | _boolean_ | `false` |
84
+ | icon | 标题栏左侧图标svg值或图片链接,可选值见 [Icon 组件](/material/smartui?comId=icon) | _string_ | - |
85
+ | isLink | 是否展示标题栏右侧箭头并开启点击反馈 | _boolean_ | `true` |
86
+ | label | 标题栏描述信息 | _string_ | - |
87
+ | name | 唯一标识符,默认为索引值 | _string \| number_ | `index` |
88
+ | size | 标题栏大小,可选值为`large` | _string_ | - |
89
+ | title | 标题栏左侧内容 | _string \| number_ | - |
90
+ | value | 标题栏右侧内容 | _string \| number_ | - |
91
+
92
+ ### CollapseItem Slot
93
+
94
+ | 名称 | 说明 |
95
+ | ---------- | ------------------------------------------------------------------------ |
96
+ | - | 面板内容 |
97
+ | icon | 自定义`icon` |
98
+ | rightIcon | 自定义右侧按钮,默认是`arrow`, 需要将 `is-link` 设置为 `false`, 才会生效 |
99
+ | title | 自定义`title` |
100
+ | value | 自定义显示内容 |
101
+
102
+ ### Collapse 外部样式类
103
+
104
+ | 类名 | 说明 |
105
+ | ------------ | ------------ |
106
+ | customClass | 根节点样式类 |
107
+
108
+ ### CollapseItem 外部样式类
109
+
110
+ | 类名 | 说明 |
111
+ | ------------- | ------------ |
112
+ | contentClass | 内容样式类 |
113
+ | customClass | 根节点样式类 |
114
+
115
+ ### 样式变量
116
+
117
+ 组件提供了下列 CSS 变量,可用于自定义样式,使用方法请参考 [ConfigProvider 组件](/material/smartui?comId=config-provider)。
118
+
119
+ | 名称 | 默认值 | 描述 |
120
+ | --------------------------------------------- | -------------------------------------------- | ------------------------------------------ |
121
+ | --collapse-item-transition-duration | _0.3s_ | 折叠项过渡持续时间 |
122
+ | --collapse-item-content-padding | _15px_ | 折叠项内容内边距 |
123
+ | --collapse-item-content-font-size | _13px_ | 折叠项内容字体大小 |
124
+ | --collapse-item-content-line-height | _1.5_ | 折叠项内容行高 |
125
+ | --collapse-item-content-text-color | _#969799_ | 折叠项内容文本颜色 |
126
+ | --collapse-item-content-background-color | _var(--app-B6, #fff)_ | 折叠项内容背景颜色 |
127
+ | --collapse-item-title-disabled-color | _#c8c9cc_ | 折叠项标题禁用状态颜色 |
@@ -0,0 +1,150 @@
1
+ ---
2
+ category: 通用
3
+ ---
4
+
5
+ # ConfigProvider 全局配置
6
+
7
+ ## 介绍
8
+
9
+ 用于配置 Smart UI 组件的主题样式。
10
+ * [ConfigProvider 组件最佳实践](https://github.com/Tuya-Community/miniapp-smart-ui/wiki/ConfigProvider-%E7%BB%84%E4%BB%B6%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5)
11
+
12
+ ### 引入
13
+
14
+ ```jsx
15
+ import { ConfigProvider } from '@ray-js/smart-ui';
16
+ ```
17
+
18
+ ### 定制主题
19
+
20
+ ```!info
21
+ Smart UI 组件通过丰富的 [CSS 变量](https://developer.mozilla.org/zh-CN/docs/Web/CSS/Using_CSS_custom_properties) 来组织样式,通过覆盖这些 CSS 变量,可以实现**定制主题、动态切换主题**等效果。
22
+ ```
23
+
24
+
25
+ ## 示例
26
+
27
+ 以 Button 组件为例,查看组件的样式,可以看到 `.smart-button--primary` 类名上存在以下变量:
28
+
29
+ ```css
30
+ .smart-button--primary {
31
+ color: var(--button-primary-color, #fff);
32
+ background: var(--button-primary-background-color, #07c160);
33
+ border: var(--button-border-width, 1px) solid var(
34
+ --button-primary-border-color,
35
+ #07c160
36
+ );
37
+ }
38
+ ```
39
+
40
+
41
+ ### 自定义 CSS 变量
42
+
43
+ #### 通过 CSS 覆盖
44
+
45
+ 你可以直接在app.less中覆盖这些 CSS 变量,Button 组件的样式会随之发生改变:
46
+
47
+ ```css
48
+ /* 添加这段样式后,Primary Button 会变成红色 */
49
+ page {
50
+ --button-primary-background-color: red;
51
+ }
52
+ ```
53
+ 或者在index.module.less内局部的覆盖
54
+
55
+ ```css
56
+ .custom-box {
57
+ --button-primary-background-color: red;
58
+ }
59
+
60
+ ```
61
+
62
+ #### 通过 ConfigProvider 覆盖
63
+
64
+ 只需要将希望修改的组件的CSS变量写成驼峰形式即可,组件有全量的CSS 变量类型提示。
65
+
66
+ ```jsx
67
+ import { ConfigProvider, Button } from '@ray-js/smart-ui';
68
+ import React, { useState } from 'react';
69
+ import { View } from '@ray-js/ray';
70
+
71
+ export default function Demo() {
72
+ const [color, setColor] = useState('#07c160');
73
+
74
+ return (
75
+ <>
76
+ <View style={{ display: 'flex', justifyContent: 'space-between', marginBottom: '24px' }}>
77
+ <Button type="primary" color="red" onClick={() => setColor('red')}>
78
+ 设置颜色
79
+ </Button>
80
+ <Button type="primary" color="green" onClick={() => setColor('green')}>
81
+ 设置颜色
82
+ </Button>
83
+ <Button type="primary" color="blue" onClick={() => setColor('blue')}>
84
+ 设置颜色
85
+ </Button>
86
+ </View>
87
+ <ConfigProvider
88
+ themeVars={{
89
+ buttonPrimaryBorderColor: color,
90
+ buttonPrimaryBackgroundColor: color,
91
+ }}
92
+ >
93
+ <Button type="primary">主要按钮</Button>
94
+ </ConfigProvider>
95
+ </>
96
+ );
97
+ }
98
+ ```
99
+
100
+
101
+ ### 主题切换 `v2.8.0`
102
+
103
+ `ConfigProvider` 组件支持通过 `theme` 属性来切换明暗主题,可选值为 `light` 和 `dark`。
104
+
105
+ ```jsx
106
+ import { ConfigProvider, Cell, CellGroup } from '@ray-js/smart-ui';
107
+ import React, { useState } from 'react';
108
+ import { View, Text } from '@ray-js/ray';
109
+ import { Button } from '@ray-js/smart-ui';
110
+
111
+ export default function Demo() {
112
+ const [currentTheme, setCurrentTheme] = useState<'light' | 'dark'>('light');
113
+
114
+ return (
115
+ <>
116
+ <View
117
+ style={{
118
+ display: 'flex',
119
+ justifyContent: 'space-between',
120
+ marginBottom: '24px',
121
+ alignItems: 'center',
122
+ }}
123
+ >
124
+ <Button type="primary" onClick={() => setCurrentTheme('light')}>
125
+ 浅色主题
126
+ </Button>
127
+ <Text>当前主题: {currentTheme}</Text>
128
+ <Button type="primary" onClick={() => setCurrentTheme('dark')}>
129
+ 深色主题
130
+ </Button>
131
+ </View>
132
+ <ConfigProvider theme={currentTheme}>
133
+ <CellGroup>
134
+ <Cell title="标题" value="内容" />
135
+ <Cell title="标题" value="内容" label="详细介绍" isLink />
136
+ </CellGroup>
137
+ </ConfigProvider>
138
+ </>
139
+ );
140
+ }
141
+ ```
142
+
143
+ ## API
144
+
145
+ ### Props
146
+
147
+ | 参数 | 说明 | 类型 | 默认值 |
148
+ | ---------- | -------------- | -------- | ------ |
149
+ | themeVars | 自定义主题变量 | _object_ | - |
150
+ | theme `v2.8.0` | 主题模式 | _'light'\/'dark'_ | - |
@@ -0,0 +1,201 @@
1
+ ---
2
+ category: 反馈
3
+ ---
4
+
5
+ # CountDown 倒计时
6
+
7
+ ### 介绍
8
+
9
+ 用于实时展示倒计时数值,支持毫秒精度。
10
+
11
+ ### 引入
12
+
13
+ ```jsx
14
+ import { CountDown } from '@ray-js/smart-ui';
15
+ ```
16
+
17
+ ## 代码演示
18
+
19
+ ### 基础用法
20
+
21
+ `time`属性表示倒计时总时长,单位为毫秒。
22
+
23
+ ```jsx
24
+ import { CountDown } from '@ray-js/smart-ui';
25
+ import React from 'react';
26
+
27
+ export default function Demo() {
28
+ return <CountDown time={30 * 60 * 60 * 1000} />;
29
+ }
30
+ ```
31
+
32
+ ### 自定义格式
33
+
34
+ 通过`format`属性设置倒计时文本的内容。
35
+
36
+ ```jsx
37
+ import { CountDown } from '@ray-js/smart-ui';
38
+ import React from 'react';
39
+
40
+ export default function Demo() {
41
+ return <CountDown time={30 * 60 * 60 * 1000} format="DD 天 HH 时 mm 分 ss 秒" />;
42
+ }
43
+ ```
44
+
45
+ ### 毫秒级渲染
46
+
47
+ 通过`millisecond`属性开启毫米级渲染
48
+
49
+ ```jsx
50
+ import { CountDown } from '@ray-js/smart-ui';
51
+ import React from 'react';
52
+
53
+ export default function Demo() {
54
+ return <CountDown millisecond time={30 * 60 * 60 * 1000} format="HH:mm:ss:SSS" />;
55
+ }
56
+ ```
57
+
58
+ ### 自定义样式
59
+
60
+ 设置`useSlot`属性后可以自定义倒计时样式,需要通过`onChange`事件获取`timeData`对象并自行渲染,格式见下方表格。
61
+
62
+ ```jsx
63
+ import { CountDown } from '@ray-js/smart-ui';
64
+ import { View, Text } from '@ray-js/ray';
65
+ import React, { useState, useCallback } from 'react';
66
+
67
+ const style = {
68
+ display: 'inline-block',
69
+ width: '22px',
70
+ marginRight: '5px',
71
+ color: '#fff',
72
+ fontSize: '12px',
73
+ textAlign: 'center',
74
+ backgroundColor: '#1989fa',
75
+ borderRadius: '2px'
76
+ } as React.CSSProperties
77
+
78
+ export default function Demo() {
79
+ const [timeData, setTimeData] = useState<any>({});
80
+
81
+ const handleChange = useCallback(e => {
82
+ setTimeData(e.detail);
83
+ }, []);
84
+ return (
85
+ <CountDown useSlot time={30 * 60 * 60 * 1000} onChange={handleChange}>
86
+ <View>
87
+ <Text style={style}>{timeData.hours}</Text>
88
+ <Text style={style}>{timeData.minutes}</Text>
89
+ <Text style={style}>{timeData.seconds}</Text>
90
+ </View>
91
+ </CountDown>
92
+ );
93
+ }
94
+ ```
95
+
96
+ ### 手动控制
97
+
98
+ 通过 `selectComponent` 选择器获取到组件实例后,可以调用`start`、`pause`、`reset`方法。
99
+
100
+ ```jsx
101
+ import { CountDown, Grid, GridItem } from '@ray-js/smart-ui';
102
+ import { showToast, getCurrentPages } from '@ray-js/ray';
103
+ import React, { useCallback } from 'react';
104
+ import PlayIcon from '@tuya-miniapp/icons/dist/svg/Play';
105
+ import PauseIcon from '@tuya-miniapp/icons/dist/svg/Pause';
106
+ import RepeatIcon from '@tuya-miniapp/icons/dist/svg/Repeat';
107
+
108
+ export default function Demo() {
109
+ const finished = useCallback(() => {
110
+ showToast({
111
+ title: '倒计时结束',
112
+ });
113
+ }, []);
114
+ const start = useCallback(() => {
115
+ const pages = getCurrentPages();
116
+ const pageInstall = pages[pages.length - 1];
117
+ const countdown = pageInstall.selectComponent('.control-count-down');
118
+ countdown.start();
119
+ }, []);
120
+
121
+ const pause = useCallback(() => {
122
+ const pages = getCurrentPages();
123
+ const pageInstall = pages[pages.length - 1];
124
+ const countdown = pageInstall.selectComponent('.control-count-down');
125
+ countdown.pause();
126
+ }, []);
127
+
128
+ const reset = useCallback(() => {
129
+ const pages = getCurrentPages();
130
+ const pageInstall = pages[pages.length - 1];
131
+ const countdown = pageInstall.selectComponent('.control-count-down');
132
+ countdown.reset();
133
+ }, []);
134
+ return (
135
+ <>
136
+ <CountDown
137
+ className="control-count-down"
138
+ millisecond
139
+ time={3000}
140
+ autoStart={false}
141
+ format="ss:SSS"
142
+ onFinish={finished}
143
+ />
144
+ <Grid clickable column-num="3">
145
+ <GridItem text="开始" icon={PlayIcon} onClick={start} />
146
+ <GridItem text="暂停" icon={PauseIcon} onClick={pause} />
147
+ <GridItem text="重置" icon={RepeatIcon} onClick={reset} />
148
+ </Grid>
149
+ </>
150
+ );
151
+ }
152
+ ```
153
+
154
+ ## API
155
+
156
+ ### Props
157
+
158
+ | 参数 | 说明 | 类型 | 默认值 |
159
+ | ----------- | ---------------------------------------------- | --------- | ---------- |
160
+ | autoStart | 是否自动开始倒计时 | _boolean_ | `true` |
161
+ | format | 时间格式,DD-日,HH-时,mm-分,ss-秒,SSS-毫秒 | _string_ | `HH:mm:ss` |
162
+ | millisecond | 是否开启毫秒级渲染 | _boolean_ | `false` |
163
+ | time | 倒计时时长,单位毫秒 | _number_ | - |
164
+ | useSlot | 是否使用自定义样式插槽 | _boolean_ | `false` |
165
+
166
+ ### Events
167
+
168
+ | 事件名 | 说明 | 回调参数 |
169
+ | ----------- | -------------------------------------------- | -------- |
170
+ | onChange | 时间变化时触发,仅在开启`use-slot`后才会触发 | timeData |
171
+ | onFinish | 倒计时结束时触发 | - |
172
+
173
+ ### timeData 格式
174
+
175
+ | 名称 | 说明 | 类型 |
176
+ | ------------ | -------- | -------- |
177
+ | days | 剩余天数 | _number_ |
178
+ | hours | 剩余小时 | _number_ |
179
+ | milliseconds | 剩余毫秒 | _number_ |
180
+ | minutes | 剩余分钟 | _number_ |
181
+ | seconds | 剩余秒数 | _number_ |
182
+
183
+ ### 方法
184
+
185
+ 通过 [selectComponent](/material/smartui?comId=faq) 可以获取到 CountDown 实例并调用实例方法。
186
+
187
+ | 方法名 | 参数 | 返回值 | 介绍 |
188
+ | ------ | ---- | ------ | ---------------------------------------------------------- |
189
+ | pause | - | - | 暂停倒计时 |
190
+ | reset | - | - | 重设倒计时,若`auto-start`为`true`,重设后会自动开始倒计时 |
191
+ | start | - | - | 开始倒计时 |
192
+
193
+ ### 样式变量
194
+
195
+ 组件提供了下列 CSS 变量,可用于自定义样式,使用方法请参考 [ConfigProvider 组件](/material/smartui?comId=config-provider)。
196
+
197
+ | 名称 | 默认值 | 描述 |
198
+ | ----------------------------- | -------------------------------------- | ---- |
199
+ | --count-down-text-color | _var(--app-B6-N2, rgba(0, 0, 0, 0.7))_ | 文本颜色 |
200
+ | --count-down-font-size | _14px_ | 字体大小 |
201
+ | --count-down-line-height | _20px_ | 行高 |