@eohjsc/react-native-smart-city 0.2.20 → 0.2.26

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 (340) hide show
  1. package/README.md +1 -1
  2. package/assets/images/Add.svg +5 -0
  3. package/assets/images/AddLocationMaps/Point.svg +3 -0
  4. package/assets/images/CheckCircle.svg +4 -0
  5. package/assets/images/Close.svg +3 -0
  6. package/assets/images/HowToStart.svg +14 -0
  7. package/assets/images/OneTap.svg +14 -0
  8. package/assets/images/OneTap@1x.svg +14 -0
  9. package/assets/images/Rearrange.svg +3 -0
  10. package/assets/images/Schedule.svg +39 -0
  11. package/assets/images/WeatherChange.svg +49 -0
  12. package/package.json +12 -2
  13. package/src/Images/Common/ActiveButton.png +0 -0
  14. package/src/Images/Common/ActiveButton@2x.png +0 -0
  15. package/src/Images/Common/ActiveButton@3x.png +0 -0
  16. package/src/Images/Common/arrow-back.png +0 -0
  17. package/src/Images/Common/checked@2x.png +0 -0
  18. package/src/Images/Common/checked@3x.png +0 -0
  19. package/src/Images/Common/file.png +0 -0
  20. package/src/Images/Common/fullscreen.png +0 -0
  21. package/src/Images/Common/refresh.png +0 -0
  22. package/src/commons/ActionGroup/NumberUpDownActionTemplate.js +1 -1
  23. package/src/commons/ActionGroup/OnOffTemplate/index.js +4 -4
  24. package/src/commons/ActionGroup/OptionsDropdownActionTemplate.js +7 -4
  25. package/src/commons/ActionGroup/StatesGridActionTemplate.js +12 -3
  26. package/src/commons/ActionGroup/ThreeButtonTemplate.js +13 -6
  27. package/src/commons/ActionGroup/ThreeButtonTemplateStyle.js +1 -1
  28. package/src/commons/ActionGroup/TimerActionTemplate.js +158 -33
  29. package/src/commons/ActionGroup/__test__/OnOffButtonTemplate.test.js +8 -13
  30. package/src/commons/ActionGroup/__test__/OnOffTemplate.test.js +3 -3
  31. package/src/commons/ActionGroup/__test__/OptionsDropdownTemplate.test.js +26 -45
  32. package/src/commons/ActionGroup/__test__/ThreeButtonTemplate.test.js +11 -5
  33. package/src/commons/ActionGroup/__test__/TimerActionTemplate.test.js +14 -8
  34. package/src/commons/ActionGroup/__test__/TimerActionTemplateWithutConfigValue.test.js +17 -23
  35. package/src/commons/ActionGroup/__test__/__snapshots__/ThreeButtonTemplate.test.js.snap +241 -223
  36. package/src/commons/ActionGroup/__test__/index.test.js +39 -107
  37. package/src/commons/ActionGroup/hooks/useDropdownAction.js +2 -1
  38. package/src/commons/ActionTemplate/ActionTemplateStyles.js +14 -0
  39. package/src/commons/ActionTemplate/OnOffButtonAction.js +40 -0
  40. package/src/commons/ActionTemplate/OnOffButtonActionStyles.js +11 -0
  41. package/src/commons/ActionTemplate/OneButtonAction.js +26 -0
  42. package/src/commons/ActionTemplate/OneButtonActionStyles.js +11 -0
  43. package/src/commons/ActionTemplate/ThreeButtonAction.js +55 -0
  44. package/src/commons/ActionTemplate/ThreeButtonActionStyles.js +11 -0
  45. package/src/commons/ActionTemplate/__test__/OnOffButtonAction.test.js +34 -0
  46. package/src/commons/ActionTemplate/__test__/OneButtonAction.test.js +33 -0
  47. package/src/commons/ActionTemplate/__test__/ThreeButtonAction.test.js +35 -0
  48. package/src/commons/ActionTemplate/__test__/index.test.js +71 -0
  49. package/src/commons/ActionTemplate/index.js +69 -0
  50. package/src/commons/Automate/ItemAddNewScriptAction.js +30 -0
  51. package/src/commons/Automate/ItemAddNewScriptActionStyles.js +38 -0
  52. package/src/commons/Automate/ItemAutomate.js +33 -0
  53. package/src/commons/Automate/ItemAutomateStyles.js +33 -0
  54. package/src/commons/Automate/ItemScriptAction.js +45 -0
  55. package/src/commons/Automate/ItemScriptActionStyles.js +42 -0
  56. package/src/commons/BottomScrollPicker/index.js +58 -0
  57. package/src/commons/BottomScrollPicker/styles.js +13 -0
  58. package/src/commons/BottomSheet/index.js +36 -0
  59. package/src/commons/BottomSheet/styles.js +37 -0
  60. package/src/commons/Button/index.js +6 -1
  61. package/src/commons/CameraDevice/index.js +2 -1
  62. package/src/commons/ChartLoading/__test__/ChartLoading.test.js +9 -7
  63. package/src/commons/ChartLoading/index.js +2 -1
  64. package/src/commons/DateTimeRangeChange/index.js +2 -1
  65. package/src/commons/Device/ConnectedViewHeader.js +3 -1
  66. package/src/commons/Device/DeviceAlertStatus.js +5 -2
  67. package/src/commons/Device/DisconnectedView.js +34 -26
  68. package/src/commons/Device/Emergency/EmergencyButton.js +2 -1
  69. package/src/commons/Device/Emergency/EmergencyDetail.js +2 -1
  70. package/src/commons/Device/Emergency/__test__/EmergencyButton.test.js +14 -6
  71. package/src/commons/Device/Emergency/__test__/EmergencyDetail.test.js +10 -2
  72. package/src/commons/Device/FlatListItems.js +3 -2
  73. package/src/commons/Device/FooterInfo.js +2 -1
  74. package/src/commons/Device/HistoryChart.js +2 -1
  75. package/src/commons/Device/ItemAddNew/index.js +6 -1
  76. package/src/commons/Device/SensorConnectedStatus.js +2 -1
  77. package/src/commons/Device/WindDirection/Compass/Compass.test.js +19 -11
  78. package/src/commons/Device/WindDirection/Compass/index.js +1 -1
  79. package/src/commons/Device/WindSpeed/LinearChart/__test__/LinearChart.test.js +9 -3
  80. package/src/commons/Device/WindSpeed/LinearChart/__test__/__snapshots__/LinearChart.test.js.snap +0 -81
  81. package/src/commons/Device/WindSpeed/LinearChart/index.js +2 -1
  82. package/src/commons/Device/__test__/ConnectedViewHeader.test.js +16 -8
  83. package/src/commons/Device/__test__/DeviceAlertStatus.test.js +13 -5
  84. package/src/commons/Device/__test__/DisconnectedView.test.js +13 -5
  85. package/src/commons/Device/__test__/FlatListItems.test.js +9 -1
  86. package/src/commons/Device/__test__/FooterInfo.test.js +13 -4
  87. package/src/commons/Device/__test__/SensorConnectedStatus.test.js +9 -1
  88. package/src/commons/Device/__test__/__snapshots__/DisconnectedView.test.js.snap +20 -20
  89. package/src/commons/DisplayChecking/__test__/DisplayChecking.test.js +28 -0
  90. package/src/commons/EmergencyButton/AlertSendConfirm.js +2 -1
  91. package/src/commons/EmergencyButton/AlertSent.js +3 -2
  92. package/src/commons/Explore/CityItem/index.js +2 -1
  93. package/src/commons/Explore/HeaderExplore/index.js +2 -1
  94. package/src/commons/Explore/HeaderLabel/index.js +2 -1
  95. package/src/commons/Explore/SearchBox/__test__/SearchBox.test.js +9 -2
  96. package/src/commons/Explore/SearchBox/index.js +2 -1
  97. package/src/commons/Explore/__test__/CityItem.test.js +13 -15
  98. package/src/commons/Explore/__test__/HeaderLabel.test.js +15 -9
  99. package/src/commons/Header/HeaderCustom.js +17 -1
  100. package/src/commons/Header/Styles/HeaderCustomStyles.js +2 -2
  101. package/src/commons/Header/__test__/HeaderCT.test.js +12 -4
  102. package/src/commons/HeaderAni/index.js +6 -3
  103. package/src/commons/IconComponent/index.js +18 -3
  104. package/src/commons/ImagePicker/__test__/ImagePicker.test.js +19 -13
  105. package/src/commons/ImagePicker/index.js +3 -1
  106. package/src/commons/MediaPlayer/index.js +2 -1
  107. package/src/commons/MediaPlayerDetail/__test__/MediaPlayerDetail.test.js +14 -8
  108. package/src/commons/MediaPlayerDetail/index.js +4 -1
  109. package/src/commons/MenuActionAddnew/__test__/MenuActionAddNew.test.js +11 -20
  110. package/src/commons/MenuActionAddnew/index.js +2 -1
  111. package/src/commons/Modal/ModalBottom.js +51 -0
  112. package/src/commons/Modal/ModalFullVideo.js +2 -1
  113. package/src/commons/Modal/Styles/ModalBottomStyles.js +35 -0
  114. package/src/commons/Modal/index.js +2 -1
  115. package/src/commons/NavBar/index.js +2 -2
  116. package/src/commons/SelectActionCard/SelectActionStyles.js +16 -0
  117. package/src/commons/SelectActionCard/index.js +30 -0
  118. package/src/commons/Sharing/DevicePermissionsCheckbox.js +2 -1
  119. package/src/commons/Sharing/MemberList.js +3 -1
  120. package/src/commons/Sharing/RowMember.js +3 -2
  121. package/src/commons/Sharing/StationDevicePermissions.js +2 -1
  122. package/src/commons/Sharing/__test__/DevicePermissionsCheckbox.test.js +15 -9
  123. package/src/commons/Sharing/__test__/MemberList.test.js +17 -25
  124. package/src/commons/Sharing/__test__/StationDevicePermission.test.js +17 -12
  125. package/src/commons/Sharing/__test__/WrapHeaderScrollable.test.js +0 -9
  126. package/src/commons/SubUnit/OneTap/ItemOneTap.js +97 -0
  127. package/src/commons/SubUnit/OneTap/ItemOneTapStyles.js +41 -0
  128. package/src/commons/SubUnit/OneTap/OneTapStyles.js +36 -0
  129. package/src/commons/SubUnit/OneTap/__test__/SubUnitAutomate.test.js +149 -0
  130. package/src/commons/SubUnit/OneTap/index.js +39 -0
  131. package/src/commons/SubUnit/ShortDetail.js +11 -6
  132. package/src/commons/SubUnit/__test__/ShortDetail.test.js +14 -6
  133. package/src/commons/Today/__test__/Today.test.js +9 -1
  134. package/src/commons/Today/__test__/__snapshots__/Today.test.js.snap +1 -1
  135. package/src/commons/Today/index.js +2 -1
  136. package/src/commons/Unit/SharedUnit.js +2 -1
  137. package/src/commons/UnitSummary/AirQuality/SegmentedRoundDisplay/index.js +1 -2
  138. package/src/commons/UnitSummary/AirQuality/__test__/index.test.js +16 -17
  139. package/src/commons/UnitSummary/AirQuality/index.js +5 -120
  140. package/src/commons/UnitSummary/AirQuality/styles.js +112 -0
  141. package/src/commons/UnitSummary/TotalPowerConsumption/index.js +2 -1
  142. package/src/commons/UnitSummary/__test__/TotalPowerConsumption.test.js +15 -9
  143. package/src/commons/WheelDateTimePicker/Picker.js +57 -0
  144. package/src/commons/WheelDateTimePicker/index.js +160 -0
  145. package/src/commons/WheelDateTimePicker/styles.js +21 -0
  146. package/src/configs/API.js +25 -0
  147. package/src/configs/Colors.js +1 -0
  148. package/src/configs/Constants.js +46 -0
  149. package/src/configs/Images.js +1 -0
  150. package/src/configs/SCConfig.js +7 -0
  151. package/src/context/SCContext.tsx +7 -37
  152. package/src/context/actionType.ts +11 -0
  153. package/src/context/mockStore.ts +49 -0
  154. package/src/context/reducer.ts +23 -0
  155. package/src/hooks/Common/__test__/useTranslations.test.js +23 -0
  156. package/src/hooks/Common/index.js +2 -0
  157. package/src/hooks/Common/useGetIdUser.js +9 -0
  158. package/src/hooks/Common/useTranslations.ts +34 -0
  159. package/src/iot/Monitor.js +2 -1
  160. package/src/iot/RemoteControl/Bluetooth.js +2 -6
  161. package/src/iot/RemoteControl/GoogleHome.js +1 -1
  162. package/src/iot/RemoteControl/Internet.js +1 -1
  163. package/src/iot/RemoteControl/LG.js +57 -15
  164. package/src/iot/RemoteControl/__test__/Bluetooth.test.js +3 -5
  165. package/src/iot/RemoteControl/__test__/GoogleHome.test.js +3 -3
  166. package/src/iot/RemoteControl/__test__/Internet.test.js +1 -8
  167. package/src/iot/RemoteControl/__test__/LgThinq.test.js +7 -10
  168. package/src/iot/RemoteControl/index.js +1 -1
  169. package/src/iot/states.js +1 -0
  170. package/src/navigations/SharedStack.js +2 -1
  171. package/src/navigations/UnitStack.js +62 -1
  172. package/src/screens/AQIGuide/__test__/AQIGuide.test.js +9 -1
  173. package/src/screens/AQIGuide/index.js +2 -2
  174. package/src/screens/ActivityLog/__test__/index.test.js +14 -39
  175. package/src/screens/ActivityLog/index.js +2 -1
  176. package/src/screens/AddCommon/SelectSubUnit.js +5 -4
  177. package/src/screens/AddCommon/SelectUnit.js +3 -2
  178. package/src/screens/AddCommon/__test__/SelectSubUnit.test.js +61 -0
  179. package/src/screens/AddCommon/__test__/SelectUnit.test.js +18 -10
  180. package/src/screens/AddLocationMaps/index.js +2 -1
  181. package/src/screens/AddNewAction/Device/DeviceStyles.js +43 -0
  182. package/src/screens/AddNewAction/Device/__test__/index.test.js +42 -0
  183. package/src/screens/AddNewAction/Device/index.js +33 -0
  184. package/src/screens/AddNewAction/SelectAction.js +152 -0
  185. package/src/screens/AddNewAction/SelectDevice.js +120 -0
  186. package/src/screens/AddNewAction/Styles/SelectActionStyles.js +24 -0
  187. package/src/screens/AddNewAction/Styles/SelectDeviceStyles.js +36 -0
  188. package/src/screens/AddNewAction/__test__/SelectAction.test.js +172 -0
  189. package/src/screens/AddNewAction/__test__/SelectDevice.test.js +191 -0
  190. package/src/screens/AddNewAutoSmart/__test__/AddNewAutoSmart.test.js +55 -0
  191. package/src/screens/AddNewAutoSmart/index.js +85 -0
  192. package/src/screens/AddNewAutoSmart/styles/AddNewAutoSmartStyles.js +36 -0
  193. package/src/screens/AddNewDevice/ConnectDevices.js +2 -1
  194. package/src/screens/AddNewDevice/ConnectingDevices.js +2 -1
  195. package/src/screens/AddNewDevice/__test__/AddNewDevice.test.js +29 -13
  196. package/src/screens/AddNewDevice/__test__/ConnectDevices.test.js +19 -7
  197. package/src/screens/AddNewDevice/__test__/ConnectingDevices.test.js +16 -6
  198. package/src/screens/AddNewDevice/hooks/useStateAlertRename.js +2 -1
  199. package/src/screens/AddNewDevice/index.js +2 -1
  200. package/src/screens/AddNewGateway/ConnectedGateway.js +2 -1
  201. package/src/screens/AddNewGateway/ConnectingGateway.js +99 -24
  202. package/src/screens/AddNewGateway/ConnectingGatewayStyles.js +92 -0
  203. package/src/screens/AddNewGateway/SetupGatewayWifi.js +3 -2
  204. package/src/screens/AddNewGateway/__test__/AddNewGateway.test.js +35 -72
  205. package/src/screens/AddNewGateway/__test__/ConnectedGateway.test.js +14 -4
  206. package/src/screens/AddNewGateway/__test__/ConnectingGateway.test.js +20 -10
  207. package/src/screens/AddNewGateway/hooks/useStateAlertRename.js +2 -1
  208. package/src/screens/AddNewGateway/index.js +2 -1
  209. package/src/screens/AddNewOneTap/AddNewOneTapStyles.js +43 -0
  210. package/src/screens/AddNewOneTap/__test__/AddNewOneTap.test.js +129 -0
  211. package/src/screens/AddNewOneTap/index.js +80 -0
  212. package/src/screens/AddNewScriptAction/AddNewScriptActionStyles.js +28 -0
  213. package/src/screens/AddNewScriptAction/index.js +100 -0
  214. package/src/screens/AllCamera/index.js +2 -1
  215. package/src/screens/Device/HeaderDevice/styles.js +2 -2
  216. package/src/screens/Device/__test__/detail.test.js +26 -18
  217. package/src/screens/Device/detail.js +56 -28
  218. package/src/screens/Device/hooks/useCountUp.js +4 -0
  219. package/src/screens/Device/hooks/useEmergencyButton.js +3 -2
  220. package/src/screens/Device/styles.js +5 -1
  221. package/src/screens/DeviceInfo/__test__/index.test.js +12 -3
  222. package/src/screens/DeviceInfo/index.js +2 -1
  223. package/src/screens/EditActionsList/Styles/indexStyles.js +84 -0
  224. package/src/screens/EditActionsList/index.js +186 -0
  225. package/src/screens/EmergencyContacts/EmergencyContactsAddNew.js +3 -2
  226. package/src/screens/EmergencyContacts/EmergencyContactsList.js +9 -2
  227. package/src/screens/EmergencyContacts/EmergencyContactsSelectContacts.js +2 -1
  228. package/src/screens/EmergencyContacts/__test__/EmergencyContactAddNew.test.js +15 -18
  229. package/src/screens/EmergencyContacts/__test__/EmergencyContactList.test.js +19 -23
  230. package/src/screens/EmergencyContacts/__test__/EmergencyContactsSelectContacts.test.js +10 -25
  231. package/src/screens/EmergencyContacts/hook.js +3 -2
  232. package/src/screens/Explore/index.js +3 -2
  233. package/src/screens/GuestInfo/components/AccessScheduleItem.js +27 -0
  234. package/src/screens/GuestInfo/components/AccessScheduleSheet.js +193 -0
  235. package/src/screens/GuestInfo/components/HeaderGuestInfo.js +31 -0
  236. package/src/screens/GuestInfo/components/RecurringDetail.js +99 -0
  237. package/src/screens/GuestInfo/components/RowGuestInfo.js +31 -0
  238. package/src/screens/GuestInfo/components/TemporaryDetail.js +46 -0
  239. package/src/screens/GuestInfo/constant.js +59 -0
  240. package/src/screens/GuestInfo/index.js +151 -0
  241. package/src/screens/GuestInfo/styles/AccessScheduleDetailStyles.js +31 -0
  242. package/src/screens/GuestInfo/styles/AccessScheduleItemStyles.js +22 -0
  243. package/src/screens/GuestInfo/styles/HeaderGuestInfoStyles.js +31 -0
  244. package/src/screens/GuestInfo/styles/indexStyles.js +38 -0
  245. package/src/screens/ManageAccess/__test__/ManageAccess.test.js +13 -1
  246. package/src/screens/ManageAccess/hooks/index.js +4 -0
  247. package/src/screens/ManageAccess/index.js +49 -20
  248. package/src/screens/ManageAccess/styles/ManageAccessStyles.js +3 -0
  249. package/src/screens/PlayBackCamera/index.js +9 -5
  250. package/src/screens/ScanChipQR/__test__/ScanChipQR.test.js +2 -11
  251. package/src/screens/ScanChipQR/components/QRScan/index.js +2 -1
  252. package/src/screens/ScriptDetail/Styles/indexStyles.js +143 -0
  253. package/src/screens/ScriptDetail/index.js +243 -0
  254. package/src/screens/SharedUnit/TabHeader.js +2 -1
  255. package/src/screens/SharedUnit/__test__/TabHeader.test.js +40 -0
  256. package/src/screens/SharedUnit/index.js +3 -2
  257. package/src/screens/Sharing/MemberList.js +2 -1
  258. package/src/screens/Sharing/SelectPermission.js +2 -1
  259. package/src/screens/Sharing/SelectUser.js +3 -2
  260. package/src/screens/Sharing/__test__/MemberList.test.js +17 -13
  261. package/src/screens/Sharing/__test__/SelectPermission.test.js +16 -8
  262. package/src/screens/Sharing/__test__/SelectUser.test.js +33 -15
  263. package/src/screens/Sharing/hooks/index.js +22 -17
  264. package/src/screens/SubUnit/AddSubUnit.js +3 -2
  265. package/src/screens/SubUnit/Detail.js +5 -4
  266. package/src/screens/SubUnit/ManageSubUnit.js +10 -9
  267. package/src/screens/SubUnit/__test__/AddSubUnit.test.js +17 -11
  268. package/src/screens/SubUnit/__test__/Detail.test.js +11 -31
  269. package/src/screens/SubUnit/__test__/ManageSubUnit.test.js +42 -31
  270. package/src/screens/SyncLGDevice/AddLGDevice.js +3 -2
  271. package/src/screens/TDSGuide/__test__/TDSGuide.test.js +9 -1
  272. package/src/screens/TDSGuide/index.js +2 -1
  273. package/src/screens/UVIndexGuide/__test__/UVIndexGuide.test.js +9 -1
  274. package/src/screens/UVIndexGuide/index.js +2 -1
  275. package/src/screens/Unit/AddMenu.js +3 -2
  276. package/src/screens/Unit/Detail.js +65 -20
  277. package/src/screens/Unit/ManageUnit/index.js +4 -3
  278. package/src/screens/Unit/ManageUnit.js +5 -4
  279. package/src/screens/Unit/MoreMenu.js +3 -2
  280. package/src/screens/Unit/SelectLocation.js +8 -2
  281. package/src/screens/Unit/SelectLocationStyles.js +11 -0
  282. package/src/screens/Unit/__test__/AddMenu.test.js +15 -15
  283. package/src/screens/Unit/__test__/CheckSendEmail.test.js +19 -10
  284. package/src/screens/Unit/__test__/Detail.test.js +92 -33
  285. package/src/screens/Unit/__test__/ManageUnit.test.js +16 -23
  286. package/src/screens/Unit/components/Header/index.js +2 -1
  287. package/src/screens/Unit/components/ListMyAllUnit/index.js +2 -1
  288. package/src/screens/Unit/components/MyUnit/index.js +2 -1
  289. package/src/screens/Unit/components/SearchLocation/index.js +2 -1
  290. package/src/screens/Unit/components/SharedUnit/index.js +2 -1
  291. package/src/screens/Unit/components/__test__/SharedUnit.test.js +11 -2
  292. package/src/screens/UnitSummary/__test__/index.test.js +12 -4
  293. package/src/screens/UnitSummary/components/3PPowerConsumption/__test__/3PPowerConsumption.test.js +13 -3
  294. package/src/screens/UnitSummary/components/3PPowerConsumption/index.js +2 -1
  295. package/src/screens/UnitSummary/components/PowerConsumption/__test__/PowerConsumption.test.js +16 -12
  296. package/src/screens/UnitSummary/components/PowerConsumption/index.js +2 -1
  297. package/src/screens/UnitSummary/components/RunningDevices/__test__/index.test.js +2 -2
  298. package/src/screens/UnitSummary/components/Temperature/index.js +2 -1
  299. package/src/screens/UnitSummary/components/TotalPowerConsumption/index.js +2 -1
  300. package/src/screens/UnitSummary/components/UvIndex/__test__/__snapshots__/index.test.js.snap +37 -37
  301. package/src/screens/UnitSummary/components/UvIndex/__test__/index.test.js +14 -6
  302. package/src/screens/UnitSummary/components/UvIndex/index.js +2 -1
  303. package/src/screens/UnitSummary/components/WaterQuality/__test__/index.test.js +11 -5
  304. package/src/screens/UnitSummary/components/WaterQuality/index.js +2 -1
  305. package/src/screens/UnitSummary/components/__test__/TotalPowerConsumption.test.js +13 -7
  306. package/src/screens/UnitSummary/index.js +2 -1
  307. package/src/screens/WaterQualityGuide/__test__/index.test.js +12 -12
  308. package/src/screens/WaterQualityGuide/index.js +2 -1
  309. package/src/utils/Converter/array.js +4 -0
  310. package/src/utils/Converter/time.js +29 -4
  311. package/src/utils/I18n/index.ts +6 -0
  312. package/src/utils/I18n/translations/en.json +48 -2
  313. package/src/utils/I18n/translations/vi.json +45 -1
  314. package/src/utils/I18n/translations.ts +45 -0
  315. package/src/utils/Route/index.js +8 -0
  316. package/src/commons/ChartLoading/__test__/__snapshots__/ChartLoading.test.js.snap +0 -66
  317. package/src/commons/Device/HistoryChart/__test__/HistoryChart.test.js +0 -57
  318. package/src/commons/Device/HistoryChart/__test__/__snapshots__/HistoryChart.test.js.snap +0 -593
  319. package/src/commons/Explore/SearchBox/__test__/__snapshots__/SearchBox.test.js.snap +0 -59
  320. package/src/commons/Explore/__test__/HeaderExplore.test.js +0 -21
  321. package/src/commons/Header/__test__/Header.test.js +0 -24
  322. package/src/commons/MenuActionAddnew/__test__/__snapshots__/MenuActionAddNew.test.js.snap +0 -788
  323. package/src/commons/Sharing/__test__/__snapshots__/WrapHeaderScrollable.test.js.snap +0 -174
  324. package/src/commons/UnitSummary/AirQuality/__test__/__snapshots__/index.test.js.snap +0 -26679
  325. package/src/iot/RemoteControl/__test__/index.test.js +0 -101
  326. package/src/iot/__test__/Monitor.test.js +0 -119
  327. package/src/screens/EmergencyContacts/__test__/__snapshots__/EmergencyContactAddNew.test.js.snap +0 -1706
  328. package/src/screens/EmergencyContacts/__test__/__snapshots__/EmergencyContactList.test.js.snap +0 -4276
  329. package/src/screens/EmergencyContacts/__test__/__snapshots__/EmergencyContactsSelectContacts.test.js.snap +0 -2240
  330. package/src/screens/SyncLGDevice/__test__/AddLGDevice.test.js +0 -358
  331. package/src/screens/Unit/MyAllUnit/__test__/__snapshots__/index.test.js.snap +0 -1001
  332. package/src/screens/Unit/MyAllUnit/__test__/index.test.js +0 -48
  333. package/src/screens/Unit/components/MyAllUnit/__test__/__snapshots__/index.test.js.snap +0 -1001
  334. package/src/screens/Unit/components/MyAllUnit/__test__/index.test.js +0 -48
  335. package/src/screens/Unit/components/__test__/MyUnit.test.js +0 -85
  336. package/src/screens/UnitSummary/components/WaterQuality/__test__/__snapshots__/index.test.js.snap +0 -1574
  337. package/src/screens/WaterQualityGuide/__test__/__snapshots__/index.test.js.snap +0 -3375
  338. package/src/utils/Converter/__test__/time.test.js +0 -126
  339. package/src/utils/I18n/index.js +0 -19
  340. package/src/utils/I18n/index.test.js +0 -7
