gitea源码

repo-view-file-tree.ts 1.5KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. import {createApp} from 'vue';
  2. import {toggleElem} from '../utils/dom.ts';
  3. import {POST} from '../modules/fetch.ts';
  4. import ViewFileTree from '../components/ViewFileTree.vue';
  5. import {registerGlobalEventFunc} from '../modules/observer.ts';
  6. const {appSubUrl} = window.config;
  7. async function toggleSidebar(btn: HTMLElement) {
  8. const elToggleShow = document.querySelector('.repo-view-file-tree-toggle-show');
  9. const elFileTreeContainer = document.querySelector('.repo-view-file-tree-container');
  10. const shouldShow = btn.getAttribute('data-toggle-action') === 'show';
  11. toggleElem(elFileTreeContainer, shouldShow);
  12. toggleElem(elToggleShow, !shouldShow);
  13. // FIXME: need to remove "full height" style from parent element
  14. if (!elFileTreeContainer.hasAttribute('data-user-is-signed-in')) return;
  15. await POST(`${appSubUrl}/user/settings/update_preferences`, {
  16. data: {codeViewShowFileTree: shouldShow},
  17. });
  18. }
  19. export async function initRepoViewFileTree() {
  20. const sidebar = document.querySelector<HTMLElement>('.repo-view-file-tree-container');
  21. const repoViewContent = document.querySelector('.repo-view-content');
  22. if (!sidebar || !repoViewContent) return;
  23. registerGlobalEventFunc('click', 'onRepoViewFileTreeToggle', toggleSidebar);
  24. const fileTree = sidebar.querySelector('#view-file-tree');
  25. createApp(ViewFileTree, {
  26. repoLink: fileTree.getAttribute('data-repo-link'),
  27. treePath: fileTree.getAttribute('data-tree-path'),
  28. currentRefNameSubURL: fileTree.getAttribute('data-current-ref-name-sub-url'),
  29. }).mount(fileTree);
  30. }