@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.
- package/dist/Components/Table/Body/QuickSearchCell.svelte +2 -2
- package/dist/Components/Table/Body/QuickSearchCell.svelte.d.ts +12 -12
- package/dist/Components/Table/Body/QuickSearchCellProps.d.ts +2 -2
- package/dist/Components/Table/Body/Rows/ColumnList.svelte +9 -3
- package/dist/Components/Table/Body/Rows/ColumnListRow.svelte +10 -4
- package/dist/Components/Table/Body/Rows/ColumnListRowProps.d.ts +2 -2
- package/dist/Components/Table/Body/Rows/Columns/ActionsCell.svelte +17 -5
- package/dist/Components/Table/Body/Rows/Columns/BubbleCell.svelte +9 -3
- package/dist/Components/Table/Body/Rows/Columns/ExpandCell.svelte +3 -3
- package/dist/Components/Table/Body/Rows/Columns/FocusableImmutableCell.svelte +5 -2
- package/dist/Components/Table/Body/Rows/Columns/ProgressCell.svelte +13 -6
- package/dist/Components/Table/Body/Rows/Columns/TableCheckbox.svelte +9 -3
- package/dist/Components/Table/Body/Rows/Columns/TableColumn.svelte +13 -3
- package/dist/Components/Table/Body/Rows/Columns/TableDatePicker.svelte +6 -4
- package/dist/Components/Table/Body/Rows/Columns/TableNumberInput.svelte +10 -4
- package/dist/Components/Table/Body/Rows/Columns/TableQuerySelect.svelte +11 -5
- package/dist/Components/Table/Body/Rows/Columns/TableRowSelectionCheckbox.svelte +10 -5
- package/dist/Components/Table/Body/Rows/Columns/TableRowSelectionCheckbox.svelte.d.ts +1 -2
- package/dist/Components/Table/Body/Rows/Columns/TableSelect.svelte +14 -5
- package/dist/Components/Table/Body/Rows/Columns/TableTextInput.svelte +6 -3
- package/dist/Components/Table/Body/Rows/Columns/ValidityCell.svelte +19 -9
- package/dist/Components/Table/Body/Rows/TableRow.svelte +9 -8
- package/dist/Components/Table/Body/Rows/TableRow.svelte.d.ts +2 -10
- package/dist/Components/Table/Body/TableBody.svelte +32 -21
- package/dist/Components/Table/Body/TableBody.svelte.d.ts +2 -10
- package/dist/Components/Table/Body/TableBodyProps.d.ts +0 -2
- package/dist/Components/Table/ColumnDefinitions/ExampleItemColumnDefRepository.svelte.js +26 -26
- package/dist/Components/Table/Headers/TableHead.svelte +20 -6
- package/dist/Components/Table/Misc/ColumnPanel.svelte +13 -4
- package/dist/Components/Table/Misc/ColumnPanelModal.svelte +9 -2
- package/dist/Components/Table/Misc/FilterInput.svelte +5 -2
- package/dist/Components/Table/Misc/FilterInput.svelte.d.ts +12 -12
- package/dist/Components/Table/Misc/FilterInputProps.d.ts +2 -2
- package/dist/Components/Table/Misc/FilterPanelModal.svelte +14 -4
- package/dist/Components/Table/Misc/TableSidebar.svelte +14 -8
- package/dist/Components/Table/Misc/ToolboxPanelModal.svelte +4 -1
- package/dist/Components/Table/Table.svelte +107 -67
- package/dist/Components/Table/Types/Columns/Column.d.ts +2 -2
- package/dist/Components/Table/Types/Columns/Definitions/Accessors/AccessorDef.svelte.d.ts +3 -3
- package/dist/Components/Table/Types/Columns/Definitions/Accessors/CheckboxDef.svelte.d.ts +2 -3
- package/dist/Components/Table/Types/Columns/Definitions/Accessors/DateInputDef.svelte.d.ts +2 -3
- package/dist/Components/Table/Types/Columns/Definitions/Accessors/NumberInputDef.svelte.d.ts +2 -3
- package/dist/Components/Table/Types/Columns/Definitions/Accessors/QueryDef.svelte.d.ts +4 -5
- package/dist/Components/Table/Types/Columns/Definitions/Accessors/SelectDef.svelte.d.ts +2 -3
- package/dist/Components/Table/Types/Columns/Definitions/Accessors/TextInputDef.svelte.d.ts +2 -3
- package/dist/Components/Table/Types/Columns/Definitions/Actions/ActionsDef.svelte.d.ts +2 -2
- package/dist/Components/Table/Types/Columns/Definitions/Actions/ActionsDef.svelte.js +1 -1
- package/dist/Components/Table/Types/Columns/Definitions/ColumnDef.svelte.d.ts +3 -4
- package/dist/Components/Table/Types/Columns/Definitions/ColumnDefSet.d.ts +1 -1
- package/dist/Components/Table/Types/Columns/Definitions/Display/AbstractDisplayDef.svelte.d.ts +7 -6
- package/dist/Components/Table/Types/Columns/Definitions/Display/AbstractDisplayDef.svelte.js +1 -2
- package/dist/Components/Table/Types/Columns/Definitions/Display/BubbleDef.svelte.d.ts +5 -6
- package/dist/Components/Table/Types/Columns/Definitions/Display/DisplayDef.svelte.d.ts +6 -6
- package/dist/Components/Table/Types/Columns/Definitions/Display/ProgressBarDef.svelte.d.ts +5 -6
- package/dist/Components/Table/Types/Columns/Definitions/Display/ValidityDef.svelte.d.ts +3 -3
- package/dist/Components/Table/Types/Columns/Definitions/Expand/ExpandDef.svelte.d.ts +5 -5
- package/dist/Components/Table/Types/Columns/Definitions/FilterOnly/FilterOnlyDef.svelte.d.ts +4 -5
- package/dist/Components/Table/Types/Columns/Definitions/JSONColumnDefSet.d.ts +1 -1
- package/dist/Components/Table/Types/Columns/Definitions/RowSelection/RowSelectionDef.svelte.d.ts +2 -1
- package/dist/Components/Table/Types/Columns/Definitions/RowSelection/RowSelectionDef.svelte.js +1 -1
- package/dist/Components/Table/Types/Columns/DefsWrapper.d.ts +2 -2
- package/dist/Components/Table/Types/Columns/TableCell.d.ts +2 -2
- package/dist/Components/Table/Types/Context/Row.d.ts +3 -3
- package/dist/Components/Table/Types/Context/TableContext.svelte.d.ts +2 -2
- package/dist/Components/Table/Types/Context/TableContext.svelte.js +32 -32
- package/dist/Components/Table/Types/DataRepository/IDataRepository.d.ts +1 -1
- package/dist/Components/Table/Types/DataRepository/ILocalDataRepository.d.ts +1 -1
- package/dist/Components/Table/Types/DataRepository/IRemoteDataRepository.d.ts +1 -1
- package/dist/Components/Table/Types/DataRepository/LocalTableDataRepository.svelte.d.ts +3 -3
- package/dist/Components/Table/Types/DataRepository/LocalTableDataRepository.svelte.js +5 -5
- package/dist/Components/Table/Types/DataRepository/TableDataRepository.svelte.d.ts +2 -2
- package/dist/Components/Table/Types/DataRepository/TableDataRepository.svelte.js +1 -1
- package/dist/Components/Table/Types/Filtering/ColumnFiltersState.d.ts +2 -2
- package/dist/Components/Table/Types/Focus/TableFocusDetails.svelte.d.ts +4 -4
- package/dist/Components/Table/Types/Focus/TableFocusDetails.svelte.js +1 -1
- package/dist/Components/Table/Types/Header.d.ts +2 -2
- package/dist/Components/Table/Types/HeaderGroup.d.ts +1 -1
- package/dist/Types/Examples/ExampleModal.svelte.d.ts +1 -1
- package/dist/index.d.ts +48 -49
- package/dist/index.js +42 -50
- package/package.json +1 -1
- package/dist/Components/Table/Types/Filtering/CustomFilterFn.d.ts +0 -2
- package/dist/Components/Table/Types/Filtering/CustomFilterFn.js +0 -1
|
@@ -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
|
|
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> |
|
|
14
|
-
set filterFn(v: FilterFn<T, FilterValueType> |
|
|
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
|
|
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
|
|
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,18 +2,18 @@ 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
|
|
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'];
|
|
9
9
|
innerTableName: string;
|
|
10
10
|
innerTableOptions: TableInitOptions<R, InnterIdType>;
|
|
11
|
-
accessorFn: (item: T, index: number) =>
|
|
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
|
|
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,
|
|
16
|
-
readonly accessorFn: (item: T, index: number) =>
|
|
15
|
+
constructor(props: ExpandDefProps<T, R, InnterIdType, FilterValueType, FilterOptionsType>);
|
|
16
|
+
readonly accessorFn: (item: T, index: number) => ReadonlyArray<R> | Promise<ReadonlyArray<R>>;
|
|
17
17
|
readonly filterFn: undefined;
|
|
18
18
|
readonly innerTableName: string;
|
|
19
19
|
readonly getInnerColumnDefs: (item: T, index: number) => DefsWrapper<R>;
|
package/dist/Components/Table/Types/Columns/Definitions/FilterOnly/FilterOnlyDef.svelte.d.ts
CHANGED
|
@@ -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
|
|
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
|
|
8
|
-
constructor(props: FilterOnlyDefProps<T, FilterFnType,
|
|
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:
|
|
9
|
+
readonly filterFn: FilterFn<T, FilterFnType> | undefined;
|
|
11
10
|
}
|
package/dist/Components/Table/Types/Columns/Definitions/RowSelection/RowSelectionDef.svelte.d.ts
CHANGED
|
@@ -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>);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { CustomRemoteFilters } from '../Filtering/CustomRemoteFilters.js';
|
|
2
2
|
import type { ColumnDef } from './Definitions/ColumnDef.svelte.js';
|
|
3
3
|
export interface DefsWrapper<T extends object> {
|
|
4
|
-
defs: Array<ColumnDef<T, never>>;
|
|
5
|
-
remoteFilters?: CustomRemoteFilters<
|
|
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 =
|
|
4
|
-
column: Column<T, FilterValueType,
|
|
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<
|
|
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;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { browser, dev } from '$app/environment';
|
|
2
|
-
import { asyncAll, asyncFilterIndices, asyncForEach, asyncMap, asyncSleep, devCatch, getCanvasContext, getErrorMessage } from '../../../../Helpers/Helpers.svelte.js';
|
|
2
|
+
import { asyncAll, asyncFilterIndices, asyncForEach, asyncMap, asyncSleep, devCatch, getCanvasContext, getErrorMessage, } from '../../../../Helpers/Helpers.svelte.js';
|
|
3
3
|
import { tick, untrack } from 'svelte';
|
|
4
4
|
import { SvelteMap, SvelteSet } from 'svelte/reactivity';
|
|
5
5
|
import { ColumnType } from '../Columns/ColumnType.js';
|
|
@@ -23,7 +23,7 @@ const uncopyableColumns = new Set([
|
|
|
23
23
|
ColumnType.Expand,
|
|
24
24
|
ColumnType.Actions,
|
|
25
25
|
ColumnType.FilterOnly,
|
|
26
|
-
ColumnType.Custom
|
|
26
|
+
ColumnType.Custom,
|
|
27
27
|
]);
|
|
28
28
|
export class TableContext {
|
|
29
29
|
defaultColumnDefs;
|
|
@@ -106,7 +106,7 @@ export class TableContext {
|
|
|
106
106
|
columnDefs: this.columnDefs,
|
|
107
107
|
sortingState: [],
|
|
108
108
|
visibilityState,
|
|
109
|
-
columnPinningState: {}
|
|
109
|
+
columnPinningState: {},
|
|
110
110
|
};
|
|
111
111
|
this.selectedPreset = defaultPreset;
|
|
112
112
|
this.columnVisibility = visibilityState;
|
|
@@ -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`);
|
|
@@ -665,7 +665,7 @@ export class TableContext {
|
|
|
665
665
|
return {
|
|
666
666
|
rows,
|
|
667
667
|
// eslint-disable-next-line svelte/prefer-svelte-reactivity
|
|
668
|
-
rowsById: new Map(rows.map((it, index) => [index.toString(), it])) //FIXME should this be by sorted id or by original id?
|
|
668
|
+
rowsById: new Map(rows.map((it, index) => [index.toString(), it])), //FIXME should this be by sorted id or by original id?
|
|
669
669
|
};
|
|
670
670
|
});
|
|
671
671
|
currentPageData = $derived.by(async () => {
|
|
@@ -709,7 +709,7 @@ export class TableContext {
|
|
|
709
709
|
id: index.toString(),
|
|
710
710
|
getLeftVisibleCells: () => leftVisibleCells,
|
|
711
711
|
getRightVisibleCells: () => rightVisibleCells,
|
|
712
|
-
getCenterVisibleCells: () => centerVisibleCells
|
|
712
|
+
getCenterVisibleCells: () => centerVisibleCells,
|
|
713
713
|
};
|
|
714
714
|
const makeRow = (def) => {
|
|
715
715
|
const isSorted = $derived.by(() => {
|
|
@@ -731,7 +731,7 @@ export class TableContext {
|
|
|
731
731
|
getIsSorted: () => isSorted,
|
|
732
732
|
getIsVisible: () => isVisible,
|
|
733
733
|
getToggleSortingHandler: () => def.allowSorting ? this.getToggleSortingHandler(def) : undefined,
|
|
734
|
-
id: def.id
|
|
734
|
+
id: def.id,
|
|
735
735
|
},
|
|
736
736
|
id: `${index}_${def.id}`,
|
|
737
737
|
row: row,
|
|
@@ -741,7 +741,7 @@ export class TableContext {
|
|
|
741
741
|
return gotValue;
|
|
742
742
|
}
|
|
743
743
|
return item[def.id];
|
|
744
|
-
}
|
|
744
|
+
},
|
|
745
745
|
};
|
|
746
746
|
};
|
|
747
747
|
const makeCellFromId = (columnId) => {
|
|
@@ -763,7 +763,7 @@ export class TableContext {
|
|
|
763
763
|
return {
|
|
764
764
|
rows,
|
|
765
765
|
// eslint-disable-next-line svelte/prefer-svelte-reactivity
|
|
766
|
-
rowsById: new Map(rows.map((it, index) => [index.toString(), it])) //FIXME should this be by sorted id or by original id?
|
|
766
|
+
rowsById: new Map(rows.map((it, index) => [index.toString(), it])), //FIXME should this be by sorted id or by original id?
|
|
767
767
|
};
|
|
768
768
|
});
|
|
769
769
|
// #endregion
|
|
@@ -1272,7 +1272,7 @@ export class TableContext {
|
|
|
1272
1272
|
}
|
|
1273
1273
|
return this._performRowCopy(await this.getFocusElementData());
|
|
1274
1274
|
};
|
|
1275
|
-
_performRowCopy = async ({ items, indicesByItem, focusedElementData, affectedColumns }) => {
|
|
1275
|
+
_performRowCopy = async ({ items, indicesByItem, focusedElementData, affectedColumns, }) => {
|
|
1276
1276
|
const focusedColumnIds = affectedColumns.map((it) => encapsulate(typeof it.header === 'string' ? it.header : it.id));
|
|
1277
1277
|
const value = await (async () => {
|
|
1278
1278
|
// eslint-disable-next-line svelte/prefer-svelte-reactivity
|
|
@@ -1674,8 +1674,8 @@ export class TableContext {
|
|
|
1674
1674
|
...preset,
|
|
1675
1675
|
columnPinningState: {
|
|
1676
1676
|
left: [...(preset.columnPinningState.left?.entries() ?? [])],
|
|
1677
|
-
right: [...(preset.columnPinningState.right?.entries() ?? [])]
|
|
1678
|
-
}
|
|
1677
|
+
right: [...(preset.columnPinningState.right?.entries() ?? [])],
|
|
1678
|
+
},
|
|
1679
1679
|
};
|
|
1680
1680
|
});
|
|
1681
1681
|
const stringified = JSON.stringify(jsonFriendly);
|
|
@@ -1707,7 +1707,7 @@ export class TableContext {
|
|
|
1707
1707
|
id: index.toString(),
|
|
1708
1708
|
getLeftVisibleCells: () => leftVisibleCells,
|
|
1709
1709
|
getRightVisibleCells: () => rightVisibleCells,
|
|
1710
|
-
getCenterVisibleCells: () => centerVisibleCells
|
|
1710
|
+
getCenterVisibleCells: () => centerVisibleCells,
|
|
1711
1711
|
};
|
|
1712
1712
|
const makeRow = (def) => {
|
|
1713
1713
|
const isVisible = $derived(this.columnVisibility[def.id] != false);
|
|
@@ -1729,7 +1729,7 @@ export class TableContext {
|
|
|
1729
1729
|
getIsSorted: () => isSorted,
|
|
1730
1730
|
getIsVisible: () => isVisible,
|
|
1731
1731
|
getToggleSortingHandler: () => def.allowSorting ? this.getToggleSortingHandler(def) : undefined,
|
|
1732
|
-
id: def.id
|
|
1732
|
+
id: def.id,
|
|
1733
1733
|
},
|
|
1734
1734
|
id: `${index}_${def.id}`,
|
|
1735
1735
|
row: row,
|
|
@@ -1739,7 +1739,7 @@ export class TableContext {
|
|
|
1739
1739
|
return gotValue;
|
|
1740
1740
|
}
|
|
1741
1741
|
return item[def.id];
|
|
1742
|
-
}
|
|
1742
|
+
},
|
|
1743
1743
|
};
|
|
1744
1744
|
};
|
|
1745
1745
|
const makeCellFromId = (columnId) => {
|
|
@@ -1776,7 +1776,7 @@ export class TableContext {
|
|
|
1776
1776
|
alternateRowColours,
|
|
1777
1777
|
changeColourOnHover,
|
|
1778
1778
|
copyWithHeaders,
|
|
1779
|
-
commaSeparatedCopy
|
|
1779
|
+
commaSeparatedCopy,
|
|
1780
1780
|
};
|
|
1781
1781
|
localStorage.setItem(`${this.userId}-${this.tableName}-settings`, JSON.stringify(settingsObject));
|
|
1782
1782
|
}
|
|
@@ -1793,7 +1793,7 @@ export class TableContext {
|
|
|
1793
1793
|
const endRowIndex = rows.findIndex((row) => row.visibleIndex === focusEnd.row);
|
|
1794
1794
|
this.focusEnd = {
|
|
1795
1795
|
...this.focusEnd,
|
|
1796
|
-
row: rows[Math.max(Math.min(endRowIndex + offset, rows.length - 1), 0)].visibleIndex
|
|
1796
|
+
row: rows[Math.max(Math.min(endRowIndex + offset, rows.length - 1), 0)].visibleIndex,
|
|
1797
1797
|
};
|
|
1798
1798
|
}
|
|
1799
1799
|
async _moveFocusRow(offset) {
|
|
@@ -1900,7 +1900,7 @@ export class TableContext {
|
|
|
1900
1900
|
items: selectedRows,
|
|
1901
1901
|
indicesByItem: indices,
|
|
1902
1902
|
focusedElementData: selectedCells,
|
|
1903
|
-
affectedColumns
|
|
1903
|
+
affectedColumns,
|
|
1904
1904
|
};
|
|
1905
1905
|
}
|
|
1906
1906
|
async getFocusElementData() {
|
|
@@ -1974,7 +1974,7 @@ export class TableContext {
|
|
|
1974
1974
|
items: selectedRows,
|
|
1975
1975
|
indicesByItem: indices,
|
|
1976
1976
|
focusedElementData: selectedCells,
|
|
1977
|
-
affectedColumns
|
|
1977
|
+
affectedColumns,
|
|
1978
1978
|
};
|
|
1979
1979
|
}
|
|
1980
1980
|
// eslint-disable-next-line svelte/prefer-svelte-reactivity
|
|
@@ -2191,7 +2191,7 @@ export class TableContext {
|
|
|
2191
2191
|
right: new Map(this.columnPinning.right &&
|
|
2192
2192
|
this.columnDefs
|
|
2193
2193
|
.filter((col) => this.columnPinning.right?.has(col.id))
|
|
2194
|
-
.map((col, index) => [col.id, index]))
|
|
2194
|
+
.map((col, index) => [col.id, index])),
|
|
2195
2195
|
}; // TODO
|
|
2196
2196
|
}
|
|
2197
2197
|
getToggleSortingHandler = (def) => () => {
|
|
@@ -2210,7 +2210,7 @@ export class TableContext {
|
|
|
2210
2210
|
else {
|
|
2211
2211
|
newState.push({
|
|
2212
2212
|
desc: false,
|
|
2213
|
-
id: def.id
|
|
2213
|
+
id: def.id,
|
|
2214
2214
|
});
|
|
2215
2215
|
}
|
|
2216
2216
|
return newState;
|
|
@@ -2234,7 +2234,7 @@ export class TableContext {
|
|
|
2234
2234
|
throw new Error('Could not find equivalent column def:', { cause: def });
|
|
2235
2235
|
}
|
|
2236
2236
|
return (preset.columnDefs[index] = realDef);
|
|
2237
|
-
})
|
|
2237
|
+
}),
|
|
2238
2238
|
};
|
|
2239
2239
|
});
|
|
2240
2240
|
}
|
|
@@ -2347,7 +2347,7 @@ function generateTableOptions(contextObj) {
|
|
|
2347
2347
|
getCanSort: () => def.allowSorting,
|
|
2348
2348
|
getToggleSortingHandler: () => def.allowSorting ? contextObj.getToggleSortingHandler(def) : undefined,
|
|
2349
2349
|
getIsSorted: () => isSorted,
|
|
2350
|
-
getIsVisible: () => isVisible
|
|
2350
|
+
getIsVisible: () => isVisible,
|
|
2351
2351
|
},
|
|
2352
2352
|
getResizeHandler: () => {
|
|
2353
2353
|
return (e) => {
|
|
@@ -2355,7 +2355,7 @@ function generateTableOptions(contextObj) {
|
|
|
2355
2355
|
};
|
|
2356
2356
|
},
|
|
2357
2357
|
isPlaceholder: false,
|
|
2358
|
-
getSize: () => def.width
|
|
2358
|
+
getSize: () => def.width,
|
|
2359
2359
|
};
|
|
2360
2360
|
};
|
|
2361
2361
|
const leftHeaderGroups = $derived.by(() => {
|
|
@@ -2372,8 +2372,8 @@ function generateTableOptions(contextObj) {
|
|
|
2372
2372
|
{
|
|
2373
2373
|
depth: 0,
|
|
2374
2374
|
id: 'left_0',
|
|
2375
|
-
headers
|
|
2376
|
-
}
|
|
2375
|
+
headers,
|
|
2376
|
+
},
|
|
2377
2377
|
];
|
|
2378
2378
|
});
|
|
2379
2379
|
const rightHeaderGroups = $derived.by(() => {
|
|
@@ -2384,8 +2384,8 @@ function generateTableOptions(contextObj) {
|
|
|
2384
2384
|
{
|
|
2385
2385
|
depth: 0,
|
|
2386
2386
|
id: 'right_0',
|
|
2387
|
-
headers
|
|
2388
|
-
}
|
|
2387
|
+
headers,
|
|
2388
|
+
},
|
|
2389
2389
|
];
|
|
2390
2390
|
});
|
|
2391
2391
|
const centerHeaderGroups = $derived.by(() => {
|
|
@@ -2399,8 +2399,8 @@ function generateTableOptions(contextObj) {
|
|
|
2399
2399
|
{
|
|
2400
2400
|
depth: 0,
|
|
2401
2401
|
id: 'center_0',
|
|
2402
|
-
headers
|
|
2403
|
-
}
|
|
2402
|
+
headers,
|
|
2403
|
+
},
|
|
2404
2404
|
];
|
|
2405
2405
|
});
|
|
2406
2406
|
const leftSizePx = $derived(leftHeaderGroups.reduce((total, grp) => total + grp.headers.reduce((total, header) => total + header.getSize(), 0), 0));
|
|
@@ -2455,7 +2455,7 @@ function generateTableOptions(contextObj) {
|
|
|
2455
2455
|
},
|
|
2456
2456
|
get onColumnFiltersChange() {
|
|
2457
2457
|
return contextObj.updateFilters;
|
|
2458
|
-
}
|
|
2458
|
+
},
|
|
2459
2459
|
// get pageCount() {
|
|
2460
2460
|
// return _pageCount;
|
|
2461
2461
|
// }
|
|
@@ -2570,7 +2570,7 @@ function adaptJSONPinningState(state) {
|
|
|
2570
2570
|
//HACK ignore previously broken pinning states
|
|
2571
2571
|
return {
|
|
2572
2572
|
left: new Map(Array.isArray(state.left) ? state.left : []),
|
|
2573
|
-
right: new Map(Array.isArray(state.right) ? state.right : [])
|
|
2573
|
+
right: new Map(Array.isArray(state.right) ? state.right : []),
|
|
2574
2574
|
};
|
|
2575
2575
|
}
|
|
2576
2576
|
// #endregion
|
|
@@ -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;
|
|
@@ -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
|
|
6
|
+
export declare class TableFocusDetails<T extends object> {
|
|
7
7
|
private toastCallback;
|
|
8
|
-
constructor(cell: TableCell<T
|
|
8
|
+
constructor(cell: TableCell<T>, tableContext: TableContext<T, never>, toastCallback: ToastContext['toast']);
|
|
9
9
|
private _cell;
|
|
10
|
-
get cell(): TableCell<T
|
|
11
|
-
set cell(v: TableCell<T
|
|
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 { 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,
|
|
3
|
+
declare const ExampleModal: import("svelte").Component<DisplayDefModalProps<ExampleItem, never, unknown>, {}, "">;
|
|
4
4
|
type ExampleModal = ReturnType<typeof ExampleModal>;
|
|
5
5
|
export default ExampleModal;
|