react-hook-core 0.4.19 → 0.4.21
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/route.js +2 -2
- package/lib/state.js +86 -0
- package/package.json +2 -2
- package/src/route.ts +2 -2
- package/src/state.ts +83 -0
package/lib/route.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict"
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true })
|
|
3
|
-
var
|
|
3
|
+
var query_string_1 = require("query-string")
|
|
4
4
|
var reflect_1 = require("./reflect")
|
|
5
5
|
function goBack(navigate, confirm, resource, o1, o2, keys, version) {
|
|
6
6
|
if (!reflect_1.hasDiff(o1, o2, keys, version)) {
|
|
@@ -23,7 +23,7 @@ function buildParameters(url, model) {
|
|
|
23
23
|
urlSearch = url.substring(i + 1)
|
|
24
24
|
}
|
|
25
25
|
try {
|
|
26
|
-
var parsed = convertToObject(
|
|
26
|
+
var parsed = convertToObject(query_string_1.default.parse(urlSearch), model)
|
|
27
27
|
return parsed
|
|
28
28
|
} catch (error) {
|
|
29
29
|
console.log(error)
|
package/lib/state.js
CHANGED
|
@@ -16,6 +16,92 @@ var __assign =
|
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true })
|
|
17
17
|
var reflect_1 = require("./reflect")
|
|
18
18
|
var util_1 = require("./util")
|
|
19
|
+
function getDecimalSeparator(ele) {
|
|
20
|
+
var separator = ele.getAttribute("data-decimal-separator")
|
|
21
|
+
if (!separator) {
|
|
22
|
+
var form = ele.form
|
|
23
|
+
if (form) {
|
|
24
|
+
separator = form.getAttribute("data-decimal-separator")
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
return separator === "," ? "," : "."
|
|
28
|
+
}
|
|
29
|
+
exports.getDecimalSeparator = getDecimalSeparator
|
|
30
|
+
var r1 = / |,|\$|€|£|¥|'|٬|،| /g
|
|
31
|
+
var r2 = / |\.|\$|€|£|¥|'|٬|،| /g
|
|
32
|
+
function updateState(e, o, setObj) {
|
|
33
|
+
var ctrl = e.target
|
|
34
|
+
var dataField = ctrl.getAttribute("data-field")
|
|
35
|
+
var field = dataField ? dataField : ctrl.name
|
|
36
|
+
if (ctrl.tagName === "SELECT") {
|
|
37
|
+
if (ctrl.tagName === "SELECT") {
|
|
38
|
+
if (ctrl.value === "" || !ctrl.value) {
|
|
39
|
+
ctrl.removeAttribute("data-value")
|
|
40
|
+
} else {
|
|
41
|
+
ctrl.setAttribute("data-value", "data-value")
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
reflect_1.setValue(o, field, ctrl.value)
|
|
45
|
+
} else {
|
|
46
|
+
var stype = ctrl.getAttribute("type")
|
|
47
|
+
var type = stype ? stype.toLowerCase() : "text"
|
|
48
|
+
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") {
|
|
61
|
+
var value = model[field]
|
|
62
|
+
if (ctrl.id && ctrl.name !== ctrl.id) {
|
|
63
|
+
if (!value || !Array.isArray(value)) {
|
|
64
|
+
value = []
|
|
65
|
+
}
|
|
66
|
+
value.includes(ctrl.value)
|
|
67
|
+
? (value = value.filter(function (v) {
|
|
68
|
+
return v !== ctrl.value
|
|
69
|
+
}))
|
|
70
|
+
: value.push(ctrl.value)
|
|
71
|
+
model[field] = value
|
|
72
|
+
} else {
|
|
73
|
+
var v = valueOfCheckbox(ctrl)
|
|
74
|
+
model[field] = v
|
|
75
|
+
}
|
|
76
|
+
} else if (type === "radio") {
|
|
77
|
+
if (field.indexOf(".") < 0 && field.indexOf("[") < 0) {
|
|
78
|
+
model[field] = ctrl.value
|
|
79
|
+
} else {
|
|
80
|
+
reflect_1.setValue(model, field, ctrl.value)
|
|
81
|
+
}
|
|
82
|
+
} 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
|
+
}
|
|
89
|
+
} 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
|
|
19
105
|
exports.enLocale = {
|
|
20
106
|
id: "en-US",
|
|
21
107
|
countryCode: "US",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-hook-core",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.21",
|
|
4
4
|
"description": "react",
|
|
5
5
|
"main": "./lib/index.js",
|
|
6
6
|
"types": "./src/index.ts",
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"devDependencies": {
|
|
12
12
|
"@types/react": "^17.0.41",
|
|
13
13
|
"@types/react-router-dom": "^5.3.3",
|
|
14
|
-
"query-string": "^
|
|
14
|
+
"query-string": "^9.2.2",
|
|
15
15
|
"react": "^17.0.2",
|
|
16
16
|
"react-router-dom": "^6.2.2",
|
|
17
17
|
"tslint": "^5.10.0",
|
package/src/route.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import queryString from "query-string"
|
|
2
2
|
import { NavigateFunction } from "react-router-dom"
|
|
3
3
|
import { StringMap } from "./core"
|
|
4
4
|
import { hasDiff } from "./reflect"
|
|
@@ -30,7 +30,7 @@ export function buildParameters<T>(url: string, model?: T): T {
|
|
|
30
30
|
urlSearch = url.substring(i + 1)
|
|
31
31
|
}
|
|
32
32
|
try {
|
|
33
|
-
const parsed: any = convertToObject<T>(
|
|
33
|
+
const parsed: any = convertToObject<T>(queryString.parse(urlSearch), model)
|
|
34
34
|
return parsed
|
|
35
35
|
} catch (error) {
|
|
36
36
|
console.log(error)
|
package/src/state.ts
CHANGED
|
@@ -1,7 +1,90 @@
|
|
|
1
|
+
import { ChangeEvent } from "react"
|
|
1
2
|
import { Locale } from "./core"
|
|
2
3
|
import { setValue } from "./reflect"
|
|
3
4
|
import { valueOf } from "./util"
|
|
4
5
|
|
|
6
|
+
export function getDecimalSeparator(ele: HTMLInputElement): string {
|
|
7
|
+
let separator = ele.getAttribute("data-decimal-separator")
|
|
8
|
+
if (!separator) {
|
|
9
|
+
const form = ele.form
|
|
10
|
+
if (form) {
|
|
11
|
+
separator = form.getAttribute("data-decimal-separator")
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
return separator === "," ? "," : "."
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
const r1 = / |,|\$|€|£|¥|'|٬|،| /g
|
|
18
|
+
const r2 = / |\.|\$|€|£|¥|'|٬|،| /g
|
|
19
|
+
export function updateState<T>(e: ChangeEvent<HTMLInputElement, HTMLInputElement>, o: T, setObj: (v: React.SetStateAction<T>) => void) {
|
|
20
|
+
const ctrl = e.target
|
|
21
|
+
const dataField = ctrl.getAttribute("data-field")
|
|
22
|
+
const field = dataField ? dataField : ctrl.name
|
|
23
|
+
if (ctrl.tagName === "SELECT") {
|
|
24
|
+
if (ctrl.tagName === "SELECT") {
|
|
25
|
+
if (ctrl.value === "" || !ctrl.value) {
|
|
26
|
+
ctrl.removeAttribute("data-value")
|
|
27
|
+
} else {
|
|
28
|
+
ctrl.setAttribute("data-value", "data-value")
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
setValue(o, field, ctrl.value)
|
|
32
|
+
} else {
|
|
33
|
+
let stype = ctrl.getAttribute("type")
|
|
34
|
+
const type: string = stype ? stype.toLowerCase() : "text"
|
|
35
|
+
let model: any = o
|
|
36
|
+
if (type === "text") {
|
|
37
|
+
const datatype = ctrl.getAttribute("data-type")
|
|
38
|
+
if (datatype === "number" || datatype === "integer") {
|
|
39
|
+
const decimalSeparator = getDecimalSeparator(ctrl)
|
|
40
|
+
const v0: string = ctrl.value
|
|
41
|
+
const v = decimalSeparator === "," ? v0.replace(r2, "") : v0.replace(r1, "")
|
|
42
|
+
const val = isNaN(v as any) ? undefined : parseFloat(v)
|
|
43
|
+
setValue(o, field, val)
|
|
44
|
+
} else {
|
|
45
|
+
setValue(o, field, ctrl.value)
|
|
46
|
+
}
|
|
47
|
+
} else if (type === "checkbox") {
|
|
48
|
+
let value = model[field]
|
|
49
|
+
if (ctrl.id && ctrl.name !== ctrl.id) {
|
|
50
|
+
if (!value || !Array.isArray(value)) {
|
|
51
|
+
value = []
|
|
52
|
+
}
|
|
53
|
+
value.includes(ctrl.value) ? (value = value.filter((v: string) => v !== ctrl.value)) : value.push(ctrl.value)
|
|
54
|
+
model[field] = value
|
|
55
|
+
} else {
|
|
56
|
+
const v = valueOfCheckbox(ctrl)
|
|
57
|
+
model[field] = v
|
|
58
|
+
}
|
|
59
|
+
} else if (type === "radio") {
|
|
60
|
+
if (field.indexOf(".") < 0 && field.indexOf("[") < 0) {
|
|
61
|
+
model[field] = ctrl.value
|
|
62
|
+
} else {
|
|
63
|
+
setValue(model, field, ctrl.value)
|
|
64
|
+
}
|
|
65
|
+
} else if (type === "date" || type === "datetime-local") {
|
|
66
|
+
try {
|
|
67
|
+
const selectedDate = new Date(ctrl.value)
|
|
68
|
+
setValue(model, field, ctrl.value && ctrl.value !== "" ? selectedDate.toISOString() : null)
|
|
69
|
+
} catch (error) {
|
|
70
|
+
console.error("Error occurred while formatting date:", error)
|
|
71
|
+
}
|
|
72
|
+
} else if (type === "time") {
|
|
73
|
+
const objSet: any = {}
|
|
74
|
+
try {
|
|
75
|
+
const selectedDate = new Date(ctrl.value)
|
|
76
|
+
setValue(model, field, selectedDate.getTime())
|
|
77
|
+
} catch (error) {
|
|
78
|
+
console.error("Error occurred while formatting time:", error)
|
|
79
|
+
}
|
|
80
|
+
return objSet
|
|
81
|
+
} else {
|
|
82
|
+
setValue(o, field, ctrl.value)
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
setObj({ ...o })
|
|
86
|
+
}
|
|
87
|
+
|
|
5
88
|
export const enLocale = {
|
|
6
89
|
id: "en-US",
|
|
7
90
|
countryCode: "US",
|