@lavalogic/scoria 0.12.3 → 0.13.2
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/Table/Body/QuickSearchCell.svelte +4 -5
- package/dist/Components/Table/Body/QuickSearchCell.svelte.d.ts +12 -12
- package/dist/Components/Table/Body/QuickSearchCellProps.d.ts +2 -2
- package/dist/Components/Table/Body/Rows/ColumnList.svelte +2 -2
- package/dist/Components/Table/Body/Rows/ColumnListRow.svelte +3 -3
- package/dist/Components/Table/Body/Rows/ColumnListRow.svelte.d.ts +12 -12
- package/dist/Components/Table/Body/Rows/ColumnListRowProps.d.ts +2 -2
- package/dist/Components/Table/Body/Rows/Columns/ActionsCell.svelte +26 -16
- package/dist/Components/Table/Body/Rows/Columns/ActionsCell.svelte.d.ts +1 -1
- package/dist/Components/Table/Body/Rows/Columns/ActionsCellProps.d.ts +2 -2
- package/dist/Components/Table/Body/Rows/Columns/ActionsColumn.d.ts +1 -1
- package/dist/Components/Table/Body/Rows/Columns/ActionsTableCell.d.ts +2 -2
- package/dist/Components/Table/Body/Rows/Columns/BubbleCell.svelte +8 -6
- package/dist/Components/Table/Body/Rows/Columns/ExpandCell.svelte +11 -3
- package/dist/Components/Table/Body/Rows/Columns/ExpandCell.svelte.d.ts +13 -12
- package/dist/Components/Table/Body/Rows/Columns/ExpandCellProps.d.ts +5 -4
- package/dist/Components/Table/Body/Rows/Columns/FocusableImmutableCell.svelte +1 -1
- package/dist/Components/Table/Body/Rows/Columns/ProgressCell.svelte +8 -6
- package/dist/Components/Table/Body/Rows/Columns/RowSelectionColumn.d.ts +2 -1
- package/dist/Components/Table/Body/Rows/Columns/RowSelectionTableCell.d.ts +2 -1
- package/dist/Components/Table/Body/Rows/Columns/SelectColumn.d.ts +2 -1
- package/dist/Components/Table/Body/Rows/Columns/TableAction.svelte +4 -4
- package/dist/Components/Table/Body/Rows/Columns/TableAction.svelte.d.ts +14 -14
- package/dist/Components/Table/Body/Rows/Columns/TableCheckbox.svelte +1 -1
- package/dist/Components/Table/Body/Rows/Columns/TableColumn.svelte +7 -4
- package/dist/Components/Table/Body/Rows/Columns/TableColumn.svelte.d.ts +3 -2
- package/dist/Components/Table/Body/Rows/Columns/TableDatePicker.svelte +3 -3
- package/dist/Components/Table/Body/Rows/Columns/TableNumberInput.svelte +7 -6
- package/dist/Components/Table/Body/Rows/Columns/TableQueryColumn.d.ts +2 -1
- package/dist/Components/Table/Body/Rows/Columns/TableQuerySelect.svelte +8 -6
- package/dist/Components/Table/Body/Rows/Columns/TableRowSelectionCheckbox.svelte +7 -4
- package/dist/Components/Table/Body/Rows/Columns/TableSelect.svelte +8 -6
- package/dist/Components/Table/Body/Rows/Columns/TableTextInput.svelte +8 -6
- package/dist/Components/Table/Body/Rows/Columns/ValidityCell.svelte +3 -3
- package/dist/Components/Table/Body/Rows/TableRow.svelte +8 -7
- package/dist/Components/Table/Body/TableBody.svelte +19 -15
- package/dist/Components/Table/Body/TableBodyProps.d.ts +1 -1
- package/dist/Components/Table/ColumnDefinitions/ExampleItemColumnDefRepository.svelte.d.ts +1 -1
- package/dist/Components/Table/ColumnDefinitions/ExampleItemColumnDefRepository.svelte.js +17 -15
- package/dist/Components/Table/Headers/HighlightAllHeader.svelte +29 -16
- package/dist/Components/Table/Headers/SelectAllHeader.svelte +1 -1
- package/dist/Components/Table/Headers/TableHead.svelte +4 -4
- package/dist/Components/Table/Misc/ColumnPanel.svelte +1 -1
- package/dist/Components/Table/Misc/ColumnPanelModal.svelte +1 -1
- package/dist/Components/Table/Misc/FilterInput.svelte +3 -5
- package/dist/Components/Table/Misc/FilterInput.svelte.d.ts +12 -12
- package/dist/Components/Table/Misc/FilterInputProps.d.ts +2 -2
- package/dist/Components/Table/Misc/FilterPanel.svelte +2 -2
- package/dist/Components/Table/Misc/FilterPanelModal.svelte +2 -2
- package/dist/Components/Table/Misc/TableFooter.svelte +1 -1
- package/dist/Components/Table/Misc/TableHorizontalBar.svelte +1 -1
- package/dist/Components/Table/Misc/TableSidebar.svelte +2 -1
- package/dist/Components/Table/Misc/ToolboxPanel.svelte +2 -2
- package/dist/Components/Table/Misc/ToolboxPanelModal.svelte +1 -1
- package/dist/Components/Table/NestedTable.svelte +12 -8
- package/dist/Components/Table/NestedTable.svelte.d.ts +15 -15
- package/dist/Components/Table/Table.svelte +111 -118
- package/dist/Components/Table/Table.svelte.d.ts +16 -15
- package/dist/Components/Table/Types/Columns/Column.d.ts +1 -1
- package/dist/Components/Table/Types/Columns/Definitions/Actions/ActionsDef.svelte.d.ts +1 -1
- package/dist/Components/Table/Types/Columns/Definitions/ColumnDef.svelte.d.ts +2 -2
- package/dist/Components/Table/Types/Columns/Definitions/ColumnDefSet.d.ts +1 -1
- package/dist/Components/Table/Types/Columns/Definitions/Expand/ExpandDef.svelte.d.ts +6 -6
- package/dist/Components/Table/Types/Columns/Definitions/JSONColumnDefSet.d.ts +1 -1
- package/dist/Components/Table/Types/Columns/Definitions/RowSelection/RowSelectionDef.svelte.d.ts +2 -1
- package/dist/Components/Table/Types/Columns/DefsWrapper.d.ts +2 -2
- package/dist/Components/Table/Types/Columns/ExpandColumn.d.ts +3 -2
- package/dist/Components/Table/Types/Columns/ExpandTableCell.d.ts +3 -2
- package/dist/Components/Table/Types/Context/ITable.d.ts +5 -5
- package/dist/Components/Table/Types/Context/Row.d.ts +3 -3
- package/dist/Components/Table/Types/Context/TableContext.svelte.d.ts +40 -37
- package/dist/Components/Table/Types/Context/TableContext.svelte.js +318 -279
- package/dist/Components/Table/Types/Context/TableInitOptions.d.ts +4 -2
- package/dist/Components/Table/Types/DataRepository/IDataRepository.d.ts +1 -1
- package/dist/Components/Table/Types/DataRepository/ILocalDataRepository.d.ts +1 -2
- package/dist/Components/Table/Types/DataRepository/LocalTableDataRepository.svelte.d.ts +2 -1
- package/dist/Components/Table/Types/DataRepository/LocalTableDataRepository.svelte.js +31 -8
- package/dist/Components/Table/Types/DataRepository/TableDataRepository.svelte.d.ts +2 -1
- package/dist/Components/Table/Types/DataRepository/TableDataRepository.svelte.js +4 -1
- package/dist/Components/Table/Types/Focus/TableFocusDetails.svelte.d.ts +3 -3
- package/dist/Components/Table/Types/Focus/TableFocusDetails.svelte.js +1 -1
- package/dist/Components/Table/Types/Header.d.ts +2 -2
- package/dist/Components/Table/Types/HeaderGroup.d.ts +1 -1
- package/dist/index.d.ts +1 -1
- package/package.json +11 -11
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
let tdref: HTMLTableCellElement | undefined = $state();
|
|
49
49
|
let inputRef: HTMLInputElement | undefined = $state();
|
|
50
50
|
|
|
51
|
-
const tableContext = getContext<TableContext<T>>(TableContext.identifier);
|
|
51
|
+
const tableContext = getContext<TableContext<T, never>>(TableContext.identifier);
|
|
52
52
|
const { toast } = getContext<ToastContext>(ToastContext.identifier);
|
|
53
53
|
|
|
54
54
|
const editableAsync = $derived(
|
|
@@ -161,12 +161,13 @@
|
|
|
161
161
|
untrack(() => {
|
|
162
162
|
tick()
|
|
163
163
|
.then(() => {
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
164
|
+
const x: Promise<void> =
|
|
165
|
+
validity === Validity.Invalid
|
|
166
|
+
? tableContext.addInvalidValue(cell.row.original)
|
|
167
|
+
: tableContext.removeInvalidValue(cell.row.original);
|
|
168
|
+
|
|
169
169
|
previousValidity = validity;
|
|
170
|
+
return x;
|
|
170
171
|
})
|
|
171
172
|
.catch(devCatch);
|
|
172
173
|
});
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { Column } from '../../../Types/Columns/Column.js';
|
|
2
2
|
import type { QueryDef } from '../../../Types/Columns/Definitions/Accessors/QueryDef.svelte.js';
|
|
3
|
-
|
|
3
|
+
import type { SelectFilterValueType } from '../../../Types/Filtering/FilterFn.js';
|
|
4
|
+
export interface TableQueryColumn<T extends object> extends Column<T, SelectFilterValueType<T>> {
|
|
4
5
|
columnDef: QueryDef<T>;
|
|
5
6
|
}
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
|
|
30
30
|
let lastOptions: Array<SelectOption<unknown>> = $state([]);
|
|
31
31
|
|
|
32
|
-
const tableContext = getContext<TableContext<T>>(TableContext.identifier);
|
|
32
|
+
const tableContext = getContext<TableContext<T, never>>(TableContext.identifier);
|
|
33
33
|
const { toast } = getContext<ToastContext>(ToastContext.identifier);
|
|
34
34
|
|
|
35
35
|
const editableAsync = $derived(
|
|
@@ -175,12 +175,14 @@
|
|
|
175
175
|
untrack(() => {
|
|
176
176
|
tick()
|
|
177
177
|
.then(() => {
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
178
|
+
const x =
|
|
179
|
+
validity === Validity.Invalid
|
|
180
|
+
? tableContext.addInvalidValue(cell.row.original)
|
|
181
|
+
: tableContext.removeInvalidValue(cell.row.original);
|
|
182
|
+
|
|
183
183
|
previousValidity = validity;
|
|
184
|
+
|
|
185
|
+
return x;
|
|
184
186
|
})
|
|
185
187
|
.catch(devCatch);
|
|
186
188
|
});
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
import type { BoolFilterValueType } from '../../../Types/Filtering/FilterFn.js';
|
|
8
8
|
import { TableFocusDetails } from '../../../Types/Focus/TableFocusDetails.svelte.js';
|
|
9
9
|
import { ToastContext } from '../../../../../Contexts/ToastContext.svelte.js';
|
|
10
|
+
import { devCatch } from '../../../../../Helpers/Helpers.svelte.js';
|
|
10
11
|
import { getContext } from 'svelte';
|
|
11
12
|
import type { ChangeEventHandler } from 'svelte/elements';
|
|
12
13
|
|
|
@@ -20,14 +21,14 @@
|
|
|
20
21
|
<script lang="ts" generics="T extends object,">
|
|
21
22
|
const { cell, onchange: parentOnchange }: TableCheckboxProps<T> = $props();
|
|
22
23
|
|
|
23
|
-
const tableContext = getContext<TableContext<T>>(TableContext.identifier);
|
|
24
|
+
const tableContext = getContext<TableContext<T, never>>(TableContext.identifier);
|
|
24
25
|
const toastContext = getContext<ToastContext>(ToastContext.identifier);
|
|
25
26
|
|
|
26
27
|
const focusDetails: TableFocusDetails<T, BoolFilterValueType> = $derived(
|
|
27
28
|
new TableFocusDetails(cell, tableContext, toastContext.toast)
|
|
28
29
|
);
|
|
29
30
|
|
|
30
|
-
const key = $derived(tableContext.selectionExtractor(cell.row.original));
|
|
31
|
+
const key: Promise<unknown> = $derived(tableContext.selectionExtractor(cell.row.original));
|
|
31
32
|
|
|
32
33
|
const value = $derived(tableContext.selectedItems.has(key));
|
|
33
34
|
|
|
@@ -39,7 +40,9 @@
|
|
|
39
40
|
);
|
|
40
41
|
|
|
41
42
|
const onchange: ChangeEventHandler<HTMLInputElement> = (e) => {
|
|
42
|
-
tableContext
|
|
43
|
+
tableContext
|
|
44
|
+
.toggleSelected(cell.row.original, (e.target as HTMLInputElement).checked)
|
|
45
|
+
.catch(devCatch);
|
|
43
46
|
parentOnchange?.(e);
|
|
44
47
|
};
|
|
45
48
|
|
|
@@ -68,7 +71,7 @@
|
|
|
68
71
|
onkeyup={(e) => {
|
|
69
72
|
if (e.key === 'Enter') {
|
|
70
73
|
e.stopPropagation();
|
|
71
|
-
tableContext.toggleSelected(cell.row.original, !value);
|
|
74
|
+
tableContext.toggleSelected(cell.row.original, !value).catch(devCatch);
|
|
72
75
|
|
|
73
76
|
inputRef?.dispatchEvent(new InputEvent('change'));
|
|
74
77
|
// tableContext.onEditCell(cell.row.original, focusDetails.coordinates, !value);
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
|
|
28
28
|
const optional = $derived(cell.column.columnDef.optional);
|
|
29
29
|
|
|
30
|
-
const tableContext = getContext<TableContext<T>>(TableContext.identifier);
|
|
30
|
+
const tableContext = getContext<TableContext<T, never>>(TableContext.identifier);
|
|
31
31
|
const { toast } = getContext<ToastContext>(ToastContext.identifier);
|
|
32
32
|
|
|
33
33
|
const editableAsync = $derived(
|
|
@@ -139,12 +139,14 @@
|
|
|
139
139
|
untrack(() => {
|
|
140
140
|
tick()
|
|
141
141
|
.then(() => {
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
142
|
+
const x =
|
|
143
|
+
validity === Validity.Invalid
|
|
144
|
+
? tableContext.addInvalidValue(cell.row.original)
|
|
145
|
+
: tableContext.removeInvalidValue(cell.row.original);
|
|
146
|
+
|
|
147
147
|
previousValidity = validity;
|
|
148
|
+
|
|
149
|
+
return x;
|
|
148
150
|
})
|
|
149
151
|
.catch(devCatch);
|
|
150
152
|
});
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
let tdref = $state<HTMLTableCellElement | undefined>();
|
|
57
57
|
let inputRef = $state<HTMLInputElement | undefined>();
|
|
58
58
|
|
|
59
|
-
const tableContext = getContext<TableContext<T>>(TableContext.identifier);
|
|
59
|
+
const tableContext = getContext<TableContext<T, never>>(TableContext.identifier);
|
|
60
60
|
const toastContext = getContext<ToastContext>(ToastContext.identifier);
|
|
61
61
|
|
|
62
62
|
const focusDetails: TableFocusDetails<T, never> = $derived(
|
|
@@ -150,12 +150,14 @@
|
|
|
150
150
|
untrack(() => {
|
|
151
151
|
tick()
|
|
152
152
|
.then(() => {
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
153
|
+
const x =
|
|
154
|
+
validity === Validity.Invalid
|
|
155
|
+
? tableContext.addInvalidValue(cell.row.original)
|
|
156
|
+
: tableContext.removeInvalidValue(cell.row.original);
|
|
157
|
+
|
|
158
158
|
previousValidity = validity;
|
|
159
|
+
|
|
160
|
+
return x;
|
|
159
161
|
})
|
|
160
162
|
.catch(devCatch);
|
|
161
163
|
});
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
|
|
43
43
|
const { cell }: ValidityCellProps<T, FilterValueType> = $props();
|
|
44
44
|
|
|
45
|
-
const tableContext = getContext<TableContext<T>>(TableContext.identifier);
|
|
45
|
+
const tableContext = getContext<TableContext<T, never>>(TableContext.identifier);
|
|
46
46
|
const { toast } = getContext<ToastContext>(ToastContext.identifier);
|
|
47
47
|
|
|
48
48
|
const ColumnDef = $derived(cell.column.columnDef as AbstractDisplayDef<T, FilterValueType>);
|
|
@@ -76,9 +76,9 @@
|
|
|
76
76
|
const [validityValue] = await validity;
|
|
77
77
|
|
|
78
78
|
if (validityValue === Validity.Invalid) {
|
|
79
|
-
tableContext.addInvalidValue(cell.row.original);
|
|
79
|
+
return tableContext.addInvalidValue(cell.row.original);
|
|
80
80
|
} else {
|
|
81
|
-
tableContext.removeInvalidValue(cell.row.original);
|
|
81
|
+
return tableContext.removeInvalidValue(cell.row.original);
|
|
82
82
|
}
|
|
83
83
|
})().catch(devCatch);
|
|
84
84
|
});
|
|
@@ -2,24 +2,25 @@
|
|
|
2
2
|
|
|
3
3
|
<script lang="ts" generics="T extends object">
|
|
4
4
|
import { dev } from '$app/environment';
|
|
5
|
-
import { generateShortUUID } from '../../../../Helpers/Helpers.svelte.js';
|
|
5
|
+
import { devCatch, generateShortUUID } from '../../../../Helpers/Helpers.svelte.js';
|
|
6
6
|
import { getContext, untrack } from 'svelte';
|
|
7
7
|
import NestedTable from '../../NestedTable.svelte';
|
|
8
8
|
import type { ExpandDef } from '../../Types/Columns/Definitions/Expand/ExpandDef.svelte.js';
|
|
9
9
|
import type { DefsWrapper } from '../../Types/Columns/DefsWrapper.js';
|
|
10
10
|
import type { TableCell } from '../../Types/Columns/TableCell.js';
|
|
11
11
|
import { TableContext } from '../../Types/Context/TableContext.svelte.js';
|
|
12
|
+
import type { Primitive } from '../../Types/Context/TableInitOptions.js';
|
|
12
13
|
import ColumnHighlight from './ColumnHighlight.svelte';
|
|
13
14
|
import TableColumn from './Columns/TableColumn.svelte';
|
|
14
15
|
import type { TableRowProps } from './TableRowProps.js';
|
|
15
|
-
const tableContext = getContext<TableContext<T>>(TableContext.identifier);
|
|
16
|
+
const tableContext = getContext<TableContext<T, never>>(TableContext.identifier);
|
|
16
17
|
|
|
17
18
|
const { row, side, odd = false, customHeight, includeHighlight }: TableRowProps<T> = $props();
|
|
18
19
|
|
|
19
20
|
const hoverable = $derived(tableContext.changeColourOnHover);
|
|
20
21
|
|
|
21
22
|
//HACK converted this from derived to state+deffect because otherwise this throws an unsafe mutation error deeper down the stack
|
|
22
|
-
const cells: Array<TableCell<T,
|
|
23
|
+
const cells: Array<TableCell<T, unknown>> = $derived(
|
|
23
24
|
side === 'left'
|
|
24
25
|
? row.getLeftVisibleCells()
|
|
25
26
|
: side === 'right'
|
|
@@ -27,7 +28,7 @@
|
|
|
27
28
|
: row.getCenterVisibleCells()
|
|
28
29
|
);
|
|
29
30
|
|
|
30
|
-
let expandedColumnDef: ExpandDef<T> | undefined = $state();
|
|
31
|
+
let expandedColumnDef: ExpandDef<T, object, Primitive, unknown> | undefined = $state();
|
|
31
32
|
|
|
32
33
|
$effect(() => {
|
|
33
34
|
if (cells.length) {
|
|
@@ -44,7 +45,7 @@
|
|
|
44
45
|
let innerColumnDefs: DefsWrapper<object> = $state({ defs: [] });
|
|
45
46
|
let innerTableName: string | undefined = $state();
|
|
46
47
|
|
|
47
|
-
let prevExpandedColumnDef: ExpandDef<T> | undefined = $state();
|
|
48
|
+
let prevExpandedColumnDef: ExpandDef<T, object, Primitive, unknown> | undefined = $state();
|
|
48
49
|
|
|
49
50
|
const rowIndex = $derived(cells.at(0) && cells[0].row.visibleIndex);
|
|
50
51
|
const highlighted = $derived(
|
|
@@ -83,7 +84,7 @@
|
|
|
83
84
|
});
|
|
84
85
|
});
|
|
85
86
|
|
|
86
|
-
function onExpandChange(columnDef: ExpandDef<T>) {
|
|
87
|
+
function onExpandChange(columnDef: ExpandDef<T, object, Primitive, unknown>) {
|
|
87
88
|
if (expandedColumnDef?.id === columnDef.id) {
|
|
88
89
|
expandedColumnDef = undefined;
|
|
89
90
|
} else {
|
|
@@ -158,7 +159,7 @@ onMouseLeave={onMouseLeave} -->
|
|
|
158
159
|
})()}
|
|
159
160
|
{highlighted}
|
|
160
161
|
toggleHighlightedRow={() => {
|
|
161
|
-
tableContext.toggleHighlightedRow(row.original);
|
|
162
|
+
tableContext.toggleHighlightedRow(row.original).catch(devCatch);
|
|
162
163
|
}}
|
|
163
164
|
/>
|
|
164
165
|
{/if}
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
|
|
11
11
|
let { side, heights, columns, includeHighlight }: TableBodyProps<T> = $props();
|
|
12
12
|
|
|
13
|
-
const tableContext = getContext<TableContext<T>>(TableContext.identifier);
|
|
13
|
+
const tableContext = getContext<TableContext<T, never>>(TableContext.identifier);
|
|
14
14
|
|
|
15
15
|
type HasHeight = {
|
|
16
16
|
trHeight: RefWrapper<number>;
|
|
@@ -33,24 +33,28 @@
|
|
|
33
33
|
{#if includeHighlight}
|
|
34
34
|
<td class="highlight-dud"><!-- accomodating for row marking --></td>
|
|
35
35
|
{/if}
|
|
36
|
-
{#each columns as column (column)}
|
|
36
|
+
{#each columns as column (column.id)}
|
|
37
37
|
<QuickSearchCell {column} customFilters={tableContext.remoteFilters} />
|
|
38
38
|
{/each}
|
|
39
39
|
</tr>
|
|
40
40
|
{/if}
|
|
41
|
-
|
|
42
|
-
{
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
41
|
+
<svelte:boundary>
|
|
42
|
+
{#await tableContext.paginationRowModel then prm}
|
|
43
|
+
{#each prm.rows as row, index (row)}
|
|
44
|
+
{@const customHeight = heights[index]?.applyTo.includes(side)
|
|
45
|
+
? heights[index].maxHeight
|
|
46
|
+
: undefined}
|
|
47
|
+
<TableRow
|
|
48
|
+
{includeHighlight}
|
|
49
|
+
{customHeight}
|
|
50
|
+
{row}
|
|
51
|
+
{side}
|
|
52
|
+
odd={index % 2 == 1}
|
|
53
|
+
bind:this={rows[index]}
|
|
54
|
+
/>
|
|
55
|
+
{/each}
|
|
56
|
+
{/await}
|
|
57
|
+
</svelte:boundary>
|
|
54
58
|
</tbody>
|
|
55
59
|
|
|
56
60
|
<style>td {
|
|
@@ -3,6 +3,6 @@ import type { HeightData } from './HeightData.js';
|
|
|
3
3
|
export interface TableBodyProps<T extends object> {
|
|
4
4
|
side: 'left' | 'centre' | 'right';
|
|
5
5
|
heights: Array<HeightData<T>>;
|
|
6
|
-
columns: Array<Column<T>>;
|
|
6
|
+
columns: Array<Column<T, unknown>>;
|
|
7
7
|
includeHighlight: boolean;
|
|
8
8
|
}
|
|
@@ -2,4 +2,4 @@ import type { ExampleItem } from '../../../Types/Examples/ExampleItem.js';
|
|
|
2
2
|
import { type Component } from 'svelte';
|
|
3
3
|
import type { DisplayDefModalProps } from '../Types/Columns/Definitions/Display/AbstractDisplayDef.svelte.js';
|
|
4
4
|
import type { DefsWrapper } from '../Types/Columns/DefsWrapper.js';
|
|
5
|
-
export declare function generateExampleItemColumnDefs(modal: Component<DisplayDefModalProps<ExampleItem,
|
|
5
|
+
export declare function generateExampleItemColumnDefs(modal: Component<DisplayDefModalProps<ExampleItem, unknown>, object, ''>): DefsWrapper<ExampleItem>;
|
|
@@ -15,20 +15,21 @@ import { ProgressBarDef } from '../Types/Columns/Definitions/Display/ProgressBar
|
|
|
15
15
|
import { ValidityDef } from '../Types/Columns/Definitions/Display/ValidityDef.svelte.js';
|
|
16
16
|
import { ExpandDef } from '../Types/Columns/Definitions/Expand/ExpandDef.svelte.js';
|
|
17
17
|
export function generateExampleItemColumnDefs(modal) {
|
|
18
|
+
const expandDef = new ExpandDef({
|
|
19
|
+
accessorFn: (it) => [it],
|
|
20
|
+
getInnerColumnDefs: () => generateExampleItemColumnDefs(modal),
|
|
21
|
+
header: 'Expand Cell',
|
|
22
|
+
id: 'expand',
|
|
23
|
+
headerIcon: 'access-token',
|
|
24
|
+
innerTableName: 'expand-inner',
|
|
25
|
+
innerTableOptions: {
|
|
26
|
+
selectionExtractor: (item) => Promise.resolve(item.id),
|
|
27
|
+
getUserId: () => '1'
|
|
28
|
+
},
|
|
29
|
+
isEnabled: () => true
|
|
30
|
+
});
|
|
18
31
|
let defs = $state([
|
|
19
|
-
|
|
20
|
-
accessorFn: (it) => [it],
|
|
21
|
-
getInnerColumnDefs: () => generateExampleItemColumnDefs(modal),
|
|
22
|
-
header: 'Expand Cell',
|
|
23
|
-
id: 'expand',
|
|
24
|
-
headerIcon: 'access-token',
|
|
25
|
-
innerTableName: 'expand-inner',
|
|
26
|
-
innerTableOptions: {
|
|
27
|
-
selectionExtractor: (item) => item.id,
|
|
28
|
-
getUserId: () => '1'
|
|
29
|
-
},
|
|
30
|
-
isEnabled: () => true
|
|
31
|
-
}),
|
|
32
|
+
expandDef,
|
|
32
33
|
new ValidityDef({
|
|
33
34
|
header: 'Valid',
|
|
34
35
|
id: 'valid',
|
|
@@ -56,9 +57,10 @@ export function generateExampleItemColumnDefs(modal) {
|
|
|
56
57
|
// TODO make filtering work with the below:
|
|
57
58
|
accessorFn: async (item) => {
|
|
58
59
|
void item.id;
|
|
59
|
-
await asyncSleep(
|
|
60
|
+
await asyncSleep(10);
|
|
60
61
|
return item.id;
|
|
61
|
-
}
|
|
62
|
+
},
|
|
63
|
+
debug: true
|
|
62
64
|
}),
|
|
63
65
|
new QueryDef({
|
|
64
66
|
header: 'simulated query def',
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
import Action from '../../Action.svelte';
|
|
9
9
|
import { TableContext } from '../Types/Context/TableContext.svelte.js';
|
|
10
10
|
|
|
11
|
-
const tableContext = getContext<TableContext<T>>(TableContext.identifier);
|
|
11
|
+
const tableContext = getContext<TableContext<T, never>>(TableContext.identifier);
|
|
12
12
|
|
|
13
13
|
let allHighlighted = $state(false);
|
|
14
14
|
|
|
@@ -20,26 +20,39 @@
|
|
|
20
20
|
.catch(devCatch);
|
|
21
21
|
});
|
|
22
22
|
|
|
23
|
-
const backgroundColour = $derived(
|
|
24
|
-
tableContext.sortedData.length > 0 && allHighlighted
|
|
23
|
+
const backgroundColour = $derived.by(async () => {
|
|
24
|
+
return (await tableContext.sortedData).length > 0 && allHighlighted
|
|
25
25
|
? Colour['$brand-primary']
|
|
26
|
-
: Colour['$ui-white']
|
|
27
|
-
);
|
|
26
|
+
: Colour['$ui-white'];
|
|
27
|
+
});
|
|
28
28
|
</script>
|
|
29
29
|
|
|
30
30
|
<div class="checkbox-cell">
|
|
31
31
|
<div class="wrapper">
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
32
|
+
{#await backgroundColour}
|
|
33
|
+
<Action
|
|
34
|
+
hoverBackgroundColour={Colour['$brand-dark']}
|
|
35
|
+
size={Size.FillWidth}
|
|
36
|
+
icon={{
|
|
37
|
+
name: 'nothing'
|
|
38
|
+
}}
|
|
39
|
+
onclick={() => {
|
|
40
|
+
tableContext.onHighlightAll();
|
|
41
|
+
}}
|
|
42
|
+
/>
|
|
43
|
+
{:then backgroundColour}
|
|
44
|
+
<Action
|
|
45
|
+
{backgroundColour}
|
|
46
|
+
hoverBackgroundColour={Colour['$brand-dark']}
|
|
47
|
+
size={Size.FillWidth}
|
|
48
|
+
icon={{
|
|
49
|
+
name: 'nothing'
|
|
50
|
+
}}
|
|
51
|
+
onclick={() => {
|
|
52
|
+
tableContext.onHighlightAll();
|
|
53
|
+
}}
|
|
54
|
+
/>
|
|
55
|
+
{/await}
|
|
43
56
|
</div>
|
|
44
57
|
</div>
|
|
45
58
|
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
import { getContext } from 'svelte';
|
|
5
5
|
import { TableContext } from '../Types/Context/TableContext.svelte.js';
|
|
6
6
|
|
|
7
|
-
const tableContext = getContext<TableContext<T>>(TableContext.identifier);
|
|
7
|
+
const tableContext = getContext<TableContext<T, never>>(TableContext.identifier);
|
|
8
8
|
|
|
9
9
|
const allSelected: Promise<boolean> = $derived(tableContext.allSelectedInCurrentPage);
|
|
10
10
|
const checked: Promise<boolean> = $derived.by(() => {
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
<script lang="ts" generics="T extends object">
|
|
29
29
|
const { showHighlight, side = 'centre', oncontextmenu }: TableHeadProps = $props();
|
|
30
30
|
|
|
31
|
-
const tableContext = getContext<TableContext<T>>(TableContext.identifier);
|
|
31
|
+
const tableContext = getContext<TableContext<T, never>>(TableContext.identifier);
|
|
32
32
|
const tooltipContext = getContext<TooltipContext>(TooltipContext.identifier);
|
|
33
33
|
|
|
34
34
|
const groups: Array<HeaderGroup<T>> = $derived.by(() => {
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
currentDropTarget = target as HTMLTableCellElement | null;
|
|
60
60
|
}
|
|
61
61
|
|
|
62
|
-
function showtooltip(e: MouseEvent, columnDef: ColumnDef<T>): void {
|
|
62
|
+
function showtooltip(e: MouseEvent, columnDef: ColumnDef<T, unknown>): void {
|
|
63
63
|
if (columnDef instanceof ExpandDef) {
|
|
64
64
|
const rect = (e.target as HTMLElement).closest('th')?.getBoundingClientRect();
|
|
65
65
|
|
|
@@ -78,7 +78,7 @@
|
|
|
78
78
|
}
|
|
79
79
|
}
|
|
80
80
|
|
|
81
|
-
function hideTooltip(columnDef: ColumnDef<T>): void {
|
|
81
|
+
function hideTooltip(columnDef: ColumnDef<T, unknown>): void {
|
|
82
82
|
if (columnDef instanceof ExpandDef) {
|
|
83
83
|
tooltipContext.hideTooltip(
|
|
84
84
|
`Show ${typeof columnDef.header === 'string' ? columnDef.header : columnDef.id}`
|
|
@@ -101,7 +101,7 @@
|
|
|
101
101
|
currentDropTarget = null;
|
|
102
102
|
}
|
|
103
103
|
|
|
104
|
-
function setDragTarget(def: ColumnDef<T>) {
|
|
104
|
+
function setDragTarget(def: ColumnDef<T, unknown>) {
|
|
105
105
|
tableContext.dragTarget = def;
|
|
106
106
|
}
|
|
107
107
|
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
import { getContext } from 'svelte';
|
|
12
12
|
import { TableContext } from '../Types/Context/TableContext.svelte.js';
|
|
13
13
|
|
|
14
|
-
const tableContext = getContext<TableContext<T>>(TableContext.identifier);
|
|
14
|
+
const tableContext = getContext<TableContext<T, never>>(TableContext.identifier);
|
|
15
15
|
|
|
16
16
|
const labelledPresets: Array<SelectOption<string>> = $derived(
|
|
17
17
|
tableContext.columnPresets.map((pr) => ({ label: pr.name, value: pr.name }))
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
import { TableContext } from '../Types/Context/TableContext.svelte.js';
|
|
14
14
|
import type { ColumnPanelModalProps } from './ColumnPanelModalProps.js';
|
|
15
15
|
|
|
16
|
-
const tableContext = getContext<TableContext<T>>(TableContext.identifier);
|
|
16
|
+
const tableContext = getContext<TableContext<T, never>>(TableContext.identifier);
|
|
17
17
|
|
|
18
18
|
const { onclose }: ColumnPanelModalProps = $props();
|
|
19
19
|
const labelledPresets: Array<SelectOption<string>> = $derived(
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<svelte:options runes />
|
|
2
2
|
|
|
3
|
-
<script lang="ts" generics="T extends object">
|
|
3
|
+
<script lang="ts" generics="T extends object,FilterValueType">
|
|
4
4
|
import { dev } from '$app/environment';
|
|
5
5
|
import Button from '../../Button.svelte';
|
|
6
6
|
import MultiSelect from '../../MultiSelect.svelte';
|
|
@@ -24,9 +24,9 @@
|
|
|
24
24
|
import { numberDateFilterTypes } from './numberDateFilterTypes.js';
|
|
25
25
|
import { stringFilterTypes } from './stringFilterTypes.js';
|
|
26
26
|
|
|
27
|
-
const tableContext = getContext<TableContext<T>>(TableContext.identifier);
|
|
27
|
+
const tableContext = getContext<TableContext<T, never>>(TableContext.identifier);
|
|
28
28
|
|
|
29
|
-
const { def, customFilters }: FilterInputProps<T> = $props();
|
|
29
|
+
const { def, customFilters }: FilterInputProps<T, FilterValueType> = $props();
|
|
30
30
|
|
|
31
31
|
const customFilter = $derived(customFilters?.get(def.id));
|
|
32
32
|
|
|
@@ -447,7 +447,6 @@
|
|
|
447
447
|
|
|
448
448
|
const newFilterType = newValue?.value ?? NumberDateFilterMode.In;
|
|
449
449
|
tableContext.paginationRepo?.setFilterMode(def.id, newFilterType);
|
|
450
|
-
tableContext.paginationRepo?.filterModes.set(def.id, newFilterType);
|
|
451
450
|
|
|
452
451
|
if (selectedNumberFilterType?.value !== oldFilterType?.value) {
|
|
453
452
|
if (oldFilterType?.value === NumberDateFilterMode.Between) {
|
|
@@ -521,7 +520,6 @@
|
|
|
521
520
|
onchange={(newValue: SelectOption<StringFilterMode> | null) => {
|
|
522
521
|
const filterType = newValue?.value ?? StringFilterMode.Contains;
|
|
523
522
|
tableContext.paginationRepo?.setFilterMode(def.id, filterType);
|
|
524
|
-
tableContext.paginationRepo?.filterModes.set(def.id, filterType);
|
|
525
523
|
}}
|
|
526
524
|
onkeydown={(e: KeyboardEvent) => {
|
|
527
525
|
e.stopPropagation();
|
|
@@ -1,25 +1,25 @@
|
|
|
1
1
|
import type { FilterInputProps } from './FilterInputProps.js';
|
|
2
|
-
declare function $$render<T extends object>(): {
|
|
3
|
-
props: FilterInputProps<T>;
|
|
2
|
+
declare function $$render<T extends object, FilterValueType>(): {
|
|
3
|
+
props: FilterInputProps<T, FilterValueType>;
|
|
4
4
|
exports: {};
|
|
5
5
|
bindings: "";
|
|
6
6
|
slots: {};
|
|
7
7
|
events: {};
|
|
8
8
|
};
|
|
9
|
-
declare class __sveltets_Render<T extends object> {
|
|
10
|
-
props(): ReturnType<typeof $$render<T>>['props'];
|
|
11
|
-
events(): ReturnType<typeof $$render<T>>['events'];
|
|
12
|
-
slots(): ReturnType<typeof $$render<T>>['slots'];
|
|
9
|
+
declare class __sveltets_Render<T extends object, FilterValueType> {
|
|
10
|
+
props(): ReturnType<typeof $$render<T, FilterValueType>>['props'];
|
|
11
|
+
events(): ReturnType<typeof $$render<T, FilterValueType>>['events'];
|
|
12
|
+
slots(): ReturnType<typeof $$render<T, FilterValueType>>['slots'];
|
|
13
13
|
bindings(): "";
|
|
14
14
|
exports(): {};
|
|
15
15
|
}
|
|
16
16
|
interface $$IsomorphicComponent {
|
|
17
|
-
new <T extends object>(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']>> & {
|
|
18
|
-
$$bindings?: ReturnType<__sveltets_Render<T>['bindings']>;
|
|
19
|
-
} & ReturnType<__sveltets_Render<T>['exports']>;
|
|
20
|
-
<T extends object>(internal: unknown, props: ReturnType<__sveltets_Render<T>['props']> & {}): ReturnType<__sveltets_Render<T>['exports']>;
|
|
21
|
-
z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
|
|
17
|
+
new <T extends object, FilterValueType>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<T, FilterValueType>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<T, FilterValueType>['props']>, ReturnType<__sveltets_Render<T, FilterValueType>['events']>, ReturnType<__sveltets_Render<T, FilterValueType>['slots']>> & {
|
|
18
|
+
$$bindings?: ReturnType<__sveltets_Render<T, FilterValueType>['bindings']>;
|
|
19
|
+
} & ReturnType<__sveltets_Render<T, FilterValueType>['exports']>;
|
|
20
|
+
<T extends object, FilterValueType>(internal: unknown, props: ReturnType<__sveltets_Render<T, FilterValueType>['props']> & {}): ReturnType<__sveltets_Render<T, FilterValueType>['exports']>;
|
|
21
|
+
z_$$bindings?: ReturnType<__sveltets_Render<any, any>['bindings']>;
|
|
22
22
|
}
|
|
23
23
|
declare const FilterInput: $$IsomorphicComponent;
|
|
24
|
-
type FilterInput<T extends object> = InstanceType<typeof FilterInput<T>>;
|
|
24
|
+
type FilterInput<T extends object, FilterValueType> = InstanceType<typeof FilterInput<T, FilterValueType>>;
|
|
25
25
|
export default FilterInput;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { ColumnDef } from '../Types/Columns/Definitions/ColumnDef.svelte.js';
|
|
2
2
|
import type { CustomRemoteFilters } from '../Types/Filtering/CustomRemoteFilters.js';
|
|
3
|
-
export interface FilterInputProps<T extends object> {
|
|
4
|
-
def: ColumnDef<T>;
|
|
3
|
+
export interface FilterInputProps<T extends object, FilterValueType> {
|
|
4
|
+
def: ColumnDef<T, FilterValueType>;
|
|
5
5
|
customFilters?: CustomRemoteFilters | undefined;
|
|
6
6
|
}
|
|
@@ -4,11 +4,11 @@
|
|
|
4
4
|
import Button from '../../Button.svelte';
|
|
5
5
|
import { Size } from '../../../Types/Internal/Size.js';
|
|
6
6
|
import { Variant } from '../../../Types/Internal/Variant.js';
|
|
7
|
+
import { getContext } from 'svelte';
|
|
7
8
|
import { TableContext } from '../Types/Context/TableContext.svelte.js';
|
|
8
9
|
import FilterInput from './FilterInput.svelte';
|
|
9
|
-
import { getContext } from 'svelte';
|
|
10
10
|
|
|
11
|
-
const tableContext = getContext<TableContext<T>>(TableContext.identifier);
|
|
11
|
+
const tableContext = getContext<TableContext<T, never>>(TableContext.identifier);
|
|
12
12
|
|
|
13
13
|
function reset() {
|
|
14
14
|
tableContext.paginationRepo?.resetFilters();
|
|
@@ -15,10 +15,10 @@
|
|
|
15
15
|
</script>
|
|
16
16
|
|
|
17
17
|
<script lang="ts" generics="T extends object">
|
|
18
|
-
const tableContext = getContext<TableContext<T>>(TableContext.identifier);
|
|
18
|
+
const tableContext = getContext<TableContext<T, never>>(TableContext.identifier);
|
|
19
19
|
|
|
20
20
|
const { onclose }: FilterPanelModalProps = $props();
|
|
21
|
-
const refs: Array<FilterInput<T>> = $state([]);
|
|
21
|
+
const refs: Array<FilterInput<T, unknown>> = $state([]);
|
|
22
22
|
|
|
23
23
|
function reset() {
|
|
24
24
|
tableContext.paginationRepo?.resetFilters();
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
<script lang="ts" generics="T extends object">
|
|
26
26
|
let { onkeydown }: TableFooterProps = $props();
|
|
27
27
|
|
|
28
|
-
const tableContext = getContext<TableContext<T>>(TableContext.identifier);
|
|
28
|
+
const tableContext = getContext<TableContext<T, never>>(TableContext.identifier);
|
|
29
29
|
const alertContext = getContext<AlertContext>(AlertContext.identifier);
|
|
30
30
|
|
|
31
31
|
const pageSizes: Array<SelectOption<number>> = $state([
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
default as ToolboxPanelModal
|
|
15
15
|
} from './FilterPanelModal.svelte';
|
|
16
16
|
|
|
17
|
-
const tableContext = getContext<TableContext<T>>(TableContext.identifier);
|
|
17
|
+
const tableContext = getContext<TableContext<T, never>>(TableContext.identifier);
|
|
18
18
|
|
|
19
19
|
const panels = {
|
|
20
20
|
[ExpandedPanel.None]: null,
|