react-hook-core 0.1.5 → 0.1.8
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/core.js +1 -0
- package/lib/index.js +1 -9
- package/lib/useSearch.js +12 -5
- package/package.json +1 -1
- package/src/com.ts +53 -0
- package/src/core.ts +1 -0
- package/src/index.ts +2 -16
- 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/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,11 +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;
|
|
61
|
-
exports.default = PageSizeSelect;
|
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/core.ts
CHANGED
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
|
|
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
|
-
export default PageSizeSelect;
|
|
57
|
+
export type OnClick = React.MouseEvent<HTMLElement, MouseEvent>;
|
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
|
-
};
|