Add product preview modal

Plus open modal when clicking on "preview" link.
It's using event to communicate between stimulus controller :
https://stimulus.hotwired.dev/reference/controllers#cross-controller-coordination-with-events
This commit is contained in:
Gaetan Craig-Riou
2024-08-27 14:32:42 +10:00
parent 0a9b858f2a
commit 64d3091db9
3 changed files with 13 additions and 1 deletions

View File

@@ -40,4 +40,4 @@
"data-modal-link-target-value": "product-delete-modal", "class": "delete",
"data-modal-link-modal-dataset-value": {'data-delete-path': admin_product_destroy_path(product)}.to_json }
= t('admin.products_page.actions.delete')
= link_to "Preview", admin_product_preview_path(product), "data-turbo-stream": ""
= link_to "Preview", admin_product_preview_path(product), {"data-turbo-stream": "", "data-controller": "product-preview", "data-action": "click->product-preview#open" } # TODO move product-preview controller to table element ?

View File

@@ -20,3 +20,6 @@
= render partial: 'delete_modal', locals: { object_type: }
#modal-component
#edit_image_modal
= render ModalComponent.new(id: "product-preview-modal", "data-action": "product-preview:open@window->modal#open") do
#product-preview

View File

@@ -0,0 +1,9 @@
import { Controller } from "stimulus";
export default class extends Controller {
open() {
// dispatch "product-preview:open" event to trigger modal->open action
// see views/admin/product_v3/index.html.haml
this.dispatch("open");
}
}