veui
Version:
Baidu Enterprise UI for Vue.js.
68 lines (59 loc) • 1.41 kB
TypeScript
import {
VeuiDefineComponent,
VeuiDefineInstance,
LooseObject,
CarouselMixin
} from '../common'
export type Item = {
src: string
label?: string
alt?: string
type?: 'video' | 'image'
}
export type CarouselCommonProps<T extends Item> = {
datasource?: Array<T>
index?: number
wrap?: boolean
lazy?: boolean | { preload: number }
}
type Props<T extends Item> = CarouselCommonProps<T> & {
indicator?: 'bar' | 'radio' | 'number' | 'none' | 'dot'
indicatorAlign?: 'start' | 'end'
indicatorPosition?: 'inside' | 'outside'
controlsPosition?: 'inside' | 'outside'
controls?: boolean
switchTrigger?: 'hover' | 'click'
// keyField?: string
autoplay?: boolean
pauseOnHover?: boolean
interval?: number
effect?: 'fade' | 'slide'
slidesPerView?: number
slidesPerGroup?: number
vertical?: boolean
slideAspectRatio?: string | number
options?: {
video?: {
muted?: boolean
autoplay?: boolean
controls?: boolean
loop?: boolean
[key: keyof any]: unknown
}
[key: keyof any]: unknown
}
}
type Emits = {} // change 也在 mixin 中
type Mixins = CarouselMixin // ui 也在
type Slots = {
item(slotProps: { item: LooseObject<Item> }): unknown
}
type Carousel = VeuiDefineComponent<{
new <T extends Item = Item>(...args: any[]): VeuiDefineInstance<
Props<T>,
Emits,
Slots,
Mixins
>
}>
export default Carousel