🌈 An enterprise-class UI components based on Ant Design and Vue. 🐜
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.
 
 
 
 

38 lines
1.1 KiB

import type { InjectionKey, Ref } from 'vue';
import { inject, provide } from 'vue';
import type { OnSelect, PanelMode } from './interface';
export type ContextOperationRefProps = {
onKeydown?: (e: KeyboardEvent) => boolean;
onClose?: () => void;
};
export type PanelContextProps = {
operationRef?: Ref<ContextOperationRefProps | null>;
/** Only work with time panel */
hideHeader?: Ref<boolean>;
panelRef?: Ref<HTMLDivElement>;
hidePrevBtn?: Ref<boolean>;
hideNextBtn?: Ref<boolean>;
onDateMouseenter?: (date: any) => void;
onDateMouseleave?: (date: any) => void;
onSelect?: OnSelect<any>;
hideRanges?: Ref<boolean>;
open?: Ref<boolean>;
mode?: Ref<PanelMode>;
/** Only used for TimePicker and this is a deprecated prop */
defaultOpenValue?: Ref<any>;
};
const PanelContextKey: InjectionKey<PanelContextProps> = Symbol('PanelContextProps');
export const useProvidePanel = (props: PanelContextProps) => {
provide(PanelContextKey, props);
};
export const useInjectPanel = () => {
return inject(PanelContextKey, {});
};
export default PanelContextKey;