|
1 | 1 | import { observe } from "mobx"; |
2 | 2 | import { observer } from "mobx-react"; |
3 | 3 | import { getType, IAnyType, isLiteralType, isOptionalType, isPrimitiveType, isUnionType, types } from "mobx-state-tree"; |
4 | | -import { number } from "mobx-state-tree/dist/internal"; |
5 | 4 | import { ChangeEvent, FC, HTMLInputTypeAttribute, InputHTMLAttributes, KeyboardEvent, useCallback, useEffect, useMemo, useState } from "react"; |
6 | 5 | import { IconPropertyAngle } from "../../../assets/icons"; |
7 | 6 | import { Block, Elem, useBEM } from "../../../utils/bem"; |
@@ -185,16 +184,23 @@ const RegionInput: FC<RegionInputProps> = ({ |
185 | 184 | }, [onChangeValue, type]); |
186 | 185 |
|
187 | 186 | const onChangeHandler = useCallback((e: ChangeEvent<HTMLInputElement>) => { |
188 | | - let value = e.target.value; |
| 187 | + let value: number | string = e.target.value; |
189 | 188 | let safeValue = true; |
190 | 189 |
|
191 | | - if (type === "number" && !value.match(/^([0-9,.]*)$/ig)) { |
192 | | - safeValue = false; |
193 | | - } |
194 | 190 |
|
195 | | - if (type === "number" && value.match(/(,|\.)$/)){ |
196 | | - value = value.replace(/,/, '.'); |
197 | | - safeValue = false; |
| 191 | + if (type === "number") { |
| 192 | + if (!value.match(/^([0-9,.]*)$/ig)) { |
| 193 | + safeValue = false; |
| 194 | + } |
| 195 | + |
| 196 | + if (value.match(/(,|\.)$/)){ |
| 197 | + value = value.replace(/,/, '.'); |
| 198 | + safeValue = false; |
| 199 | + } |
| 200 | + |
| 201 | + if (safeValue){ |
| 202 | + value = parseFloat(value); |
| 203 | + } |
198 | 204 | } |
199 | 205 |
|
200 | 206 | updateValue(value, safeValue); |
|
0 commit comments