component {
resources {
component(name = SemSecretsNoProjeto) {
text("{t('project_secrets.no_secret_in_this_project')}", class = u-muted)
}
}
scrollable(
direction = vertical,
class = u-fill-all,
if = @project_loading,
not_equals = true,
) {
column(class = env--flow) {
column(class = webhook) {
text(
"{t('project_secrets.sensitive_values_tokens_passwords_api_keys')}",
class = "u-muted u-fill",
)
text(
"{t('project_secrets.to_use_it_in_a_service')}",
class = "u-muted u-fill",
)
text(
"{t('project_secrets.the_real_value_is_only_decrypted')}",
class = "u-muted u-fill",
)
}
row(class = env__add) {
text("{t('project_env.move_to_service')}", class = u-muted)
select(
class = form-select,
:options = project_service_options,
:value = move_target_service_id,
on_change = move_target_pick,
label_field = display,
value_field = id,
)
}
form(
name = secret_add,
on_submit = secret_add,
on_validation_error = secret_add_show_validation_errors,
class = "form form--gap-8",
) {
row(class = env__add) {
input(
class = env__input,
form_control = project_secret_new_name,
rules = required,
msg = "{t('common.enter_a_name')}",
placeholder = "{t('common.name')}",
)
}
text(
"@error_project_secret_new_name",
class = u-error,
if = @error_project_secret_new_name,
not_empty,
)
row(class = env__add) {
input(
class = env__input,
form_control = project_secret_new_value,
rules = required,
msg = "{t('project_secrets.enter_a_value')}",
placeholder = "{t('project_secrets.value_encrypted_on_save')}",
)
button(
type = submit,
disabled = @busy_secret_add,
class = "btn btn--primary",
text = "{t('project_secrets.save_secret')}",
)
}
text(
"@error_project_secret_new_value",
class = u-error,
if = @error_project_secret_new_value,
not_empty,
)
}
if @rename_open == "project_secret" {
row(class = env__add) {
text("{t('rename.label', rename_from=rename_from)}", class = u-muted)
input(
class = env__input,
form_control = rename_to,
:value = rename_to,
on_change = field:rename_to,
placeholder = "{t('rename.new_name')}",
)
button(
class = "btn btn--primary",
on_click = project_rename_apply,
disabled = @busy_project_rename_apply,
text = "{t('rename.apply')}",
)
button(
class = "btn btn--ghost",
on_click = rename_cancel,
text = "{t('common.cancel')}",
)
}
}
hr
column(class = kv-list) {
each @project_secrets as s (fallback = SemSecretsNoProjeto) {
row(class = kv-list__row) {
button(
class = env__del,
on_click = secret_delete:@s.name,
disabled = @busy_secret_delete,
text = "✕",
)
button(
class = "btn btn--ghost btn--sm",
on_click = project_secret_rename_pick:@s.name,
text = "✏️",
tooltip = "{t('environment.rename')}",
)
button(
class = "btn btn--ghost btn--sm",
on_click = project_secret_to_env:@s.name,
disabled = @busy_project_secret_to_env,
text = "🔓",
tooltip = "{t('environment.secret_to_env')}",
)
button(
class = "btn btn--ghost btn--sm",
if = @move_target_service_id,
equals = "",
disabled = true,
text = "↓",
tooltip = "{t('project_env.choose_service')}",
)
button(
class = "btn btn--ghost btn--sm",
if = @move_target_service_id,
not_equals = "",
on_click = project_secret_to_service:@s.name,
disabled = @busy_project_secret_to_service,
text = "↓",
tooltip = "{t('project_env.secret_to_service')}",
)
button(
class = "btn btn--ghost btn--sm",
on_click = secret_reveal:@s.name,
disabled = @busy_secret_reveal,
if = @s.revealed,
equals = false,
text = "👁",
tooltip = "{t('environment.secret_reveal')}",
)
button(
class = "btn btn--ghost btn--sm",
on_click = secret_hide:@s.name,
if = @s.revealed,
equals = true,
text = "🙈",
tooltip = "{t('environment.secret_hide')}",
)
button(
class = "btn btn--ghost btn--sm",
on_click = secret_copy:@s.ref,
if = @s.revealed,
equals = true,
text = "📋",
tooltip = "{t('environment.secret_copy')}",
)
text(class = env__sep)
text("@s.name_display", class = env__key)
text("{t('project_secrets.encrypted')}", class = "kv-list__val kv-list__val--compact", if = @s.revealed, equals = false)
text("@s.value", class = "kv-list__val kv-list__val--compact", if = @s.revealed, equals = true)
}
}
}
}
}
}