@codeleap/mobile 2.4.6 → 3.0.2

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.
Files changed (450) hide show
  1. package/mobile-packages.code-workspace +27 -0
  2. package/package.json +25 -33
  3. package/src/components/ActionIcon/index.tsx +16 -6
  4. package/src/components/ActionIcon/styles.ts +3 -90
  5. package/src/components/ActivityIndicator/index.tsx +28 -9
  6. package/src/components/ActivityIndicator/styles.ts +2 -59
  7. package/src/components/Autocomplete/index.tsx +235 -0
  8. package/src/components/Autocomplete/styles.ts +18 -0
  9. package/src/components/Autocomplete/types.ts +75 -0
  10. package/src/components/Avatar/index.tsx +126 -0
  11. package/src/components/Avatar/styles.ts +22 -0
  12. package/src/components/AvatarGroup/index.tsx +76 -0
  13. package/src/components/AvatarGroup/styles.ts +11 -0
  14. package/src/components/Backdrop/index.tsx +14 -13
  15. package/src/components/Backdrop/styles.ts +3 -24
  16. package/src/components/Badge/index.tsx +134 -0
  17. package/src/components/Badge/styles.ts +14 -0
  18. package/src/components/Button/index.tsx +39 -49
  19. package/src/components/Button/styles.ts +6 -107
  20. package/src/components/Calendar/index.tsx +3 -3
  21. package/src/components/Calendar/style.ts +2 -31
  22. package/src/components/Checkbox/index.tsx +137 -74
  23. package/src/components/Checkbox/styles.ts +13 -73
  24. package/src/components/ContentView/index.tsx +2 -2
  25. package/src/components/ContentView/styles.ts +1 -17
  26. package/src/components/DatePickerModal/index.tsx +240 -0
  27. package/src/components/DatePickerModal/styles.ts +15 -0
  28. package/src/components/DatePickerModal/types.ts +55 -0
  29. package/src/components/Drawer/index.tsx +2 -2
  30. package/src/components/Drawer/styles.ts +4 -39
  31. package/src/components/EmptyPlaceholder/index.tsx +3 -3
  32. package/src/components/EmptyPlaceholder/styles.ts +2 -47
  33. package/src/components/FileInput/styles.ts +1 -8
  34. package/src/components/Grid/index.tsx +76 -72
  35. package/src/components/Grid/styles.ts +4 -7
  36. package/src/components/Icon/index.tsx +46 -8
  37. package/src/components/Icon/styles.ts +3 -51
  38. package/src/components/Image/index.tsx +18 -22
  39. package/src/components/Image/styles.ts +1 -14
  40. package/src/components/ImageView/Spotlight.tsx +4 -2
  41. package/src/components/ImageView/component.tsx +0 -3
  42. package/src/components/InputBase/index.tsx +101 -0
  43. package/src/components/InputBase/styles.ts +135 -0
  44. package/src/components/InputBase/types.ts +28 -0
  45. package/src/components/InputBase/utils.ts +42 -0
  46. package/src/components/InputLabel/index.tsx +3 -3
  47. package/src/components/InputLabel/styles.ts +2 -14
  48. package/src/components/List/PaginationIndicator.tsx +4 -21
  49. package/src/components/List/index.tsx +84 -46
  50. package/src/components/List/styles.ts +8 -20
  51. package/src/components/LoadingOverlay/index.tsx +45 -45
  52. package/src/components/LoadingOverlay/styles.ts +5 -27
  53. package/src/components/Modal/index.tsx +57 -32
  54. package/src/components/Modal/styles.ts +3 -114
  55. package/src/components/NumberIncrement/index.tsx +318 -0
  56. package/src/components/NumberIncrement/styles.ts +14 -0
  57. package/src/components/NumberIncrement/types.ts +44 -0
  58. package/src/components/NumberIncrement/utils.ts +27 -0
  59. package/src/components/Pager/index.tsx +120 -67
  60. package/src/components/Pager/styles.ts +2 -69
  61. package/src/components/RadioInput/index.tsx +145 -68
  62. package/src/components/RadioInput/styles.ts +8 -61
  63. package/src/components/RefreshControl/index.tsx +28 -0
  64. package/src/components/RefreshControl/styles.ts +7 -0
  65. package/src/components/Scroll/index.tsx +22 -37
  66. package/src/components/Scroll/styles.ts +2 -16
  67. package/src/components/Sections/index.tsx +116 -54
  68. package/src/components/Sections/styles.ts +7 -0
  69. package/src/components/SegmentedControl/Option.tsx +51 -0
  70. package/src/components/SegmentedControl/index.tsx +51 -67
  71. package/src/components/SegmentedControl/styles.ts +7 -63
  72. package/src/components/Select/index.tsx +264 -93
  73. package/src/components/Select/styles.ts +11 -131
  74. package/src/components/Select/types.ts +47 -11
  75. package/src/components/Slider/index.tsx +151 -94
  76. package/src/components/Slider/styles.ts +7 -72
  77. package/src/components/Slider/types.ts +18 -20
  78. package/src/components/Switch/index.tsx +115 -63
  79. package/src/components/Switch/styles.ts +13 -30
  80. package/src/components/Text/index.tsx +14 -31
  81. package/src/components/Text/styles.ts +2 -41
  82. package/src/components/TextInput/index.tsx +237 -259
  83. package/src/components/TextInput/styles.ts +6 -120
  84. package/src/components/Touchable/index.tsx +74 -27
  85. package/src/components/Touchable/styles.ts +1 -12
  86. package/src/components/View/index.tsx +12 -25
  87. package/src/components/View/styles.ts +1 -17
  88. package/src/components/components.ts +9 -5
  89. package/src/components/defaultStyles.ts +74 -61
  90. package/src/index.ts +0 -1
  91. package/src/modules/PressableRipple/index.ts +5 -0
  92. package/src/modules/PressableRipple/ripple.js +258 -0
  93. package/src/modules/PressableRipple/styles.js +22 -0
  94. package/src/modules/PressableRipple/type.ts +17 -0
  95. package/src/modules/textInputMask.tsx +13 -0
  96. package/src/types/index.ts +5 -0
  97. package/src/types/utility.ts +2 -2
  98. package/src/utils/KeyboardAware/index.ts +0 -13
  99. package/src/utils/KeyboardAware/keyboardHooks.ts +69 -79
  100. package/src/utils/hooks.ts +141 -8
  101. package/src/utils/index.ts +1 -0
  102. package/src/utils/locale.ts +7 -0
  103. package/src/utils/theme.ts +1 -21
  104. package/dist/components/ActionIcon/index.d.ts +0 -13
  105. package/dist/components/ActionIcon/index.js +0 -51
  106. package/dist/components/ActionIcon/index.js.map +0 -1
  107. package/dist/components/ActionIcon/styles.d.ts +0 -65
  108. package/dist/components/ActionIcon/styles.js +0 -61
  109. package/dist/components/ActionIcon/styles.js.map +0 -1
  110. package/dist/components/ActivityIndicator/index.d.ts +0 -15
  111. package/dist/components/ActivityIndicator/index.js +0 -55
  112. package/dist/components/ActivityIndicator/index.js.map +0 -1
  113. package/dist/components/ActivityIndicator/styles.d.ts +0 -59
  114. package/dist/components/ActivityIndicator/styles.js +0 -52
  115. package/dist/components/ActivityIndicator/styles.js.map +0 -1
  116. package/dist/components/Animated.d.ts +0 -15
  117. package/dist/components/Animated.js +0 -55
  118. package/dist/components/Animated.js.map +0 -1
  119. package/dist/components/AutoComplete/index.d.ts +0 -34
  120. package/dist/components/AutoComplete/index.js +0 -126
  121. package/dist/components/AutoComplete/index.js.map +0 -1
  122. package/dist/components/AutoComplete/styles.d.ts +0 -57
  123. package/dist/components/AutoComplete/styles.js +0 -89
  124. package/dist/components/AutoComplete/styles.js.map +0 -1
  125. package/dist/components/Backdrop/index.d.ts +0 -14
  126. package/dist/components/Backdrop/index.js +0 -59
  127. package/dist/components/Backdrop/index.js.map +0 -1
  128. package/dist/components/Backdrop/styles.d.ts +0 -53
  129. package/dist/components/Backdrop/styles.js +0 -28
  130. package/dist/components/Backdrop/styles.js.map +0 -1
  131. package/dist/components/Button/index.d.ts +0 -246
  132. package/dist/components/Button/index.js +0 -115
  133. package/dist/components/Button/index.js.map +0 -1
  134. package/dist/components/Button/styles.d.ts +0 -65
  135. package/dist/components/Button/styles.js +0 -61
  136. package/dist/components/Button/styles.js.map +0 -1
  137. package/dist/components/Calendar/index.d.ts +0 -15
  138. package/dist/components/Calendar/index.js +0 -76
  139. package/dist/components/Calendar/index.js.map +0 -1
  140. package/dist/components/Calendar/style.d.ts +0 -4
  141. package/dist/components/Calendar/style.js +0 -36
  142. package/dist/components/Calendar/style.js.map +0 -1
  143. package/dist/components/Calendar/types.d.ts +0 -95
  144. package/dist/components/Calendar/types.js +0 -3
  145. package/dist/components/Calendar/types.js.map +0 -1
  146. package/dist/components/Checkbox/index.d.ts +0 -15
  147. package/dist/components/Checkbox/index.js +0 -81
  148. package/dist/components/Checkbox/index.js.map +0 -1
  149. package/dist/components/Checkbox/styles.d.ts +0 -56
  150. package/dist/components/Checkbox/styles.js +0 -53
  151. package/dist/components/Checkbox/styles.js.map +0 -1
  152. package/dist/components/ContentView/index.d.ts +0 -12
  153. package/dist/components/ContentView/index.js +0 -62
  154. package/dist/components/ContentView/index.js.map +0 -1
  155. package/dist/components/ContentView/styles.d.ts +0 -53
  156. package/dist/components/ContentView/styles.js +0 -26
  157. package/dist/components/ContentView/styles.js.map +0 -1
  158. package/dist/components/Drawer/index.d.ts +0 -7
  159. package/dist/components/Drawer/index.js +0 -66
  160. package/dist/components/Drawer/index.js.map +0 -1
  161. package/dist/components/Drawer/styles.d.ts +0 -56
  162. package/dist/components/Drawer/styles.js +0 -39
  163. package/dist/components/Drawer/styles.js.map +0 -1
  164. package/dist/components/EmptyPlaceholder/index.d.ts +0 -25
  165. package/dist/components/EmptyPlaceholder/index.js +0 -88
  166. package/dist/components/EmptyPlaceholder/index.js.map +0 -1
  167. package/dist/components/EmptyPlaceholder/styles.d.ts +0 -55
  168. package/dist/components/EmptyPlaceholder/styles.js +0 -30
  169. package/dist/components/EmptyPlaceholder/styles.js.map +0 -1
  170. package/dist/components/FileInput/index.d.ts +0 -24
  171. package/dist/components/FileInput/index.js +0 -179
  172. package/dist/components/FileInput/index.js.map +0 -1
  173. package/dist/components/FileInput/styles.d.ts +0 -53
  174. package/dist/components/FileInput/styles.js +0 -19
  175. package/dist/components/FileInput/styles.js.map +0 -1
  176. package/dist/components/Grid/index.d.ts +0 -32
  177. package/dist/components/Grid/index.js +0 -80
  178. package/dist/components/Grid/index.js.map +0 -1
  179. package/dist/components/Grid/styles.d.ts +0 -54
  180. package/dist/components/Grid/styles.js +0 -19
  181. package/dist/components/Grid/styles.js.map +0 -1
  182. package/dist/components/Icon/index.d.ts +0 -14
  183. package/dist/components/Icon/index.js +0 -75
  184. package/dist/components/Icon/index.js.map +0 -1
  185. package/dist/components/Icon/styles.d.ts +0 -61
  186. package/dist/components/Icon/styles.js +0 -49
  187. package/dist/components/Icon/styles.js.map +0 -1
  188. package/dist/components/Image/index.d.ts +0 -25
  189. package/dist/components/Image/index.js +0 -130
  190. package/dist/components/Image/index.js.map +0 -1
  191. package/dist/components/Image/styles.d.ts +0 -55
  192. package/dist/components/Image/styles.js +0 -25
  193. package/dist/components/Image/styles.js.map +0 -1
  194. package/dist/components/ImageView/Spotlight.d.ts +0 -25
  195. package/dist/components/ImageView/Spotlight.js +0 -150
  196. package/dist/components/ImageView/Spotlight.js.map +0 -1
  197. package/dist/components/ImageView/component.d.ts +0 -5
  198. package/dist/components/ImageView/component.js +0 -50
  199. package/dist/components/ImageView/component.js.map +0 -1
  200. package/dist/components/ImageView/index.d.ts +0 -2
  201. package/dist/components/ImageView/index.js +0 -15
  202. package/dist/components/ImageView/index.js.map +0 -1
  203. package/dist/components/InputLabel/index.d.ts +0 -12
  204. package/dist/components/InputLabel/index.js +0 -58
  205. package/dist/components/InputLabel/index.js.map +0 -1
  206. package/dist/components/InputLabel/styles.d.ts +0 -4
  207. package/dist/components/InputLabel/styles.js +0 -26
  208. package/dist/components/InputLabel/styles.js.map +0 -1
  209. package/dist/components/List/PaginationIndicator.d.ts +0 -67
  210. package/dist/components/List/PaginationIndicator.js +0 -51
  211. package/dist/components/List/PaginationIndicator.js.map +0 -1
  212. package/dist/components/List/index.d.ts +0 -31
  213. package/dist/components/List/index.js +0 -77
  214. package/dist/components/List/index.js.map +0 -1
  215. package/dist/components/List/styles.d.ts +0 -54
  216. package/dist/components/List/styles.js +0 -28
  217. package/dist/components/List/styles.js.map +0 -1
  218. package/dist/components/LoadingOverlay/index.d.ts +0 -11
  219. package/dist/components/LoadingOverlay/index.js +0 -60
  220. package/dist/components/LoadingOverlay/index.js.map +0 -1
  221. package/dist/components/LoadingOverlay/styles.d.ts +0 -7
  222. package/dist/components/LoadingOverlay/styles.js +0 -34
  223. package/dist/components/LoadingOverlay/styles.js.map +0 -1
  224. package/dist/components/Modal/index.d.ts +0 -43
  225. package/dist/components/Modal/index.js +0 -142
  226. package/dist/components/Modal/index.js.map +0 -1
  227. package/dist/components/Modal/styles.d.ts +0 -58
  228. package/dist/components/Modal/styles.js +0 -74
  229. package/dist/components/Modal/styles.js.map +0 -1
  230. package/dist/components/MultiSelect/index.d.ts +0 -6
  231. package/dist/components/MultiSelect/index.js +0 -119
  232. package/dist/components/MultiSelect/index.js.map +0 -1
  233. package/dist/components/MultiSelect/styles.d.ts +0 -7
  234. package/dist/components/MultiSelect/styles.js +0 -84
  235. package/dist/components/MultiSelect/styles.js.map +0 -1
  236. package/dist/components/MultiSelect/types.d.ts +0 -43
  237. package/dist/components/MultiSelect/types.js +0 -3
  238. package/dist/components/MultiSelect/types.js.map +0 -1
  239. package/dist/components/Navigation/Navigation.d.ts +0 -3
  240. package/dist/components/Navigation/Navigation.js +0 -80
  241. package/dist/components/Navigation/Navigation.js.map +0 -1
  242. package/dist/components/Navigation/constants.d.ts +0 -5
  243. package/dist/components/Navigation/constants.js +0 -11
  244. package/dist/components/Navigation/constants.js.map +0 -1
  245. package/dist/components/Navigation/index.d.ts +0 -3
  246. package/dist/components/Navigation/index.js +0 -16
  247. package/dist/components/Navigation/index.js.map +0 -1
  248. package/dist/components/Navigation/types.d.ts +0 -26
  249. package/dist/components/Navigation/types.js +0 -8
  250. package/dist/components/Navigation/types.js.map +0 -1
  251. package/dist/components/Navigation/utils.d.ts +0 -3
  252. package/dist/components/Navigation/utils.js +0 -69
  253. package/dist/components/Navigation/utils.js.map +0 -1
  254. package/dist/components/Pager/index.d.ts +0 -26
  255. package/dist/components/Pager/index.js +0 -84
  256. package/dist/components/Pager/index.js.map +0 -1
  257. package/dist/components/Pager/styles.d.ts +0 -87
  258. package/dist/components/Pager/styles.js +0 -72
  259. package/dist/components/Pager/styles.js.map +0 -1
  260. package/dist/components/RadioInput/index.d.ts +0 -27
  261. package/dist/components/RadioInput/index.js +0 -72
  262. package/dist/components/RadioInput/index.js.map +0 -1
  263. package/dist/components/RadioInput/styles.d.ts +0 -58
  264. package/dist/components/RadioInput/styles.js +0 -50
  265. package/dist/components/RadioInput/styles.js.map +0 -1
  266. package/dist/components/Scroll/index.d.ts +0 -124
  267. package/dist/components/Scroll/index.js +0 -97
  268. package/dist/components/Scroll/index.js.map +0 -1
  269. package/dist/components/Scroll/styles.d.ts +0 -53
  270. package/dist/components/Scroll/styles.js +0 -26
  271. package/dist/components/Scroll/styles.js.map +0 -1
  272. package/dist/components/Sections/index.d.ts +0 -115
  273. package/dist/components/Sections/index.js +0 -76
  274. package/dist/components/Sections/index.js.map +0 -1
  275. package/dist/components/SegmentedControl/index.d.ts +0 -52
  276. package/dist/components/SegmentedControl/index.js +0 -131
  277. package/dist/components/SegmentedControl/index.js.map +0 -1
  278. package/dist/components/SegmentedControl/styles.d.ts +0 -60
  279. package/dist/components/SegmentedControl/styles.js +0 -43
  280. package/dist/components/SegmentedControl/styles.js.map +0 -1
  281. package/dist/components/Select/index.d.ts +0 -16
  282. package/dist/components/Select/index.js +0 -122
  283. package/dist/components/Select/index.js.map +0 -1
  284. package/dist/components/Select/styles.d.ts +0 -60
  285. package/dist/components/Select/styles.js +0 -83
  286. package/dist/components/Select/styles.js.map +0 -1
  287. package/dist/components/Select/types.d.ts +0 -43
  288. package/dist/components/Select/types.js +0 -3
  289. package/dist/components/Select/types.js.map +0 -1
  290. package/dist/components/Slider/Mark.d.ts +0 -3
  291. package/dist/components/Slider/Mark.js +0 -32
  292. package/dist/components/Slider/Mark.js.map +0 -1
  293. package/dist/components/Slider/Thumb.d.ts +0 -7
  294. package/dist/components/Slider/Thumb.js +0 -30
  295. package/dist/components/Slider/Thumb.js.map +0 -1
  296. package/dist/components/Slider/index.d.ts +0 -4
  297. package/dist/components/Slider/index.js +0 -99
  298. package/dist/components/Slider/index.js.map +0 -1
  299. package/dist/components/Slider/styles.d.ts +0 -54
  300. package/dist/components/Slider/styles.js +0 -61
  301. package/dist/components/Slider/styles.js.map +0 -1
  302. package/dist/components/Slider/types.d.ts +0 -26
  303. package/dist/components/Slider/types.js +0 -3
  304. package/dist/components/Slider/types.js.map +0 -1
  305. package/dist/components/Switch/index.d.ts +0 -14
  306. package/dist/components/Switch/index.js +0 -81
  307. package/dist/components/Switch/index.js.map +0 -1
  308. package/dist/components/Switch/styles.d.ts +0 -55
  309. package/dist/components/Switch/styles.js +0 -34
  310. package/dist/components/Switch/styles.js.map +0 -1
  311. package/dist/components/Text/index.d.ts +0 -25
  312. package/dist/components/Text/index.js +0 -121
  313. package/dist/components/Text/index.js.map +0 -1
  314. package/dist/components/Text/styles.d.ts +0 -70
  315. package/dist/components/Text/styles.js +0 -34
  316. package/dist/components/Text/styles.js.map +0 -1
  317. package/dist/components/TextInput/index.d.ts +0 -181
  318. package/dist/components/TextInput/index.js +0 -213
  319. package/dist/components/TextInput/index.js.map +0 -1
  320. package/dist/components/TextInput/styles.d.ts +0 -63
  321. package/dist/components/TextInput/styles.js +0 -65
  322. package/dist/components/TextInput/styles.js.map +0 -1
  323. package/dist/components/Touchable/index.d.ts +0 -22
  324. package/dist/components/Touchable/index.js +0 -165
  325. package/dist/components/Touchable/index.js.map +0 -1
  326. package/dist/components/Touchable/styles.d.ts +0 -58
  327. package/dist/components/Touchable/styles.js +0 -24
  328. package/dist/components/Touchable/styles.js.map +0 -1
  329. package/dist/components/View/index.d.ts +0 -23
  330. package/dist/components/View/index.js +0 -102
  331. package/dist/components/View/index.js.map +0 -1
  332. package/dist/components/View/styles.d.ts +0 -54
  333. package/dist/components/View/styles.js +0 -29
  334. package/dist/components/View/styles.js.map +0 -1
  335. package/dist/components/components.d.ts +0 -37
  336. package/dist/components/components.js +0 -50
  337. package/dist/components/components.js.map +0 -1
  338. package/dist/components/defaultStyles.d.ts +0 -1468
  339. package/dist/components/defaultStyles.js +0 -67
  340. package/dist/components/defaultStyles.js.map +0 -1
  341. package/dist/index.d.ts +0 -7
  342. package/dist/index.js +0 -39
  343. package/dist/index.js.map +0 -1
  344. package/dist/modules/documentPicker.d.ts +0 -3
  345. package/dist/modules/documentPicker.js +0 -12
  346. package/dist/modules/documentPicker.js.map +0 -1
  347. package/dist/modules/fastImage.d.ts +0 -1
  348. package/dist/modules/fastImage.js +0 -10
  349. package/dist/modules/fastImage.js.map +0 -1
  350. package/dist/modules/reactNavigation.d.ts +0 -5
  351. package/dist/modules/reactNavigation.js +0 -26
  352. package/dist/modules/reactNavigation.js.map +0 -1
  353. package/dist/modules/rnDeviceInfo.d.ts +0 -2
  354. package/dist/modules/rnDeviceInfo.js +0 -10
  355. package/dist/modules/rnDeviceInfo.js.map +0 -1
  356. package/dist/modules/textInputMask.d.ts +0 -10
  357. package/dist/modules/textInputMask.js +0 -19
  358. package/dist/modules/textInputMask.js.map +0 -1
  359. package/dist/modules/types/fileTypes.d.ts +0 -138
  360. package/dist/modules/types/fileTypes.js +0 -3
  361. package/dist/modules/types/fileTypes.js.map +0 -1
  362. package/dist/modules/types/textInputMask.d.ts +0 -7
  363. package/dist/modules/types/textInputMask.js +0 -3
  364. package/dist/modules/types/textInputMask.js.map +0 -1
  365. package/dist/types/index.d.ts +0 -1
  366. package/dist/types/index.js +0 -14
  367. package/dist/types/index.js.map +0 -1
  368. package/dist/types/utility.d.ts +0 -14
  369. package/dist/types/utility.js +0 -3
  370. package/dist/types/utility.js.map +0 -1
  371. package/dist/utils/KeyboardAware/context.d.ts +0 -13
  372. package/dist/utils/KeyboardAware/context.js +0 -63
  373. package/dist/utils/KeyboardAware/context.js.map +0 -1
  374. package/dist/utils/KeyboardAware/index.d.ts +0 -8
  375. package/dist/utils/KeyboardAware/index.js +0 -29
  376. package/dist/utils/KeyboardAware/index.js.map +0 -1
  377. package/dist/utils/KeyboardAware/keyboardHooks.d.ts +0 -26
  378. package/dist/utils/KeyboardAware/keyboardHooks.js +0 -87
  379. package/dist/utils/KeyboardAware/keyboardHooks.js.map +0 -1
  380. package/dist/utils/KeyboardAware/lib/KeyboardAwareFlatList.d.ts +0 -3
  381. package/dist/utils/KeyboardAware/lib/KeyboardAwareFlatList.js +0 -9
  382. package/dist/utils/KeyboardAware/lib/KeyboardAwareFlatList.js.map +0 -1
  383. package/dist/utils/KeyboardAware/lib/KeyboardAwareHOC.d.ts +0 -67
  384. package/dist/utils/KeyboardAware/lib/KeyboardAwareHOC.js +0 -439
  385. package/dist/utils/KeyboardAware/lib/KeyboardAwareHOC.js.map +0 -1
  386. package/dist/utils/KeyboardAware/lib/KeyboardAwareInterface.d.ts +0 -7
  387. package/dist/utils/KeyboardAware/lib/KeyboardAwareInterface.js +0 -4
  388. package/dist/utils/KeyboardAware/lib/KeyboardAwareInterface.js.map +0 -1
  389. package/dist/utils/KeyboardAware/lib/KeyboardAwareScrollView.d.ts +0 -3
  390. package/dist/utils/KeyboardAware/lib/KeyboardAwareScrollView.js +0 -10
  391. package/dist/utils/KeyboardAware/lib/KeyboardAwareScrollView.js.map +0 -1
  392. package/dist/utils/KeyboardAware/lib/KeyboardAwareSectionList.d.ts +0 -3
  393. package/dist/utils/KeyboardAware/lib/KeyboardAwareSectionList.js +0 -10
  394. package/dist/utils/KeyboardAware/lib/KeyboardAwareSectionList.js.map +0 -1
  395. package/dist/utils/KeyboardAware/types.d.ts +0 -1
  396. package/dist/utils/KeyboardAware/types.js +0 -7
  397. package/dist/utils/KeyboardAware/types.js.map +0 -1
  398. package/dist/utils/ModalManager/components.d.ts +0 -20
  399. package/dist/utils/ModalManager/components.js +0 -114
  400. package/dist/utils/ModalManager/components.js.map +0 -1
  401. package/dist/utils/ModalManager/context.d.ts +0 -48
  402. package/dist/utils/ModalManager/context.js +0 -201
  403. package/dist/utils/ModalManager/context.js.map +0 -1
  404. package/dist/utils/ModalManager/index.d.ts +0 -11
  405. package/dist/utils/ModalManager/index.js +0 -13
  406. package/dist/utils/ModalManager/index.js.map +0 -1
  407. package/dist/utils/OSAlert.d.ts +0 -32
  408. package/dist/utils/OSAlert.js +0 -143
  409. package/dist/utils/OSAlert.js.map +0 -1
  410. package/dist/utils/PermissionManager/context.d.ts +0 -53
  411. package/dist/utils/PermissionManager/context.js +0 -320
  412. package/dist/utils/PermissionManager/context.js.map +0 -1
  413. package/dist/utils/PermissionManager/index.d.ts +0 -4
  414. package/dist/utils/PermissionManager/index.js +0 -9
  415. package/dist/utils/PermissionManager/index.js.map +0 -1
  416. package/dist/utils/PermissionManager/types.d.ts +0 -13
  417. package/dist/utils/PermissionManager/types.js +0 -3
  418. package/dist/utils/PermissionManager/types.js.map +0 -1
  419. package/dist/utils/hooks.d.ts +0 -42
  420. package/dist/utils/hooks.js +0 -174
  421. package/dist/utils/hooks.js.map +0 -1
  422. package/dist/utils/index.d.ts +0 -10
  423. package/dist/utils/index.js +0 -36
  424. package/dist/utils/index.js.map +0 -1
  425. package/dist/utils/input.d.ts +0 -35
  426. package/dist/utils/input.js +0 -49
  427. package/dist/utils/input.js.map +0 -1
  428. package/dist/utils/misc.d.ts +0 -6
  429. package/dist/utils/misc.js +0 -87
  430. package/dist/utils/misc.js.map +0 -1
  431. package/dist/utils/notifications.d.ts +0 -34
  432. package/dist/utils/notifications.js +0 -268
  433. package/dist/utils/notifications.js.map +0 -1
  434. package/dist/utils/theme.d.ts +0 -42
  435. package/dist/utils/theme.js +0 -50
  436. package/dist/utils/theme.js.map +0 -1
  437. package/src/components/Animated.tsx +0 -34
  438. package/src/components/AutoComplete/index.tsx +0 -167
  439. package/src/components/AutoComplete/styles.ts +0 -150
  440. package/src/components/MultiSelect/index.tsx +0 -148
  441. package/src/components/MultiSelect/styles.ts +0 -131
  442. package/src/components/MultiSelect/types.ts +0 -51
  443. package/src/components/Slider/Mark.tsx +0 -46
  444. package/src/components/Slider/Thumb.tsx +0 -29
  445. package/src/modules/textInputMask.ts +0 -11
  446. package/src/utils/KeyboardAware/lib/KeyboardAwareFlatList.ts +0 -4
  447. package/src/utils/KeyboardAware/lib/KeyboardAwareHOC.tsx +0 -592
  448. package/src/utils/KeyboardAware/lib/KeyboardAwareInterface.ts +0 -13
  449. package/src/utils/KeyboardAware/lib/KeyboardAwareScrollView.ts +0 -6
  450. package/src/utils/KeyboardAware/lib/KeyboardAwareSectionList.ts +0 -6
