component {
scrollable(
direction = vertical,
class = u-fill-all,
) {
column(width = fill, spacing = 8, class = form-panel) {
text("{t('databases.databases', service_shared_databases_count=service_shared_databases_count)}", class = u-label-cap)
text(
"{t('databases.each_database_has_its_own_user')}",
class = u-muted,
)
scrollable(direction = vertical, class = u-fill-all) {
column(class = kv-list) {
row(class = kv-list__row, :for_each = service_shared_databases, var = d) {
button(
class = env__del,
on_click = shared_database_delete:@d.id,
disabled = @busy_shared_database_delete,
text = "✕",
)
text(class = env__sep)
button(class = tabs__tab, on_click = shared_database_show:@d.id, disabled = @busy_shared_database_show, text = @d.name)
text("→ @d.project", class = "kv-list__val kv-list__val--compact")
text("@d.env_var", class = u-muted)
}
}
}
row(class = kv-list__row, if = @shared_database_url, not_equals = "") {
text("{t('databases.url')}", class = kv-list__key)
text("@shared_database_url_short", class = "kv-list__val kv-list__val--compact")
button(
class = "btn btn--ghost btn--xs",
on_click = copy_ctx:shared_database_url,
text = "{t('common.copy')}",
)
}
text("{t('databases.new_database')}", class = u-label-cap)
input(
class = field__input,
form_control = service_form_shared_database_name,
:value = service_form_shared_database_name,
on_change = field:service_form_shared_database_name,
placeholder = "{t('databases.name_a_z_0_9')}",
)
select(
class = form-select,
:options = service_shared_database_projects,
:value = service_form_shared_database_project,
on_change = field:service_form_shared_database_project,
placeholder = "{t('databases.consumer_project')}",
label_field = name,
value_field = id,
)
input(
class = field__input,
form_control = service_form_shared_database_env,
:value = service_form_shared_database_env,
on_change = field:service_form_shared_database_env,
placeholder = "{t('databases.env_var_default_database_url')}",
)
input(
class = field__input,
form_control = service_form_shared_database_limit,
:value = service_form_shared_database_limit,
on_change = field:service_form_shared_database_limit,
placeholder = "{t('databases.connection_limit_optional_does_not')}",
)
input(
class = field__input,
form_control = service_form_shared_database_timeout,
:value = service_form_shared_database_timeout,
on_change = field:service_form_shared_database_timeout,
placeholder = "{t('databases.query_timeout_in_ms_optional')}",
)
toggle(
:checked = service_form_shared_database_overwrite,
on_toggle = field:service_form_shared_database_overwrite,
label = "{t('databases.overwrite_the_env_var_if')}",
)
toggle(
:checked = service_form_shared_database_skip_env,
on_toggle = field:service_form_shared_database_skip_env,
label = "{t('databases.do_not_touch_env_vars')}",
)
row(class = env__add) {
button(
class = "btn btn--primary",
if = @service_form_shared_database_project,
equals = "",
disabled = true,
text = "{t('databases.create_database')}",
)
button(
class = "btn btn--primary",
if = @service_form_shared_database_project,
not_equals = "",
on_click = shared_database_create,
disabled = @busy_shared_database_create,
text = "{t('databases.create_database')}",
)
text("@service_action_message", class = u-muted)
}
}
}
}