修复维护通知自适应布局与导航重复焦点
This commit is contained in:
1 parent
a6b2bfd4dc
commit
b4915d0ae5
12 files changed
+438
-49
No files matched your search
+53
-18
@@ -137,6 +137,28 @@ var Ce = {
|
||||
O = useRoute(),
|
||||
k = useTheme_t(),
|
||||
A = useSiteConfig_t();
|
||||
// 固定层共用实际维护条高度,避免换行、字体加载或窗口变化后仍按单行常量占位。
|
||||
const maintenanceBanner = ref(null);
|
||||
const bannerHeight = ref(0);
|
||||
let bannerObserver;
|
||||
watch(
|
||||
maintenanceBanner,
|
||||
(element) => {
|
||||
bannerObserver?.disconnect();
|
||||
const measure = () => {
|
||||
bannerHeight.value = element
|
||||
? Math.ceil(element.getBoundingClientRect().height)
|
||||
: 0;
|
||||
};
|
||||
measure();
|
||||
if (element) {
|
||||
bannerObserver = new ResizeObserver(measure);
|
||||
bannerObserver.observe(element);
|
||||
}
|
||||
},
|
||||
{ flush: "post" },
|
||||
);
|
||||
onBeforeUnmount(() => bannerObserver?.disconnect());
|
||||
onMounted(() => {
|
||||
(A.load().catch(() => {}),
|
||||
w.isLoggedIn && !w.overview && w.fetchOverview().catch(() => {}),
|
||||
@@ -548,6 +570,15 @@ var Ce = {
|
||||
return (
|
||||
useHead(() => ({
|
||||
title: `${$.value.at(-1) || `会员中心`} - ${A.siteName.value}`,
|
||||
// 通知 Teleport 在 body,变量发布到 html;Unhead 随布局卸载逐属性清理,不影响主题样式。
|
||||
htmlAttrs: {
|
||||
style: {
|
||||
"--console-header-height": "56px",
|
||||
"--console-banner-height": `${A.maintenance.value ? bannerHeight.value : 0}px`,
|
||||
"--console-top-offset":
|
||||
"calc(var(--console-header-height) + var(--console-banner-height))",
|
||||
},
|
||||
},
|
||||
})),
|
||||
// 导航、面包屑和账户/消息浮层来自同一布局状态;移动侧栏需保留焦点约束与滚动锁清理。
|
||||
(e, r) => {
|
||||
@@ -591,25 +622,29 @@ var Ce = {
|
||||
: createCommentVNode(``, !0),
|
||||
unref(A).maintenance.value
|
||||
? (openBlock(),
|
||||
createElementBlock(`div`, Ce, [
|
||||
(r[6] ||= createElementVNode(
|
||||
`i`,
|
||||
{
|
||||
class: `pi pi-exclamation-triangle`,
|
||||
},
|
||||
null,
|
||||
-1,
|
||||
)),
|
||||
createElementVNode(
|
||||
`span`,
|
||||
null,
|
||||
toDisplayString(
|
||||
unref(A).config.value?.maintenance_mode_message ||
|
||||
`站点维护中,部分功能可能不可用。`,
|
||||
createElementBlock(
|
||||
`div`,
|
||||
{ ...Ce, ref: maintenanceBanner },
|
||||
[
|
||||
(r[6] ||= createElementVNode(
|
||||
`i`,
|
||||
{
|
||||
class: `pi pi-exclamation-triangle`,
|
||||
},
|
||||
null,
|
||||
-1,
|
||||
)),
|
||||
createElementVNode(
|
||||
`span`,
|
||||
null,
|
||||
toDisplayString(
|
||||
unref(A).config.value?.maintenance_mode_message ||
|
||||
`站点维护中,部分功能可能不可用。`,
|
||||
),
|
||||
1,
|
||||
),
|
||||
1,
|
||||
),
|
||||
]))
|
||||
],
|
||||
))
|
||||
: createCommentVNode(``, !0),
|
||||
createElementVNode(
|
||||
`aside`,
|
||||
|
||||
Reference in new issue
Block a user