feat(RunnersOverview): row selection
This commit is contained in:
parent
c5e8409079
commit
6993511c67
@ -11,6 +11,9 @@
|
|||||||
getSortedRowModel,
|
getSortedRowModel,
|
||||||
} from "@tanstack/svelte-table";
|
} from "@tanstack/svelte-table";
|
||||||
|
|
||||||
|
$: selected =
|
||||||
|
$table?.getSelectedRowModel().rows.map((row) => row.index) || [];
|
||||||
|
|
||||||
const columns = [
|
const columns = [
|
||||||
{
|
{
|
||||||
accessorKey: "id",
|
accessorKey: "id",
|
||||||
@ -51,6 +54,7 @@
|
|||||||
import GenerateRunnerCards from "../pdf_generation/GenerateRunnerCards.svelte";
|
import GenerateRunnerCards from "../pdf_generation/GenerateRunnerCards.svelte";
|
||||||
import GenerateRunnerCertificates from "../pdf_generation/GenerateRunnerCertificates.svelte";
|
import GenerateRunnerCertificates from "../pdf_generation/GenerateRunnerCertificates.svelte";
|
||||||
import { onMount } from "svelte";
|
import { onMount } from "svelte";
|
||||||
|
import InputElement from "../shared/InputElement.svelte";
|
||||||
$: active_deletes = [];
|
$: active_deletes = [];
|
||||||
let dataLoaded = false;
|
let dataLoaded = false;
|
||||||
export let current_runners = [];
|
export let current_runners = [];
|
||||||
@ -76,6 +80,7 @@
|
|||||||
pageSize: tablePageCount[0],
|
pageSize: tablePageCount[0],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
enableRowSelection: true,
|
||||||
getCoreRowModel: getCoreRowModel(),
|
getCoreRowModel: getCoreRowModel(),
|
||||||
getFilteredRowModel: getFilteredRowModel(),
|
getFilteredRowModel: getFilteredRowModel(),
|
||||||
getPaginationRowModel: getPaginationRowModel(),
|
getPaginationRowModel: getPaginationRowModel(),
|
||||||
@ -128,6 +133,14 @@
|
|||||||
<thead>
|
<thead>
|
||||||
{#each $table.getHeaderGroups() as headerGroup}
|
{#each $table.getHeaderGroups() as headerGroup}
|
||||||
<tr class="select-none">
|
<tr class="select-none">
|
||||||
|
<th class="inset-y-0 left-0 px-4 py-2 text-left bg-stone-100 w-px">
|
||||||
|
<InputElement
|
||||||
|
type="checkbox"
|
||||||
|
checked={$table.getIsAllRowsSelected()}
|
||||||
|
indeterminate={$table.getIsSomeRowsSelected()}
|
||||||
|
on:change={() => $table.toggleAllRowsSelected()}
|
||||||
|
/>
|
||||||
|
</th>
|
||||||
{#each headerGroup.headers as header}
|
{#each headerGroup.headers as header}
|
||||||
<th class="cursor-pointer">
|
<th class="cursor-pointer">
|
||||||
{#if !header.isPlaceholder}
|
{#if !header.isPlaceholder}
|
||||||
@ -183,6 +196,13 @@
|
|||||||
<tbody>
|
<tbody>
|
||||||
{#each $table.getRowModel().rows as row}
|
{#each $table.getRowModel().rows as row}
|
||||||
<tr>
|
<tr>
|
||||||
|
<td class="inset-y-0 left-0 px-4 py-2">
|
||||||
|
<InputElement
|
||||||
|
type="checkbox"
|
||||||
|
checked={row.getIsSelected()}
|
||||||
|
on:change={() => row.toggleSelected()}
|
||||||
|
/>
|
||||||
|
</td>
|
||||||
{#each row.getVisibleCells() as cell}
|
{#each row.getVisibleCells() as cell}
|
||||||
<td>
|
<td>
|
||||||
<svelte:component
|
<svelte:component
|
||||||
@ -260,6 +280,10 @@
|
|||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<pre>{JSON.stringify($table.getState(), null, 2)}</pre>
|
<pre>{JSON.stringify($table.getState(), null, 2)}</pre>
|
||||||
|
<div>
|
||||||
|
{Object.keys(selected).length} of{" "}
|
||||||
|
{$table.getPreFilteredRowModel().rows.length} Total Rows Selected
|
||||||
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
|
20
src/components/shared/InputElement.svelte
Normal file
20
src/components/shared/InputElement.svelte
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
<script>
|
||||||
|
let className = "";
|
||||||
|
export { className as class };
|
||||||
|
|
||||||
|
export let type;
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<input
|
||||||
|
class={`border-1 border-stone-300 border rounded-md shadow ${className} ${
|
||||||
|
type === "checkbox" && "w-5 h-5 text-orange-400"
|
||||||
|
}`}
|
||||||
|
{type}
|
||||||
|
{...$$restProps}
|
||||||
|
on:click
|
||||||
|
on:change
|
||||||
|
on:keydown
|
||||||
|
on:keyup
|
||||||
|
on:mouseenter
|
||||||
|
on:mouseleave
|
||||||
|
/>
|
Loading…
x
Reference in New Issue
Block a user