react-hook-core 0.4.8 → 0.4.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/core.js CHANGED
@@ -1,6 +1,5 @@
1
1
  "use strict"
2
2
  Object.defineProperty(exports, "__esModule", { value: true })
3
- var formutil_1 = require("./formutil")
4
3
  exports.pageSizes = [12, 24, 60, 100, 120, 180, 300, 600]
5
4
  exports.sizes = exports.pageSizes
6
5
  var resources = (function () {
@@ -17,120 +16,3 @@ var resources = (function () {
17
16
  return resources
18
17
  })()
19
18
  exports.resources = resources
20
- function removePhoneFormat(phone) {
21
- if (phone) {
22
- return phone.replace(resources.phone, "")
23
- } else {
24
- return phone
25
- }
26
- }
27
- exports.removePhoneFormat = removePhoneFormat
28
- exports.datetimeToString = function (inputDate) {
29
- var date = new Date(inputDate)
30
- var year = date.getFullYear()
31
- var month = String(date.getMonth() + 1).padStart(2, "0")
32
- var day = String(date.getDate()).padStart(2, "0")
33
- var hours = String(date.getHours()).padStart(2, "0")
34
- var minutes = String(date.getMinutes()).padStart(2, "0")
35
- var seconds = String(date.getSeconds()).padStart(2, "0")
36
- return year + "-" + month + "-" + day + "T" + hours + ":" + minutes + ":" + seconds
37
- }
38
- exports.dateToString = function (inputDate) {
39
- var year = inputDate.getFullYear()
40
- var month = String(inputDate.getMonth() + 1).padStart(2, "0")
41
- var day = String(inputDate.getDate()).padStart(2, "0")
42
- return year + "-" + month + "-" + day
43
- }
44
- function initForm(form, initMat) {
45
- if (form) {
46
- setTimeout(function () {
47
- if (initMat) {
48
- initMat(form)
49
- }
50
- formutil_1.focusFirstElement(form)
51
- }, 100)
52
- }
53
- return form
54
- }
55
- exports.initForm = initForm
56
- function getName(d, n) {
57
- return n && n.length > 0 ? n : d
58
- }
59
- exports.getName = getName
60
- function getModelName(form, name) {
61
- if (form) {
62
- var a = form.getAttribute("model-name")
63
- if (a && a.length > 0) {
64
- return a
65
- }
66
- var b = form.name
67
- if (b) {
68
- if (b.endsWith("Form")) {
69
- return b.substring(0, b.length - 4)
70
- }
71
- return b
72
- }
73
- }
74
- if (name && name.length > 0) {
75
- return name
76
- }
77
- return ""
78
- }
79
- exports.getModelName = getModelName
80
- exports.scrollToFocus = function (e, isUseTimeOut) {
81
- try {
82
- var element = e.target
83
- var form = element.form
84
- if (form) {
85
- var container_1 = form.childNodes[1]
86
- var elementRect_1 = element.getBoundingClientRect()
87
- var absoluteElementTop = elementRect_1.top + window.pageYOffset
88
- var middle_1 = absoluteElementTop - window.innerHeight / 2
89
- var scrollTop_1 = container_1.scrollTop
90
- var timeOut = isUseTimeOut ? 300 : 0
91
- var isChrome_1 = navigator.userAgent.search("Chrome") > 0
92
- setTimeout(function () {
93
- if (isChrome_1) {
94
- var scrollPosition = scrollTop_1 === 0 ? elementRect_1.top + 64 : scrollTop_1 + middle_1
95
- container_1.scrollTo(0, Math.abs(scrollPosition))
96
- } else {
97
- container_1.scrollTo(0, Math.abs(scrollTop_1 + middle_1))
98
- }
99
- }, timeOut)
100
- }
101
- } catch (e) {
102
- console.log(e)
103
- }
104
- }
105
- function showLoading(s) {
106
- if (s) {
107
- s.showLoading()
108
- }
109
- }
110
- exports.showLoading = showLoading
111
- function hideLoading(s) {
112
- if (s) {
113
- s.hideLoading()
114
- }
115
- }
116
- exports.hideLoading = hideLoading
117
- function getRemoveError(u, rmErr) {
118
- if (rmErr) {
119
- return rmErr
120
- }
121
- return u && u.ui ? u.ui.removeError : undefined
122
- }
123
- exports.getRemoveError = getRemoveError
124
- function removeFormError(u, f) {
125
- if (f && u && u.ui) {
126
- u.ui.removeFormError(f)
127
- }
128
- }
129
- exports.removeFormError = removeFormError
130
- function getValidateForm(u, vf) {
131
- if (vf) {
132
- return vf
133
- }
134
- return u && u.ui ? u.ui.validateForm : undefined
135
- }
136
- exports.getValidateForm = getValidateForm
package/lib/formutil.js CHANGED
@@ -46,34 +46,6 @@ function setReadOnly(form) {
46
46
  }
47
47
  }
48
48
  exports.setReadOnly = setReadOnly
49
- function focusFirstElement(form) {
50
- var i = 0
51
- var len = form.length
52
- for (i = 0; i < len; i++) {
53
- var ctrl = form[i]
54
- if (!(ctrl.readOnly || ctrl.disabled)) {
55
- var nodeName = ctrl.nodeName
56
- var type = ctrl.getAttribute("type")
57
- if (type) {
58
- var t = type.toUpperCase()
59
- if (t === "BUTTON" || t === "SUBMIT") {
60
- ctrl.focus()
61
- }
62
- if (nodeName === "INPUT") {
63
- nodeName = t
64
- }
65
- }
66
- if (nodeName !== "BUTTON" && nodeName !== "RESET" && nodeName !== "SUBMIT" && nodeName !== "CHECKBOX" && nodeName !== "RADIO") {
67
- ctrl.focus()
68
- try {
69
- ctrl.setSelectionRange(0, ctrl.value.length)
70
- } catch (err) {}
71
- return
72
- }
73
- }
74
- }
75
- }
76
- exports.focusFirstElement = focusFirstElement
77
49
  function focusFirstError(form, className) {
78
50
  if (!form) {
79
51
  return
package/lib/index.js CHANGED
@@ -156,3 +156,28 @@ function getNumber(event) {
156
156
  return parseInt(event.currentTarget.value, 10)
157
157
  }
158
158
  exports.getNumber = getNumber
159
+ exports.scrollToFocus = function (e, isUseTimeOut) {
160
+ try {
161
+ var element = e.target
162
+ var form = element.form
163
+ if (form) {
164
+ var container_1 = form.childNodes[1]
165
+ var elementRect_1 = element.getBoundingClientRect()
166
+ var absoluteElementTop = elementRect_1.top + window.pageYOffset
167
+ var middle_1 = absoluteElementTop - window.innerHeight / 2
168
+ var scrollTop_1 = container_1.scrollTop
169
+ var timeOut = isUseTimeOut ? 300 : 0
170
+ var isChrome_1 = navigator.userAgent.search("Chrome") > 0
171
+ setTimeout(function () {
172
+ if (isChrome_1) {
173
+ var scrollPosition = scrollTop_1 === 0 ? elementRect_1.top + 64 : scrollTop_1 + middle_1
174
+ container_1.scrollTo(0, Math.abs(scrollPosition))
175
+ } else {
176
+ container_1.scrollTo(0, Math.abs(scrollTop_1 + middle_1))
177
+ }
178
+ }, timeOut)
179
+ }
180
+ } catch (e) {
181
+ console.log(e)
182
+ }
183
+ }
package/lib/input.js CHANGED
@@ -59,3 +59,52 @@ function getErrorFunc(p, showErr) {
59
59
  return p.showError
60
60
  }
61
61
  exports.getErrorFunc = getErrorFunc
62
+ function showLoading(s) {
63
+ if (s) {
64
+ s.showLoading()
65
+ }
66
+ }
67
+ exports.showLoading = showLoading
68
+ function hideLoading(s) {
69
+ if (s) {
70
+ s.hideLoading()
71
+ }
72
+ }
73
+ exports.hideLoading = hideLoading
74
+ function initForm(form, initMat) {
75
+ if (form) {
76
+ setTimeout(function () {
77
+ if (initMat) {
78
+ initMat(form)
79
+ }
80
+ focusFirstElement(form)
81
+ }, 100)
82
+ }
83
+ return form
84
+ }
85
+ exports.initForm = initForm
86
+ function focusFirstElement(form) {
87
+ var i = 0
88
+ var len = form.length
89
+ for (i = 0; i < len; i++) {
90
+ var ctrl = form[i]
91
+ if (!(ctrl.readOnly || ctrl.disabled)) {
92
+ var nodeName = ctrl.nodeName
93
+ var type = ctrl.getAttribute("type")
94
+ if (type) {
95
+ var t = type.toUpperCase()
96
+ if (t === "BUTTON" || t === "SUBMIT") {
97
+ ctrl.focus()
98
+ }
99
+ if (nodeName === "INPUT") {
100
+ nodeName = t
101
+ }
102
+ }
103
+ if (nodeName !== "BUTTON" && nodeName !== "RESET" && nodeName !== "SUBMIT" && nodeName !== "CHECKBOX" && nodeName !== "RADIO") {
104
+ ctrl.focus()
105
+ return
106
+ }
107
+ }
108
+ }
109
+ }
110
+ exports.focusFirstElement = focusFirstElement
package/lib/reflect.js CHANGED
@@ -151,16 +151,6 @@ function hasDiff(o1, o2, keys, version) {
151
151
  return !isEmptyObject(diff)
152
152
  }
153
153
  exports.hasDiff = hasDiff
154
- function goBack(navigate, confirm, resource, o1, o2, keys, version) {
155
- if (!hasDiff(o1, o2, keys, version)) {
156
- navigate(-1)
157
- } else {
158
- confirm(resource.msg_confirm_back, function () {
159
- return navigate(-1)
160
- })
161
- }
162
- }
163
- exports.goBack = goBack
164
154
  function notIn(s1, s2) {
165
155
  var r = []
166
156
  for (var _i = 0, s2_1 = s2; _i < s2_1.length; _i++) {
package/lib/route.js CHANGED
@@ -1,6 +1,17 @@
1
1
  "use strict"
2
2
  Object.defineProperty(exports, "__esModule", { value: true })
3
3
  var qs = require("query-string")
4
+ var reflect_1 = require("./reflect")
5
+ function goBack(navigate, confirm, resource, o1, o2, keys, version) {
6
+ if (!reflect_1.hasDiff(o1, o2, keys, version)) {
7
+ navigate(-1)
8
+ } else {
9
+ confirm(resource.msg_confirm_back, function () {
10
+ return navigate(-1)
11
+ })
12
+ }
13
+ }
14
+ exports.goBack = goBack
4
15
  function buildFromUrl(modelT) {
5
16
  return buildParameters(window.location.search, modelT)
6
17
  }
package/lib/search.js CHANGED
@@ -111,13 +111,6 @@ function initFilter(m, com) {
111
111
  return m
112
112
  }
113
113
  exports.initFilter = initFilter
114
- function showPaging(com, list, pageSize, total) {
115
- com.total = total
116
- var pageTotal = getPageTotal(pageSize, total)
117
- com.pages = pageTotal
118
- com.showPaging = !total || com.pages <= 1 || (list && list.length >= total) ? false : true
119
- }
120
- exports.showPaging = showPaging
121
114
  function getFields(form, arr) {
122
115
  if (arr && arr.length > 0) {
123
116
  return arr
@@ -157,20 +150,6 @@ function getFields(form, arr) {
157
150
  return fields.length > 0 ? fields : undefined
158
151
  }
159
152
  exports.getFields = getFields
160
- function getPageTotal(pageSize, total) {
161
- if (!pageSize || pageSize <= 0) {
162
- return 1
163
- } else {
164
- if (!total) {
165
- total = 0
166
- }
167
- if (total % pageSize === 0) {
168
- return Math.floor(total / pageSize)
169
- }
170
- return Math.floor(total / pageSize + 1)
171
- }
172
- }
173
- exports.getPageTotal = getPageTotal
174
153
  function formatText() {
175
154
  var args = []
176
155
  for (var _i = 0; _i < arguments.length; _i++) {
@@ -195,6 +174,20 @@ function formatText() {
195
174
  return formatted
196
175
  }
197
176
  exports.formatText = formatText
177
+ function getPageTotal(pageSize, total) {
178
+ if (!pageSize || pageSize <= 0) {
179
+ return 1
180
+ } else {
181
+ if (!total) {
182
+ total = 0
183
+ }
184
+ if (total % pageSize === 0) {
185
+ return Math.floor(total / pageSize)
186
+ }
187
+ return Math.floor(total / pageSize + 1)
188
+ }
189
+ }
190
+ exports.getPageTotal = getPageTotal
198
191
  function buildMessage(resource, results, limit, page, total) {
199
192
  if (!results || results.length === 0) {
200
193
  return resource.msg_no_data_found
@@ -355,16 +348,6 @@ function handleToggle(target, on) {
355
348
  return off
356
349
  }
357
350
  exports.handleToggle = handleToggle
358
- function handleSortEvent(event, com) {
359
- if (event && event.target) {
360
- var target = event.target
361
- var s = handleSort(target, com.sortTarget, com.sortField, com.sortType)
362
- com.sortField = s.field
363
- com.sortType = s.type
364
- com.sortTarget = target
365
- }
366
- }
367
- exports.handleSortEvent = handleSortEvent
368
351
  function getSortElement(target) {
369
352
  return target.nodeName === "I" ? target.parentElement : target
370
353
  }
package/lib/update.js CHANGED
@@ -18,9 +18,37 @@ var react_1 = require("react")
18
18
  var core_1 = require("./core")
19
19
  var merge_1 = require("./merge")
20
20
  var state_1 = require("./state")
21
+ function removePhoneFormat(phone) {
22
+ if (phone) {
23
+ return phone.replace(core_1.resources.phone, "")
24
+ } else {
25
+ return phone
26
+ }
27
+ }
28
+ exports.removePhoneFormat = removePhoneFormat
29
+ function getModelName(form, name) {
30
+ if (form) {
31
+ var a = form.getAttribute("model-name")
32
+ if (a && a.length > 0) {
33
+ return a
34
+ }
35
+ var b = form.name
36
+ if (b) {
37
+ if (b.endsWith("Form")) {
38
+ return b.substring(0, b.length - 4)
39
+ }
40
+ return b
41
+ }
42
+ }
43
+ if (name && name.length > 0) {
44
+ return name
45
+ }
46
+ return ""
47
+ }
48
+ exports.getModelName = getModelName
21
49
  var m = "model"
22
50
  var _getModelName = function (f2) {
23
- return core_1.getModelName(f2, m)
51
+ return getModelName(f2, m)
24
52
  }
25
53
  exports.useUpdate = function (initialState, getName, getLocale, removeErr) {
26
54
  var _a = merge_1.useMergeState(initialState),
@@ -38,7 +66,7 @@ exports.useUpdate = function (initialState, getName, getLocale, removeErr) {
38
66
  var updatePhoneState = function (event) {
39
67
  var re = /^[0-9\b]+$/
40
68
  var target = event.currentTarget
41
- var value = core_1.removePhoneFormat(target.value)
69
+ var value = removePhoneFormat(target.value)
42
70
  if (re.test(value) || !value) {
43
71
  updateState(event)
44
72
  } else {
package/lib/useEdit.js CHANGED
@@ -20,6 +20,7 @@ var core_1 = require("./core")
20
20
  var edit_1 = require("./edit")
21
21
  var error_1 = require("./error")
22
22
  var formutil_1 = require("./formutil")
23
+ var input_1 = require("./input")
23
24
  var merge_1 = require("./merge")
24
25
  var reflect_1 = require("./reflect")
25
26
  var state_1 = require("./state")
@@ -119,7 +120,7 @@ exports.useEdit = function (refForm, initialState, service, p2, p) {
119
120
  react_1.useEffect(function () {
120
121
  if (refForm) {
121
122
  var registerEvents = p2.ui ? p2.ui.registerEvents : undefined
122
- core_1.initForm(baseProps.refForm.current, registerEvents)
123
+ input_1.initForm(baseProps.refForm.current, registerEvents)
123
124
  }
124
125
  var n = baseProps.getModelName(refForm.current)
125
126
  var obj = {}
@@ -144,7 +145,7 @@ exports.useEdit = function (refForm, initialState, service, p2, p) {
144
145
  baseProps.load(id, p ? p.callback : undefined)
145
146
  } catch (error) {
146
147
  p2.showError(error)
147
- core_1.hideLoading(p2.loading)
148
+ input_1.hideLoading(p2.loading)
148
149
  }
149
150
  }
150
151
  }, [])
@@ -156,7 +157,7 @@ exports.useEditProps = function (props, refForm, initialState, service, p2, p) {
156
157
  react_1.useEffect(function () {
157
158
  if (refForm) {
158
159
  var registerEvents = p2.ui ? p2.ui.registerEvents : undefined
159
- core_1.initForm(baseProps.refForm.current, registerEvents)
160
+ input_1.initForm(baseProps.refForm.current, registerEvents)
160
161
  }
161
162
  var n = baseProps.getModelName(refForm.current)
162
163
  var obj = {}
@@ -197,7 +198,7 @@ exports.useCoreEdit = function (refForm, initialState, service, p1, p, props) {
197
198
  if (p && p.name && p.name.length > 0) {
198
199
  return p.name
199
200
  }
200
- return core_1.getModelName(f)
201
+ return update_1.getModelName(f)
201
202
  }
202
203
  var baseProps = update_1.useUpdate(initialState, getModelName, p1.getLocale)
203
204
  var state = baseProps.state,
@@ -414,7 +415,7 @@ exports.useCoreEdit = function (refForm, initialState, service, p1, p, props) {
414
415
  var _handleError = function (err) {
415
416
  if (err) {
416
417
  setRunning(false)
417
- core_1.hideLoading(p1.loading)
418
+ input_1.hideLoading(p1.loading)
418
419
  var errHeader = p1.resource.value("error")
419
420
  var errMsg = p1.resource.value("error_internal")
420
421
  var data = err && err.response ? err.response : err
@@ -429,7 +430,7 @@ exports.useCoreEdit = function (refForm, initialState, service, p1, p, props) {
429
430
  var handleError = p && p.handleError ? p.handleError : _handleError
430
431
  var _postSave = function (r, origin, version, isPatch, backOnSave) {
431
432
  setRunning(false)
432
- core_1.hideLoading(p1.loading)
433
+ input_1.hideLoading(p1.loading)
433
434
  var x = r
434
435
  var successMsg = p1.resource.value("msg_save_success")
435
436
  var newMod = flag.newMode
@@ -473,7 +474,7 @@ exports.useCoreEdit = function (refForm, initialState, service, p1, p, props) {
473
474
  var handleDuplicateKey = p && p.handleDuplicateKey ? p.handleDuplicateKey : _handleDuplicateKey
474
475
  var _doSave = function (obj, body, version, isBack) {
475
476
  setRunning(true)
476
- core_1.showLoading(p1.loading)
477
+ input_1.showLoading(p1.loading)
477
478
  var isBackO = isBack != null && isBack !== undefined ? isBack : false
478
479
  var patchable = p ? p.patchable : true
479
480
  if (flag.newMode === false) {
@@ -506,7 +507,7 @@ exports.useCoreEdit = function (refForm, initialState, service, p1, p, props) {
506
507
  var id = _id
507
508
  if (id != null && id !== "") {
508
509
  setRunning(true)
509
- core_1.showLoading(p1.loading)
510
+ input_1.showLoading(p1.loading)
510
511
  service
511
512
  .load(id)
512
513
  .then(function (obj) {
@@ -521,7 +522,7 @@ exports.useCoreEdit = function (refForm, initialState, service, p1, p, props) {
521
522
  }
522
523
  }
523
524
  setRunning(false)
524
- core_1.hideLoading(p1.loading)
525
+ input_1.hideLoading(p1.loading)
525
526
  })
526
527
  .catch(function (err) {
527
528
  var _a, _b, _c
@@ -549,7 +550,7 @@ exports.useCoreEdit = function (refForm, initialState, service, p1, p, props) {
549
550
  }
550
551
  }
551
552
  setRunning(false)
552
- core_1.hideLoading(p1.loading)
553
+ input_1.hideLoading(p1.loading)
553
554
  })
554
555
  } else {
555
556
  var obj = createModel()
package/lib/useSearch.js CHANGED
@@ -24,12 +24,40 @@ Object.defineProperty(exports, "__esModule", { value: true })
24
24
  var react_1 = require("react")
25
25
  var core_1 = require("./core")
26
26
  var error_1 = require("./error")
27
+ var input_1 = require("./input")
27
28
  var merge_1 = require("./merge")
28
29
  var reflect_1 = require("./reflect")
29
30
  var route_1 = require("./route")
30
31
  var search_1 = require("./search")
31
32
  var state_1 = require("./state")
32
33
  var update_1 = require("./update")
34
+ function showPaging(com, list, pageSize, total) {
35
+ com.total = total
36
+ var pageTotal = search_1.getPageTotal(pageSize, total)
37
+ com.pages = pageTotal
38
+ com.showPaging = !total || com.pages <= 1 || (list && list.length >= total) ? false : true
39
+ }
40
+ exports.showPaging = showPaging
41
+ function removeFormError(u, f) {
42
+ if (f && u && u.ui) {
43
+ u.ui.removeFormError(f)
44
+ }
45
+ }
46
+ exports.removeFormError = removeFormError
47
+ function getValidateForm(u, vf) {
48
+ if (vf) {
49
+ return vf
50
+ }
51
+ return u && u.ui ? u.ui.validateForm : undefined
52
+ }
53
+ exports.getValidateForm = getValidateForm
54
+ function getRemoveError(u, rmErr) {
55
+ if (rmErr) {
56
+ return rmErr
57
+ }
58
+ return u && u.ui ? u.ui.removeError : undefined
59
+ }
60
+ exports.getRemoveError = getRemoveError
33
61
  function getModel(state, modelName, searchable, fields, excluding) {
34
62
  var obj2 = getModelFromState(state, modelName)
35
63
  var obj = obj2 ? obj2 : {}
@@ -259,7 +287,7 @@ exports.useSearch = function (refForm, initialState, service, p2, p) {
259
287
  searchError = baseProps.searchError
260
288
  if (refForm) {
261
289
  var registerEvents = p2.ui ? p2.ui.registerEvents : undefined
262
- core_1.initForm(refForm.current, registerEvents)
290
+ input_1.initForm(refForm.current, registerEvents)
263
291
  }
264
292
  if (p && p.initialize) {
265
293
  p.initialize(load, setState, component)
@@ -281,16 +309,20 @@ exports.useSearchOneProps = function (p) {
281
309
  exports.useSearchOne = function (p) {
282
310
  return exports.useCoreSearch(p.refForm, p.initialState, p.service, p, p)
283
311
  }
312
+ function getName(d, n) {
313
+ return n && n.length > 0 ? n : d
314
+ }
315
+ exports.getName = getName
284
316
  exports.useCoreSearch = function (refForm, initialState, service, p1, p2) {
285
317
  var p = mergeParam(p2)
286
318
  var _a = react_1.useState(),
287
319
  running = _a[0],
288
320
  setRunning = _a[1]
289
321
  var _getModelName = function () {
290
- return core_1.getName("filter", p && p.name ? p.name : undefined)
322
+ return getName("filter", p && p.name ? p.name : undefined)
291
323
  }
292
324
  var getModelName = p && p.getModelName ? p.getModelName : _getModelName
293
- var baseProps = update_1.useUpdate(initialState, getModelName, p1.getLocale, core_1.getRemoveError(p1))
325
+ var baseProps = update_1.useUpdate(initialState, getModelName, p1.getLocale, getRemoveError(p1))
294
326
  var state = baseProps.state,
295
327
  setState = baseProps.setState
296
328
  var _b = react_1.useState(false),
@@ -359,7 +391,7 @@ exports.useCoreSearch = function (refForm, initialState, service, p1, p2) {
359
391
  }
360
392
  var load = p && p.load ? p.load : _load
361
393
  var doSearch = function (se, isFirstLoad) {
362
- core_1.removeFormError(p1, refForm.current)
394
+ removeFormError(p1, refForm.current)
363
395
  var s = getFilter(se)
364
396
  if (isFirstLoad) {
365
397
  setState(state)
@@ -370,7 +402,7 @@ exports.useCoreSearch = function (refForm, initialState, service, p1, p2) {
370
402
  return
371
403
  }
372
404
  setRunning(true)
373
- core_1.showLoading(p1.loading)
405
+ input_1.showLoading(p1.loading)
374
406
  if (p && !p.ignoreUrlParam) {
375
407
  search_1.addParametersIntoUrl(s, isFirstLoad)
376
408
  }
@@ -383,7 +415,7 @@ exports.useCoreSearch = function (refForm, initialState, service, p1, p2) {
383
415
  })
384
416
  }
385
417
  var _validateSearch = function (se, callback) {
386
- validate(se, callback, refForm.current, p1.getLocale ? p1.getLocale() : undefined, core_1.getValidateForm(p1))
418
+ validate(se, callback, refForm.current, p1.getLocale ? p1.getLocale() : undefined, getValidateForm(p1))
387
419
  }
388
420
  var validateSearch = p && p.validateSearch ? p.validateSearch : _validateSearch
389
421
  var pageSizeChanged = function (event) {
@@ -473,7 +505,7 @@ exports.useCoreSearch = function (refForm, initialState, service, p1, p2) {
473
505
  var searchError = function (err) {
474
506
  setComponent({ page: component.tmpPageIndex })
475
507
  error_1.error(err, p1.resource.value, p1.showError)
476
- core_1.hideLoading(p1.loading)
508
+ input_1.hideLoading(p1.loading)
477
509
  }
478
510
  var appendList = p && p.appendList ? p.appendList : appendListOfState
479
511
  var setList = p && p.setList ? p.setList : setListOfState
@@ -500,7 +532,7 @@ exports.useCoreSearch = function (refForm, initialState, service, p1, p2) {
500
532
  setList(results, setState)
501
533
  }
502
534
  } else {
503
- search_1.showPaging(component, sr.list, s.limit, sr.total)
535
+ showPaging(component, sr.list, s.limit, sr.total)
504
536
  setList(results, setState)
505
537
  setComponent({ tmpPageIndex: s.page })
506
538
  if (s.limit) {
@@ -509,7 +541,7 @@ exports.useCoreSearch = function (refForm, initialState, service, p1, p2) {
509
541
  }
510
542
  }
511
543
  setRunning(false)
512
- core_1.hideLoading(p1.loading)
544
+ input_1.hideLoading(p1.loading)
513
545
  if (component.triggerSearch) {
514
546
  setComponent({ triggerSearch: false })
515
547
  resetAndSearch()
package/lib/util.js CHANGED
@@ -72,15 +72,15 @@ function getStringCurrency(value, datatype, locale, maxLength, isOnBlur) {
72
72
  }
73
73
  }
74
74
  var dotPosition = value.indexOf(".")
75
- var beforeDot = dotPosition >= 0 ? value.substr(0, dotPosition) : value
75
+ var beforeDot = dotPosition >= 0 ? value.substring(0, dotPosition) : value
76
76
  if (datatype === "string-currency" || isOnBlur) {
77
77
  beforeDot = beforeDot.replace(new RegExp("\\B(?=(\\d{" + groupDigits + "})+(?!\\d))", "g"), groupSeparator)
78
78
  }
79
79
  var afterDot
80
80
  if (dotPosition > 0) {
81
- afterDot = value.substr(dotPosition + 1)
81
+ afterDot = value.substring(dotPosition + 1)
82
82
  if (afterDot.length > decimalDigits) {
83
- afterDot = afterDot.substr(0, decimalDigits)
83
+ afterDot = afterDot.substring(0, decimalDigits)
84
84
  }
85
85
  }
86
86
  if (maxLength && beforeDot.length > maxLength - (decimalDigits + 1)) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-hook-core",
3
- "version": "0.4.8",
3
+ "version": "0.4.9",
4
4
  "description": "react",
5
5
  "main": "./lib/index.js",
6
6
  "types": "./src/index.ts",
package/src/core.ts CHANGED
@@ -1,5 +1,3 @@
1
- import { focusFirstElement } from "./formutil"
2
-
3
1
  export interface LoadingService {
4
2
  showLoading(firstTime?: boolean): void
5
3
  hideLoading(): void
@@ -19,13 +17,6 @@ export class resources {
19
17
  static pageMaxSize = 7
20
18
  }
21
19
 
22
- export function removePhoneFormat(phone: string): string {
23
- if (phone) {
24
- return phone.replace(resources.phone, "")
25
- } else {
26
- return phone
27
- }
28
- }
29
20
  export interface StringMap {
30
21
  [key: string]: string
31
22
  }
@@ -98,125 +89,3 @@ export interface Attribute {
98
89
  export interface Attributes {
99
90
  [key: string]: Attribute
100
91
  }
101
-
102
- export const datetimeToString = (inputDate: Date) => {
103
- const date = new Date(inputDate)
104
- const year = date.getFullYear()
105
- const month = String(date.getMonth() + 1).padStart(2, "0")
106
- const day = String(date.getDate()).padStart(2, "0")
107
- const hours = String(date.getHours()).padStart(2, "0")
108
- const minutes = String(date.getMinutes()).padStart(2, "0")
109
- const seconds = String(date.getSeconds()).padStart(2, "0")
110
- return `${year}-${month}-${day}T${hours}:${minutes}:${seconds}`
111
- }
112
-
113
- export const dateToString = (inputDate: Date) => {
114
- const year = inputDate.getFullYear()
115
- const month = String(inputDate.getMonth() + 1).padStart(2, "0")
116
- const day = String(inputDate.getDate()).padStart(2, "0")
117
- return `${year}-${month}-${day}`
118
- }
119
-
120
- export function initForm(form?: HTMLFormElement, initMat?: (f: HTMLFormElement) => void): HTMLFormElement | undefined {
121
- if (form) {
122
- setTimeout(() => {
123
- if (initMat) {
124
- initMat(form)
125
- }
126
- focusFirstElement(form)
127
- }, 100)
128
- }
129
- return form
130
- }
131
- export function getName(d: string, n?: string): string {
132
- return n && n.length > 0 ? n : d
133
- }
134
- export function getModelName(form?: HTMLFormElement | null, name?: string): string {
135
- if (form) {
136
- const a = form.getAttribute("model-name")
137
- if (a && a.length > 0) {
138
- return a
139
- }
140
- const b = form.name
141
- if (b) {
142
- if (b.endsWith("Form")) {
143
- return b.substring(0, b.length - 4)
144
- }
145
- return b
146
- }
147
- }
148
- if (name && name.length > 0) {
149
- return name
150
- }
151
- return ""
152
- }
153
-
154
- export const scrollToFocus = (e: any, isUseTimeOut?: boolean) => {
155
- try {
156
- const element = e.target as HTMLInputElement
157
- const form = element.form
158
- if (form) {
159
- const container = form.childNodes[1] as HTMLElement
160
- const elementRect = element.getBoundingClientRect()
161
- const absoluteElementTop = elementRect.top + window.pageYOffset
162
- const middle = absoluteElementTop - window.innerHeight / 2
163
- const scrollTop = container.scrollTop
164
- const timeOut = isUseTimeOut ? 300 : 0
165
- const isChrome = navigator.userAgent.search("Chrome") > 0
166
- setTimeout(() => {
167
- if (isChrome) {
168
- const scrollPosition = scrollTop === 0 ? elementRect.top + 64 : scrollTop + middle
169
- container.scrollTo(0, Math.abs(scrollPosition))
170
- } else {
171
- container.scrollTo(0, Math.abs(scrollTop + middle))
172
- }
173
- }, timeOut)
174
- }
175
- } catch (e) {
176
- console.log(e)
177
- }
178
- }
179
- export interface LoadingParameter {
180
- loading?: LoadingService
181
- }
182
- export function showLoading(s?: LoadingService): void {
183
- if (s) {
184
- s.showLoading()
185
- }
186
- }
187
- export function hideLoading(s?: LoadingService): void {
188
- if (s) {
189
- s.hideLoading()
190
- }
191
- }
192
- export interface UIParameter {
193
- ui?: UIService
194
- }
195
- export function getRemoveError(u?: UIParameter, rmErr?: (el: HTMLInputElement) => void): ((el: HTMLInputElement) => void) | undefined {
196
- if (rmErr) {
197
- return rmErr
198
- }
199
- return u && u.ui ? u.ui.removeError : undefined
200
- }
201
- export function removeFormError(u?: UIParameter, f?: HTMLFormElement): void {
202
- if (f && u && u.ui) {
203
- u.ui.removeFormError(f)
204
- }
205
- }
206
- export function getValidateForm(
207
- u?: UIParameter,
208
- vf?: (form: HTMLFormElement, locale?: Locale, focusFirst?: boolean, scroll?: boolean) => boolean,
209
- ): ((form: HTMLFormElement, locale?: Locale, focusFirst?: boolean, scroll?: boolean) => boolean) | undefined {
210
- if (vf) {
211
- return vf
212
- }
213
- return u && u.ui ? u.ui.validateForm : undefined
214
- }
215
- /*
216
- export function getDecodeFromForm(u?: UIParameter, d?: (form: HTMLFormElement, locale?: Locale, currencyCode?: string) => any): ((form: HTMLFormElement, locale?: Locale, currencyCode?: string) => any) | undefined {
217
- if (d) {
218
- return d;
219
- }
220
- return (u && u.ui ? u.ui.decodeFromForm : undefined);
221
- }
222
- */
package/src/formutil.ts CHANGED
@@ -40,33 +40,6 @@ export function setReadOnly(form?: HTMLFormElement | null, ...args: string[]): v
40
40
  }
41
41
  }
42
42
  }
43
- export function focusFirstElement(form: HTMLFormElement): void {
44
- let i = 0
45
- const len = form.length
46
- for (i = 0; i < len; i++) {
47
- const ctrl = form[i] as HTMLInputElement
48
- if (!(ctrl.readOnly || ctrl.disabled)) {
49
- let nodeName = ctrl.nodeName
50
- const type = ctrl.getAttribute("type")
51
- if (type) {
52
- const t = type.toUpperCase()
53
- if (t === "BUTTON" || t === "SUBMIT") {
54
- ctrl.focus()
55
- }
56
- if (nodeName === "INPUT") {
57
- nodeName = t
58
- }
59
- }
60
- if (nodeName !== "BUTTON" && nodeName !== "RESET" && nodeName !== "SUBMIT" && nodeName !== "CHECKBOX" && nodeName !== "RADIO") {
61
- ctrl.focus()
62
- try {
63
- ctrl.setSelectionRange(0, ctrl.value.length)
64
- } catch (err) {}
65
- return
66
- }
67
- }
68
- }
69
- }
70
43
  export function focusFirstError(form?: HTMLFormElement | null, className?: string): void {
71
44
  if (!form) {
72
45
  return
package/src/index.ts CHANGED
@@ -203,3 +203,29 @@ export function datetimeToString(date?: Date | string): string | undefined {
203
203
  export function getNumber(event: ChangeEvent<HTMLSelectElement | HTMLInputElement>): number {
204
204
  return parseInt(event.currentTarget.value, 10)
205
205
  }
206
+
207
+ export const scrollToFocus = (e: any, isUseTimeOut?: boolean) => {
208
+ try {
209
+ const element = e.target as HTMLInputElement
210
+ const form = element.form
211
+ if (form) {
212
+ const container = form.childNodes[1] as HTMLElement
213
+ const elementRect = element.getBoundingClientRect()
214
+ const absoluteElementTop = elementRect.top + window.pageYOffset
215
+ const middle = absoluteElementTop - window.innerHeight / 2
216
+ const scrollTop = container.scrollTop
217
+ const timeOut = isUseTimeOut ? 300 : 0
218
+ const isChrome = navigator.userAgent.search("Chrome") > 0
219
+ setTimeout(() => {
220
+ if (isChrome) {
221
+ const scrollPosition = scrollTop === 0 ? elementRect.top + 64 : scrollTop + middle
222
+ container.scrollTo(0, Math.abs(scrollPosition))
223
+ } else {
224
+ container.scrollTo(0, Math.abs(scrollTop + middle))
225
+ }
226
+ }, timeOut)
227
+ }
228
+ } catch (e) {
229
+ console.log(e)
230
+ }
231
+ }
package/src/input.ts CHANGED
@@ -81,23 +81,55 @@ export function getErrorFunc(
81
81
  }
82
82
  return (p as any).showError
83
83
  }
84
- /*
85
- export interface EditStatusParameter {
86
- status?: EditStatusConfig;
87
- }
88
- export function getEditStatusFunc(p: ResourceService|EditStatusParameter, status?: EditStatusConfig): EditStatusConfig {
89
- if (status) {
90
- return status;
84
+
85
+ export function showLoading(s?: LoadingService): void {
86
+ if (s) {
87
+ s.showLoading()
91
88
  }
92
- return (p as any).status;
93
89
  }
94
- export interface DiffStatusParameter {
95
- status?: DiffStatusConfig;
90
+ export function hideLoading(s?: LoadingService): void {
91
+ if (s) {
92
+ s.hideLoading()
93
+ }
96
94
  }
97
- export function getDiffStatusFunc(p: ResourceService|DiffStatusParameter, status?: DiffStatusConfig): DiffStatusConfig {
98
- if (status) {
99
- return status;
95
+
96
+ export function initForm(form?: HTMLFormElement, initMat?: (f: HTMLFormElement) => void): HTMLFormElement | undefined {
97
+ if (form) {
98
+ setTimeout(() => {
99
+ if (initMat) {
100
+ initMat(form)
101
+ }
102
+ focusFirstElement(form)
103
+ }, 100)
104
+ }
105
+ return form
106
+ }
107
+ export function focusFirstElement(form: HTMLFormElement): void {
108
+ let i = 0
109
+ const len = form.length
110
+ for (i = 0; i < len; i++) {
111
+ const ctrl = form[i] as HTMLInputElement
112
+ if (!(ctrl.readOnly || ctrl.disabled)) {
113
+ let nodeName = ctrl.nodeName
114
+ const type = ctrl.getAttribute("type")
115
+ if (type) {
116
+ const t = type.toUpperCase()
117
+ if (t === "BUTTON" || t === "SUBMIT") {
118
+ ctrl.focus()
119
+ }
120
+ if (nodeName === "INPUT") {
121
+ nodeName = t
122
+ }
123
+ }
124
+ if (nodeName !== "BUTTON" && nodeName !== "RESET" && nodeName !== "SUBMIT" && nodeName !== "CHECKBOX" && nodeName !== "RADIO") {
125
+ ctrl.focus()
126
+ /*
127
+ try {
128
+ ctrl.setSelectionRange(0, ctrl.value.length)
129
+ } catch (err) {}
130
+ */
131
+ return
132
+ }
133
+ }
100
134
  }
101
- return (p as any).status;
102
135
  }
103
- */
package/src/reflect.ts CHANGED
@@ -1,6 +1,3 @@
1
- import { NavigateFunction } from "react-router-dom"
2
- import { StringMap } from "./core"
3
-
4
1
  export function clone(obj: any): any {
5
2
  if (!obj) {
6
3
  return obj
@@ -143,22 +140,6 @@ export function hasDiff<T>(o1: T, o2: T, keys?: string[], version?: string): boo
143
140
  return !isEmptyObject(diff)
144
141
  }
145
142
 
146
- export function goBack<T>(
147
- navigate: NavigateFunction,
148
- confirm: (msg: string, yesCallback?: () => void) => void,
149
- resource: StringMap,
150
- o1: T,
151
- o2: T,
152
- keys?: string[],
153
- version?: string,
154
- ) {
155
- if (!hasDiff(o1, o2, keys, version)) {
156
- navigate(-1)
157
- } else {
158
- confirm(resource.msg_confirm_back, () => navigate(-1))
159
- }
160
- }
161
-
162
143
  export function notIn(s1: string[], s2: string[]): string[] {
163
144
  const r = []
164
145
  for (const s of s2) {
package/src/route.ts CHANGED
@@ -1,6 +1,25 @@
1
1
  import * as qs from "query-string"
2
+ import { NavigateFunction } from "react-router-dom"
3
+ import { StringMap } from "./core"
4
+ import { hasDiff } from "./reflect"
2
5
  import { Filter } from "./search"
3
6
 
7
+ export function goBack<T>(
8
+ navigate: NavigateFunction,
9
+ confirm: (msg: string, yesCallback?: () => void) => void,
10
+ resource: StringMap,
11
+ o1: T,
12
+ o2: T,
13
+ keys?: string[],
14
+ version?: string,
15
+ ) {
16
+ if (!hasDiff(o1, o2, keys, version)) {
17
+ navigate(-1)
18
+ } else {
19
+ confirm(resource.msg_confirm_back, () => navigate(-1))
20
+ }
21
+ }
22
+
4
23
  export function buildFromUrl<S extends Filter>(modelT?: S): S {
5
24
  return buildParameters<S>(window.location.search, modelT)
6
25
  }
package/src/search.ts CHANGED
@@ -42,7 +42,7 @@ export interface Pagination {
42
42
  appendable?: boolean
43
43
  }
44
44
 
45
- export interface Searchable extends Pagination, Sortable {}
45
+ interface Searchable extends Pagination, Sortable {}
46
46
 
47
47
  export function getOffset(limit: number, page?: number, firstLimit?: number): number {
48
48
  const p = page && page > 0 ? page : 1
@@ -156,13 +156,6 @@ export function initFilter<S extends Filter>(m: S, com: Searchable): S {
156
156
  return m
157
157
  }
158
158
 
159
- export function showPaging<T>(com: Pagination, list: T[], pageSize?: number, total?: number): void {
160
- com.total = total
161
- const pageTotal = getPageTotal(pageSize, total)
162
- com.pages = pageTotal
163
- com.showPaging = !total || com.pages <= 1 || (list && list.length >= total) ? false : true
164
- }
165
-
166
159
  export function getFields(form?: HTMLFormElement, arr?: string[]): string[] | undefined {
167
160
  if (arr && arr.length > 0) {
168
161
  return arr
@@ -202,20 +195,6 @@ export function getFields(form?: HTMLFormElement, arr?: string[]): string[] | un
202
195
  return fields.length > 0 ? fields : undefined
203
196
  }
204
197
 
205
- export function getPageTotal(pageSize?: number, total?: number): number {
206
- if (!pageSize || pageSize <= 0) {
207
- return 1
208
- } else {
209
- if (!total) {
210
- total = 0
211
- }
212
- if (total % pageSize === 0) {
213
- return Math.floor(total / pageSize)
214
- }
215
- return Math.floor(total / pageSize + 1)
216
- }
217
- }
218
-
219
198
  export function formatText(...args: any[]): string {
220
199
  let formatted = args[0]
221
200
  if (!formatted || formatted === "") {
@@ -235,6 +214,19 @@ export function formatText(...args: any[]): string {
235
214
  }
236
215
  return formatted
237
216
  }
217
+ export function getPageTotal(pageSize?: number, total?: number): number {
218
+ if (!pageSize || pageSize <= 0) {
219
+ return 1
220
+ } else {
221
+ if (!total) {
222
+ total = 0
223
+ }
224
+ if (total % pageSize === 0) {
225
+ return Math.floor(total / pageSize)
226
+ }
227
+ return Math.floor(total / pageSize + 1)
228
+ }
229
+ }
238
230
  export function buildMessage<T>(resource: StringMap, results: T[], limit: number, page: number | undefined, total?: number): string {
239
231
  if (!results || results.length === 0) {
240
232
  return resource.msg_no_data_found
@@ -393,15 +385,6 @@ export function handleToggle(target?: HTMLElement, on?: boolean): boolean {
393
385
  }
394
386
  return off
395
387
  }
396
- export function handleSortEvent(event: Event, com: Sortable): void {
397
- if (event && event.target) {
398
- const target = event.target as HTMLElement
399
- const s = handleSort(target, com.sortTarget, com.sortField, com.sortType)
400
- com.sortField = s.field
401
- com.sortType = s.type
402
- com.sortTarget = target
403
- }
404
- }
405
388
 
406
389
  export function getSortElement(target: HTMLElement): HTMLElement {
407
390
  return target.nodeName === "I" ? (target.parentElement as HTMLElement) : target
package/src/update.ts CHANGED
@@ -1,11 +1,38 @@
1
1
  import { useEffect, useState } from "react"
2
- import { getModelName as getModelName2, Locale, removePhoneFormat } from "./core"
2
+ import { Locale, resources } from "./core"
3
3
  import { useMergeState } from "./merge"
4
4
  import { buildFlatState, buildState, handleEvent, localeOf } from "./state"
5
5
 
6
+ export function removePhoneFormat(phone: string): string {
7
+ if (phone) {
8
+ return phone.replace(resources.phone, "")
9
+ } else {
10
+ return phone
11
+ }
12
+ }
13
+
14
+ export function getModelName(form?: HTMLFormElement | null, name?: string): string {
15
+ if (form) {
16
+ const a = form.getAttribute("model-name")
17
+ if (a && a.length > 0) {
18
+ return a
19
+ }
20
+ const b = form.name
21
+ if (b) {
22
+ if (b.endsWith("Form")) {
23
+ return b.substring(0, b.length - 4)
24
+ }
25
+ return b
26
+ }
27
+ }
28
+ if (name && name.length > 0) {
29
+ return name
30
+ }
31
+ return ""
32
+ }
6
33
  const m = "model"
7
34
  const _getModelName = (f2?: HTMLFormElement | null): string => {
8
- return getModelName2(f2, m)
35
+ return getModelName(f2, m)
9
36
  }
10
37
  export const useUpdate = <T>(
11
38
  initialState: T,
package/src/useEdit.ts CHANGED
@@ -1,26 +1,14 @@
1
1
  import { useEffect, useState } from "react"
2
2
  import { Params, useNavigate, useParams } from "react-router"
3
- import {
4
- Attribute,
5
- Attributes,
6
- ErrorMessage,
7
- getModelName as getModelName2,
8
- hideLoading,
9
- initForm,
10
- LoadingService,
11
- Locale,
12
- resources,
13
- ResourceService,
14
- showLoading,
15
- UIService,
16
- } from "./core"
3
+ import { Attribute, Attributes, ErrorMessage, LoadingService, Locale, resources, ResourceService, UIService } from "./core"
17
4
  import { createModel as createModel2 } from "./edit"
18
5
  import { message, messageByHttpStatus } from "./error"
19
6
  import { focusFirstError, setReadOnly } from "./formutil"
7
+ import { hideLoading, initForm, showLoading } from "./input"
20
8
  import { DispatchWithCallback, useMergeState } from "./merge"
21
9
  import { clone, makeDiff } from "./reflect"
22
10
  import { localeOf } from "./state"
23
- import { useUpdate } from "./update"
11
+ import { getModelName as getModelName2, useUpdate } from "./update"
24
12
 
25
13
  export function buildKeys(attributes: Attributes): string[] {
26
14
  if (!attributes) {
package/src/useSearch.ts CHANGED
@@ -1,20 +1,7 @@
1
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"
2
+ import { LoadingService, Locale, pageSizes, resources, ResourceService, UIService } from "./core"
17
3
  import { error } from "./error"
4
+ import { hideLoading, initForm, showLoading } from "./input"
18
5
  import { DispatchWithCallback, useMergeState } from "./merge"
19
6
  import { clone } from "./reflect"
20
7
  import { buildFromUrl } from "./route"
@@ -23,6 +10,7 @@ import {
23
10
  buildMessage,
24
11
  Filter,
25
12
  getFields,
13
+ getPageTotal,
26
14
  handleSort,
27
15
  handleToggle,
28
16
  initFilter,
@@ -32,13 +20,19 @@ import {
32
20
  removeSortStatus,
33
21
  SearchResult,
34
22
  SearchService,
35
- showPaging,
36
23
  Sortable,
37
24
  } from "./search"
38
25
  import { enLocale } from "./state"
39
26
  import { useUpdate } from "./update"
40
27
 
41
- export interface Searchable extends Pagination, Sortable {
28
+ export function showPaging<T>(com: Pagination, list: T[], pageSize?: number, total?: number): void {
29
+ com.total = total
30
+ const pageTotal = getPageTotal(pageSize, total)
31
+ com.pages = pageTotal
32
+ com.showPaging = !total || com.pages <= 1 || (list && list.length >= total) ? false : true
33
+ }
34
+
35
+ interface Searchable extends Pagination, Sortable {
42
36
  nextPageToken?: string
43
37
  excluding?: string[] | number[]
44
38
  }
@@ -52,6 +46,30 @@ export interface SearchParameter {
52
46
  auto?: boolean
53
47
  }
54
48
 
49
+ export interface UIParameter {
50
+ ui?: UIService
51
+ }
52
+ export function removeFormError(u?: UIParameter, f?: HTMLFormElement): void {
53
+ if (f && u && u.ui) {
54
+ u.ui.removeFormError(f)
55
+ }
56
+ }
57
+ export function getValidateForm(
58
+ u?: UIParameter,
59
+ vf?: (form: HTMLFormElement, locale?: Locale, focusFirst?: boolean, scroll?: boolean) => boolean,
60
+ ): ((form: HTMLFormElement, locale?: Locale, focusFirst?: boolean, scroll?: boolean) => boolean) | undefined {
61
+ if (vf) {
62
+ return vf
63
+ }
64
+ return u && u.ui ? u.ui.validateForm : undefined
65
+ }
66
+ export function getRemoveError(u?: UIParameter, rmErr?: (el: HTMLInputElement) => void): ((el: HTMLInputElement) => void) | undefined {
67
+ if (rmErr) {
68
+ return rmErr
69
+ }
70
+ return u && u.ui ? u.ui.removeError : undefined
71
+ }
72
+
55
73
  export function getModel<S extends Filter>(state: any, modelName: string, searchable: Searchable, fields?: string[], excluding?: string[] | number[]): S {
56
74
  let obj2 = getModelFromState(state, modelName)
57
75
 
@@ -122,6 +140,7 @@ export function getFieldsFromForm(fields?: string[], initFields?: boolean, form?
122
140
  }
123
141
  return fields
124
142
  }
143
+
125
144
  export function append<T>(list?: T[], results?: T[]): T[] {
126
145
  if (list && results) {
127
146
  for (const obj of results) {
@@ -425,6 +444,10 @@ export const useSearchOneProps = <T, S extends Filter, ST extends SearchComponen
425
444
  export const useSearchOne = <T, S extends Filter, ST extends SearchComponentState<T, S>>(p: HookBaseSearchParameter<T, S, ST>) => {
426
445
  return useCoreSearch(p.refForm, p.initialState, p.service, p, p)
427
446
  }
447
+
448
+ export function getName(d: string, n?: string): string {
449
+ return n && n.length > 0 ? n : d
450
+ }
428
451
  export const useCoreSearch = <T, S extends Filter, ST>(
429
452
  refForm: any,
430
453
  initialState: ST,
package/src/util.ts CHANGED
@@ -77,7 +77,7 @@ function getStringCurrency(value: string, datatype: string, locale?: Locale, max
77
77
 
78
78
  const dotPosition = value.indexOf(".")
79
79
  // Format thousands
80
- let beforeDot = dotPosition >= 0 ? value.substr(0, dotPosition) : value
80
+ let beforeDot = dotPosition >= 0 ? value.substring(0, dotPosition) : value
81
81
  if (datatype === "string-currency" || isOnBlur) {
82
82
  beforeDot = beforeDot.replace(new RegExp("\\B(?=(\\d{" + groupDigits + "})+(?!\\d))", "g"), groupSeparator)
83
83
  }
@@ -85,9 +85,9 @@ function getStringCurrency(value: string, datatype: string, locale?: Locale, max
85
85
  // Cut after dot
86
86
  let afterDot
87
87
  if (dotPosition > 0) {
88
- afterDot = value.substr(dotPosition + 1)
88
+ afterDot = value.substring(dotPosition + 1)
89
89
  if (afterDot.length > decimalDigits) {
90
- afterDot = afterDot.substr(0, decimalDigits)
90
+ afterDot = afterDot.substring(0, decimalDigits)
91
91
  }
92
92
  }
93
93
  if (maxLength && beforeDot.length > maxLength - (decimalDigits + 1)) {