react-hook-core 0.4.20 → 0.4.22

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
@@ -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.20",
3
+ "version": "0.4.22",
4
4
  "description": "react",
5
5
  "main": "./lib/index.js",
6
6
  "types": "./src/index.ts",
package/src/state.ts CHANGED
@@ -1,7 +1,94 @@
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>(
20
+ e: ChangeEvent<HTMLInputElement, HTMLInputElement> | ChangeEvent<HTMLTextAreaElement, HTMLTextAreaElement>,
21
+ o: T,
22
+ setObj: (v: React.SetStateAction<T>) => void,
23
+ ) {
24
+ const ctrl = e.target
25
+ const dataField = ctrl.getAttribute("data-field")
26
+ const field = dataField ? dataField : ctrl.name
27
+ if (ctrl.tagName === "SELECT") {
28
+ if (ctrl.tagName === "SELECT") {
29
+ if (ctrl.value === "" || !ctrl.value) {
30
+ ctrl.removeAttribute("data-value")
31
+ } else {
32
+ ctrl.setAttribute("data-value", "data-value")
33
+ }
34
+ }
35
+ setValue(o, field, ctrl.value)
36
+ } else {
37
+ let stype = ctrl.getAttribute("type")
38
+ const type: string = stype ? stype.toLowerCase() : "text"
39
+ let model: any = o
40
+ if (type === "text") {
41
+ const datatype = ctrl.getAttribute("data-type")
42
+ if (datatype === "number" || datatype === "integer") {
43
+ const decimalSeparator = getDecimalSeparator(ctrl as HTMLInputElement)
44
+ const v0: string = ctrl.value
45
+ const v = decimalSeparator === "," ? v0.replace(r2, "") : v0.replace(r1, "")
46
+ const val = isNaN(v as any) ? undefined : parseFloat(v)
47
+ setValue(o, field, val)
48
+ } else {
49
+ setValue(o, field, ctrl.value)
50
+ }
51
+ } else if (type === "checkbox") {
52
+ let value = model[field]
53
+ if (ctrl.id && ctrl.name !== ctrl.id) {
54
+ if (!value || !Array.isArray(value)) {
55
+ value = []
56
+ }
57
+ value.includes(ctrl.value) ? (value = value.filter((v: string) => v !== ctrl.value)) : value.push(ctrl.value)
58
+ model[field] = value
59
+ } else {
60
+ const v = valueOfCheckbox(ctrl as HTMLInputElement)
61
+ model[field] = v
62
+ }
63
+ } else if (type === "radio") {
64
+ if (field.indexOf(".") < 0 && field.indexOf("[") < 0) {
65
+ model[field] = ctrl.value
66
+ } else {
67
+ setValue(model, field, ctrl.value)
68
+ }
69
+ } else if (type === "date" || type === "datetime-local") {
70
+ try {
71
+ const selectedDate = new Date(ctrl.value)
72
+ setValue(model, field, ctrl.value && ctrl.value !== "" ? selectedDate.toISOString() : null)
73
+ } catch (error) {
74
+ console.error("Error occurred while formatting date:", error)
75
+ }
76
+ } else if (type === "time") {
77
+ const objSet: any = {}
78
+ try {
79
+ const selectedDate = new Date(ctrl.value)
80
+ setValue(model, field, selectedDate.getTime())
81
+ } catch (error) {
82
+ console.error("Error occurred while formatting time:", error)
83
+ }
84
+ return objSet
85
+ } else {
86
+ setValue(o, field, ctrl.value)
87
+ }
88
+ }
89
+ setObj({ ...o })
90
+ }
91
+
5
92
  export const enLocale = {
6
93
  id: "en-US",
7
94
  countryCode: "US",