react-hook-core 0.4.23 → 0.5.1

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/state.js CHANGED
@@ -14,8 +14,8 @@ var __assign =
14
14
  return __assign.apply(this, arguments)
15
15
  }
16
16
  Object.defineProperty(exports, "__esModule", { value: true })
17
+ var core_1 = require("./core")
17
18
  var reflect_1 = require("./reflect")
18
- var util_1 = require("./util")
19
19
  function getDecimalSeparator(ele) {
20
20
  var separator = ele.getAttribute("data-decimal-separator")
21
21
  if (!separator) {
@@ -29,45 +29,56 @@ function getDecimalSeparator(ele) {
29
29
  exports.getDecimalSeparator = getDecimalSeparator
30
30
  var r1 = / |,|\$|€|£|¥|'|٬|،| /g
31
31
  var r2 = / |\.|\$|€|£|¥|'|٬|،| /g
32
- function updateState(e, o, setObj) {
32
+ function updateNumber(e, o, setObj, decimalSeparator, callback, formatStr) {
33
33
  var ctrl = e.target
34
+ var v0 = formatStr ? formatStr(ctrl.value) : ctrl.value
35
+ var dataField = ctrl.getAttribute("data-field")
36
+ var field = dataField ? dataField : ctrl.name
37
+ var v = decimalSeparator === "," ? v0.replace(r2, "") : v0.replace(r1, "")
38
+ if (v.indexOf(",") >= 0) {
39
+ v = v.replace(",", ".")
40
+ }
41
+ var val = isNaN(v) ? undefined : parseInt(v)
42
+ reflect_1.setValue(o, field, val)
43
+ setObj(__assign({}, o))
44
+ if (callback) {
45
+ callback()
46
+ }
47
+ }
48
+ exports.updateNumber = updateNumber
49
+ function formatAndUpdateState(e, o, setObj, formatStr, callback) {
50
+ updateState(e, o, setObj, callback, formatStr)
51
+ }
52
+ exports.formatAndUpdateState = formatAndUpdateState
53
+ function updateState(e, o, setObj, callback, formatStr) {
54
+ var ctrl = e.target
55
+ var v0 = formatStr ? formatStr(ctrl.value) : ctrl.value
34
56
  var dataField = ctrl.getAttribute("data-field")
35
57
  var field = dataField ? dataField : ctrl.name
36
58
  if (ctrl.tagName === "SELECT") {
37
59
  if (ctrl.tagName === "SELECT") {
38
- if (ctrl.value === "" || !ctrl.value) {
60
+ if (v0 === "" || !v0) {
39
61
  ctrl.removeAttribute("data-value")
40
62
  } else {
41
- ctrl.setAttribute("data-value", "data-value")
63
+ ctrl.setAttribute("data-value", v0)
42
64
  }
43
65
  }
44
- reflect_1.setValue(o, field, ctrl.value)
66
+ reflect_1.setValue(o, field, v0)
45
67
  } else {
46
68
  var stype = ctrl.getAttribute("type")
47
69
  var type = stype ? stype.toLowerCase() : "text"
48
70
  var model = o
49
- if (type === "text") {
50
- var datatype = ctrl.getAttribute("data-type")
51
- if (datatype === "number" || datatype === "integer") {
52
- var decimalSeparator = getDecimalSeparator(ctrl)
53
- var v0 = ctrl.value
54
- var v = decimalSeparator === "," ? v0.replace(r2, "") : v0.replace(r1, "")
55
- var val = isNaN(v) ? undefined : parseFloat(v)
56
- reflect_1.setValue(o, field, val)
57
- } else {
58
- reflect_1.setValue(o, field, ctrl.value)
59
- }
60
- } else if (type === "checkbox") {
71
+ if (type === "checkbox") {
61
72
  var value = model[field]
62
73
  if (ctrl.id && ctrl.name !== ctrl.id) {
63
74
  if (!value || !Array.isArray(value)) {
64
75
  value = []
65
76
  }
66
- value.includes(ctrl.value)
77
+ value.includes(v0)
67
78
  ? (value = value.filter(function (v) {
68
- return v !== ctrl.value
79
+ return v !== v0
69
80
  }))
70
- : value.push(ctrl.value)
81
+ : value.push(v0)
71
82
  model[field] = value
72
83
  } else {
73
84
  var v = valueOfCheckbox(ctrl)
@@ -75,185 +86,48 @@ function updateState(e, o, setObj) {
75
86
  }
76
87
  } else if (type === "radio") {
77
88
  if (field.indexOf(".") < 0 && field.indexOf("[") < 0) {
78
- model[field] = ctrl.value
89
+ model[field] = v0
79
90
  } else {
80
- reflect_1.setValue(model, field, ctrl.value)
91
+ reflect_1.setValue(model, field, v0)
81
92
  }
82
93
  } else if (type === "date" || type === "datetime-local") {
83
- try {
84
- var selectedDate = new Date(ctrl.value)
85
- reflect_1.setValue(model, field, ctrl.value && ctrl.value !== "" ? selectedDate.toISOString() : null)
86
- } catch (error) {
87
- console.error("Error occurred while formatting date:", error)
88
- }
94
+ var date = new Date(v0)
95
+ var val = !isNaN(date.getTime()) ? date.toISOString() : null
96
+ reflect_1.setValue(model, field, val)
89
97
  } else if (type === "time") {
90
- var objSet = {}
91
- try {
92
- var selectedDate = new Date(ctrl.value)
93
- reflect_1.setValue(model, field, selectedDate.getTime())
94
- } catch (error) {
95
- console.error("Error occurred while formatting time:", error)
96
- }
97
- return objSet
98
- } else {
99
- reflect_1.setValue(o, field, ctrl.value)
100
- }
101
- }
102
- setObj(__assign({}, o))
103
- }
104
- exports.updateState = updateState
105
- exports.enLocale = {
106
- id: "en-US",
107
- countryCode: "US",
108
- dateFormat: "M/d/yyyy",
109
- firstDayOfWeek: 1,
110
- decimalSeparator: ".",
111
- groupSeparator: ",",
112
- decimalDigits: 2,
113
- currencyCode: "USD",
114
- currencySymbol: "$",
115
- currencyPattern: 0,
116
- }
117
- function localeOf(lc, glc) {
118
- var l = lc
119
- if (!l) {
120
- if (glc) {
121
- if (typeof glc === "function") {
122
- l = glc()
98
+ var date = new Date(v0)
99
+ if (!isNaN(date.getTime())) {
100
+ reflect_1.setValue(model, field, date.getTime())
123
101
  } else {
124
- l = glc
102
+ reflect_1.setValue(model, field, null)
125
103
  }
126
- }
127
- if (!l) {
128
- l = exports.enLocale
129
- }
130
- }
131
- return l
132
- }
133
- exports.localeOf = localeOf
134
- function handleEvent(e, removeErr) {
135
- var ctrl = e.currentTarget
136
- var type = ctrl.getAttribute("type")
137
- var isPreventDefault = type && (["checkbox", "radio"].indexOf(type.toLowerCase()) >= 0 ? false : true)
138
- if (isPreventDefault) {
139
- e.preventDefault()
140
- }
141
- if (removeErr && ctrl.nodeName === "SELECT" && ctrl.value && ctrl.classList.contains("invalid")) {
142
- removeErr(ctrl)
143
- }
144
- }
145
- exports.handleEvent = handleEvent
146
- function handleProps(e, props, ctrl, modelName, tloc, prepareData) {
147
- var _a, _b, _c, _d
148
- if (props.setGlobalState) {
149
- var res = util_1.valueOf(ctrl, tloc, e.type)
150
- if (res.mustChange) {
151
- var dataField = ctrl.getAttribute("data-field")
152
- var field = dataField ? dataField : ctrl.name
153
- var propsDataForm = props[modelName]
154
- var form = ctrl.form
155
- if (form) {
156
- var formName = form.name
157
- if (field.indexOf(".") < 0 && field.indexOf("[") < 0) {
158
- var data =
159
- props.shouldBeCustomized && prepareData ? prepareData(((_a = {}), (_a[ctrl.name] = res.value), _a)) : ((_b = {}), (_b[ctrl.name] = res.value), _b)
160
- props.setGlobalState(((_c = {}), (_c[formName] = __assign(__assign({}, propsDataForm), data)), _c))
161
- } else {
162
- reflect_1.setValue(propsDataForm, field, ctrl.value)
163
- props.setGlobalState(((_d = {}), (_d[formName] = __assign({}, propsDataForm)), _d))
164
- }
165
- }
166
- }
167
- }
168
- }
169
- exports.handleProps = handleProps
170
- function buildState(e, state, ctrl, modelName, tloc) {
171
- var form = ctrl.form
172
- if (form) {
173
- if (modelName && modelName !== "") {
174
- var type = ctrl.getAttribute("type")
175
- var ex = state[modelName]
176
- var dataField = ctrl.getAttribute("data-field")
177
- var field = dataField ? dataField : ctrl.name
178
- var model = Object.assign({}, ex)
179
- if (type && type.toLowerCase() === "checkbox") {
180
- var value = model[field]
181
- if (ctrl.id && ctrl.name !== ctrl.id) {
182
- if (!value || !Array.isArray(value)) {
183
- value = []
184
- }
185
- value.includes(ctrl.value)
186
- ? (value = value.filter(function (v) {
187
- return v !== ctrl.value
188
- }))
189
- : value.push(ctrl.value)
190
- model[field] = value
191
- } else {
192
- var v = valueOfCheckbox(ctrl)
193
- model[field] = v
194
- }
195
- var objSet = {}
196
- objSet[modelName] = model
197
- return objSet
198
- } else if (type && type.toLowerCase() === "radio") {
199
- if (field.indexOf(".") < 0 && field.indexOf("[") < 0) {
200
- model[field] = ctrl.value
201
- } else {
202
- reflect_1.setValue(model, field, ctrl.value)
203
- }
204
- var objSet = {}
205
- objSet[modelName] = model
206
- return objSet
207
- } else if (type && (type.toLowerCase() === "date" || type.toLowerCase() === "datetime-local")) {
208
- var objSet = {}
209
- try {
210
- var selectedDate = new Date(ctrl.value)
211
- reflect_1.setValue(model, field, ctrl.value && ctrl.value !== "" ? selectedDate.toISOString() : null)
212
- objSet[modelName] = model
213
- return objSet
214
- } catch (error) {
215
- console.error("Error occurred while formatting date:", error)
216
- }
217
- return objSet
218
- } else if (type && type.toLowerCase() === "time") {
219
- var objSet = {}
220
- try {
221
- var selectedDate = new Date(ctrl.value)
222
- reflect_1.setValue(model, field, selectedDate.getTime())
223
- objSet[modelName] = model
224
- return objSet
225
- } catch (error) {
226
- console.error("Error occurred while formatting time:", error)
104
+ } else {
105
+ var datatype = ctrl.getAttribute("data-type")
106
+ if (datatype === "phone") {
107
+ var val = core_1.removePhoneFormat(v0)
108
+ reflect_1.setValue(o, field, val)
109
+ } else if (datatype === "fax") {
110
+ var val = core_1.removeFaxFormat(v0)
111
+ reflect_1.setValue(o, field, val)
112
+ } else if (datatype === "number" || datatype === "int") {
113
+ var decimalSeparator = getDecimalSeparator(ctrl)
114
+ var v = decimalSeparator === "," ? v0.replace(r2, "") : v0.replace(r1, "")
115
+ if (v.indexOf(",") >= 0) {
116
+ v = v.replace(",", ".")
227
117
  }
228
- return objSet
118
+ var val = isNaN(v) ? undefined : parseFloat(v)
119
+ reflect_1.setValue(o, field, val)
229
120
  } else {
230
- if (ctrl.tagName === "SELECT") {
231
- if (ctrl.value === "" || !ctrl.value) {
232
- ctrl.removeAttribute("data-value")
233
- } else {
234
- ctrl.setAttribute("data-value", "data-value")
235
- }
236
- }
237
- var data = util_1.valueOf(ctrl, tloc, e.type)
238
- if (data.mustChange) {
239
- if (field.indexOf(".") < 0 && field.indexOf("[") < 0) {
240
- model[field] = data.value
241
- } else {
242
- reflect_1.setValue(model, field, data.value)
243
- }
244
- var objSet = {}
245
- objSet[modelName] = model
246
- return objSet
247
- }
121
+ reflect_1.setValue(o, field, v0)
248
122
  }
249
- } else {
250
- return buildFlatState(e, state, tloc)
251
123
  }
252
- } else {
253
- buildFlatState(e, state, tloc)
124
+ }
125
+ setObj(__assign({}, o))
126
+ if (callback) {
127
+ callback()
254
128
  }
255
129
  }
256
- exports.buildState = buildState
130
+ exports.updateState = updateState
257
131
  function valueOfCheckbox(ctrl) {
258
132
  var ctrlOnValue = ctrl.getAttribute("data-on-value")
259
133
  var ctrlOffValue = ctrl.getAttribute("data-off-value")
@@ -266,35 +140,3 @@ function valueOfCheckbox(ctrl) {
266
140
  }
267
141
  }
268
142
  exports.valueOfCheckbox = valueOfCheckbox
269
- function buildFlatState(e, state, l) {
270
- var _a
271
- var ctrl = e.currentTarget
272
- var stateName = ctrl.name
273
- var objSet = {}
274
- var type = ctrl.getAttribute("type")
275
- if (type && type.toLowerCase() === "checkbox") {
276
- if (ctrl.id && stateName === ctrl.id) {
277
- var v = valueOfCheckbox(ctrl)
278
- objSet[stateName] = v
279
- return objSet
280
- } else {
281
- var value = state[stateName]
282
- value.includes(ctrl.value)
283
- ? (value = value.filter(function (v) {
284
- return v !== ctrl.value
285
- }))
286
- : value.push(ctrl.value)
287
- var objSet2 = ((_a = {}), (_a[ctrl.name] = value), _a)
288
- return objSet2
289
- }
290
- } else {
291
- var data = util_1.valueOf(ctrl, l, e.type)
292
- if (data.mustChange) {
293
- objSet[stateName] = data.value
294
- return objSet
295
- } else {
296
- return undefined
297
- }
298
- }
299
- }
300
- exports.buildFlatState = buildFlatState
package/lib/util.js CHANGED
@@ -1,6 +1,17 @@
1
1
  "use strict"
2
2
  Object.defineProperty(exports, "__esModule", { value: true })
3
- var state_1 = require("./state")
3
+ exports.enLocale = {
4
+ id: "en-US",
5
+ countryCode: "US",
6
+ dateFormat: "M/d/yyyy",
7
+ firstDayOfWeek: 1,
8
+ decimalSeparator: ".",
9
+ groupSeparator: ",",
10
+ decimalDigits: 2,
11
+ currencyCode: "USD",
12
+ currencySymbol: "$",
13
+ currencyPattern: 0,
14
+ }
4
15
  var r1 = / |,|\$|€|£|¥|'|٬|،| /g
5
16
  var r2 = / |\.|\$|€|£|¥|'|٬|،| /g
6
17
  function valueOf(ctrl, locale, eventType) {
@@ -57,7 +68,7 @@ function getStringCurrency(value, datatype, locale, maxLength, isOnBlur) {
57
68
  return { mustChange: true, value: value.substring(1) }
58
69
  }
59
70
  if (!locale) {
60
- locale = state_1.enLocale
71
+ locale = exports.enLocale
61
72
  }
62
73
  var decimalDigits = locale ? locale.decimalDigits : 2
63
74
  var groupDigits = 3
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-hook-core",
3
- "version": "0.4.23",
3
+ "version": "0.5.1",
4
4
  "description": "react",
5
5
  "main": "./lib/index.js",
6
6
  "types": "./src/index.ts",
package/src/com.ts CHANGED
@@ -23,7 +23,7 @@ export interface Props {
23
23
  maxLength?: number
24
24
  value?: string
25
25
  placeholder?: string
26
- pageSizeChanged?: (event: any) => void
26
+ pageSizeChanged?: (e: React.ChangeEvent<HTMLSelectElement>) => void
27
27
  search?: React.MouseEventHandler<HTMLElement>
28
28
  toggle?: React.MouseEventHandler<HTMLElement>
29
29
  clear?: React.MouseEventHandler<HTMLButtonElement>
package/src/common.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { LoadingService, StringMap } from "./core"
1
+ import { StringMap } from "./core"
2
2
 
3
3
  export function messageByHttpStatus(status: number, resource: StringMap): string {
4
4
  const k = "error_" + status
@@ -26,63 +26,3 @@ export function error(err: any, resource: StringMap, ae: (msg: string, callback?
26
26
  ae(msg, undefined, title)
27
27
  }
28
28
  }
29
-
30
- export function showLoading(loading?: LoadingService | ((firstTime?: boolean) => void)): void {
31
- if (loading) {
32
- if (typeof loading === "function") {
33
- loading()
34
- } else {
35
- loading.showLoading()
36
- }
37
- }
38
- }
39
- export function hideLoading(loading?: LoadingService | (() => void)): void {
40
- if (loading) {
41
- if (typeof loading === "function") {
42
- loading()
43
- } else {
44
- loading.hideLoading()
45
- }
46
- }
47
- }
48
-
49
- export function initForm(form?: HTMLFormElement, initMat?: (f: HTMLFormElement) => void): HTMLFormElement | undefined {
50
- if (form) {
51
- setTimeout(() => {
52
- if (initMat) {
53
- initMat(form)
54
- }
55
- focusFirstElement(form)
56
- }, 100)
57
- }
58
- return form
59
- }
60
- export function focusFirstElement(form: HTMLFormElement): void {
61
- let i = 0
62
- const len = form.length
63
- for (i = 0; i < len; i++) {
64
- const ctrl = form[i] as HTMLInputElement
65
- if (!(ctrl.readOnly || ctrl.disabled)) {
66
- let nodeName = ctrl.nodeName
67
- const type = ctrl.getAttribute("type")
68
- if (type) {
69
- const t = type.toUpperCase()
70
- if (t === "BUTTON" || t === "SUBMIT") {
71
- ctrl.focus()
72
- }
73
- if (nodeName === "INPUT") {
74
- nodeName = t
75
- }
76
- }
77
- if (nodeName !== "BUTTON" && nodeName !== "RESET" && nodeName !== "SUBMIT" && nodeName !== "CHECKBOX" && nodeName !== "RADIO") {
78
- ctrl.focus()
79
- /*
80
- try {
81
- ctrl.setSelectionRange(0, ctrl.value.length)
82
- } catch (err) {}
83
- */
84
- return
85
- }
86
- }
87
- }
88
- }
package/src/core.ts CHANGED
@@ -6,7 +6,6 @@ export const pageSizes = [12, 24, 60, 100, 120, 180, 300, 600]
6
6
  export const sizes = pageSizes
7
7
  // tslint:disable-next-line:class-name
8
8
  export class resources {
9
- static phone = / |\-|\.|\(|\)/g
10
9
  static _cache: any = {}
11
10
  static cache = true
12
11
  static fields = "fields"
@@ -15,6 +14,20 @@ export class resources {
15
14
  static defaultLimit = 24
16
15
  static limits = pageSizes
17
16
  static pageMaxSize = 7
17
+ static phone = / |\-|\.|\(|\)/g
18
+ static fax = / |\-|\.|\(|\)/g
19
+ static removePhoneFormat(phone?: string | null): string {
20
+ return phone ? phone.replace(resources.phone, "") : ""
21
+ }
22
+ static removeFaxFormat(fax?: string | null): string {
23
+ return fax ? fax.replace(resources.fax, "") : ""
24
+ }
25
+ }
26
+ export function removePhoneFormat(phone?: string | null): string {
27
+ return resources.removePhoneFormat(phone)
28
+ }
29
+ export function removeFaxFormat(fax?: string | null): string {
30
+ return resources.removeFaxFormat(fax)
18
31
  }
19
32
 
20
33
  export interface StringMap {
@@ -39,15 +52,6 @@ export interface ErrorMessage {
39
52
  param?: string | number | Date
40
53
  message?: string
41
54
  }
42
- export interface UIService {
43
- validateForm(form?: HTMLFormElement, locale?: Locale, focusFirst?: boolean, scroll?: boolean): boolean
44
- removeFormError(form: HTMLFormElement): void
45
- removeError(el: HTMLInputElement): void
46
- showFormError(form?: HTMLFormElement, errors?: ErrorMessage[], focusFirst?: boolean): ErrorMessage[]
47
- buildErrorMessage(errors: ErrorMessage[]): string
48
-
49
- registerEvents?(form: HTMLFormElement): void
50
- }
51
55
 
52
56
  export type Type =
53
57
  | "ObjectId"
package/src/edit.ts CHANGED
@@ -1,6 +1,42 @@
1
1
  import { NavigateFunction } from "react-router-dom"
2
2
  import { Attributes, ErrorMessage, StringMap } from "./core"
3
3
 
4
+ export function isSuccessful<T>(x: number | T | ErrorMessage[]): boolean {
5
+ if (Array.isArray(x)) {
6
+ return false
7
+ } else if (typeof x === "object") {
8
+ return true
9
+ } else if (typeof x === "number" && x > 0) {
10
+ return true
11
+ }
12
+ return false
13
+ }
14
+
15
+ type Result<T> = number | T | ErrorMessage[]
16
+ export function afterSaved<T>(
17
+ res: Result<T>,
18
+ form: HTMLFormElement | undefined | null,
19
+ resource: StringMap,
20
+ showFormError: (form?: HTMLFormElement | null, errors?: ErrorMessage[]) => ErrorMessage[],
21
+ alertSuccess: (msg: string, callback?: () => void) => void,
22
+ alertError: (msg: string) => void,
23
+ navigate?: NavigateFunction,
24
+ ) {
25
+ if (Array.isArray(res)) {
26
+ showFormError(form, res)
27
+ } else if (isSuccessful(res)) {
28
+ alertSuccess(resource.msg_save_success, () => {
29
+ if (navigate) {
30
+ navigate(-1)
31
+ }
32
+ })
33
+ } else if (res === 0) {
34
+ alertError(resource.error_not_found)
35
+ } else {
36
+ alertError(resource.error_conflict)
37
+ }
38
+ }
39
+
4
40
  export function createModel<T>(attributes?: Attributes): T {
5
41
  const obj: any = {}
6
42
  if (!attributes) {
@@ -48,39 +84,3 @@ export function createModel<T>(attributes?: Attributes): T {
48
84
  }
49
85
  return obj
50
86
  }
51
-
52
- export function isSuccessful<T>(x: number | T | ErrorMessage[]): boolean {
53
- if (Array.isArray(x)) {
54
- return false
55
- } else if (typeof x === "object") {
56
- return true
57
- } else if (typeof x === "number" && x > 0) {
58
- return true
59
- }
60
- return false
61
- }
62
-
63
- type Result<T> = number | T | ErrorMessage[]
64
- export function afterSaved<T>(
65
- res: Result<T>,
66
- form: HTMLFormElement | undefined | null,
67
- resource: StringMap,
68
- showFormError: (form?: HTMLFormElement | null, errors?: ErrorMessage[]) => ErrorMessage[],
69
- alertSuccess: (msg: string, callback?: () => void) => void,
70
- alertError: (msg: string) => void,
71
- navigate?: NavigateFunction,
72
- ) {
73
- if (Array.isArray(res)) {
74
- showFormError(form, res)
75
- } else if (isSuccessful(res)) {
76
- alertSuccess(resource.msg_save_success, () => {
77
- if (navigate) {
78
- navigate(-1)
79
- }
80
- })
81
- } else if (res === 0) {
82
- alertError(resource.error_not_found)
83
- } else {
84
- alertError(resource.error_conflict)
85
- }
86
- }
package/src/index.ts CHANGED
@@ -4,16 +4,16 @@ export * from "./com"
4
4
  export * from "./core"
5
5
  export * from "./diff"
6
6
  export * from "./edit"
7
- export * from "./formutil"
8
7
  export * from "./reflect"
9
8
  export * from "./route"
10
9
  export * from "./search"
11
10
  export * from "./state"
12
- export * from "./update"
13
- export * from "./useEdit"
14
11
  export * from "./useMessage"
15
- export * from "./useSearch"
16
12
  export * from "./util"
13
+
14
+ export type ButtonMouseEvent = React.MouseEvent<HTMLButtonElement, MouseEvent>
15
+ export type SelectChangeEvent = ChangeEvent<HTMLSelectElement>
16
+ export type InputChangeEvent = ChangeEvent<HTMLInputElement>
17
17
  /*
18
18
  type CallBackType<T> = (updatedValue: T) => void;
19
19
  type SetStateType<T> = T | ((prev: T) => T);
@@ -94,7 +94,7 @@ interface InputProps {
94
94
  defaultValue?: string
95
95
  onChangeNumber?: (value: number) => void
96
96
  onChange?: ChangeEventHandler<HTMLInputElement>
97
- currencyOnBlur?: (event: Event | any, locale: Locale, currencyCode?: string, includingCurrencySymbol?: boolean) => void
97
+ currencyOnBlur?: (e: Event | any, locale: Locale, currencyCode?: string, includingCurrencySymbol?: boolean) => void
98
98
  currencyCode?: string
99
99
  symbol?: boolean
100
100
  readOnly?: boolean
package/src/route.ts CHANGED
@@ -1,9 +1,24 @@
1
1
  import queryString from "query-string"
2
+ import * as React from "react"
2
3
  import { NavigateFunction } from "react-router-dom"
3
4
  import { StringMap } from "./core"
4
5
  import { hasDiff } from "./reflect"
5
6
  import { Filter } from "./search"
6
7
 
8
+ export function onBack<T>(
9
+ e: React.MouseEvent<HTMLElement, MouseEvent>,
10
+ navigate: NavigateFunction,
11
+ confirm: (msg: string, yesCallback?: () => void) => void,
12
+ resource: StringMap,
13
+ o1: T,
14
+ o2: T,
15
+ keys?: string[],
16
+ version?: string,
17
+ ) {
18
+ e.preventDefault()
19
+ goBack(navigate, confirm, resource, o1, o2, keys, version)
20
+ }
21
+
7
22
  export function goBack<T>(
8
23
  navigate: NavigateFunction,
9
24
  confirm: (msg: string, yesCallback?: () => void) => void,