tag drop works

This commit is contained in:
2025-11-07 12:00:28 +01:00
parent 30b90a5bf5
commit ae1884045d
5 changed files with 23 additions and 11 deletions
+4 -4
View File
@@ -5045,7 +5045,7 @@ const AppLayout = () => {
detailPanelOpen,
onCloseDetailPanel: handleDetailPanelClose,
resolveThumbnailUrl: resolveThumbnailUrlForDoc,
onAssignTagToDocument: handleDocumentTagAttach,
onAssignTagToDocument: handleDocumentTagDrop,
onRemoveTagFromDocument: handleTagRemove,
ensureAssetUrl,
getDocumentAsset,
@@ -5089,7 +5089,7 @@ const AppLayout = () => {
handleDetailPanelClose,
handleDeskDocumentOpen,
resolveThumbnailUrlForDoc,
handleDocumentTagAttach,
handleDocumentTagDrop,
handleTagRemove,
ensureAssetUrl,
getDocumentAsset,
@@ -5124,7 +5124,7 @@ const AppLayout = () => {
refreshTags,
handleTagUpdate,
handleTagDelete,
handleDocumentTagAttach,
handleDocumentTagDrop,
correspondents,
refreshCorrespondents,
handleCorrespondentUpdate,
@@ -5174,7 +5174,7 @@ const AppLayout = () => {
refreshTags,
handleTagUpdate,
handleTagDelete,
handleDocumentTagAttach,
handleDocumentTagDrop,
correspondents,
refreshCorrespondents,
handleCorrespondentUpdate,
+5 -1
View File
@@ -105,7 +105,11 @@ const DesktopDocumentCard = ({
style={colorStyle || undefined}
title={tag.label}
draggable
onPointerDown={(event) => onDocTagPointerDown(event, doc, tag)}
data-desk-tag-chip="true"
onPointerDownCapture={(event) => {
event.stopPropagation();
onDocTagPointerDown(event, doc, tag);
}}
onDragStart={(event) => onDocTagDragStart(event, doc, tag)}
onDrag={onDocTagDrag}
onDragEnd={(event) => onDocTagDragEnd(event)}
+5 -1
View File
@@ -1157,7 +1157,11 @@ export const createDesktopSurface = ({
breadcrumbs: workspaceProps?.breadcrumbs || null,
selectionLabel: null,
floatingActions,
content: <DesktopWorkspace {...workspaceProps} />,
content: (
<DesktopWorkspace
{...workspaceProps}
/>
),
detail,
});
@@ -46,7 +46,6 @@ export const useDeskPointer = ({
const pointerMovedRef = useRef(false);
const longPressTimerRef = useRef(null);
const longPressActiveRef = useRef(false);
const resetLongPressState = useCallback(() => {
if (longPressTimerRef.current) {
clearTimeout(longPressTimerRef.current);
@@ -45,6 +45,7 @@ export const useDeskTagInteractions = ({
onRemoveTagFromDocument,
requestCanvasFocus,
}) => {
const draggingTagRef = useRef(null);
const pendingDocTagDragRef = useRef(null);
const removalCursorActiveRef = useRef(false);
@@ -237,10 +238,10 @@ export const useDeskTagInteractions = ({
engine.setPendingTagDocId(null);
const payload = parseTagTransferPayload(event);
if (!payload) {
if (!payload || !payload.id) {
return;
}
markActiveTagDropHandled(payload.tagId, payload.sourceDocId);
markActiveTagDropHandled(payload.id, payload.sourceDocId);
if (payload.sourceDocId === doc.id) {
return;
@@ -248,7 +249,11 @@ export const useDeskTagInteractions = ({
requestCanvasFocus?.();
void safeInvoke(onAssignTagToDocument, doc.id, payload.tagId, { sourceDocId: payload.sourceDocId });
void safeInvoke(onAssignTagToDocument, doc.id, {
id: payload.id,
label: payload.label || '',
sourceDocId: payload.sourceDocId ?? null,
});
},
[engine, isTagTransfer, markActiveTagDropHandled, onAssignTagToDocument, requestCanvasFocus],
);
@@ -260,7 +265,7 @@ export const useDeskTagInteractions = ({
}
event.stopPropagation();
event.dataTransfer.effectAllowed = 'move';
writeTagTransferData(event.dataTransfer, { docId: doc.id, tagId: tag.id });
writeTagTransferData(event.dataTransfer, tag, doc.id);
const { x: pointerX, y: pointerY } = getPointerPosition(event, { fallbackToPage: false });
const { clone, offsetX, offsetY } = createDragPreview(event.currentTarget, pointerX, pointerY) || {};