-
Notifications
You must be signed in to change notification settings - Fork 128
Expand file tree
/
Copy pathBlikCodePaymentInput.res
More file actions
70 lines (63 loc) · 1.69 KB
/
Copy pathBlikCodePaymentInput.res
File metadata and controls
70 lines (63 loc) · 1.69 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
open RecoilAtoms
open Utils
@react.component
let make = () => {
let (blikCode, setblikCode) = Recoil.useRecoilState(userBlikCode)
let blikCodeRef = React.useRef(Nullable.null)
let formatBSB = bsb => {
let formatted = bsb->String.replaceRegExp(%re("/\D+/g"), "")
let firstPart = formatted->CardValidations.slice(0, 3)
let secondPart = formatted->CardValidations.slice(3, 6)
if formatted->String.length <= 3 {
firstPart
} else if formatted->String.length > 3 && formatted->String.length <= 6 {
`${firstPart}-${secondPart}`
} else {
formatted
}
}
let changeblikCode = ev => {
let val: string = ReactEvent.Form.target(ev)["value"]
setblikCode(prev => {
...prev,
value: val->formatBSB,
})
}
React.useEffect(() => {
setblikCode(prev => {
...prev,
errorString: switch prev.isValid {
| Some(val) => val ? "" : "Invalid blikCode"
| None => ""
},
})
None
}, [blikCode.isValid])
let submitCallback = React.useCallback((ev: Window.event) => {
let json = ev.data->safeParse
let confirm = json->getDictFromJson->ConfirmType.itemToObjMapper
if confirm.doSubmit {
if blikCode.value == "" {
setblikCode(prev => {
...prev,
errorString: "blikCode cannot be empty",
})
}
}
}, [blikCode])
useSubmitPaymentData(submitCallback)
<RenderIf condition={true}>
<PaymentField
fieldName="Blik code"
setValue={setblikCode}
value=blikCode
onChange=changeblikCode
paymentType=Payment
type_="blikCode"
name="blikCode"
inputRef=blikCodeRef
placeholder="000 000"
maxLength=7
/>
</RenderIf>
}