@draftbit/core 43.4.6-f4bf57.2 → 43.4.8-cae1e2.0
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/commonjs/components/Accordion/AccordionItem.js +21 -5
- package/lib/commonjs/components/Accordion/AccordionItem.js.map +1 -1
- package/lib/commonjs/components/Accordion/index.js.map +1 -1
- package/lib/commonjs/components/FAB.js +5 -19
- package/lib/commonjs/components/FAB.js.map +1 -1
- package/lib/commonjs/components/NumberInput.js +40 -34
- package/lib/commonjs/components/NumberInput.js.map +1 -1
- package/lib/commonjs/components/Portal/PortalManager.js.map +1 -1
- package/lib/commonjs/mappings/ActionSheetCancel.js.map +1 -1
- package/lib/commonjs/mappings/IconButton.js.map +1 -1
- package/lib/module/components/Elevation.js +4 -15
- package/lib/module/components/Elevation.js.map +1 -1
- package/lib/module/components/NumberInput.js +42 -36
- package/lib/module/components/NumberInput.js.map +1 -1
- package/lib/module/components/Picker/PickerComponent.android.js +10 -7
- package/lib/module/components/Picker/PickerComponent.android.js.map +1 -1
- package/lib/typescript/src/components/NumberInput.d.ts +2 -2
- package/package.json +2 -2
- package/src/components/NumberInput.js +37 -29
- package/src/components/NumberInput.tsx +56 -42
|
@@ -21,8 +21,6 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
|
|
|
21
21
|
|
|
22
22
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
23
23
|
|
|
24
|
-
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
25
|
-
|
|
26
24
|
const AccordionItem = _ref => {
|
|
27
25
|
let {
|
|
28
26
|
Icon,
|
|
@@ -37,9 +35,10 @@ const AccordionItem = _ref => {
|
|
|
37
35
|
textStyles,
|
|
38
36
|
viewStyles
|
|
39
37
|
} = (0, _utilities.extractStyles)(style);
|
|
40
|
-
return /*#__PURE__*/React.createElement(_reactNative.Pressable,
|
|
41
|
-
style: [styles.container, viewStyles]
|
|
42
|
-
|
|
38
|
+
return /*#__PURE__*/React.createElement(_reactNative.Pressable, {
|
|
39
|
+
style: [styles.container, viewStyles],
|
|
40
|
+
...rest
|
|
41
|
+
}, /*#__PURE__*/React.createElement(_reactNative.View, {
|
|
43
42
|
style: styles.row
|
|
44
43
|
}, icon ? /*#__PURE__*/React.createElement(Icon, {
|
|
45
44
|
name: icon,
|
|
@@ -74,5 +73,22 @@ const styles = _reactNative.StyleSheet.create({
|
|
|
74
73
|
|
|
75
74
|
var _default = (0, _theming.withTheme)(AccordionItem);
|
|
76
75
|
|
|
76
|
+
exports.default = _default;
|
|
77
|
+
//# sourceMappingURL=AccordionItem.js.map flexDirection: "row",
|
|
78
|
+
alignItems: "center",
|
|
79
|
+
paddingLeft: 8
|
|
80
|
+
},
|
|
81
|
+
item: {
|
|
82
|
+
marginVertical: 6,
|
|
83
|
+
paddingLeft: 8
|
|
84
|
+
},
|
|
85
|
+
content: {
|
|
86
|
+
flex: 1,
|
|
87
|
+
justifyContent: "center"
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
var _default = (0, _theming.withTheme)(AccordionItem);
|
|
92
|
+
|
|
77
93
|
exports.default = _default;
|
|
78
94
|
//# sourceMappingURL=AccordionItem.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["AccordionItem.
|
|
1
|
+
{"version":3,"sources":["AccordionItem.js"],"names":["AccordionItem","Icon","icon","label","style","iconColor","theme","rest","textStyles","viewStyles","React","createElement","Pressable","styles","container","View","row","name","size","color","colors","primary","item","content","Text","selectable","StyleSheet","create","padding","flexDirection","alignItems","paddingLeft","marginVertical","flex","justifyContent"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;;;;;;;AACA,MAAMA,aAAa,GAAG,QAA6D;AAAA,MAA5D;AAAEC,IAAAA,IAAF;AAAQC,IAAAA,IAAR;AAAcC,IAAAA,KAAd;AAAqBC,IAAAA,KAArB;AAA4BC,IAAAA,SAA5B;AAAuCC,IAAAA,KAAvC;AAA8C,OAAGC;AAAjD,GAA4D;AAC/E,QAAM;AAAEC,IAAAA,UAAF;AAAcC,IAAAA;AAAd,MAA6B,8BAAcL,KAAd,CAAnC;AACA,sBAAQM,KAAK,CAACC,aAAN,CAAoBC,sBAApB,EAA+B;AAAER,IAAAA,KAAK,EAAE,CAACS,MAAM,CAACC,SAAR,EAAmBL,UAAnB,CAAT;AAAyC,OAAGF;AAA5C,GAA/B,eACJG,KAAK,CAACC,aAAN,CAAoBI,iBAApB,EAA0B;AAAEX,IAAAA,KAAK,EAAES,MAAM,CAACG;AAAhB,GAA1B,EACId,IAAI,gBAAIQ,KAAK,CAACC,aAAN,CAAoBV,IAApB,EAA0B;AAAEgB,IAAAA,IAAI,EAAEf,IAAR;AAAcgB,IAAAA,IAAI,EAAE,EAApB;AAAwBC,IAAAA,KAAK,EAAEd,SAAS,IAAIC,KAAK,CAACc,MAAN,CAAaC;AAAzD,GAA1B,CAAJ,GAAqG,IAD7G,eAEIX,KAAK,CAACC,aAAN,CAAoBI,iBAApB,EAA0B;AAAEX,IAAAA,KAAK,EAAE,CAACS,MAAM,CAACS,IAAR,EAAcT,MAAM,CAACU,OAArB;AAAT,GAA1B,eACIb,KAAK,CAACC,aAAN,CAAoBa,aAApB,EAA0B;AAAEC,IAAAA,UAAU,EAAE,KAAd;AAAqBrB,IAAAA,KAAK,EAAEI;AAA5B,GAA1B,EAAoEL,KAApE,CADJ,CAFJ,CADI,CAAR;AAKH,CAPD;;AAQA,MAAMU,MAAM,GAAGa,wBAAWC,MAAX,CAAkB;AAC7Bb,EAAAA,SAAS,EAAE;AACPc,IAAAA,OAAO,EAAE;AADF,GADkB;AAI7BZ,EAAAA,GAAG,EAAE;AACDa,IAAAA,aAAa,EAAE,KADd;AAEDC,IAAAA,UAAU,EAAE,QAFX;AAGDC,IAAAA,WAAW,EAAE;AAHZ,GAJwB;AAS7BT,EAAAA,IAAI,EAAE;AACFU,IAAAA,cAAc,EAAE,CADd;AAEFD,IAAAA,WAAW,EAAE;AAFX,GATuB;AAa7BR,EAAAA,OAAO,EAAE;AACLU,IAAAA,IAAI,EAAE,CADD;AAELC,IAAAA,cAAc,EAAE;AAFX;AAboB,CAAlB,CAAf;;eAkBe,wBAAUlC,aAAV,C","sourcesContent":["import * as React from \"react\";\nimport { Pressable, StyleSheet, View, } from \"react-native\";\nimport Text from \"../Text\";\nimport { extractStyles } from \"../../utilities\";\nimport { withTheme } from \"../../theming\";\nconst AccordionItem = ({ Icon, icon, label, style, iconColor, theme, ...rest }) => {\n const { textStyles, viewStyles } = extractStyles(style);\n return (React.createElement(Pressable, { style: [styles.container, viewStyles], ...rest },\n React.createElement(View, { style: styles.row },\n icon ? (React.createElement(Icon, { name: icon, size: 24, color: iconColor || theme.colors.primary })) : null,\n React.createElement(View, { style: [styles.item, styles.content] },\n React.createElement(Text, { selectable: false, style: textStyles }, label)))));\n};\nconst styles = StyleSheet.create({\n container: {\n padding: 8,\n },\n row: {\n flexDirection: \"row\",\n alignItems: \"center\",\n paddingLeft: 8,\n },\n item: {\n marginVertical: 6,\n paddingLeft: 8,\n },\n content: {\n flex: 1,\n justifyContent: \"center\",\n },\n});\nexport default withTheme(AccordionItem);\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["index.
|
|
1
|
+
{"version":3,"sources":["index.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA;;AACA","sourcesContent":["export { default as AccordionGroup } from \"./AccordionGroup\";\nexport { default as AccordionItem } from \"./AccordionItem\";\n"]}
|
|
@@ -15,6 +15,8 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
|
|
|
15
15
|
|
|
16
16
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
17
17
|
|
|
18
|
+
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
19
|
+
|
|
18
20
|
const FAB = _ref => {
|
|
19
21
|
let {
|
|
20
22
|
onPress,
|
|
@@ -38,7 +40,7 @@ const FAB = _ref => {
|
|
|
38
40
|
borderRadius: size / 2,
|
|
39
41
|
overflow: "hidden"
|
|
40
42
|
}, style]
|
|
41
|
-
}, /*#__PURE__*/React.createElement(_reactNative.Pressable, {
|
|
43
|
+
}, /*#__PURE__*/React.createElement(_reactNative.Pressable, _extends({
|
|
42
44
|
onPress: onPress,
|
|
43
45
|
disabled: loading || disabled,
|
|
44
46
|
android_ripple: {
|
|
@@ -56,9 +58,8 @@ const FAB = _ref => {
|
|
|
56
58
|
borderRadius: size / 2,
|
|
57
59
|
backgroundColor
|
|
58
60
|
}];
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
}, /*#__PURE__*/React.createElement(_reactNative.View, null, loading ? /*#__PURE__*/React.createElement(_reactNative.ActivityIndicator, {
|
|
61
|
+
}
|
|
62
|
+
}, props), /*#__PURE__*/React.createElement(_reactNative.View, null, loading ? /*#__PURE__*/React.createElement(_reactNative.ActivityIndicator, {
|
|
62
63
|
style: size > 50 ? {
|
|
63
64
|
marginTop: 2,
|
|
64
65
|
marginLeft: 2
|
|
@@ -88,20 +89,5 @@ const styles = _reactNative.StyleSheet.create({
|
|
|
88
89
|
|
|
89
90
|
var _default = (0, _theming.withTheme)(FAB);
|
|
90
91
|
|
|
91
|
-
exports.default = _default;
|
|
92
|
-
//# sourceMappingURL=FAB.js.map backgroundColor: "#5a45ff",
|
|
93
|
-
justifyContent: "center",
|
|
94
|
-
alignItems: "center",
|
|
95
|
-
..._reactNative.Platform.select({
|
|
96
|
-
web: {
|
|
97
|
-
cursor: "pointer",
|
|
98
|
-
userSelect: "none"
|
|
99
|
-
}
|
|
100
|
-
})
|
|
101
|
-
}
|
|
102
|
-
});
|
|
103
|
-
|
|
104
|
-
var _default = (0, _theming.withTheme)(FAB);
|
|
105
|
-
|
|
106
92
|
exports.default = _default;
|
|
107
93
|
//# sourceMappingURL=FAB.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["FAB.
|
|
1
|
+
{"version":3,"sources":["FAB.tsx"],"names":["FAB","onPress","disabled","loading","iconName","style","theme","iconColor","bgColor","size","Icon","props","backgroundColor","colors","primary","color","width","height","borderRadius","overflow","radius","pressed","styles","button","opacity","marginTop","marginLeft","undefined","StyleSheet","create","justifyContent","alignItems","Platform","select","web","cursor","userSelect"],"mappings":";;;;;;;AAAA;;AACA;;AAUA;;;;;;;;AAiBA,MAAMA,GAAoB,GAAG,QAYvB;AAAA,MAZwB;AAC5BC,IAAAA,OAD4B;AAE5BC,IAAAA,QAF4B;AAG5BC,IAAAA,OAH4B;AAI5BC,IAAAA,QAAQ,GAAG,mBAJiB;AAK5BC,IAAAA,KAL4B;AAM5BC,IAAAA,KAN4B;AAO5BC,IAAAA,SAP4B;AAQ5BC,IAAAA,OAR4B;AAS5BC,IAAAA,IAAI,GAAG,EATqB;AAU5BC,IAAAA,IAV4B;AAW5B,OAAGC;AAXyB,GAYxB;AACJ,QAAMC,eAAe,GAAGJ,OAAO,IAAIF,KAAK,CAACO,MAAN,CAAaC,OAAhD;AACA,QAAMC,KAAK,GAAGR,SAAS,IAAI,MAA3B;AAEA,sBACE,oBAAC,iBAAD;AACE,IAAA,KAAK,EAAE,CACL;AACES,MAAAA,KAAK,EAAEP,IADT;AAEEQ,MAAAA,MAAM,EAAER,IAFV;AAGES,MAAAA,YAAY,EAAET,IAAI,GAAG,CAHvB;AAIEU,MAAAA,QAAQ,EAAE;AAJZ,KADK,EAOLd,KAPK;AADT,kBAWE,oBAAC,sBAAD;AACE,IAAA,OAAO,EAAEJ,OADX;AAEE,IAAA,QAAQ,EAAEE,OAAO,IAAID,QAFvB;AAGE,IAAA,cAAc,EAAE;AACda,MAAAA,KAAK,EAAE,MADO;AAEdK,MAAAA,MAAM,EAAEX,IAAI,GAAG;AAFD,KAHlB;AAOE,IAAA,KAAK,EAAE,SAAiB;AAAA,UAAhB;AAAEY,QAAAA;AAAF,OAAgB;AACtB,aAAO,CACLC,MAAM,CAACC,MADF,EAEL;AACEC,QAAAA,OAAO,EAAEH,OAAO,IAAInB,QAAX,GAAsB,IAAtB,GAA6B,CADxC;AAEEc,QAAAA,KAAK,EAAEP,IAFT;AAGEQ,QAAAA,MAAM,EAAER,IAHV;AAIES,QAAAA,YAAY,EAAET,IAAI,GAAG,CAJvB;AAKEG,QAAAA;AALF,OAFK,CAAP;AAUD;AAlBH,KAmBMD,KAnBN,gBAqBE,oBAAC,iBAAD,QACGR,OAAO,gBACN,oBAAC,8BAAD;AACE,IAAA,KAAK,EAAEM,IAAI,GAAG,EAAP,GAAY;AAAEgB,MAAAA,SAAS,EAAE,CAAb;AAAgBC,MAAAA,UAAU,EAAE;AAA5B,KAAZ,GAA8CC,SADvD;AAEE,IAAA,IAAI,EAAElB,IAAI,IAAI,EAAR,GAAa,OAAb,GAAuB,OAF/B;AAGE,IAAA,KAAK,EAAEM;AAHT,IADM,gBAON,oBAAC,IAAD;AAAM,IAAA,IAAI,EAAEX,QAAZ;AAAsB,IAAA,IAAI,EAAEK,IAA5B;AAAkC,IAAA,KAAK,EAAEM;AAAzC,IARJ,CArBF,CAXF,CADF;AA+CD,CA/DD;;AAiEA,MAAMO,MAAM,GAAGM,wBAAWC,MAAX,CAAkB;AAC/BN,EAAAA,MAAM,EAAE;AACNX,IAAAA,eAAe,EAAE,SADX;AAENkB,IAAAA,cAAc,EAAE,QAFV;AAGNC,IAAAA,UAAU,EAAE,QAHN;AAIN,OAAGC,sBAASC,MAAT,CAAgB;AACjBC,MAAAA,GAAG,EAAE;AACHC,QAAAA,MAAM,EAAE,SADL;AAEHC,QAAAA,UAAU,EAAE;AAFT;AADY,KAAhB;AAJG;AADuB,CAAlB,CAAf;;eAce,wBAAUpC,GAAV,C","sourcesContent":["import * as React from \"react\";\nimport {\n View,\n StyleSheet,\n Pressable,\n ActivityIndicator,\n StyleProp,\n ViewStyle,\n PressableProps,\n Platform,\n} from \"react-native\";\nimport { withTheme } from \"../theming\";\nimport type { Theme } from \"../styles/DefaultTheme\";\nimport type { IconSlot } from \"../interfaces/Icon\";\n\ntype Props = {\n disabled?: boolean;\n loading?: boolean;\n size?: number;\n bgColor?: string;\n iconColor?: string;\n iconName?: string;\n onPress: () => void;\n theme: Theme;\n style?: StyleProp<ViewStyle>;\n} & PressableProps &\n IconSlot;\n\nconst FAB: React.FC<Props> = ({\n onPress,\n disabled,\n loading,\n iconName = \"MaterialIcons/add\",\n style,\n theme,\n iconColor,\n bgColor,\n size = 50,\n Icon,\n ...props\n}) => {\n const backgroundColor = bgColor || theme.colors.primary;\n const color = iconColor || \"#FFF\";\n\n return (\n <View\n style={[\n {\n width: size,\n height: size,\n borderRadius: size / 2,\n overflow: \"hidden\",\n },\n style,\n ]}\n >\n <Pressable\n onPress={onPress}\n disabled={loading || disabled}\n android_ripple={{\n color: \"#333\",\n radius: size / 4,\n }}\n style={({ pressed }) => {\n return [\n styles.button,\n {\n opacity: pressed || disabled ? 0.75 : 1,\n width: size,\n height: size,\n borderRadius: size / 2,\n backgroundColor,\n },\n ];\n }}\n {...props}\n >\n <View>\n {loading ? (\n <ActivityIndicator\n style={size > 50 ? { marginTop: 2, marginLeft: 2 } : undefined}\n size={size <= 50 ? \"small\" : \"large\"}\n color={color}\n />\n ) : (\n <Icon name={iconName} size={size} color={color} />\n )}\n </View>\n </Pressable>\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n button: {\n backgroundColor: \"#5a45ff\",\n justifyContent: \"center\",\n alignItems: \"center\",\n ...Platform.select({\n web: {\n cursor: \"pointer\",\n userSelect: \"none\",\n },\n }),\n },\n});\n\nexport default withTheme(FAB);\n"]}
|
|
@@ -20,53 +20,59 @@ function _extends() { _extends = Object.assign || function (target) { for (var i
|
|
|
20
20
|
const NumberInput = _ref => {
|
|
21
21
|
let {
|
|
22
22
|
onChangeText,
|
|
23
|
-
value
|
|
24
|
-
defaultValue
|
|
23
|
+
value,
|
|
24
|
+
defaultValue,
|
|
25
25
|
...props
|
|
26
26
|
} = _ref;
|
|
27
|
-
const [isDecimal, setIsDecimal] = (0, _react.useState)(value && !Number.isInteger(value));
|
|
28
|
-
const formatValueToString = (0, _react.useCallback)(valueToStringify => {
|
|
29
|
-
if (valueToStringify != null) {
|
|
30
|
-
if ((0, _lodash.isString)(valueToStringify) && /^[+-]?([0-9]+\.?[0-9]*|\.[0-9]+)$/.test(valueToStringify)) {
|
|
31
|
-
console.log("is string", value);
|
|
32
|
-
return valueToStringify;
|
|
33
|
-
} else if ((0, _lodash.isNumber)(valueToStringify)) {
|
|
34
|
-
return valueToStringify.toString();
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
return "";
|
|
39
|
-
}, [value]);
|
|
40
|
-
(0, _react.useEffect)(() => {
|
|
41
|
-
if (value) {
|
|
42
|
-
setIsDecimal(formatValueToString(value).includes("."));
|
|
43
|
-
}
|
|
44
|
-
}, [value, formatValueToString]);
|
|
45
27
|
|
|
46
|
-
const
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
28
|
+
const formatValueToStringNumber = (valueToFormat, currentStringNumberValue) => {
|
|
29
|
+
if (valueToFormat != null) {
|
|
30
|
+
if ((0, _lodash.isString)(valueToFormat) && valueToFormat !== "") {
|
|
31
|
+
if (/^0[1-9]$/.test(valueToFormat)) {
|
|
32
|
+
return valueToFormat.slice(1);
|
|
33
|
+
} else if (/^[+-]?([0-9]+\.?[0-9]*|\.[0-9]+)$/.test(valueToFormat)) {
|
|
34
|
+
return valueToFormat;
|
|
35
|
+
} else if (currentStringNumberValue) {
|
|
36
|
+
return currentStringNumberValue;
|
|
37
|
+
}
|
|
38
|
+
} else if ((0, _lodash.isNumber)(valueToFormat) && !(0, _lodash.isNaN)(valueToFormat)) {
|
|
39
|
+
return valueToFormat.toString();
|
|
40
|
+
}
|
|
51
41
|
}
|
|
52
42
|
|
|
53
|
-
return
|
|
43
|
+
return "0";
|
|
54
44
|
};
|
|
55
45
|
|
|
46
|
+
const [currentStringNumberValue, setCurrentStringNumberValue] = (0, _react.useState)(formatValueToStringNumber(value));
|
|
47
|
+
|
|
56
48
|
const handleChangeText = newValue => {
|
|
57
|
-
const
|
|
58
|
-
const number =
|
|
59
|
-
|
|
49
|
+
const newStringNumberValue = formatValueToStringNumber(newValue, currentStringNumberValue);
|
|
50
|
+
const number = parseFloat(newStringNumberValue);
|
|
51
|
+
setCurrentStringNumberValue(newStringNumberValue);
|
|
60
52
|
onChangeText === null || onChangeText === void 0 ? void 0 : onChangeText(number);
|
|
61
53
|
};
|
|
62
54
|
|
|
55
|
+
(0, _react.useEffect)(() => {
|
|
56
|
+
const defaultStringNumberValue = formatValueToStringNumber(defaultValue, currentStringNumberValue);
|
|
57
|
+
|
|
58
|
+
if (currentStringNumberValue !== defaultStringNumberValue) {
|
|
59
|
+
setCurrentStringNumberValue(defaultStringNumberValue);
|
|
60
|
+
} // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
61
|
+
|
|
62
|
+
}, []);
|
|
63
|
+
(0, _react.useEffect)(() => {
|
|
64
|
+
const nextStringNumberValue = formatValueToStringNumber(value, currentStringNumberValue);
|
|
65
|
+
|
|
66
|
+
if (currentStringNumberValue !== nextStringNumberValue) {
|
|
67
|
+
handleChangeText(nextStringNumberValue);
|
|
68
|
+
} // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
69
|
+
|
|
70
|
+
}, [value]);
|
|
63
71
|
return /*#__PURE__*/_react.default.createElement(_reactNative.TextInput, _extends({
|
|
64
|
-
keyboardType: "numeric"
|
|
65
|
-
|
|
66
|
-
value: makeFinalValue(value),
|
|
67
|
-
defaultValue: makeFinalValue(defaultValue),
|
|
72
|
+
keyboardType: "numeric",
|
|
73
|
+
value: currentStringNumberValue,
|
|
68
74
|
onChangeText: handleChangeText
|
|
69
|
-
}));
|
|
75
|
+
}, props));
|
|
70
76
|
};
|
|
71
77
|
|
|
72
78
|
var _default = NumberInput;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["NumberInput.tsx"],"names":["NumberInput","onChangeText","value","defaultValue","props","
|
|
1
|
+
{"version":3,"sources":["NumberInput.tsx"],"names":["NumberInput","onChangeText","value","defaultValue","props","formatValueToStringNumber","valueToFormat","currentStringNumberValue","test","slice","toString","setCurrentStringNumberValue","handleChangeText","newValue","newStringNumberValue","number","parseFloat","defaultStringNumberValue","nextStringNumberValue"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;;;;;;;AAQA,MAAMA,WAAsB,GAAG,QAKzB;AAAA,MAL0B;AAC9BC,IAAAA,YAD8B;AAE9BC,IAAAA,KAF8B;AAG9BC,IAAAA,YAH8B;AAI9B,OAAGC;AAJ2B,GAK1B;;AACJ,QAAMC,yBAAyB,GAAG,CAChCC,aADgC,EAEhCC,wBAFgC,KAG7B;AACH,QAAID,aAAa,IAAI,IAArB,EAA2B;AACzB,UAAI,sBAASA,aAAT,KAA2BA,aAAa,KAAK,EAAjD,EAAqD;AACnD,YAAI,WAAWE,IAAX,CAAgBF,aAAhB,CAAJ,EAAoC;AAClC,iBAAOA,aAAa,CAACG,KAAd,CAAoB,CAApB,CAAP;AACD,SAFD,MAEO,IAAI,oCAAoCD,IAApC,CAAyCF,aAAzC,CAAJ,EAA6D;AAClE,iBAAOA,aAAP;AACD,SAFM,MAEA,IAAIC,wBAAJ,EAA8B;AACnC,iBAAOA,wBAAP;AACD;AACF,OARD,MAQO,IAAI,sBAASD,aAAT,KAA2B,CAAC,mBAAMA,aAAN,CAAhC,EAAsD;AAC3D,eAAOA,aAAa,CAACI,QAAd,EAAP;AACD;AACF;;AAED,WAAO,GAAP;AACD,GAnBD;;AAqBA,QAAM,CAACH,wBAAD,EAA2BI,2BAA3B,IAA0D,qBAC9DN,yBAAyB,CAACH,KAAD,CADqC,CAAhE;;AAIA,QAAMU,gBAAgB,GAAIC,QAAD,IAAsB;AAC7C,UAAMC,oBAAoB,GAAGT,yBAAyB,CACpDQ,QADoD,EAEpDN,wBAFoD,CAAtD;AAIA,UAAMQ,MAAM,GAAGC,UAAU,CAACF,oBAAD,CAAzB;AAEAH,IAAAA,2BAA2B,CAACG,oBAAD,CAA3B;AACAb,IAAAA,YAAY,SAAZ,IAAAA,YAAY,WAAZ,YAAAA,YAAY,CAAGc,MAAH,CAAZ;AACD,GATD;;AAWA,wBAAU,MAAM;AACd,UAAME,wBAAwB,GAAGZ,yBAAyB,CACxDF,YADwD,EAExDI,wBAFwD,CAA1D;;AAKA,QAAIA,wBAAwB,KAAKU,wBAAjC,EAA2D;AACzDN,MAAAA,2BAA2B,CAACM,wBAAD,CAA3B;AACD,KARa,CASd;;AACD,GAVD,EAUG,EAVH;AAYA,wBAAU,MAAM;AACd,UAAMC,qBAAqB,GAAGb,yBAAyB,CACrDH,KADqD,EAErDK,wBAFqD,CAAvD;;AAKA,QAAIA,wBAAwB,KAAKW,qBAAjC,EAAwD;AACtDN,MAAAA,gBAAgB,CAACM,qBAAD,CAAhB;AACD,KARa,CASd;;AACD,GAVD,EAUG,CAAChB,KAAD,CAVH;AAYA,sBACE,6BAAC,sBAAD;AACE,IAAA,YAAY,EAAC,SADf;AAEE,IAAA,KAAK,EAAEK,wBAFT;AAGE,IAAA,YAAY,EAAEK;AAHhB,KAIMR,KAJN,EADF;AAQD,CA1ED;;eA4EeJ,W","sourcesContent":["import React, { FC, useEffect, useState } from \"react\";\nimport { TextInput } from \"react-native\";\nimport { isString, isNumber, isNaN } from \"lodash\";\n\ninterface Props {\n value?: number | string;\n defaultValue?: number | string;\n onChangeText?: (value?: number) => void;\n}\n\nconst NumberInput: FC<Props> = ({\n onChangeText,\n value,\n defaultValue,\n ...props\n}) => {\n const formatValueToStringNumber = (\n valueToFormat?: number | string,\n currentStringNumberValue?: string\n ) => {\n if (valueToFormat != null) {\n if (isString(valueToFormat) && valueToFormat !== \"\") {\n if (/^0[1-9]$/.test(valueToFormat)) {\n return valueToFormat.slice(1);\n } else if (/^[+-]?([0-9]+\\.?[0-9]*|\\.[0-9]+)$/.test(valueToFormat)) {\n return valueToFormat;\n } else if (currentStringNumberValue) {\n return currentStringNumberValue;\n }\n } else if (isNumber(valueToFormat) && !isNaN(valueToFormat)) {\n return valueToFormat.toString();\n }\n }\n\n return \"0\";\n };\n\n const [currentStringNumberValue, setCurrentStringNumberValue] = useState(\n formatValueToStringNumber(value)\n );\n\n const handleChangeText = (newValue: string) => {\n const newStringNumberValue = formatValueToStringNumber(\n newValue,\n currentStringNumberValue\n );\n const number = parseFloat(newStringNumberValue);\n\n setCurrentStringNumberValue(newStringNumberValue);\n onChangeText?.(number);\n };\n\n useEffect(() => {\n const defaultStringNumberValue = formatValueToStringNumber(\n defaultValue,\n currentStringNumberValue\n );\n\n if (currentStringNumberValue !== defaultStringNumberValue) {\n setCurrentStringNumberValue(defaultStringNumberValue);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n const nextStringNumberValue = formatValueToStringNumber(\n value,\n currentStringNumberValue\n );\n\n if (currentStringNumberValue !== nextStringNumberValue) {\n handleChangeText(nextStringNumberValue);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value]);\n\n return (\n <TextInput\n keyboardType=\"numeric\"\n value={currentStringNumberValue}\n onChangeText={handleChangeText}\n {...props}\n />\n );\n};\n\nexport default NumberInput;\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["PortalManager.
|
|
1
|
+
{"version":3,"sources":["PortalManager.tsx"],"names":["PortalManager","React","PureComponent","portals","key","children","setState","state","map","item","filter","render","StyleSheet","absoluteFill"],"mappings":";;;;;;;AAAA;;AACA;;;;;;;;AASA;AACA;AACA;AACe,MAAMA,aAAN,SAA4BC,KAAK,CAACC,aAAlC,CAA2D;AAAA;AAAA;;AAAA,mCACzD;AACbC,MAAAA,OAAO,EAAE;AADI,KADyD;;AAAA,mCAKhE,CAACC,GAAD,EAAcC,QAAd,KAA4C;AAClD,WAAKC,QAAL,CAAeC,KAAD,KAAY;AACxBJ,QAAAA,OAAO,EAAE,CAAC,GAAGI,KAAK,CAACJ,OAAV,EAAmB;AAAEC,UAAAA,GAAF;AAAOC,UAAAA;AAAP,SAAnB;AADe,OAAZ,CAAd;AAGD,KATuE;;AAAA,oCAW/D,CAACD,GAAD,EAAcC,QAAd,KACP,KAAKC,QAAL,CAAeC,KAAD,KAAY;AACxBJ,MAAAA,OAAO,EAAEI,KAAK,CAACJ,OAAN,CAAcK,GAAd,CAAmBC,IAAD,IAAU;AACnC,YAAIA,IAAI,CAACL,GAAL,KAAaA,GAAjB,EAAsB;AACpB,iBAAO,EAAE,GAAGK,IAAL;AAAWJ,YAAAA;AAAX,WAAP;AACD;;AACD,eAAOI,IAAP;AACD,OALQ;AADe,KAAZ,CAAd,CAZsE;;AAAA,qCAqB7DL,GAAD,IACR,KAAKE,QAAL,CAAeC,KAAD,KAAY;AACxBJ,MAAAA,OAAO,EAAEI,KAAK,CAACJ,OAAN,CAAcO,MAAd,CAAsBD,IAAD,IAAUA,IAAI,CAACL,GAAL,KAAaA,GAA5C;AADe,KAAZ,CAAd,CAtBsE;AAAA;;AA0BxEO,EAAAA,MAAM,GAAG;AACP,WAAO,KAAKJ,KAAL,CAAWJ,OAAX,CAAmBK,GAAnB,CAAuB;AAAA,UAAC;AAAEJ,QAAAA,GAAF;AAAOC,QAAAA;AAAP,OAAD;AAAA,0BAC5B,oBAAC,iBAAD;AACE,QAAA,GAAG,EAAED,GADP;AAEE,QAAA,WAAW,EACT;AAAM;AAHV;AAKE,QAAA,aAAa,EAAC,UALhB;AAME,QAAA,KAAK,EAAEQ,wBAAWC;AANpB,SAQGR,QARH,CAD4B;AAAA,KAAvB,CAAP;AAYD;;AAvCuE","sourcesContent":["import * as React from \"react\";\nimport { View, StyleSheet } from \"react-native\";\n\ntype State = {\n portals: Array<{\n key: number;\n children: React.ReactNode;\n }>;\n};\n\n/**\n * Portal host is the component which actually renders all Portals.\n */\nexport default class PortalManager extends React.PureComponent<{}, State> {\n state: State = {\n portals: [],\n };\n\n mount = (key: number, children: React.ReactNode) => {\n this.setState((state) => ({\n portals: [...state.portals, { key, children }],\n }));\n };\n\n update = (key: number, children: React.ReactNode) =>\n this.setState((state) => ({\n portals: state.portals.map((item) => {\n if (item.key === key) {\n return { ...item, children };\n }\n return item;\n }),\n }));\n\n unmount = (key: number) =>\n this.setState((state) => ({\n portals: state.portals.filter((item) => item.key !== key),\n }));\n\n render() {\n return this.state.portals.map(({ key, children }) => (\n <View\n key={key}\n collapsable={\n false /* Need collapsable=false here to clip the elevations, otherwise they appear above sibling components */\n }\n pointerEvents=\"box-none\"\n style={StyleSheet.absoluteFill}\n >\n {children}\n </View>\n ));\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["ActionSheetCancel.
|
|
1
|
+
{"version":3,"sources":["ActionSheetCancel.js"],"names":["SEED_DATA","name","tag","description","category","COMPONENT_TYPES","button","triggers","Triggers","OnPress","props","onPress","label","group","GROUPS","basic","defaultValue","color"],"mappings":";;;;;;;AAAA;;AACO,MAAMA,SAAS,GAAG;AACrBC,EAAAA,IAAI,EAAE,qBADe;AAErBC,EAAAA,GAAG,EAAE,mBAFgB;AAGrBC,EAAAA,WAAW,EAAE,qBAHQ;AAIrBC,EAAAA,QAAQ,EAAEC,uBAAgBC,MAJL;AAKrBC,EAAAA,QAAQ,EAAE,CAACC,gBAASC,OAAV,CALW;AAMrBC,EAAAA,KAAK,EAAE;AACHC,IAAAA,OAAO,EAAE,8BADN;AAEHC,IAAAA,KAAK,EAAE,2BAAe;AAClBC,MAAAA,KAAK,EAAEC,cAAOC,KADI;AAElBH,MAAAA,KAAK,EAAE,OAFW;AAGlBI,MAAAA,YAAY,EAAE;AAHI,KAAf,CAFJ;AAOHC,IAAAA,KAAK,EAAE,4BAAgB;AACnBL,MAAAA,KAAK,EAAE;AADY,KAAhB;AAPJ;AANc,CAAlB","sourcesContent":["import { COMPONENT_TYPES, createActionProp, createColorProp, createTextProp, GROUPS, Triggers, } from \"@draftbit/types\";\nexport const SEED_DATA = {\n name: \"Action Sheet Cancel\",\n tag: \"ActionSheetCancel\",\n description: \"Action Sheet cancel\",\n category: COMPONENT_TYPES.button,\n triggers: [Triggers.OnPress],\n props: {\n onPress: createActionProp(),\n label: createTextProp({\n group: GROUPS.basic,\n label: \"Label\",\n defaultValue: \"Cancel\",\n }),\n color: createColorProp({\n label: \"Font Color\",\n }),\n },\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["IconButton.
|
|
1
|
+
{"version":3,"sources":["IconButton.js"],"names":["SEED_DATA","name","tag","category","COMPONENT_TYPES","button","layout","triggers","Triggers","OnPress","props","onPress","icon","color","label","group","GROUPS","basic","disabled","size","description","defaultValue","min","max","step","precision"],"mappings":";;;;;;;AAAA;;AACO,MAAMA,SAAS,GAAG;AACrBC,EAAAA,IAAI,EAAE,aADe;AAErBC,EAAAA,GAAG,EAAE,YAFgB;AAGrBC,EAAAA,QAAQ,EAAEC,uBAAgBC,MAHL;AAIrBC,EAAAA,MAAM,EAAE,EAJa;AAKrBC,EAAAA,QAAQ,EAAE,CAACC,gBAASC,OAAV,CALW;AAMrBC,EAAAA,KAAK,EAAE;AACHC,IAAAA,OAAO,EAAE,8BADN;AAEHC,IAAAA,IAAI,EAAE,4BAFH;AAGHC,IAAAA,KAAK,EAAE,4BAAgB;AACnBC,MAAAA,KAAK,EAAE,OADY;AAEnBC,MAAAA,KAAK,EAAEC,cAAOC;AAFK,KAAhB,CAHJ;AAOHC,IAAAA,QAAQ,EAAE,2BAAe;AACrBJ,MAAAA,KAAK,EAAE,UADc;AAErBC,MAAAA,KAAK,EAAEC,cAAOC;AAFO,KAAf,CAPP;AAWHE,IAAAA,IAAI,EAAE,6BAAiB;AACnBJ,MAAAA,KAAK,EAAEC,cAAOC,KADK;AAEnBH,MAAAA,KAAK,EAAE,MAFY;AAGnBM,MAAAA,WAAW,EAAE,+BAHM;AAInBC,MAAAA,YAAY,EAAE,EAJK;AAKnBC,MAAAA,GAAG,EAAE,EALc;AAMnBC,MAAAA,GAAG,EAAE,GANc;AAOnBC,MAAAA,IAAI,EAAE,CAPa;AAQnBC,MAAAA,SAAS,EAAE;AARQ,KAAjB;AAXH;AANc,CAAlB","sourcesContent":["import { COMPONENT_TYPES, GROUPS, createIconProp, createColorProp, createNumberProp, createBoolProp, createActionProp, Triggers, } from \"@draftbit/types\";\nexport const SEED_DATA = {\n name: \"Icon Button\",\n tag: \"IconButton\",\n category: COMPONENT_TYPES.button,\n layout: {},\n triggers: [Triggers.OnPress],\n props: {\n onPress: createActionProp(),\n icon: createIconProp(),\n color: createColorProp({\n label: \"Color\",\n group: GROUPS.basic,\n }),\n disabled: createBoolProp({\n label: \"Disabled\",\n group: GROUPS.basic,\n }),\n size: createNumberProp({\n group: GROUPS.basic,\n label: \"Size\",\n description: \"Width and height of your icon\",\n defaultValue: 32,\n min: 16,\n max: 128,\n step: 1,\n precision: 0,\n }),\n },\n};\n"]}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
2
|
+
|
|
1
3
|
import * as React from "react";
|
|
2
4
|
import { Animated, StyleSheet, View } from "react-native";
|
|
3
5
|
import shadow from "../styles/shadow";
|
|
4
6
|
import { withTheme } from "../theming";
|
|
5
|
-
/* directly copied from https://github.com/callstack/react-native-paper/blob/main/src/components/Surface.tsx#L62 */
|
|
6
7
|
|
|
8
|
+
/* directly copied from https://github.com/callstack/react-native-paper/blob/main/src/components/Surface.tsx#L62 */
|
|
7
9
|
const Elevation = _ref => {
|
|
8
10
|
let {
|
|
9
11
|
style,
|
|
@@ -19,24 +21,11 @@ const Elevation = _ref => {
|
|
|
19
21
|
colors
|
|
20
22
|
} = theme;
|
|
21
23
|
const borderRadius = radius;
|
|
22
|
-
return /*#__PURE__*/React.createElement(Animated.View, {
|
|
24
|
+
return /*#__PURE__*/React.createElement(Animated.View, _extends({}, rest, {
|
|
23
25
|
style: [{
|
|
24
26
|
borderRadius,
|
|
25
27
|
backgroundColor: colors.surface
|
|
26
28
|
}, elevation ? shadow(elevation) : null, style]
|
|
27
|
-
}, /*#__PURE__*/React.createElement(View, {
|
|
28
|
-
style: {
|
|
29
|
-
overflow: "hidden",
|
|
30
|
-
borderRadius
|
|
31
|
-
}
|
|
32
|
-
}, children));
|
|
33
|
-
};
|
|
34
|
-
|
|
35
|
-
export default withTheme(Elevation);
|
|
36
|
-
//# sourceMappingURL=Elevation.js.map style: [{
|
|
37
|
-
borderRadius,
|
|
38
|
-
backgroundColor: colors.surface
|
|
39
|
-
}, elevation ? shadow(elevation) : null, style]
|
|
40
29
|
}), /*#__PURE__*/React.createElement(View, {
|
|
41
30
|
style: {
|
|
42
31
|
overflow: "hidden",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["Elevation.
|
|
1
|
+
{"version":3,"sources":["Elevation.tsx"],"names":["React","Animated","StyleSheet","View","shadow","withTheme","Elevation","style","theme","children","rest","elevation","borderRadius","radius","flatten","colors","backgroundColor","surface","overflow"],"mappings":";;AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SACEC,QADF,EAEEC,UAFF,EAMEC,IANF,QAOO,cAPP;AAQA,OAAOC,MAAP,MAAmB,kBAAnB;AACA,SAASC,SAAT,QAA0B,YAA1B;;AAQA;AACA,MAAMC,SAA0B,GAAG,QAAyC;AAAA,MAAxC;AAAEC,IAAAA,KAAF;AAASC,IAAAA,KAAT;AAAgBC,IAAAA,QAAhB;AAA0B,OAAGC;AAA7B,GAAwC;AAC1E,QAAM;AAAEC,IAAAA,SAAS,GAAG,CAAd;AAAiBC,IAAAA,YAAY,EAAEC;AAA/B,MACJX,UAAU,CAACY,OAAX,CAAmBP,KAAnB,KAA6B,EAD/B;AAEA,QAAM;AAAEQ,IAAAA;AAAF,MAAaP,KAAnB;AACA,QAAMI,YAAY,GAAGC,MAArB;AAEA,sBACE,oBAAC,QAAD,CAAU,IAAV,eACMH,IADN;AAEE,IAAA,KAAK,EAAE,CACL;AACEE,MAAAA,YADF;AAEEI,MAAAA,eAAe,EAAED,MAAM,CAACE;AAF1B,KADK,EAKLN,SAAS,GAAGP,MAAM,CAACO,SAAD,CAAT,GAAuB,IAL3B,EAMLJ,KANK;AAFT,mBAWE,oBAAC,IAAD;AAAM,IAAA,KAAK,EAAE;AAAEW,MAAAA,QAAQ,EAAE,QAAZ;AAAsBN,MAAAA;AAAtB;AAAb,KAAoDH,QAApD,CAXF,CADF;AAeD,CArBD;;AAuBA,eAAeJ,SAAS,CAACC,SAAD,CAAxB","sourcesContent":["import * as React from \"react\";\nimport {\n Animated,\n StyleSheet,\n ViewProps,\n StyleProp,\n ViewStyle,\n View,\n} from \"react-native\";\nimport shadow from \"../styles/shadow\";\nimport { withTheme } from \"../theming\";\nimport type { Theme } from \"../styles/DefaultTheme\";\n\ntype Props = {\n style?: StyleProp<ViewStyle>;\n theme: Theme;\n} & ViewProps;\n\n/* directly copied from https://github.com/callstack/react-native-paper/blob/main/src/components/Surface.tsx#L62 */\nconst Elevation: React.FC<Props> = ({ style, theme, children, ...rest }) => {\n const { elevation = 4, borderRadius: radius } =\n StyleSheet.flatten(style) || {};\n const { colors } = theme;\n const borderRadius = radius;\n\n return (\n <Animated.View\n {...rest}\n style={[\n {\n borderRadius,\n backgroundColor: colors.surface,\n },\n elevation ? shadow(elevation) : null,\n style,\n ]}\n >\n <View style={{ overflow: \"hidden\", borderRadius }}>{children}</View>\n </Animated.View>\n );\n};\n\nexport default withTheme(Elevation);\n"]}
|
|
@@ -1,59 +1,65 @@
|
|
|
1
1
|
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
2
2
|
|
|
3
|
-
import React, {
|
|
3
|
+
import React, { useEffect, useState } from "react";
|
|
4
4
|
import { TextInput } from "react-native";
|
|
5
|
-
import { isString, isNumber } from "lodash";
|
|
5
|
+
import { isString, isNumber, isNaN } from "lodash";
|
|
6
6
|
|
|
7
7
|
const NumberInput = _ref => {
|
|
8
8
|
let {
|
|
9
9
|
onChangeText,
|
|
10
|
-
value
|
|
11
|
-
defaultValue
|
|
10
|
+
value,
|
|
11
|
+
defaultValue,
|
|
12
12
|
...props
|
|
13
13
|
} = _ref;
|
|
14
|
-
const [isDecimal, setIsDecimal] = useState(value && !Number.isInteger(value));
|
|
15
|
-
const formatValueToString = useCallback(valueToStringify => {
|
|
16
|
-
if (valueToStringify != null) {
|
|
17
|
-
if (isString(valueToStringify) && /^[+-]?([0-9]+\.?[0-9]*|\.[0-9]+)$/.test(valueToStringify)) {
|
|
18
|
-
console.log("is string", value);
|
|
19
|
-
return valueToStringify;
|
|
20
|
-
} else if (isNumber(valueToStringify)) {
|
|
21
|
-
return valueToStringify.toString();
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
return "";
|
|
26
|
-
}, [value]);
|
|
27
|
-
useEffect(() => {
|
|
28
|
-
if (value) {
|
|
29
|
-
setIsDecimal(formatValueToString(value).includes("."));
|
|
30
|
-
}
|
|
31
|
-
}, [value, formatValueToString]);
|
|
32
14
|
|
|
33
|
-
const
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
15
|
+
const formatValueToStringNumber = (valueToFormat, currentStringNumberValue) => {
|
|
16
|
+
if (valueToFormat != null) {
|
|
17
|
+
if (isString(valueToFormat) && valueToFormat !== "") {
|
|
18
|
+
if (/^0[1-9]$/.test(valueToFormat)) {
|
|
19
|
+
return valueToFormat.slice(1);
|
|
20
|
+
} else if (/^[+-]?([0-9]+\.?[0-9]*|\.[0-9]+)$/.test(valueToFormat)) {
|
|
21
|
+
return valueToFormat;
|
|
22
|
+
} else if (currentStringNumberValue) {
|
|
23
|
+
return currentStringNumberValue;
|
|
24
|
+
}
|
|
25
|
+
} else if (isNumber(valueToFormat) && !isNaN(valueToFormat)) {
|
|
26
|
+
return valueToFormat.toString();
|
|
27
|
+
}
|
|
38
28
|
}
|
|
39
29
|
|
|
40
|
-
return
|
|
30
|
+
return "0";
|
|
41
31
|
};
|
|
42
32
|
|
|
33
|
+
const [currentStringNumberValue, setCurrentStringNumberValue] = useState(formatValueToStringNumber(value));
|
|
34
|
+
|
|
43
35
|
const handleChangeText = newValue => {
|
|
44
|
-
const
|
|
45
|
-
const number =
|
|
46
|
-
|
|
36
|
+
const newStringNumberValue = formatValueToStringNumber(newValue, currentStringNumberValue);
|
|
37
|
+
const number = parseFloat(newStringNumberValue);
|
|
38
|
+
setCurrentStringNumberValue(newStringNumberValue);
|
|
47
39
|
onChangeText === null || onChangeText === void 0 ? void 0 : onChangeText(number);
|
|
48
40
|
};
|
|
49
41
|
|
|
42
|
+
useEffect(() => {
|
|
43
|
+
const defaultStringNumberValue = formatValueToStringNumber(defaultValue, currentStringNumberValue);
|
|
44
|
+
|
|
45
|
+
if (currentStringNumberValue !== defaultStringNumberValue) {
|
|
46
|
+
setCurrentStringNumberValue(defaultStringNumberValue);
|
|
47
|
+
} // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
48
|
+
|
|
49
|
+
}, []);
|
|
50
|
+
useEffect(() => {
|
|
51
|
+
const nextStringNumberValue = formatValueToStringNumber(value, currentStringNumberValue);
|
|
52
|
+
|
|
53
|
+
if (currentStringNumberValue !== nextStringNumberValue) {
|
|
54
|
+
handleChangeText(nextStringNumberValue);
|
|
55
|
+
} // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
56
|
+
|
|
57
|
+
}, [value]);
|
|
50
58
|
return /*#__PURE__*/React.createElement(TextInput, _extends({
|
|
51
|
-
keyboardType: "numeric"
|
|
52
|
-
|
|
53
|
-
value: makeFinalValue(value),
|
|
54
|
-
defaultValue: makeFinalValue(defaultValue),
|
|
59
|
+
keyboardType: "numeric",
|
|
60
|
+
value: currentStringNumberValue,
|
|
55
61
|
onChangeText: handleChangeText
|
|
56
|
-
}));
|
|
62
|
+
}, props));
|
|
57
63
|
};
|
|
58
64
|
|
|
59
65
|
export default NumberInput;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["NumberInput.tsx"],"names":["React","
|
|
1
|
+
{"version":3,"sources":["NumberInput.tsx"],"names":["React","useEffect","useState","TextInput","isString","isNumber","isNaN","NumberInput","onChangeText","value","defaultValue","props","formatValueToStringNumber","valueToFormat","currentStringNumberValue","test","slice","toString","setCurrentStringNumberValue","handleChangeText","newValue","newStringNumberValue","number","parseFloat","defaultStringNumberValue","nextStringNumberValue"],"mappings":";;AAAA,OAAOA,KAAP,IAAoBC,SAApB,EAA+BC,QAA/B,QAA+C,OAA/C;AACA,SAASC,SAAT,QAA0B,cAA1B;AACA,SAASC,QAAT,EAAmBC,QAAnB,EAA6BC,KAA7B,QAA0C,QAA1C;;AAQA,MAAMC,WAAsB,GAAG,QAKzB;AAAA,MAL0B;AAC9BC,IAAAA,YAD8B;AAE9BC,IAAAA,KAF8B;AAG9BC,IAAAA,YAH8B;AAI9B,OAAGC;AAJ2B,GAK1B;;AACJ,QAAMC,yBAAyB,GAAG,CAChCC,aADgC,EAEhCC,wBAFgC,KAG7B;AACH,QAAID,aAAa,IAAI,IAArB,EAA2B;AACzB,UAAIT,QAAQ,CAACS,aAAD,CAAR,IAA2BA,aAAa,KAAK,EAAjD,EAAqD;AACnD,YAAI,WAAWE,IAAX,CAAgBF,aAAhB,CAAJ,EAAoC;AAClC,iBAAOA,aAAa,CAACG,KAAd,CAAoB,CAApB,CAAP;AACD,SAFD,MAEO,IAAI,oCAAoCD,IAApC,CAAyCF,aAAzC,CAAJ,EAA6D;AAClE,iBAAOA,aAAP;AACD,SAFM,MAEA,IAAIC,wBAAJ,EAA8B;AACnC,iBAAOA,wBAAP;AACD;AACF,OARD,MAQO,IAAIT,QAAQ,CAACQ,aAAD,CAAR,IAA2B,CAACP,KAAK,CAACO,aAAD,CAArC,EAAsD;AAC3D,eAAOA,aAAa,CAACI,QAAd,EAAP;AACD;AACF;;AAED,WAAO,GAAP;AACD,GAnBD;;AAqBA,QAAM,CAACH,wBAAD,EAA2BI,2BAA3B,IAA0DhB,QAAQ,CACtEU,yBAAyB,CAACH,KAAD,CAD6C,CAAxE;;AAIA,QAAMU,gBAAgB,GAAIC,QAAD,IAAsB;AAC7C,UAAMC,oBAAoB,GAAGT,yBAAyB,CACpDQ,QADoD,EAEpDN,wBAFoD,CAAtD;AAIA,UAAMQ,MAAM,GAAGC,UAAU,CAACF,oBAAD,CAAzB;AAEAH,IAAAA,2BAA2B,CAACG,oBAAD,CAA3B;AACAb,IAAAA,YAAY,SAAZ,IAAAA,YAAY,WAAZ,YAAAA,YAAY,CAAGc,MAAH,CAAZ;AACD,GATD;;AAWArB,EAAAA,SAAS,CAAC,MAAM;AACd,UAAMuB,wBAAwB,GAAGZ,yBAAyB,CACxDF,YADwD,EAExDI,wBAFwD,CAA1D;;AAKA,QAAIA,wBAAwB,KAAKU,wBAAjC,EAA2D;AACzDN,MAAAA,2BAA2B,CAACM,wBAAD,CAA3B;AACD,KARa,CASd;;AACD,GAVQ,EAUN,EAVM,CAAT;AAYAvB,EAAAA,SAAS,CAAC,MAAM;AACd,UAAMwB,qBAAqB,GAAGb,yBAAyB,CACrDH,KADqD,EAErDK,wBAFqD,CAAvD;;AAKA,QAAIA,wBAAwB,KAAKW,qBAAjC,EAAwD;AACtDN,MAAAA,gBAAgB,CAACM,qBAAD,CAAhB;AACD,KARa,CASd;;AACD,GAVQ,EAUN,CAAChB,KAAD,CAVM,CAAT;AAYA,sBACE,oBAAC,SAAD;AACE,IAAA,YAAY,EAAC,SADf;AAEE,IAAA,KAAK,EAAEK,wBAFT;AAGE,IAAA,YAAY,EAAEK;AAHhB,KAIMR,KAJN,EADF;AAQD,CA1ED;;AA4EA,eAAeJ,WAAf","sourcesContent":["import React, { FC, useEffect, useState } from \"react\";\nimport { TextInput } from \"react-native\";\nimport { isString, isNumber, isNaN } from \"lodash\";\n\ninterface Props {\n value?: number | string;\n defaultValue?: number | string;\n onChangeText?: (value?: number) => void;\n}\n\nconst NumberInput: FC<Props> = ({\n onChangeText,\n value,\n defaultValue,\n ...props\n}) => {\n const formatValueToStringNumber = (\n valueToFormat?: number | string,\n currentStringNumberValue?: string\n ) => {\n if (valueToFormat != null) {\n if (isString(valueToFormat) && valueToFormat !== \"\") {\n if (/^0[1-9]$/.test(valueToFormat)) {\n return valueToFormat.slice(1);\n } else if (/^[+-]?([0-9]+\\.?[0-9]*|\\.[0-9]+)$/.test(valueToFormat)) {\n return valueToFormat;\n } else if (currentStringNumberValue) {\n return currentStringNumberValue;\n }\n } else if (isNumber(valueToFormat) && !isNaN(valueToFormat)) {\n return valueToFormat.toString();\n }\n }\n\n return \"0\";\n };\n\n const [currentStringNumberValue, setCurrentStringNumberValue] = useState(\n formatValueToStringNumber(value)\n );\n\n const handleChangeText = (newValue: string) => {\n const newStringNumberValue = formatValueToStringNumber(\n newValue,\n currentStringNumberValue\n );\n const number = parseFloat(newStringNumberValue);\n\n setCurrentStringNumberValue(newStringNumberValue);\n onChangeText?.(number);\n };\n\n useEffect(() => {\n const defaultStringNumberValue = formatValueToStringNumber(\n defaultValue,\n currentStringNumberValue\n );\n\n if (currentStringNumberValue !== defaultStringNumberValue) {\n setCurrentStringNumberValue(defaultStringNumberValue);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n const nextStringNumberValue = formatValueToStringNumber(\n value,\n currentStringNumberValue\n );\n\n if (currentStringNumberValue !== nextStringNumberValue) {\n handleChangeText(nextStringNumberValue);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value]);\n\n return (\n <TextInput\n keyboardType=\"numeric\"\n value={currentStringNumberValue}\n onChangeText={handleChangeText}\n {...props}\n />\n );\n};\n\nexport default NumberInput;\n"]}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
2
|
+
|
|
1
3
|
import * as React from "react";
|
|
2
4
|
import { View, StyleSheet } from "react-native";
|
|
3
5
|
import omit from "lodash.omit";
|
|
@@ -89,15 +91,16 @@ const Picker = _ref => {
|
|
|
89
91
|
key: o.value
|
|
90
92
|
}))), /*#__PURE__*/React.createElement(View, {
|
|
91
93
|
pointerEvents: "none"
|
|
92
|
-
}, /*#__PURE__*/React.createElement(TextField, {
|
|
94
|
+
}, /*#__PURE__*/React.createElement(TextField, _extends({}, props, {
|
|
93
95
|
value: selectedLabel,
|
|
94
|
-
placeholder: placeholder
|
|
95
|
-
|
|
96
|
-
ref: textField
|
|
97
|
-
|
|
98
|
-
// @ts-expect-error
|
|
96
|
+
placeholder: placeholder // @ts-ignore
|
|
97
|
+
,
|
|
98
|
+
ref: textField // cannot determine if ref is of correct type due to component being wrapped in a withTheme()
|
|
99
|
+
,
|
|
100
|
+
disabled: disabled // @ts-expect-error
|
|
101
|
+
,
|
|
99
102
|
style: stylesWithoutMargin
|
|
100
|
-
}))));
|
|
103
|
+
})))));
|
|
101
104
|
};
|
|
102
105
|
|
|
103
106
|
const styles = StyleSheet.create({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["PickerComponent.android.
|
|
1
|
+
{"version":3,"sources":["PickerComponent.android.tsx"],"names":["React","View","StyleSheet","omit","withTheme","Picker","NativePicker","extractStyles","TextField","Touchable","style","options","placeholder","selectedValue","disabled","onValueChange","onValueChangeOverride","props","viewStyles","borderRadius","borderWidth","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","borderColor","backgroundColor","padding","paddingTop","paddingRight","paddingBottom","paddingLeft","textField","useRef","undefined","itemValue","itemIndex","toggleFocus","current","stylesWithoutMargin","flatten","selectedLabel","find","o","value","label","styles","container","opacity","position","top","left","right","bottom","width","map","create","alignSelf"],"mappings":"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","sourcesContent":["import * as React from \"react\";\nimport { View, StyleSheet } from \"react-native\";\nimport omit from \"lodash.omit\";\nimport { withTheme } from \"../../theming\";\nimport { Picker as NativePicker } from \"@react-native-picker/picker\";\nimport { extractStyles } from \"../../utilities\";\n\nimport TextField from \"../TextField\";\nimport Touchable from \"../Touchable\";\nimport { PickerComponentProps } from \"./PickerTypes\";\n\nconst Picker: React.FC<PickerComponentProps> = ({\n style,\n options,\n placeholder,\n selectedValue,\n disabled = false,\n onValueChange: onValueChangeOverride = () => {},\n ...props\n}) => {\n const {\n viewStyles: {\n borderRadius, // eslint-disable-line @typescript-eslint/no-unused-vars\n borderWidth, // eslint-disable-line @typescript-eslint/no-unused-vars\n borderTopWidth, // eslint-disable-line @typescript-eslint/no-unused-vars\n borderRightWidth, // eslint-disable-line @typescript-eslint/no-unused-vars\n borderBottomWidth, // eslint-disable-line @typescript-eslint/no-unused-vars\n borderLeftWidth, // eslint-disable-line @typescript-eslint/no-unused-vars\n borderColor, // eslint-disable-line @typescript-eslint/no-unused-vars\n backgroundColor, // eslint-disable-line @typescript-eslint/no-unused-vars\n padding, // eslint-disable-line @typescript-eslint/no-unused-vars\n paddingTop, // eslint-disable-line @typescript-eslint/no-unused-vars\n paddingRight, // eslint-disable-line @typescript-eslint/no-unused-vars\n paddingBottom, // eslint-disable-line @typescript-eslint/no-unused-vars\n paddingLeft, // eslint-disable-line @typescript-eslint/no-unused-vars\n ...viewStyles\n },\n } = extractStyles(style);\n\n const textField = React.useRef<typeof TextField | undefined>(undefined);\n\n const onValueChange = (itemValue: string, itemIndex: number) => {\n toggleFocus();\n onValueChangeOverride(itemValue, itemIndex);\n };\n\n const toggleFocus = () => {\n if (!disabled) {\n // @ts-ignore\n textField.current.toggleFocus(); // cannot determine if method exists due to component being wrapped in a withTheme()\n }\n };\n\n const stylesWithoutMargin =\n style &&\n omit(StyleSheet.flatten(style), [\n \"margin\",\n \"marginTop\",\n \"marginRight\",\n \"marginBottom\",\n \"marginLeft\",\n ]);\n\n const selectedLabel =\n selectedValue &&\n (options.find((o) => o.value === selectedValue)?.label ?? selectedValue);\n\n return (\n <Touchable\n disabled={disabled}\n onPress={toggleFocus}\n style={[styles.container, viewStyles]}\n >\n <View>\n <NativePicker\n enabled={!disabled}\n selectedValue={selectedValue}\n onValueChange={onValueChange}\n style={{\n opacity: 0,\n position: \"absolute\",\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n width: \"100%\",\n }}\n >\n {options.map((o) => (\n <NativePicker.Item label={o.label} value={o.value} key={o.value} />\n ))}\n </NativePicker>\n <View pointerEvents=\"none\">\n <TextField\n {...props}\n value={selectedLabel}\n placeholder={placeholder}\n // @ts-ignore\n ref={textField} // cannot determine if ref is of correct type due to component being wrapped in a withTheme()\n disabled={disabled}\n // @ts-expect-error\n style={stylesWithoutMargin}\n />\n </View>\n </View>\n </Touchable>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n alignSelf: \"stretch\",\n },\n});\n\nexport default withTheme(Picker);\n"]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { FC } from "react";
|
|
2
2
|
interface Props {
|
|
3
3
|
value?: number | string;
|
|
4
4
|
defaultValue?: number | string;
|
|
5
5
|
onChangeText?: (value?: number) => void;
|
|
6
6
|
}
|
|
7
|
-
declare const NumberInput:
|
|
7
|
+
declare const NumberInput: FC<Props>;
|
|
8
8
|
export default NumberInput;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@draftbit/core",
|
|
3
|
-
"version": "43.4.
|
|
3
|
+
"version": "43.4.8-cae1e2.0+cae1e2fd",
|
|
4
4
|
"description": "Core (non-native) Components",
|
|
5
5
|
"main": "lib/commonjs/index.js",
|
|
6
6
|
"module": "lib/module/index.js",
|
|
@@ -80,5 +80,5 @@
|
|
|
80
80
|
]
|
|
81
81
|
]
|
|
82
82
|
},
|
|
83
|
-
"gitHead": "
|
|
83
|
+
"gitHead": "cae1e2fda8058d1ff0374350a4b07f6278285a67"
|
|
84
84
|
}
|
|
@@ -1,39 +1,47 @@
|
|
|
1
|
-
import React, {
|
|
1
|
+
import React, { useEffect, useState } from "react";
|
|
2
2
|
import { TextInput } from "react-native";
|
|
3
|
-
import { isString, isNumber } from "lodash";
|
|
4
|
-
const NumberInput = ({ onChangeText, value
|
|
5
|
-
const
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
3
|
+
import { isString, isNumber, isNaN } from "lodash";
|
|
4
|
+
const NumberInput = ({ onChangeText, value, defaultValue, ...props }) => {
|
|
5
|
+
const formatValueToStringNumber = (valueToFormat, currentStringNumberValue) => {
|
|
6
|
+
if (valueToFormat != null) {
|
|
7
|
+
if (isString(valueToFormat) && valueToFormat !== "") {
|
|
8
|
+
if (/^0[1-9]$/.test(valueToFormat)) {
|
|
9
|
+
return valueToFormat.slice(1);
|
|
10
|
+
}
|
|
11
|
+
else if (/^[+-]?([0-9]+\.?[0-9]*|\.[0-9]+)$/.test(valueToFormat)) {
|
|
12
|
+
return valueToFormat;
|
|
13
|
+
}
|
|
14
|
+
else if (currentStringNumberValue) {
|
|
15
|
+
return currentStringNumberValue;
|
|
16
|
+
}
|
|
12
17
|
}
|
|
13
|
-
else if (isNumber(
|
|
14
|
-
return
|
|
18
|
+
else if (isNumber(valueToFormat) && !isNaN(valueToFormat)) {
|
|
19
|
+
return valueToFormat.toString();
|
|
15
20
|
}
|
|
16
21
|
}
|
|
17
|
-
return "";
|
|
18
|
-
}, [value]);
|
|
19
|
-
useEffect(() => {
|
|
20
|
-
if (value) {
|
|
21
|
-
setIsDecimal(formatValueToString(value).includes("."));
|
|
22
|
-
}
|
|
23
|
-
}, [value, formatValueToString]);
|
|
24
|
-
const makeFinalValue = (valueToMakeFinal) => {
|
|
25
|
-
let stringValue = formatValueToString(valueToMakeFinal);
|
|
26
|
-
if (isDecimal && !stringValue.includes(".")) {
|
|
27
|
-
stringValue = `${stringValue}.`;
|
|
28
|
-
}
|
|
29
|
-
return stringValue;
|
|
22
|
+
return "0";
|
|
30
23
|
};
|
|
24
|
+
const [currentStringNumberValue, setCurrentStringNumberValue] = useState(formatValueToStringNumber(value));
|
|
31
25
|
const handleChangeText = (newValue) => {
|
|
32
|
-
const
|
|
33
|
-
const number =
|
|
34
|
-
|
|
26
|
+
const newStringNumberValue = formatValueToStringNumber(newValue, currentStringNumberValue);
|
|
27
|
+
const number = parseFloat(newStringNumberValue);
|
|
28
|
+
setCurrentStringNumberValue(newStringNumberValue);
|
|
35
29
|
onChangeText?.(number);
|
|
36
30
|
};
|
|
37
|
-
|
|
31
|
+
useEffect(() => {
|
|
32
|
+
const defaultStringNumberValue = formatValueToStringNumber(defaultValue, currentStringNumberValue);
|
|
33
|
+
if (currentStringNumberValue !== defaultStringNumberValue) {
|
|
34
|
+
setCurrentStringNumberValue(defaultStringNumberValue);
|
|
35
|
+
}
|
|
36
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
37
|
+
}, []);
|
|
38
|
+
useEffect(() => {
|
|
39
|
+
const nextStringNumberValue = formatValueToStringNumber(value, currentStringNumberValue);
|
|
40
|
+
if (currentStringNumberValue !== nextStringNumberValue) {
|
|
41
|
+
handleChangeText(nextStringNumberValue);
|
|
42
|
+
}
|
|
43
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
44
|
+
}, [value]);
|
|
45
|
+
return (React.createElement(TextInput, { keyboardType: "numeric", value: currentStringNumberValue, onChangeText: handleChangeText, ...props }));
|
|
38
46
|
};
|
|
39
47
|
export default NumberInput;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import React, {
|
|
1
|
+
import React, { FC, useEffect, useState } from "react";
|
|
2
2
|
import { TextInput } from "react-native";
|
|
3
|
-
import { isString, isNumber } from "lodash";
|
|
3
|
+
import { isString, isNumber, isNaN } from "lodash";
|
|
4
4
|
|
|
5
5
|
interface Props {
|
|
6
6
|
value?: number | string;
|
|
@@ -8,64 +8,78 @@ interface Props {
|
|
|
8
8
|
onChangeText?: (value?: number) => void;
|
|
9
9
|
}
|
|
10
10
|
|
|
11
|
-
const NumberInput:
|
|
11
|
+
const NumberInput: FC<Props> = ({
|
|
12
12
|
onChangeText,
|
|
13
|
-
value
|
|
14
|
-
defaultValue
|
|
13
|
+
value,
|
|
14
|
+
defaultValue,
|
|
15
15
|
...props
|
|
16
16
|
}) => {
|
|
17
|
-
const
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
) {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
return valueToStringify.toString();
|
|
17
|
+
const formatValueToStringNumber = (
|
|
18
|
+
valueToFormat?: number | string,
|
|
19
|
+
currentStringNumberValue?: string
|
|
20
|
+
) => {
|
|
21
|
+
if (valueToFormat != null) {
|
|
22
|
+
if (isString(valueToFormat) && valueToFormat !== "") {
|
|
23
|
+
if (/^0[1-9]$/.test(valueToFormat)) {
|
|
24
|
+
return valueToFormat.slice(1);
|
|
25
|
+
} else if (/^[+-]?([0-9]+\.?[0-9]*|\.[0-9]+)$/.test(valueToFormat)) {
|
|
26
|
+
return valueToFormat;
|
|
27
|
+
} else if (currentStringNumberValue) {
|
|
28
|
+
return currentStringNumberValue;
|
|
30
29
|
}
|
|
30
|
+
} else if (isNumber(valueToFormat) && !isNaN(valueToFormat)) {
|
|
31
|
+
return valueToFormat.toString();
|
|
31
32
|
}
|
|
32
|
-
|
|
33
|
-
return "";
|
|
34
|
-
},
|
|
35
|
-
[value]
|
|
36
|
-
);
|
|
37
|
-
|
|
38
|
-
useEffect(() => {
|
|
39
|
-
if (value) {
|
|
40
|
-
setIsDecimal(formatValueToString(value).includes("."));
|
|
41
33
|
}
|
|
42
|
-
}, [value, formatValueToString]);
|
|
43
34
|
|
|
44
|
-
|
|
45
|
-
let stringValue = formatValueToString(valueToMakeFinal);
|
|
46
|
-
|
|
47
|
-
if (isDecimal && !stringValue.includes(".")) {
|
|
48
|
-
stringValue = `${stringValue}.`;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
return stringValue;
|
|
35
|
+
return "0";
|
|
52
36
|
};
|
|
53
37
|
|
|
38
|
+
const [currentStringNumberValue, setCurrentStringNumberValue] = useState(
|
|
39
|
+
formatValueToStringNumber(value)
|
|
40
|
+
);
|
|
41
|
+
|
|
54
42
|
const handleChangeText = (newValue: string) => {
|
|
55
|
-
const
|
|
56
|
-
|
|
43
|
+
const newStringNumberValue = formatValueToStringNumber(
|
|
44
|
+
newValue,
|
|
45
|
+
currentStringNumberValue
|
|
46
|
+
);
|
|
47
|
+
const number = parseFloat(newStringNumberValue);
|
|
57
48
|
|
|
58
|
-
|
|
49
|
+
setCurrentStringNumberValue(newStringNumberValue);
|
|
59
50
|
onChangeText?.(number);
|
|
60
51
|
};
|
|
61
52
|
|
|
53
|
+
useEffect(() => {
|
|
54
|
+
const defaultStringNumberValue = formatValueToStringNumber(
|
|
55
|
+
defaultValue,
|
|
56
|
+
currentStringNumberValue
|
|
57
|
+
);
|
|
58
|
+
|
|
59
|
+
if (currentStringNumberValue !== defaultStringNumberValue) {
|
|
60
|
+
setCurrentStringNumberValue(defaultStringNumberValue);
|
|
61
|
+
}
|
|
62
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
63
|
+
}, []);
|
|
64
|
+
|
|
65
|
+
useEffect(() => {
|
|
66
|
+
const nextStringNumberValue = formatValueToStringNumber(
|
|
67
|
+
value,
|
|
68
|
+
currentStringNumberValue
|
|
69
|
+
);
|
|
70
|
+
|
|
71
|
+
if (currentStringNumberValue !== nextStringNumberValue) {
|
|
72
|
+
handleChangeText(nextStringNumberValue);
|
|
73
|
+
}
|
|
74
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
75
|
+
}, [value]);
|
|
76
|
+
|
|
62
77
|
return (
|
|
63
78
|
<TextInput
|
|
64
79
|
keyboardType="numeric"
|
|
65
|
-
{
|
|
66
|
-
value={makeFinalValue(value)}
|
|
67
|
-
defaultValue={makeFinalValue(defaultValue)}
|
|
80
|
+
value={currentStringNumberValue}
|
|
68
81
|
onChangeText={handleChangeText}
|
|
82
|
+
{...props}
|
|
69
83
|
/>
|
|
70
84
|
);
|
|
71
85
|
};
|