react-hook-core 0.1.17 → 0.1.19

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/index.js CHANGED
@@ -4,6 +4,7 @@ function __export(m) {
4
4
  }
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  var React = require("react");
7
+ var react_1 = require("react");
7
8
  __export(require("./formutil"));
8
9
  __export(require("./util"));
9
10
  __export(require("./core"));
@@ -20,6 +21,21 @@ __export(require("./components"));
20
21
  __export(require("./search"));
21
22
  __export(require("./reflect"));
22
23
  __export(require("./com"));
24
+ exports.useCallbackState = function (initialValue) {
25
+ var _a = react_1.useState(initialValue), state = _a[0], _setState = _a[1];
26
+ var callbackQueue = react_1.useRef([]);
27
+ react_1.useEffect(function () {
28
+ callbackQueue.current.forEach(function (cb) { return cb(state); });
29
+ callbackQueue.current = [];
30
+ }, [state]);
31
+ var setState = function (newValue, callback) {
32
+ _setState(newValue);
33
+ if (callback && typeof callback === "function") {
34
+ callbackQueue.current.push(callback);
35
+ }
36
+ };
37
+ return [state, setState];
38
+ };
23
39
  function checked(s, v) {
24
40
  if (s) {
25
41
  if (Array.isArray(s)) {
package/lib/route.js CHANGED
@@ -50,6 +50,7 @@ function parseToModel(dest, src) {
50
50
  if (typeof dest !== 'object' || typeof src !== 'object') {
51
51
  return dest;
52
52
  }
53
+ dest = convertToObject(dest);
53
54
  for (var key in src) {
54
55
  if (!Object.hasOwn(dest, key))
55
56
  continue;
package/lib/search.js CHANGED
@@ -566,7 +566,6 @@ exports.toggleSortStyle = toggleSortStyle;
566
566
  function getModel(state, modelName, searchable, fields, excluding) {
567
567
  var obj2 = getModelFromState(state, modelName);
568
568
  var obj = obj2 ? obj2 : {};
569
- console.log("getModel optimizeFilter", searchable);
570
569
  var obj3 = optimizeFilter(obj, searchable, fields);
571
570
  obj3.excluding = excluding;
572
571
  return obj3;
package/lib/useEdit.js CHANGED
@@ -142,7 +142,7 @@ exports.useCoreEdit = function (refForm, initialState, service, p1, p, props) {
142
142
  if (form) {
143
143
  formutil_1.readOnly(form);
144
144
  }
145
- p1.showError(msg.message, msg.title);
145
+ p1.showError(msg.message, msg.title, undefined, function () { return window.history.back; });
146
146
  };
147
147
  var handleNotFound = (p && p.handleNotFound ? p.handleNotFound : _handleNotFound);
148
148
  var _getModel = function () {
@@ -299,10 +299,7 @@ exports.useCoreEdit = function (refForm, initialState, service, p1, p, props) {
299
299
  var unmappedErrors = u.showFormError(f, errors);
300
300
  formutil_1.focusFirstError(f);
301
301
  if (!result.message) {
302
- if (errors && errors.length === 1) {
303
- result.message = errors[0].message;
304
- }
305
- else {
302
+ if (errors && errors.length > 0) {
306
303
  if (p1.ui && p1.ui.buildErrorMessage) {
307
304
  result.message = p1.ui.buildErrorMessage(unmappedErrors);
308
305
  }
@@ -426,21 +423,32 @@ exports.useCoreEdit = function (refForm, initialState, service, p1, p, props) {
426
423
  setRunning(false);
427
424
  core_1.hideLoading(p1.loading);
428
425
  }).catch(function (err) {
426
+ var _a, _b, _c;
429
427
  var data = (err && err.response) ? err.response : err;
430
428
  var r = p1.resource;
431
429
  var title = r.value('error');
432
430
  var msg = r.value('error_internal');
433
- if (data && data.status === 404) {
434
- handleNotFound(refForm.current);
431
+ var st = core_1.createEditStatus(p ? p.status : undefined);
432
+ if (data && data.status === 422) {
433
+ fail((_a = err.response) === null || _a === void 0 ? void 0 : _a.data);
434
+ var obj = (_c = (_b = err.response) === null || _b === void 0 ? void 0 : _b.data) === null || _c === void 0 ? void 0 : _c.value;
435
+ if (obj) {
436
+ callback ? callback(obj, showModel) : showModel(obj);
437
+ }
435
438
  }
436
439
  else {
437
- if (data.status && !isNaN(data.status)) {
438
- msg = core_1.messageByHttpStatus(data.status, r.value);
440
+ if (data && data.status === 404) {
441
+ handleNotFound(refForm.current);
439
442
  }
440
- if (data && (data.status === 401 || data.status === 403)) {
441
- formutil_1.readOnly(refForm.current);
443
+ else {
444
+ if (data.status && !isNaN(data.status)) {
445
+ msg = core_1.messageByHttpStatus(data.status, r.value);
446
+ }
447
+ if (data && (data.status === 401 || data.status === 403)) {
448
+ formutil_1.readOnly(refForm.current);
449
+ }
450
+ p1.showError(msg, title);
442
451
  }
443
- p1.showError(msg, title);
444
452
  }
445
453
  setRunning(false);
446
454
  core_1.hideLoading(p1.loading);
package/lib/useSearch.js CHANGED
@@ -44,7 +44,7 @@ exports.callSearch = function (se, search3, showResults3, searchError3, lc, next
44
44
  delete se['firstLimit'];
45
45
  search3(s, limit, next, fields).then(function (sr) {
46
46
  showResults3(s, sr, lc);
47
- }).catch(function (err) { return searchError3(err); });
47
+ }).catch(function (err) { return err && searchError3(err); });
48
48
  };
49
49
  var appendListOfState = function (results, list, setState2) {
50
50
  var arr = search_1.append(list, results);
@@ -319,7 +319,10 @@ exports.useCoreSearch = function (refForm, initialState, service, p1, p2) {
319
319
  var appendList = (p && p.appendList ? p.appendList : appendListOfState);
320
320
  var setList = (p && p.setList ? p.setList : setListOfState);
321
321
  var _showResults = function (s, sr, lc) {
322
- var results = sr.list;
322
+ if (sr == undefined) {
323
+ return;
324
+ }
325
+ var results = (sr === null || sr === void 0 ? void 0 : sr.list) || [];
323
326
  if (results && results.length > 0) {
324
327
  search_1.formatResults(results, component.pageIndex, component.pageSize, component.pageSize, p ? p.sequenceNo : undefined, p ? p.format : undefined, lc);
325
328
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-hook-core",
3
- "version": "0.1.17",
3
+ "version": "0.1.19",
4
4
  "description": "react",
5
5
  "main": "./lib/index.js",
6
6
  "types": "./src/index.ts",
package/src/index.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import * as React from 'react';
2
+ import { useEffect, useRef, useState } from 'react';
2
3
  export * from './formutil';
3
4
  export * from './util';
4
5
  export * from './core';
@@ -16,6 +17,28 @@ export * from './search';
16
17
  export * from './reflect';
17
18
  export * from './com';
18
19
 
20
+ type CallBackType<T> = (updatedValue: T) => void;
21
+ type SetStateType<T> = T | ((prev: T) => T);
22
+ type RetType = <T>(initialValue: T | (() => T)) => [T, (newValue: SetStateType<T>, callback?: CallBackType<T>) => void];
23
+
24
+ export const useCallbackState: RetType = <T>(initialValue: T | (() => T)) => {
25
+ const [state, _setState] = useState<T>(initialValue);
26
+ const callbackQueue = useRef<CallBackType<T>[]>([]);
27
+
28
+ useEffect(() => {
29
+ callbackQueue.current.forEach((cb) => cb(state));
30
+ callbackQueue.current = [];
31
+ }, [state]);
32
+
33
+ const setState = (newValue: SetStateType<T>, callback?: CallBackType<T>) => {
34
+ _setState(newValue);
35
+ if (callback && typeof callback === "function") {
36
+ callbackQueue.current.push(callback);
37
+ }
38
+ };
39
+ return [state, setState];
40
+ };
41
+
19
42
  export function checked(s: string[]|string|undefined, v: string): boolean|undefined {
20
43
  if (s) {
21
44
  if (Array.isArray(s)) {
package/src/route.ts CHANGED
@@ -51,6 +51,7 @@ function parseToModel(dest: any, src: any) {
51
51
  if (typeof dest !== 'object' || typeof src !== 'object') {
52
52
  return dest;
53
53
  }
54
+ dest = convertToObject(dest)
54
55
  for (let key in src) {
55
56
  if (!Object.hasOwn(dest, key)) continue;
56
57
  if (src.hasOwnProperty(key)) {
package/src/search.ts CHANGED
@@ -583,7 +583,6 @@ export function getModel<T, S extends Filter>(state: any, modelName: string, sea
583
583
  let obj2 = getModelFromState(state, modelName);
584
584
 
585
585
  const obj: any = obj2 ? obj2 : {};
586
- console.log("getModel optimizeFilter", searchable)
587
586
  const obj3 = optimizeFilter(obj, searchable, fields);
588
587
  obj3.excluding = excluding;
589
588
  return obj3;
package/src/useEdit.ts CHANGED
@@ -219,7 +219,7 @@ export const useCoreEdit = <T, ID, S, P>(
219
219
  if (form) {
220
220
  setReadOnly(form);
221
221
  }
222
- p1.showError(msg.message, msg.title);
222
+ p1.showError(msg.message, msg.title, undefined, () => window.history.back);
223
223
  };
224
224
  const handleNotFound = (p && p.handleNotFound ? p.handleNotFound : _handleNotFound);
225
225
 
@@ -371,9 +371,7 @@ export const useCoreEdit = <T, ID, S, P>(
371
371
  const unmappedErrors = u.showFormError(f, errors);
372
372
  focusFirstError(f);
373
373
  if (!result.message) {
374
- if (errors && errors.length === 1) {
375
- result.message = errors[0].message;
376
- } else {
374
+ if (errors && errors.length > 0) {
377
375
  if (p1.ui && p1.ui.buildErrorMessage) {
378
376
  result.message = p1.ui.buildErrorMessage(unmappedErrors);
379
377
  } else {
@@ -492,16 +490,25 @@ export const useCoreEdit = <T, ID, S, P>(
492
490
  const r = p1.resource;
493
491
  const title = r.value('error');
494
492
  let msg = r.value('error_internal');
495
- if (data && data.status === 404) {
496
- handleNotFound(refForm.current);
497
- } else {
498
- if (data.status && !isNaN(data.status)) {
499
- msg = messageByHttpStatus(data.status, r.value);
500
- }
501
- if (data && (data.status === 401 || data.status === 403)) {
502
- setReadOnly(refForm.current);
493
+ const st = createEditStatus(p ? p.status : undefined);
494
+ if (data && data.status === 422) {
495
+ fail(err.response?.data);
496
+ const obj = err.response?.data?.value;
497
+ if (obj) {
498
+ callback ? callback(obj as T, showModel) : showModel(obj as T);
503
499
  }
504
- p1.showError(msg, title);
500
+ } else {
501
+ if (data && data.status === 404) {
502
+ handleNotFound(refForm.current);
503
+ } else {
504
+ if (data.status && !isNaN(data.status)) {
505
+ msg = messageByHttpStatus(data.status, r.value);
506
+ }
507
+ if (data && (data.status === 401 || data.status === 403)) {
508
+ setReadOnly(refForm.current);
509
+ }
510
+ p1.showError(msg, title);
511
+ }
505
512
  }
506
513
  setRunning(false);
507
514
  hideLoading(p1.loading);
package/src/useSearch.ts CHANGED
@@ -44,7 +44,7 @@ export const callSearch = <T, S extends Filter>(se: S, search3: (s: S, limit?: n
44
44
  delete se['firstLimit'];
45
45
  search3(s, limit, next, fields).then(sr => {
46
46
  showResults3(s, sr, lc);
47
- }).catch(err => searchError3(err));
47
+ }).catch(err => err && searchError3(err));
48
48
  };
49
49
  const appendListOfState = <T, S extends Filter>(results: T[], list: T[]|undefined, setState2: DispatchWithCallback<Partial<SearchComponentState<T, S>>>) => {
50
50
  const arr = append(list, results);
@@ -437,7 +437,10 @@ export const useCoreSearch = <T, S extends Filter, ST>(
437
437
  const appendList = (p && p.appendList ? p.appendList : appendListOfState);
438
438
  const setList = (p && p.setList ? p.setList : setListOfState);
439
439
  const _showResults = (s: S, sr: SearchResult<T>, lc: Locale) => {
440
- const results = sr.list;
440
+ if (sr == undefined) {
441
+ return;
442
+ }
443
+ const results = sr?.list || [];
441
444
  if (results && results.length > 0) {
442
445
  formatResults(results, component.pageIndex, component.pageSize, component.pageSize, p ? p.sequenceNo : undefined, p ? p.format : undefined, lc);
443
446
  }