@tarojs/taro-rn 4.0.0-beta.13 → 4.0.0-beta.130
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.
- package/LICENSE +8 -8
- package/apiList.js +31 -31
- package/dist/api/index.js +1 -1
- package/dist/api/index.js.map +1 -1
- package/dist/lib/Mask.js +2 -2
- package/dist/lib/Mask.js.map +1 -1
- package/dist/lib/Popup.js +20 -13
- package/dist/lib/Popup.js.map +1 -1
- package/dist/lib/StyleSheet.js +1 -1
- package/dist/lib/StyleSheet.js.map +1 -1
- package/dist/lib/accelerometer.js +1 -1
- package/dist/lib/accelerometer.js.map +1 -1
- package/dist/lib/chooseMedia/index.js.map +1 -1
- package/dist/lib/clearStorage/index.js +2 -2
- package/dist/lib/clearStorage/index.js.map +1 -1
- package/dist/lib/compressImage/index.js +1 -1
- package/dist/lib/compressImage/index.js.map +1 -1
- package/dist/lib/connectSocket/index.js.map +1 -1
- package/dist/lib/connectSocket/socketTask.js +1 -1
- package/dist/lib/connectSocket/socketTask.js.map +1 -1
- package/dist/lib/createCameraContext/index.js +3 -3
- package/dist/lib/createCameraContext/index.js.map +1 -1
- package/dist/lib/createInnerAudioContext/index.js +2 -2
- package/dist/lib/createInnerAudioContext/index.js.map +1 -1
- package/dist/lib/createVideoContext/index.js +7 -7
- package/dist/lib/createVideoContext/index.js.map +1 -1
- package/dist/lib/deviceMotion.js +2 -2
- package/dist/lib/deviceMotion.js.map +1 -1
- package/dist/lib/file.js +4 -4
- package/dist/lib/file.js.map +1 -1
- package/dist/lib/getAppBaseInfo/index.js +2 -2
- package/dist/lib/getAppBaseInfo/index.js.map +1 -1
- package/dist/lib/getClipboardData/index.js.map +1 -1
- package/dist/lib/getImageInfo/index.js +2 -2
- package/dist/lib/getImageInfo/index.js.map +1 -1
- package/dist/lib/getLocation/index.js +8 -4
- package/dist/lib/getLocation/index.js.map +1 -1
- package/dist/lib/getRecorderManager/index.js +5 -5
- package/dist/lib/getRecorderManager/index.js.map +1 -1
- package/dist/lib/getStorage/index.js.map +1 -1
- package/dist/lib/getStorageInfo/index.js +2 -2
- package/dist/lib/getStorageInfo/index.js.map +1 -1
- package/dist/lib/getSystemInfo/index.js +1 -1
- package/dist/lib/getSystemInfo/index.js.map +1 -1
- package/dist/lib/getSystemInfoSync/index.js +2 -2
- package/dist/lib/getSystemInfoSync/index.js.map +1 -1
- package/dist/lib/gyroscope.js +1 -1
- package/dist/lib/gyroscope.js.map +1 -1
- package/dist/lib/keyboard.js +3 -3
- package/dist/lib/keyboard.js.map +1 -1
- package/dist/lib/location.js.map +1 -1
- package/dist/lib/makePhoneCall/index.js +1 -1
- package/dist/lib/makePhoneCall/index.js.map +1 -1
- package/dist/lib/media.js +15 -13
- package/dist/lib/media.js.map +1 -1
- package/dist/lib/network.js +1 -1
- package/dist/lib/network.js.map +1 -1
- package/dist/lib/offWindowResize/index.js.map +1 -1
- package/dist/lib/onWindowResize/index.js +1 -1
- package/dist/lib/onWindowResize/index.js.map +1 -1
- package/dist/lib/openUrl/index.js +1 -1
- package/dist/lib/openUrl/index.js.map +1 -1
- package/dist/lib/permission.js +6 -5
- package/dist/lib/permission.js.map +1 -1
- package/dist/lib/previewImage/index.js +3 -3
- package/dist/lib/previewImage/index.js.map +1 -1
- package/dist/lib/request/index.js +1 -1
- package/dist/lib/request/index.js.map +1 -1
- package/dist/lib/scanCode/index.js +22 -22
- package/dist/lib/scanCode/index.js.map +1 -1
- package/dist/lib/screen.js +2 -2
- package/dist/lib/screen.js.map +1 -1
- package/dist/lib/setClipboardData/index.js +2 -2
- package/dist/lib/setClipboardData/index.js.map +1 -1
- package/dist/lib/setKeepScreenOn/index.js +1 -1
- package/dist/lib/setKeepScreenOn/index.js.map +1 -1
- package/dist/lib/setStorage/index.js.map +1 -1
- package/dist/lib/showActionSheet/ActionSheet.js +11 -23
- package/dist/lib/showActionSheet/ActionSheet.js.map +1 -1
- package/dist/lib/showActionSheet/index.js.map +1 -1
- package/dist/lib/showModal/Dialog.js +22 -36
- package/dist/lib/showModal/Dialog.js.map +1 -1
- package/dist/lib/showModal/index.js.map +1 -1
- package/dist/lib/showModal/toast.js +6 -6
- package/dist/lib/showModal/toast.js.map +1 -1
- package/dist/lib/unsupportedApi.js +2 -4
- package/dist/lib/unsupportedApi.js.map +1 -1
- package/dist/lib/variable.js +1 -1
- package/dist/lib/variable.js.map +1 -1
- package/dist/lib/vibrate.js +1 -1
- package/dist/lib/vibrate.js.map +1 -1
- package/dist/lib/window.js.map +1 -1
- package/dist/utils/callbackManager.js.map +1 -1
- package/dist/utils/index.js.map +1 -1
- package/package.json +66 -60
- package/src/api/index.ts +31 -31
- package/src/lib/ENV_TYPE/index.ts +1 -1
- package/src/lib/Mask.tsx +2 -2
- package/src/lib/Popup.tsx +26 -19
- package/src/lib/StyleSheet.ts +1 -1
- package/src/lib/accelerometer.ts +2 -1
- package/src/lib/arrayBufferToBase64/index.ts +1 -1
- package/src/lib/base64ToArrayBuffer/index.ts +1 -1
- package/src/lib/chooseMedia/index.ts +1 -1
- package/src/lib/clearStorage/index.ts +1 -0
- package/src/lib/clearStorageSync/index.ts +1 -1
- package/src/lib/compressImage/index.ts +1 -0
- package/src/lib/connectSocket/socketTask.ts +7 -9
- package/src/lib/createCameraContext/index.ts +6 -4
- package/src/lib/createInnerAudioContext/index.ts +1 -0
- package/src/lib/createSelectorQuery/index.ts +1 -1
- package/src/lib/deviceMotion.ts +4 -3
- package/src/lib/file.ts +9 -8
- package/src/lib/getClipboardData/index.ts +1 -0
- package/src/lib/getEnv/index.ts +1 -1
- package/src/lib/getFileSystemManager/index.ts +1 -1
- package/src/lib/getLocation/index.ts +7 -2
- package/src/lib/getRecorderManager/index.ts +1 -1
- package/src/lib/getStorage/index.ts +1 -0
- package/src/lib/getStorageInfo/index.ts +1 -0
- package/src/lib/getStorageInfoSync/index.ts +1 -1
- package/src/lib/getStorageSync/index.ts +1 -1
- package/src/lib/getSystemInfo/index.ts +2 -2
- package/src/lib/getSystemInfoSync/index.ts +3 -3
- package/src/lib/gyroscope.ts +47 -46
- package/src/lib/keyboard.ts +5 -4
- package/src/lib/location.ts +6 -5
- package/src/lib/makePhoneCall/index.ts +2 -1
- package/src/lib/media.ts +21 -18
- package/src/lib/network.ts +5 -5
- package/src/lib/offLocationChange/index.ts +1 -1
- package/src/lib/offUserCaptureScreen/index.ts +1 -1
- package/src/lib/onLocationChange/index.ts +1 -1
- package/src/lib/onUserCaptureScreen/index.ts +1 -1
- package/src/lib/onWindowResize/index.ts +2 -2
- package/src/lib/openUrl/index.d.ts +23 -22
- package/src/lib/openUrl/index.ts +2 -1
- package/src/lib/permission.ts +33 -25
- package/src/lib/previewImage/index.tsx +4 -3
- package/src/lib/removeStorageSync/index.ts +1 -1
- package/src/lib/request/index.ts +2 -2
- package/src/lib/scanCode/index.tsx +17 -15
- package/src/lib/screen.ts +1 -0
- package/src/lib/setClipboardData/index.ts +3 -2
- package/src/lib/setKeepScreenOn/index.ts +2 -1
- package/src/lib/setStorage/index.ts +1 -0
- package/src/lib/setStorageSync/index.ts +1 -1
- package/src/lib/showActionSheet/ActionSheet.tsx +34 -43
- package/src/lib/showActionSheet/index.tsx +1 -0
- package/src/lib/showModal/Dialog.tsx +34 -39
- package/src/lib/showModal/index.tsx +1 -0
- package/src/lib/showModal/toast.tsx +14 -13
- package/src/lib/startGyroscope/index.ts +1 -1
- package/src/lib/startLocationUpdate/index.ts +1 -1
- package/src/lib/unsupportedApi.ts +3 -5
- package/src/lib/vibrate.ts +11 -10
- package/src/lib/window.ts +3 -2
- package/src/utils/callbackManager.ts +5 -5
- package/src/utils/index.ts +4 -4
- package/{src/types → types}/vue/index.d.ts +2 -3
- package/dist/setup.js +0 -58
- package/dist/setup.js.map +0 -1
- package/src/__tests__/__mock__/mockRNCCameraRoll.js +0 -7
- package/src/__tests__/__mock__/mockRNCGeolocation.js +0 -13
- package/src/__tests__/__snapshots__/scanCode.test.tsx.snap +0 -154
- package/src/__tests__/clipboard.test.ts +0 -88
- package/src/__tests__/deviceMotion.test.ts +0 -37
- package/src/__tests__/geolocation.test.ts +0 -60
- package/src/__tests__/interactive.test.tsx +0 -101
- package/src/__tests__/keyboard.test.ts +0 -46
- package/src/__tests__/media.test.ts +0 -104
- package/src/__tests__/network.test.ts +0 -57
- package/src/__tests__/others.test.ts +0 -25
- package/src/__tests__/phone.test.ts +0 -31
- package/src/__tests__/request.test.ts +0 -146
- package/src/__tests__/scanCode.test.tsx +0 -14
- package/src/__tests__/storage.test.ts +0 -202
- package/src/__tests__/system.test.ts +0 -69
- package/src/__tests__/vibrate.test.ts +0 -27
- package/src/__tests__/websocket.test.ts +0 -170
- package/src/setup.ts +0 -64
- /package/{src/types → types}/definition.d.ts +0 -0
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import React from 'react'
|
|
2
|
-
import {
|
|
3
|
-
import RootSiblings from 'react-native-root-siblings'
|
|
2
|
+
import { ActivityIndicator, Alert, Modal, StyleSheet, View } from 'react-native'
|
|
4
3
|
import ImageViewer from 'react-native-image-zoom-viewer'
|
|
5
|
-
import
|
|
4
|
+
import RootSiblings from 'react-native-root-siblings'
|
|
5
|
+
|
|
6
6
|
import { downloadFile } from '../file'
|
|
7
|
+
import { saveMedia } from '../media'
|
|
7
8
|
|
|
8
9
|
const styles = StyleSheet.create({
|
|
9
10
|
mask: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { removeStorageSync } from '../unsupportedApi'
|
|
1
|
+
export { removeStorageSync } from '../unsupportedApi'
|
package/src/lib/request/index.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { errorHandler, successHandler } from
|
|
1
|
+
import { errorHandler, successHandler } from '../../utils'
|
|
2
2
|
|
|
3
3
|
function serializeParams(params) {
|
|
4
4
|
if (!params) {
|
|
@@ -53,7 +53,7 @@ function _request<T = any>(options: Taro.request.Option): Taro.RequestTask<T> {
|
|
|
53
53
|
params.method = method
|
|
54
54
|
let controller
|
|
55
55
|
// eslint-disable-next-line no-undef
|
|
56
|
-
if (typeof(AbortController) !== 'undefined'
|
|
56
|
+
if (typeof (AbortController) !== 'undefined') {
|
|
57
57
|
// eslint-disable-next-line no-undef
|
|
58
58
|
controller = new AbortController()
|
|
59
59
|
const signal = controller.signal
|
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
import { initialWindowMetrics } from 'react-native-safe-area-context'
|
|
2
|
-
import { Camera } from 'expo-camera'
|
|
3
1
|
import { BarCodeScanner, requestPermissionsAsync } from 'expo-barcode-scanner'
|
|
4
|
-
import {
|
|
5
|
-
import
|
|
6
|
-
import
|
|
2
|
+
import { BarcodeType, CameraView } from 'expo-camera'
|
|
3
|
+
import React from 'react'
|
|
4
|
+
import { BackHandler, Dimensions, Image, Platform, StatusBar, StyleSheet, TouchableOpacity, View } from 'react-native'
|
|
7
5
|
import RootSiblings from 'react-native-root-siblings'
|
|
6
|
+
import { initialWindowMetrics } from 'react-native-safe-area-context'
|
|
7
|
+
|
|
8
8
|
import { chooseMedia, MEDIA_TYPE } from '../media'
|
|
9
|
-
import
|
|
9
|
+
import iconClose from './icon_close.png'
|
|
10
|
+
import iconPic from './icon_pic.png'
|
|
10
11
|
|
|
11
12
|
export let scannerView
|
|
12
13
|
|
|
@@ -47,13 +48,15 @@ function findKey (value:string, data, compare = (a, b) => a === b):string {
|
|
|
47
48
|
|
|
48
49
|
const { width, height } = Dimensions.get('screen')
|
|
49
50
|
|
|
50
|
-
function getBarCodeTypes(types:string[]):
|
|
51
|
-
const result:
|
|
51
|
+
function getBarCodeTypes(types:string[]): BarcodeType[] {
|
|
52
|
+
const result: BarcodeType[] = []
|
|
53
|
+
|
|
52
54
|
for (const t of types) {
|
|
53
55
|
result.push(...typeMap[t].map(type => {
|
|
54
56
|
return BarCodeType[type]
|
|
55
57
|
}))
|
|
56
58
|
}
|
|
59
|
+
|
|
57
60
|
return result.filter(r => !!r)
|
|
58
61
|
}
|
|
59
62
|
|
|
@@ -148,20 +151,20 @@ function scanFromPhoto(callback, errorCallBack) {
|
|
|
148
151
|
|
|
149
152
|
export async function scanCode(option: Taro.scanCode.Option = {}): Promise<Taro.scanCode.SuccessCallbackResult> {
|
|
150
153
|
const { success, fail, complete, onlyFromCamera, scanType = ['barCode', 'qrCode'] } = option
|
|
151
|
-
const { granted } = await requestPermissionsAsync()
|
|
154
|
+
const { granted } = await requestPermissionsAsync()
|
|
152
155
|
if (!granted) {
|
|
153
156
|
const res = { errMsg: 'Permissions denied!' }
|
|
154
157
|
fail?.(res)
|
|
155
158
|
complete?.(res)
|
|
156
159
|
return Promise.reject(res)
|
|
157
160
|
}
|
|
158
|
-
const
|
|
161
|
+
const barcodeTypes = getBarCodeTypes(scanType)
|
|
159
162
|
return new Promise((resolve, reject) => {
|
|
160
163
|
scannerView = new RootSiblings(
|
|
161
164
|
(<View style={[styles.container]}>
|
|
162
165
|
<StatusBar backgroundColor="rgba(0, 0, 0, 0)" translucent hidden={Platform.OS === 'ios'} />
|
|
163
|
-
<
|
|
164
|
-
|
|
166
|
+
<CameraView
|
|
167
|
+
onBarcodeScanned={({ type, data }: {type: string, data: string}) => {
|
|
165
168
|
const res = {
|
|
166
169
|
charSet: 'UTF-8', // todo
|
|
167
170
|
path: '', // todo
|
|
@@ -175,11 +178,10 @@ export async function scanCode(option: Taro.scanCode.Option = {}): Promise<Taro.
|
|
|
175
178
|
hide(scannerView)
|
|
176
179
|
resolve(res)
|
|
177
180
|
}}
|
|
178
|
-
|
|
179
|
-
|
|
181
|
+
barcodeScannerSettings={{
|
|
182
|
+
barcodeTypes,
|
|
180
183
|
}}
|
|
181
184
|
style={{ width, height }}
|
|
182
|
-
ratio='16:9'
|
|
183
185
|
/>
|
|
184
186
|
<TouchableOpacity accessibilityLabel="Close" style={styles.closeIcon} onPress={() => hide(scannerView)}>
|
|
185
187
|
{safeViewWrapper(<Image source={iconClose} style={styles.closeImg}/>)}
|
package/src/lib/screen.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import Clipboard from '@react-native-clipboard/clipboard'
|
|
2
|
+
|
|
3
|
+
import { errorHandler, successHandler } from '../../utils'
|
|
2
4
|
import { showToast } from '../showModal/toast'
|
|
3
|
-
import { successHandler, errorHandler } from '../../utils'
|
|
4
5
|
|
|
5
6
|
export function setClipboardData(opts: Taro.setClipboardData.Option): Promise<Taro.setClipboardData.Promised> {
|
|
6
7
|
const { data, success, fail, complete } = opts
|
|
@@ -18,7 +19,7 @@ export function setClipboardData(opts: Taro.setClipboardData.Option): Promise<Ta
|
|
|
18
19
|
data,
|
|
19
20
|
}
|
|
20
21
|
showToast({
|
|
21
|
-
icon:
|
|
22
|
+
icon: 'none',
|
|
22
23
|
title: '内容已复制'
|
|
23
24
|
})
|
|
24
25
|
return successHandler(success, complete)(res)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { setStorageSync } from '../unsupportedApi'
|
|
1
|
+
export { setStorageSync } from '../unsupportedApi'
|
|
@@ -1,19 +1,20 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { ViewPropTypes } from 'deprecated-react-native-prop-types'
|
|
2
2
|
import PropTypes from 'prop-types'
|
|
3
|
+
import React from 'react'
|
|
3
4
|
import {
|
|
4
|
-
|
|
5
|
+
Platform,
|
|
6
|
+
StyleSheet,
|
|
5
7
|
Text,
|
|
6
8
|
TouchableHighlight,
|
|
7
|
-
|
|
8
|
-
Platform
|
|
9
|
+
View
|
|
9
10
|
} from 'react-native'
|
|
10
|
-
import {
|
|
11
|
-
|
|
11
|
+
import { initialWindowMetrics } from 'react-native-safe-area-context'
|
|
12
|
+
|
|
12
13
|
import { Popup } from '../Popup'
|
|
13
14
|
import V from '../variable'
|
|
14
15
|
|
|
15
16
|
const styles = StyleSheet.create({
|
|
16
|
-
|
|
17
|
+
actionsheet: {
|
|
17
18
|
backgroundColor: V.weuiBgColorDefault
|
|
18
19
|
},
|
|
19
20
|
androidActionsheetWrapper: {
|
|
@@ -21,11 +22,6 @@ const styles = StyleSheet.create({
|
|
|
21
22
|
alignItems: 'center',
|
|
22
23
|
justifyContent: 'center'
|
|
23
24
|
},
|
|
24
|
-
androidActionsheet: {
|
|
25
|
-
width: 274,
|
|
26
|
-
backgroundColor: V.weuiBgColorDefault,
|
|
27
|
-
borderRadius: V.weuiActionSheetAndroidBorderRadius
|
|
28
|
-
},
|
|
29
25
|
actionsheetMenu: {
|
|
30
26
|
backgroundColor: '#fff'
|
|
31
27
|
},
|
|
@@ -36,29 +32,23 @@ const styles = StyleSheet.create({
|
|
|
36
32
|
actionsheetCell: {
|
|
37
33
|
borderTopWidth: StyleSheet.hairlineWidth,
|
|
38
34
|
borderColor: V.weuiCellBorderColor,
|
|
39
|
-
borderStyle: 'solid'
|
|
40
|
-
},
|
|
41
|
-
iosActionsheetCell: {
|
|
35
|
+
borderStyle: 'solid',
|
|
42
36
|
paddingTop: 10,
|
|
43
|
-
paddingBottom: 10
|
|
44
|
-
},
|
|
45
|
-
androidActionsheetCell: {
|
|
46
|
-
paddingTop: 13,
|
|
47
|
-
paddingBottom: 13,
|
|
37
|
+
paddingBottom: 10,
|
|
48
38
|
paddingLeft: 24,
|
|
49
39
|
paddingRight: 24
|
|
50
40
|
},
|
|
41
|
+
|
|
51
42
|
firstActionsheetCell: {
|
|
52
43
|
borderTopWidth: 0
|
|
53
44
|
},
|
|
54
|
-
|
|
45
|
+
actionSheetCellText: {
|
|
55
46
|
textAlign: 'center',
|
|
56
47
|
fontSize: 18,
|
|
57
48
|
marginTop: ((18 * V.baseLineHeight) - 18) / 2,
|
|
58
49
|
marginBottom: ((18 * V.baseLineHeight) - 18) / 2
|
|
59
50
|
},
|
|
60
51
|
androidActionsheetCellText: {
|
|
61
|
-
textAlign: 'center',
|
|
62
52
|
fontSize: 16,
|
|
63
53
|
marginTop: ((16 * 1.4) - 16) / 2,
|
|
64
54
|
marginBottom: ((16 * 1.4) - 16) / 2
|
|
@@ -105,7 +95,6 @@ const Index: React.FC<any> = ({
|
|
|
105
95
|
underlayColor={underlayColor}
|
|
106
96
|
style={[
|
|
107
97
|
styles.actionsheetCell,
|
|
108
|
-
styles[`${_type}ActionsheetCell`],
|
|
109
98
|
idx === 0 ? styles.firstActionsheetCell : {},
|
|
110
99
|
btnStyle
|
|
111
100
|
]}
|
|
@@ -113,6 +102,8 @@ const Index: React.FC<any> = ({
|
|
|
113
102
|
>
|
|
114
103
|
<Text
|
|
115
104
|
style={[
|
|
105
|
+
|
|
106
|
+
styles.actionSheetCellText,
|
|
116
107
|
styles[`${_type}ActionsheetCellText`],
|
|
117
108
|
styles[`${btnType}ActionsheetCellText`],
|
|
118
109
|
textStyle
|
|
@@ -128,7 +119,6 @@ const Index: React.FC<any> = ({
|
|
|
128
119
|
underlayColor={underlayColor}
|
|
129
120
|
style={[
|
|
130
121
|
styles.actionsheetCell,
|
|
131
|
-
styles[`${_type}ActionsheetCell`],
|
|
132
122
|
idx === 0 ? styles.firstActionsheetCell : {},
|
|
133
123
|
btnStyle
|
|
134
124
|
]}
|
|
@@ -136,6 +126,7 @@ const Index: React.FC<any> = ({
|
|
|
136
126
|
>
|
|
137
127
|
<Text
|
|
138
128
|
style={[
|
|
129
|
+
styles.actionSheetCellText,
|
|
139
130
|
styles[`${_type}ActionsheetCellText`],
|
|
140
131
|
styles[`${btnType}ActionsheetCellText`],
|
|
141
132
|
textStyle
|
|
@@ -145,29 +136,29 @@ const Index: React.FC<any> = ({
|
|
|
145
136
|
)
|
|
146
137
|
|
|
147
138
|
return <Popup
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
139
|
+
visible={visible}
|
|
140
|
+
style={[styles.actionsheet, style]}
|
|
141
|
+
maskStyle={maskStyle}
|
|
142
|
+
onShow={onShow}
|
|
143
|
+
onClose={onClose}
|
|
144
|
+
>
|
|
145
|
+
{menus.length
|
|
146
|
+
? <View style={[styles.actionsheetMenu]}>
|
|
147
|
+
{_renderMenuItems()}
|
|
148
|
+
</View>
|
|
149
|
+
: false}
|
|
150
|
+
{actions.length
|
|
151
|
+
? <View style={[styles.actionsheetAction]}>
|
|
152
|
+
{_renderActions()}
|
|
153
|
+
</View>
|
|
154
|
+
: false}
|
|
155
|
+
<View style={{ paddingBottom: Math.max(initialWindowMetrics?.insets.bottom || 0, 16), backgroundColor: '#fff' }}></View>
|
|
156
|
+
</Popup>
|
|
166
157
|
}
|
|
167
158
|
|
|
168
159
|
Index.propTypes = {
|
|
169
160
|
autoDectect: PropTypes.bool,
|
|
170
|
-
type: PropTypes.oneOf(['ios', 'android']),
|
|
161
|
+
type: PropTypes.oneOf(['ios', 'android', 'harmony']),
|
|
171
162
|
menus: PropTypes.any,
|
|
172
163
|
actions: PropTypes.any,
|
|
173
164
|
visible: PropTypes.bool,
|
|
@@ -1,14 +1,15 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { TextPropTypes, ViewPropTypes } from 'deprecated-react-native-prop-types'
|
|
2
2
|
import PropTypes from 'prop-types'
|
|
3
|
+
import React from 'react'
|
|
3
4
|
import {
|
|
4
|
-
View,
|
|
5
|
-
Text,
|
|
6
|
-
TouchableHighlight,
|
|
7
5
|
Dimensions,
|
|
6
|
+
Platform,
|
|
8
7
|
StyleSheet,
|
|
9
|
-
|
|
8
|
+
Text,
|
|
9
|
+
TouchableHighlight,
|
|
10
|
+
View
|
|
10
11
|
} from 'react-native'
|
|
11
|
-
|
|
12
|
+
|
|
12
13
|
import { Mask } from '../Mask'
|
|
13
14
|
import { create } from '../StyleSheet'
|
|
14
15
|
import V from '../variable'
|
|
@@ -33,49 +34,42 @@ const styles = create({
|
|
|
33
34
|
paddingRight: V.weuiDialogGapWidth
|
|
34
35
|
},
|
|
35
36
|
dialogTitle: {
|
|
36
|
-
fontWeight: '
|
|
37
|
-
|
|
38
|
-
iosDialogTitle: {
|
|
39
|
-
fontSize: 18,
|
|
37
|
+
fontWeight: '700',
|
|
38
|
+
fontSize: 17,
|
|
40
39
|
textAlign: 'center'
|
|
41
40
|
},
|
|
41
|
+
|
|
42
42
|
androidDialogTitle: {
|
|
43
43
|
fontSize: 21,
|
|
44
44
|
textAlign: 'left'
|
|
45
45
|
},
|
|
46
|
+
|
|
46
47
|
dialogBody: {
|
|
47
48
|
paddingLeft: V.weuiDialogGapWidth,
|
|
48
|
-
paddingRight: V.weuiDialogGapWidth
|
|
49
|
-
|
|
50
|
-
iosDialogBody: {
|
|
51
|
-
paddingBottom: (0.8 * 15) + 20
|
|
52
|
-
},
|
|
53
|
-
androidDialogBody: {
|
|
54
|
-
paddingTop: 0.25 * 17,
|
|
55
|
-
paddingBottom: (17 * 2) + 20
|
|
49
|
+
paddingRight: V.weuiDialogGapWidth,
|
|
50
|
+
marginBottom: 32
|
|
56
51
|
},
|
|
52
|
+
|
|
57
53
|
dialogBodyText: {
|
|
58
54
|
color: V.weuiTextColorGray,
|
|
59
|
-
|
|
55
|
+
fontSize: 17,
|
|
56
|
+
textAlign: 'center',
|
|
57
|
+
lineHeight: 17 * 1.4,
|
|
60
58
|
android: {
|
|
61
|
-
lineHeight: Math.round(
|
|
59
|
+
lineHeight: Math.round(17 * 1.4)
|
|
62
60
|
}
|
|
63
61
|
},
|
|
64
|
-
|
|
65
|
-
fontSize: 15,
|
|
66
|
-
textAlign: 'center'
|
|
67
|
-
},
|
|
62
|
+
|
|
68
63
|
androidDialogBodyText: {
|
|
69
|
-
fontSize: 17,
|
|
70
64
|
textAlign: 'left'
|
|
71
65
|
},
|
|
72
66
|
dialogFooter: {
|
|
73
|
-
flexDirection: 'row'
|
|
74
|
-
},
|
|
75
|
-
iosDialogFooter: {
|
|
67
|
+
flexDirection: 'row',
|
|
76
68
|
height: 48,
|
|
77
69
|
alignItems: 'center',
|
|
78
70
|
justifyContent: 'center',
|
|
71
|
+
},
|
|
72
|
+
dialogFooterBorder: {
|
|
79
73
|
borderTopWidth: StyleSheet.hairlineWidth,
|
|
80
74
|
borderColor: V.weuiDialogLineColor,
|
|
81
75
|
borderStyle: 'solid'
|
|
@@ -90,17 +84,16 @@ const styles = create({
|
|
|
90
84
|
},
|
|
91
85
|
dialogFooterOpr: {
|
|
92
86
|
alignItems: 'center',
|
|
93
|
-
justifyContent: 'center'
|
|
94
|
-
},
|
|
95
|
-
iosDialogFooterOpr: {
|
|
87
|
+
justifyContent: 'center',
|
|
96
88
|
height: 48,
|
|
97
|
-
flex: 1
|
|
89
|
+
flex: 1,
|
|
98
90
|
},
|
|
99
91
|
androidDialogFooterOpr: {
|
|
100
92
|
height: 42,
|
|
101
93
|
paddingLeft: 16 * 0.8,
|
|
102
94
|
paddingRight: 16 * 0.8
|
|
103
95
|
},
|
|
96
|
+
|
|
104
97
|
dialogFooterOprWithNegativeMarginRight: {
|
|
105
98
|
marginRight: 0 - (16 * 0.8)
|
|
106
99
|
},
|
|
@@ -109,12 +102,13 @@ const styles = create({
|
|
|
109
102
|
borderColor: V.weuiDialogLineColor,
|
|
110
103
|
borderStyle: 'solid'
|
|
111
104
|
},
|
|
112
|
-
|
|
105
|
+
dialogFooterOprText: {
|
|
113
106
|
fontSize: 18
|
|
114
107
|
},
|
|
115
108
|
androidDialogFooterOprText: {
|
|
116
109
|
fontSize: 16
|
|
117
110
|
},
|
|
111
|
+
|
|
118
112
|
defaultDialogFooterOprText: {
|
|
119
113
|
color: '#353535'
|
|
120
114
|
},
|
|
@@ -170,14 +164,15 @@ const Index: React.FC<any> = (
|
|
|
170
164
|
style={[
|
|
171
165
|
styles.dialogFooterOpr,
|
|
172
166
|
styles[`${_type}DialogFooterOpr`],
|
|
173
|
-
_type === '
|
|
174
|
-
|
|
167
|
+
_type === 'android' && idx === buttons.length - 1 ? styles.dialogFooterOprWithNegativeMarginRight : (
|
|
168
|
+
idx > 0 ? styles.dialogFooterOprWithBorder : {}
|
|
169
|
+
),
|
|
175
170
|
]}
|
|
176
171
|
underlayColor={underlayColor}
|
|
177
172
|
{...others}
|
|
178
173
|
>
|
|
179
174
|
<Text
|
|
180
|
-
style={[styles[`${_type}DialogFooterOprText`], { color: btnType }]}
|
|
175
|
+
style={[styles.dialogFooterOprText, styles[`${_type}DialogFooterOprText`], { color: btnType }]}
|
|
181
176
|
>{label}</Text>
|
|
182
177
|
</TouchableHighlight>
|
|
183
178
|
)
|
|
@@ -200,10 +195,10 @@ const Index: React.FC<any> = (
|
|
|
200
195
|
<View style={[styles.dialogHeader, headerStyle]}>
|
|
201
196
|
<Text style={[styles.dialogTitle, styles[`${_type}DialogTitle`], titleStyle]}>{title}</Text>
|
|
202
197
|
</View>
|
|
203
|
-
<View style={[styles.dialogBody,
|
|
198
|
+
<View style={[styles.dialogBody, bodyStyle]}>
|
|
204
199
|
{childrenWithProps}
|
|
205
200
|
</View>
|
|
206
|
-
<View style={[styles.dialogFooter, styles[`${_type}DialogFooter`], footerStyle]}>
|
|
201
|
+
<View style={[styles.dialogFooter, styles[`${_type}DialogFooter`], _type !== 'android' ? styles.dialogFooterBorder : {}, footerStyle]}>
|
|
207
202
|
{_renderButtons()}
|
|
208
203
|
</View>
|
|
209
204
|
</View>
|
|
@@ -214,7 +209,7 @@ const Index: React.FC<any> = (
|
|
|
214
209
|
|
|
215
210
|
Index.propTypes = {
|
|
216
211
|
autoDectect: PropTypes.bool,
|
|
217
|
-
type: PropTypes.oneOf(['ios', 'android']),
|
|
212
|
+
type: PropTypes.oneOf(['ios', 'android', 'harmony']),
|
|
218
213
|
title: PropTypes.string,
|
|
219
214
|
buttons: PropTypes.arrayOf(PropTypes.object),
|
|
220
215
|
visible: PropTypes.bool,
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import React from 'react'
|
|
2
1
|
import PropTypes from 'prop-types'
|
|
3
|
-
import
|
|
2
|
+
import React from 'react'
|
|
3
|
+
import { ActivityIndicator, Image, StyleSheet, Text, View } from 'react-native'
|
|
4
4
|
import RootSiblings from 'react-native-root-siblings'
|
|
5
|
-
|
|
6
|
-
import errorPng from './error.png'
|
|
5
|
+
|
|
7
6
|
import { errorHandler, shouldBeObject, successHandler } from '../../utils'
|
|
7
|
+
import errorPng from './error.png'
|
|
8
|
+
import successPng from './success.png'
|
|
8
9
|
|
|
9
10
|
const globalAny: any = global
|
|
10
11
|
|
|
@@ -118,7 +119,7 @@ function showToast (options: Taro.showToast.Option): Promise<TaroGeneral.Callbac
|
|
|
118
119
|
return Promise.reject(res)
|
|
119
120
|
}
|
|
120
121
|
|
|
121
|
-
let {title = '', icon = 'success', image, duration = 1500, mask = false, success, fail, complete} = options || {} // eslint-disable-line
|
|
122
|
+
let { title = '', icon = 'success', image, duration = 1500, mask = false, success, fail, complete } = options || {} // eslint-disable-line
|
|
122
123
|
|
|
123
124
|
const isLoading = (icon === 'loading')
|
|
124
125
|
|
|
@@ -138,7 +139,7 @@ function showToast (options: Taro.showToast.Option): Promise<TaroGeneral.Callbac
|
|
|
138
139
|
</View>
|
|
139
140
|
</View>
|
|
140
141
|
} else if (isLoading) {
|
|
141
|
-
ToastView = <WXLoading title={title} mask={mask}/>
|
|
142
|
+
ToastView = <WXLoading title={title} mask={mask} />
|
|
142
143
|
} else if (icon === 'none') {
|
|
143
144
|
ToastView = <View style={maskStyle}>
|
|
144
145
|
<View style={styles.textGrayBlock}>
|
|
@@ -159,7 +160,7 @@ function showToast (options: Taro.showToast.Option): Promise<TaroGeneral.Callbac
|
|
|
159
160
|
try {
|
|
160
161
|
// setTimeout fires incorrectly when using chrome debug #4470
|
|
161
162
|
// https://github.com/facebook/react-native/issues/4470
|
|
162
|
-
globalAny.wxToastRootSiblings && globalAny.wxToastRootSiblings.destroy()
|
|
163
|
+
globalAny.wxToastRootSiblings && globalAny.wxToastRootSiblings.destroy()
|
|
163
164
|
|
|
164
165
|
globalAny.wxToastRootSiblings = new RootSiblings(ToastView)
|
|
165
166
|
setTimeout(() => {
|
|
@@ -177,7 +178,7 @@ function showToast (options: Taro.showToast.Option): Promise<TaroGeneral.Callbac
|
|
|
177
178
|
}
|
|
178
179
|
}
|
|
179
180
|
|
|
180
|
-
function showLoading (options: Taro.showLoading.Option): Promise<TaroGeneral.CallbackResult> {
|
|
181
|
+
function showLoading (options: Taro.showLoading.Option = { title: '加载中' }): Promise<TaroGeneral.CallbackResult> {
|
|
181
182
|
const isObject = shouldBeObject(options)
|
|
182
183
|
if (!isObject.res) {
|
|
183
184
|
const res = { errMsg: `showLoading${isObject.msg}` }
|
|
@@ -202,7 +203,7 @@ function hideToast (opts: Taro.hideToast.Option = {}): void {
|
|
|
202
203
|
const { success, fail, complete } = opts
|
|
203
204
|
|
|
204
205
|
try {
|
|
205
|
-
globalAny.wxToastRootSiblings && globalAny.wxToastRootSiblings.destroy()
|
|
206
|
+
globalAny.wxToastRootSiblings && globalAny.wxToastRootSiblings.destroy()
|
|
206
207
|
globalAny.wxToastRootSiblings = undefined
|
|
207
208
|
const res = { errMsg: 'showToast:ok' }
|
|
208
209
|
success?.(res)
|
|
@@ -218,7 +219,7 @@ function hideLoading (opts: Taro.hideLoading.Option = {}): void {
|
|
|
218
219
|
const { success, fail, complete } = opts
|
|
219
220
|
|
|
220
221
|
try {
|
|
221
|
-
globalAny.wxToastRootSiblings && globalAny.wxToastRootSiblings.destroy()
|
|
222
|
+
globalAny.wxToastRootSiblings && globalAny.wxToastRootSiblings.destroy()
|
|
222
223
|
globalAny.wxToastRootSiblings = undefined
|
|
223
224
|
const res = { errMsg: 'showLoading:ok' }
|
|
224
225
|
success?.(res)
|
|
@@ -231,8 +232,8 @@ function hideLoading (opts: Taro.hideLoading.Option = {}): void {
|
|
|
231
232
|
}
|
|
232
233
|
|
|
233
234
|
export {
|
|
234
|
-
|
|
235
|
-
showLoading,
|
|
235
|
+
hideLoading,
|
|
236
236
|
hideToast,
|
|
237
|
-
|
|
237
|
+
showLoading,
|
|
238
|
+
showToast
|
|
238
239
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { startGyroscope } from '../gyroscope'
|
|
1
|
+
export { startGyroscope } from '../gyroscope'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { startLocationUpdate } from '../location'
|
|
1
|
+
export { startLocationUpdate } from '../location'
|
|
@@ -1,14 +1,12 @@
|
|
|
1
|
-
function temporarilyNotSupport(apiName:
|
|
1
|
+
function temporarilyNotSupport(apiName: string, recommended?: string, isSync = true) {
|
|
2
2
|
return () => {
|
|
3
3
|
let errMsg = `RN 端暂不支持 API ${apiName}`
|
|
4
|
-
if (
|
|
4
|
+
if (recommended) {
|
|
5
5
|
errMsg += `, 请使用 ${recommended}`
|
|
6
6
|
}
|
|
7
7
|
console.error(errMsg)
|
|
8
8
|
if (!isSync) {
|
|
9
|
-
return Promise.reject(
|
|
10
|
-
errMsg
|
|
11
|
-
})
|
|
9
|
+
return Promise.reject(new Error(errMsg))
|
|
12
10
|
} else {
|
|
13
11
|
return new Error(errMsg)
|
|
14
12
|
}
|
package/src/lib/vibrate.ts
CHANGED
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
import { Vibration } from 'react-native'
|
|
2
|
+
|
|
2
3
|
import { errorHandler, successHandler } from '../utils'
|
|
3
4
|
|
|
4
5
|
function vibrate (DURATION, API, OPTS): Promise<TaroGeneral.CallbackResult> {
|
|
5
6
|
const res = { errMsg: `${API}:ok` }
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
7
|
+
const { success, fail, complete } = OPTS
|
|
8
|
+
try {
|
|
9
|
+
Vibration.vibrate(DURATION)
|
|
10
|
+
return successHandler(success, complete)(res)
|
|
11
|
+
} catch (err) {
|
|
12
|
+
res.errMsg = err.message
|
|
13
|
+
return errorHandler(fail, complete)(res)
|
|
14
|
+
}
|
|
14
15
|
}
|
|
15
16
|
|
|
16
17
|
function vibrateShort (opts: Taro.vibrateShort.Option = {}): Promise<TaroGeneral.CallbackResult> {
|
|
@@ -22,6 +23,6 @@ function vibrateLong (opts: Taro.vibrateLong.Option = {}): Promise<TaroGeneral.C
|
|
|
22
23
|
}
|
|
23
24
|
|
|
24
25
|
export {
|
|
25
|
-
|
|
26
|
-
|
|
26
|
+
vibrateLong,
|
|
27
|
+
vibrateShort
|
|
27
28
|
}
|
package/src/lib/window.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Dimensions, EmitterSubscription, ScaledSize } from 'react-native'
|
|
2
|
+
|
|
2
3
|
import { createCallbackManager } from '../utils'
|
|
3
4
|
|
|
4
5
|
let listener: EmitterSubscription
|
|
@@ -18,4 +19,4 @@ export const addListener = () => {
|
|
|
18
19
|
|
|
19
20
|
export const removeListener = () => {
|
|
20
21
|
listener?.remove()
|
|
21
|
-
}
|
|
22
|
+
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
interface CallbackManager {
|
|
2
|
-
add: (opt: any) => void
|
|
3
|
-
remove: (opt: any) => void
|
|
4
|
-
clear: () => void
|
|
5
|
-
count: () => number
|
|
6
|
-
trigger: (...args: any[]) => void
|
|
2
|
+
add: (opt: any) => void
|
|
3
|
+
remove: (opt: any) => void
|
|
4
|
+
clear: () => void
|
|
5
|
+
count: () => number
|
|
6
|
+
trigger: (...args: any[]) => void
|
|
7
7
|
}
|
|
8
8
|
|
|
9
9
|
export function createCallbackManager(): CallbackManager {
|