vexip-ui
Version: 
A Vue 3 UI library, Highly customizability, full TypeScript, performance pretty good
65 lines (64 loc) • 2.42 kB
TypeScript
import { ComponentPublicInstance } from 'vue';
export interface TransferKeyConfig {
    value?: string;
    label?: string;
    disabled?: string;
}
export interface TransferOptionState {
    value: string | number;
    label: string;
    disabled: boolean;
    hidden: boolean;
    hitting: boolean;
    data: string | Record<string, any>;
}
export type TransferFilter = (value: string, options: TransferOptionState, type: 'source' | 'target') => boolean;
export interface TransferExposed extends ComponentPublicInstance {
    handleToTarget: () => void;
    handleToSource: () => void;
    handlePanelFocus: (type: 'source' | 'target') => void;
    handlePanelBlur: () => void;
    focus: (options?: FocusOptions) => void;
    blur: () => void;
}
export interface TransferPanelSlotParams {
    type: 'source' | 'target';
    currentPage: number;
    pageSize: number;
    totalPages: number;
    allSelected: boolean;
    partial: boolean;
    selected: (string | number)[];
    options: TransferOptionState[];
    toggleSelectAll: (event?: Event) => void;
    handleReverse: () => void;
}
export interface TransferOptionSlotParams {
    type: 'source' | 'target';
    option: TransferOptionState;
    index: number;
}
export interface TransferSlots {
    actions?: (params: {
        handleToTarget: () => void;
        handleToSource: () => void;
    }) => any;
    option?: (params: TransferOptionSlotParams) => any;
    label?: (params: TransferOptionSlotParams) => any;
    header?: (params: TransferPanelSlotParams) => any;
    title?: (params: TransferPanelSlotParams) => any;
    body?: (params: TransferPanelSlotParams) => any;
    footer?: (params: TransferPanelSlotParams) => any;
    sourceOption?: (params: TransferOptionSlotParams) => any;
    sourceLabel?: (params: TransferOptionSlotParams) => any;
    sourceHeader?: (params: TransferPanelSlotParams) => any;
    sourceTitle?: (params: TransferPanelSlotParams) => any;
    sourceBody?: (params: TransferPanelSlotParams) => any;
    sourceFooter?: (params: TransferPanelSlotParams) => any;
    targetOption?: (params: TransferOptionSlotParams) => any;
    targetLabel?: (params: TransferOptionSlotParams) => any;
    targetHeader?: (params: TransferPanelSlotParams) => any;
    targetTitle?: (params: TransferPanelSlotParams) => any;
    targetBody?: (params: TransferPanelSlotParams) => any;
    targetFooter?: (params: TransferPanelSlotParams) => any;
}