@lavalogic/scoria 0.16.4 → 0.17.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 (78) hide show
  1. package/dist/Components/Table/Body/QuickSearchCell.svelte +4 -4
  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 -5
  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 +27 -29
  21. package/dist/Components/Table/Body/Rows/Columns/ValidityCell.svelte +29 -9
  22. package/dist/Components/Table/ColumnDefinitions/ExampleItemColumnDefRepository.svelte.js +28 -26
  23. package/dist/Components/Table/Headers/TableHead.svelte +20 -6
  24. package/dist/Components/Table/Misc/ColumnPanel.svelte +13 -4
  25. package/dist/Components/Table/Misc/ColumnPanelModal.svelte +9 -2
  26. package/dist/Components/Table/Misc/FilterInput.svelte +11 -8
  27. package/dist/Components/Table/Misc/FilterInput.svelte.d.ts +12 -12
  28. package/dist/Components/Table/Misc/FilterInputProps.d.ts +2 -2
  29. package/dist/Components/Table/Misc/FilterPanel.svelte +12 -3
  30. package/dist/Components/Table/Misc/FilterPanelModal.svelte +18 -5
  31. package/dist/Components/Table/Misc/TableSidebar.svelte +14 -8
  32. package/dist/Components/Table/Misc/ToolboxPanelModal.svelte +4 -1
  33. package/dist/Components/Table/Types/Columns/Column.d.ts +2 -2
  34. package/dist/Components/Table/Types/Columns/Definitions/Accessors/AccessorDef.svelte.d.ts +3 -3
  35. package/dist/Components/Table/Types/Columns/Definitions/Accessors/CheckboxDef.svelte.d.ts +2 -3
  36. package/dist/Components/Table/Types/Columns/Definitions/Accessors/DateInputDef.svelte.d.ts +2 -3
  37. package/dist/Components/Table/Types/Columns/Definitions/Accessors/NumberInputDef.svelte.d.ts +2 -3
  38. package/dist/Components/Table/Types/Columns/Definitions/Accessors/QueryDef.svelte.d.ts +4 -5
  39. package/dist/Components/Table/Types/Columns/Definitions/Accessors/SelectDef.svelte.d.ts +2 -3
  40. package/dist/Components/Table/Types/Columns/Definitions/Accessors/TextInputDef.svelte.d.ts +2 -3
  41. package/dist/Components/Table/Types/Columns/Definitions/Actions/ActionsDef.svelte.d.ts +2 -2
  42. package/dist/Components/Table/Types/Columns/Definitions/Actions/ActionsDef.svelte.js +1 -1
  43. package/dist/Components/Table/Types/Columns/Definitions/ColumnDef.svelte.d.ts +3 -4
  44. package/dist/Components/Table/Types/Columns/Definitions/ColumnDefSet.d.ts +1 -1
  45. package/dist/Components/Table/Types/Columns/Definitions/Display/AbstractDisplayDef.svelte.d.ts +7 -6
  46. package/dist/Components/Table/Types/Columns/Definitions/Display/AbstractDisplayDef.svelte.js +1 -2
  47. package/dist/Components/Table/Types/Columns/Definitions/Display/BubbleDef.svelte.d.ts +5 -6
  48. package/dist/Components/Table/Types/Columns/Definitions/Display/DisplayDef.svelte.d.ts +6 -6
  49. package/dist/Components/Table/Types/Columns/Definitions/Display/ProgressBarDef.svelte.d.ts +5 -6
  50. package/dist/Components/Table/Types/Columns/Definitions/Display/ValidityDef.svelte.d.ts +3 -3
  51. package/dist/Components/Table/Types/Columns/Definitions/Expand/ExpandDef.svelte.d.ts +3 -3
  52. package/dist/Components/Table/Types/Columns/Definitions/FilterOnly/FilterOnlyDef.svelte.d.ts +4 -5
  53. package/dist/Components/Table/Types/Columns/Definitions/JSONColumnDefSet.d.ts +1 -1
  54. package/dist/Components/Table/Types/Columns/Definitions/RowSelection/RowSelectionDef.svelte.d.ts +2 -1
  55. package/dist/Components/Table/Types/Columns/Definitions/RowSelection/RowSelectionDef.svelte.js +1 -1
  56. package/dist/Components/Table/Types/Columns/DefsWrapper.d.ts +2 -2
  57. package/dist/Components/Table/Types/Columns/TableCell.d.ts +2 -2
  58. package/dist/Components/Table/Types/Context/Row.d.ts +3 -3
  59. package/dist/Components/Table/Types/Context/TableContext.svelte.d.ts +1 -1
  60. package/dist/Components/Table/Types/Context/TableContext.svelte.js +1 -1
  61. package/dist/Components/Table/Types/DataRepository/IDataRepository.d.ts +1 -1
  62. package/dist/Components/Table/Types/DataRepository/ILocalDataRepository.d.ts +1 -1
  63. package/dist/Components/Table/Types/DataRepository/LocalTableDataRepository.svelte.d.ts +3 -3
  64. package/dist/Components/Table/Types/DataRepository/LocalTableDataRepository.svelte.js +5 -5
  65. package/dist/Components/Table/Types/DataRepository/TableDataRepository.svelte.d.ts +2 -2
  66. package/dist/Components/Table/Types/DataRepository/TableDataRepository.svelte.js +1 -1
  67. package/dist/Components/Table/Types/Filtering/ColumnFiltersState.d.ts +2 -2
  68. package/dist/Components/Table/Types/Focus/TableFocusDetails.svelte.d.ts +4 -4
  69. package/dist/Components/Table/Types/Focus/TableFocusDetails.svelte.js +1 -1
  70. package/dist/Components/Table/Types/Header.d.ts +2 -2
  71. package/dist/Components/Table/Types/HeaderGroup.d.ts +1 -1
  72. package/dist/Helpers/Helpers.svelte.js +2 -2
  73. package/dist/Types/Examples/ExampleModal.svelte.d.ts +1 -1
  74. package/dist/index.d.ts +48 -49
  75. package/dist/index.js +42 -50
  76. package/package.json +1 -1
  77. package/dist/Components/Table/Types/Filtering/CustomFilterFn.d.ts +0 -2
  78. package/dist/Components/Table/Types/Filtering/CustomFilterFn.js +0 -1
