From 8d8d690fe1bd1dac00c6dff53fce8adf18dcc6d9 Mon Sep 17 00:00:00 2001 From: tglide <26071571+TGlide@users.noreply.github.com> Date: Fri, 28 Jul 2023 21:35:59 +0100 Subject: [PATCH] feat: document bulk deletion --- src/lib/elements/table/tableScroll.svelte | 3 +- .../collection-[collection]/table.svelte | 186 +++++++++++++++++- 2 files changed, 187 insertions(+), 2 deletions(-) diff --git a/src/lib/elements/table/tableScroll.svelte b/src/lib/elements/table/tableScroll.svelte index 814fe00e5..7a4017c0a 100644 --- a/src/lib/elements/table/tableScroll.svelte +++ b/src/lib/elements/table/tableScroll.svelte @@ -2,6 +2,7 @@ import type { Action } from 'svelte/action'; export let isSticky = false; + export let noMargin = false; const hasOverflow: Action void> = (node, callback) => { const observer = new ResizeObserver((entries) => { @@ -22,7 +23,7 @@ let isOverflowing = false; -
+
(isOverflowing = v)}> diff --git a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/table.svelte b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/table.svelte index 727be175c..0ab5070f9 100644 --- a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/table.svelte +++ b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/table.svelte @@ -1,5 +1,5 @@ + + 0 && selectedDb.length < data.documents.total} + value={selectedDb.length === data.documents.total} + on:click={(e) => { + if (!isHTMLInputElement(e.target)) return; + selectedDb = e.target.checked + ? data.documents.documents.map((database) => database.$id) + : []; + }} /> + Document ID {#each $columns.filter((n) => n.show) as column} {#if column.show} @@ -96,6 +165,26 @@ {#each data.documents.documents as document} + + { + // Prevent the link from being followed + e.preventDefault(); + const el = e.currentTarget; + if (!isHTMLInputElement(el)) return; + + selectedDb = toggle(selectedDb, document.$id); + + // Hack to make sure the checkbox is checked, independent of the + // preventDefault() call above + window.setTimeout(() => { + el.checked = selectedDb.includes(document.$id); + }); + }} /> + + {document.$id} @@ -165,3 +254,98 @@ + + 0}> +
+
+ {selectedDb.length} + + {selected.length > 1 ? 'documents' : 'document'} selected + +
+ +
+ + +
+
+
+ + + Delete Documents + +
+

+ Are you sure you want to delete {selectedDb.length} + {selectedDb.length > 1 ? 'documents' : 'document'}? +

+ + {#if relAttributes?.length} + + + Relation + Setting + + + + {#each relAttributes as attr} + + + + {#if attr.twoWay} + + {:else} + + {/if} + {attr.key} + + + + {attr.onDelete} + + + {Deletion[attr.onDelete]} + + + {/each} + + +
+ To change the selection edit the relationship settings. + + + Delete document from {$collection.name} + +
+ {:else} +

This action is irreversible.

+ {/if} +
+ + + + + +
+ +