Newer
Older
import type { S3Key } from "@/client/s3proxy";
import { reactive, watch } from "vue";
import FontAwesomeIcon from "@/components/FontAwesomeIcon.vue";
import DeleteModal from "@/components/modals/DeleteModal.vue";
import { environment } from "@/environment";
import CopyToClipboardIcon from "@/components/CopyToClipboardIcon.vue";
const props = defineProps<{
s3key: S3Key;
deletable: boolean;
loading: boolean;
}>();
const emit = defineEmits<{
(e: "delete-key", accessKey: string): void;
}>();
watch(
() => props.s3key.access_key,
() => {
visibleKeys.secret = false;
visibleKeys.access = false;
const visibleKeys = reactive<{
secret: boolean;
access: boolean;
}>({
secret: false,
access: false,
});
function deleteKeyTrigger() {
if (props.deletable) {
emit("delete-key", props.s3key.access_key);
}
}
</script>
<template>
<DeleteModal
modalID="delete-key-modal"
:object-name-delete="props.s3key.access_key.slice(0, 5) + '...'"
:back-modal-id="undefined"
@confirm-delete="deleteKeyTrigger"
/>
<h3>S3 Endpoint:</h3>
<div class="fs-4 mb-4">{{ environment.S3_URL }}</div>
<h3>Access Key:</h3>
<div v-if="props.loading" class="placeholder-glow">
<span class="placeholder col-5 mt-3 mb-2 fs-4"></span><br />
</div>
<div v-else class="input-group mb-2">
<span
class="input-group-text cursor-pointer"
@click="visibleKeys.access = !visibleKeys.access"
:icon="visibleKeys.access ? 'fa-solid fa-eye' : 'fa-solid fa-eye-slash'"
</span>
<input
class="form-control"
:type="visibleKeys.access ? 'text' : 'password'"
:value="props.s3key.access_key"
aria-label="S3 Access Key"
readonly
/>
<span class="input-group-text" id="s3-secret-key-copy"
><copy-to-clipboard-icon :text="props.s3key.access_key"
/></span>
<div v-if="props.loading" class="placeholder-glow">
<span class="placeholder col-7 mt-3 mb-4 fs-4"></span><br />
</div>
<div v-else class="input-group fs-4 mb-3">
<span
class="input-group-text cursor-pointer"
@click="visibleKeys.secret = !visibleKeys.secret"
>
<font-awesome-icon
:icon="visibleKeys.secret ? 'fa-solid fa-eye' : 'fa-solid fa-eye-slash'"
/>
</span>
<input
id="s3-secret-key"
class="form-control"
:type="visibleKeys.secret ? 'text' : 'password'"
:value="props.s3key.secret_key"
aria-label="S3 Access Key"
readonly
/>
<span class="input-group-text" id="s3-secret-key-copy"
><copy-to-clipboard-icon :text="props.s3key.secret_key"
/></span>
</div>