mirror of
https://gitcode.com/gitea/gitea.git
synced 2025-05-28 04:47:31 +08:00
Refactor dropzone (#31482)
Refactor the legacy code and remove some jQuery calls.
This commit is contained in:
@ -304,3 +304,17 @@ export function createElementFromHTML(htmlString) {
|
||||
div.innerHTML = htmlString.trim();
|
||||
return div.firstChild;
|
||||
}
|
||||
|
||||
export function createElementFromAttrs(tagName, attrs) {
|
||||
const el = document.createElement(tagName);
|
||||
for (const [key, value] of Object.entries(attrs)) {
|
||||
if (value === undefined || value === null) continue;
|
||||
if (value === true) {
|
||||
el.toggleAttribute(key, value);
|
||||
} else {
|
||||
el.setAttribute(key, String(value));
|
||||
}
|
||||
// TODO: in the future we could make it also support "textContent" and "innerHTML" properties if needed
|
||||
}
|
||||
return el;
|
||||
}
|
||||
|
@ -1,5 +1,16 @@
|
||||
import {createElementFromHTML} from './dom.js';
|
||||
import {createElementFromAttrs, createElementFromHTML} from './dom.js';
|
||||
|
||||
test('createElementFromHTML', () => {
|
||||
expect(createElementFromHTML('<a>foo<span>bar</span></a>').outerHTML).toEqual('<a>foo<span>bar</span></a>');
|
||||
});
|
||||
|
||||
test('createElementFromAttrs', () => {
|
||||
const el = createElementFromAttrs('button', {
|
||||
id: 'the-id',
|
||||
class: 'cls-1 cls-2',
|
||||
'data-foo': 'the-data',
|
||||
disabled: true,
|
||||
required: null,
|
||||
});
|
||||
expect(el.outerHTML).toEqual('<button id="the-id" class="cls-1 cls-2" data-foo="the-data" disabled=""></button>');
|
||||
});
|
||||
|
Reference in New Issue
Block a user