agora-appbuilder-core 3.0.9 → 3.0.10

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 (248) hide show
  1. package/Readme.md +6 -0
  2. package/package.json +2 -2
  3. package/template/_package-lock.json +5871 -4728
  4. package/template/agora-rn-uikit/src/Contexts/LocalUserContext.tsx +4 -0
  5. package/template/agora-rn-uikit/src/Contexts/PropsContext.tsx +18 -0
  6. package/template/agora-rn-uikit/src/Contexts/RtcContext.tsx +2 -0
  7. package/template/agora-rn-uikit/src/Controls/BtnTemplate.tsx +30 -26
  8. package/template/agora-rn-uikit/src/Controls/Icons.ts +30 -83
  9. package/template/agora-rn-uikit/src/Controls/ImageIcon.tsx +6 -6
  10. package/template/agora-rn-uikit/src/Reducer/ActiveSpeakerDetected.ts +11 -0
  11. package/template/agora-rn-uikit/src/Reducer/LocalMuteAudio.ts +1 -0
  12. package/template/agora-rn-uikit/src/Reducer/LocalMuteVideo.ts +1 -0
  13. package/template/agora-rn-uikit/src/Reducer/LocalPermissionState.ts +24 -0
  14. package/template/agora-rn-uikit/src/Reducer/RemoteAudioStateChanged.ts +1 -0
  15. package/template/agora-rn-uikit/src/Reducer/RemoteVideoStateChanged.ts +1 -0
  16. package/template/agora-rn-uikit/src/Reducer/UpdateDualStreamMode.ts +1 -0
  17. package/template/agora-rn-uikit/src/Reducer/UserJoined.ts +2 -0
  18. package/template/agora-rn-uikit/src/Reducer/UserMuteRemoteAudio.ts +1 -0
  19. package/template/agora-rn-uikit/src/Reducer/UserMuteRemoteVideo.ts +1 -0
  20. package/template/agora-rn-uikit/src/Reducer/UserOffline.ts +1 -0
  21. package/template/agora-rn-uikit/src/Reducer/UserPin.ts +11 -0
  22. package/template/agora-rn-uikit/src/Reducer/index.ts +3 -0
  23. package/template/agora-rn-uikit/src/Rtc/Create.tsx +89 -1
  24. package/template/agora-rn-uikit/src/RtcConfigure.tsx +39 -2
  25. package/template/agora-rn-uikit/src/Views/MaxVideoView.native.tsx +15 -5
  26. package/template/agora-rn-uikit/src/Views/MaxVideoView.tsx +15 -9
  27. package/template/agora-rn-uikit/src/index.ts +3 -1
  28. package/template/android/app/build.gradle +1 -0
  29. package/template/android/app/src/main/AndroidManifest.xml +22 -15
  30. package/template/android/app/src/main/assets/fonts/SourceSansPro-Regular.ttf +0 -0
  31. package/template/android/app/src/main/assets/fonts/icomoon.ttf +0 -0
  32. package/template/android/app/src/main/java/com/helloworld/MainActivity.java +50 -0
  33. package/template/android/app/src/main/res/values/colors.xml +7 -0
  34. package/template/android/build.gradle +3 -3
  35. package/template/babel.config.js +1 -0
  36. package/template/bridge/rtc/webNg/RtcEngine.ts +110 -17
  37. package/template/customization-api/sub-components.ts +1 -1
  38. package/template/customization-api/typeDefinition.ts +2 -1
  39. package/template/electron/index.html +27 -27
  40. package/template/electron/renderer/index.js +1 -0
  41. package/template/global.d.ts +25 -4
  42. package/template/index.rsdk.tsx +1 -0
  43. package/template/index.web.js +2 -1
  44. package/template/index.wsdk.tsx +1 -1
  45. package/template/ios/HelloWorld/Info.plist +14 -1
  46. package/template/ios/HelloWorld.xcodeproj/project.pbxproj +17 -0
  47. package/template/metro.config.js +1 -1
  48. package/template/package.json +18 -7
  49. package/template/react-native-toast-message/index.d.ts +43 -43
  50. package/template/react-native-toast-message/src/colors/index.js +3 -2
  51. package/template/react-native-toast-message/src/components/base/index.js +46 -59
  52. package/template/react-native-toast-message/src/components/base/styles.js +16 -32
  53. package/template/react-native-toast-message/src/components/checkbox.js +178 -0
  54. package/template/react-native-toast-message/src/components/error.js +3 -2
  55. package/template/react-native-toast-message/src/components/info.js +3 -2
  56. package/template/react-native-toast-message/src/components/success.js +3 -2
  57. package/template/react-native-toast-message/src/index.js +122 -31
  58. package/template/react-native-toast-message/src/index.sdk.tsx +125 -35
  59. package/template/react-native-toast-message/src/styles.js +3 -4
  60. package/template/react-native-toast-message/src/styles.sdk.ts +3 -4
  61. package/template/react-native.config.js +7 -0
  62. package/template/src/App.tsx +6 -0
  63. package/template/src/AppWrapper.tsx +63 -28
  64. package/template/src/assets/font-styles.css +329 -0
  65. package/template/src/assets/fonts/SourceSansPro-Regular.ttf +0 -0
  66. package/template/src/assets/fonts/icomoon.ttf +0 -0
  67. package/template/src/assets/permission.png +0 -0
  68. package/template/src/assets/selection.json +1 -0
  69. package/template/src/atoms/ActionMenu.tsx +236 -0
  70. package/template/src/atoms/AnimatedActiveSpeaker.native.tsx +71 -0
  71. package/template/src/atoms/AnimatedActiveSpeaker.tsx +84 -0
  72. package/template/src/atoms/AnimatedRings.native.tsx +68 -0
  73. package/template/src/atoms/AnimatedRings.tsx +70 -0
  74. package/template/src/atoms/Card.tsx +61 -0
  75. package/template/src/atoms/CircularProgress.native.tsx +121 -0
  76. package/template/src/atoms/CircularProgress.tsx +102 -0
  77. package/template/src/atoms/CustomIcon.tsx +88 -0
  78. package/template/src/atoms/CustomSwitch.tsx +287 -0
  79. package/template/src/atoms/Dropdown.tsx +306 -0
  80. package/template/src/atoms/HorizontalRule.tsx +3 -1
  81. package/template/src/atoms/IconButton.tsx +162 -0
  82. package/template/src/atoms/ImageIcon.tsx +98 -0
  83. package/template/src/atoms/InfoBubble.tsx +291 -0
  84. package/template/src/atoms/Input.tsx +87 -0
  85. package/template/src/atoms/InviteInfo.tsx +166 -0
  86. package/template/src/atoms/LinkButton.tsx +28 -0
  87. package/template/src/atoms/OutlineButton.tsx +61 -0
  88. package/template/src/atoms/ParticipantsCount.tsx +73 -0
  89. package/template/src/atoms/Popup.tsx +147 -0
  90. package/template/src/atoms/PrimaryButton.tsx +51 -26
  91. package/template/src/atoms/RecordingInfo.tsx +49 -0
  92. package/template/src/atoms/SecondaryButton.tsx +8 -5
  93. package/template/src/atoms/Spacer.tsx +22 -0
  94. package/template/src/atoms/TertiaryButton.tsx +78 -0
  95. package/template/src/atoms/TextInput.tsx +12 -14
  96. package/template/src/atoms/Toggle.tsx +47 -0
  97. package/template/src/atoms/Tooltip.native.tsx +65 -0
  98. package/template/src/atoms/Tooltip.tsx +94 -0
  99. package/template/src/atoms/UserAvatar.tsx +60 -0
  100. package/template/src/components/Chat.tsx +86 -214
  101. package/template/src/components/ChatContext.ts +8 -1
  102. package/template/src/components/ColorConfigure.tsx +1 -1
  103. package/template/src/components/ColorContext.ts +1 -1
  104. package/template/src/components/CommonStyles.ts +44 -0
  105. package/template/src/components/Controls.tsx +342 -42
  106. package/template/src/components/{Controls.native.tsx → Controls1.native.tsx} +6 -4
  107. package/template/src/components/DeviceConfigure.tsx +461 -101
  108. package/template/src/components/DeviceContext.tsx +8 -4
  109. package/template/src/components/EventsConfigure.tsx +144 -7
  110. package/template/src/components/GraphQLProvider.tsx +1 -1
  111. package/template/src/components/GridVideo.tsx +59 -44
  112. package/template/src/components/HostControlView.tsx +114 -35
  113. package/template/src/components/Navbar.tsx +216 -398
  114. package/template/src/components/NetworkQualityContext.tsx +20 -20
  115. package/template/src/components/ParticipantsView.tsx +177 -154
  116. package/template/src/components/PinnedVideo.tsx +207 -120
  117. package/template/src/components/Precall.native.tsx +358 -119
  118. package/template/src/components/Precall.tsx +269 -135
  119. package/template/src/components/RTMConfigure.tsx +27 -4
  120. package/template/src/components/Router.electron.ts +1 -0
  121. package/template/src/components/Router.native.ts +1 -0
  122. package/template/src/components/Router.sdk.ts +1 -0
  123. package/template/src/components/Router.ts +1 -0
  124. package/template/src/components/Settings.tsx +26 -95
  125. package/template/src/components/SettingsView.tsx +251 -56
  126. package/template/src/components/Share.tsx +302 -273
  127. package/template/src/components/StorageContext.tsx +30 -3
  128. package/template/src/components/ToastComponent.tsx +8 -0
  129. package/template/src/components/chat-messages/useChatMessages.tsx +69 -23
  130. package/template/src/components/chat-ui/useChatUIControl.tsx +7 -0
  131. package/template/src/components/common/Error.tsx +20 -6
  132. package/template/src/components/common/Logo.tsx +16 -15
  133. package/template/src/components/contexts/LiveStreamDataContext.tsx +10 -5
  134. package/template/src/components/contexts/VideoMeetingDataContext.tsx +37 -7
  135. package/template/src/components/livestream/LiveStreamContext.tsx +270 -36
  136. package/template/src/components/livestream/Types.ts +39 -14
  137. package/template/src/components/livestream/index.ts +1 -0
  138. package/template/src/components/livestream/views/LiveStreamControls.tsx +12 -4
  139. package/template/src/components/participants/AllAudienceParticipants.tsx +101 -30
  140. package/template/src/components/participants/AllHostParticipants.tsx +103 -34
  141. package/template/src/components/participants/Participant.tsx +302 -0
  142. package/template/src/components/participants/ParticipantName.tsx +13 -7
  143. package/template/src/components/participants/ParticipantSectionTitle.tsx +35 -10
  144. package/template/src/components/participants/ScreenshareParticipants.tsx +144 -12
  145. package/template/src/components/participants/UserActionMenuOptions.tsx +398 -0
  146. package/template/src/components/popups/InvitePopup.tsx +115 -0
  147. package/template/src/components/popups/StopRecordingPopup.tsx +114 -0
  148. package/template/src/components/precall/LocalMute.tsx +84 -14
  149. package/template/src/components/precall/{LocalMute.native.tsx → LocalMute1.native.tsx} +21 -5
  150. package/template/src/components/precall/PermissionHelper.native.tsx +5 -0
  151. package/template/src/components/precall/PermissionHelper.tsx +126 -0
  152. package/template/src/components/precall/PreCallSettings.tsx +52 -0
  153. package/template/src/components/precall/VideoPreview.native.tsx +48 -3
  154. package/template/src/components/precall/VideoPreview.tsx +163 -7
  155. package/template/src/components/precall/joinCallBtn.tsx +15 -2
  156. package/template/src/components/precall/meetingTitle.tsx +15 -12
  157. package/template/src/components/precall/selectDevice.tsx +1 -21
  158. package/template/src/components/precall/textInput.tsx +32 -4
  159. package/template/src/components/precall/usePreCall.tsx +16 -0
  160. package/template/src/components/styles.ts +42 -21
  161. package/template/src/components/useShareLink.tsx +12 -14
  162. package/template/src/components/useToast.tsx +41 -0
  163. package/template/src/components/useVideoCall.tsx +65 -0
  164. package/template/src/language/default-labels/precallScreenLabels.ts +3 -3
  165. package/template/src/pages/Authenticate.tsx +5 -15
  166. package/template/src/pages/Create.tsx +293 -165
  167. package/template/src/pages/Endcall.tsx +148 -0
  168. package/template/src/pages/Join.tsx +93 -67
  169. package/template/src/pages/VideoCall.tsx +89 -64
  170. package/template/src/pages/video-call/ActionSheet.native.tsx +215 -0
  171. package/template/src/pages/video-call/ActionSheet.tsx +226 -0
  172. package/template/src/pages/video-call/ActionSheetContent.tsx +479 -0
  173. package/template/src/pages/video-call/ActionSheetHandle.tsx +38 -0
  174. package/template/src/pages/video-call/ActionSheetStyles.css +138 -0
  175. package/template/src/pages/video-call/DefaultLayouts.ts +4 -4
  176. package/template/src/pages/video-call/NameWithMicIcon.tsx +120 -44
  177. package/template/src/pages/video-call/RenderComponent.tsx +3 -2
  178. package/template/src/pages/video-call/SidePanelHeader.tsx +190 -0
  179. package/template/src/pages/video-call/VideoCallMobileView.tsx +139 -0
  180. package/template/src/pages/video-call/VideoCallScreen.native.tsx +37 -0
  181. package/template/src/pages/video-call/VideoCallScreen.tsx +45 -9
  182. package/template/src/pages/video-call/VideoComponent.tsx +18 -3
  183. package/template/src/pages/video-call/VideoRenderer.tsx +218 -60
  184. package/template/src/rtm-events/constants.ts +2 -0
  185. package/template/src/subComponents/ChatBubble.tsx +123 -83
  186. package/template/src/subComponents/ChatContainer.tsx +257 -84
  187. package/template/src/subComponents/ChatInput.ios.tsx +237 -0
  188. package/template/src/subComponents/ChatInput.tsx +61 -46
  189. package/template/src/subComponents/Checkbox.native.tsx +16 -5
  190. package/template/src/subComponents/Checkbox.tsx +2 -2
  191. package/template/src/subComponents/CopyJoinInfo.tsx +36 -58
  192. package/template/src/subComponents/EndcallPopup.tsx +107 -0
  193. package/template/src/subComponents/FallbackLogo.tsx +122 -40
  194. package/template/src/subComponents/LanguageSelector.tsx +1 -1
  195. package/template/src/subComponents/LayoutIconButton.tsx +201 -0
  196. package/template/src/subComponents/LayoutIconDropdown.tsx +131 -134
  197. package/template/src/subComponents/{LayoutIconDropdown.native.tsx → LayoutIconDropdown1.native.tsx} +4 -18
  198. package/template/src/subComponents/LocalAudioMute.tsx +119 -27
  199. package/template/src/subComponents/LocalEndCall.tsx +71 -33
  200. package/template/src/subComponents/LocalSwitchCamera.tsx +17 -30
  201. package/template/src/subComponents/LocalVideoMute.tsx +117 -27
  202. package/template/src/subComponents/Logo.tsx +3 -4
  203. package/template/src/subComponents/LogoutButton.tsx +1 -1
  204. package/template/src/subComponents/NetworkQualityPill.tsx +60 -63
  205. package/template/src/subComponents/OpenInNativeButton.tsx +3 -3
  206. package/template/src/subComponents/Recording.tsx +28 -29
  207. package/template/src/subComponents/RemoteAudioMute.tsx +83 -29
  208. package/template/src/subComponents/RemoteEndCall.tsx +8 -5
  209. package/template/src/subComponents/RemoteMutePopup.tsx +193 -0
  210. package/template/src/subComponents/RemoteVideoMute.tsx +74 -21
  211. package/template/src/subComponents/RemoveMeetingPopup.tsx +109 -0
  212. package/template/src/subComponents/RemoveScreensharePopup.tsx +109 -0
  213. package/template/src/subComponents/ScreenShareNotice.tsx +83 -8
  214. package/template/src/subComponents/SelectDevice.tsx +404 -61
  215. package/template/src/subComponents/SelectDeviceSettings.backup.tsx +207 -0
  216. package/template/src/subComponents/SelectOAuth.tsx +9 -8
  217. package/template/src/subComponents/SidePanelHeader.tsx +112 -0
  218. package/template/src/subComponents/ToastConfig.tsx +150 -10
  219. package/template/src/subComponents/chat/ChatParticipants.tsx +187 -78
  220. package/template/src/subComponents/livestream/CurrentLiveStreamRequestsView.tsx +95 -32
  221. package/template/src/subComponents/livestream/controls/LocalRaiseHand.tsx +29 -33
  222. package/template/src/subComponents/livestream/controls/RemoteLiveStreamApprovedRequestRecall.tsx +6 -6
  223. package/template/src/subComponents/livestream/controls/RemoteLiveStreamRequestApprove.tsx +24 -11
  224. package/template/src/subComponents/livestream/controls/RemoteLiveStreamRequestReject.tsx +17 -10
  225. package/template/src/subComponents/recording/useRecording.tsx +79 -27
  226. package/template/src/subComponents/screenshare/ScreenshareButton.tsx +52 -70
  227. package/template/src/subComponents/screenshare/ScreenshareConfigure.native.tsx +11 -2
  228. package/template/src/subComponents/screenshare/ScreenshareConfigure.tsx +26 -4
  229. package/template/src/theme/index.ts +46 -0
  230. package/template/src/utils/PlatformWrapper.tsx +21 -0
  231. package/template/src/utils/common.tsx +155 -1
  232. package/template/src/utils/hexadecimalTransparency.ts +108 -0
  233. package/template/src/utils/index.tsx +19 -0
  234. package/template/src/utils/isMobileOrTablet.ts +7 -2
  235. package/template/src/utils/pendingStateUpdateHelper.ts +19 -0
  236. package/template/src/utils/useButtonTemplate.tsx +1 -0
  237. package/template/src/utils/useFocus.tsx +46 -0
  238. package/template/src/utils/useIsActiveSpeaker.ts +27 -0
  239. package/template/src/utils/useIsHandRaised.ts +13 -0
  240. package/template/src/utils/useMuteToggleLocal.ts +54 -3
  241. package/template/src/utils/useRemoteEndScreenshare.ts +26 -0
  242. package/template/src/utils/useRemoteRequest.ts +84 -0
  243. package/template/web/index.html +5 -0
  244. package/template/webpack.commons.js +13 -8
  245. package/template/webpack.web.config.js +1 -0
  246. package/template/src/assets/icons.ts +0 -102
  247. package/template/src/components/participants/MeParticipant.tsx +0 -38
  248. package/template/src/components/participants/RemoteParticipants.tsx +0 -71
