diff --git a/app/components/avo/resource_component.rb b/app/components/avo/resource_component.rb index ab4c1806e9..56548c3fb6 100644 --- a/app/components/avo/resource_component.rb +++ b/app/components/avo/resource_component.rb @@ -1,6 +1,7 @@ class Avo::ResourceComponent < Avo::BaseComponent include Avo::Concerns::ChecksAssocAuthorization include Avo::Concerns::RequestMethods + include Avo::Concerns::HasResourceStimulusControllers attr_reader :fields_by_panel attr_reader :has_one_panels @@ -190,14 +191,18 @@ def render_delete_button(control) def render_save_button(control) return unless can_see_the_save_button? + data_attributes = { + turbo_confirm: @resource.confirm_on_save ? t("avo.are_you_sure") : nil + } + + add_stimulus_attributes_for(@resource, data_attributes, "saveButton") + a_button color: :primary, style: :primary, loading: true, type: :submit, icon: "avo/save", - data: { - turbo_confirm: @resource.confirm_on_save ? t("avo.are_you_sure") : nil - } do + data: data_attributes do control.label end end diff --git a/lib/avo/concerns/has_resource_stimulus_controllers.rb b/lib/avo/concerns/has_resource_stimulus_controllers.rb index 4b7ac7fed2..039246bfb9 100644 --- a/lib/avo/concerns/has_resource_stimulus_controllers.rb +++ b/lib/avo/concerns/has_resource_stimulus_controllers.rb @@ -38,9 +38,9 @@ def stimulus_data_attributes attributes end - def add_stimulus_attributes_for(entity, attributes) + def add_stimulus_attributes_for(entity, attributes, target_name = nil) entity.get_stimulus_controllers.split(" ").each do |controller| - attributes["#{controller}-target"] = "#{@field.id.to_s.underscore}_#{@field.type.to_s.underscore}_wrapper".camelize(:lower) + attributes["#{controller}-target"] = target_name || "#{@field.id.to_s.underscore}_#{@field.type.to_s.underscore}_wrapper".camelize(:lower) end end end