@react-aria/dnd 3.5.4-nightly.4479 → 3.5.4-nightly.4486
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/dist/import.mjs +17 -3
- package/dist/main.js +17 -3
- package/dist/main.js.map +1 -1
- package/dist/module.js +17 -3
- package/dist/module.js.map +1 -1
- package/dist/types.d.ts +6 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +11 -11
- package/src/useClipboard.ts +8 -2
- package/src/useDrop.ts +33 -19
package/dist/types.d.ts
CHANGED
|
@@ -40,6 +40,10 @@ export interface DropOptions {
|
|
|
40
40
|
* If true, the dropProps will omit these event handlers, and they will be applied to dropButtonProps instead.
|
|
41
41
|
*/
|
|
42
42
|
hasDropButton?: boolean;
|
|
43
|
+
/**
|
|
44
|
+
* Whether the drop target is disabled. If true, the drop target will not accept any drops.
|
|
45
|
+
*/
|
|
46
|
+
isDisabled?: boolean;
|
|
43
47
|
}
|
|
44
48
|
export interface DropResult {
|
|
45
49
|
/** Props for the droppable element. */
|
|
@@ -180,6 +184,8 @@ export interface ClipboardProps {
|
|
|
180
184
|
onCut?: () => void;
|
|
181
185
|
/** Handler that is called when the user triggers a paste interaction. */
|
|
182
186
|
onPaste?: (items: DropItem[]) => void;
|
|
187
|
+
/** Whether the clipboard is disabled. */
|
|
188
|
+
isDisabled?: boolean;
|
|
183
189
|
}
|
|
184
190
|
export interface ClipboardResult {
|
|
185
191
|
/** Props for the element that will handle clipboard events. */
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":";;;;ACwBA,OAAO,MAAM,kCAA8B,CAAC;AAoS5C,sDAAsD;AACtD,+BAA+B,QAAQ,EAAE,QAAQ,GAAG,QAAQ,IAAI,YAAY,CAE3E;AAED,6CAA6C;AAC7C,+BAA+B,QAAQ,EAAE,QAAQ,GAAG,QAAQ,IAAI,YAAY,CAE3E;AAED,kDAAkD;AAClD,oCAAoC,QAAQ,EAAE,QAAQ,GAAG,QAAQ,IAAI,iBAAiB,CAErF;ACvOD,eAAe;AACf,qCAAqC,OAAO,CAE3C;AGhFD;IACE,uCAAuC;IACvC,GAAG,EAAE,UAAU,WAAW,CAAC,CAAC;IAC5B;;;OAGG;IACH,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,SAAU,EAAE,iBAAiB,EAAE,aAAa,EAAE,KAAK,aAAa,CAAC;IAC5F,yFAAyF;IACzF,wBAAwB,CAAC,EAAE,CAAC,KAAK,EAAE,SAAU,EAAE,iBAAiB,EAAE,aAAa,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,aAAa,CAAC;IAC1H,uEAAuE;IACvE,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,cAAc,KAAK,IAAI,CAAC;IAC1C,gFAAgF;IAChF,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,aAAa,KAAK,IAAI,CAAC;IACxC;;;;OAIG;IACH,cAAc,CAAC,EAAE,CAAC,CAAC,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAChD,sEAAsE;IACtE,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,aAAa,KAAK,IAAI,CAAC;IACxC,8EAA8E;IAC9E,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,SAAS,KAAK,IAAI,CAAC;IAChC;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;
|
|
1
|
+
{"mappings":"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","sources":["packages/@react-aria/dnd/src/packages/@react-aria/dnd/src/constants.ts","packages/@react-aria/dnd/src/packages/@react-aria/dnd/src/utils.ts","packages/@react-aria/dnd/src/packages/@react-aria/dnd/src/DragManager.ts","packages/@react-aria/dnd/src/packages/@react-aria/dnd/src/useAutoScroll.ts","packages/@react-aria/dnd/src/packages/@react-aria/dnd/src/useVirtualDrop.ts","packages/@react-aria/dnd/src/packages/@react-aria/dnd/src/useDrop.ts","packages/@react-aria/dnd/src/packages/@react-aria/dnd/src/useDroppableCollection.ts","packages/@react-aria/dnd/src/packages/@react-aria/dnd/src/useDroppableItem.ts","packages/@react-aria/dnd/src/packages/@react-aria/dnd/src/useDropIndicator.ts","packages/@react-aria/dnd/src/packages/@react-aria/dnd/src/useDrag.ts","packages/@react-aria/dnd/src/packages/@react-aria/dnd/src/useDraggableItem.ts","packages/@react-aria/dnd/src/packages/@react-aria/dnd/src/useDraggableCollection.ts","packages/@react-aria/dnd/src/packages/@react-aria/dnd/src/DragPreview.tsx","packages/@react-aria/dnd/src/packages/@react-aria/dnd/src/useClipboard.ts","packages/@react-aria/dnd/src/packages/@react-aria/dnd/src/ListDropTargetDelegate.ts","packages/@react-aria/dnd/src/packages/@react-aria/dnd/src/index.ts","packages/@react-aria/dnd/src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nexport type {DroppableCollectionOptions, DroppableCollectionResult} from './useDroppableCollection';\nexport type {DroppableItemOptions, DroppableItemResult} from './useDroppableItem';\nexport type {DropIndicatorProps, DropIndicatorAria} from './useDropIndicator';\nexport type {DraggableItemProps, DraggableItemResult} from './useDraggableItem';\nexport type {DraggableCollectionOptions} from './useDraggableCollection';\nexport type {DragPreviewProps} from './DragPreview';\nexport type {DragOptions, DragResult} from './useDrag';\nexport type {DropOptions, DropResult} from './useDrop';\nexport type {ClipboardProps, ClipboardResult} from './useClipboard';\nexport type {\n DirectoryDropItem,\n DragEndEvent,\n DraggableCollectionEndEvent,\n DraggableCollectionMoveEvent,\n DraggableCollectionStartEvent,\n DragItem,\n DragMoveEvent,\n DragPreviewRenderer,\n DragStartEvent,\n DragTypes,\n DropEnterEvent,\n DropEvent,\n DropExitEvent,\n DropItem,\n DropMoveEvent,\n DropOperation,\n DroppableCollectionDropEvent,\n DroppableCollectionEnterEvent,\n DroppableCollectionExitEvent,\n DroppableCollectionInsertDropEvent,\n DroppableCollectionMoveEvent,\n DroppableCollectionOnItemDropEvent,\n DroppableCollectionReorderEvent,\n DroppableCollectionRootDropEvent,\n DropPosition,\n DropTarget,\n DropTargetDelegate,\n FileDropItem,\n ItemDropTarget,\n RootDropTarget,\n TextDropItem\n} from '@react-types/shared';\n\nexport {DIRECTORY_DRAG_TYPE} from './utils';\nexport {useDrag} from './useDrag';\nexport {useDrop} from './useDrop';\nexport {useDroppableCollection} from './useDroppableCollection';\nexport {useDroppableItem} from './useDroppableItem';\nexport {useDropIndicator} from './useDropIndicator';\nexport {useDraggableItem} from './useDraggableItem';\nexport {useDraggableCollection} from './useDraggableCollection';\nexport {useClipboard} from './useClipboard';\nexport {DragPreview} from './DragPreview';\nexport {ListDropTargetDelegate} from './ListDropTargetDelegate';\nexport {isVirtualDragging} from './DragManager';\nexport {isDirectoryDropItem, isFileDropItem, isTextDropItem} from './utils';\n"],"names":[],"version":3,"file":"types.d.ts.map"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@react-aria/dnd",
|
|
3
|
-
"version": "3.5.4-nightly.
|
|
3
|
+
"version": "3.5.4-nightly.4486+34924436f",
|
|
4
4
|
"description": "Spectrum UI components in React",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"main": "dist/main.js",
|
|
@@ -22,15 +22,15 @@
|
|
|
22
22
|
"url": "https://github.com/adobe/react-spectrum"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@internationalized/string": "3.2.2-nightly.
|
|
26
|
-
"@react-aria/i18n": "3.0.0-nightly.
|
|
27
|
-
"@react-aria/interactions": "3.0.0-nightly.
|
|
28
|
-
"@react-aria/live-announcer": "3.0.0-nightly.
|
|
29
|
-
"@react-aria/overlays": "3.0.0-nightly.
|
|
30
|
-
"@react-aria/utils": "3.0.0-nightly.
|
|
31
|
-
"@react-stately/dnd": "3.2.9-nightly.
|
|
32
|
-
"@react-types/button": "3.9.3-nightly.
|
|
33
|
-
"@react-types/shared": "3.0.0-nightly.
|
|
25
|
+
"@internationalized/string": "3.2.2-nightly.4486+34924436f",
|
|
26
|
+
"@react-aria/i18n": "3.0.0-nightly.2774+34924436f",
|
|
27
|
+
"@react-aria/interactions": "3.0.0-nightly.2774+34924436f",
|
|
28
|
+
"@react-aria/live-announcer": "3.0.0-nightly.2774+34924436f",
|
|
29
|
+
"@react-aria/overlays": "3.0.0-nightly.2774+34924436f",
|
|
30
|
+
"@react-aria/utils": "3.0.0-nightly.2774+34924436f",
|
|
31
|
+
"@react-stately/dnd": "3.2.9-nightly.4486+34924436f",
|
|
32
|
+
"@react-types/button": "3.9.3-nightly.4486+34924436f",
|
|
33
|
+
"@react-types/shared": "3.0.0-nightly.2774+34924436f",
|
|
34
34
|
"@swc/helpers": "^0.5.0"
|
|
35
35
|
},
|
|
36
36
|
"peerDependencies": {
|
|
@@ -40,5 +40,5 @@
|
|
|
40
40
|
"publishConfig": {
|
|
41
41
|
"access": "public"
|
|
42
42
|
},
|
|
43
|
-
"gitHead": "
|
|
43
|
+
"gitHead": "34924436f5b76b44b8adbb0a4fdb64c1c15de99f"
|
|
44
44
|
}
|
package/src/useClipboard.ts
CHANGED
|
@@ -24,7 +24,9 @@ export interface ClipboardProps {
|
|
|
24
24
|
/** Handler that is called when the user triggers a cut interaction. */
|
|
25
25
|
onCut?: () => void,
|
|
26
26
|
/** Handler that is called when the user triggers a paste interaction. */
|
|
27
|
-
onPaste?: (items: DropItem[]) => void
|
|
27
|
+
onPaste?: (items: DropItem[]) => void,
|
|
28
|
+
/** Whether the clipboard is disabled. */
|
|
29
|
+
isDisabled?: boolean
|
|
28
30
|
}
|
|
29
31
|
|
|
30
32
|
export interface ClipboardResult {
|
|
@@ -64,6 +66,7 @@ function addGlobalEventListener(event, fn) {
|
|
|
64
66
|
* data types, and integrates with the operating system native clipboard.
|
|
65
67
|
*/
|
|
66
68
|
export function useClipboard(options: ClipboardProps): ClipboardResult {
|
|
69
|
+
let {isDisabled} = options;
|
|
67
70
|
let isFocusedRef = useRef(false);
|
|
68
71
|
let {focusProps} = useFocus({
|
|
69
72
|
onFocusChange: (isFocused) => {
|
|
@@ -123,6 +126,9 @@ export function useClipboard(options: ClipboardProps): ClipboardResult {
|
|
|
123
126
|
});
|
|
124
127
|
|
|
125
128
|
useEffect(() => {
|
|
129
|
+
if (isDisabled) {
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
126
132
|
return chain(
|
|
127
133
|
addGlobalEventListener('beforecopy', onBeforeCopy),
|
|
128
134
|
addGlobalEventListener('copy', onCopy),
|
|
@@ -131,7 +137,7 @@ export function useClipboard(options: ClipboardProps): ClipboardResult {
|
|
|
131
137
|
addGlobalEventListener('beforepaste', onBeforePaste),
|
|
132
138
|
addGlobalEventListener('paste', onPaste)
|
|
133
139
|
);
|
|
134
|
-
}, [onBeforeCopy, onCopy, onBeforeCut, onCut, onBeforePaste, onPaste]);
|
|
140
|
+
}, [isDisabled, onBeforeCopy, onCopy, onBeforeCut, onCut, onBeforePaste, onPaste]);
|
|
135
141
|
|
|
136
142
|
return {
|
|
137
143
|
clipboardProps: focusProps
|
package/src/useDrop.ts
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
*/
|
|
12
12
|
|
|
13
13
|
import {AriaButtonProps} from '@react-types/button';
|
|
14
|
-
import {DragEvent, HTMLAttributes, RefObject,
|
|
14
|
+
import {DragEvent, HTMLAttributes, RefObject, useRef, useState} from 'react';
|
|
15
15
|
import * as DragManager from './DragManager';
|
|
16
16
|
import {DragTypes, globalAllowedDropOperations, globalDndState, readFromDataTransfer, setGlobalDnDState, setGlobalDropEffect} from './utils';
|
|
17
17
|
import {DROP_EFFECT_TO_DROP_OPERATION, DROP_OPERATION, DROP_OPERATION_ALLOWED, DROP_OPERATION_TO_DROP_EFFECT} from './constants';
|
|
@@ -47,7 +47,11 @@ export interface DropOptions {
|
|
|
47
47
|
* Whether the item has an explicit focusable drop affordance to initiate accessible drag and drop mode.
|
|
48
48
|
* If true, the dropProps will omit these event handlers, and they will be applied to dropButtonProps instead.
|
|
49
49
|
*/
|
|
50
|
-
hasDropButton?: boolean
|
|
50
|
+
hasDropButton?: boolean,
|
|
51
|
+
/**
|
|
52
|
+
* Whether the drop target is disabled. If true, the drop target will not accept any drops.
|
|
53
|
+
*/
|
|
54
|
+
isDisabled?: boolean
|
|
51
55
|
}
|
|
52
56
|
|
|
53
57
|
export interface DropResult {
|
|
@@ -57,7 +61,6 @@ export interface DropResult {
|
|
|
57
61
|
isDropTarget: boolean,
|
|
58
62
|
/** Props for the explicit drop button affordance, if any. */
|
|
59
63
|
dropButtonProps?: AriaButtonProps
|
|
60
|
-
|
|
61
64
|
}
|
|
62
65
|
|
|
63
66
|
const DROP_ACTIVATE_TIMEOUT = 800;
|
|
@@ -67,7 +70,7 @@ const DROP_ACTIVATE_TIMEOUT = 800;
|
|
|
67
70
|
* based drag and drop, in addition to full parity for keyboard and screen reader users.
|
|
68
71
|
*/
|
|
69
72
|
export function useDrop(options: DropOptions): DropResult {
|
|
70
|
-
let {hasDropButton} = options;
|
|
73
|
+
let {hasDropButton, isDisabled} = options;
|
|
71
74
|
let [isDropTarget, setDropTarget] = useState(false);
|
|
72
75
|
let state = useRef({
|
|
73
76
|
x: 0,
|
|
@@ -311,23 +314,34 @@ export function useDrop(options: DropOptions): DropResult {
|
|
|
311
314
|
});
|
|
312
315
|
|
|
313
316
|
let {ref} = options;
|
|
314
|
-
useLayoutEffect(() =>
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
317
|
+
useLayoutEffect(() => {
|
|
318
|
+
if (isDisabled) {
|
|
319
|
+
return;
|
|
320
|
+
}
|
|
321
|
+
return DragManager.registerDropTarget({
|
|
322
|
+
element: ref.current,
|
|
323
|
+
getDropOperation: getDropOperationKeyboard,
|
|
324
|
+
onDropEnter(e) {
|
|
325
|
+
setDropTarget(true);
|
|
326
|
+
onDropEnter(e);
|
|
327
|
+
},
|
|
328
|
+
onDropExit(e) {
|
|
329
|
+
setDropTarget(false);
|
|
330
|
+
onDropExit(e);
|
|
331
|
+
},
|
|
332
|
+
onDrop: onKeyboardDrop,
|
|
333
|
+
onDropActivate
|
|
334
|
+
});
|
|
335
|
+
}, [isDisabled, ref, getDropOperationKeyboard, onDropEnter, onDropExit, onKeyboardDrop, onDropActivate]);
|
|
328
336
|
|
|
329
337
|
let {dropProps} = useVirtualDrop();
|
|
330
|
-
|
|
338
|
+
if (isDisabled) {
|
|
339
|
+
return {
|
|
340
|
+
dropProps: {},
|
|
341
|
+
dropButtonProps: {isDisabled: true},
|
|
342
|
+
isDropTarget: false
|
|
343
|
+
};
|
|
344
|
+
}
|
|
331
345
|
return {
|
|
332
346
|
dropProps: {
|
|
333
347
|
...(!hasDropButton && dropProps),
|