@lavalogic/scoria 0.12.3 → 0.13.1

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.
Files changed (57) hide show
  1. package/dist/Components/Table/Body/QuickSearchCell.svelte +2 -3
  2. package/dist/Components/Table/Body/Rows/ColumnList.svelte +1 -1
  3. package/dist/Components/Table/Body/Rows/ColumnListRow.svelte +1 -1
  4. package/dist/Components/Table/Body/Rows/Columns/ActionsCell.svelte +25 -15
  5. package/dist/Components/Table/Body/Rows/Columns/BubbleCell.svelte +8 -6
  6. package/dist/Components/Table/Body/Rows/Columns/ExpandCell.svelte +7 -3
  7. package/dist/Components/Table/Body/Rows/Columns/ExpandCell.svelte.d.ts +13 -12
  8. package/dist/Components/Table/Body/Rows/Columns/ExpandCellProps.d.ts +5 -4
  9. package/dist/Components/Table/Body/Rows/Columns/FocusableImmutableCell.svelte +1 -1
  10. package/dist/Components/Table/Body/Rows/Columns/ProgressCell.svelte +8 -6
  11. package/dist/Components/Table/Body/Rows/Columns/TableCheckbox.svelte +1 -1
  12. package/dist/Components/Table/Body/Rows/Columns/TableColumn.svelte +4 -3
  13. package/dist/Components/Table/Body/Rows/Columns/TableColumn.svelte.d.ts +3 -2
  14. package/dist/Components/Table/Body/Rows/Columns/TableDatePicker.svelte +3 -3
  15. package/dist/Components/Table/Body/Rows/Columns/TableNumberInput.svelte +7 -6
  16. package/dist/Components/Table/Body/Rows/Columns/TableQuerySelect.svelte +8 -6
  17. package/dist/Components/Table/Body/Rows/Columns/TableRowSelectionCheckbox.svelte +7 -4
  18. package/dist/Components/Table/Body/Rows/Columns/TableSelect.svelte +8 -6
  19. package/dist/Components/Table/Body/Rows/Columns/TableTextInput.svelte +8 -6
  20. package/dist/Components/Table/Body/Rows/Columns/ValidityCell.svelte +3 -3
  21. package/dist/Components/Table/Body/Rows/TableRow.svelte +8 -7
  22. package/dist/Components/Table/Body/TableBody.svelte +19 -15
  23. package/dist/Components/Table/ColumnDefinitions/ExampleItemColumnDefRepository.svelte.js +4 -3
  24. package/dist/Components/Table/Headers/HighlightAllHeader.svelte +29 -16
  25. package/dist/Components/Table/Headers/SelectAllHeader.svelte +1 -1
  26. package/dist/Components/Table/Headers/TableHead.svelte +1 -1
  27. package/dist/Components/Table/Misc/ColumnPanel.svelte +1 -1
  28. package/dist/Components/Table/Misc/ColumnPanelModal.svelte +1 -1
  29. package/dist/Components/Table/Misc/FilterInput.svelte +1 -3
  30. package/dist/Components/Table/Misc/FilterPanel.svelte +2 -2
  31. package/dist/Components/Table/Misc/FilterPanelModal.svelte +1 -1
  32. package/dist/Components/Table/Misc/TableFooter.svelte +1 -1
  33. package/dist/Components/Table/Misc/TableHorizontalBar.svelte +1 -1
  34. package/dist/Components/Table/Misc/TableSidebar.svelte +2 -1
  35. package/dist/Components/Table/Misc/ToolboxPanel.svelte +2 -2
  36. package/dist/Components/Table/Misc/ToolboxPanelModal.svelte +1 -1
  37. package/dist/Components/Table/NestedTable.svelte +12 -8
  38. package/dist/Components/Table/NestedTable.svelte.d.ts +15 -15
  39. package/dist/Components/Table/Table.svelte +111 -118
  40. package/dist/Components/Table/Table.svelte.d.ts +16 -15
  41. package/dist/Components/Table/Types/Columns/Definitions/Expand/ExpandDef.svelte.d.ts +6 -6
  42. package/dist/Components/Table/Types/Columns/ExpandColumn.d.ts +3 -2
  43. package/dist/Components/Table/Types/Columns/ExpandTableCell.d.ts +3 -2
  44. package/dist/Components/Table/Types/Context/ITable.d.ts +1 -1
  45. package/dist/Components/Table/Types/Context/TableContext.svelte.d.ts +32 -29
  46. package/dist/Components/Table/Types/Context/TableContext.svelte.js +313 -278
  47. package/dist/Components/Table/Types/Context/TableInitOptions.d.ts +4 -2
  48. package/dist/Components/Table/Types/DataRepository/IDataRepository.d.ts +1 -1
  49. package/dist/Components/Table/Types/DataRepository/ILocalDataRepository.d.ts +1 -2
  50. package/dist/Components/Table/Types/DataRepository/LocalTableDataRepository.svelte.d.ts +2 -1
  51. package/dist/Components/Table/Types/DataRepository/LocalTableDataRepository.svelte.js +31 -8
  52. package/dist/Components/Table/Types/DataRepository/TableDataRepository.svelte.d.ts +2 -1
  53. package/dist/Components/Table/Types/DataRepository/TableDataRepository.svelte.js +4 -1
  54. package/dist/Components/Table/Types/Focus/TableFocusDetails.svelte.d.ts +3 -3
  55. package/dist/Components/Table/Types/Focus/TableFocusDetails.svelte.js +1 -1
  56. package/dist/index.d.ts +1 -1
  57. package/package.json +11 -11
