@lavalogic/scoria 0.17.2 → 0.18.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 +78 -73
- package/dist/Components/Table/Body/Rows/ColumnList.svelte +1 -1
- package/dist/Components/Table/Body/Rows/ColumnListRowProps.d.ts +1 -1
- package/dist/Components/Table/Body/Rows/Columns/AccessorComponent.svelte +12 -6
- package/dist/Components/Table/Body/Rows/Columns/ActionsCell.svelte +15 -35
- package/dist/Components/Table/Body/Rows/Columns/BubbleCell.svelte +15 -35
- package/dist/Components/Table/Body/Rows/Columns/ExpandCell.svelte +35 -4
- package/dist/Components/Table/Body/Rows/Columns/FocusableImmutableCell.svelte +60 -26
- package/dist/Components/Table/Body/Rows/Columns/ProgressCell.svelte +14 -35
- package/dist/Components/Table/Body/Rows/Columns/TableCheckbox.svelte +35 -5
- package/dist/Components/Table/Body/Rows/Columns/TableDatePicker.svelte +82 -139
- package/dist/Components/Table/Body/Rows/Columns/TableDatePickerProps.d.ts +1 -1
- package/dist/Components/Table/Body/Rows/Columns/TableNumberInput.svelte +15 -35
- package/dist/Components/Table/Body/Rows/Columns/TableNumberInput.svelte.d.ts +1 -2
- package/dist/Components/Table/Body/Rows/Columns/TableQuerySelect.svelte +14 -34
- package/dist/Components/Table/Body/Rows/Columns/TableRowSelectionCheckbox.svelte +93 -37
- package/dist/Components/Table/Body/Rows/Columns/TableRowSelectionCheckbox.svelte.d.ts +12 -13
- package/dist/Components/Table/Body/Rows/Columns/TableSelect.svelte +14 -34
- package/dist/Components/Table/Body/Rows/Columns/TableTextInput.svelte +14 -34
- package/dist/Components/Table/Body/Rows/Columns/ValidityCell.svelte +40 -61
- package/dist/Components/Table/Body/Rows/Columns/ValidityCell.svelte.d.ts +12 -11
- package/dist/Components/Table/ColumnDefinitions/ExampleItemColumnDefRepository.svelte.js +39 -29
- package/dist/Components/Table/Misc/FilterInput.svelte +1 -1
- package/dist/Components/Table/Table.svelte +15 -16
- package/dist/Components/Table/Types/Columns/DateColumn.d.ts +2 -2
- package/dist/Components/Table/Types/Columns/DateTableCell.d.ts +2 -2
- package/dist/Components/Table/Types/Columns/Definitions/ColumnDefSet.d.ts +1 -1
- package/dist/Components/Table/Types/Columns/Definitions/JSONColumnDefSet.d.ts +1 -1
- package/dist/Components/Table/Types/Columns/Definitions/ValidationFn.d.ts +1 -1
- package/dist/Components/Table/Types/Context/ITable.d.ts +0 -1
- package/dist/Components/Table/Types/Context/Row.d.ts +3 -3
- package/dist/Components/Table/Types/Context/TableContext.svelte.d.ts +16 -22
- package/dist/Components/Table/Types/Context/TableContext.svelte.js +299 -275
- 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/LocalTableDataRepository.svelte.d.ts +2 -2
- package/dist/Components/Table/Types/DataRepository/LocalTableDataRepository.svelte.js +23 -7
- package/dist/Components/Table/Types/DataRepository/TableDataRepository.svelte.d.ts +2 -2
- package/dist/Components/Table/Types/DataRepository/TableDataRepository.svelte.js +2 -4
- package/dist/Components/Table/Types/Focus/TableFocusDetails.svelte.d.ts +18 -36
- package/dist/Components/Table/Types/Focus/TableFocusDetails.svelte.js +77 -113
- package/dist/Components/TextInput.svelte +11 -4
- package/dist/Components/Touch/DateModal.svelte +26 -14
- package/dist/Helpers/Helpers.svelte.d.ts +5 -1
- package/dist/Helpers/Helpers.svelte.js +9 -10
- package/package.json +14 -14
|
@@ -15,6 +15,29 @@ import { ProgressBarDef } from '../Types/Columns/Definitions/Display/ProgressBar
|
|
|
15
15
|
import { ValidityDef } from '../Types/Columns/Definitions/Display/ValidityDef.svelte.js';
|
|
16
16
|
import { ExpandDef } from '../Types/Columns/Definitions/Expand/ExpandDef.svelte.js';
|
|
17
17
|
export function generateExampleItemColumnDefs(modal) {
|
|
18
|
+
const isValid = (item, isSelected) => {
|
|
19
|
+
void item.name;
|
|
20
|
+
void item.isChecked;
|
|
21
|
+
void isSelected;
|
|
22
|
+
if (!$effect.tracking()) {
|
|
23
|
+
throw new Error(`NOT in tracking context`);
|
|
24
|
+
}
|
|
25
|
+
return isSelected.then((isSelected) => {
|
|
26
|
+
if (isSelected) {
|
|
27
|
+
if (!item.name.trim()) {
|
|
28
|
+
return { value: Validity.Invalid, reason: 'Missing name' };
|
|
29
|
+
}
|
|
30
|
+
if (item.isChecked) {
|
|
31
|
+
return Validity.Valid;
|
|
32
|
+
}
|
|
33
|
+
return {
|
|
34
|
+
value: Validity.Warning,
|
|
35
|
+
reason: 'Example item is not checked.',
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
return { value: Validity.Neutral, reason: 'row not selected' };
|
|
39
|
+
});
|
|
40
|
+
};
|
|
18
41
|
const expandDef = $state(new ExpandDef({
|
|
19
42
|
accessorFn: (it) => [it],
|
|
20
43
|
getInnerColumnDefs: () => generateExampleItemColumnDefs(modal),
|
|
@@ -27,27 +50,15 @@ export function generateExampleItemColumnDefs(modal) {
|
|
|
27
50
|
getUserId: () => '1',
|
|
28
51
|
},
|
|
29
52
|
isEnabled: () => true,
|
|
53
|
+
isValid,
|
|
30
54
|
}));
|
|
31
55
|
let defs = $state([
|
|
32
56
|
expandDef,
|
|
33
57
|
new ValidityDef({
|
|
34
58
|
header: 'Valid',
|
|
35
59
|
id: 'valid',
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
if (!item.name.trim()) {
|
|
39
|
-
return { value: Validity.Invalid, reason: 'Missing name' };
|
|
40
|
-
}
|
|
41
|
-
if (item.isChecked) {
|
|
42
|
-
return Validity.Valid;
|
|
43
|
-
}
|
|
44
|
-
return {
|
|
45
|
-
value: Validity.Warning,
|
|
46
|
-
reason: 'Example item is not checked.',
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
|
-
return { value: Validity.Neutral, reason: 'row not selected' };
|
|
50
|
-
},
|
|
60
|
+
debug: true,
|
|
61
|
+
isValid,
|
|
51
62
|
modal,
|
|
52
63
|
}),
|
|
53
64
|
new DisplayDef({
|
|
@@ -61,6 +72,7 @@ export function generateExampleItemColumnDefs(modal) {
|
|
|
61
72
|
return item.id;
|
|
62
73
|
},
|
|
63
74
|
// debug: true,
|
|
75
|
+
isValid,
|
|
64
76
|
}),
|
|
65
77
|
new QueryDef({
|
|
66
78
|
header: 'simulated query def',
|
|
@@ -81,11 +93,13 @@ export function generateExampleItemColumnDefs(modal) {
|
|
|
81
93
|
})
|
|
82
94
|
: [];
|
|
83
95
|
},
|
|
96
|
+
isValid,
|
|
84
97
|
}),
|
|
85
98
|
new TextInputDef({
|
|
86
99
|
header: 'Name',
|
|
87
100
|
id: 'name',
|
|
88
101
|
isEditable: () => true,
|
|
102
|
+
isValid,
|
|
89
103
|
}),
|
|
90
104
|
new NumberInputDef({
|
|
91
105
|
header: 'Some Number',
|
|
@@ -93,6 +107,7 @@ export function generateExampleItemColumnDefs(modal) {
|
|
|
93
107
|
isEditable: () => true,
|
|
94
108
|
min: 0,
|
|
95
109
|
max: 12345,
|
|
110
|
+
isValid,
|
|
96
111
|
}),
|
|
97
112
|
new ProgressBarDef({
|
|
98
113
|
getColour: () => {
|
|
@@ -103,10 +118,12 @@ export function generateExampleItemColumnDefs(modal) {
|
|
|
103
118
|
},
|
|
104
119
|
header: 'Progress',
|
|
105
120
|
id: 'progress',
|
|
121
|
+
isValid,
|
|
106
122
|
}),
|
|
107
123
|
new CheckboxDef({
|
|
108
124
|
header: 'Checkbox',
|
|
109
125
|
id: 'isChecked',
|
|
126
|
+
isValid,
|
|
110
127
|
}),
|
|
111
128
|
new DateInputDef({
|
|
112
129
|
header: 'Some Date',
|
|
@@ -122,7 +139,8 @@ export function generateExampleItemColumnDefs(modal) {
|
|
|
122
139
|
}
|
|
123
140
|
return true;
|
|
124
141
|
},
|
|
125
|
-
debug: true,
|
|
142
|
+
// debug: true,
|
|
143
|
+
isValid,
|
|
126
144
|
// filterValueType: 'Date',
|
|
127
145
|
// defaultHidden: true
|
|
128
146
|
}),
|
|
@@ -131,6 +149,7 @@ export function generateExampleItemColumnDefs(modal) {
|
|
|
131
149
|
id: 'someDateWithTime',
|
|
132
150
|
isEditable: () => true,
|
|
133
151
|
showTime: true,
|
|
152
|
+
isValid,
|
|
134
153
|
}),
|
|
135
154
|
new DateInputDef({
|
|
136
155
|
header: 'Flo Date',
|
|
@@ -144,6 +163,7 @@ export function generateExampleItemColumnDefs(modal) {
|
|
|
144
163
|
isEditable: () => true,
|
|
145
164
|
defaultHidden: true,
|
|
146
165
|
showTime: true,
|
|
166
|
+
isValid,
|
|
147
167
|
}),
|
|
148
168
|
// altSelectDef,
|
|
149
169
|
new SelectDef({
|
|
@@ -172,6 +192,7 @@ export function generateExampleItemColumnDefs(modal) {
|
|
|
172
192
|
},
|
|
173
193
|
getDisplayValue: (item) => item.someSelect,
|
|
174
194
|
isEditable: () => true,
|
|
195
|
+
isValid,
|
|
175
196
|
}),
|
|
176
197
|
new BubbleDef({
|
|
177
198
|
header: 'Generated Bubble',
|
|
@@ -180,10 +201,12 @@ export function generateExampleItemColumnDefs(modal) {
|
|
|
180
201
|
return ['foo', 'bar', 'baz'];
|
|
181
202
|
},
|
|
182
203
|
defaultHidden: true,
|
|
204
|
+
isValid,
|
|
183
205
|
}),
|
|
184
206
|
new BubbleDef({
|
|
185
207
|
header: 'Multi Bubbles',
|
|
186
208
|
id: 'someBubbles',
|
|
209
|
+
isValid,
|
|
187
210
|
}),
|
|
188
211
|
]);
|
|
189
212
|
return {
|
|
@@ -195,16 +218,3 @@ export function generateExampleItemColumnDefs(modal) {
|
|
|
195
218
|
},
|
|
196
219
|
};
|
|
197
220
|
}
|
|
198
|
-
//sanity check
|
|
199
|
-
// class A<T> {}
|
|
200
|
-
// class B {}
|
|
201
|
-
// class C<T> extends A<T> {}
|
|
202
|
-
// class D extends B {}
|
|
203
|
-
// function asdf() {
|
|
204
|
-
// const x: Array<A<B>> = [];
|
|
205
|
-
// //C extends A, D extends B
|
|
206
|
-
// const y: C<D> = new C();
|
|
207
|
-
// x.push(y); // error
|
|
208
|
-
// const g: A<B> = y; //valid, subtype
|
|
209
|
-
// x.push(g); // no error
|
|
210
|
-
// }
|
|
@@ -90,7 +90,7 @@
|
|
|
90
90
|
}
|
|
91
91
|
void filteringStateValue;
|
|
92
92
|
if (def.debug) {
|
|
93
|
-
console.log('filtering state value:', $state.snapshot(filteringStateValue));
|
|
93
|
+
console.log('FILTER INPUT: filtering state value:', $state.snapshot(filteringStateValue));
|
|
94
94
|
}
|
|
95
95
|
|
|
96
96
|
if (hasQuery(customFilter)) {
|
|
@@ -50,8 +50,6 @@
|
|
|
50
50
|
// NOTE: known limitation. This is passed as a wrapper, and they should never require reassignment. It is deeply reactive
|
|
51
51
|
setContext(TableContext.identifier, tableContext);
|
|
52
52
|
|
|
53
|
-
// $inspect(tableContext.showQuickFiltering);
|
|
54
|
-
|
|
55
53
|
const { openContextMenu: _openContextMenu } = getContext<ContextMenuContext>(
|
|
56
54
|
ContextMenuContext.identifier
|
|
57
55
|
);
|
|
@@ -132,20 +130,21 @@
|
|
|
132
130
|
if (clickedElement) {
|
|
133
131
|
const [rowString, columnId] = clickedElement;
|
|
134
132
|
const row = parseInt(rowString);
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
133
|
+
Promise.all([tableContext.focusedColumnIds, tableContext.focusedRowIndices])
|
|
134
|
+
.then(([focusedColumnIds, focusedRowIndices]) => {
|
|
135
|
+
if (!focusedColumnIds.has(columnId) || !focusedRowIndices.has(row)) {
|
|
136
|
+
const columnIndex = tableContext.columnDefs.find((it) => it.id === columnId)?.index;
|
|
137
|
+
|
|
138
|
+
if (columnIndex) {
|
|
139
|
+
tableContext.moveFocus({
|
|
140
|
+
column: columnIndex,
|
|
141
|
+
row,
|
|
142
|
+
id: columnId,
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
})
|
|
147
|
+
.catch(devCatch);
|
|
149
148
|
}
|
|
150
149
|
|
|
151
150
|
// this may not exist in http contexts
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { DateInputDef } from './Definitions/Accessors/DateInputDef.svelte.js';
|
|
2
|
-
export interface DateColumn<T extends object> {
|
|
2
|
+
export interface DateColumn<T extends object, in FilterValueType, out SelectValueType> {
|
|
3
3
|
id: string;
|
|
4
|
-
columnDef: DateInputDef<T>;
|
|
4
|
+
columnDef: DateInputDef<T, FilterValueType, SelectValueType>;
|
|
5
5
|
getCanSort: () => boolean;
|
|
6
6
|
getToggleSortingHandler: () => (e: MouseEvent) => void;
|
|
7
7
|
getIsSorted: () => 'asc' | 'desc' | 'none';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Row } from '../Context/Row.js';
|
|
2
2
|
import type { DateColumn } from './DateColumn.js';
|
|
3
|
-
export interface DateTableCell<T extends object> {
|
|
4
|
-
column: DateColumn<T>;
|
|
3
|
+
export interface DateTableCell<T extends object, in FilterValueType, out SelectValueType> {
|
|
4
|
+
column: DateColumn<T, FilterValueType, SelectValueType>;
|
|
5
5
|
row: Row<T>;
|
|
6
6
|
id: string;
|
|
7
7
|
getValue: () => unknown;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { Validity } from '../../../../../Types/Internal/Validity.js';
|
|
2
2
|
import type { ValidityWrapper } from '../../../../../Types/Internal/ValidityWrapper.js';
|
|
3
|
-
export type ValidationFn<T> = (item: T, isSelected: boolean) => Validity | Promise<Validity | ValidityWrapper> | ValidityWrapper;
|
|
3
|
+
export type ValidationFn<T> = (item: T, isSelected: Promise<boolean>) => Validity | Promise<Validity | ValidityWrapper> | ValidityWrapper;
|
|
@@ -28,6 +28,5 @@ export interface ITable<T extends object> {
|
|
|
28
28
|
getRightVisibleLeafColumns: () => Array<Column<T>>;
|
|
29
29
|
getCenterVisibleLeafColumns: () => Array<Column<T>>;
|
|
30
30
|
onColumnVisibilityChange: OnChangeFn<VisibilityState>;
|
|
31
|
-
onColumnSizingChange: OnChangeFn<ColumnSizingState>;
|
|
32
31
|
onColumnFiltersChange: OnChangeFn<ColumnFiltersState> | undefined;
|
|
33
32
|
}
|
|
@@ -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>>;
|
|
9
|
+
getRightVisibleCells: () => Array<TableCell<T>>;
|
|
10
|
+
getCenterVisibleCells: () => Array<TableCell<T>>;
|
|
11
11
|
}
|
|
@@ -73,14 +73,11 @@ export declare class TableContext<T extends object, RowIdType extends Primitive>
|
|
|
73
73
|
private _selectedPreset;
|
|
74
74
|
get selectedPreset(): ColumnDefSet<T> | undefined;
|
|
75
75
|
set selectedPreset(v: ColumnDefSet<T> | undefined);
|
|
76
|
-
private
|
|
77
|
-
|
|
78
|
-
set focusedRowIndexIds(v: SvelteSet<number>);
|
|
76
|
+
private readonly _pageColData;
|
|
77
|
+
readonly focusedRowIndices: Promise<SvelteSet<number>>;
|
|
79
78
|
private readonly _highlightedItems;
|
|
80
79
|
get highlightedItems(): SvelteMap<Awaited<unknown>, T>;
|
|
81
|
-
|
|
82
|
-
get focusedColumnIds(): SvelteSet<string>;
|
|
83
|
-
set focusedColumnIds(v: SvelteSet<string>);
|
|
80
|
+
readonly focusedColumnIds: Promise<SvelteSet<string>>;
|
|
84
81
|
private _isMousingDown;
|
|
85
82
|
get isMousingDown(): boolean;
|
|
86
83
|
set isMousingDown(v: boolean);
|
|
@@ -132,27 +129,26 @@ export declare class TableContext<T extends object, RowIdType extends Primitive>
|
|
|
132
129
|
private _hasHighlightedItems;
|
|
133
130
|
get hasHighlightedItems(): boolean;
|
|
134
131
|
private _selectedItems;
|
|
135
|
-
get selectedItems(): SvelteMap<
|
|
136
|
-
private set selectedItems(value);
|
|
132
|
+
get selectedItems(): SvelteMap<RowIdType, T>;
|
|
137
133
|
private _invalidValues;
|
|
138
|
-
get invalidValues(): SvelteMap<
|
|
139
|
-
set invalidValues(v: SvelteMap<
|
|
134
|
+
get invalidValues(): SvelteMap<RowIdType, T>;
|
|
135
|
+
set invalidValues(v: SvelteMap<RowIdType, T>);
|
|
140
136
|
private _hasInvalidSelectedItems;
|
|
141
137
|
get hasInvalidSelectedItems(): boolean;
|
|
142
138
|
private set hasInvalidSelectedItems(value);
|
|
143
139
|
private columnDefsById;
|
|
144
140
|
private readonly getSortingFn;
|
|
145
|
-
private _filterTimer;
|
|
146
|
-
private get filterTimer();
|
|
147
|
-
private set filterTimer(value);
|
|
148
141
|
private _filteredIndices;
|
|
149
142
|
get filteredIndices(): ReadonlyArray<number>;
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
readonly sortedData: Promise<
|
|
143
|
+
readonly filteredData: Promise<T[]>;
|
|
144
|
+
private sortedDataAbortController;
|
|
145
|
+
readonly sortedData: Promise<T[]>;
|
|
153
146
|
readonly sortedRowModel: Promise<RowModel<T>>;
|
|
154
|
-
|
|
147
|
+
private CurrentPageDataAbortController;
|
|
148
|
+
readonly currentPageData: Promise<T[]>;
|
|
155
149
|
readonly originalRowIndices: Promise<ReadonlyMap<unknown, number>>;
|
|
150
|
+
private rowsPromiseAbortController;
|
|
151
|
+
private rowsPromise;
|
|
156
152
|
readonly paginationRowModel: Promise<RowModel<T>>;
|
|
157
153
|
readonly selectionContains: (item: T) => Promise<boolean>;
|
|
158
154
|
readonly addInvalidValue: (item: T) => Promise<void>;
|
|
@@ -160,8 +156,9 @@ export declare class TableContext<T extends object, RowIdType extends Primitive>
|
|
|
160
156
|
readonly setOpenModalCoordinates: (coordinates: CellCoordinatesWithoutColumn | null) => void;
|
|
161
157
|
readonly toggleHighlightedRow: (item: T) => Promise<void>;
|
|
162
158
|
readonly resetHighlightedRows: () => void;
|
|
163
|
-
readonly toggleSelected: (item: T
|
|
164
|
-
|
|
159
|
+
readonly toggleSelected: (item: T) => Promise<void>;
|
|
160
|
+
readonly setSelected: (item: T, selected: boolean) => Promise<void>;
|
|
161
|
+
setSelectionMap: (set: SvelteMap<RowIdType, T>) => void;
|
|
165
162
|
readonly updateSelectedItems: () => Promise<void>;
|
|
166
163
|
readonly resetSelectedItems: () => void;
|
|
167
164
|
private lastIncrement;
|
|
@@ -175,7 +172,6 @@ export declare class TableContext<T extends object, RowIdType extends Primitive>
|
|
|
175
172
|
readonly setColumnPinning: (updater: Updater<ColumnPinningState>) => void;
|
|
176
173
|
updateFilters: OnChangeFn<ColumnFiltersState> | undefined;
|
|
177
174
|
updateVisibility: OnChangeFn<VisibilityState>;
|
|
178
|
-
updateColumnSizing: OnChangeFn<ColumnSizingState>;
|
|
179
175
|
readonly table: ITable<T>;
|
|
180
176
|
readonly lastPage: number;
|
|
181
177
|
readonly measureHeaderWidth: (columnDef: ColumnDef<T>) => number;
|
|
@@ -223,7 +219,6 @@ export declare class TableContext<T extends object, RowIdType extends Primitive>
|
|
|
223
219
|
private _updateLocalStorageSettings;
|
|
224
220
|
private _moveFocusEndRow;
|
|
225
221
|
private _moveFocusRow;
|
|
226
|
-
private _recalculateFocusedElements;
|
|
227
222
|
private getHighlightedRowData;
|
|
228
223
|
private getFocusElementData;
|
|
229
224
|
private updateDefsBasedOnPinning;
|
|
@@ -233,6 +228,5 @@ export declare class TableContext<T extends object, RowIdType extends Primitive>
|
|
|
233
228
|
private _setNewPinningState;
|
|
234
229
|
readonly getToggleSortingHandler: (def: ColumnDef<T>) => () => void;
|
|
235
230
|
private reassignDefsToPresets;
|
|
236
|
-
private filteringLoop;
|
|
237
231
|
}
|
|
238
232
|
export declare function isSearchable<T extends object, FilterValueType, FilterOptionsType, CD extends ColumnDef<T, FilterValueType, FilterOptionsType>>(def: CD): def is CD & HasCustomFilterFunction;
|