@draftbit/core 46.4.4-c5d4b3.2 → 46.4.4-caab07.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.
Files changed (372) hide show
  1. package/lib/commonjs/Provider.js.map +1 -1
  2. package/lib/commonjs/components/ActionSheet/ActionSheet.js.map +1 -1
  3. package/lib/commonjs/components/ActionSheet/ActionSheetCancel.js.map +1 -1
  4. package/lib/commonjs/components/ActionSheet/index.js.map +1 -1
  5. package/lib/commonjs/components/AvatarEdit.js +15 -4
  6. package/lib/commonjs/components/AvatarEdit.js.map +1 -1
  7. package/lib/commonjs/components/Banner.js +23 -4
  8. package/lib/commonjs/components/Banner.js.map +1 -1
  9. package/lib/commonjs/components/CardBlock.js +13 -4
  10. package/lib/commonjs/components/CardContainer.js +14 -4
  11. package/lib/commonjs/components/CardContainer.js.map +1 -1
  12. package/lib/commonjs/components/Carousel.js +2 -2
  13. package/lib/commonjs/components/Checkbox/CheckboxGroupRow.js +22 -5
  14. package/lib/commonjs/components/Checkbox/CheckboxGroupRow.js.map +1 -1
  15. package/lib/commonjs/components/Checkbox/CheckboxRow.js.map +1 -1
  16. package/lib/commonjs/components/Checkbox/index.js.map +1 -1
  17. package/lib/commonjs/components/CircleImage.js +16 -2
  18. package/lib/commonjs/components/Config.js.map +1 -1
  19. package/lib/commonjs/components/DatePicker/DatePicker.js +43 -21
  20. package/lib/commonjs/components/DatePicker/DatePicker.js.map +1 -1
  21. package/lib/commonjs/components/DatePicker/DatePickerComponent.js.map +1 -1
  22. package/lib/commonjs/components/DatePicker/DatePickerComponent.web.js.map +1 -1
  23. package/lib/commonjs/components/DeprecatedButton.js +19 -3
  24. package/lib/commonjs/components/DeprecatedButton.js.map +1 -1
  25. package/lib/commonjs/components/Divider.js +12 -1
  26. package/lib/commonjs/components/Divider.js.map +1 -1
  27. package/lib/commonjs/components/FAB.js +19 -4
  28. package/lib/commonjs/components/FAB.js.map +1 -1
  29. package/lib/commonjs/components/FieldSearchBarFull.js.map +1 -1
  30. package/lib/commonjs/components/FormRow.js +17 -3
  31. package/lib/commonjs/components/FormRow.js.map +1 -1
  32. package/lib/commonjs/components/Header.js.map +1 -1
  33. package/lib/commonjs/components/HeaderLarge.js.map +1 -1
  34. package/lib/commonjs/components/Image.js +16 -2
  35. package/lib/commonjs/components/Picker/Picker.js +7 -7
  36. package/lib/commonjs/components/Picker/Picker.js.map +1 -1
  37. package/lib/commonjs/components/Picker/PickerComponent.android.js +19 -5
  38. package/lib/commonjs/components/Picker/PickerComponent.android.js.map +1 -1
  39. package/lib/commonjs/components/Picker/PickerComponent.ios.js +30 -11
  40. package/lib/commonjs/components/Picker/PickerComponent.ios.js.map +1 -1
  41. package/lib/commonjs/components/Portal/PortalHost.js +45 -15
  42. package/lib/commonjs/components/Portal/PortalHost.js.map +1 -1
  43. package/lib/commonjs/components/RadioButton/RadioButton.js.map +1 -1
  44. package/lib/commonjs/components/RadioButton/RadioButtonFieldGroup.js +10 -1
  45. package/lib/commonjs/components/RadioButton/RadioButtonFieldGroup.js.map +1 -1
  46. package/lib/commonjs/components/ResizeMode.js +2 -1
  47. package/lib/commonjs/components/RowBodyIcon.js.map +1 -1
  48. package/lib/commonjs/components/RowHeadlineImageCaption.js.map +1 -1
  49. package/lib/commonjs/components/ScreenContainer.js +20 -4
  50. package/lib/commonjs/components/ScreenContainer.js.map +1 -1
  51. package/lib/commonjs/components/Stepper.js +1 -0
  52. package/lib/commonjs/components/Stepper.js.map +1 -1
  53. package/lib/commonjs/components/Surface.js +13 -2
  54. package/lib/commonjs/components/Swiper/index.js.map +1 -1
  55. package/lib/commonjs/components/Text.js +50 -4
  56. package/lib/commonjs/components/TextField.js +76 -28
  57. package/lib/commonjs/components/ToggleButton.js +14 -2
  58. package/lib/commonjs/components/ToggleButton.js.map +1 -1
  59. package/lib/commonjs/components/Typography.js.map +1 -1
  60. package/lib/commonjs/index.js.map +1 -1
  61. package/lib/commonjs/interfaces/Icon.js.map +1 -1
  62. package/lib/commonjs/mappings/AccordionItem.js.map +1 -1
  63. package/lib/commonjs/mappings/ActionSheet.js.map +1 -1
  64. package/lib/commonjs/mappings/ActionSheetItem.js.map +1 -1
  65. package/lib/commonjs/mappings/AudioPlayer.js.map +1 -1
  66. package/lib/commonjs/mappings/AvatarEdit.js.map +1 -1
  67. package/lib/commonjs/mappings/BlurView.js.map +1 -1
  68. package/lib/commonjs/mappings/Card.js.map +1 -1
  69. package/lib/commonjs/mappings/CardInline.js.map +1 -1
  70. package/lib/commonjs/mappings/Carousel.js.map +1 -1
  71. package/lib/commonjs/mappings/CheckboxRow.js.map +1 -1
  72. package/lib/commonjs/mappings/DatePicker.js +13 -0
  73. package/lib/commonjs/mappings/DatePicker.js.map +1 -1
  74. package/lib/commonjs/mappings/Fetch.js.map +1 -1
  75. package/lib/commonjs/mappings/FieldSearchBarFull.js +1 -1
  76. package/lib/commonjs/mappings/FieldSearchBarFull.js.map +1 -1
  77. package/lib/commonjs/mappings/HeaderLarge.js.map +1 -1
  78. package/lib/commonjs/mappings/HeaderMedium.js.map +1 -1
  79. package/lib/commonjs/mappings/ProgressCircle.js.map +1 -1
  80. package/lib/commonjs/mappings/ProgressIndicator.js.map +1 -1
  81. package/lib/commonjs/mappings/RadioButton.js.map +1 -1
  82. package/lib/commonjs/mappings/RadioButtonGroup.js.map +1 -1
  83. package/lib/commonjs/mappings/RadioButtonRow.js.map +1 -1
  84. package/lib/commonjs/mappings/RowHeadlineImageCaption.js.map +1 -1
  85. package/lib/commonjs/mappings/Stepper.js.map +1 -1
  86. package/lib/commonjs/mappings/Surface.js.map +1 -1
  87. package/lib/commonjs/mappings/Swiper.js.map +1 -1
  88. package/lib/commonjs/mappings/SwiperItem.js.map +1 -1
  89. package/lib/commonjs/mappings/Switch.js.map +1 -1
  90. package/lib/commonjs/mappings/TextArea.js.map +1 -1
  91. package/lib/commonjs/mappings/TextField.js.map +1 -1
  92. package/lib/commonjs/mappings/View.js.map +1 -1
  93. package/lib/commonjs/utilities.js +1 -2
  94. package/lib/commonjs/utilities.js.map +1 -1
  95. package/lib/module/components/Accordion/index.js.map +1 -1
  96. package/lib/module/components/ActionSheet/ActionSheet.js.map +1 -1
  97. package/lib/module/components/ActionSheet/ActionSheetItem.js.map +1 -1
  98. package/lib/module/components/Banner.js.map +1 -1
  99. package/lib/module/components/Button.js.map +1 -1
  100. package/lib/module/components/Card.js.map +1 -1
  101. package/lib/module/components/CardBlock.js +14 -4
  102. package/lib/module/components/CardBlock.js.map +1 -1
  103. package/lib/module/components/CardContainerShortImage.js +16 -4
  104. package/lib/module/components/CardContainerShortImage.js.map +1 -1
  105. package/lib/module/components/Carousel.js +27 -9
  106. package/lib/module/components/Carousel.js.map +1 -1
  107. package/lib/module/components/Checkbox/CheckboxGroup.js +17 -2
  108. package/lib/module/components/Checkbox/CheckboxGroup.js.map +1 -1
  109. package/lib/module/components/Checkbox/index.js.map +1 -1
  110. package/lib/module/components/Container.js +16 -4
  111. package/lib/module/components/Container.js.map +1 -1
  112. package/lib/module/components/DatePicker/DatePicker.js +44 -21
  113. package/lib/module/components/DatePicker/DatePicker.js.map +1 -1
  114. package/lib/module/components/DatePicker/DatePickerComponent.js.map +1 -1
  115. package/lib/module/components/DatePicker/DatePickerComponentType.js.map +1 -1
  116. package/lib/module/components/DeprecatedFAB.js +21 -3
  117. package/lib/module/components/Elevation.js +15 -2
  118. package/lib/module/components/Elevation.js.map +1 -1
  119. package/lib/module/components/HeaderLarge.js.map +1 -1
  120. package/lib/module/components/HeaderMedium.js.map +1 -1
  121. package/lib/module/components/Justification.js +2 -2
  122. package/lib/module/components/Layout.js +41 -21
  123. package/lib/module/components/Layout.js.map +1 -1
  124. package/lib/module/components/NumberInput.js.map +1 -1
  125. package/lib/module/components/Picker/Picker.js +2 -2
  126. package/lib/module/components/Picker/Picker.js.map +1 -1
  127. package/lib/module/components/Picker/PickerComponent.android.js +19 -4
  128. package/lib/module/components/Picker/PickerComponent.android.js.map +1 -1
  129. package/lib/module/components/Picker/PickerComponent.ios.js +32 -11
  130. package/lib/module/components/Picker/PickerComponent.web.js +20 -4
  131. package/lib/module/components/Picker/PickerTypes.js.map +1 -1
  132. package/lib/module/components/Portal/PortalHost.js +45 -15
  133. package/lib/module/components/Portal/PortalHost.js.map +1 -1
  134. package/lib/module/components/Portal/PortalManager.js +34 -7
  135. package/lib/module/components/ProgressBar.js +38 -7
  136. package/lib/module/components/RadioButton/RadioButtonFieldGroup.js +10 -1
  137. package/lib/module/components/RadioButton/RadioButtonFieldGroup.js.map +1 -1
  138. package/lib/module/components/RadioButton/RadioButtonRow.js +23 -6
  139. package/lib/module/components/RadioButton/RadioButtonRow.js.map +1 -1
  140. package/lib/module/components/Row.js.map +1 -1
  141. package/lib/module/components/RowBodyIcon.js.map +1 -1
  142. package/lib/module/components/SVG.js.map +1 -1
  143. package/lib/module/components/ScreenContainer.js +20 -4
  144. package/lib/module/components/ScreenContainer.js.map +1 -1
  145. package/lib/module/components/Stepper.js +2 -2
  146. package/lib/module/components/Stepper.js.map +1 -1
  147. package/lib/module/components/Surface.js +15 -1
  148. package/lib/module/components/Swiper/Swiper.js.map +1 -1
  149. package/lib/module/components/Swiper/SwiperItem.js.map +1 -1
  150. package/lib/module/components/Switch.js +20 -10
  151. package/lib/module/components/Switch.js.map +1 -1
  152. package/lib/module/components/Text.js +50 -4
  153. package/lib/module/components/TextField.js +78 -28
  154. package/lib/module/components/TextField.js.map +1 -1
  155. package/lib/module/components/ToggleButton.js +16 -2
  156. package/lib/module/components/ToggleButton.js.map +1 -1
  157. package/lib/module/constants.js +1 -1
  158. package/lib/module/hooks.js +1 -3
  159. package/lib/module/mappings/Accordion.js.map +1 -1
  160. package/lib/module/mappings/AccordionItem.js.map +1 -1
  161. package/lib/module/mappings/ActionSheetCancel.js.map +1 -1
  162. package/lib/module/mappings/AudioPlayer.js.map +1 -1
  163. package/lib/module/mappings/Banner.js.map +1 -1
  164. package/lib/module/mappings/Button.js.map +1 -1
  165. package/lib/module/mappings/Card.js.map +1 -1
  166. package/lib/module/mappings/CardContainer.js.map +1 -1
  167. package/lib/module/mappings/CardInline.js.map +1 -1
  168. package/lib/module/mappings/Carousel.js.map +1 -1
  169. package/lib/module/mappings/CustomCode.js.map +1 -1
  170. package/lib/module/mappings/DatePicker.js +14 -1
  171. package/lib/module/mappings/DatePicker.js.map +1 -1
  172. package/lib/module/mappings/Divider.js.map +1 -1
  173. package/lib/module/mappings/FAB.js.map +1 -1
  174. package/lib/module/mappings/KeyboardAwareScrollView.js.map +1 -1
  175. package/lib/module/mappings/MapCallout.js.map +1 -1
  176. package/lib/module/mappings/MapMarker.js.map +1 -1
  177. package/lib/module/mappings/Modal.js.map +1 -1
  178. package/lib/module/mappings/RadioButton.js.map +1 -1
  179. package/lib/module/mappings/RowHeadlineImageIcon.js.map +1 -1
  180. package/lib/module/mappings/SVG.js.map +1 -1
  181. package/lib/module/mappings/SafeAreaView.js.map +1 -1
  182. package/lib/module/mappings/ScrollView.js.map +1 -1
  183. package/lib/module/mappings/SwiperItem.js.map +1 -1
  184. package/lib/module/mappings/Text.js.map +1 -1
  185. package/lib/module/mappings/TextArea.js.map +1 -1
  186. package/lib/module/mappings/Video.js.map +1 -1
  187. package/lib/module/styles/DarkTheme.js.map +1 -1
  188. package/lib/module/styles/DefaultTheme.js.map +1 -1
  189. package/lib/module/styles/fonts.js.map +1 -1
  190. package/lib/module/theming.js.map +1 -1
  191. package/lib/module/utilities.js +1 -2
  192. package/lib/module/utilities.js.map +1 -1
  193. package/lib/typescript/src/components/DatePicker/DatePicker.d.ts +4 -0
  194. package/lib/typescript/src/components/DatePicker/DatePicker.d.ts.map +1 -1
  195. package/lib/typescript/src/components/Picker/Picker.d.ts.map +1 -1
  196. package/lib/typescript/src/mappings/DatePicker.d.ts +42 -0
  197. package/lib/typescript/src/mappings/DatePicker.d.ts.map +1 -1
  198. package/package.json +3 -3
  199. package/src/Provider.js +11 -4
  200. package/src/components/Accordion/AccordionGroup.js +80 -36
  201. package/src/components/Accordion/AccordionItem.js +51 -24
  202. package/src/components/ActionSheet/ActionSheet.js +60 -35
  203. package/src/components/ActionSheet/ActionSheetCancel.js +7 -2
  204. package/src/components/ActionSheet/ActionSheetItem.js +35 -24
  205. package/src/components/AnimatedCircularProgress.js +57 -38
  206. package/src/components/AspectRatio.js +21 -13
  207. package/src/components/AvatarEdit.js +46 -23
  208. package/src/components/Banner.js +151 -99
  209. package/src/components/Button.js +152 -97
  210. package/src/components/Card.js +126 -45
  211. package/src/components/CardBlock.js +109 -46
  212. package/src/components/CardContainer.js +140 -58
  213. package/src/components/CardContainerRating.js +152 -67
  214. package/src/components/CardContainerShortImage.js +80 -25
  215. package/src/components/CardInline.js +64 -25
  216. package/src/components/Carousel.js +99 -58
  217. package/src/components/Carousel.tsx +2 -2
  218. package/src/components/Checkbox/Checkbox.js +93 -55
  219. package/src/components/Checkbox/CheckboxGroup.js +28 -15
  220. package/src/components/Checkbox/CheckboxGroupRow.js +104 -59
  221. package/src/components/Checkbox/CheckboxRow.js +107 -61
  222. package/src/components/Checkbox/context.js +6 -6
  223. package/src/components/CircleImage.js +14 -4
  224. package/src/components/CircularProgress.js +146 -75
  225. package/src/components/Config.js +59 -52
  226. package/src/components/Container.js +80 -38
  227. package/src/components/DatePicker/DatePicker.js +480 -337
  228. package/src/components/DatePicker/DatePicker.tsx +23 -7
  229. package/src/components/DatePicker/DatePickerComponent.js +21 -7
  230. package/src/components/DatePicker/DatePickerComponent.web.js +48 -22
  231. package/src/components/DeprecatedButton.js +136 -82
  232. package/src/components/DeprecatedCardWrapper.js +19 -10
  233. package/src/components/DeprecatedFAB.js +146 -101
  234. package/src/components/Divider.js +10 -7
  235. package/src/components/Elevation.js +24 -13
  236. package/src/components/FAB.js +84 -38
  237. package/src/components/FieldSearchBarFull.js +83 -46
  238. package/src/components/FormRow.js +28 -12
  239. package/src/components/Header.js +79 -35
  240. package/src/components/HeaderLarge.js +19 -2
  241. package/src/components/HeaderMedium.js +19 -2
  242. package/src/components/HeaderOverline.js +20 -2
  243. package/src/components/IconButton.js +68 -29
  244. package/src/components/Image.js +52 -38
  245. package/src/components/Layout.js +99 -38
  246. package/src/components/NumberInput.js +46 -42
  247. package/src/components/Picker/Picker.js +411 -238
  248. package/src/components/Picker/Picker.tsx +2 -2
  249. package/src/components/Picker/PickerComponent.android.js +110 -57
  250. package/src/components/Picker/PickerComponent.ios.js +131 -63
  251. package/src/components/Picker/PickerComponent.web.js +111 -58
  252. package/src/components/Portal/Portal.js +10 -5
  253. package/src/components/Portal/PortalConsumer.js +25 -23
  254. package/src/components/Portal/PortalHost.js +83 -72
  255. package/src/components/Portal/PortalManager.js +38 -25
  256. package/src/components/ProgressBar.js +139 -111
  257. package/src/components/ProgressCircle.js +40 -7
  258. package/src/components/ProgressIndicator.js +43 -22
  259. package/src/components/RadioButton/RadioButton.js +37 -10
  260. package/src/components/RadioButton/RadioButtonFieldGroup.js +26 -10
  261. package/src/components/RadioButton/RadioButtonGroup.js +53 -35
  262. package/src/components/RadioButton/RadioButtonRow.js +105 -58
  263. package/src/components/RadioButton/context.js +6 -6
  264. package/src/components/Row.js +81 -41
  265. package/src/components/RowBodyIcon.js +24 -2
  266. package/src/components/RowHeadlineImageCaption.js +30 -6
  267. package/src/components/RowHeadlineImageIcon.js +34 -8
  268. package/src/components/SVG.js +27 -7
  269. package/src/components/ScreenContainer.js +56 -27
  270. package/src/components/Slider.js +95 -49
  271. package/src/components/StarRating.js +85 -44
  272. package/src/components/StepIndicator.js +416 -328
  273. package/src/components/Stepper.js +74 -32
  274. package/src/components/Stepper.tsx +1 -1
  275. package/src/components/Surface.js +40 -25
  276. package/src/components/Swiper/Swiper.js +49 -18
  277. package/src/components/Swiper/SwiperItem.js +5 -4
  278. package/src/components/Switch.js +102 -46
  279. package/src/components/Text.js +37 -23
  280. package/src/components/TextField.js +515 -398
  281. package/src/components/ToggleButton.js +56 -31
  282. package/src/components/Touchable.js +25 -9
  283. package/src/components/Typography.js +45 -27
  284. package/src/components/useAuthState.js +27 -27
  285. package/src/constants.js +7 -5
  286. package/src/hooks.js +9 -9
  287. package/src/index.js +19 -3
  288. package/src/interfaces/Icon.js +2 -1
  289. package/src/mappings/Accordion.js +47 -39
  290. package/src/mappings/AccordionItem.js +19 -14
  291. package/src/mappings/ActionSheet.js +10 -10
  292. package/src/mappings/ActionSheetCancel.js +24 -17
  293. package/src/mappings/ActionSheetItem.js +28 -21
  294. package/src/mappings/ActivityIndicator.js +64 -55
  295. package/src/mappings/AudioPlayer.js +23 -17
  296. package/src/mappings/AvatarEdit.js +40 -34
  297. package/src/mappings/Banner.js +37 -30
  298. package/src/mappings/BlurView.js +46 -38
  299. package/src/mappings/Button.js +86 -77
  300. package/src/mappings/Card.js +61 -50
  301. package/src/mappings/CardBlock.js +125 -114
  302. package/src/mappings/CardContainer.js +108 -98
  303. package/src/mappings/CardContainerRating.js +126 -117
  304. package/src/mappings/CardContainerShortImage.js +125 -116
  305. package/src/mappings/CardInline.js +57 -49
  306. package/src/mappings/Carousel.js +21 -16
  307. package/src/mappings/Checkbox.js +54 -44
  308. package/src/mappings/CheckboxGroup.js +34 -24
  309. package/src/mappings/CheckboxRow.js +71 -59
  310. package/src/mappings/CircleImage.js +29 -22
  311. package/src/mappings/Container.js +37 -27
  312. package/src/mappings/CustomCode.js +5 -5
  313. package/src/mappings/DatePicker.js +181 -149
  314. package/src/mappings/DatePicker.ts +23 -0
  315. package/src/mappings/Divider.js +30 -24
  316. package/src/mappings/FAB.js +45 -35
  317. package/src/mappings/Fetch.js +10 -9
  318. package/src/mappings/FieldSearchBarFull.js +55 -47
  319. package/src/mappings/FlashList.js +38 -31
  320. package/src/mappings/FlatList.js +27 -22
  321. package/src/mappings/HeaderLarge.js +34 -26
  322. package/src/mappings/HeaderMedium.js +59 -52
  323. package/src/mappings/HeaderOverline.js +59 -52
  324. package/src/mappings/Icon.js +36 -29
  325. package/src/mappings/IconButton.js +43 -33
  326. package/src/mappings/Image.js +40 -32
  327. package/src/mappings/ImageBackground.js +38 -27
  328. package/src/mappings/KeyboardAvoidingView.js +46 -38
  329. package/src/mappings/KeyboardAwareScrollView.js +60 -48
  330. package/src/mappings/Layout.js +198 -192
  331. package/src/mappings/LinearGradient.js +79 -74
  332. package/src/mappings/MapCallout.js +27 -19
  333. package/src/mappings/MapMarker.js +53 -45
  334. package/src/mappings/MapView.js +146 -135
  335. package/src/mappings/Modal.js +47 -39
  336. package/src/mappings/NumberInput.js +247 -229
  337. package/src/mappings/Picker.js +153 -140
  338. package/src/mappings/ProgressBar.js +106 -98
  339. package/src/mappings/ProgressCircle.js +112 -105
  340. package/src/mappings/ProgressIndicator.js +186 -178
  341. package/src/mappings/RadioButton.js +59 -49
  342. package/src/mappings/RadioButtonGroup.js +21 -15
  343. package/src/mappings/RadioButtonRow.js +48 -40
  344. package/src/mappings/RowBodyIcon.js +77 -71
  345. package/src/mappings/RowHeadlineImageCaption.js +171 -161
  346. package/src/mappings/RowHeadlineImageIcon.js +98 -84
  347. package/src/mappings/SVG.js +22 -18
  348. package/src/mappings/SafeAreaView.js +35 -30
  349. package/src/mappings/ScrollView.js +36 -29
  350. package/src/mappings/Slider.js +67 -58
  351. package/src/mappings/StarRating.js +49 -41
  352. package/src/mappings/Stepper.js +34 -26
  353. package/src/mappings/Surface.js +16 -12
  354. package/src/mappings/Swiper.js +65 -58
  355. package/src/mappings/SwiperItem.js +5 -5
  356. package/src/mappings/Switch.js +87 -76
  357. package/src/mappings/Text.js +265 -242
  358. package/src/mappings/TextArea.js +273 -259
  359. package/src/mappings/TextField.js +379 -358
  360. package/src/mappings/TextInput.js +388 -362
  361. package/src/mappings/ToggleButton.js +60 -48
  362. package/src/mappings/Touchable.js +20 -15
  363. package/src/mappings/Video.js +92 -79
  364. package/src/mappings/View.js +225 -204
  365. package/src/mappings/WebView.js +104 -86
  366. package/src/styles/DarkTheme.js +17 -17
  367. package/src/styles/DefaultTheme.js +103 -103
  368. package/src/styles/fonts.js +55 -55
  369. package/src/styles/overlay.js +50 -49
  370. package/src/styles/shadow.js +43 -44
  371. package/src/theming.js +2 -1
  372. package/src/utilities.js +97 -76
