mirror of
				https://github.com/go-gitea/gitea
				synced 2025-10-31 19:38:23 +00:00 
			
		
		
		
	Add "dir=auto" for input/textarea elements by default (#26735)
Co-authored-by: silverwind <me@silverwind.io> Co-authored-by: Giteabot <teabot@gitea.io>
This commit is contained in:
		
							
								
								
									
										39
									
								
								web_src/js/modules/dirauto.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								web_src/js/modules/dirauto.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,39 @@ | ||||
| // for performance considerations, it only uses performant syntax | ||||
|  | ||||
| function attachDirAuto(el) { | ||||
|   if (el.type !== 'hidden' && | ||||
|       el.type !== 'checkbox' && | ||||
|       el.type !== 'radio' && | ||||
|       el.type !== 'range' && | ||||
|       el.type !== 'color') { | ||||
|     el.dir = 'auto'; | ||||
|   } | ||||
| } | ||||
|  | ||||
| export function initDirAuto() { | ||||
|   const observer = new MutationObserver((mutationList) => { | ||||
|     const len = mutationList.length; | ||||
|     for (let i = 0; i < len; i++) { | ||||
|       const mutation = mutationList[i]; | ||||
|       const len = mutation.addedNodes.length; | ||||
|       for (let i = 0; i < len; i++) { | ||||
|         const addedNode = mutation.addedNodes[i]; | ||||
|         if (addedNode.nodeType !== Node.ELEMENT_NODE && addedNode.nodeType !== Node.DOCUMENT_FRAGMENT_NODE) continue; | ||||
|         attachDirAuto(addedNode); | ||||
|         const children = addedNode.querySelectorAll('input, textarea'); | ||||
|         const len = children.length; | ||||
|         for (let childIdx = 0; childIdx < len; childIdx++) { | ||||
|           attachDirAuto(children[childIdx]); | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|   }); | ||||
|  | ||||
|   const docNodes = document.querySelectorAll('input, textarea'); | ||||
|   const len = docNodes.length; | ||||
|   for (let i = 0; i < len; i++) { | ||||
|     attachDirAuto(docNodes[i]); | ||||
|   } | ||||
|  | ||||
|   observer.observe(document, {subtree: true, childList: true}); | ||||
| } | ||||
		Reference in New Issue
	
	Block a user