Parent
#68
What to build
Two holding card UI changes in the render-table module, both targeting lot.tradeIds[0] (the source trade of the lot):
-
Edit button — currently only rendered when the source trade is type === 'HOLDING'. Remove this gate so the edit button appears on every holding card, including ASSIGNED-derived lots. The existing edit modal already handles all relevant fields.
-
Delete button — no holding card currently has one. Add a delete button alongside the edit button on every card. Clicking it calls the existing delete function on the source trade ID. A toast should fire on success (the existing delete function already does this).
Both buttons must appear for all lot types — manually-entered HOLDING trades and ASSIGNED-derived lots alike.
Run python3 build.py --check and npm test after changes.
Acceptance criteria
Blocked by
None — can start immediately
Parent
#68
What to build
Two holding card UI changes in the render-table module, both targeting
lot.tradeIds[0](the source trade of the lot):Edit button — currently only rendered when the source trade is
type === 'HOLDING'. Remove this gate so the edit button appears on every holding card, including ASSIGNED-derived lots. The existing edit modal already handles all relevant fields.Delete button — no holding card currently has one. Add a delete button alongside the edit button on every card. Clicking it calls the existing delete function on the source trade ID. A toast should fire on success (the existing delete function already does this).
Both buttons must appear for all lot types — manually-entered HOLDING trades and ASSIGNED-derived lots alike.
Run
python3 build.py --checkandnpm testafter changes.Acceptance criteria
hw_synced_v1(existingdeleteTradebehaviour — must not be broken)python3 build.py --checkpassesnpm testpassesBlocked by
None — can start immediately