@promoboxx/use-filter 1.5.4 → 1.7.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.
@@ -14,7 +14,9 @@ declare function useFilter<TFilter, TResult>(namespace: string, options: UseFilt
14
14
  resetFilter: (shouldRunImmediately?: boolean) => void;
15
15
  setOffset: (offset: number | string, shouldRunImmediately?: boolean) => void;
16
16
  setPage: (page: number | string, shouldRunImmediately?: boolean) => void;
17
+ setPageSize: (pageSize: number | string, shouldRunImmediately?: boolean) => void;
17
18
  setSort: (sort: string | undefined, shouldRunImmediately?: boolean) => void;
19
+ setCursor: (cursor: string | null | undefined, shouldRunImmediately?: boolean) => void;
18
20
  forceRefresh: (shouldRunImmediately?: boolean) => void;
19
21
  };
20
22
  export default useFilter;
@@ -28,6 +30,8 @@ export interface FilterInfo<TFilter> {
28
30
  totalResults: number;
29
31
  totalPages: number;
30
32
  shouldRunImmediately: boolean;
33
+ cursor?: string | null;
34
+ nextCursor?: string | null;
31
35
  }
32
36
  declare type UseFilterOnChangeResult<TFilter, TResult> = void | {
33
37
  filterInfo?: Partial<Omit<FilterInfo<TFilter>, 'totalResults' | 'offset' | 'pageSize'> & {
package/dist/useFilter.js CHANGED
@@ -98,7 +98,7 @@ function useFilter(namespace, options) {
98
98
  invariant(!!response.filterInfo, '');
99
99
  invariant(previous != null, 'handleResponse called without filterInfo');
100
100
  var extra = {};
101
- var _a = response.filterInfo, page = _a.page, offset = _a.offset, totalResults = _a.totalResults, pageSize = _a.pageSize, filterInfoFromResponse = __rest(_a, ["page", "offset", "totalResults", "pageSize"]);
101
+ var _a = response.filterInfo, page = _a.page, offset = _a.offset, totalResults = _a.totalResults, pageSize = _a.pageSize, nextCursor = _a.nextCursor, filterInfoFromResponse = __rest(_a, ["page", "offset", "totalResults", "pageSize", "nextCursor"]);
102
102
  var pageSizeNumber = Number(pageSize || previous.pageSize);
103
103
  if (page != null && offset == null) {
104
104
  extra.offset = getOffsetFromPage_1.default(page, pageSizeNumber);
@@ -114,6 +114,9 @@ function useFilter(namespace, options) {
114
114
  extra.totalResults = Number(totalResults);
115
115
  extra.totalPages = Math.ceil(extra.totalResults / pageSizeNumber);
116
116
  }
117
+ if (nextCursor) {
118
+ extra.nextCursor = nextCursor;
119
+ }
117
120
  return __assign(__assign(__assign({}, previous), filterInfoFromResponse), extra);
118
121
  });
119
122
  }
@@ -181,6 +184,16 @@ function useFilter(namespace, options) {
181
184
  return __assign(__assign({}, previous), { offset: getOffsetFromPage_1.default(pageNumber, previous.pageSize), page: pageNumber, lastRefreshAt: new Date().getTime(), shouldRunImmediately: shouldRunImmediately });
182
185
  });
183
186
  }, []),
