mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-31 10:56:10 +01:00 
			
		
		
		
	Fix autofocus behavior (#34397)
The "autofocus" was abused or misbehaved:
1. When users visit a page but they are not going to change a field,
then the field shouldn't get "autofocus"
* the "auth" / "user" page: in most cases, users do not want to change
the names
    * see also the GitHub's "settings" page behavior.
2. There shouldn't be duplicate "autofocus" inputs in most cases, only
the first one focuses
3. When a panel is shown, the "autofocus" should get focus
    * "add ssh key" panel
This PR fixes all these problems and by the way remove duplicate
"isElemHidden" function.
			
			
This commit is contained in:
		| @@ -1,5 +1,5 @@ | ||||
| import {POST} from '../modules/fetch.ts'; | ||||
| import {addDelegatedEventListener, hideElem, showElem, toggleElem} from '../utils/dom.ts'; | ||||
| import {addDelegatedEventListener, hideElem, isElemVisible, showElem, toggleElem} from '../utils/dom.ts'; | ||||
| import {fomanticQuery} from '../modules/fomantic/base.ts'; | ||||
| import {camelize} from 'vue'; | ||||
|  | ||||
| @@ -79,10 +79,11 @@ function onShowPanelClick(el: HTMLElement, e: MouseEvent) { | ||||
|   // if it has "toggle" class, it toggles the panel | ||||
|   e.preventDefault(); | ||||
|   const sel = el.getAttribute('data-panel'); | ||||
|   if (el.classList.contains('toggle')) { | ||||
|     toggleElem(sel); | ||||
|   } else { | ||||
|     showElem(sel); | ||||
|   const elems = el.classList.contains('toggle') ? toggleElem(sel) : showElem(sel); | ||||
|   for (const elem of elems) { | ||||
|     if (isElemVisible(elem as HTMLElement)) { | ||||
|       elem.querySelector<HTMLElement>('[autofocus]')?.focus(); | ||||
|     } | ||||
|   } | ||||
| } | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user