@@ -1,27 +1,25 @@
1
1
  import * as React from 'react'
2
2
  import { View, ViewProps } from '../View'
3
- import { Button, ButtonProps } from '../Button'
3
+ import { ButtonProps } from '../Button'
4
4
  import { Scroll } from '../Scroll'
5
5
  import {
6
6
  ComponentVariants,
7
7
  getNestedStylesByKey,
8
8
  IconPlaceholder,
9
- onUpdate,
10
9
  PropsOf,
11
10
  TypeGuards,
12
11
  useDefaultComponentStyle,
13
12
  } from '@codeleap/common'
14
13
  import {
15
14
  ModalComposition,
16
- ModalStyles,
15
+ ModalPresets,
17
16
  ModalParts,
18
17
  } from './styles'
19
18
  import { StyleSheet } from 'react-native'
20
19
  import { StylesOf } from '../../types/utility'
21
20
 
22
- import { useDynamicAnimation } from 'moti'
23
21
  import { Backdrop } from '../Backdrop'
24
- import { useBackButton, useStaticAnimationStyles } from '../../utils/hooks'
22
+ import { useAnimatedVariantStyles, useBackButton } from '../../utils/hooks'
25
23
  import { Text, TextProps } from '../Text'
26
24
  import { Touchable } from '../Touchable'
