mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-31 21:14:01 +00:00 
			
		
		
		
	Backport #35073 by wxiaoguang Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
This commit is contained in:
		| @@ -102,18 +102,26 @@ function onHidePanelClick(el: HTMLElement, e: MouseEvent) { | ||||
|   throw new Error('no panel to hide'); // should never happen, otherwise there is a bug in code | ||||
| } | ||||
|  | ||||
| export function assignElementProperty(el: any, name: string, val: string) { | ||||
|   name = camelize(name); | ||||
|   const old = el[name]; | ||||
| export type ElementWithAssignableProperties = { | ||||
|   getAttribute: (name: string) => string | null; | ||||
|   setAttribute: (name: string, value: string) => void; | ||||
| } & Record<string, any> | ||||
|  | ||||
| export function assignElementProperty(el: ElementWithAssignableProperties, kebabName: string, val: string) { | ||||
|   const camelizedName = camelize(kebabName); | ||||
|   const old = el[camelizedName]; | ||||
|   if (typeof old === 'boolean') { | ||||
|     el[name] = val === 'true'; | ||||
|     el[camelizedName] = val === 'true'; | ||||
|   } else if (typeof old === 'number') { | ||||
|     el[name] = parseFloat(val); | ||||
|     el[camelizedName] = parseFloat(val); | ||||
|   } else if (typeof old === 'string') { | ||||
|     el[name] = val; | ||||
|     el[camelizedName] = val; | ||||
|   } else if (old?.nodeName) { | ||||
|     // "form" has an edge case: its "<input name=action>" element overwrites the "action" property, we can only set attribute | ||||
|     el.setAttribute(kebabName, val); | ||||
|   } else { | ||||
|     // in the future, we could introduce a better typing system like `data-modal-form.action:string="..."` | ||||
|     throw new Error(`cannot assign element property ${name} by value ${val}`); | ||||
|     throw new Error(`cannot assign element property "${camelizedName}" by value "${val}"`); | ||||
|   } | ||||
| } | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user