react-hook-core 0.3.0 → 0.3.2
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/core.js +0 -13
- package/lib/reflect.js +14 -0
- package/lib/search.js +137 -69
- package/lib/useSearch.js +3 -5
- package/package.json +1 -1
- package/src/core.ts +0 -11
- package/src/reflect.ts +24 -0
- package/src/route.ts +2 -1
- package/src/search.ts +149 -87
- package/src/useSearch.ts +9 -10
- package/tsconfig.json +2 -1
package/lib/core.js
CHANGED
|
@@ -235,16 +235,3 @@ function getValidateForm(u, vf) {
|
|
|
235
235
|
return (u && u.ui ? u.ui.validateForm : undefined);
|
|
236
236
|
}
|
|
237
237
|
exports.getValidateForm = getValidateForm;
|
|
238
|
-
function handleToggle(target, on) {
|
|
239
|
-
if (target) {
|
|
240
|
-
if (on) {
|
|
241
|
-
if (!target.classList.contains('on')) {
|
|
242
|
-
target.classList.add('on');
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
|
-
else {
|
|
246
|
-
target.classList.remove('on');
|
|
247
|
-
}
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
exports.handleToggle = handleToggle;
|
package/lib/reflect.js
CHANGED
|
@@ -152,6 +152,20 @@ function makeDiff(o1, o2, keys, version) {
|
|
|
152
152
|
return obj3;
|
|
153
153
|
}
|
|
154
154
|
exports.makeDiff = makeDiff;
|
|
155
|
+
function hasDiff(o1, o2, keys, version) {
|
|
156
|
+
var diff = makeDiff(o1, o2, keys, version);
|
|
157
|
+
return !isEmptyObject(diff);
|
|
158
|
+
}
|
|
159
|
+
exports.hasDiff = hasDiff;
|
|
160
|
+
function goBack(navigate, confirm, resource, o1, o2, keys, version) {
|
|
161
|
+
if (!hasDiff(o1, o2, keys, version)) {
|
|
162
|
+
navigate(-1);
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
confirm(resource.msg_confirm_back, function () { return navigate(-1); });
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
exports.goBack = goBack;
|
|
155
169
|
function notIn(s1, s2) {
|
|
156
170
|
var r = [];
|
|
157
171
|
for (var _i = 0, s2_1 = s2; _i < s2_1.length; _i++) {
|
package/lib/search.js
CHANGED
|
@@ -7,38 +7,58 @@ var __spreadArrays = (this && this.__spreadArrays) || function () {
|
|
|
7
7
|
return r;
|
|
8
8
|
};
|
|
9
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
var reflect_1 = require("./reflect");
|
|
10
11
|
var resources = (function () {
|
|
11
12
|
function resources() {
|
|
12
13
|
}
|
|
13
14
|
resources.limit = 24;
|
|
15
|
+
resources.pages = [12, 24, 60, 100, 120, 180, 300, 600];
|
|
16
|
+
resources.pageMaxSize = 7;
|
|
14
17
|
return resources;
|
|
15
18
|
}());
|
|
16
19
|
exports.resources = resources;
|
|
20
|
+
function getOffset(limit, page, firstLimit) {
|
|
21
|
+
var p = page && page > 0 ? page : 1;
|
|
22
|
+
if (firstLimit && firstLimit > 0) {
|
|
23
|
+
var offset = limit * (p - 2) + firstLimit;
|
|
24
|
+
return offset < 0 ? 0 : offset;
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
var offset = limit * (p - 1);
|
|
28
|
+
return offset < 0 ? 0 : offset;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
exports.getOffset = getOffset;
|
|
17
32
|
function mergeFilter(obj, b, pageSizes, arrs) {
|
|
18
33
|
var a = b;
|
|
19
34
|
if (!b) {
|
|
20
35
|
a = {};
|
|
21
36
|
}
|
|
22
|
-
var
|
|
37
|
+
var keys = Object.keys(obj);
|
|
38
|
+
for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {
|
|
39
|
+
var key = keys_1[_i];
|
|
40
|
+
var p = a[key];
|
|
41
|
+
var v = obj[key];
|
|
42
|
+
if (v && v !== "") {
|
|
43
|
+
a[key] = isArray(key, p, arrs) ? v.split(",") : v;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
var spage = obj["page"];
|
|
47
|
+
if (!isNaN(spage)) {
|
|
48
|
+
var page = parseInt(spage, 10);
|
|
49
|
+
a.page = page > 1 ? page : undefined;
|
|
50
|
+
}
|
|
51
|
+
var slimit = obj["limit"];
|
|
23
52
|
if (!isNaN(slimit)) {
|
|
24
53
|
var limit = parseInt(slimit, 10);
|
|
25
54
|
if (pageSizes && pageSizes.length > 0) {
|
|
26
55
|
if (pageSizes.indexOf(limit) >= 0) {
|
|
27
56
|
a.limit = limit;
|
|
57
|
+
return a;
|
|
28
58
|
}
|
|
29
59
|
}
|
|
30
60
|
else {
|
|
31
|
-
a.limit = limit;
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
delete obj['limit'];
|
|
35
|
-
var keys = Object.keys(obj);
|
|
36
|
-
for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {
|
|
37
|
-
var key = keys_1[_i];
|
|
38
|
-
var p = a[key];
|
|
39
|
-
var v = obj[key];
|
|
40
|
-
if (v && v !== '') {
|
|
41
|
-
a[key] = (isArray(key, p, arrs) ? v.split(',') : v);
|
|
61
|
+
a.limit = limit > 0 ? limit : 12;
|
|
42
62
|
}
|
|
43
63
|
}
|
|
44
64
|
return a;
|
|
@@ -143,7 +163,6 @@ function changePage(com, pageIndex, pageSize) {
|
|
|
143
163
|
}
|
|
144
164
|
exports.changePage = changePage;
|
|
145
165
|
function optimizeFilter(obj, searchable, fields) {
|
|
146
|
-
var sLimit = searchable.limit;
|
|
147
166
|
obj.fields = fields;
|
|
148
167
|
if (searchable.pageIndex && searchable.pageIndex > 1) {
|
|
149
168
|
obj.page = searchable.pageIndex;
|
|
@@ -151,12 +170,7 @@ function optimizeFilter(obj, searchable, fields) {
|
|
|
151
170
|
else {
|
|
152
171
|
delete obj.page;
|
|
153
172
|
}
|
|
154
|
-
|
|
155
|
-
obj.limit = searchable.limit;
|
|
156
|
-
}
|
|
157
|
-
else {
|
|
158
|
-
obj.limit = searchable.pageSize;
|
|
159
|
-
}
|
|
173
|
+
obj.limit = searchable.pageSize;
|
|
160
174
|
if (searchable.appendMode && searchable.initPageSize !== searchable.pageSize) {
|
|
161
175
|
obj.firstLimit = searchable.initPageSize;
|
|
162
176
|
}
|
|
@@ -232,7 +246,10 @@ function showPaging(com, list, pageSize, total) {
|
|
|
232
246
|
com.showPaging = (!total || com.pages <= 1 || (list && list.length >= total) ? false : true);
|
|
233
247
|
}
|
|
234
248
|
exports.showPaging = showPaging;
|
|
235
|
-
function getFields(form) {
|
|
249
|
+
function getFields(form, arr) {
|
|
250
|
+
if (arr && arr.length > 0) {
|
|
251
|
+
return arr;
|
|
252
|
+
}
|
|
236
253
|
if (!form) {
|
|
237
254
|
return undefined;
|
|
238
255
|
}
|
|
@@ -246,19 +263,19 @@ function getFields(form) {
|
|
|
246
263
|
}
|
|
247
264
|
}
|
|
248
265
|
if (!nodes.querySelector) {
|
|
249
|
-
return
|
|
266
|
+
return undefined;
|
|
250
267
|
}
|
|
251
|
-
var table = nodes.querySelector(
|
|
268
|
+
var table = nodes.querySelector("table");
|
|
252
269
|
var fields = [];
|
|
253
270
|
if (table) {
|
|
254
|
-
var thead = table.querySelector(
|
|
271
|
+
var thead = table.querySelector("thead");
|
|
255
272
|
if (thead) {
|
|
256
|
-
var ths = thead.querySelectorAll(
|
|
273
|
+
var ths = thead.querySelectorAll("th");
|
|
257
274
|
if (ths) {
|
|
258
275
|
var l = ths.length;
|
|
259
276
|
for (var i = 0; i < l; i++) {
|
|
260
277
|
var th = ths[i];
|
|
261
|
-
var field = th.getAttribute(
|
|
278
|
+
var field = th.getAttribute("data-field");
|
|
262
279
|
if (field) {
|
|
263
280
|
fields.push(field);
|
|
264
281
|
}
|
|
@@ -266,7 +283,7 @@ function getFields(form) {
|
|
|
266
283
|
}
|
|
267
284
|
}
|
|
268
285
|
}
|
|
269
|
-
return fields;
|
|
286
|
+
return fields.length > 0 ? fields : undefined;
|
|
270
287
|
}
|
|
271
288
|
exports.getFields = getFields;
|
|
272
289
|
function formatResultsByComponent(results, c, lc) {
|
|
@@ -344,9 +361,34 @@ function getPageTotal(pageSize, total) {
|
|
|
344
361
|
}
|
|
345
362
|
}
|
|
346
363
|
exports.getPageTotal = getPageTotal;
|
|
347
|
-
function
|
|
364
|
+
function formatText() {
|
|
365
|
+
var args = [];
|
|
366
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
367
|
+
args[_i] = arguments[_i];
|
|
368
|
+
}
|
|
369
|
+
var formatted = args[0];
|
|
370
|
+
if (!formatted || formatted === "") {
|
|
371
|
+
return "";
|
|
372
|
+
}
|
|
373
|
+
if (args.length > 1 && Array.isArray(args[1])) {
|
|
374
|
+
var params = args[1];
|
|
375
|
+
for (var i = 0; i < params.length; i++) {
|
|
376
|
+
var regexp = new RegExp("\\{" + i + "\\}", "gi");
|
|
377
|
+
formatted = formatted.replace(regexp, params[i]);
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
else {
|
|
381
|
+
for (var i = 1; i < args.length; i++) {
|
|
382
|
+
var regexp = new RegExp("\\{" + (i - 1) + "\\}", "gi");
|
|
383
|
+
formatted = formatted.replace(regexp, args[i]);
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
return formatted;
|
|
387
|
+
}
|
|
388
|
+
exports.formatText = formatText;
|
|
389
|
+
function buildMessage(resource, results, pageSize, pageIndex, total) {
|
|
348
390
|
if (!results || results.length === 0) {
|
|
349
|
-
return
|
|
391
|
+
return resource.msg_no_data_found;
|
|
350
392
|
}
|
|
351
393
|
else {
|
|
352
394
|
if (!pageIndex) {
|
|
@@ -356,11 +398,11 @@ function buildMessage(r, pageIndex, pageSize, results, total) {
|
|
|
356
398
|
var toIndex = fromIndex + results.length - 1;
|
|
357
399
|
var pageTotal = getPageTotal(pageSize, total);
|
|
358
400
|
if (pageTotal > 1) {
|
|
359
|
-
var msg2 =
|
|
401
|
+
var msg2 = formatText(resource.msg_search_result_page_sequence, fromIndex, toIndex, total, pageIndex, pageTotal);
|
|
360
402
|
return msg2;
|
|
361
403
|
}
|
|
362
404
|
else {
|
|
363
|
-
var msg3 =
|
|
405
|
+
var msg3 = formatText(resource.msg_search_result_sequence, fromIndex, toIndex);
|
|
364
406
|
return msg3;
|
|
365
407
|
}
|
|
366
408
|
}
|
|
@@ -370,7 +412,10 @@ function removeFormatUrl(url) {
|
|
|
370
412
|
var startParams = url.indexOf('?');
|
|
371
413
|
return startParams !== -1 ? url.substring(0, startParams) : url;
|
|
372
414
|
}
|
|
373
|
-
function
|
|
415
|
+
function getPrefix(url) {
|
|
416
|
+
return url.indexOf("?") >= 0 ? "&" : "?";
|
|
417
|
+
}
|
|
418
|
+
function addParametersIntoUrl(ft, isFirstLoad, page, fields, limit) {
|
|
374
419
|
if (!isFirstLoad) {
|
|
375
420
|
if (!fields || fields.length === 0) {
|
|
376
421
|
fields = 'fields';
|
|
@@ -378,6 +423,11 @@ function addParametersIntoUrl(ft, isFirstLoad, fields, limit) {
|
|
|
378
423
|
if (!limit || limit.length === 0) {
|
|
379
424
|
limit = 'limit';
|
|
380
425
|
}
|
|
426
|
+
if (page && page > 1) {
|
|
427
|
+
if (!ft.page || ft.page <= 1) {
|
|
428
|
+
ft.page = page;
|
|
429
|
+
}
|
|
430
|
+
}
|
|
381
431
|
var pageIndex = ft.page;
|
|
382
432
|
if (pageIndex && !isNaN(pageIndex) && pageIndex <= 1) {
|
|
383
433
|
delete ft.page;
|
|
@@ -393,31 +443,16 @@ function addParametersIntoUrl(ft, isFirstLoad, fields, limit) {
|
|
|
393
443
|
if (typeof objValue === 'string' || typeof objValue === 'number') {
|
|
394
444
|
if (key === limit) {
|
|
395
445
|
if (objValue !== resources.limit) {
|
|
396
|
-
|
|
397
|
-
url += "?" + key + "=" + objValue;
|
|
398
|
-
}
|
|
399
|
-
else {
|
|
400
|
-
url += "&" + key + "=" + objValue;
|
|
401
|
-
}
|
|
446
|
+
url += getPrefix(url) + (key + "=" + objValue);
|
|
402
447
|
}
|
|
403
448
|
}
|
|
404
449
|
else {
|
|
405
|
-
|
|
406
|
-
url += "?" + key + "=" + objValue;
|
|
407
|
-
}
|
|
408
|
-
else {
|
|
409
|
-
url += "&" + key + "=" + objValue;
|
|
410
|
-
}
|
|
450
|
+
url += getPrefix(url) + (key + "=" + objValue);
|
|
411
451
|
}
|
|
412
452
|
}
|
|
413
453
|
else if (typeof objValue === 'object') {
|
|
414
454
|
if (objValue instanceof Date) {
|
|
415
|
-
|
|
416
|
-
url += "?" + key + "=" + objValue.toISOString();
|
|
417
|
-
}
|
|
418
|
-
else {
|
|
419
|
-
url += "&" + key + "=" + objValue.toISOString();
|
|
420
|
-
}
|
|
455
|
+
url += getPrefix(url) + (key + "=" + objValue.toISOString());
|
|
421
456
|
}
|
|
422
457
|
else {
|
|
423
458
|
if (Array.isArray(objValue)) {
|
|
@@ -432,12 +467,7 @@ function addParametersIntoUrl(ft, isFirstLoad, fields, limit) {
|
|
|
432
467
|
strs.push(subValue.toString());
|
|
433
468
|
}
|
|
434
469
|
}
|
|
435
|
-
|
|
436
|
-
url += "?" + key + "=" + strs.join(',');
|
|
437
|
-
}
|
|
438
|
-
else {
|
|
439
|
-
url += "&" + key + "=" + strs.join(',');
|
|
440
|
-
}
|
|
470
|
+
url += getPrefix(url) + (key + "=" + strs.join(','));
|
|
441
471
|
}
|
|
442
472
|
}
|
|
443
473
|
else {
|
|
@@ -445,21 +475,11 @@ function addParametersIntoUrl(ft, isFirstLoad, fields, limit) {
|
|
|
445
475
|
for (var _b = 0, keysLvl2_1 = keysLvl2; _b < keysLvl2_1.length; _b++) {
|
|
446
476
|
var key2 = keysLvl2_1[_b];
|
|
447
477
|
var objValueLvl2 = objValue[key2];
|
|
448
|
-
if (
|
|
449
|
-
|
|
450
|
-
url += "?" + key + "." + key2 + "=" + objValueLvl2.toISOString();
|
|
451
|
-
}
|
|
452
|
-
else {
|
|
453
|
-
url += "?" + key + "." + key2 + "=" + objValueLvl2;
|
|
454
|
-
}
|
|
478
|
+
if (objValueLvl2 instanceof Date) {
|
|
479
|
+
url += getPrefix(url) + (key + "." + key2 + "=" + objValueLvl2.toISOString());
|
|
455
480
|
}
|
|
456
481
|
else {
|
|
457
|
-
|
|
458
|
-
url += "&" + key + "." + key2 + "=" + objValueLvl2.toISOString();
|
|
459
|
-
}
|
|
460
|
-
else {
|
|
461
|
-
url += "&" + key + "." + key2 + "=" + objValueLvl2;
|
|
462
|
-
}
|
|
482
|
+
url += getPrefix(url) + (key + "." + key2 + "=" + objValueLvl2);
|
|
463
483
|
}
|
|
464
484
|
}
|
|
465
485
|
}
|
|
@@ -471,7 +491,7 @@ function addParametersIntoUrl(ft, isFirstLoad, fields, limit) {
|
|
|
471
491
|
var p = 'http://';
|
|
472
492
|
var loc = window.location.href;
|
|
473
493
|
if (loc.length >= 8) {
|
|
474
|
-
var ss = loc.
|
|
494
|
+
var ss = loc.substring(0, 8);
|
|
475
495
|
if (ss === 'https://') {
|
|
476
496
|
p = 'https://';
|
|
477
497
|
}
|
|
@@ -480,6 +500,50 @@ function addParametersIntoUrl(ft, isFirstLoad, fields, limit) {
|
|
|
480
500
|
}
|
|
481
501
|
}
|
|
482
502
|
exports.addParametersIntoUrl = addParametersIntoUrl;
|
|
503
|
+
function buildSort(filter) {
|
|
504
|
+
var sort = {};
|
|
505
|
+
var st = filter.sort;
|
|
506
|
+
if (st && st.length > 0) {
|
|
507
|
+
var ch = st.charAt(0);
|
|
508
|
+
if (ch === "+" || ch === "-") {
|
|
509
|
+
sort.field = st.substring(1);
|
|
510
|
+
sort.type = ch;
|
|
511
|
+
}
|
|
512
|
+
else {
|
|
513
|
+
sort.field = st;
|
|
514
|
+
sort.type = "";
|
|
515
|
+
}
|
|
516
|
+
}
|
|
517
|
+
return sort;
|
|
518
|
+
}
|
|
519
|
+
exports.buildSort = buildSort;
|
|
520
|
+
function buildSortFilter(obj, sortable) {
|
|
521
|
+
var filter = reflect_1.clone(obj);
|
|
522
|
+
if (sortable.sortField && sortable.sortField.length > 0) {
|
|
523
|
+
filter.sort = sortable.sortType === "-" ? "-" + sortable.sortField : sortable.sortField;
|
|
524
|
+
}
|
|
525
|
+
else {
|
|
526
|
+
delete filter.sort;
|
|
527
|
+
}
|
|
528
|
+
delete filter.fields;
|
|
529
|
+
return filter;
|
|
530
|
+
}
|
|
531
|
+
exports.buildSortFilter = buildSortFilter;
|
|
532
|
+
function handleToggle(target, on) {
|
|
533
|
+
var off = !on;
|
|
534
|
+
if (target) {
|
|
535
|
+
if (on) {
|
|
536
|
+
if (!target.classList.contains('on')) {
|
|
537
|
+
target.classList.add('on');
|
|
538
|
+
}
|
|
539
|
+
}
|
|
540
|
+
else {
|
|
541
|
+
target.classList.remove('on');
|
|
542
|
+
}
|
|
543
|
+
}
|
|
544
|
+
return off;
|
|
545
|
+
}
|
|
546
|
+
exports.handleToggle = handleToggle;
|
|
483
547
|
function handleSortEvent(event, com) {
|
|
484
548
|
if (event && event.target) {
|
|
485
549
|
var target = event.target;
|
|
@@ -490,6 +554,10 @@ function handleSortEvent(event, com) {
|
|
|
490
554
|
}
|
|
491
555
|
}
|
|
492
556
|
exports.handleSortEvent = handleSortEvent;
|
|
557
|
+
function getSortElement(target) {
|
|
558
|
+
return target.nodeName === "I" ? target.parentElement : target;
|
|
559
|
+
}
|
|
560
|
+
exports.getSortElement = getSortElement;
|
|
493
561
|
function handleSort(target, previousTarget, sortField, sortType) {
|
|
494
562
|
var type = target.getAttribute('sort-type');
|
|
495
563
|
var field = toggleSortStyle(target);
|
package/lib/useSearch.js
CHANGED
|
@@ -40,7 +40,6 @@ exports.callSearch = function (se, search3, showResults3, searchError3, lc, next
|
|
|
40
40
|
var fields = se.fields;
|
|
41
41
|
delete se['page'];
|
|
42
42
|
delete se['fields'];
|
|
43
|
-
delete se['limit'];
|
|
44
43
|
delete se['firstLimit'];
|
|
45
44
|
search3(s, limit, next, fields).then(function (sr) {
|
|
46
45
|
showResults3(s, sr, lc);
|
|
@@ -132,9 +131,8 @@ exports.useCoreSearch = function (refForm, initialState, service, p1, p2) {
|
|
|
132
131
|
var getCurrencyCode = p && p.getCurrencyCode ? p.getCurrencyCode : _getCurrencyCode;
|
|
133
132
|
var _c = merge_1.useMergeState(p), component = _c[0], setComponent = _c[1];
|
|
134
133
|
var toggleFilter = function (event) {
|
|
135
|
-
var
|
|
136
|
-
|
|
137
|
-
setComponent({ hideFilter: x });
|
|
134
|
+
var hideFilter = search_1.handleToggle(event.target, component.hideFilter);
|
|
135
|
+
setComponent({ hideFilter: hideFilter });
|
|
138
136
|
};
|
|
139
137
|
var _getFields = function () {
|
|
140
138
|
var fields = component.fields, initFields = component.initFields;
|
|
@@ -331,7 +329,7 @@ exports.useCoreSearch = function (refForm, initialState, service, p1, p2) {
|
|
|
331
329
|
setList(results, setState);
|
|
332
330
|
setComponent({ tmpPageIndex: s.page });
|
|
333
331
|
if (s.limit) {
|
|
334
|
-
var m1 = search_1.buildMessage(p1.resource,
|
|
332
|
+
var m1 = search_1.buildMessage(p1.resource.resource(), sr.list, s.limit, s.page, sr.total);
|
|
335
333
|
p1.showMessage(m1);
|
|
336
334
|
}
|
|
337
335
|
}
|
package/package.json
CHANGED
package/src/core.ts
CHANGED
|
@@ -502,14 +502,3 @@ export function getDecodeFromForm(u?: UIParameter, d?: (form: HTMLFormElement, l
|
|
|
502
502
|
return (u && u.ui ? u.ui.decodeFromForm : undefined);
|
|
503
503
|
}
|
|
504
504
|
*/
|
|
505
|
-
export function handleToggle(target?: HTMLInputElement, on?: boolean): void {
|
|
506
|
-
if (target) {
|
|
507
|
-
if (on) {
|
|
508
|
-
if (!target.classList.contains('on')) {
|
|
509
|
-
target.classList.add('on');
|
|
510
|
-
}
|
|
511
|
-
} else {
|
|
512
|
-
target.classList.remove('on');
|
|
513
|
-
}
|
|
514
|
-
}
|
|
515
|
-
}
|
package/src/reflect.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { NavigateFunction } from "react-router-dom"
|
|
2
|
+
|
|
1
3
|
export function clone(obj: any): any {
|
|
2
4
|
if (!obj) {
|
|
3
5
|
return obj;
|
|
@@ -135,6 +137,28 @@ export function makeDiff<T>(o1: T, o2: T, keys?: string[], version?: string): Pa
|
|
|
135
137
|
}
|
|
136
138
|
return obj3;
|
|
137
139
|
}
|
|
140
|
+
export function hasDiff<T>(o1: T, o2: T, keys?: string[], version?: string): boolean {
|
|
141
|
+
const diff = makeDiff(o1, o2, keys, version)
|
|
142
|
+
return !isEmptyObject(diff)
|
|
143
|
+
}
|
|
144
|
+
interface StringMap {
|
|
145
|
+
[key: string]: string;
|
|
146
|
+
}
|
|
147
|
+
export function goBack<T>(
|
|
148
|
+
navigate: NavigateFunction,
|
|
149
|
+
confirm: (msg: string, yesCallback?: () => void) => void,
|
|
150
|
+
resource: StringMap,
|
|
151
|
+
o1: T,
|
|
152
|
+
o2: T,
|
|
153
|
+
keys?: string[],
|
|
154
|
+
version?: string,
|
|
155
|
+
) {
|
|
156
|
+
if (!hasDiff(o1, o2, keys, version)) {
|
|
157
|
+
navigate(-1)
|
|
158
|
+
} else {
|
|
159
|
+
confirm(resource.msg_confirm_back, () => navigate(-1))
|
|
160
|
+
}
|
|
161
|
+
}
|
|
138
162
|
|
|
139
163
|
export function notIn(s1: string[], s2: string[]): string[] {
|
|
140
164
|
const r = [];
|
package/src/route.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
import { Filter } from "./core";
|
|
1
2
|
import * as qs from "query-string";
|
|
2
3
|
|
|
3
|
-
export function buildFromUrl<S>(modelT?: S): S {
|
|
4
|
+
export function buildFromUrl<S extends Filter>(modelT?: S): S {
|
|
4
5
|
return buildParameters<S>(window.location.search, modelT);
|
|
5
6
|
}
|
|
6
7
|
export function buildParameters<T>(url: string, model?: T): T {
|
package/src/search.ts
CHANGED
|
@@ -1,10 +1,15 @@
|
|
|
1
|
+
import { StringMap } from "./core";
|
|
2
|
+
import { clone } from "./reflect";
|
|
3
|
+
|
|
1
4
|
// tslint:disable-next-line:class-name
|
|
2
5
|
export class resources {
|
|
3
6
|
static limit = 24;
|
|
7
|
+
static pages = [12, 24, 60, 100, 120, 180, 300, 600];
|
|
8
|
+
static pageMaxSize = 7;
|
|
4
9
|
}
|
|
5
10
|
interface Filter {
|
|
6
11
|
page?: number;
|
|
7
|
-
limit
|
|
12
|
+
limit: number;
|
|
8
13
|
firstLimit?: number;
|
|
9
14
|
fields?: string[];
|
|
10
15
|
sort?: string;
|
|
@@ -35,8 +40,8 @@ export interface Sortable {
|
|
|
35
40
|
|
|
36
41
|
export interface Pagination {
|
|
37
42
|
initPageSize?: number;
|
|
38
|
-
pageSize
|
|
39
|
-
limit
|
|
43
|
+
pageSize: number;
|
|
44
|
+
// limit: number;
|
|
40
45
|
pageIndex?: number;
|
|
41
46
|
total?: number;
|
|
42
47
|
pages?: number;
|
|
@@ -49,32 +54,47 @@ export interface Pagination {
|
|
|
49
54
|
interface Searchable extends Pagination, Sortable {
|
|
50
55
|
}
|
|
51
56
|
|
|
52
|
-
export function
|
|
53
|
-
|
|
57
|
+
export function getOffset(limit: number, page?: number, firstLimit?: number): number {
|
|
58
|
+
const p = page && page > 0 ? page : 1
|
|
59
|
+
if (firstLimit && firstLimit > 0) {
|
|
60
|
+
const offset = limit * (p - 2) + firstLimit
|
|
61
|
+
return offset < 0 ? 0 : offset
|
|
62
|
+
} else {
|
|
63
|
+
const offset = limit * (p - 1)
|
|
64
|
+
return offset < 0 ? 0 : offset
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
export function mergeFilter<S extends Filter>(obj: S, b?: S, pageSizes?: number[], arrs?: string[] | any) {
|
|
68
|
+
let a: any = b
|
|
54
69
|
if (!b) {
|
|
55
|
-
a = {}
|
|
70
|
+
a = {}
|
|
71
|
+
}
|
|
72
|
+
const keys = Object.keys(obj)
|
|
73
|
+
for (const key of keys) {
|
|
74
|
+
const p = a[key]
|
|
75
|
+
const v = (obj as any)[key]
|
|
76
|
+
if (v && v !== "") {
|
|
77
|
+
a[key] = isArray(key, p, arrs) ? v.split(",") : v
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
const spage: any = obj["page"]
|
|
81
|
+
if (!isNaN(spage)) {
|
|
82
|
+
const page = parseInt(spage, 10)
|
|
83
|
+
a.page = page > 1 ? page : undefined
|
|
56
84
|
}
|
|
57
|
-
const slimit: any = obj[
|
|
85
|
+
const slimit: any = obj["limit"]
|
|
58
86
|
if (!isNaN(slimit)) {
|
|
59
|
-
const limit = parseInt(slimit, 10)
|
|
87
|
+
const limit = parseInt(slimit, 10)
|
|
60
88
|
if (pageSizes && pageSizes.length > 0) {
|
|
61
89
|
if (pageSizes.indexOf(limit) >= 0) {
|
|
62
|
-
a.limit = limit
|
|
90
|
+
a.limit = limit
|
|
91
|
+
return a
|
|
63
92
|
}
|
|
64
93
|
} else {
|
|
65
|
-
a.limit = limit
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
delete obj['limit'];
|
|
69
|
-
const keys = Object.keys(obj);
|
|
70
|
-
for (const key of keys) {
|
|
71
|
-
const p = a[key];
|
|
72
|
-
const v = (obj as any)[key];
|
|
73
|
-
if (v && v !== '') {
|
|
74
|
-
a[key] = (isArray(key, p, arrs) ? v.split(',') : v);
|
|
94
|
+
a.limit = limit > 0 ? limit : 12
|
|
75
95
|
}
|
|
76
96
|
}
|
|
77
|
-
return a
|
|
97
|
+
return a
|
|
78
98
|
}
|
|
79
99
|
export function isArray(key: string, p: any, arrs: string[]|any): boolean {
|
|
80
100
|
if (p) {
|
|
@@ -172,18 +192,14 @@ export function changePage(com: Pagination, pageIndex: number, pageSize: number)
|
|
|
172
192
|
com.append = false;
|
|
173
193
|
}
|
|
174
194
|
export function optimizeFilter<S extends Filter>(obj: S, searchable: Searchable, fields?: string[]): S {
|
|
175
|
-
const sLimit = searchable.limit;
|
|
195
|
+
// const sLimit = searchable.limit;
|
|
176
196
|
obj.fields = fields;
|
|
177
197
|
if (searchable.pageIndex && searchable.pageIndex > 1) {
|
|
178
198
|
obj.page = searchable.pageIndex;
|
|
179
199
|
} else {
|
|
180
200
|
delete obj.page;
|
|
181
201
|
}
|
|
182
|
-
|
|
183
|
-
obj.limit = searchable.limit;
|
|
184
|
-
}else{
|
|
185
|
-
obj.limit = searchable.pageSize;
|
|
186
|
-
}
|
|
202
|
+
obj.limit = searchable.pageSize;
|
|
187
203
|
|
|
188
204
|
if (searchable.appendMode && searchable.initPageSize !== searchable.pageSize) {
|
|
189
205
|
obj.firstLimit = searchable.initPageSize;
|
|
@@ -196,7 +212,7 @@ export function optimizeFilter<S extends Filter>(obj: S, searchable: Searchable,
|
|
|
196
212
|
delete obj.sort;
|
|
197
213
|
}
|
|
198
214
|
if(searchable) {
|
|
199
|
-
mapObjects(obj, searchable as
|
|
215
|
+
mapObjects(obj, searchable as any);
|
|
200
216
|
}
|
|
201
217
|
return obj;
|
|
202
218
|
}
|
|
@@ -268,40 +284,43 @@ export function showPaging<T>(com: Pagination, list: T[], pageSize?: number, tot
|
|
|
268
284
|
com.showPaging = (!total || com.pages <= 1 || (list && list.length >= total) ? false : true);
|
|
269
285
|
}
|
|
270
286
|
|
|
271
|
-
export function getFields(form?: HTMLFormElement): string[]|undefined {
|
|
287
|
+
export function getFields(form?: HTMLFormElement, arr?: string[]): string[] | undefined {
|
|
288
|
+
if (arr && arr.length > 0) {
|
|
289
|
+
return arr
|
|
290
|
+
}
|
|
272
291
|
if (!form) {
|
|
273
|
-
return undefined
|
|
292
|
+
return undefined
|
|
274
293
|
}
|
|
275
|
-
let nodes = form.nextSibling as HTMLElement
|
|
294
|
+
let nodes = form.nextSibling as HTMLElement
|
|
276
295
|
if (!nodes.querySelector) {
|
|
277
296
|
if (!form.nextSibling) {
|
|
278
|
-
return []
|
|
297
|
+
return []
|
|
279
298
|
} else {
|
|
280
|
-
nodes = form.nextSibling.nextSibling as HTMLElement
|
|
299
|
+
nodes = form.nextSibling.nextSibling as HTMLElement
|
|
281
300
|
}
|
|
282
301
|
}
|
|
283
302
|
if (!nodes.querySelector) {
|
|
284
|
-
return
|
|
303
|
+
return undefined
|
|
285
304
|
}
|
|
286
|
-
const table = nodes.querySelector(
|
|
287
|
-
const fields: string[] = []
|
|
305
|
+
const table = nodes.querySelector("table")
|
|
306
|
+
const fields: string[] = []
|
|
288
307
|
if (table) {
|
|
289
|
-
const thead = table.querySelector(
|
|
308
|
+
const thead = table.querySelector("thead")
|
|
290
309
|
if (thead) {
|
|
291
|
-
const ths = thead.querySelectorAll(
|
|
310
|
+
const ths = thead.querySelectorAll("th")
|
|
292
311
|
if (ths) {
|
|
293
|
-
const l = ths.length
|
|
312
|
+
const l = ths.length
|
|
294
313
|
for (let i = 0; i < l; i++) {
|
|
295
|
-
const
|
|
296
|
-
const field = th.getAttribute(
|
|
314
|
+
const th = ths[i]
|
|
315
|
+
const field = th.getAttribute("data-field")
|
|
297
316
|
if (field) {
|
|
298
|
-
fields.push(field)
|
|
317
|
+
fields.push(field)
|
|
299
318
|
}
|
|
300
319
|
}
|
|
301
320
|
}
|
|
302
321
|
}
|
|
303
322
|
}
|
|
304
|
-
return fields
|
|
323
|
+
return fields.length > 0 ? fields : undefined
|
|
305
324
|
}
|
|
306
325
|
interface Component<T> {
|
|
307
326
|
pageIndex?: number;
|
|
@@ -376,22 +395,41 @@ export function getPageTotal(pageSize?: number, total?: number): number {
|
|
|
376
395
|
}
|
|
377
396
|
}
|
|
378
397
|
|
|
379
|
-
export function
|
|
398
|
+
export function formatText(...args: any[]): string {
|
|
399
|
+
let formatted = args[0]
|
|
400
|
+
if (!formatted || formatted === "") {
|
|
401
|
+
return ""
|
|
402
|
+
}
|
|
403
|
+
if (args.length > 1 && Array.isArray(args[1])) {
|
|
404
|
+
const params = args[1]
|
|
405
|
+
for (let i = 0; i < params.length; i++) {
|
|
406
|
+
const regexp = new RegExp("\\{" + i + "\\}", "gi")
|
|
407
|
+
formatted = formatted.replace(regexp, params[i])
|
|
408
|
+
}
|
|
409
|
+
} else {
|
|
410
|
+
for (let i = 1; i < args.length; i++) {
|
|
411
|
+
const regexp = new RegExp("\\{" + (i - 1) + "\\}", "gi")
|
|
412
|
+
formatted = formatted.replace(regexp, args[i])
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
return formatted
|
|
416
|
+
}
|
|
417
|
+
export function buildMessage<T>(resource: StringMap, results: T[], pageSize: number, pageIndex: number | undefined, total?: number): string {
|
|
380
418
|
if (!results || results.length === 0) {
|
|
381
|
-
return
|
|
419
|
+
return resource.msg_no_data_found
|
|
382
420
|
} else {
|
|
383
421
|
if (!pageIndex) {
|
|
384
|
-
pageIndex = 1
|
|
422
|
+
pageIndex = 1
|
|
385
423
|
}
|
|
386
|
-
const fromIndex = (pageIndex - 1) * pageSize + 1
|
|
387
|
-
const toIndex = fromIndex + results.length - 1
|
|
388
|
-
const pageTotal = getPageTotal(pageSize, total)
|
|
424
|
+
const fromIndex = (pageIndex - 1) * pageSize + 1
|
|
425
|
+
const toIndex = fromIndex + results.length - 1
|
|
426
|
+
const pageTotal = getPageTotal(pageSize, total)
|
|
389
427
|
if (pageTotal > 1) {
|
|
390
|
-
const msg2 =
|
|
391
|
-
return msg2
|
|
428
|
+
const msg2 = formatText(resource.msg_search_result_page_sequence, fromIndex, toIndex, total, pageIndex, pageTotal)
|
|
429
|
+
return msg2
|
|
392
430
|
} else {
|
|
393
|
-
const msg3 =
|
|
394
|
-
return msg3
|
|
431
|
+
const msg3 = formatText(resource.msg_search_result_sequence, fromIndex, toIndex)
|
|
432
|
+
return msg3
|
|
395
433
|
}
|
|
396
434
|
}
|
|
397
435
|
}
|
|
@@ -402,7 +440,10 @@ function removeFormatUrl(url: string): string {
|
|
|
402
440
|
}
|
|
403
441
|
|
|
404
442
|
|
|
405
|
-
|
|
443
|
+
function getPrefix(url: string): string {
|
|
444
|
+
return url.indexOf("?") >= 0 ? "&" : "?"
|
|
445
|
+
}
|
|
446
|
+
export function addParametersIntoUrl<S extends Filter>(ft: S, isFirstLoad?: boolean, page?: number, fields?: string, limit?: string): void {
|
|
406
447
|
if (!isFirstLoad) {
|
|
407
448
|
if (!fields || fields.length === 0) {
|
|
408
449
|
fields = 'fields';
|
|
@@ -410,6 +451,11 @@ export function addParametersIntoUrl<S extends Filter>(ft: S, isFirstLoad?: bool
|
|
|
410
451
|
if (!limit || limit.length === 0) {
|
|
411
452
|
limit = 'limit';
|
|
412
453
|
}
|
|
454
|
+
if (page && page > 1) {
|
|
455
|
+
if (!ft.page || ft.page <= 1) {
|
|
456
|
+
ft.page = page;
|
|
457
|
+
}
|
|
458
|
+
}
|
|
413
459
|
const pageIndex = ft.page;
|
|
414
460
|
if (pageIndex && !isNaN(pageIndex) && pageIndex <= 1) {
|
|
415
461
|
delete ft.page;
|
|
@@ -424,30 +470,18 @@ export function addParametersIntoUrl<S extends Filter>(ft: S, isFirstLoad?: bool
|
|
|
424
470
|
if (typeof objValue === 'string' || typeof objValue === 'number') {
|
|
425
471
|
if (key === limit) {
|
|
426
472
|
if (objValue !== resources.limit) {
|
|
427
|
-
|
|
428
|
-
url += `?${key}=${objValue}`;
|
|
429
|
-
} else {
|
|
430
|
-
url += `&${key}=${objValue}`;
|
|
431
|
-
}
|
|
473
|
+
url += getPrefix(url) + `${key}=${objValue}`;
|
|
432
474
|
}
|
|
433
475
|
} else {
|
|
434
|
-
|
|
435
|
-
url += `?${key}=${objValue}`;
|
|
436
|
-
} else {
|
|
437
|
-
url += `&${key}=${objValue}`;
|
|
438
|
-
}
|
|
476
|
+
url += getPrefix(url) + `${key}=${objValue}`;
|
|
439
477
|
}
|
|
440
478
|
} else if (typeof objValue === 'object') {
|
|
441
479
|
if (objValue instanceof Date) {
|
|
442
|
-
|
|
443
|
-
url += `?${key}=${objValue.toISOString()}`;
|
|
444
|
-
} else {
|
|
445
|
-
url += `&${key}=${objValue.toISOString()}`;
|
|
446
|
-
}
|
|
480
|
+
url += getPrefix(url) + `${key}=${objValue.toISOString()}`;
|
|
447
481
|
} else {
|
|
448
482
|
if (Array.isArray(objValue)) {
|
|
449
483
|
if (objValue.length > 0) {
|
|
450
|
-
const strs = [];
|
|
484
|
+
const strs: string[] = [];
|
|
451
485
|
for (const subValue of objValue) {
|
|
452
486
|
if (typeof subValue === 'string') {
|
|
453
487
|
strs.push(subValue);
|
|
@@ -455,28 +489,16 @@ export function addParametersIntoUrl<S extends Filter>(ft: S, isFirstLoad?: bool
|
|
|
455
489
|
strs.push(subValue.toString());
|
|
456
490
|
}
|
|
457
491
|
}
|
|
458
|
-
|
|
459
|
-
url += `?${key}=${strs.join(',')}`;
|
|
460
|
-
} else {
|
|
461
|
-
url += `&${key}=${strs.join(',')}`;
|
|
462
|
-
}
|
|
492
|
+
url += getPrefix(url) + `${key}=${strs.join(',')}`;
|
|
463
493
|
}
|
|
464
494
|
} else {
|
|
465
495
|
const keysLvl2 = Object.keys(objValue);
|
|
466
496
|
for (const key2 of keysLvl2) {
|
|
467
497
|
const objValueLvl2 = objValue[key2];
|
|
468
|
-
if (
|
|
469
|
-
|
|
470
|
-
url += `?${key}.${key2}=${objValueLvl2.toISOString()}`;
|
|
471
|
-
} else {
|
|
472
|
-
url += `?${key}.${key2}=${objValueLvl2}`;
|
|
473
|
-
}
|
|
498
|
+
if (objValueLvl2 instanceof Date) {
|
|
499
|
+
url += getPrefix(url) + `${key}.${key2}=${objValueLvl2.toISOString()}`;
|
|
474
500
|
} else {
|
|
475
|
-
|
|
476
|
-
url += `&${key}.${key2}=${objValueLvl2.toISOString()}`;
|
|
477
|
-
} else {
|
|
478
|
-
url += `&${key}.${key2}=${objValueLvl2}`;
|
|
479
|
-
}
|
|
501
|
+
url += getPrefix(url) + `${key}.${key2}=${objValueLvl2}`;
|
|
480
502
|
}
|
|
481
503
|
}
|
|
482
504
|
}
|
|
@@ -488,7 +510,7 @@ export function addParametersIntoUrl<S extends Filter>(ft: S, isFirstLoad?: bool
|
|
|
488
510
|
let p = 'http://';
|
|
489
511
|
const loc = window.location.href;
|
|
490
512
|
if (loc.length >= 8) {
|
|
491
|
-
const ss = loc.
|
|
513
|
+
const ss = loc.substring(0, 8);
|
|
492
514
|
if (ss === 'https://') {
|
|
493
515
|
p = 'https://';
|
|
494
516
|
}
|
|
@@ -501,7 +523,44 @@ export interface Sort {
|
|
|
501
523
|
field?: string;
|
|
502
524
|
type?: string;
|
|
503
525
|
}
|
|
504
|
-
|
|
526
|
+
export function buildSort<F extends Filter>(filter: F): Sort {
|
|
527
|
+
const sort: Sort = {}
|
|
528
|
+
const st = filter.sort
|
|
529
|
+
if (st && st.length > 0) {
|
|
530
|
+
const ch = st.charAt(0)
|
|
531
|
+
if (ch === "+" || ch === "-") {
|
|
532
|
+
sort.field = st.substring(1)
|
|
533
|
+
sort.type = ch
|
|
534
|
+
} else {
|
|
535
|
+
sort.field = st
|
|
536
|
+
sort.type = ""
|
|
537
|
+
}
|
|
538
|
+
}
|
|
539
|
+
return sort
|
|
540
|
+
}
|
|
541
|
+
export function buildSortFilter<S extends Filter>(obj: S, sortable: Sortable): S {
|
|
542
|
+
const filter: any = clone(obj)
|
|
543
|
+
if (sortable.sortField && sortable.sortField.length > 0) {
|
|
544
|
+
filter.sort = sortable.sortType === "-" ? "-" + sortable.sortField : sortable.sortField
|
|
545
|
+
} else {
|
|
546
|
+
delete filter.sort
|
|
547
|
+
}
|
|
548
|
+
delete filter.fields
|
|
549
|
+
return filter
|
|
550
|
+
}
|
|
551
|
+
export function handleToggle(target?: HTMLInputElement, on?: boolean): boolean {
|
|
552
|
+
const off = !on
|
|
553
|
+
if (target) {
|
|
554
|
+
if (on) {
|
|
555
|
+
if (!target.classList.contains('on')) {
|
|
556
|
+
target.classList.add('on');
|
|
557
|
+
}
|
|
558
|
+
} else {
|
|
559
|
+
target.classList.remove('on');
|
|
560
|
+
}
|
|
561
|
+
}
|
|
562
|
+
return off
|
|
563
|
+
}
|
|
505
564
|
export function handleSortEvent(event: Event, com: Sortable): void {
|
|
506
565
|
if (event && event.target) {
|
|
507
566
|
const target = event.target as HTMLElement;
|
|
@@ -512,6 +571,9 @@ export function handleSortEvent(event: Event, com: Sortable): void {
|
|
|
512
571
|
}
|
|
513
572
|
}
|
|
514
573
|
|
|
574
|
+
export function getSortElement(target: HTMLElement): HTMLElement {
|
|
575
|
+
return target.nodeName === "I" ? (target.parentElement as HTMLElement) : target
|
|
576
|
+
}
|
|
515
577
|
export function handleSort(target: HTMLElement, previousTarget?: HTMLElement, sortField?: string, sortType?: string): Sort {
|
|
516
578
|
const type = target.getAttribute('sort-type');
|
|
517
579
|
const field = toggleSortStyle(target);
|
package/src/useSearch.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {useEffect, useState} from 'react';
|
|
2
|
-
import {error, getName, getRemoveError, getValidateForm,
|
|
2
|
+
import {error, getName, getRemoveError, getValidateForm, 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';
|
|
6
|
-
import {addParametersIntoUrl, append, buildMessage, formatResults, getFieldsFromForm, getModel, handleAppend, handleSort, initFilter, mergeFilter as mergeFilter2, Pagination, removeSortStatus, showPaging, Sortable, validate} from './search';
|
|
6
|
+
import {addParametersIntoUrl, append, buildMessage, formatResults, getFieldsFromForm, getModel, handleAppend, handleSort, handleToggle, initFilter, mergeFilter as mergeFilter2, Pagination, removeSortStatus, showPaging, Sortable, validate} from './search';
|
|
7
7
|
import {enLocale} from './state';
|
|
8
8
|
import {useUpdate} from './update';
|
|
9
9
|
|
|
@@ -13,7 +13,7 @@ export interface Searchable extends Pagination, Sortable {
|
|
|
13
13
|
}
|
|
14
14
|
interface Filter {
|
|
15
15
|
page?: number;
|
|
16
|
-
limit
|
|
16
|
+
limit: number;
|
|
17
17
|
firstLimit?: number;
|
|
18
18
|
fields?: string[];
|
|
19
19
|
sort?: string;
|
|
@@ -39,7 +39,7 @@ export const callSearch = <T, S extends Filter>(se: S, search3: (s: S, limit?: n
|
|
|
39
39
|
const fields = se.fields;
|
|
40
40
|
delete se['page'];
|
|
41
41
|
delete se['fields'];
|
|
42
|
-
delete se['limit'];
|
|
42
|
+
// delete se['limit'];
|
|
43
43
|
delete se['firstLimit'];
|
|
44
44
|
search3(s, limit, next, fields).then(sr => {
|
|
45
45
|
showResults3(s, sr, lc);
|
|
@@ -74,7 +74,7 @@ export interface SearchComponentParam<T, M extends Filter> {
|
|
|
74
74
|
appendMode?: boolean;
|
|
75
75
|
pageSizes?: number[];
|
|
76
76
|
pageIndex?: number;
|
|
77
|
-
pageSize
|
|
77
|
+
pageSize: number;
|
|
78
78
|
initPageSize?: number;
|
|
79
79
|
pageMaxSize?: number;
|
|
80
80
|
ignoreUrlParam?: boolean;
|
|
@@ -257,9 +257,8 @@ export const useCoreSearch = <T, S extends Filter, ST>(
|
|
|
257
257
|
const [component, setComponent] = useMergeState<SearchComponentState<T, S>>(p);
|
|
258
258
|
|
|
259
259
|
const toggleFilter = (event: React.MouseEvent<HTMLButtonElement, MouseEvent>): void => {
|
|
260
|
-
const
|
|
261
|
-
|
|
262
|
-
setComponent({ hideFilter: x });
|
|
260
|
+
const hideFilter = handleToggle(event.target as HTMLInputElement, component.hideFilter);
|
|
261
|
+
setComponent({ hideFilter });
|
|
263
262
|
};
|
|
264
263
|
|
|
265
264
|
const _getFields = (): string[]|undefined => {
|
|
@@ -304,7 +303,7 @@ export const useCoreSearch = <T, S extends Filter, ST>(
|
|
|
304
303
|
const runSearch = doSearch;
|
|
305
304
|
if (auto) {
|
|
306
305
|
setTimeout(() => {
|
|
307
|
-
runSearch((obj2 as
|
|
306
|
+
runSearch((obj2 as any), true);
|
|
308
307
|
}, 0);
|
|
309
308
|
}
|
|
310
309
|
};
|
|
@@ -464,7 +463,7 @@ export const useCoreSearch = <T, S extends Filter, ST>(
|
|
|
464
463
|
setList(results, setState as any);
|
|
465
464
|
setComponent({ tmpPageIndex: s.page });
|
|
466
465
|
if (s.limit) {
|
|
467
|
-
const m1 = buildMessage(p1.resource,
|
|
466
|
+
const m1 = buildMessage(p1.resource.resource(), sr.list, s.limit, s.page, sr.total);
|
|
468
467
|
p1.showMessage(m1);
|
|
469
468
|
}
|
|
470
469
|
}
|