27
25
  import { GetKeyboardAwarePropsOptions } from '../../utils'
@@ -30,7 +28,7 @@ import { ActionIcon } from '../ActionIcon'
30
28
  export * from './styles'
31
29
 
32
30
  export type ModalProps = Omit<ViewProps, 'variants' | 'styles'> & {
33
- variants?: ComponentVariants<typeof ModalStyles>['variants']
31
+ variants?: ComponentVariants<typeof ModalPresets>['variants']
34
32
  styles?: StylesOf<ModalComposition>
35
33
  dismissOnBackdrop?: boolean
36
34
  buttonProps?: ButtonProps
@@ -50,36 +48,54 @@ export type ModalProps = Omit<ViewProps, 'variants' | 'styles'> & {
50
48
  closeOnHardwareBackPress?: boolean
51
49
  renderHeader?: (props: ModalHeaderProps) => React.ReactElement
52
50
  keyboardAware?: GetKeyboardAwarePropsOptions
53
- scrollProps?: PropsOf<typeof Scroll>
51
+ scrollProps?: PropsOf<typeof Scroll, 'ref'>
54
52
  }
55
53
 
56
54
  export type ModalHeaderProps = Omit<ModalProps, 'styles' | 'renderHeader'> & {
57
55
  styles: {
58
56
  wrapper: ViewProps['style']
57
+ titleWrapper: ViewProps['style']
59
58
  title: TextProps['style']
59
+ description: TextProps['style']
60
60
  closeButton: ButtonProps['styles']
61
61
  }
62
62
  description?: React.ReactElement
63
63
  }
64
64
 
65
65
  const DefaultHeader:React.FC<ModalHeaderProps> = (props) => {
66
- const { styles, title = null, showClose = false, description = null, closable, debugName, closeIconName = 'close', toggle } = props
66
+ const {
67
+ styles,
68
+ title = null,
69
+ showClose = false,
70
+ description = null,
71
+ closable, debugName,
72
+ closeIconName = 'close',
73
+ toggle,
74
+ } = props
67
75
  return <>
68
76
  {(title || showClose || description) && (
69
77
  <View style={styles.wrapper}>
70
- {typeof title === 'string' ? (
71
- <Text text={title} style={styles.title} />
72
- ) : (
73
- title
74
- )}
78
+ <View style={styles.titleWrapper}>
79
+ {TypeGuards.isString(title) ? (
80
+ <Text text={title} style={styles.title} />
81
+ ) : (
82
+ title
83
+ )}
84
+
85
+ {(showClose && closable) && (
86
+ <ActionIcon
87
+ debugName={`${debugName} modal close button`}
88
+ icon={closeIconName as IconPlaceholder}
89
+ onPress={toggle}
90
+ styles={styles.closeButton}
91
+ />
92
+ )}
93
+ </View>
75
94
 
76
- {(showClose && closable) && (
77
- <ActionIcon
78
- debugName={`${debugName} modal close button`}
79
- icon={closeIconName as IconPlaceholder}
80
- onPress={toggle}
81
- styles={styles.closeButton}
82
- />
95
+ {TypeGuards.isString(description) ? (
96
+ <Text text={description} style={styles.description} />
97
+ ) : (
98
+ description
83
99
  )}
84
100
  </View>
85
101
  )}</>
@@ -105,7 +121,10 @@ export const Modal: React.FC<ModalProps> = (modalProps) => {
105
121
  scrollProps = {},
106
122
  closeOnHardwareBackPress = true,
107
123
  ...props
108
- } = modalProps
124
+ } = {
125
+ ...Modal.defaultProps,
126
+ ...modalProps,
127
+ }
109
128
  const variantStyles = useDefaultComponentStyle('u:Modal', {
110
129
  variants: variants as any,
111
130
  transform: StyleSheet.flatten,
@@ -122,15 +141,17 @@ export const Modal: React.FC<ModalProps> = (modalProps) => {
122
141
  }
123
142
  const buttonStyles = React.useMemo(() => getNestedStylesByKey('closeButton', variantStyles), [variantStyles])
124
143
 
125
- const boxAnimationStates = useStaticAnimationStyles(variantStyles, ['box:hidden', 'box:visible'])
126
-
127
- const boxAnimation = useDynamicAnimation(() => {
128
- return visible ? boxAnimationStates['box:visible'] : boxAnimationStates['box:hidden']
144
+ const boxAnimationStyles = useAnimatedVariantStyles({
145
+ updater: (states) => {
146
+ 'worklet'
147
+ return visible ? states['box:visible'] : states['box:hidden']
148
+ },
149
+ animatedProperties: ['box:hidden', 'box:visible'],
150
+ variantStyles,
151
+ transition: variantStyles['box:transition'],
152
+ dependencies: [visible],
129
153
  })
130
154
 
131
- onUpdate(() => {
132
- boxAnimation.animateTo(visible ? boxAnimationStates['box:visible'] : boxAnimationStates['box:hidden'])
133
- }, [visible])
134
155
  const wrapperStyle = getStyles('wrapper')
135
156
 
136
157
  const ScrollComponent = scroll ? Scroll : View
@@ -143,7 +164,9 @@ export const Modal: React.FC<ModalProps> = (modalProps) => {
143
164
  styles: {
144
165
  wrapper: getStyles('header'),
145
166
  title: getStyles('title'),
167
+ description: getStyles('description'),
146
168
  closeButton: buttonStyles,
169
+ titleWrapper: getStyles('titleWrapper'),
147
170
  },
148
171
  }
149
172
  const Header = renderHeader || DefaultHeader
@@ -187,7 +210,7 @@ export const Modal: React.FC<ModalProps> = (modalProps) => {
187
210
  >
188
211
  {dismissOnBackdrop &&
189
212
  <Touchable
190
- onPress={ closable ? toggle : (() => {})}
213
+ onPress={closable && visible ? toggle : (() => {})}
191
214
  debounce={400}
192
215
  debugName={'Modal backdrop touchable'}
193
216
  style={variantStyles.backdropTouchable}
@@ -197,9 +220,7 @@ export const Modal: React.FC<ModalProps> = (modalProps) => {
197
220
 
198
221
  <View
199
222
  animated
200
- state={boxAnimation}
201
- style={getStyles('box')}
202
- transition={{ ...variantStyles['box:transition'] }}
223
+ style={[getStyles('box'), boxAnimationStyles]}
203
224
 
204
225
  {...props}
205
226
  >
@@ -220,4 +241,8 @@ export const Modal: React.FC<ModalProps> = (modalProps) => {
220
241
  )
221
242
  }
222
243
 
244
+ Modal.defaultProps = {
245
+ closeIconName: 'close' as IconPlaceholder,
246
+ }
247
+
223
248
  export default Modal
@@ -1,5 +1,4 @@
1
1
  import {
2
- assignTextStyle,
3
2
  createDefaultVariantFactory,
4
3
  includePresets,
5
4
  } from '@codeleap/common'
@@ -18,6 +17,8 @@ export type ModalParts =
18
17
  | 'header'
19
18
  | 'backdropTouchable'
20
19
  | 'title'
20
+ | 'description'
21
+ | 'titleWrapper'
21
22
  | `closeButton${Capitalize<ActionIconComposition>}`
22
23
 
23
24
  export type ModalComposition =
@@ -28,116 +29,4 @@ export type ModalComposition =
28
29
 
29
30
  const createModalStyle = createDefaultVariantFactory<ModalComposition>()
30
31
 
31
- const presets = includePresets((style) => createModalStyle(() => ({ body: style })))
32
-
33
- export const ModalStyles = {
34
- ...presets,
35
- default: createModalStyle((theme) => {
36
- return {
37
- wrapper: {
38
- ...theme.presets.absolute,
39
- // ...theme.presets.whole,
40
- ...theme.presets.fullHeight,
41
- ...theme.presets.fullWidth,
42
- },
43
- 'box:transition': {
44
- scale: {
45
- duration: theme.values.transitions.modal.duration,
46
- type: 'timing',
47
- },
48
- opacity: {
49
- duration: theme.values.transitions.modal.duration,
50
- type: 'timing',
51
- },
52
- },
53
- 'backdrop:transition': {
54
- opacity: {
55
- duration: theme.values.transitions.modal.duration,
56
- type: 'timing',
57
- },
58
- },
59
- backdrop: {
60
- ...theme.presets.absolute,
61
- ...theme.presets.whole,
62
-
63
- backgroundColor: theme.colors.black,
64
-
65
- },
66
- backdropTouchable: {
67
- // height: '100%',
68
- ...theme.presets.absolute,
69
- ...theme.presets.whole,
70
-
71
- },
72
- 'backdrop:visible': {
73
- opacity: 0.5,
74
- },
75
- 'backdrop:hidden': {
76
- opacity: 0,
77
- },
78
- innerWrapper: {
79
-
80
- },
81
- scroll: {
82
- flex: 1,
83
- // maxHeight: theme.values.height,
84
- },
85
- scrollContent: {
86
- ...theme.presets.alignCenter,
87
- ...theme.presets.justifyCenter,
88
- flexGrow: 1,
89
- ...theme.presets.safeAreaTop(theme.values.innerSpacing.Y),
90
- ...theme.presets.safeAreaBottom(theme.values.innerSpacing.Y),
91
- },
92
- box: {
93
- backgroundColor: theme.colors.background,
94
- width: theme.values.width - theme.spacing.value(theme.values.innerSpacing.X * 2),
95
- borderRadius: theme.borderRadius.modalOuter,
96
- ...theme.spacing.paddingHorizontal(theme.values.innerSpacing.X),
97
- ...theme.spacing.paddingVertical(theme.values.innerSpacing.Y),
98
- },
99
-
100
- 'box:hidden': {
101
- opacity: 0,
102
- scale: 0.8,
103
-
104
- },
105
- 'box:visible': {
106
- opacity: 1,
107
- scale: 1,
108
- },
109
- header: {
110
- flexDirection: 'row',
111
- ...theme.presets.justifySpaceBetween,
112
- ...theme.presets.alignCenter,
113
- ...theme.presets.alignSelfStretch,
114
- ...theme.spacing.marginBottom(1),
115
- },
116
- closeButtonTouchableWrapper: {
117
- alignSelf: 'center',
118
- ...theme.spacing.marginLeft('auto'),
119
- },
120
- closeButtonIcon: {
121
- color: theme.colors.text,
122
- },
123
- title: {
124
- ...assignTextStyle('h3')(theme).text,
125
- },
126
- }
127
- }),
128
- popup: createModalStyle(() => ({})),
129
- fullscreen: createModalStyle((theme) => ({
130
- scrollContent: {
131
- paddingTop: 0,
132
- paddingBottom: 0,
133
- },
134
- box: {
135
- width: '100%',
136
- flexGrow: 1,
137
- borderRadius: 0,
138
- ...theme.presets.center,
139
- ...theme.presets.safeAreaTop(theme.values.innerSpacing.Y),
140
- ...theme.presets.safeAreaBottom(theme.values.innerSpacing.Y),
141
- },
142
- })),
143
- }
32
+ export const ModalPresets = includePresets((style) => createModalStyle(() => ({ body: style })))
@@ -0,0 +1,318 @@
1
+ import * as React from 'react'
2
+ import {
3
+ useDefaultComponentStyle,
4
+ TypeGuards,
5
+ useState,
6
+ useRef,
7
+ useValidate,
8
+ IconPlaceholder,
9
+ } from '@codeleap/common'
10
+ import { forwardRef, useImperativeHandle } from 'react'
11
+ import { NumberIncrementPresets } from './styles'
12
+ import { InputBase, selectInputBaseProps } from '../InputBase'
13
+ import { Text } from '../Text'
14
+ import { MaskedTextInput } from '../../modules/textInputMask'
15
+ import { TextInput as NativeTextInput, TextInputProps as NativeTextInputProps, NativeSyntheticEvent, TextInputFocusEventData } from 'react-native'
16
+ import { Touchable } from '../Touchable'
17
+ import { useActionValidate } from './utils'
18
+ import { NumberIncrementProps } from './types'
19
+
20
+ export * from './styles'
21
+ export * from './types'
22
+
23
+ const MAX_VALID_DIGITS = 1000000000000000 // maximum number of digits that the input supports to perform operations
24
+
25
+ const defaultParseValue = (_value: string) => {
26
+ const value = _value?.length > 0 ? _value : '0'
27
+
28
+ const parsedValue = value?.replace(/[^\d.]/g, '')
29
+
30
+ return parseFloat(parsedValue)
31
+ }
32
+
33
+ const defaultProps: Partial<NumberIncrementProps> = {
34
+ max: MAX_VALID_DIGITS,
35
+ min: 0,
36
+ step: 1,
37
+ editable: true,
38
+ separator: null,
39
+ formatter: null,
40
+ parseValue: defaultParseValue,
41
+ delimiter: null,
42
+ mask: null,
43
+ masking: null,
44
+ timeoutActionFocus: 300,
45
+ actionPressAutoFocus: true,
46
+ actionDebounce: null,
47
+ }
48
+
49
+ export const NumberIncrement = forwardRef<NativeTextInput, NumberIncrementProps>((props, inputRef) => {
50
+ const {
51
+ inputBaseProps,
52
+ others,
53
+ } = selectInputBaseProps({
54
+ ...NumberIncrement.defaultProps,
55
+ ...props,
56
+ })
57
+
58
+ const {
59
+ variants = [],
60
+ style = {},
61
+ styles = {},
62
+ value,
63
+ disabled,
64
+ onChangeText,
65
+ onChangeMask,
66
+ max,
67
+ min,
68
+ step,
69
+ editable,
70
+ validate,
71
+ onPress,
72
+ _error,
73
+ masking,
74
+ separator,
75
+ prefix,
76
+ suffix,
77
+ delimiter,
78
+ formatter,
79
+ actionPressAutoFocus,
80
+ parseValue,
81
+ timeoutActionFocus,
82
+ mask,
83
+ actionDebounce,
84
+ ...textInputProps
85
+ } = others
86
+
87
+ const [isFocused, setIsFocused] = useState(false)
88
+
89
+ const innerInputRef = useRef<NativeTextInput>(null)
90
+
91
+ const actionValidation = useActionValidate(validate)
92
+ const validation = useValidate(value, validate)
93
+
94
+ const hasError = !validation.isValid || _error || !actionValidation?.isValid
95
+ const errorMessage = validation.message || _error || actionValidation?.message
96
+
97
+ const isFormatted = TypeGuards.isFunction(formatter)
98
+
99
+ const hasMaskProps = [masking, prefix, suffix, delimiter, separator, mask].some(v => !!v)
100
+
101
+ const isMasked = hasMaskProps && !isFormatted
102
+
103
+ const InputElement = isMasked ? MaskedTextInput : NativeTextInput
104
+
105
+ // @ts-expect-error - React's ref type system is weird
106
+ useImperativeHandle(inputRef, () => {
107
+ return {
108
+ ...innerInputRef.current,
109
+ focus: () => {
110
+ innerInputRef.current?.focus?.()
111
+ },
112
+ isTextInput: true,
113
+ }
114
+ }, [!!innerInputRef?.current?.focus])
115
+
116
+ const incrementDisabled = React.useMemo(() => {
117
+ if (TypeGuards.isNumber(max) && (Number(value) >= max)) {
118
+ return true
119
+ }
120
+ return false
121
+ }, [value])
122
+
123
+ const decrementDisabled = React.useMemo(() => {
124
+ if (TypeGuards.isNumber(min) && (Number(value) <= min)) {
125
+ return true
126
+ }
127
+ return false
128
+ }, [value])
129
+
130
+ const variantStyles = useDefaultComponentStyle<'u:NumberIncrement', typeof NumberIncrementPresets>(
131
+ 'u:NumberIncrement',
132
+ {
133
+ variants,
134
+ styles,
135
+ rootElement: 'wrapper',
136
+ },
137
+ )
138
+
139
+ const inputTextStyle = React.useMemo(() => ([
140
+ variantStyles.input,
141
+ isFocused && variantStyles['input:focus'],
142
+ hasError && variantStyles['input:error'],
143
+ disabled && variantStyles['input:disabled'],
144
+ ]), [disabled, isFocused, hasError])
145
+
146
+ const placeholderTextColor = [
147
+ [disabled, variantStyles['placeholder:disabled']],
148
+ [hasError, variantStyles['placeholder:error']],
149
+ [isFocused, variantStyles['placeholder:focus']],
150
+ [true, variantStyles.placeholder],
151
+ ].find(([x]) => x)?.[1]?.color
152
+
153
+ const selectionColor = [
154
+ [disabled, variantStyles['selection:disabled']],
155
+ [!validation.isValid, variantStyles['selection:error']],
156
+ [isFocused, variantStyles['selection:focus']],
157
+ [true, variantStyles.selection],
158
+ ].find(([x]) => x)?.[1]?.color
159
+
160
+ const onChange = (newValue: number) => {
161
+ actionValidation.onAction(newValue)
162
+ // @ts-ignore
163
+ if (onChangeText) onChangeText?.(newValue)
164
+ }
165
+
166
+ const actionTimeoutRef = useRef(null)
167
+
168
+ const clearActionTimeoutRef = React.useCallback(() => {
169
+ if (actionTimeoutRef.current !== null) {
170
+ clearTimeout(actionTimeoutRef.current)
171
+ actionTimeoutRef.current = null
172
+ }
173
+ }, [actionTimeoutRef.current])
174
+
175
+ const handleChange = React.useCallback((action: 'increment' | 'decrement') => {
176
+ if (actionPressAutoFocus) setIsFocused(true)
177
+ clearActionTimeoutRef()
178
+
179
+ if (action === 'increment' && !incrementDisabled) {
180
+ const newValue = Number(value) + step
181
+ onChange(newValue)
182
+ } else if (action === 'decrement' && !decrementDisabled) {
183
+ const newValue = Number(value) - step
184
+ onChange(newValue)
185
+ }
186
+
187
+ if (actionPressAutoFocus) {
188
+ actionTimeoutRef.current = setTimeout(() => {
189
+ setIsFocused(false)
190
+ }, timeoutActionFocus)
191
+ }
192
+ }, [value])
193
+
194
+ const handleBlur = React.useCallback((e: NativeSyntheticEvent<TextInputFocusEventData>) => {
195
+ if (TypeGuards.isNumber(max) && (value >= max)) {
196
+ onChange(max)
197
+ } else if (TypeGuards.isNumber(min) && (value <= min) || !value || String(value)?.length <= 0) {
198
+ onChange(min)
199
+ }
200
+
201
+ validation?.onInputBlurred()
202
+ setIsFocused(false)
203
+ props?.onBlur?.(e)
204
+ }, [validation?.onInputBlurred, props?.onBlur, value])
205
+
206
+ const handleFocus = React.useCallback((e?: NativeSyntheticEvent<TextInputFocusEventData>) => {
207
+ validation?.onInputFocused()
208
+ clearActionTimeoutRef()
209
+ if (editable) setIsFocused(true)
210
+ if (e) props?.onFocus?.(e)
211
+ }, [validation?.onInputFocused, props?.onFocus])
212
+
213
+ const handleChangeInput: NativeTextInputProps['onChangeText'] = (text) => {
214
+ const value = parseValue(text)
215
+
216
+ if (value >= MAX_VALID_DIGITS) {
217
+ onChange(MAX_VALID_DIGITS)
218
+ return MAX_VALID_DIGITS
219
+ }
220
+
221
+ onChange(value)
222
+ return value
223
+ }
224
+
225
+ const handleMaskChange = (masked: string, unmasked: any) => {
226
+ handleChangeInput?.(masked)
227
+ if (onChangeMask) onChangeMask(masked, unmasked)
228
+ }
229
+
230
+ const maskingExtraProps = isMasked ? {
231
+ type: TypeGuards.isNil(mask) ? 'money' : 'custom',
232
+ onChangeText: handleMaskChange,
233
+ ...masking,
234
+ options: {
235
+ unit: prefix,
236
+ separator: separator ?? '.',
237
+ suffixUnit: suffix,
238
+ delimiter: delimiter ?? ',',
239
+ mask: mask,
240
+ ...masking?.options,
241
+ },
242
+ ref: null,
243
+ refInput: (inputRef) => {
244
+ if (!!inputRef) {
245
+ innerInputRef.current = inputRef
246
+ }
247
+ },
248
+ } : {}
249
+
250
+ const onPressInnerWrapper = () => {
251
+ handleFocus()
252
+ if (editable) innerInputRef.current?.focus?.()
253
+ if (onPress) onPress?.()
254
+ }
255
+
256
+ return (
257
+ <InputBase
258
+ {...inputBaseProps}
259
+ error={hasError ? errorMessage : null}
260
+ styles={{
261
+ ...variantStyles,
262
+ innerWrapper: [
263
+ variantStyles.innerWrapper,
264
+ ],
265
+ }}
266
+ rightIcon={{
267
+ name: 'plus' as IconPlaceholder,
268
+ disabled: disabled || incrementDisabled || !editable,
269
+ onPress: () => handleChange('increment'),
270
+ debounce: actionDebounce,
271
+ ...inputBaseProps.rightIcon,
272
+ }}
273
+ leftIcon={{
274
+ name: 'minus' as IconPlaceholder,
275
+ disabled: disabled || decrementDisabled || !editable,
276
+ onPress: () => handleChange('decrement'),
277
+ debounce: actionDebounce,
278
+ ...inputBaseProps.leftIcon,
279
+ }}
280
+ style={style}
281
+ disabled={disabled}
282
+ focused={isFocused}
283
+ innerWrapper={Touchable}
284
+ innerWrapperProps={{
285
+ ...(inputBaseProps.innerWrapperProps || {}),
286
+ rippleDisabled: true,
287
+ onPress: onPressInnerWrapper,
288
+ }}
289
+ >
290
+ {editable && !disabled ? (
291
+ <InputElement
292
+ keyboardType='numeric'
293
+ textAlign='center'
294
+ textAlignVertical='center'
295
+ allowFontScaling={false}
296
+ editable={!disabled}
297
+ placeholderTextColor={placeholderTextColor}
298
+ value={isFormatted ? formatter(value) : String(value)}
299
+ selectionColor={selectionColor}
300
+ onChangeText={handleChangeInput}
301
+ {...textInputProps}
302
+ onBlur={handleBlur}
303
+ onFocus={handleFocus}
304
+ style={inputTextStyle}
305
+ ref={innerInputRef}
306
+ {...maskingExtraProps}
307
+ />
308
+ ) : (
309
+ <Text
310
+ text={isFormatted ? formatter(value) : String(value)}
311
+ style={inputTextStyle}
312
+ />
313
+ )}
314
+ </InputBase>
315
+ )
316
+ })
317
+
318
+ NumberIncrement.defaultProps = defaultProps
@@ -0,0 +1,14 @@
1
+ import { createDefaultVariantFactory, includePresets } from '@codeleap/common'
2
+ import { InputBaseParts, InputBaseStates } from '../InputBase'
3
+
4
+ export type NumberIncrementParts = InputBaseParts | 'input' | 'placeholder' | 'selection'
5
+
6
+ export type NumberIncrementStates = InputBaseStates
7
+
8
+ export type NumberIncrementComposition =
9
+ | NumberIncrementParts
10
+ | `${NumberIncrementParts}:${NumberIncrementStates}`
11
+
12
+ const createNumberIncrementStyle = createDefaultVariantFactory<NumberIncrementComposition>()
13
+
14
+ export const NumberIncrementPresets = includePresets((styles) => createNumberIncrementStyle(() => ({ wrapper: styles })))
@@ -0,0 +1,44 @@
1
+ import {
2
+ ComponentVariants,
3
+ yup,
4
+ StylesOf,
5
+ PropsOf,
6
+ FormTypes,
7
+ } from '@codeleap/common'
8
+ import { NumberIncrementPresets, NumberIncrementComposition } from './styles'
9
+ import { TextInputMaskProps } from '../../modules/textInputMask'
10
+ import { TextInputProps as NativeTextInputProps } from 'react-native'
11
+ import { View } from '../View'
12
+ import { Touchable } from '../Touchable'
13
+ import { InputBaseProps } from '../InputBase'
14
+
15
+ type Masking = FormTypes.TextField['masking']
16
+ type MaskOptions = Masking['options']
17
+
18
+ export type NumberIncrementProps =
19
+ Omit<InputBaseProps, 'styles' | 'variants'> &
20
+ NativeTextInputProps & {
21
+ variants?: ComponentVariants<typeof NumberIncrementPresets>['variants']
22
+ styles?: StylesOf<NumberIncrementComposition>
23
+ value: number
24
+ validate?: FormTypes.ValidatorWithoutForm<string> | yup.SchemaOf<string>
25
+ style?: PropsOf<typeof View>['style']
26
+ max?: number
27
+ min?: number
28
+ step?: number
29
+ editable?: boolean
30
+ _error?: string
31
+ placeholder?: string
32
+ onChangeMask?: TextInputMaskProps['onChangeText']
33
+ masking?: Exclude<Masking, 'mask' | 'format'>
34
+ prefix?: MaskOptions['unit']
35
+ suffix?: MaskOptions['suffixUnit']
36
+ separator?: MaskOptions['separator']
37
+ delimiter?: MaskOptions['delimiter']
38
+ mask?: MaskOptions['mask']
39
+ formatter?: (value: string | number) => string
40
+ parseValue?: (value: string) => number
41
+ timeoutActionFocus?: number
42
+ actionPressAutoFocus?: boolean
43
+ actionDebounce?: number | null
44
+ } & Pick<PropsOf<typeof Touchable>, 'onPress'>