ag-grid-url-sync 0.4.1 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +143 -50
- package/dist/core/ag-grid-url-sync.d.ts +19 -5
- package/dist/core/ag-grid-url-sync.js +28 -17
- package/dist/core/ag-grid-url-sync.js.map +1 -1
- package/dist/core/grid-integration.d.ts +27 -1
- package/dist/core/grid-integration.js +161 -129
- package/dist/core/grid-integration.js.map +1 -1
- package/dist/core/index.d.ts +2 -1
- package/dist/core/index.js +2 -1
- package/dist/core/index.js.map +1 -1
- package/dist/core/individual-params.d.ts +26 -0
- package/dist/core/individual-params.js +236 -0
- package/dist/core/individual-params.js.map +1 -0
- package/dist/core/issue-columns.d.ts +2 -0
- package/dist/core/issue-columns.js +11 -0
- package/dist/core/issue-columns.js.map +1 -0
- package/dist/core/issues.d.ts +34 -0
- package/dist/core/issues.js +58 -0
- package/dist/core/issues.js.map +1 -0
- package/dist/core/operators.d.ts +189 -0
- package/dist/core/operators.js +60 -0
- package/dist/core/operators.js.map +1 -0
- package/dist/core/options.d.ts +21 -0
- package/dist/core/options.js +21 -0
- package/dist/core/options.js.map +1 -0
- package/dist/core/schemas.d.ts +51 -0
- package/dist/core/schemas.js +59 -0
- package/dist/core/schemas.js.map +1 -0
- package/dist/core/serialization/formats.d.ts +8 -9
- package/dist/core/serialization/formats.js +70 -47
- package/dist/core/serialization/formats.js.map +1 -1
- package/dist/core/serialization/grouped.d.ts +13 -11
- package/dist/core/serialization/grouped.js +24 -17
- package/dist/core/serialization/grouped.js.map +1 -1
- package/dist/core/to-error.d.ts +5 -0
- package/dist/core/to-error.js +4 -0
- package/dist/core/to-error.js.map +1 -0
- package/dist/core/types.d.ts +172 -33
- package/dist/core/types.js +35 -108
- package/dist/core/types.js.map +1 -1
- package/dist/core/url-generator.d.ts +10 -7
- package/dist/core/url-generator.js +29 -121
- package/dist/core/url-generator.js.map +1 -1
- package/dist/core/url-parser.d.ts +19 -7
- package/dist/core/url-parser.js +31 -239
- package/dist/core/url-parser.js.map +1 -1
- package/dist/core/validation.d.ts +21 -14
- package/dist/core/validation.js +58 -54
- package/dist/core/validation.js.map +1 -1
- package/dist/core/view-storage.js +21 -19
- package/dist/core/view-storage.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/react/types.d.ts +36 -11
- package/dist/react/use-ag-grid-url-sync.js +151 -97
- package/dist/react/use-ag-grid-url-sync.js.map +1 -1
- package/package.json +35 -16
|
@@ -1,17 +1,26 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
1
|
+
import * as v from 'valibot';
|
|
2
|
+
import { InvalidFilterError, NUMBER_FILTER_OPERATIONS, isDateFilterOperation, isNumberFilterOperation, isTextFilterOperation } from './types.js';
|
|
3
|
+
import { operatorById, operatorFromAgGrid } from './operators.js';
|
|
4
|
+
import { AgGridFilterSchema, JsonObjectSchema } from './schemas.js';
|
|
5
|
+
import { reportIssue, toIssue } from './issues.js';
|
|
6
|
+
import { readNumber } from './validation.js';
|
|
7
|
+
import { resolveOptions } from './options.js';
|
|
8
|
+
function toAgGridOperation(operation) {
|
|
9
|
+
return operatorById(operation)?.agGrid ?? null;
|
|
10
|
+
}
|
|
11
|
+
function hasGridValue(value) {
|
|
12
|
+
return value !== undefined && value !== null && String(value).trim() !== '';
|
|
13
|
+
}
|
|
14
|
+
function gridNumber(value, column) {
|
|
15
|
+
if (!v.is(v.string(), value))
|
|
16
|
+
return Number(value);
|
|
17
|
+
const number = readNumber(value);
|
|
18
|
+
return number instanceof InvalidFilterError
|
|
19
|
+
? new InvalidFilterError(`${number.message} (column '${column}')`, undefined, {
|
|
20
|
+
code: 'INVALID_NUMBER',
|
|
21
|
+
column
|
|
22
|
+
})
|
|
23
|
+
: number;
|
|
15
24
|
}
|
|
16
25
|
function toIsoDateString(val) {
|
|
17
26
|
if (!val)
|
|
@@ -19,15 +28,6 @@ function toIsoDateString(val) {
|
|
|
19
28
|
const match = val.match(/^(\d{4}-\d{2}-\d{2})/);
|
|
20
29
|
return match?.[1] ? match[1] : val || '';
|
|
21
30
|
}
|
|
22
|
-
function isTextFilterOperation(operation) {
|
|
23
|
-
return TEXT_FILTER_OPERATIONS.includes(operation);
|
|
24
|
-
}
|
|
25
|
-
function isNumberFilterOperation(operation) {
|
|
26
|
-
return NUMBER_FILTER_OPERATIONS.includes(operation);
|
|
27
|
-
}
|
|
28
|
-
function isDateFilterOperation(operation) {
|
|
29
|
-
return DATE_FILTER_OPERATIONS.includes(operation);
|
|
30
|
-
}
|
|
31
31
|
export function detectColumnFilterType(gridApi, columnId) {
|
|
32
32
|
try {
|
|
33
33
|
const column = gridApi.getColumn(columnId);
|
|
@@ -52,90 +52,122 @@ export function detectColumnFilterType(gridApi, columnId) {
|
|
|
52
52
|
return 'text';
|
|
53
53
|
}
|
|
54
54
|
}
|
|
55
|
-
export function getFilterModel(
|
|
55
|
+
export function getFilterModel(source, options) {
|
|
56
|
+
if ('gridApi' in source) {
|
|
57
|
+
return readGridFilters(source.gridApi, resolveOptions(source));
|
|
58
|
+
}
|
|
59
|
+
return readGridFilters(source, resolveOptions(options));
|
|
60
|
+
}
|
|
61
|
+
function readGridFilters(gridApi, options) {
|
|
62
|
+
let model;
|
|
56
63
|
try {
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
64
|
+
model = gridApi.getFilterModel();
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
reportIssue(options, toIssue(error, 'GRID_ERROR'));
|
|
68
|
+
return {};
|
|
69
|
+
}
|
|
70
|
+
const filters = new Map();
|
|
71
|
+
if (!v.is(JsonObjectSchema, model)) {
|
|
72
|
+
return {};
|
|
73
|
+
}
|
|
74
|
+
for (const [column, entry] of Object.entries(model)) {
|
|
75
|
+
const parsed = v.safeParse(AgGridFilterSchema, entry);
|
|
76
|
+
if (!parsed.success)
|
|
77
|
+
continue;
|
|
78
|
+
const filter = parsed.output;
|
|
79
|
+
if (filter.filterType === 'text') {
|
|
80
|
+
const operator = operatorFromAgGrid('text', filter.type);
|
|
81
|
+
if (operator && isTextFilterOperation(operator.id)) {
|
|
82
|
+
filters.set(column, {
|
|
83
|
+
filterType: 'text',
|
|
84
|
+
type: operator.id,
|
|
85
|
+
filter: String(filter.filter || '')
|
|
86
|
+
});
|
|
87
|
+
}
|
|
61
88
|
}
|
|
62
|
-
|
|
63
|
-
|
|
89
|
+
else if (filter.filterType === 'number') {
|
|
90
|
+
const operator = operatorFromAgGrid('number', filter.type);
|
|
91
|
+
const internalOperation = operator?.id;
|
|
92
|
+
if (!operator ||
|
|
93
|
+
!internalOperation ||
|
|
94
|
+
!isNumberFilterOperation(internalOperation)) {
|
|
95
|
+
reportIssue(options, new InvalidFilterError(`Unknown number filter operation '${filter.type}' for column '${column}'. ` +
|
|
96
|
+
`Supported operations: ${NUMBER_FILTER_OPERATIONS.map(toAgGridOperation).join(', ')}`, undefined, { code: 'INVALID_PARAM', column }));
|
|
64
97
|
continue;
|
|
65
|
-
const { filterType, type, filter: value, filterTo, dateFrom, dateTo } = filter;
|
|
66
|
-
if (filterType === 'text') {
|
|
67
|
-
const internalOperation = REVERSE_AG_GRID_OPERATION_NAMES[type];
|
|
68
|
-
if (internalOperation && isTextFilterOperation(internalOperation)) {
|
|
69
|
-
filterState[column] = {
|
|
70
|
-
filterType: 'text',
|
|
71
|
-
type: internalOperation,
|
|
72
|
-
filter: String(value || '')
|
|
73
|
-
};
|
|
74
|
-
}
|
|
75
98
|
}
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
:
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
99
|
+
if (operator.arity === 0) {
|
|
100
|
+
filters.set(column, {
|
|
101
|
+
filterType: 'number',
|
|
102
|
+
type: internalOperation,
|
|
103
|
+
filter: 0
|
|
104
|
+
});
|
|
105
|
+
continue;
|
|
106
|
+
}
|
|
107
|
+
if (!hasGridValue(filter.filter) ||
|
|
108
|
+
(operator.arity === 2 && !hasGridValue(filter.filterTo))) {
|
|
109
|
+
continue;
|
|
110
|
+
}
|
|
111
|
+
const numericValue = gridNumber(filter.filter, column);
|
|
112
|
+
const numericTo = operator.arity === 2 && hasGridValue(filter.filterTo)
|
|
113
|
+
? gridNumber(filter.filterTo, column)
|
|
114
|
+
: undefined;
|
|
115
|
+
if (numericValue instanceof InvalidFilterError) {
|
|
116
|
+
reportIssue(options, numericValue);
|
|
117
|
+
continue;
|
|
118
|
+
}
|
|
119
|
+
if (numericTo instanceof InvalidFilterError) {
|
|
120
|
+
reportIssue(options, numericTo);
|
|
121
|
+
continue;
|
|
122
|
+
}
|
|
123
|
+
if (isNaN(numericValue)) {
|
|
124
|
+
continue;
|
|
125
|
+
}
|
|
126
|
+
filters.set(column, internalOperation === 'inRange' && numericTo !== undefined
|
|
127
|
+
? {
|
|
128
|
+
filterType: 'number',
|
|
129
|
+
type: internalOperation,
|
|
130
|
+
filter: numericValue,
|
|
131
|
+
filterTo: numericTo
|
|
86
132
|
}
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
133
|
+
: {
|
|
134
|
+
filterType: 'number',
|
|
135
|
+
type: internalOperation,
|
|
136
|
+
filter: numericValue
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
const operator = operatorFromAgGrid('date', filter.type);
|
|
141
|
+
const mappedOperation = operator?.id;
|
|
142
|
+
if (operator &&
|
|
143
|
+
mappedOperation &&
|
|
144
|
+
isDateFilterOperation(mappedOperation)) {
|
|
145
|
+
if (operator.arity === 0) {
|
|
146
|
+
filters.set(column, {
|
|
147
|
+
filterType: 'date',
|
|
148
|
+
type: mappedOperation,
|
|
149
|
+
filter: ''
|
|
150
|
+
});
|
|
151
|
+
continue;
|
|
102
152
|
}
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
greaterThanOrEqual: 'dateAfterOrEqual',
|
|
112
|
-
inRange: 'dateRange'
|
|
113
|
-
};
|
|
114
|
-
mappedOperation = type
|
|
115
|
-
? AG_GRID_TO_DATE_OPERATION_MAP[type] || internalOperation
|
|
116
|
-
: internalOperation;
|
|
117
|
-
if (mappedOperation && isDateFilterOperation(mappedOperation)) {
|
|
118
|
-
const dateFilter = {
|
|
153
|
+
const from = toIsoDateString(filter.dateFrom || String(filter.filter || ''));
|
|
154
|
+
const to = operator.arity === 2
|
|
155
|
+
? toIsoDateString(filter.dateTo ?? undefined)
|
|
156
|
+
: '';
|
|
157
|
+
if (!from || (operator.arity === 2 && !to))
|
|
158
|
+
continue;
|
|
159
|
+
filters.set(column, operator.arity === 2
|
|
160
|
+
? {
|
|
119
161
|
filterType: 'date',
|
|
120
162
|
type: mappedOperation,
|
|
121
|
-
filter:
|
|
122
|
-
|
|
123
|
-
if (mappedOperation === 'dateRange' && dateTo) {
|
|
124
|
-
;
|
|
125
|
-
dateFilter.filterTo = toIsoDateString(dateTo);
|
|
163
|
+
filter: from,
|
|
164
|
+
filterTo: to
|
|
126
165
|
}
|
|
127
|
-
|
|
128
|
-
}
|
|
166
|
+
: { filterType: 'date', type: mappedOperation, filter: from });
|
|
129
167
|
}
|
|
130
168
|
}
|
|
131
|
-
return filterState;
|
|
132
|
-
}
|
|
133
|
-
catch (error) {
|
|
134
|
-
if (config.onParseError) {
|
|
135
|
-
config.onParseError(error);
|
|
136
|
-
}
|
|
137
|
-
return {};
|
|
138
169
|
}
|
|
170
|
+
return Object.fromEntries(filters);
|
|
139
171
|
}
|
|
140
172
|
function convertToAGGridFilter(filter) {
|
|
141
173
|
if (filter.filterType === 'date') {
|
|
@@ -155,23 +187,18 @@ function convertToAGGridFilter(filter) {
|
|
|
155
187
|
dateTo: null
|
|
156
188
|
};
|
|
157
189
|
}
|
|
158
|
-
const dateOperationMapping = {
|
|
159
|
-
dateBefore: 'lessThan',
|
|
160
|
-
dateBeforeOrEqual: 'lessThanOrEqual',
|
|
161
|
-
dateAfter: 'greaterThan',
|
|
162
|
-
dateAfterOrEqual: 'greaterThanOrEqual'
|
|
163
|
-
};
|
|
164
|
-
const agOperation = dateOperationMapping[filter.type] ||
|
|
165
|
-
AG_GRID_OPERATION_NAMES[filter.type];
|
|
166
190
|
return {
|
|
167
191
|
filterType: 'date',
|
|
168
|
-
type:
|
|
192
|
+
type: toAgGridOperation(filter.type),
|
|
169
193
|
dateFrom: filter.filter,
|
|
170
194
|
dateTo: null
|
|
171
195
|
};
|
|
172
196
|
}
|
|
173
197
|
if (filter.filterType === 'number') {
|
|
174
|
-
const agGridOperation =
|
|
198
|
+
const agGridOperation = toAgGridOperation(filter.type);
|
|
199
|
+
if (filter.type === 'blank' || filter.type === 'notBlank') {
|
|
200
|
+
return { filterType: 'number', type: agGridOperation, filter: null };
|
|
201
|
+
}
|
|
175
202
|
if (filter.type === 'inRange') {
|
|
176
203
|
const baseFilter = {
|
|
177
204
|
filterType: 'number',
|
|
@@ -188,39 +215,44 @@ function convertToAGGridFilter(filter) {
|
|
|
188
215
|
filter: filter.filter
|
|
189
216
|
};
|
|
190
217
|
}
|
|
191
|
-
const agGridOperation =
|
|
218
|
+
const agGridOperation = toAgGridOperation(filter.type);
|
|
192
219
|
return {
|
|
193
220
|
filterType: 'text',
|
|
194
221
|
type: agGridOperation,
|
|
195
222
|
filter: filter.filter
|
|
196
223
|
};
|
|
197
224
|
}
|
|
198
|
-
export function applyFilterModel(filterState,
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
}
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
}
|
|
225
|
+
export function applyFilterModel(filterState, target, options) {
|
|
226
|
+
if ('gridApi' in target) {
|
|
227
|
+
writeGridFilters(filterState, target.gridApi, resolveOptions(target));
|
|
228
|
+
return;
|
|
229
|
+
}
|
|
230
|
+
writeGridFilters(filterState, target, resolveOptions(options));
|
|
231
|
+
}
|
|
232
|
+
function writeGridFilters(filterState, gridApi, options) {
|
|
233
|
+
const model = new Map();
|
|
234
|
+
for (const [column, filter] of Object.entries(filterState)) {
|
|
235
|
+
if (!v.is(JsonObjectSchema, filter))
|
|
236
|
+
continue;
|
|
237
|
+
const expectedType = detectColumnFilterType(gridApi, column);
|
|
238
|
+
if (filter.filterType === 'date' && expectedType !== 'date') {
|
|
239
|
+
reportIssue(options, new InvalidFilterError(`Column '${column}' expects a ${expectedType} filter but received a date filter. This may indicate a configuration mismatch in the column definition or filter application.`, undefined, { code: 'TYPE_MISMATCH', column }));
|
|
240
|
+
continue;
|
|
241
|
+
}
|
|
242
|
+
if (filter.filterType === 'number' && expectedType !== 'number') {
|
|
243
|
+
reportIssue(options, new InvalidFilterError(`Column '${column}' expects a ${expectedType} filter but received a number filter. This may indicate a configuration mismatch in the column definition or filter application.`, undefined, { code: 'TYPE_MISMATCH', column }));
|
|
244
|
+
continue;
|
|
245
|
+
}
|
|
246
|
+
const agGridFilter = convertToAGGridFilter(filter);
|
|
247
|
+
if (agGridFilter) {
|
|
248
|
+
model.set(column, agGridFilter);
|
|
217
249
|
}
|
|
218
|
-
|
|
250
|
+
}
|
|
251
|
+
try {
|
|
252
|
+
gridApi.setFilterModel(Object.fromEntries(model));
|
|
219
253
|
}
|
|
220
254
|
catch (error) {
|
|
221
|
-
|
|
222
|
-
config.onParseError(error);
|
|
223
|
-
}
|
|
255
|
+
reportIssue(options, toIssue(error, 'GRID_ERROR'));
|
|
224
256
|
}
|
|
225
257
|
}
|
|
226
258
|
//# sourceMappingURL=grid-integration.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grid-integration.js","sourceRoot":"","sources":["../../src/core/grid-integration.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"grid-integration.js","sourceRoot":"","sources":["../../src/core/grid-integration.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAU5B,OAAO,EACL,kBAAkB,EAClB,wBAAwB,EACxB,qBAAqB,EACrB,uBAAuB,EACvB,qBAAqB,EACtB,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AACjE,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AACnE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAQ7C,SAAS,iBAAiB,CAAC,SAAiB;IAC1C,OAAO,YAAY,CAAC,SAAS,CAAC,EAAE,MAAM,IAAI,IAAI,CAAA;AAChD,CAAC;AAOD,SAAS,YAAY,CACnB,KAAyC;IAEzC,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAA;AAC7E,CAAC;AAOD,SAAS,UAAU,CACjB,KAAsB,EACtB,MAAc;IAEd,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAA;IAElD,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAA;IAEhC,OAAO,MAAM,YAAY,kBAAkB;QACzC,CAAC,CAAC,IAAI,kBAAkB,CACpB,GAAG,MAAM,CAAC,OAAO,aAAa,MAAM,IAAI,EACxC,SAAS,EACT;YACE,IAAI,EAAE,gBAAgB;YACtB,MAAM;SACP,CACF;QACH,CAAC,CAAC,MAAM,CAAA;AACZ,CAAC;AAOD,SAAS,eAAe,CAAC,GAAuB;IAC9C,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAA;IACnB,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAA;IAE/C,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAA;AAC1C,CAAC;AAKD,MAAM,UAAU,sBAAsB,CACpC,OAAgB,EAChB,QAAgB;IAEhB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;QAE1C,IAAI,CAAC,MAAM;YAAE,OAAO,MAAM,CAAA;QAE1B,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,CAAA;QAGjC,IAAI,MAAM,CAAC,MAAM,KAAK,oBAAoB;YAAE,OAAO,MAAM,CAAA;QAEzD,IAAI,MAAM,CAAC,MAAM,KAAK,sBAAsB;YAAE,OAAO,QAAQ,CAAA;QAE7D,IAAI,MAAM,CAAC,MAAM,KAAK,oBAAoB;YAAE,OAAO,MAAM,CAAA;QAGzD,IAAI,MAAM,CAAC,YAAY,KAAK,MAAM;YAAE,OAAO,MAAM,CAAA;QAEjD,IAAI,MAAM,CAAC,YAAY,KAAK,QAAQ;YAAE,OAAO,QAAQ,CAAA;QAErD,IAAI,MAAM,CAAC,YAAY,KAAK,MAAM;YAAE,OAAO,MAAM,CAAA;QAGjD,OAAO,MAAM,CAAA;IACf,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,MAAM,CAAA;IACf,CAAC;AACH,CAAC;AAqBD,MAAM,UAAU,cAAc,CAC5B,MAAgC,EAChC,OAA6B;IAI7B,IAAI,SAAS,IAAI,MAAM,EAAE,CAAC;QACxB,OAAO,eAAe,CAAC,MAAM,CAAC,OAAO,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC,CAAA;IAChE,CAAC;IAED,OAAO,eAAe,CAAC,MAAM,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC,CAAA;AACzD,CAAC;AAED,SAAS,eAAe,CACtB,OAAgB,EAChB,OAAwB;IAIxB,IAAI,KAAc,CAAA;IAElB,IAAI,CAAC;QAEH,KAAK,GAAG,OAAO,CAAC,cAAc,EAAE,CAAA;IAClC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAEf,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAA;QAElD,OAAO,EAAE,CAAA;IACX,CAAC;IAID,MAAM,OAAO,GAAG,IAAI,GAAG,EAAwB,CAAA;IAK/C,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC;QACnC,OAAO,EAAE,CAAA;IACX,CAAC;IAED,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAEpD,MAAM,MAAM,GAAG,CAAC,CAAC,SAAS,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAA;QAErD,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE,SAAQ;QAE7B,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAA;QAG5B,IAAI,MAAM,CAAC,UAAU,KAAK,MAAM,EAAE,CAAC;YAEjC,MAAM,QAAQ,GAAG,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAA;YAExD,IAAI,QAAQ,IAAI,qBAAqB,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;gBACnD,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE;oBAClB,UAAU,EAAE,MAAM;oBAClB,IAAI,EAAE,QAAQ,CAAC,EAAE;oBACjB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;iBACpC,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;aAEI,IAAI,MAAM,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;YAGxC,MAAM,QAAQ,GAAG,kBAAkB,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,CAAA;YAC1D,MAAM,iBAAiB,GAAG,QAAQ,EAAE,EAAE,CAAA;YAGtC,IACE,CAAC,QAAQ;gBACT,CAAC,iBAAiB;gBAClB,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,EAC3C,CAAC;gBACD,WAAW,CACT,OAAO,EACP,IAAI,kBAAkB,CACpB,oCAAoC,MAAM,CAAC,IAAI,iBAAiB,MAAM,KAAK;oBACzE,yBAAyB,wBAAwB,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EACvF,SAAS,EACT,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,CAClC,CACF,CAAA;gBAED,SAAQ;YACV,CAAC;YAKD,IAAI,QAAQ,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;gBACzB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE;oBAClB,UAAU,EAAE,QAAQ;oBACpB,IAAI,EAAE,iBAAiB;oBACvB,MAAM,EAAE,CAAC;iBACV,CAAC,CAAA;gBAEF,SAAQ;YACV,CAAC;YAID,IACE,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC;gBAC5B,CAAC,QAAQ,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EACxD,CAAC;gBACD,SAAQ;YACV,CAAC;YAED,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;YAGtD,MAAM,SAAS,GACb,QAAQ,CAAC,KAAK,KAAK,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC;gBACnD,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC;gBACrC,CAAC,CAAC,SAAS,CAAA;YAEf,IAAI,YAAY,YAAY,kBAAkB,EAAE,CAAC;gBAC/C,WAAW,CAAC,OAAO,EAAE,YAAY,CAAC,CAAA;gBAElC,SAAQ;YACV,CAAC;YAED,IAAI,SAAS,YAAY,kBAAkB,EAAE,CAAC;gBAC5C,WAAW,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;gBAE/B,SAAQ;YACV,CAAC;YAGD,IAAI,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC;gBACxB,SAAQ;YACV,CAAC;YAGD,OAAO,CAAC,GAAG,CACT,MAAM,EACN,iBAAiB,KAAK,SAAS,IAAI,SAAS,KAAK,SAAS;gBACxD,CAAC,CAAC;oBACE,UAAU,EAAE,QAAQ;oBACpB,IAAI,EAAE,iBAAiB;oBACvB,MAAM,EAAE,YAAY;oBACpB,QAAQ,EAAE,SAAS;iBACpB;gBACH,CAAC,CAAC;oBACE,UAAU,EAAE,QAAQ;oBACpB,IAAI,EAAE,iBAAiB;oBACvB,MAAM,EAAE,YAAY;iBACrB,CACN,CAAA;QACH,CAAC;aAEI,CAAC;YAGJ,MAAM,QAAQ,GAAG,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAA;YACxD,MAAM,eAAe,GAAG,QAAQ,EAAE,EAAE,CAAA;YAEpC,IACE,QAAQ;gBACR,eAAe;gBACf,qBAAqB,CAAC,eAAe,CAAC,EACtC,CAAC;gBAED,IAAI,QAAQ,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;oBACzB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE;wBAClB,UAAU,EAAE,MAAM;wBAClB,IAAI,EAAE,eAAe;wBACrB,MAAM,EAAE,EAAE;qBACX,CAAC,CAAA;oBAEF,SAAQ;gBACV,CAAC;gBAED,MAAM,IAAI,GAAG,eAAe,CAC1B,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAC/C,CAAA;gBAGD,MAAM,EAAE,GACN,QAAQ,CAAC,KAAK,KAAK,CAAC;oBAClB,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,IAAI,SAAS,CAAC;oBAC7C,CAAC,CAAC,EAAE,CAAA;gBAIR,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;oBAAE,SAAQ;gBAEpD,OAAO,CAAC,GAAG,CACT,MAAM,EACN,QAAQ,CAAC,KAAK,KAAK,CAAC;oBAClB,CAAC,CAAC;wBACE,UAAU,EAAE,MAAM;wBAClB,IAAI,EAAE,eAAe;wBACrB,MAAM,EAAE,IAAI;wBACZ,QAAQ,EAAE,EAAE;qBACb;oBACH,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,IAAI,EAAE,CAChE,CAAA;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAGD,OAAO,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;AACpC,CAAC;AAKD,SAAS,qBAAqB,CAAC,MAAoB;IACjD,IAAI,MAAM,CAAC,UAAU,KAAK,MAAM,EAAE,CAAC;QAEjC,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAChC,OAAO;gBACL,UAAU,EAAE,MAAM;gBAClB,IAAI,EAAE,SAAS;gBACf,QAAQ,EAAE,MAAM,CAAC,MAAM;gBACvB,MAAM,EAAE,MAAM,CAAC,QAAQ,IAAI,IAAI;aAChC,CAAA;QACH,CAAC;QAGD,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAC1D,OAAO;gBACL,UAAU,EAAE,MAAM;gBAClB,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,QAAQ,EAAE,IAAI;gBACd,MAAM,EAAE,IAAI;aACb,CAAA;QACH,CAAC;QAID,OAAO;YACL,UAAU,EAAE,MAAM;YAClB,IAAI,EAAE,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC;YACpC,QAAQ,EAAE,MAAM,CAAC,MAAM;YACvB,MAAM,EAAE,IAAI;SACb,CAAA;IACH,CAAC;IAED,IAAI,MAAM,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;QACnC,MAAM,eAAe,GAAG,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QAItD,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAC1D,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;QACtE,CAAC;QAED,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC9B,MAAM,UAAU,GAAG;gBACjB,UAAU,EAAE,QAAQ;gBACpB,IAAI,EAAE,eAAe;gBACrB,MAAM,EAAE,MAAM,CAAC,MAAM;aACb,CAAA;YAGV,OAAO,MAAM,CAAC,QAAQ,KAAK,SAAS;gBAClC,CAAC,CAAC,EAAE,GAAG,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE;gBAC9C,CAAC,CAAC,UAAU,CAAA;QAChB,CAAC;QAED,OAAO;YACL,UAAU,EAAE,QAAQ;YACpB,IAAI,EAAE,eAAe;YACrB,MAAM,EAAE,MAAM,CAAC,MAAM;SACtB,CAAA;IACH,CAAC;IAGD,MAAM,eAAe,GAAG,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAEtD,OAAO;QACL,UAAU,EAAE,MAAM;QAClB,IAAI,EAAE,eAAe;QACrB,MAAM,EAAE,MAAM,CAAC,MAAM;KACtB,CAAA;AACH,CAAC;AA2BD,MAAM,UAAU,gBAAgB,CAC9B,WAAwB,EACxB,MAAgC,EAChC,OAA6B;IAI7B,IAAI,SAAS,IAAI,MAAM,EAAE,CAAC;QACxB,gBAAgB,CAAC,WAAW,EAAE,MAAM,CAAC,OAAO,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC,CAAA;QAErE,OAAM;IACR,CAAC;IAED,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC,CAAA;AAChE,CAAC;AAED,SAAS,gBAAgB,CACvB,WAAwB,EACxB,OAAgB,EAChB,OAAwB;IAIxB,MAAM,KAAK,GAAG,IAAI,GAAG,EAAwB,CAAA;IAE7C,KAAK,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QAE3D,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,gBAAgB,EAAE,MAAM,CAAC;YAAE,SAAQ;QAG7C,MAAM,YAAY,GAAG,sBAAsB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;QAG5D,IAAI,MAAM,CAAC,UAAU,KAAK,MAAM,IAAI,YAAY,KAAK,MAAM,EAAE,CAAC;YAC5D,WAAW,CACT,OAAO,EACP,IAAI,kBAAkB,CACpB,WAAW,MAAM,eAAe,YAAY,gIAAgI,EAC5K,SAAS,EACT,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,CAClC,CACF,CAAA;YACD,SAAQ;QACV,CAAC;QAED,IAAI,MAAM,CAAC,UAAU,KAAK,QAAQ,IAAI,YAAY,KAAK,QAAQ,EAAE,CAAC;YAChE,WAAW,CACT,OAAO,EACP,IAAI,kBAAkB,CACpB,WAAW,MAAM,eAAe,YAAY,kIAAkI,EAC9K,SAAS,EACT,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,CAClC,CACF,CAAA;YACD,SAAQ;QACV,CAAC;QAGD,MAAM,YAAY,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAA;QAElD,IAAI,YAAY,EAAE,CAAC;YACjB,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;QACjC,CAAC;IACH,CAAC;IAID,IAAI,CAAC;QAEH,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAA;IACnD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAEf,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAA;IACpD,CAAC;AACH,CAAC"}
|
package/dist/core/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export { AGGridUrlSync, createUrlSync } from './ag-grid-url-sync.js';
|
|
2
2
|
export * from './types.js';
|
|
3
|
-
export { validateFilterValue
|
|
3
|
+
export { validateFilterValue } from './validation.js';
|
|
4
|
+
export { DEFAULT_CONFIG } from './options.js';
|
|
4
5
|
export { parseUrlFilters, parseFilterParam } from './url-parser.js';
|
|
5
6
|
export { serializeFilters, generateUrl } from './url-generator.js';
|
|
6
7
|
export { getFilterModel, applyFilterModel } from './grid-integration.js';
|
package/dist/core/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export { AGGridUrlSync, createUrlSync } from './ag-grid-url-sync.js';
|
|
2
2
|
export * from './types.js';
|
|
3
|
-
export { validateFilterValue
|
|
3
|
+
export { validateFilterValue } from './validation.js';
|
|
4
|
+
export { DEFAULT_CONFIG } from './options.js';
|
|
4
5
|
export { parseUrlFilters, parseFilterParam } from './url-parser.js';
|
|
5
6
|
export { serializeFilters, generateUrl } from './url-generator.js';
|
|
6
7
|
export { getFilterModel, applyFilterModel } from './grid-integration.js';
|
package/dist/core/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAEpE,cAAc,YAAY,CAAA;AAG1B,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAEpE,cAAc,YAAY,CAAA;AAG1B,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AAErD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAG7C,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAGnE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAGlE,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAGxE,cAAc,0BAA0B,CAAA"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { AGGridUrlSyncConfig, FilterState, ColumnFilter, ResolvedOptions } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* The prefix that filter param names start with. An empty prefix means the
|
|
4
|
+
* default (`f_`), and a prefix without a trailing `_` gets one, so 'filter'
|
|
5
|
+
* gives `filter_name_contains`. The writer, the parser and the URL checks all
|
|
6
|
+
* use this, so a URL that the library writes parses back (#228).
|
|
7
|
+
*/
|
|
8
|
+
export declare function resolveParamPrefix(paramPrefix?: string): string;
|
|
9
|
+
/**
|
|
10
|
+
* Converts a filter state object into URL search parameters.
|
|
11
|
+
* This function does not need a grid. An option that the config leaves out
|
|
12
|
+
* gets its default.
|
|
13
|
+
* A text value over `config.maxValueLength` is reported through
|
|
14
|
+
* `config.onParseError` and skipped. The other filters are kept.
|
|
15
|
+
*/
|
|
16
|
+
export declare function serializeFilters(filterState: FilterState, config?: AGGridUrlSyncConfig): URLSearchParams;
|
|
17
|
+
/**
|
|
18
|
+
* Parses a URL parameter into a column filter
|
|
19
|
+
*/
|
|
20
|
+
export declare function parseFilterParam(param: string, value: string, expectedPrefix?: string): ColumnFilter;
|
|
21
|
+
/**
|
|
22
|
+
* Parses prefixed filter parameters into a filter state object.
|
|
23
|
+
* Parameters without the configured prefix are skipped. A parameter that fails
|
|
24
|
+
* to parse is reported through `config.onParseError` and skipped.
|
|
25
|
+
*/
|
|
26
|
+
export declare function parseIndividualParams(searchParams: URLSearchParams, config: ResolvedOptions): FilterState;
|