@aplus-frontend/ui
Version:
70 lines (69 loc) • 1.6 kB
TypeScript
import { CSSProperties } from 'vue';
export type ScrollBarDirection = 'vertical' | 'horizontal';
export type ColorType = CSSProperties['background-color'];
export interface InternalScrollBarProps {
/**
* 滚动条的方向
*/
direction?: ScrollBarDirection;
/**
* 滚动条当前的位置(百分比值)
*/
scroll?: number;
/**
* 滚动条的长(高)度
*/
barLength?: number;
/**
* 滚动条的高(宽)度
*/
width?: number;
/**
* 滚动条的颜色
*/
barColor?: ColorType;
/**
* 滑轨的颜色
*/
trackColor?: ColorType;
/**
* 滑动滚条的长度
*/
trackWidth?: number;
/**
* 是否禁用
*/
disabled?: boolean;
/**
* 是否显示滑轨
*/
showTrack?: boolean;
/**
* 点击滑轨滚动的速度
*/
trackSpeed?: number;
onScrollStart?: (percent: number) => void;
onScroll?: (percent: number) => void;
onScrollEnd?: (percent: number) => void;
}
export interface ScrollBarProps extends InternalScrollBarProps {
/**
* 可滚动容器
*/
scrollContainer?: HTMLElement;
/**
* 额外的尺寸(宽/高)
*/
extraSize?: number;
}
export interface InternalScrollBarExpose {
currentScroll: number;
container: HTMLElement;
track: HTMLElement;
bar: HTMLElement;
scroll: (percent: number) => void;
}
export type ScrollBarExpose = Pick<InternalScrollBarExpose, 'scroll' | 'currentScroll'> & {
visible: boolean;
rootElement: HTMLElement;
};