@lavalogic/scoria 0.16.3 → 0.17.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.
Files changed (83) hide show
  1. package/dist/Components/Table/Body/QuickSearchCell.svelte +2 -2
  2. package/dist/Components/Table/Body/QuickSearchCell.svelte.d.ts +12 -12
  3. package/dist/Components/Table/Body/QuickSearchCellProps.d.ts +2 -2
  4. package/dist/Components/Table/Body/Rows/ColumnList.svelte +9 -3
  5. package/dist/Components/Table/Body/Rows/ColumnListRow.svelte +10 -4
  6. package/dist/Components/Table/Body/Rows/ColumnListRowProps.d.ts +2 -2
  7. package/dist/Components/Table/Body/Rows/Columns/ActionsCell.svelte +17 -5
  8. package/dist/Components/Table/Body/Rows/Columns/BubbleCell.svelte +9 -3
  9. package/dist/Components/Table/Body/Rows/Columns/ExpandCell.svelte +3 -3
  10. package/dist/Components/Table/Body/Rows/Columns/FocusableImmutableCell.svelte +5 -2
  11. package/dist/Components/Table/Body/Rows/Columns/ProgressCell.svelte +13 -6
  12. package/dist/Components/Table/Body/Rows/Columns/TableCheckbox.svelte +9 -3
  13. package/dist/Components/Table/Body/Rows/Columns/TableColumn.svelte +13 -3
  14. package/dist/Components/Table/Body/Rows/Columns/TableDatePicker.svelte +6 -4
  15. package/dist/Components/Table/Body/Rows/Columns/TableNumberInput.svelte +10 -4
  16. package/dist/Components/Table/Body/Rows/Columns/TableQuerySelect.svelte +11 -5
  17. package/dist/Components/Table/Body/Rows/Columns/TableRowSelectionCheckbox.svelte +10 -5
  18. package/dist/Components/Table/Body/Rows/Columns/TableRowSelectionCheckbox.svelte.d.ts +1 -2
  19. package/dist/Components/Table/Body/Rows/Columns/TableSelect.svelte +14 -5
  20. package/dist/Components/Table/Body/Rows/Columns/TableTextInput.svelte +6 -3
  21. package/dist/Components/Table/Body/Rows/Columns/ValidityCell.svelte +19 -9
  22. package/dist/Components/Table/Body/Rows/TableRow.svelte +9 -8
  23. package/dist/Components/Table/Body/Rows/TableRow.svelte.d.ts +2 -10
  24. package/dist/Components/Table/Body/TableBody.svelte +32 -21
  25. package/dist/Components/Table/Body/TableBody.svelte.d.ts +2 -10
  26. package/dist/Components/Table/Body/TableBodyProps.d.ts +0 -2
  27. package/dist/Components/Table/ColumnDefinitions/ExampleItemColumnDefRepository.svelte.js +26 -26
  28. package/dist/Components/Table/Headers/TableHead.svelte +20 -6
  29. package/dist/Components/Table/Misc/ColumnPanel.svelte +13 -4
  30. package/dist/Components/Table/Misc/ColumnPanelModal.svelte +9 -2
  31. package/dist/Components/Table/Misc/FilterInput.svelte +5 -2
  32. package/dist/Components/Table/Misc/FilterInput.svelte.d.ts +12 -12
  33. package/dist/Components/Table/Misc/FilterInputProps.d.ts +2 -2
  34. package/dist/Components/Table/Misc/FilterPanelModal.svelte +14 -4
  35. package/dist/Components/Table/Misc/TableSidebar.svelte +14 -8
  36. package/dist/Components/Table/Misc/ToolboxPanelModal.svelte +4 -1
  37. package/dist/Components/Table/Table.svelte +107 -67
  38. package/dist/Components/Table/Types/Columns/Column.d.ts +2 -2
  39. package/dist/Components/Table/Types/Columns/Definitions/Accessors/AccessorDef.svelte.d.ts +3 -3
  40. package/dist/Components/Table/Types/Columns/Definitions/Accessors/CheckboxDef.svelte.d.ts +2 -3
  41. package/dist/Components/Table/Types/Columns/Definitions/Accessors/DateInputDef.svelte.d.ts +2 -3
  42. package/dist/Components/Table/Types/Columns/Definitions/Accessors/NumberInputDef.svelte.d.ts +2 -3
  43. package/dist/Components/Table/Types/Columns/Definitions/Accessors/QueryDef.svelte.d.ts +4 -5
  44. package/dist/Components/Table/Types/Columns/Definitions/Accessors/SelectDef.svelte.d.ts +2 -3
  45. package/dist/Components/Table/Types/Columns/Definitions/Accessors/TextInputDef.svelte.d.ts +2 -3
  46. package/dist/Components/Table/Types/Columns/Definitions/Actions/ActionsDef.svelte.d.ts +2 -2
  47. package/dist/Components/Table/Types/Columns/Definitions/Actions/ActionsDef.svelte.js +1 -1
  48. package/dist/Components/Table/Types/Columns/Definitions/ColumnDef.svelte.d.ts +3 -4
  49. package/dist/Components/Table/Types/Columns/Definitions/ColumnDefSet.d.ts +1 -1
  50. package/dist/Components/Table/Types/Columns/Definitions/Display/AbstractDisplayDef.svelte.d.ts +7 -6
  51. package/dist/Components/Table/Types/Columns/Definitions/Display/AbstractDisplayDef.svelte.js +1 -2
  52. package/dist/Components/Table/Types/Columns/Definitions/Display/BubbleDef.svelte.d.ts +5 -6
  53. package/dist/Components/Table/Types/Columns/Definitions/Display/DisplayDef.svelte.d.ts +6 -6
  54. package/dist/Components/Table/Types/Columns/Definitions/Display/ProgressBarDef.svelte.d.ts +5 -6
  55. package/dist/Components/Table/Types/Columns/Definitions/Display/ValidityDef.svelte.d.ts +3 -3
  56. package/dist/Components/Table/Types/Columns/Definitions/Expand/ExpandDef.svelte.d.ts +5 -5
  57. package/dist/Components/Table/Types/Columns/Definitions/FilterOnly/FilterOnlyDef.svelte.d.ts +4 -5
  58. package/dist/Components/Table/Types/Columns/Definitions/JSONColumnDefSet.d.ts +1 -1
  59. package/dist/Components/Table/Types/Columns/Definitions/RowSelection/RowSelectionDef.svelte.d.ts +2 -1
  60. package/dist/Components/Table/Types/Columns/Definitions/RowSelection/RowSelectionDef.svelte.js +1 -1
  61. package/dist/Components/Table/Types/Columns/DefsWrapper.d.ts +2 -2
  62. package/dist/Components/Table/Types/Columns/TableCell.d.ts +2 -2
  63. package/dist/Components/Table/Types/Context/Row.d.ts +3 -3
  64. package/dist/Components/Table/Types/Context/TableContext.svelte.d.ts +2 -2
  65. package/dist/Components/Table/Types/Context/TableContext.svelte.js +32 -32
  66. package/dist/Components/Table/Types/DataRepository/IDataRepository.d.ts +1 -1
  67. package/dist/Components/Table/Types/DataRepository/ILocalDataRepository.d.ts +1 -1
  68. package/dist/Components/Table/Types/DataRepository/IRemoteDataRepository.d.ts +1 -1
  69. package/dist/Components/Table/Types/DataRepository/LocalTableDataRepository.svelte.d.ts +3 -3
  70. package/dist/Components/Table/Types/DataRepository/LocalTableDataRepository.svelte.js +5 -5
  71. package/dist/Components/Table/Types/DataRepository/TableDataRepository.svelte.d.ts +2 -2
  72. package/dist/Components/Table/Types/DataRepository/TableDataRepository.svelte.js +1 -1
  73. package/dist/Components/Table/Types/Filtering/ColumnFiltersState.d.ts +2 -2
  74. package/dist/Components/Table/Types/Focus/TableFocusDetails.svelte.d.ts +4 -4
  75. package/dist/Components/Table/Types/Focus/TableFocusDetails.svelte.js +1 -1
  76. package/dist/Components/Table/Types/Header.d.ts +2 -2
  77. package/dist/Components/Table/Types/HeaderGroup.d.ts +1 -1
  78. package/dist/Types/Examples/ExampleModal.svelte.d.ts +1 -1
  79. package/dist/index.d.ts +48 -49
  80. package/dist/index.js +42 -50
  81. package/package.json +1 -1
  82. package/dist/Components/Table/Types/Filtering/CustomFilterFn.d.ts +0 -2
  83. package/dist/Components/Table/Types/Filtering/CustomFilterFn.js +0 -1
