UNPKG

vxe-pc-ui

Version:
337 lines (309 loc) 11.7 kB
import { RenderFunction, SetupContext, Ref, ComputedRef } from 'vue' import { DefineVxeComponentApp, DefineVxeComponentOptions, DefineVxeComponentInstance, VxeComponentBaseOptions, VxeComponentEventParams, VxeComponentSizeType, ValueOf } from '@vxe-ui/core' /* eslint-disable no-use-before-define,@typescript-eslint/ban-types */ export declare const VxeTree: DefineVxeComponentApp<VxeTreeProps, VxeTreeEventProps, VxeTreeSlots> export type VxeTreeComponent = DefineVxeComponentOptions<VxeTreeProps, VxeTreeEventProps> export type VxeTreeInstance<D = any> = DefineVxeComponentInstance<VxeTreeProps<D>, VxeTreeConstructor<D>> export interface VxeTreeConstructor<D = any> extends VxeComponentBaseOptions, VxeTreeMethods<D> { props: VxeTreeProps context: SetupContext<VxeTreeEmits> internalData: TreeInternalData reactData: TreeReactData getRefMaps(): TreePrivateRef getComputeMaps(): TreePrivateComputed renderVN: RenderFunction } export interface TreePrivateRef { refElem: Ref<HTMLDivElement | undefined> } export interface VxeTreePrivateRef extends TreePrivateRef { } export namespace VxeTreePropTypes { export type Data<D = any> = D[] export type Loading = boolean export interface LoadingConfig { /** * 显示图标 */ icon?: string /** * 显示文字 */ text?: string } export type Accordion = boolean export type Height = string | number export type MinHeight = string | number export type ParentField = string export type ValueField = string export type KeyField = string export type TitleField = string export type ChildrenField = string export type HasChildField = string export type MapChildrenField = string export type Transform = boolean export type Trigger = '' | 'default' | 'node' /** * 已废弃,请使用 nodeConfig.isCurrent * @deprecated */ export type IsCurrent = boolean /** * 已废弃,请使用 nodeConfig.isHover * @deprecated */ export type IsHover = boolean export type ShowLine = boolean export type Indent = number export type ExpandAll = boolean export type ShowRadio = boolean export type CheckNodeKey = string | number | null export interface RadioConfig<D = any> { strict?: boolean visibleMethod?: (params: { node: D }) => boolean checkMethod?: (params: { node: D }) => boolean highlight?: boolean showIcon?: boolean trigger?: '' | 'default' | 'node' } export type CheckNodeKeys = (string | number)[] export type ShowCheckbox = boolean export interface CheckboxConfig<D = any> { showHeader?: boolean checkStrictly?: boolean highlight?: boolean visibleMethod?: (params: { node: D }) => boolean checkMethod?: (params: { node: D }) => boolean showIcon?: boolean trigger?: '' | 'default' | 'node' } export interface NodeConfig<D = any> { isHover?: boolean isCurrent?: boolean currentMethod?: (params: { node: D }) => boolean trigger?: '' | 'default' | 'all' | 'parent' | 'child' } export type Lazy = boolean export type ToggleMethod<D = any> = (params: { $tree: VxeTreeConstructor expanded: boolean node: D }) => boolean export type LoadMethod<D = any> = (params: { $tree: VxeTreeConstructor node: D }) => Promise<any[]> export type ShowIcon = boolean export type IconOpen = string export type IconClose = string export type IconLoaded = string export type Size = VxeComponentSizeType } export interface VxeTreeProps<D = any> { data?: VxeTreePropTypes.Data<D> height?: VxeTreePropTypes.Height minHeight?: VxeTreePropTypes.MinHeight loading?: VxeTreePropTypes.Loading loadingConfig?: VxeTreePropTypes.LoadingConfig accordion?: VxeTreePropTypes.Accordion parentField?: VxeTreePropTypes.ParentField valueField?: VxeTreePropTypes.ValueField keyField?: VxeTreePropTypes.KeyField titleField?: VxeTreePropTypes.TitleField childrenField?: VxeTreePropTypes.ChildrenField hasChildField?: VxeTreePropTypes.HasChildField mapChildrenField?: VxeTreePropTypes.MapChildrenField expandAll?: VxeTreePropTypes.ExpandAll transform?: VxeTreePropTypes.Transform trigger?: VxeTreePropTypes.Trigger /** * 已废弃,请使用 nodeConfig.isCurrent * @deprecated */ isCurrent?: VxeTreePropTypes.IsCurrent /** * 已废弃,请使用 nodeConfig.isHover * @deprecated */ isHover?: VxeTreePropTypes.IsHover showLine?: VxeTreePropTypes.ShowLine indent?: VxeTreePropTypes.Indent showRadio?: VxeTreePropTypes.ShowRadio checkNodeKey?: VxeTreePropTypes.CheckNodeKey radioConfig?: VxeTreePropTypes.RadioConfig<D> showCheckbox?: VxeTreePropTypes.ShowCheckbox checkNodeKeys?: VxeTreePropTypes.CheckNodeKeys checkboxConfig?: VxeTreePropTypes.CheckboxConfig<D> nodeConfig?: VxeTreePropTypes.NodeConfig<D> lazy?: VxeTreePropTypes.Lazy toggleMethod?: VxeTreePropTypes.ToggleMethod<D> /** * 该方法用于异步加载子节点 */ loadMethod?: VxeTreePropTypes.LoadMethod<D> showIcon?: VxeTreePropTypes.ShowIcon iconOpen?: VxeTreePropTypes.IconOpen iconClose?: VxeTreePropTypes.IconClose iconLoaded?: VxeTreePropTypes.IconLoaded size?: VxeTreePropTypes.Size } export interface TreePrivateComputed<D = any> { computeRadioOpts: ComputedRef<VxeTreePropTypes.RadioConfig<D>> computeCheckboxOpts: ComputedRef<VxeTreePropTypes.CheckboxConfig<D>> computeNodeOpts: ComputedRef<VxeTreePropTypes.NodeConfig<D>> } export interface VxeTreePrivateComputed extends TreePrivateComputed { } export interface TreeReactData { currentNode: any nodeMaps: Record<string, VxeTreeDefines.NodeCacheItem> selectRadioKey: VxeTreePropTypes.CheckNodeKey | null treeList: any[] treeExpandedMaps: Record<string, boolean> treeExpandLazyLoadedMaps: Record<string, boolean> selectCheckboxMaps: Record<string, boolean> indeterminateCheckboxMaps: Record<string, boolean> } export interface TreeInternalData { initialized?: boolean } export interface TreeMethods<D = any> { dispatchEvent(type: ValueOf<VxeTreeEmits>, params: Record<string, any>, evnt: Event | null): void getCurrentNodeId(): string | number | null getCurrentNode(): any | null clearCurrentNode(): Promise<any> setCurrentNodeId(nodeKey: string | number): Promise<any> setCurrentNode(node: any): Promise<any> getRadioNodeId(): string | number | null getRadioNode(): any | null clearRadioNode(): Promise<any> setRadioNodeId(nodeKey: string | number): Promise<any> setRadioNode(node: any): Promise<any> getCheckboxNodeIds(): (string | number)[] getCheckboxNodes(): D[] clearCheckboxNode(): Promise<any> setAllCheckboxNode(checked: boolean): Promise<any> setCheckboxNode(nodeList: any | any[], checked: boolean): Promise<any> setCheckboxByNodeId(nodeKeys: any | any[], checked: boolean): Promise<any> /** * 已废弃,请使用 clearAllExpandNode * @deprecated */ clearExpandNode(): Promise<any> clearAllExpandNode(): Promise<any> setExpandByNodeId(nodeKeys: any | any[], expanded: boolean): Promise<any> setExpandNode(nodeList: any | any[], expanded: boolean): Promise<any> toggleExpandByNodeId(nodeKeys: any | any[]): Promise<any> toggleExpandNode(nodeList: any | any[]): Promise<any> setAllExpandNode(expanded: boolean): Promise<any> getExpandNodeIds(): (string | number)[] getExpandNodes(): D[] reloadExpandNode(node: any): Promise<any> clearExpandLoaded(node: any): Promise<any> loadChildrenNode(node: any, childRecords: any[]): Promise<any> isExpandByNode(node: any): boolean isCheckedByRadioNodeId(nodeKey: any): boolean isCheckedByRadioNode(node: any): boolean isCheckedByCheckboxNodeId(nodeKey: any): boolean isIndeterminateByCheckboxNode(node: any): boolean isCheckedByCheckboxNode(node: any): boolean getCheckboxIndeterminateNodes(): D[] } export interface VxeTreeMethods<D = any> extends TreeMethods<D> { } export interface TreePrivateMethods { } export interface VxeTreePrivateMethods extends TreePrivateMethods { } export type VxeTreeEmits = [ 'update:modelValue', 'update:checkNodeKey', 'update:checkNodeKeys', 'node-click', 'node-dblclick', 'current-change', 'radio-change', 'checkbox-change', 'load-success', 'load-error' ] export namespace VxeTreeDefines { export interface TreeEventParams<D = any> extends VxeComponentEventParams { $tree: VxeTreeConstructor<D> } export interface NodeCacheItem { item: any itemIndex: number items: any[] nodes: any[] parent: any level: number lineCount: number treeLoaded: boolean } export interface NodeClickParams<D = any> { node: D } export interface NodeClickEventParams<D = any> extends TreeEventParams<D>, NodeClickParams<D> { } export interface NodeDblclickEventParams<D = any> extends NodeClickEventParams<D> { } export interface CurrentChangeEventParams<D = any> extends TreeEventParams<D> { node: D checked: boolean } export interface RadioChangeEventParams<D = any> extends TreeEventParams<D> { node: D checked: boolean value: VxeTreePropTypes.CheckNodeKey } export interface CheckboxChangeEventParams<D = any> extends TreeEventParams<D> { node: D checked: boolean value: VxeTreePropTypes.CheckNodeKeys } export interface LoadSuccessEventParams<D = any> extends TreeEventParams<D> { node: D } export interface LoadErrorEventParams<D = any> extends TreeEventParams<D> { node: D } } export type VxeTreeEventProps = { onNodeClick?: VxeTreeEvents.NodeClick onNodeDblclick?: VxeTreeEvents.NodeDblclick onCurrentChange?: VxeTreeEvents.CurrentChange onRadioChange?: VxeTreeEvents.RadioChange onCheckboxChange?: VxeTreeEvents.CheckboxChange onLoadSuccess?: VxeTreeEvents.LoadSuccess onLoadError?: VxeTreeEvents.LoadError } export interface VxeTreeListeners<D = any> { nodeClick?: VxeTreeEvents.NodeClick<D> nodeDblclick?: VxeTreeEvents.NodeDblclick<D> currentChange?: VxeTreeEvents.CurrentChange<D> radioChange?: VxeTreeEvents.RadioChange<D> checkboxChange?: VxeTreeEvents.CheckboxChange<D> loadSuccess?: VxeTreeEvents.LoadSuccess<D> loadError?: VxeTreeEvents.LoadError<D> } export namespace VxeTreeEvents { export type NodeClick<D = any> = (params: VxeTreeDefines.NodeClickEventParams<D>) => void export type NodeDblclick<D = any> = (params: VxeTreeDefines.NodeDblclickEventParams<D>) => void export type CurrentChange<D = any> = (params: VxeTreeDefines.CurrentChangeEventParams<D>) => void export type RadioChange<D = any> = (params: VxeTreeDefines.RadioChangeEventParams<D>) => void export type CheckboxChange<D = any> = (params: VxeTreeDefines.CheckboxChangeEventParams<D>) => void export type LoadSuccess<D = any> = (params: VxeTreeDefines.LoadSuccessEventParams<D>) => void export type LoadError<D = any> = (params: VxeTreeDefines.LoadErrorEventParams<D>) => void } export namespace VxeTreeSlotTypes { export interface DefaultSlotParams { node: any isExpand: boolean } export interface IconSlotParams { node: any isExpand: boolean } } export interface VxeTreeSlots { icon?: (params: VxeTreeSlotTypes.IconSlotParams) => any title?: (params: VxeTreeSlotTypes.DefaultSlotParams) => any extra?: (params: VxeTreeSlotTypes.DefaultSlotParams) => any loading?: (params: {}) => any } export const Tree: typeof VxeTree export default VxeTree