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;
 |