mirror of
https://github.com/ubicloud/ubicloud.git
synced 2025-10-07 07:11:58 +08:00
After running these changes, there are 1 error and 3 warnings when running the linter, due to bugs in the linter (https://github.com/marcoroth/herb/issues 480, 481, 483).
143 lines
4.9 KiB
Text
143 lines
4.9 KiB
Text
<%# locals: (title:, config:, extra_class:, name:, errors:) %>
|
|
|
|
<div class="bg-white rounded-lg shadow overflow-hidden mb-6 <%= extra_class %>">
|
|
<div class="px-6 py-4 border-b border-gray-200">
|
|
<h3 class="text-lg font-medium text-gray-900"><%= title %></h3>
|
|
</div>
|
|
|
|
<div class="divide-y divide-gray-200 w-full max-h-64 overflow-y-auto">
|
|
<% config.each_with_index do |(key, value), index| %>
|
|
<% error = errors[name + "." + key] %>
|
|
<% next if key.empty? && value.empty? %>
|
|
<div
|
|
class="px-6 py-2 hover:bg-gray-50 config-group group font-mono"
|
|
data-config-id="<%= index %>"
|
|
>
|
|
<div class="flex items-center justify-between">
|
|
<div class="flex flex-wrap items-center config-entry">
|
|
<input
|
|
type="text"
|
|
class="border rounded py-1 focus:ring-blue-500 focus:border-blue-500 mr-2 <%= (error && !error.is_a?(Array)) ? "border-red-500" : "" %>"
|
|
value="<%= key %>"
|
|
name="<%= name %>_keys[]"
|
|
required
|
|
>
|
|
|
|
<input
|
|
type="text"
|
|
value="<%= value %>"
|
|
class="border rounded py-1 focus:ring-blue-500 focus:border-blue-500 <%= error ? "border-red-500" : "" %>"
|
|
name="<%= name %>_values[]"
|
|
>
|
|
|
|
<% if error %>
|
|
<span
|
|
class="
|
|
error inline-block h-8 w-54 py-2 px-2 max-w-54 text-xs
|
|
text-red-600 bg-red-100 rounded
|
|
"
|
|
aria-live="polite"
|
|
>
|
|
<% if error.is_a?(Array) %>
|
|
<% error.each do |error| %>
|
|
<%= error %>
|
|
<br>
|
|
<% end %>
|
|
<% else %>
|
|
<%= error %>
|
|
<% end %>
|
|
</span>
|
|
<% end %>
|
|
</div>
|
|
<div class="min-w-16 flex items-center ml-2">
|
|
<%== part("components/button", type: "danger", text: "", icon: "hero-trash", extra_class: "delete-config-btn") if @edit_perm %>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<% end %>
|
|
|
|
<!-- Hidden row for generating new entries -->
|
|
<div
|
|
class="
|
|
px-6 py-2 hover:bg-gray-50 group config-placeholder-group
|
|
font-mono hidden
|
|
"
|
|
data-config-id=""
|
|
>
|
|
<div class="flex items-center justify-between">
|
|
<div class="flex flex-wrap items-center config-entry">
|
|
<input
|
|
type="text"
|
|
class="
|
|
border rounded py-1 focus:ring-blue-500
|
|
focus:border-blue-500 mr-2
|
|
"
|
|
value=""
|
|
name="<%= name %>_keys[]"
|
|
disabled
|
|
>
|
|
|
|
<input
|
|
type="text"
|
|
value=""
|
|
class="
|
|
border rounded py-1 focus:ring-blue-500
|
|
focus:border-blue-500
|
|
"
|
|
name="<%= name %>_values[]"
|
|
disabled
|
|
>
|
|
<span
|
|
class="
|
|
error inline-block h-8 w-54 py-2 px-2 max-w-54 text-xs
|
|
text-red-600 hidden bg-red-100 rounded
|
|
"
|
|
aria-live="polite"
|
|
></span>
|
|
</div>
|
|
<div class="min-w-16 flex items-center ml-2">
|
|
<%== part("components/button", type: "danger", text: "", icon: "hero-trash", extra_class: "delete-config-btn") %>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Empty row for new configuration -->
|
|
<% if @edit_perm %>
|
|
<div class="px-6 py-2 hover:bg-gray-50 group new-config font-mono">
|
|
<div class="flex items-center justify-between">
|
|
<div class="flex flex-wrap items-center">
|
|
<input
|
|
type="text"
|
|
class="
|
|
border rounded py-1 focus:ring-blue-500
|
|
focus:border-blue-500 mr-2
|
|
"
|
|
placeholder="New Key"
|
|
name="<%= name %>_keys[]"
|
|
>
|
|
|
|
<input
|
|
type="text"
|
|
placeholder="New Value"
|
|
class="
|
|
border rounded py-1 focus:ring-blue-500
|
|
focus:border-blue-500
|
|
"
|
|
name="<%= name %>_values[]"
|
|
>
|
|
<span
|
|
class="
|
|
error inline-block h-8 w-54 py-2 px-2 max-w-54 text-xs
|
|
text-red-600 hidden bg-red-100 rounded
|
|
"
|
|
aria-live="polite"
|
|
></span>
|
|
</div>
|
|
<div class="min-w-16 flex items-center ml-2">
|
|
<%== part("components/button", text: "", type: "safe", icon: "hero-plus", extra_class: "add-config-btn") %>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<% end %>
|
|
</div>
|
|
</div>
|