Files
ubicloud/views/components/form/text.erb
Enes Cakir be56a9139f Fix arguments for UI components
Some arguments for UI components are optional, so we don't have to
provide all of them when using them. I had added a `defined?(name)`
check to use default values when an argument is not provided.

Jeremy pointed out that it was working by accident. In the code `name =
defined?(name)`, `defined?(name)` always returns `local-variable`
because it’s on the right-hand side of the assignment, while the local
variable is on the left-hand side.

When we remove the `defined?` calls, the remaining code is equivalent to
`||=`.
2024-11-12 10:24:27 +03:00

47 lines
1.6 KiB
Plaintext

<% name ||= nil
label ||= nil
type ||= "text"
value = flash.dig("old", name) || value
error ||= rodauth.field_error(name) || flash.dig("errors", name)
description ||= nil
attributes ||= {}
extra_class ||= nil
button_title ||= nil %>
<div class="space-y-2 text-gray-900">
<% if label %>
<label for="<%= name %>" class="block text-sm font-medium leading-6"><%= label %></label>
<% end %>
<div class="flex gap-x-2">
<input
id="<%= name %>"
type="<%= type %>"
name="<%= name %>"
<% if value %>
value="<%= value %>"
<% end %>
class="block w-full rounded-md border-0 py-1.5 pl-3 pr-10 shadow-sm ring-1 ring-inset focus:ring-2 focus:ring-inset sm:text-sm sm:leading-6 <%= error ? "text-red-900 ring-red-300 placeholder:text-red-300 focus:ring-red-500" : "text-gray-900 ring-gray-300 placeholder:text-gray-400 focus:ring-orange-600"%> <%= extra_class %>"
<% attributes.each do |atr_key, atr_value| %>
<%= atr_key %>="<%= atr_value %>"
<% end%>
>
<% if button_title %>
<%== render("components/form/submit_button", locals: { text: button_title }) %>
<% end %>
</div>
<% if error %>
<% if error.is_a?(Array) %>
<p class="text-sm text-red-600 leading-6" id="<%= name %>-error">
<% error.each do |e| %>
<%= e %><br/>
<% end %>
</p>
<% else %>
<p class="text-sm text-red-600 leading-6" id="<%= name %>-error"><%= error %></p>
<% end %>
<% end %>
<% if description %>
<p class="text-sm text-gray-500 leading-6" id="<%= name %>-description"><%== description %></p>
<% end %>
</div>