@opensig/opendesign
Version:
45 lines (44 loc) • 2.21 kB
TypeScript
import { InjectionKey, Ref } from 'vue';
import { SelectOptionT } from '../select';
import { CascaderV2NodePathT, CascaderV2LazyNodeT } from './types';
/**
* 级联选择器(CascaderV2)父子组件通信注入键
*
* 由 `OCascaderV2` / `OCascaderV2Panel` 在 setup 中 `provide`,
* 内部子组件(如 OCascaderV2Label、各级菜单项)通过 `inject(cascaderV2InjectKey)` 读取选中态、
* 触发选中或控制浮层。基于此 InjectionKey 可在外部对 Panel 进行二次封装。
*/
export declare const cascaderV2InjectKey: InjectionKey<{
/** 当前选中值数组;单选时仅含一项,多选时含全部选中节点 */
selectValue: Ref<Array<string | number>>;
/** 是否为多选模式 */
multiple: boolean;
/** 是否允许选中任意层级节点(父子节点勾选互不关联) */
allowSelectAnyNode: boolean;
/** 筛选输入框的当前值 */
filterValue: Ref<string>;
/** 是否处于选中处理流程中(用于禁用重复触发) */
isSelecting: Ref<boolean>;
/** 整体加载状态 */
loading: Ref<boolean>;
/** 单个节点的选中处理,传入选项与节点路径 */
doSelect: (option: SelectOptionT, path?: CascaderV2NodePathT) => Promise<void>;
/** 批量选中处理,`toAdd` 为新增选项列表,`toRemove` 为要移除的 value 列表 */
doSelectBatch: (toAdd: Array<{
value: string | number;
label: string;
path: CascaderV2NodePathT;
}>, toRemove: Array<string | number>) => void;
/** 子菜单项挂载时注册到父级,便于按 value 查找选项 */
registerOption: (option: SelectOptionT) => void;
/** 注册 value → 路径的映射,供路径展示与回显使用 */
registerPath: (value: string | number, path: CascaderV2NodePathT) => void;
/** 关闭下拉浮层 */
hidePanel: () => void;
/** 打开下拉浮层 */
showPanel: () => void;
/** 设置根节点的加载态(懒加载根列表时使用) */
setRootLoading: (v: boolean) => void;
/** 懒加载失败时的统一回调,对外触发 `lazyload-error` 事件 */
onLazyloadError: (node: CascaderV2LazyNodeT) => void;
}>;