Browse Source

Change minimum undroppable dimensions

pull/6200/head
mohamedsalem401 1 year ago
parent
commit
c90c9c4b3d
  1. 4
      packages/core/src/utils/sorter/CanvasComponentNode.ts
  2. 17
      packages/core/src/utils/sorter/Dimension.ts
  3. 2
      packages/core/src/utils/sorter/DropLocationDeterminer.ts
  4. 4
      packages/core/src/utils/sorter/SortableTreeNode.ts
  5. 2
      packages/core/src/utils/sorter/types.ts

4
packages/core/src/utils/sorter/CanvasComponentNode.ts

@ -3,8 +3,8 @@ import { BaseComponentNode } from './BaseComponentNode';
export default class CanvasComponentNode extends BaseComponentNode { export default class CanvasComponentNode extends BaseComponentNode {
protected _dropAreaConfig = { protected _dropAreaConfig = {
ratio: 0.8, ratio: 0.8,
minDroppableDimension: 8, // 5px minUndroppableDimension: 1, // In px
maxUndroppableDimension: 15, // 15px maxUndroppableDimension: 15, // In px
}; };
/** /**
* Get the associated view of this component. * Get the associated view of this component.

17
packages/core/src/utils/sorter/Dimension.ts

@ -134,18 +134,13 @@ export default class Dimension {
position: number, position: number,
config: DroppableZoneConfig, config: DroppableZoneConfig,
): { newSize: number; newPosition: number } { ): { newSize: number; newPosition: number } {
const { ratio, minDroppableDimension, maxUndroppableDimension } = config; const { ratio, minUndroppableDimension: minUnDroppableDimension, maxUndroppableDimension } = config;
// Calculate the desired new size based on the ratio, ensuring it doesn't go below minDroppable let undroppableDimension = (size * (1 - ratio)) / 2;
const minSize = Math.min(size, minDroppableDimension); undroppableDimension = Math.max(undroppableDimension, minUnDroppableDimension);
let newSize = Math.max(size * ratio, minSize); undroppableDimension = Math.min(undroppableDimension, maxUndroppableDimension);
const newSize = size - undroppableDimension * 2;
// Adjust the newSize based on maxUndroppable to prevent exceeding the maximum undroppable area const newPosition = position + undroppableDimension;
newSize = size - Math.min(size - newSize, maxUndroppableDimension);
// Calculate the new position by adjusting it by half the reduction
const reduction = size - newSize;
const newPosition = position + reduction / 2;
return { newSize, newPosition }; return { newSize, newPosition };
} }

2
packages/core/src/utils/sorter/DropLocationDeterminer.ts

@ -140,8 +140,6 @@ export class DropLocationDeterminer<T, NodeType extends SortableTreeNode<T>> ext
!placeholderDimensions.equals(this.lastMoveData.placeholderDimensions) || !placeholderDimensions.equals(this.lastMoveData.placeholderDimensions) ||
placement !== this.lastMoveData.placement; placement !== this.lastMoveData.placement;
if (placeHolderMoved) { if (placeHolderMoved) {
console.log('🚀 ~ DropLocationDeterminer<T, ~ handleMove ~ targetNode:', targetNode);
console.log('🚀 ~ DropLocationDeterminer<T, ~ handleMove ~ placeholderDimensions:', placeholderDimensions);
this.eventHandlers.onPlaceholderPositionChange?.(placeholderDimensions!, placement!); this.eventHandlers.onPlaceholderPositionChange?.(placeholderDimensions!, placement!);
} }

4
packages/core/src/utils/sorter/SortableTreeNode.ts

@ -13,8 +13,8 @@ export abstract class SortableTreeNode<T> {
protected _dragSource: DragSource<T>; protected _dragSource: DragSource<T>;
protected _dropAreaConfig: DroppableZoneConfig = { protected _dropAreaConfig: DroppableZoneConfig = {
ratio: 1, ratio: 1,
minDroppableDimension: Number.MAX_VALUE, minUndroppableDimension: 0, // In px
maxUndroppableDimension: 0, maxUndroppableDimension: 0, // In px
}; };
/** The dimensions of the node. */ /** The dimensions of the node. */
public nodeDimensions?: Dimension; public nodeDimensions?: Dimension;

2
packages/core/src/utils/sorter/types.ts

@ -28,7 +28,7 @@ export type Placement = 'inside' | 'before' | 'after';
export type DroppableZoneConfig = { export type DroppableZoneConfig = {
ratio: number; ratio: number;
minDroppableDimension: number; // In px minUndroppableDimension: number; // In px
maxUndroppableDimension: number; // In px maxUndroppableDimension: number; // In px
}; };

Loading…
Cancel
Save