@@ -1,6 +1,9 @@
1
1
  <svelte:options runes />
2
2
 
3
- <script lang="ts" generics="T extends object">
3
+ <script
4
+ lang="ts"
5
+ generics="T extends object"
6
+ >
4
7
  import Button from '../../Button.svelte';
5
8
  import { devCatch } from '../../../Helpers/Helpers.svelte.js';
6
9
  import { Side } from '../../../Types/Internal/Side.js';
@@ -21,7 +24,7 @@
21
24
  [ExpandedPanel.None]: null,
22
25
  [ExpandedPanel.Column]: ColumnPanel,
23
26
  [ExpandedPanel.Filter]: FilterPanel,
24
- [ExpandedPanel.Toolbox]: ToolboxPanel
27
+ [ExpandedPanel.Toolbox]: ToolboxPanel,
25
28
  };
26
29
 
27
30
  let expandedPanel = $state<ExpandedPanel | null>(null);
@@ -49,7 +52,10 @@
49
52
  }
50
53
  </script>
51
54
 
52
- <svelte:window onclick={handleClickOutside} onkeydown={handleEscKey} />
55
+ <svelte:window
56
+ onclick={handleClickOutside}
57
+ onkeydown={handleEscKey}
58
+ />
53
59
 
54
60
  {#if ExpandedPanelElement != null}
55
61
  <SidePanel toolbarPosition={tableContext.toolbarPosition}>
@@ -70,7 +76,7 @@
70
76
  iconTop={{
71
77
  // colour: Colour.$alt,
72
78
  name: 'assessment',
73
- size: Size.Medium
79
+ size: Size.Medium,
74
80
  }}
75
81
  label="Quick Filter"
76
82
  />
@@ -85,7 +91,7 @@
85
91
  iconTop={{
86
92
  // colour: Colour.$alt,
87
93
  name: 'filter-bars',
88
- size: Size.Medium
94
+ size: Size.Medium,
89
95
  }}
90
96
  label="Advanced Filter"
91
97
  />
@@ -99,7 +105,7 @@
99
105
  iconTop={{
100
106
  // colour: Colour.$alt,
101
107
  name: 'columns',
102
- size: Size.Medium
108
+ size: Size.Medium,
103
109
  }}
104
110
  label="Modify Columns"
105
111
  />
@@ -113,7 +119,7 @@
113
119
  iconTop={{
114
120
  // colour: Colour.$alt,
115
121
  name: 'category',
116
- size: Size.Medium
122
+ size: Size.Medium,
117
123
  }}
118
124
  label="My Tool Box"
119
125
  />
@@ -130,7 +136,7 @@
130
136
  iconTop={{
131
137
  // colour: Colour.$alt,
132
138
  name: 'refresh',
133
- size: Size.Medium
139
+ size: Size.Medium,
134
140
  }}
135
141
  label="Refresh"
136
142
  />
@@ -1,6 +1,9 @@
1
1
  <svelte:options runes />
2
2
 
3
- <script lang="ts" generics="T extends object">
3
+ <script
4
+ lang="ts"
5
+ generics="T extends object"
6
+ >
4
7
  import Checkbox from '../../Checkbox.svelte';
5
8
  import DesktopModal from '../../DesktopModal.svelte';
6
9
  import { getContext } from 'svelte';
@@ -1,15 +1,17 @@
1
1
  <svelte:options runes />
2
2
 
3
- <script lang="ts" module>
3
+ <script
4
+ lang="ts"
5
+ module
6
+ >
4
7
  import {
5
8
  ContextMenuContext,
6
- type IContextMenuOption
9
+ type IContextMenuOption,
7
10
  } from '../../Contexts/ContextMenuContext.svelte';
8
11
  import { devCatch, refWrapper } from '../../Helpers/Helpers.svelte';
9
12
  import type { RefWrapper } from '../../Types/Internal/RefWrapper.js';
10
13
  import { getContext, onMount, setContext, tick, untrack } from 'svelte';
11
14
  import LoadingOverlay from '../LoadingOverlay.svelte';
12
- import type { HeightData } from './Body/HeightData.js';
13
15
  import { shownPopup } from './Body/Rows/Columns/ActionsCell.svelte';
14
16
  import TableBody from './Body/TableBody.svelte';
15
17
  import TableHead from './Headers/TableHead.svelte';
@@ -39,7 +41,10 @@
39
41
  const openedQuickFilterSelect = refWrapper(null);
40
42
  </script>
41
43
 
42
- <script lang="ts" generics="T extends object,IdType extends Primitive">
44
+ <script
45
+ lang="ts"
46
+ generics="T extends object,IdType extends Primitive"
47
+ >
43
48
  const { nested = false, tableContext }: TableProps<T, IdType> = $props();
44
49
 
45
50
  // NOTE: known limitation. This is passed as a wrapper, and they should never require reassignment. It is deeply reactive
@@ -78,7 +83,7 @@
78
83
  element?.scrollIntoView({
79
84
  behavior: 'instant',
80
85
  block: 'nearest',
81
- inline: 'nearest'
86
+ inline: 'nearest',
82
87
  });
83
88
  }
