mirror of
https://github.com/go-gitea/gitea.git
synced 2025-06-22 22:50:35 +02:00
Converts the repo file tree items into `<a>` elements to have default link behavior. Dynamic content load is still done when no special key is pressed while clicking on an item. --------- Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
39 lines
1.1 KiB
Vue
39 lines
1.1 KiB
Vue
<script lang="ts" setup>
|
|
import ViewFileTreeItem from './ViewFileTreeItem.vue';
|
|
import {onMounted, ref} from 'vue';
|
|
import {createViewFileTreeStore} from './ViewFileTreeStore.ts';
|
|
|
|
const elRoot = ref<HTMLElement | null>(null);
|
|
|
|
const props = defineProps({
|
|
repoLink: {type: String, required: true},
|
|
treePath: {type: String, required: true},
|
|
currentRefNameSubURL: {type: String, required: true},
|
|
});
|
|
|
|
const store = createViewFileTreeStore(props);
|
|
onMounted(async () => {
|
|
store.rootFiles = await store.loadChildren('', props.treePath);
|
|
elRoot.value.closest('.is-loading')?.classList?.remove('is-loading');
|
|
window.addEventListener('popstate', (e) => {
|
|
store.selectedItem = e.state?.treePath || '';
|
|
if (e.state?.url) store.loadViewContent(e.state.url);
|
|
});
|
|
});
|
|
</script>
|
|
|
|
<template>
|
|
<div class="view-file-tree-items" ref="elRoot">
|
|
<ViewFileTreeItem v-for="item in store.rootFiles" :key="item.name" :item="item" :store="store"/>
|
|
</div>
|
|
</template>
|
|
|
|
<style scoped>
|
|
.view-file-tree-items {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 1px;
|
|
margin-right: .5rem;
|
|
}
|
|
</style>
|