compote-ui 0.56.1 → 0.57.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/data-table-v9/create-table.svelte.js +15 -14
- package/dist/index.d.ts +0 -2
- package/dist/index.js +0 -2
- package/package.json +6 -19
- package/dist/components/data-table-v8/column-helper.d.ts +0 -12
- package/dist/components/data-table-v8/column-helper.js +0 -42
- package/dist/components/data-table-v8/create-svelte-table.svelte.d.ts +0 -8
- package/dist/components/data-table-v8/create-svelte-table.svelte.js +0 -85
- package/dist/components/data-table-v8/create-table.svelte.d.ts +0 -35
- package/dist/components/data-table-v8/create-table.svelte.js +0 -234
- package/dist/components/data-table-v8/data-table-foot.svelte +0 -96
- package/dist/components/data-table-v8/data-table-foot.svelte.d.ts +0 -33
- package/dist/components/data-table-v8/data-table-head.svelte +0 -196
- package/dist/components/data-table-v8/data-table-head.svelte.d.ts +0 -35
- package/dist/components/data-table-v8/data-table-title.svelte +0 -16
- package/dist/components/data-table-v8/data-table-title.svelte.d.ts +0 -10
- package/dist/components/data-table-v8/data-table-utils.d.ts +0 -32
- package/dist/components/data-table-v8/data-table-utils.js +0 -160
- package/dist/components/data-table-v8/data-table.svelte +0 -273
- package/dist/components/data-table-v8/data-table.svelte.d.ts +0 -41
- package/dist/components/data-table-v8/flex-render.svelte +0 -35
- package/dist/components/data-table-v8/flex-render.svelte.d.ts +0 -28
- package/dist/components/data-table-v8/index.d.ts +0 -12
- package/dist/components/data-table-v8/index.js +0 -10
- package/dist/components/data-table-v8/render-helpers.d.ts +0 -13
- package/dist/components/data-table-v8/render-helpers.js +0 -23
- package/dist/components/data-table-v8/toolbar/data-table-column-filter.svelte +0 -373
- package/dist/components/data-table-v8/toolbar/data-table-column-filter.svelte.d.ts +0 -29
- package/dist/components/data-table-v8/toolbar/data-table-column-visibility.svelte +0 -73
- package/dist/components/data-table-v8/toolbar/data-table-column-visibility.svelte.d.ts +0 -29
- package/dist/components/data-table-v8/toolbar/data-table-search.svelte +0 -57
- package/dist/components/data-table-v8/toolbar/data-table-search.svelte.d.ts +0 -31
- package/dist/components/data-table-v8/toolbar/data-table-toolbar.svelte +0 -39
- package/dist/components/data-table-v8/toolbar/data-table-toolbar.svelte.d.ts +0 -12
- package/dist/components/data-table-v8/types.d.ts +0 -73
- package/dist/components/data-table-v8/types.js +0 -1
- package/dist/components/data-table-v8/virtual/data-table-virtual-rows.svelte +0 -176
- package/dist/components/data-table-v8/virtual/data-table-virtual-rows.svelte.d.ts +0 -40
- package/dist/components/data-table-v8/virtual/data-table-virtualized.svelte +0 -146
- package/dist/components/data-table-v8/virtual/data-table-virtualized.svelte.d.ts +0 -41
- package/dist/components/data-table-v8/virtual/index.d.ts +0 -3
- package/dist/components/data-table-v8/virtual/index.js +0 -2
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
import type { FilterFnOption, RowData } from '@tanstack/table-core';
|
|
2
|
-
import type { Snippet } from 'svelte';
|
|
3
|
-
export type DataTableAlign = 'left' | 'center' | 'right';
|
|
4
|
-
export type DataTableColumnType = 'text' | 'number' | 'currency' | 'percent' | 'boolean' | 'select' | 'url' | 'date' | 'time' | 'date-time';
|
|
5
|
-
export type DataTableCellRenderer<T extends RowData> = (value: unknown, row: T) => string | number | boolean | null | undefined;
|
|
6
|
-
export type DataTableCellRenderProps<T extends RowData> = {
|
|
7
|
-
value: unknown;
|
|
8
|
-
row: T;
|
|
9
|
-
};
|
|
10
|
-
export type DataTableCellPropsResolver<T extends RowData> = (value: unknown, row: T) => Record<string, unknown>;
|
|
11
|
-
export type DataTableColumnOptions<T extends RowData> = {
|
|
12
|
-
size?: number;
|
|
13
|
-
minSize?: number;
|
|
14
|
-
maxSize?: number;
|
|
15
|
-
enableResizing?: boolean;
|
|
16
|
-
enableHiding?: boolean;
|
|
17
|
-
enableSorting?: boolean;
|
|
18
|
-
sortDescFirst?: boolean;
|
|
19
|
-
enableColumnFilter?: boolean;
|
|
20
|
-
filterFn?: FilterFnOption<T>;
|
|
21
|
-
};
|
|
22
|
-
export type DataTableColumnBase = {
|
|
23
|
-
header: string;
|
|
24
|
-
align?: DataTableAlign;
|
|
25
|
-
};
|
|
26
|
-
export type DataTableLeafColumnBase<T extends RowData> = DataTableColumnOptions<T> & DataTableColumnBase & {
|
|
27
|
-
cell?: DataTableCellRenderer<T>;
|
|
28
|
-
cellComponent?: unknown;
|
|
29
|
-
cellProps?: DataTableCellPropsResolver<T>;
|
|
30
|
-
cellSnippet?: Snippet<[DataTableCellRenderProps<T>]>;
|
|
31
|
-
type?: DataTableColumnType;
|
|
32
|
-
formatOptions?: Intl.NumberFormatOptions | Intl.DateTimeFormatOptions;
|
|
33
|
-
formatLocale?: string;
|
|
34
|
-
pinned?: 'left' | 'right';
|
|
35
|
-
grow?: boolean;
|
|
36
|
-
sum?: boolean;
|
|
37
|
-
footer?: (values: unknown[]) => string | number | undefined;
|
|
38
|
-
columns?: never;
|
|
39
|
-
};
|
|
40
|
-
export type DataTableAccessorKeyColumn<T extends RowData> = DataTableLeafColumnBase<T> & {
|
|
41
|
-
accessorKey: Extract<keyof T, string>;
|
|
42
|
-
id?: string;
|
|
43
|
-
accessorFn?: never;
|
|
44
|
-
};
|
|
45
|
-
export type DataTableAccessorFnColumn<T extends RowData> = DataTableLeafColumnBase<T> & {
|
|
46
|
-
accessorFn: (row: T) => unknown;
|
|
47
|
-
id: string;
|
|
48
|
-
accessorKey?: never;
|
|
49
|
-
};
|
|
50
|
-
export type DataTableLeafColumn<T extends RowData> = DataTableAccessorKeyColumn<T> | DataTableAccessorFnColumn<T>;
|
|
51
|
-
export type DataTableGroupColumn<T extends RowData> = DataTableColumnBase & {
|
|
52
|
-
id?: string;
|
|
53
|
-
columns: DataTableColumn<T>[];
|
|
54
|
-
accessorKey?: never;
|
|
55
|
-
accessorFn?: never;
|
|
56
|
-
cell?: never;
|
|
57
|
-
cellComponent?: never;
|
|
58
|
-
cellProps?: never;
|
|
59
|
-
cellSnippet?: never;
|
|
60
|
-
type?: never;
|
|
61
|
-
formatOptions?: never;
|
|
62
|
-
formatLocale?: never;
|
|
63
|
-
};
|
|
64
|
-
export type DataTableColumn<T extends RowData> = DataTableLeafColumn<T> | DataTableGroupColumn<T>;
|
|
65
|
-
export type DataTableColumnMeta = {
|
|
66
|
-
align?: DataTableAlign;
|
|
67
|
-
type?: DataTableColumnType;
|
|
68
|
-
formatOptions?: Intl.NumberFormatOptions | Intl.DateTimeFormatOptions;
|
|
69
|
-
formatLocale?: string;
|
|
70
|
-
grow?: boolean;
|
|
71
|
-
sum?: boolean;
|
|
72
|
-
footer?: (values: unknown[]) => string | number | undefined;
|
|
73
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,176 +0,0 @@
|
|
|
1
|
-
<script lang="ts" generics="T extends RowData">
|
|
2
|
-
import type { Row, RowData } from '@tanstack/table-core';
|
|
3
|
-
import { createVirtualizer } from '@tanstack/svelte-virtual';
|
|
4
|
-
import { untrack } from 'svelte';
|
|
5
|
-
import { cn } from 'tailwind-variants';
|
|
6
|
-
import { PhArrowSquareOut, PhCheck, PhX } from '../../../icons';
|
|
7
|
-
import type { DataTableInstance } from '../data-table-utils';
|
|
8
|
-
import FlexRender from '../flex-render.svelte';
|
|
9
|
-
import {
|
|
10
|
-
alignClass,
|
|
11
|
-
getBooleanCellValue,
|
|
12
|
-
getColumnMeta,
|
|
13
|
-
getPinningStyle,
|
|
14
|
-
getReactiveCells,
|
|
15
|
-
getReactiveTableState,
|
|
16
|
-
getUrlCellValue,
|
|
17
|
-
joinStyles,
|
|
18
|
-
justifyClass,
|
|
19
|
-
openUrlCell,
|
|
20
|
-
virtualColumnSizeStyle,
|
|
21
|
-
virtualGrowColumnSizeStyle,
|
|
22
|
-
virtualSelectionColumnSizeStyle
|
|
23
|
-
} from '../data-table-utils';
|
|
24
|
-
|
|
25
|
-
type Props = {
|
|
26
|
-
rows: Row<T>[];
|
|
27
|
-
scrollContainer: HTMLDivElement;
|
|
28
|
-
isRowSelectionEnabled: boolean;
|
|
29
|
-
table: DataTableInstance<T>;
|
|
30
|
-
emptyMessage: string;
|
|
31
|
-
onRowClick?: (details: { row: T; event: MouseEvent }) => void;
|
|
32
|
-
onRowDoubleClick?: (details: { row: T; event: MouseEvent }) => void;
|
|
33
|
-
};
|
|
34
|
-
|
|
35
|
-
let {
|
|
36
|
-
rows,
|
|
37
|
-
scrollContainer,
|
|
38
|
-
isRowSelectionEnabled,
|
|
39
|
-
table,
|
|
40
|
-
emptyMessage,
|
|
41
|
-
onRowClick,
|
|
42
|
-
onRowDoubleClick
|
|
43
|
-
}: Props = $props();
|
|
44
|
-
|
|
45
|
-
const rowVirtualizer = createVirtualizer<HTMLDivElement, HTMLTableRowElement>({
|
|
46
|
-
get count() {
|
|
47
|
-
return rows.length;
|
|
48
|
-
},
|
|
49
|
-
estimateSize: () => 37,
|
|
50
|
-
getScrollElement: () => scrollContainer,
|
|
51
|
-
measureElement:
|
|
52
|
-
typeof window !== 'undefined' && !navigator.userAgent.includes('Firefox')
|
|
53
|
-
? (element) => element.getBoundingClientRect().height
|
|
54
|
-
: undefined,
|
|
55
|
-
overscan: 5
|
|
56
|
-
});
|
|
57
|
-
|
|
58
|
-
function measureRowElement(node: HTMLTableRowElement) {
|
|
59
|
-
$rowVirtualizer.measureElement(node);
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
$effect(() => {
|
|
63
|
-
const count = rows.length;
|
|
64
|
-
untrack(() => {
|
|
65
|
-
$rowVirtualizer.setOptions({ ...$rowVirtualizer.options, count });
|
|
66
|
-
});
|
|
67
|
-
});
|
|
68
|
-
</script>
|
|
69
|
-
|
|
70
|
-
<tbody style="display: grid; height: {$rowVirtualizer.getTotalSize()}px; position: relative">
|
|
71
|
-
{#if rows.length === 0}
|
|
72
|
-
<tr style="display: flex; position: absolute; width: 100%; top: 0">
|
|
73
|
-
<td class="px-3 py-10 text-center text-sm text-ink-dim" style="flex: 1">
|
|
74
|
-
{emptyMessage}
|
|
75
|
-
</td>
|
|
76
|
-
</tr>
|
|
77
|
-
{:else}
|
|
78
|
-
{#each $rowVirtualizer.getVirtualItems() as virtualRow (virtualRow.index)}
|
|
79
|
-
{@const row = rows[virtualRow.index]}
|
|
80
|
-
{#if row}
|
|
81
|
-
{@const rowSelected = getReactiveTableState(table).rowSelection[row.id] === true}
|
|
82
|
-
<tr
|
|
83
|
-
data-index={virtualRow.index}
|
|
84
|
-
use:measureRowElement
|
|
85
|
-
class={cn(
|
|
86
|
-
'group/row border-b border-surface-2 last:border-b-0',
|
|
87
|
-
'[--row-bg:var(--compote-surface-1)]',
|
|
88
|
-
'hover:bg-well/60 hover:[--row-bg:color-mix(in_srgb,var(--compote-well)_60%,var(--compote-surface-1))]',
|
|
89
|
-
rowSelected &&
|
|
90
|
-
'bg-well/60 [--row-bg:color-mix(in_srgb,var(--compote-well)_60%,var(--compote-surface-1))]'
|
|
91
|
-
)}
|
|
92
|
-
style="display: flex; position: absolute; transform: translateY({virtualRow.start}px); width: 100%"
|
|
93
|
-
onclick={(event) => onRowClick?.({ row: row.original, event })}
|
|
94
|
-
ondblclick={(event) => onRowDoubleClick?.({ row: row.original, event })}
|
|
95
|
-
>
|
|
96
|
-
{#if isRowSelectionEnabled}
|
|
97
|
-
<td
|
|
98
|
-
class="items-center justify-center bg-(--row-bg) px-3 py-2 text-center align-middle"
|
|
99
|
-
style={joinStyles(
|
|
100
|
-
virtualSelectionColumnSizeStyle(),
|
|
101
|
-
'position: sticky; left: 0; z-index: 1'
|
|
102
|
-
)}
|
|
103
|
-
>
|
|
104
|
-
<input
|
|
105
|
-
type="checkbox"
|
|
106
|
-
aria-label="Select row"
|
|
107
|
-
class="table-checkbox mx-auto block size-4"
|
|
108
|
-
checked={rowSelected}
|
|
109
|
-
disabled={!row.getCanSelect()}
|
|
110
|
-
onchange={(e) => row.toggleSelected(e.currentTarget.checked)}
|
|
111
|
-
/>
|
|
112
|
-
</td>
|
|
113
|
-
{/if}
|
|
114
|
-
{#each getReactiveCells(row, getReactiveTableState(table).columnVisibility) as cell (cell.id)}
|
|
115
|
-
{@const columnDef = getColumnMeta(cell.column.columnDef)}
|
|
116
|
-
<td
|
|
117
|
-
class={cn(
|
|
118
|
-
'items-center truncate px-3 py-2',
|
|
119
|
-
alignClass(columnDef?.align),
|
|
120
|
-
justifyClass(columnDef?.align),
|
|
121
|
-
cell.column.getIsPinned() && 'bg-(--row-bg)'
|
|
122
|
-
)}
|
|
123
|
-
style={joinStyles(
|
|
124
|
-
getColumnMeta(cell.column.columnDef)?.grow
|
|
125
|
-
? virtualGrowColumnSizeStyle()
|
|
126
|
-
: virtualColumnSizeStyle(cell.column.getSize()),
|
|
127
|
-
getPinningStyle(cell.column, table, false, isRowSelectionEnabled)
|
|
128
|
-
)}
|
|
129
|
-
>
|
|
130
|
-
{#if columnDef?.type === 'boolean'}
|
|
131
|
-
{@const value = getBooleanCellValue(cell.getValue())}
|
|
132
|
-
{#if value === true}
|
|
133
|
-
<span
|
|
134
|
-
class="inline-flex size-5 items-center justify-center text-success"
|
|
135
|
-
role="img"
|
|
136
|
-
aria-label="Yes"
|
|
137
|
-
>
|
|
138
|
-
<PhCheck class="size-4" />
|
|
139
|
-
</span>
|
|
140
|
-
{:else if value === false}
|
|
141
|
-
<span
|
|
142
|
-
class="inline-flex size-5 items-center justify-center text-danger"
|
|
143
|
-
role="img"
|
|
144
|
-
aria-label="No"
|
|
145
|
-
>
|
|
146
|
-
<PhX class="size-4" />
|
|
147
|
-
</span>
|
|
148
|
-
{:else}
|
|
149
|
-
-
|
|
150
|
-
{/if}
|
|
151
|
-
{:else if columnDef?.type === 'url'}
|
|
152
|
-
{@const value = getUrlCellValue(cell.getValue())}
|
|
153
|
-
{#if value}
|
|
154
|
-
<button
|
|
155
|
-
type="button"
|
|
156
|
-
class={cn(
|
|
157
|
-
'inline-flex max-w-full appearance-none items-center gap-1.5 rounded-sm border-0 bg-transparent p-0 align-middle leading-5 font-medium text-ink underline decoration-border decoration-dotted underline-offset-4 outline-none hover:text-primary focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring',
|
|
158
|
-
justifyClass(columnDef.align)
|
|
159
|
-
)}
|
|
160
|
-
onclick={() => openUrlCell(value)}
|
|
161
|
-
>
|
|
162
|
-
<PhArrowSquareOut class="size-3.5 shrink-0" />
|
|
163
|
-
</button>
|
|
164
|
-
{:else}
|
|
165
|
-
-
|
|
166
|
-
{/if}
|
|
167
|
-
{:else}
|
|
168
|
-
<FlexRender content={cell.column.columnDef.cell} context={cell.getContext()} />
|
|
169
|
-
{/if}
|
|
170
|
-
</td>
|
|
171
|
-
{/each}
|
|
172
|
-
</tr>
|
|
173
|
-
{/if}
|
|
174
|
-
{/each}
|
|
175
|
-
{/if}
|
|
176
|
-
</tbody>
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import type { Row, RowData } from '@tanstack/table-core';
|
|
2
|
-
import type { DataTableInstance } from '../data-table-utils';
|
|
3
|
-
declare function $$render<T extends RowData>(): {
|
|
4
|
-
props: {
|
|
5
|
-
rows: Row<T>[];
|
|
6
|
-
scrollContainer: HTMLDivElement;
|
|
7
|
-
isRowSelectionEnabled: boolean;
|
|
8
|
-
table: DataTableInstance<T>;
|
|
9
|
-
emptyMessage: string;
|
|
10
|
-
onRowClick?: (details: {
|
|
11
|
-
row: T;
|
|
12
|
-
event: MouseEvent;
|
|
13
|
-
}) => void;
|
|
14
|
-
onRowDoubleClick?: (details: {
|
|
15
|
-
row: T;
|
|
16
|
-
event: MouseEvent;
|
|
17
|
-
}) => void;
|
|
18
|
-
};
|
|
19
|
-
exports: {};
|
|
20
|
-
bindings: "";
|
|
21
|
-
slots: {};
|
|
22
|
-
events: {};
|
|
23
|
-
};
|
|
24
|
-
declare class __sveltets_Render<T extends RowData> {
|
|
25
|
-
props(): ReturnType<typeof $$render<T>>['props'];
|
|
26
|
-
events(): ReturnType<typeof $$render<T>>['events'];
|
|
27
|
-
slots(): ReturnType<typeof $$render<T>>['slots'];
|
|
28
|
-
bindings(): "";
|
|
29
|
-
exports(): {};
|
|
30
|
-
}
|
|
31
|
-
interface $$IsomorphicComponent {
|
|
32
|
-
new <T extends RowData>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<T>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<T>['props']>, ReturnType<__sveltets_Render<T>['events']>, ReturnType<__sveltets_Render<T>['slots']>> & {
|
|
33
|
-
$$bindings?: ReturnType<__sveltets_Render<T>['bindings']>;
|
|
34
|
-
} & ReturnType<__sveltets_Render<T>['exports']>;
|
|
35
|
-
<T extends RowData>(internal: unknown, props: ReturnType<__sveltets_Render<T>['props']> & {}): ReturnType<__sveltets_Render<T>['exports']>;
|
|
36
|
-
z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
|
|
37
|
-
}
|
|
38
|
-
declare const DataTableVirtualRows: $$IsomorphicComponent;
|
|
39
|
-
type DataTableVirtualRows<T extends RowData> = InstanceType<typeof DataTableVirtualRows<T>>;
|
|
40
|
-
export default DataTableVirtualRows;
|
|
@@ -1,146 +0,0 @@
|
|
|
1
|
-
<script lang="ts" generics="T extends RowData">
|
|
2
|
-
import type { RowData } from '@tanstack/table-core';
|
|
3
|
-
import type { HTMLAttributes } from 'svelte/elements';
|
|
4
|
-
import { cn, type ClassValue } from 'tailwind-variants';
|
|
5
|
-
import type { DataTableInstance } from '../data-table-utils';
|
|
6
|
-
import DataTableHead from '../data-table-head.svelte';
|
|
7
|
-
import DataTableFoot from '../data-table-foot.svelte';
|
|
8
|
-
import DataTableVirtualRows from './data-table-virtual-rows.svelte';
|
|
9
|
-
import {
|
|
10
|
-
getAllRowsSelectionState,
|
|
11
|
-
getColumnMeta,
|
|
12
|
-
getReactiveTableState,
|
|
13
|
-
getSelectedRowCount,
|
|
14
|
-
tableSizeStyle
|
|
15
|
-
} from '../data-table-utils';
|
|
16
|
-
|
|
17
|
-
type Props = Omit<HTMLAttributes<HTMLDivElement>, 'class'> & {
|
|
18
|
-
table: DataTableInstance<T>;
|
|
19
|
-
caption?: string;
|
|
20
|
-
emptyMessage?: string;
|
|
21
|
-
class?: ClassValue;
|
|
22
|
-
onRowClick?: (details: { row: T; event: MouseEvent }) => void;
|
|
23
|
-
onRowDoubleClick?: (details: { row: T; event: MouseEvent }) => void;
|
|
24
|
-
};
|
|
25
|
-
|
|
26
|
-
let {
|
|
27
|
-
table,
|
|
28
|
-
caption,
|
|
29
|
-
emptyMessage = 'No rows found',
|
|
30
|
-
class: className,
|
|
31
|
-
onRowClick,
|
|
32
|
-
onRowDoubleClick,
|
|
33
|
-
...rest
|
|
34
|
-
}: Props = $props();
|
|
35
|
-
|
|
36
|
-
let scrollContainerRef = $state<HTMLDivElement | undefined>(undefined);
|
|
37
|
-
|
|
38
|
-
const tableState = $derived(getReactiveTableState(table));
|
|
39
|
-
const rowModel = $derived.by(() => {
|
|
40
|
-
getReactiveTableState(table);
|
|
41
|
-
return table.getRowModel();
|
|
42
|
-
});
|
|
43
|
-
const headerGroups = $derived.by(() => {
|
|
44
|
-
const { columnPinning, columnVisibility } = getReactiveTableState(table);
|
|
45
|
-
void columnPinning;
|
|
46
|
-
void columnVisibility;
|
|
47
|
-
|
|
48
|
-
const leftHeaderGroups = table.getLeftHeaderGroups();
|
|
49
|
-
const centerHeaderGroups = table.getCenterHeaderGroups();
|
|
50
|
-
const rightHeaderGroups = table.getRightHeaderGroups();
|
|
51
|
-
|
|
52
|
-
return centerHeaderGroups.map((headerGroup, index) => ({
|
|
53
|
-
...headerGroup,
|
|
54
|
-
id: `${leftHeaderGroups[index]?.id ?? ''}|${headerGroup.id}|${rightHeaderGroups[index]?.id ?? ''}`,
|
|
55
|
-
headers: [
|
|
56
|
-
...(leftHeaderGroups[index]?.headers ?? []),
|
|
57
|
-
...headerGroup.headers,
|
|
58
|
-
...(rightHeaderGroups[index]?.headers ?? [])
|
|
59
|
-
]
|
|
60
|
-
}));
|
|
61
|
-
});
|
|
62
|
-
const isRowSelectionEnabled = $derived(Boolean(table.options.enableRowSelection));
|
|
63
|
-
const isMultiRowSelectionEnabled = $derived(table.options.enableMultiRowSelection !== false);
|
|
64
|
-
const headerGroupCount = $derived(headerGroups.length);
|
|
65
|
-
const allRowsSelectionState = $derived.by(() => {
|
|
66
|
-
getReactiveTableState(table);
|
|
67
|
-
return getAllRowsSelectionState(table);
|
|
68
|
-
});
|
|
69
|
-
const selectedRowCount = $derived.by(() => {
|
|
70
|
-
getReactiveTableState(table);
|
|
71
|
-
return getSelectedRowCount(table);
|
|
72
|
-
});
|
|
73
|
-
const isColumnResizing = $derived(tableState.columnSizingInfo.isResizingColumn !== false);
|
|
74
|
-
const visibleLeafColumns = $derived.by(() => {
|
|
75
|
-
const { columnVisibility } = getReactiveTableState(table);
|
|
76
|
-
void columnVisibility;
|
|
77
|
-
return table.getVisibleLeafColumns();
|
|
78
|
-
});
|
|
79
|
-
const hasFooter = $derived(
|
|
80
|
-
visibleLeafColumns.some((col) => {
|
|
81
|
-
const meta = getColumnMeta(col.columnDef);
|
|
82
|
-
return !!(meta?.sum || meta?.footer);
|
|
83
|
-
})
|
|
84
|
-
);
|
|
85
|
-
</script>
|
|
86
|
-
|
|
87
|
-
<div
|
|
88
|
-
class={cn(
|
|
89
|
-
'flex max-h-full min-h-0 flex-col overflow-hidden rounded-lg border border-surface-3 bg-surface-1',
|
|
90
|
-
className
|
|
91
|
-
)}
|
|
92
|
-
{...rest}
|
|
93
|
-
>
|
|
94
|
-
{#if isColumnResizing}
|
|
95
|
-
<div aria-hidden="true" class="fixed inset-0 z-50 cursor-col-resize select-none"></div>
|
|
96
|
-
{/if}
|
|
97
|
-
|
|
98
|
-
<div class="min-h-0 flex-1 overflow-auto" bind:this={scrollContainerRef}>
|
|
99
|
-
<table
|
|
100
|
-
class="table-fixed border-separate border-spacing-0 text-sm"
|
|
101
|
-
style="display: grid; {tableSizeStyle(table, isRowSelectionEnabled)}"
|
|
102
|
-
>
|
|
103
|
-
{#if caption}
|
|
104
|
-
<caption class="sr-only">{caption}</caption>
|
|
105
|
-
{/if}
|
|
106
|
-
<DataTableHead
|
|
107
|
-
{table}
|
|
108
|
-
{headerGroups}
|
|
109
|
-
{headerGroupCount}
|
|
110
|
-
{isRowSelectionEnabled}
|
|
111
|
-
{isMultiRowSelectionEnabled}
|
|
112
|
-
{allRowsSelectionState}
|
|
113
|
-
isVirtual
|
|
114
|
-
/>
|
|
115
|
-
{#if scrollContainerRef}
|
|
116
|
-
<DataTableVirtualRows
|
|
117
|
-
rows={rowModel.rows}
|
|
118
|
-
scrollContainer={scrollContainerRef}
|
|
119
|
-
{isRowSelectionEnabled}
|
|
120
|
-
{table}
|
|
121
|
-
{emptyMessage}
|
|
122
|
-
{onRowClick}
|
|
123
|
-
{onRowDoubleClick}
|
|
124
|
-
/>
|
|
125
|
-
{/if}
|
|
126
|
-
{#if hasFooter}
|
|
127
|
-
<DataTableFoot
|
|
128
|
-
{table}
|
|
129
|
-
{visibleLeafColumns}
|
|
130
|
-
rows={rowModel.rows}
|
|
131
|
-
{isRowSelectionEnabled}
|
|
132
|
-
hasGrowColumn={false}
|
|
133
|
-
isVirtual
|
|
134
|
-
/>
|
|
135
|
-
{/if}
|
|
136
|
-
</table>
|
|
137
|
-
</div>
|
|
138
|
-
|
|
139
|
-
<div class="shrink-0 border-t border-surface-3 bg-surface-2 px-3 py-2 text-sm text-ink-dim">
|
|
140
|
-
{#if isRowSelectionEnabled}
|
|
141
|
-
{selectedRowCount} of {rowModel.rows.length} rows selected
|
|
142
|
-
{:else}
|
|
143
|
-
{rowModel.rows.length} rows
|
|
144
|
-
{/if}
|
|
145
|
-
</div>
|
|
146
|
-
</div>
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import type { RowData } from '@tanstack/table-core';
|
|
2
|
-
import type { HTMLAttributes } from 'svelte/elements';
|
|
3
|
-
import { type ClassValue } from 'tailwind-variants';
|
|
4
|
-
import type { DataTableInstance } from '../data-table-utils';
|
|
5
|
-
declare function $$render<T extends RowData>(): {
|
|
6
|
-
props: Omit<HTMLAttributes<HTMLDivElement>, "class"> & {
|
|
7
|
-
table: DataTableInstance<T>;
|
|
8
|
-
caption?: string;
|
|
9
|
-
emptyMessage?: string;
|
|
10
|
-
class?: ClassValue;
|
|
11
|
-
onRowClick?: (details: {
|
|
12
|
-
row: T;
|
|
13
|
-
event: MouseEvent;
|
|
14
|
-
}) => void;
|
|
15
|
-
onRowDoubleClick?: (details: {
|
|
16
|
-
row: T;
|
|
17
|
-
event: MouseEvent;
|
|
18
|
-
}) => void;
|
|
19
|
-
};
|
|
20
|
-
exports: {};
|
|
21
|
-
bindings: "";
|
|
22
|
-
slots: {};
|
|
23
|
-
events: {};
|
|
24
|
-
};
|
|
25
|
-
declare class __sveltets_Render<T extends RowData> {
|
|
26
|
-
props(): ReturnType<typeof $$render<T>>['props'];
|
|
27
|
-
events(): ReturnType<typeof $$render<T>>['events'];
|
|
28
|
-
slots(): ReturnType<typeof $$render<T>>['slots'];
|
|
29
|
-
bindings(): "";
|
|
30
|
-
exports(): {};
|
|
31
|
-
}
|
|
32
|
-
interface $$IsomorphicComponent {
|
|
33
|
-
new <T extends RowData>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<T>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<T>['props']>, ReturnType<__sveltets_Render<T>['events']>, ReturnType<__sveltets_Render<T>['slots']>> & {
|
|
34
|
-
$$bindings?: ReturnType<__sveltets_Render<T>['bindings']>;
|
|
35
|
-
} & ReturnType<__sveltets_Render<T>['exports']>;
|
|
36
|
-
<T extends RowData>(internal: unknown, props: ReturnType<__sveltets_Render<T>['props']> & {}): ReturnType<__sveltets_Render<T>['exports']>;
|
|
37
|
-
z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
|
|
38
|
-
}
|
|
39
|
-
declare const DataTableVirtualized: $$IsomorphicComponent;
|
|
40
|
-
type DataTableVirtualized<T extends RowData> = InstanceType<typeof DataTableVirtualized<T>>;
|
|
41
|
-
export default DataTableVirtualized;
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
export { default as Root } from './data-table-virtualized.svelte';
|
|
2
|
-
export { ColumnFilter, ColumnVisibility, FlexRender, Search, Title, Toolbar, createDataTableColumnHelper, createTable, renderComponent, renderSnippet } from '../index';
|
|
3
|
-
export type { CreateDataTableOptions, DataTableAccessorFnColumn, DataTableAccessorKeyColumn, DataTableAlign, DataTableCellPropsResolver, DataTableCellRenderProps, DataTableColumn, DataTableColumnBase, DataTableColumnOptions, DataTableColumnType, DataTableGroupColumn, DataTableInstance, DataTableLeafColumn, DataTableLeafColumnBase } from '../index';
|