From aa565177f4c56f15a615c8e99d634983e6d5bb3b Mon Sep 17 00:00:00 2001 From: Paul Bob <69730720+Paul-Bob@users.noreply.github.com> Date: Tue, 4 Feb 2025 13:18:27 +0200 Subject: [PATCH] fix: actions select (#3636) --- app/components/avo/actions_component.rb | 3 ++- app/components/avo/resource_component.rb | 3 ++- .../controllers/item_selector_controller.js | 24 ++++++++++++------- 3 files changed, 20 insertions(+), 10 deletions(-) diff --git a/app/components/avo/actions_component.rb b/app/components/avo/actions_component.rb index 2e809a809c..9acb59f524 100644 --- a/app/components/avo/actions_component.rb +++ b/app/components/avo/actions_component.rb @@ -102,7 +102,8 @@ def action_data_attributes(action) disabled: action.disabled?, turbo_prefetch: false, enabled_classes: "text-black", - disabled_classes: "text-gray-500" + disabled_classes: "text-gray-500", + resource_name: action.resource.model_key } end diff --git a/app/components/avo/resource_component.rb b/app/components/avo/resource_component.rb index 56548c3fb6..36b9c48ad3 100644 --- a/app/components/avo/resource_component.rb +++ b/app/components/avo/resource_component.rb @@ -301,7 +301,8 @@ def render_action(action) turbo_prefetch: false, # When action has record present behave as standalone and keep always active. "actions-picker-target": (action.action.standalone || action.action.record.present?) ? "standaloneAction" : "resourceAction", - disabled: action.action.disabled? + disabled: action.action.disabled?, + resource_name: action.action.resource.model_key } do action.label end diff --git a/app/javascript/js/controllers/item_selector_controller.js b/app/javascript/js/controllers/item_selector_controller.js index ac60eb61c5..5e5e7fc93c 100644 --- a/app/javascript/js/controllers/item_selector_controller.js +++ b/app/javascript/js/controllers/item_selector_controller.js @@ -75,19 +75,27 @@ export default class extends Controller { enableResourceActions() { this.actionLinks.forEach((link) => { - link.classList.add(link.dataset.enabledClasses) - link.classList.remove(link.dataset.disabledClasses) - link.setAttribute('data-href', link.getAttribute('href')) - link.dataset.disabled = false + // Enable only if is on the same resource context + // Avoiding to enable unrelated actions when selecting items on a has many table + if (link.dataset.resourceName === this.resourceName) { + link.classList.add(link.dataset.enabledClasses) + link.classList.remove(link.dataset.disabledClasses) + link.setAttribute('data-href', link.getAttribute('href')) + link.dataset.disabled = false + } }) } disableResourceActions() { this.actionLinks.forEach((link) => { - link.classList.remove(link.dataset.enabledClasses) - link.classList.add(link.dataset.disabledClasses) - link.setAttribute('href', link.getAttribute('data-href')) - link.dataset.disabled = true + // Disable only if is on the same resource context + // Avoiding to disable unrelated actions when selecting items on a has many table + if (link.dataset.resourceName === this.resourceName) { + link.classList.remove(link.dataset.enabledClasses) + link.classList.add(link.dataset.disabledClasses) + link.setAttribute('href', link.getAttribute('data-href')) + link.dataset.disabled = true + } }) } }