react-hook-core 0.1.12 → 0.1.14

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 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 l = this.getList();
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
- var parsed = qs.parse(urlSearch);
15
- return parsed;
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, keys, l, f, dc, lc, currencyCode) {
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/useEdit.js CHANGED
@@ -48,7 +48,13 @@ exports.useEdit = function (refForm, initialState, service, p2, p) {
48
48
  p.initialize(id, baseProps.load, baseProps.setState, p.callback);
49
49
  }
50
50
  else {
51
- baseProps.load(id, p ? p.callback : undefined);
51
+ try {
52
+ baseProps.load(id, p ? p.callback : undefined);
53
+ }
54
+ catch (error) {
55
+ p2.showError(error);
56
+ core_1.hideLoading(p2.loading);
57
+ }
52
58
  }
53
59
  }, []);
54
60
  return __assign({}, baseProps);
@@ -372,14 +378,29 @@ exports.useCoreEdit = function (refForm, initialState, service, p1, p, props) {
372
378
  var patchable = (p ? p.patchable : true);
373
379
  if (flag.newMode === false) {
374
380
  if (service.patch && patchable !== false && body && Object.keys(body).length > 0) {
375
- service.patch(body).then(function (result) { return postSave(obj, result, version, isBackO); });
381
+ service.patch(body).then(function (result) { return postSave(obj, result, version, isBackO); }).catch(handleError);
376
382
  }
377
383
  else {
378
- service.update(obj).then(function (result) { return postSave(obj, result, version, isBackO); });
384
+ service.update(obj).then(function (result) { return postSave(obj, result, version, isBackO); }).catch(handleError);
379
385
  }
380
386
  }
381
387
  else {
382
- service.insert(obj).then(function (result) { return postSave(obj, result, version, isBackO); });
388
+ service.insert(obj).then(function (result) { return postSave(obj, result, version, isBackO); }).catch(handleError);
389
+ }
390
+ };
391
+ var handleError = function (err) {
392
+ if (err) {
393
+ setRunning(false);
394
+ core_1.hideLoading(p1.loading);
395
+ var errMsg = p1.resource.value('error_internal');
396
+ var data = (err && err.response) ? err.response : err;
397
+ if (data.status === 400) {
398
+ var errMsg_1 = p1.resource.value('error_400');
399
+ p1.showError(errMsg_1, "Error");
400
+ }
401
+ else {
402
+ p1.showError(errMsg, "Error");
403
+ }
383
404
  }
384
405
  };
385
406
  var doSave = (p && p.doSave ? p.doSave : _doSave);
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
- var s = search_1.mergeFilter(route_1.buildFromUrl(), se, component.pageSizes);
116
- load(s, p2.auto);
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 lc = (p1.getLocale ? p1.getLocale() : state_1.enLocale);
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(com, true);
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-hook-core",
3
- "version": "0.1.12",
3
+ "version": "0.1.14",
4
4
  "description": "react",
5
5
  "main": "./lib/index.js",
6
6
  "types": "./src/index.ts",
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 l = this.getList();
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
- const parsed: any = qs.parse(urlSearch);
13
- return parsed;
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[], keys?: string[], l?: T[], f?: HTMLFormElement|null, dc?: (f2: HTMLFormElement, lc2?: Locale, cc?: string) => any, lc?: Locale, currencyCode?: string): S {
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
- } 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;
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
- } else {
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/useEdit.ts CHANGED
@@ -97,7 +97,12 @@ export const useEdit = <T, ID, S>(
97
97
  if (p && p.initialize) {
98
98
  p.initialize(id, baseProps.load, baseProps.setState, p.callback);
99
99
  } else {
100
- baseProps.load(id, p ? p.callback : undefined);
100
+ try {
101
+ baseProps.load(id, p ? p.callback : undefined);
102
+ } catch (error) {
103
+ p2.showError(error as string);
104
+ hideLoading(p2.loading);
105
+ }
101
106
  }
102
107
  // eslint-disable-next-line react-hooks/exhaustive-deps
103
108
  }, []);
@@ -435,12 +440,27 @@ export const useCoreEdit = <T, ID, S, P>(
435
440
  const patchable = (p ? p.patchable : true);
436
441
  if (flag.newMode === false) {
437
442
  if (service.patch && patchable !== false && body && Object.keys(body).length > 0) {
438
- service.patch(body).then(result => postSave(obj, result, version, isBackO));
443
+ service.patch(body).then(result => postSave(obj, result, version, isBackO)).catch(handleError);
439
444
  } else {
440
- service.update(obj).then(result => postSave(obj, result, version, isBackO));
445
+ service.update(obj).then(result => postSave(obj, result, version, isBackO)).catch(handleError);
441
446
  }
442
447
  } else {
443
- service.insert(obj).then(result => postSave(obj, result, version, isBackO));
448
+ service.insert(obj).then(result => postSave(obj, result, version, isBackO)).catch(handleError);
449
+ }
450
+ };
451
+
452
+ const handleError = function (err: any) {
453
+ if (err) {
454
+ setRunning(false);
455
+ hideLoading(p1.loading);
456
+ const errMsg = p1.resource.value('error_internal');
457
+ const data = (err && err.response) ? err.response : err;
458
+ if (data.status === 400) {
459
+ const errMsg = p1.resource.value('error_400');
460
+ p1.showError(errMsg, "Error");
461
+ } else{
462
+ p1.showError(errMsg, "Error");
463
+ }
444
464
  }
445
465
  };
446
466
  const doSave = (p && p.doSave ? p.doSave : _doSave);
package/src/useSearch.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import {useEffect, useState} from 'react';
2
- import {error, getDecodeFromForm, getName, getRemoveError, getValidateForm, handleToggle, hideLoading, initForm, Locale, PageChange, pageSizes, removeFormError, ResourceService, SearchParameter, SearchResult, SearchService, showLoading} from './core';
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
- const s: any = mergeFilter2(buildFromUrl<S>(), se, component.pageSizes);
209
- load(s, p2.auto);
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 lc = (p1.getLocale ? p1.getLocale() : enLocale);
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(com, true);
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
  };