@@ -1,11 +1,15 @@
1
1
  <svelte:options runes />
2
2
 
3
- <script lang="ts" module>
3
+ <script
4
+ lang="ts"
5
+ module
6
+ >
4
7
  import Button from '../../Button.svelte';
5
8
  import TouchModal from '../../Touch/TouchModal.svelte';
6
9
  import { Size } from '../../../Types/Internal/Size.js';
7
10
  import { Variant } from '../../../Types/Internal/Variant.js';
8
11
  import { getContext } from 'svelte';
12
+ import type { ColumnDef } from '../Types/Columns/Definitions/ColumnDef.svelte.js';
9
13
  import { TableContext } from '../Types/Context/TableContext.svelte.js';
10
14
  import FilterInput from './FilterInput.svelte';
11
15
 
@@ -14,15 +18,20 @@
14
18
  }
15
19
  </script>
16
20
 
17
- <script lang="ts" generics="T extends object">
21
+ <script
22
+ lang="ts"
23
+ generics="T extends object"
24
+ >
18
25
  const tableContext = getContext<TableContext<T, never>>(TableContext.identifier);
19
26
 
20
27
  const { onclose }: FilterPanelModalProps = $props();
21
- const refs: Array<FilterInput<T>> = $state([]);
28
+ // const refs: Array<FilterInput<T, never, unknown>> = $state([]);
22
29
 
23
30
  function reset() {
24
31
  tableContext.paginationRepo?.resetFilters();
25
32
  }
33
+
34
+ const defs = $derived(tableContext.columnDefs as Array<ColumnDef<T, unknown>>);
26
35
  </script>
27
36
 
28
37
  <TouchModal
@@ -33,8 +42,12 @@
33
42
  >
34
43
  <div class="flex">
35
44
  <div class="column-panel">
36
- {#each tableContext.columnDefs as def, index (def)}
37
- <FilterInput bind:this={refs[index]} {def} customFilters={tableContext.remoteFilters} />
45
+ {#each defs as def (def.id)}
46
+ <!-- bind:this={refs[index]} -->
47
+ <FilterInput
48
+ {def}
49
+ customFilters={tableContext.remoteFilters}
50
+ />
38
51
  {/each}
39
52
 
40
53
  <div class="reset-button">
@@ -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,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
  }
@@ -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, NumberFilterValueType } from '../../../Filtering/FilterFn.js';
4
3
  import { AbstractDisplayDef, type AbstractDisplayDefProps } from './AbstractDisplayDef.svelte.js';
