heartcombo / simple_form

Forms made easy for Rails! It's tied to a simple DSL, with no opinion on markup.
http://blog.plataformatec.com.br/tag/simple_form
MIT License
8.21k stars 1.31k forks source link

Add "for" attribute in label wrapper #1800

Open stasou opened 1 year ago

stasou commented 1 year ago

Trying to create a custom wrapper for checkboxes and radio buttons, I am hitting on a wall when trying to add the for attribute to a label wrapper.

The label contains markup with divs etcetera, which is allowed.

I tried this proposed solution, but being it rather old it does not seem to work: https://github.com/heartcombo/simple_form/issues/869

The idea is to have a markup like this:

<label for="input_name" class="some clases">
    <div>Something</div>
    <div>
         <div>something else</div>
    </div>
</label>

Using the wrapper api, I do this:

a.wrapper tag: :label, class: "some classes" do |b|
    b.use :something, wrapped_with: {tag: :div}

    b.wrapper tag: :div do |c|
        c.use :something_else, wrapped_with: {tag: :div}
    end
end

:something and :something_else are custom components, which work fine.

The markup is created, but there doesn't appear to be a method to add the for="input_name" in the label tag.

Is there any way to override this? Shouldn't there be the possibility to use labels as wrappers, with their "for" attribute, for complex html markups?

Best regards, Stavros