naive-ui
Version:
A Vue 3 Component Library. Fairly Complete, Theme Customizable, Uses TypeScript, Fast
101 lines (100 loc) • 4.16 kB
TypeScript
import type { CheckStrategy, TreeNode } from 'treemate';
import type { CSSProperties, Ref, Slots, VNode, VNodeChild } from 'vue';
import type { MergedTheme } from '../../_mixins';
import type { NLocale } from '../../locales';
import type { CascaderTheme } from '../styles';
export type ValueAtom = string | number;
export type Value = ValueAtom | ValueAtom[];
export type Key = ValueAtom;
export interface CascaderOption {
label?: string;
value?: ValueAtom;
disabled?: boolean;
children?: CascaderOption[];
[key: string]: unknown;
}
export type ExpandTrigger = 'hover' | 'click';
export type TmNode = TreeNode<CascaderOption>;
export type Filter = (pattern: string, option: CascaderOption, path: CascaderOption[]) => boolean;
export type OnLoad = (option: CascaderOption) => Promise<void>;
export type OnUpdateValue = (value: string & number & string[] & number[] & Array<string | number> & (string | null) & (number | null) & (string[] | null) & (number[] | null) & (Array<string | number> | null), option: null & CascaderOption & CascaderOption[] & Array<CascaderOption | null>, path: null & CascaderOption[] & Array<CascaderOption[] | null>) => void;
export type OnUpdateValueImpl = (value: Value | null, option: CascaderOption | null | Array<CascaderOption | null>, path: Array<CascaderOption[] | null> | CascaderOption[] | null) => void;
export type MenuModel = TmNode[][];
export interface CascaderInjection {
slots: Slots;
mergedClsPrefixRef: Ref<string>;
mergedThemeRef: Ref<MergedTheme<CascaderTheme>>;
mergedValueRef: Ref<Value | null>;
checkedKeysRef: Ref<Key[]>;
indeterminateKeysRef: Ref<Key[]>;
hoverKeyPathRef: Ref<Key[]>;
mergedCheckStrategyRef: Ref<CheckStrategy>;
multipleRef: Ref<boolean>;
keyboardKeyRef: Ref<Key | null>;
hoverKeyRef: Ref<Key | null>;
remoteRef: Ref<boolean>;
loadingKeySetRef: Ref<Set<Key>>;
expandTriggerRef: Ref<ExpandTrigger>;
isMountedRef: Ref<boolean>;
cascadeRef: Ref<boolean>;
onLoadRef: Ref<((value: CascaderOption) => Promise<void>) | undefined>;
localeRef: Ref<NLocale['Cascader']>;
virtualScrollRef: Ref<boolean>;
optionHeightRef: Ref<string>;
labelFieldRef: Ref<string>;
showCheckboxRef: Ref<boolean>;
getColumnStyleRef: Ref<((detail: {
level: number;
}) => string | CSSProperties) | undefined>;
renderPrefixRef: Ref<((info: {
option: CascaderOption;
checked: boolean;
node: VNode | null;
}) => VNodeChild) | undefined>;
renderSuffixRef: Ref<((info: {
option: CascaderOption;
checked: boolean;
node: VNode | null;
}) => VNodeChild) | undefined>;
syncCascaderMenuPosition: () => void;
syncSelectMenuPosition: () => void;
updateKeyboardKey: (value: Key | null) => void;
updateHoverKey: (value: Key | null) => void;
addLoadingKey: (value: Key) => void;
deleteLoadingKey: (value: Key) => void;
doCheck: (value: Key) => void;
doUncheck: (value: Key) => void;
closeMenu: (returnFocus?: boolean) => void;
handleSelectMenuClickOutside: (e: MouseEvent) => void;
handleCascaderMenuClickOutside: (e: MouseEvent) => void;
renderLabelRef: Ref<((option: CascaderOption, checked: boolean) => VNodeChild) | undefined>;
clearPattern: () => void;
}
export interface CascaderSubmenuInstance {
scroll: (index: number, elSize: number) => void;
}
export interface CascaderMenuExposedMethods {
scroll: (depth: number, index: number, elSize: number) => void;
showErrorMessage: (label: string) => void;
}
export type CascaderMenuInstance = {
$el: HTMLElement;
} & CascaderMenuExposedMethods;
export interface SelectMenuInstance {
prev: () => void;
next: () => void;
enter: () => boolean;
}
export declare const cascaderInjectionKey: import("vue").InjectionKey<CascaderInjection>;
export interface CascaderInst {
focus: () => void;
blur: () => void;
getCheckedData: () => {
keys: Key[];
options: Array<CascaderOption | null>;
};
getIndeterminateData: () => {
keys: Key[];
options: Array<CascaderOption | null>;
};
}