feat(itinerary): add constraint-aware drag and drop with visual feedback
- Add constraint validation during drag using ItineraryConstraints - Calculate invalid zones and barrier games when drag starts - Apply visual dimming (alpha 0.3) to invalid drop zones during drag - Highlight barrier games with gold border when dragging travel segments - Block invalid drops using ItineraryConstraints.isValidPosition validation - Add haptic feedback for drag interactions: - Medium impact on pickup - Light impact when entering valid zone - Warning notification when entering invalid zone - Soft impact on drop The drag state is tracked via draggingItem, invalidRowIndices, and barrierGameIds properties. Visual feedback is applied and removed via applyDragVisualFeedback/removeDragVisualFeedback methods. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -83,7 +83,7 @@ struct ItineraryTableViewWrapper<HeaderContent: View>: UIViewControllerRepresent
|
||||
|
||||
// Load initial data
|
||||
let (days, validRanges) = buildItineraryData()
|
||||
controller.reloadData(days: days, travelValidRanges: validRanges)
|
||||
controller.reloadData(days: days, travelValidRanges: validRanges, itineraryItems: itineraryItems)
|
||||
|
||||
return controller
|
||||
}
|
||||
@@ -101,7 +101,7 @@ struct ItineraryTableViewWrapper<HeaderContent: View>: UIViewControllerRepresent
|
||||
context.coordinator.headerHostingController?.rootView = headerContent
|
||||
|
||||
let (days, validRanges) = buildItineraryData()
|
||||
controller.reloadData(days: days, travelValidRanges: validRanges)
|
||||
controller.reloadData(days: days, travelValidRanges: validRanges, itineraryItems: itineraryItems)
|
||||
}
|
||||
|
||||
// MARK: - Build Itinerary Data
|
||||
|
||||
Reference in New Issue
Block a user