@lavalogic/scoria 0.8.0 → 0.8.2
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 +7 -13
- package/dist/Components/Table/ColumnDefinitions/ExampleItemColumnDef.svelte.js +7 -0
- package/dist/Components/Table/Misc/FilterInput.svelte +22 -22
- package/dist/Components/Table/Misc/FilterInput.svelte.d.ts +0 -5
- package/dist/Components/Table/Types/Context/TableContext.svelte.js +58 -3
- package/package.json +1 -1
|
@@ -14,11 +14,7 @@
|
|
|
14
14
|
import { getContext, untrack, onMount } from 'svelte';
|
|
15
15
|
import { cubicOut } from 'svelte/easing';
|
|
16
16
|
import { fade } from 'svelte/transition';
|
|
17
|
-
import {
|
|
18
|
-
searchableTypes,
|
|
19
|
-
numberDateFilterTypes,
|
|
20
|
-
stringFilterTypes
|
|
21
|
-
} from '../Misc/FilterInput.svelte';
|
|
17
|
+
import { numberDateFilterTypes, stringFilterTypes } from '../Misc/FilterInput.svelte';
|
|
22
18
|
import { quickFilterContextIdentifier } from '../Table.svelte';
|
|
23
19
|
import { TableContext } from '../Types/Context/TableContext.svelte.js';
|
|
24
20
|
import { CustomFilterType } from '../Types/Filtering/CustomFilterType.js';
|
|
@@ -28,10 +24,8 @@
|
|
|
28
24
|
import type { SelectOption } from '../../../Types/Internal/SelectOption.js';
|
|
29
25
|
import type { Column } from '../Types/Columns/Column.js';
|
|
30
26
|
|
|
31
|
-
import { AbstractDisplayDef } from '../Types/Columns/Definitions/Display/AbstractDisplayDef.svelte.js';
|
|
32
27
|
import { DateInputDef } from '../Types/Columns/Definitions/Accessors/DateInputDef.svelte.js';
|
|
33
28
|
import { SelectDef } from '../Types/Columns/Definitions/Accessors/SelectDef.svelte.js';
|
|
34
|
-
import { AccessorDef } from '../Types/Columns/Definitions/Accessors/AccessorDef.svelte.js';
|
|
35
29
|
import { NumberInputDef } from '../Types/Columns/Definitions/Accessors/NumberInputDef.svelte.js';
|
|
36
30
|
import { dev } from '$app/environment';
|
|
37
31
|
import { QuerySelect } from '../../../index.js';
|
|
@@ -56,14 +50,14 @@
|
|
|
56
50
|
|
|
57
51
|
const hasFilterFn = $derived(!!def.filterFn && typeof def.filterFn === 'function');
|
|
58
52
|
|
|
59
|
-
const hasAcceptableColumnType = $derived(
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
);
|
|
53
|
+
// const hasAcceptableColumnType = $derived(
|
|
54
|
+
// (def instanceof AccessorDef && searchableTypes.has(def.accessorType)) ||
|
|
55
|
+
// (def instanceof AbstractDisplayDef && searchableTypes.has(def.displayType))
|
|
56
|
+
// );
|
|
63
57
|
|
|
64
58
|
const isSearchable = $derived(
|
|
65
|
-
def.allowFiltering != false &&
|
|
66
|
-
|
|
59
|
+
def.allowFiltering != false && (hasFilterFn || customFilters?.has(def.id) == true)
|
|
60
|
+
// ((hasFilterFn && hasAcceptableColumnType) || customFilters?.has(def.id) == true) // removed hasAcceptableColumnType due to it being redundant
|
|
67
61
|
);
|
|
68
62
|
|
|
69
63
|
const isNumeric = $derived(
|
|
@@ -35,6 +35,13 @@ export class ExampleItemColumnDef {
|
|
|
35
35
|
},
|
|
36
36
|
modal
|
|
37
37
|
}),
|
|
38
|
+
new DisplayDef({
|
|
39
|
+
id: 'account_id',
|
|
40
|
+
header: 'Account',
|
|
41
|
+
accessorFn: (item) => `Unknown (id ${item.id})`,
|
|
42
|
+
filterValueType: 'Number',
|
|
43
|
+
debug: true
|
|
44
|
+
}),
|
|
38
45
|
new DisplayDef({
|
|
39
46
|
header: 'ID',
|
|
40
47
|
id: 'id',
|
|
@@ -55,22 +55,22 @@
|
|
|
55
55
|
{ value: NumberDateFilterMode.null, label: 'Is null' }
|
|
56
56
|
];
|
|
57
57
|
|
|
58
|
-
export const searchableColumnTypes = new Set<ColumnType | undefined>([
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
]);
|
|
64
|
-
export const searchableTypes = new Set<AccessorType | DisplayType | undefined>([
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
]);
|
|
58
|
+
// export const searchableColumnTypes = new Set<ColumnType | undefined>([
|
|
59
|
+
// ColumnType.Accessor,
|
|
60
|
+
// ColumnType.Display,
|
|
61
|
+
// ColumnType.FilterOnly
|
|
62
|
+
// //ColumnType.Custom,
|
|
63
|
+
// ]);
|
|
64
|
+
// export const searchableTypes = new Set<AccessorType | DisplayType | undefined>([
|
|
65
|
+
// AccessorType.Text,
|
|
66
|
+
// AccessorType.Number,
|
|
67
|
+
// AccessorType.Date,
|
|
68
|
+
// // AccessorType.Checkbox,
|
|
69
|
+
// DisplayType.Normal,
|
|
70
|
+
// DisplayType.Bubbles,
|
|
71
|
+
// DisplayType.Progress,
|
|
72
|
+
// DisplayType.Icon
|
|
73
|
+
// ]);
|
|
74
74
|
|
|
75
75
|
export interface FilterInputProps<T extends object> {
|
|
76
76
|
def: ColumnDef<T>;
|
|
@@ -100,14 +100,14 @@
|
|
|
100
100
|
|
|
101
101
|
const hasFilterFn = $derived(!!def.filterFn && typeof def.filterFn === 'function');
|
|
102
102
|
|
|
103
|
-
const hasAcceptableColumnType = $derived(
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
);
|
|
103
|
+
// const hasAcceptableColumnType = $derived(
|
|
104
|
+
// (def instanceof AccessorDef && searchableTypes.has(def.accessorType)) ||
|
|
105
|
+
// (def instanceof AbstractDisplayDef && searchableTypes.has(def.displayType))
|
|
106
|
+
// );
|
|
107
107
|
|
|
108
108
|
const isSearchable = $derived(
|
|
109
|
-
def.allowFiltering != false &&
|
|
110
|
-
|
|
109
|
+
def.allowFiltering != false && (hasFilterFn || customFilters?.has(def.id) == true)
|
|
110
|
+
// ((hasFilterFn && hasAcceptableColumnType) || customFilters?.has(def.id) == true) // removed hasAcceptableColumnType due to it being redundant
|
|
111
111
|
);
|
|
112
112
|
|
|
113
113
|
const hasQuery = $derived(isRemoteSelect && customFilter?.query);
|
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
import { ColumnType } from '../Types/Columns/ColumnType.js';
|
|
2
|
-
import { AccessorType } from '../Types/Columns/Definitions/Accessors/AccessorType.js';
|
|
3
|
-
import { DisplayType } from '../Types/Columns/DisplayType.js';
|
|
4
1
|
import type { CustomRemoteFilters } from '../Types/Filtering/CustomRemoteFilters.js';
|
|
5
2
|
import { NumberDateFilterMode } from '../Types/Filtering/NumberDateFilterMode.js';
|
|
6
3
|
import { StringFilterMode } from '../Types/Filtering/StringFilterMode.js';
|
|
@@ -13,8 +10,6 @@ export declare const numberDateFilterTypes: {
|
|
|
13
10
|
value: NumberDateFilterMode;
|
|
14
11
|
label: string;
|
|
15
12
|
}[];
|
|
16
|
-
export declare const searchableColumnTypes: Set<ColumnType | undefined>;
|
|
17
|
-
export declare const searchableTypes: Set<AccessorType | DisplayType | undefined>;
|
|
18
13
|
export interface FilterInputProps<T extends object> {
|
|
19
14
|
def: ColumnDef<T>;
|
|
20
15
|
customFilters?: CustomRemoteFilters | undefined;
|
|
@@ -1919,8 +1919,14 @@ export class TableContext {
|
|
|
1919
1919
|
const adjustedDefsPromises = this.defaultColumnDefs.defs.map(async (def) => {
|
|
1920
1920
|
if (def instanceof AccessorDef) {
|
|
1921
1921
|
if (def.allowFiltering == false) {
|
|
1922
|
+
if (def.debug) {
|
|
1923
|
+
console.log(`${def.id}: does not allow filtering`, def);
|
|
1924
|
+
}
|
|
1922
1925
|
return def;
|
|
1923
1926
|
}
|
|
1927
|
+
if (def.debug) {
|
|
1928
|
+
console.log(`${def.id}: is an accessor def`, def);
|
|
1929
|
+
}
|
|
1924
1930
|
if (!('minSize' in def) || !def.minSize) {
|
|
1925
1931
|
if (typeof def.header === 'string') {
|
|
1926
1932
|
const minWidth = this.measureHeaderWidth(def);
|
|
@@ -1934,55 +1940,104 @@ export class TableContext {
|
|
|
1934
1940
|
// code smell...
|
|
1935
1941
|
if (def instanceof TextInputDef) {
|
|
1936
1942
|
def.filterFn = this.stringFilter;
|
|
1943
|
+
if (def.debug) {
|
|
1944
|
+
console.log(`${def.id}: given a string filter`, def);
|
|
1945
|
+
}
|
|
1937
1946
|
}
|
|
1938
1947
|
else if (def instanceof NumberInputDef) {
|
|
1939
1948
|
def.filterFn = this.numberFilter;
|
|
1949
|
+
if (def.debug) {
|
|
1950
|
+
console.log(`${def.id}: given a number filter`, def);
|
|
1951
|
+
}
|
|
1940
1952
|
}
|
|
1941
1953
|
else if (def instanceof SelectDef) {
|
|
1942
1954
|
def.filterFn = this.selectFilter;
|
|
1955
|
+
if (def.debug) {
|
|
1956
|
+
console.log(`${def.id}: given a select filter`, def);
|
|
1957
|
+
}
|
|
1943
1958
|
}
|
|
1944
1959
|
else if (def instanceof CheckboxDef) {
|
|
1945
1960
|
def.filterFn = this.boolFilter;
|
|
1961
|
+
if (def.debug) {
|
|
1962
|
+
console.log(`${def.id}: given a bool filter`, def);
|
|
1963
|
+
}
|
|
1946
1964
|
}
|
|
1947
1965
|
else if (def instanceof DateInputDef) {
|
|
1948
1966
|
def.filterFn = this.dateFilter;
|
|
1967
|
+
if (def.debug) {
|
|
1968
|
+
console.log(`${def.id}: given a date filter`, def);
|
|
1969
|
+
}
|
|
1970
|
+
}
|
|
1971
|
+
else if (def.debug) {
|
|
1972
|
+
console.log(`${def.id}: was not a text,number,select,checkbox,or date accessor, and was not given a filter`, def);
|
|
1949
1973
|
}
|
|
1950
1974
|
}
|
|
1951
|
-
else if (
|
|
1952
|
-
|
|
1953
|
-
|
|
1975
|
+
else if (
|
|
1976
|
+
// this.paginationRepo?.paginationType == PaginationType.Local &&
|
|
1977
|
+
!def.filterFn &&
|
|
1978
|
+
def.allowFiltering !== false) {
|
|
1954
1979
|
if (def instanceof DisplayDef) {
|
|
1980
|
+
if (def.debug) {
|
|
1981
|
+
console.log(`${def.id}: is a display def`, def);
|
|
1982
|
+
}
|
|
1955
1983
|
switch (def.filterValueType) {
|
|
1956
1984
|
case undefined:
|
|
1957
1985
|
case 'String': {
|
|
1958
1986
|
def.filterFn = this.stringFilter;
|
|
1987
|
+
if (def.debug) {
|
|
1988
|
+
console.log(`${def.id}: given a string filter`, def);
|
|
1989
|
+
}
|
|
1959
1990
|
break;
|
|
1960
1991
|
}
|
|
1961
1992
|
case 'Bool': {
|
|
1962
1993
|
def.filterFn = this.boolFilter;
|
|
1994
|
+
if (def.debug) {
|
|
1995
|
+
console.log(`${def.id}: given a bool filter`, def);
|
|
1996
|
+
}
|
|
1963
1997
|
break;
|
|
1964
1998
|
}
|
|
1965
1999
|
case 'Date': {
|
|
1966
2000
|
def.filterFn = this.dateFilter;
|
|
2001
|
+
if (def.debug) {
|
|
2002
|
+
console.log(`${def.id}: given a date filter`, def);
|
|
2003
|
+
}
|
|
1967
2004
|
break;
|
|
1968
2005
|
}
|
|
1969
2006
|
case 'Number': {
|
|
1970
2007
|
def.filterFn = this.numberFilter;
|
|
2008
|
+
if (def.debug) {
|
|
2009
|
+
console.log(`${def.id}: given a number filter`, def);
|
|
2010
|
+
}
|
|
1971
2011
|
break;
|
|
1972
2012
|
}
|
|
1973
2013
|
case 'Select': {
|
|
1974
2014
|
def.filterFn = this.selectFilter;
|
|
2015
|
+
if (def.debug) {
|
|
2016
|
+
console.log(`${def.id}: given a select filter`, def);
|
|
2017
|
+
}
|
|
1975
2018
|
break;
|
|
1976
2019
|
}
|
|
1977
2020
|
}
|
|
1978
2021
|
}
|
|
1979
2022
|
else if (def instanceof BubbleDef) {
|
|
1980
2023
|
def.filterFn = this.stringFilter;
|
|
2024
|
+
if (def.debug) {
|
|
2025
|
+
console.log(`${def.id}: is a bubble def. given a string filter`, def);
|
|
2026
|
+
}
|
|
1981
2027
|
}
|
|
1982
2028
|
else if (def instanceof ProgressBarDef) {
|
|
1983
2029
|
def.filterFn = this.numberFilter;
|
|
2030
|
+
if (def.debug) {
|
|
2031
|
+
console.log(`${def.id}: is a progress def. given a number filter`, def);
|
|
2032
|
+
}
|
|
2033
|
+
}
|
|
2034
|
+
else if (def.debug) {
|
|
2035
|
+
console.log(`${def.id}: is not a display, bubble, or progressbar def, and was not given a filter`, def);
|
|
1984
2036
|
}
|
|
1985
2037
|
}
|
|
2038
|
+
else if (def.debug) {
|
|
2039
|
+
console.log(`${def.id}: no filtering matched`, def);
|
|
2040
|
+
}
|
|
1986
2041
|
return def;
|
|
1987
2042
|
});
|
|
1988
2043
|
const adjustedDefs = (await Promise.all(adjustedDefsPromises))
|