@@ -33,7 +33,8 @@
33
33
  import { NumberDateFilterMode } from '../Types/Filtering/NumberDateFilterMode.js';
34
34
  import { StringFilterMode } from '../Types/Filtering/StringFilterMode.js';
35
35
  import type { QuickSearchCellProps } from './QuickSearchCellProps.js';
36
- const tableContext = getContext<TableContext<T>>(TableContext.identifier);
36
+
37
+ const tableContext = getContext<TableContext<T, never>>(TableContext.identifier);
37
38
 
38
39
  const { column, customFilters }: QuickSearchCellProps<T> = $props();
39
40
 
@@ -557,7 +558,6 @@
557
558
  const newFilterType = newValue?.value ?? NumberDateFilterMode.In;
558
559
 
559
560
  tableContext.paginationRepo?.setFilterMode(def.id, newFilterType);
560
- tableContext.paginationRepo?.filterModes.set(def.id, newFilterType);
561
561
 
562
562
  if (selectedNumberFilterType?.value !== oldFilterType?.value) {
563
563
  if (oldFilterType?.value === NumberDateFilterMode.Between) {
@@ -587,7 +587,6 @@
587
587
  onchange={(newValue: SelectOption<StringFilterMode> | null) => {
588
588
  const filterType = newValue?.value ?? StringFilterMode.Contains;
589
589
  tableContext.paginationRepo?.setFilterMode(def.id, filterType);
590
- tableContext.paginationRepo?.filterModes.set(def.id, filterType);
591
590
  }}
592
591
  onkeydown={(e: KeyboardEvent) => {
593
592
  e.stopPropagation();
@@ -8,7 +8,7 @@
8
8
  import type { ColumnListProps } from './ColumnListProps.js';
9
9
  import ColumnListRow from './ColumnListRow.svelte';
10
10
 
11
- const tableContext = getContext<TableContext<T>>(TableContext.identifier);
11
+ const tableContext = getContext<TableContext<T, never>>(TableContext.identifier);
12
12
 
13
13
  const { searchValue }: ColumnListProps = $props();
14
14
 
@@ -7,7 +7,7 @@
7
7
  import { Size } from '../../../../Types/Internal/Size.js';
8
8
  import { getContext } from 'svelte';
9
9
  import type { ColumnListRowProps } from './ColumnListRowProps.js';
10
- const tableContext = getContext<TableContext<T>>(TableContext.identifier);
10
+ const tableContext = getContext<TableContext<T, never>>(TableContext.identifier);
11
11
 
12
12
  const { columnDef }: ColumnListRowProps<T> = $props();
13
13
 
@@ -8,7 +8,7 @@
8
8
  import { MultiFocusEdge } from '../../../Types/Focus/MultiFocusEdge.js';
9
9
  import { TableFocusDetails } from '../../../Types/Focus/TableFocusDetails.svelte.js';
10
10
  import { ToastContext } from '../../../../../Contexts/ToastContext.svelte.js';
11
- import { devCatch, refWrapper } from '../../../../../Helpers/Helpers.svelte.js';
11
+ import { asyncMap, devCatch, refWrapper } from '../../../../../Helpers/Helpers.svelte.js';
12
12
  import { Colour, ColourSet } from '../../../../../scss/colours.js';
13
13
  import { Size } from '../../../../../Types/Internal/Size.js';
14
14
  import { Validity } from '../../../../../Types/Internal/Validity.js';
@@ -24,7 +24,7 @@
24
24
 
25
25
  const value = $derived(cell.getValue());
26
26
 
27
- const tableContext = getContext<TableContext<T>>(TableContext.identifier);
27
+ const tableContext = getContext<TableContext<T, never>>(TableContext.identifier);
28
28
  const toastContext = getContext<ToastContext>(ToastContext.identifier);
29
29
 
30
30
  const actions: Array<TableActionButton<T>> = $derived(cell.column.columnDef.actions);
@@ -88,12 +88,14 @@
88
88
  untrack(() => {
89
89
  tick()
90
90
  .then(() => {
91
- if (validity === Validity.Invalid) {
92
- tableContext.addInvalidValue(cell.row.original);
93
- } else {
94
- tableContext.removeInvalidValue(cell.row.original);
95
- }
91
+ const x =
92
+ validity === Validity.Invalid
93
+ ? tableContext.addInvalidValue(cell.row.original)
94
+ : tableContext.removeInvalidValue(cell.row.original);
95
+
96
96
  previousValidity = validity;
97
+
98
+ return x;
97
99
  })
98
100
  .catch(devCatch);
99
101
  });
@@ -163,15 +165,23 @@
163
165
  />
164
166
  </div>
165
167
  {#if thisPopupIsVisibile}
166
- <Portal>
167
- <div class="popup" style="--y: {y}px; --x: {x}px;">
168
- <div class="action-container">
169
- {#each actions as action (action.getLabel(cell.row.original, cell.row.visibleIndex))}
170
- <TableAction {action} {cell} />
171
- {/each}
168
+ {@const awaitedActions = asyncMap<TableActionButton<T>, [TableActionButton<T>, string]>(
169
+ actions,
170
+ async (item) => {
171
+ return [item, await item.getLabel(cell.row.original, cell.row.visibleIndex)];
172
+ }
173
+ )}
174
+ {#await awaitedActions then actions}
175
+ <Portal>
176
+ <div class="popup" style="--y: {y}px; --x: {x}px;">
177
+ <div class="action-container">
178
+ {#each actions as [action, label] (label)}
179
+ <TableAction {action} {cell} />
180
+ {/each}
181
+ </div>
172
182
  </div>
173
- </div>
174
- </Portal>
183
+ </Portal>
184
+ {/await}
175
185
  {/if}
176
186
  </td>
177
187
 
@@ -16,7 +16,7 @@
16
16
 
17
17
  const values = $derived(cell.getValue()) as Array<string> | Promise<Array<string>>;
18
18
 
19
- const tableContext = getContext<TableContext<T>>(TableContext.identifier);
19
+ const tableContext = getContext<TableContext<T, never>>(TableContext.identifier);
20
20
  const toastContext = getContext<ToastContext>(ToastContext.identifier);
21
21
 
22
22
  const focusDetails: TableFocusDetails<T, FilterValueType> = $derived(
@@ -44,12 +44,14 @@
44
44
  untrack(() => {
45
45
  tick()
46
46
  .then(() => {
47
- if (validity === Validity.Invalid) {
48
- tableContext.addInvalidValue(cell.row.original);
49
- } else {
50
- tableContext.removeInvalidValue(cell.row.original);
51
- }
47
+ const x =
48
+ validity === Validity.Invalid
49
+ ? tableContext.addInvalidValue(cell.row.original)
50
+ : tableContext.removeInvalidValue(cell.row.original);
51
+
52
52
  previousValidity = validity;
53
+
54
+ return x;
53
55
  })
54
56
  .catch(devCatch);
55
57
  });
@@ -1,8 +1,12 @@
1
1
  <svelte:options runes />
2
2
 
3
- <script lang="ts" generics="T extends object, R extends object,FilterValueType">
3
+ <script
4
+ lang="ts"
5
+ generics="T extends object, R extends object,FilterValueType, IdType extends Primitive"
6
+ >
4
7
  import Action from '../../../../Action.svelte';
5
8
  import { TableContext } from '../../../Types/Context/TableContext.svelte.js';
9
+ import type { Primitive } from '../../../Types/Context/TableInitOptions.js';
6
10
  import { TableFocusDetails } from '../../../Types/Focus/TableFocusDetails.svelte.js';
7
11
  import { ToastContext } from '../../../../../Contexts/ToastContext.svelte.js';
8
12
  import { ColourSet } from '../../../../../scss/colours.js';
@@ -10,9 +14,9 @@
10
14
  import { getContext } from 'svelte';
11
15
  import type { ExpandCellProps } from './ExpandCellProps.js';
12
16
 
13
- const { cell, expandedColumnDef, onExpandChange }: ExpandCellProps<T, R> = $props();
17
+ const { cell, expandedColumnDef, onExpandChange }: ExpandCellProps<T, R, IdType> = $props();
14
18
 
15
- const tableContext = getContext<TableContext<T>>(TableContext.identifier);
19
+ const tableContext = getContext<TableContext<T, never>>(TableContext.identifier);
16
20
  const toastContext = getContext<ToastContext>(ToastContext.identifier);
17
21
  const focusDetails: TableFocusDetails<T, FilterValueType> = $derived(
18
22
  new TableFocusDetails(cell, tableContext, toastContext.toast)
@@ -1,25 +1,26 @@
1
+ import type { Primitive } from '../../../Types/Context/TableInitOptions.js';
1
2
  import type { ExpandCellProps } from './ExpandCellProps.js';
2
- declare function $$render<T extends object, R extends object, FilterValueType>(): {
3
- props: ExpandCellProps<T, R>;
3
+ declare function $$render<T extends object, R extends object, FilterValueType, IdType extends Primitive>(): {
4
+ props: ExpandCellProps<T, R, IdType>;
4
5
  exports: {};
5
6
  bindings: "";
6
7
  slots: {};
7
8
  events: {};
8
9
  };
9
- declare class __sveltets_Render<T extends object, R extends object, FilterValueType> {
10
- props(): ReturnType<typeof $$render<T, R, FilterValueType>>['props'];
11
- events(): ReturnType<typeof $$render<T, R, FilterValueType>>['events'];
12
- slots(): ReturnType<typeof $$render<T, R, FilterValueType>>['slots'];
10
+ declare class __sveltets_Render<T extends object, R extends object, FilterValueType, IdType extends Primitive> {
11
+ props(): ReturnType<typeof $$render<T, R, FilterValueType, IdType>>['props'];
12
+ events(): ReturnType<typeof $$render<T, R, FilterValueType, IdType>>['events'];
13
+ slots(): ReturnType<typeof $$render<T, R, FilterValueType, IdType>>['slots'];
13
14
  bindings(): "";
14
15
  exports(): {};
15
16
  }
16
17
  interface $$IsomorphicComponent {
17
- new <T extends object, R extends object, FilterValueType>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<T, R, FilterValueType>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<T, R, FilterValueType>['props']>, ReturnType<__sveltets_Render<T, R, FilterValueType>['events']>, ReturnType<__sveltets_Render<T, R, FilterValueType>['slots']>> & {
18
- $$bindings?: ReturnType<__sveltets_Render<T, R, FilterValueType>['bindings']>;
19
- } & ReturnType<__sveltets_Render<T, R, FilterValueType>['exports']>;
20
- <T extends object, R extends object, FilterValueType>(internal: unknown, props: ReturnType<__sveltets_Render<T, R, FilterValueType>['props']> & {}): ReturnType<__sveltets_Render<T, R, FilterValueType>['exports']>;
21
- z_$$bindings?: ReturnType<__sveltets_Render<any, any, any>['bindings']>;
18
+ new <T extends object, R extends object, FilterValueType, IdType extends Primitive>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<T, R, FilterValueType, IdType>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<T, R, FilterValueType, IdType>['props']>, ReturnType<__sveltets_Render<T, R, FilterValueType, IdType>['events']>, ReturnType<__sveltets_Render<T, R, FilterValueType, IdType>['slots']>> & {
19
+ $$bindings?: ReturnType<__sveltets_Render<T, R, FilterValueType, IdType>['bindings']>;
20
+ } & ReturnType<__sveltets_Render<T, R, FilterValueType, IdType>['exports']>;
21
+ <T extends object, R extends object, FilterValueType, IdType extends Primitive>(internal: unknown, props: ReturnType<__sveltets_Render<T, R, FilterValueType, IdType>['props']> & {}): ReturnType<__sveltets_Render<T, R, FilterValueType, IdType>['exports']>;
22
+ z_$$bindings?: ReturnType<__sveltets_Render<any, any, any, any>['bindings']>;
22
23
  }
23
24
  declare const ExpandCell: $$IsomorphicComponent;
24
- type ExpandCell<T extends object, R extends object, FilterValueType> = InstanceType<typeof ExpandCell<T, R, FilterValueType>>;
25
+ type ExpandCell<T extends object, R extends object, FilterValueType, IdType extends Primitive> = InstanceType<typeof ExpandCell<T, R, FilterValueType, IdType>>;
25
26
  export default ExpandCell;
@@ -1,7 +1,8 @@
1
1
  import type { ExpandDef } from '../../../Types/Columns/Definitions/Expand/ExpandDef.svelte.js';
2
2
  import type { ExpandTableCell } from '../../../Types/Columns/ExpandTableCell.js';
3
- export interface ExpandCellProps<T extends object, R extends object> {
4
- cell: ExpandTableCell<T, R>;
5
- expandedColumnDef: ExpandDef<T, R> | undefined;
6
- onExpandChange: (def: ExpandDef<T, R>) => void;
3
+ import type { Primitive } from '../../../Types/Context/TableInitOptions.js';
4
+ export interface ExpandCellProps<T extends object, R extends object, IdType extends Primitive> {
5
+ cell: ExpandTableCell<T, R, IdType>;
6
+ expandedColumnDef: ExpandDef<T, R, IdType> | undefined;
7
+ onExpandChange: (def: ExpandDef<T, R, IdType>) => void;
7
8
  }
@@ -17,7 +17,7 @@
17
17
  cell.column.columnDef.getDisplayValue?.(cell.row.original, cell.row.originalIndex) ?? value
18
18
  );
19
19
 
20
- const tableContext = getContext<TableContext<T>>(TableContext.identifier);
20
+ const tableContext = getContext<TableContext<T, never>>(TableContext.identifier);
21
21
  const toastContext = getContext<ToastContext>(ToastContext.identifier);
22
22
 
23
23
  const options: Array<SelectOption<unknown>> = $derived(
@@ -22,7 +22,7 @@
22
22
 
23
23
  const value: [number, number] = $derived(cell.getValue()) as [number, number];
24
24
 
25
- const tableContext = getContext<TableContext<T>>(TableContext.identifier);
25
+ const tableContext = getContext<TableContext<T, never>>(TableContext.identifier);
26
26
  const { toast } = getContext<ToastContext>(ToastContext.identifier);
27
27
 
28
28
  // const previousRowIndex: number | undefined = $state(undefined);
@@ -52,12 +52,14 @@
52
52
  untrack(() => {
53
53
  tick()
54
54
  .then(() => {
55
- if (validity === Validity.Invalid) {
56
- tableContext.addInvalidValue(cell.row.original);
57
- } else {
58
- tableContext.removeInvalidValue(cell.row.original);
59
- }
55
+ const x =
56
+ validity === Validity.Invalid
57
+ ? tableContext.addInvalidValue(cell.row.original)
58
+ : tableContext.removeInvalidValue(cell.row.original);
59
+
60
60
  previousValidity = validity;
61
+
62
+ return x;
61
63
  })
62
64
  .catch(devCatch);
63
65
  });
@@ -23,7 +23,7 @@
23
23
 
24
24
  const value = $derived(!!cell.getValue());
25
25
 
26
- const tableContext = getContext<TableContext<T>>(TableContext.identifier);
26
+ const tableContext = getContext<TableContext<T, never>>(TableContext.identifier);
27
27
  const toastContext = getContext<ToastContext>(ToastContext.identifier);
28
28
 
29
29
  const focusDetails: TableFocusDetails<T, BoolFilterValueType> = $derived(
@@ -25,8 +25,8 @@
25
25
 
26
26
  export interface TableColumnProps<T extends object, FilterValueType> {
27
27
  cell: TableCell<T, FilterValueType>;
28
- expandedColumnDef: ExpandDef<T> | undefined;
29
- onExpandChange: (columnDef: ExpandDef<T>) => void;
28
+ expandedColumnDef: ExpandDef<T, object, Primitive> | undefined;
29
+ onExpandChange: (columnDef: ExpandDef<T, object, Primitive>) => void;
30
30
  }
31
31
 
32
32
  function isProgressBarTableCell<T extends object>(
@@ -39,6 +39,7 @@
39
39
  <script lang="ts" generics="T extends object,FilterValueType">
40
40
  import { dev } from '$app/environment';
41
41
  import { RowSelectionDef } from '../../../Types/Columns/Definitions/RowSelection/RowSelectionDef.svelte.js';
42
+ import type { Primitive } from '../../../Types/Context/TableInitOptions.js';
42
43
  import type { RowSelectionTableCell } from './RowSelectionTableCell.js';
43
44
 
44
45
  let { cell, expandedColumnDef, onExpandChange }: TableColumnProps<T, FilterValueType> = $props();
@@ -58,7 +59,7 @@
58
59
  function isActionsDef(cell: TableCell<T>): cell is ActionsTableCell<T> {
59
60
  return cell.column.columnDef instanceof ActionsDef;
60
61
  }
61
- function isExpandTableCell(cell: TableCell<T>): cell is ExpandTableCell<T> {
62
+ function isExpandTableCell(cell: TableCell<T>): cell is ExpandTableCell<T, object, Primitive> {
62
63
  return cell.column.columnDef instanceof ExpandDef;
63
64
  }
64
65
 
@@ -2,9 +2,10 @@ import { ExpandDef } from '../../../Types/Columns/Definitions/Expand/ExpandDef.s
2
2
  import type { TableCell } from '../../../Types/Columns/TableCell.js';
3
3
  export interface TableColumnProps<T extends object, FilterValueType> {
4
4
  cell: TableCell<T, FilterValueType>;
5
- expandedColumnDef: ExpandDef<T> | undefined;
6
- onExpandChange: (columnDef: ExpandDef<T>) => void;
5
+ expandedColumnDef: ExpandDef<T, object, Primitive> | undefined;
6
+ onExpandChange: (columnDef: ExpandDef<T, object, Primitive>) => void;
7
7
  }
8
+ import type { Primitive } from '../../../Types/Context/TableInitOptions.js';
8
9
  declare function $$render<T extends object, FilterValueType>(): {
9
10
  props: TableColumnProps<T, FilterValueType>;
10
11
  exports: {};
@@ -19,7 +19,7 @@
19
19
 
20
20
  const dateValue = $derived(value && value instanceof Date ? value : undefined);
21
21
 
22
- const tableContext = getContext<TableContext<T>>(TableContext.identifier);
22
+ const tableContext = getContext<TableContext<T, never>>(TableContext.identifier);
23
23
  const { toast } = getContext<ToastContext>(ToastContext.identifier);
24
24
 
25
25
  const columnDef = $derived(cell.column.columnDef);
@@ -103,9 +103,9 @@
103
103
  validityPromise
104
104
  .then(([validity]) => {
105
105
  if (validity === Validity.Invalid) {
106
- tableContext.addInvalidValue(cell.row.original);
106
+ return tableContext.addInvalidValue(cell.row.original);
107
107
  } else {
108
- tableContext.removeInvalidValue(cell.row.original);
108
+ return tableContext.removeInvalidValue(cell.row.original);
109
109
  }
110
110
  })
111
111
  .catch(devCatch);
@@ -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
- if (validity === Validity.Invalid) {
165
- tableContext.addInvalidValue(cell.row.original);
166
- } else {
167
- tableContext.removeInvalidValue(cell.row.original);
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
  });
@@ -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
- if (validity === Validity.Invalid) {
179
- tableContext.addInvalidValue(cell.row.original);
180
- } else {
181
- tableContext.removeInvalidValue(cell.row.original);
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.toggleSelected(cell.row.original, (e.target as HTMLInputElement).checked);
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
- if (validity === Validity.Invalid) {
143
- tableContext.addInvalidValue(cell.row.original);
144
- } else {
145
- tableContext.removeInvalidValue(cell.row.original);
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
- if (validity === Validity.Invalid) {
154
- tableContext.addInvalidValue(cell.row.original);
155
- } else {
156
- tableContext.removeInvalidValue(cell.row.original);
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, never>> = $derived(
23
+ const cells: Array<TableCell<T>> = $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> | 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> | 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>) {
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
- {#each tableContext.paginationRowModel.rows as row, index (row)}
42
- {@const customHeight = heights[index]?.applyTo.includes(side)
43
- ? heights[index].maxHeight
44
- : undefined}
45
- <TableRow
46
- {includeHighlight}
47
- {customHeight}
48
- {row}
49
- {side}
50
- odd={index % 2 == 1}
51
- bind:this={rows[index]}
52
- />
53
- {/each}
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 {