@promoboxx/use-filter 1.0.6 → 1.1.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/CHANGELOG.md +7 -0
- package/dist/store/index.d.ts +2 -0
- package/dist/store/memoryStore.js +8 -0
- package/dist/useFilter.d.ts +4 -3
- package/dist/useFilter.js +9 -2
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
|
4
4
|
|
|
5
|
+
## 1.1.0 (2021-07-16)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
* Add concept of data to useFilter ([#2](https://github.com/promoboxx/use-filter/issues/2)) ([563c5a9](https://github.com/promoboxx/use-filter/commit/563c5a959cdc22a0f8eba9dbb3dde7802df02b46))
|
|
11
|
+
|
|
5
12
|
### 1.0.6 (2021-07-16)
|
|
6
13
|
|
|
7
14
|
|
package/dist/store/index.d.ts
CHANGED
|
@@ -2,6 +2,8 @@ import { FilterInfo } from '../useFilter';
|
|
|
2
2
|
export interface FilterStore {
|
|
3
3
|
getFilter(namespace: string): FilterInfo<any> | null | undefined;
|
|
4
4
|
saveFilter(namespace: string, filter: FilterInfo<any>): void;
|
|
5
|
+
getData(namespace: string): any | null | undefined;
|
|
6
|
+
saveData(namespace: string, data: any): void;
|
|
5
7
|
clear(): void;
|
|
6
8
|
}
|
|
7
9
|
export declare function setFilterStore(newStore: FilterStore): void;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
var filters = {};
|
|
4
|
+
var data = {};
|
|
4
5
|
var memoryStore = {
|
|
5
6
|
getFilter: function (namespace) {
|
|
6
7
|
return filters[namespace];
|
|
@@ -8,8 +9,15 @@ var memoryStore = {
|
|
|
8
9
|
saveFilter: function (namespace, filter) {
|
|
9
10
|
filters[namespace] = filter;
|
|
10
11
|
},
|
|
12
|
+
getData: function (namespace) {
|
|
13
|
+
return data[namespace];
|
|
14
|
+
},
|
|
15
|
+
saveData: function (namespace, data) {
|
|
16
|
+
filters[namespace] = data;
|
|
17
|
+
},
|
|
11
18
|
clear: function () {
|
|
12
19
|
filters = {};
|
|
20
|
+
data = {};
|
|
13
21
|
},
|
|
14
22
|
};
|
|
15
23
|
exports.default = memoryStore;
|
package/dist/useFilter.d.ts
CHANGED
|
@@ -5,11 +5,12 @@ interface UseFilterOptions<TFilter, TResult> {
|
|
|
5
5
|
onChange: (filterInfo: FilterInfo<TFilter>) => MaybePromise<UseFilterOnChangeResult<TFilter, TResult>>;
|
|
6
6
|
debounceDuration?: number;
|
|
7
7
|
}
|
|
8
|
-
declare function useFilter<
|
|
8
|
+
declare function useFilter<TFilter, TResult>(namespace: string, options: UseFilterOptions<TFilter, TResult>): {
|
|
9
9
|
isLoading: boolean;
|
|
10
|
+
data: TResult | null | undefined;
|
|
10
11
|
doesFilterExist: boolean;
|
|
11
|
-
filterInfo: FilterInfo<
|
|
12
|
-
updateFilter(filter:
|
|
12
|
+
filterInfo: FilterInfo<TFilter>;
|
|
13
|
+
updateFilter(filter: Partial<TFilter>): void;
|
|
13
14
|
resetFilter(): void;
|
|
14
15
|
setOffset(offset: number | string): void;
|
|
15
16
|
setPage(page: number | string): void;
|
package/dist/useFilter.js
CHANGED
|
@@ -33,6 +33,9 @@ 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 () { return store_1.getFilterStore().getFilter(namespace); }), filterInfo = _a[0], setFilterInfoState = _a[1];
|
|
36
|
+
var _b = react_1.useState(function () {
|
|
37
|
+
return store_1.getFilterStore().getData(namespace);
|
|
38
|
+
}), data = _b[0], setData = _b[1];
|
|
36
39
|
var setFilterInfo = react_1.useCallback(function (filterInfo, skipFetch) {
|
|
37
40
|
if (skipFetch === void 0) { skipFetch = false; }
|
|
38
41
|
setFilterInfoState(function (previousFilterInfo) {
|
|
@@ -55,7 +58,7 @@ function useFilter(namespace, options) {
|
|
|
55
58
|
debounceDuration: options.debounceDuration,
|
|
56
59
|
defaultFilterInfo: options.defaultFilterInfo,
|
|
57
60
|
});
|
|
58
|
-
var
|
|
61
|
+
var _c = react_1.useState(!filterInfo), isLoading = _c[0], setIsLoading = _c[1];
|
|
59
62
|
var doesFilterExist = react_1.useRef(!!filterInfo);
|
|
60
63
|
var lastRefreshAtRef = react_1.useRef(
|
|
61
64
|
// if shouldForceRunOnMount is set, always use -1
|
|
@@ -113,9 +116,12 @@ function useFilter(namespace, options) {
|
|
|
113
116
|
extra.totalResults = Number(totalResults);
|
|
114
117
|
extra.totalPages = Math.ceil(extra.totalResults / pageSizeNumber);
|
|
115
118
|
}
|
|
116
|
-
// TODO Don't do anther request here????
|
|
117
119
|
setFilterInfo(__assign(__assign(__assign({}, filterInfo), filterInfoFromResponse), extra), true);
|
|
118
120
|
}
|
|
121
|
+
if (response.data) {
|
|
122
|
+
setData(response.data);
|
|
123
|
+
store_1.getFilterStore().saveData(namespace, response.data);
|
|
124
|
+
}
|
|
119
125
|
}
|
|
120
126
|
if (isPromise(response)) {
|
|
121
127
|
response.then(handleResponse).finally(function () { return setIsLoading(false); });
|
|
@@ -135,6 +141,7 @@ function useFilter(namespace, options) {
|
|
|
135
141
|
}, [filterInfo, setFilterInfo, namespace]);
|
|
136
142
|
return {
|
|
137
143
|
isLoading: isLoading,
|
|
144
|
+
data: data,
|
|
138
145
|
doesFilterExist: doesFilterExist.current,
|
|
139
146
|
filterInfo: filterInfo || buildDefaultFilterInfo_1.default(options.defaultFilterInfo),
|
|
140
147
|
updateFilter: function (filter) {
|