@react-aria/dnd 3.0.0-alpha.9 → 3.0.0-nightly-4980928d3-240906
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/DragManager.main.js +432 -0
- package/dist/DragManager.main.js.map +1 -0
- package/dist/DragManager.mjs +423 -0
- package/dist/DragManager.module.js +423 -0
- package/dist/DragManager.module.js.map +1 -0
- package/dist/DragPreview.main.js +59 -0
- package/dist/DragPreview.main.js.map +1 -0
- package/dist/DragPreview.mjs +50 -0
- package/dist/DragPreview.module.js +50 -0
- package/dist/DragPreview.module.js.map +1 -0
- package/dist/ListDropTargetDelegate.main.js +123 -0
- package/dist/ListDropTargetDelegate.main.js.map +1 -0
- package/dist/ListDropTargetDelegate.mjs +118 -0
- package/dist/ListDropTargetDelegate.module.js +118 -0
- package/dist/ListDropTargetDelegate.module.js.map +1 -0
- package/dist/ar-AE.main.js +44 -0
- package/dist/ar-AE.main.js.map +1 -0
- package/dist/ar-AE.mjs +46 -0
- package/dist/ar-AE.module.js +46 -0
- package/dist/ar-AE.module.js.map +1 -0
- package/dist/bg-BG.main.js +44 -0
- package/dist/bg-BG.main.js.map +1 -0
- package/dist/bg-BG.mjs +46 -0
- package/dist/bg-BG.module.js +46 -0
- package/dist/bg-BG.module.js.map +1 -0
- package/dist/constants.main.js +65 -0
- package/dist/constants.main.js.map +1 -0
- package/dist/constants.mjs +53 -0
- package/dist/constants.module.js +53 -0
- package/dist/constants.module.js.map +1 -0
- package/dist/cs-CZ.main.js +45 -0
- package/dist/cs-CZ.main.js.map +1 -0
- package/dist/cs-CZ.mjs +47 -0
- package/dist/cs-CZ.module.js +47 -0
- package/dist/cs-CZ.module.js.map +1 -0
- package/dist/da-DK.main.js +44 -0
- package/dist/da-DK.main.js.map +1 -0
- package/dist/da-DK.mjs +46 -0
- package/dist/da-DK.module.js +46 -0
- package/dist/da-DK.module.js.map +1 -0
- package/dist/de-DE.main.js +44 -0
- package/dist/de-DE.main.js.map +1 -0
- package/dist/de-DE.mjs +46 -0
- package/dist/de-DE.module.js +46 -0
- package/dist/de-DE.module.js.map +1 -0
- package/dist/el-GR.main.js +44 -0
- package/dist/el-GR.main.js.map +1 -0
- package/dist/el-GR.mjs +46 -0
- package/dist/el-GR.module.js +46 -0
- package/dist/el-GR.module.js.map +1 -0
- package/dist/en-US.main.js +44 -0
- package/dist/en-US.main.js.map +1 -0
- package/dist/en-US.mjs +46 -0
- package/dist/en-US.module.js +46 -0
- package/dist/en-US.module.js.map +1 -0
- package/dist/es-ES.main.js +44 -0
- package/dist/es-ES.main.js.map +1 -0
- package/dist/es-ES.mjs +46 -0
- package/dist/es-ES.module.js +46 -0
- package/dist/es-ES.module.js.map +1 -0
- package/dist/et-EE.main.js +44 -0
- package/dist/et-EE.main.js.map +1 -0
- package/dist/et-EE.mjs +46 -0
- package/dist/et-EE.module.js +46 -0
- package/dist/et-EE.module.js.map +1 -0
- package/dist/fi-FI.main.js +44 -0
- package/dist/fi-FI.main.js.map +1 -0
- package/dist/fi-FI.mjs +46 -0
- package/dist/fi-FI.module.js +46 -0
- package/dist/fi-FI.module.js.map +1 -0
- package/dist/fr-FR.main.js +44 -0
- package/dist/fr-FR.main.js.map +1 -0
- package/dist/fr-FR.mjs +46 -0
- package/dist/fr-FR.module.js +46 -0
- package/dist/fr-FR.module.js.map +1 -0
- package/dist/he-IL.main.js +44 -0
- package/dist/he-IL.main.js.map +1 -0
- package/dist/he-IL.mjs +46 -0
- package/dist/he-IL.module.js +46 -0
- package/dist/he-IL.module.js.map +1 -0
- package/dist/hr-HR.main.js +44 -0
- package/dist/hr-HR.main.js.map +1 -0
- package/dist/hr-HR.mjs +46 -0
- package/dist/hr-HR.module.js +46 -0
- package/dist/hr-HR.module.js.map +1 -0
- package/dist/hu-HU.main.js +44 -0
- package/dist/hu-HU.main.js.map +1 -0
- package/dist/hu-HU.mjs +46 -0
- package/dist/hu-HU.module.js +46 -0
- package/dist/hu-HU.module.js.map +1 -0
- package/dist/import.mjs +39 -0
- package/dist/intlStrings.main.js +108 -0
- package/dist/intlStrings.main.js.map +1 -0
- package/dist/intlStrings.mjs +110 -0
- package/dist/intlStrings.module.js +110 -0
- package/dist/intlStrings.module.js.map +1 -0
- package/dist/it-IT.main.js +44 -0
- package/dist/it-IT.main.js.map +1 -0
- package/dist/it-IT.mjs +46 -0
- package/dist/it-IT.module.js +46 -0
- package/dist/it-IT.module.js.map +1 -0
- package/dist/ja-JP.main.js +44 -0
- package/dist/ja-JP.main.js.map +1 -0
- package/dist/ja-JP.mjs +46 -0
- package/dist/ja-JP.module.js +46 -0
- package/dist/ja-JP.module.js.map +1 -0
- package/dist/ko-KR.main.js +44 -0
- package/dist/ko-KR.main.js.map +1 -0
- package/dist/ko-KR.mjs +46 -0
- package/dist/ko-KR.module.js +46 -0
- package/dist/ko-KR.module.js.map +1 -0
- package/dist/lt-LT.main.js +44 -0
- package/dist/lt-LT.main.js.map +1 -0
- package/dist/lt-LT.mjs +46 -0
- package/dist/lt-LT.module.js +46 -0
- package/dist/lt-LT.module.js.map +1 -0
- package/dist/lv-LV.main.js +44 -0
- package/dist/lv-LV.main.js.map +1 -0
- package/dist/lv-LV.mjs +46 -0
- package/dist/lv-LV.module.js +46 -0
- package/dist/lv-LV.module.js.map +1 -0
- package/dist/main.js +39 -1873
- package/dist/main.js.map +1 -1
- package/dist/module.js +24 -1853
- package/dist/module.js.map +1 -1
- package/dist/nb-NO.main.js +44 -0
- package/dist/nb-NO.main.js.map +1 -0
- package/dist/nb-NO.mjs +46 -0
- package/dist/nb-NO.module.js +46 -0
- package/dist/nb-NO.module.js.map +1 -0
- package/dist/nl-NL.main.js +44 -0
- package/dist/nl-NL.main.js.map +1 -0
- package/dist/nl-NL.mjs +46 -0
- package/dist/nl-NL.module.js +46 -0
- package/dist/nl-NL.module.js.map +1 -0
- package/dist/pl-PL.main.js +44 -0
- package/dist/pl-PL.main.js.map +1 -0
- package/dist/pl-PL.mjs +46 -0
- package/dist/pl-PL.module.js +46 -0
- package/dist/pl-PL.module.js.map +1 -0
- package/dist/pt-BR.main.js +44 -0
- package/dist/pt-BR.main.js.map +1 -0
- package/dist/pt-BR.mjs +46 -0
- package/dist/pt-BR.module.js +46 -0
- package/dist/pt-BR.module.js.map +1 -0
- package/dist/pt-PT.main.js +44 -0
- package/dist/pt-PT.main.js.map +1 -0
- package/dist/pt-PT.mjs +46 -0
- package/dist/pt-PT.module.js +46 -0
- package/dist/pt-PT.module.js.map +1 -0
- package/dist/ro-RO.main.js +44 -0
- package/dist/ro-RO.main.js.map +1 -0
- package/dist/ro-RO.mjs +46 -0
- package/dist/ro-RO.module.js +46 -0
- package/dist/ro-RO.module.js.map +1 -0
- package/dist/ru-RU.main.js +44 -0
- package/dist/ru-RU.main.js.map +1 -0
- package/dist/ru-RU.mjs +46 -0
- package/dist/ru-RU.module.js +46 -0
- package/dist/ru-RU.module.js.map +1 -0
- package/dist/sk-SK.main.js +44 -0
- package/dist/sk-SK.main.js.map +1 -0
- package/dist/sk-SK.mjs +46 -0
- package/dist/sk-SK.module.js +46 -0
- package/dist/sk-SK.module.js.map +1 -0
- package/dist/sl-SI.main.js +44 -0
- package/dist/sl-SI.main.js.map +1 -0
- package/dist/sl-SI.mjs +46 -0
- package/dist/sl-SI.module.js +46 -0
- package/dist/sl-SI.module.js.map +1 -0
- package/dist/sr-SP.main.js +44 -0
- package/dist/sr-SP.main.js.map +1 -0
- package/dist/sr-SP.mjs +46 -0
- package/dist/sr-SP.module.js +46 -0
- package/dist/sr-SP.module.js.map +1 -0
- package/dist/sv-SE.main.js +44 -0
- package/dist/sv-SE.main.js.map +1 -0
- package/dist/sv-SE.mjs +46 -0
- package/dist/sv-SE.module.js +46 -0
- package/dist/sv-SE.module.js.map +1 -0
- package/dist/tr-TR.main.js +44 -0
- package/dist/tr-TR.main.js.map +1 -0
- package/dist/tr-TR.mjs +46 -0
- package/dist/tr-TR.module.js +46 -0
- package/dist/tr-TR.module.js.map +1 -0
- package/dist/types.d.ts +177 -29
- package/dist/types.d.ts.map +1 -1
- package/dist/uk-UA.main.js +44 -0
- package/dist/uk-UA.main.js.map +1 -0
- package/dist/uk-UA.mjs +46 -0
- package/dist/uk-UA.module.js +46 -0
- package/dist/uk-UA.module.js.map +1 -0
- package/dist/useAutoScroll.main.js +89 -0
- package/dist/useAutoScroll.main.js.map +1 -0
- package/dist/useAutoScroll.mjs +84 -0
- package/dist/useAutoScroll.module.js +84 -0
- package/dist/useAutoScroll.module.js.map +1 -0
- package/dist/useClipboard.main.js +107 -0
- package/dist/useClipboard.main.js.map +1 -0
- package/dist/useClipboard.mjs +102 -0
- package/dist/useClipboard.module.js +102 -0
- package/dist/useClipboard.module.js.map +1 -0
- package/dist/useDrag.main.js +286 -0
- package/dist/useDrag.main.js.map +1 -0
- package/dist/useDrag.mjs +281 -0
- package/dist/useDrag.module.js +281 -0
- package/dist/useDrag.module.js.map +1 -0
- package/dist/useDraggableCollection.main.js +27 -0
- package/dist/useDraggableCollection.main.js.map +1 -0
- package/dist/useDraggableCollection.mjs +22 -0
- package/dist/useDraggableCollection.module.js +22 -0
- package/dist/useDraggableCollection.module.js.map +1 -0
- package/dist/useDraggableItem.main.js +128 -0
- package/dist/useDraggableItem.main.js.map +1 -0
- package/dist/useDraggableItem.mjs +123 -0
- package/dist/useDraggableItem.module.js +123 -0
- package/dist/useDraggableItem.module.js.map +1 -0
- package/dist/useDrop.main.js +299 -0
- package/dist/useDrop.main.js.map +1 -0
- package/dist/useDrop.mjs +294 -0
- package/dist/useDrop.module.js +294 -0
- package/dist/useDrop.module.js.map +1 -0
- package/dist/useDropIndicator.main.js +93 -0
- package/dist/useDropIndicator.main.js.map +1 -0
- package/dist/useDropIndicator.mjs +88 -0
- package/dist/useDropIndicator.module.js +88 -0
- package/dist/useDropIndicator.module.js.map +1 -0
- package/dist/useDroppableCollection.main.js +592 -0
- package/dist/useDroppableCollection.main.js.map +1 -0
- package/dist/useDroppableCollection.mjs +587 -0
- package/dist/useDroppableCollection.module.js +587 -0
- package/dist/useDroppableCollection.module.js.map +1 -0
- package/dist/useDroppableItem.main.js +79 -0
- package/dist/useDroppableItem.main.js.map +1 -0
- package/dist/useDroppableItem.mjs +74 -0
- package/dist/useDroppableItem.module.js +74 -0
- package/dist/useDroppableItem.module.js.map +1 -0
- package/dist/useVirtualDrop.main.js +56 -0
- package/dist/useVirtualDrop.main.js.map +1 -0
- package/dist/useVirtualDrop.mjs +51 -0
- package/dist/useVirtualDrop.module.js +51 -0
- package/dist/useVirtualDrop.module.js.map +1 -0
- package/dist/utils.main.js +283 -0
- package/dist/utils.main.js.map +1 -0
- package/dist/utils.mjs +255 -0
- package/dist/utils.module.js +255 -0
- package/dist/utils.module.js.map +1 -0
- package/dist/zh-CN.main.js +44 -0
- package/dist/zh-CN.main.js.map +1 -0
- package/dist/zh-CN.mjs +46 -0
- package/dist/zh-CN.module.js +46 -0
- package/dist/zh-CN.module.js.map +1 -0
- package/dist/zh-TW.main.js +44 -0
- package/dist/zh-TW.main.js.map +1 -0
- package/dist/zh-TW.mjs +46 -0
- package/dist/zh-TW.module.js +46 -0
- package/dist/zh-TW.module.js.map +1 -0
- package/package.json +20 -16
- package/src/DragManager.ts +87 -52
- package/src/DragPreview.tsx +3 -3
- package/src/ListDropTargetDelegate.ts +173 -0
- package/src/constants.ts +2 -0
- package/src/index.ts +55 -9
- package/src/useAutoScroll.ts +26 -6
- package/src/useClipboard.ts +65 -59
- package/src/useDrag.ts +179 -31
- package/src/useDraggableCollection.ts +29 -0
- package/src/useDraggableItem.ts +105 -12
- package/src/useDrop.ts +273 -93
- package/src/useDropIndicator.ts +47 -21
- package/src/useDroppableCollection.ts +315 -115
- package/src/useDroppableItem.ts +33 -17
- package/src/useVirtualDrop.ts +5 -5
- package/src/utils.ts +92 -17
- package/LICENSE +0 -201
package/src/useDropIndicator.ts
CHANGED
|
@@ -12,75 +12,101 @@
|
|
|
12
12
|
|
|
13
13
|
import * as DragManager from './DragManager';
|
|
14
14
|
import {DroppableCollectionState} from '@react-stately/dnd';
|
|
15
|
-
import {DropTarget} from '@react-types/shared';
|
|
15
|
+
import {DropTarget, Key, RefObject} from '@react-types/shared';
|
|
16
16
|
import {getDroppableCollectionId} from './utils';
|
|
17
|
-
import {HTMLAttributes
|
|
17
|
+
import {HTMLAttributes} from 'react';
|
|
18
18
|
// @ts-ignore
|
|
19
19
|
import intlMessages from '../intl/*.json';
|
|
20
20
|
import {useDroppableItem} from './useDroppableItem';
|
|
21
21
|
import {useId} from '@react-aria/utils';
|
|
22
|
-
import {
|
|
22
|
+
import {useLocalizedStringFormatter} from '@react-aria/i18n';
|
|
23
23
|
|
|
24
24
|
export interface DropIndicatorProps {
|
|
25
|
+
/** The drop target that the drop indicator represents. */
|
|
25
26
|
target: DropTarget
|
|
26
27
|
}
|
|
27
28
|
|
|
28
29
|
export interface DropIndicatorAria {
|
|
29
|
-
|
|
30
|
+
/** Props for the drop indicator element. */
|
|
31
|
+
dropIndicatorProps: HTMLAttributes<HTMLElement>,
|
|
32
|
+
/** Whether the drop indicator is currently the active drop target. */
|
|
33
|
+
isDropTarget: boolean,
|
|
34
|
+
/**
|
|
35
|
+
* Whether the drop indicator is hidden, both visually and from assistive technology.
|
|
36
|
+
* Use this to determine whether to omit the element from the DOM entirely.
|
|
37
|
+
*/
|
|
38
|
+
isHidden: boolean
|
|
30
39
|
}
|
|
31
40
|
|
|
32
|
-
|
|
41
|
+
/**
|
|
42
|
+
* Handles drop interactions for a target within a droppable collection.
|
|
43
|
+
*/
|
|
44
|
+
export function useDropIndicator(props: DropIndicatorProps, state: DroppableCollectionState, ref: RefObject<HTMLElement | null>): DropIndicatorAria {
|
|
33
45
|
let {target} = props;
|
|
34
46
|
let {collection} = state;
|
|
35
47
|
|
|
36
|
-
let
|
|
48
|
+
let stringFormatter = useLocalizedStringFormatter(intlMessages, '@react-aria/dnd');
|
|
37
49
|
let dragSession = DragManager.useDragSession();
|
|
38
50
|
let {dropProps} = useDroppableItem(props, state, ref);
|
|
39
51
|
let id = useId();
|
|
40
|
-
let getText = (key: Key) => collection.getItem(key)?.textValue;
|
|
52
|
+
let getText = (key: Key) => collection.getTextValue?.(key) ?? collection.getItem(key)?.textValue;
|
|
41
53
|
|
|
42
54
|
let label = '';
|
|
43
55
|
let labelledBy: string;
|
|
44
56
|
if (target.type === 'root') {
|
|
45
|
-
label =
|
|
57
|
+
label = stringFormatter.format('dropOnRoot');
|
|
46
58
|
labelledBy = `${id} ${getDroppableCollectionId(state)}`;
|
|
47
59
|
} else if (target.dropPosition === 'on') {
|
|
48
|
-
label =
|
|
60
|
+
label = stringFormatter.format('dropOnItem', {
|
|
49
61
|
itemText: getText(target.key)
|
|
50
62
|
});
|
|
51
63
|
} else {
|
|
52
|
-
let before
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
: target.key;
|
|
64
|
+
let before: Key | null;
|
|
65
|
+
let after: Key | null;
|
|
66
|
+
if (collection.getFirstKey() === target.key && target.dropPosition === 'before') {
|
|
67
|
+
before = null;
|
|
68
|
+
} else {
|
|
69
|
+
before = target.dropPosition === 'before' ? collection.getKeyBefore(target.key) : target.key;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
if (collection.getLastKey() === target.key && target.dropPosition === 'after') {
|
|
73
|
+
after = null;
|
|
74
|
+
} else {
|
|
75
|
+
after = target.dropPosition === 'after' ? collection.getKeyAfter(target.key) : target.key;
|
|
76
|
+
}
|
|
58
77
|
|
|
59
78
|
if (before && after) {
|
|
60
|
-
label =
|
|
79
|
+
label = stringFormatter.format('insertBetween', {
|
|
61
80
|
beforeItemText: getText(before),
|
|
62
81
|
afterItemText: getText(after)
|
|
63
82
|
});
|
|
64
83
|
} else if (before) {
|
|
65
|
-
label =
|
|
84
|
+
label = stringFormatter.format('insertAfter', {
|
|
66
85
|
itemText: getText(before)
|
|
67
86
|
});
|
|
68
87
|
} else if (after) {
|
|
69
|
-
label =
|
|
88
|
+
label = stringFormatter.format('insertBefore', {
|
|
70
89
|
itemText: getText(after)
|
|
71
90
|
});
|
|
72
91
|
}
|
|
73
92
|
}
|
|
74
93
|
|
|
94
|
+
let isDropTarget = state.isDropTarget(target);
|
|
95
|
+
let ariaHidden = !dragSession ? 'true' : dropProps['aria-hidden'];
|
|
75
96
|
return {
|
|
76
97
|
dropIndicatorProps: {
|
|
77
98
|
...dropProps,
|
|
78
99
|
id,
|
|
79
|
-
'aria-roledescription':
|
|
100
|
+
'aria-roledescription': stringFormatter.format('dropIndicator'),
|
|
80
101
|
'aria-label': label,
|
|
81
102
|
'aria-labelledby': labelledBy,
|
|
82
|
-
'aria-hidden':
|
|
103
|
+
'aria-hidden': ariaHidden,
|
|
83
104
|
tabIndex: -1
|
|
84
|
-
}
|
|
105
|
+
},
|
|
106
|
+
isDropTarget,
|
|
107
|
+
// If aria-hidden, we are either not in a drag session or the drop target is invalid.
|
|
108
|
+
// In that case, there's no need to render anything at all unless we need to show the indicator visually.
|
|
109
|
+
// This can happen when dragging using the native DnD API as opposed to keyboard dragging.
|
|
110
|
+
isHidden: !isDropTarget && !!ariaHidden
|
|
85
111
|
};
|
|
86
112
|
}
|