[InternalQA] Split screen drop zone#62650
Conversation
|
That's feeling pretty good! I could see an argument to make the hover styles a bit more distinct, as it's a bit subtle right now? But no strong feelings. cc @Expensify/design for thoughts on that If we did try something else, I could see trying to make each zone's BG use a lighter opacity to start, and then the hover state would make the opacity darker? |
I like that idea! We could also add a bit of a transition to the dotted outline showing up instead of it just blasting in. If we wanted to go REAL crazy we could apply a very small scale (like 1.05) to the tex/illustration lock up on hover too. But I think the opacity is a great idea to start. We could try the static state at |
|
Yeah, I'd also love a bit more distinction on background so curious to see how the values Danny suggested would look. Otherwise it's looking pretty great |
|
ok, I will try to apply these changes |
|
@shawnborton @dannymcclain @dubielzyk-expensify as I'll be working on a second PR for the Stage 4 - can I make these changes in the second PR? |
|
That works for me 👍 |
|
@getusha can we proceed with review? |
| } | ||
| }} | ||
| > | ||
| <DropZoneUI |
There was a problem hiding this comment.
no, I will fix it, thanks
| if (isTransactionThreadView && transactionID) { | ||
| replaceReceipt({transactionID, file: file as File, source}); | ||
| } else { | ||
| initMoneyRequest(newReportID, undefined, true, undefined, CONST.IOU.REQUEST_TYPE.SCAN); |
There was a problem hiding this comment.
| initMoneyRequest(newReportID, undefined, true, undefined, CONST.IOU.REQUEST_TYPE.SCAN); | |
| initMoneyRequest({reportID: newReportID, isFromGlobalCreate: true, newIouRequestType: CONST.IOU.REQUEST_TYPE.SCAN}); |
There was a problem hiding this comment.
yes, I did this change in my other PR #62486
| const file = e?.dataTransfer?.files[0]; | ||
| if (file) { | ||
| file.uri = URL.createObjectURL(file); | ||
| setReceiptAndNavigate(file); |
There was a problem hiding this comment.
We should be navigating to the confirmation page on drop, not participants page.
There was a problem hiding this comment.
yeah, but it will be done in the next PR. It seems easy but in fact it wasn't to set a participant correctly and navigate to the confirmation page. I wrote that for now it works like on the SearchPage
| onDrop={(event: DragEvent) => { | ||
| {!!canUseMultiFilesDragAndDrop && shouldDisplayDualDropZone && ( | ||
| <DualDropZone | ||
| isEditing={isTransactionThreadView} |
There was a problem hiding this comment.
I wonder if we should show a new copy like "Add a receipt" or "Scan receipts" when there is no receipt attached to the expense.
Screen.Recording.2025-05-27.at.5.48.24.in.the.afternoon.mov
There was a problem hiding this comment.
we don't need a new copy - we have scan request, but I haven't added the condition when no receipt is attached
|
Out of the scope but we should have a system message when we replace a receipt @lakchote Screen.Recording.2025-05-27.at.5.42.18.in.the.afternoon.mov |
we don't have it in the current version, so I guess it would also require some BE changes |
|
@lakchote do this need another round of review before it's merged? |
|
✋ This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release. |
|
🚀 Deployed to staging by https://github.com/lakchote in version: 9.1.63-0 🚀
|
|
Potentially related to #63807 as well? 🙏 |
|
🚀 Deployed to production by https://github.com/Julesssss in version: 9.1.63-6 🚀
|
| const shouldStackVertically = shouldUseNarrowLayout || isMediumScreenWidth; | ||
|
|
||
| return ( | ||
| <DragAndDropConsumer> |
There was a problem hiding this comment.
Coming from #69452, we should add the no-op onDrop to clean-up onDrop when switching between single and dual drop zone

Implementation of
Stage 4: Introduce a split-screen Attach/Scan drag-and-drop control
-> Update the drag-and-drop control to have two zones: Attach and Scan
-> Ensure the Attach zone works exactly like it currently does
-> Ensure the Scan zone triggers a single-receipt scan, exactly as if the user had dragged a receipt into Global Create > Create Expense > Scan, with the following special behaviors depending on which room it's in:
Explanation of Change
Fixed Issues
$ #59442
PROPOSAL: -
Tests
PREREQUISITES: all betas / newDotMultiFilesDragAndDrop beta enabled
-> for the Attachment zone the Attachment Modal appears
-> for the Scan Receipt:
Ensure the Scan zone triggers a single-receipt scan, exactly as if the user had dragged a receipt into Global Create > Create Expense > Scan, with the following special behaviors depending on which room it's in:
Offline tests
QA Steps
// TODO: These must be filled out, or the issue title must include "[No QA]."
PREREQUISITES: all betas / newDotMultiFilesDragAndDrop beta enabled
-> for the Attachment zone the Attachment Modal appears
-> for the Scan Receipt:
Ensure the Scan zone triggers a single-receipt scan, exactly as if the user had dragged a receipt into Global Create > Create Expense > Scan, with the following special behaviors depending on which room it's in:
PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectiontoggleReportand notonIconClick)src/languages/*files and using the translation methodSTYLE.md) were followedAvatar, I verified the components usingAvatarare working as expected)StyleUtils.getBackgroundAndBorderStyle(theme.componentBG))Avataris modified, I verified thatAvataris working as expected in all cases)Designlabel and/or tagged@Expensify/designso the design team can review the changes.ScrollViewcomponent to make it scrollable when more elements are added to the page.mainbranch was merged into this PR after a review, I tested again and verified the outcome was still expected according to theTeststeps.Screenshots/Videos
Android: Native
Android: mWeb Chrome
iOS: Native
iOS: mWeb Safari
MacOS: Chrome / Safari
Screen.Recording.2025-05-29.at.12.14.18.mp4
MacOS: Desktop