From ca0937f156660a4e24b88588c2dd7e0f3e45bb22 Mon Sep 17 00:00:00 2001
From: cctvcat <14413208+cctvcat@user.noreply.gitee.com>
Date: Sun, 23 Mar 2025 17:02:13 +0800
Subject: [PATCH 1/9] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E8=8A=82=E7=82=B9?=
=?UTF-8?q?=E5=86=85=E5=AE=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../src/components/DocBreadCrumb.vue | 32 ++----
docs/.vitepress/src/components/DocFooter.vue | 2 +-
docs/.vitepress/src/layouts/LayoutDoc.vue | 91 ++++------------
docs/.vitepress/src/stores/menu.ts | 89 +---------------
docs/.vitepress/src/stores/node.ts | 89 ++++++++++++++++
docs/.vitepress/src/utils/tree.ts | 100 ++++--------------
.../src/views/docsNode/TheDocsNode.vue | 25 +----
.../src/views/search/TheSearchResult.vue | 3 +-
scripts/build.js | 12 ++-
9 files changed, 161 insertions(+), 282 deletions(-)
create mode 100644 docs/.vitepress/src/stores/node.ts
diff --git a/docs/.vitepress/src/components/DocBreadCrumb.vue b/docs/.vitepress/src/components/DocBreadCrumb.vue
index cb82e61..1644368 100644
--- a/docs/.vitepress/src/components/DocBreadCrumb.vue
+++ b/docs/.vitepress/src/components/DocBreadCrumb.vue
@@ -6,7 +6,7 @@ import { useRoute, useRouter } from 'vitepress';
import IconChevronRight from '~icons/app/icon-chevron-right.svg';
-import { useMenuStore } from '@/stores/menu';
+import { useNodeStore } from '@/stores/node';
import { useSearchingStore } from '@/stores/common';
import { useLocale } from '@/composables/useLocale';
@@ -23,20 +23,7 @@ const props = defineProps({
});
// -------------------- 菜单 --------------------
-const menuStore = useMenuStore();
-
-// -------------------- 文档模块节点标题 --------------------
-const moduleNode = computed(() => {
- const pathHref = route.path.replace('.html', '');
- const nodeMenu = menuStore.allNodes.find((item) => item?.href && pathHref.includes(item.href.replace('index.html', '')));
-
- if (pathHref.includes('/Tools/')) {
- const childMenu = nodeMenu?.children?.find((item) => item?.href && pathHref.includes(item.href.replace('index.html', '')));
- return childMenu;
- }
-
- return nodeMenu;
-});
+const nodeStore = useNodeStore();
// 是否是贡献指南手册,直接显示 文档中心 > 贡献指南的具体章节
const isContribute = computed(() => {
@@ -47,16 +34,15 @@ const isContribute = computed(() => {
// -------------------- 当前节点标题 --------------------
const currentTitle = computed(() => {
if (props.nodeVisible) {
- return moduleNode.value?.label;
+ return nodeStore.moduleNode?.label;
}
- return menuStore.currentNode?.href?.includes('#') ? menuStore.currentNode?.parent?.label : menuStore.currentNode?.label;
+ return nodeStore.currentNode?.href?.includes('#') ? nodeStore.currentNode?.parent?.label : nodeStore.currentNode?.label;
});
-
// -------------------- 跳转 --------------------
const router = useRouter();
const goToPage = (href: string) => {
- menuStore.menuValue = '';
+ nodeStore.menuValue = '';
router.go(href);
useSearchingStore().isSearching = false;
};
@@ -71,8 +57,12 @@ const goToPage = (href: string) => {
{{ t('home.docCenter') }}
- {{ moduleNode?.label }}
- {{ moduleNode?.label }}
+ {{
+ nodeStore.moduleNode?.label
+ }}
+ {{
+ nodeStore.moduleNode?.label
+ }}
{{ searchStore.isSearching ? t('docs.searchResult') : currentTitle }}
diff --git a/docs/.vitepress/src/components/DocFooter.vue b/docs/.vitepress/src/components/DocFooter.vue
index 56a0157..b52b2df 100644
--- a/docs/.vitepress/src/components/DocFooter.vue
+++ b/docs/.vitepress/src/components/DocFooter.vue
@@ -35,7 +35,7 @@ const pathList = computed(() => {
});
const config = computed(() => {
- const filePath = route.path;
+ const filePath = route.path.endsWith('/') ? `${route.path}index.html` : route.path;
const idx = pathList.value.findIndex((v) => v.path === filePath);
const prev = pathList.value[idx - 1];
const next = pathList.value[idx + 1];
diff --git a/docs/.vitepress/src/layouts/LayoutDoc.vue b/docs/.vitepress/src/layouts/LayoutDoc.vue
index 059f6e7..27c8a43 100644
--- a/docs/.vitepress/src/layouts/LayoutDoc.vue
+++ b/docs/.vitepress/src/layouts/LayoutDoc.vue
@@ -41,9 +41,9 @@ import useSelect from '@/composables/useSelect';
import { useLocale } from '@/composables/useLocale';
import { useSearchingStore } from '@/stores/common';
-import { useMenuStore } from '@/stores/menu';
+import { useNodeStore } from '@/stores/node';
-import type { DocMenuNodeT } from '@/utils/tree';
+import { getNodeHrefSafely, type DocMenuNodeT } from '@/utils/tree';
import { getOffsetTop, getScrollRemainingBottom } from '@/utils/element';
import { versions } from '@/config/version';
import { scrollIntoView } from '@/utils/scroll-to';
@@ -71,29 +71,11 @@ const isContribute = computed(() => {
// -------------------- 菜单 --------------------
let isScrolling = false;
-const menuStore = useMenuStore();
-
-// 获取最近可点击href
-const getSafeHref = (item: DocMenuNodeT): string => {
- // 存在对应的 md 文件
- if (item.href && item.href?.includes('.html')) {
- return item.href;
- }
-
- // 查找子节点
- for (const child of item.children) {
- const href = getSafeHref(child);
- if (href) {
- return href;
- }
- }
-
- return '';
-};
+const nodeStore = useNodeStore();
// 点击菜单跳转文档
const onClickMenuItem = (item: DocMenuNodeT, newOpener?: boolean) => {
- const href = getSafeHref(item);
+ const href = getNodeHrefSafely(item);
if (href) {
if (newOpener) {
window.open(href, '_blank', 'noopener noreferrer');
@@ -174,11 +156,11 @@ const onScrollAnchor = () => {
return;
}
- if (!menuStore.currentNode || (!menuStore.currentNode.href?.includes('#') && menuStore.currentNode.children.every((item) => !item.href?.includes('#')))) {
+ if (!nodeStore.currentNode || (!nodeStore.currentNode.href?.includes('#') && nodeStore.currentNode.children.every((item) => !item.href?.includes('#')))) {
return;
}
- const parentNode = menuStore.currentNode.href?.includes('#') ? menuStore.currentNode.parent : menuStore.currentNode;
+ const parentNode = nodeStore.currentNode.href?.includes('#') ? nodeStore.currentNode.parent : nodeStore.currentNode;
if (!parentNode) {
return;
}
@@ -235,22 +217,22 @@ const onScrollAnchor = () => {
if (distances.length) {
if (scrollRemainingBottom < 10) {
- menuStore.menuValue = distances[distances.length - 1].item.id;
+ nodeStore.menuValue = distances[distances.length - 1].item.id;
} else if (scrollRemainingBottom < 110) {
const overNodes = distances.filter((item) => item.top >= 110);
if (overNodes.length) {
const average = Math.round(110 / overNodes.length);
const node = overNodes.find((_, i) => (i + 1) * average < 110 - scrollRemainingBottom);
if (node) {
- menuStore.menuValue = node.item.id;
+ nodeStore.menuValue = node.item.id;
}
}
} else {
const max = distances.reduce((prev, cur) => (prev.top > cur.top ? prev : cur));
- menuStore.menuValue = max.item.id;
+ nodeStore.menuValue = max.item.id;
}
} else {
- menuStore.menuValue = parentNode.id;
+ nodeStore.menuValue = parentNode.id;
}
};
@@ -312,42 +294,15 @@ onUnmounted(() => {
nodeScrollContainer.value?.removeEventListener('scroll', onScrollNodeAnchor);
});
-// -------------------- 文档模块节点 --------------------
-const moduleNode = computed(() => {
- const pathHref = route.path.replace('.html', '');
- const nodeMenu = menuStore.allNodes.find((item) => item?.href && pathHref.includes(item.href.replace('index.html', '')));
-
- if (pathHref.includes('/Tools/')) {
- const childMenu = nodeMenu?.children?.find((item) => item?.href && pathHref.includes(item.href.replace('index.html', '')));
- return childMenu;
- }
-
- return nodeMenu;
-});
-
// -------------------- 文档模块menu --------------------
const docsMenu = computed(() => {
if (props.nodeVisible) {
- /* const flag = menuStore.allNodes.some((item) => item?.href && item.href === pathHref);
- // 最外层的子节点可以匹配到url
- if (flag) {
- const moduleMenu = menuStore.allNodes.find((item) => item?.href && item.href === pathHref);
- return moduleMenu?.children || [];
- } else {
- // 最外层的子节点可以匹配不到url,去匹配第二层的字节的url
- const childMenu = menuStore.allNodes.find((item) => item?.href && pathHref.includes(item?.href));
- const nodeMenu = childMenu?.children?.find((item) => item?.href && item.href === pathHref);
-
- return nodeMenu?.children || [];
- } */
- const href = route.path.endsWith('/') ? `${route.path}index.html` : route.path;
- const node = menuStore.rootTree.getNodeByHref(menuStore.rootTree.root, href);
- return node?.children || [];
- } else if (menuStore.bookNodes.length > 0) {
- return menuStore.bookNodes;
+ return nodeStore.moduleNode?.children || [];
+ } else if (nodeStore.manualNode) {
+ return [nodeStore.manualNode];
}
- return menuStore.currentNode ? [menuStore.currentNode] : [];
+ return nodeStore.currentNode ? [nodeStore.currentNode] : [];
});
// -------------------- 搜索 --------------------
@@ -514,7 +469,7 @@ const closeZoomBtn = () => {
-
-
-
-
- {{ t('feedback.bugCatching') }}
-
-
-
-
+
@@ -467,11 +447,6 @@ onUnmounted(() => {
}
}
-.feedback-bug-popover {
- --popup-bg-color: var(--o-color-fill2);
- --popup-radius: var(--o-radius-xs);
-}
-
.article-detail-container {
margin-top: var(--o-gap-2);
margin-bottom: var(--o-gap-6);
@@ -698,22 +673,4 @@ onUnmounted(() => {
display: flex;
flex-direction: column;
}
-
-.select-feedback-placeholder {
- position: absolute;
- left: var(--x);
- top: var(--y);
-}
-.feedback-bug-popover {
- .o-dropdown-item {
- background-image: url('@/assets/category/docs/docsBugBg.png');
- background-position: center;
- background-size: cover;
- background-repeat: no-repeat;
- justify-content: flex-start;
- width: auto;
- padding: 3px 12px;
- color: var(--o-color-info1-inverse);
- }
-}
--
Gitee
From ac67dd54691c421f4331a10ad4347d1ca414eab0 Mon Sep 17 00:00:00 2001
From: cctvcat <14413208+cctvcat@user.noreply.gitee.com>
Date: Sun, 23 Mar 2025 19:47:12 +0800
Subject: [PATCH 5/9] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E6=9F=A5=E7=9C=8B?=
=?UTF-8?q?=E6=BA=90=E4=BB=A3=E7=A0=81?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../src/components/GiteeViewSource.vue | 23 ++++++++++++++++++-
docs/.vitepress/src/layouts/LayoutDoc.vue | 19 ---------------
2 files changed, 22 insertions(+), 20 deletions(-)
diff --git a/docs/.vitepress/src/components/GiteeViewSource.vue b/docs/.vitepress/src/components/GiteeViewSource.vue
index 34fb77b..e262d04 100644
--- a/docs/.vitepress/src/components/GiteeViewSource.vue
+++ b/docs/.vitepress/src/components/GiteeViewSource.vue
@@ -56,7 +56,7 @@ const insertGiteeBtn = () => {
`;
const parser = new DOMParser();
- const svgDoc = parser.parseFromString(svgString, "image/svg+xml");
+ const svgDoc = parser.parseFromString(svgString, 'image/svg+xml');
a.appendChild(svgDoc.documentElement);
container.appendChild(a);
titleDom.nextSibling.parentNode?.insertBefore(container, titleDom.nextSibling);
@@ -83,6 +83,27 @@ watch(isPhone, () => {
+
+
diff --git a/docs/.vitepress/src/components/doc/DocFooter.vue b/docs/.vitepress/src/components/doc/DocFooter.vue
index b52b2df..b8649d9 100644
--- a/docs/.vitepress/src/components/doc/DocFooter.vue
+++ b/docs/.vitepress/src/components/doc/DocFooter.vue
@@ -1,129 +1,103 @@
-
--
Gitee
From 5e338398824fc76addc377d1b11bc688be83ff75 Mon Sep 17 00:00:00 2001
From: cctvcat <14413208+cctvcat@user.noreply.gitee.com>
Date: Sun, 23 Mar 2025 21:32:30 +0800
Subject: [PATCH 8/9] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E8=8F=9C=E5=8D=95?=
=?UTF-8?q?=E7=82=B9=E5=87=BB?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../src/components/doc/DocBreadCrumb.vue | 1 -
docs/.vitepress/src/layouts/LayoutDoc.vue | 52 +++++++++++++------
docs/.vitepress/src/stores/menu.ts | 3 --
docs/.vitepress/src/stores/node.ts | 38 ++------------
4 files changed, 42 insertions(+), 52 deletions(-)
delete mode 100644 docs/.vitepress/src/stores/menu.ts
diff --git a/docs/.vitepress/src/components/doc/DocBreadCrumb.vue b/docs/.vitepress/src/components/doc/DocBreadCrumb.vue
index 1644368..f322a9f 100644
--- a/docs/.vitepress/src/components/doc/DocBreadCrumb.vue
+++ b/docs/.vitepress/src/components/doc/DocBreadCrumb.vue
@@ -42,7 +42,6 @@ const currentTitle = computed(() => {
// -------------------- 跳转 --------------------
const router = useRouter();
const goToPage = (href: string) => {
- nodeStore.menuValue = '';
router.go(href);
useSearchingStore().isSearching = false;
};
diff --git a/docs/.vitepress/src/layouts/LayoutDoc.vue b/docs/.vitepress/src/layouts/LayoutDoc.vue
index 6249f45..1a41a06 100644
--- a/docs/.vitepress/src/layouts/LayoutDoc.vue
+++ b/docs/.vitepress/src/layouts/LayoutDoc.vue
@@ -1,7 +1,8 @@