- Vue 3 + TypeScript + Element Plus 前端界面 - Pinia 状态管理 - Vue Router 4 路由管理 - Axios HTTP 客户端 - MSW (Mock Service Worker) 开发环境模拟 - 账户管理界面 (列表、详情、三科目余额展示) - 交易管理界面 (列表、详情) - 对账管理界面 (三账校验) - 完善的 API 客户端封装 - Docker 容器化配置 - Nginx 配置用于生产环境
41 lines
1.1 KiB
JavaScript
41 lines
1.1 KiB
JavaScript
import { computed, onBeforeMount } from 'vue';
|
|
import { useGetDerivedNamespace } from '../use-namespace/index.mjs';
|
|
import { useIdInjection } from '../use-id/index.mjs';
|
|
import { isClient } from '@vueuse/core';
|
|
|
|
const usePopperContainerId = () => {
|
|
const namespace = useGetDerivedNamespace();
|
|
const idInjection = useIdInjection();
|
|
const id = computed(() => {
|
|
return `${namespace.value}-popper-container-${idInjection.prefix}`;
|
|
});
|
|
const selector = computed(() => `#${id.value}`);
|
|
return {
|
|
id,
|
|
selector
|
|
};
|
|
};
|
|
const createContainer = (id) => {
|
|
const container = document.createElement("div");
|
|
container.id = id;
|
|
document.body.appendChild(container);
|
|
return container;
|
|
};
|
|
const usePopperContainer = () => {
|
|
const { id, selector } = usePopperContainerId();
|
|
onBeforeMount(() => {
|
|
if (!isClient)
|
|
return;
|
|
if (process.env.NODE_ENV === "test" || !document.body.querySelector(selector.value)) {
|
|
createContainer(id.value);
|
|
}
|
|
});
|
|
return {
|
|
id,
|
|
selector
|
|
};
|
|
};
|
|
|
|
export { usePopperContainer, usePopperContainerId };
|
|
//# sourceMappingURL=index.mjs.map
|