From e37da11a79dd5e226f954833b102a8c01a19fef9 Mon Sep 17 00:00:00 2001 From: Hufe921 Date: Sun, 29 Jan 2023 22:34:25 +0800 Subject: [PATCH] feat:paste checkbox element --- src/editor/utils/clipboard.ts | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/editor/utils/clipboard.ts b/src/editor/utils/clipboard.ts index 6bc3daa..1f3f034 100644 --- a/src/editor/utils/clipboard.ts +++ b/src/editor/utils/clipboard.ts @@ -1,6 +1,7 @@ import { IEditorOption, IElement, RowFlex } from '..' import { ZERO } from '../dataset/constant/Common' import { TEXTLIKE_ELEMENT_TYPE } from '../dataset/constant/Element' +import { ControlComponent } from '../dataset/enum/Control' import { ElementType } from '../dataset/enum/Element' import { DeepRequired } from '../interface/Common' import { zipElementList } from './element' @@ -72,6 +73,13 @@ export function writeElementList(elementList: IElement[], options: DeepRequired< } else if (element.type === ElementType.SEPARATOR) { const hr = document.createElement('hr') clipboardDom.append(hr) + } else if (element.type === ElementType.CHECKBOX) { + const checkbox = document.createElement('input') + checkbox.type = 'checkbox' + if (element.checkbox?.value) { + checkbox.setAttribute('checked', 'true') + } + clipboardDom.append(checkbox) } else if ( !element.type || element.type === ElementType.LATEX @@ -157,6 +165,14 @@ export function getElementListByHTML(htmlText: string): IElement[] { url: aElement.href }) } + } else if (node.nodeName === 'INPUT' && (node).type === ControlComponent.CHECKBOX) { + elementList.push({ + type: ElementType.CHECKBOX, + value: '', + checkbox: { + value: (node).checked + } + }) } else { findTextNode(node) if (node.nodeType === 1 && n !== childNodes.length - 1) {