@@ -1,5 +1,12 @@
1
1
  import * as React from "react";
2
- import { View, Animated, TextInput as NativeTextInput, StyleSheet, Text, I18nManager, } from "react-native";
2
+ import {
3
+ View,
4
+ Animated,
5
+ TextInput as NativeTextInput,
6
+ StyleSheet,
7
+ Text,
8
+ I18nManager,
9
+ } from "react-native";
3
10
  import { withTheme } from "../theming";
4
11
  import { applyStyles, extractStyles } from "../utilities";
5
12
  const AnimatedText = Animated.createAnimatedComponent(Text);
@@ -7,422 +14,532 @@ const FOCUS_ANIMATION_DURATION = 150;
7
14
  const BLUR_ANIMATION_DURATION = 180;
8
15
  const ICON_SIZE = 24;
9
16
  class TextField extends React.Component {
10
- constructor() {
11
- super(...arguments);
12
- this.state = {
13
- nativeProps: {},
14
- labeled: new Animated.Value(this.props.value || this.props.error ? 0 : 1),
15
- focused: false,
16
- placeholder: this.props.error ? this.props.placeholder : "",
17
- labelLayout: {
18
- measured: false,
19
- width: 0,
20
- },
21
- };
22
- this._timer = setTimeout(() => { }, 0);
23
- this._showPlaceholder = () => {
24
- clearTimeout(this._timer);
25
- // Set the placeholder in a delay to offset the label animation
26
- // If we show it immediately, they'll overlap and look ugly
27
- this._timer = setTimeout(() => this.setState({
28
- placeholder: this.props.placeholder,
29
- }), 50);
30
- };
31
- this._hidePlaceholder = () => this.setState({
32
- placeholder: "",
33
- });
34
- this._restoreLabel = () => Animated.timing(this.state.labeled, {
35
- toValue: 1,
36
- duration: FOCUS_ANIMATION_DURATION,
37
- useNativeDriver: true,
38
- }).start();
39
- this._minmizeLabel = () => Animated.timing(this.state.labeled, {
40
- toValue: 0,
41
- duration: BLUR_ANIMATION_DURATION,
42
- useNativeDriver: true,
43
- }).start();
44
- this._handleFocus = () => {
45
- if (this.props.disabled) {
46
- return;
47
- }
48
- this.setState({ focused: true });
49
- };
50
- this._handleBlur = () => {
51
- if (this.props.disabled) {
52
- return;
53
- }
54
- this.setState({ focused: false });
55
- };
56
- this._handleChangeText = (value) => {
57
- if (this.props.disabled) {
58
- return;
59
- }
60
- if (typeof value === "string") {
61
- this.setState({ value });
62
- this.props.onChangeText && this.props.onChangeText(value);
63
- }
64
- else {
65
- this.setState({ value: value.nativeEvent.text });
66
- this.props.onChangeText &&
67
- this.props.onChangeText(value.nativeEvent.text);
68
- }
69
- };
70
- this._root = undefined;
71
- }
72
- static getDerivedStateFromProps(nextProps, prevState) {
73
- return {
74
- value: typeof nextProps.value !== "undefined"
75
- ? nextProps.value
76
- : prevState.value,
77
- };
17
+ constructor() {
18
+ super(...arguments);
19
+ this.state = {
20
+ nativeProps: {},
21
+ labeled: new Animated.Value(this.props.value || this.props.error ? 0 : 1),
22
+ focused: false,
23
+ placeholder: this.props.error ? this.props.placeholder : "",
24
+ labelLayout: {
25
+ measured: false,
26
+ width: 0,
27
+ },
28
+ };
29
+ this._timer = setTimeout(() => {}, 0);
30
+ this._showPlaceholder = () => {
31
+ clearTimeout(this._timer);
32
+ // Set the placeholder in a delay to offset the label animation
33
+ // If we show it immediately, they'll overlap and look ugly
34
+ this._timer = setTimeout(
35
+ () =>
36
+ this.setState({
37
+ placeholder: this.props.placeholder,
38
+ }),
39
+ 50
40
+ );
41
+ };
42
+ this._hidePlaceholder = () =>
43
+ this.setState({
44
+ placeholder: "",
45
+ });
46
+ this._restoreLabel = () =>
47
+ Animated.timing(this.state.labeled, {
48
+ toValue: 1,
49
+ duration: FOCUS_ANIMATION_DURATION,
50
+ useNativeDriver: true,
51
+ }).start();
52
+ this._minmizeLabel = () =>
53
+ Animated.timing(this.state.labeled, {
54
+ toValue: 0,
55
+ duration: BLUR_ANIMATION_DURATION,
56
+ useNativeDriver: true,
57
+ }).start();
58
+ this._handleFocus = () => {
59
+ if (this.props.disabled) {
60
+ return;
61
+ }
62
+ this.setState({ focused: true });
63
+ };
64
+ this._handleBlur = () => {
65
+ if (this.props.disabled) {
66
+ return;
67
+ }
68
+ this.setState({ focused: false });
69
+ };
70
+ this._handleChangeText = (value) => {
71
+ if (this.props.disabled) {
72
+ return;
73
+ }
74
+ if (typeof value === "string") {
75
+ this.setState({ value });
76
+ this.props.onChangeText && this.props.onChangeText(value);
77
+ } else {
78
+ this.setState({ value: value.nativeEvent.text });
79
+ this.props.onChangeText &&
80
+ this.props.onChangeText(value.nativeEvent.text);
81
+ }
82
+ };
83
+ this._root = undefined;
84
+ }
85
+ static getDerivedStateFromProps(nextProps, prevState) {
86
+ return {
87
+ value:
88
+ typeof nextProps.value !== "undefined"
89
+ ? nextProps.value
90
+ : prevState.value,
91
+ };
92
+ }
93
+ componentDidMount() {
94
+ if (this.props.defaultValue) {
95
+ this._handleChangeText(this.props.defaultValue);
78
96
  }
79
- componentDidMount() {
80
- if (this.props.defaultValue) {
81
- this._handleChangeText(this.props.defaultValue);
82
- }
83
- if (this.props.placeholder) {
84
- this._minmizeLabel();
85
- }
97
+ if (this.props.placeholder) {
98
+ this._minmizeLabel();
86
99
  }
87
- componentDidUpdate(prevProps, prevState) {
88
- if (prevState.focused !== this.state.focused ||
89
- prevState.value !== this.state.value) {
90
- // The label should be minimized if the text input is focused, or has text
91
- // In minimized mode, the label moves up and becomes small
92
- if (this.state.value ||
93
- this.state.focused ||
94
- this.props.error ||
95
- this.props.placeholder) {
96
- this._minmizeLabel();
97
- }
98
- else {
99
- this._restoreLabel();
100
- }
101
- }
102
- if (prevState.focused !== this.state.focused ||
103
- prevProps.label !== this.props.label) {
104
- // Show placeholder text only if the input is focused, or has error, or there's no label
105
- // We don't show placeholder if there's a label because the label acts as placeholder
106
- // When focused, the label moves up, so we can show a placeholder
107
- if (this.state.focused || this.props.error || !this.props.label) {
108
- this._showPlaceholder();
109
- }
110
- else {
111
- this._hidePlaceholder();
112
- }
113
- }
100
+ }
101
+ componentDidUpdate(prevProps, prevState) {
102
+ if (
103
+ prevState.focused !== this.state.focused ||
104
+ prevState.value !== this.state.value
105
+ ) {
106
+ // The label should be minimized if the text input is focused, or has text
107
+ // In minimized mode, the label moves up and becomes small
108
+ if (
109
+ this.state.value ||
110
+ this.state.focused ||
111
+ this.props.error ||
112
+ this.props.placeholder
113
+ ) {
114
+ this._minmizeLabel();
115
+ } else {
116
+ this._restoreLabel();
117
+ }
114
118
  }
115
- componentWillUnmount() {
116
- clearTimeout(this._timer);
119
+ if (
120
+ prevState.focused !== this.state.focused ||
121
+ prevProps.label !== this.props.label
122
+ ) {
123
+ // Show placeholder text only if the input is focused, or has error, or there's no label
124
+ // We don't show placeholder if there's a label because the label acts as placeholder
125
+ // When focused, the label moves up, so we can show a placeholder
126
+ if (this.state.focused || this.props.error || !this.props.label) {
127
+ this._showPlaceholder();
128
+ } else {
129
+ this._hidePlaceholder();
130
+ }
117
131
  }
118
- toggleFocus() {
119
- this.setState((prevState) => ({ focused: !prevState.focused }));
132
+ }
133
+ componentWillUnmount() {
134
+ clearTimeout(this._timer);
135
+ }
136
+ toggleFocus() {
137
+ this.setState((prevState) => ({ focused: !prevState.focused }));
138
+ }
139
+ /**
140
+ * @internal
141
+ */
142
+ setNativeProps(args) {
143
+ this.setState((state) => ({
144
+ ...state,
145
+ nativeState: args || {},
146
+ }));
147
+ }
148
+ isFocused() {
149
+ return this._root && this._root.isFocused();
150
+ }
151
+ clear() {
152
+ return this._root && this._root.clear();
153
+ }
154
+ focus() {
155
+ return this._root && this._root.focus();
156
+ }
157
+ blur() {
158
+ return this._root && this._root.blur();
159
+ }
160
+ render() {
161
+ const {
162
+ Icon,
163
+ type = "underline",
164
+ disabled = false,
165
+ label,
166
+ error = false,
167
+ leftIconName,
168
+ leftIconMode,
169
+ rightIconName,
170
+ assistiveText,
171
+ underlineColor: underlineColorProp,
172
+ activeBorderColor: activeBorderColorProp,
173
+ multiline = false,
174
+ numberOfLines = 4,
175
+ style,
176
+ theme: { colors, typography, roundness, disabledOpacity },
177
+ render = (props) => React.createElement(NativeTextInput, { ...props }),
178
+ ...rest
179
+ } = this.props;
180
+ const MINIMIZED_LABEL_Y_OFFSET = -(typography.caption.lineHeight + 4);
181
+ const OUTLINE_MINIMIZED_LABEL_Y_OFFSET = -(16 * 0.5 + 4);
182
+ const MAXIMIZED_LABEL_FONT_SIZE = typography.subtitle1.fontSize;
183
+ const MINIMIZED_LABEL_FONT_SIZE = typography.caption.fontSize;
184
+ const hasActiveOutline = this.state.focused || error;
185
+ let inputTextColor,
186
+ activeColor,
187
+ underlineColor,
188
+ borderColor,
189
+ placeholderColor,
190
+ containerStyle,
191
+ backgroundColor,
192
+ inputStyle;
193
+ inputTextColor = colors.strong;
194
+ if (disabled) {
195
+ activeColor = colors.light;
196
+ placeholderColor = colors.light;
197
+ borderColor = "transparent";
198
+ underlineColor = "transparent";
199
+ backgroundColor = colors.divider;
200
+ } else {
201
+ activeColor = error ? colors.error : activeBorderColorProp;
202
+ placeholderColor = borderColor = colors.light;
203
+ underlineColor = underlineColorProp;
204
+ backgroundColor = colors.background;
120
205
  }
121
- /**
122
- * @internal
123
- */
124
- setNativeProps(args) {
125
- this.setState((state) => ({
126
- ...state,
127
- nativeState: args || {},
128
- }));
206
+ if (rest.placeholderTextColor) {
207
+ placeholderColor = rest.placeholderTextColor;
129
208
  }
130
- isFocused() {
131
- return this._root && this._root.isFocused();
209
+ const { lineHeight, ...subtitle1 } = typography.subtitle1;
210
+ inputStyle = {
211
+ paddingVertical: 0,
212
+ color: inputTextColor,
213
+ paddingLeft:
214
+ leftIconName && leftIconMode === "inset"
215
+ ? ICON_SIZE + 12 + (type === "solid" ? 16 : 0)
216
+ : 0,
217
+ paddingRight: rightIconName ? ICON_SIZE + 16 + 4 : 12,
218
+ ...subtitle1,
219
+ };
220
+ if (!multiline) {
221
+ inputStyle.height = lineHeight;
132
222
  }
133
- clear() {
134
- return this._root && this._root.clear();
223
+ let assistiveTextLeftMargin;
224
+ if (type === "underline") {
225
+ containerStyle = {
226
+ borderTopLeftRadius: roundness,
227
+ borderTopRightRadius: roundness,
228
+ paddingBottom: 12,
229
+ marginTop: 16,
230
+ };
231
+ if (leftIconName && leftIconMode === "outset") {
232
+ assistiveTextLeftMargin = ICON_SIZE + 8;
233
+ } else {
234
+ assistiveTextLeftMargin = 0;
235
+ }
236
+ } else {
237
+ containerStyle = {
238
+ borderRadius: roundness,
239
+ borderColor: hasActiveOutline ? activeColor : borderColor,
240
+ borderWidth: 1,
241
+ paddingTop: label ? 16 * 1.5 : 16,
242
+ paddingBottom: label ? 16 * 0.5 : 16,
243
+ opacity: disabled ? disabledOpacity : 1,
244
+ backgroundColor,
245
+ };
246
+ if (leftIconName && leftIconMode === "inset") {
247
+ assistiveTextLeftMargin = 16 + 4;
248
+ } else if (leftIconName && leftIconMode === "outset") {
249
+ assistiveTextLeftMargin = ICON_SIZE + 8 + 12;
250
+ } else {
251
+ assistiveTextLeftMargin = 12;
252
+ }
253
+ inputStyle.paddingHorizontal = 12;
135
254
  }
136
- focus() {
137
- return this._root && this._root.focus();
255
+ if (leftIconName && leftIconMode === "outset") {
256
+ containerStyle.marginLeft = ICON_SIZE + 8;
138
257
  }
139
- blur() {
140
- return this._root && this._root.blur();
258
+ let leftIconColor;
259
+ if (error) {
260
+ leftIconColor = colors.error;
261
+ } else if (this.state.focused) {
262
+ leftIconColor = colors.primary;
263
+ } else {
264
+ leftIconColor = colors.light;
141
265
  }
142
- render() {
143
- const { Icon, type = "underline", disabled = false, label, error = false, leftIconName, leftIconMode, rightIconName, assistiveText, underlineColor: underlineColorProp, activeBorderColor: activeBorderColorProp, multiline = false, numberOfLines = 4, style, theme: { colors, typography, roundness, disabledOpacity }, render = (props) => React.createElement(NativeTextInput, { ...props }), ...rest } = this.props;
144
- const MINIMIZED_LABEL_Y_OFFSET = -(typography.caption.lineHeight + 4);
145
- const OUTLINE_MINIMIZED_LABEL_Y_OFFSET = -(16 * 0.5 + 4);
146
- const MAXIMIZED_LABEL_FONT_SIZE = typography.subtitle1.fontSize;
147
- const MINIMIZED_LABEL_FONT_SIZE = typography.caption.fontSize;
148
- const hasActiveOutline = this.state.focused || error;
149
- let inputTextColor, activeColor, underlineColor, borderColor, placeholderColor, containerStyle, backgroundColor, inputStyle;
150
- inputTextColor = colors.strong;
151
- if (disabled) {
152
- activeColor = colors.light;
153
- placeholderColor = colors.light;
154
- borderColor = "transparent";
155
- underlineColor = "transparent";
156
- backgroundColor = colors.divider;
157
- }
158
- else {
159
- activeColor = error ? colors.error : activeBorderColorProp;
160
- placeholderColor = borderColor = colors.light;
161
- underlineColor = underlineColorProp;
162
- backgroundColor = colors.background;
163
- }
164
- if (rest.placeholderTextColor) {
165
- placeholderColor = rest.placeholderTextColor;
166
- }
167
- const { lineHeight, ...subtitle1 } = typography.subtitle1;
168
- inputStyle = {
169
- paddingVertical: 0,
170
- color: inputTextColor,
171
- paddingLeft: leftIconName && leftIconMode === "inset"
172
- ? ICON_SIZE + 12 + (type === "solid" ? 16 : 0)
173
- : 0,
174
- paddingRight: rightIconName ? ICON_SIZE + 16 + 4 : 12,
175
- ...subtitle1,
176
- };
177
- if (!multiline) {
178
- inputStyle.height = lineHeight;
179
- }
180
- let assistiveTextLeftMargin;
181
- if (type === "underline") {
182
- containerStyle = {
183
- borderTopLeftRadius: roundness,
184
- borderTopRightRadius: roundness,
185
- paddingBottom: 12,
186
- marginTop: 16,
187
- };
188
- if (leftIconName && leftIconMode === "outset") {
189
- assistiveTextLeftMargin = ICON_SIZE + 8;
190
- }
191
- else {
192
- assistiveTextLeftMargin = 0;
193
- }
194
- }
195
- else {
196
- containerStyle = {
197
- borderRadius: roundness,
198
- borderColor: hasActiveOutline ? activeColor : borderColor,
199
- borderWidth: 1,
200
- paddingTop: label ? 16 * 1.5 : 16,
201
- paddingBottom: label ? 16 * 0.5 : 16,
202
- opacity: disabled ? disabledOpacity : 1,
203
- backgroundColor,
204
- };
205
- if (leftIconName && leftIconMode === "inset") {
206
- assistiveTextLeftMargin = 16 + 4;
207
- }
208
- else if (leftIconName && leftIconMode === "outset") {
209
- assistiveTextLeftMargin = ICON_SIZE + 8 + 12;
210
- }
211
- else {
212
- assistiveTextLeftMargin = 12;
213
- }
214
- inputStyle.paddingHorizontal = 12;
215
- }
216
- if (leftIconName && leftIconMode === "outset") {
217
- containerStyle.marginLeft = ICON_SIZE + 8;
218
- }
219
- let leftIconColor;
220
- if (error) {
221
- leftIconColor = colors.error;
222
- }
223
- else if (this.state.focused) {
224
- leftIconColor = colors.primary;
225
- }
226
- else {
227
- leftIconColor = colors.light;
228
- }
229
- const leftIconProps = {
230
- size: 24,
231
- color: leftIconColor,
232
- name: leftIconName || "",
233
- };
234
- const leftIconStyle = {
235
- position: "absolute",
236
- marginTop: type === "solid"
237
- ? MINIMIZED_LABEL_FONT_SIZE + 4
238
- : leftIconMode === "outset"
239
- ? 16
240
- : 0,
241
- marginLeft: leftIconMode === "inset" && type === "solid" ? 16 : 0,
242
- };
243
- const labelStyle = {
244
- ...typography.subtitle1,
245
- top: type === "solid" ? 16 : 0,
246
- left: leftIconName && leftIconMode === "inset"
247
- ? ICON_SIZE + (type === "solid" ? 16 : 12)
248
- : 0,
249
- transform: [
266
+ const leftIconProps = {
267
+ size: 24,
268
+ color: leftIconColor,
269
+ name: leftIconName || "",
270
+ };
271
+ const leftIconStyle = {
272
+ position: "absolute",
273
+ marginTop:
274
+ type === "solid"
275
+ ? MINIMIZED_LABEL_FONT_SIZE + 4
276
+ : leftIconMode === "outset"
277
+ ? 16
278
+ : 0,
279
+ marginLeft: leftIconMode === "inset" && type === "solid" ? 16 : 0,
280
+ };
281
+ const labelStyle = {
282
+ ...typography.subtitle1,
283
+ top: type === "solid" ? 16 : 0,
284
+ left:
285
+ leftIconName && leftIconMode === "inset"
286
+ ? ICON_SIZE + (type === "solid" ? 16 : 12)
287
+ : 0,
288
+ transform: [
289
+ {
290
+ // Move label to top
291
+ translateY: this.state.labeled.interpolate({
292
+ inputRange: [0, 1],
293
+ outputRange: [
294
+ type === "solid"
295
+ ? OUTLINE_MINIMIZED_LABEL_Y_OFFSET
296
+ : MINIMIZED_LABEL_Y_OFFSET,
297
+ 0,
298
+ ],
299
+ }),
300
+ },
301
+ {
302
+ // Make label smaller
303
+ scale: this.state.labeled.interpolate({
304
+ inputRange: [0, 1],
305
+ outputRange: [
306
+ MINIMIZED_LABEL_FONT_SIZE / MAXIMIZED_LABEL_FONT_SIZE,
307
+ 1,
308
+ ],
309
+ }),
310
+ },
311
+ {
312
+ // Offset label scale since RN doesn't support transform origin
313
+ translateX: this.state.labeled.interpolate({
314
+ inputRange: [0, 1],
315
+ outputRange: [
316
+ -(1 - MINIMIZED_LABEL_FONT_SIZE / MAXIMIZED_LABEL_FONT_SIZE) *
317
+ (this.state.labelLayout.width / 2),
318
+ 0,
319
+ ],
320
+ }),
321
+ },
322
+ ],
323
+ };
324
+ const { textStyles } = extractStyles(style);
325
+ const inputStyles = applyStyles(
326
+ [
327
+ styles.input,
328
+ inputStyle,
329
+ type === "solid" ? { marginHorizontal: 12 } : {},
330
+ ],
331
+ textStyles
332
+ );
333
+ const {
334
+ backgroundColor: bgColor,
335
+ padding,
336
+ paddingTop,
337
+ paddingBottom,
338
+ paddingLeft,
339
+ paddingRight,
340
+ borderRadius,
341
+ borderWidth,
342
+ borderTopWidth,
343
+ borderRightWidth,
344
+ borderBottomWidth,
345
+ borderLeftWidth,
346
+ borderColor: borderCol,
347
+ ...styleProp
348
+ } = StyleSheet.flatten(style || {});
349
+ return React.createElement(
350
+ View,
351
+ { style: [styles.container, styleProp] },
352
+ leftIconName && leftIconMode === "outset"
353
+ ? React.createElement(Icon, { ...leftIconProps, style: leftIconStyle })
354
+ : null,
355
+ React.createElement(
356
+ View,
357
+ {
358
+ style: applyStyles([containerStyle], {
359
+ height: style === null || style === void 0 ? void 0 : style.height,
360
+ backgroundColor: bgColor,
361
+ padding,
362
+ paddingTop,
363
+ paddingBottom,
364
+ paddingLeft,
365
+ paddingRight,
366
+ borderRadius,
367
+ borderWidth,
368
+ borderTopWidth,
369
+ borderRightWidth,
370
+ borderBottomWidth,
371
+ borderLeftWidth,
372
+ borderColor: borderCol,
373
+ }),
374
+ },
375
+ type === "underline"
376
+ ? // When type === 'flat', render an underline
377
+ React.createElement(Animated.View, {
378
+ style: [
379
+ styles.underline,
250
380
  {
251
- // Move label to top
252
- translateY: this.state.labeled.interpolate({
253
- inputRange: [0, 1],
254
- outputRange: [
255
- type === "solid"
256
- ? OUTLINE_MINIMIZED_LABEL_Y_OFFSET
257
- : MINIMIZED_LABEL_Y_OFFSET,
258
- 0,
259
- ],
260
- }),
381
+ backgroundColor:
382
+ bgColor ||
383
+ (error
384
+ ? colors.error
385
+ : this.state.focused
386
+ ? activeColor
387
+ : underlineColor),
388
+ // Underlines is thinner when input is not focused
389
+ transform: [{ scaleY: this.state.focused ? 1 : 0.5 }],
261
390
  },
391
+ ],
392
+ })
393
+ : null,
394
+ label
395
+ ? // Position colored placeholder and gray placeholder on top of each other and crossfade them
396
+ // This gives the effect of animating the color, but allows us to use native driver
397
+ React.createElement(
398
+ View,
399
+ {
400
+ pointerEvents: "none",
401
+ style: [
402
+ StyleSheet.absoluteFill,
403
+ {
404
+ opacity:
405
+ // Hide the label in minimized state until we measure its width
406
+ this.state.value || this.state.focused
407
+ ? this.state.labelLayout.measured
408
+ ? 1
409
+ : 0
410
+ : 1,
411
+ },
412
+ ],
413
+ },
414
+ React.createElement(
415
+ AnimatedText,
262
416
  {
263
- // Make label smaller
264
- scale: this.state.labeled.interpolate({
265
- inputRange: [0, 1],
266
- outputRange: [
267
- MINIMIZED_LABEL_FONT_SIZE / MAXIMIZED_LABEL_FONT_SIZE,
268
- 1,
269
- ],
417
+ onLayout: (e) =>
418
+ this.setState({
419
+ labelLayout: {
420
+ width: e.nativeEvent.layout.width,
421
+ measured: true,
422
+ },
270
423
  }),
271
- },
272
- {
273
- // Offset label scale since RN doesn't support transform origin
274
- translateX: this.state.labeled.interpolate({
424
+ style: [
425
+ styles.placeholder,
426
+ type === "solid" ? { paddingHorizontal: 12 } : {},
427
+ labelStyle,
428
+ {
429
+ color: placeholderColor,
430
+ opacity: this.state.labeled.interpolate({
275
431
  inputRange: [0, 1],
276
- outputRange: [
277
- -(1 - MINIMIZED_LABEL_FONT_SIZE / MAXIMIZED_LABEL_FONT_SIZE) *
278
- (this.state.labelLayout.width / 2),
279
- 0,
280
- ],
281
- }),
282
- },
283
- ],
284
- };
285
- const { textStyles } = extractStyles(style);
286
- const inputStyles = applyStyles([
287
- styles.input,
288
- inputStyle,
289
- type === "solid" ? { marginHorizontal: 12 } : {},
290
- ], textStyles);
291
- const { backgroundColor: bgColor, padding, paddingTop, paddingBottom, paddingLeft, paddingRight, borderRadius, borderWidth, borderTopWidth, borderRightWidth, borderBottomWidth, borderLeftWidth, borderColor: borderCol, ...styleProp } = StyleSheet.flatten(style || {});
292
- return (React.createElement(View, { style: [styles.container, styleProp] },
293
- leftIconName && leftIconMode === "outset" ? (React.createElement(Icon, { ...leftIconProps, style: leftIconStyle })) : null,
294
- React.createElement(View, { style: applyStyles([containerStyle], {
295
- height: style === null || style === void 0 ? void 0 : style.height,
296
- backgroundColor: bgColor,
297
- padding,
298
- paddingTop,
299
- paddingBottom,
300
- paddingLeft,
301
- paddingRight,
302
- borderRadius,
303
- borderWidth,
304
- borderTopWidth,
305
- borderRightWidth,
306
- borderBottomWidth,
307
- borderLeftWidth,
308
- borderColor: borderCol,
309
- }) },
310
- type === "underline" ? (
311
- // When type === 'flat', render an underline
312
- React.createElement(Animated.View, { style: [
313
- styles.underline,
314
- {
315
- backgroundColor: bgColor ||
316
- (error
317
- ? colors.error
318
- : this.state.focused
319
- ? activeColor
320
- : underlineColor),
321
- // Underlines is thinner when input is not focused
322
- transform: [{ scaleY: this.state.focused ? 1 : 0.5 }],
323
- },
324
- ] })) : null,
325
- label ? (
326
- // Position colored placeholder and gray placeholder on top of each other and crossfade them
327
- // This gives the effect of animating the color, but allows us to use native driver
328
- React.createElement(View, { pointerEvents: "none", style: [
329
- StyleSheet.absoluteFill,
330
- {
331
- opacity:
332
- // Hide the label in minimized state until we measure its width
333
- this.state.value || this.state.focused
334
- ? this.state.labelLayout.measured
335
- ? 1
336
- : 0
337
- : 1,
338
- },
339
- ] },
340
- React.createElement(AnimatedText, { onLayout: (e) => this.setState({
341
- labelLayout: {
342
- width: e.nativeEvent.layout.width,
343
- measured: true,
344
- },
345
- }), style: [
346
- styles.placeholder,
347
- type === "solid" ? { paddingHorizontal: 12 } : {},
348
- labelStyle,
349
- {
350
- color: placeholderColor,
351
- opacity: this.state.labeled.interpolate({
352
- inputRange: [0, 1],
353
- outputRange: [hasActiveOutline ? 1 : 0, 0],
354
- }),
355
- },
356
- ], numberOfLines: 1 }, label),
357
- React.createElement(AnimatedText, { style: [
358
- styles.placeholder,
359
- type === "solid" ? { paddingHorizontal: 12 } : {},
360
- labelStyle,
361
- {
362
- color: placeholderColor,
363
- opacity: hasActiveOutline ? this.state.labeled : 1,
364
- },
365
- ], numberOfLines: 1 }, label))) : null,
366
- leftIconName && leftIconMode === "inset" ? (React.createElement(View, { style: {
367
- justifyContent: type === "solid" ? "center" : undefined,
368
- } },
369
- React.createElement(Icon, { ...leftIconProps, style: leftIconStyle }))) : null,
370
- render({
371
- ref: (c) => {
372
- this._root = c;
432
+ outputRange: [hasActiveOutline ? 1 : 0, 0],
433
+ }),
373
434
  },
374
- onChange: this._handleChangeText,
375
- placeholder: label
376
- ? this.state.placeholder
377
- : this.props.placeholder,
378
- placeholderTextColor: placeholderColor,
379
- editable: !disabled,
380
- selectionColor: activeColor,
381
- multiline,
382
- numberOfLines,
383
- onFocus: this._handleFocus,
384
- onBlur: this._handleBlur,
385
- underlineColorAndroid: "transparent",
386
- style: inputStyles,
387
- ...rest,
388
- ...this.state.nativeProps,
389
- value: this.state.value,
390
- })),
391
- rightIconName ? (React.createElement(Icon, { name: rightIconName, size: ICON_SIZE, color: colors.light, style: {
392
- position: "absolute",
393
- right: 16,
394
- marginTop: type === "solid" ? MINIMIZED_LABEL_FONT_SIZE + 4 : 16,
395
- } })) : null,
396
- assistiveText ? (React.createElement(Text, { style: [
435
+ ],
436
+ numberOfLines: 1,
437
+ },
438
+ label
439
+ ),
440
+ React.createElement(
441
+ AnimatedText,
442
+ {
443
+ style: [
444
+ styles.placeholder,
445
+ type === "solid" ? { paddingHorizontal: 12 } : {},
446
+ labelStyle,
397
447
  {
398
- color: error ? colors.error : colors.light,
399
- marginTop: 8,
400
- marginLeft: assistiveTextLeftMargin,
448
+ color: placeholderColor,
449
+ opacity: hasActiveOutline ? this.state.labeled : 1,
401
450
  },
402
- ] }, assistiveText)) : null));
403
- }
451
+ ],
452
+ numberOfLines: 1,
453
+ },
454
+ label
455
+ )
456
+ )
457
+ : null,
458
+ leftIconName && leftIconMode === "inset"
459
+ ? React.createElement(
460
+ View,
461
+ {
462
+ style: {
463
+ justifyContent: type === "solid" ? "center" : undefined,
464
+ },
465
+ },
466
+ React.createElement(Icon, {
467
+ ...leftIconProps,
468
+ style: leftIconStyle,
469
+ })
470
+ )
471
+ : null,
472
+ render({
473
+ ref: (c) => {
474
+ this._root = c;
475
+ },
476
+ onChange: this._handleChangeText,
477
+ placeholder: label ? this.state.placeholder : this.props.placeholder,
478
+ placeholderTextColor: placeholderColor,
479
+ editable: !disabled,
480
+ selectionColor: activeColor,
481
+ multiline,
482
+ numberOfLines,
483
+ onFocus: this._handleFocus,
484
+ onBlur: this._handleBlur,
485
+ underlineColorAndroid: "transparent",
486
+ style: inputStyles,
487
+ ...rest,
488
+ ...this.state.nativeProps,
489
+ value: this.state.value,
490
+ })
491
+ ),
492
+ rightIconName
493
+ ? React.createElement(Icon, {
494
+ name: rightIconName,
495
+ size: ICON_SIZE,
496
+ color: colors.light,
497
+ style: {
498
+ position: "absolute",
499
+ right: 16,
500
+ marginTop: type === "solid" ? MINIMIZED_LABEL_FONT_SIZE + 4 : 16,
501
+ },
502
+ })
503
+ : null,
504
+ assistiveText
505
+ ? React.createElement(
506
+ Text,
507
+ {
508
+ style: [
509
+ {
510
+ color: error ? colors.error : colors.light,
511
+ marginTop: 8,
512
+ marginLeft: assistiveTextLeftMargin,
513
+ },
514
+ ],
515
+ },
516
+ assistiveText
517
+ )
518
+ : null
519
+ );
520
+ }
404
521
  }
405
522
  export default withTheme(TextField);
406
523
  const styles = StyleSheet.create({
407
- container: {
408
- alignSelf: "stretch",
409
- },
410
- placeholder: {
411
- position: "absolute",
412
- left: 0,
413
- },
414
- underline: {
415
- position: "absolute",
416
- left: 0,
417
- right: 0,
418
- bottom: 0,
419
- height: 2,
420
- },
421
- input: {
422
- flexGrow: 1,
423
- justifyContent: "center",
424
- textAlignVertical: "center",
425
- margin: 0,
426
- textAlign: I18nManager.isRTL ? "right" : "left",
427
- },
524
+ container: {
525
+ alignSelf: "stretch",
526
+ },
527
+ placeholder: {
528
+ position: "absolute",
529
+ left: 0,
530
+ },
531
+ underline: {
532
+ position: "absolute",
533
+ left: 0,
534
+ right: 0,
535
+ bottom: 0,
536
+ height: 2,
537
+ },
538
+ input: {
539
+ flexGrow: 1,
540
+ justifyContent: "center",
541
+ textAlignVertical: "center",
542
+ margin: 0,
543
+ textAlign: I18nManager.isRTL ? "right" : "left",
544
+ },
428
545
  });