@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,121 @@
1
+ <!-- ---
2
+ category: 反馈
3
+ --- -->
4
+
5
+
6
+ # Notify 消息提示
7
+
8
+ ### 介绍
9
+
10
+ 在页面顶部展示消息提示,支持函数调用和组件调用两种方式。
11
+
12
+ ### 引入
13
+
14
+ ```jsx
15
+ import { Notify, NotifyInstance } from '@ray-js/smart-ui';
16
+ ```
17
+
18
+ ## 代码演示
19
+
20
+ ### 基础用法
21
+
22
+ ```js
23
+ import { Notify, NotifyInstance } from '@ray-js/smart-ui';
24
+
25
+ NotifyInstance('通知内容');
26
+ ```
27
+
28
+ ```jsx
29
+ // 在页面内添加自定义节点
30
+ <Notify id="smart-notify" />
31
+ ```
32
+
33
+ ### 通知类型
34
+
35
+ 支持`primary`、`success`、`warning`、`danger`四种通知类型,默认为`danger`。
36
+
37
+ ```js
38
+ // 主要通知
39
+ NotifyInstance({ type: 'primary', message: '通知内容' });
40
+
41
+ // 成功通知
42
+ NotifyInstance({ type: 'success', message: '通知内容' });
43
+
44
+ // 危险通知
45
+ NotifyInstance({ type: 'danger', message: '通知内容' });
46
+
47
+ // 警告通知
48
+ NotifyInstance({ type: 'warning', message: '通知内容' });
49
+ ```
50
+
51
+ ### 自定义通知
52
+
53
+ 自定义消息通知的颜色和展示时长。
54
+
55
+ ```js
56
+ NotifyInstance({
57
+ message: '自定义颜色',
58
+ color: '#ad0000',
59
+ background: '#ffe1e1',
60
+ });
61
+
62
+ NotifyInstance({
63
+ message: '自定义时长',
64
+ duration: 1000,
65
+ });
66
+ ```
67
+
68
+ ### 自定义选择器
69
+
70
+ ```js
71
+ NotifyInstance({
72
+ message: '自定义节点选择器',
73
+ duration: 1000,
74
+ selector: '#custom-selector',
75
+ });
76
+ ```
77
+
78
+ ```jsx
79
+ // 在页面内添加自定义节点
80
+ <Notify id="custom-selector" />
81
+ ```
82
+
83
+ ## API
84
+
85
+ ### 方法
86
+
87
+ | 方法名 | 说明 | 参数 | 返回值 |
88
+ | ------------ | -------- | -------------------- | ----------- |
89
+ | Notify | 展示提示 | `options \| message` | notify 实例 |
90
+ | Notify.clear | 关闭提示 | `options` | `void` |
91
+
92
+ ### Options
93
+
94
+ | 参数 | 说明 | 类型 | 默认值 |
95
+ | ---------------- | ------------------------------------------------------ | ---------- | -------------- |
96
+ | background | 背景颜色 | _string_ | - |
97
+ | color | 字体颜色 | _string_ | `#fff` |
98
+ | context | 选择器的选择范围,可以传入自定义组件的 this 作为上下文 | _object_ | 当前页面 |
99
+ | duration | 展示时长(ms),值为 0 时,notify 不会消失 | _number_ | `3000` |
100
+ | message | 展示文案,支持通过`\n`换行 | _string_ | `''` |
101
+ | onClick | 点击时的回调函数 | _Function_ | - |
102
+ | onClose | 关闭时的回调函数 | _Function_ | - |
103
+ | onOpened | 完全展示后的回调函数 | _Function_ | - |
104
+ | safeAreaInsetTop | 是否留出顶部安全距离(状态栏高度) | _boolean_ | `false` |
105
+ | selector | 自定义节点选择器 | _string_ | `smart-notify` |
106
+ | top | 顶部距离 | _number_ | `0` |
107
+ | type | 类型,可选值为 `primary` `success` `warning` | _string_ | `danger` |
108
+
109
+ ### 样式变量
110
+
111
+ 组件提供了下列 CSS 变量,可用于自定义样式,使用方法请参考 [ConfigProvider 组件](/material/smartui?comId=config-provider)。
112
+
113
+ | 名称 | 默认值 | 描述 |
114
+ | ----------------------------- | -------------------------------------- | ---- |
115
+ | --notify-padding | _6px 15px_ | 通知内边距 |
116
+ | --notify-font-size | _14px_ | 通知字体大小 |
117
+ | --notify-line-height | _20px_ | 通知行高 |
118
+ | --notify-primary-background-color | _#1989fa_ | 主要通知背景颜色 |
119
+ | --notify-success-background-color | _#07c160_ | 成功通知背景颜色 |
120
+ | --notify-danger-background-color | _#ee0a24_ | 危险通知背景颜色 |
121
+ | --notify-warning-background-color | _#ff976a_ | 警告通知背景颜色 |
@@ -0,0 +1,128 @@
1
+ ---
2
+ category: 展示
3
+ ---
4
+
5
+ # Overlay 遮罩层
6
+
7
+ ### 介绍
8
+
9
+ 创建一个遮罩层,用于强调特定的页面元素,并阻止用户进行其他操作。
10
+
11
+ ### 引入
12
+
13
+ ```jsx
14
+ import { Overlay } from '@ray-js/smart-ui';
15
+ ```
16
+
17
+ ## 代码演示
18
+
19
+ ### 基础用法
20
+
21
+ ```jsx
22
+ import { View } from '@ray-js/ray';
23
+ import { Overlay, Button } from '@ray-js/smart-ui';
24
+ import React from 'react';
25
+
26
+ export default function Demo() {
27
+ const [show, setShow] = React.useState(false);
28
+ const onClickShow = () => setShow(true);
29
+ const onClickHide = () => setShow(false);
30
+
31
+ return (
32
+ <View>
33
+ <Button type="primary" onClick={onClickShow}>
34
+ 显示遮罩层
35
+ </Button>
36
+ <Overlay show={show} onClick={onClickHide} />
37
+ </View>
38
+ );
39
+ }
40
+ ```
41
+
42
+ ### 嵌入内容
43
+
44
+ 通过默认插槽可以在遮罩层上嵌入任意内容。
45
+
46
+ ```jsx
47
+ import { View } from '@ray-js/ray';
48
+ import { Overlay, Button } from '@ray-js/smart-ui';
49
+ import React from 'react';
50
+
51
+ export default function Demo() {
52
+ const [show, setShow] = React.useState(false);
53
+ const onClickShow = () => setShow(true);
54
+ const onClickHide = () => setShow(false);
55
+
56
+ const onBlockClick = evt => {
57
+ evt?.origin?.stopPropagation();
58
+ };
59
+ return (
60
+ <View>
61
+ <Button type="primary" onClick={onClickShow}>
62
+ 嵌入内容
63
+ </Button>
64
+ <Overlay show={show} onClick={onClickHide}>
65
+ <View style={styles.wrapper}>
66
+ <View style={styles.block} onClick={onBlockClick} />
67
+ </View>
68
+ </Overlay>
69
+ </View>
70
+ );
71
+ }
72
+
73
+ const styles = {
74
+ wrapper: {
75
+ display: 'flex',
76
+ alignItems: 'center',
77
+ justifyContent: 'center',
78
+ height: '100%',
79
+ },
80
+ block: {
81
+ width: '120px',
82
+ height: '120px',
83
+ backgroundColor: '#fff',
84
+ },
85
+ };
86
+ ```
87
+
88
+ ## API
89
+
90
+ ### Props
91
+
92
+ | 参数 | 说明 | 类型 | 默认值 |
93
+ | -------------- | ------------------------------------------------ | ------------------ | ------- |
94
+ | classmartName | 自定义类名 | _string_ | - |
95
+ | customStyle | 自定义样式 | _React.CSSProperties_ | - |
96
+ | duration | 动画时长,单位秒 | _string \| number_ | `0.3` |
97
+ | lockScroll | 是否锁定背景滚动,锁定时蒙层里的内容也将无法滚动 | _boolean_ | `true` |
98
+ | show | 是否展示遮罩层 | _boolean_ | `false` |
99
+ | zIndex | z-index 层级 | _string \| number_ | `1` |
100
+
101
+ ### Events
102
+
103
+ | 事件名 | 说明 | 回调参数 |
104
+ | ---------- | ---------- | -------- |
105
+ | onClick | 点击时触发 | - |
106
+
107
+ ### Slots
108
+
109
+ | 名称 | 说明 |
110
+ | ---- | ---------------------------------- |
111
+ | - | 默认插槽,用于在遮罩层上方嵌入内容 |
112
+
113
+
114
+ ### 外部样式类
115
+
116
+ | 类名 | 说明 |
117
+ | ------------ | ------------ |
118
+ | customClass | 根节点样式类 |
119
+
120
+ ### 样式变量
121
+
122
+ 组件会根据设备是否支持 `backdrop-filter` 自动选择**毛玻璃遮罩**或**半透明遮罩**,以减轻 iOS 输入框聚焦时页面布局上移的跳动感;不支持模糊的机型(如部分 Android)使用半透明降级样式。
123
+
124
+ | 名称 | 默认值(浅色 / 深色) | 描述 |
125
+ | --------------------------------- | ----------------------------------------- | ---- |
126
+ | --overlay-background-color | _rgba(0,0,0,0.4)_ / _rgba(0,0,0,0.7)_ | 直接指定遮罩背景色时使用,设置后不再使用毛玻璃/半透明变量 |
127
+ | --overlay-blur-background `v2.12.0` | _rgba(40,44,53,0.22)_ / _rgba(0,0,0,0.6)_ | 支持模糊时的毛玻璃遮罩背景色 |
128
+ | --overlay-blur-radius `v2.12.0` | _16px_ | 毛玻璃模糊半径 |
@@ -0,0 +1,412 @@
1
+ ---
2
+ category: 反馈
3
+ assets: LoopPicker
4
+ ---
5
+
6
+
7
+ # Picker 选择器
8
+
9
+ ### 介绍
10
+
11
+ 提供多个选项集合供用户选择,支持单列选择和多列级联,通常与 [弹出层](/material/smartui?comId=popup) 组件配合使用。
12
+
13
+ ### 引入
14
+
15
+ ```jsx
16
+ import { Picker } from '@ray-js/smart-ui';
17
+ ```
18
+
19
+ ## 代码演示
20
+
21
+ ### 基础用法
22
+
23
+ 单列时 `active-index` 属性可以控制picker的选中项; `change-animation` 可以开启picker的选中值变化过度动画效果。
24
+
25
+ ```javascript
26
+ import { Picker } from '@ray-js/smart-ui';
27
+ import { showToast } from '@ray-js/ray';
28
+ import React, { useCallback } from 'react';
29
+
30
+ export default function Demo() {
31
+ const [activeIndex, setActiveIndex] = useState(3);
32
+ const onChange = useCallback(event => {
33
+ const { value, index } = event.detail;
34
+ setActiveIndex(index);
35
+ showToast({
36
+ icon: 'none',
37
+ title: `Value: ${value}, Index:${index}`,
38
+ });
39
+ }, []);
40
+
41
+ return <Picker activeIndex={activeIndex} changeAnimation columns={['杭州', '宁波', '温州', '嘉兴', '湖州']} onChange={onChange} />;
42
+ }
43
+ ```
44
+
45
+ ### 多列用法
46
+
47
+ `disabled` `v2.3.5` 属性可以禁用此列;`style` 属性可以设置此列的样式;`fontStyle` `v2.3.5` 属性可以设置此列的字体样式; `activeIndex` 可以设置列的选中项;`unitGap` `v2.10.0` 属性可以设置单位和列表的距离。
48
+
49
+ ```javascript
50
+ import { Picker } from '@ray-js/smart-ui';
51
+ import { showToast } from '@ray-js/ray';
52
+ import React, { useCallback } from 'react';
53
+
54
+ const columns = [
55
+ {
56
+ values: new Array(100).fill(1).map((x, i) => i),
57
+ style: { flex: 'none', width: 'auto', minWidth: '61px' },
58
+ fontStyle: { color: 'rgb(135, 180, 244)' },
59
+ activeIndex: 0,
60
+ },
61
+ {
62
+ values: ['.'],
63
+ disabled: true,
64
+ style: { flex: 'none', width: '8px', display: 'flex', justifyContent: 'center' },
65
+ },
66
+ {
67
+ values: new Array(20).fill(1).map((x, i) => i),
68
+ style: { flex: 'none', width: 'auto', minWidth: '61px' },
69
+ unit: 'Kg',
70
+ unitGap: '10rpx',
71
+ activeIndex: 1,
72
+ },
73
+ ],
74
+
75
+ export default function Demo() {
76
+ const onChange = useCallback(event => {
77
+ const { value, index } = event.detail;
78
+ showToast({
79
+ icon: 'none',
80
+ title: `Value: ${value}, Index:${index}`,
81
+ });
82
+ }, []);
83
+
84
+ return (
85
+ <Picker
86
+ columns={columns}
87
+ onChange={onChange}
88
+ activeStyle={{
89
+ color: 'rgb(135, 180, 244)',
90
+ }}
91
+ />
92
+ );
93
+ }
94
+ ```
95
+
96
+
97
+ ### 循环列表 `v2.7.0`
98
+
99
+ `loop` 属性可以开启列表的循环渲染,列表会首尾相连,无限循环
100
+
101
+ ```javascript
102
+ import { Picker } from '@ray-js/smart-ui';
103
+ import React from 'react';
104
+ const columns = [
105
+ {
106
+ values: new Array(100).fill(1).map((x, i) => i),
107
+ },
108
+ ];
109
+ export default function Demo() {
110
+ return <Picker loop columns={columns} />;
111
+ }
112
+ ```
113
+
114
+ ### 默认选中项
115
+
116
+ 单列选择器可以直接通过`defaultIndex`属性设置初始选中项的索引值。
117
+
118
+ ```javascript
119
+ import { Picker } from '@ray-js/smart-ui';
120
+ import { showToast } from '@ray-js/ray';
121
+ import React, { useCallback } from 'react';
122
+
123
+ export default function Demo() {
124
+ const onChange = useCallback(event => {
125
+ const { value, index } = event.detail;
126
+ showToast({
127
+ icon: 'none',
128
+ title: `Value: ${value}, Index:${index}`,
129
+ });
130
+ }, []);
131
+
132
+ return (
133
+ <Picker
134
+ defaultIndex={2}
135
+ columns={['杭州', '宁波', '温州', '嘉兴', '湖州']}
136
+ onChange={onChange}
137
+ />
138
+ );
139
+ }
140
+ ```
141
+
142
+ ### 展示顶部栏
143
+
144
+ ```javascript
145
+ import { Picker } from '@ray-js/smart-ui';
146
+ import { showToast } from '@ray-js/ray';
147
+ import React, { useCallback } from 'react';
148
+
149
+ export default function Demo() {
150
+ const onChange = useCallback(event => {
151
+ const { value, index } = event.detail;
152
+ showToast({
153
+ icon: 'none',
154
+ title: `Value: ${value}, Index:${index}`,
155
+ });
156
+ }, []);
157
+
158
+ return (
159
+ <Picker
160
+ showToolbar
161
+ title="标题"
162
+ defaultIndex={2}
163
+ columns={['杭州', '宁波', '温州', '嘉兴', '湖州']}
164
+ onChange={onChange}
165
+ />
166
+ );
167
+ }
168
+ ```
169
+
170
+ ### 多列联动
171
+
172
+ ```javascript
173
+ import { Picker } from '@ray-js/smart-ui';
174
+ import React, { useCallback } from 'react';
175
+
176
+ const citys = [
177
+ ['杭州', '宁波', '温州', '嘉兴', '湖州'],
178
+ ['福州', '厦门', '莆田', '三明', '泉州'],
179
+ ];
180
+
181
+ export default function Demo() {
182
+ const [column, setColumn] = useState([
183
+ {
184
+ values: ['浙江', '福建'],
185
+ className: 'column1',
186
+ unit: '省',
187
+ },
188
+ {
189
+ values: ['杭州', '宁波', '温州', '嘉兴', '湖州'],
190
+ className: 'column2',
191
+ defaultIndex: 2,
192
+ unit: '市',
193
+ },
194
+ ]);
195
+ const onChange = useCallback(event => {
196
+ const { value, index } = event.detail;
197
+ const provinceIndex = column[0].values.findIndex(item => item === value[0]);
198
+ const cityList = cities[provinceIndex];
199
+ const cityIndex = index ? cityList.findIndex(item => item === value[1]) : 0;
200
+ setColumn([
201
+ {
202
+ ...column[0],
203
+ activeIndex: provinceIndex,
204
+ },
205
+ {
206
+ ...column[1],
207
+ activeIndex: cityIndex,
208
+ values: cityList,
209
+ },
210
+ ]);
211
+ }, []);
212
+
213
+ return <Picker columns={columns} onChange={onChange} />;
214
+ }
215
+ ```
216
+
217
+ ### 禁用选项
218
+
219
+ 选项可以为对象结构,通过设置 disabled 来禁用该选项。
220
+
221
+ ```javascript
222
+ import { Picker } from '@ray-js/smart-ui';
223
+ import { showToast } from '@ray-js/ray';
224
+ import React, { useCallback } from 'react';
225
+
226
+ const columns = [{ text: '杭州', disabled: true }, { text: '宁波' }, { text: '温州' }];
227
+
228
+ export default function Demo() {
229
+ const onChange = useCallback(event => {
230
+ const { value, index } = event.detail;
231
+ showToast({
232
+ icon: 'none',
233
+ title: `Value: ${value}, Index:${index}`,
234
+ });
235
+ }, []);
236
+
237
+ return <Picker columns={columns} onChange={onChange} />;
238
+ }
239
+ ```
240
+
241
+ ### 加载状态
242
+
243
+ 当 Picker 数据是通过异步获取时,可以通过 `loading` 属性显示加载提示。
244
+
245
+ ```javascript
246
+ import { Picker } from '@ray-js/smart-ui';
247
+ import React, { useCallback } from 'react';
248
+
249
+ export default function Demo() {
250
+ return <Picker loading columns={['杭州', '宁波', '温州', '嘉兴', '湖州']} />;
251
+ }
252
+ ```
253
+
254
+ ### 设置列的样式顺序 `v2.2.0`
255
+
256
+ 通过设置列的 `order` 属性可以设置列的顺序,对应列的order越大,就会越靠后,同css的`flex order` 属性,只是从样式层面改变列的顺序,逻辑还是不变。
257
+
258
+ ```javascript
259
+ import { Picker } from '@ray-js/smart-ui';
260
+ import React from 'react';
261
+ const columns = [
262
+ {
263
+ values: ['浙江', '福建'],
264
+ order: 2,
265
+ },
266
+ {
267
+ values: ['杭州', '宁波', '温州', '嘉兴', '湖州'],
268
+ order: 1,
269
+ },
270
+ ];
271
+ export default function Demo() {
272
+ return <Picker columns={columns} />;
273
+ }
274
+ ```
275
+
276
+
277
+ ### 更多3D `v2.7.0`
278
+
279
+ `fullHeight` 属性可以展示更多的空间,看到更多3D翻转的项;当然你也可以覆盖组件的高度样式,来自定义需要可视的空间
280
+
281
+ ```javascript
282
+ import { Picker } from '@ray-js/smart-ui';
283
+ import React from 'react';
284
+ const columns = [
285
+ {
286
+ values: new Array(100).fill(1).map((x, i) => i),
287
+ },
288
+ ];
289
+ export default function Demo() {
290
+ return <Picker fullHeight loop columns={columns} />;
291
+ }
292
+ ```
293
+
294
+ ## API
295
+
296
+ ### Props
297
+
298
+ | 参数 | 说明 | 类型 | 默认值 |
299
+ | ---------------- | -------------------------------- | --------- | ------- |
300
+ | activeIndex | 单列选择器的当前选中项索引,<br>多列选择器请参考下方的 Columns 配置 | _number_ | `-1` |
301
+ | cancelButtonText | 取消按钮文字 | _string_ | `取消` |
302
+ | columns | 对象数组,配置每一列显示的数据 | _Array_ | `[]` |
303
+ | confirmButtonText | 确认按钮文字 | _string_ | `确认` |
304
+ | defaultIndex | 单列选择器的默认选中项索引,<br>多列选择器请参考下方的 Columns 配置 | _number_ | `0` |
305
+ | itemHeight | 选项高度 | _number_ | `44` |
306
+ | loading | 是否显示加载状态 | _boolean_ | `false` |
307
+ | showToolbar | 是否显示顶部栏 | _boolean_ | `false` |
308
+ | title | 顶部栏标题 | _string_ | `''` |
309
+ | toolbarPosition | 顶部栏位置,可选值为`bottom` | _string_ | `top` |
310
+ | unit | 单列选择器的默认的单位,<br>多列选择器请参考下方的 Columns 配置 | _number_ | '' |
311
+ | valueKey | 选项对象中,文字对应的 key | _string_ | `text` |
312
+ | visibleItemCount | 可见的选项个数 | _3 \| 5 \| 7 \| 9_ | `5` |
313
+ | activeStyle `v2.0.0` | 选中状态下的样式 | _React.CSSProperties_ | - |
314
+ | changeAnimation `v2.2.0` | 组件受数据驱动选择值改变时是否需要动画过度效果(不包含手指交互滚动的动画) | _boolean_ | `false` |
315
+ | animationTime `v2.3.7` | 过渡动画以及选择回调延迟的时间(单位ms) | _number_ | `800` `v2.3.7` `300` `v2.6.0` |
316
+ | loop `v2.7.0` | 循环列表 | _boolean_ | `false` |
317
+ | fontStyle `v2.7.0` | 字体样式,优先级低于 columns 内的 | _React.CSSProperties_ | - |
318
+ | fullHeight `v2.7.0` | 是否高度直接等于 `visibleItemCount * itemHeight`, 组件默认会再 `* 0.9` 缩小最外层可视的高度 | _boolean_ | `false` |
319
+
320
+
321
+ ### Events
322
+
323
+ Picker 组件的事件会根据 columns 是单列或多列返回不同的参数。
324
+
325
+ | 事件名 | 说明 | 参数 |
326
+ | ------------ | ------------------ | ------------------------------------------------------------------------------------------------ |
327
+ | onCancel | 点击取消按钮时触发 | 单列:选中值,选中值对应的索引<br>多列:所有列选中值,所有列选中值对应的索引 |
328
+ | onChange | 选项改变时触发 | 单列:Picker 实例,选中值,选中值对应的索引<br>多列:Picker 实例,所有列选中值,当前列对应的索引 |
329
+ | onConfirm | 点击完成按钮时触发 | 单列:选中值,选中值对应的索引<br>多列:所有列选中值,所有列选中值对应的索引 |
330
+ | onAnimationStart `v2.3.0` | 组件内部动画开始 | - |
331
+ | onAnimationEnd `v2.3.0` | 组件内部动画结束 | - |
332
+
333
+ ### Columns 数据结构
334
+
335
+ 当传入多列数据时,`columns`为一个对象数组,数组中的每一个对象配置每一列,每一列有以下`key`。
336
+
337
+ | key | 说明 |
338
+ | ------------- | --------------------------- |
339
+ | activeIndex | 当前选中项的索引,默认为 -1 |
340
+ | defaultIndex | 初始选中项的索引,默认为 0 |
341
+ | style `v2.0.0` | 列的样式 |
342
+ | fontStyle `v2.3.5` | 列的文字样式 |
343
+ | unit | 列对应的单位,默认为空 |
344
+ | unitGap `v2.10.0` | 单位和值的间隔,默认为 undefined(使用 CSS 默认样式),支持传入数字(自动添加 px 单位)或字符串(如 "8rpx") | _string \| number_ | `undefined` |
345
+ | values | 列中对应的备选值 |
346
+ | order `v2.2.0` | 设置列的顺序,同`flex order`属性,只是从样式角度修改列的顺序,逻辑还是不变 | _number_ | - |
347
+ | disabled `v2.3.5` | 禁用此列 | _boolean_ | `false` |
348
+ | loop `v2.7.0` | 循环列表 | _boolean_ | `false` |
349
+
350
+ ### 外部样式类
351
+
352
+ | 类名 | 说明 |
353
+ | ------------- | ------------ |
354
+ | columnClass | 列样式类 |
355
+ | customClass | 根节点样式类 |
356
+ | toolbarClass | 顶部栏样式类 |
357
+ | hairlineClass `v2.6.0` | 分割线的样式类 |
358
+
359
+
360
+ ### 方法
361
+
362
+ 通过 [selectComponent](/material/smartui?comId=faq) 可以获取到 picker 实例并调用实例方法。
363
+
364
+ | 方法名 | 参数 | 返回值 | 介绍 |
365
+ | --------------- | ------------------------ | ----------- | -------------------------- |
366
+ | getColumnIndex | columnIndex | optionIndex | 获取对应列选中项的索引 |
367
+ | getColumnValue | columnIndex | value | 获取对应列选中的值 |
368
+ | getColumnValues | columnIndex | values | 获取对应列中所有选项 |
369
+ | getIndexes | - | indexes | 获取所有列选中值对应的索引 |
370
+ | getValues | - | values | 获取所有列选中的值 |
371
+ | setColumnIndex | columnIndex, optionIndex | - | 设置对应列选中项的索引 |
372
+ | setColumnValue | columnIndex, value | - | 设置对应列选中的值 |
373
+ | setColumnValues | columnIndex, values | - | 设置对应列中所有选项 |
374
+ | setIndexes | indexes | - | 设置所有列选中值对应的索引 |
375
+ | setValues | values | - | 设置所有列选中的值 |
376
+
377
+ ### 样式变量
378
+
379
+ 组件提供了下列 CSS 变量,可用于自定义样式,使用方法请参考 [ConfigProvider 组件](/material/smartui?comId=config-provider)。
380
+
381
+ | 名称 | 默认值 | 描述 |
382
+ | ----------------------------- | -------------------------------------- | ---- |
383
+ | --picker-background-color | _var(--app-B4, #ffffff)_ | 选择器背景颜色 |
384
+ | --picker-padding | _16px_ | 选择器内边距 |
385
+ | --picker-toolbar-height | _44px_ | 工具栏高度 |
386
+ | --picker-title-font-size | _16px_ | 标题字体大小 |
387
+ | --picker-action-padding | _0 @padding-md_ | 操作按钮内边距 |
388
+ | --picker-action-font-size | _14px_ | 操作按钮字体大小 |
389
+ | --picker-confirm-action-color | _#007AFF_ | 确认按钮颜色 |
390
+ | --picker-cancel-action-color | _#969799_ | 取消按钮颜色 |
391
+ | --picker-option-font-size | _16px_ | 选项字体大小 |
392
+ | --picker-option-unit-font-size | _12px_ | 单位字体大小 |
393
+ | --picker-option-text-color | _var(--app-B6-N1, rgba(0, 0, 0, 1))_ | 选项文本颜色 |
394
+ | --picker-option-unit-text-color | _var(--app-B6-N4, rgba(0, 0, 0, 0.4))_ | 单位文本颜色 |
395
+ | --picker-loading-icon-color | _#1989fa_ | 加载图标颜色 |
396
+ | --picker-loading-mask-color | _var(--app-B4, #ffffff)_ | 加载遮罩颜色 |
397
+ | --picker-option-disabled-opacity | _0.3_ | 禁用选项不透明度 |
398
+ | --picker-option-selected-text-color | _var(--app-B6-N1, rgba(0, 0, 0, 1))_ | 选中选项文本颜色 |
399
+ | --picker-option-unit-mid-size `v2.4.0` | _0_ `v2.4.0` _4px_ `v2.6.0` | 单位和内容文案的间隔 |
400
+ | --picker-option-selected-font-weight-bold `v2.6.0` | _700_ | 选中时文案的字重 |
401
+
402
+ ## 常见问题
403
+
404
+ ### 部分文案无法正常展示
405
+
406
+ 当选项文案中包含双引号 `"` 等特殊字符时,可能导致文案显示不全。需在数据中使用 `\` 转义符自行转义,例如将双引号写为 `\"`,即可正常展示。
407
+
408
+ ```javascript
409
+ // 文案 "--"- 中的双引号需转义
410
+ columns: ['杭州', '宁波', '--"-'] // 可能显示不全
411
+ columns: ['杭州', '宁波', '--\\"-'] // 使用 \ 转义后正常展示
412
+ ```