84
89
  });
@@ -94,7 +99,7 @@
94
99
  cell?.scrollIntoView({
95
100
  behavior: 'instant',
96
101
  block: 'nearest',
97
- inline: 'nearest'
102
+ inline: 'nearest',
98
103
  });
99
104
  }
100
105
  });
@@ -137,7 +142,7 @@
137
142
  tableContext.moveFocus({
138
143
  column: columnIndex,
139
144
  row,
140
- id: columnId
145
+ id: columnId,
141
146
  });
142
147
  }
143
148
  }
@@ -153,8 +158,8 @@
153
158
  callback: () => {
154
159
  tableContext.copyDataToClipboard().catch(devCatch);
155
160
  },
156
- text: 'Copy Selection'
157
- }
161
+ text: 'Copy Selection',
162
+ },
158
163
  ];
159
164
 
160
165
  if (tableContext.hasHighlightedItems) {
@@ -162,7 +167,7 @@
162
167
  callback: () => {
163
168
  tableContext.copyHighlightedRowsToClipboard().catch(devCatch);
164
169
  },
165
- text: 'Copy Highlighted Rows'
170
+ text: 'Copy Highlighted Rows',
166
171
  });
167
172
  }
168
173
 
@@ -284,46 +289,46 @@
284
289
  }
285
290
  });
286
291
 
