--- title: SubmissionsList Component --- # SubmissionsList Component The SubmissionsList component displays form submissions with search, filtering, and export capabilities. ## Basic Usage ```blade {{-- All submissions for a form --}} {{-- All submissions across all forms --}} ``` ## Properties | Property | Type | Default | Description | |----------|------|---------|-------------| | `form` | Form\|null | null | Filter by form | | `perPage` | int | 15 | Items per page | | `sortBy` | string | 'created_at' | Sort column | | `sortDirection` | string | 'desc' | Sort direction | ## Features - Search submissions by field values - Filter by date range - Sort by columns - Pagination - Export to CSV/Excel - Bulk delete - View submission details ## Component Structure ```blade
{{-- Search & Filters --}}
@if (!$form) @endif
{{-- Actions --}}
@if (count($selected) > 0) @endif
{{-- Submissions Table --}} @if (!$form) @endif {{-- Dynamic columns based on form fields --}} @foreach ($displayColumns as $column) @endforeach @foreach ($submissions as $submission) @if (!$form) @endif @foreach ($displayColumns as $column) @endforeach @endforeach
NumberForm{{ $column }}Date Actions
{{ $submission->submission_number }}{{ $submission->form->name }}{{ $submission->getValue($column) }}{{ $submission->created_at->format('M d, Y H:i') }} View
{{-- Pagination --}} {{ $submissions->links() }}
``` ## Methods ### exportCsv Export submissions to CSV: ```php public function exportCsv() { $this->authorize('export', FormSubmission::class); return response()->streamDownload(function () { echo $this->exportService->toCsv($this->form, [ 'search' => $this->search, 'start_date' => $this->startDate, 'end_date' => $this->endDate, ]); }, "submissions-{$this->form->slug}.csv"); } ``` ### delete Delete a single submission: ```php public function delete(int $id): void { $submission = FormSubmission::findOrFail($id); $this->authorize('delete', $submission); $submission->delete(); session()->flash('success', 'Submission deleted.'); } ``` ### deleteSelected Bulk delete submissions: ```php public function deleteSelected(): void { foreach ($this->selected as $id) { $submission = FormSubmission::find($id); if ($submission && Gate::allows('delete', $submission)) { $submission->delete(); } } $this->selected = []; session()->flash('success', 'Selected submissions deleted.'); } ``` ## Display Columns Configure which fields to show in the list: ```php public array $displayColumns = ['email', 'name']; // Or dynamically from form public function getDisplayColumnsProperty(): array { if (!$this->form) { return ['email']; } return $this->form->fields ->where('type', '!=', 'hidden') ->take(3) ->pluck('name') ->toArray(); } ``` ## Events Emitted | Event | Payload | Description | |-------|---------|-------------| | `submission-deleted` | `{ id }` | Submission deleted | | `submissions-exported` | `{ count }` | Export completed | ## Customizing the View Publish views: ```bash php artisan vendor:publish --tag=forms-views ``` Edit `resources/views/vendor/forms/livewire/submissions-list.blade.php`. ## Next Steps - [SubmissionDetail](./submission-detail.md) - Submission detail view - [Submissions Usage](../usage/submissions.md) - Working with submissions