@@ -1,67 +1,67 @@
1
1
  import React from 'react';
2
- import { ViewStyle, TextStyle, ImageSourcePropType } from 'react-native'
2
+ import { ViewStyle, TextStyle, ImageSourcePropType } from 'react-native';
3
3
 
4
4
  declare module 'react-native-toast-message' {
5
5
  interface AnyObject {
6
6
  [key: string]: any;
7
7
  }
8
8
 
9
- export type ToastPosition = 'top' | 'bottom'
9
+ export type ToastPosition = 'top' | 'bottom';
10
10
 
11
11
  export interface BaseToastProps {
12
- leadingIcon?: ImageSourcePropType,
13
- trailingIcon?: ImageSourcePropType,
14
- text1?: string,
15
- text2?: string,
16
- onPress?: () => void,
17
- onTrailingIconPress?: () => void,
18
- onLeadingIconPress?: () => void,
19
- style?: ViewStyle,
20
- leadingIconContainerStyle?: ViewStyle,
21
- trailingIconContainerStyle?: ViewStyle,
22
- leadingIconStyle?: ViewStyle,
23
- trailingIconStyle?: ViewStyle,
24
- contentContainerStyle?: ViewStyle,
25
- text1Style?: TextStyle,
26
- text2Style?: TextStyle,
27
- activeOpacity?: number,
28
- text1NumberOfLines: number,
29
- text2NumberOfLines: number,
12
+ leadingIcon?: React.ReactNode;
13
+ trailingIcon?: React.ReactNode;
14
+ text1?: string;
15
+ text2?: string;
16
+ onPress?: () => void;
17
+ style?: ViewStyle;
18
+ contentContainerStyle?: ViewStyle;
19
+ text1Style?: TextStyle;
20
+ text2Style?: TextStyle;
21
+ activeOpacity?: number;
22
+ text1NumberOfLines: number;
23
+ text2NumberOfLines: number;
24
+ primaryBtn?: React.ReactNode;
25
+ secondaryBtn?: React.ReactNode;
30
26
  }
31
- export const BaseToast: React.FC<BaseToastProps>
27
+ export const BaseToast: React.FC<BaseToastProps>;
32
28
 
33
29
  export interface ToastProps {
34
30
  ref: (ref: any) => any;
35
- config?: AnyObject,
36
- style?: ViewStyle,
37
- topOffset?: number,
38
- bottomOffset?: number,
39
- keyboardOffset?: number,
40
- visibilityTime?: number,
41
- autoHide?: boolean,
42
- height?: number,
43
- position?: ToastPosition,
44
- type?: string
31
+ config?: AnyObject;
32
+ style?: ViewStyle;
33
+ topOffset?: number;
34
+ bottomOffset?: number;
35
+ keyboardOffset?: number;
36
+ visibilityTime?: number;
37
+ autoHide?: boolean;
38
+ height?: number;
39
+ position?: ToastPosition;
40
+ type?: string;
45
41
  }
46
42
 
47
43
  export default class Toast extends React.Component<ToastProps> {
48
44
  static show(options: {
49
- type: string,
50
- position?: ToastPosition,
51
- text1?: string,
52
- text2?: string,
53
- visibilityTime?: number,
54
- autoHide?: boolean,
55
- topOffset?: number,
56
- bottomOffset?: number,
57
- props?: AnyObject,
58
- onShow?: () => void,
59
- onHide?: () => void,
60
- onPress?: () => void
45
+ type: string;
46
+ position?: ToastPosition;
47
+ text1?: string;
48
+ text2?: string;
49
+ primaryBtn?: React.ReactNode;
50
+ secondaryBtn?: React.ReactNode;
51
+ visibilityTime?: number;
52
+ autoHide?: boolean;
53
+ topOffset?: number;
54
+ bottomOffset?: number;
55
+ props?: AnyObject;
56
+ onShow?: () => void;
57
+ onHide?: () => void;
58
+ onPress?: () => void;
61
59
  }): void;
62
60
 
63
61
  static hide(): void;
64
62
 
63
+ static getToastId(): number;
64
+
65
65
  static setRef(ref: any): any;
66
66
  }
67
67
  }
