@promoboxx/use-filter 1.5.2 → 1.6.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,6 +14,7 @@ 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;
18
19
  forceRefresh: (shouldRunImmediately?: boolean) => void;
19
20
  };
package/dist/useFilter.js CHANGED
@@ -33,7 +33,10 @@ var shallowEqual_1 = __importDefault(require("./lib/shallowEqual"));
33
33
  var store_1 = require("./store");
34
34
  function useFilter(namespace, options) {
35
35
  var _a = react_1.useState(function () {
36
- return store_1.getFilterStore().getFilter(namespace);
36
+ var existing = store_1.getFilterStore().getFilter(namespace);
37
+ var initialValue = existing
38
+ ? __assign(__assign({}, existing), { shouldRunImmediately: true }) : undefined;
39
+ return initialValue;
37
40
  }), filterInfo = _a[0], setFilterInfoState = _a[1];
38
41
  var _b = react_1.useState(function () {
39
42
  return store_1.getFilterStore().getData(namespace);
@@ -178,6 +181,16 @@ function useFilter(namespace, options) {
178
181
  return __assign(__assign({}, previous), { offset: getOffsetFromPage_1.default(pageNumber, previous.pageSize), page: pageNumber, lastRefreshAt: new Date().getTime(), shouldRunImmediately: shouldRunImmediately });
179
182
  });
180
183
  }, []),
184
+ setPageSize: react_1.useCallback(function (pageSize, shouldRunImmediately) {
185
+ if (shouldRunImmediately === void 0) { shouldRunImmediately = false; }
186
+ setFilterInfoState(function (previous) {
187
+ invariant(previous != null, 'setPageSize called without filterInfo');
188
+ var pageSizeNumber = Number(pageSize);
189
+ var page = getPageFromOffset_1.default(previous.offset, pageSizeNumber);
190
+ var offset = getOffsetFromPage_1.default(page, pageSizeNumber);
191
+ return __assign(__assign({}, previous), { pageSize: pageSizeNumber, offset: offset, page: page, lastRefreshAt: new Date().getTime(), shouldRunImmediately: shouldRunImmediately });
192
+ });
193
+ }, []),
181
194
  setSort: react_1.useCallback(function (sort, shouldRunImmediately) {
182
195
  if (shouldRunImmediately === void 0) { shouldRunImmediately = false; }
183
196
  setFilterInfoState(function (previous) {
@@ -13,8 +13,24 @@ interface UseSimpleFilterOptions<TFilter> {
13
13
  }
14
14
  declare function useSimpleFilter<TFilter>(namespace: string, options: UseSimpleFilterOptions<TFilter>): {
15
15
  isLoading: boolean;
16
- filterInfo: SimpleFilterInfo<TFilter>;
17
- debouncedFilterInfo: SimpleFilterInfo<TFilter>;
16
+ filterInfo: {
17
+ shouldRunImmediately: boolean;
18
+ filter: TFilter;
19
+ sort?: string | undefined;
20
+ offset: number;
21
+ page: number;
22
+ pageSize: number;
23
+ lastRefreshAt: number;
24
+ };
25
+ debouncedFilterInfo: {
26
+ shouldRunImmediately: boolean;
27
+ filter: TFilter;
28
+ sort?: string | undefined;
29
+ offset: number;
30
+ page: number;
31
+ pageSize: number;
32
+ lastRefreshAt: number;
33
+ };
18
34
  updateFilter: (filter: Partial<TFilter>, shouldRunImmediately?: any) => void;
19
35
  pagingInfo: (total: string | number | null | undefined) => {
20
36
  totalResults: number;
@@ -23,6 +39,7 @@ declare function useSimpleFilter<TFilter>(namespace: string, options: UseSimpleF
23
39
  resetFilter: (shouldRunImmediately?: boolean) => void;
24
40
  setOffset: (offset: number | string, shouldRunImmediately?: boolean) => void;
25
41
  setPage: (page: number | string, shouldRunImmediately?: boolean) => void;
42
+ setPageSize: (pageSize: number | string, shouldRunImmediately?: boolean) => void;
26
43
  setSort: (sort: string, shouldRunImmediately?: boolean) => void;
27
44
  forceRefresh: (shouldRunImmediately?: boolean) => void;
28
45
  };
@@ -32,10 +32,8 @@ function useSimpleFilter(namespace, options) {
32
32
  ctxRef.current = ctxRefValue;
33
33
  });
34
34
  var _a = react_1.useState(false), isLoading = _a[0], setIsLoading = _a[1];
35
- var _b = react_1.useState(function () {
36
- return store_1.getFilterStore().getFilter(namespace) ||
37
- buildDefaultFilterInfo(options.defaultFilterInfo);
38
- }), filterInfo = _b[0], setFilterInfoState = _b[1];
35
+ var _b = react_1.useState(function () { return (__assign(__assign({}, (store_1.getFilterStore().getFilter(namespace) ||
36
+ buildDefaultFilterInfo(options.defaultFilterInfo))), { shouldRunImmediately: true })); }), filterInfo = _b[0], setFilterInfoState = _b[1];
39
37
  var _c = react_1.useState(filterInfo), debouncedFilterInfo = _c[0], setDebouncedFilterInfo = _c[1];
40
38
  // Not sure this is needed in simple mode?
41
39
  var lastRefreshAtRef = react_1.useRef(-1);
@@ -106,6 +104,15 @@ function useSimpleFilter(namespace, options) {
106
104
  var pageNumber = Number(page);
107
105
  setFilterInfoState(function (previous) { return (__assign(__assign({}, previous), { offset: getOffsetFromPage_1.default(pageNumber, previous.pageSize), page: pageNumber, lastRefreshAt: new Date().getTime(), shouldRunImmediately: shouldRunImmediately })); });
108
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
+ }, []),
109
116
  setSort: react_1.useCallback(function (sort, shouldRunImmediately) {
110
117
  if (shouldRunImmediately === void 0) { shouldRunImmediately = false; }
111
118
  setFilterInfoState(function (previous) { return (__assign(__assign({}, previous), { sort: sort, 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.2",
3
+ "version": "1.6.0",
4
4
  "description": "",
5
5
  "main": "dist/useFilter.js",
6
6
  "keywords": [],