react-hook-core 0.1.3 → 0.1.4
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/README.md +1 -1
- package/lib/components.js +5 -4
- package/lib/core.js +13 -0
- package/lib/index.js +16 -0
- package/lib/useEdit.js +12 -12
- package/lib/useSearch.js +27 -4
- package/package.json +1 -1
- package/src/components.ts +9 -8
- package/src/core.ts +15 -4
- package/src/index.ts +13 -0
- package/src/useEdit.ts +15 -15
- package/src/useSearch.ts +34 -7
- package/tsconfig.json +2 -1
package/README.md
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
# react
|
|
1
|
+
# react
|
package/lib/components.js
CHANGED
|
@@ -327,6 +327,7 @@ var BaseSearchComponent = (function (_super) {
|
|
|
327
327
|
_this.doSearch();
|
|
328
328
|
};
|
|
329
329
|
_this.resource = resourceService.resource();
|
|
330
|
+
_this.hideFilter = true;
|
|
330
331
|
_this.getModelName = _this.getModelName.bind(_this);
|
|
331
332
|
_this.showMessage = _this.showMessage.bind(_this);
|
|
332
333
|
_this.toggleFilter = _this.toggleFilter.bind(_this);
|
|
@@ -357,7 +358,9 @@ var BaseSearchComponent = (function (_super) {
|
|
|
357
358
|
return 'filter';
|
|
358
359
|
};
|
|
359
360
|
BaseSearchComponent.prototype.toggleFilter = function (event) {
|
|
360
|
-
|
|
361
|
+
var x = !this.hideFilter;
|
|
362
|
+
core_1.handleToggle(event.target, !x);
|
|
363
|
+
this.hideFilter = x;
|
|
361
364
|
};
|
|
362
365
|
BaseSearchComponent.prototype.load = function (s, autoSearch) {
|
|
363
366
|
var obj2 = search_core_1.initFilter(s, this);
|
|
@@ -956,9 +959,7 @@ var EditComponent = (function (_super) {
|
|
|
956
959
|
var k = (this.ui ? this.ui.registerEvents : undefined);
|
|
957
960
|
this.form = core_2.initForm(this.ref.current, k);
|
|
958
961
|
var id = core_2.buildId(this.props, this.keys);
|
|
959
|
-
|
|
960
|
-
this.load(id);
|
|
961
|
-
}
|
|
962
|
+
this.load(id);
|
|
962
963
|
};
|
|
963
964
|
EditComponent.prototype.load = function (_id, callback) {
|
|
964
965
|
var _this = this;
|
package/lib/core.js
CHANGED
|
@@ -269,3 +269,16 @@ function getDecodeFromForm(u, d) {
|
|
|
269
269
|
return (u && u.ui ? u.ui.decodeFromForm : undefined);
|
|
270
270
|
}
|
|
271
271
|
exports.getDecodeFromForm = getDecodeFromForm;
|
|
272
|
+
function handleToggle(target, on) {
|
|
273
|
+
if (target) {
|
|
274
|
+
if (on) {
|
|
275
|
+
if (!target.classList.contains('on')) {
|
|
276
|
+
target.classList.add('on');
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
else {
|
|
280
|
+
target.classList.remove('on');
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
exports.handleToggle = handleToggle;
|
package/lib/index.js
CHANGED
|
@@ -19,6 +19,22 @@ __export(require("./useView"));
|
|
|
19
19
|
__export(require("./useEdit"));
|
|
20
20
|
__export(require("./useSearch"));
|
|
21
21
|
__export(require("./useMessage"));
|
|
22
|
+
function checked(s, v) {
|
|
23
|
+
if (s) {
|
|
24
|
+
if (Array.isArray(s)) {
|
|
25
|
+
return s.includes(v);
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
return s === v;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
exports.checked = checked;
|
|
34
|
+
function value(obj) {
|
|
35
|
+
return (obj ? obj : {});
|
|
36
|
+
}
|
|
37
|
+
exports.value = value;
|
|
22
38
|
exports.withDefaultProps = function (Component) {
|
|
23
39
|
return function (props) {
|
|
24
40
|
return React.createElement(Component, { props: props, history: props.history });
|
package/lib/useEdit.js
CHANGED
|
@@ -39,20 +39,20 @@ exports.useEditProps = function (props, refForm, initialState, service, p2, p) {
|
|
|
39
39
|
var keys;
|
|
40
40
|
if (p && !p.keys && service && service.metadata) {
|
|
41
41
|
var metadata = (p.metadata ? p.metadata : service.metadata());
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
42
|
+
if (metadata) {
|
|
43
|
+
var meta = edit_1.build(metadata);
|
|
44
|
+
keys = (p.keys ? p.keys : (meta ? meta.keys : undefined));
|
|
45
|
+
var version = (p.version ? p.version : (meta ? meta.version : undefined));
|
|
46
|
+
p.keys = keys;
|
|
47
|
+
p.version = version;
|
|
48
|
+
}
|
|
47
49
|
}
|
|
48
50
|
var id = core_1.buildId(props, keys);
|
|
49
|
-
if (
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
baseProps.load(id, p ? p.callback : undefined);
|
|
55
|
-
}
|
|
51
|
+
if (p && p.initialize) {
|
|
52
|
+
p.initialize(id, baseProps.load, baseProps.setState, p.callback);
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
baseProps.load(id, p ? p.callback : undefined);
|
|
56
56
|
}
|
|
57
57
|
}, []);
|
|
58
58
|
return __assign({}, baseProps);
|
package/lib/useSearch.js
CHANGED
|
@@ -70,6 +70,21 @@ function mergeParam(p) {
|
|
|
70
70
|
if (!p.pageMaxSize || p.pageMaxSize <= 0) {
|
|
71
71
|
p.pageMaxSize = 7;
|
|
72
72
|
}
|
|
73
|
+
if (p.hideFilter === undefined) {
|
|
74
|
+
p.hideFilter = true;
|
|
75
|
+
}
|
|
76
|
+
if (p.addable === undefined) {
|
|
77
|
+
p.addable = true;
|
|
78
|
+
}
|
|
79
|
+
if (p.editable === undefined) {
|
|
80
|
+
p.editable = true;
|
|
81
|
+
}
|
|
82
|
+
if (p.approvable === undefined) {
|
|
83
|
+
p.approvable = true;
|
|
84
|
+
}
|
|
85
|
+
if (p.deletable === undefined) {
|
|
86
|
+
p.deletable = true;
|
|
87
|
+
}
|
|
73
88
|
return p;
|
|
74
89
|
}
|
|
75
90
|
else {
|
|
@@ -77,7 +92,12 @@ function mergeParam(p) {
|
|
|
77
92
|
sequenceNo: 'sequenceNo',
|
|
78
93
|
pageSize: 24,
|
|
79
94
|
pageSizes: core_1.pageSizes,
|
|
80
|
-
pageMaxSize: 7
|
|
95
|
+
pageMaxSize: 7,
|
|
96
|
+
hideFilter: true,
|
|
97
|
+
addable: true,
|
|
98
|
+
editable: true,
|
|
99
|
+
approvable: true,
|
|
100
|
+
deletable: true
|
|
81
101
|
};
|
|
82
102
|
}
|
|
83
103
|
}
|
|
@@ -136,7 +156,9 @@ exports.useCoreSearch = function (props, refForm, initialState, service, p1, p2)
|
|
|
136
156
|
};
|
|
137
157
|
var _c = merge_1.useMergeState(p), component = _c[0], setComponent = _c[1];
|
|
138
158
|
var toggleFilter = function (event) {
|
|
139
|
-
|
|
159
|
+
var x = !component.hideFilter;
|
|
160
|
+
core_1.handleToggle(event.target, !x);
|
|
161
|
+
setComponent({ hideFilter: x });
|
|
140
162
|
};
|
|
141
163
|
var add = function (event) {
|
|
142
164
|
event.preventDefault();
|
|
@@ -305,7 +327,6 @@ exports.useCoreSearch = function (props, refForm, initialState, service, p1, p2)
|
|
|
305
327
|
var _showResults = function (s, sr, lc) {
|
|
306
328
|
var results = sr.list;
|
|
307
329
|
if (results && results.length > 0) {
|
|
308
|
-
debugger;
|
|
309
330
|
search_core_1.formatResults(results, component.pageIndex, component.pageSize, component.pageSize, p ? p.sequenceNo : undefined, p ? p.format : undefined, lc);
|
|
310
331
|
}
|
|
311
332
|
var am = component.appendMode;
|
|
@@ -365,7 +386,9 @@ exports.useCoreSearch = function (props, refForm, initialState, service, p1, p2)
|
|
|
365
386
|
getCurrencyCode: getCurrencyCode,
|
|
366
387
|
updateDateState: updateDateState, resource: p1.resource.resource(), setComponent: setComponent,
|
|
367
388
|
component: component, showMessage: p1.showMessage, load: load,
|
|
368
|
-
add: add,
|
|
389
|
+
add: add,
|
|
390
|
+
search: search,
|
|
391
|
+
sort: sort,
|
|
369
392
|
changeView: changeView,
|
|
370
393
|
showMore: showMore,
|
|
371
394
|
toggleFilter: toggleFilter,
|
package/package.json
CHANGED
package/src/components.ts
CHANGED
|
@@ -2,7 +2,7 @@ import * as React from 'react';
|
|
|
2
2
|
import {RouteComponentProps} from 'react-router';
|
|
3
3
|
import {clone, diff, makeDiff} from 'reflectx';
|
|
4
4
|
import {addParametersIntoUrl, append, buildMessage, changePage, changePageSize, formatResults, getFieldsFromForm, getModel, handleAppend, handleSortEvent, initFilter, mergeFilter as mergeFilter2, more, reset, Searchable, showPaging, validate} from 'search-core';
|
|
5
|
-
import {BaseDiffState, createDiffStatus, createEditStatus, DiffApprService, DiffParameter, DiffState, DiffStatusConfig, hideLoading, showLoading} from './core';
|
|
5
|
+
import {BaseDiffState, createDiffStatus, createEditStatus, DiffApprService, DiffParameter, DiffState, DiffStatusConfig, handleToggle, hideLoading, showLoading} from './core';
|
|
6
6
|
import {Attributes, buildId, EditStatusConfig, error, ErrorMessage, Filter, getCurrencyCode, getModelName as getModelName2, initForm, LoadingService, Locale, message, messageByHttpStatus, PageChange, pageSizes, removePhoneFormat, ResourceService, SearchParameter, SearchResult, SearchService, SearchState, StringMap, UIService, ViewParameter, ViewService} from './core';
|
|
7
7
|
import {formatDiffModel, getDataFields} from './diff';
|
|
8
8
|
import {build, createModel as createModel2, EditParameter, GenericService, handleStatus, handleVersion, initPropertyNullInModel, ResultInfo} from './edit';
|
|
@@ -54,7 +54,7 @@ export class ViewComponent<T, ID, P extends RouteComponentProps, S> extends Reac
|
|
|
54
54
|
loading?: LoadingService;
|
|
55
55
|
showError: (msg: string, title?: string, detail?: string, callback?: () => void) => void;
|
|
56
56
|
getLocale?: (profile?: string) => Locale;
|
|
57
|
-
loadData?: (id: ID
|
|
57
|
+
loadData?: (id: ID) => Promise<T|null>;
|
|
58
58
|
// protected service: ViewService<T, ID>;
|
|
59
59
|
form?: HTMLFormElement;
|
|
60
60
|
ref: any;
|
|
@@ -301,6 +301,7 @@ export class BaseSearchComponent<T, F extends Filter, P, I extends SearchState<T
|
|
|
301
301
|
protected listFormId?: string) {
|
|
302
302
|
super(props, getLocale, (ui ? ui.removeError : undefined));
|
|
303
303
|
this.resource = resourceService.resource();
|
|
304
|
+
this.hideFilter = true;
|
|
304
305
|
this.getModelName = this.getModelName.bind(this);
|
|
305
306
|
this.showMessage = this.showMessage.bind(this);
|
|
306
307
|
|
|
@@ -388,8 +389,10 @@ export class BaseSearchComponent<T, F extends Filter, P, I extends SearchState<T
|
|
|
388
389
|
return 'filter';
|
|
389
390
|
}
|
|
390
391
|
|
|
391
|
-
toggleFilter(event:
|
|
392
|
-
|
|
392
|
+
toggleFilter(event: React.MouseEvent<HTMLButtonElement, MouseEvent>): void {
|
|
393
|
+
const x = !this.hideFilter;
|
|
394
|
+
handleToggle(event.target as HTMLInputElement, !x);
|
|
395
|
+
this.hideFilter = x;
|
|
393
396
|
}
|
|
394
397
|
load(s: F, autoSearch: boolean): void {
|
|
395
398
|
const obj2 = initFilter(s, this);
|
|
@@ -1023,11 +1026,9 @@ export class EditComponent<T, ID, P extends RouteComponentProps, S> extends Base
|
|
|
1023
1026
|
const k = (this.ui ? this.ui.registerEvents : undefined);
|
|
1024
1027
|
this.form = initForm(this.ref.current, k);
|
|
1025
1028
|
const id = buildId<ID>(this.props, this.keys);
|
|
1026
|
-
|
|
1027
|
-
this.load(id);
|
|
1028
|
-
}
|
|
1029
|
+
this.load(id);
|
|
1029
1030
|
}
|
|
1030
|
-
load(_id: ID, callback?: (m: T, showM: (m2: T) => void) => void) {
|
|
1031
|
+
load(_id: ID|null, callback?: (m: T, showM: (m2: T) => void) => void) {
|
|
1031
1032
|
const id: any = _id;
|
|
1032
1033
|
if (id != null && id !== '') {
|
|
1033
1034
|
const com = this;
|
package/src/core.ts
CHANGED
|
@@ -105,9 +105,9 @@ export interface ViewParameter {
|
|
|
105
105
|
loading?: LoadingService;
|
|
106
106
|
}
|
|
107
107
|
export interface ViewService<T, ID> {
|
|
108
|
-
metadata?(): Attributes;
|
|
108
|
+
metadata?(): Attributes|undefined;
|
|
109
109
|
keys?(): string[];
|
|
110
|
-
load(id: ID, ctx?: any): Promise<T>;
|
|
110
|
+
load(id: ID, ctx?: any): Promise<T|null>;
|
|
111
111
|
}
|
|
112
112
|
|
|
113
113
|
export interface DiffParameter {
|
|
@@ -236,7 +236,7 @@ export interface ErrorMessage {
|
|
|
236
236
|
message?: string;
|
|
237
237
|
}
|
|
238
238
|
export interface UIService {
|
|
239
|
-
getValue(el: HTMLInputElement, locale?: Locale, currencyCode?: string): string|number|boolean;
|
|
239
|
+
getValue(el: HTMLInputElement, locale?: Locale, currencyCode?: string): string|number|boolean|null|undefined;
|
|
240
240
|
decodeFromForm(form: HTMLFormElement, locale?: Locale, currencyCode?: string|null): any;
|
|
241
241
|
|
|
242
242
|
validateForm(form?: HTMLFormElement, locale?: Locale, focusFirst?: boolean, scroll?: boolean): boolean;
|
|
@@ -380,7 +380,7 @@ export function formatCurrency(currency: string|number, locale?: Locale, currenc
|
|
|
380
380
|
}
|
|
381
381
|
*/
|
|
382
382
|
|
|
383
|
-
export function initForm(form
|
|
383
|
+
export function initForm(form?: HTMLFormElement, initMat?: (f: HTMLFormElement) => void): HTMLFormElement|undefined {
|
|
384
384
|
if (form) {
|
|
385
385
|
setTimeout(() => {
|
|
386
386
|
if (initMat) {
|
|
@@ -496,3 +496,14 @@ export function getDecodeFromForm(u?: UIParameter, d?: (form: HTMLFormElement, l
|
|
|
496
496
|
}
|
|
497
497
|
return (u && u.ui ? u.ui.decodeFromForm : undefined);
|
|
498
498
|
}
|
|
499
|
+
export function handleToggle(target?: HTMLInputElement, on?: boolean): void {
|
|
500
|
+
if (target) {
|
|
501
|
+
if (on) {
|
|
502
|
+
if (!target.classList.contains('on')) {
|
|
503
|
+
target.classList.add('on');
|
|
504
|
+
}
|
|
505
|
+
} else {
|
|
506
|
+
target.classList.remove('on');
|
|
507
|
+
}
|
|
508
|
+
}
|
|
509
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -16,6 +16,19 @@ export * from './useEdit';
|
|
|
16
16
|
export * from './useSearch';
|
|
17
17
|
export * from './useMessage';
|
|
18
18
|
|
|
19
|
+
export function checked(s: string[]|string|undefined, v: string): boolean|undefined {
|
|
20
|
+
if (s) {
|
|
21
|
+
if (Array.isArray(s)) {
|
|
22
|
+
return s.includes(v);
|
|
23
|
+
} else {
|
|
24
|
+
return s === v;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
export function value<T>(obj?: T): T {
|
|
30
|
+
return (obj ? obj : {} as any);
|
|
31
|
+
}
|
|
19
32
|
export const withDefaultProps = (Component: any) => (props: RouteComponentProps) => {
|
|
20
33
|
// return <Component props={props} history={props.history} />;
|
|
21
34
|
return React.createElement(Component, { props, history: props.history });
|
package/src/useEdit.ts
CHANGED
|
@@ -40,7 +40,7 @@ export interface BaseEditComponentParam<T, ID> {
|
|
|
40
40
|
fail?: (result: ResultInfo<T>) => void;
|
|
41
41
|
postSave?: (obj: T, res: number|ResultInfo<T>, version?: string, backOnSave?: boolean) => void;
|
|
42
42
|
handleDuplicateKey?: (result?: ResultInfo<T>) => void;
|
|
43
|
-
load?: (i: ID, callback?: (m: T, showM: (m2: T) => void) => void) => void;
|
|
43
|
+
load?: (i: ID|null, callback?: (m: T, showM: (m2: T) => void) => void) => void;
|
|
44
44
|
doSave?: (obj: T, diff?: T, version?: string, isBack?: boolean) => void;
|
|
45
45
|
prepareCustomData?: (data: any) => void; // need to review
|
|
46
46
|
}
|
|
@@ -57,11 +57,11 @@ export interface HookBaseEditParameter<T, ID, S> extends BaseEditComponentParam<
|
|
|
57
57
|
loading?: LoadingService;
|
|
58
58
|
}
|
|
59
59
|
export interface EditComponentParam<T, ID, S> extends BaseEditComponentParam<T, ID> {
|
|
60
|
-
initialize?: (id: ID, ld: (i: ID, cb?: (m: T, showF: (model: T) => void) => void) => void, setState2: DispatchWithCallback<Partial<S>>, callback?: (m: T, showF: (model: T) => void) => void) => void;
|
|
60
|
+
initialize?: (id: ID|null, ld: (i: ID|null, cb?: (m: T, showF: (model: T) => void) => void) => void, setState2: DispatchWithCallback<Partial<S>>, callback?: (m: T, showF: (model: T) => void) => void) => void;
|
|
61
61
|
callback?: (m: T, showF: (model: T) => void) => void;
|
|
62
62
|
}
|
|
63
63
|
export interface HookPropsEditParameter<T, ID, S, P extends RouteComponentProps> extends HookPropsBaseEditParameter<T, ID, S, P> {
|
|
64
|
-
initialize?: (id: ID, ld: (i: ID, cb?: (m: T, showF: (model: T) => void) => void) => void, setState2: DispatchWithCallback<Partial<S>>, callback?: (m: T, showF: (model: T) => void) => void) => void;
|
|
64
|
+
initialize?: (id: ID|null, ld: (i: ID|null, cb?: (m: T, showF: (model: T) => void) => void) => void, setState2: DispatchWithCallback<Partial<S>>, callback?: (m: T, showF: (model: T) => void) => void) => void;
|
|
65
65
|
callback?: (m: T, showF: (model: T) => void) => void;
|
|
66
66
|
}
|
|
67
67
|
export interface HookPropsBaseEditParameter<T, ID, S, P extends RouteComponentProps> extends HookBaseEditParameter<T, ID, S> {
|
|
@@ -98,19 +98,19 @@ export const useEditProps = <T, ID, S, P extends RouteComponentProps>(
|
|
|
98
98
|
let keys: string[]|undefined;
|
|
99
99
|
if (p && !p.keys && service && service.metadata) {
|
|
100
100
|
const metadata = (p.metadata ? p.metadata : service.metadata());
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
101
|
+
if (metadata) {
|
|
102
|
+
const meta = build(metadata);
|
|
103
|
+
keys = (p.keys ? p.keys : (meta ? meta.keys : undefined));
|
|
104
|
+
const version = (p.version ? p.version : (meta ? meta.version : undefined));
|
|
105
|
+
p.keys = keys;
|
|
106
|
+
p.version = version;
|
|
107
|
+
}
|
|
106
108
|
}
|
|
107
109
|
const id = buildId<ID>(props, keys);
|
|
108
|
-
if (
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
baseProps.load(id, p ? p.callback : undefined);
|
|
113
|
-
}
|
|
110
|
+
if (p && p.initialize) {
|
|
111
|
+
p.initialize(id, baseProps.load, baseProps.setState, p.callback);
|
|
112
|
+
} else {
|
|
113
|
+
baseProps.load(id, p ? p.callback : undefined);
|
|
114
114
|
}
|
|
115
115
|
}, []);
|
|
116
116
|
return {...baseProps};
|
|
@@ -404,7 +404,7 @@ export const useCoreEdit = <T, ID, S, P>(
|
|
|
404
404
|
};
|
|
405
405
|
const doSave = (p && p.doSave ? p.doSave : _doSave);
|
|
406
406
|
|
|
407
|
-
const _load = (_id: ID, callback?: (m: T, showM: (m2: T) => void) => void) => {
|
|
407
|
+
const _load = (_id: ID|null, callback?: (m: T, showM: (m2: T) => void) => void) => {
|
|
408
408
|
const id: any = _id;
|
|
409
409
|
if (id != null && id !== '') {
|
|
410
410
|
setRunning(true);
|
package/src/useSearch.ts
CHANGED
|
@@ -3,7 +3,7 @@ import {RouteComponentProps} from 'react-router';
|
|
|
3
3
|
import {useHistory, useRouteMatch} from 'react-router-dom';
|
|
4
4
|
import {clone} from 'reflectx';
|
|
5
5
|
import {addParametersIntoUrl, append, buildMessage, Filter, formatResults, getFieldsFromForm, getModel, handleAppend, handleSort, initFilter, mergeFilter as mergeFilter2, Pagination, removeSortStatus, showPaging, Sortable, validate} from 'search-core';
|
|
6
|
-
import {error, getDecodeFromForm, getName, getRemoveError, getValidateForm, hideLoading, initForm, Locale, PageChange, pageSizes, removeFormError, ResourceService, SearchParameter, SearchResult, SearchService, showLoading} from './core';
|
|
6
|
+
import {error, getDecodeFromForm, getName, getRemoveError, getValidateForm, handleToggle, hideLoading, initForm, Locale, PageChange, pageSizes, removeFormError, ResourceService, SearchParameter, SearchResult, SearchService, showLoading} from './core';
|
|
7
7
|
import {DispatchWithCallback, useMergeState} from './merge';
|
|
8
8
|
import {buildFromUrl} from './route';
|
|
9
9
|
import {enLocale} from './state';
|
|
@@ -58,8 +58,14 @@ export interface HookPropsSearchParameter<T, S extends Filter, ST, P extends Rou
|
|
|
58
58
|
initialize?: (ld: (s: S, auto?: boolean) => void, setState2: DispatchWithCallback<Partial<ST>>, com?: SearchComponentState<T, S>) => void;
|
|
59
59
|
}
|
|
60
60
|
export interface SearchComponentParam<T, M extends Filter> {
|
|
61
|
+
addable?: boolean;
|
|
62
|
+
editable?: boolean;
|
|
63
|
+
approvable?: boolean;
|
|
64
|
+
deletable?: boolean;
|
|
65
|
+
|
|
61
66
|
keys?: string[];
|
|
62
67
|
sequenceNo?: string;
|
|
68
|
+
hideFilter?: boolean;
|
|
63
69
|
name?: string;
|
|
64
70
|
fields?: string[];
|
|
65
71
|
appendMode?: boolean;
|
|
@@ -121,7 +127,7 @@ export interface SearchComponentState<T, S> extends Pagination, Sortable {
|
|
|
121
127
|
|
|
122
128
|
pageMaxSize?: number;
|
|
123
129
|
pageSizes?: number[];
|
|
124
|
-
excluding?:
|
|
130
|
+
excluding?: string[]|number[];
|
|
125
131
|
hideFilter?: boolean;
|
|
126
132
|
|
|
127
133
|
ignoreUrlParam?: boolean;
|
|
@@ -146,13 +152,33 @@ function mergeParam<T, S extends Filter>(p?: SearchComponentParam<T, S>): Search
|
|
|
146
152
|
if (!p.pageMaxSize || p.pageMaxSize <= 0) {
|
|
147
153
|
p.pageMaxSize = 7;
|
|
148
154
|
}
|
|
155
|
+
if (p.hideFilter === undefined) {
|
|
156
|
+
p.hideFilter = true;
|
|
157
|
+
}
|
|
158
|
+
if (p.addable === undefined) {
|
|
159
|
+
p.addable = true;
|
|
160
|
+
}
|
|
161
|
+
if (p.editable === undefined) {
|
|
162
|
+
p.editable = true;
|
|
163
|
+
}
|
|
164
|
+
if (p.approvable === undefined) {
|
|
165
|
+
p.approvable = true;
|
|
166
|
+
}
|
|
167
|
+
if (p.deletable === undefined) {
|
|
168
|
+
p.deletable = true;
|
|
169
|
+
}
|
|
149
170
|
return p;
|
|
150
171
|
} else {
|
|
151
172
|
return {
|
|
152
173
|
sequenceNo: 'sequenceNo',
|
|
153
174
|
pageSize: 24,
|
|
154
175
|
pageSizes,
|
|
155
|
-
pageMaxSize: 7
|
|
176
|
+
pageMaxSize: 7,
|
|
177
|
+
hideFilter: true,
|
|
178
|
+
addable: true,
|
|
179
|
+
editable: true,
|
|
180
|
+
approvable: true,
|
|
181
|
+
deletable: true
|
|
156
182
|
};
|
|
157
183
|
}
|
|
158
184
|
}
|
|
@@ -229,8 +255,10 @@ export const useCoreSearch = <T, S extends Filter, ST, P>(
|
|
|
229
255
|
// const p = createSearchComponentState<T, S>(p1);
|
|
230
256
|
const [component, setComponent] = useMergeState<SearchComponentState<T, S>>(p);
|
|
231
257
|
|
|
232
|
-
const toggleFilter = (event:
|
|
233
|
-
|
|
258
|
+
const toggleFilter = (event: React.MouseEvent<HTMLButtonElement, MouseEvent>): void => {
|
|
259
|
+
const x = !component.hideFilter;
|
|
260
|
+
handleToggle(event.target as HTMLInputElement, !x);
|
|
261
|
+
setComponent({ hideFilter: x });
|
|
234
262
|
};
|
|
235
263
|
|
|
236
264
|
const add = (event: any) => {
|
|
@@ -409,7 +437,6 @@ export const useCoreSearch = <T, S extends Filter, ST, P>(
|
|
|
409
437
|
const _showResults = (s: S, sr: SearchResult<T>, lc: Locale) => {
|
|
410
438
|
const results = sr.list;
|
|
411
439
|
if (results && results.length > 0) {
|
|
412
|
-
debugger;
|
|
413
440
|
formatResults(results, component.pageIndex, component.pageSize, component.pageSize, p ? p.sequenceNo : undefined, p ? p.format : undefined, lc);
|
|
414
441
|
}
|
|
415
442
|
const am = component.appendMode;
|
|
@@ -476,7 +503,7 @@ export const useCoreSearch = <T, S extends Filter, ST, P>(
|
|
|
476
503
|
showMessage: p1.showMessage,
|
|
477
504
|
load,
|
|
478
505
|
add,
|
|
479
|
-
|
|
506
|
+
search,
|
|
480
507
|
sort,
|
|
481
508
|
changeView,
|
|
482
509
|
showMore,
|