@cgarciagarcia/react-query-builder 1.0.0 → 1.3.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 +42 -1
- package/dist/actions/filter.js +44 -0
- package/dist/actions/include.js +23 -0
- package/{src/actions/index.ts → dist/actions/index.js} +0 -2
- package/dist/actions/sort.js +26 -0
- package/dist/dist/actions/filter.js +47 -0
- package/dist/dist/actions/include.js +26 -0
- package/dist/dist/actions/index.js +3 -0
- package/dist/dist/actions/sort.js +29 -0
- package/dist/dist/dist/actions/filter.js +47 -0
- package/dist/dist/dist/actions/include.js +26 -0
- package/dist/dist/dist/actions/index.js +3 -0
- package/dist/dist/dist/actions/sort.js +29 -0
- package/dist/dist/dist/useQueryBuilder.js +86 -0
- package/dist/dist/dist/utils/alias.js +4 -0
- package/dist/dist/dist/utils/build.js +30 -0
- package/dist/dist/dist/utils/state.js +1 -0
- package/dist/dist/index.js +3 -0
- package/dist/dist/useQueryBuilder.js +86 -0
- package/dist/dist/utils/alias.js +4 -0
- package/dist/dist/utils/build.js +30 -0
- package/dist/dist/utils/index.js +3 -0
- package/dist/dist/utils/state.js +1 -0
- package/dist/index.js +3 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/useQueryBuilder.js +81 -0
- package/dist/utils/alias.js +4 -0
- package/dist/utils/build.js +29 -0
- package/dist/utils/index.js +3 -0
- package/dist/utils/state.js +1 -0
- package/package.json +8 -4
- package/.eslintignore +0 -0
- package/.eslintrc.cjs +0 -56
- package/.nvmrc +0 -1
- package/.prettierignore +0 -1
- package/bun.lockb +0 -0
- package/index.ts +0 -6
- package/prettier.config.cjs +0 -30
- package/src/actions/filter.ts +0 -44
- package/src/actions/include.ts +0 -13
- package/src/actions/sort.ts +0 -14
- package/src/useQueryBuilder.ts +0 -126
- package/src/utils/alias.ts +0 -11
- package/src/utils/build.ts +0 -31
- package/src/utils/state.ts +0 -8
- package/tsconfig.json +0 -35
- /package/{src/index.ts → dist/dist/dist/index.js} +0 -0
- /package/{src/utils/index.ts → dist/dist/dist/utils/index.js} +0 -0
package/README.md
CHANGED
|
@@ -1 +1,42 @@
|
|
|
1
|
-
|
|
1
|
+
<p><b>JavaScript/TypeScript Query Builder</b> provides a way to build a query string compatible with <a href="https://github.com/spatie/laravel-query-builder">spatie/laravel-query-builder</a>.</p>
|
|
2
|
+
|
|
3
|
+
## Install
|
|
4
|
+
|
|
5
|
+
You can install package using yarn (or npm):
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
yarn add @cgarciagarcia/react-qiery-builder
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Usage
|
|
12
|
+
|
|
13
|
+
This package was thought offer an easy way to interact with backend integration `spatie/laravel-query-builder`
|
|
14
|
+
using your favorite library for frontend `React.js` using a customize hook which you could interact.
|
|
15
|
+
|
|
16
|
+
### All Example
|
|
17
|
+
|
|
18
|
+
Here is a simple example:
|
|
19
|
+
|
|
20
|
+
```js
|
|
21
|
+
import {useQueryBuilder} from "@cgarciagarcia/react-query-builder";
|
|
22
|
+
|
|
23
|
+
const baseConfig = {
|
|
24
|
+
aliases: {
|
|
25
|
+
"frontend_name": "backend_name",
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
const builder = useQueryBuilder(baseConfig)
|
|
30
|
+
.filters("age", 18)
|
|
31
|
+
.sorts("created_at")// by default sorting asc
|
|
32
|
+
.sorts("age", 'desc') // sorting desc
|
|
33
|
+
.includes("posts", "comments")
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
console.log(theQuery.build());
|
|
37
|
+
// /users?filter[age]=18,
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
## License
|
|
41
|
+
|
|
42
|
+
The MIT License (MIT). Please see [License File](LICENSE.md) for more information.
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
|
2
|
+
__assign = Object.assign || function(t) {
|
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
+
s = arguments[i];
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
+
t[p] = s[p];
|
|
7
|
+
}
|
|
8
|
+
return t;
|
|
9
|
+
};
|
|
10
|
+
return __assign.apply(this, arguments);
|
|
11
|
+
};
|
|
12
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
13
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
14
|
+
if (ar || !(i in from)) {
|
|
15
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
16
|
+
ar[i] = from[i];
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
20
|
+
};
|
|
21
|
+
import { usingAlias, } from "@/utils";
|
|
22
|
+
export var filterAction = function (attribute, value, state) {
|
|
23
|
+
var _a;
|
|
24
|
+
var alias = usingAlias(state, attribute);
|
|
25
|
+
var prevFilter;
|
|
26
|
+
var allFilters = state.filters.reduce(function (filters, filter) {
|
|
27
|
+
if (filter.attribute === alias) {
|
|
28
|
+
prevFilter = filter;
|
|
29
|
+
return filters;
|
|
30
|
+
}
|
|
31
|
+
return __spreadArray(__spreadArray([], filters, true), [filter], false);
|
|
32
|
+
}, []);
|
|
33
|
+
var val = Array.isArray(value) ? value : [value];
|
|
34
|
+
var newState = __assign(__assign({}, state), { filters: __spreadArray(__spreadArray([], allFilters, true), [
|
|
35
|
+
{
|
|
36
|
+
attribute: attribute,
|
|
37
|
+
value: __spreadArray(__spreadArray([], ((_a = prevFilter === null || prevFilter === void 0 ? void 0 : prevFilter.value) !== null && _a !== void 0 ? _a : []), true), val, true),
|
|
38
|
+
},
|
|
39
|
+
], false) });
|
|
40
|
+
return newState;
|
|
41
|
+
};
|
|
42
|
+
export var clearFilterAction = function (state) {
|
|
43
|
+
return __assign(__assign({}, state), { filters: [] });
|
|
44
|
+
};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
|
2
|
+
__assign = Object.assign || function(t) {
|
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
+
s = arguments[i];
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
+
t[p] = s[p];
|
|
7
|
+
}
|
|
8
|
+
return t;
|
|
9
|
+
};
|
|
10
|
+
return __assign.apply(this, arguments);
|
|
11
|
+
};
|
|
12
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
13
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
14
|
+
if (ar || !(i in from)) {
|
|
15
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
16
|
+
ar[i] = from[i];
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
20
|
+
};
|
|
21
|
+
export var includeAction = function (includes, state) {
|
|
22
|
+
return __assign(__assign({}, state), { includes: __spreadArray(__spreadArray([], state.includes, true), [includes], false) });
|
|
23
|
+
};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
|
2
|
+
__assign = Object.assign || function(t) {
|
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
+
s = arguments[i];
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
+
t[p] = s[p];
|
|
7
|
+
}
|
|
8
|
+
return t;
|
|
9
|
+
};
|
|
10
|
+
return __assign.apply(this, arguments);
|
|
11
|
+
};
|
|
12
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
13
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
14
|
+
if (ar || !(i in from)) {
|
|
15
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
16
|
+
ar[i] = from[i];
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
20
|
+
};
|
|
21
|
+
import { usingAlias } from "@/index";
|
|
22
|
+
export var sortAction = function (sorts, state) {
|
|
23
|
+
var attribute = sorts[0], direction = sorts[1];
|
|
24
|
+
var attributeAliased = usingAlias(state, attribute);
|
|
25
|
+
return __assign(__assign({}, state), { sorts: __spreadArray(__spreadArray([], state.sorts, true), [[attributeAliased, direction]], false) });
|
|
26
|
+
};
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
|
2
|
+
__assign = Object.assign || function (t) {
|
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
+
s = arguments[i];
|
|
5
|
+
for (var p in s)
|
|
6
|
+
if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
14
|
+
if (pack || arguments.length === 2)
|
|
15
|
+
for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
16
|
+
if (ar || !(i in from)) {
|
|
17
|
+
if (!ar)
|
|
18
|
+
ar = Array.prototype.slice.call(from, 0, i);
|
|
19
|
+
ar[i] = from[i];
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
23
|
+
};
|
|
24
|
+
import { usingAlias, } from "@/utils";
|
|
25
|
+
export var filterAction = function (attribute, value, state) {
|
|
26
|
+
var _a;
|
|
27
|
+
var alias = usingAlias(state, attribute);
|
|
28
|
+
var prevFilter;
|
|
29
|
+
var allFilters = state.filters.reduce(function (filters, filter) {
|
|
30
|
+
if (filter.attribute === alias) {
|
|
31
|
+
prevFilter = filter;
|
|
32
|
+
return filters;
|
|
33
|
+
}
|
|
34
|
+
return __spreadArray(__spreadArray([], filters, true), [filter], false);
|
|
35
|
+
}, []);
|
|
36
|
+
var val = Array.isArray(value) ? value : [value];
|
|
37
|
+
var newState = __assign(__assign({}, state), { filters: __spreadArray(__spreadArray([], allFilters, true), [
|
|
38
|
+
{
|
|
39
|
+
attribute: attribute,
|
|
40
|
+
value: __spreadArray(__spreadArray([], ((_a = prevFilter === null || prevFilter === void 0 ? void 0 : prevFilter.value) !== null && _a !== void 0 ? _a : []), true), val, true),
|
|
41
|
+
},
|
|
42
|
+
], false) });
|
|
43
|
+
return newState;
|
|
44
|
+
};
|
|
45
|
+
export var clearFilterAction = function (state) {
|
|
46
|
+
return __assign(__assign({}, state), { filters: [] });
|
|
47
|
+
};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
|
2
|
+
__assign = Object.assign || function (t) {
|
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
+
s = arguments[i];
|
|
5
|
+
for (var p in s)
|
|
6
|
+
if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
14
|
+
if (pack || arguments.length === 2)
|
|
15
|
+
for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
16
|
+
if (ar || !(i in from)) {
|
|
17
|
+
if (!ar)
|
|
18
|
+
ar = Array.prototype.slice.call(from, 0, i);
|
|
19
|
+
ar[i] = from[i];
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
23
|
+
};
|
|
24
|
+
export var includeAction = function (includes, state) {
|
|
25
|
+
return __assign(__assign({}, state), { includes: __spreadArray(__spreadArray([], state.includes, true), [includes], false) });
|
|
26
|
+
};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
|
2
|
+
__assign = Object.assign || function (t) {
|
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
+
s = arguments[i];
|
|
5
|
+
for (var p in s)
|
|
6
|
+
if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
14
|
+
if (pack || arguments.length === 2)
|
|
15
|
+
for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
16
|
+
if (ar || !(i in from)) {
|
|
17
|
+
if (!ar)
|
|
18
|
+
ar = Array.prototype.slice.call(from, 0, i);
|
|
19
|
+
ar[i] = from[i];
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
23
|
+
};
|
|
24
|
+
import { usingAlias } from "@/index";
|
|
25
|
+
export var sortAction = function (sorts, state) {
|
|
26
|
+
var attribute = sorts[0], direction = sorts[1];
|
|
27
|
+
var attributeAliased = usingAlias(state, attribute);
|
|
28
|
+
return __assign(__assign({}, state), { sorts: __spreadArray(__spreadArray([], state.sorts, true), [[attributeAliased, direction]], false) });
|
|
29
|
+
};
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
|
2
|
+
__assign = Object.assign || function (t) {
|
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
+
s = arguments[i];
|
|
5
|
+
for (var p in s)
|
|
6
|
+
if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
14
|
+
if (pack || arguments.length === 2)
|
|
15
|
+
for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
16
|
+
if (ar || !(i in from)) {
|
|
17
|
+
if (!ar)
|
|
18
|
+
ar = Array.prototype.slice.call(from, 0, i);
|
|
19
|
+
ar[i] = from[i];
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
23
|
+
};
|
|
24
|
+
import { usingAlias, } from "@/utils";
|
|
25
|
+
export var filterAction = function (attribute, value, state) {
|
|
26
|
+
var _a;
|
|
27
|
+
var alias = usingAlias(state, attribute);
|
|
28
|
+
var prevFilter;
|
|
29
|
+
var allFilters = state.filters.reduce(function (filters, filter) {
|
|
30
|
+
if (filter.attribute === alias) {
|
|
31
|
+
prevFilter = filter;
|
|
32
|
+
return filters;
|
|
33
|
+
}
|
|
34
|
+
return __spreadArray(__spreadArray([], filters, true), [filter], false);
|
|
35
|
+
}, []);
|
|
36
|
+
var val = Array.isArray(value) ? value : [value];
|
|
37
|
+
var newState = __assign(__assign({}, state), { filters: __spreadArray(__spreadArray([], allFilters, true), [
|
|
38
|
+
{
|
|
39
|
+
attribute: attribute,
|
|
40
|
+
value: __spreadArray(__spreadArray([], ((_a = prevFilter === null || prevFilter === void 0 ? void 0 : prevFilter.value) !== null && _a !== void 0 ? _a : []), true), val, true),
|
|
41
|
+
},
|
|
42
|
+
], false) });
|
|
43
|
+
return newState;
|
|
44
|
+
};
|
|
45
|
+
export var clearFilterAction = function (state) {
|
|
46
|
+
return __assign(__assign({}, state), { filters: [] });
|
|
47
|
+
};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
|
2
|
+
__assign = Object.assign || function (t) {
|
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
+
s = arguments[i];
|
|
5
|
+
for (var p in s)
|
|
6
|
+
if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
14
|
+
if (pack || arguments.length === 2)
|
|
15
|
+
for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
16
|
+
if (ar || !(i in from)) {
|
|
17
|
+
if (!ar)
|
|
18
|
+
ar = Array.prototype.slice.call(from, 0, i);
|
|
19
|
+
ar[i] = from[i];
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
23
|
+
};
|
|
24
|
+
export var includeAction = function (includes, state) {
|
|
25
|
+
return __assign(__assign({}, state), { includes: __spreadArray(__spreadArray([], state.includes, true), [includes], false) });
|
|
26
|
+
};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
|
2
|
+
__assign = Object.assign || function (t) {
|
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
+
s = arguments[i];
|
|
5
|
+
for (var p in s)
|
|
6
|
+
if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
14
|
+
if (pack || arguments.length === 2)
|
|
15
|
+
for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
16
|
+
if (ar || !(i in from)) {
|
|
17
|
+
if (!ar)
|
|
18
|
+
ar = Array.prototype.slice.call(from, 0, i);
|
|
19
|
+
ar[i] = from[i];
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
23
|
+
};
|
|
24
|
+
import { usingAlias } from "@/index";
|
|
25
|
+
export var sortAction = function (sorts, state) {
|
|
26
|
+
var attribute = sorts[0], direction = sorts[1];
|
|
27
|
+
var attributeAliased = usingAlias(state, attribute);
|
|
28
|
+
return __assign(__assign({}, state), { sorts: __spreadArray(__spreadArray([], state.sorts, true), [[attributeAliased, direction]], false) });
|
|
29
|
+
};
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
|
2
|
+
__assign = Object.assign || function (t) {
|
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
+
s = arguments[i];
|
|
5
|
+
for (var p in s)
|
|
6
|
+
if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
import { useReducer, useState } from "react";
|
|
14
|
+
import { build, clearFilterAction, filterAction, includeAction, sortAction, } from "@/index";
|
|
15
|
+
var reducer = function (state, action) {
|
|
16
|
+
switch (action === null || action === void 0 ? void 0 : action.type) {
|
|
17
|
+
case "filter": {
|
|
18
|
+
var filter = action.payload;
|
|
19
|
+
return filterAction(filter.attribute, filter.value, state);
|
|
20
|
+
}
|
|
21
|
+
case "clear_filter": {
|
|
22
|
+
return clearFilterAction(state);
|
|
23
|
+
}
|
|
24
|
+
case "include": {
|
|
25
|
+
var includes = action.payload;
|
|
26
|
+
return includeAction(includes, state);
|
|
27
|
+
}
|
|
28
|
+
case "sort": {
|
|
29
|
+
var sorts = action.payload;
|
|
30
|
+
return sortAction(sorts, state);
|
|
31
|
+
}
|
|
32
|
+
default: {
|
|
33
|
+
return __assign({}, state);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
var initialState = function () {
|
|
38
|
+
return ({
|
|
39
|
+
aliases: {},
|
|
40
|
+
filters: [],
|
|
41
|
+
includes: [],
|
|
42
|
+
sorts: [],
|
|
43
|
+
});
|
|
44
|
+
};
|
|
45
|
+
export var useQueryBuilder = function (config) {
|
|
46
|
+
if (config === void 0) {
|
|
47
|
+
config = {};
|
|
48
|
+
}
|
|
49
|
+
var init = useState(function () { return initialState(); })[0];
|
|
50
|
+
var _a = useReducer(reducer, init, function (init) {
|
|
51
|
+
var _a;
|
|
52
|
+
return (__assign(__assign({}, init), { aliases: (_a = config === null || config === void 0 ? void 0 : config.aliases) !== null && _a !== void 0 ? _a : {} }));
|
|
53
|
+
}), state = _a[0], dispatch = _a[1];
|
|
54
|
+
var builder = {
|
|
55
|
+
filters: function (attribute, value) {
|
|
56
|
+
dispatch({
|
|
57
|
+
type: "filter",
|
|
58
|
+
payload: { attribute: attribute, value: value },
|
|
59
|
+
});
|
|
60
|
+
return builder;
|
|
61
|
+
},
|
|
62
|
+
build: function () { return build(state); },
|
|
63
|
+
clearFilters: function () {
|
|
64
|
+
dispatch({
|
|
65
|
+
type: "clear_filter",
|
|
66
|
+
payload: undefined,
|
|
67
|
+
});
|
|
68
|
+
return builder;
|
|
69
|
+
},
|
|
70
|
+
includes: function (includes) {
|
|
71
|
+
dispatch({
|
|
72
|
+
type: "include",
|
|
73
|
+
payload: includes,
|
|
74
|
+
});
|
|
75
|
+
return builder;
|
|
76
|
+
},
|
|
77
|
+
sorts: function (attribute, direction) {
|
|
78
|
+
dispatch({
|
|
79
|
+
type: "sort",
|
|
80
|
+
payload: [attribute, direction !== null && direction !== void 0 ? direction : "asc"],
|
|
81
|
+
});
|
|
82
|
+
return builder;
|
|
83
|
+
},
|
|
84
|
+
};
|
|
85
|
+
return builder;
|
|
86
|
+
};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
|
2
|
+
__assign = Object.assign || function (t) {
|
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
+
s = arguments[i];
|
|
5
|
+
for (var p in s)
|
|
6
|
+
if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
export var build = function (state) {
|
|
14
|
+
var filters = state.filters.reduce(function (acc, filter) {
|
|
15
|
+
var _a;
|
|
16
|
+
return (__assign(__assign({}, acc), (_a = {}, _a["filters[".concat(filter.attribute, "]")] = filter.value.join(","), _a)));
|
|
17
|
+
}, {});
|
|
18
|
+
var sorts = state.sorts.reduce(function (acc, sort) {
|
|
19
|
+
var attribute = sort[0], dir = sort[1];
|
|
20
|
+
var direction = dir === "desc" ? "-" : "";
|
|
21
|
+
acc.push("".concat(direction).concat(attribute));
|
|
22
|
+
return acc;
|
|
23
|
+
}, []);
|
|
24
|
+
var urlSearchParams = new URLSearchParams(__assign({}, filters));
|
|
25
|
+
if (sorts.length > 0) {
|
|
26
|
+
urlSearchParams.append("sort", sorts.join(","));
|
|
27
|
+
}
|
|
28
|
+
var searchParamsString = urlSearchParams.toString();
|
|
29
|
+
return searchParamsString ? "?" + urlSearchParams.toString() : "";
|
|
30
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
|
2
|
+
__assign = Object.assign || function (t) {
|
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
+
s = arguments[i];
|
|
5
|
+
for (var p in s)
|
|
6
|
+
if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
import { useReducer, useState } from "react";
|
|
14
|
+
import { build, clearFilterAction, filterAction, includeAction, sortAction, } from "@/index";
|
|
15
|
+
var reducer = function (state, action) {
|
|
16
|
+
switch (action === null || action === void 0 ? void 0 : action.type) {
|
|
17
|
+
case "filter": {
|
|
18
|
+
var filter = action.payload;
|
|
19
|
+
return filterAction(filter.attribute, filter.value, state);
|
|
20
|
+
}
|
|
21
|
+
case "clear_filter": {
|
|
22
|
+
return clearFilterAction(state);
|
|
23
|
+
}
|
|
24
|
+
case "include": {
|
|
25
|
+
var includes = action.payload;
|
|
26
|
+
return includeAction(includes, state);
|
|
27
|
+
}
|
|
28
|
+
case "sort": {
|
|
29
|
+
var sorts = action.payload;
|
|
30
|
+
return sortAction(sorts, state);
|
|
31
|
+
}
|
|
32
|
+
default: {
|
|
33
|
+
return __assign({}, state);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
var initialState = function () {
|
|
38
|
+
return ({
|
|
39
|
+
aliases: {},
|
|
40
|
+
filters: [],
|
|
41
|
+
includes: [],
|
|
42
|
+
sorts: [],
|
|
43
|
+
});
|
|
44
|
+
};
|
|
45
|
+
export var useQueryBuilder = function (config) {
|
|
46
|
+
if (config === void 0) {
|
|
47
|
+
config = {};
|
|
48
|
+
}
|
|
49
|
+
var init = useState(function () { return initialState(); })[0];
|
|
50
|
+
var _a = useReducer(reducer, init, function (init) {
|
|
51
|
+
var _a;
|
|
52
|
+
return (__assign(__assign({}, init), { aliases: (_a = config === null || config === void 0 ? void 0 : config.aliases) !== null && _a !== void 0 ? _a : {} }));
|
|
53
|
+
}), state = _a[0], dispatch = _a[1];
|
|
54
|
+
var builder = {
|
|
55
|
+
filters: function (attribute, value) {
|
|
56
|
+
dispatch({
|
|
57
|
+
type: "filter",
|
|
58
|
+
payload: { attribute: attribute, value: value },
|
|
59
|
+
});
|
|
60
|
+
return builder;
|
|
61
|
+
},
|
|
62
|
+
build: function () { return build(state); },
|
|
63
|
+
clearFilters: function () {
|
|
64
|
+
dispatch({
|
|
65
|
+
type: "clear_filter",
|
|
66
|
+
payload: undefined,
|
|
67
|
+
});
|
|
68
|
+
return builder;
|
|
69
|
+
},
|
|
70
|
+
includes: function (includes) {
|
|
71
|
+
dispatch({
|
|
72
|
+
type: "include",
|
|
73
|
+
payload: includes,
|
|
74
|
+
});
|
|
75
|
+
return builder;
|
|
76
|
+
},
|
|
77
|
+
sorts: function (attribute, direction) {
|
|
78
|
+
dispatch({
|
|
79
|
+
type: "sort",
|
|
80
|
+
payload: [attribute, direction !== null && direction !== void 0 ? direction : "asc"],
|
|
81
|
+
});
|
|
82
|
+
return builder;
|
|
83
|
+
},
|
|
84
|
+
};
|
|
85
|
+
return builder;
|
|
86
|
+
};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
|
2
|
+
__assign = Object.assign || function (t) {
|
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
+
s = arguments[i];
|
|
5
|
+
for (var p in s)
|
|
6
|
+
if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
export var build = function (state) {
|
|
14
|
+
var filters = state.filters.reduce(function (acc, filter) {
|
|
15
|
+
var _a;
|
|
16
|
+
return (__assign(__assign({}, acc), (_a = {}, _a["filters[".concat(filter.attribute, "]")] = filter.value.join(","), _a)));
|
|
17
|
+
}, {});
|
|
18
|
+
var sorts = state.sorts.reduce(function (acc, sort) {
|
|
19
|
+
var attribute = sort[0], dir = sort[1];
|
|
20
|
+
var direction = dir === "desc" ? "-" : "";
|
|
21
|
+
acc.push("".concat(direction).concat(attribute));
|
|
22
|
+
return acc;
|
|
23
|
+
}, []);
|
|
24
|
+
var urlSearchParams = new URLSearchParams(__assign({}, filters));
|
|
25
|
+
if (sorts.length > 0) {
|
|
26
|
+
urlSearchParams.append("sort", sorts.join(","));
|
|
27
|
+
}
|
|
28
|
+
var searchParamsString = urlSearchParams.toString();
|
|
29
|
+
return searchParamsString ? "?" + urlSearchParams.toString() : "";
|
|
30
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/dist/index.js
ADDED