39 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Vue
		
	
	
			
		
		
	
	
			39 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Vue
		
	
	
| 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;
 |