@@ -1,10 +1,11 @@
1
1
  const colors = {
2
2
  white: '#FFF',
3
- blazeOrange: '#FE6301',
3
+ blazeOrange: '#FF414D',
4
4
  mantis: '#69C779',
5
5
  alto: '#D8D8D8',
6
6
  dustyGray: '#979797',
7
- lightSkyBlue: '#87CEFA'
7
+ lightSkyBlue: '#87CEFA',
8
+ black: '#040405'
8
9
  };
9
10
 
10
11
  export default colors;
@@ -13,53 +13,51 @@ function BaseToast({
13
13
  text1,
14
14
  text2,
15
15
  onPress,
16
- onLeadingIconPress,
17
- onTrailingIconPress,
18
16
  style,
19
- leadingIconContainerStyle,
20
- trailingIconContainerStyle,
21
- leadingIconStyle,
22
- trailingIconStyle,
23
17
  contentContainerStyle,
24
18
  text1Style,
25
19
  text2Style,
26
20
  activeOpacity,
27
21
  text1NumberOfLines,
28
- text2NumberOfLines
22
+ text2NumberOfLines,
23
+ primaryBtn,
24
+ secondaryBtn
29
25
  }) {
30
26
  return (
31
27
  <TouchableOpacity
32
28
  testID='rootView'
33
- style={[styles.base, styles.borderLeft, style]}
29
+ style={[styles.base, styles.borderTop, style]}
34
30
  onPress={onPress}
35
31
  activeOpacity={onPress ? activeOpacity : 1}>
36
- {leadingIcon && (
37
- <TouchableOpacity
38
- testID='leadingIcon'
39
- style={[styles.leadingIconContainer, leadingIconContainerStyle]}
40
- onPress={onLeadingIconPress}
41
- activeOpacity={onLeadingIconPress ? activeOpacity : 1}>
42
- <Icon
43
- style={{ ...styles.leadingIcon, ...leadingIconStyle }}
44
- source={leadingIcon}
45
- />
46
- </TouchableOpacity>
47
- )}
48
-
49
32
  <View
50
33
  testID='contentContainer'
51
34
  style={[styles.contentContainer, contentContainerStyle]}>
52
- {text1?.length > 0 && (
53
- <View>
54
- <Text
55
- testID='text1'
56
- style={[styles.text1, text1Style]}
57
- numberOfLines={text1NumberOfLines}>
58
- {text1}
59
- </Text>
35
+ {(text1 || text1?.length > 0) && (
36
+ <View
37
+ style={{
38
+ flex: 1,
39
+ flexDirection: 'row',
40
+ justifyContent: 'space-between'
41
+ }}>
42
+ <View
43
+ style={{
44
+ flexDirection: 'row',
45
+ flex: 1
46
+ }}>
47
+ {leadingIcon ? leadingIcon : <></>}
48
+ <Text
49
+ testID='text1'
50
+ style={[styles.text1, text1Style]}
51
+ numberOfLines={text1NumberOfLines}>
52
+ {text1}
53
+ </Text>
54
+ </View>
55
+ <View style={{ justifyContent: 'flex-start', alignSelf: 'center' }}>
56
+ {trailingIcon ? trailingIcon : <></>}
57
+ </View>
60
58
  </View>
61
59
  )}
62
- {text2?.length > 0 && (
60
+ {(text2 || text2?.length > 0) && (
63
61
  <View>
64
62
  <Text
65
63
  testID='text2'
@@ -69,20 +67,21 @@ function BaseToast({
69
67
  </Text>
70
68
  </View>
71
69
  )}
70
+ {primaryBtn || secondaryBtn ? (
71
+ <View
72
+ style={{
73
+ flex: 1,
74
+ flexDirection: 'row',
75
+ paddingTop: 32,
76
+ paddingBottom: 24
77
+ }}>
78
+ {primaryBtn ? primaryBtn : <></>}
79
+ {secondaryBtn ? secondaryBtn : <></>}
80
+ </View>
81
+ ) : (
82
+ <></>
83
+ )}
72
84
  </View>
73
-
74
- {trailingIcon && (
75
- <TouchableOpacity
76
- testID='trailingIcon'
77
- style={[styles.trailingIconContainer, trailingIconContainerStyle]}
78
- onPress={onTrailingIconPress}
79
- activeOpacity={onTrailingIconPress ? activeOpacity : 1}>
80
- <Icon
81
- style={{ ...styles.trailingIcon, ...trailingIconStyle }}
82
- source={trailingIcon}
83
- />
84
- </TouchableOpacity>
85
- )}
86
85
  </TouchableOpacity>
87
86
  );
88
87
  }
@@ -90,18 +89,12 @@ function BaseToast({
90
89
  BaseToast.HEIGHT = HEIGHT;
91
90
 
92
91
  BaseToast.propTypes = {
93
- leadingIcon: Icon.propTypes.source,
94
- trailingIcon: Icon.propTypes.source,
92
+ leadingIcon: PropTypes.node,
93
+ trailingIcon: PropTypes.node,
95
94
  text1: PropTypes.string,
96
95
  text2: PropTypes.string,
97
96
  onPress: PropTypes.func,
98
- onTrailingIconPress: PropTypes.func,
99
- onLeadingIconPress: PropTypes.func,
100
97
  style: stylePropType,
101
- leadingIconContainerStyle: stylePropType,
102
- trailingIconContainerStyle: stylePropType,
103
- leadingIconStyle: stylePropType,
104
- trailingIconStyle: stylePropType,
105
98
  contentContainerStyle: stylePropType,
106
99
  text1Style: stylePropType,
107
100
  text2Style: stylePropType,
@@ -111,18 +104,12 @@ BaseToast.propTypes = {
111
104
  };
112
105
 
113
106
  BaseToast.defaultProps = {
114
- leadingIcon: undefined,
115
- trailingIcon: icons.close,
107
+ leadingIcon: null,
108
+ trailingIcon: null,
116
109
  text1: undefined,
117
110
  text2: undefined,
118
111
  onPress: undefined,
119
- onLeadingIconPress: undefined,
120
- onTrailingIconPress: undefined,
121
112
  style: undefined,
122
- leadingIconContainerStyle: undefined,
123
- trailingIconContainerStyle: undefined,
124
- leadingIconStyle: undefined,
125
- trailingIconStyle: undefined,
126
113
  contentContainerStyle: undefined,
127
114
  text1Style: undefined,
128
115
  text2Style: undefined,
@@ -1,13 +1,12 @@
1
1
  import { StyleSheet } from 'react-native';
2
2
  import colors from '../../colors';
3
3
 
4
- export const HEIGHT = 60;
4
+ export const HEIGHT = 105;
5
5
 
6
6
  export default StyleSheet.create({
7
7
  base: {
8
8
  flexDirection: 'row',
9
9
  height: HEIGHT,
10
- width: '90%',
11
10
  borderRadius: 6,
12
11
  backgroundColor: colors.white,
13
12
  shadowOffset: { width: 0, height: 0 },
@@ -15,42 +14,27 @@ export default StyleSheet.create({
15
14
  shadowRadius: 6,
16
15
  elevation: 2
17
16
  },
18
- borderLeft: {
19
- borderLeftWidth: 5,
20
- borderLeftColor: colors.alto
21
- },
22
- leadingIconContainer: {
23
- width: 50,
24
- justifyContent: 'center',
25
- alignItems: 'center'
17
+ borderTop: {
18
+ borderTopWidth: 5,
19
+ borderTopColor: colors.alto
26
20
  },
27
21
  contentContainer: {
22
+ paddingLeft: 20,
28
23
  flex: 1,
29
- justifyContent: 'center',
30
- alignItems: 'flex-start' // in case of rtl the text will start from the right
31
- },
32
- trailingIconContainer: {
33
- width: 40,
34
- justifyContent: 'center',
35
- alignItems: 'center'
36
- },
37
- leadingIcon: {
38
- width: 20,
39
- height: 20
40
- },
41
- trailingIcon: {
42
- width: 9,
43
- height: 9
24
+ flexDirection: 'row',
25
+ justifyContent: 'flex-start'
44
26
  },
45
27
  text1: {
46
- fontSize: 12,
47
- fontWeight: 'bold',
48
- marginBottom: 3,
49
- width: '100%'
28
+ fontSize: 15,
29
+ fontFamily: 'Source Sans Pro',
30
+ width: '100%',
31
+ fontWeight: '600',
32
+ marginRight: 2
50
33
  },
51
34
  text2: {
52
- fontSize: 10,
53
- color: colors.dustyGray,
54
- width: '100%'
35
+ fontSize: 15,
36
+ fontFamily: 'Source Sans Pro',
37
+ width: '100%',
38
+ fontWeight: '400'
55
39
  }
56
40
  });
@@ -0,0 +1,178 @@
1
+ import React, { useState, useEffect } from 'react';
2
+ import { View, TouchableOpacity, Text, Pressable } from 'react-native';
3
+ import PropTypes from 'prop-types';
4
+ import { stylePropType } from '../utils/prop-types';
5
+ import styles, { HEIGHT } from './base/styles';
6
+ import Checkbox from '../../../src/subComponents/Checkbox';
7
+ import { PrimaryButton } from 'customization-api';
8
+ import TertiaryButton from '../../../src/atoms/TertiaryButton';
9
+
10
+ function BaseToast({
11
+ leadingIcon,
12
+ trailingIcon,
13
+ text1,
14
+ text2,
15
+ onPress,
16
+ style,
17
+ contentContainerStyle,
18
+ text1Style,
19
+ text2Style,
20
+ subTextStyle,
21
+ activeOpacity,
22
+ text1NumberOfLines,
23
+ text2NumberOfLines,
24
+ primaryBtn,
25
+ secondaryBtn,
26
+ checkbox
27
+ }) {
28
+ const [checked, setChecked] = useState(false);
29
+
30
+ return (
31
+ <TouchableOpacity
32
+ testID='rootView'
33
+ style={[styles.base, styles.borderTop, style]}
34
+ onPress={onPress}
35
+ activeOpacity={onPress ? activeOpacity : 1}>
36
+ <View
37
+ testID='contentContainer'
38
+ style={[styles.contentContainer, contentContainerStyle]}>
39
+ {(text1 || text1?.length > 0) && (
40
+ <View
41
+ style={{
42
+ flex: 1,
43
+ flexDirection: 'row',
44
+ justifyContent: 'space-between'
45
+ }}>
46
+ <View
47
+ style={{
48
+ flexDirection: 'row',
49
+ flex: 1
50
+ }}>
51
+ {leadingIcon ? leadingIcon : <></>}
52
+ <Text
53
+ testID='text1'
54
+ style={[styles.text1, text1Style]}
55
+ numberOfLines={text1NumberOfLines}>
56
+ {text1}
57
+ </Text>
58
+ </View>
59
+ <View style={{ justifyContent: 'flex-start', alignSelf: 'center' }}>
60
+ {trailingIcon ? trailingIcon : <></>}
61
+ </View>
62
+ </View>
63
+ )}
64
+ {(text2 || text2?.length > 0) && (
65
+ <View>
66
+ <Text
67
+ testID='text2'
68
+ style={[styles.text2, text2Style]}
69
+ numberOfLines={text2NumberOfLines}>
70
+ {text2}
71
+ </Text>
72
+ </View>
73
+ )}
74
+ {checkbox && (
75
+ <Pressable
76
+ style={{
77
+ flex: 1,
78
+ flexDirection: 'row',
79
+ paddingTop: 16,
80
+ paddingBottom: 8,
81
+ marginLeft: 4
82
+ }}
83
+ onPress={() => {
84
+ setChecked((e) => !e);
85
+ }}>
86
+ <Checkbox
87
+ {...checkbox}
88
+ value={checked}
89
+ onValueChange={setChecked}
90
+ style={{
91
+ marginRight: 8
92
+ }}
93
+ />
94
+ <Text style={subTextStyle}>{checkbox.text}</Text>
95
+ </Pressable>
96
+ )}
97
+ {primaryBtn || secondaryBtn ? (
98
+ <View
99
+ style={{
100
+ flex: 1,
101
+ flexDirection: 'row',
102
+ paddingTop: 16,
103
+ paddingBottom: 24
104
+ }}>
105
+ {primaryBtn && (
106
+ <PrimaryButton
107
+ textStyle={{ fontWeight: '600', fontSize: 16, paddingLeft: 0 }}
108
+ containerStyle={{
109
+ height: 40,
110
+ borderRadius: 4,
111
+ paddingVertical: 0,
112
+ paddingHorizontal: 12,
113
+ minWidth: 'unset'
114
+ }}
115
+ {...primaryBtn}
116
+ onPress={(e) => {
117
+ primaryBtn.onPress(checked, e);
118
+ setChecked(false);
119
+ }}
120
+ />
121
+ )}
122
+ {secondaryBtn && (
123
+ <TertiaryButton
124
+ textStyle={{ fontWeight: '600', fontSize: 16, paddingLeft: 0 }}
125
+ containerStyle={{
126
+ height: 40,
127
+ marginLeft: 16,
128
+ paddingVertical: 0
129
+ }}
130
+ {...secondaryBtn}
131
+ onPress={(e) => {
132
+ secondaryBtn.onPress(checked, e);
133
+ setChecked(false);
134
+ }}
135
+ />
136
+ )}
137
+ </View>
138
+ ) : (
139
+ <></>
140
+ )}
141
+ </View>
142
+ </TouchableOpacity>
143
+ );
144
+ }
145
+
146
+ BaseToast.HEIGHT = HEIGHT;
147
+
148
+ BaseToast.propTypes = {
149
+ leadingIcon: PropTypes.node,
150
+ trailingIcon: PropTypes.node,
151
+ text1: PropTypes.string,
152
+ text2: PropTypes.string || PropTypes.element || PropTypes.any,
153
+ onPress: PropTypes.func,
154
+ style: stylePropType,
155
+ contentContainerStyle: stylePropType,
156
+ text1Style: stylePropType,
157
+ text2Style: stylePropType,
158
+ activeOpacity: PropTypes.number,
159
+ text1NumberOfLines: PropTypes.number,
160
+ text2NumberOfLines: PropTypes.number
161
+ };
162
+
163
+ BaseToast.defaultProps = {
164
+ leadingIcon: null,
165
+ trailingIcon: null,
166
+ text1: undefined,
167
+ text2: undefined,
168
+ onPress: undefined,
169
+ style: undefined,
170
+ contentContainerStyle: undefined,
171
+ text1Style: undefined,
172
+ text2Style: undefined,
173
+ activeOpacity: 0.8,
174
+ text1NumberOfLines: 1,
175
+ text2NumberOfLines: 2
176
+ };
177
+
178
+ export default BaseToast;
@@ -8,8 +8,9 @@ function ErrorToast(props) {
8
8
  return (
9
9
  <BaseToast
10
10
  {...props}
11
- style={{ borderLeftColor: colors.blazeOrange }}
12
- leadingIcon={icons.error}
11
+ style={{ borderTopColor: colors.blazeOrange }}
12
+ text1Style={{ color: colors.blazeOrange }}
13
+ text2Style={{ color: colors.blazeOrange }}
13
14
  />
14
15
  );
15
16
  }
@@ -8,8 +8,9 @@ function InfoToast(props) {
8
8
  return (
9
9
  <BaseToast
10
10
  {...props}
11
- style={{ borderLeftColor: colors.lightSkyBlue }}
12
- leadingIcon={icons.info}
11
+ style={{ borderTopColor: colors.lightSkyBlue }}
12
+ text1Style={{ color: colors.black }}
13
+ text2Style={{ color: colors.black }}
13
14
  />
14
15
  );
15
16
  }
@@ -8,8 +8,9 @@ function SuccessToast(props) {
8
8
  return (
9
9
  <BaseToast
10
10
  {...props}
11
- style={{ borderLeftColor: colors.mantis }}
12
- leadingIcon={icons.success}
11
+ style={{ borderTopColor: colors.mantis }}
12
+ text1Style={{ color: colors.black }}
13
+ text2Style={{ color: colors.black }}
13
14
  />
14
15
  );
15
16
  }