mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-31 21:28:11 +09: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:
		| @@ -478,6 +478,7 @@ a.label, | |||||||
| /* fix Fomantic's line-height cutting off "g" on Windows Chrome with Segoe UI */ | /* fix Fomantic's line-height cutting off "g" on Windows Chrome with Segoe UI */ | ||||||
| .ui.input > input { | .ui.input > input { | ||||||
|   line-height: var(--line-height-default); |   line-height: var(--line-height-default); | ||||||
|  |   text-align: start; /* Override fomantic's `text-align: left` to make RTL work via HTML `dir="auto"` */ | ||||||
| } | } | ||||||
|  |  | ||||||
| .ui.input.focus > input, | .ui.input.focus > input, | ||||||
|   | |||||||
| @@ -84,9 +84,11 @@ import {onDomReady} from './utils/dom.js'; | |||||||
| import {initRepoIssueList} from './features/repo-issue-list.js'; | import {initRepoIssueList} from './features/repo-issue-list.js'; | ||||||
| import {initCommonIssueListQuickGoto} from './features/common-issue-list.js'; | import {initCommonIssueListQuickGoto} from './features/common-issue-list.js'; | ||||||
| import {initRepoDiffCommitBranchesAndTags} from './features/repo-diff-commit.js'; | import {initRepoDiffCommitBranchesAndTags} from './features/repo-diff-commit.js'; | ||||||
|  | import {initDirAuto} from './modules/dirauto.js'; | ||||||
|  |  | ||||||
| // Init Gitea's Fomantic settings | // Init Gitea's Fomantic settings | ||||||
| initGiteaFomantic(); | initGiteaFomantic(); | ||||||
|  | initDirAuto(); | ||||||
|  |  | ||||||
| onDomReady(() => { | onDomReady(() => { | ||||||
|   initGlobalCommon(); |   initGlobalCommon(); | ||||||
|   | |||||||
							
								
								
									
										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