react-hook-core 0.1.6 → 0.1.9
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/com.js +15 -0
- package/lib/components.js +13 -9
- package/lib/core.js +1 -0
- package/lib/index.js +1 -8
- package/lib/reflect.js +3 -1
- package/lib/useEdit.js +6 -3
- package/lib/useSearch.js +12 -5
- package/package.json +1 -1
- package/src/com.ts +53 -0
- package/src/components.ts +23 -18
- package/src/core.ts +1 -0
- package/src/edit.ts +1 -1
- package/src/index.ts +1 -15
- package/src/reflect.ts +3 -1
- package/src/useEdit.ts +6 -6
- package/src/useSearch.ts +12 -9
- package/lib/router.js +0 -35
- package/src/router.ts +0 -39
package/lib/com.js
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
var React = require("react");
|
|
4
|
+
var core_1 = require("./core");
|
|
5
|
+
function PageSizeSelect(p) {
|
|
6
|
+
var g = p.sizes;
|
|
7
|
+
var s = (!g || g.length === 0 ? core_1.pageSizes : g);
|
|
8
|
+
var opts = s.map(function (pgSize) { return React.createElement('option', { key: pgSize, value: pgSize }, pgSize); });
|
|
9
|
+
return React.createElement('select', { id: p.id, name: p.name, defaultValue: p.size, onChange: p.onChange }, opts);
|
|
10
|
+
}
|
|
11
|
+
exports.PageSizeSelect = PageSizeSelect;
|
|
12
|
+
function Search(p) {
|
|
13
|
+
return (React.createElement(React.Fragment, null, React.createElement("label", { className: p.className }, p.pageSizeChanged && React.createElement(PageSizeSelect, { size: p.size, sizes: p.sizes, onChange: p.pageSizeChanged, name: p.name, id: p.id }), React.createElement("input", { type: 'text', id: 'q', name: 'q', value: p.value || '', onChange: p.onChange, maxLength: p.maxLength, placeholder: p.placeholder }), p.clear && React.createElement("button", { type: 'button', hidden: !p.value, className: 'btn-remove-text', onClick: p.clear }), p.toggle && React.createElement("button", { type: 'button', className: 'btn-filter', onClick: p.toggle }), p.search && React.createElement("button", { type: 'submit', className: 'btn-search', onClick: p.search }))));
|
|
14
|
+
}
|
|
15
|
+
exports.Search = Search;
|
package/lib/components.js
CHANGED
|
@@ -398,16 +398,20 @@ var BaseSearchComponent = (function (_super) {
|
|
|
398
398
|
this.initFields = true;
|
|
399
399
|
return fs;
|
|
400
400
|
};
|
|
401
|
-
BaseSearchComponent.prototype.clearQ = function () {
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
m.q = '';
|
|
405
|
-
this.setState({ model: m });
|
|
401
|
+
BaseSearchComponent.prototype.clearQ = function (e) {
|
|
402
|
+
if (e) {
|
|
403
|
+
e.preventDefault();
|
|
406
404
|
}
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
405
|
+
var n = this.getModelName();
|
|
406
|
+
if (n && n.length > 0) {
|
|
407
|
+
var m = this.state[n];
|
|
408
|
+
if (m) {
|
|
409
|
+
m.q = '';
|
|
410
|
+
var setObj = {};
|
|
411
|
+
setObj[n] = m;
|
|
412
|
+
this.setState(setObj);
|
|
413
|
+
return;
|
|
414
|
+
}
|
|
411
415
|
}
|
|
412
416
|
};
|
|
413
417
|
BaseSearchComponent.prototype.search = function (event) {
|
package/lib/core.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
var formutil_1 = require("./formutil");
|
|
4
4
|
exports.pageSizes = [12, 24, 60, 100, 120, 180, 300, 600];
|
|
5
|
+
exports.size = exports.pageSizes;
|
|
5
6
|
function createEditStatus(status) {
|
|
6
7
|
if (status) {
|
|
7
8
|
return status;
|
package/lib/index.js
CHANGED
|
@@ -19,7 +19,7 @@ __export(require("./useEdit"));
|
|
|
19
19
|
__export(require("./components"));
|
|
20
20
|
__export(require("./search"));
|
|
21
21
|
__export(require("./reflect"));
|
|
22
|
-
|
|
22
|
+
__export(require("./com"));
|
|
23
23
|
function checked(s, v) {
|
|
24
24
|
if (s) {
|
|
25
25
|
if (Array.isArray(s)) {
|
|
@@ -51,10 +51,3 @@ exports.Loading = function (props) {
|
|
|
51
51
|
return (React.createElement('div', { className: 'loader-wrapper' }, React.createElement('div', { className: 'loader-sign', style: loadingStyle }, React.createElement('div', { className: 'loader' }))));
|
|
52
52
|
}
|
|
53
53
|
};
|
|
54
|
-
function PageSizeSelect(p) {
|
|
55
|
-
var g = p.sizes;
|
|
56
|
-
var s = (!g || g.length === 0 ? core_1.pageSizes : g);
|
|
57
|
-
var opts = s.map(function (pgSize) { return React.createElement('option', { key: pgSize, value: pgSize }, pgSize); });
|
|
58
|
-
return React.createElement('select', { id: p.id, name: p.name, defaultValue: p.size, onChange: p.onChange }, opts);
|
|
59
|
-
}
|
|
60
|
-
exports.PageSizeSelect = PageSizeSelect;
|
package/lib/reflect.js
CHANGED
|
@@ -116,7 +116,9 @@ function diff(obj1, obj2) {
|
|
|
116
116
|
return fields;
|
|
117
117
|
}
|
|
118
118
|
exports.diff = diff;
|
|
119
|
-
function makeDiff(
|
|
119
|
+
function makeDiff(o1, o2, keys, version) {
|
|
120
|
+
var obj1 = o1;
|
|
121
|
+
var obj2 = o2;
|
|
120
122
|
var obj3 = {};
|
|
121
123
|
var s = diff(obj1, obj2);
|
|
122
124
|
if (s.length === 0) {
|
package/lib/useEdit.js
CHANGED
|
@@ -30,7 +30,7 @@ exports.useEdit = function (refForm, initialState, service, p2, p) {
|
|
|
30
30
|
}
|
|
31
31
|
var n = baseProps.getModelName(refForm.current);
|
|
32
32
|
var obj = {};
|
|
33
|
-
obj[n] = baseProps.
|
|
33
|
+
obj[n] = baseProps.createModel();
|
|
34
34
|
baseProps.setState(obj);
|
|
35
35
|
var keys;
|
|
36
36
|
if (p && !p.keys && service && service.metadata) {
|
|
@@ -63,7 +63,7 @@ exports.useEditProps = function (props, refForm, initialState, service, p2, p) {
|
|
|
63
63
|
}
|
|
64
64
|
var n = baseProps.getModelName(refForm.current);
|
|
65
65
|
var obj = {};
|
|
66
|
-
obj[n] = baseProps.
|
|
66
|
+
obj[n] = baseProps.createModel();
|
|
67
67
|
baseProps.setState(obj);
|
|
68
68
|
var keys;
|
|
69
69
|
if (p && !p.keys && service && service.metadata) {
|
|
@@ -415,7 +415,10 @@ exports.useCoreEdit = function (refForm, initialState, service, p1, p, props) {
|
|
|
415
415
|
getModelName: getModelName,
|
|
416
416
|
resetState: resetState,
|
|
417
417
|
handleNotFound: handleNotFound,
|
|
418
|
-
getModel: getModel,
|
|
418
|
+
getModel: getModel,
|
|
419
|
+
createModel: createModel,
|
|
420
|
+
create: create,
|
|
421
|
+
save: save,
|
|
419
422
|
onSave: onSave,
|
|
420
423
|
confirm: confirm,
|
|
421
424
|
validate: validate, showMessage: p1.showMessage, succeed: succeed,
|
package/lib/useSearch.js
CHANGED
|
@@ -98,6 +98,7 @@ function mergeParam(p) {
|
|
|
98
98
|
};
|
|
99
99
|
}
|
|
100
100
|
}
|
|
101
|
+
exports.mergeParam = mergeParam;
|
|
101
102
|
exports.useSearch = function (refForm, initialState, service, p2, p) {
|
|
102
103
|
var baseProps = exports.useCoreSearch(refForm, initialState, service, p2, p);
|
|
103
104
|
react_1.useEffect(function () {
|
|
@@ -123,7 +124,7 @@ exports.useSearchOneProps = function (p) {
|
|
|
123
124
|
exports.useSearchOne = function (p) {
|
|
124
125
|
return exports.useCoreSearch(p.refForm, p.initialState, p.service, p, p);
|
|
125
126
|
};
|
|
126
|
-
exports.useCoreSearch = function (refForm, initialState, service, p1, p2
|
|
127
|
+
exports.useCoreSearch = function (refForm, initialState, service, p1, p2) {
|
|
127
128
|
var p = mergeParam(p2);
|
|
128
129
|
var _a = react_1.useState(), running = _a[0], setRunning = _a[1];
|
|
129
130
|
var _getModelName = function () {
|
|
@@ -149,7 +150,7 @@ exports.useCoreSearch = function (refForm, initialState, service, p1, p2, props)
|
|
|
149
150
|
return fs;
|
|
150
151
|
};
|
|
151
152
|
var getFields = p && p.getFields ? p.getFields : _getFields;
|
|
152
|
-
var
|
|
153
|
+
var _getFilter = function (se) {
|
|
153
154
|
if (!se) {
|
|
154
155
|
se = component;
|
|
155
156
|
}
|
|
@@ -167,6 +168,7 @@ exports.useCoreSearch = function (refForm, initialState, service, p1, p2, props)
|
|
|
167
168
|
var obj3 = search_1.getModel(state, n, se, fs, se.excluding, keys, se.list, refForm.current, core_1.getDecodeFromForm(p1), lc, cc);
|
|
168
169
|
return obj3;
|
|
169
170
|
};
|
|
171
|
+
var getFilter = p && p.getFilter ? p.getFilter : _getFilter;
|
|
170
172
|
var _setFilter = function (s) {
|
|
171
173
|
var objSet = {};
|
|
172
174
|
var n = getModelName();
|
|
@@ -225,12 +227,15 @@ exports.useCoreSearch = function (refForm, initialState, service, p1, p2, props)
|
|
|
225
227
|
});
|
|
226
228
|
doSearch(component);
|
|
227
229
|
};
|
|
228
|
-
var clearQ = function (
|
|
230
|
+
var clearQ = function (e) {
|
|
231
|
+
if (e) {
|
|
232
|
+
e.preventDefault();
|
|
233
|
+
}
|
|
229
234
|
var n = getModelName();
|
|
230
235
|
if (n && n.length > 0) {
|
|
231
236
|
var m = state[n];
|
|
232
237
|
if (m) {
|
|
233
|
-
m.
|
|
238
|
+
m.q = '';
|
|
234
239
|
var setObj = {};
|
|
235
240
|
setObj[n] = m;
|
|
236
241
|
setState(setObj);
|
|
@@ -370,7 +375,9 @@ exports.useCoreSearch = function (refForm, initialState, service, p1, p2, props)
|
|
|
370
375
|
toggleFilter: toggleFilter,
|
|
371
376
|
doSearch: doSearch,
|
|
372
377
|
pageChanged: pageChanged,
|
|
373
|
-
pageSizeChanged: pageSizeChanged,
|
|
378
|
+
pageSizeChanged: pageSizeChanged,
|
|
379
|
+
clearQ: clearQ,
|
|
380
|
+
showResults: showResults,
|
|
374
381
|
getFields: getFields,
|
|
375
382
|
getModelName: getModelName, format: p ? p.format : undefined
|
|
376
383
|
});
|
package/package.json
CHANGED
package/src/com.ts
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { Locale, pageSizes } from './core';
|
|
3
|
+
|
|
4
|
+
export interface PageSizeProps {
|
|
5
|
+
id?: string;
|
|
6
|
+
name?: string;
|
|
7
|
+
size?: number;
|
|
8
|
+
sizes?: number[];
|
|
9
|
+
onChange?: React.ChangeEventHandler<HTMLSelectElement>;
|
|
10
|
+
}
|
|
11
|
+
export function PageSizeSelect(p: PageSizeProps) {
|
|
12
|
+
const g = p.sizes;
|
|
13
|
+
const s = (!g || g.length === 0 ? pageSizes : g);
|
|
14
|
+
const opts = s.map(pgSize => React.createElement('option', { key: pgSize, value: pgSize }, pgSize));
|
|
15
|
+
return React.createElement('select', { id: p.id, name: p.name, defaultValue: p.size, onChange: p.onChange }, opts);
|
|
16
|
+
}
|
|
17
|
+
export interface Props {
|
|
18
|
+
id?: string;
|
|
19
|
+
name?: string;
|
|
20
|
+
size?: number;
|
|
21
|
+
sizes?: number[];
|
|
22
|
+
className?: string;
|
|
23
|
+
maxLength?: number;
|
|
24
|
+
value?: string;
|
|
25
|
+
placeholder?: string;
|
|
26
|
+
pageSizeChanged?: (event: any) => void;
|
|
27
|
+
search?: React.MouseEventHandler<HTMLElement>;
|
|
28
|
+
toggle?: React.MouseEventHandler<HTMLElement>;
|
|
29
|
+
clear?: React.MouseEventHandler<HTMLButtonElement>;
|
|
30
|
+
onChange?: (e: any, callback?: (() => void) | undefined, lc?: Locale | undefined) => void;
|
|
31
|
+
}
|
|
32
|
+
export function Search(p: Props) {
|
|
33
|
+
return (React.createElement(React.Fragment, null,
|
|
34
|
+
React.createElement("label", { className: p.className },
|
|
35
|
+
p.pageSizeChanged && React.createElement(PageSizeSelect, { size: p.size, sizes: p.sizes, onChange: p.pageSizeChanged, name: p.name, id: p.id }),
|
|
36
|
+
React.createElement("input", { type: 'text', id: 'q', name: 'q', value: p.value || '', onChange: p.onChange, maxLength: p.maxLength, placeholder: p.placeholder }),
|
|
37
|
+
p.clear && React.createElement("button", { type: 'button', hidden: !p.value, className: 'btn-remove-text', onClick: p.clear }),
|
|
38
|
+
p.toggle && React.createElement("button", { type: 'button', className: 'btn-filter', onClick: p.toggle }),
|
|
39
|
+
p.search && React.createElement("button", { type: 'submit', className: 'btn-search', onClick: p.search }))));
|
|
40
|
+
/*
|
|
41
|
+
return (
|
|
42
|
+
<>
|
|
43
|
+
<label className={p.className}>
|
|
44
|
+
{p.pageSizeChanged && <PageSizeSelect size={p.size} sizes={p.sizes} onChange={p.pageSizeChanged} name={p.name} id={p.id} />}
|
|
45
|
+
<input type='text' id='q' name='q' value={p.value || ''} onChange={p.onChange} maxLength={p.maxLength} placeholder={p.placeholder} />
|
|
46
|
+
{p.clear && <button type='button' hidden={!p.value} className='btn-remove-text' onClick={p.clear}/>}
|
|
47
|
+
{p.toggle && <button type='button' className='btn-filter' onClick={p.toggle} />}
|
|
48
|
+
{p.search && <button type='submit' className='btn-search' onClick={p.search} />}
|
|
49
|
+
</label>
|
|
50
|
+
</>
|
|
51
|
+
);
|
|
52
|
+
*/
|
|
53
|
+
}
|
package/src/components.ts
CHANGED
|
@@ -443,18 +443,23 @@ export class BaseSearchComponent<T, F extends Filter, P, I extends SearchState<T
|
|
|
443
443
|
this.setState(prevState => ({ isPageSizeOpenDropDown: !(prevState as any).isPageSizeOpenDropDown } as any));
|
|
444
444
|
}
|
|
445
445
|
|
|
446
|
-
clearQ(): void {
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
this.
|
|
453
|
-
|
|
454
|
-
|
|
446
|
+
clearQ(e?: React.MouseEvent<HTMLButtonElement, MouseEvent>): void {
|
|
447
|
+
if (e) {
|
|
448
|
+
e.preventDefault();
|
|
449
|
+
}
|
|
450
|
+
const n = this.getModelName();
|
|
451
|
+
if (n && n.length > 0) {
|
|
452
|
+
const m = (this.state as any)[n];
|
|
453
|
+
if (m) {
|
|
454
|
+
m.q = '';
|
|
455
|
+
const setObj: any = {};
|
|
456
|
+
setObj[n] = m;
|
|
457
|
+
this.setState(setObj);
|
|
458
|
+
return;
|
|
459
|
+
}
|
|
455
460
|
}
|
|
456
461
|
}
|
|
457
|
-
search(event:
|
|
462
|
+
search(event: React.MouseEvent<HTMLButtonElement, MouseEvent>): void {
|
|
458
463
|
if (event) {
|
|
459
464
|
event.preventDefault();
|
|
460
465
|
if (!this.getSearchForm()) {
|
|
@@ -806,7 +811,7 @@ export abstract class BaseEditComponent<T, P, S> extends BaseComponent<P, S> {
|
|
|
806
811
|
}
|
|
807
812
|
}
|
|
808
813
|
|
|
809
|
-
create = (event:
|
|
814
|
+
create = (event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {
|
|
810
815
|
if (event) {
|
|
811
816
|
event.preventDefault();
|
|
812
817
|
}
|
|
@@ -823,9 +828,9 @@ export abstract class BaseEditComponent<T, P, S> extends BaseComponent<P, S> {
|
|
|
823
828
|
}, 100);
|
|
824
829
|
}
|
|
825
830
|
}
|
|
826
|
-
save = (event:
|
|
831
|
+
save = (event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {
|
|
827
832
|
event.preventDefault();
|
|
828
|
-
|
|
833
|
+
event.persist();
|
|
829
834
|
if (!this.form && event && event.target) {
|
|
830
835
|
this.form = (event.target as HTMLInputElement).form;
|
|
831
836
|
}
|
|
@@ -856,7 +861,7 @@ export abstract class BaseEditComponent<T, P, S> extends BaseComponent<P, S> {
|
|
|
856
861
|
});
|
|
857
862
|
} else {
|
|
858
863
|
const diffObj = makeDiff(initPropertyNullInModel(this.orginalModel, this.metadata), obj, this.keys, this.version);
|
|
859
|
-
const keys = Object.keys(diffObj);
|
|
864
|
+
const keys = Object.keys(diffObj as any);
|
|
860
865
|
if (keys.length === 0) {
|
|
861
866
|
this.showMessage(r.value('msg_no_change'));
|
|
862
867
|
} else {
|
|
@@ -881,7 +886,7 @@ export abstract class BaseEditComponent<T, P, S> extends BaseComponent<P, S> {
|
|
|
881
886
|
}
|
|
882
887
|
}
|
|
883
888
|
|
|
884
|
-
doSave(obj: T, dif?: T
|
|
889
|
+
doSave(obj: T, dif?: Partial<T>, isBack?: boolean) {
|
|
885
890
|
}
|
|
886
891
|
|
|
887
892
|
succeed(msg: string, isBack?: boolean, result?: ResultInfo<T>) {
|
|
@@ -1053,12 +1058,12 @@ export class EditComponent<T, ID, P, S> extends BaseEditComponent<T, P, S> {
|
|
|
1053
1058
|
}
|
|
1054
1059
|
}
|
|
1055
1060
|
}
|
|
1056
|
-
doSave(obj: T, body?: T
|
|
1061
|
+
doSave(obj: T, body?: Partial<T>, isBack?: boolean) {
|
|
1057
1062
|
this.running = true;
|
|
1058
1063
|
showLoading(this.loading);
|
|
1059
1064
|
const isBackO = (isBack == null || isBack === undefined ? this.backOnSuccess : isBack);
|
|
1060
1065
|
const com = this;
|
|
1061
|
-
let m = obj;
|
|
1066
|
+
let m: T|Partial<T> = obj;
|
|
1062
1067
|
let fn = this.newMode ? this.service.insert : this.service.update;
|
|
1063
1068
|
if (!this.newMode) {
|
|
1064
1069
|
if (this.patchable === true && this.service.patch && body && Object.keys(body).length > 0) {
|
|
@@ -1066,7 +1071,7 @@ export class EditComponent<T, ID, P, S> extends BaseEditComponent<T, P, S> {
|
|
|
1066
1071
|
fn = this.service.patch;
|
|
1067
1072
|
}
|
|
1068
1073
|
}
|
|
1069
|
-
fn(m).then(result => {
|
|
1074
|
+
fn(m as any).then(result => {
|
|
1070
1075
|
com.postSave(result, isBackO);
|
|
1071
1076
|
com.running = false;
|
|
1072
1077
|
hideLoading(com.loading);
|
package/src/core.ts
CHANGED
package/src/edit.ts
CHANGED
|
@@ -17,7 +17,7 @@ export interface EditParameter {
|
|
|
17
17
|
status?: EditStatusConfig;
|
|
18
18
|
}
|
|
19
19
|
export interface GenericService<T, ID, R> extends ViewService<T, ID> {
|
|
20
|
-
patch?(obj: T
|
|
20
|
+
patch?(obj: Partial<T>, ctx?: any): Promise<R>;
|
|
21
21
|
insert(obj: T, ctx?: any): Promise<R>;
|
|
22
22
|
update(obj: T, ctx?: any): Promise<R>;
|
|
23
23
|
delete?(id: ID, ctx?: any): Promise<number>;
|
package/src/index.ts
CHANGED
|
@@ -14,8 +14,7 @@ export * from './useEdit';
|
|
|
14
14
|
export * from './components';
|
|
15
15
|
export * from './search';
|
|
16
16
|
export * from './reflect';
|
|
17
|
-
|
|
18
|
-
import {pageSizes} from './core';
|
|
17
|
+
export * from './com';
|
|
19
18
|
|
|
20
19
|
export function checked(s: string[]|string|undefined, v: string): boolean|undefined {
|
|
21
20
|
if (s) {
|
|
@@ -55,17 +54,4 @@ export const Loading = (props: LoadingProps) => {
|
|
|
55
54
|
);*/
|
|
56
55
|
}
|
|
57
56
|
};
|
|
58
|
-
export interface Props {
|
|
59
|
-
id?: string;
|
|
60
|
-
name?: string;
|
|
61
|
-
size?: number;
|
|
62
|
-
sizes?: number[];
|
|
63
|
-
onChange?: React.ChangeEventHandler<HTMLSelectElement>;
|
|
64
|
-
}
|
|
65
|
-
export function PageSizeSelect(p: Props) {
|
|
66
|
-
const g = p.sizes;
|
|
67
|
-
const s = (!g || g.length === 0 ? pageSizes : g);
|
|
68
|
-
const opts = s.map(pgSize => React.createElement('option', { key: pgSize, value: pgSize }, pgSize));
|
|
69
|
-
return React.createElement('select', { id: p.id, name: p.name, defaultValue: p.size, onChange: p.onChange }, opts);
|
|
70
|
-
}
|
|
71
57
|
export type OnClick = React.MouseEvent<HTMLElement, MouseEvent>;
|
package/src/reflect.ts
CHANGED
|
@@ -105,7 +105,9 @@ export function diff(obj1: any, obj2: any): string[] {
|
|
|
105
105
|
return fields;
|
|
106
106
|
}
|
|
107
107
|
|
|
108
|
-
export function makeDiff(
|
|
108
|
+
export function makeDiff<T>(o1: T, o2: T, keys?: string[], version?: string): Partial<T> {
|
|
109
|
+
const obj1: any = o1;
|
|
110
|
+
const obj2: any = o2;
|
|
109
111
|
const obj3: any = {};
|
|
110
112
|
const s = diff(obj1, obj2);
|
|
111
113
|
if (s.length === 0) {
|
package/src/useEdit.ts
CHANGED
|
@@ -80,7 +80,7 @@ export const useEdit = <T, ID, S>(
|
|
|
80
80
|
}
|
|
81
81
|
const n = baseProps.getModelName(refForm.current);
|
|
82
82
|
const obj: any = {};
|
|
83
|
-
obj[n] = baseProps.
|
|
83
|
+
obj[n] = baseProps.createModel();
|
|
84
84
|
baseProps.setState(obj);
|
|
85
85
|
let keys: string[]|undefined;
|
|
86
86
|
if (p && !p.keys && service && service.metadata) {
|
|
@@ -120,7 +120,7 @@ export const useEditProps = <T, ID, S, P>(
|
|
|
120
120
|
}
|
|
121
121
|
const n = baseProps.getModelName(refForm.current);
|
|
122
122
|
const obj: any = {};
|
|
123
|
-
obj[n] = baseProps.
|
|
123
|
+
obj[n] = baseProps.createModel();
|
|
124
124
|
baseProps.setState(obj);
|
|
125
125
|
let keys: string[]|undefined;
|
|
126
126
|
if (p && !p.keys && service && service.metadata) {
|
|
@@ -288,7 +288,7 @@ export const useCoreEdit = <T, ID, S, P>(
|
|
|
288
288
|
validate(obj, () => {
|
|
289
289
|
const msg = message(p1.resource.value, 'msg_confirm_save', 'confirm', 'yes', 'no');
|
|
290
290
|
p1.confirm(msg.message, msg.title, () => {
|
|
291
|
-
doSave(obj, diffObj, version, isBack);
|
|
291
|
+
doSave(obj, diffObj as any, version, isBack);
|
|
292
292
|
}, msg.no, msg.yes);
|
|
293
293
|
});
|
|
294
294
|
}
|
|
@@ -403,7 +403,7 @@ export const useCoreEdit = <T, ID, S, P>(
|
|
|
403
403
|
};
|
|
404
404
|
const handleDuplicateKey = (p && p.handleDuplicateKey ? p.handleDuplicateKey : _handleDuplicateKey);
|
|
405
405
|
|
|
406
|
-
const _doSave = (obj: T, body?: T
|
|
406
|
+
const _doSave = (obj: T, body?: Partial<T>, version?: string, isBack?: boolean) => {
|
|
407
407
|
setRunning(true);
|
|
408
408
|
showLoading(p1.loading);
|
|
409
409
|
const isBackO = (isBack == null || isBack === undefined ? true : isBack);
|
|
@@ -483,8 +483,8 @@ export const useCoreEdit = <T, ID, S, P>(
|
|
|
483
483
|
resetState,
|
|
484
484
|
handleNotFound,
|
|
485
485
|
getModel,
|
|
486
|
-
|
|
487
|
-
|
|
486
|
+
createModel,
|
|
487
|
+
create,
|
|
488
488
|
save,
|
|
489
489
|
onSave,
|
|
490
490
|
// eslint-disable-next-line no-restricted-globals
|
package/src/useSearch.ts
CHANGED
|
@@ -84,7 +84,7 @@ export interface SearchComponentParam<T, M extends Filter> {
|
|
|
84
84
|
getModelName?: () => string;
|
|
85
85
|
getCurrencyCode?: () => string;
|
|
86
86
|
setFilter?: (s: M) => void;
|
|
87
|
-
getFilter?: () => M;
|
|
87
|
+
getFilter?: (se?: Searchable<T>) => M;
|
|
88
88
|
getFields?: () => string[]|undefined;
|
|
89
89
|
validateSearch?: (se: M, callback: () => void) => void;
|
|
90
90
|
// prepareCustomData?: (data: any) => void;
|
|
@@ -142,7 +142,7 @@ export interface SearchComponentState<T, S> extends Pagination, Sortable {
|
|
|
142
142
|
deletable?: boolean;
|
|
143
143
|
}
|
|
144
144
|
|
|
145
|
-
function mergeParam<T, S extends Filter>(p?: SearchComponentParam<T, S>): SearchComponentParam<T, S> {
|
|
145
|
+
export function mergeParam<T, S extends Filter>(p?: SearchComponentParam<T, S>): SearchComponentParam<T, S> {
|
|
146
146
|
if (p) {
|
|
147
147
|
if (!p.sequenceNo) {
|
|
148
148
|
p.sequenceNo = 'sequenceNo';
|
|
@@ -218,13 +218,12 @@ export const useSearchOneProps = <T, S extends Filter, ST extends SearchComponen
|
|
|
218
218
|
export const useSearchOne = <T, S extends Filter, ST extends SearchComponentState<T, S>>(p: HookBaseSearchParameter<T, S, ST>) => {
|
|
219
219
|
return useCoreSearch(p.refForm, p.initialState, p.service, p, p);
|
|
220
220
|
};
|
|
221
|
-
export const useCoreSearch = <T, S extends Filter, ST
|
|
221
|
+
export const useCoreSearch = <T, S extends Filter, ST>(
|
|
222
222
|
refForm: any,
|
|
223
223
|
initialState: ST,
|
|
224
224
|
service: ((s: S, limit?: number, offset?: number|string, fields?: string[]) => Promise<SearchResult<T>>) | SearchService<T, S>,
|
|
225
225
|
p1: SearchParameter,
|
|
226
|
-
p2?: SearchComponentParam<T, S
|
|
227
|
-
props?: P
|
|
226
|
+
p2?: SearchComponentParam<T, S>
|
|
228
227
|
) => {
|
|
229
228
|
const p = mergeParam(p2);
|
|
230
229
|
const [running, setRunning] = useState<boolean>();
|
|
@@ -260,7 +259,7 @@ export const useCoreSearch = <T, S extends Filter, ST, P>(
|
|
|
260
259
|
};
|
|
261
260
|
const getFields = p && p.getFields ? p.getFields : _getFields;
|
|
262
261
|
|
|
263
|
-
const
|
|
262
|
+
const _getFilter = (se?: Searchable<T>): S => {
|
|
264
263
|
if (!se) {
|
|
265
264
|
se = component;
|
|
266
265
|
}
|
|
@@ -278,6 +277,7 @@ export const useCoreSearch = <T, S extends Filter, ST, P>(
|
|
|
278
277
|
const obj3 = getModel<T, S>(state, n, se, fs, se.excluding, keys, se.list, refForm.current, getDecodeFromForm(p1), lc, cc);
|
|
279
278
|
return obj3;
|
|
280
279
|
};
|
|
280
|
+
const getFilter = p && p.getFilter ? p.getFilter : _getFilter;
|
|
281
281
|
const _setFilter = (s: S): void => {
|
|
282
282
|
const objSet: any = {};
|
|
283
283
|
const n = getModelName();
|
|
@@ -341,12 +341,15 @@ export const useCoreSearch = <T, S extends Filter, ST, P>(
|
|
|
341
341
|
doSearch(component);
|
|
342
342
|
};
|
|
343
343
|
|
|
344
|
-
const clearQ = (
|
|
344
|
+
const clearQ = (e?: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {
|
|
345
|
+
if (e) {
|
|
346
|
+
e.preventDefault();
|
|
347
|
+
}
|
|
345
348
|
const n = getModelName();
|
|
346
349
|
if (n && n.length > 0) {
|
|
347
350
|
const m = (state as any)[n];
|
|
348
351
|
if (m) {
|
|
349
|
-
m.
|
|
352
|
+
m.q = '';
|
|
350
353
|
const setObj: any = {};
|
|
351
354
|
setObj[n] = m;
|
|
352
355
|
setState(setObj);
|
|
@@ -495,7 +498,7 @@ export const useCoreSearch = <T, S extends Filter, ST, P>(
|
|
|
495
498
|
doSearch,
|
|
496
499
|
pageChanged,
|
|
497
500
|
pageSizeChanged,
|
|
498
|
-
|
|
501
|
+
clearQ,
|
|
499
502
|
showResults,
|
|
500
503
|
getFields,
|
|
501
504
|
getModelName,
|
package/lib/router.js
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
var react_1 = require("react");
|
|
4
|
-
var react_router_dom_1 = require("react-router-dom");
|
|
5
|
-
exports.useRouter = function () {
|
|
6
|
-
var _a = [react_router_dom_1.useLocation(), react_router_dom_1.useHistory(), react_router_dom_1.useParams(), react_router_dom_1.useRouteMatch()], location = _a[0], history = _a[1], params = _a[2], match = _a[3];
|
|
7
|
-
var navigate = function (targetUrl) {
|
|
8
|
-
return function (e) {
|
|
9
|
-
if (e) {
|
|
10
|
-
e.preventDefault();
|
|
11
|
-
}
|
|
12
|
-
history.push(targetUrl);
|
|
13
|
-
};
|
|
14
|
-
};
|
|
15
|
-
var back = function (e) {
|
|
16
|
-
if (e) {
|
|
17
|
-
e.preventDefault();
|
|
18
|
-
}
|
|
19
|
-
history.goBack();
|
|
20
|
-
};
|
|
21
|
-
return react_1.useMemo(function () {
|
|
22
|
-
return ({
|
|
23
|
-
push: history.push,
|
|
24
|
-
replace: history.replace,
|
|
25
|
-
pathname: location.pathname,
|
|
26
|
-
goBack: history.goBack,
|
|
27
|
-
match: match,
|
|
28
|
-
location: location,
|
|
29
|
-
history: history,
|
|
30
|
-
params: params,
|
|
31
|
-
navigate: navigate,
|
|
32
|
-
back: back
|
|
33
|
-
});
|
|
34
|
-
}, [match, location, history, params]);
|
|
35
|
-
};
|
package/src/router.ts
DELETED
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import {useMemo} from 'react';
|
|
2
|
-
import {useHistory, useLocation, useParams, useRouteMatch} from 'react-router-dom';
|
|
3
|
-
|
|
4
|
-
export const useRouter = () => {
|
|
5
|
-
const [location, history, params, match] = [useLocation(), useHistory(), useParams(), useRouteMatch()];
|
|
6
|
-
/*
|
|
7
|
-
const searchQueries = useMemo(() => {
|
|
8
|
-
return queryString.parse(location.search, { arrayFormat: 'comma', parseNumbers: true });
|
|
9
|
-
}, [location.search]);
|
|
10
|
-
*/
|
|
11
|
-
const navigate = (targetUrl: string) => (e: React.MouseEvent) => {
|
|
12
|
-
if (e) {
|
|
13
|
-
e.preventDefault();
|
|
14
|
-
}
|
|
15
|
-
history.push(targetUrl);
|
|
16
|
-
};
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
const back = (e: React.MouseEvent) => {
|
|
20
|
-
if (e) {
|
|
21
|
-
e.preventDefault();
|
|
22
|
-
}
|
|
23
|
-
history.goBack();
|
|
24
|
-
};
|
|
25
|
-
|
|
26
|
-
return useMemo(() => ({
|
|
27
|
-
push: history.push,
|
|
28
|
-
replace: history.replace,
|
|
29
|
-
pathname: location.pathname,
|
|
30
|
-
goBack: history.goBack,
|
|
31
|
-
match,
|
|
32
|
-
location,
|
|
33
|
-
history,
|
|
34
|
-
params,
|
|
35
|
-
// searchQueries,
|
|
36
|
-
navigate,
|
|
37
|
-
back
|
|
38
|
-
}), [match, location, history, params]);
|
|
39
|
-
};
|