agora-appbuilder-core 3.0.10 → 3.0.12

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 (249) hide show
  1. package/Readme.md +0 -6
  2. package/package.json +2 -2
  3. package/template/_package-lock.json +4979 -7086
  4. package/template/agora-rn-uikit/src/Contexts/LocalUserContext.tsx +0 -4
  5. package/template/agora-rn-uikit/src/Contexts/PropsContext.tsx +0 -18
  6. package/template/agora-rn-uikit/src/Contexts/RtcContext.tsx +0 -2
  7. package/template/agora-rn-uikit/src/Controls/BtnTemplate.tsx +26 -30
  8. package/template/agora-rn-uikit/src/Controls/Icons.ts +83 -30
  9. package/template/agora-rn-uikit/src/Controls/ImageIcon.tsx +6 -6
  10. package/template/agora-rn-uikit/src/Reducer/LocalMuteAudio.ts +0 -1
  11. package/template/agora-rn-uikit/src/Reducer/LocalMuteVideo.ts +0 -1
  12. package/template/agora-rn-uikit/src/Reducer/RemoteAudioStateChanged.ts +0 -1
  13. package/template/agora-rn-uikit/src/Reducer/RemoteVideoStateChanged.ts +0 -1
  14. package/template/agora-rn-uikit/src/Reducer/UpdateDualStreamMode.ts +0 -1
  15. package/template/agora-rn-uikit/src/Reducer/UserJoined.ts +0 -2
  16. package/template/agora-rn-uikit/src/Reducer/UserMuteRemoteAudio.ts +0 -1
  17. package/template/agora-rn-uikit/src/Reducer/UserMuteRemoteVideo.ts +0 -1
  18. package/template/agora-rn-uikit/src/Reducer/UserOffline.ts +0 -1
  19. package/template/agora-rn-uikit/src/Reducer/index.ts +0 -3
  20. package/template/agora-rn-uikit/src/Rtc/Create.tsx +1 -89
  21. package/template/agora-rn-uikit/src/RtcConfigure.tsx +2 -39
  22. package/template/agora-rn-uikit/src/Views/MaxVideoView.native.tsx +5 -15
  23. package/template/agora-rn-uikit/src/Views/MaxVideoView.tsx +9 -15
  24. package/template/agora-rn-uikit/src/index.ts +1 -3
  25. package/template/android/app/build.gradle +0 -1
  26. package/template/android/app/src/main/AndroidManifest.xml +15 -22
  27. package/template/android/app/src/main/java/com/helloworld/MainActivity.java +0 -50
  28. package/template/android/build.gradle +3 -3
  29. package/template/babel.config.js +0 -1
  30. package/template/bridge/rtc/webNg/RtcEngine.ts +17 -110
  31. package/template/customization-api/sub-components.ts +1 -1
  32. package/template/customization-api/typeDefinition.ts +1 -2
  33. package/template/electron/index.html +27 -27
  34. package/template/electron/renderer/index.js +0 -1
  35. package/template/global.d.ts +4 -26
  36. package/template/index.js +0 -4
  37. package/template/index.rsdk.tsx +0 -1
  38. package/template/index.web.js +1 -7
  39. package/template/index.wsdk.tsx +1 -1
  40. package/template/ios/HelloWorld/Info.plist +1 -14
  41. package/template/ios/HelloWorld.xcodeproj/project.pbxproj +0 -17
  42. package/template/metro.config.js +1 -1
  43. package/template/package.json +7 -21
  44. package/template/react-native-toast-message/index.d.ts +43 -43
  45. package/template/react-native-toast-message/src/colors/index.js +2 -3
  46. package/template/react-native-toast-message/src/components/base/index.js +59 -46
  47. package/template/react-native-toast-message/src/components/base/styles.js +32 -16
  48. package/template/react-native-toast-message/src/components/error.js +2 -3
  49. package/template/react-native-toast-message/src/components/info.js +2 -3
  50. package/template/react-native-toast-message/src/components/success.js +2 -3
  51. package/template/react-native-toast-message/src/index.js +31 -122
  52. package/template/react-native-toast-message/src/index.sdk.tsx +35 -125
  53. package/template/react-native-toast-message/src/styles.js +4 -3
  54. package/template/react-native-toast-message/src/styles.sdk.ts +4 -3
  55. package/template/src/App.tsx +0 -6
  56. package/template/src/AppWrapper.tsx +28 -63
  57. package/template/src/assets/icons.ts +102 -0
  58. package/template/src/atoms/HorizontalRule.tsx +1 -3
  59. package/template/src/atoms/PrimaryButton.tsx +26 -51
  60. package/template/src/atoms/SecondaryButton.tsx +5 -8
  61. package/template/src/atoms/TextInput.tsx +14 -12
  62. package/template/src/components/Chat.tsx +214 -86
  63. package/template/src/components/ChatContext.ts +1 -8
  64. package/template/src/components/ColorConfigure.tsx +1 -1
  65. package/template/src/components/ColorContext.ts +1 -1
  66. package/template/src/components/{Controls1.native.tsx → Controls.native.tsx} +4 -6
  67. package/template/src/components/Controls.tsx +42 -342
  68. package/template/src/components/DeviceConfigure.tsx +101 -461
  69. package/template/src/components/DeviceContext.tsx +4 -8
  70. package/template/src/components/EventsConfigure.tsx +7 -144
  71. package/template/src/components/GraphQLProvider.tsx +1 -1
  72. package/template/src/components/GridVideo.tsx +44 -59
  73. package/template/src/components/HostControlView.tsx +35 -114
  74. package/template/src/components/Navbar.tsx +398 -216
  75. package/template/src/components/NetworkQualityContext.tsx +20 -20
  76. package/template/src/components/ParticipantsView.tsx +154 -177
  77. package/template/src/components/PinnedVideo.tsx +120 -207
  78. package/template/src/components/Precall.native.tsx +119 -358
  79. package/template/src/components/Precall.tsx +135 -269
  80. package/template/src/components/RTMConfigure.tsx +4 -27
  81. package/template/src/components/Router.electron.ts +0 -1
  82. package/template/src/components/Router.native.ts +0 -1
  83. package/template/src/components/Router.sdk.ts +0 -1
  84. package/template/src/components/Router.ts +0 -1
  85. package/template/src/components/Settings.tsx +95 -26
  86. package/template/src/components/SettingsView.tsx +56 -251
  87. package/template/src/components/Share.tsx +273 -302
  88. package/template/src/components/StorageContext.tsx +3 -30
  89. package/template/src/components/chat-messages/useChatMessages.tsx +23 -69
  90. package/template/src/components/chat-ui/useChatUIControl.tsx +0 -7
  91. package/template/src/components/common/Error.tsx +6 -20
  92. package/template/src/components/common/Logo.tsx +15 -16
  93. package/template/src/components/contexts/LiveStreamDataContext.tsx +5 -10
  94. package/template/src/components/contexts/VideoMeetingDataContext.tsx +7 -37
  95. package/template/src/components/livestream/LiveStreamContext.tsx +36 -270
  96. package/template/src/components/livestream/Types.ts +14 -39
  97. package/template/src/components/livestream/index.ts +0 -1
  98. package/template/src/components/livestream/views/LiveStreamControls.tsx +4 -12
  99. package/template/src/components/participants/AllAudienceParticipants.tsx +30 -101
  100. package/template/src/components/participants/AllHostParticipants.tsx +34 -103
  101. package/template/src/components/participants/MeParticipant.tsx +38 -0
  102. package/template/src/components/participants/ParticipantName.tsx +7 -13
  103. package/template/src/components/participants/ParticipantSectionTitle.tsx +10 -35
  104. package/template/src/components/participants/RemoteParticipants.tsx +71 -0
  105. package/template/src/components/participants/ScreenshareParticipants.tsx +12 -144
  106. package/template/src/components/precall/{LocalMute1.native.tsx → LocalMute.native.tsx} +5 -21
  107. package/template/src/components/precall/LocalMute.tsx +14 -84
  108. package/template/src/components/precall/VideoPreview.native.tsx +3 -48
  109. package/template/src/components/precall/VideoPreview.tsx +7 -163
  110. package/template/src/components/precall/joinCallBtn.tsx +2 -15
  111. package/template/src/components/precall/meetingTitle.tsx +12 -15
  112. package/template/src/components/precall/selectDevice.tsx +21 -1
  113. package/template/src/components/precall/textInput.tsx +4 -32
  114. package/template/src/components/precall/usePreCall.tsx +0 -16
  115. package/template/src/components/styles.ts +21 -42
  116. package/template/src/components/useShareLink.tsx +14 -12
  117. package/template/src/language/default-labels/precallScreenLabels.ts +3 -3
  118. package/template/src/pages/Authenticate.tsx +15 -5
  119. package/template/src/pages/Create.tsx +165 -293
  120. package/template/src/pages/Join.tsx +67 -93
  121. package/template/src/pages/VideoCall.tsx +64 -89
  122. package/template/src/pages/video-call/DefaultLayouts.ts +4 -4
  123. package/template/src/pages/video-call/NameWithMicIcon.tsx +44 -120
  124. package/template/src/pages/video-call/RenderComponent.tsx +2 -3
  125. package/template/src/pages/video-call/VideoCallScreen.tsx +9 -45
  126. package/template/src/pages/video-call/VideoComponent.tsx +3 -18
  127. package/template/src/pages/video-call/VideoRenderer.tsx +60 -218
  128. package/template/src/rtm-events/constants.ts +0 -2
  129. package/template/src/subComponents/ChatBubble.tsx +83 -123
  130. package/template/src/subComponents/ChatContainer.tsx +84 -257
  131. package/template/src/subComponents/ChatInput.tsx +46 -61
  132. package/template/src/subComponents/Checkbox.native.tsx +5 -16
  133. package/template/src/subComponents/Checkbox.tsx +2 -2
  134. package/template/src/subComponents/CopyJoinInfo.tsx +58 -36
  135. package/template/src/subComponents/FallbackLogo.tsx +40 -122
  136. package/template/src/subComponents/LanguageSelector.tsx +1 -1
  137. package/template/src/subComponents/{LayoutIconDropdown1.native.tsx → LayoutIconDropdown.native.tsx} +18 -4
  138. package/template/src/subComponents/LayoutIconDropdown.tsx +134 -131
  139. package/template/src/subComponents/LocalAudioMute.tsx +27 -119
  140. package/template/src/subComponents/LocalEndCall.tsx +33 -71
  141. package/template/src/subComponents/LocalSwitchCamera.tsx +30 -17
  142. package/template/src/subComponents/LocalVideoMute.tsx +27 -117
  143. package/template/src/subComponents/Logo.tsx +4 -3
  144. package/template/src/subComponents/LogoutButton.tsx +1 -1
  145. package/template/src/subComponents/NetworkQualityPill.tsx +63 -60
  146. package/template/src/subComponents/OpenInNativeButton.tsx +3 -3
  147. package/template/src/subComponents/Recording.tsx +29 -28
  148. package/template/src/subComponents/RemoteAudioMute.tsx +29 -83
  149. package/template/src/subComponents/RemoteEndCall.tsx +5 -8
  150. package/template/src/subComponents/RemoteVideoMute.tsx +21 -74
  151. package/template/src/subComponents/ScreenShareNotice.tsx +8 -83
  152. package/template/src/subComponents/SelectDevice.tsx +61 -404
  153. package/template/src/subComponents/SelectOAuth.tsx +8 -9
  154. package/template/src/subComponents/ToastConfig.tsx +10 -150
  155. package/template/src/subComponents/chat/ChatParticipants.tsx +78 -187
  156. package/template/src/subComponents/livestream/CurrentLiveStreamRequestsView.tsx +32 -95
  157. package/template/src/subComponents/livestream/controls/LocalRaiseHand.tsx +33 -29
  158. package/template/src/subComponents/livestream/controls/RemoteLiveStreamApprovedRequestRecall.tsx +6 -6
  159. package/template/src/subComponents/livestream/controls/RemoteLiveStreamRequestApprove.tsx +11 -24
  160. package/template/src/subComponents/livestream/controls/RemoteLiveStreamRequestReject.tsx +10 -17
  161. package/template/src/subComponents/recording/useRecording.tsx +27 -79
  162. package/template/src/subComponents/screenshare/ScreenshareButton.tsx +70 -52
  163. package/template/src/subComponents/screenshare/ScreenshareConfigure.native.tsx +2 -11
  164. package/template/src/subComponents/screenshare/ScreenshareConfigure.tsx +4 -26
  165. package/template/src/utils/common.tsx +1 -155
  166. package/template/src/utils/index.tsx +0 -19
  167. package/template/src/utils/isMobileOrTablet.ts +2 -7
  168. package/template/src/utils/useButtonTemplate.tsx +0 -1
  169. package/template/src/utils/useMuteToggleLocal.ts +3 -54
  170. package/template/web/index.html +0 -5
  171. package/template/webpack.commons.js +8 -13
  172. package/template/webpack.web.config.js +0 -1
  173. package/template/agora-rn-uikit/src/Reducer/ActiveSpeakerDetected.ts +0 -11
  174. package/template/agora-rn-uikit/src/Reducer/LocalPermissionState.ts +0 -24
  175. package/template/agora-rn-uikit/src/Reducer/UserPin.ts +0 -11
  176. package/template/android/app/src/main/assets/fonts/SourceSansPro-Regular.ttf +0 -0
  177. package/template/android/app/src/main/assets/fonts/icomoon.ttf +0 -0
  178. package/template/android/app/src/main/res/values/colors.xml +0 -7
  179. package/template/react-native-toast-message/src/components/checkbox.js +0 -178
  180. package/template/react-native.config.js +0 -7
  181. package/template/src/assets/font-styles.css +0 -329
  182. package/template/src/assets/fonts/SourceSansPro-Regular.ttf +0 -0
  183. package/template/src/assets/fonts/icomoon.ttf +0 -0
  184. package/template/src/assets/permission.png +0 -0
  185. package/template/src/assets/selection.json +0 -1
  186. package/template/src/atoms/ActionMenu.tsx +0 -236
  187. package/template/src/atoms/AnimatedActiveSpeaker.native.tsx +0 -71
  188. package/template/src/atoms/AnimatedActiveSpeaker.tsx +0 -84
  189. package/template/src/atoms/AnimatedRings.native.tsx +0 -68
  190. package/template/src/atoms/AnimatedRings.tsx +0 -70
  191. package/template/src/atoms/Card.tsx +0 -61
  192. package/template/src/atoms/CircularProgress.native.tsx +0 -121
  193. package/template/src/atoms/CircularProgress.tsx +0 -102
  194. package/template/src/atoms/CustomIcon.tsx +0 -88
  195. package/template/src/atoms/CustomSwitch.tsx +0 -287
  196. package/template/src/atoms/Dropdown.tsx +0 -306
  197. package/template/src/atoms/IconButton.tsx +0 -162
  198. package/template/src/atoms/ImageIcon.tsx +0 -98
  199. package/template/src/atoms/InfoBubble.tsx +0 -291
  200. package/template/src/atoms/Input.tsx +0 -87
  201. package/template/src/atoms/InviteInfo.tsx +0 -166
  202. package/template/src/atoms/LinkButton.tsx +0 -28
  203. package/template/src/atoms/OutlineButton.tsx +0 -61
  204. package/template/src/atoms/ParticipantsCount.tsx +0 -73
  205. package/template/src/atoms/Popup.tsx +0 -147
  206. package/template/src/atoms/RecordingInfo.tsx +0 -49
  207. package/template/src/atoms/Spacer.tsx +0 -22
  208. package/template/src/atoms/TertiaryButton.tsx +0 -78
  209. package/template/src/atoms/Toggle.tsx +0 -47
  210. package/template/src/atoms/Tooltip.native.tsx +0 -65
  211. package/template/src/atoms/Tooltip.tsx +0 -94
  212. package/template/src/atoms/UserAvatar.tsx +0 -60
  213. package/template/src/components/CommonStyles.ts +0 -44
  214. package/template/src/components/ToastComponent.tsx +0 -8
  215. package/template/src/components/participants/Participant.tsx +0 -302
  216. package/template/src/components/participants/UserActionMenuOptions.tsx +0 -398
  217. package/template/src/components/popups/InvitePopup.tsx +0 -115
  218. package/template/src/components/popups/StopRecordingPopup.tsx +0 -114
  219. package/template/src/components/precall/PermissionHelper.native.tsx +0 -5
  220. package/template/src/components/precall/PermissionHelper.tsx +0 -126
  221. package/template/src/components/precall/PreCallSettings.tsx +0 -52
  222. package/template/src/components/useToast.tsx +0 -41
  223. package/template/src/components/useVideoCall.tsx +0 -65
  224. package/template/src/pages/Endcall.tsx +0 -148
  225. package/template/src/pages/video-call/ActionSheet.native.tsx +0 -215
  226. package/template/src/pages/video-call/ActionSheet.tsx +0 -226
  227. package/template/src/pages/video-call/ActionSheetContent.tsx +0 -479
  228. package/template/src/pages/video-call/ActionSheetHandle.tsx +0 -38
  229. package/template/src/pages/video-call/ActionSheetStyles.css +0 -138
  230. package/template/src/pages/video-call/SidePanelHeader.tsx +0 -190
  231. package/template/src/pages/video-call/VideoCallMobileView.tsx +0 -139
  232. package/template/src/pages/video-call/VideoCallScreen.native.tsx +0 -37
  233. package/template/src/subComponents/ChatInput.ios.tsx +0 -237
  234. package/template/src/subComponents/EndcallPopup.tsx +0 -107
  235. package/template/src/subComponents/LayoutIconButton.tsx +0 -201
  236. package/template/src/subComponents/RemoteMutePopup.tsx +0 -193
  237. package/template/src/subComponents/RemoveMeetingPopup.tsx +0 -109
  238. package/template/src/subComponents/RemoveScreensharePopup.tsx +0 -109
  239. package/template/src/subComponents/SelectDeviceSettings.backup.tsx +0 -207
  240. package/template/src/subComponents/SidePanelHeader.tsx +0 -112
  241. package/template/src/theme/index.ts +0 -46
  242. package/template/src/utils/PlatformWrapper.tsx +0 -21
  243. package/template/src/utils/hexadecimalTransparency.ts +0 -108
  244. package/template/src/utils/pendingStateUpdateHelper.ts +0 -19
  245. package/template/src/utils/useFocus.tsx +0 -46
  246. package/template/src/utils/useIsActiveSpeaker.ts +0 -27
  247. package/template/src/utils/useIsHandRaised.ts +0 -13
  248. package/template/src/utils/useRemoteEndScreenshare.ts +0 -26
  249. package/template/src/utils/useRemoteRequest.ts +0 -84
