@lavalogic/scoria 0.16.4 → 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 (77) 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/ColumnDefinitions/ExampleItemColumnDefRepository.svelte.js +26 -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 +5 -2
  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/FilterPanelModal.svelte +14 -4
  30. package/dist/Components/Table/Misc/TableSidebar.svelte +14 -8
  31. package/dist/Components/Table/Misc/ToolboxPanelModal.svelte +4 -1
  32. package/dist/Components/Table/Types/Columns/Column.d.ts +2 -2
  33. package/dist/Components/Table/Types/Columns/Definitions/Accessors/AccessorDef.svelte.d.ts +3 -3
  34. package/dist/Components/Table/Types/Columns/Definitions/Accessors/CheckboxDef.svelte.d.ts +2 -3
  35. package/dist/Components/Table/Types/Columns/Definitions/Accessors/DateInputDef.svelte.d.ts +2 -3
  36. package/dist/Components/Table/Types/Columns/Definitions/Accessors/NumberInputDef.svelte.d.ts +2 -3
  37. package/dist/Components/Table/Types/Columns/Definitions/Accessors/QueryDef.svelte.d.ts +4 -5
  38. package/dist/Components/Table/Types/Columns/Definitions/Accessors/SelectDef.svelte.d.ts +2 -3
  39. package/dist/Components/Table/Types/Columns/Definitions/Accessors/TextInputDef.svelte.d.ts +2 -3
  40. package/dist/Components/Table/Types/Columns/Definitions/Actions/ActionsDef.svelte.d.ts +2 -2
  41. package/dist/Components/Table/Types/Columns/Definitions/Actions/ActionsDef.svelte.js +1 -1
  42. package/dist/Components/Table/Types/Columns/Definitions/ColumnDef.svelte.d.ts +3 -4
  43. package/dist/Components/Table/Types/Columns/Definitions/ColumnDefSet.d.ts +1 -1
  44. package/dist/Components/Table/Types/Columns/Definitions/Display/AbstractDisplayDef.svelte.d.ts +7 -6
  45. package/dist/Components/Table/Types/Columns/Definitions/Display/AbstractDisplayDef.svelte.js +1 -2
  46. package/dist/Components/Table/Types/Columns/Definitions/Display/BubbleDef.svelte.d.ts +5 -6
  47. package/dist/Components/Table/Types/Columns/Definitions/Display/DisplayDef.svelte.d.ts +6 -6
  48. package/dist/Components/Table/Types/Columns/Definitions/Display/ProgressBarDef.svelte.d.ts +5 -6
  49. package/dist/Components/Table/Types/Columns/Definitions/Display/ValidityDef.svelte.d.ts +3 -3
  50. package/dist/Components/Table/Types/Columns/Definitions/Expand/ExpandDef.svelte.d.ts +3 -3
  51. package/dist/Components/Table/Types/Columns/Definitions/FilterOnly/FilterOnlyDef.svelte.d.ts +4 -5
  52. package/dist/Components/Table/Types/Columns/Definitions/JSONColumnDefSet.d.ts +1 -1
  53. package/dist/Components/Table/Types/Columns/Definitions/RowSelection/RowSelectionDef.svelte.d.ts +2 -1
  54. package/dist/Components/Table/Types/Columns/Definitions/RowSelection/RowSelectionDef.svelte.js +1 -1
  55. package/dist/Components/Table/Types/Columns/DefsWrapper.d.ts +3 -3
  56. package/dist/Components/Table/Types/Columns/TableCell.d.ts +2 -2
  57. package/dist/Components/Table/Types/Context/Row.d.ts +3 -3
  58. package/dist/Components/Table/Types/Context/TableContext.svelte.d.ts +2 -2
  59. package/dist/Components/Table/Types/Context/TableContext.svelte.js +1 -1
  60. package/dist/Components/Table/Types/DataRepository/IDataRepository.d.ts +1 -1
  61. package/dist/Components/Table/Types/DataRepository/ILocalDataRepository.d.ts +1 -1
  62. package/dist/Components/Table/Types/DataRepository/IRemoteDataRepository.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/Types/Examples/ExampleModal.svelte.d.ts +1 -1
  73. package/dist/index.d.ts +48 -49
  74. package/dist/index.js +42 -50
  75. package/package.json +1 -1
  76. package/dist/Components/Table/Types/Filtering/CustomFilterFn.d.ts +0 -2
  77. package/dist/Components/Table/Types/Filtering/CustomFilterFn.js +0 -1
