{{-- Row actions for the Customer Documents listing (CR-15 decision D8) — docs/wireframes-v12/upload-document.html's `.action-group` of `.btn-icon`s, reduced to the three this module has. v12 draws four: View, Verify, Reject and Download. **Verify and Reject go with the Status column** the client removed (decision D6) — they are a verification workflow this application does not have and `customer_docs` has no column for — and **View goes with `view-customer-document.html`**, a page the wireframe pack links to and the client's own column list gives nothing to show: the row already names the type, the date and the uploader, and a fifth screen nobody asked for is not a substitute for the file itself. What is left is Download, plus **Edit and Delete**, which the client asked for by name ("user can download document, edit and delete in action column"). ## The cell is rebuilt client-side, and this is its opening state The two dropdowns above choose which document the row is about, so the actions change with them. public/assets/js/nrems-customer-document-list.js rebuilds this group from the row payload with createElement/textContent — never innerHTML — and takes every url from the payload verbatim rather than assembling one from an id. What is drawn here is the state for the document the row opens on, server-rendered for the reason partials/doc-type.blade.php records: no `change` event fires on a freshly drawn page. ## Where each action goes * **Download** streams the file back as an attachment through the EXISTING `bookings.documents.download` route (CR-15 §4.1). A link and not a form, because it reads and nothing else; the route binding is scoped to the booking, so a document id from another booking is a 404 from the router. * **Edit** is this module's own screen. * **Delete** is a plain button that opens the shared confirmation dialog (customer-documents/partials/delete-modal.blade.php) and, on Confirm, sends an ajax DELETE to the EXISTING `bookings.documents.destroy` route — never a link, because a GET that destroys data would be fired by any crawler or prefetch. It was a `