Repository navigation
Restore inline editing of the Expensify Card name #103894
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
JS00001
merged 8 commits into
Expensify:main
from
ahmedGaber93:claude-inlineEditExpensifyCardName
Oct 23, 2026
Merged
Changes from all commits
Commits
Show all changes
8 commits
Select commit
Hold shift + click to select a range
084d8cf
Restore inline editing of the Expensify Card name behind a cell-wide …
ahmedGaber93 35fe263
Keep the cardholder avatar visible while editing the Expensify Card name
ahmedGaber93 9cf53e4
Merge main into claude-inlineEditExpensifyCardName
ahmedGaber93 2d2b34e
Show validation errors when an inline Expensify Card rename is rejected
ahmedGaber93 ae7210c
Write the InlineTextEditCell children comment as a plain sentence.
ahmedGaber93 eb78e0b
Pin cardID in the Expensify Card rename write assertion.
ahmedGaber93 c7f3a71
Remove the unused flex grow from the cardholder name block.
ahmedGaber93 1830b94
Clarify displayTextStyle docs when InlineTextEditCell has children.
ahmedGaber93 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
❌ CLEAN-REACT-PATTERNS-1 (docs)
The new
shouldRenderDisplayChromeboolean prop is a configuration flag that toggles a layout strategy insideEditableCell(whether to wrapchildrenin the padded, borderededitableCellbox). It drives ternary branching at two render sites (shouldRenderDisplayChrome ? <View style={styles.editableCell}>{children}</View> : children), so the component has to grow a new flag and new internal branches to support a composite cell that owns its own layout. This is configuration-over-composition: a prop that selects a rendering strategy is a behavioral flag, not a presentational one.Prefer composition: let the consumer decide whether the box is drawn rather than threading a flag through
EditableCell. For example, expose the display chrome as a composable wrapper (e.g. a<EditableCell.DisplayBox>sub-component the caller includes or omits) so a composite cell can pass its own content without the box, andEditableCellstays stable instead of branching onshouldRenderDisplayChrome.Reviewed at: 2d2b34e | Please rate this suggestion with 👍 or 👎 to help us improve! Reactions are used to monitor reviewer efficiency.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Turning that flag into a
DisplayBoxchild changes the layout of the other editable cells. so it will require many changes on all onther cells, so I leftshouldRenderDisplayChromein place.The flag only applies while the cell is showing its display content. Edit mode and popover mode always draw the
editableCellbox themselves:App/src/components/EditableCell/EditableCell.tsx
Lines 128 to 146 in ae7210c
That box is padding, a transparent border, and a minimum height. Date, category, tag, and the other popover cells rely on
EditableCellto add it. If the caller also wrapped the display content inDisplayBox, opening the picker would nest a second box: extra padding and a taller cell. IfEditableCellstopped drawing the box and every caller addedDisplayBox, any missed caller would lose that padding, and the popover focus border would still have to be applied from insideEditableCell.The card-name cell is the one caller that opts out, because its display content is the cardholder block and the box would add height. Editing that cell still needs the box around the input. A child the caller includes or omits cannot describe both of those states.