Skip to content

feat: support dragHandle="inside" on reorderable HasManyFields#1331

Open
theovelikov wants to merge 2 commits into
masterfrom
hmf-drag-handle-inside
Open

feat: support dragHandle="inside" on reorderable HasManyFields#1331
theovelikov wants to merge 2 commits into
masterfrom
hmf-drag-handle-inside

Conversation

@theovelikov

@theovelikov theovelikov commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

What

Two additive props on HasManyFields:

  • dragHandle="inside" — renders the reorderable drag handle inside each HasManyFieldsRow (before the row content) instead of prepending it outside the row.
  • rowClassName — passed through as className to each HasManyFieldsRow (which already accepts it), e.g. "border rounded p-3" for a card-style row.

Together they enable card-style reorderable rows: border wrapping handle + content + delete button.

Why

With the current layout, the handle sits to the left of the row inside the same column as the row content, indenting every reorderable row by ~2rem. In forms where reorderable rows sit alongside regular inputs (e.g. Property's owner packet settings and owner packet send flow), the rows no longer align with the other fields. Current UX designs place the handle inside a bordered row card spanning the full column.

Risk

Low — defaults (dragHandle="outside", no rowClassName) preserve the existing markup; the new layout only applies to consumers that opt in. Covered by new jest cases for both handle placements and the row class pass-through.

🤖 Generated with Claude Code

@theovelikov
theovelikov requested a review from a team as a code owner July 22, 2026 21:19
@github-actions

Copy link
Copy Markdown
Contributor

Released prerelease version 8.19.6-hmf-drag-handle-inside-7fb887b.0.
You may now run npm install @appfolio/react-gears@hmf-drag-handle-inside

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants