35 lines
1.1 KiB
Markdown
35 lines
1.1 KiB
Markdown
---
|
|
phase: 29-image-presentation
|
|
plan: 05
|
|
status: complete
|
|
gap_closure: true
|
|
started: 2026-04-13T12:00:00Z
|
|
completed: 2026-04-13T12:10:00Z
|
|
---
|
|
|
|
## Summary
|
|
|
|
Fixed cropped image preview not updating immediately in edit mode. Added `localCrop` state to `ImageUpload` that captures crop values from `ImageCropEditor` and passes them to `GearImage` as props. Previously, the preview only reflected crop settings after saving the form and refetching from the server.
|
|
|
|
## Accomplishments
|
|
|
|
- Added `localCrop` useState to ImageUpload for immediate crop feedback
|
|
- Wired ImageCropEditor onSave to set localCrop before forwarding to parent
|
|
- Passed localCrop values (cropZoom, cropX, cropY) to GearImage preview
|
|
- Clear localCrop on image removal to prevent stale state
|
|
|
|
## Key Files
|
|
|
|
### Modified
|
|
- `src/client/components/ImageUpload.tsx` — local crop state + GearImage prop wiring
|
|
|
|
## Self-Check: PASSED
|
|
|
|
- TypeScript compiles without errors (no new errors in ImageUpload.tsx)
|
|
- Local crop state correctly flows: ImageCropEditor → localCrop → GearImage props
|
|
- Image removal clears both preview and crop state
|
|
|
|
## Deviations
|
|
|
|
None — implemented exactly as planned.
|