mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-29 10:57:44 +09:00 
			
		
		
		
	support the open-icon of folder (#34168)
Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
This commit is contained in:
		| @@ -22,13 +22,6 @@ function getIconForDiffStatus(pType: DiffStatus) { | ||||
|   }; | ||||
|   return diffTypes[pType] ?? diffTypes['']; | ||||
| } | ||||
|  | ||||
| function entryIcon(entry: DiffTreeEntry) { | ||||
|   if (entry.EntryMode === 'commit') { | ||||
|     return 'octicon-file-submodule'; | ||||
|   } | ||||
|   return 'octicon-file'; | ||||
| } | ||||
| </script> | ||||
|  | ||||
| <template> | ||||
| @@ -36,10 +29,8 @@ function entryIcon(entry: DiffTreeEntry) { | ||||
|     <div class="item-directory" :class="{ 'viewed': item.IsViewed }" :title="item.DisplayName" @click.stop="collapsed = !collapsed"> | ||||
|       <!-- directory --> | ||||
|       <SvgIcon :name="collapsed ? 'octicon-chevron-right' : 'octicon-chevron-down'"/> | ||||
|       <SvgIcon | ||||
|         class="text primary" | ||||
|         :name="collapsed ? 'octicon-file-directory-fill' : 'octicon-file-directory-open-fill'" | ||||
|       /> | ||||
|       <!-- eslint-disable-next-line vue/no-v-html --> | ||||
|       <span class="tw-contents" v-html="collapsed ? store.folderIcon : store.folderOpenIcon"/> | ||||
|       <span class="gt-ellipsis">{{ item.DisplayName }}</span> | ||||
|     </div> | ||||
|  | ||||
| @@ -53,7 +44,8 @@ function entryIcon(entry: DiffTreeEntry) { | ||||
|     :title="item.DisplayName" :href="'#diff-' + item.NameHash" | ||||
|   > | ||||
|     <!-- file --> | ||||
|     <SvgIcon :name="entryIcon(item)"/> | ||||
|     <!-- eslint-disable-next-line vue/no-v-html --> | ||||
|     <span class="tw-contents" v-html="item.FileIcon"/> | ||||
|     <span class="gt-ellipsis tw-flex-1">{{ item.DisplayName }}</span> | ||||
|     <SvgIcon | ||||
|       :name="getIconForDiffStatus(item.DiffStatus).name" | ||||
|   | ||||
| @@ -9,6 +9,7 @@ test('diff-tree', () => { | ||||
|       'IsViewed': false, | ||||
|       'NameHash': '....', | ||||
|       'DiffStatus': '', | ||||
|       'FileIcon': '', | ||||
|       'Children': [ | ||||
|         { | ||||
|           'FullName': 'dir1', | ||||
| @@ -17,6 +18,7 @@ test('diff-tree', () => { | ||||
|           'IsViewed': false, | ||||
|           'NameHash': '....', | ||||
|           'DiffStatus': '', | ||||
|           'FileIcon': '', | ||||
|           'Children': [ | ||||
|             { | ||||
|               'FullName': 'dir1/test.txt', | ||||
| @@ -25,6 +27,7 @@ test('diff-tree', () => { | ||||
|               'NameHash': '....', | ||||
|               'EntryMode': '', | ||||
|               'IsViewed': false, | ||||
|               'FileIcon': '', | ||||
|               'Children': null, | ||||
|             }, | ||||
|           ], | ||||
| @@ -36,11 +39,12 @@ test('diff-tree', () => { | ||||
|           'DiffStatus': 'added', | ||||
|           'EntryMode': '', | ||||
|           'IsViewed': false, | ||||
|           'FileIcon': '', | ||||
|           'Children': null, | ||||
|         }, | ||||
|       ], | ||||
|     }, | ||||
|   }); | ||||
|   }, '', ''); | ||||
|   diffTreeStoreSetViewed(store, 'dir1/test.txt', true); | ||||
|   expect(store.fullNameMap['dir1/test.txt'].IsViewed).toBe(true); | ||||
|   expect(store.fullNameMap['dir1'].IsViewed).toBe(true); | ||||
|   | ||||
| @@ -13,7 +13,7 @@ export type DiffTreeEntry = { | ||||
|   EntryMode: string, | ||||
|   IsViewed: boolean, | ||||
|   Children: DiffTreeEntry[], | ||||
|  | ||||
|   FileIcon: string, | ||||
|   ParentEntry?: DiffTreeEntry, | ||||
| } | ||||
|  | ||||
| @@ -22,6 +22,8 @@ type DiffFileTreeData = { | ||||
| }; | ||||
|  | ||||
| type DiffFileTree = { | ||||
|   folderIcon: string; | ||||
|   folderOpenIcon: string; | ||||
|   diffFileTree: DiffFileTreeData; | ||||
|   fullNameMap?: Record<string, DiffTreeEntry> | ||||
|   fileTreeIsVisible: boolean; | ||||
| @@ -31,7 +33,7 @@ type DiffFileTree = { | ||||
| let diffTreeStoreReactive: Reactive<DiffFileTree>; | ||||
| export function diffTreeStore() { | ||||
|   if (!diffTreeStoreReactive) { | ||||
|     diffTreeStoreReactive = reactiveDiffTreeStore(pageData.DiffFileTree); | ||||
|     diffTreeStoreReactive = reactiveDiffTreeStore(pageData.DiffFileTree, pageData.FolderIcon, pageData.FolderOpenIcon); | ||||
|   } | ||||
|   return diffTreeStoreReactive; | ||||
| } | ||||
| @@ -55,9 +57,11 @@ function fillFullNameMap(map: Record<string, DiffTreeEntry>, entry: DiffTreeEntr | ||||
|   } | ||||
| } | ||||
|  | ||||
| export function reactiveDiffTreeStore(data: DiffFileTreeData): Reactive<DiffFileTree> { | ||||
| export function reactiveDiffTreeStore(data: DiffFileTreeData, folderIcon: string, folderOpenIcon: string): Reactive<DiffFileTree> { | ||||
|   const store = reactive({ | ||||
|     diffFileTree: data, | ||||
|     folderIcon, | ||||
|     folderOpenIcon, | ||||
|     fileTreeIsVisible: false, | ||||
|     selectedItem: '', | ||||
|     fullNameMap: {}, | ||||
|   | ||||
		Reference in New Issue
	
	Block a user