react-hook-core 0.1.12 → 0.1.13
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/lib/components.js +1 -5
- package/lib/route.js +30 -2
- package/lib/search.js +35 -12
- package/lib/state.js +1 -1
- package/lib/useSearch.js +12 -8
- package/package.json +1 -1
- package/src/components.ts +1 -5
- package/src/route.ts +35 -2
- package/src/search.ts +25 -12
- package/src/state.ts +12 -12
- package/src/useSearch.ts +13 -9
package/lib/components.js
CHANGED
|
@@ -385,12 +385,8 @@ var BaseSearchComponent = (function (_super) {
|
|
|
385
385
|
if (!lc) {
|
|
386
386
|
lc = state_1.enLocale;
|
|
387
387
|
}
|
|
388
|
-
var cc = this.getCurrencyCode();
|
|
389
388
|
var fields = this.getFields();
|
|
390
|
-
var
|
|
391
|
-
var f = this.getSearchForm();
|
|
392
|
-
var dc = (this.ui ? this.ui.decodeFromForm : undefined);
|
|
393
|
-
var obj3 = search_1.getModel(this.state, name, this, fields, this.excluding, this.keys, l, f, dc, lc, cc);
|
|
389
|
+
var obj3 = search_1.getModel(this.state, name, this, fields, this.excluding);
|
|
394
390
|
return obj3;
|
|
395
391
|
};
|
|
396
392
|
BaseSearchComponent.prototype.getFields = function () {
|
package/lib/route.js
CHANGED
|
@@ -11,7 +11,35 @@ function buildParameters(url) {
|
|
|
11
11
|
if (i >= 0) {
|
|
12
12
|
urlSearch = url.substring(i + 1);
|
|
13
13
|
}
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
try {
|
|
15
|
+
var parsed = convertToObject(qs.parse(urlSearch));
|
|
16
|
+
return parsed;
|
|
17
|
+
}
|
|
18
|
+
catch (error) {
|
|
19
|
+
console.log(error);
|
|
20
|
+
throw error;
|
|
21
|
+
}
|
|
16
22
|
}
|
|
17
23
|
exports.buildParameters = buildParameters;
|
|
24
|
+
function convertToObject(input) {
|
|
25
|
+
var output = {};
|
|
26
|
+
for (var key in input) {
|
|
27
|
+
var value = input[key];
|
|
28
|
+
var keys = key.split('.');
|
|
29
|
+
var currentObj = output;
|
|
30
|
+
for (var i = 0; i < keys.length; i++) {
|
|
31
|
+
var currentKey = keys[i];
|
|
32
|
+
if (!currentObj[currentKey]) {
|
|
33
|
+
if (i === keys.length - 1) {
|
|
34
|
+
currentObj[currentKey] = value;
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
currentObj[currentKey] = {};
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
currentObj = currentObj[currentKey];
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return output;
|
|
44
|
+
}
|
|
45
|
+
exports.convertToObject = convertToObject;
|
package/lib/search.js
CHANGED
|
@@ -1,4 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __spreadArrays = (this && this.__spreadArrays) || function () {
|
|
3
|
+
for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
|
|
4
|
+
for (var r = Array(s), k = 0, i = 0; i < il; i++)
|
|
5
|
+
for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
|
|
6
|
+
r[k] = a[j];
|
|
7
|
+
return r;
|
|
8
|
+
};
|
|
2
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
10
|
var resources = (function () {
|
|
4
11
|
function resources() {
|
|
@@ -156,9 +163,36 @@ function optimizeFilter(obj, searchable, fields) {
|
|
|
156
163
|
else {
|
|
157
164
|
delete obj.sort;
|
|
158
165
|
}
|
|
166
|
+
if (searchable) {
|
|
167
|
+
mapObjects(obj, searchable);
|
|
168
|
+
}
|
|
159
169
|
return obj;
|
|
160
170
|
}
|
|
161
171
|
exports.optimizeFilter = optimizeFilter;
|
|
172
|
+
function mapObjects(objA, objB) {
|
|
173
|
+
var _a;
|
|
174
|
+
for (var key in objA) {
|
|
175
|
+
if (objB.hasOwnProperty(key) && objB[key] !== null && objB[key] !== undefined) {
|
|
176
|
+
if (Array.isArray(objA[key])) {
|
|
177
|
+
objA[key] = [];
|
|
178
|
+
if (Array.isArray(objB[key]) && objB[key].length === 0) {
|
|
179
|
+
}
|
|
180
|
+
else {
|
|
181
|
+
var arrayObjKeyB = objB[key].length > 0 ? (_a = (objB[key])) === null || _a === void 0 ? void 0 : _a.split(',') : [];
|
|
182
|
+
if (arrayObjKeyB && arrayObjKeyB.length > 1) {
|
|
183
|
+
objA[key] = __spreadArrays(arrayObjKeyB);
|
|
184
|
+
}
|
|
185
|
+
else {
|
|
186
|
+
objA[key].push(objB[key]);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
else {
|
|
191
|
+
objA[key] = objB[key];
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}
|
|
162
196
|
function append(list, results) {
|
|
163
197
|
if (list && results) {
|
|
164
198
|
for (var _i = 0, results_1 = results; _i < results_1.length; _i++) {
|
|
@@ -527,22 +561,11 @@ function toggleSortStyle(target) {
|
|
|
527
561
|
return field;
|
|
528
562
|
}
|
|
529
563
|
exports.toggleSortStyle = toggleSortStyle;
|
|
530
|
-
function getModel(state, modelName, searchable, fields, excluding
|
|
564
|
+
function getModel(state, modelName, searchable, fields, excluding) {
|
|
531
565
|
var obj2 = getModelFromState(state, modelName);
|
|
532
|
-
if (f && dc) {
|
|
533
|
-
obj2 = dc(f, lc, currencyCode);
|
|
534
|
-
}
|
|
535
566
|
var obj = obj2 ? obj2 : {};
|
|
536
567
|
var obj3 = optimizeFilter(obj, searchable, fields);
|
|
537
568
|
obj3.excluding = excluding;
|
|
538
|
-
if (keys && keys.length === 1) {
|
|
539
|
-
if (l && l.length > 0) {
|
|
540
|
-
var refId = l[l.length - 1][keys[0]];
|
|
541
|
-
if (refId) {
|
|
542
|
-
obj3.refId = '' + refId;
|
|
543
|
-
}
|
|
544
|
-
}
|
|
545
|
-
}
|
|
546
569
|
return obj3;
|
|
547
570
|
}
|
|
548
571
|
exports.getModel = getModel;
|
package/lib/state.js
CHANGED
|
@@ -123,7 +123,7 @@ function buildState(e, state, ctrl, modelName, tloc) {
|
|
|
123
123
|
var objSet = {};
|
|
124
124
|
try {
|
|
125
125
|
var selectedDate = new Date(ctrl.value);
|
|
126
|
-
reflect_1.setValue(model, field, selectedDate);
|
|
126
|
+
reflect_1.setValue(model, field, selectedDate.toISOString());
|
|
127
127
|
objSet[modelName] = model;
|
|
128
128
|
return objSet;
|
|
129
129
|
}
|
package/lib/useSearch.js
CHANGED
|
@@ -102,7 +102,7 @@ exports.mergeParam = mergeParam;
|
|
|
102
102
|
exports.useSearch = function (refForm, initialState, service, p2, p) {
|
|
103
103
|
var baseProps = exports.useCoreSearch(refForm, initialState, service, p2, p);
|
|
104
104
|
react_1.useEffect(function () {
|
|
105
|
-
var load = baseProps.load, setState = baseProps.setState, component = baseProps.component;
|
|
105
|
+
var load = baseProps.load, setState = baseProps.setState, component = baseProps.component, searchError = baseProps.searchError;
|
|
106
106
|
if (refForm) {
|
|
107
107
|
var registerEvents = (p2.ui ? p2.ui.registerEvents : undefined);
|
|
108
108
|
core_1.initForm(refForm.current, registerEvents);
|
|
@@ -112,8 +112,13 @@ exports.useSearch = function (refForm, initialState, service, p2, p) {
|
|
|
112
112
|
}
|
|
113
113
|
else {
|
|
114
114
|
var se = (p && p.createFilter ? p.createFilter() : undefined);
|
|
115
|
-
|
|
116
|
-
|
|
115
|
+
try {
|
|
116
|
+
var s = search_1.mergeFilter(route_1.buildFromUrl(), se, component.pageSizes);
|
|
117
|
+
load(s, p2.auto);
|
|
118
|
+
}
|
|
119
|
+
catch (error) {
|
|
120
|
+
searchError(error);
|
|
121
|
+
}
|
|
117
122
|
}
|
|
118
123
|
}, []);
|
|
119
124
|
return __assign({}, baseProps);
|
|
@@ -163,9 +168,7 @@ exports.useCoreSearch = function (refForm, initialState, service, p1, p2) {
|
|
|
163
168
|
if (!fs || fs.length <= 0) {
|
|
164
169
|
fs = getFields();
|
|
165
170
|
}
|
|
166
|
-
var
|
|
167
|
-
var cc = getCurrencyCode();
|
|
168
|
-
var obj3 = search_1.getModel(state, n, se, fs, se.excluding, keys, se.list, refForm.current, core_1.getDecodeFromForm(p1), lc, cc);
|
|
171
|
+
var obj3 = search_1.getModel(state, n, se, fs, se.excluding);
|
|
169
172
|
return obj3;
|
|
170
173
|
};
|
|
171
174
|
var getFilter = p && p.getFilter ? p.getFilter : _getFilter;
|
|
@@ -184,7 +187,7 @@ exports.useCoreSearch = function (refForm, initialState, service, p1, p2) {
|
|
|
184
187
|
var runSearch = doSearch;
|
|
185
188
|
if (auto) {
|
|
186
189
|
setTimeout(function () {
|
|
187
|
-
runSearch(
|
|
190
|
+
runSearch(obj2, true);
|
|
188
191
|
}, 0);
|
|
189
192
|
}
|
|
190
193
|
};
|
|
@@ -304,6 +307,7 @@ exports.useCoreSearch = function (refForm, initialState, service, p1, p2) {
|
|
|
304
307
|
var searchError = function (err) {
|
|
305
308
|
setComponent({ pageIndex: component.tmpPageIndex });
|
|
306
309
|
core_1.error(err, p1.resource.value, p1.showError);
|
|
310
|
+
core_1.hideLoading(p1.loading);
|
|
307
311
|
};
|
|
308
312
|
var appendList = (p && p.appendList ? p.appendList : appendListOfState);
|
|
309
313
|
var setList = (p && p.setList ? p.setList : setListOfState);
|
|
@@ -379,6 +383,6 @@ exports.useCoreSearch = function (refForm, initialState, service, p1, p2) {
|
|
|
379
383
|
clearQ: clearQ,
|
|
380
384
|
showResults: showResults,
|
|
381
385
|
getFields: getFields,
|
|
382
|
-
getModelName: getModelName, format: p ? p.format : undefined
|
|
386
|
+
getModelName: getModelName, format: p ? p.format : undefined, searchError: searchError
|
|
383
387
|
});
|
|
384
388
|
};
|
package/package.json
CHANGED
package/src/components.ts
CHANGED
|
@@ -420,12 +420,8 @@ export class BaseSearchComponent<T, F extends Filter, P, I extends SearchState<T
|
|
|
420
420
|
if (!lc) {
|
|
421
421
|
lc = enLocale;
|
|
422
422
|
}
|
|
423
|
-
const cc = this.getCurrencyCode();
|
|
424
423
|
const fields = this.getFields();
|
|
425
|
-
const
|
|
426
|
-
const f = this.getSearchForm();
|
|
427
|
-
const dc = (this.ui ? this.ui.decodeFromForm : undefined);
|
|
428
|
-
const obj3 = getModel<T, F>(this.state, name, this, fields, this.excluding, this.keys, l, f, dc, lc, cc);
|
|
424
|
+
const obj3 = getModel<T, F>(this.state, name, this, fields, this.excluding);
|
|
429
425
|
return obj3;
|
|
430
426
|
}
|
|
431
427
|
getFields(): string[]|undefined {
|
package/src/route.ts
CHANGED
|
@@ -4,11 +4,44 @@ export function buildFromUrl<S>(): S {
|
|
|
4
4
|
return buildParameters(window.location.search);
|
|
5
5
|
}
|
|
6
6
|
export function buildParameters<T>(url: string): T {
|
|
7
|
+
|
|
7
8
|
let urlSearch = url;
|
|
8
9
|
const i = urlSearch.indexOf('?');
|
|
9
10
|
if (i >= 0) {
|
|
10
11
|
urlSearch = url.substring(i + 1);
|
|
11
12
|
}
|
|
12
|
-
|
|
13
|
-
|
|
13
|
+
try {
|
|
14
|
+
const parsed: any = convertToObject(qs.parse(urlSearch));
|
|
15
|
+
return parsed;
|
|
16
|
+
|
|
17
|
+
} catch (error) {
|
|
18
|
+
console.log(error);
|
|
19
|
+
throw error;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export function convertToObject(input: any) {
|
|
24
|
+
const output = {};
|
|
25
|
+
|
|
26
|
+
for (let key in input) {
|
|
27
|
+
const value = input[key];
|
|
28
|
+
const keys = key.split('.');
|
|
29
|
+
|
|
30
|
+
let currentObj = output as any;
|
|
31
|
+
for (let i = 0; i < keys.length; i++) {
|
|
32
|
+
const currentKey = keys[i];
|
|
33
|
+
|
|
34
|
+
if (!currentObj[currentKey]) {
|
|
35
|
+
if (i === keys.length - 1) {
|
|
36
|
+
currentObj[currentKey] = value;
|
|
37
|
+
} else {
|
|
38
|
+
currentObj[currentKey] = {};
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
currentObj = currentObj[currentKey];
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
return output;
|
|
14
47
|
}
|
package/src/search.ts
CHANGED
|
@@ -188,9 +188,33 @@ export function optimizeFilter<S extends Filter>(obj: S, searchable: Searchable,
|
|
|
188
188
|
} else {
|
|
189
189
|
delete obj.sort;
|
|
190
190
|
}
|
|
191
|
+
if(searchable) {
|
|
192
|
+
mapObjects(obj, searchable as S);
|
|
193
|
+
}
|
|
191
194
|
return obj;
|
|
192
195
|
}
|
|
193
196
|
|
|
197
|
+
function mapObjects(objA: any, objB: any): void {
|
|
198
|
+
for (let key in objA) {
|
|
199
|
+
if (objB.hasOwnProperty(key) && objB[key] !== null && objB[key] !== undefined) {
|
|
200
|
+
if(Array.isArray(objA[key])) {
|
|
201
|
+
objA[key] = [];
|
|
202
|
+
if(Array.isArray(objB[key]) && objB[key].length === 0) {
|
|
203
|
+
} else {
|
|
204
|
+
const arrayObjKeyB = objB[key].length > 0 ? (objB[key])?.split(',') : [];
|
|
205
|
+
if(arrayObjKeyB && arrayObjKeyB.length > 1) {
|
|
206
|
+
objA[key] = [...arrayObjKeyB];
|
|
207
|
+
} else {
|
|
208
|
+
objA[key].push(objB[key])
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
} else {
|
|
212
|
+
objA[key] = objB[key];
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
|
|
194
218
|
export function append<T>(list?: T[], results?: T[]): T[] {
|
|
195
219
|
if (list && results) {
|
|
196
220
|
for (const obj of results) {
|
|
@@ -551,22 +575,11 @@ export function toggleSortStyle(target: HTMLElement): string {
|
|
|
551
575
|
}
|
|
552
576
|
return field;
|
|
553
577
|
}
|
|
554
|
-
export function getModel<T, S extends Filter>(state: any, modelName: string, searchable: Searchable, fields?: string[], excluding?: string[]|number[]
|
|
578
|
+
export function getModel<T, S extends Filter>(state: any, modelName: string, searchable: Searchable, fields?: string[], excluding?: string[]|number[]): S {
|
|
555
579
|
let obj2 = getModelFromState(state, modelName);
|
|
556
|
-
if (f && dc) {
|
|
557
|
-
obj2 = dc(f, lc, currencyCode);
|
|
558
|
-
}
|
|
559
580
|
const obj: any = obj2 ? obj2 : {};
|
|
560
581
|
const obj3 = optimizeFilter(obj, searchable, fields);
|
|
561
582
|
obj3.excluding = excluding;
|
|
562
|
-
if (keys && keys.length === 1) {
|
|
563
|
-
if (l && l.length > 0) {
|
|
564
|
-
const refId = (l[l.length - 1] as any)[keys[0]];
|
|
565
|
-
if (refId) {
|
|
566
|
-
obj3.refId = '' + refId;
|
|
567
|
-
}
|
|
568
|
-
}
|
|
569
|
-
}
|
|
570
583
|
return obj3;
|
|
571
584
|
}
|
|
572
585
|
function getModelFromState(state: any, modelName: string): any {
|
package/src/state.ts
CHANGED
|
@@ -103,25 +103,25 @@ export function buildState<S, K extends keyof S>(e: any, state: Readonly<S>, ctr
|
|
|
103
103
|
const objSet: any = {};
|
|
104
104
|
try {
|
|
105
105
|
const selectedDate = new Date(ctrl.value);
|
|
106
|
-
setValue(model, field, selectedDate);
|
|
106
|
+
setValue(model, field, selectedDate.toISOString());
|
|
107
107
|
objSet[modelName] = model;
|
|
108
108
|
return objSet;
|
|
109
109
|
} catch (error) {
|
|
110
110
|
console.error('Error occurred while formatting date:', error);
|
|
111
111
|
}
|
|
112
112
|
return objSet;
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
return objSet;
|
|
120
|
-
} catch (error) {
|
|
121
|
-
console.error('Error occurred while formatting time:', error);
|
|
122
|
-
}
|
|
113
|
+
} else if (type && (type.toLowerCase() === 'time')) {
|
|
114
|
+
const objSet: any = {};
|
|
115
|
+
try {
|
|
116
|
+
const selectedDate = new Date(ctrl.value);
|
|
117
|
+
setValue(model, field, selectedDate.getTime());
|
|
118
|
+
objSet[modelName] = model;
|
|
123
119
|
return objSet;
|
|
124
|
-
}
|
|
120
|
+
} catch (error) {
|
|
121
|
+
console.error('Error occurred while formatting time:', error);
|
|
122
|
+
}
|
|
123
|
+
return objSet;
|
|
124
|
+
} else {
|
|
125
125
|
if (ctrl.tagName === 'SELECT') {
|
|
126
126
|
if (ctrl.value === '' || !ctrl.value) {
|
|
127
127
|
ctrl.removeAttribute('data-value');
|
package/src/useSearch.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import {useEffect, useState} from 'react';
|
|
2
|
-
import {error,
|
|
2
|
+
import {error, getName, getRemoveError, getValidateForm, handleToggle, hideLoading, initForm, Locale, PageChange, pageSizes, removeFormError, ResourceService, SearchParameter, SearchResult, SearchService, showLoading} from './core';
|
|
3
3
|
import {DispatchWithCallback, useMergeState} from './merge';
|
|
4
4
|
import {clone} from './reflect';
|
|
5
5
|
import {buildFromUrl} from './route';
|
|
@@ -196,7 +196,7 @@ export const useSearch = <T, S extends Filter, ST extends SearchComponentState<T
|
|
|
196
196
|
const baseProps = useCoreSearch(refForm, initialState, service, p2, p);
|
|
197
197
|
|
|
198
198
|
useEffect(() => {
|
|
199
|
-
const { load, setState, component } = baseProps;
|
|
199
|
+
const { load, setState, component, searchError } = baseProps;
|
|
200
200
|
if (refForm) {
|
|
201
201
|
const registerEvents = (p2.ui ? p2.ui.registerEvents : undefined);
|
|
202
202
|
initForm(refForm.current, registerEvents);
|
|
@@ -205,8 +205,12 @@ export const useSearch = <T, S extends Filter, ST extends SearchComponentState<T
|
|
|
205
205
|
p.initialize(load, setState, component);
|
|
206
206
|
} else {
|
|
207
207
|
const se: S|undefined = (p && p.createFilter ? p.createFilter() : undefined);
|
|
208
|
-
|
|
209
|
-
|
|
208
|
+
try {
|
|
209
|
+
const s: any = mergeFilter2(buildFromUrl<S>(), se, component.pageSizes);
|
|
210
|
+
load(s, p2.auto);
|
|
211
|
+
} catch (error) {
|
|
212
|
+
searchError(error);
|
|
213
|
+
}
|
|
210
214
|
}
|
|
211
215
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
212
216
|
}, []);
|
|
@@ -272,9 +276,7 @@ export const useCoreSearch = <T, S extends Filter, ST>(
|
|
|
272
276
|
if (!fs || fs.length <= 0) {
|
|
273
277
|
fs = getFields();
|
|
274
278
|
}
|
|
275
|
-
const
|
|
276
|
-
const cc = getCurrencyCode();
|
|
277
|
-
const obj3 = getModel<T, S>(state, n, se, fs, se.excluding, keys, se.list, refForm.current, getDecodeFromForm(p1), lc, cc);
|
|
279
|
+
const obj3 = getModel<T, S>(state, n, se, fs, se.excluding);
|
|
278
280
|
return obj3;
|
|
279
281
|
};
|
|
280
282
|
const getFilter = p && p.getFilter ? p.getFilter : _getFilter;
|
|
@@ -295,7 +297,7 @@ export const useCoreSearch = <T, S extends Filter, ST>(
|
|
|
295
297
|
const runSearch = doSearch;
|
|
296
298
|
if (auto) {
|
|
297
299
|
setTimeout(() => {
|
|
298
|
-
runSearch(
|
|
300
|
+
runSearch((obj2 as Searchable<T>), true);
|
|
299
301
|
}, 0);
|
|
300
302
|
}
|
|
301
303
|
};
|
|
@@ -420,6 +422,7 @@ export const useCoreSearch = <T, S extends Filter, ST>(
|
|
|
420
422
|
const searchError = (err: any): void => {
|
|
421
423
|
setComponent({ pageIndex: component.tmpPageIndex });
|
|
422
424
|
error(err, p1.resource.value, p1.showError);
|
|
425
|
+
hideLoading(p1.loading)
|
|
423
426
|
};
|
|
424
427
|
const appendList = (p && p.appendList ? p.appendList : appendListOfState);
|
|
425
428
|
const setList = (p && p.setList ? p.setList : setListOfState);
|
|
@@ -502,6 +505,7 @@ export const useCoreSearch = <T, S extends Filter, ST>(
|
|
|
502
505
|
showResults,
|
|
503
506
|
getFields,
|
|
504
507
|
getModelName,
|
|
505
|
-
format: p ? p.format : undefined
|
|
508
|
+
format: p ? p.format : undefined,
|
|
509
|
+
searchError
|
|
506
510
|
};
|
|
507
511
|
};
|