feat: implement event mouseOver and mouseLeave for Element

This commit is contained in:
chenshenhai 2021-08-08 16:51:36 +08:00
parent 50d464b320
commit 9aca4a03cd
3 changed files with 21 additions and 7 deletions

View file

@ -46,9 +46,13 @@ core.on('changeScreen', (data) => {
core.on('screenSelectElement', (data) => {
console.log('screenSelectElement: ', data);
});
// core.on('screenHoverElement', (data) => {
// console.log('screenHoverElement: ', data);
// });
core.on('mouseOverElement', (data) => {
console.log('mouseOverElement: ', data);
});
core.on('mouseLeaveElement', (data) => {
console.log('mouseLeaveElement: ', data);
});
core.on('screenMoveElementStart', (data) => {
console.log('screenMoveElementStart: ', data);
});

View file

@ -379,6 +379,8 @@ class Core {
}
private [_handleHover](point: TypePoint): void {
let isMouseOverElement: boolean = false;
if (this[_mode] === Mode.SELECT_AREA) {
this[_board].resetCursor();
} else if (this[_cursorStatus] === CursorStatus.NULL) {
@ -389,11 +391,19 @@ class Core {
if (index !== null && index >= 0) {
const elem = this[_data].elements[index];
if (elem) {
this[_coreEvent].trigger('mouseOverElement', { index, uuid: elem.uuid, element: elem, })
this[_coreEvent].trigger('mouseOverElement', { index, uuid: elem.uuid, element: elem, });
this[_tempData].set('hoverUUID', elem.uuid);
isMouseOverElement = true;
}
}
}
}
if (isMouseOverElement !== true && this[_tempData].get('hoverUUID') !== null) {
const uuid = this[_tempData].get('hoverUUID');
const index: number | null = this[_helper].getElementIndexByUUID(uuid || '');
this[_coreEvent].trigger('mouseLeaveElement', { uuid, index })
this[_tempData].set('hoverUUID', null);
}
}
private [_dragElements](uuids: string[], point: TypePoint, prevPoint: TypePoint|null): void {

View file

@ -7,14 +7,14 @@ import {
} from '@idraw/types';
export type TypeCoreEventSelectBaseArg = {
index: number;
uuid: string;
index: number | null;
uuid: string | null;
}
export type TypeCoreEventArgMap = {
'error': any;
'mouseOverElement': TypeCoreEventSelectBaseArg & { element: TypeElement<keyof TypeElemDesc> }
'mouseLeaveElement': void;
'mouseLeaveElement': TypeCoreEventSelectBaseArg;
'screenSelectElement': TypeCoreEventSelectBaseArg & { element: TypeElement<keyof TypeElemDesc> }
'screenMoveElementStart': TypeCoreEventSelectBaseArg & TypePoint,
'screenMoveElementEnd': TypeCoreEventSelectBaseArg & TypePoint,