mirror of
https://gitee.com/ant-design-vue/ant-design-vue.git
synced 2024-11-29 18:48:32 +08:00
45 lines
1.3 KiB
TypeScript
45 lines
1.3 KiB
TypeScript
|
import { provide, inject, reactive } from 'vue';
|
||
|
import type { InjectionKey } from 'vue';
|
||
|
import type { MessageInstance, ConfigOptions as MessageConfig } from '../message/interface';
|
||
|
import type { NotificationInstance, NotificationConfig } from '../notification/interface';
|
||
|
import type { ModalStaticFunctions } from '../modal/confirm';
|
||
|
|
||
|
export type AppConfig = {
|
||
|
message?: MessageConfig;
|
||
|
notification?: NotificationConfig;
|
||
|
};
|
||
|
|
||
|
export const AppConfigContextKey: InjectionKey<AppConfig> = Symbol('appConfigContext');
|
||
|
|
||
|
export const useProvideAppConfigContext = (appConfigContext: AppConfig) => {
|
||
|
return provide(AppConfigContextKey, appConfigContext);
|
||
|
};
|
||
|
|
||
|
export const useInjectAppConfigContext = () => {
|
||
|
return inject(AppConfigContextKey, {});
|
||
|
};
|
||
|
|
||
|
type ModalType = Omit<ModalStaticFunctions, 'warn'>;
|
||
|
|
||
|
export interface useAppProps {
|
||
|
message: MessageInstance;
|
||
|
notification: NotificationInstance;
|
||
|
modal: ModalType;
|
||
|
}
|
||
|
|
||
|
export const AppContextKey: InjectionKey<useAppProps> = Symbol('appContext');
|
||
|
|
||
|
export const useProvideAppContext = (appContext: useAppProps) => {
|
||
|
return provide(AppContextKey, appContext);
|
||
|
};
|
||
|
|
||
|
const defaultAppContext: useAppProps = reactive({
|
||
|
message: {},
|
||
|
notification: {},
|
||
|
modal: {},
|
||
|
} as useAppProps);
|
||
|
|
||
|
export const useInjectAppContext = () => {
|
||
|
return inject(AppContextKey, defaultAppContext);
|
||
|
};
|