diff --git a/web_src/js/components/ViewFileTreeItem.vue b/web_src/js/components/ViewFileTreeItem.vue index c898b1df60..1e7a378a34 100644 --- a/web_src/js/components/ViewFileTreeItem.vue +++ b/web_src/js/components/ViewFileTreeItem.vue @@ -32,6 +32,8 @@ const onItemClick = (e: MouseEvent) => { // - the user didn't press any special key like "Ctrl+Click" (which may have custom browser behavior) // - the editor/commit form isn't dirty (a full page reload shows a confirmation dialog if the form contains unsaved changes) if (!isPlainClick(e) || shouldTriggerAreYouSure()) return; + // submodules (commit entry mode) point to external repos, let the browser handle navigation normally + if (props.item.entryMode === 'commit') return; e.preventDefault(); if (props.item.entryMode === 'tree') doLoadChildren(); store.navigateTreeView(props.item.fullPath); diff --git a/web_src/js/components/ViewFileTreeStore.ts b/web_src/js/components/ViewFileTreeStore.ts index 4237f7e323..1da732a4b8 100644 --- a/web_src/js/components/ViewFileTreeStore.ts +++ b/web_src/js/components/ViewFileTreeStore.ts @@ -41,7 +41,8 @@ export function createViewFileTreeStore(props: {repoLink: string, treePath: stri const u = new URL(url, window.origin); u.searchParams.set('only_content', 'true'); const response = await GET(u.href); - const elViewContent = document.querySelector('.repo-view-content')!; + const elViewContent = document.querySelector('.repo-view-content'); + if (!elViewContent) return; elViewContent.innerHTML = await response.text(); const elViewContentData = elViewContent.querySelector('.repo-view-content-data'); if (!elViewContentData) return; // if error occurs, there is no such element