1
0
mirror of synced 2025-11-06 11:20:40 +08:00
Files
vxe-table/types/button.d.ts
xuliangzhan 07acc45276 fix
2023-07-16 00:02:07 +08:00

185 lines
4.4 KiB
TypeScript

import { SetupContext, RenderFunction, Ref, ComponentPublicInstance } from 'vue'
import { VXEComponent, VxeComponentBase, VxeEvent, SizeType, ValueOf, VNodeStyle } from './component'
/* eslint-disable no-use-before-define */
/**
* 组件 - 按钮
* @example import { VxeButton } from 'vxe-table'
*/
export const VxeButton: VXEComponent<VxeButtonProps, VxeButtonEventProps, VxeButtonSlots>
/**
* 组件 - 按钮
*/
export const Button: typeof VxeButton
export type VxeButtonInstance = ComponentPublicInstance<VxeButtonProps, VxeButtonConstructor>
export interface VxeButtonConstructor extends VxeComponentBase, VxeButtonMethods {
props: VxeButtonProps
context: SetupContext<VxeButtonEmits>
reactData: ButtonReactData
internalData: ButtonInternalData
getRefMaps(): ButtonPrivateRef
renderVN: RenderFunction
}
export interface ButtonPrivateRef {
refElem: Ref<HTMLDivElement>
}
export interface VxeButtonPrivateRef extends ButtonPrivateRef { }
export interface ButtonReactData {
inited: boolean
showPanel: boolean
animatVisible: boolean
panelIndex: number
panelStyle: VNodeStyle
panelPlacement: any
}
export interface ButtonInternalData {
showTime: any
}
export namespace VxeButtonPropTypes {
export type Size = SizeType
export type Type = string
export type ClassName = string | ((params: { $button: VxeButtonConstructor }) => string)
export type PopupClassName = string | ((params: { $button: VxeButtonConstructor }) => string)
export type Name = string | number
export type Content = string
export type Placement = string
export type Status = string
export type Icon = string
export type Round = boolean
export type Circle = boolean
export type Disabled = boolean
export type Loading = boolean
export type DestroyOnClose = boolean
export type Transfer = boolean
}
export type VxeButtonProps = {
size?: VxeButtonPropTypes.Size
/**
* 按钮类型
*/
type?: VxeButtonPropTypes.Type
className?: VxeButtonPropTypes.ClassName
popupClassName?: VxeButtonPropTypes.PopupClassName
/**
* 用来标识这一项
*/
name?: VxeButtonPropTypes.Name
/**
* 按钮内容
*/
content?: VxeButtonPropTypes.Content
/**
* 固定显示下拉面板的方向
*/
placement?: VxeButtonPropTypes.Placement
/**
* 按钮状态
*/
status?: VxeButtonPropTypes.Status
/**
* 按钮的图标
*/
icon?: VxeButtonPropTypes.Icon
/**
* 圆角边框
*/
round?: VxeButtonPropTypes.Round
/**
* 圆角按钮
*/
circle?: VxeButtonPropTypes.Circle
/**
* 是否禁用
*/
disabled?: VxeButtonPropTypes.Disabled
/**
* 是否加载中
*/
loading?: VxeButtonPropTypes.Loading
/**
* 在下拉面板关闭时销毁内容
*/
destroyOnClose?: VxeButtonPropTypes.DestroyOnClose
/**
* 是否将弹框容器插入于 body 内
*/
transfer?: VxeButtonPropTypes.Transfer
}
export interface ButtonMethods {
dispatchEvent(type: ValueOf<VxeButtonEmits>, params: any, evnt: Event): void
/**
* 获取焦点
*/
focus(): Promise<any>
/**
* 失去焦点
*/
blur(): Promise<any>
}
export interface VxeButtonMethods extends ButtonMethods { }
export interface ButtonPrivateMethods { }
export interface VxeButtonPrivateMethods extends ButtonPrivateMethods { }
export type VxeButtonEmits = [
'click',
'dropdown-click'
]
export namespace VxeButtonDefines {
interface ButtonEventParams extends VxeEvent {
$button: VxeButtonConstructor
}
export interface ClickParams { }
export interface ClickEventParams extends ButtonEventParams, ClickParams { }
export interface DropdownClickParams { }
export interface DropdownClickEventParams extends ButtonEventParams, ClickParams { }
}
export type VxeButtonEventProps = {
onClick?: VxeButtonEvents.Click
onDropdownClick?: VxeButtonEvents.DropdownClick
}
export interface VxeButtonListeners {
click?: VxeButtonEvents.Click
dropdownClick?: VxeButtonEvents.DropdownClick
}
export namespace VxeButtonEvents {
export type Click = (params: VxeButtonDefines.ClickEventParams) => void
export type DropdownClick = (params: VxeButtonDefines.DropdownClickParams) => void
}
export interface VxeButtonSlots {
/**
* 自定义按钮内容
*/
default: (params: {
[key: string]: any
}) => any
/**
* 自定义自定义图标
*/
icon: (params: {
[key: string]: any
}) => any
/**
* 自定义下拉按钮
*/
dropdowns: (params: {
[key: string]: any
}) => any
}