I have this wrapper in simple_forms
config.wrappers :styled_horizontal_boolean3, tag: 'div', class: 'form-group', error_class: 'has-error' do |b|
b.use :html5
b.optional :readonly
b.use :label, class: 'hidden-sm hidden-xs col-md-3 control-label'
b.wrapper tag: 'div', class: 'col-md-9 checkbox-margin' do |wr|
wr.wrapper tag: 'div', class: 'styled checkbox' do |ba|
ba.use :label_span_input, class: 'col-md-9', span_class: 'left'
end
wr.use :error, wrap_with: { tag: 'span', class: 'help-block' }
wr.use :hint, wrap_with: { tag: 'span', class: 'help-block' }
end
end
This will hide the control-label at lower resolutions, which is great, see screenshot:
But I need to find a way to hide the label of the checkbox at larger resolutions, otherwise it's rendered twice, see screenshot:
Edit: This is the HTML generated by simple_form
<label class="boolean optional checkbox" for="timesheet_report_uninvoiced">
<input class="boolean optional col-md-9" id="timesheet_report_uninvoiced" name="timesheet_report[uninvoiced]" type="checkbox" value="1">
<span class="left"> </span>Uninvoiced only
</label>
I was able to accomplish it like this:
And added this to the CSS:
This will make only the text transparent, the checkbox stays as is, and users can't see or select the hidden text. As soon as the resolution is lower than 992 it's being displayed. Works perfectly!