advanced-filter-system 1.7.0 → 1.8.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/README.md +1 -1
- package/dist/afs.legacy.js +1 -1
- package/dist/afs.legacy.js.map +1 -1
- package/dist/afs.modern.js +1 -1
- package/dist/afs.modern.js.map +1 -1
- package/package.json +1 -1
- package/src/types/core.d.ts +20 -5
- package/src/types/features.d.ts +48 -52
- package/src/types/index.d.ts +115 -45
- package/src/types/pagination.ts +0 -5
- package/src/types/utils.d.ts +17 -110
package/package.json
CHANGED
package/src/types/core.d.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* @fileoverview TypeScript definitions for core classes
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import { AFSOptions, AFSEventData, EventCallback
|
|
6
|
+
import { AFSOptions, AFSEventData, EventCallback } from './index';
|
|
7
7
|
|
|
8
8
|
// Options Class
|
|
9
9
|
export declare class Options {
|
|
@@ -22,10 +22,23 @@ export declare class Options {
|
|
|
22
22
|
// State Class
|
|
23
23
|
export declare class State {
|
|
24
24
|
constructor();
|
|
25
|
-
|
|
25
|
+
|
|
26
|
+
/** Live, read-only view of the state. Write via setState() or the mutators. */
|
|
26
27
|
getState(): any;
|
|
27
28
|
setState(path: string, value: any): void;
|
|
28
|
-
|
|
29
|
+
/**
|
|
30
|
+
* Subscribe to writes at `path` or any descendant of it
|
|
31
|
+
* (a listener on "items" also hears "items.visible").
|
|
32
|
+
* @returns an unsubscribe function
|
|
33
|
+
*/
|
|
34
|
+
subscribe(path: string, callback: (value: any, path: string) => void): () => void;
|
|
35
|
+
|
|
36
|
+
// Encapsulated mutators for the visible-items set (write + notify)
|
|
37
|
+
setVisibleItems(set: Set<HTMLElement>): void;
|
|
38
|
+
addVisibleItem(item: HTMLElement): void;
|
|
39
|
+
removeVisibleItem(item: HTMLElement): void;
|
|
40
|
+
clearVisibleItems(): void;
|
|
41
|
+
|
|
29
42
|
export(): any;
|
|
30
43
|
import(state: any): void;
|
|
31
44
|
reset(): void;
|
|
@@ -46,10 +59,12 @@ export declare class Logger {
|
|
|
46
59
|
export declare class EventEmitter {
|
|
47
60
|
constructor();
|
|
48
61
|
|
|
49
|
-
|
|
62
|
+
/** @returns an unsubscribe function */
|
|
63
|
+
on(event: string, callback: EventCallback): () => void;
|
|
50
64
|
off(event: string, callback?: EventCallback): void;
|
|
51
65
|
emit(event: string, data?: AFSEventData): void;
|
|
52
|
-
|
|
66
|
+
/** @returns an unsubscribe function */
|
|
67
|
+
once(event: string, callback: EventCallback): () => void;
|
|
53
68
|
removeAllListeners(event?: string): void;
|
|
54
69
|
}
|
|
55
70
|
|
package/src/types/features.d.ts
CHANGED
|
@@ -1,54 +1,63 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Feature Types for Advanced Filter System
|
|
3
3
|
* @fileoverview TypeScript definitions for feature classes
|
|
4
|
+
*
|
|
5
|
+
* NOTE: the published entry point is `index.d.ts`, which declares its own
|
|
6
|
+
* copies of these classes. This file mirrors them for direct imports and must
|
|
7
|
+
* be kept in sync with the actual public API.
|
|
4
8
|
*/
|
|
5
9
|
|
|
6
|
-
import {
|
|
7
|
-
SortDirection,
|
|
8
|
-
SortCriteria,
|
|
9
|
-
FilterMode,
|
|
10
|
+
import {
|
|
11
|
+
SortDirection,
|
|
12
|
+
SortCriteria,
|
|
13
|
+
FilterMode,
|
|
10
14
|
FilterTypeConfig,
|
|
11
15
|
RangeSliderOptions,
|
|
12
16
|
DateFilterOptions,
|
|
17
|
+
InputRangeOptions,
|
|
13
18
|
PageInfo,
|
|
14
|
-
AFSEventData
|
|
15
19
|
} from './index';
|
|
16
20
|
import { AFS } from './index';
|
|
17
21
|
|
|
18
22
|
// Filter Feature
|
|
19
23
|
export declare class Filter {
|
|
20
24
|
constructor(afs: AFS);
|
|
21
|
-
|
|
25
|
+
|
|
22
26
|
addFilter(filter: string): void;
|
|
23
27
|
removeFilter(filter: string): void;
|
|
24
28
|
toggleFilter(filter: string): void;
|
|
25
29
|
toggleFilterExclusive(filter: string): void;
|
|
26
30
|
clearAllFilters(): void;
|
|
27
31
|
clearFilterCategory(category: string): void;
|
|
32
|
+
resetFilters(): void;
|
|
28
33
|
getActiveFilters(): Set<string>;
|
|
34
|
+
setFilterMode(mode: FilterMode): void;
|
|
35
|
+
setGroupMode(mode: FilterMode): void;
|
|
29
36
|
setFilterTypeLogic(type: string, logic: FilterMode | FilterTypeConfig): void;
|
|
37
|
+
setFilterTypeExclusive(types: string | string[], exclusive?: boolean): void;
|
|
38
|
+
addFilterGroup(id: string, filters: string[], operator?: FilterMode): void;
|
|
39
|
+
removeFilterGroup(id: string): void;
|
|
40
|
+
getFilterGroups(): Map<string, any>;
|
|
41
|
+
addFilterButton(button: HTMLElement, filter: string): void;
|
|
42
|
+
removeFilterButton(button: HTMLElement): void;
|
|
30
43
|
applyFilters(): void;
|
|
31
|
-
|
|
32
|
-
isFilterActive(filter: string): boolean;
|
|
33
|
-
getFiltersByType(type: string): Set<string>;
|
|
44
|
+
refresh(): void;
|
|
34
45
|
destroy(): void;
|
|
35
46
|
}
|
|
36
47
|
|
|
37
48
|
// Search Feature
|
|
38
49
|
export declare class Search {
|
|
39
50
|
constructor(afs: AFS);
|
|
40
|
-
|
|
51
|
+
|
|
41
52
|
search(query: string): void;
|
|
42
53
|
clearSearch(): void;
|
|
43
54
|
setValue(value: string): void;
|
|
44
55
|
getValue(): string;
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
minLength?: number;
|
|
51
|
-
caseSensitive?: boolean;
|
|
56
|
+
updateConfig(config: {
|
|
57
|
+
searchKeys?: string[];
|
|
58
|
+
minSearchLength?: number;
|
|
59
|
+
highlightClass?: string;
|
|
60
|
+
debounceTime?: number;
|
|
52
61
|
}): void;
|
|
53
62
|
destroy(): void;
|
|
54
63
|
}
|
|
@@ -56,22 +65,22 @@ export declare class Search {
|
|
|
56
65
|
// Sort Feature
|
|
57
66
|
export declare class Sort {
|
|
58
67
|
constructor(afs: AFS);
|
|
59
|
-
|
|
68
|
+
|
|
60
69
|
sort(key: string, direction?: SortDirection): void;
|
|
61
70
|
sortMultiple(criteria: SortCriteria[]): void;
|
|
62
71
|
sortWithComparator(key: string, comparator: (a: any, b: any) => number): void;
|
|
63
72
|
shuffle(): void;
|
|
64
73
|
reset(): void;
|
|
65
74
|
getCurrentSort(): SortCriteria | null;
|
|
66
|
-
|
|
67
|
-
|
|
75
|
+
addSortButton(button: HTMLElement, key: string, direction?: SortDirection): void;
|
|
76
|
+
removeSortButton(button: HTMLElement): void;
|
|
68
77
|
destroy(): void;
|
|
69
78
|
}
|
|
70
79
|
|
|
71
80
|
// Pagination Feature
|
|
72
81
|
export declare class Pagination {
|
|
73
82
|
constructor(afs: AFS);
|
|
74
|
-
|
|
83
|
+
|
|
75
84
|
goToPage(page: number): void;
|
|
76
85
|
nextPage(): void;
|
|
77
86
|
previousPage(): void;
|
|
@@ -84,43 +93,46 @@ export declare class Pagination {
|
|
|
84
93
|
getTotalPages(): number;
|
|
85
94
|
getItemsPerPage(): number;
|
|
86
95
|
update(): void;
|
|
87
|
-
render(): void;
|
|
88
96
|
destroy(): void;
|
|
89
97
|
}
|
|
90
98
|
|
|
91
99
|
// Range Filter Feature
|
|
92
100
|
export declare class RangeFilter {
|
|
93
101
|
constructor(afs: AFS);
|
|
94
|
-
|
|
102
|
+
|
|
95
103
|
addRangeSlider(options: RangeSliderOptions): void;
|
|
96
104
|
removeRangeSlider(key: string): void;
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
resetRange(key: string): void;
|
|
100
|
-
getRangeSliders(): Map<string, any>;
|
|
101
|
-
updateHistogram(key: string): void;
|
|
105
|
+
getRangeValues(key: string): { min: number; max: number; type: 'number' | 'date' } | null;
|
|
106
|
+
setRangeValues(key: string, min: number, max: number): void;
|
|
102
107
|
destroy(): void;
|
|
103
108
|
}
|
|
104
109
|
|
|
105
110
|
// Date Filter Feature
|
|
106
111
|
export declare class DateFilter {
|
|
107
112
|
constructor(afs: AFS);
|
|
108
|
-
|
|
113
|
+
|
|
109
114
|
addDateRange(options: DateFilterOptions): void;
|
|
110
115
|
removeDateRange(key: string): void;
|
|
111
|
-
getDateRange(key: string): {
|
|
112
|
-
setDateRange(key: string,
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
116
|
+
getDateRange(key: string): { startDate: Date; endDate: Date } | null;
|
|
117
|
+
setDateRange(key: string, startDate: Date, endDate: Date): void;
|
|
118
|
+
destroy(): void;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
// Input Range Filter Feature
|
|
122
|
+
export declare class InputRangeFilter {
|
|
123
|
+
constructor(afs: AFS);
|
|
124
|
+
|
|
125
|
+
addInputRange(options: InputRangeOptions): void;
|
|
126
|
+
removeInputRange(key: string): void;
|
|
127
|
+
getRange(key: string): { min: number; max: number } | null;
|
|
128
|
+
setRange(key: string, min: number, max: number): void;
|
|
117
129
|
destroy(): void;
|
|
118
130
|
}
|
|
119
131
|
|
|
120
132
|
// URL Manager Feature
|
|
121
133
|
export declare class URLManager {
|
|
122
134
|
constructor(afs: AFS);
|
|
123
|
-
|
|
135
|
+
|
|
124
136
|
initialize(): void;
|
|
125
137
|
updateURL(): void;
|
|
126
138
|
loadFromURL(): void;
|
|
@@ -128,21 +140,5 @@ export declare class URLManager {
|
|
|
128
140
|
getURLParams(): URLSearchParams;
|
|
129
141
|
hasParams(): boolean;
|
|
130
142
|
getParam(param: string): string | null;
|
|
131
|
-
setParam(param: string, value: string): void;
|
|
132
|
-
removeParam(param: string): void;
|
|
133
|
-
serializeState(): string;
|
|
134
|
-
deserializeState(serialized: string): any;
|
|
135
143
|
destroy(): void;
|
|
136
144
|
}
|
|
137
|
-
|
|
138
|
-
// Input Range Filter Feature
|
|
139
|
-
export declare class InputRangeFilter {
|
|
140
|
-
constructor(afs: AFS);
|
|
141
|
-
|
|
142
|
-
addInput(selector: string, key: string): void;
|
|
143
|
-
removeInput(key: string): void;
|
|
144
|
-
getValue(key: string): string | null;
|
|
145
|
-
setValue(key: string, value: string): void;
|
|
146
|
-
getInputs(): Map<string, HTMLInputElement>;
|
|
147
|
-
destroy(): void;
|
|
148
|
-
}
|
package/src/types/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Advanced Filter System (AFS) - TypeScript Definitions
|
|
3
|
-
* @version 1.
|
|
3
|
+
* @version 1.8.0
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
// Core Types
|
|
@@ -13,7 +13,7 @@ export type EventCallback = (data?: AFSEventData) => void;
|
|
|
13
13
|
export type FilterMode = 'OR' | 'AND';
|
|
14
14
|
export type FilterCategoryMode = 'mixed' | 'OR' | 'AND';
|
|
15
15
|
export type SortDirection = 'asc' | 'desc';
|
|
16
|
-
export type AnimationType = 'fade' | 'slide' | 'scale' | '
|
|
16
|
+
export type AnimationType = 'fade' | 'slide' | 'scale' | 'rotate' | 'flip' | 'zoom' | 'bounce' | 'blur' | 'skew' | 'slideInLeft' | 'slideInRight' | 'fadeInUp' | 'fadeInDown' | 'bounceIn';
|
|
17
17
|
export type DateFormat = 'YYYY-MM-DD' | 'DD/MM/YYYY' | 'MM/DD/YYYY' | 'DD-MM-YYYY' | 'MM-DD-YYYY';
|
|
18
18
|
export type LogLevel = 'debug' | 'info' | 'warn' | 'error';
|
|
19
19
|
|
|
@@ -141,6 +141,16 @@ export interface DateFilterOptions {
|
|
|
141
141
|
defaultEnd?: Date;
|
|
142
142
|
}
|
|
143
143
|
|
|
144
|
+
// Input Range (min/max number inputs) Configuration
|
|
145
|
+
export interface InputRangeOptions {
|
|
146
|
+
key: string;
|
|
147
|
+
container: HTMLElement;
|
|
148
|
+
min?: number;
|
|
149
|
+
max?: number;
|
|
150
|
+
step?: number;
|
|
151
|
+
label?: string;
|
|
152
|
+
}
|
|
153
|
+
|
|
144
154
|
// Main AFS Options Interface
|
|
145
155
|
export interface AFSOptions {
|
|
146
156
|
// Required selectors
|
|
@@ -158,8 +168,7 @@ export interface AFSOptions {
|
|
|
158
168
|
activeClass?: string;
|
|
159
169
|
hiddenClass?: string;
|
|
160
170
|
activeSortClass?: string;
|
|
161
|
-
|
|
162
|
-
|
|
171
|
+
|
|
163
172
|
// Filter Configuration
|
|
164
173
|
filterMode?: FilterMode;
|
|
165
174
|
groupMode?: FilterMode;
|
|
@@ -247,15 +256,37 @@ export interface PageInfo {
|
|
|
247
256
|
currentPage: number;
|
|
248
257
|
totalPages: number;
|
|
249
258
|
itemsPerPage: number;
|
|
250
|
-
totalItems: number;
|
|
251
259
|
}
|
|
252
260
|
|
|
253
261
|
// Feature Classes
|
|
254
262
|
export declare class EventEmitter {
|
|
255
|
-
|
|
263
|
+
/** @returns an unsubscribe function */
|
|
264
|
+
on(event: string, callback: EventCallback): () => void;
|
|
256
265
|
off(event: string, callback?: EventCallback): void;
|
|
257
266
|
emit(event: string, data?: AFSEventData): void;
|
|
258
|
-
|
|
267
|
+
/** @returns an unsubscribe function */
|
|
268
|
+
once(event: string, callback: EventCallback): () => void;
|
|
269
|
+
removeAllListeners(event?: string): void;
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
// Central state store (afs.state)
|
|
273
|
+
export declare class State {
|
|
274
|
+
/** Live, read-only view. Write via setState() or the mutators. */
|
|
275
|
+
getState(): any;
|
|
276
|
+
setState(path: string, value: any): void;
|
|
277
|
+
/**
|
|
278
|
+
* Subscribe to writes at `path` or any descendant of it
|
|
279
|
+
* (a listener on "items" also hears "items.visible").
|
|
280
|
+
* @returns an unsubscribe function
|
|
281
|
+
*/
|
|
282
|
+
subscribe(path: string, callback: (value: any, path: string) => void): () => void;
|
|
283
|
+
setVisibleItems(set: Set<HTMLElement>): void;
|
|
284
|
+
addVisibleItem(item: HTMLElement): void;
|
|
285
|
+
removeVisibleItem(item: HTMLElement): void;
|
|
286
|
+
clearVisibleItems(): void;
|
|
287
|
+
export(): any;
|
|
288
|
+
import(state: any): void;
|
|
289
|
+
reset(): void;
|
|
259
290
|
}
|
|
260
291
|
|
|
261
292
|
export declare class Filter {
|
|
@@ -266,9 +297,19 @@ export declare class Filter {
|
|
|
266
297
|
toggleFilterExclusive(filter: string): void;
|
|
267
298
|
clearAllFilters(): void;
|
|
268
299
|
clearFilterCategory(category: string): void;
|
|
300
|
+
resetFilters(): void;
|
|
269
301
|
getActiveFilters(): Set<string>;
|
|
302
|
+
setFilterMode(mode: FilterMode): void;
|
|
303
|
+
setGroupMode(mode: FilterMode): void;
|
|
270
304
|
setFilterTypeLogic(type: string, logic: FilterMode | FilterTypeConfig): void;
|
|
305
|
+
setFilterTypeExclusive(types: string | string[], exclusive?: boolean): void;
|
|
306
|
+
addFilterGroup(id: string, filters: string[], operator?: FilterMode): void;
|
|
307
|
+
removeFilterGroup(id: string): void;
|
|
308
|
+
getFilterGroups(): Map<string, any>;
|
|
309
|
+
addFilterButton(button: HTMLElement, filter: string): void;
|
|
310
|
+
removeFilterButton(button: HTMLElement): void;
|
|
271
311
|
applyFilters(): void;
|
|
312
|
+
refresh(): void;
|
|
272
313
|
destroy(): void;
|
|
273
314
|
}
|
|
274
315
|
|
|
@@ -278,7 +319,12 @@ export declare class Search {
|
|
|
278
319
|
clearSearch(): void;
|
|
279
320
|
setValue(value: string): void;
|
|
280
321
|
getValue(): string;
|
|
281
|
-
|
|
322
|
+
updateConfig(config: {
|
|
323
|
+
searchKeys?: string[];
|
|
324
|
+
minSearchLength?: number;
|
|
325
|
+
highlightClass?: string;
|
|
326
|
+
debounceTime?: number;
|
|
327
|
+
}): void;
|
|
282
328
|
destroy(): void;
|
|
283
329
|
}
|
|
284
330
|
|
|
@@ -290,6 +336,8 @@ export declare class Sort {
|
|
|
290
336
|
shuffle(): void;
|
|
291
337
|
reset(): void;
|
|
292
338
|
getCurrentSort(): SortCriteria | null;
|
|
339
|
+
addSortButton(button: HTMLElement, key: string, direction?: SortDirection): void;
|
|
340
|
+
removeSortButton(button: HTMLElement): void;
|
|
293
341
|
destroy(): void;
|
|
294
342
|
}
|
|
295
343
|
|
|
@@ -298,8 +346,14 @@ export declare class Pagination {
|
|
|
298
346
|
goToPage(page: number): void;
|
|
299
347
|
nextPage(): void;
|
|
300
348
|
previousPage(): void;
|
|
349
|
+
firstPage(): void;
|
|
350
|
+
lastPage(): void;
|
|
301
351
|
setPaginationMode(enabled: boolean): void;
|
|
352
|
+
setItemsPerPage(count: number): void;
|
|
302
353
|
getPageInfo(): PageInfo;
|
|
354
|
+
getCurrentPage(): number;
|
|
355
|
+
getTotalPages(): number;
|
|
356
|
+
getItemsPerPage(): number;
|
|
303
357
|
update(): void;
|
|
304
358
|
destroy(): void;
|
|
305
359
|
}
|
|
@@ -308,8 +362,8 @@ export declare class RangeFilter {
|
|
|
308
362
|
constructor(afs: AFS);
|
|
309
363
|
addRangeSlider(options: RangeSliderOptions): void;
|
|
310
364
|
removeRangeSlider(key: string): void;
|
|
311
|
-
|
|
312
|
-
|
|
365
|
+
getRangeValues(key: string): { min: number; max: number; type: 'number' | 'date' } | null;
|
|
366
|
+
setRangeValues(key: string, min: number, max: number): void;
|
|
313
367
|
destroy(): void;
|
|
314
368
|
}
|
|
315
369
|
|
|
@@ -317,8 +371,17 @@ export declare class DateFilter {
|
|
|
317
371
|
constructor(afs: AFS);
|
|
318
372
|
addDateRange(options: DateFilterOptions): void;
|
|
319
373
|
removeDateRange(key: string): void;
|
|
320
|
-
getDateRange(key: string): {
|
|
321
|
-
setDateRange(key: string,
|
|
374
|
+
getDateRange(key: string): { startDate: Date; endDate: Date } | null;
|
|
375
|
+
setDateRange(key: string, startDate: Date, endDate: Date): void;
|
|
376
|
+
destroy(): void;
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
export declare class InputRangeFilter {
|
|
380
|
+
constructor(afs: AFS);
|
|
381
|
+
addInputRange(options: InputRangeOptions): void;
|
|
382
|
+
removeInputRange(key: string): void;
|
|
383
|
+
getRange(key: string): { min: number; max: number } | null;
|
|
384
|
+
setRange(key: string, min: number, max: number): void;
|
|
322
385
|
destroy(): void;
|
|
323
386
|
}
|
|
324
387
|
|
|
@@ -331,6 +394,7 @@ export declare class URLManager {
|
|
|
331
394
|
getURLParams(): URLSearchParams;
|
|
332
395
|
hasParams(): boolean;
|
|
333
396
|
getParam(param: string): string | null;
|
|
397
|
+
destroy(): void;
|
|
334
398
|
}
|
|
335
399
|
|
|
336
400
|
// Main AFS Class
|
|
@@ -339,11 +403,11 @@ export declare class AFS extends EventEmitter {
|
|
|
339
403
|
readonly VERSION: string;
|
|
340
404
|
readonly options: any;
|
|
341
405
|
readonly logger: any;
|
|
342
|
-
readonly state:
|
|
406
|
+
readonly state: State;
|
|
343
407
|
readonly styleManager: any;
|
|
344
408
|
readonly container: HTMLElement;
|
|
345
409
|
readonly items: NodeListOf<HTMLElement>;
|
|
346
|
-
|
|
410
|
+
|
|
347
411
|
// Features
|
|
348
412
|
readonly filter: Filter;
|
|
349
413
|
readonly search: Search;
|
|
@@ -352,7 +416,7 @@ export declare class AFS extends EventEmitter {
|
|
|
352
416
|
readonly rangeFilter: RangeFilter;
|
|
353
417
|
readonly dateFilter: DateFilter;
|
|
354
418
|
readonly urlManager: URLManager;
|
|
355
|
-
readonly inputRangeFilter:
|
|
419
|
+
readonly inputRangeFilter: InputRangeFilter;
|
|
356
420
|
|
|
357
421
|
constructor(options?: AFSOptions);
|
|
358
422
|
|
|
@@ -379,9 +443,9 @@ export declare class AFS extends EventEmitter {
|
|
|
379
443
|
destroy(): void;
|
|
380
444
|
}
|
|
381
445
|
|
|
382
|
-
// Events Map
|
|
446
|
+
// Events Map — keys are the exact event names emitted by AFS
|
|
383
447
|
export interface AFSEventMap {
|
|
384
|
-
// Core
|
|
448
|
+
// Core / lifecycle
|
|
385
449
|
initialized: { itemCount: number; options: AFSOptions };
|
|
386
450
|
destroyed: void;
|
|
387
451
|
refreshed: { itemCount: number };
|
|
@@ -389,37 +453,43 @@ export interface AFSEventMap {
|
|
|
389
453
|
resize: void;
|
|
390
454
|
hidden: void;
|
|
391
455
|
visible: void;
|
|
392
|
-
|
|
393
|
-
// Filter
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
456
|
+
|
|
457
|
+
// Filter
|
|
458
|
+
filter: { activeFilters: string[]; visibleItems: number; added: number; removed: number };
|
|
459
|
+
filtersApplied: { activeFilters: string[]; visibleItems: number };
|
|
460
|
+
filtersCleared: void;
|
|
461
|
+
filtersReset: void;
|
|
462
|
+
filterChanged: { type: string; value: string; activeFilters: string[] };
|
|
463
|
+
filterRemoved: { filter: string; activeFilters: string[] };
|
|
464
|
+
filterToggled: { filter: string; activeFilters: string[] };
|
|
465
|
+
filterToggledExclusive: { filter: string; activeFilters: string[] };
|
|
466
|
+
filterCategoryCleared: { category: string; activeFilters: string[] };
|
|
467
|
+
itemsShown: { items: Set<HTMLElement> };
|
|
468
|
+
itemsHidden: { items: Set<HTMLElement> };
|
|
469
|
+
|
|
470
|
+
// Search
|
|
471
|
+
search: { query: string; matches: number; total: number };
|
|
402
472
|
searchCleared: void;
|
|
403
|
-
|
|
404
|
-
// Sort
|
|
405
|
-
sort:
|
|
406
|
-
sortMultiple: { criteria: SortCriteria[]; itemCount
|
|
407
|
-
sortCustom: { key: string
|
|
408
|
-
sortShuffled: { itemCount
|
|
409
|
-
sortCleared:
|
|
410
|
-
|
|
411
|
-
// Pagination
|
|
473
|
+
|
|
474
|
+
// Sort
|
|
475
|
+
sort: { key: string; order: SortDirection };
|
|
476
|
+
sortMultiple: { criteria: SortCriteria[]; itemCount?: number };
|
|
477
|
+
sortCustom: { key: string };
|
|
478
|
+
sortShuffled: { itemCount?: number };
|
|
479
|
+
sortCleared: void;
|
|
480
|
+
|
|
481
|
+
// Pagination
|
|
482
|
+
pagination: { currentPage: number; totalPages: number; itemsPerPage: number; visibleItems: number };
|
|
412
483
|
pageChanged: PageChangedData;
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
// URL
|
|
484
|
+
paginationModeChanged: { enabled: boolean };
|
|
485
|
+
|
|
486
|
+
// URL
|
|
416
487
|
urlStateLoaded: { params: Record<string, string> };
|
|
417
|
-
|
|
418
|
-
// Range
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
dateRangeChanged: { key: string; start: Date; end: Date };
|
|
488
|
+
|
|
489
|
+
// Range / input-range / date filters
|
|
490
|
+
rangeFilter: { key: string; min: number; max: number };
|
|
491
|
+
inputRangeFilter: { key: string; min: number; max: number };
|
|
492
|
+
dateFilter: { key: string; startDate: Date; endDate: Date };
|
|
423
493
|
}
|
|
424
494
|
|
|
425
495
|
// Global exports
|
package/src/types/pagination.ts
CHANGED
|
@@ -24,11 +24,6 @@ export interface PageInfo {
|
|
|
24
24
|
currentPage: number;
|
|
25
25
|
itemsPerPage: number;
|
|
26
26
|
totalPages: number;
|
|
27
|
-
totalItems: number;
|
|
28
|
-
startIndex: number;
|
|
29
|
-
endIndex: number;
|
|
30
|
-
hasNextPage: boolean;
|
|
31
|
-
hasPrevPage: boolean;
|
|
32
27
|
}
|
|
33
28
|
export interface PaginationEvent {
|
|
34
29
|
currentPage: number;
|