@@ -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>>;
5
- remoteFilters?: CustomRemoteFilters<unknown>;
3
+ export interface DefsWrapper<T extends object> {
4
+ defs: Array<ColumnDef<T, never, unknown>>;
5
+ remoteFilters?: CustomRemoteFilters<never>;
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
  }
@@ -48,7 +48,7 @@ export declare class TableContext<T extends object, RowIdType extends Primitive>
48
48
  get dataRepo(): IDataRepository<T>;
49
49
  private set dataRepo(value);
50
50
  private _remoteFilters;
51
- get remoteFilters(): CustomRemoteFilters<unknown> | undefined;
51
+ get remoteFilters(): CustomRemoteFilters<never> | undefined;
52
52
  private set remoteFilters(value);
53
53
  private _showSelectedOnly;
54
54
  get showSelectedOnly(): boolean;
@@ -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;
@@ -8,7 +8,7 @@ export interface IRemoteDataRepository<T extends object> extends IDataRepository
8
8
  setPage: (page: number) => void;
9
9
  nextPage: () => void;
10
10
  prevPage: () => void;
11
- filtering: ColumnFiltersState;
11
+ filtering: ColumnFiltersState<never>;
12
12
  filterModes: SvelteMap<string, FilterMode>;
13
13
  setFilterMode: (id: string, mode: FilterMode) => void;
14
14
  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;
@@ -7,7 +7,7 @@ import { TableDataRepository } from './TableDataRepository.svelte.js';
7
7
  export const allowedEmptyFilterModes = new SvelteSet([
8
8
  StringFilterMode.Empty,
9
9
  StringFilterMode.null,
10
- NumberDateFilterMode.null
10
+ NumberDateFilterMode.null,
11
11
  ]);