@@ -1,306 +0,0 @@
1
- import React, {
2
- FC,
3
- ReactElement,
4
- useEffect,
5
- useRef,
6
- useState,
7
- useMemo,
8
- } from 'react';
9
- import {
10
- FlatList,
11
- StyleSheet,
12
- Text,
13
- TouchableOpacity,
14
- Modal,
15
- View,
16
- Image,
17
- } from 'react-native';
18
- import {isWebInternal} from '../utils/common';
19
- import ThemeConfig from '../theme';
20
- import ImageIcon from './ImageIcon';
21
- import {IconsInterface} from './CustomIcon';
22
- import hexadecimalTransparency from '../utils/hexadecimalTransparency';
23
-
24
- interface Props {
25
- label: string;
26
- icon?: keyof IconsInterface;
27
- data: Array<{label: string; value: string}>;
28
- onSelect: (item: {label: string; value: string}) => void;
29
- enabled: boolean;
30
- selectedValue: string;
31
- }
32
-
33
- const Dropdown: FC<Props> = ({
34
- label,
35
- data,
36
- onSelect,
37
- enabled,
38
- selectedValue,
39
- icon,
40
- }) => {
41
- const DropdownButton = useRef();
42
- const [visible, setVisible] = useState(false);
43
- const [dropdownPos, setDropdownPos] = useState({top: 0, left: 0, width: 0});
44
- const [isHovered, setIsHovered] = React.useState(false);
45
- const selected = useMemo(() => {
46
- return data.find((dataItem) => dataItem.value === selectedValue);
47
- }, [selectedValue, data]);
48
-
49
- useEffect(() => {
50
- if (isWebInternal()) {
51
- window.addEventListener('resize', () => {
52
- setVisible(false);
53
- });
54
- }
55
- }, []);
56
-
57
- const toggleDropdown = (): void => {
58
- visible ? setVisible(false) : openDropdown();
59
- };
60
-
61
- const updateDropdownPosition = () => {
62
- //@ts-ignore
63
- DropdownButton?.current?.measure((_fx, _fy, _w, h, _px, py) => {
64
- setDropdownPos({
65
- top: py + h,
66
- left: _px,
67
- width: _w,
68
- });
69
- });
70
- };
71
-
72
- const openDropdown = (): void => {
73
- updateDropdownPosition();
74
- setVisible(true);
75
- };
76
-
77
- const onItemPress = (item): void => {
78
- // // Dropdown should rely on the provided
79
- // setSelected(item);
80
- onSelect(item);
81
- setVisible(false);
82
- };
83
-
84
- const renderItem = ({item}): ReactElement<any, any> => (
85
- <PlatformWrapper onPress={() => onItemPress(item)}>
86
- <View style={styles.itemContainer}>
87
- <View style={styles.itemTextContainer}>
88
- <Text
89
- numberOfLines={1}
90
- style={[
91
- styles.itemText,
92
- selected && item?.value === selected?.value
93
- ? styles.itemTextSelected
94
- : {},
95
- ]}>
96
- {item.label}
97
- </Text>
98
- </View>
99
- {selected && item?.value === selected?.value ? (
100
- <View style={styles.itemTextSelectedContainer}>
101
- <ImageIcon
102
- iconType="plain"
103
- name={'tick'}
104
- iconSize={12}
105
- tintColor={'#099DFD'}
106
- />
107
- </View>
108
- ) : (
109
- <></>
110
- )}
111
- </View>
112
- </PlatformWrapper>
113
- );
114
-
115
- const renderDropdown = (): ReactElement<any, any> => {
116
- return (
117
- <Modal visible={visible} transparent animationType="none">
118
- <TouchableOpacity
119
- style={styles.overlay}
120
- onPress={() => setVisible(false)}>
121
- <View
122
- style={[
123
- styles.dropdown,
124
- {
125
- top: dropdownPos.top,
126
- left: dropdownPos.left,
127
- width: dropdownPos.width,
128
- },
129
- ]}>
130
- <FlatList
131
- showsVerticalScrollIndicator={false}
132
- data={data}
133
- renderItem={renderItem}
134
- keyExtractor={(item, index) => index.toString()}
135
- />
136
- </View>
137
- </TouchableOpacity>
138
- </Modal>
139
- );
140
- };
141
-
142
- const noData = !data || !data.length;
143
-
144
- return (
145
- <TouchableOpacity
146
- disabled={!enabled || !data || !data.length}
147
- ref={DropdownButton}
148
- style={[
149
- styles.dropdownOptionContainer,
150
- !enabled || !data || !data.length
151
- ? {opacity: ThemeConfig.EmphasisOpacity.disabled}
152
- : {},
153
- visible
154
- ? {
155
- borderBottomLeftRadius: 0,
156
- borderBottomRightRadius: 0,
157
- //borderBottomWidth: 0,
158
- borderBottomColor: 'transparent',
159
- }
160
- : {},
161
- ]}
162
- onPress={toggleDropdown}>
163
- {enabled && !noData ? renderDropdown() : <></>}
164
- <View
165
- style={{flex: 1, justifyContent: 'flex-start', flexDirection: 'row'}}>
166
- {icon ? (
167
- <View style={styles.dropdownIconContainer}>
168
- <ImageIcon
169
- iconType="plain"
170
- name={icon}
171
- iconSize={20}
172
- tintColor={$config.SEMANTIC_NEUTRAL}
173
- />
174
- </View>
175
- ) : (
176
- <></>
177
- )}
178
- <View style={[styles.dropdownOptionTextContainer]}>
179
- <Text numberOfLines={1} style={styles.dropdownOptionText}>
180
- {(selected && selected.label) || label}
181
- </Text>
182
- </View>
183
- </View>
184
- <View style={styles.dropdownIconContainer}>
185
- <ImageIcon
186
- iconType="plain"
187
- name={visible ? 'arrow-up' : 'arrow-down'}
188
- tintColor={$config.SECONDARY_ACTION_COLOR}
189
- />
190
- </View>
191
- </TouchableOpacity>
192
- );
193
- };
194
-
195
- const PlatformWrapper = ({children, onPress}) => {
196
- const [isHovered, setIsHovered] = React.useState(false);
197
- return isWebInternal() ? (
198
- <div
199
- style={{
200
- backgroundColor: isHovered
201
- ? $config.CARD_LAYER_5_COLOR + hexadecimalTransparency['20%']
202
- : 'transparent',
203
- cursor: isHovered ? 'pointer' : 'auto',
204
- }}
205
- onMouseEnter={() => {
206
- setIsHovered(true);
207
- }}
208
- onMouseLeave={() => {
209
- setIsHovered(false);
210
- }}
211
- onClick={(e) => {
212
- e.preventDefault();
213
- onPress && onPress();
214
- }}>
215
- {children}
216
- </div>
217
- ) : (
218
- <TouchableOpacity onPress={onPress}>{children}</TouchableOpacity>
219
- );
220
- };
221
-
222
- const styles = StyleSheet.create({
223
- dropdownOptionContainer: {
224
- flex: 1,
225
- flexDirection: 'row',
226
- minHeight: 60,
227
- backgroundColor: $config.INPUT_FIELD_BACKGROUND_COLOR,
228
- borderTopWidth: 1,
229
- borderBottomWidth: 1,
230
- borderRightWidth: 1,
231
- borderLeftWidth: 1,
232
- borderColor: $config.INPUT_FIELD_BORDER_COLOR,
233
- borderRadius: ThemeConfig.BorderRadius.medium,
234
- paddingLeft: 20,
235
- paddingRight: 20,
236
- justifyContent: 'space-between',
237
- },
238
- dropdownOptionTextContainer: {
239
- alignSelf: 'center',
240
- flex: 1,
241
- },
242
- dropdownOptionText: {
243
- textAlign: 'left',
244
- fontFamily: ThemeConfig.FontFamily.sansPro,
245
- fontWeight: '400',
246
- fontSize: ThemeConfig.FontSize.normal,
247
- color: $config.FONT_COLOR,
248
- paddingLeft: 8,
249
- paddingVertical: 20,
250
- },
251
- dropdownIconContainer: {
252
- alignSelf: 'center',
253
- },
254
- dropdown: {
255
- position: 'absolute',
256
- backgroundColor: $config.INPUT_FIELD_BACKGROUND_COLOR,
257
- borderBottomColor: $config.INPUT_FIELD_BORDER_COLOR,
258
- borderLeftColor: $config.INPUT_FIELD_BORDER_COLOR,
259
- borderRightColor: $config.INPUT_FIELD_BORDER_COLOR,
260
- borderTopColor: $config.PRIMARY_ACTION_BRAND_COLOR,
261
- borderBottomLeftRadius: ThemeConfig.BorderRadius.medium,
262
- borderBottomRightRadius: ThemeConfig.BorderRadius.medium,
263
- borderBottomWidth: 1,
264
- borderLeftWidth: 1,
265
- borderRightWidth: 1,
266
- borderTopWidth: 2,
267
- shadowColor: $config.HARD_CODED_BLACK_COLOR,
268
- shadowOffset: {width: 0, height: 4},
269
- shadowOpacity: 0.1,
270
- shadowRadius: 4,
271
- elevation: 5,
272
- overflow: 'hidden',
273
- },
274
- overlay: {
275
- width: '100%',
276
- height: '100%',
277
- },
278
- itemContainer: {
279
- minHeight: 40,
280
- flex: 1,
281
- flexDirection: 'row',
282
- },
283
- itemTextContainer: {
284
- flex: 0.8,
285
- justifyContent: 'center',
286
- alignSelf: 'center',
287
- },
288
- itemText: {
289
- fontFamily: ThemeConfig.FontFamily.sansPro,
290
- fontWeight: '400',
291
- fontSize: ThemeConfig.FontSize.normal,
292
- color: $config.SECONDARY_ACTION_COLOR,
293
- paddingVertical: 12,
294
- paddingHorizontal: 15,
295
- },
296
- itemTextSelected: {
297
- color: $config.PRIMARY_ACTION_BRAND_COLOR,
298
- },
299
- itemTextSelectedContainer: {
300
- flex: 0.2,
301
- justifyContent: 'center',
302
- alignItems: 'center',
303
- },
304
- });
305
-
306
- export default Dropdown;
@@ -1,162 +0,0 @@
1
- import React from 'react';
2
- import {
3
- ViewStyle,
4
- TextStyle,
5
- Text,
6
- StyleSheet,
7
- Pressable,
8
- PressableProps,
9
- TouchableOpacity,
10
- } from 'react-native';
11
- import ImageIcon, {ImageIconProps} from './ImageIcon';
12
- import {isMobileUA, isWebInternal} from '../utils/common';
13
- import ToolTip from './Tooltip';
14
- import ThemeConfig from '../theme';
15
-
16
- export interface BtnTextProps {
17
- textStyle?: TextStyle;
18
- textColor?: string;
19
- text?: string;
20
- }
21
-
22
- export interface IconButtonProps {
23
- setRef?: (ref: any) => void;
24
- onPress?: PressableProps['onPress'];
25
- disabled?: boolean;
26
- containerStyle?: ViewStyle;
27
- btnTextProps?: BtnTextProps;
28
- iconProps: ImageIconProps;
29
- toolTipMessage?: string;
30
- isToolTipVisible?: boolean;
31
- setToolTipVisible?: React.Dispatch<React.SetStateAction<boolean>>;
32
- isOnActionSheet?: boolean;
33
- hoverEffect?: boolean;
34
- hoverEffectStyle?: ViewStyle;
35
- placement?: 'top' | 'bottom' | 'left' | 'right' | 'center';
36
- isClickable?: boolean;
37
- }
38
-
39
- const IconButton = (props: IconButtonProps) => {
40
- return (
41
- <ButtonWrapper {...props}>
42
- <ImageIcon {...props.iconProps} isHovered={props?.isToolTipVisible} />
43
- {props?.btnTextProps?.text ? (
44
- <Text
45
- numberOfLines={1}
46
- ellipsizeMode="tail"
47
- style={[
48
- styles.btnTextStyle,
49
- props?.btnTextProps?.textColor
50
- ? {color: props.btnTextProps.textColor}
51
- : {},
52
- props?.btnTextProps.textStyle,
53
- ]}>
54
- {props.btnTextProps.text}
55
- </Text>
56
- ) : (
57
- <></>
58
- )}
59
- </ButtonWrapper>
60
- );
61
- };
62
-
63
- const ButtonWrapper = ({children, ...props}) => {
64
- const isMobileView = isMobileUA();
65
- return isMobileView ? (
66
- <TouchableOpacity
67
- ref={(ref) => props?.setRef && props.setRef(ref)}
68
- style={
69
- !props.isOnActionSheet && [
70
- styles.containerStyle,
71
- props?.containerStyle,
72
- props?.hoverEffect && props?.isToolTipVisible
73
- ? props?.hoverEffectStyle
74
- : {},
75
- ]
76
- }
77
- onPress={props.onPress}
78
- disabled={props.disabled}>
79
- {children}
80
- </TouchableOpacity>
81
- ) : (
82
- <Pressable
83
- ref={(ref) => props?.setRef && props.setRef(ref)}
84
- style={
85
- !props.isOnActionSheet && [
86
- styles.containerStyle,
87
- props?.containerStyle,
88
- props?.hoverEffect && props?.isToolTipVisible
89
- ? props?.hoverEffectStyle
90
- : {},
91
- ]
92
- }
93
- onPress={props.onPress}
94
- disabled={props.disabled}>
95
- {children}
96
- </Pressable>
97
- );
98
- };
99
-
100
- const PlatformWrapper = ({children, ...props}) => {
101
- return isWebInternal() ? (
102
- <div
103
- onMouseEnter={() => {
104
- props?.setIsHovered(true);
105
- }}
106
- onMouseLeave={() => {
107
- props?.setIsHovered(false);
108
- }}>
109
- {children}
110
- </div>
111
- ) : (
112
- children
113
- );
114
- };
115
-
116
- const IconButtonWithToolTip = (props: IconButtonProps) => {
117
- const [isHovered, setIsHovered] = React.useState(false);
118
- const {placement = 'top', isClickable = false} = props;
119
- if (props?.toolTipMessage) {
120
- return (
121
- <ToolTip
122
- isClickable={isClickable}
123
- toolTipMessage={props.toolTipMessage}
124
- placement={placement}
125
- renderContent={(isToolTipVisible, setToolTipVisible) => {
126
- return (
127
- <IconButton
128
- {...props}
129
- isToolTipVisible={isToolTipVisible}
130
- setToolTipVisible={setToolTipVisible}
131
- />
132
- );
133
- }}></ToolTip>
134
- );
135
- }
136
- return (
137
- <PlatformWrapper isHovered={isHovered} setIsHovered={setIsHovered}>
138
- <IconButton
139
- {...props}
140
- isToolTipVisible={isHovered}
141
- setToolTipVisible={setIsHovered}
142
- />
143
- </PlatformWrapper>
144
- );
145
- };
146
-
147
- export default IconButtonWithToolTip;
148
-
149
- const styles = StyleSheet.create({
150
- containerStyle: {
151
- flex: 1,
152
- flexDirection: 'column',
153
- alignItems: 'center',
154
- },
155
- btnTextStyle: {
156
- fontFamily: ThemeConfig.FontFamily.sansPro,
157
- fontSize: ThemeConfig.FontSize.tiny,
158
- fontWeight: '400',
159
- textAlign: 'center',
160
- marginTop: 4,
161
- },
162
- });
@@ -1,98 +0,0 @@
1
- /*
2
- ********************************************
3
- Copyright © 2021 Agora Lab, Inc., all rights reserved.
4
- AppBuilder and all associated components, source code, APIs, services, and documentation
5
- (the “Materials”) are owned by Agora Lab, Inc. and its licensors. The Materials may not be
6
- accessed, used, modified, or distributed for any purpose without a license from Agora Lab, Inc.
7
- Use without a license or in violation of any license terms and conditions (including use for
8
- any purpose competitive to Agora Lab, Inc.’s business) is strictly prohibited. For more
9
- information visit https://appbuilder.agora.io.
10
- *********************************************
11
- */
12
- import React from 'react';
13
- import {ViewStyle, View, StyleSheet} from 'react-native';
14
- import CustomIcon, {IconsInterface} from '../atoms/CustomIcon';
15
- import {ImageIcon as UIKitImageIcon} from '../../agora-rn-uikit';
16
- import hexadecimalTransparency from '../utils/hexadecimalTransparency';
17
-
18
- export interface ImageIconProps {
19
- tintColor?: string;
20
- name: keyof IconsInterface;
21
- iconSize?: number;
22
- iconContainerStyle?: ViewStyle;
23
- iconBackgroundColor?: string;
24
- base64?: boolean;
25
- base64TintColor?: string;
26
- iconType?: 'round' | 'plain';
27
- isHovered?: boolean;
28
- // hoverEffect?: boolean;
29
- // hoverEffectStyle?: ViewStyle;
30
- showWarningIcon?: boolean;
31
- }
32
-
33
- const ImageIcon = (props: ImageIconProps) => {
34
- const {
35
- name,
36
- iconSize = 26,
37
- tintColor,
38
- base64 = false,
39
- base64TintColor = '',
40
- iconType = 'round',
41
- } = props;
42
- return (
43
- <View
44
- style={[
45
- styles.iconContainerStyle,
46
- iconType === 'round'
47
- ? props?.iconBackgroundColor
48
- ? {backgroundColor: props.iconBackgroundColor}
49
- : {}
50
- : {backgroundColor: 'transparent', borderRadius: 0},
51
- ]}>
52
- <View
53
- style={[
54
- {alignItems: 'center'},
55
- iconType === 'round'
56
- ? {padding: 13, borderRadius: 50}
57
- : {padding: 0, borderRadius: 0},
58
- iconType === 'round' && props?.isHovered
59
- ? {
60
- backgroundColor:
61
- $config.CARD_LAYER_5_COLOR + hexadecimalTransparency['20%'],
62
- }
63
- : {},
64
- props?.iconContainerStyle,
65
- ]}>
66
- {props?.showWarningIcon ? (
67
- <View style={{position: 'absolute', top: -2.5, right: -2}}>
68
- <CustomIcon
69
- name="alert"
70
- color={$config.SEMANTIC_WARNING}
71
- size={24}
72
- />
73
- </View>
74
- ) : (
75
- <></>
76
- )}
77
- {base64 ? (
78
- <UIKitImageIcon
79
- tintColor={base64TintColor}
80
- name={name}
81
- style={{width: iconSize, height: iconSize}}
82
- />
83
- ) : (
84
- <CustomIcon name={name} color={tintColor} size={iconSize} />
85
- )}
86
- </View>
87
- </View>
88
- );
89
- };
90
-
91
- export default ImageIcon;
92
-
93
- const styles = StyleSheet.create({
94
- iconContainerStyle: {
95
- borderRadius: 50,
96
- backgroundColor: $config.ICON_BG_COLOR,
97
- },
98
- });