fix: add prefer-dom-node-append rule (#5108)

This commit is contained in:
LongYinan 2023-11-29 04:43:39 +00:00
parent 123f091e5b
commit 23cfc58fe2
No known key found for this signature in database
GPG Key ID: 30B1140CE1C07C99
10 changed files with 12 additions and 11 deletions

View File

@ -208,6 +208,7 @@ const config = {
'unicorn/no-unnecessary-await': 'error',
'unicorn/no-useless-fallback-in-spread': 'error',
'unicorn/prefer-dom-node-dataset': 'error',
'unicorn/prefer-dom-node-append': 'error',
'sonarjs/no-all-duplicated-branches': 'error',
'sonarjs/no-element-overwrite': 'error',
'sonarjs/no-empty-collection': 'error',

View File

@ -12,7 +12,7 @@ export const RootBlockHub = () => {
if (div.hasChildNodes()) {
div.removeChild(div.firstChild as ChildNode);
}
div.appendChild(blockHub);
div.append(blockHub);
}
}
}, [blockHub]);

View File

@ -134,7 +134,7 @@ const BlockSuiteEditorImpl = ({
if (!container) {
return;
}
container.appendChild(editor);
container.append(editor);
return () => {
container.removeChild(editor);
};

View File

@ -84,7 +84,7 @@ export const playCheckAnimation = async (refElement: Element) => {
border-radius: 50%;
font-size: inherit;
`;
refElement.appendChild(sparkingEl);
refElement.append(sparkingEl);
await sparkingEl.animate(
[

View File

@ -46,7 +46,7 @@ const createToastContainer = (portal?: HTMLElement) => {
data-testid="affine-toast-container"
></div>`;
const element = htmlToElement<HTMLDivElement>(template);
portal.appendChild(element);
portal.append(element);
return element;
};
@ -98,7 +98,7 @@ const createAndShowNewToast = (
const toastElement = htmlToElement<HTMLDivElement>(toastTemplate);
// message is not trusted
toastElement.textContent = message;
ToastContainer.appendChild(toastElement);
ToastContainer.append(toastElement);
logger.debug(`toast with message: "${message}"`);
window.dispatchEvent(
new CustomEvent('affine-toast:emit', { detail: message })

View File

@ -106,7 +106,7 @@ export async function bootstrapPluginSystem(
const style = document.createElement('style');
style.setAttribute('plugin-id', pluginName);
style.textContent = text;
document.head.appendChild(style);
document.head.append(style);
});
}
return null;

View File

@ -174,7 +174,7 @@ const EditorWrapper = memo(function EditorWrapper({
div.setAttribute('plugin-id', id);
const cleanup = editorItem(div, editor);
assertExists(parent);
document.body.appendChild(div);
document.body.append(div);
return () => {
cleanup();
document.body.removeChild(div);
@ -235,7 +235,7 @@ const PluginContentAdapter = memo<PluginContentAdapterProps>(
}
const div = document.createElement('div');
const cleanup = windowItem(div);
root.appendChild(div);
root.append(div);
if (abortController.signal.aborted) {
cleanup();
root.removeChild(div);

View File

@ -25,7 +25,7 @@ export const PluginHeader = () => {
div.setAttribute('plugin-id', pluginName);
startTransition(() => {
const cleanup = create(div);
root.appendChild(div);
root.append(div);
addCleanup(pluginName, () => {
pluginsRef.current = pluginsRef.current.filter(
name => name !== pluginName

View File

@ -231,7 +231,7 @@ const ImagePreviewModalImpl = (
const a = document.createElement('a');
a.href = downloadUrl;
a.download = block.id ?? 'image';
document.body.appendChild(a);
document.body.append(a);
a.click();
document.body.removeChild(a);
}

View File

@ -40,7 +40,7 @@ const Outline = () => {
ref={useCallback((container: HTMLDivElement | null) => {
if (container) {
assertExists(tocPanelRef.current);
container.appendChild(tocPanelRef.current);
container.append(tocPanelRef.current);
}
}, [])}
/>