Make Mark as exported system message selectable on desktop web#96014
Conversation
Co-authored-by: Sahil <thesahindia@users.noreply.github.com>
|
I created this PR from an upstream branch since I don't have push access to your fork. To take ownership of this branch and be able to push updates, run: Then you can close this PR and open a new one from your fork. |
Codecov Report✅ Changes either increased or maintained existing code coverage, great job!
|
|
The only failing check is Why it's failing: the check reports To make it pass ( Everything code-related is green — |
|
Pre condition
@MelvinBot add these steps to Tests and QA and mark all the items in the checklist and mark the PR as ready for review. |
|
@ahmedGaber93 @thesahindia One of you needs to copy/paste the Reviewer Checklist from here into a new comment on this PR and complete it. If you have the K2 extension, you can simply click: [this button] |
|
🤖 Done!
|
Reviewer Checklist
Screenshots/VideosAndroid: HybridAppAndroid: mWeb ChromeiOS: HybridAppiOS: mWeb SafariMacOS: Chrome / SafariScreen.Recording.2026-07-15.at.11.34.31.PM.mov |
|
✋ This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release. |
|
🚧 flodnv has triggered a test Expensify/App build. You can view the workflow run here. |
|
🧪🧪 Use the links below to test this adhoc build on Android, iOS, and Web. Happy testing! 🧪🧪
|
|
🚀 Deployed to staging by https://github.com/flodnv in version: 9.4.36-0 🚀
|
Help site review — no changes requiredI reviewed the changes in this PR against Expensify's help site content under Conclusion: No help site (HelpDot) updates are required. This PR is a purely cosmetic frontend fix. It adds a It does not change any user-facing feature, workflow, setting, tab, or button label, and it introduces no new product behavior that would need to be documented. The export flow itself (More > Export > Mark as exported) is unchanged — only the ability to select the resulting system message text on desktop web is affected. Help articles describe what the feature does, not the text-selection affordance of a chat system message, so nothing in Since no docs changes are required, I did not create a draft help site PR. @thesahindia, no linked help site PR was created since no docs changes are required. Please let me know if you'd still like one created. |
Explanation of Change
Every report action row is wrapped in a pressable with
accessibilityRole="button", which makesBaseGenericPressableapplyuser-select: noneto all its children. Child text must therefore explicitly opt back in to selection withstyles.userSelectText.PR #92142 added that opt-in to the other system-message renderers (
ReportActionItemBasicMessage,ReportActionItemMessageWithExplain,TaskAction,InlineSystemMessage) but missedExportIntegration. The Mark as exported flow produces an action with noreasoning, sohasReasoning(action)isfalseand rendering falls into the plain-fragments branch, which rendered<Text>with only[styles.chatItemMessage, styles.colorMuted]— nouserSelectText. That's why the export system message can't be selected by clicking and dragging on desktop web.This change mirrors the exact pattern from #92142 in
src/components/ReportActionItem/ExportIntegration.tsx:useResponsiveLayoutandcanUseTouchScreen.const selectableStyle = !canUseTouchScreen() || !shouldUseNarrowLayout ? styles.userSelectText : styles.userSelectNone;selectableStyleto the plain<Text>fragment's style array.This keeps touch/narrow layouts non-selectable (so scrolling isn't disrupted) exactly as #92142 intended, and re-enables selection on desktop/wide web. The
hasReasoningbranch is already selectable viaReportActionItemMessageWithExplain.Fixed Issues
$ #95424
PROPOSAL: #95424 (comment)
Tests
Pre condition:
Offline tests
Pre condition:
QA Steps
Pre condition:
PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectionAvatar, I verified the components usingAvatarare working as expected)StyleUtils.getBackgroundAndBorderStyle(theme.componentBG))npm run compress-svg)Avataris modified, I verified thatAvataris working as expected in all cases)Designlabel and/or tagged@Expensify/designso the design team can review the changes.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