@fjyueke/arco-mcp 1.0.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/README.md +85 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +244 -0
- package/metaData/components/action-sheet/doc.md +102 -0
- package/metaData/components/action-sheet/example/index.tsx +199 -0
- package/metaData/components/action-sheet/example/methods.tsx +6 -0
- package/metaData/components/avatar/doc.md +57 -0
- package/metaData/components/avatar/example/group.tsx +69 -0
- package/metaData/components/avatar/example/index.tsx +196 -0
- package/metaData/components/badge/doc.md +28 -0
- package/metaData/components/badge/example/index.tsx +128 -0
- package/metaData/components/button/doc.md +45 -0
- package/metaData/components/button/example/index.tsx +264 -0
- package/metaData/components/carousel/doc.md +89 -0
- package/metaData/components/carousel/example/index.tsx +1481 -0
- package/metaData/components/cell/doc.md +68 -0
- package/metaData/components/cell/example/arrow.tsx +13 -0
- package/metaData/components/cell/example/cell.tsx +71 -0
- package/metaData/components/cell/example/group.tsx +63 -0
- package/metaData/components/cell/example/index.tsx +19 -0
- package/metaData/components/checkbox/doc.md +91 -0
- package/metaData/components/checkbox/example/checkbox.tsx +158 -0
- package/metaData/components/checkbox/example/group.tsx +103 -0
- package/metaData/components/checkbox/example/index.tsx +25 -0
- package/metaData/components/circle-progress/doc.md +40 -0
- package/metaData/components/circle-progress/example/index.tsx +323 -0
- package/metaData/components/collapse/doc.md +74 -0
- package/metaData/components/collapse/example/collapse.tsx +183 -0
- package/metaData/components/collapse/example/group.tsx +136 -0
- package/metaData/components/collapse/example/index.tsx +16 -0
- package/metaData/components/collapse/example/utils.tsx +20 -0
- package/metaData/components/context-provider/doc.md +44 -0
- package/metaData/components/context-provider/example/index.tsx +208 -0
- package/metaData/components/count-down/doc.md +40 -0
- package/metaData/components/count-down/example/hooks.tsx +118 -0
- package/metaData/components/count-down/example/index.tsx +63 -0
- package/metaData/components/date-picker/doc.md +102 -0
- package/metaData/components/date-picker/example/index.tsx +545 -0
- package/metaData/components/dialog/doc.md +200 -0
- package/metaData/components/dialog/example/index.tsx +328 -0
- package/metaData/components/dialog/example/methods.tsx +56 -0
- package/metaData/components/divider/doc.md +25 -0
- package/metaData/components/divider/example/index.tsx +87 -0
- package/metaData/components/dropdown/doc.md +80 -0
- package/metaData/components/dropdown/example/dropdown.tsx +308 -0
- package/metaData/components/dropdown/example/index.tsx +19 -0
- package/metaData/components/dropdown/example/options.tsx +103 -0
- package/metaData/components/dropdown-menu/doc.md +91 -0
- package/metaData/components/dropdown-menu/example/dropdown-menu.tsx +270 -0
- package/metaData/components/dropdown-menu/example/index.tsx +16 -0
- package/metaData/components/ellipsis/doc.md +33 -0
- package/metaData/components/ellipsis/example/index.tsx +93 -0
- package/metaData/components/ellipsis/example/js-ellipsis.tsx +229 -0
- package/metaData/components/ellipsis/example/native-ellipsis.tsx +48 -0
- package/metaData/components/form/doc.md +90 -0
- package/metaData/components/form/example/form-item-context.tsx +8 -0
- package/metaData/components/form/example/form-item.tsx +378 -0
- package/metaData/components/form/example/index.tsx +87 -0
- package/metaData/components/form/example/linked-container.tsx +66 -0
- package/metaData/components/grid/doc.md +39 -0
- package/metaData/components/grid/example/index.tsx +252 -0
- package/metaData/components/icon/doc.md +15 -0
- package/metaData/components/icon/example/index.tsx +32 -0
- package/metaData/components/image/doc.md +62 -0
- package/metaData/components/image/example/index.tsx +528 -0
- package/metaData/components/image-picker/doc.md +116 -0
- package/metaData/components/image-picker/example/add-icon.tsx +14 -0
- package/metaData/components/image-picker/example/index.tsx +175 -0
- package/metaData/components/image-preview/doc.md +119 -0
- package/metaData/components/image-preview/example/index.tsx +1290 -0
- package/metaData/components/image-preview/example/methods.tsx +72 -0
- package/metaData/components/index-bar/doc.md +83 -0
- package/metaData/components/index-bar/example/group.tsx +93 -0
- package/metaData/components/index-bar/example/index.tsx +271 -0
- package/metaData/components/index-bar/example/side-bar.tsx +82 -0
- package/metaData/components/input/doc.md +60 -0
- package/metaData/components/input/example/hooks.tsx +259 -0
- package/metaData/components/input/example/index.tsx +134 -0
- package/metaData/components/input/example/props.tsx +183 -0
- package/metaData/components/keyboard/doc.md +73 -0
- package/metaData/components/keyboard/example/index.tsx +238 -0
- package/metaData/components/load-more/doc.md +48 -0
- package/metaData/components/load-more/example/index.tsx +395 -0
- package/metaData/components/loading/doc.md +34 -0
- package/metaData/components/loading/example/index.tsx +312 -0
- package/metaData/components/masking/doc.md +93 -0
- package/metaData/components/masking/example/index.tsx +410 -0
- package/metaData/components/masking/example/methods.tsx +88 -0
- package/metaData/components/nav-bar/doc.md +40 -0
- package/metaData/components/nav-bar/example/back-icon.tsx +28 -0
- package/metaData/components/nav-bar/example/index.tsx +305 -0
- package/metaData/components/notice-bar/doc.md +34 -0
- package/metaData/components/notice-bar/example/index.tsx +294 -0
- package/metaData/components/notify/doc.md +81 -0
- package/metaData/components/notify/example/index.tsx +171 -0
- package/metaData/components/notify/example/methods.tsx +83 -0
- package/metaData/components/pagination/doc.md +41 -0
- package/metaData/components/pagination/example/arrow.tsx +14 -0
- package/metaData/components/pagination/example/index.tsx +292 -0
- package/metaData/components/picker/doc.md +89 -0
- package/metaData/components/picker/example/index.tsx +217 -0
- package/metaData/components/picker-view/doc.md +57 -0
- package/metaData/components/picker-view/example/cascader.tsx +141 -0
- package/metaData/components/picker-view/example/index.tsx +297 -0
- package/metaData/components/picker-view/example/multi-picker.tsx +66 -0
- package/metaData/components/picker-view/example/picker-cell.tsx +416 -0
- package/metaData/components/popover/doc.md +144 -0
- package/metaData/components/popover/example/index.tsx +23 -0
- package/metaData/components/popover/example/menu.tsx +145 -0
- package/metaData/components/popover/example/popover-inner.tsx +147 -0
- package/metaData/components/popover/example/popover.tsx +268 -0
- package/metaData/components/popup/doc.md +101 -0
- package/metaData/components/popup/example/index.tsx +125 -0
- package/metaData/components/popup/example/methods.tsx +6 -0
- package/metaData/components/popup-swiper/doc.md +108 -0
- package/metaData/components/popup-swiper/example/index.tsx +332 -0
- package/metaData/components/popup-swiper/example/methods.tsx +6 -0
- package/metaData/components/portal/doc.md +14 -0
- package/metaData/components/portal/example/index.tsx +35 -0
- package/metaData/components/progress/doc.md +42 -0
- package/metaData/components/progress/example/index.tsx +256 -0
- package/metaData/components/pull-refresh/doc.md +37 -0
- package/metaData/components/pull-refresh/example/android-pull-refresh.tsx +260 -0
- package/metaData/components/pull-refresh/example/index.tsx +44 -0
- package/metaData/components/pull-refresh/example/ios-pull-refresh.tsx +216 -0
- package/metaData/components/radio/doc.md +89 -0
- package/metaData/components/radio/example/group.tsx +92 -0
- package/metaData/components/radio/example/index.tsx +25 -0
- package/metaData/components/radio/example/radio.tsx +22 -0
- package/metaData/components/rate/doc.md +33 -0
- package/metaData/components/rate/example/index.tsx +281 -0
- package/metaData/components/search-bar/doc.md +97 -0
- package/metaData/components/search-bar/example/association.tsx +89 -0
- package/metaData/components/search-bar/example/cancel-button.tsx +34 -0
- package/metaData/components/search-bar/example/highlight.tsx +66 -0
- package/metaData/components/search-bar/example/index.tsx +251 -0
- package/metaData/components/show-monitor/doc.md +34 -0
- package/metaData/components/show-monitor/example/index.tsx +646 -0
- package/metaData/components/skeleton/doc.md +101 -0
- package/metaData/components/skeleton/example/elements.tsx +290 -0
- package/metaData/components/skeleton/example/index.tsx +96 -0
- package/metaData/components/skeleton/example/skeleton-context.tsx +7 -0
- package/metaData/components/slider/doc.md +42 -0
- package/metaData/components/slider/example/index.tsx +326 -0
- package/metaData/components/slider/example/marks.tsx +50 -0
- package/metaData/components/slider/example/popover.tsx +38 -0
- package/metaData/components/slider/example/thumb.tsx +48 -0
- package/metaData/components/slider/example/useSliderIcon.tsx +38 -0
- package/metaData/components/slider/example/useSliderInit.tsx +170 -0
- package/metaData/components/stepper/doc.md +46 -0
- package/metaData/components/stepper/example/index.tsx +166 -0
- package/metaData/components/stepper/example/useButtonClick.tsx +74 -0
- package/metaData/components/stepper/example/useInputEvent.tsx +65 -0
- package/metaData/components/stepper/example/useValue.tsx +43 -0
- package/metaData/components/steps/doc.md +57 -0
- package/metaData/components/steps/example/index.tsx +123 -0
- package/metaData/components/steps/example/step.tsx +126 -0
- package/metaData/components/sticky/doc.md +45 -0
- package/metaData/components/sticky/example/index.tsx +430 -0
- package/metaData/components/swipe-action/doc.md +44 -0
- package/metaData/components/swipe-action/example/index.tsx +338 -0
- package/metaData/components/swipe-action/example/item.tsx +40 -0
- package/metaData/components/swipe-load/doc.md +43 -0
- package/metaData/components/swipe-load/example/index.tsx +339 -0
- package/metaData/components/swipe-load/example/type.tsx +153 -0
- package/metaData/components/switch/doc.md +38 -0
- package/metaData/components/switch/example/index.tsx +237 -0
- package/metaData/components/tab-bar/doc.md +57 -0
- package/metaData/components/tab-bar/example/index.tsx +18 -0
- package/metaData/components/tab-bar/example/item.tsx +74 -0
- package/metaData/components/tab-bar/example/tab-bar.tsx +105 -0
- package/metaData/components/tabs/doc.md +187 -0
- package/metaData/components/tabs/example/index.tsx +514 -0
- package/metaData/components/tabs/example/tab-cell-underline.tsx +320 -0
- package/metaData/components/tabs/example/tab-cell.tsx +433 -0
- package/metaData/components/tabs/example/tab-pane.tsx +349 -0
- package/metaData/components/tag/doc.md +80 -0
- package/metaData/components/tag/example/index.tsx +23 -0
- package/metaData/components/tag/example/list.tsx +97 -0
- package/metaData/components/tag/example/tag.tsx +85 -0
- package/metaData/components/textarea/doc.md +67 -0
- package/metaData/components/textarea/example/index.tsx +258 -0
- package/metaData/components/toast/doc.md +90 -0
- package/metaData/components/toast/example/index.tsx +335 -0
- package/metaData/components/toast/example/methods.tsx +87 -0
- package/metaData/components/transition/doc.md +19 -0
- package/metaData/components/transition/example/index.tsx +113 -0
- package/metaData/components/uploader/doc.md +82 -0
- package/metaData/components/uploader/example/index.tsx +208 -0
- package/metaData/components-index.json +242 -0
- package/package.json +56 -0
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
import React, { useState, forwardRef, Ref, useRef, useImperativeHandle, useContext } from 'react';
|
|
2
|
+
import { cls } from '@arco-design/mobile-utils';
|
|
3
|
+
import { GlobalContext } from '../context-provider';
|
|
4
|
+
import Loading from '../loading';
|
|
5
|
+
import { useSystem } from '../_helpers';
|
|
6
|
+
import { useCustomColor } from './hooks';
|
|
7
|
+
|
|
8
|
+
export type ButtonColorStatus =
|
|
9
|
+
| string
|
|
10
|
+
| {
|
|
11
|
+
normal: string;
|
|
12
|
+
active: string;
|
|
13
|
+
disabled: string;
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
export interface ButtonProps {
|
|
17
|
+
/**
|
|
18
|
+
* 样式类型
|
|
19
|
+
* @en Style type
|
|
20
|
+
* @default "primary"
|
|
21
|
+
*/
|
|
22
|
+
type?: 'primary' | 'ghost' | 'default';
|
|
23
|
+
/**
|
|
24
|
+
* 尺寸
|
|
25
|
+
* @en Size
|
|
26
|
+
* @default "large"
|
|
27
|
+
*/
|
|
28
|
+
size?: 'mini' | 'small' | 'medium' | 'large' | 'huge';
|
|
29
|
+
/**
|
|
30
|
+
* 是否为内联样式
|
|
31
|
+
* @en Whether it's inline style
|
|
32
|
+
* @default false
|
|
33
|
+
*/
|
|
34
|
+
inline?: boolean;
|
|
35
|
+
/**
|
|
36
|
+
* 是否处于加载中状态
|
|
37
|
+
* @en Whether it's in loading status
|
|
38
|
+
* @default false
|
|
39
|
+
*/
|
|
40
|
+
loading?: boolean;
|
|
41
|
+
/**
|
|
42
|
+
* 是否禁用
|
|
43
|
+
* @en Whether to disable
|
|
44
|
+
* @default false
|
|
45
|
+
*/
|
|
46
|
+
disabled?: boolean;
|
|
47
|
+
/**
|
|
48
|
+
* border是否为0.5px
|
|
49
|
+
* @en Whether the border is 0.5px
|
|
50
|
+
* @default false
|
|
51
|
+
*/
|
|
52
|
+
halfBorder?: boolean;
|
|
53
|
+
/**
|
|
54
|
+
* 图标名,传入Icon组件
|
|
55
|
+
* @en icon, input icon component
|
|
56
|
+
*/
|
|
57
|
+
icon?: React.ReactNode;
|
|
58
|
+
/**
|
|
59
|
+
* 加载中是否展示文字
|
|
60
|
+
* @en Whether to show text when loading
|
|
61
|
+
* @default true
|
|
62
|
+
*/
|
|
63
|
+
showTextWhenLoading?: boolean;
|
|
64
|
+
/**
|
|
65
|
+
* 是否需要点击态
|
|
66
|
+
* @en Whether it needs active status
|
|
67
|
+
* @default true
|
|
68
|
+
*/
|
|
69
|
+
needActive?: boolean;
|
|
70
|
+
/**
|
|
71
|
+
* 自定义样式
|
|
72
|
+
* @en Custom stylesheet
|
|
73
|
+
*/
|
|
74
|
+
style?: React.CSSProperties;
|
|
75
|
+
/**
|
|
76
|
+
* 按钮形状
|
|
77
|
+
* @en Button shape
|
|
78
|
+
* @default "semi"
|
|
79
|
+
*/
|
|
80
|
+
shape?: 'round' | 'semi' | 'square';
|
|
81
|
+
/**
|
|
82
|
+
* 自定义字体颜色
|
|
83
|
+
* @en Custom font color
|
|
84
|
+
*/
|
|
85
|
+
color?: ButtonColorStatus;
|
|
86
|
+
/**
|
|
87
|
+
* 自定义背景颜色
|
|
88
|
+
* @en Custom background color
|
|
89
|
+
*/
|
|
90
|
+
bgColor?: ButtonColorStatus;
|
|
91
|
+
/**
|
|
92
|
+
* 自定义边框颜色
|
|
93
|
+
* @en Custom border color
|
|
94
|
+
*/
|
|
95
|
+
borderColor?: ButtonColorStatus;
|
|
96
|
+
/**
|
|
97
|
+
* 自定义类名
|
|
98
|
+
* @en Custom classname
|
|
99
|
+
*/
|
|
100
|
+
className?: string;
|
|
101
|
+
/**
|
|
102
|
+
* 加载图标,传入Icon组件type属性或node
|
|
103
|
+
* @en Loading icon, input the icon component or its type
|
|
104
|
+
*/
|
|
105
|
+
loadingIcon?: string | React.ReactNode;
|
|
106
|
+
/**
|
|
107
|
+
* 子元素
|
|
108
|
+
* @en Children element
|
|
109
|
+
*/
|
|
110
|
+
children?: null | React.ReactNode;
|
|
111
|
+
/**
|
|
112
|
+
* 点击按钮的回调函数
|
|
113
|
+
* @en Callback function when clicking button
|
|
114
|
+
*/
|
|
115
|
+
onClick?: (e: React.MouseEvent) => void;
|
|
116
|
+
/**
|
|
117
|
+
* 禁用状态下点击按钮的回调函数
|
|
118
|
+
* @en Callback function when disabling button
|
|
119
|
+
*/
|
|
120
|
+
onClickDisabled?: (e: React.MouseEvent) => void;
|
|
121
|
+
/**
|
|
122
|
+
* 加载中是否禁用按钮操作
|
|
123
|
+
* @en Disable button when loading
|
|
124
|
+
* @default true
|
|
125
|
+
*/
|
|
126
|
+
disableWhenLoading?: boolean;
|
|
127
|
+
/**
|
|
128
|
+
* 加载中是否覆盖Icon
|
|
129
|
+
* @en Whether to override Icon during loading
|
|
130
|
+
* @default true
|
|
131
|
+
*/
|
|
132
|
+
coverIconWhenLoading?: boolean;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
export interface ButtonRef {
|
|
136
|
+
/**
|
|
137
|
+
* 最外层元素 DOM
|
|
138
|
+
* @en The outermost element DOM
|
|
139
|
+
*/
|
|
140
|
+
dom: HTMLButtonElement | null;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* 按钮用于开始一个即时操作。
|
|
145
|
+
* @en Using for starting an immediate action
|
|
146
|
+
* @type 通用
|
|
147
|
+
* @type_en General
|
|
148
|
+
* @name 按钮
|
|
149
|
+
* @name_en Button
|
|
150
|
+
*/
|
|
151
|
+
const Button = forwardRef((props: ButtonProps, ref: Ref<ButtonRef>) => {
|
|
152
|
+
const [isActive, setActive] = useState<boolean>(false);
|
|
153
|
+
const system = useSystem();
|
|
154
|
+
const {
|
|
155
|
+
type = 'primary',
|
|
156
|
+
size = 'large',
|
|
157
|
+
inline = false,
|
|
158
|
+
loading = false,
|
|
159
|
+
disabled = false,
|
|
160
|
+
disableWhenLoading = true,
|
|
161
|
+
shape = 'semi',
|
|
162
|
+
halfBorder = false,
|
|
163
|
+
icon,
|
|
164
|
+
showTextWhenLoading = true,
|
|
165
|
+
needActive = true,
|
|
166
|
+
style = {},
|
|
167
|
+
color,
|
|
168
|
+
bgColor,
|
|
169
|
+
borderColor,
|
|
170
|
+
className = '',
|
|
171
|
+
children = null,
|
|
172
|
+
loadingIcon,
|
|
173
|
+
onClick,
|
|
174
|
+
onClickDisabled,
|
|
175
|
+
coverIconWhenLoading = true,
|
|
176
|
+
} = props;
|
|
177
|
+
const domRef = useRef<HTMLButtonElement | null>(null);
|
|
178
|
+
const { prefixCls } = useContext(GlobalContext);
|
|
179
|
+
const prefix = `${prefixCls}-button`;
|
|
180
|
+
|
|
181
|
+
useImperativeHandle(ref, () => ({
|
|
182
|
+
dom: domRef.current,
|
|
183
|
+
}));
|
|
184
|
+
|
|
185
|
+
const { customColorClass, customColorStyle } = useCustomColor({
|
|
186
|
+
color,
|
|
187
|
+
bgColor,
|
|
188
|
+
borderColor,
|
|
189
|
+
isActive,
|
|
190
|
+
disabled,
|
|
191
|
+
halfBorder,
|
|
192
|
+
});
|
|
193
|
+
|
|
194
|
+
const handleTouchStart = () => {
|
|
195
|
+
if (needActive && !disabled && !loading) {
|
|
196
|
+
setActive(true);
|
|
197
|
+
}
|
|
198
|
+
};
|
|
199
|
+
|
|
200
|
+
const handleTouchEnd = () => {
|
|
201
|
+
setActive(false);
|
|
202
|
+
};
|
|
203
|
+
|
|
204
|
+
const renderIcon = () => {
|
|
205
|
+
if (coverIconWhenLoading) {
|
|
206
|
+
return loading ? null : icon;
|
|
207
|
+
}
|
|
208
|
+
return icon;
|
|
209
|
+
};
|
|
210
|
+
|
|
211
|
+
return (
|
|
212
|
+
<button
|
|
213
|
+
type="button"
|
|
214
|
+
ref={domRef}
|
|
215
|
+
style={{ ...customColorStyle, ...style }}
|
|
216
|
+
className={cls(
|
|
217
|
+
prefix,
|
|
218
|
+
`${prefix}-type-${type} type-${type}`,
|
|
219
|
+
`${prefix}-size-${size} ${prefix}-size-${size}-is-${shape} size-${size}`,
|
|
220
|
+
className,
|
|
221
|
+
`is-${shape}`,
|
|
222
|
+
system,
|
|
223
|
+
{
|
|
224
|
+
[`${prefix}-inline inline`]: inline,
|
|
225
|
+
[`${prefix}-type-${type}-disabled disabled`]: disabled,
|
|
226
|
+
loading,
|
|
227
|
+
[`${prefix}-type-${type}-active active`]: isActive,
|
|
228
|
+
},
|
|
229
|
+
...customColorClass,
|
|
230
|
+
)}
|
|
231
|
+
onTouchStart={handleTouchStart}
|
|
232
|
+
onTouchEnd={handleTouchEnd}
|
|
233
|
+
onTouchCancel={handleTouchEnd}
|
|
234
|
+
onClick={disabled || (loading && disableWhenLoading) ? onClickDisabled : onClick}
|
|
235
|
+
>
|
|
236
|
+
{icon || loading ? (
|
|
237
|
+
<div className={`${prefix}-icon btn-icon`}>
|
|
238
|
+
{renderIcon()}
|
|
239
|
+
{loading &&
|
|
240
|
+
(loadingIcon === void 0 ? (
|
|
241
|
+
<Loading
|
|
242
|
+
className={`${prefix}-loading-icon loading-icon`}
|
|
243
|
+
radius={6}
|
|
244
|
+
type="circle"
|
|
245
|
+
/>
|
|
246
|
+
) : (
|
|
247
|
+
loadingIcon
|
|
248
|
+
))}
|
|
249
|
+
</div>
|
|
250
|
+
) : null}
|
|
251
|
+
{(!loading || (loading && showTextWhenLoading)) && children ? (
|
|
252
|
+
<div
|
|
253
|
+
className={cls(`${prefix}-text`, `${prefix}-text-${system}`, 'btn-text', {
|
|
254
|
+
[`${prefix}-text-has-icon has-icon`]: loading || icon,
|
|
255
|
+
})}
|
|
256
|
+
>
|
|
257
|
+
{children}
|
|
258
|
+
</div>
|
|
259
|
+
) : null}
|
|
260
|
+
</button>
|
|
261
|
+
);
|
|
262
|
+
});
|
|
263
|
+
|
|
264
|
+
export default Button;
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
### 信息展示
|
|
2
|
+
|
|
3
|
+
# 轮播图 Carousel
|
|
4
|
+
|
|
5
|
+
轮播组件,支持自定义轮播索引样式及滑块宽度。**需要注意的是,如果正使用`fastclick`,需要为 touchstart 的 target 添加`needsclick`类**(<a href="https://github.com/ftlabs/fastclick#ignore-certain-elements-with-needsclick" target="_blank">详情戳这里</a>),以规避`fastclick`逻辑与组件内部的手势冲突。(如果使用了`list`属性则无需额外添加)
|
|
6
|
+
|
|
7
|
+
======
|
|
8
|
+
|
|
9
|
+
> 属性/Props
|
|
10
|
+
|
|
11
|
+
|参数|描述|类型|默认值|
|
|
12
|
+
|----------|-------------|------|------|
|
|
13
|
+
|className|样式类名|string|-|
|
|
14
|
+
|wrapStyle|最外层容器自定义样式|CSSProperties|-|
|
|
15
|
+
|style|内层轮播容器自定义样式|CSSProperties|-|
|
|
16
|
+
|children|轮播内部内容|ReactNode|-|
|
|
17
|
+
|list|轮播图片列表,省略子元素的简写,传入图片url数组,也可通过\`text\`指定图片底部的蒙层文字内容|CarouselListItem\[\]|-|
|
|
18
|
+
|animateDuration|自动切换轮播滑块时,动画的执行时间(ms)|number|500|
|
|
19
|
+
|animateDurationSlide|手动切换轮播滑块时,当手指释放后,动画的执行时间(ms)|number|300|
|
|
20
|
+
|loop|是否开启循环轮播,当指定轮播滑块宽度时该属性不生效|boolean|true|
|
|
21
|
+
|autoPlay|是否开启自动播放|boolean|true|
|
|
22
|
+
|autoPlayDirection|自动播放方向|"normal" \| "reverse"|"normal"|
|
|
23
|
+
|swipeable|是否响应手势滑动|boolean|true|
|
|
24
|
+
|stayDuration|开启自动播放时,每一个滑块的停留时间(ms)|number|4000|
|
|
25
|
+
|boxWidth|指定容器宽度,默认为基于父容器100%|ReactText|-|
|
|
26
|
+
|boxHeight|指定容器高度,默认为自适应高度;当设置\`vertical=true\`时,该属性为必填|ReactText|-|
|
|
27
|
+
|baseBoxWidth|指定初始容器宽度,常用于ssr首屏初始化,水平轮播时可用|number|-|
|
|
28
|
+
|baseBoxHeight|指定初始容器宽度,常用于ssr首屏初始化,垂直轮播时可用|number|-|
|
|
29
|
+
|width|指定轮播滑块宽度,为0或不传时为默认的父容器宽度|number|0|
|
|
30
|
+
|height|指定轮播滑块高度,如不指定则为自适应高度|number|-|
|
|
31
|
+
|initialIndex|默认选中的滑块索引|number|0|
|
|
32
|
+
|renderIndicator|自定义轮播索引|(currentIndex: number, total: number, lastIndex: number) =\> ReactNode|-|
|
|
33
|
+
|indicatorPos|轮播索引位置|"start" \| "center" \| "end"|"center"|
|
|
34
|
+
|indicatorVerticalPos|垂直轮播索引横向位置|"left" \| "right"|"left"|
|
|
35
|
+
|indicatorOutside|轮播索引是否放轮播图外面|boolean|-|
|
|
36
|
+
|showIndicator|是否展示轮播索引|boolean|true|
|
|
37
|
+
|hideSingleIndicator|children 只有一个时隐藏轮播索引|boolean|true|
|
|
38
|
+
|indicatorType|轮播索引样式类型|"square" \| "circle"|"square"|
|
|
39
|
+
|indicatorClass|轮播索引类名|string|-|
|
|
40
|
+
|indicatorInverse|轮播索引是否反色,默认根据索引是否放在外面决定|boolean|-|
|
|
41
|
+
|spaceBetween|子元素间距|number|0|
|
|
42
|
+
|offsetBetween|前后两端露出距离,设置值时不能循环轮播|number \| \{ left?: number; right?: number; \}|0|
|
|
43
|
+
|currentIndex|手动控制当前展示元素|number|-|
|
|
44
|
+
|autoHeight|容器高度自适应|boolean|false|
|
|
45
|
+
|percentToChange|滑动切换距离阈值(宽度比例),范围为\[0, 1\],如果该属性和\`distanceToChange\`属性均设置,则实际计算结果更大的生效|number|0.3|
|
|
46
|
+
|distanceToChange|滑动切换距离阈值(固定px宽度),如果该属性和\`percentToChange\`属性均设置,则实际计算结果更大的生效|number|10|
|
|
47
|
+
|speedToChange|滑动切换速度阈值(手指从按下到抬起之间的滑动速度,单位为px/s),与滑动切换距离阈值同时设置时,满足其中一个即生效|number|200|
|
|
48
|
+
|vertical|是否垂直轮播,设置后\`boxHeight\`属性必填|boolean|-|
|
|
49
|
+
|lazyloadCount|只加载当前页相邻的n个内容,为0时会销毁所有相邻内容,不传则加载所有内容|number|-|
|
|
50
|
+
|stopTouchThreshold|触发onTouchStopped的最小阈值|number|0|
|
|
51
|
+
|bounceWhenNoLoop|当不可循环时,是否开启滑动到最前或最后时的回弹效果|boolean|false|
|
|
52
|
+
|bounceDampRate|当开启最前或最后时的回弹效果时的阻尼系数|number|3|
|
|
53
|
+
|inactiveScale|非active的滑块的大小比例,\[0, 1\]的小数,设置后切换时将有放大效果|number|-|
|
|
54
|
+
|stopPropagation|触摸事件是否需要 stopPropagation|boolean|true|
|
|
55
|
+
|fakeItem|是否需要fake首尾item,用于offsetBetween不等于0时循环轮播的衔接|boolean|false|
|
|
56
|
+
|allowEndBlank|滑动到最后时是否允许留白,仅在loop=false且设置了width时有效|boolean|false|
|
|
57
|
+
|iOSVisibleOptimize|在iOS下是否需要在切屏时做DOM强刷优化,用于修复iOS息屏时自动播放的蜜汁渲染问题|boolean|true|
|
|
58
|
+
|renderExtra|在轮播图内部渲染额外元素,该元素不随轮播滑动,但处于手指可交互热区|(currentIndex: number) =\> ReactNode|-|
|
|
59
|
+
|distanceProcessor|自定义手指滑动跟手的距离计算方式,posDis表示touchmove的距离,wrapSize表示容器在滑动方向的尺寸,childSize表示滑块在滑动方向的尺寸|(posDis: number, wrapSize: number, childSize: number) =\> number|(posDis, wrapSize, childSize) => childSize * (posDis / wrapSize)|
|
|
60
|
+
|getInnerScrollContainer|组件内部的滚动容器,用于豁免滑动事件响应|() =\> HTMLElement \| HTMLElement\[\]|-|
|
|
61
|
+
|onTouchStopped|当轮播不支持循环且滑到最前面或最后面,还想再滑动时触发|(direction: 1 \| \-1) =\> void|-|
|
|
62
|
+
|onChange|轮播滑块切换时触发|(index: number) =\> void|-|
|
|
63
|
+
|onAfterChange|轮播滑块切换,动画完成后触发|(index: number, oldIndex: number) =\> void|-|
|
|
64
|
+
|onTouchStart|轮播内容touchstart事件|(e: TouchEvent, total: number, index: number) =\> boolean \| void|-|
|
|
65
|
+
|onTouchMove|轮播内容touchmove事件|(e: TouchEvent, total: number, index: number) =\> boolean \| void|-|
|
|
66
|
+
|onTouchEnd|轮播内容touchend / touchcancel事件|(e: TouchEvent, total: number, index: number) =\> boolean \| void|-|
|
|
67
|
+
|onTransitionStart|轮播切换动画开始时回调|() =\> void|-|
|
|
68
|
+
|onTransitionEnd|轮播切换动画结束时回调|() =\> void|-|
|
|
69
|
+
|onDistanceChange|轮播左右滑动时回调,用于监听滑动距离以做滑动同步交互|(distance: number, wrapSize: number, activeIndex: number) =\> void|-|
|
|
70
|
+
|onPageVisibleChange|自定义页面展示隐藏监听,默认在document监听visibilitychange事件,返回function用于在组件卸载时移除监听|(updateWhenVisible: () =\> void, updateWhenInvisible: () =\> void) =\> () =\> void|-|
|
|
71
|
+
|
|
72
|
+
> 引用/Refs
|
|
73
|
+
|
|
74
|
+
|参数|描述|类型|
|
|
75
|
+
|----------|-------------|------|
|
|
76
|
+
|dom|最外层元素 DOM|HTMLDivElement|
|
|
77
|
+
|wrap|轮播图子项包裹容器 DOM,承载了 touch 相关事件|HTMLDivElement|
|
|
78
|
+
|items|轮播图每个子项的 DOM|HTMLDivElement\[\]|
|
|
79
|
+
|noLoop|在某些条件下内部会禁用循环轮播,这里表示循环是否被禁用|boolean|
|
|
80
|
+
|updateData|手动重新计算布局|() =\> void|
|
|
81
|
+
|changeIndex|手动更新当前选中索引,rightNow 表示是否立刻跳转到目标索引,否则执行过渡动画到目标索引|(newIndex: number, rightNow?: boolean, direction?: "left" \| "right") =\> void|
|
|
82
|
+
|
|
83
|
+
> CarouselListItem
|
|
84
|
+
|
|
85
|
+
|参数|描述|类型|
|
|
86
|
+
|----------|-------------|------|
|
|
87
|
+
|src|图片链接|string|
|
|
88
|
+
|text|图片底部固定的文字|ReactNode|
|
|
89
|
+
|onClick|点击图片回调|(e: MouseEvent\<HTMLImageElement, MouseEvent\>) =\> void|
|