From d6acded332f6ff9c7d08b7c61c1a3c42f73682e3 Mon Sep 17 00:00:00 2001 From: dhanabalan Date: Mon, 25 May 2026 15:46:47 +0530 Subject: [PATCH] Added capture photo logic in livewire --- app/Livewire/Webcam.php | 32 +++ .../views/components/webcam-field.blade.php | 10 + resources/views/livewire/webcam.blade.php | 189 ++++++++++++++++++ 3 files changed, 231 insertions(+) create mode 100644 app/Livewire/Webcam.php create mode 100644 resources/views/components/webcam-field.blade.php create mode 100644 resources/views/livewire/webcam.blade.php diff --git a/app/Livewire/Webcam.php b/app/Livewire/Webcam.php new file mode 100644 index 0000000..4a75467 --- /dev/null +++ b/app/Livewire/Webcam.php @@ -0,0 +1,32 @@ +capturedPhoto = $photo; + + // Fires a browser event that the Filament form will listen to + $this->dispatch('photo-captured', photo: $photo); + } + + // Called from JavaScript when user clicks "Retake" + public function clearPhoto(): void + { + $this->capturedPhoto = ''; + + $this->dispatch('photo-captured', photo: ''); + } + public function render() + { + return view('livewire.webcam'); + } +} diff --git a/resources/views/components/webcam-field.blade.php b/resources/views/components/webcam-field.blade.php new file mode 100644 index 0000000..172331a --- /dev/null +++ b/resources/views/components/webcam-field.blade.php @@ -0,0 +1,10 @@ +
+ + + Visitor Photo + + + + + +
diff --git a/resources/views/livewire/webcam.blade.php b/resources/views/livewire/webcam.blade.php new file mode 100644 index 0000000..cd71ebf --- /dev/null +++ b/resources/views/livewire/webcam.blade.php @@ -0,0 +1,189 @@ +
+ {{-- ── Error message ── --}} + + + {{-- ── Live video feed (shown while camera is active) ── --}} +
+ +
+ + {{-- ── Captured photo preview (shown after capture) ── --}} +
+ Captured visitor photo +
✓ Photo captured
+
+ + {{-- ── Placeholder (before camera starts) ── --}} +
+ 📷 Camera not started yet +
+ + {{-- ── Hidden canvas used for capturing the frame ── --}} + + + {{-- ── Buttons ── --}} +
+ + {{-- Start Camera button --}} + + + {{-- Capture button --}} + + + {{-- Retake button --}} + + +
+