@os-design/drag-sort 1.0.44 → 1.0.45

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.
@@ -1,6 +1,6 @@
1
1
  import { type PortalProps } from '@os-design/portal';
2
2
  import React from 'react';
3
- import { type DragEndHandler } from './utils/useDragEffect.js';
3
+ import { type DragStartHandler, type DragEndHandler } from './utils/useDragEffect.js';
4
4
  export interface DragAndDropProps {
5
5
  /**
6
6
  * The container in which the dragged node will be rendered.
@@ -32,6 +32,11 @@ export interface DragAndDropProps {
32
32
  * @default 250
33
33
  */
34
34
  transitionDelayMs?: number;
35
+ /**
36
+ * The callback that is called when the drag is started.
37
+ * @default undefined
38
+ */
39
+ onDragStart?: DragStartHandler;
35
40
  /**
36
41
  * The callback that is called when the drag is completed.
37
42
  * @default undefined
@@ -47,6 +52,6 @@ export interface DragAndDropProps {
47
52
  * The container containing one or more lists with draggable nodes.
48
53
  */
49
54
  declare const DragAndDrop: React.FC<DragAndDropProps>;
50
- export type { DragEndHandler } from './utils/useDragEffect.js';
55
+ export type { DragStartHandler, DragEndHandler, } from './utils/useDragEffect.js';
51
56
  export default DragAndDrop;
52
57
  //# sourceMappingURL=DragAndDrop.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DragAndDrop.d.ts","sourceRoot":"","sources":["../src/DragAndDrop.tsx"],"names":[],"mappings":"AAAA,OAAe,EAAE,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAU7D,OAAO,KAON,MAAM,OAAO,CAAC;AAIf,OAAsB,EACpB,KAAK,cAAc,EAEpB,MAAM,0BAA0B,CAAC;AAKlC,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,oBAAoB,CAAC,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;IAChD;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B;;;OAGG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;OAGG;IACH,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B;;;OAGG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAOD;;GAEG;AACH,QAAA,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAmJ3C,CAAC;AAEF,YAAY,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE/D,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"DragAndDrop.d.ts","sourceRoot":"","sources":["../src/DragAndDrop.tsx"],"names":[],"mappings":"AAAA,OAAe,EAAE,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAU7D,OAAO,KAON,MAAM,OAAO,CAAC;AAIf,OAAsB,EACpB,KAAK,gBAAgB,EACrB,KAAK,cAAc,EAEpB,MAAM,0BAA0B,CAAC;AAKlC,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,oBAAoB,CAAC,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;IAChD;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B;;;OAGG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;OAGG;IACH,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B;;;OAGG;IACH,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B;;;OAGG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAOD;;GAEG;AACH,QAAA,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAyJ3C,CAAC;AAEF,YAAY,EACV,gBAAgB,EAChB,cAAc,GACf,MAAM,0BAA0B,CAAC;AAElC,eAAe,WAAW,CAAC"}
@@ -21,6 +21,7 @@ const DragAndDrop = ({
21
21
  autoScrollDistPercent = 20,
22
22
  autoScrollMaxSpeedPx = 100,
23
23
  transitionDelayMs = 250,
24
+ onDragStart = () => {},
24
25
  onDragEnd = () => {},
25
26
  children
26
27
  }) => {
@@ -56,7 +57,7 @@ const DragAndDrop = ({
56
57
  ms: transitionDelayMs,
57
58
  enabled: !!draggedNode
58
59
  });
59
- const onDragStart = useCallback((pos, startPos) => {
60
+ const onDragStartInternal = useCallback((pos, startPos) => {
60
61
  const startNode = startNodeRef.current;
61
62
  if (!startNode) return;
62
63
  const [,, nodeRef] = startNode.node;
@@ -71,8 +72,13 @@ const DragAndDrop = ({
71
72
  y: startPos.y - rect.y
72
73
  }
73
74
  });
75
+ onDragStart({
76
+ listId: startNode.list.id,
77
+ index: startNode.node[4],
78
+ id: startNode.node[5]
79
+ });
74
80
  startNodeRef.current = null;
75
- }, []);
81
+ }, [onDragStart]);
76
82
  const onDragMove = useCallback(pos => {
77
83
  setCursorPosition(pos);
78
84
  }, []);
@@ -83,7 +89,7 @@ const DragAndDrop = ({
83
89
  onMouseDown,
84
90
  onTouchStart
85
91
  } = useDrag({
86
- onDragStart,
92
+ onDragStart: onDragStartInternal,
87
93
  onDragMove,
88
94
  onDragEnd: dragEndHandler,
89
95
  minMouseDistPx,
@@ -12,6 +12,7 @@ export interface ItemLocation {
12
12
  index: number;
13
13
  id: string;
14
14
  }
15
+ export type DragStartHandler = (dragged: ItemLocation) => void;
15
16
  export type DragEndHandler = (dragged: ItemLocation, target: ItemLocation) => void;
16
17
  interface UseDragEffectProps {
17
18
  draggedNode: DraggedNode | null;
@@ -1 +1 @@
1
- {"version":3,"file":"useDragEffect.d.ts","sourceRoot":"","sources":["../../src/utils/useDragEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAGpD,OAAO,EAEL,KAAK,SAAS,EAKf,MAAM,OAAO,CAAC;AACf,OAAO,SAAS,MAAM,gBAAgB,CAAC;AACvC,OAAO,QAAQ,EAAE,EACf,KAAK,YAAY,EAGlB,MAAM,eAAe,CAAC;AAUvB,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,YAAY,CAAC;IACnB,QAAQ,EAAE,QAAQ,CAAC;CACpB;AAOD,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,MAAM,cAAc,GAAG,CAC3B,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,YAAY,KACjB,IAAI,CAAC;AAEV,UAAU,kBAAkB;IAC1B,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;IAChC,cAAc,EAAE,QAAQ,CAAC;IACzB,YAAY,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACnC,SAAS,EAAE,cAAc,CAAC;CAC3B;AAeD,QAAA,MAAM,aAAa,GAAI,OAAO,kBAAkB,SAoa/C,CAAC;AAEF,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"useDragEffect.d.ts","sourceRoot":"","sources":["../../src/utils/useDragEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAGpD,OAAO,EAEL,KAAK,SAAS,EAKf,MAAM,OAAO,CAAC;AACf,OAAO,SAAS,MAAM,gBAAgB,CAAC;AACvC,OAAO,QAAQ,EAAE,EACf,KAAK,YAAY,EAGlB,MAAM,eAAe,CAAC;AAUvB,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,YAAY,CAAC;IACnB,QAAQ,EAAE,QAAQ,CAAC;CACpB;AAOD,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,EAAE,YAAY,KAAK,IAAI,CAAC;AAE/D,MAAM,MAAM,cAAc,GAAG,CAC3B,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,YAAY,KACjB,IAAI,CAAC;AAEV,UAAU,kBAAkB;IAC1B,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;IAChC,cAAc,EAAE,QAAQ,CAAC;IACzB,YAAY,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACnC,SAAS,EAAE,cAAc,CAAC;CAC3B;AAeD,QAAA,MAAM,aAAa,GAAI,OAAO,kBAAkB,SAoa/C,CAAC;AAEF,eAAe,aAAa,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@os-design/drag-sort",
3
- "version": "1.0.44",
3
+ "version": "1.0.45",
4
4
  "license": "UNLICENSED",
5
5
  "repository": "git@gitlab.com:os-team/libs/os-design.git",
6
6
  "type": "module",
@@ -29,22 +29,22 @@
29
29
  "access": "public"
30
30
  },
31
31
  "dependencies": {
32
- "@os-design/portal": "^1.0.26",
33
- "@os-design/use-auto-scroll": "^1.0.30",
34
- "@os-design/use-drag": "^1.0.29",
35
- "@os-design/use-event": "^1.0.31",
36
- "@os-design/use-memo-object": "^1.0.27",
37
- "@os-design/use-prevent-default-event": "^1.0.28",
38
- "@os-design/use-throttle": "^1.0.30"
32
+ "@os-design/portal": "^1.0.27",
33
+ "@os-design/use-auto-scroll": "^1.0.31",
34
+ "@os-design/use-drag": "^1.0.30",
35
+ "@os-design/use-event": "^1.0.32",
36
+ "@os-design/use-memo-object": "^1.0.28",
37
+ "@os-design/use-prevent-default-event": "^1.0.29",
38
+ "@os-design/use-throttle": "^1.0.31"
39
39
  },
40
40
  "devDependencies": {
41
- "@os-design/omit-emotion-props": "^1.0.29",
42
- "@os-design/use-size": "^1.0.32",
41
+ "@os-design/omit-emotion-props": "^1.0.30",
42
+ "@os-design/use-size": "^1.0.33",
43
43
  "react-window": "^1.8.11"
44
44
  },
45
45
  "peerDependencies": {
46
46
  "react": "18",
47
47
  "react-dom": "18"
48
48
  },
49
- "gitHead": "60ba6c5b1658a4a302a3542e71e2ab3ce6407665"
49
+ "gitHead": "7a2aee283bdbdba8ba69a3212769ad321beaaed2"
50
50
  }
@@ -20,6 +20,7 @@ import ListStore from './utils/ListStore.js';
20
20
  import NodeList, { type ExistingNode } from './utils/NodeList.js';
21
21
  import { DragAndDropContext } from './utils/useDragAndDrop.js';
22
22
  import useDragEffect, {
23
+ type DragStartHandler,
23
24
  type DragEndHandler,
24
25
  type DraggedNode,
25
26
  } from './utils/useDragEffect.js';
@@ -58,6 +59,11 @@ export interface DragAndDropProps {
58
59
  * @default 250
59
60
  */
60
61
  transitionDelayMs?: number;
62
+ /**
63
+ * The callback that is called when the drag is started.
64
+ * @default undefined
65
+ */
66
+ onDragStart?: DragStartHandler;
61
67
  /**
62
68
  * The callback that is called when the drag is completed.
63
69
  * @default undefined
@@ -85,6 +91,7 @@ const DragAndDrop: React.FC<DragAndDropProps> = ({
85
91
  autoScrollDistPercent = 20,
86
92
  autoScrollMaxSpeedPx = 100,
87
93
  transitionDelayMs = 250,
94
+ onDragStart = () => {},
88
95
  onDragEnd = () => {},
89
96
  children,
90
97
  }) => {
@@ -121,7 +128,7 @@ const DragAndDrop: React.FC<DragAndDropProps> = ({
121
128
  enabled: !!draggedNode,
122
129
  });
123
130
 
124
- const onDragStart = useCallback<OnDragStart>(
131
+ const onDragStartInternal = useCallback<OnDragStart>(
125
132
  (pos: Position, startPos: Position) => {
126
133
  const startNode = startNodeRef.current;
127
134
  if (!startNode) return;
@@ -137,9 +144,14 @@ const DragAndDrop: React.FC<DragAndDropProps> = ({
137
144
  y: startPos.y - rect.y,
138
145
  },
139
146
  });
147
+ onDragStart({
148
+ listId: startNode.list.id,
149
+ index: startNode.node[4],
150
+ id: startNode.node[5],
151
+ });
140
152
  startNodeRef.current = null;
141
153
  },
142
- []
154
+ [onDragStart]
143
155
  );
144
156
 
145
157
  const onDragMove = useCallback<OnDragMove>((pos: Position) => {
@@ -151,7 +163,7 @@ const DragAndDrop: React.FC<DragAndDropProps> = ({
151
163
  }, []);
152
164
 
153
165
  const { onMouseDown, onTouchStart } = useDrag({
154
- onDragStart,
166
+ onDragStart: onDragStartInternal,
155
167
  onDragMove,
156
168
  onDragEnd: dragEndHandler,
157
169
  minMouseDistPx,
@@ -227,6 +239,9 @@ const DragAndDrop: React.FC<DragAndDropProps> = ({
227
239
  );
228
240
  };
229
241
 
230
- export type { DragEndHandler } from './utils/useDragEffect.js';
242
+ export type {
243
+ DragStartHandler,
244
+ DragEndHandler,
245
+ } from './utils/useDragEffect.js';
231
246
 
232
247
  export default DragAndDrop;
@@ -41,6 +41,8 @@ export interface ItemLocation {
41
41
  id: string;
42
42
  }
43
43
 
44
+ export type DragStartHandler = (dragged: ItemLocation) => void;
45
+
44
46
  export type DragEndHandler = (
45
47
  dragged: ItemLocation,
46
48
  target: ItemLocation