react-hook-core 0.4.6 → 0.4.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 +33 -11
- package/lib/core.js +81 -188
- package/lib/diff.js +28 -30
- package/lib/edit.js +54 -112
- package/lib/error.js +53 -0
- package/lib/formutil.js +58 -72
- package/lib/index.js +110 -95
- package/lib/input.js +31 -32
- package/lib/merge.js +26 -16
- package/lib/reflect.js +140 -147
- package/lib/route.js +45 -53
- package/lib/search.js +231 -471
- package/lib/state.js +159 -168
- package/lib/update.js +69 -64
- package/lib/useEdit.js +461 -348
- package/lib/useMessage.js +20 -20
- package/lib/useSearch.js +437 -246
- package/lib/util.js +74 -85
- package/package.json +1 -1
- package/src/com.ts +44 -30
- package/src/core.ts +125 -413
- package/src/diff.ts +54 -24
- package/src/edit.ts +44 -146
- package/src/error.ts +55 -0
- package/src/formutil.ts +51 -62
- package/src/index.ts +129 -114
- package/src/input.ts +44 -38
- package/src/merge.ts +16 -13
- package/src/reflect.ts +100 -101
- package/src/route.ts +40 -40
- package/src/search.ts +123 -308
- package/src/state.ts +135 -124
- package/src/update.ts +41 -41
- package/src/useEdit.ts +489 -319
- package/src/useMessage.ts +21 -21
- package/src/useSearch.ts +493 -277
- package/src/util.ts +67 -66
- package/lib/useView.js +0 -126
- package/src/useView.ts +0 -158
package/src/useSearch.ts
CHANGED
|
@@ -1,51 +1,267 @@
|
|
|
1
|
-
import {useEffect, useState} from
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
import { useEffect, useState } from "react"
|
|
2
|
+
import {
|
|
3
|
+
getName,
|
|
4
|
+
getRemoveError,
|
|
5
|
+
getValidateForm,
|
|
6
|
+
hideLoading,
|
|
7
|
+
initForm,
|
|
8
|
+
LoadingService,
|
|
9
|
+
Locale,
|
|
10
|
+
pageSizes,
|
|
11
|
+
removeFormError,
|
|
12
|
+
resources,
|
|
13
|
+
ResourceService,
|
|
14
|
+
showLoading,
|
|
15
|
+
UIService,
|
|
16
|
+
} from "./core"
|
|
17
|
+
import { error } from "./error"
|
|
18
|
+
import { DispatchWithCallback, useMergeState } from "./merge"
|
|
19
|
+
import { clone } from "./reflect"
|
|
20
|
+
import { buildFromUrl } from "./route"
|
|
21
|
+
import {
|
|
22
|
+
addParametersIntoUrl,
|
|
23
|
+
buildMessage,
|
|
24
|
+
Filter,
|
|
25
|
+
getFields,
|
|
26
|
+
handleSort,
|
|
27
|
+
handleToggle,
|
|
28
|
+
initFilter,
|
|
29
|
+
mergeFilter as mergeFilter2,
|
|
30
|
+
PageChange,
|
|
31
|
+
Pagination,
|
|
32
|
+
removeSortStatus,
|
|
33
|
+
SearchResult,
|
|
34
|
+
SearchService,
|
|
35
|
+
showPaging,
|
|
36
|
+
Sortable,
|
|
37
|
+
} from "./search"
|
|
38
|
+
import { enLocale } from "./state"
|
|
39
|
+
import { useUpdate } from "./update"
|
|
9
40
|
|
|
10
41
|
export interface Searchable extends Pagination, Sortable {
|
|
11
|
-
nextPageToken?: string
|
|
12
|
-
excluding?: string[]|number[]
|
|
42
|
+
nextPageToken?: string
|
|
43
|
+
excluding?: string[] | number[]
|
|
44
|
+
}
|
|
45
|
+
export interface SearchParameter {
|
|
46
|
+
resource: ResourceService
|
|
47
|
+
showMessage: (msg: string, option?: string) => void
|
|
48
|
+
showError: (m: string, callback?: () => void, h?: string) => void
|
|
49
|
+
ui?: UIService
|
|
50
|
+
getLocale?: (profile?: string) => Locale
|
|
51
|
+
loading?: LoadingService
|
|
52
|
+
auto?: boolean
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export function getModel<S extends Filter>(state: any, modelName: string, searchable: Searchable, fields?: string[], excluding?: string[] | number[]): S {
|
|
56
|
+
let obj2 = getModelFromState(state, modelName)
|
|
57
|
+
|
|
58
|
+
const obj: any = obj2 ? obj2 : {}
|
|
59
|
+
const obj3 = optimizeFilter(obj, searchable, fields)
|
|
60
|
+
obj3.excluding = excluding
|
|
61
|
+
return obj3
|
|
62
|
+
}
|
|
63
|
+
export function optimizeFilter<S extends Filter>(obj: S, searchable: Searchable, fields?: string[]): S {
|
|
64
|
+
// const sLimit = searchable.limit;
|
|
65
|
+
obj.fields = fields
|
|
66
|
+
if (searchable.page && searchable.page > 1) {
|
|
67
|
+
obj.page = searchable.page
|
|
68
|
+
} else {
|
|
69
|
+
delete obj.page
|
|
70
|
+
}
|
|
71
|
+
obj.limit = searchable.limit
|
|
72
|
+
|
|
73
|
+
if (searchable.appendMode && searchable.initLimit !== searchable.limit) {
|
|
74
|
+
obj.firstLimit = searchable.initLimit
|
|
75
|
+
} else {
|
|
76
|
+
delete obj.firstLimit
|
|
77
|
+
}
|
|
78
|
+
if (searchable.sortField && searchable.sortField.length > 0) {
|
|
79
|
+
obj.sort = searchable.sortType === "-" ? "-" + searchable.sortField : searchable.sortField
|
|
80
|
+
} else {
|
|
81
|
+
delete obj.sort
|
|
82
|
+
}
|
|
83
|
+
if (searchable) {
|
|
84
|
+
mapObjects(obj, searchable as any)
|
|
85
|
+
}
|
|
86
|
+
return obj
|
|
87
|
+
}
|
|
88
|
+
function mapObjects(dest: any, src: any): void {
|
|
89
|
+
for (let key in dest) {
|
|
90
|
+
if (src.hasOwnProperty(key) && src[key] !== null && src[key] !== undefined) {
|
|
91
|
+
if (Array.isArray(dest[key]) && typeof src[key] === "string" && src[key].length > 0) {
|
|
92
|
+
const arrayObjKeySrc = src[key].length > 0 ? src[key]?.split(",") : []
|
|
93
|
+
if (arrayObjKeySrc && arrayObjKeySrc.length > 1) {
|
|
94
|
+
dest[key] = [...arrayObjKeySrc]
|
|
95
|
+
} else {
|
|
96
|
+
dest[key] = []
|
|
97
|
+
dest[key].push(src[key])
|
|
98
|
+
}
|
|
99
|
+
} else {
|
|
100
|
+
dest[key] = src[key]
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
function getModelFromState(state: any, modelName: string): any {
|
|
106
|
+
if (!modelName || modelName.length === 0) {
|
|
107
|
+
return state
|
|
108
|
+
}
|
|
109
|
+
if (!state) {
|
|
110
|
+
return state
|
|
111
|
+
}
|
|
112
|
+
return state[modelName]
|
|
113
|
+
}
|
|
114
|
+
export function getFieldsFromForm(fields?: string[], initFields?: boolean, form?: HTMLFormElement | null): string[] | undefined {
|
|
115
|
+
if (fields && fields.length > 0) {
|
|
116
|
+
return fields
|
|
117
|
+
}
|
|
118
|
+
if (!initFields) {
|
|
119
|
+
if (form) {
|
|
120
|
+
return getFields(form)
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
return fields
|
|
124
|
+
}
|
|
125
|
+
export function append<T>(list?: T[], results?: T[]): T[] {
|
|
126
|
+
if (list && results) {
|
|
127
|
+
for (const obj of results) {
|
|
128
|
+
list.push(obj)
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
if (!list) {
|
|
132
|
+
return []
|
|
133
|
+
}
|
|
134
|
+
return list
|
|
135
|
+
}
|
|
136
|
+
export function handleAppend<T>(com: Pagination, list: T[], limit?: number, nextPageToken?: string): void {
|
|
137
|
+
if (!limit || limit === 0) {
|
|
138
|
+
com.appendable = false
|
|
139
|
+
} else {
|
|
140
|
+
if (!nextPageToken || nextPageToken.length === 0 || list.length < limit) {
|
|
141
|
+
com.appendable = false
|
|
142
|
+
} else {
|
|
143
|
+
com.appendable = true
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
if (!list || list.length === 0) {
|
|
147
|
+
com.appendable = false
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
export function formatResults<T>(
|
|
151
|
+
results: T[],
|
|
152
|
+
page?: number,
|
|
153
|
+
limit?: number,
|
|
154
|
+
initPageSize?: number,
|
|
155
|
+
sequenceNo?: string,
|
|
156
|
+
ft?: (oj: T, lc?: Locale) => T,
|
|
157
|
+
lc?: Locale,
|
|
158
|
+
): void {
|
|
159
|
+
if (results && results.length > 0) {
|
|
160
|
+
let hasSequencePro = false
|
|
161
|
+
if (ft) {
|
|
162
|
+
if (sequenceNo && sequenceNo.length > 0) {
|
|
163
|
+
for (const obj of results) {
|
|
164
|
+
if ((obj as any)[sequenceNo]) {
|
|
165
|
+
hasSequencePro = true
|
|
166
|
+
}
|
|
167
|
+
ft(obj, lc)
|
|
168
|
+
}
|
|
169
|
+
} else {
|
|
170
|
+
for (const obj of results) {
|
|
171
|
+
ft(obj, lc)
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
} else if (sequenceNo && sequenceNo.length > 0) {
|
|
175
|
+
for (const obj of results) {
|
|
176
|
+
if ((obj as any)[sequenceNo]) {
|
|
177
|
+
hasSequencePro = true
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
if (sequenceNo && sequenceNo.length > 0 && !hasSequencePro) {
|
|
182
|
+
if (!page) {
|
|
183
|
+
page = 1
|
|
184
|
+
}
|
|
185
|
+
if (limit) {
|
|
186
|
+
if (!initPageSize) {
|
|
187
|
+
initPageSize = limit
|
|
188
|
+
}
|
|
189
|
+
if (page <= 1) {
|
|
190
|
+
for (let i = 0; i < results.length; i++) {
|
|
191
|
+
;(results[i] as any)[sequenceNo] = i - limit + limit * page + 1
|
|
192
|
+
}
|
|
193
|
+
} else {
|
|
194
|
+
for (let i = 0; i < results.length; i++) {
|
|
195
|
+
;(results[i] as any)[sequenceNo] = i - limit + limit * page + 1 - (limit - initPageSize)
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
} else {
|
|
199
|
+
for (let i = 0; i < results.length; i++) {
|
|
200
|
+
;(results[i] as any)[sequenceNo] = i + 1
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
export function validate<S extends Filter>(
|
|
207
|
+
se: S,
|
|
208
|
+
callback: () => void,
|
|
209
|
+
form?: HTMLFormElement | null,
|
|
210
|
+
lc?: Locale,
|
|
211
|
+
vf?: (f: HTMLFormElement, lc2?: Locale, focus?: boolean, scr?: boolean) => boolean,
|
|
212
|
+
): void {
|
|
213
|
+
let valid = true
|
|
214
|
+
if (form && vf) {
|
|
215
|
+
valid = vf(form, lc)
|
|
216
|
+
}
|
|
217
|
+
if (valid === true) {
|
|
218
|
+
callback()
|
|
219
|
+
}
|
|
13
220
|
}
|
|
14
221
|
|
|
15
|
-
export const callSearch = <T, S extends Filter>(
|
|
16
|
-
|
|
17
|
-
|
|
222
|
+
export const callSearch = <T, S extends Filter>(
|
|
223
|
+
se: S,
|
|
224
|
+
search3: (s: S, limit?: number, page?: number | string, fields?: string[]) => Promise<SearchResult<T>>,
|
|
225
|
+
showResults3: (s: S, sr: SearchResult<T>, lc: Locale) => void,
|
|
226
|
+
searchError3: (err: any) => void,
|
|
227
|
+
lc: Locale,
|
|
228
|
+
nextPageToken?: string,
|
|
229
|
+
) => {
|
|
230
|
+
const s = clone(se)
|
|
231
|
+
let page = se.page
|
|
18
232
|
if (!page || page < 1) {
|
|
19
|
-
page = 1
|
|
233
|
+
page = 1
|
|
20
234
|
}
|
|
21
235
|
if (!se.limit || se.limit <= 0) {
|
|
22
|
-
se.limit = resources.defaultLimit
|
|
236
|
+
se.limit = resources.defaultLimit
|
|
23
237
|
}
|
|
24
|
-
const limit =
|
|
25
|
-
const next =
|
|
26
|
-
const fields = se.fields
|
|
27
|
-
delete se[
|
|
28
|
-
delete se[
|
|
238
|
+
const limit = page <= 1 && se.firstLimit && se.firstLimit > 0 ? se.firstLimit : se.limit
|
|
239
|
+
const next = nextPageToken && nextPageToken.length > 0 ? nextPageToken : page
|
|
240
|
+
const fields = se.fields
|
|
241
|
+
delete se["page"]
|
|
242
|
+
delete se["fields"]
|
|
29
243
|
// delete se['limit'];
|
|
30
|
-
delete se[
|
|
31
|
-
search3(s, limit, next, fields)
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
244
|
+
delete se["firstLimit"]
|
|
245
|
+
search3(s, limit, next, fields)
|
|
246
|
+
.then((sr) => {
|
|
247
|
+
showResults3(s, sr, lc)
|
|
248
|
+
})
|
|
249
|
+
.catch((err) => err && searchError3(err))
|
|
250
|
+
}
|
|
251
|
+
const appendListOfState = <T, S extends Filter>(results: T[], list: T[] | undefined, setState2: DispatchWithCallback<Partial<SearchComponentState<T, S>>>) => {
|
|
252
|
+
const arr = append(list, results)
|
|
253
|
+
setState2({ list: arr } as any)
|
|
254
|
+
}
|
|
39
255
|
const setListOfState = <T, S extends Filter>(list: T[], setState2: DispatchWithCallback<Partial<SearchComponentState<T, S>>>) => {
|
|
40
|
-
setState2({ list } as any)
|
|
41
|
-
}
|
|
256
|
+
setState2({ list } as any)
|
|
257
|
+
}
|
|
42
258
|
export interface InitSearchComponentParam<T, M extends Filter, S> extends SearchComponentParam<T, M> {
|
|
43
|
-
createFilter?: () => M
|
|
44
|
-
initialize?: (ld: (s: M, auto?: boolean) => void, setState2: DispatchWithCallback<Partial<S>>, com?: SearchComponentState<T, M>) => void
|
|
259
|
+
createFilter?: () => M
|
|
260
|
+
initialize?: (ld: (s: M, auto?: boolean) => void, setState2: DispatchWithCallback<Partial<S>>, com?: SearchComponentState<T, M>) => void
|
|
45
261
|
}
|
|
46
262
|
export interface HookPropsSearchParameter<T, S extends Filter, ST extends SearchComponentState<T, S>, P> extends HookPropsBaseSearchParameter<T, S, ST, P> {
|
|
47
|
-
createFilter?: () => S
|
|
48
|
-
initialize?: (ld: (s: S, auto?: boolean) => void, setState2: DispatchWithCallback<Partial<ST>>, com?: SearchComponentState<T, S>) => void
|
|
263
|
+
createFilter?: () => S
|
|
264
|
+
initialize?: (ld: (s: S, auto?: boolean) => void, setState2: DispatchWithCallback<Partial<ST>>, com?: SearchComponentState<T, S>) => void
|
|
49
265
|
}
|
|
50
266
|
export interface SearchComponentParam<T, M extends Filter> {
|
|
51
267
|
// addable?: boolean;
|
|
@@ -53,30 +269,30 @@ export interface SearchComponentParam<T, M extends Filter> {
|
|
|
53
269
|
// approvable?: boolean;
|
|
54
270
|
// deletable?: boolean;
|
|
55
271
|
|
|
56
|
-
keys?: string[]
|
|
57
|
-
sequenceNo?: string
|
|
58
|
-
hideFilter?: boolean
|
|
59
|
-
name?: string
|
|
60
|
-
fields?: string[]
|
|
61
|
-
appendMode?: boolean
|
|
62
|
-
pageSizes?: number[]
|
|
63
|
-
pageIndex?: number
|
|
64
|
-
limit: number
|
|
65
|
-
pageMaxSize?: number
|
|
66
|
-
ignoreUrlParam?: boolean
|
|
67
|
-
|
|
68
|
-
load?: (s: M, auto?: boolean) => void
|
|
69
|
-
getModelName?: () => string
|
|
70
|
-
getCurrencyCode?: () => string
|
|
71
|
-
setFilter?: (s: M) => void
|
|
72
|
-
getFilter?: (se?: Searchable) => M
|
|
73
|
-
getFields?: () => string[]|undefined
|
|
74
|
-
validateSearch?: (se: M, callback: () => void) => void
|
|
272
|
+
keys?: string[]
|
|
273
|
+
sequenceNo?: string
|
|
274
|
+
hideFilter?: boolean
|
|
275
|
+
name?: string
|
|
276
|
+
fields?: string[]
|
|
277
|
+
appendMode?: boolean
|
|
278
|
+
pageSizes?: number[]
|
|
279
|
+
pageIndex?: number
|
|
280
|
+
limit: number
|
|
281
|
+
pageMaxSize?: number
|
|
282
|
+
ignoreUrlParam?: boolean
|
|
283
|
+
|
|
284
|
+
load?: (s: M, auto?: boolean) => void
|
|
285
|
+
getModelName?: () => string
|
|
286
|
+
getCurrencyCode?: () => string
|
|
287
|
+
setFilter?: (s: M) => void
|
|
288
|
+
getFilter?: (se?: Searchable) => M
|
|
289
|
+
getFields?: () => string[] | undefined
|
|
290
|
+
validateSearch?: (se: M, callback: () => void) => void
|
|
75
291
|
// prepareCustomData?: (data: any) => void;
|
|
76
|
-
format?(obj: T, locale?: Locale): T
|
|
77
|
-
showResults?(s: M, sr: SearchResult<T>, lc: Locale): void
|
|
78
|
-
appendList?(results: T[], list: T[]|undefined, s: DispatchWithCallback<Partial<SearchComponentState<T, M>>>): void
|
|
79
|
-
setList?(list: T[], s: DispatchWithCallback<Partial<SearchComponentState<T, M>>>): void
|
|
292
|
+
format?(obj: T, locale?: Locale): T
|
|
293
|
+
showResults?(s: M, sr: SearchResult<T>, lc: Locale): void
|
|
294
|
+
appendList?(results: T[], list: T[] | undefined, s: DispatchWithCallback<Partial<SearchComponentState<T, M>>>): void
|
|
295
|
+
setList?(list: T[], s: DispatchWithCallback<Partial<SearchComponentState<T, M>>>): void
|
|
80
296
|
/*
|
|
81
297
|
showLoading?(firstTime?: boolean): void;
|
|
82
298
|
hideLoading?(): void;
|
|
@@ -88,38 +304,38 @@ export interface SearchComponentParam<T, M extends Filter> {
|
|
|
88
304
|
*/
|
|
89
305
|
}
|
|
90
306
|
export interface HookBaseSearchParameter<T, S extends Filter, ST extends SearchComponentState<T, S>> extends SearchComponentParam<T, S> {
|
|
91
|
-
refForm: any
|
|
92
|
-
initialState: ST
|
|
93
|
-
service: ((s: S, limit?: number, offset?: number|string, fields?: string[]) => Promise<SearchResult<T>>) | SearchService<T, S
|
|
94
|
-
resource: ResourceService
|
|
95
|
-
showMessage: (msg: string) => void
|
|
96
|
-
showError: (m: string, callback?: () => void, header?: string) => void
|
|
97
|
-
getLocale?: () => Locale
|
|
98
|
-
autoSearch?: boolean
|
|
307
|
+
refForm: any
|
|
308
|
+
initialState: ST
|
|
309
|
+
service: ((s: S, limit?: number, offset?: number | string, fields?: string[]) => Promise<SearchResult<T>>) | SearchService<T, S>
|
|
310
|
+
resource: ResourceService
|
|
311
|
+
showMessage: (msg: string) => void
|
|
312
|
+
showError: (m: string, callback?: () => void, header?: string) => void
|
|
313
|
+
getLocale?: () => Locale
|
|
314
|
+
autoSearch?: boolean
|
|
99
315
|
}
|
|
100
316
|
export interface HookPropsBaseSearchParameter<T, S extends Filter, ST extends SearchComponentState<T, S>, P> extends HookBaseSearchParameter<T, S, ST> {
|
|
101
|
-
props?: P
|
|
317
|
+
props?: P
|
|
102
318
|
// prepareCustomData?: (data: any) => void;
|
|
103
319
|
}
|
|
104
320
|
export interface SearchComponentState<T, S> extends Pagination, Sortable {
|
|
105
|
-
view?: string
|
|
106
|
-
nextPageToken?: string
|
|
107
|
-
keys?: string[]
|
|
108
|
-
filter?: S
|
|
109
|
-
list?: T[]
|
|
110
|
-
|
|
111
|
-
format?: (obj: T, locale: Locale) => T
|
|
112
|
-
fields?: string[]
|
|
113
|
-
initFields?: boolean
|
|
114
|
-
triggerSearch?: boolean
|
|
115
|
-
tmpPageIndex?: number
|
|
116
|
-
|
|
117
|
-
pageMaxSize?: number
|
|
118
|
-
pageSizes?: number[]
|
|
119
|
-
excluding?: string[]|number[]
|
|
120
|
-
hideFilter?: boolean
|
|
121
|
-
|
|
122
|
-
ignoreUrlParam?: boolean
|
|
321
|
+
view?: string
|
|
322
|
+
nextPageToken?: string
|
|
323
|
+
keys?: string[]
|
|
324
|
+
filter?: S
|
|
325
|
+
list?: T[]
|
|
326
|
+
|
|
327
|
+
format?: (obj: T, locale: Locale) => T
|
|
328
|
+
fields?: string[]
|
|
329
|
+
initFields?: boolean
|
|
330
|
+
triggerSearch?: boolean
|
|
331
|
+
tmpPageIndex?: number
|
|
332
|
+
|
|
333
|
+
pageMaxSize?: number
|
|
334
|
+
pageSizes?: number[]
|
|
335
|
+
excluding?: string[] | number[]
|
|
336
|
+
hideFilter?: boolean
|
|
337
|
+
|
|
338
|
+
ignoreUrlParam?: boolean
|
|
123
339
|
// viewable?: boolean;
|
|
124
340
|
// addable?: boolean;
|
|
125
341
|
// editable?: boolean;
|
|
@@ -130,19 +346,19 @@ export interface SearchComponentState<T, S> extends Pagination, Sortable {
|
|
|
130
346
|
export function mergeParam<T, S extends Filter>(p?: SearchComponentParam<T, S>): SearchComponentParam<T, S> {
|
|
131
347
|
if (p) {
|
|
132
348
|
if (!p.sequenceNo) {
|
|
133
|
-
p.sequenceNo =
|
|
349
|
+
p.sequenceNo = "sequenceNo"
|
|
134
350
|
}
|
|
135
351
|
if (!p.limit) {
|
|
136
|
-
p.limit = 24
|
|
352
|
+
p.limit = 24
|
|
137
353
|
}
|
|
138
354
|
if (!p.pageSizes) {
|
|
139
|
-
p.pageSizes = pageSizes
|
|
355
|
+
p.pageSizes = pageSizes
|
|
140
356
|
}
|
|
141
357
|
if (!p.pageMaxSize || p.pageMaxSize <= 0) {
|
|
142
|
-
p.pageMaxSize = 7
|
|
358
|
+
p.pageMaxSize = 7
|
|
143
359
|
}
|
|
144
360
|
if (p.hideFilter === undefined) {
|
|
145
|
-
p.hideFilter = true
|
|
361
|
+
p.hideFilter = true
|
|
146
362
|
}
|
|
147
363
|
/*
|
|
148
364
|
if (p.addable === undefined) {
|
|
@@ -158,10 +374,10 @@ export function mergeParam<T, S extends Filter>(p?: SearchComponentParam<T, S>):
|
|
|
158
374
|
p.deletable = true;
|
|
159
375
|
}
|
|
160
376
|
*/
|
|
161
|
-
return p
|
|
377
|
+
return p
|
|
162
378
|
} else {
|
|
163
379
|
return {
|
|
164
|
-
sequenceNo:
|
|
380
|
+
sequenceNo: "sequenceNo",
|
|
165
381
|
limit: 24,
|
|
166
382
|
pageSizes,
|
|
167
383
|
pageMaxSize: 7,
|
|
@@ -170,317 +386,317 @@ export function mergeParam<T, S extends Filter>(p?: SearchComponentParam<T, S>):
|
|
|
170
386
|
// editable: true,
|
|
171
387
|
// approvable: true,
|
|
172
388
|
// deletable: true
|
|
173
|
-
}
|
|
389
|
+
}
|
|
174
390
|
}
|
|
175
391
|
}
|
|
176
392
|
export const useSearch = <T, S extends Filter, ST extends SearchComponentState<T, S>>(
|
|
177
393
|
refForm: any,
|
|
178
394
|
initialState: ST,
|
|
179
|
-
service: ((s: S, limit?: number, offset?: number|string, fields?: string[]) => Promise<SearchResult<T>>) | SearchService<T, S>,
|
|
395
|
+
service: ((s: S, limit?: number, offset?: number | string, fields?: string[]) => Promise<SearchResult<T>>) | SearchService<T, S>,
|
|
180
396
|
p2: SearchParameter,
|
|
181
397
|
p?: InitSearchComponentParam<T, S, ST>,
|
|
182
398
|
) => {
|
|
183
|
-
const baseProps = useCoreSearch(refForm, initialState, service, p2, p)
|
|
399
|
+
const baseProps = useCoreSearch(refForm, initialState, service, p2, p)
|
|
184
400
|
|
|
185
401
|
useEffect(() => {
|
|
186
|
-
const { load, setState, component, searchError } = baseProps
|
|
402
|
+
const { load, setState, component, searchError } = baseProps
|
|
187
403
|
if (refForm) {
|
|
188
|
-
const registerEvents =
|
|
189
|
-
initForm(refForm.current, registerEvents)
|
|
404
|
+
const registerEvents = p2.ui ? p2.ui.registerEvents : undefined
|
|
405
|
+
initForm(refForm.current, registerEvents)
|
|
190
406
|
}
|
|
191
407
|
if (p && p.initialize) {
|
|
192
|
-
p.initialize(load, setState, component)
|
|
408
|
+
p.initialize(load, setState, component)
|
|
193
409
|
} else {
|
|
194
|
-
const se: S|undefined =
|
|
410
|
+
const se: S | undefined = p && p.createFilter ? p.createFilter() : undefined
|
|
195
411
|
try {
|
|
196
|
-
const s: any = mergeFilter2(buildFromUrl<S>(se), se, component.pageSizes)
|
|
197
|
-
load(s, p2.auto)
|
|
412
|
+
const s: any = mergeFilter2(buildFromUrl<S>(se), se, component.pageSizes)
|
|
413
|
+
load(s, p2.auto)
|
|
198
414
|
} catch (error) {
|
|
199
|
-
searchError(error)
|
|
415
|
+
searchError(error)
|
|
200
416
|
}
|
|
201
417
|
}
|
|
202
|
-
|
|
203
|
-
}, [])
|
|
204
|
-
return { ...baseProps }
|
|
205
|
-
}
|
|
418
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
419
|
+
}, [])
|
|
420
|
+
return { ...baseProps }
|
|
421
|
+
}
|
|
206
422
|
export const useSearchOneProps = <T, S extends Filter, ST extends SearchComponentState<T, S>, P>(p: HookPropsSearchParameter<T, S, ST, P>) => {
|
|
207
|
-
return useSearch(p.refForm, p.initialState, p.service, p, p)
|
|
208
|
-
}
|
|
423
|
+
return useSearch(p.refForm, p.initialState, p.service, p, p)
|
|
424
|
+
}
|
|
209
425
|
export const useSearchOne = <T, S extends Filter, ST extends SearchComponentState<T, S>>(p: HookBaseSearchParameter<T, S, ST>) => {
|
|
210
|
-
return useCoreSearch(p.refForm, p.initialState, p.service, p, p)
|
|
211
|
-
}
|
|
426
|
+
return useCoreSearch(p.refForm, p.initialState, p.service, p, p)
|
|
427
|
+
}
|
|
212
428
|
export const useCoreSearch = <T, S extends Filter, ST>(
|
|
213
429
|
refForm: any,
|
|
214
430
|
initialState: ST,
|
|
215
|
-
service: ((s: S, limit?: number, offset?: number|string, fields?: string[]) => Promise<SearchResult<T>>) | SearchService<T, S>,
|
|
431
|
+
service: ((s: S, limit?: number, offset?: number | string, fields?: string[]) => Promise<SearchResult<T>>) | SearchService<T, S>,
|
|
216
432
|
p1: SearchParameter,
|
|
217
|
-
p2?: SearchComponentParam<T, S
|
|
433
|
+
p2?: SearchComponentParam<T, S>,
|
|
218
434
|
) => {
|
|
219
|
-
const p = mergeParam(p2)
|
|
220
|
-
const [running, setRunning] = useState<boolean>()
|
|
435
|
+
const p = mergeParam(p2)
|
|
436
|
+
const [running, setRunning] = useState<boolean>()
|
|
221
437
|
|
|
222
438
|
const _getModelName = (): string => {
|
|
223
|
-
return getName(
|
|
224
|
-
}
|
|
225
|
-
const getModelName =
|
|
439
|
+
return getName("filter", p && p.name ? p.name : undefined)
|
|
440
|
+
}
|
|
441
|
+
const getModelName = p && p.getModelName ? p.getModelName : _getModelName
|
|
226
442
|
|
|
227
443
|
// const setState2: <K extends keyof S, P>(st: ((prevState: Readonly<S>, props: Readonly<P>) => (Pick<S, K> | S | null)) | (Pick<S, K> | S | null), cb?: () => void) => void;
|
|
228
|
-
const baseProps = useUpdate<ST>(initialState, getModelName, p1.getLocale, getRemoveError(p1))
|
|
229
|
-
const { state, setState } = baseProps
|
|
230
|
-
const [rerender, setRerender] = useState(false)
|
|
444
|
+
const baseProps = useUpdate<ST>(initialState, getModelName, p1.getLocale, getRemoveError(p1))
|
|
445
|
+
const { state, setState } = baseProps
|
|
446
|
+
const [rerender, setRerender] = useState(false)
|
|
231
447
|
|
|
232
448
|
// trigger re-render page when change state in useSearch
|
|
233
449
|
useEffect(() => {
|
|
234
|
-
setRerender(!rerender)
|
|
235
|
-
}, [state])
|
|
450
|
+
setRerender(!rerender)
|
|
451
|
+
}, [state])
|
|
236
452
|
|
|
237
453
|
const _getCurrencyCode = (): string => {
|
|
238
|
-
return refForm && refForm.current ? refForm.current.getAttribute(
|
|
239
|
-
}
|
|
240
|
-
const getCurrencyCode = p && p.getCurrencyCode ? p.getCurrencyCode : _getCurrencyCode
|
|
454
|
+
return refForm && refForm.current ? refForm.current.getAttribute("currency-code") : "USD"
|
|
455
|
+
}
|
|
456
|
+
const getCurrencyCode = p && p.getCurrencyCode ? p.getCurrencyCode : _getCurrencyCode
|
|
241
457
|
|
|
242
458
|
// const p = createSearchComponentState<T, S>(p1);
|
|
243
|
-
const [component, setComponent] = useMergeState<SearchComponentState<T, S>>(p)
|
|
459
|
+
const [component, setComponent] = useMergeState<SearchComponentState<T, S>>(p)
|
|
244
460
|
|
|
245
461
|
const toggleFilter = (event: React.MouseEvent<HTMLButtonElement, MouseEvent>): void => {
|
|
246
|
-
const hideFilter = handleToggle(event.target as HTMLInputElement, component.hideFilter)
|
|
247
|
-
setComponent({ hideFilter })
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
const _getFields = (): string[]|undefined => {
|
|
251
|
-
const { fields, initFields } = component
|
|
252
|
-
const fs = getFieldsFromForm(fields, initFields, refForm.current)
|
|
253
|
-
setComponent({ fields: fs, initFields: true })
|
|
254
|
-
return fs
|
|
255
|
-
}
|
|
256
|
-
const getFields = p && p.getFields ? p.getFields : _getFields
|
|
462
|
+
const hideFilter = handleToggle(event.target as HTMLInputElement, component.hideFilter)
|
|
463
|
+
setComponent({ hideFilter })
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
const _getFields = (): string[] | undefined => {
|
|
467
|
+
const { fields, initFields } = component
|
|
468
|
+
const fs = getFieldsFromForm(fields, initFields, refForm.current)
|
|
469
|
+
setComponent({ fields: fs, initFields: true })
|
|
470
|
+
return fs
|
|
471
|
+
}
|
|
472
|
+
const getFields = p && p.getFields ? p.getFields : _getFields
|
|
257
473
|
|
|
258
474
|
const _getFilter = (se?: Searchable): S => {
|
|
259
475
|
if (!se) {
|
|
260
|
-
se = component
|
|
476
|
+
se = component
|
|
261
477
|
}
|
|
262
|
-
let keys = p && p.keys ? p.keys : undefined
|
|
263
|
-
if (!keys && typeof service !==
|
|
264
|
-
keys = service.keys()
|
|
478
|
+
let keys = p && p.keys ? p.keys : undefined
|
|
479
|
+
if (!keys && typeof service !== "function" && service.keys) {
|
|
480
|
+
keys = service.keys()
|
|
265
481
|
}
|
|
266
|
-
const n = getModelName()
|
|
267
|
-
let fs = p && p.fields
|
|
482
|
+
const n = getModelName()
|
|
483
|
+
let fs = p && p.fields
|
|
268
484
|
if (!fs || fs.length <= 0) {
|
|
269
|
-
fs = getFields()
|
|
485
|
+
fs = getFields()
|
|
270
486
|
}
|
|
271
|
-
const obj3 = getModel<S>(state, n, se, fs, se.excluding)
|
|
272
|
-
return obj3
|
|
273
|
-
}
|
|
274
|
-
const getFilter = p && p.getFilter ? p.getFilter : _getFilter
|
|
487
|
+
const obj3 = getModel<S>(state, n, se, fs, se.excluding)
|
|
488
|
+
return obj3
|
|
489
|
+
}
|
|
490
|
+
const getFilter = p && p.getFilter ? p.getFilter : _getFilter
|
|
275
491
|
const _setFilter = (s: S): void => {
|
|
276
|
-
const objSet: any = {}
|
|
277
|
-
const n = getModelName()
|
|
278
|
-
objSet[n] = s
|
|
279
|
-
setState(objSet)
|
|
280
|
-
}
|
|
492
|
+
const objSet: any = {}
|
|
493
|
+
const n = getModelName()
|
|
494
|
+
objSet[n] = s
|
|
495
|
+
setState(objSet)
|
|
496
|
+
}
|
|
281
497
|
|
|
282
|
-
const setFilter = p && p.setFilter ? p.setFilter : _setFilter
|
|
498
|
+
const setFilter = p && p.setFilter ? p.setFilter : _setFilter
|
|
283
499
|
|
|
284
500
|
const _load = (s: S, auto?: boolean): void => {
|
|
285
|
-
const com = Object.assign({}, component)
|
|
286
|
-
const obj2 = initFilter(s, com)
|
|
287
|
-
setComponent(com)
|
|
288
|
-
setFilter(obj2)
|
|
289
|
-
const runSearch = doSearch
|
|
501
|
+
const com = Object.assign({}, component)
|
|
502
|
+
const obj2 = initFilter(s, com)
|
|
503
|
+
setComponent(com)
|
|
504
|
+
setFilter(obj2)
|
|
505
|
+
const runSearch = doSearch
|
|
290
506
|
if (auto) {
|
|
291
507
|
setTimeout(() => {
|
|
292
|
-
runSearch(
|
|
293
|
-
}, 0)
|
|
508
|
+
runSearch(obj2 as any, true)
|
|
509
|
+
}, 0)
|
|
294
510
|
}
|
|
295
|
-
}
|
|
296
|
-
const load = p && p.load ? p.load : _load
|
|
511
|
+
}
|
|
512
|
+
const load = p && p.load ? p.load : _load
|
|
297
513
|
|
|
298
514
|
const doSearch = (se: Searchable, isFirstLoad?: boolean) => {
|
|
299
|
-
removeFormError(p1, refForm.current)
|
|
300
|
-
const s = getFilter(se)
|
|
515
|
+
removeFormError(p1, refForm.current)
|
|
516
|
+
const s = getFilter(se)
|
|
301
517
|
|
|
302
|
-
if (isFirstLoad){
|
|
303
|
-
setState(state)
|
|
518
|
+
if (isFirstLoad) {
|
|
519
|
+
setState(state) // force update state if we refresh again page
|
|
304
520
|
}
|
|
305
|
-
const isStillRunning = running
|
|
521
|
+
const isStillRunning = running
|
|
306
522
|
validateSearch(s, () => {
|
|
307
523
|
if (isStillRunning === true) {
|
|
308
|
-
return
|
|
524
|
+
return
|
|
309
525
|
}
|
|
310
|
-
setRunning(true)
|
|
311
|
-
showLoading(p1.loading)
|
|
526
|
+
setRunning(true)
|
|
527
|
+
showLoading(p1.loading)
|
|
312
528
|
if (p && !p.ignoreUrlParam) {
|
|
313
|
-
addParametersIntoUrl(s, isFirstLoad)
|
|
529
|
+
addParametersIntoUrl(s, isFirstLoad)
|
|
314
530
|
}
|
|
315
|
-
const lc = p1.getLocale ? p1.getLocale() : enLocale
|
|
316
|
-
if (typeof service ===
|
|
317
|
-
callSearch<T, S>(s, service, showResults, searchError, lc, se.nextPageToken)
|
|
531
|
+
const lc = p1.getLocale ? p1.getLocale() : enLocale
|
|
532
|
+
if (typeof service === "function") {
|
|
533
|
+
callSearch<T, S>(s, service, showResults, searchError, lc, se.nextPageToken)
|
|
318
534
|
} else {
|
|
319
|
-
callSearch<T, S>(s, service.search, showResults, searchError, lc, se.nextPageToken)
|
|
535
|
+
callSearch<T, S>(s, service.search, showResults, searchError, lc, se.nextPageToken)
|
|
320
536
|
}
|
|
321
|
-
})
|
|
322
|
-
}
|
|
537
|
+
})
|
|
538
|
+
}
|
|
323
539
|
|
|
324
540
|
const _validateSearch = (se: S, callback: () => void) => {
|
|
325
|
-
validate(se, callback, refForm.current,
|
|
326
|
-
}
|
|
327
|
-
const validateSearch = p && p.validateSearch ? p.validateSearch : _validateSearch
|
|
541
|
+
validate(se, callback, refForm.current, p1.getLocale ? p1.getLocale() : undefined, getValidateForm(p1))
|
|
542
|
+
}
|
|
543
|
+
const validateSearch = p && p.validateSearch ? p.validateSearch : _validateSearch
|
|
328
544
|
|
|
329
545
|
const pageSizeChanged = (event: any) => {
|
|
330
|
-
const size = parseInt(event.currentTarget.value, 10)
|
|
331
|
-
component.limit = size
|
|
332
|
-
component.page = 1
|
|
333
|
-
component.tmpPageIndex = 1
|
|
546
|
+
const size = parseInt(event.currentTarget.value, 10)
|
|
547
|
+
component.limit = size
|
|
548
|
+
component.page = 1
|
|
549
|
+
component.tmpPageIndex = 1
|
|
334
550
|
setComponent({
|
|
335
551
|
limit: size,
|
|
336
552
|
page: 1,
|
|
337
|
-
tmpPageIndex: 1
|
|
338
|
-
})
|
|
339
|
-
doSearch(component)
|
|
340
|
-
}
|
|
553
|
+
tmpPageIndex: 1,
|
|
554
|
+
})
|
|
555
|
+
doSearch(component)
|
|
556
|
+
}
|
|
341
557
|
|
|
342
558
|
const clearQ = (e?: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {
|
|
343
559
|
if (e) {
|
|
344
|
-
e.preventDefault()
|
|
560
|
+
e.preventDefault()
|
|
345
561
|
}
|
|
346
|
-
const n = getModelName()
|
|
562
|
+
const n = getModelName()
|
|
347
563
|
if (n && n.length > 0) {
|
|
348
|
-
const m = (state as any)[n]
|
|
564
|
+
const m = (state as any)[n]
|
|
349
565
|
if (m) {
|
|
350
|
-
m.q =
|
|
351
|
-
const setObj: any = {}
|
|
352
|
-
setObj[n] = m
|
|
353
|
-
setState(setObj)
|
|
354
|
-
return
|
|
566
|
+
m.q = ""
|
|
567
|
+
const setObj: any = {}
|
|
568
|
+
setObj[n] = m
|
|
569
|
+
setState(setObj)
|
|
570
|
+
return
|
|
355
571
|
}
|
|
356
572
|
}
|
|
357
|
-
}
|
|
573
|
+
}
|
|
358
574
|
|
|
359
575
|
const search = (event?: React.MouseEvent<HTMLButtonElement, MouseEvent> | React.MouseEvent<HTMLElement, MouseEvent>): void => {
|
|
360
576
|
if (event) {
|
|
361
|
-
event.preventDefault()
|
|
577
|
+
event.preventDefault()
|
|
362
578
|
}
|
|
363
|
-
resetAndSearch()
|
|
364
|
-
}
|
|
579
|
+
resetAndSearch()
|
|
580
|
+
}
|
|
365
581
|
|
|
366
582
|
const sort = (event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {
|
|
367
|
-
event.preventDefault()
|
|
583
|
+
event.preventDefault()
|
|
368
584
|
if (event && event.target) {
|
|
369
|
-
const target = event.target as any
|
|
370
|
-
const s = handleSort(target, component.sortTarget, component.sortField, component.sortType)
|
|
585
|
+
const target = event.target as any
|
|
586
|
+
const s = handleSort(target, component.sortTarget, component.sortField, component.sortType)
|
|
371
587
|
setComponent({
|
|
372
588
|
sortField: s.field,
|
|
373
589
|
sortType: s.type,
|
|
374
|
-
sortTarget: target
|
|
375
|
-
})
|
|
376
|
-
component.sortField = s.field
|
|
377
|
-
component.sortType = s.type
|
|
378
|
-
component.sortTarget = target
|
|
590
|
+
sortTarget: target,
|
|
591
|
+
})
|
|
592
|
+
component.sortField = s.field
|
|
593
|
+
component.sortType = s.type
|
|
594
|
+
component.sortTarget = target
|
|
379
595
|
}
|
|
380
596
|
if (!component.appendMode) {
|
|
381
|
-
doSearch(component)
|
|
597
|
+
doSearch(component)
|
|
382
598
|
} else {
|
|
383
|
-
resetAndSearch()
|
|
599
|
+
resetAndSearch()
|
|
384
600
|
}
|
|
385
|
-
}
|
|
601
|
+
}
|
|
386
602
|
const changeView = (event: React.MouseEvent<HTMLButtonElement, MouseEvent>, view?: string) => {
|
|
387
603
|
if (view && view.length > 0) {
|
|
388
|
-
setComponent({view})
|
|
604
|
+
setComponent({ view })
|
|
389
605
|
} else if (event && event.target) {
|
|
390
|
-
const target = event.target as any
|
|
391
|
-
const v: string = target.getAttribute(
|
|
606
|
+
const target = event.target as any
|
|
607
|
+
const v: string = target.getAttribute("data-view")
|
|
392
608
|
if (v && v.length > 0) {
|
|
393
|
-
setComponent({view: v})
|
|
609
|
+
setComponent({ view: v })
|
|
394
610
|
}
|
|
395
611
|
}
|
|
396
|
-
}
|
|
612
|
+
}
|
|
397
613
|
|
|
398
614
|
const resetAndSearch = () => {
|
|
399
615
|
if (running === true) {
|
|
400
|
-
setComponent({ page: 1, triggerSearch: true })
|
|
401
|
-
return
|
|
616
|
+
setComponent({ page: 1, triggerSearch: true })
|
|
617
|
+
return
|
|
402
618
|
}
|
|
403
|
-
setComponent({ page: 1, tmpPageIndex: 1 })
|
|
404
|
-
removeSortStatus(component.sortTarget)
|
|
619
|
+
setComponent({ page: 1, tmpPageIndex: 1 })
|
|
620
|
+
removeSortStatus(component.sortTarget)
|
|
405
621
|
setComponent({
|
|
406
622
|
sortTarget: undefined,
|
|
407
623
|
sortField: undefined,
|
|
408
624
|
append: false,
|
|
409
|
-
page: 1
|
|
410
|
-
})
|
|
411
|
-
component.sortTarget = undefined
|
|
412
|
-
component.sortField = undefined
|
|
413
|
-
component.append = false
|
|
414
|
-
component.page = 1
|
|
415
|
-
doSearch(component)
|
|
416
|
-
}
|
|
625
|
+
page: 1,
|
|
626
|
+
})
|
|
627
|
+
component.sortTarget = undefined
|
|
628
|
+
component.sortField = undefined
|
|
629
|
+
component.append = false
|
|
630
|
+
component.page = 1
|
|
631
|
+
doSearch(component)
|
|
632
|
+
}
|
|
417
633
|
|
|
418
634
|
const searchError = (err: any): void => {
|
|
419
|
-
setComponent({ page: component.tmpPageIndex })
|
|
420
|
-
error(err, p1.resource.value, p1.showError)
|
|
635
|
+
setComponent({ page: component.tmpPageIndex })
|
|
636
|
+
error(err, p1.resource.value, p1.showError)
|
|
421
637
|
hideLoading(p1.loading)
|
|
422
|
-
}
|
|
423
|
-
const appendList =
|
|
424
|
-
const setList =
|
|
638
|
+
}
|
|
639
|
+
const appendList = p && p.appendList ? p.appendList : appendListOfState
|
|
640
|
+
const setList = p && p.setList ? p.setList : setListOfState
|
|
425
641
|
const _showResults = (s: S, sr: SearchResult<T>, lc: Locale) => {
|
|
426
642
|
if (sr === undefined) {
|
|
427
|
-
return
|
|
643
|
+
return
|
|
428
644
|
}
|
|
429
|
-
const results = sr?.list || []
|
|
645
|
+
const results = sr?.list || []
|
|
430
646
|
if (results && results.length > 0) {
|
|
431
|
-
formatResults(results, component.page, component.limit, component.limit, p ? p.sequenceNo : undefined, p ? p.format : undefined, lc)
|
|
647
|
+
formatResults(results, component.page, component.limit, component.limit, p ? p.sequenceNo : undefined, p ? p.format : undefined, lc)
|
|
432
648
|
}
|
|
433
|
-
const am = component.appendMode
|
|
434
|
-
const pi =
|
|
435
|
-
setComponent({ total: sr.total, page: pi, nextPageToken: sr.next })
|
|
649
|
+
const am = component.appendMode
|
|
650
|
+
const pi = s.page && s.page >= 1 ? s.page : 1
|
|
651
|
+
setComponent({ total: sr.total, page: pi, nextPageToken: sr.next })
|
|
436
652
|
if (am) {
|
|
437
|
-
let limit = s.limit
|
|
653
|
+
let limit = s.limit
|
|
438
654
|
if ((!s.page || s.page <= 1) && s.firstLimit && s.firstLimit > 0) {
|
|
439
|
-
limit = s.firstLimit
|
|
655
|
+
limit = s.firstLimit
|
|
440
656
|
}
|
|
441
|
-
handleAppend(component, sr.list, limit, sr.next)
|
|
442
|
-
if (component.append &&
|
|
443
|
-
appendList(results, component.list, setState as any)
|
|
657
|
+
handleAppend(component, sr.list, limit, sr.next)
|
|
658
|
+
if (component.append && s.page && s.page > 1) {
|
|
659
|
+
appendList(results, component.list, setState as any)
|
|
444
660
|
} else {
|
|
445
|
-
setList(results, setState as any)
|
|
661
|
+
setList(results, setState as any)
|
|
446
662
|
}
|
|
447
663
|
} else {
|
|
448
|
-
showPaging(component, sr.list, s.limit, sr.total)
|
|
449
|
-
setList(results, setState as any)
|
|
450
|
-
setComponent({ tmpPageIndex: s.page })
|
|
664
|
+
showPaging(component, sr.list, s.limit, sr.total)
|
|
665
|
+
setList(results, setState as any)
|
|
666
|
+
setComponent({ tmpPageIndex: s.page })
|
|
451
667
|
if (s.limit) {
|
|
452
|
-
const m1 = buildMessage(p1.resource.resource(), sr.list, s.limit, s.page, sr.total)
|
|
453
|
-
p1.showMessage(m1)
|
|
668
|
+
const m1 = buildMessage(p1.resource.resource(), sr.list, s.limit, s.page, sr.total)
|
|
669
|
+
p1.showMessage(m1)
|
|
454
670
|
}
|
|
455
671
|
}
|
|
456
|
-
setRunning(false)
|
|
457
|
-
hideLoading(p1.loading)
|
|
672
|
+
setRunning(false)
|
|
673
|
+
hideLoading(p1.loading)
|
|
458
674
|
if (component.triggerSearch) {
|
|
459
|
-
setComponent({ triggerSearch: false })
|
|
460
|
-
resetAndSearch()
|
|
675
|
+
setComponent({ triggerSearch: false })
|
|
676
|
+
resetAndSearch()
|
|
461
677
|
}
|
|
462
|
-
}
|
|
463
|
-
const showResults =
|
|
678
|
+
}
|
|
679
|
+
const showResults = p && p.showResults ? p.showResults : _showResults
|
|
464
680
|
|
|
465
681
|
const showMore = (event: any) => {
|
|
466
|
-
event.preventDefault()
|
|
467
|
-
const n = component.page ? component.page + 1 : 2
|
|
468
|
-
const m = component.page
|
|
469
|
-
setComponent({ tmpPageIndex: m, page: n, append: true })
|
|
470
|
-
component.tmpPageIndex = m
|
|
471
|
-
component.page = n
|
|
472
|
-
component.append = true
|
|
473
|
-
doSearch(component)
|
|
474
|
-
}
|
|
682
|
+
event.preventDefault()
|
|
683
|
+
const n = component.page ? component.page + 1 : 2
|
|
684
|
+
const m = component.page
|
|
685
|
+
setComponent({ tmpPageIndex: m, page: n, append: true })
|
|
686
|
+
component.tmpPageIndex = m
|
|
687
|
+
component.page = n
|
|
688
|
+
component.append = true
|
|
689
|
+
doSearch(component)
|
|
690
|
+
}
|
|
475
691
|
|
|
476
692
|
const pageChanged = (data: PageChange) => {
|
|
477
|
-
const { page, size } = data
|
|
478
|
-
setComponent({ page: page, limit: size, append: false })
|
|
479
|
-
component.page = page
|
|
480
|
-
component.limit = size
|
|
481
|
-
component.append = false
|
|
482
|
-
doSearch(component)
|
|
483
|
-
}
|
|
693
|
+
const { page, size } = data
|
|
694
|
+
setComponent({ page: page, limit: size, append: false })
|
|
695
|
+
component.page = page
|
|
696
|
+
component.limit = size
|
|
697
|
+
component.append = false
|
|
698
|
+
doSearch(component)
|
|
699
|
+
}
|
|
484
700
|
|
|
485
701
|
return {
|
|
486
702
|
...baseProps,
|
|
@@ -505,6 +721,6 @@ export const useCoreSearch = <T, S extends Filter, ST>(
|
|
|
505
721
|
getFields,
|
|
506
722
|
getModelName,
|
|
507
723
|
format: p ? p.format : undefined,
|
|
508
|
-
searchError
|
|
509
|
-
}
|
|
510
|
-
}
|
|
724
|
+
searchError,
|
|
725
|
+
}
|
|
726
|
+
}
|