UNPKG

10.6 kBTypeScriptView Raw
1import { ComponentType } from 'react'
2import { StandardProps, CommonEventFunction } from './common'
3interface SwiperProps extends StandardProps {
4 /** 是否显示面板指示点
5 * @default false
6 * @supported weapp, alipay, swan, tt, qq, jd, h5, rn, harmony, harmony_hybrid
7 */
8 indicatorDots?: boolean
9 /** 指示点颜色
10 * @default "rgba(0, 0, 0, .3)"
11 * @supported weapp, alipay, swan, tt, qq, jd, h5, rn, harmony, harmony_hybrid
12 */
13 indicatorColor?: string
14 /** 当前选中的指示点颜色
15 * @default "#000000"
16 * @supported weapp, alipay, swan, tt, qq, jd, h5, rn, harmony, harmony_hybrid
17 */
18 indicatorActiveColor?: string
19 /** 是否自动切换
20 * @default false
21 * @supported weapp, alipay, swan, tt, qq, jd, h5, rn, harmony, harmony_hybrid
22 */
23 autoplay?: boolean
24 /** 当前所在滑块的 index
25 * @default 0
26 * @supported weapp, alipay, swan, tt, qq, jd, h5, rn, harmony, harmony_hybrid
27 */
28 current?: number
29 /** 当前所在滑块的 item-id ,不能与 current 被同时指定
30 * @supported swan, tt, qq, jd, h5, harmony_hybrid
31 * @weapp deprecated
32 * @default ""
33 */
34 currentItemId?: string
35 /** 自动切换时间间隔
36 * @default 5000
37 * @supported weapp, alipay, swan, tt, qq, jd, h5, rn, harmony, harmony_hybrid
38 */
39 interval?: number
40 /** 滑动动画时长
41 * @default 500
42 * @supported weapp, alipay, swan, tt, qq, jd, h5, harmony, harmony_hybrid
43 */
44 duration?: number
45 /** 是否采用衔接滑动
46 * @default false
47 * @supported weapp, alipay, swan, tt, qq, jd, h5, rn, harmony_hybrid
48 */
49 circular?: boolean
50 /** 滑动方向是否为纵向
51 * @default false
52 * @supported weapp, alipay, swan, tt, qq, jd, h5, rn, harmony, harmony_hybrid
53 */
54 vertical?: boolean
55 /** 前边距,可用于露出前一项的一小部分,接受 px 和 rpx 值
56 * @default "0px"
57 * @supported weapp, alipay, swan, tt, qq, jd, h5, harmony_hybrid
58 */
59 previousMargin?: string
60 /** 后边距,可用于露出后一项的一小部分,接受 px 和 rpx 值
61 * @default "0px"
62 * @supported weapp, alipay, swan, tt, qq, jd, h5, harmony_hybrid
63 */
64 nextMargin?: string
65 /**
66 * 当 swiper-item 的个数大于等于 2,关闭 circular 并且开启 previous-margin 或 next-margin 的时候,可以指定这个边距是否应用到第一个、最后一个元素
67 * @default false
68 * @supported weapp, alipay
69 */
70 snapToEdge?: boolean
71 /** 同时显示的滑块数量
72 * @default 1
73 * @supported weapp, alipay, swan, tt, qq, jd, h5, harmony_hybrid
74 */
75 displayMultipleItems?: number
76 /** 是否跳过未显示的滑块布局,设为 true 可优化复杂情况下的滑动性能,但会丢失隐藏状态滑块的布局信息
77 * @default false
78 * @supported qq, jd
79 */
80 skipHiddenItemLayout?: boolean
81 /** 指定 swiper 切换缓动动画类型
82 * @default "default"
83 * @supported weapp, alipay, tt, jd
84 */
85 easingFunction?: keyof SwiperProps.TEasingFunction
86 /** 是否禁止用户 touch 操作
87 * @default false
88 * @supported alipay
89 */
90 disableTouch?: boolean
91 /** 是否启用缩放
92 * @default false
93 * @supported h5, harmony_hybrid
94 */
95 zoom?: boolean
96 /** 是否开启全屏
97 * @default false
98 * @supported h5, harmony_hybrid
99 */
100 full?: boolean
101 /** swiper-item 可见时的 class。
102 * @supported alipay
103 */
104 activeClass?: string
105 /** acceleration 设置为 {{true}} 时且处于滑动过程中,中间若干屏处于可见时的 class。
106 * @supported alipay
107 */
108 changingClass?: string
109 /** 当开启时,会根据滑动速度,连续滑动多屏。
110 * @default false
111 * @supported alipay
112 */
113 acceleration?: string
114 /** 是否禁用代码变动触发 swiper 切换时使用动画。
115 * @default false
116 * @supported alipay
117 */
118 disableProgrammaticAnimation?: string
119 /** 滑动距离阈值,当滑动距离超过阈值时进行 swiper-item 切换。
120 * @supported alipay
121 */
122 swipeRatio?: string
123 /** 滑动综合速度阈值,当超过阈值时进行 swiper-item 切换,数值越小越敏感。
124 * @supported alipay
125 */
126 swipeSpeed?: string
127 /** 计算用户手势时所依赖的滑动角度。角度根据 touchstart 事件和首次 touchmove 事件的坐标计算得出。数值越小越对用户的滑动方向准确度要求越高。
128 * @supported alipay
129 */
130 touchAngle?: string
131 /** 自动以指定滑块的高度为整个容器的高度。当 vertical 为 true 时,默认不调整。可选值为:
132 * @supported alipay
133 */
134 adjustHeight?: 'first' | 'current' | 'highest' | 'none'
135 /** vertical 为 true 时强制使 adjust-height 生效。
136 * @supported alipay
137 */
138 adjustVerticalHeight?: string
139 /** 是否停止响应用户 touchmove 操作
140 * @default false
141 * @supported swan
142 */
143 disableTouchmove?: string
144 /** swiper11 相关的动效参数,具体见文档 https://swiperjs.com/swiper-api#parameters
145 * @supported h5
146 */
147 effectsProps?: Record<string, any>
148 /** current 改变时会触发 change 事件
149 * @supported weapp, alipay, swan, tt, qq, jd, h5, rn, harmony, harmony_hybrid
150 */
151 onChange?: CommonEventFunction<SwiperProps.onChangeEventDetail>
152 /** swiper-item 的位置发生改变时会触发 transition 事件
153 * @supported weapp, alipay, tt, qq
154 */
155 onTransition?: CommonEventFunction<SwiperProps.onTransitionEventDetail>
156 /** 动画结束时会触发 animationfinish 事件
157 * @supported weapp, swan, tt, qq, jd, h5, rn, harmony_hybrid
158 */
159 onAnimationFinish?: SwiperProps['onChange']
160 /** 动画结束时会触发 animationEnd 事件
161 * @supported alipay
162 */
163 onAnimationEnd?: CommonEventFunction<SwiperProps.onCommonEventDetail>
164 /** 渲染模式
165 * @supported weapp
166 * @default normal
167 */
168 layoutType?: 'normal' | 'stackLeft' | 'stackRight' | 'tinder' | 'transformer'
169 /** layout-type 为 transformer 时指定动画类型
170 * @supported weapp
171 * @default scaleAndFade
172 */
173 transformerType?: 'scaleAndFade' | 'accordion' | 'threeD' | 'zoomIn' | 'zoomOut' | 'deepthPage'
174 /** 指示点动画类型
175 * @supported weapp
176 * @default normal
177 */
178 indicatorType?: 'normal' | 'worm' | 'wormThin' | 'wormUnderground' | 'wormThinUnderground' | 'expand' | 'jump' | 'jumpWithOffset' | 'scroll' | 'scrollFixedCenter' | 'slide' | 'slideUnderground' | 'scale' | 'swap' | 'swapYRotation' | 'color'
179 /** 指示点四周边距
180 * @supported weapp
181 * @default 10
182 */
183 indicatorMargin?: number
184 /** 指示点间距
185 * @supported weapp
186 * @default 4
187 */
188 indicatorSpacing?: number
189 /** 指示点圆角大小
190 * @supported weapp
191 * @default 4
192 */
193 indicatorRadius?: number
194 /** 指示点宽度
195 * @supported weapp
196 * @default 8
197 */
198 indicatorWidth?: number
199 /** 指示点高度
200 * @supported weapp
201 * @default 8
202 */
203 indicatorHeight?: number
204 /** 指示点的相对位置
205 * @supported weapp
206 * @default auto
207 */
208 indicatorAlignment?: [number, number] | string
209 /** 指示点位置的偏移量
210 * @supported weapp
211 * @default [0, 0]
212 */
213 indicatorOffset?: [number, number]
214 /** 改变 current 时使用动画过渡
215 * @supported weapp
216 * @default true
217 */
218 scrollWithAnimation?: boolean
219 /** 缓存区域大小,值为 1 表示提前渲染上下各一屏区域(swiper 容器大小)
220 * @supported weapp
221 * @default 0
222 */
223 cacheExtent?: number
224 /** 滑动开始时触发,仅支持 worklet 作为回调。event.detail = {dx: dx, dy: dy}
225 * @supported weapp
226 */
227 onScrollStartWorklet?: string
228 /** 滑动位置更新时触发,仅支持 worklet 作为回调。event.detail = {dx: dx, dy: dy}
229 * @supported weapp
230 */
231 onScrollUpdateWorklet?: string
232 /** 滑动结束时触发,仅支持 worklet 作为回调。event.detail = {dx: dx, dy: dy}
233 * @supported weapp
234 */
235 onScrollEndWorklet?: string
236}
237declare namespace SwiperProps {
238 /** 导致变更的原因 */
239 interface TChangeSource {
240 /** 自动播放 */
241 autoplay
242 /** 用户划动 */
243 touch
244 /** 其它原因 */
245 ''
246 }
247 /** 指定 swiper 切换缓动动画类型 */
248 interface TEasingFunction {
249 /** 默认缓动函数 */
250 default
251 /** 线性动画 */
252 linear
253 /** 缓入动画 */
254 easeInCubic
255 /** 缓出动画 */
256 easeOutCubic
257 /** 缓入缓出动画 */
258 easeInOutCubic
259 }
260 interface onCommonEventDetail {
261 /** 当前所在滑块的索引 */
262 current: number
263 /** 导致变更的原因 */
264 source: keyof SwiperProps.TChangeSource
265 }
266 interface onChangeEventDetail {
267 /** 当前所在滑块的索引 */
268 current: number
269 /** 导致变更的原因 */
270 source: keyof SwiperProps.TChangeSource
271 /** SwiperItem的itemId参数值 */
272 currentItemId?: string
273 }
274 interface onTransitionEventDetail {
275 /** X 坐标 */
276 dx: number
277 /** Y 坐标 */
278 dy: number
279 }
280}
281/** 滑块视图容器。其中只可放置 swiper-item 组件,否则会导致未定义的行为。
282 * > 不要为 `SwiperItem` 设置 **style** 属性,可以通过 class 设置样式。[7147](https://github.com/NervJS/taro/issues/7147)
283 * @classification viewContainer
284 * @supported weapp, alipay, swan, tt, qq, jd, h5, rn, harmony, harmony_hybrid
285 * @example_react
286 * ```tsx
287 * class App extends Component {
288 * render () {
289 * return (
290 * <Swiper
291 * className='test-h'
292 * indicatorColor='#999'
293 * indicatorActiveColor='#333'
294 * vertical
295 * circular
296 * indicatorDots
297 * autoplay>
298 * <SwiperItem>
299 * <View className='demo-text-1'>1</View>
300 * </SwiperItem>
301 * <SwiperItem>
302 * <View className='demo-text-2'>2</View>
303 * </SwiperItem>
304 * <SwiperItem>
305 * <View className='demo-text-3'>3</View>
306 * </SwiperItem>
307 * </Swiper>
308 * )
309 * }
310 * }
311 * ```
312 * @example_vue
313 * ```html
314 * <template>
315 * <swiper
316 * class='test-h'
317 * indicator-color='#999'
318 * indicator-active-color='#333'
319 * :vertical="true"
320 * :circular="true"
321 * :indicator-dots="true"
322 * :autoplay="true"
323 * >
324 * <swiper-item>
325 * <view class='demo-text-1'>1</view>
326 * </swiper-item>
327 * <swiper-item>
328 * <view class='demo-text-2'>2</view>
329 * </swiper-item>
330 * <swiper-item>
331 * <view class='demo-text-3'>3</view>
332 * </swiper-item>
333 * </swiper>
334 * </template>
335 * ```
336 * @see https://developers.weixin.qq.com/miniprogram/dev/component/swiper.html
337 */
338declare const Swiper: ComponentType<SwiperProps>
339export { Swiper, SwiperProps }