5
- export interface ProgressBarDefProps<T extends object, FilterValueType = NumberFilterValueType> extends AbstractDisplayDefProps<T, FilterValueType> {
4
+ export interface ProgressBarDefProps<T extends object, in FilterValueType, out FilterOptionsType> extends AbstractDisplayDefProps<T, FilterValueType, FilterOptionsType> {
6
5
  getColour: (item: T, index: number, value: [number, number]) => BubbleColour | Promise<BubbleColour> | undefined;
7
6
  }
8
- export declare class ProgressBarDef<T extends object, FilterValueType = NumberFilterValueType> extends AbstractDisplayDef<T, FilterValueType> {
7
+ export declare class ProgressBarDef<T extends object, in FilterValueType = NumberFilterValueType, out FilterOptionsType = unknown> extends AbstractDisplayDef<T, FilterValueType, FilterOptionsType> {
9
8
  readonly displayType: "Progress";
10
- constructor(props: ProgressBarDefProps<T, FilterValueType>);
9
+ constructor(props: ProgressBarDefProps<T, FilterValueType, FilterOptionsType>);
11
10
  readonly getColour: (item: T, index: number, value: [number, number]) => BubbleColour | Promise<BubbleColour> | undefined;
12
11
  private _filterFn;
13
- get filterFn(): FilterFn<T, FilterValueType> | CustomFilterFn | undefined;
14
- set filterFn(v: FilterFn<T, FilterValueType> | CustomFilterFn | undefined);
12
+ get filterFn(): FilterFn<T, FilterValueType> | undefined;
13
+ set filterFn(v: FilterFn<T, FilterValueType> | undefined);
15
14
  }
@@ -1,11 +1,11 @@
1
1
  import type { ValidationFn } from '../ValidationFn.js';
2
2
  import { AbstractDisplayDef, type AbstractDisplayDefProps } from './AbstractDisplayDef.svelte.js';
3
- export interface ValidityDefProps<T extends object, FilterValueType = unknown> extends AbstractDisplayDefProps<T, FilterValueType> {
3
+ export interface ValidityDefProps<T extends object, in FilterValueType, out FilterOptionsType> extends AbstractDisplayDefProps<T, FilterValueType, FilterOptionsType> {
4
4
  isValid: ValidationFn<T>;
5
5
  }
6
- export declare class ValidityDef<T extends object, FilterValueType = unknown> extends AbstractDisplayDef<T, FilterValueType> {
6
+ export declare class ValidityDef<T extends object, in FilterValueType, out FilterOptionsType> extends AbstractDisplayDef<T, FilterValueType, FilterOptionsType> {
7
7
  readonly displayType: "Validity";
8
- constructor(props: ValidityDefProps<T, FilterValueType>);
8
+ constructor(props: ValidityDefProps<T, FilterValueType, FilterOptionsType>);
9
9
  readonly filterFn: undefined;
10
10
  readonly isValid: ValidationFn<T>;
11
11
  }
@@ -2,7 +2,7 @@ import type { IconProps } from '../../../../../IconProps.js';
2
2
  import type { Primitive, TableInitOptions } from '../../../Context/TableInitOptions.js';
3
3
  import type { DefsWrapper } from '../../DefsWrapper.js';
4
4
  import { ColumnDef, type ColumnDefProps } from '../ColumnDef.svelte.js';
5
- export interface ExpandDefProps<T extends object, R extends object, InnterIdType extends Primitive = Primitive, in FilterValueType = unknown, out OptionsValueType = unknown> extends ColumnDefProps<T, FilterValueType, OptionsValueType> {
5
+ export interface ExpandDefProps<T extends object, R extends object, InnterIdType extends Primitive = Primitive, in FilterValueType = unknown, out FilterOptionsType = unknown> extends ColumnDefProps<T, FilterValueType, FilterOptionsType> {
6
6
  isEnabled: (item: T, index: number) => boolean | Promise<boolean>;
7
7
  getInnerColumnDefs: (item: T, index: number) => DefsWrapper<R>;
8
8
  headerIcon: IconProps['name'];
@@ -10,9 +10,9 @@ export interface ExpandDefProps<T extends object, R extends object, InnterIdType
10
10
  innerTableOptions: TableInitOptions<R, InnterIdType>;
11
11
  accessorFn: (item: T, index: number) => ReadonlyArray<R> | Promise<ReadonlyArray<R>>;
12
12
  }
13
- export declare class ExpandDef<T extends object, R extends object, InnterIdType extends Primitive = Primitive, in FilterValueType = unknown, out OptionsValueType = unknown> extends ColumnDef<T, FilterValueType, OptionsValueType> {
13
+ export declare class ExpandDef<T extends object, R extends object, InnterIdType extends Primitive = Primitive, in FilterValueType = unknown, out FilterOptionsType = unknown> extends ColumnDef<T, FilterValueType, FilterOptionsType> {
14
14
  readonly columnType: "Expand";
15
- constructor(props: ExpandDefProps<T, R, InnterIdType, FilterValueType, OptionsValueType>);
15
+ constructor(props: ExpandDefProps<T, R, InnterIdType, FilterValueType, FilterOptionsType>);
16
16
  readonly accessorFn: (item: T, index: number) => ReadonlyArray<R> | Promise<ReadonlyArray<R>>;
17
17
  readonly filterFn: undefined;
18
18
  readonly innerTableName: string;
@@ -1,11 +1,10 @@
1
- import type { CustomFilterFn } from '../../../Filtering/CustomFilterFn.js';
2
1
  import type { FilterFn } from '../../../Filtering/FilterFn.js';
3
2
  import { ColumnType } from '../../ColumnType.js';
4
3
  import { ColumnDef, type ColumnDefProps } from '../ColumnDef.svelte.js';
5
- export interface FilterOnlyDefProps<T extends object, FilterFnType = unknown, out OptionsValueType = unknown> extends ColumnDefProps<T, FilterFnType, OptionsValueType> {
4
+ export interface FilterOnlyDefProps<T extends object, FilterFnType = unknown, out FilterOptionsType = unknown> extends ColumnDefProps<T, FilterFnType, FilterOptionsType> {
6
5
  }
7
- export declare class FilterOnlyDef<T extends object, FilterFnType = unknown, out OptionsValueType = unknown> extends ColumnDef<T, FilterFnType, OptionsValueType> {
8
- constructor(props: FilterOnlyDefProps<T, FilterFnType, OptionsValueType>);
6
+ export declare class FilterOnlyDef<T extends object, FilterFnType = unknown, out FilterOptionsType = unknown> extends ColumnDef<T, FilterFnType, FilterOptionsType> {
7
+ constructor(props: FilterOnlyDefProps<T, FilterFnType, FilterOptionsType>);
9
8
  readonly columnType: ColumnType;
10
- readonly filterFn: CustomFilterFn | FilterFn<T, FilterFnType> | undefined;
9
+ readonly filterFn: FilterFn<T, FilterFnType> | undefined;
11
10
  }
@@ -7,5 +7,5 @@ export interface JSONColumnDefSet<T extends object> {
7
7
  sortingState: SortingState;
8
8
  visibilityState: VisibilityState;
9
9
  columnPinningState: JSONColumnPinningState;
10
- columnDefs: Array<ColumnDef<T>>;
10
+ columnDefs: Array<ColumnDef<T, never, unknown>>;
11
11
  }
@@ -1,6 +1,7 @@
1
+ import type { BoolFilterValueType } from '../../../Filtering/FilterFn.js';
1
2
  import { ColumnType } from '../../ColumnType.js';
2
3
  import { ColumnDef } from '../ColumnDef.svelte.js';
3
- export declare class RowSelectionDef<T extends object> extends ColumnDef<T> {
4
+ export declare class RowSelectionDef<T extends object, in FilterValueType = BoolFilterValueType, out FilterOptionsType = undefined> extends ColumnDef<T, FilterValueType, FilterOptionsType> {
4
5
  readonly isSelectable: (item: T, index: number) => boolean | Promise<boolean>;
5
6
  readonly columnType: ColumnType;
6
7
  constructor(isSelectable: (item: T, index: number) => boolean | Promise<boolean>);
@@ -9,7 +9,7 @@ export class RowSelectionDef extends ColumnDef {
9
9
  id: `is-selectable-${generateUUID()}`,
10
10
  header: 'Row Selected',
11
11
  allowSorting: false,
12
- allowFiltering: false
12
+ allowFiltering: false,
13
13
  });
14
14
  this.isSelectable = isSelectable;
15
15
  }
@@ -1,6 +1,6 @@
1
1
  import type { CustomRemoteFilters } from '../Filtering/CustomRemoteFilters.js';
2
2
  import type { ColumnDef } from './Definitions/ColumnDef.svelte.js';
3
- export interface DefsWrapper<T extends object, in FilterValueType = unknown> {
4
- defs: Array<ColumnDef<T, FilterValueType>>;
3
+ export interface DefsWrapper<T extends object> {
4
+ defs: Array<ColumnDef<T>>;
5
5
  remoteFilters?: CustomRemoteFilters<unknown>;
6
6
  }
@@ -1,7 +1,7 @@
1
1
  import type { Row } from '../Context/Row.js';
2
2
  import type { Column } from './Column.js';
3
- export interface TableCell<T extends object, in FilterValueType = unknown, out OptionsValueType = unknown> {
4
- column: Column<T, FilterValueType, OptionsValueType>;
3
+ export interface TableCell<T extends object, in FilterValueType = never, out FilterOptionsType = unknown> {
4
+ column: Column<T, FilterValueType, FilterOptionsType>;
5
5
  row: Row<T>;
6
6
  id: string;
7
7
  getValue: () => unknown | Promise<unknown>;
@@ -5,7 +5,7 @@ export interface Row<T extends object> {
5
5
  visibleIndex: number;
6
6
  originalIndex: number;
7
7
  id: string;
8
- getLeftVisibleCells: () => Array<TableCell<T>>;
9
- getRightVisibleCells: () => Array<TableCell<T>>;
10
- getCenterVisibleCells: () => Array<TableCell<T>>;
8
+ getLeftVisibleCells: () => Array<TableCell<T, never, unknown>>;
9
+ getRightVisibleCells: () => Array<TableCell<T, never, unknown>>;
10
+ getCenterVisibleCells: () => Array<TableCell<T, never, unknown>>;
11
11
  }
@@ -235,4 +235,4 @@ export declare class TableContext<T extends object, RowIdType extends Primitive>
235
235
  private reassignDefsToPresets;
236
236
  private filteringLoop;
237
237
  }
238
- export declare function isSearchable<T extends object, CD extends ColumnDef<T>>(def: CD): def is CD & HasCustomFilterFunction;
238
+ export declare function isSearchable<T extends object, FilterValueType, FilterOptionsType, CD extends ColumnDef<T, FilterValueType, FilterOptionsType>>(def: CD): def is CD & HasCustomFilterFunction;
@@ -207,7 +207,7 @@ export class TableContext {
207
207
  return false;
208
208
  }
209
209
  if (def.filterFn) {
210
- return def.filterFn(row, filter.id, filter.value);
210
+ return def.filterFn(row, filter.id, filter.value); //HACK how much parsing will be needed to be type safe?
211
211
  }
212
212
  if (this.debug) {
213
213
  console.warn(`column ${def.id} did not have a filter function`);
@@ -16,7 +16,7 @@ export interface IDataRepository<T extends object> {
16
16
  updateSorting?: OnChangeFn<SortingState>;
17
17
  manualSorting?: boolean;
18
18
  sorting: SortingState;
19
- filtering: ColumnFiltersState;
19
+ filtering: ColumnFiltersState<unknown>;
20
20
  filterModes: SvelteMap<string, FilterMode>;
21
21
  setFilterMode: (id: string, mode: FilterMode) => void;
22
22
  filterBy: (id: string, value: unknown) => void;
@@ -9,7 +9,7 @@ export interface ILocalDataRepository<T extends object> extends IDataRepository<
9
9
  setPage: (page: number) => void;
10
10
  nextPage: () => void;
11
11
  prevPage: () => void;
12
- filtering: ColumnFiltersState;
12
+ filtering: ColumnFiltersState<unknown>;
13
13
  filterModes: SvelteMap<string, FilterMode>;
14
14
  setFilterMode: (id: string, mode: FilterMode) => void;
15
15
  filterBy: (id: string, value: unknown) => void;
@@ -11,7 +11,7 @@ import type { ILocalDataRepository } from './ILocalDataRepository.js';
11
11
  import type { SortingState } from './SortingState.js';
12
12
  import { TableDataRepository } from './TableDataRepository.svelte.js';
13
13
  export declare const allowedEmptyFilterModes: SvelteSet<StringFilterMode | NumberDateFilterMode>;
14
- export declare class LocalTableDataRepository<T extends object> extends TableDataRepository<T> implements ILocalDataRepository<T> {
14
+ export declare class LocalTableDataRepository<T extends object> extends TableDataRepository<T, unknown> implements ILocalDataRepository<T> {
15
15
  addEmptyRow?: (() => void) | undefined;
16
16
  private debug;
17
17
  readonly filterType: "Real";
@@ -30,8 +30,8 @@ export declare class LocalTableDataRepository<T extends object> extends TableDat
30
30
  private _totalRows;
31
31
  get totalRows(): number;
32
32
  private _filtering;
33
- get filtering(): ColumnFiltersState;
34
- set filtering(v: ColumnFiltersState);
33
+ get filtering(): ColumnFiltersState<unknown>;
34
+ set filtering(v: ColumnFiltersState<unknown>);
35
35
  updateSorting: OnChangeFn<SortingState>;
36
36
  readonly paginationType: "Local";
37
37
  readonly setFilterMode: (id: string, mode: FilterMode | undefined) => void;