mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-31 21:28:11 +09:00 
			
		
		
		
	Fix line-button issue after file selection in file tree (#34574)
Fix the issue where the line-button fails to work after selecting a file from the file tree. --------- Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
This commit is contained in:
		| @@ -40,6 +40,7 @@ export function createTippy(target: Element, opts: TippyOpts = {}): Instance { | ||||
|         } | ||||
|       } | ||||
|       visibleInstances.add(instance); | ||||
|       target.setAttribute('aria-controls', instance.popper.id); | ||||
|       return onShow?.(instance); | ||||
|     }, | ||||
|     arrow: arrow ?? (theme === 'bare' ? false : arrowSvg), | ||||
| @@ -180,13 +181,25 @@ export function initGlobalTooltips(): void { | ||||
| } | ||||
|  | ||||
| export function showTemporaryTooltip(target: Element, content: Content): void { | ||||
|   // if the target is inside a dropdown, the menu will be hidden soon | ||||
|   // so display the tooltip on the dropdown instead | ||||
|   target = target.closest('.ui.dropdown') || target; | ||||
|   const tippy = target._tippy ?? attachTooltip(target, content); | ||||
|   tippy.setContent(content); | ||||
|   if (!tippy.state.isShown) tippy.show(); | ||||
|   tippy.setProps({ | ||||
|   // if the target is inside a dropdown or tippy popup, the menu will be hidden soon | ||||
|   // so display the tooltip on the "aria-controls" element or dropdown instead | ||||
|   let refClientRect: DOMRect; | ||||
|   const popupTippyId = target.closest(`[data-tippy-root]`)?.id; | ||||
|   if (popupTippyId) { | ||||
|     // for example, the "Copy Permalink" button in the "File View" page for the selected lines | ||||
|     target = document.body; | ||||
|     refClientRect = document.querySelector(`[aria-controls="${CSS.escape(popupTippyId)}"]`)?.getBoundingClientRect(); | ||||
|     refClientRect = refClientRect ?? new DOMRect(0, 0, 0, 0); // fallback to empty rect if not found, tippy doesn't accept null | ||||
|   } else { | ||||
|     // for example, the "Copy Link" button in the issue header dropdown menu | ||||
|     target = target.closest('.ui.dropdown') ?? target; | ||||
|     refClientRect = target.getBoundingClientRect(); | ||||
|   } | ||||
|   const tooltipTippy = target._tippy ?? attachTooltip(target, content); | ||||
|   tooltipTippy.setContent(content); | ||||
|   tooltipTippy.setProps({getReferenceClientRect: () => refClientRect}); | ||||
|   if (!tooltipTippy.state.isShown) tooltipTippy.show(); | ||||
|   tooltipTippy.setProps({ | ||||
|     onHidden: (tippy) => { | ||||
|       // reset the default tooltip content, if no default, then this temporary tooltip could be destroyed | ||||
|       if (!attachTooltip(target)) { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user