You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
1.9 KiB
66 lines
1.9 KiB
/**
|
|
* BaseSelect provide some parsed data into context.
|
|
* You can use this hooks to get them.
|
|
*/
|
|
|
|
import type { InjectionKey } from 'vue';
|
|
import { inject, provide } from 'vue';
|
|
import type { TreeProps } from '../tree';
|
|
import type { DataEntity, IconType } from '../vc-tree/interface';
|
|
import type { InternalDataEntity, Key, LegacyDataNode, RawValueType } from './interface';
|
|
|
|
export interface LegacyContextProps {
|
|
checkable: boolean;
|
|
checkedKeys: Key[];
|
|
customCheckable: () => any;
|
|
halfCheckedKeys: Key[];
|
|
treeExpandedKeys: Key[];
|
|
treeDefaultExpandedKeys: Key[];
|
|
onTreeExpand: (keys: Key[]) => void;
|
|
treeDefaultExpandAll: boolean;
|
|
treeIcon: IconType;
|
|
showTreeIcon: boolean;
|
|
switcherIcon: IconType;
|
|
treeLine: TreeProps['showLine'];
|
|
treeNodeFilterProp: string;
|
|
treeLoadedKeys: Key[];
|
|
treeMotion: any;
|
|
loadData: (treeNode: LegacyDataNode) => Promise<unknown>;
|
|
onTreeLoad: (loadedKeys: Key[]) => void;
|
|
|
|
keyEntities: Record<RawValueType, DataEntity<any>>;
|
|
|
|
customSlots: {
|
|
title?: (data: InternalDataEntity) => any;
|
|
treeCheckable: () => any;
|
|
[key: string]: ((...args: any[]) => any) | undefined;
|
|
};
|
|
}
|
|
|
|
const TreeSelectLegacyContextPropsKey: InjectionKey<LegacyContextProps> = Symbol(
|
|
'TreeSelectLegacyContextPropsKey',
|
|
);
|
|
|
|
// export const LegacySelectContext = defineComponent({
|
|
// compatConfig: { MODE: 3 },
|
|
// name: 'SelectContext',
|
|
// props: {
|
|
// value: { type: Object as PropType<LegacyContextProps> },
|
|
// },
|
|
// setup(props, { slots }) {
|
|
// provide(
|
|
// TreeSelectLegacyContextPropsKey,
|
|
// computed(() => props.value),
|
|
// );
|
|
// return () => slots.default?.();
|
|
// },
|
|
// });
|
|
|
|
export function useProvideLegacySelectContext(props: LegacyContextProps) {
|
|
return provide(TreeSelectLegacyContextPropsKey, props);
|
|
}
|
|
|
|
export default function useInjectLegacySelectContext() {
|
|
return inject(TreeSelectLegacyContextPropsKey, {} as LegacyContextProps);
|
|
}
|