Skip to content

Commit 980e3da

Browse files
committed
feat: draft delete countdown
1 parent ff80857 commit 980e3da

File tree

1 file changed

+16
-3
lines changed
  • apps/frontend/src/pages/app/extensions

1 file changed

+16
-3
lines changed

apps/frontend/src/pages/app/extensions/[id].vue

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@
114114
class="max-md:w-full"
115115
color="danger"
116116
:disabled="loading"
117-
@click="modalOpen.delete = true"
117+
@click="handleOpenDelete"
118118
>
119119
Delete draft
120120
</ElementsButton>
@@ -401,9 +401,9 @@
401401
@click="modalOpen.delete = false"
402402
/>
403403
<ElementsButton
404-
label="Delete"
404+
:label="`Delete${deleteTimeout != 0 ? ' (' + deleteTimeout + ')' : ''}`"
405405
color="danger"
406-
:disabled="loading"
406+
:disabled="loading || deleteTimeout != 0"
407407
@click="handleDelete"
408408
type="submit"
409409
class="order-first w-full md:order-[unset] md:w-auto"
@@ -445,6 +445,7 @@ const loading = ref(false)
445445
const submitting = ref(false)
446446
const uploading = ref(false)
447447
const errors = ref(false)
448+
const deleteTimeout = ref(10)
448449
const data = ref<{ extension: FullExtension }>()
449450
const fieldValidation = ref<Record<string, boolean>>({})
450451
const modalOpen = ref({
@@ -579,6 +580,18 @@ const handleBannerUpload = async (event: Event) => {
579580
}
580581
}
581582
583+
const handleOpenDelete = async () => {
584+
deleteTimeout.value = 10
585+
modalOpen.value.delete = true
586+
587+
const interval = setInterval(() => {
588+
if (deleteTimeout.value === 0) {
589+
return clearInterval(interval)
590+
}
591+
deleteTimeout.value--
592+
}, 1000)
593+
}
594+
582595
const handleDelete = async () => {
583596
errors.value = false
584597
loading.value = true

0 commit comments

Comments
 (0)