b81a9a01c3170940796193d933420c2ef6817bdffd48b6ad67ba6c6251dd58e72272ecf6328306727498bc785e7643f78806d60adfb07133e9033087b51099 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. import type { InjectionKey, VNode } from 'vue';
  2. import type { Nullable } from 'element-plus/es/utils';
  3. import type { default as CascaderNode } from './node';
  4. export type { CascaderNode, Nullable };
  5. export type CascaderNodeValue = string | number | Record<string, any>;
  6. export type CascaderNodePathValue = CascaderNodeValue[];
  7. export type CascaderValue = CascaderNodeValue | CascaderNodePathValue | (CascaderNodeValue | CascaderNodePathValue)[];
  8. export type CascaderConfig = Required<CascaderProps>;
  9. export type ExpandTrigger = 'click' | 'hover';
  10. export type isDisabled = (data: CascaderOption, node: CascaderNode) => boolean;
  11. export type isLeaf = (data: CascaderOption, node: CascaderNode) => boolean;
  12. export type Resolve = (dataList?: CascaderOption[]) => void;
  13. export type LazyLoad = (node: CascaderNode, resolve: Resolve) => void;
  14. export interface RenderLabelProps {
  15. node: CascaderNode;
  16. data: CascaderOption;
  17. }
  18. export type RenderLabel = (props: RenderLabelProps) => VNode | VNode[];
  19. export interface CascaderOption extends Record<string, unknown> {
  20. label?: string;
  21. value?: CascaderNodeValue;
  22. children?: CascaderOption[];
  23. disabled?: boolean;
  24. leaf?: boolean;
  25. }
  26. export interface CascaderProps {
  27. expandTrigger?: ExpandTrigger;
  28. multiple?: boolean;
  29. checkStrictly?: boolean;
  30. emitPath?: boolean;
  31. lazy?: boolean;
  32. lazyLoad?: LazyLoad;
  33. value?: string;
  34. label?: string;
  35. children?: string;
  36. disabled?: string | isDisabled;
  37. leaf?: string | isLeaf;
  38. hoverThreshold?: number;
  39. checkOnClickNode?: boolean;
  40. checkOnClickLeaf?: boolean;
  41. showPrefix?: boolean;
  42. }
  43. export interface Tag {
  44. node?: CascaderNode;
  45. key: number;
  46. text: string;
  47. hitState?: boolean;
  48. closable: boolean;
  49. isCollapseTag: boolean;
  50. }
  51. export interface ElCascaderPanelContext {
  52. config: CascaderConfig;
  53. expandingNode: CascaderNode | undefined;
  54. checkedNodes: CascaderNode[];
  55. isHoverMenu: boolean;
  56. initialLoaded: boolean;
  57. renderLabelFn: RenderLabel;
  58. lazyLoad: (node?: CascaderNode, cb?: (dataList: CascaderOption[]) => void) => void;
  59. expandNode: (node: CascaderNode, silent?: boolean) => void;
  60. handleCheckChange: (node: CascaderNode, checked: boolean, emitClose?: boolean) => void;
  61. }
  62. export declare const CASCADER_PANEL_INJECTION_KEY: InjectionKey<ElCascaderPanelContext>;