1 | import { ComponentType } from 'react'
|
2 | import { StandardProps, CommonEventFunction } from './common'
|
3 | interface 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 | /** 改变 current 时使用动画过渡
|
145 | * @supported weapp
|
146 | * @default true
|
147 | */
|
148 | scrollWithAnimation?: boolean
|
149 | /** 缓存区域大小,值为 1 表示提前渲染上下各一屏区域(swiper 容器大小)
|
150 | * @supported weapp
|
151 | * @default 0
|
152 | */
|
153 | cacheExtent?: number
|
154 | /** swiper11 相关的动效参数,具体见文档 https://swiperjs.com/swiper-api#parameters
|
155 | * @supported h5
|
156 | */
|
157 | effectsProps?: Record<string, any>
|
158 | /** current 改变时会触发 change 事件
|
159 | * @supported weapp, alipay, swan, tt, qq, jd, h5, rn, harmony, harmony_hybrid
|
160 | */
|
161 | onChange?: CommonEventFunction<SwiperProps.onChangeEventDetail>
|
162 | /** swiper-item 的位置发生改变时会触发 transition 事件
|
163 | * @supported weapp, alipay, tt, qq
|
164 | */
|
165 | onTransition?: CommonEventFunction<SwiperProps.onTransitionEventDetail>
|
166 | /** 动画结束时会触发 animationfinish 事件
|
167 | * @supported weapp, swan, tt, qq, jd, h5, rn, harmony_hybrid
|
168 | */
|
169 | onAnimationFinish?: SwiperProps['onChange']
|
170 | /** 动画结束时会触发 animationEnd 事件
|
171 | * @supported alipay
|
172 | */
|
173 | onAnimationEnd?: CommonEventFunction<SwiperProps.onCommonEventDetail>
|
174 | }
|
175 | declare namespace SwiperProps {
|
176 | /** 导致变更的原因 */
|
177 | interface TChangeSource {
|
178 | /** 自动播放 */
|
179 | autoplay
|
180 | /** 用户划动 */
|
181 | touch
|
182 | /** 其它原因 */
|
183 | ''
|
184 | }
|
185 | /** 指定 swiper 切换缓动动画类型 */
|
186 | interface TEasingFunction {
|
187 | /** 默认缓动函数 */
|
188 | default
|
189 | /** 线性动画 */
|
190 | linear
|
191 | /** 缓入动画 */
|
192 | easeInCubic
|
193 | /** 缓出动画 */
|
194 | easeOutCubic
|
195 | /** 缓入缓出动画 */
|
196 | easeInOutCubic
|
197 | }
|
198 | interface onCommonEventDetail {
|
199 | /** 当前所在滑块的索引 */
|
200 | current: number
|
201 | /** 导致变更的原因 */
|
202 | source: keyof SwiperProps.TChangeSource
|
203 | }
|
204 | interface onChangeEventDetail {
|
205 | /** 当前所在滑块的索引 */
|
206 | current: number
|
207 | /** 导致变更的原因 */
|
208 | source: keyof SwiperProps.TChangeSource
|
209 | /** SwiperItem的itemId参数值 */
|
210 | currentItemId?: string
|
211 | }
|
212 | interface onTransitionEventDetail {
|
213 | /** X 坐标 */
|
214 | dx: number
|
215 | /** Y 坐标 */
|
216 | dy: number
|
217 | }
|
218 | }
|
219 | /** 滑块视图容器。其中只可放置 swiper-item 组件,否则会导致未定义的行为。
|
220 | * > 不要为 `SwiperItem` 设置 **style** 属性,可以通过 class 设置样式。[7147](https://github.com/NervJS/taro/issues/7147)
|
221 | * @classification viewContainer
|
222 | * @supported weapp, alipay, swan, tt, qq, jd, h5, rn, harmony, harmony_hybrid
|
223 | * @example_react
|
224 | * ```tsx
|
225 | * class App extends Component {
|
226 | * render () {
|
227 | * return (
|
228 | * <Swiper
|
229 | * className='test-h'
|
230 | * indicatorColor='#999'
|
231 | * indicatorActiveColor='#333'
|
232 | * vertical
|
233 | * circular
|
234 | * indicatorDots
|
235 | * autoplay>
|
236 | * <SwiperItem>
|
237 | * <View className='demo-text-1'>1</View>
|
238 | * </SwiperItem>
|
239 | * <SwiperItem>
|
240 | * <View className='demo-text-2'>2</View>
|
241 | * </SwiperItem>
|
242 | * <SwiperItem>
|
243 | * <View className='demo-text-3'>3</View>
|
244 | * </SwiperItem>
|
245 | * </Swiper>
|
246 | * )
|
247 | * }
|
248 | * }
|
249 | * ```
|
250 | * @example_vue
|
251 | * ```html
|
252 | * <template>
|
253 | * <swiper
|
254 | * class='test-h'
|
255 | * indicator-color='#999'
|
256 | * indicator-active-color='#333'
|
257 | * :vertical="true"
|
258 | * :circular="true"
|
259 | * :indicator-dots="true"
|
260 | * :autoplay="true"
|
261 | * >
|
262 | * <swiper-item>
|
263 | * <view class='demo-text-1'>1</view>
|
264 | * </swiper-item>
|
265 | * <swiper-item>
|
266 | * <view class='demo-text-2'>2</view>
|
267 | * </swiper-item>
|
268 | * <swiper-item>
|
269 | * <view class='demo-text-3'>3</view>
|
270 | * </swiper-item>
|
271 | * </swiper>
|
272 | * </template>
|
273 | * ```
|
274 | * @see https://developers.weixin.qq.com/miniprogram/dev/component/swiper.html
|
275 | */
|
276 | declare const Swiper: ComponentType<SwiperProps>
|
277 | export { Swiper, SwiperProps }
|