12
12
  export class LocalTableDataRepository extends TableDataRepository {
13
13
  addEmptyRow;
@@ -142,27 +142,27 @@ export class LocalTableDataRepository extends TableDataRepository {
142
142
  const lastIndex = Math.ceil(this._dataRef.value.length / size) - 1;
143
143
  this.paginationState = {
144
144
  pageSize: size,
145
- pageIndex: Math.max(0, Math.min(this.paginationState.pageIndex, lastIndex))
145
+ pageIndex: Math.max(0, Math.min(this.paginationState.pageIndex, lastIndex)),
146
146
  };
147
147
  };
148
148
  setPage = (page) => {
149
149
  const lastIndex = this._lastPage - 1;
150
150
  this.paginationState = {
151
151
  ...this.paginationState,
152
- pageIndex: Math.max(0, Math.min(lastIndex, page - 1))
152
+ pageIndex: Math.max(0, Math.min(lastIndex, page - 1)),
153
153
  };
154
154
  };
155
155
  nextPage = () => {
156
156
  const lastIndex = this._lastPage - 1;
157
157
  this.paginationState = {
158
158
  ...this.paginationState,
159
- pageIndex: Math.min(lastIndex, this.paginationState.pageIndex + 1)
159
+ pageIndex: Math.min(lastIndex, this.paginationState.pageIndex + 1),
160
160
  };
161
161
  };
162
162
  prevPage = () => {
163
163
  this.paginationState = {
164
164
  ...this.paginationState,
165
- pageIndex: Math.max(0, this.paginationState.pageIndex - 1)
165
+ pageIndex: Math.max(0, this.paginationState.pageIndex - 1),
166
166
  };
167
167
  };
168
168
  // #region filters
@@ -9,7 +9,7 @@ export interface ReadonlyPaginationState extends PaginationState {
9
9
  readonly pageIndex: number;
10
10
  readonly pageSize: number;
11
11
  }
12
- export declare abstract class TableDataRepository<T extends object> implements IDataRepository<T> {
12
+ export declare abstract class TableDataRepository<T extends object, out FilterValueType> implements IDataRepository<T> {
13
13
  private tableName;
14
14
  protected getUserId: () => string | undefined;
15
15
  abstract paginationType: 'Remote' | 'Local';
@@ -18,7 +18,7 @@ export declare abstract class TableDataRepository<T extends object> implements I
18
18
  abstract isLoading: boolean;
19
19
  abstract data: Array<T>;
20
20
  abstract setPageSize: (size: number) => void;
21
- abstract filtering: ColumnFiltersState;
21
+ abstract filtering: ColumnFiltersState<FilterValueType>;
22
22
  abstract setFilterMode: (id: string, mode: FilterMode) => void;
23
23
  abstract filterBy: (id: string, value: unknown) => void;
24
24
  abstract resetFilters: () => void;
@@ -10,7 +10,7 @@ export class TableDataRepository {
10
10
  __queryValues = new SvelteMap();
11
11
  _paginationState = $state({
12
12
  pageIndex: 0,
13
- pageSize: 20
13
+ pageSize: 20,
14
14
  });
15
15
  get paginationState() {
16
16
  return this._paginationState;
@@ -1,5 +1,5 @@
1
- export interface ColumnFilter<T = unknown> {
1
+ export interface ColumnFilter<T> {
2
2
  id: string;
3
3
  value: T;
4
4
  }
5
- export type ColumnFiltersState = Array<ColumnFilter>;
5
+ export type ColumnFiltersState<T = unknown> = Array<ColumnFilter<T>>;
@@ -3,12 +3,12 @@ import { Validity } from '../../../../Types/Internal/Validity.js';
3
3
  import type { TableCell } from '../Columns/TableCell.js';
4
4
  import type { TableContext } from '../Context/TableContext.svelte.js';
5
5
  import type { CellCoordinates } from '../Coordinates/CellCoordinates.js';
6
- export declare class TableFocusDetails<T extends object, FilterValueType> {
6
+ export declare class TableFocusDetails<T extends object> {
7
7
  private toastCallback;
8
- constructor(cell: TableCell<T, FilterValueType>, tableContext: TableContext<T, never>, toastCallback: ToastContext['toast']);
8
+ constructor(cell: TableCell<T>, tableContext: TableContext<T, never>, toastCallback: ToastContext['toast']);
9
9
  private _cell;
10
- get cell(): TableCell<T, FilterValueType>;
11
- set cell(v: TableCell<T, FilterValueType>);
10
+ get cell(): TableCell<T>;
11
+ set cell(v: TableCell<T>);
12
12
  private _tableContext;
13
13
  get tableContext(): TableContext<T, never>;
14
14
  set tableContext(v: TableContext<T, never>);
@@ -26,7 +26,7 @@ export class TableFocusDetails {
26
26
  _coordinates = $derived({
27
27
  row: this.cell.row.visibleIndex,
28
28
  column: this.cell.column.columnDef.index,
29
- id: this.cell.column.columnDef.id
29
+ id: this.cell.column.columnDef.id,
30
30
  });
31
31
  get coordinates() {
32
32
  return this._coordinates;
@@ -1,9 +1,9 @@
1
1
  import type { Column } from './Columns/Column.js';
2
- export interface Header<T extends object, FilterValueType> {
2
+ export interface Header<T extends object, in FilterValueType, out FilterOptionsType> {
3
3
  id: string;
4
4
  colSpan: number;
5
5
  getSize: () => number;
6
- column: Column<T, FilterValueType>;
6
+ column: Column<T, FilterValueType, FilterOptionsType>;
7
7
  isPlaceholder: boolean;
8
8
  getResizeHandler: () => (e: MouseEvent) => void;
9
9
  }
@@ -1,5 +1,5 @@
1
1
  import type { Header } from './Header.js';
2
2
  export interface HeaderGroup<T extends object> {
3
3
  id: string;
4
- headers: Array<Header<T, unknown>>;
4
+ headers: Array<Header<T, never, unknown>>;
5
5
  }
@@ -1,5 +1,5 @@
1
1
  import type { DisplayDefModalProps } from '../../Components/Table/Types/Columns/Definitions/Display/AbstractDisplayDef.svelte.js';
2
2
  import type { ExampleItem } from './ExampleItem.js';
3
- declare const ExampleModal: import("svelte").Component<DisplayDefModalProps<ExampleItem, unknown, unknown>, {}, "">;
3
+ declare const ExampleModal: import("svelte").Component<DisplayDefModalProps<ExampleItem, never, unknown>, {}, "">;
4
4
  type ExampleModal = ReturnType<typeof ExampleModal>;
5
5
  export default ExampleModal;