@@ -5,6 +5,14 @@ import AirQuality from '../index';
5
5
  import { Section } from '../../../index';
6
6
  import Text from '../../../Text';
7
7
  import { TESTID } from '../../../../configs/Constants';
8
+ import { SCProvider } from '../../../../context';
9
+ import { mockSCStore } from '../../../../context/mockStore';
10
+
11
+ const wrapComponent = (data) => (
12
+ <SCProvider initState={mockSCStore({})}>
13
+ <AirQuality {...data} />
14
+ </SCProvider>
15
+ );
8
16
 
9
17
  describe('Test AirQuality', () => {
10
18
  let data;
@@ -40,12 +48,11 @@ describe('Test AirQuality', () => {
40
48
 
41
49
  test('render AirQuality', async () => {
42
50
  act(() => {
43
- tree = create(<AirQuality {...data} />);
51
+ tree = create(wrapComponent(data));
44
52
  });
45
53
  const instance = tree.root;
46
54
  const sections = instance.findAllByType(Section);
47
55
  expect(sections).toHaveLength(2);
48
- expect(tree.toJSON()).toMatchSnapshot();
49
56
  });
50
57
 
51
58
  test('without showBoxHistory', async () => {
@@ -54,12 +61,11 @@ describe('Test AirQuality', () => {
54
61
  data.summaryDetail.outdoor_co_id = null;
55
62
 
56
63
  act(() => {
57
- tree = create(<AirQuality {...data} />);
64
+ tree = create(wrapComponent(data));
58
65
  });
59
66
  const instance = tree.root;
60
67
  const sections = instance.findAllByType(Section);
61
68
  expect(sections).toHaveLength(1);
62
- expect(tree.toJSON()).toMatchSnapshot();
63
69
  });
64
70
 
65
71
  test('value is undefined', async () => {
@@ -68,7 +74,7 @@ describe('Test AirQuality', () => {
68
74
  data.summaryDetail.outdoor_co_value = undefined;
69
75
 
70
76
  act(() => {
71
- tree = create(<AirQuality {...data} />);
77
+ tree = create(wrapComponent(data));
72
78
  });
73
79
  const instance = tree.root;
74
80
  const buttons = instance.findAll(
@@ -77,7 +83,6 @@ describe('Test AirQuality', () => {
77
83
  el.type === TouchableOpacity
78
84
  );
79
85
  expect(buttons).toHaveLength(3);
80
- expect(tree.toJSON()).toMatchSnapshot();
81
86
  });
82
87
 
83
88
  test('onSelectOutdoor', async () => {
@@ -93,7 +98,7 @@ describe('Test AirQuality', () => {
93
98
  const styleInactive = { backgroundColor: '#FFFFFF', borderWidth: 1 };
94
99
 
95
100
  act(() => {
96
- tree = create(<AirQuality {...data} />);
101
+ tree = create(wrapComponent(data));
97
102
  });
98
103
  const instance = tree.root;
99
104
  const buttons = instance.findAll(
@@ -112,14 +117,12 @@ describe('Test AirQuality', () => {
112
117
  expect(buttons[0].props.style).toEqual([styleTouch, styleInactive]);
113
118
  expect(buttons[1].props.style).toEqual([styleTouch, styleActive]);
114
119
  expect(buttons[2].props.style).toEqual([styleTouch, styleInactive]);
115
-
116
- expect(tree.toJSON()).toMatchSnapshot();
117
120
  });
118
121
 
119
122
  test('advices', async () => {
120
123
  data.summaryDetail.advices = ['Amazing Good Chop'];
121
124
  act(() => {
122
- tree = create(<AirQuality {...data} />);
125
+ tree = create(wrapComponent(data));
123
126
  });
124
127
  const instance = tree.root;
125
128
  const text = instance.find(
@@ -128,13 +131,12 @@ describe('Test AirQuality', () => {
128
131
  el.type === Text
129
132
  );
130
133
  expect(text.props.children).toEqual('Amazing Good Chop');
131
- expect(tree.toJSON()).toMatchSnapshot();
132
134
  });
133
135
 
134
136
  test('without outdoor_pm2_5_value', async () => {
135
137
  data.summaryDetail.outdoor_pm2_5_value = null;
136
138
  act(() => {
137
- tree = create(<AirQuality {...data} />);
139
+ tree = create(wrapComponent(data));
138
140
  });
139
141
  const instance = tree.root;
140
142
  const buttons = instance.findAll(
@@ -143,13 +145,12 @@ describe('Test AirQuality', () => {
143
145
  el.type === TouchableOpacity
144
146
  );
145
147
  expect(buttons).toHaveLength(2);
146
- expect(tree.toJSON()).toMatchSnapshot();
147
148
  });
148
149
 
149
150
  test('without outdoor_pm10_value', async () => {
150
151
  data.summaryDetail.outdoor_pm10_value = null;
151
152
  act(() => {
152
- tree = create(<AirQuality {...data} />);
153
+ tree = create(wrapComponent(data));
153
154
  });
154
155
  const instance = tree.root;
155
156
  const buttons = instance.findAll(
@@ -158,13 +159,12 @@ describe('Test AirQuality', () => {
158
159
  el.type === TouchableOpacity
159
160
  );
160
161
  expect(buttons).toHaveLength(2);
161
- expect(tree.toJSON()).toMatchSnapshot();
162
162
  });
163
163
 
164
164
  test('without outdoor_co_value', async () => {
165
165
  data.summaryDetail.outdoor_co_value = null;
166
166
  act(() => {
167
- tree = create(<AirQuality {...data} />);
167
+ tree = create(wrapComponent(data));
168
168
  });
169
169
  const instance = tree.root;
170
170
  const buttons = instance.findAll(
@@ -173,6 +173,5 @@ describe('Test AirQuality', () => {
173
173
  el.type === TouchableOpacity
174
174
  );
175
175
  expect(buttons).toHaveLength(2);
176
- expect(tree.toJSON()).toMatchSnapshot();
177
176
  });
178
177
  });
@@ -1,7 +1,7 @@
1
1
  import React, { memo, useCallback, useMemo, useState } from 'react';
2
- import { StyleSheet, TouchableOpacity, View } from 'react-native';
2
+ import { TouchableOpacity, View } from 'react-native';
3
3
  import { IconOutline } from '@ant-design/icons-react-native';
4
- import { t } from 'i18n-js';
4
+ import { useTranslations } from '../../../hooks/Common/useTranslations';
5
5
 
6
6
  import { Colors } from '../../../configs';
7
7
  import { Section } from '../../../commons/index';
@@ -10,8 +10,10 @@ import ConfigHistoryChart from '../ConfigHistoryChart';
10
10
 
11
11
  import SegmentedRoundDisplay from './SegmentedRoundDisplay';
12
12
  import { TESTID } from '../../../configs/Constants';
13
+ import styles from './styles';
13
14
 
14
15
  const AirQuality = memo(({ summaryDetail }) => {
16
+ const t = useTranslations();
15
17
  const {
16
18
  outdoor_pm10_id,
17
19
  outdoor_pm2_5_id,
@@ -121,15 +123,8 @@ const AirQuality = memo(({ summaryDetail }) => {
121
123
  totalValue={500}
122
124
  title={outdoorValues[indexOutdoor].title}
123
125
  style={styles.segment}
126
+ textHeader={t('text_air_quality_index')}
124
127
  />
125
-
126
- <TouchableOpacity
127
- style={[styles.touchStatus, { backgroundColor: outdoorColor }]}
128
- >
129
- <Text size={14} color={Colors.White}>
130
- {outdoorStatus}
131
- </Text>
132
- </TouchableOpacity>
133
128
  {!!advices && !!advices.length && (
134
129
  <View style={styles.boxHealth}>
135
130
  <IconOutline name="alert" size={20} style={styles.iconMargin} />
@@ -173,113 +168,3 @@ const AirQuality = memo(({ summaryDetail }) => {
173
168
  });
174
169
 
175
170
  export default AirQuality;
176
-
177
- const styles = StyleSheet.create({
178
- textIndoor: {
179
- color: Colors.Gray9,
180
- fontSize: 20,
181
- marginBottom: 4,
182
- },
183
- textDesIndoor: {
184
- color: Colors.Gray8,
185
- fontSize: 12,
186
- marginBottom: 16,
187
- },
188
- textNotAvailable: {
189
- textAlign: 'center',
190
- },
191
- boxStatus: {
192
- borderRadius: 10,
193
- height: 80,
194
- overflow: 'hidden',
195
- flexDirection: 'row',
196
- marginBottom: 16,
197
- },
198
- boxEmotion: {
199
- height: 80,
200
- width: 80,
201
- backgroundColor: Colors.Yellow6,
202
- justifyContent: 'center',
203
- alignItems: 'center',
204
- },
205
- textStatus: {
206
- fontSize: 16,
207
- color: Colors.Gray9,
208
- marginRight: 24,
209
- textAlign: 'right',
210
- maxWidth: 120,
211
- },
212
- boxTextStatus: {
213
- backgroundColor: Colors.Yellow4,
214
- flex: 1,
215
- alignItems: 'flex-end',
216
- justifyContent: 'center',
217
- },
218
- boxNumber: {
219
- flexDirection: 'row',
220
- justifyContent: 'space-between',
221
- marginBottom: 16,
222
- },
223
- boxHealth: {
224
- flexDirection: 'row',
225
- marginBottom: 12,
226
- alignItems: 'center',
227
- marginTop: 10,
228
- },
229
- boxContentHealth: {
230
- flexDirection: 'row',
231
- alignItems: 'center',
232
- marginBottom: 8,
233
- },
234
- boxDot: {
235
- width: 8,
236
- height: 8,
237
- borderRadius: 4,
238
- backgroundColor: Colors.Yellow6,
239
- marginRight: 8,
240
- },
241
- textOutdoor: {
242
- color: Colors.Gray9,
243
- fontSize: 20,
244
- marginBottom: 24,
245
- marginTop: 16,
246
- },
247
- touchOption: {
248
- borderWidth: 1,
249
- borderColor: Colors.Gray5,
250
- paddingHorizontal: 16,
251
- paddingVertical: 5,
252
- marginHorizontal: 4,
253
- borderRadius: 2,
254
- },
255
- textOption: {
256
- alignSelf: 'center',
257
- marginBottom: 8,
258
- },
259
- touchStatus: {
260
- borderRadius: 100,
261
- paddingHorizontal: 24,
262
- alignSelf: 'center',
263
- paddingVertical: 3,
264
- marginTop: 12,
265
- },
266
- segment: {
267
- marginTop: 36,
268
- alignSelf: 'center',
269
- },
270
- boxOutdoorValues: {
271
- flexDirection: 'row',
272
- justifyContent: 'center',
273
- },
274
- iconMargin: {
275
- marginRight: 8,
276
- },
277
- historyChart: {
278
- paddingHorizontal: 16,
279
- backgroundColor: Colors.White,
280
- borderRadius: 20,
281
- borderWidth: 1,
282
- borderColor: Colors.Gray4,
283
- marginTop: 16,
284
- },
285
- });
@@ -0,0 +1,112 @@
1
+ import { StyleSheet } from 'react-native';
2
+
3
+ import { Colors } from '../../../configs';
4
+
5
+ export default StyleSheet.create({
6
+ textIndoor: {
7
+ color: Colors.Gray9,
8
+ fontSize: 20,
9
+ marginBottom: 4,
10
+ },
11
+ textDesIndoor: {
12
+ color: Colors.Gray8,
13
+ fontSize: 12,
14
+ marginBottom: 16,
15
+ },
16
+ textNotAvailable: {
17
+ textAlign: 'center',
18
+ },
19
+ boxStatus: {
20
+ borderRadius: 10,
21
+ height: 80,
22
+ overflow: 'hidden',
23
+ flexDirection: 'row',
24
+ marginBottom: 16,
25
+ },
26
+ boxEmotion: {
27
+ height: 80,
28
+ width: 80,
29
+ backgroundColor: Colors.Yellow6,
30
+ justifyContent: 'center',
31
+ alignItems: 'center',
32
+ },
33
+ textStatus: {
34
+ fontSize: 16,
35
+ color: Colors.Gray9,
36
+ marginRight: 24,
37
+ textAlign: 'right',
38
+ maxWidth: 120,
39
+ },
40
+ boxTextStatus: {
41
+ backgroundColor: Colors.Yellow4,
42
+ flex: 1,
43
+ alignItems: 'flex-end',
44
+ justifyContent: 'center',
45
+ },
46
+ boxNumber: {
47
+ flexDirection: 'row',
48
+ justifyContent: 'space-between',
49
+ marginBottom: 16,
50
+ },
51
+ boxHealth: {
52
+ flexDirection: 'row',
53
+ marginBottom: 12,
54
+ alignItems: 'center',
55
+ marginTop: 36,
56
+ },
57
+ boxContentHealth: {
58
+ flexDirection: 'row',
59
+ alignItems: 'center',
60
+ marginBottom: 8,
61
+ },
62
+ boxDot: {
63
+ width: 8,
64
+ height: 8,
65
+ borderRadius: 4,
66
+ backgroundColor: Colors.Yellow6,
67
+ marginRight: 8,
68
+ },
69
+ textOutdoor: {
70
+ color: Colors.Gray9,
71
+ fontSize: 20,
72
+ marginBottom: 24,
73
+ marginTop: 16,
74
+ },
75
+ touchOption: {
76
+ borderWidth: 1,
77
+ borderColor: Colors.Gray5,
78
+ paddingHorizontal: 16,
79
+ paddingVertical: 5,
80
+ marginHorizontal: 4,
81
+ borderRadius: 2,
82
+ },
83
+ textOption: {
84
+ paddingTop: 4,
85
+ },
86
+ touchStatus: {
87
+ borderRadius: 100,
88
+ paddingHorizontal: 24,
89
+ alignSelf: 'center',
90
+ paddingVertical: 3,
91
+ marginTop: 12,
92
+ },
93
+ segment: {
94
+ marginTop: 36,
95
+ alignSelf: 'center',
96
+ },
97
+ boxOutdoorValues: {
98
+ flexDirection: 'row',
99
+ justifyContent: 'center',
100
+ },
101
+ iconMargin: {
102
+ marginRight: 8,
103
+ },
104
+ historyChart: {
105
+ paddingHorizontal: 16,
106
+ backgroundColor: Colors.White,
107
+ borderRadius: 20,
108
+ borderWidth: 1,
109
+ borderColor: Colors.Gray4,
110
+ marginTop: 16,
111
+ },
112
+ });
@@ -1,6 +1,6 @@
1
1
  import React, { memo } from 'react';
2
2
  import { View, StyleSheet } from 'react-native';
3
- import { t } from 'i18n-js';
3
+ import { useTranslations } from '../../../hooks/Common/useTranslations';
4
4
 
5
5
  import { Colors } from '../../../configs';
6
6
  import TotalPowerBox from '../TotalPowerBox';
@@ -8,6 +8,7 @@ import Text from '../../Text';
8
8
  import { TESTID } from '../../../configs/Constants';
9
9
 
10
10
  const TotalPowerConsumption = memo(({ time, total }) => {
11
+ const t = useTranslations();
11
12
  return (
12
13
  <View style={styles.container}>
13
14
  <Text color={Colors.Gray9} size={16} style={styles.txtCurrent}>
@@ -2,19 +2,25 @@ import TotalPowerConsumption from '../TotalPowerConsumption/index';
2
2
  import React from 'react';
3
3
  import renderer, { act } from 'react-test-renderer';
4
4
  import { TESTID } from '../../../configs/Constants';
5
+ import { SCProvider } from '../../../context';
6
+ import { mockSCStore } from '../../../context/mockStore';
7
+
8
+ const wrapComponent = () => (
9
+ <SCProvider initState={mockSCStore({})}>
10
+ <TotalPowerConsumption
11
+ total={{
12
+ value: 10,
13
+ }}
14
+ />
15
+ </SCProvider>
16
+ );
5
17
 
6
18
  describe('Test Total Power Consumption', () => {
7
19
  let tree;
8
20
 
9
- test('render Total Power Consumption', () => {
10
- act(() => {
11
- tree = renderer.create(
12
- <TotalPowerConsumption
13
- total={{
14
- value: 10,
15
- }}
16
- />
17
- );
21
+ test('render Total Power Consumption', async () => {
22
+ await act(() => {
23
+ tree = renderer.create(wrapComponent());
18
24
  });
19
25
  const instance = tree.root;
20
26
  const item = instance.find(
@@ -0,0 +1,57 @@
1
+ import React from 'react';
2
+ import { View } from 'react-native';
3
+
4
+ import ScrollPicker from 'react-native-wheel-scrollview-picker';
5
+ import Text from '../Text';
6
+
7
+ import { Colors } from '../../configs';
8
+ import styles from './styles';
9
+
10
+ const PickerItem = ({ data, isSelected, align }) => {
11
+ return (
12
+ <View style={styles.wrapText}>
13
+ <Text
14
+ type={isSelected ? 'H2' : 'H3'}
15
+ color={isSelected ? Colors.Gray9 : Colors.Gray6}
16
+ bold={isSelected}
17
+ style={{ textAlign: align }}
18
+ >
19
+ {data.text}
20
+ </Text>
21
+ </View>
22
+ );
23
+ };
24
+
25
+ const Picker = ({
26
+ dataSource,
27
+ selectedIndex,
28
+ onValueChange,
29
+ keyPrefix,
30
+ style,
31
+ align = 'center',
32
+ }) => {
33
+ return (
34
+ <View style={style}>
35
+ <ScrollPicker
36
+ dataSource={dataSource}
37
+ selectedIndex={selectedIndex}
38
+ renderItem={(data, index, isSelected) => (
39
+ <PickerItem
40
+ key={`${keyPrefix}-${index}`}
41
+ data={data}
42
+ isSelected={isSelected}
43
+ align={align}
44
+ />
45
+ )}
46
+ onValueChange={onValueChange}
47
+ wrapperHeight={180}
48
+ wrapperColor={Colors.Transparent}
49
+ itemHeight={60}
50
+ highlightColor={Colors.Transparent}
51
+ highlightBorderWidth={0}
52
+ />
53
+ </View>
54
+ );
55
+ };
56
+
57
+ export default Picker;
@@ -0,0 +1,160 @@
1
+ import React, { memo, useState, useEffect, useCallback, useMemo } from 'react';
2
+ import { View } from 'react-native';
3
+ import { useTranslations } from '../../hooks/Common/useTranslations';
4
+ import moment from 'moment';
5
+
6
+ import Picker from './Picker';
7
+ import Text from '../Text';
8
+ import BottomSheet from '../BottomSheet';
9
+ import ViewButtonBottom from '../ViewButtonBottom';
10
+
11
+ import { getDateData } from '../../utils/Converter/time';
12
+ import styles from './styles';
13
+
14
+ const formatNumber = (number) => {
15
+ return {
16
+ text: `${number}`.padStart(2, '0'),
17
+ value: number,
18
+ };
19
+ };
20
+
21
+ const hourData = Array.from({ length: 24 }, (_, i) => formatNumber(i));
22
+ const minuteData = Array.from({ length: 60 }, (_, i) => formatNumber(i));
23
+
24
+ const WheelDateTimePicker = ({
25
+ mode,
26
+ isVisible,
27
+ defaultValue,
28
+ onPicked,
29
+ onHide,
30
+ }) => {
31
+ const t = useTranslations();
32
+ const [dateSelected, setDateSelected] = useState();
33
+ const [hourSelected, setHourSelected] = useState();
34
+ const [minuteSelected, setMinuteSelected] = useState();
35
+
36
+ const { dateData, indexInitialDate, indexInitialHour, indexInitialMinute } =
37
+ useMemo(() => {
38
+ const date = defaultValue ? moment(defaultValue) : moment();
39
+ const maximumDate = moment(date).add(15, 'days');
40
+ const minimumDate = moment(date).add(-15, 'days');
41
+ const [dateData, indexDate] =
42
+ mode === 'datetime'
43
+ ? getDateData(date, maximumDate, minimumDate)
44
+ : [[{ value: date }], 0];
45
+ return {
46
+ dateData: dateData,
47
+ indexInitialDate: indexDate,
48
+ indexInitialHour: date.hour(),
49
+ indexInitialMinute: date.minute(),
50
+ };
51
+ }, [mode, defaultValue]);
52
+
53
+ useEffect(() => {
54
+ setDateSelected(dateData[indexInitialDate].value);
55
+ setHourSelected(hourData[indexInitialHour].value);
56
+ setMinuteSelected(minuteData[indexInitialMinute].value);
57
+ }, [dateData, indexInitialDate, indexInitialHour, indexInitialMinute]);
58
+
59
+ const onValueDateChange = useCallback(
60
+ (data, _) => {
61
+ setDateSelected(data.value);
62
+ },
63
+ [setDateSelected]
64
+ );
65
+
66
+ const onValueHourChange = useCallback(
67
+ (data, _) => {
68
+ setHourSelected(data.value);
69
+ },
70
+ [setHourSelected]
71
+ );
72
+
73
+ const onValueMinuteChange = useCallback(
74
+ (data, _) => {
75
+ setMinuteSelected(data.value);
76
+ },
77
+ [setMinuteSelected]
78
+ );
79
+
80
+ const onCancel = useCallback(() => {
81
+ onHide && onHide();
82
+ }, [onHide]);
83
+
84
+ const onDone = useCallback(() => {
85
+ const newDateTime = moment(dateSelected);
86
+ newDateTime.hour(hourSelected);
87
+ newDateTime.minute(minuteSelected);
88
+ onPicked && onPicked(newDateTime.valueOf());
89
+ onHide && onHide();
90
+ }, [dateSelected, hourSelected, minuteSelected, onHide, onPicked]);
91
+
92
+ const title = useMemo(() => {
93
+ if (mode === 'time') {
94
+ return t('set_time');
95
+ }
96
+ return t('set_date_time');
97
+ }, [t, mode]);
98
+
99
+ return (
100
+ <BottomSheet isVisible={isVisible} onHide={onCancel} title={title}>
101
+ {mode === 'time' ? (
102
+ <View style={styles.container}>
103
+ <Picker
104
+ dataSource={hourData}
105
+ selectedIndex={indexInitialHour}
106
+ onValueChange={onValueHourChange}
107
+ keyPrefix="hour"
108
+ style={styles.picker}
109
+ />
110
+ <Text type="H2" bold style={styles.twoDot}>
111
+ :
112
+ </Text>
113
+ <Picker
114
+ dataSource={minuteData}
115
+ selectedIndex={indexInitialMinute}
116
+ onValueChange={onValueMinuteChange}
117
+ keyPrefix="minute"
118
+ style={styles.picker}
119
+ />
120
+ </View>
121
+ ) : (
122
+ <View style={styles.container}>
123
+ <Picker
124
+ dataSource={dateData}
125
+ selectedIndex={indexInitialDate}
126
+ onValueChange={onValueDateChange}
127
+ keyPrefix="date"
128
+ style={styles.picker}
129
+ align="right"
130
+ />
131
+ <Picker
132
+ dataSource={hourData}
133
+ selectedIndex={indexInitialHour}
134
+ onValueChange={onValueHourChange}
135
+ keyPrefix="hour"
136
+ style={styles.picker}
137
+ />
138
+ <Text type="H2" bold style={styles.twoDot}>
139
+ :
140
+ </Text>
141
+ <Picker
142
+ dataSource={minuteData}
143
+ selectedIndex={indexInitialMinute}
144
+ onValueChange={onValueMinuteChange}
145
+ keyPrefix="minute"
146
+ style={styles.picker}
147
+ />
148
+ </View>
149
+ )}
150
+ <ViewButtonBottom
151
+ leftTitle={t('cancel')}
152
+ onLeftClick={onCancel}
153
+ rightTitle={t('done')}
154
+ onRightClick={onDone}
155
+ />
156
+ </BottomSheet>
157
+ );
158
+ };
159
+
160
+ export default memo(WheelDateTimePicker);
@@ -0,0 +1,21 @@
1
+ import { StyleSheet } from 'react-native';
2
+
3
+ export default StyleSheet.create({
4
+ container: {
5
+ flexDirection: 'row',
6
+ justifyContent: 'center',
7
+ alignItems: 'center',
8
+ height: 180,
9
+ },
10
+ picker: {
11
+ width: 120,
12
+ },
13
+ twoDot: {
14
+ marginTop: -4,
15
+ },
16
+ wrapText: {
17
+ width: '100%',
18
+ height: '100%',
19
+ justifyContent: 'center',
20
+ },
21
+ });