ubicloud/views/components/form/checkbox.erb
2025-01-09 09:55:55 -08:00

40 lines
1.5 KiB
Text

<%# locals: (name: nil, id_prefix: nil, label: nil, options: {}, error: nil, description: nil, attributes: {}) %>
<% error ||= rodauth.field_error(name) || flash.dig("errors", name) %>
<div class="space-y-2 text-gray-900">
<% if label %>
<label class="block text-sm font-medium leading-6"><%== label %></label>
<% end %>
<fieldset>
<div class="space-y-5">
<% options.each_with_index do |(opt_val, opt_text, opt_classes, opt_attrs), idx| %>
<% id = "#{id_prefix}#{name}-#{opt_val}-#{idx}" %>
<div class="relative flex items-start <%= opt_classes %>">
<div class="flex h-6 items-center">
<input
id="<%= id %>"
name="<%= name %>"
type="checkbox"
value="<%= opt_val %>"
class="h-4 w-4 rounded border-gray-300 text-orange-600 focus:ring-orange-600"
<% (opt_attrs || {}).each do |opt_atr_key, opt_atr_value| %>
<%= opt_atr_key %>="<%= opt_atr_value %>"
<% end%>
>
</div>
<% if opt_text %>
<div class="ml-3 text-sm leading-6">
<label for="<%= id %>" class="font-medium text-gray-900"><%== opt_text %></label>
</div>
<% end %>
</div>
<% end %>
</div>
</fieldset>
<% if error %>
<p class="text-sm text-red-600 leading-6"><%= error %></p>
<% end %>
<% if description %>
<p class="text-sm text-gray-500 leading-6"><%== description %></p>
<% end %>
</div>