@whitesev/pops
Version:
弹窗库,包含了alert、confirm、prompt、drawer、folder、loading、iframe、panel、tooltip、searchSuggestion、rightClickMenu组件
154 lines (151 loc) • 3.35 kB
text/typescript
import type {
PopsTitleConfig,
PopsDragConfig,
PopsGeneralConfig,
PopsMoreButtonConfig,
} from "../../../types/components";
/**
* pops.folder的下载配置选项
*/
export type PopsFolderDownloadOption = {
/**
*
* 前置条件:url不为空
*
* 下载方式,不传入就不下载(不做任何处理)
*
*
* + `a`: 使用`a标签`进行下载
* + `aBlank`: 使用`a标签`进行下载(添加属性`target="_blank"`)
* + `iframe`: 使用`iframe`进行下载
* + `open`: 使用`window.open`进行下载
* + `openBlank`: 使用`window.open`进行下载(添加参数`_blank`)
*
* @default "aBlank"
*/
mode?: "a" | "aBlank" | "iframe" | "open" | "openBlank";
/**
* 触发下载后会根据提供的url链接进行下载
*/
url: string;
};
/**
* pops.folder的folder配置信息
*/
export interface PopsFolderDataConfig {
/**
* 文件/文件夹名
*/
fileName: string;
/**
* 文件大小,如果是文件夹的话,请设置为`0`
*/
fileSize: number | string;
/**
* 文件类型,如果是文件夹,填入`""`即可
*
* 填入后会根据文件类型,自动设置图标
*/
fileType: string;
/**
* 文件图标
* @default undefined
*/
fileIcon?: string;
/**
* 创建时间
*/
createTime:
| number
| (() => {
/**
* 该值用于排序
*/
timeStamp: number;
/**
* 用于显示的文本
*/
showText: string;
});
/**
* 修改时间(最新时间)
*/
latestTime:
| number
| (() => {
/**
* 该值用于排序
*/
timeStamp: number;
/**
* 用于显示的文本
*/
showText: string;
});
/**
* 是否是文件夹
* @default false
*/
isFolder: boolean;
/**
* 层级
*/
index: number;
/**
* 列表项的点击事件回调
*
* 如果是配置项,则自动根据配置项来创建下载事件,也可以自定义函数
*
* 如果是自定义函数的话,根据返回值来判断,如果为空则什么都不做
*/
clickEvent?:
| ((
/**
* 点击事件
*/
event: MouseEvent | PointerEvent,
/**
* 当前层级的文件|文件夹信息配置
*/
config: PopsFolderDataConfig
) => IPromise<PopsFolderDownloadOption | PopsFolderDataConfig[] | null | undefined | void>)
| PopsFolderDownloadOption
| PopsFolderDataConfig[]
| null
| undefined
| void;
}
/**
* pops.folder
*/
export interface PopsFolderConfig extends PopsTitleConfig, PopsDragConfig, PopsMoreButtonConfig, PopsGeneralConfig {
/**
* 排序
*/
sort: {
/**
* 比较的名字,默认为fileName
*/
name: "fileName" | "fileSize" | "latestTime";
/**
* 是否降序,默认false(升序)
* @default false
*/
isDesc: boolean;
/**
* 触发排序的回调
* @returns
* + true 中止内部的排序
*/
callback?: (
targert: HTMLElement,
event: PointerEvent | MouseEvent,
sortName: "fileName" | "fileSize" | "latestTime",
sortDesc: boolean
) => boolean | undefined | void;
};
/**
* 文件夹信息
*/
folder: PopsFolderDataConfig[];
}