From 17bd3bb0cc0d7201a40a4165b571837a2acd35e9 Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Thu, 28 Dec 2023 21:34:37 +0500 Subject: [PATCH] 11068: update setModalDataset logic to generic logic --- app/views/admin/products_v3/_table.html.haml | 10 ++++++---- .../controllers/modal_link_controller.js | 17 ++++++++++++++++- .../controllers/product_actions_controller.js | 18 ------------------ 3 files changed, 22 insertions(+), 23 deletions(-) delete mode 100644 app/webpacker/controllers/product_actions_controller.js diff --git a/app/views/admin/products_v3/_table.html.haml b/app/views/admin/products_v3/_table.html.haml index 5573561121..e34c4b786d 100644 --- a/app/views/admin/products_v3/_table.html.haml +++ b/app/views/admin/products_v3/_table.html.haml @@ -70,8 +70,9 @@ = render(VerticalEllipsisMenu::Component.new) do = link_to t('admin.products_page.actions.edit'), edit_admin_product_path(product) = link_to t('admin.products_page.actions.clone'), clone_admin_product_path(product) - %a{ "data-controller": "modal-link product-actions", "data-action": "click->product-actions#setDeleteModalDataSet click->modal-link#open", - "data-modal-link-target-value": "product-delete-modal", "class": "delete", "data-product-actions-id-value": product.id } + %a{ "data-controller": "modal-link", "data-action": "click->modal-link#setModalDataSetOnConfirm click->modal-link#open", + "data-modal-link-target-value": "product-delete-modal", "class": "delete", + "data-modal-link-modal-dataset-value": {'data-current-id': product.id}.to_json } = t('admin.products_page.actions.delete') - product.variants.each_with_index do |variant, variant_index| @@ -112,6 +113,7 @@ = render(VerticalEllipsisMenu::Component.new) do = link_to t('admin.products_page.actions.edit'), edit_admin_product_variant_path(product, variant) - if product.variants.size > 1 - %a{ "data-controller": "modal-link product-actions", "data-action": "click->product-actions#setDeleteModalDataSet click->modal-link#open", - "data-modal-link-target-value": "variant-delete-modal", "class": "delete", "data-product-actions-id-value": variant.id } + %a{ "data-controller": "modal-link", "data-action": "click->modal-link#setModalDataSetOnConfirm click->modal-link#open", + "data-modal-link-target-value": "variant-delete-modal", "class": "delete", + "data-modal-link-modal-dataset-value": {'data-current-id': variant.id}.to_json } = t('admin.products_page.actions.delete') diff --git a/app/webpacker/controllers/modal_link_controller.js b/app/webpacker/controllers/modal_link_controller.js index d4f58fb546..9eb765c35f 100644 --- a/app/webpacker/controllers/modal_link_controller.js +++ b/app/webpacker/controllers/modal_link_controller.js @@ -1,7 +1,7 @@ import { Controller } from "stimulus"; export default class extends Controller { - static values = { target: String }; + static values = { target: String, modalDataset: Object }; open() { let modal = document.getElementById(this.targetValue); @@ -12,6 +12,21 @@ export default class extends Controller { modalController.open(); } + setModalDataSetOnConfirm(event) { + try { + const modalId = this.targetValue; + const moodalConfirmButtonQuery = `#${modalId} #modal-confirm-button`; + const confirmButton = document.querySelector(moodalConfirmButtonQuery); + Object.keys(this.modalDatasetValue).forEach((datasetKey) => { + confirmButton.setAttribute(datasetKey, this.modalDatasetValue[datasetKey]); + }); + } catch (e) { + // In case of any type of error in setting the dataset value, stop the further actions i.e. opening the modal + event.stopImmediatePropagation(); + throw e; + } + } + getIdentifier() { return "modal"; } diff --git a/app/webpacker/controllers/product_actions_controller.js b/app/webpacker/controllers/product_actions_controller.js deleted file mode 100644 index 605b3f5bd8..0000000000 --- a/app/webpacker/controllers/product_actions_controller.js +++ /dev/null @@ -1,18 +0,0 @@ -import ApplicationController from "./application_controller"; - -export default class extends ApplicationController { - static values = { id: Number }; - - setDeleteModalDataSet(event) { - try { - const modalId = this.element.dataset.modalLinkTargetValue; // whether variant or product delete modal - const deleteButtonQuery = `#${modalId} #modal-confirm-button`; - const deleteButton = document.querySelector(deleteButtonQuery); - deleteButton.setAttribute("data-current-id", this.idValue); - } catch (e) { - // In case of any type of error in setting the dataset value, stop the further actions i.e. opening the modal - event.stopImmediatePropagation(); - throw e; - } - } -}