feat: metadata 增加 canHovering 配置

This commit is contained in:
yingkong.lz 2021-01-24 00:10:34 +08:00
parent e7287d47b1
commit 88e128e3d5
4 changed files with 15 additions and 1 deletions

View File

@ -73,6 +73,14 @@ export class BorderDetecting extends Component<{ host: BuiltinSimulatorHost }> {
render() { render() {
const { host } = this.props; const { host } = this.props;
const { current } = this; const { current } = this;
const canHoverHook = current?.componentMeta.getMetadata()?.experimental?.callbacks?.onHoverHook;
const canHover = (canHoverHook && typeof canHoverHook === 'function') ? canHoverHook(current) : true;
if (!canHover) {
return null;
}
if (!current || host.viewport.scrolling || host.liveEditing.editing) { if (!current || host.viewport.scrolling || host.liveEditing.editing) {
return null; return null;
} }

View File

@ -37,7 +37,7 @@ export default class DragGhost extends Component<{ designer: Designer }> {
this.y = e.globalY; this.y = e.globalY;
if (isSimulatorHost(e.sensor)) { if (isSimulatorHost(e.sensor)) {
const container = e.sensor.getDropContainer(e); const container = e.sensor.getDropContainer(e);
if (container.container.componentMeta.getMetadata().experimental?.isAbsoluteLayoutContainer) { if (container?.container.componentMeta.getMetadata().experimental?.isAbsoluteLayoutContainer) {
this.isAbsoluteLayoutContainer = true; this.isAbsoluteLayoutContainer = true;
return; return;
} }

View File

@ -145,6 +145,7 @@ export interface OldPrototypeConfig {
// alias to canDragging // alias to canDragging
canDraging?: boolean; // => onDrag canDraging?: boolean; // => onDrag
canDragging?: boolean; // => ? canDragging?: boolean; // => ?
canHovering?: ((dragment: Node) => boolean) | boolean;
canOperating?: boolean; // => disabledActions canOperating?: boolean; // => disabledActions
canUseCondition?: boolean; canUseCondition?: boolean;
@ -614,6 +615,7 @@ export function upgradeMetadata(oldConfig: OldPrototypeConfig) {
// hooks // hooks
canDraging, canDraging,
canDragging, // handleDragging canDragging, // handleDragging
canHovering,
// events // events
didDropOut, // onNodeRemove didDropOut, // onNodeRemove
didDropIn, // onNodeAdd didDropIn, // onNodeAdd
@ -760,6 +762,9 @@ export function upgradeMetadata(oldConfig: OldPrototypeConfig) {
} }
callbacks.onMoveHook = () => v; callbacks.onMoveHook = () => v;
} }
if (canHovering != null) {
callbacks.onHoverHook = typeof canHovering === 'boolean' ? () => canHovering : canHovering;
}
if (didDropIn) { if (didDropIn) {
callbacks.onNodeAdd = didDropIn; callbacks.onNodeAdd = didDropIn;
} }

View File

@ -184,6 +184,7 @@ export interface Callbacks {
onLocateHook?: (e: any, currentNode: any) => any; onLocateHook?: (e: any, currentNode: any) => any;
onAcceptHook?: (currentNode: any, locationData: any) => any; onAcceptHook?: (currentNode: any, locationData: any) => any;
onMoveHook?: (currentNode: any) => boolean; // thinkof 限制性拖拽 onMoveHook?: (currentNode: any) => boolean; // thinkof 限制性拖拽
onHoverHook?: (currentNode: any) => boolean;
onChildMoveHook?: (childNode: any, currentNode: any) => boolean; onChildMoveHook?: (childNode: any, currentNode: any) => boolean;
// events // events