fix(system): safe check all event target
This commit is contained in:
@@ -364,7 +364,7 @@ export function XYDrag<OnNodeDrag extends (e: any, nodes: any, node: any) => voi
|
||||
}
|
||||
})
|
||||
.filter((event: MouseEvent) => {
|
||||
const target = event.target as HTMLDivElement;
|
||||
const target = event.target;
|
||||
const isDraggable =
|
||||
!event.button &&
|
||||
(!noDragClassName || !hasSelector(target, `.${noDragClassName}`, domNode)) &&
|
||||
|
||||
@@ -18,13 +18,13 @@ export function isParentSelected<NodeType extends NodeBase>(node: NodeType, node
|
||||
return isParentSelected(parentNode, nodeLookup);
|
||||
}
|
||||
|
||||
export function hasSelector(target: Element, selector: string, domNode: Element): boolean {
|
||||
let current = target;
|
||||
export function hasSelector(target: Element | EventTarget | null, selector: string, domNode: Element): boolean {
|
||||
let current = target as Partial<Element> | null | undefined;
|
||||
|
||||
do {
|
||||
if (current?.matches(selector)) return true;
|
||||
if (current?.matches?.(selector)) return true;
|
||||
if (current === domNode) return false;
|
||||
current = current.parentElement as Element;
|
||||
current = current?.parentElement;
|
||||
} while (current);
|
||||
|
||||
return false;
|
||||
|
||||
Reference in New Issue
Block a user