287
- type SvelteTableElement = {
288
- rowHeights: RefWrapper<Array<number>>;
289
- };
290
-
291
- let leftTable: SvelteTableElement | undefined = $state();
292
- let centreTable: SvelteTableElement | undefined = $state();
293
- let rightTable: SvelteTableElement | undefined = $state();
294
-
295
- const totalRowSizes: Array<HeightData<T>> = $derived.by(() => {
296
- if (!leftTable || !centreTable || !rightTable) {
297
- return [];
298
- }
299
- const centre = centreTable.rowHeights.value;
300
- const right = rightTable.rowHeights.value;
301
-
302
- return leftTable.rowHeights.value.map((_leftHeight, index) => {
303
- const leftHeight = _leftHeight || 0;
304
- const centreHeight = centre[index] || 0;
305
- const rightHeight = right[index] || 0;
306
-
307
- const maxHeight = Math.max(leftHeight, centreHeight, rightHeight);
308
- const applyTo: HeightData<T>['applyTo'] = [];
309
-
310
- if (leftHeight < maxHeight) {
311
- applyTo.push('left');
312
- }
313
- if (centreHeight < maxHeight) {
314
- applyTo.push('centre');
315
- }
316
- if (rightHeight < maxHeight) {
317
- applyTo.push('right');
318
- }
319
-
320
- return {
321
- index,
322
- applyTo,
323
- maxHeight
324
- };
325
- });
326
- });
292
+ // type SvelteTableElement = {
293
+ // rowHeights: RefWrapper<Array<number>>;
294
+ // };
295
+
296
+ // let leftTable: SvelteTableElement | undefined = $state();
297
+ // let centreTable: SvelteTableElement | undefined = $state();
298
+ // let rightTable: SvelteTableElement | undefined = $state();
299
+
300
+ // const totalRowSizes: Array<HeightData<T>> = $derived.by(() => {
301
+ // if (!leftTable || !centreTable || !rightTable) {
302
+ // return [];
303
+ // }
304
+ // const centre = centreTable.rowHeights.value;
305
+ // const right = rightTable.rowHeights.value;
306
+
307
+ // return leftTable.rowHeights.value.map((_leftHeight, index) => {
308
+ // const leftHeight = _leftHeight || 0;
309
+ // const centreHeight = centre[index] || 0;
310
+ // const rightHeight = right[index] || 0;
311
+
312
+ // const maxHeight = Math.max(leftHeight, centreHeight, rightHeight);
313
+ // const applyTo: HeightData<T>['applyTo'] = [];
314
+
315
+ // if (leftHeight < maxHeight) {
316
+ // applyTo.push('left');
317
+ // }
318
+ // if (centreHeight < maxHeight) {
319
+ // applyTo.push('centre');
320
+ // }
321
+ // if (rightHeight < maxHeight) {
322
+ // applyTo.push('right');
323
+ // }
324
+
325
+ // return {
326
+ // index,
327
+ // applyTo,
328
+ // maxHeight
329
+ // };
330
+ // });
331
+ // });
327
332
  </script>
328
333
 
329
334
  <svelte:window
@@ -356,12 +361,21 @@
356
361
  />
357
362
 
358
363
  <svelte:boundary>
