@vue-dnd-kit/core 1.7.0 → 2.0.0-alpha10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +74 -305
- package/dist/external/components/DefaultOverlay.vue.d.ts +2 -0
- package/dist/external/components/DnDProvider.vue.d.ts +25 -0
- package/dist/external/composables/makeAutoScroll.d.ts +13 -0
- package/dist/external/composables/makeConstraintArea.d.ts +7 -0
- package/dist/external/composables/makeDraggable.d.ts +19 -0
- package/dist/external/composables/makeDroppable.d.ts +13 -0
- package/dist/external/composables/makeSelectionArea.d.ts +14 -0
- package/dist/external/composables/makeSnappedOverlayPosition.d.ts +20 -0
- package/dist/external/composables/useDnDProvider.d.ts +2 -0
- package/dist/external/env.d.ts +7 -0
- package/dist/external/index.d.ts +11 -0
- package/dist/external/types/entities.d.ts +157 -0
- package/dist/external/types/index.d.ts +4 -0
- package/dist/external/types/placement.d.ts +22 -0
- package/dist/external/types/pointer.d.ts +10 -0
- package/dist/external/types/provider.d.ts +84 -0
- package/dist/index.d.ts +2 -2141
- package/dist/internal/composables/useDnDProviderEvents.d.ts +2 -0
- package/dist/internal/composables/useDnDProviderInternal.d.ts +2 -0
- package/dist/internal/composables/useDnDProviderState.d.ts +4 -0
- package/dist/internal/composables/useSizeObserver.d.ts +33 -0
- package/dist/internal/composables/useViewportAutoScroll.d.ts +9 -0
- package/dist/internal/logic/hover.d.ts +7 -0
- package/dist/internal/logic/keyboard.d.ts +6 -0
- package/dist/internal/logic/payload.d.ts +12 -0
- package/dist/internal/logic/pointer.d.ts +9 -0
- package/dist/internal/logic/scroll.d.ts +2 -0
- package/dist/internal/sensors/default-collision.d.ts +7 -0
- package/dist/internal/sensors/index.d.ts +3 -0
- package/dist/internal/sensors/sensor.d.ts +68 -0
- package/dist/internal/sensors/steps.d.ts +30 -0
- package/dist/internal/types/auto-scroll.d.ts +19 -0
- package/dist/internal/types/observer.d.ts +11 -0
- package/dist/internal/types/provider.d.ts +30 -0
- package/dist/internal/utils/auto-scroll.d.ts +13 -0
- package/dist/internal/utils/constraints.d.ts +40 -0
- package/dist/internal/utils/disabled.d.ts +9 -0
- package/dist/internal/utils/dom.d.ts +44 -0
- package/dist/internal/utils/drag-activation.d.ts +29 -0
- package/dist/internal/utils/events.d.ts +22 -0
- package/dist/internal/utils/geometry.d.ts +23 -0
- package/dist/internal/utils/groups.d.ts +19 -0
- package/dist/internal/utils/hover.d.ts +29 -0
- package/dist/internal/utils/keyboard.d.ts +5 -0
- package/dist/internal/utils/namespaces.d.ts +18 -0
- package/dist/internal/utils/observer.d.ts +27 -0
- package/dist/internal/utils/placement.d.ts +22 -0
- package/dist/internal/utils/pointer.d.ts +33 -0
- package/dist/internal/utils/provider.d.ts +12 -0
- package/dist/internal/utils/selection.d.ts +27 -0
- package/dist/internal/utils/session.d.ts +5 -0
- package/dist/vite.svg +1 -0
- package/dist/vue-dnd-kit-core.cjs.js +2 -2
- package/dist/vue-dnd-kit-core.es.js +1237 -850
- package/package.json +75 -73
- package/LICENSE +0 -21
- package/dist/vue-dnd-kit-core.cjs.js.map +0 -1
- package/dist/vue-dnd-kit-core.es.js.map +0 -1
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import { ComponentPublicInstance, ComputedRef, Ref } from 'vue';
|
|
2
|
+
import { IPlacementMargins } from './placement';
|
|
3
|
+
import { IDragEvent } from './provider';
|
|
4
|
+
export type TDnDNode = HTMLElement | ComponentPublicInstance | null;
|
|
5
|
+
export type TDnDNodeRef = Readonly<Ref<TDnDNode>>;
|
|
6
|
+
export type TDragAxis = 'x' | 'y' | 'both';
|
|
7
|
+
export type TDraggablePayload<T = any, D = any> = () => [number, T[], D?];
|
|
8
|
+
|
|
9
|
+
/** Resolved payload from TDraggablePayload (index + items + optional dropData) */
|
|
10
|
+
export interface IDragPayload<T = unknown, D = unknown> {
|
|
11
|
+
index: number;
|
|
12
|
+
items: T[];
|
|
13
|
+
dropData?: D;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export type TDroppablePayload<T = any, U = any> = () => [T[], U?];
|
|
17
|
+
|
|
18
|
+
/** Resolved payload from TDroppablePayload (items + optional userData) */
|
|
19
|
+
export interface IDropZonePayload<T = unknown, U = unknown> {
|
|
20
|
+
items: T[];
|
|
21
|
+
userData?: U;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export interface IBaseOptions {
|
|
25
|
+
disabled?: boolean | Ref<boolean>;
|
|
26
|
+
groups?: string[] | Ref<string[]>;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export interface IBaseEntity {
|
|
30
|
+
disabled?: boolean;
|
|
31
|
+
groups?: string[];
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export interface IEntities {
|
|
35
|
+
draggableMap: Map<HTMLElement, IDraggableEntity>;
|
|
36
|
+
droppableMap: Map<HTMLElement, IDroppableEntity>;
|
|
37
|
+
|
|
38
|
+
selectingArea?: HTMLElement;
|
|
39
|
+
initiatingDraggable?: HTMLElement;
|
|
40
|
+
|
|
41
|
+
selectableAreaMap: Map<HTMLElement, ISelectableAreaEntity>;
|
|
42
|
+
constraintsAreaMap: Map<HTMLElement, IConstraintsAreaEntity>;
|
|
43
|
+
|
|
44
|
+
draggingMap: Map<HTMLElement, IDraggingEntity>;
|
|
45
|
+
selectedSet: Set<HTMLElement>;
|
|
46
|
+
|
|
47
|
+
modifiersDraggableSet: ComputedRef<Set<HTMLElement>>;
|
|
48
|
+
modifiersSelectableAreaSet: ComputedRef<Set<HTMLElement>>;
|
|
49
|
+
|
|
50
|
+
allowedDroppableSet: ComputedRef<Set<HTMLElement>>;
|
|
51
|
+
allowedDraggableSet: ComputedRef<Set<HTMLElement>>;
|
|
52
|
+
|
|
53
|
+
visibleDraggableSet: Set<HTMLElement>;
|
|
54
|
+
visibleDroppableSet: Set<HTMLElement>;
|
|
55
|
+
visibleSelectableAreaSet: Set<HTMLElement>;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
export type TModifierMethod = 'every' | 'some';
|
|
59
|
+
export type TModifierKeys = string[];
|
|
60
|
+
|
|
61
|
+
export interface IModifier {
|
|
62
|
+
keys: TModifierKeys;
|
|
63
|
+
method: TModifierMethod;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
export interface IModifierOptions {
|
|
67
|
+
keys: TModifierKeys | Ref<TModifierKeys>;
|
|
68
|
+
method: TModifierMethod | Ref<TModifierMethod>;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
export interface ISelectableAreaEvents {
|
|
72
|
+
/** Called when selection ends (pointer up) with selected elements */
|
|
73
|
+
onSelected?: (selected: HTMLElement[]) => void;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
export interface ISelectableAreaEntity extends IBaseEntity {
|
|
77
|
+
modifier: IModifier;
|
|
78
|
+
events?: ISelectableAreaEvents;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
export interface IConstraintsAreaEntity {
|
|
82
|
+
axis?: TDragAxis;
|
|
83
|
+
restrictToArea?: boolean;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
export interface IDraggableEvents {
|
|
87
|
+
/** Dragged element(s) — identifies which element is being dragged */
|
|
88
|
+
onSelfDragStart?: (event: IDragEvent) => void;
|
|
89
|
+
onSelfDragMove?: (event: IDragEvent) => void;
|
|
90
|
+
onSelfDragEnd?: (event: IDragEvent) => void;
|
|
91
|
+
onSelfDragCancel?: (event: IDragEvent) => void;
|
|
92
|
+
|
|
93
|
+
/** Element under cursor during drag — when another element is dragged over this one */
|
|
94
|
+
onDragStart?: (event: IDragEvent) => void;
|
|
95
|
+
onDragMove?: (event: IDragEvent) => void;
|
|
96
|
+
onDragEnd?: (event: IDragEvent) => void;
|
|
97
|
+
onDragCancel?: (event: IDragEvent) => void;
|
|
98
|
+
|
|
99
|
+
/** Alias / shortcut: cursor enters this draggable during drag */
|
|
100
|
+
onHover?: (event: IDragEvent) => void;
|
|
101
|
+
/** Cursor leaves this draggable during drag */
|
|
102
|
+
onLeave?: (event: IDragEvent) => void;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
export interface IDroppableEvents {
|
|
106
|
+
onEnter?: (event: IDragEvent) => void;
|
|
107
|
+
onDrop?: (event: IDragEvent) => void | Promise<void>;
|
|
108
|
+
onLeave?: (event: IDragEvent) => void;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
export interface IDragActivationOptions {
|
|
112
|
+
distance?:
|
|
113
|
+
| {
|
|
114
|
+
x?: number | Ref<number>;
|
|
115
|
+
y?: number | Ref<number>;
|
|
116
|
+
condition?: TCondition | Ref<TCondition>;
|
|
117
|
+
}
|
|
118
|
+
| number
|
|
119
|
+
| Ref<number>;
|
|
120
|
+
delay?: number | Ref<number>;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
export interface IDragActivation {
|
|
124
|
+
distance?:
|
|
125
|
+
| {
|
|
126
|
+
x?: number;
|
|
127
|
+
y?: number;
|
|
128
|
+
condition?: TCondition;
|
|
129
|
+
}
|
|
130
|
+
| number;
|
|
131
|
+
delay?: number;
|
|
132
|
+
condition?: TCondition;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
export type TCondition = 'any' | 'both';
|
|
136
|
+
|
|
137
|
+
export interface IDraggableEntity extends IBaseEntity {
|
|
138
|
+
render?: Component;
|
|
139
|
+
events?: IDraggableEvents;
|
|
140
|
+
payload?: TDraggablePayload;
|
|
141
|
+
modifier?: IModifier;
|
|
142
|
+
dragHandle?: string;
|
|
143
|
+
activation?: IDragActivation;
|
|
144
|
+
/** Margins for center zone. When pointer in center and element is also droppable, zone mode is used. */
|
|
145
|
+
placementMargins?: IPlacementMargins;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
export interface IDraggingEntity extends IDraggableEntity {
|
|
149
|
+
initialHTML: string;
|
|
150
|
+
initialRect: DOMRect;
|
|
151
|
+
initialOuterHTML: string;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
export interface IDroppableEntity extends IBaseEntity {
|
|
155
|
+
events?: IDroppableEvents;
|
|
156
|
+
payload?: TDroppablePayload;
|
|
157
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export interface IPlacement {
|
|
2
|
+
top: boolean;
|
|
3
|
+
right: boolean;
|
|
4
|
+
bottom: boolean;
|
|
5
|
+
left: boolean;
|
|
6
|
+
/** True when pointer is in center zone (inside placementMargins). Used for dual-role draggable+zone. */
|
|
7
|
+
center: boolean;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export interface IPlacementMargins {
|
|
11
|
+
top?: number;
|
|
12
|
+
right?: number;
|
|
13
|
+
bottom?: number;
|
|
14
|
+
left?: number;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/** Options for makeAutoScroll and DnDProvider autoScrollViewport prop */
|
|
18
|
+
export interface IAutoScrollOptions {
|
|
19
|
+
threshold?: number | IPlacementMargins;
|
|
20
|
+
speed?: number;
|
|
21
|
+
disabled?: boolean;
|
|
22
|
+
}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { IConstraintsAreaEntity, IDragPayload, IDropZonePayload, IDraggableEntity, IDroppableEntity, IEntities, ISelectableAreaEntity, TDnDNode } from './entities';
|
|
2
|
+
import { ICoordinates, TPointerState } from './pointer';
|
|
3
|
+
import { IAutoScrollOptions, IPlacement } from './placement';
|
|
4
|
+
import { Component, ComputedRef, CSSProperties, Reactive, Ref, ShallowRef, WritableComputedRef } from 'vue';
|
|
5
|
+
/** Event object passed to drag/drop handlers */
|
|
6
|
+
export interface IDragEvent<
|
|
7
|
+
T = unknown,
|
|
8
|
+
D = unknown,
|
|
9
|
+
U = unknown,
|
|
10
|
+
V = unknown,
|
|
11
|
+
> {
|
|
12
|
+
/** Payload from the dragged item (draggable payload) */
|
|
13
|
+
payload: IDragPayload<T, D> | undefined;
|
|
14
|
+
/** Payload from the drop zone (droppable payload), set for onEnter/onDrop/onLeave */
|
|
15
|
+
dropZonePayload?: IDropZonePayload<U, V>;
|
|
16
|
+
provider: IDnDProviderExternal;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/** Map element → placement for elements under cursor during drag */
|
|
20
|
+
export type THoveredMap = Map<HTMLElement, IPlacement>;
|
|
21
|
+
|
|
22
|
+
export interface IHovered {
|
|
23
|
+
draggable: THoveredMap;
|
|
24
|
+
droppable: THoveredMap;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export interface IDnDProviderExternal {
|
|
28
|
+
state: Ref<TDnDState | undefined>;
|
|
29
|
+
pointer: Ref<TPointerState | undefined>;
|
|
30
|
+
entities: Reactive<IEntities>;
|
|
31
|
+
keyboard: {
|
|
32
|
+
keys: {
|
|
33
|
+
pressedKeys: Ref<Set<string>>;
|
|
34
|
+
forDrag: string[];
|
|
35
|
+
forCancel: string[];
|
|
36
|
+
forDrop: string[];
|
|
37
|
+
forMove: string[];
|
|
38
|
+
forMoveFaster: string[];
|
|
39
|
+
};
|
|
40
|
+
step: number;
|
|
41
|
+
moveFaster: number;
|
|
42
|
+
};
|
|
43
|
+
scrollPosition: Reactive<ICoordinates>;
|
|
44
|
+
delay: Reactive<IDelay>;
|
|
45
|
+
distanceProgress: ComputedRef<number>;
|
|
46
|
+
overlay: {
|
|
47
|
+
ref: Ref<HTMLElement | null>;
|
|
48
|
+
position: ComputedRef<ICoordinates>;
|
|
49
|
+
size: Ref<DOMRect | null>;
|
|
50
|
+
render: Ref<Component | undefined>;
|
|
51
|
+
to: WritableComputedRef<string | false | null | undefined>;
|
|
52
|
+
};
|
|
53
|
+
hovered: IHovered;
|
|
54
|
+
collision: {
|
|
55
|
+
run?: (provider: any) => {
|
|
56
|
+
elements: HTMLElement[];
|
|
57
|
+
zones: HTMLElement[];
|
|
58
|
+
};
|
|
59
|
+
throttle: Ref<number>;
|
|
60
|
+
};
|
|
61
|
+
autoScrollViewport: ComputedRef<
|
|
62
|
+
IAutoScrollOptions | true | false | null | undefined
|
|
63
|
+
>;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
export interface IDelay {
|
|
67
|
+
progress: number;
|
|
68
|
+
startTime: number;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
export type TDnDState =
|
|
72
|
+
| 'dragging'
|
|
73
|
+
| 'selecting'
|
|
74
|
+
| 'activating'
|
|
75
|
+
| null
|
|
76
|
+
| undefined;
|
|
77
|
+
|
|
78
|
+
/** DnDProvider props */
|
|
79
|
+
export interface IDnDProviderProps {
|
|
80
|
+
/** Enable viewport auto-scroll: true = defaults, object = options. false | null | undefined = disabled. */
|
|
81
|
+
autoScrollViewport?: IAutoScrollOptions | true | false | null;
|
|
82
|
+
/** Teleport overlay to element: 'body' = defaults, string = element id. false | null | undefined = disabled. */
|
|
83
|
+
overlayTo?: string | false | null;
|
|
84
|
+
}
|