sard-uniapp
Version:
sard-uniapp 是一套基于 Uniapp + Vue3 框架开发的兼容多端的 UI 组件库
39 lines (38 loc) • 1.03 kB
JavaScript
import { inject, ref, provide, watch, reactive } from 'vue';
import { defaultConfig } from '../config';
export const defaultPopupProps = () => ({
duration: 250,
effect: 'fade',
overlay: true,
overlayClosable: true,
lockScroll: true,
backPress: 'close',
...defaultConfig.popup,
});
export const popupContextSymbol = Symbol('popup-context');
export function usePopupVisibleHookProvide() {
const visibleState = ref();
provide(popupContextSymbol, reactive({
visibleState,
}));
function callVisibleHook(name) {
visibleState.value = name;
}
return callVisibleHook;
}
export function usePopupEnter(callback) {
const context = inject(popupContextSymbol, null);
if (context) {
watch(() => context.visibleState, () => {
if (context.visibleState === 'after-enter') {
callback?.();
}
});
}
return {
context,
};
}
export function useInPopup() {
return !!inject(popupContextSymbol, null);
}