359
- <div class="grid" class:nested>
364
+ <div
365
+ class="grid"
366
+ class:nested
367
+ >
360
368
  {#if tableContext.dataRepo.isLoading}
361
- <LoadingOverlay absolute borderRadius="4px" />
369
+ <LoadingOverlay
370
+ absolute
371
+ borderRadius="4px"
372
+ />
362
373
  {/if}
363
374
 
364
- <div class="horizontal-bar" class:border={tableContext.toolbarPosition === ToolbarPosition.Top}>
375
+ <div
376
+ class="horizontal-bar"
377
+ class:border={tableContext.toolbarPosition === ToolbarPosition.Top}
378
+ >
365
379
  {#if tableContext.toolbarPosition === ToolbarPosition.Top}
366
380
  <TableHorizontalBar />
367
381
  {/if}
@@ -405,45 +419,71 @@
405
419
  class:quick-filtering={tableContext.showQuickFiltering}
406
420
  onkeydown={tableContext.handleTdKeydown}
407
421
  >
408
- <div class="flex_table" bind:this={ref} class:nested>
409
- <div bind:this={unfocusRef} class="table-wrapper" oncontextmenu={openContextMenu}>
422
+ <div
423
+ class="flex_table"
424
+ bind:this={ref}
425
+ class:nested
426
+ >
427
+ <div
428
+ bind:this={unfocusRef}
429
+ class="table-wrapper"
430
+ oncontextmenu={openContextMenu}
431
+ >
410
432
  <!-- {#if leftTotalSize > 0} -->
411
- <table class="datatable__table left" style="min-width: {leftTotalSize}px">
412
- <TableHead showHighlight={leftTotalSize > 0} side="left" />
433
+ <table
434
+ class="datatable__table left"
435
+ style="min-width: {leftTotalSize}px"
436
+ >
437
+ <TableHead
438
+ showHighlight={leftTotalSize > 0}
439
+ side="left"
440
+ />
413
441
  <TableBody
414
442
  includeHighlight={appropriateSide == 'left'}
415
443
  columns={leftColumns}
416
- heights={totalRowSizes}
417
444
  side="left"
418
- bind:this={leftTable}
419
445
  />
446
+ <!-- heights={totalRowSizes} -->
447
+ <!-- bind:this={leftTable} -->
420
448
  </table>
421
449
  <!-- {/if} -->
422
450
 
423
451
  <!-- {#if centreTotalSize > 0} -->
424
452
 
425
- <table class="datatable__table centre" style="min-width: {centreTotalSize}px">
426
- <TableHead showHighlight={leftTotalSize == 0} side="centre" />
453
+ <table
454
+ class="datatable__table centre"
455
+ style="min-width: {centreTotalSize}px"
456
+ >
457
+ <TableHead
458
+ showHighlight={leftTotalSize == 0}
459
+ side="centre"
460
+ />
427
461
  <TableBody
428
462
  includeHighlight={appropriateSide == 'centre'}
429
463
  columns={centreColumns}
430
- heights={totalRowSizes}
431
464
  side="centre"
432
- bind:this={centreTable}
433
465
  />
466
+ <!-- heights={totalRowSizes}
467
+ bind:this={centreTable} -->
434
468
  </table>
435
469
  <!-- {/if} -->
436
470
 
437
471
  <!-- {#if rightTotalSize > 0} -->
438
- <table class="datatable__table right" style="min-width: {rightTotalSize}px">
439
- <TableHead showHighlight={false} side="right" />
472
+ <table
473
+ class="datatable__table right"
474
+ style="min-width: {rightTotalSize}px"
475
+ >
476
+ <TableHead
477
+ showHighlight={false}
478
+ side="right"
479
+ />
440
480
  <TableBody
441
481
  includeHighlight={appropriateSide == 'right'}
442
482
  columns={rightColumns}
443
- heights={totalRowSizes}
444
483
  side="right"
445
- bind:this={rightTable}
446
484
  />
485
+ <!-- heights={totalRowSizes}
486
+ bind:this={rightTable} -->
447
487
  </table>
448
488
  <!-- {/if} -->
449
489
  </div>
@@ -1,7 +1,7 @@
1
1
  import type { ColumnDef } from './Definitions/ColumnDef.svelte.js';
2
- export interface Column<T extends object, in FilterFnType = unknown, out OptionsValueType = unknown> {
2
+ export interface Column<T extends object, in FilterFnType = never, out FilterOptionsType = unknown> {
3
3
  id: string;
4
- columnDef: ColumnDef<T, FilterFnType, OptionsValueType>;
4
+ columnDef: ColumnDef<T, FilterFnType, FilterOptionsType>;
5
5
  getCanSort: () => boolean;
6
6
  getToggleSortingHandler: () => ((e: MouseEvent) => void) | undefined;
7
7
  getIsSorted: () => 'asc' | 'desc' | 'none';
@@ -1,10 +1,10 @@
1
1
  import { ColumnDef, type ColumnDefProps } from '../ColumnDef.svelte.js';
2
2
  import type { AccessorType } from './AccessorType.js';
3
- export interface AccessorDefProps<T extends object, in FilterValueType, out OptionsValueType> extends ColumnDefProps<T, FilterValueType, OptionsValueType> {
3
+ export interface AccessorDefProps<T extends object, in FilterValueType, out FilterOptionsType> extends ColumnDefProps<T, FilterValueType, FilterOptionsType> {
4
4
  readonly id: string & keyof T;
5
5
  }
6
- export declare abstract class AccessorDef<T extends object, in FilterValueType, out OptionsValueType> extends ColumnDef<T, FilterValueType, OptionsValueType> {
7
- constructor(props: AccessorDefProps<T, FilterValueType, OptionsValueType>);
6
+ export declare abstract class AccessorDef<T extends object, in FilterValueType, out FilterOptionsType> extends ColumnDef<T, FilterValueType, FilterOptionsType> {
7
+ constructor(props: AccessorDefProps<T, FilterValueType, FilterOptionsType>);
8
8
  readonly columnType: "Accessor";
9
9
  abstract readonly accessorType: AccessorType;
10
10
  }
@@ -1,4 +1,3 @@
1
- import type { CustomFilterFn } from '../../../Filtering/CustomFilterFn.js';
2
1
  import type { BoolFilterValueType, FilterFn } from '../../../Filtering/FilterFn.js';
3
2
  import { AccessorDef, type AccessorDefProps } from './AccessorDef.svelte.js';
4
3
  export interface CheckboxDefProps<T extends object, in FilterValueType = BoolFilterValueType, out SelectValueType = BoolFilterValueType> extends AccessorDefProps<T, FilterValueType, SelectValueType> {
@@ -7,6 +6,6 @@ export declare class CheckboxDef<T extends object, in FilterValueType = BoolFilt
7
6
  readonly accessorType: "Checkbox";
8
7
  constructor(props: CheckboxDefProps<T, FilterValueType, SelectValueType>);
9
8
  private _filterFn;
10
- get filterFn(): CustomFilterFn | FilterFn<T, FilterValueType> | undefined;
11
- set filterFn(v: CustomFilterFn | FilterFn<T, FilterValueType> | undefined);
9
+ get filterFn(): FilterFn<T, FilterValueType> | undefined;
10
+ set filterFn(v: FilterFn<T, FilterValueType> | undefined);
12
11
  }
@@ -1,4 +1,3 @@
1
- import type { CustomFilterFn } from '../../../Filtering/CustomFilterFn.js';
2
1
  import type { DateFilterValueType, FilterFn } from '../../../Filtering/FilterFn.js';
3
2
  import { AccessorDef, type AccessorDefProps } from './AccessorDef.svelte.js';
4
3
  export interface DateInputDefProps<T extends object, in FilterValueType = DateFilterValueType, out SelectValueType = DateFilterValueType> extends AccessorDefProps<T, FilterValueType, SelectValueType> {
@@ -8,7 +7,7 @@ export declare class DateInputDef<T extends object, in FilterValueType = DateFil
8
7
  readonly accessorType: "Date";
9
8
  constructor(props: DateInputDefProps<T, FilterValueType, SelectValueType>);
10
9
  private _filterFn;
11
- get filterFn(): FilterFn<T, FilterValueType> | CustomFilterFn | undefined;
12
- set filterFn(v: FilterFn<T, FilterValueType> | CustomFilterFn | undefined);
10
+ get filterFn(): FilterFn<T, FilterValueType> | undefined;
11
+ set filterFn(v: FilterFn<T, FilterValueType> | undefined);
13
12
  readonly showTime: boolean;
14
13
  }
@@ -1,4 +1,3 @@
1
- import type { CustomFilterFn } from '../../../Filtering/CustomFilterFn.js';
2
1
  import type { FilterFn, NumberFilterValueType } from '../../../Filtering/FilterFn.js';
3
2
  import { AccessorDef, type AccessorDefProps } from './AccessorDef.svelte.js';
4
3
  export interface NumberInputDefProps<T extends object, in FilterValueType = NumberFilterValueType, out OptionssValueType = NumberFilterValueType> extends AccessorDefProps<T, FilterValueType, OptionssValueType> {
@@ -11,6 +10,6 @@ export declare class NumberInputDef<T extends object, in FilterValueType = Numbe
11
10
  readonly min: number;
12
11
  readonly max: number;
13
12
  private _filterFn;
14
- get filterFn(): CustomFilterFn | FilterFn<T, FilterValueType> | undefined;
15
- set filterFn(v: CustomFilterFn | FilterFn<T, FilterValueType> | undefined);
13
+ get filterFn(): FilterFn<T, FilterValueType> | undefined;
14
+ set filterFn(v: FilterFn<T, FilterValueType> | undefined);
16
15
  }
@@ -1,16 +1,15 @@
1
1
  import type { SelectOption } from '../../../../../../Types/Internal/SelectOption.js';
2
- import type { CustomFilterFn } from '../../../Filtering/CustomFilterFn.js';
3
2
  import type { FilterFn } from '../../../Filtering/FilterFn.js';
4
3
  import { AccessorDef, type AccessorDefProps } from './AccessorDef.svelte.js';
5
- export interface QueryDefProps<T extends object, in FilterValueType = unknown, out OptionsValueType = unknown> extends AccessorDefProps<T, FilterValueType, OptionsValueType> {
4
+ export interface QueryDefProps<T extends object, in FilterValueType = unknown, out FilterOptionsType = unknown> extends AccessorDefProps<T, FilterValueType, FilterOptionsType> {
6
5
  query: (queryString: string, item: T, index: number) => Promise<Array<SelectOption<unknown>>>;
7
6
  getDisplayValue: (item: T, index: number) => string | null | Promise<string | null>;
8
7
  clearable?: boolean;
9
8
  }
10
- export declare class QueryDef<T extends object, FilterValueType = unknown, out OptionsValueType = unknown> extends AccessorDef<T, FilterValueType, OptionsValueType> {
9
+ export declare class QueryDef<T extends object, FilterValueType = unknown, out FilterOptionsType = unknown> extends AccessorDef<T, FilterValueType, FilterOptionsType> {
11
10
  readonly accessorType: "Query";
12
- constructor(props: QueryDefProps<T, FilterValueType, OptionsValueType>);
13
- readonly filterFn: CustomFilterFn | FilterFn<T, FilterValueType> | undefined;
11
+ constructor(props: QueryDefProps<T, FilterValueType, FilterOptionsType>);
12
+ readonly filterFn: FilterFn<T, FilterValueType> | undefined;
14
13
  getDisplayValue: (item: T, index: number) => string | null | Promise<string | null>;
15
14
  readonly query: (queryString: string, item: T, index: number) => Promise<Array<SelectOption<unknown>>>;
16
15
  readonly clearable: boolean;
@@ -1,5 +1,4 @@
1
1
  import type { SelectOption } from '../../../../../../Types/Internal/SelectOption.js';
2
- import type { CustomFilterFn } from '../../../Filtering/CustomFilterFn.js';
3
2
  import type { FilterFn } from '../../../Filtering/FilterFn.js';
4
3
  import { AccessorDef, type AccessorDefProps } from './AccessorDef.svelte.js';
5
4
  export interface SelectDefProps<T extends object, in FilterValueType, out SelectValueType> extends AccessorDefProps<T, FilterValueType, SelectValueType> {
@@ -14,8 +13,8 @@ export declare class SelectDef<T extends object, in FilterValueType, out SelectV
14
13
  constructor(props: SelectDefProps<T, FilterValueType, SelectValueType>);
15
14
  readonly accessorType: "Select";
16
15
  private _filterFn;
17
- get filterFn(): FilterFn<T, FilterValueType> | CustomFilterFn | undefined;
18
- set filterFn(v: FilterFn<T, FilterValueType> | CustomFilterFn | undefined);
16
+ get filterFn(): FilterFn<T, FilterValueType> | undefined;
17
+ set filterFn(v: FilterFn<T, FilterValueType> | undefined);
19
18
  readonly sortingFn?: (a: T, b: T) => 1 | -1 | 0;
20
19
  readonly optional: boolean;
21
20
  readonly clearable: boolean;
@@ -1,4 +1,3 @@
1
- import type { CustomFilterFn } from '../../../Filtering/CustomFilterFn.js';
2
1
  import type { FilterFn, StringFilterValueType } from '../../../Filtering/FilterFn.js';
3
2
  import { AccessorDef, type AccessorDefProps } from './AccessorDef.svelte.js';
4
3
  export interface TextInputDefProps<T extends object, in FilterValueType = StringFilterValueType, out SelectValueType = StringFilterValueType> extends AccessorDefProps<T, FilterValueType, SelectValueType> {
@@ -8,6 +7,6 @@ export declare class TextInputDef<T extends object, in FilterValueType = StringF
8
7
  readonly accessorType: "Text";
9
8
  constructor(props: TextInputDefProps<T, FilterValueType, SelectValueType>);
10
9
  private _filterFn;
11
- get filterFn(): CustomFilterFn | FilterFn<T, FilterValueType> | undefined;
12
- set filterFn(v: CustomFilterFn | FilterFn<T, FilterValueType> | undefined);
10
+ get filterFn(): FilterFn<T, FilterValueType> | undefined;
11
+ set filterFn(v: FilterFn<T, FilterValueType> | undefined);
13
12
  }
@@ -1,12 +1,12 @@
1
1
  import type { ColourSet } from '../../../../../../scss/colours.js';
2
2
  import type { TableActionButton } from '../../TableActionButton.js';
3
3
  import { ColumnDef, type ColumnDefProps } from '../ColumnDef.svelte.js';
4
- export interface ActionsDefProps<T extends object, in FilterValueType, out OptionsValueType = unknown> extends Omit<ColumnDefProps<T, FilterValueType, OptionsValueType>, 'id' | 'header'> {
4
+ export interface ActionsDefProps<T extends object, in FilterValueType, out FilterOptionsType = unknown> extends Omit<ColumnDefProps<T, FilterValueType, FilterOptionsType>, 'id' | 'header'> {
5
5
  actions: Array<TableActionButton<T>>;
6
6
  isEnabled?: (item: T, index: number, button: TableActionButton<T>) => boolean | Promise<boolean>;
7
7
  getColourSet?: (item: T, index: number, button: TableActionButton<T>) => ColourSet;
8
8
  }
9
- export declare class ActionsDef<T extends object, FilterValueType, out OptionsValueType = unknown> extends ColumnDef<T, FilterValueType, OptionsValueType> {
9
+ export declare class ActionsDef<T extends object, FilterValueType, out FilterOptionsType = unknown> extends ColumnDef<T, FilterValueType, FilterOptionsType> {
10
10
  constructor(props: ActionsDefProps<T, FilterValueType>);
11
11
  readonly columnType: "Actions";
12
12
  readonly actions: Array<TableActionButton<T>>;
@@ -7,7 +7,7 @@ export class ActionsDef extends ColumnDef {
7
7
  id: `actions-${generateUUID()}`,
8
8
  header: 'Actions',
9
9
  allowSorting: false,
10
- allowFiltering: false
10
+ allowFiltering: false,
11
11
  });
12
12
  this.actions = $derived(props.actions);
13
13
  this.isEnabled = $derived(props.isEnabled);
@@ -1,7 +1,6 @@
1
1
  import type { Pixels } from '../../../../../Types/Internal/Misc.js';
2
2
  import type { SelectOption } from '../../../../../Types/Internal/SelectOption.js';
3
3
  import type { Snippet } from 'svelte';
4
- import type { CustomFilterFn } from '../../Filtering/CustomFilterFn.js';
5
4
  import type { FilterFn } from '../../Filtering/FilterFn.js';
6
5
  import type { FilterValueType } from '../../Filtering/FilterValueType.js';
7
6
  import { ColumnType } from '../ColumnType.js';
@@ -20,13 +19,13 @@ export interface ColumnDefProps<T extends object, in FilterFnType, out OptionsTy
20
19
  isEditable?: (item: T, index: number) => boolean | Promise<boolean>;
21
20
  resizable?: boolean;
22
21
  isValid?: ValidationFn<T>;
23
- filterFn?: FilterFn<T, FilterFnType> | CustomFilterFn;
22
+ filterFn?: FilterFn<T, FilterFnType>;
24
23
  filterValueType?: FilterValueType;
25
24
  getOptions?: () => Array<SelectOption<OptionsType>> | Promise<Array<SelectOption<OptionsType>>>;
26
25
  accessorFn?: AccessorFn<T>;
27
26
  getDisplayValue?: (item: T, index: number) => string | null | Promise<string | null>;
28
27
  }
29
- export declare abstract class ColumnDef<T extends object, in FilterFnType = unknown, out OptionsType = unknown> {
28
+ export declare abstract class ColumnDef<T extends object, in FilterFnType = never, out OptionsType = unknown> {
30
29
  protected constructor(props: ColumnDefProps<T, FilterFnType, OptionsType>);
31
30
  readonly id: string;
32
31
  debug: boolean;
@@ -39,7 +38,7 @@ export declare abstract class ColumnDef<T extends object, in FilterFnType = unkn
39
38
  readonly allowFiltering: boolean;
40
39
  readonly isValid: ValidationFn<T> | undefined;
41
40
  readonly accessorFn: AccessorFn<T> | undefined;
42
- abstract filterFn: FilterFn<T, FilterFnType> | CustomFilterFn | undefined;
41
+ abstract filterFn: FilterFn<T, FilterFnType> | undefined;
43
42
  private _minSize;
44
43
  get minSize(): Pixels;
45
44
  set minSize(v: Pixels);
@@ -7,5 +7,5 @@ export interface ColumnDefSet<T extends object> {
7
7
  sortingState: SortingState;
8
8
  visibilityState: VisibilityState;
9
9
  columnPinningState: ColumnPinningState;
10
- columnDefs: Array<ColumnDef<T>>;
10
+ columnDefs: Array<ColumnDef<T, never, unknown>>;
11
11
  }
@@ -2,17 +2,18 @@ import type { Component } from 'svelte';
2
2
  import type { DisplayType } from '../../DisplayType.js';
3
3
  import type { TableCell } from '../../TableCell.js';
4
4
  import { ColumnDef, type ColumnDefProps } from '../ColumnDef.svelte.js';
5
- export interface DisplayDefModalProps<T extends object, in FilterValueType = unknown, out OptionsValueType = unknown> {
6
- cell: TableCell<T, FilterValueType, OptionsValueType>;
5
+ export interface DisplayDefModalProps<T extends object, in FilterValueType = never, out FilterOptionsType = unknown> {
6
+ cell: TableCell<T, FilterValueType, FilterOptionsType>;
7
7
  onclose: () => void;
8
8
  onsubmit: () => void;
9
9
  }
10
- export interface AbstractDisplayDefProps<T extends object, FilterFnType, out OptionsValueType = unknown> extends ColumnDefProps<T, FilterFnType, OptionsValueType> {
10
+ export interface AbstractDisplayDefProps<T extends object, in FilterFnType, out FilterOptionsType> extends ColumnDefProps<T, FilterFnType, FilterOptionsType> {
11
11
  modal?: Component<any, any, any>;
12
12
  }
13
- export declare abstract class AbstractDisplayDef<T extends object, FilterValueType, out OptionsValueType = unknown> extends ColumnDef<T, FilterValueType, OptionsValueType> {
13
+ export declare abstract class AbstractDisplayDef<T extends object, in FilterValueType = never, out FilterOptionsType = unknown> extends ColumnDef<T, FilterValueType, FilterOptionsType> {
14
14
  abstract readonly displayType: DisplayType;
15
- constructor(props: AbstractDisplayDefProps<T, FilterValueType, OptionsValueType>);
15
+ constructor(props: AbstractDisplayDefProps<T, FilterValueType, FilterOptionsType>);
16
16
  readonly columnType: "Display";
17
- readonly modal: Component<DisplayDefModalProps<T, FilterValueType>, any, any> | undefined;
17
+ readonly modal: //HACK out parameter. Need to check if it's possible to be strict
18
+ Component<DisplayDefModalProps<T>, any, any> | undefined;
18
19
  }
@@ -6,6 +6,5 @@ export class AbstractDisplayDef extends ColumnDef {
6
6
  this.modal = $derived(props.modal);
7
7
  }
8
8
  columnType = ColumnType.Display;
9
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
10
- modal; //HACK out parameter. Need to check if it's possible to be strict
9
+ modal;
11
10
  }
@@ -1,15 +1,14 @@
1
1
  import type { BubbleColour } from '../../../../../BubbleColour.js';
2
- import type { CustomFilterFn } from '../../../Filtering/CustomFilterFn.js';
3
2
  import type { FilterFn, StringFilterValueType } from '../../../Filtering/FilterFn.js';
4
3
  import { AbstractDisplayDef, type AbstractDisplayDefProps } from './AbstractDisplayDef.svelte.js';
5
- export interface BubbleDefProps<T extends object, FilterValueType = StringFilterValueType> extends AbstractDisplayDefProps<T, FilterValueType> {
4
+ export interface BubbleDefProps<T extends object, in FilterValueType, out FilterOptionsType> extends AbstractDisplayDefProps<T, FilterValueType, FilterOptionsType> {
6
5
  getColour?: (item: T, index: number, value: string) => BubbleColour | Promise<BubbleColour | null | undefined>;
7
6
  }
8
- export declare class BubbleDef<T extends object, FilterValueType = StringFilterValueType> extends AbstractDisplayDef<T, FilterValueType> {
7
+ export declare class BubbleDef<T extends object, in FilterValueType = StringFilterValueType, out FilterOptionsType = unknown> extends AbstractDisplayDef<T, FilterValueType, FilterOptionsType> {
9
8
  readonly displayType: "Bubbles";
10
- constructor(props: BubbleDefProps<T, FilterValueType>);
9
+ constructor(props: BubbleDefProps<T, FilterValueType, FilterOptionsType>);
11
10
  private _filterFn;
12
- get filterFn(): FilterFn<T, FilterValueType> | CustomFilterFn | undefined;
13
- set filterFn(v: FilterFn<T, FilterValueType> | CustomFilterFn | undefined);
11
+ get filterFn(): FilterFn<T, FilterValueType> | undefined;
12
+ set filterFn(v: FilterFn<T, FilterValueType> | undefined);
14
13
  getColour: ((item: T, index: number, value: string) => BubbleColour | Promise<BubbleColour | null | undefined>) | undefined;
15
14
  }
@@ -1,12 +1,12 @@
1
- import type { CustomFilterFn } from '../../../Filtering/CustomFilterFn.js';
2
1
  import type { FilterFn } from '../../../Filtering/FilterFn.js';
3
2
  import { DisplayType } from '../../DisplayType.js';
4
3
  import { AbstractDisplayDef, type AbstractDisplayDefProps } from './AbstractDisplayDef.svelte.js';
5
- export type DisplayDefProps<T extends object, FilterValueType = unknown> = AbstractDisplayDefProps<T, FilterValueType>;
6
- export declare class DisplayDef<T extends object, FilterValueType = unknown> extends AbstractDisplayDef<T, FilterValueType> {
4
+ export interface DisplayDefProps<T extends object, in FilterValueType, out FilterOptionsType> extends AbstractDisplayDefProps<T, FilterValueType, FilterOptionsType> {
5
+ }
6
+ export declare class DisplayDef<T extends object, in FilterValueType, out FilterOptionsType> extends AbstractDisplayDef<T, FilterValueType, FilterOptionsType> {
7
7
  readonly displayType: DisplayType;
8
- constructor(props: DisplayDefProps<T, FilterValueType>);
8
+ constructor(props: DisplayDefProps<T, FilterValueType, FilterOptionsType>);
9
9
  private _filterFn;
10
- get filterFn(): CustomFilterFn | FilterFn<T, FilterValueType> | undefined;
11
- set filterFn(v: CustomFilterFn | FilterFn<T, FilterValueType> | undefined);
10
+ get filterFn(): FilterFn<T, FilterValueType> | undefined;
11
+ set filterFn(v: FilterFn<T, FilterValueType> | undefined);
12
12
  }