187
+ setPageSize: react_1.useCallback(function (pageSize, shouldRunImmediately) {
188
+ if (shouldRunImmediately === void 0) { shouldRunImmediately = false; }
189
+ setFilterInfoState(function (previous) {
190
+ invariant(previous != null, 'setPageSize called without filterInfo');
191
+ var pageSizeNumber = Number(pageSize);
192
+ var page = getPageFromOffset_1.default(previous.offset, pageSizeNumber);
193
+ var offset = getOffsetFromPage_1.default(page, pageSizeNumber);
194
+ return __assign(__assign({}, previous), { pageSize: pageSizeNumber, offset: offset, page: page, lastRefreshAt: new Date().getTime(), shouldRunImmediately: shouldRunImmediately });
195
+ });
196
+ }, []),
184
197
  setSort: react_1.useCallback(function (sort, shouldRunImmediately) {
185
198
  if (shouldRunImmediately === void 0) { shouldRunImmediately = false; }
186
199
  setFilterInfoState(function (previous) {
@@ -188,6 +201,13 @@ function useFilter(namespace, options) {
188
201
  return __assign(__assign({}, previous), { sort: sort, lastRefreshAt: new Date().getTime(), shouldRunImmediately: shouldRunImmediately });
189
202
  });
190
203
  }, []),
204
+ setCursor: react_1.useCallback(function (cursor, shouldRunImmediately) {
205
+ if (shouldRunImmediately === void 0) { shouldRunImmediately = false; }
206
+ setFilterInfoState(function (previous) {
207
+ invariant(previous != null, 'setCursor called without filterInfo');
208
+ return __assign(__assign({}, previous), { cursor: cursor, lastRefreshAt: new Date().getTime(), shouldRunImmediately: shouldRunImmediately });
209
+ });
210
+ }, []),
191
211
  forceRefresh: react_1.useCallback(function (shouldRunImmediately) {
192
212
  if (shouldRunImmediately === void 0) { shouldRunImmediately = false; }
193
213
  setFilterInfoState(function (previous) {
@@ -5,6 +5,7 @@ export interface SimpleFilterInfo<TFilter> {
5
5
  page: number;
6
6
  pageSize: number;
7
7
  lastRefreshAt: number;
8
+ cursor?: string | null;
8
9
  shouldRunImmediately: boolean;
9
10
  }
10
11
  interface UseSimpleFilterOptions<TFilter> {
@@ -21,6 +22,7 @@ declare function useSimpleFilter<TFilter>(namespace: string, options: UseSimpleF
21
22
  page: number;
22
23
  pageSize: number;
23
24
  lastRefreshAt: number;
25
+ cursor?: string | null | undefined;
24
26
  };
25
27
  debouncedFilterInfo: {
26
28
  shouldRunImmediately: boolean;
@@ -30,6 +32,7 @@ declare function useSimpleFilter<TFilter>(namespace: string, options: UseSimpleF
30
32
  page: number;
31
33
  pageSize: number;
32
34
  lastRefreshAt: number;
35
+ cursor?: string | null | undefined;
33
36
  };
34
37
  updateFilter: (filter: Partial<TFilter>, shouldRunImmediately?: any) => void;
35
38
  pagingInfo: (total: string | number | null | undefined) => {
@@ -39,7 +42,9 @@ declare function useSimpleFilter<TFilter>(namespace: string, options: UseSimpleF
39
42
  resetFilter: (shouldRunImmediately?: boolean) => void;
40
43
  setOffset: (offset: number | string, shouldRunImmediately?: boolean) => void;
41
44
  setPage: (page: number | string, shouldRunImmediately?: boolean) => void;
45
+ setPageSize: (pageSize: number | string, shouldRunImmediately?: boolean) => void;
42
46
  setSort: (sort: string, shouldRunImmediately?: boolean) => void;
47
+ setCursor: (cursor: string | null | undefined, shouldRunImmediately?: boolean) => void;
43
48
  forceRefresh: (shouldRunImmediately?: boolean) => void;
44
49
  };
45
50
  export default useSimpleFilter;
@@ -104,10 +104,23 @@ function useSimpleFilter(namespace, options) {
104
104
  var pageNumber = Number(page);
105
105
  setFilterInfoState(function (previous) { return (__assign(__assign({}, previous), { offset: getOffsetFromPage_1.default(pageNumber, previous.pageSize), page: pageNumber, lastRefreshAt: new Date().getTime(), shouldRunImmediately: shouldRunImmediately })); });
106
106
  }, []),
107
+ setPageSize: react_1.useCallback(function (pageSize, shouldRunImmediately) {
108
+ if (shouldRunImmediately === void 0) { shouldRunImmediately = false; }
109
+ setFilterInfoState(function (previous) {
110
+ var pageSizeNumber = Number(pageSize);
111
+ var page = getPageFromOffset_1.default(previous.offset, pageSizeNumber);
112
+ var offset = getOffsetFromPage_1.default(page, pageSizeNumber);
113
+ return __assign(__assign({}, previous), { pageSize: pageSizeNumber, offset: offset, page: page, lastRefreshAt: new Date().getTime(), shouldRunImmediately: shouldRunImmediately });
114
+ });
115
+ }, []),
107
116
  setSort: react_1.useCallback(function (sort, shouldRunImmediately) {
108
117
  if (shouldRunImmediately === void 0) { shouldRunImmediately = false; }
109
118
  setFilterInfoState(function (previous) { return (__assign(__assign({}, previous), { sort: sort, lastRefreshAt: new Date().getTime(), shouldRunImmediately: shouldRunImmediately })); });
110
119
  }, []),
120
+ setCursor: react_1.useCallback(function (cursor, shouldRunImmediately) {
121
+ if (shouldRunImmediately === void 0) { shouldRunImmediately = false; }
122
+ setFilterInfoState(function (previous) { return (__assign(__assign({}, previous), { cursor: cursor, lastRefreshAt: new Date().getTime(), shouldRunImmediately: shouldRunImmediately })); });
123
+ }, []),
111
124
  forceRefresh: react_1.useCallback(function (shouldRunImmediately) {
112
125
  if (shouldRunImmediately === void 0) { shouldRunImmediately = false; }
113
126
  setFilterInfoState(function (previous) { return (__assign(__assign({}, previous), { lastRefreshAt: new Date().getTime(), shouldRunImmediately: shouldRunImmediately })); });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@promoboxx/use-filter",
3
- "version": "1.5.4",
3
+ "version": "1.7.0",
4
4
  "description": "",
5
5
  "main": "dist/useFilter.js",
6
6
  "keywords": [],