@tarojs/taro-h5 3.3.14 → 3.3.18
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/dist/index.cjs.js +6601 -8371
- package/dist/index.js +9493 -0
- package/dist/taroApis.js +1 -1
- package/package.json +9 -9
- package/src/api/ad/index.ts +5 -0
- package/src/api/ai/facial.ts +6 -0
- package/src/api/ai/index.ts +2 -0
- package/src/api/ai/visual.ts +4 -0
- package/src/api/alipay/index.ts +4 -0
- package/src/api/base/crypto.ts +4 -0
- package/src/api/base/debug.ts +5 -0
- package/src/api/base/index.ts +23 -0
- package/src/api/base/performance.ts +5 -0
- package/src/api/base/system/index.ts +2 -0
- package/src/api/base/system/info.ts +64 -0
- package/src/api/base/system/network.ts +70 -0
- package/src/api/base/update.ts +5 -0
- package/src/api/base/weapp/app-event.ts +19 -0
- package/src/api/base/weapp/life-cycle.ts +5 -0
- package/src/api/canvas/CanvasContext.ts +230 -0
- package/src/api/canvas/canvasGetImageData.ts +27 -0
- package/src/api/canvas/canvasPutImageData.ts +24 -0
- package/src/api/canvas/canvasToTempFilePath.ts +24 -0
- package/src/api/canvas/createCanvasContext.ts +18 -0
- package/src/api/canvas/index.ts +10 -0
- package/src/api/cloud/index.ts +27 -0
- package/src/api/data-analysis/index.ts +6 -0
- package/src/api/device/accelerometer.ts +87 -0
- package/src/api/device/accessibility.ts +4 -0
- package/src/api/device/battery.ts +5 -0
- package/src/api/device/bluetooth-ble.ts +19 -0
- package/src/api/device/bluetooth-peripheral.ts +6 -0
- package/src/api/device/bluetooth.ts +16 -0
- package/src/api/device/calendar.ts +5 -0
- package/src/api/device/clipboard.ts +67 -0
- package/src/api/device/compass.ts +67 -0
- package/src/api/device/contact.ts +5 -0
- package/src/api/device/crypto.ts +4 -0
- package/src/api/device/gyroscope.ts +7 -0
- package/src/api/device/iBeacon.ts +10 -0
- package/src/api/device/index.ts +22 -0
- package/src/api/device/keyboard.ts +7 -0
- package/src/api/device/memory.ts +5 -0
- package/src/api/device/motion.ts +85 -0
- package/src/api/device/nfc.ts +10 -0
- package/src/api/device/phone.ts +30 -0
- package/src/api/device/scan.ts +7 -0
- package/src/api/device/screen.ts +9 -0
- package/src/api/device/vibrate.ts +36 -0
- package/src/api/device/wifi.ts +13 -0
- package/src/api/ext/index.ts +5 -0
- package/src/api/files/index.ts +11 -0
- package/src/api/framework/index.ts +10 -0
- package/src/api/index.ts +25 -0
- package/src/api/location/chooseLocation.ts +106 -0
- package/src/api/location/index.ts +19 -0
- package/src/api/location/style.css +8 -8
- package/src/api/media/audio/index.ts +105 -0
- package/src/api/media/background-audio.ts +12 -0
- package/src/api/media/camera.ts +4 -0
- package/src/api/media/editor.ts +29 -0
- package/src/api/media/image/chooseImage.ts +78 -0
- package/src/api/media/image/getImageInfo.ts +35 -0
- package/src/api/media/image/index.ts +13 -0
- package/src/api/media/image/previewImage.ts +101 -0
- package/src/api/media/index.ts +13 -0
- package/src/api/media/live.ts +5 -0
- package/src/api/media/map.ts +4 -0
- package/src/api/media/media-recorder.ts +4 -0
- package/src/api/media/recorder.ts +6 -0
- package/src/api/media/video/index.ts +82 -0
- package/src/api/media/video-decoder.ts +4 -0
- package/src/api/media/video-processing.ts +4 -0
- package/src/api/media/voip.ts +17 -0
- package/src/api/navigate/index.ts +7 -0
- package/src/api/{fileTransfer/downloadFile.js → network/download.ts} +16 -27
- package/src/api/network/index.ts +7 -0
- package/src/api/network/mdns.ts +13 -0
- package/src/api/{request/index.js → network/request/index.ts} +9 -6
- package/src/api/network/tcp.ts +4 -0
- package/src/api/network/udp.ts +4 -0
- package/src/api/{fileTransfer/uploadFile.js → network/upload.ts} +28 -32
- package/src/api/{fileTransfer/utils.js → network/utils.ts} +0 -0
- package/src/api/network/websocket/index.ts +88 -0
- package/src/api/{webSocket/socketTask.js → network/websocket/socketTask.ts} +17 -7
- package/src/api/open-api/account.ts +4 -0
- package/src/api/open-api/address.ts +4 -0
- package/src/api/open-api/authorize.ts +5 -0
- package/src/api/open-api/card.ts +5 -0
- package/src/api/open-api/channels-live.ts +9 -0
- package/src/api/open-api/customer-service.ts +4 -0
- package/src/api/open-api/facial.ts +7 -0
- package/src/api/open-api/favorites.ts +5 -0
- package/src/api/open-api/group.ts +4 -0
- package/src/api/open-api/index.ts +18 -0
- package/src/api/open-api/invoice.ts +5 -0
- package/src/api/open-api/license-plate.ts +4 -0
- package/src/api/open-api/login.ts +6 -0
- package/src/api/open-api/red-package.ts +4 -0
- package/src/api/open-api/settings.ts +5 -0
- package/src/api/open-api/soter.ts +6 -0
- package/src/api/open-api/subscribe-message.ts +4 -0
- package/src/api/open-api/user-info.ts +5 -0
- package/src/api/open-api/werun.ts +5 -0
- package/src/api/payment/index.ts +5 -0
- package/src/api/route/index.ts +10 -0
- package/src/api/share/index.ts +13 -0
- package/src/api/storage/background-fetch.ts +7 -0
- package/src/api/storage/index.ts +181 -0
- package/src/api/swan/index.ts +31 -0
- package/src/{taro/index.js → api/taro.ts} +133 -149
- package/src/api/{createAnimation/index.js → ui/animation/index.ts} +51 -35
- package/src/api/ui/background.ts +5 -0
- package/src/api/ui/custom-component.ts +4 -0
- package/src/api/ui/fonts.ts +4 -0
- package/src/api/ui/index.ts +12 -0
- package/src/api/ui/interaction/actionSheet.ts +212 -0
- package/src/api/{interactive/index.js → ui/interaction/index.ts} +93 -77
- package/src/api/ui/interaction/modal.ts +237 -0
- package/src/api/{interactive/toast.js → ui/interaction/toast.ts} +35 -33
- package/src/api/ui/menu.ts +4 -0
- package/src/api/ui/navigation-bar/index.ts +52 -0
- package/src/api/ui/pull-down-refresh.ts +27 -0
- package/src/api/ui/scroll/index.ts +85 -0
- package/src/api/ui/sticky.ts +4 -0
- package/src/api/ui/tab-bar.ts +326 -0
- package/src/api/ui/window.ts +37 -0
- package/src/api/utils/handler.ts +105 -0
- package/src/api/utils/{index.js → index.ts} +36 -115
- package/src/api/worker/index.ts +4 -0
- package/src/api/wxml/index.ts +9 -0
- package/src/api/wxml/nodesRef.ts +49 -0
- package/src/api/{createSelectorQuery/index.js → wxml/selectorQuery.ts} +75 -94
- package/src/index.ts +6 -0
- package/src/types/api.d.ts +4 -0
- package/src/types/define.d.ts +2 -0
- package/{types → src/types}/index.d.ts +0 -0
- package/{types → src/types}/type.ts +1 -1
- package/src/api/accelerometer/index.js +0 -105
- package/src/api/audio/index.js +0 -137
- package/src/api/canvas/canvasGetImageData.js +0 -44
- package/src/api/canvas/canvasPutImageData.js +0 -45
- package/src/api/canvas/canvasToTempFilePath.js +0 -49
- package/src/api/canvas/createCanvasContext.js +0 -340
- package/src/api/canvas/index.js +0 -4
- package/src/api/clipboard/index.js +0 -113
- package/src/api/compass/index.js +0 -99
- package/src/api/deviceMotion/index.js +0 -105
- package/src/api/fileTransfer/index.js +0 -2
- package/src/api/image/chooseImage.js +0 -87
- package/src/api/image/getImageInfo.js +0 -74
- package/src/api/image/index.js +0 -7
- package/src/api/image/previewImage.js +0 -94
- package/src/api/index.js +0 -29
- package/src/api/interactive/actionSheet.js +0 -214
- package/src/api/interactive/modal.js +0 -256
- package/src/api/location/chooseLocation.js +0 -143
- package/src/api/location/index.js +0 -5
- package/src/api/navigationBar/index.js +0 -57
- package/src/api/open/index.js +0 -5
- package/src/api/others/index.js +0 -43
- package/src/api/pullDownRefresh/index.js +0 -51
- package/src/api/scroll/index.js +0 -99
- package/src/api/storage/index.js +0 -211
- package/src/api/system/index.js +0 -9
- package/src/api/system/info.js +0 -36
- package/src/api/system/network.js +0 -68
- package/src/api/tabBar/index.js +0 -424
- package/src/api/unsupportedApi/index.js +0 -278
- package/src/api/vibrate/index.js +0 -49
- package/src/api/video/index.js +0 -87
- package/src/api/webSocket/index.js +0 -103
- package/src/api/window/index.js +0 -38
- package/src/index.cjs.js +0 -11
- package/src/index.js +0 -6
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import Taro from '@tarojs/api'
|
|
2
|
-
import {
|
|
2
|
+
import { getParameterError, temporarilyNotSupport } from '../../utils'
|
|
3
|
+
import { MethodHandler } from '../../utils/handler'
|
|
3
4
|
import Toast from './toast'
|
|
4
5
|
import Modal from './modal'
|
|
5
6
|
import ActionSheet from './actionSheet'
|
|
6
7
|
|
|
8
|
+
// 交互
|
|
9
|
+
|
|
7
10
|
let status = 'default'
|
|
8
11
|
|
|
9
12
|
// inject necessary style
|
|
@@ -21,26 +24,21 @@ const toast = new Toast()
|
|
|
21
24
|
const modal = new Modal()
|
|
22
25
|
const actionSheet = new ActionSheet()
|
|
23
26
|
|
|
24
|
-
|
|
27
|
+
const showToast: typeof Taro.showToast = (options = { title: '' }) => {
|
|
25
28
|
init(document)
|
|
26
|
-
|
|
27
|
-
const _default = {
|
|
29
|
+
options = Object.assign({
|
|
28
30
|
title: '',
|
|
29
31
|
icon: 'success',
|
|
30
32
|
image: '',
|
|
31
33
|
duration: 1500,
|
|
32
34
|
mask: false
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
// verify options
|
|
38
|
-
const handler = errorHandler(options.fail, options.complete)
|
|
35
|
+
}, options)
|
|
36
|
+
const { success, fail, complete } = options
|
|
37
|
+
const handle = new MethodHandler({ name: 'showToast', success, fail, complete })
|
|
39
38
|
|
|
40
39
|
if (typeof options.title !== 'string') {
|
|
41
|
-
return
|
|
40
|
+
return handle.fail({
|
|
42
41
|
errMsg: getParameterError({
|
|
43
|
-
name: 'showToast',
|
|
44
42
|
para: 'title',
|
|
45
43
|
correct: 'String',
|
|
46
44
|
wrong: options.title
|
|
@@ -49,9 +47,8 @@ function showToast (options = {}) {
|
|
|
49
47
|
}
|
|
50
48
|
|
|
51
49
|
if (typeof options.duration !== 'number') {
|
|
52
|
-
return
|
|
50
|
+
return handle.fail({
|
|
53
51
|
errMsg: getParameterError({
|
|
54
|
-
name: 'showToast',
|
|
55
52
|
para: 'duration',
|
|
56
53
|
correct: 'Number',
|
|
57
54
|
wrong: options.duration
|
|
@@ -63,38 +60,42 @@ function showToast (options = {}) {
|
|
|
63
60
|
|
|
64
61
|
options.mask = !!options.mask
|
|
65
62
|
|
|
66
|
-
|
|
67
|
-
|
|
63
|
+
let errMsg = ''
|
|
64
|
+
if (!toast.el) {
|
|
65
|
+
errMsg = toast.create(options, 'loading')
|
|
66
|
+
} else {
|
|
67
|
+
errMsg = toast.show(options, 'loading')
|
|
68
|
+
}
|
|
69
|
+
return handle.success({ errMsg })
|
|
68
70
|
}
|
|
69
71
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
+
const hideToast: typeof Taro.hideToast = ({ success, fail, complete } = {}) => {
|
|
73
|
+
const handle = new MethodHandler({ name: 'hideToast', success, fail, complete })
|
|
74
|
+
if (!toast.el) return handle.success()
|
|
72
75
|
toast.hide(0, 'toast')
|
|
76
|
+
return handle.success()
|
|
73
77
|
}
|
|
74
78
|
|
|
75
|
-
|
|
79
|
+
const showLoading: typeof Taro.showLoading = (options = { title: '' }) => {
|
|
76
80
|
init(document)
|
|
77
|
-
|
|
78
|
-
const _default = {
|
|
81
|
+
options = Object.assign({
|
|
79
82
|
title: '',
|
|
80
83
|
mask: false
|
|
81
|
-
}
|
|
84
|
+
}, options)
|
|
85
|
+
const { success, fail, complete } = options
|
|
86
|
+
const handle = new MethodHandler({ name: 'showLoading', success, fail, complete })
|
|
87
|
+
|
|
82
88
|
const config = {
|
|
83
89
|
icon: 'loading',
|
|
84
90
|
image: '',
|
|
85
91
|
duration: -1
|
|
86
92
|
}
|
|
87
93
|
|
|
88
|
-
options = Object.assign({},
|
|
89
|
-
options._type = 'loading'
|
|
90
|
-
|
|
91
|
-
// verify options
|
|
92
|
-
const handler = errorHandler(options.fail, options.complete)
|
|
94
|
+
options = Object.assign({}, options, config)
|
|
93
95
|
|
|
94
96
|
if (typeof options.title !== 'string') {
|
|
95
|
-
return
|
|
97
|
+
return handle.fail({
|
|
96
98
|
errMsg: getParameterError({
|
|
97
|
-
name: 'showLoading',
|
|
98
99
|
para: 'title',
|
|
99
100
|
correct: 'String',
|
|
100
101
|
wrong: options.title
|
|
@@ -104,19 +105,25 @@ function showLoading (options = {}) {
|
|
|
104
105
|
|
|
105
106
|
options.mask = !!options.mask
|
|
106
107
|
|
|
107
|
-
|
|
108
|
-
|
|
108
|
+
let errMsg = ''
|
|
109
|
+
if (!toast.el) {
|
|
110
|
+
errMsg = toast.create(options, 'loading')
|
|
111
|
+
} else {
|
|
112
|
+
errMsg = toast.show(options, 'loading')
|
|
113
|
+
}
|
|
114
|
+
return handle.success({ errMsg })
|
|
109
115
|
}
|
|
110
116
|
|
|
111
|
-
|
|
112
|
-
|
|
117
|
+
const hideLoading: typeof Taro.hideLoading = ({ success, fail, complete } = {}) => {
|
|
118
|
+
const handle = new MethodHandler({ name: 'hideLoading', success, fail, complete })
|
|
119
|
+
if (!toast.el) return handle.success()
|
|
113
120
|
toast.hide(0, 'loading')
|
|
121
|
+
return handle.success()
|
|
114
122
|
}
|
|
115
123
|
|
|
116
|
-
|
|
124
|
+
const showModal: typeof Taro.showModal = async (options = {}) => {
|
|
117
125
|
init(document)
|
|
118
|
-
|
|
119
|
-
const _default = {
|
|
126
|
+
options = Object.assign({
|
|
120
127
|
title: '',
|
|
121
128
|
content: '',
|
|
122
129
|
showCancel: true,
|
|
@@ -124,16 +131,13 @@ function showModal (options = {}) {
|
|
|
124
131
|
cancelColor: '#000000',
|
|
125
132
|
confirmText: '确定',
|
|
126
133
|
confirmColor: '#3CC51F'
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
// verify options
|
|
131
|
-
const handler = errorHandler(options.fail, options.complete)
|
|
134
|
+
}, options)
|
|
135
|
+
const { success, fail, complete } = options
|
|
136
|
+
const handle = new MethodHandler({ name: 'showModal', success, fail, complete })
|
|
132
137
|
|
|
133
138
|
if (typeof options.title !== 'string') {
|
|
134
|
-
return
|
|
139
|
+
return handle.fail({
|
|
135
140
|
errMsg: getParameterError({
|
|
136
|
-
name: 'showModal',
|
|
137
141
|
para: 'title',
|
|
138
142
|
correct: 'String',
|
|
139
143
|
wrong: options.title
|
|
@@ -142,9 +146,8 @@ function showModal (options = {}) {
|
|
|
142
146
|
}
|
|
143
147
|
|
|
144
148
|
if (typeof options.content !== 'string') {
|
|
145
|
-
return
|
|
149
|
+
return handle.fail({
|
|
146
150
|
errMsg: getParameterError({
|
|
147
|
-
name: 'showModal',
|
|
148
151
|
para: 'content',
|
|
149
152
|
correct: 'String',
|
|
150
153
|
wrong: options.content
|
|
@@ -153,9 +156,8 @@ function showModal (options = {}) {
|
|
|
153
156
|
}
|
|
154
157
|
|
|
155
158
|
if (typeof options.cancelText !== 'string') {
|
|
156
|
-
return
|
|
159
|
+
return handle.fail({
|
|
157
160
|
errMsg: getParameterError({
|
|
158
|
-
name: 'showModal',
|
|
159
161
|
para: 'cancelText',
|
|
160
162
|
correct: 'String',
|
|
161
163
|
wrong: options.cancelText
|
|
@@ -164,13 +166,14 @@ function showModal (options = {}) {
|
|
|
164
166
|
}
|
|
165
167
|
|
|
166
168
|
if (options.cancelText.replace(/[\u0391-\uFFE5]/g, 'aa').length > 8) {
|
|
167
|
-
return
|
|
169
|
+
return handle.fail({
|
|
170
|
+
errMsg: 'showModal:fail cancelText length should not larger then 4 Chinese characters'
|
|
171
|
+
})
|
|
168
172
|
}
|
|
169
173
|
|
|
170
174
|
if (typeof options.confirmText !== 'string') {
|
|
171
|
-
return
|
|
175
|
+
return handle.fail({
|
|
172
176
|
errMsg: getParameterError({
|
|
173
|
-
name: 'showModal',
|
|
174
177
|
para: 'confirmText',
|
|
175
178
|
correct: 'String',
|
|
176
179
|
wrong: options.confirmText
|
|
@@ -179,13 +182,14 @@ function showModal (options = {}) {
|
|
|
179
182
|
}
|
|
180
183
|
|
|
181
184
|
if (options.confirmText.replace(/[\u0391-\uFFE5]/g, 'aa').length > 8) {
|
|
182
|
-
return
|
|
185
|
+
return handle.fail({
|
|
186
|
+
errMsg: 'showModal:fail confirmText length should not larger then 4 Chinese characters'
|
|
187
|
+
})
|
|
183
188
|
}
|
|
184
189
|
|
|
185
190
|
if (typeof options.cancelColor !== 'string') {
|
|
186
|
-
return
|
|
191
|
+
return handle.fail({
|
|
187
192
|
errMsg: getParameterError({
|
|
188
|
-
name: 'showModal',
|
|
189
193
|
para: 'cancelColor',
|
|
190
194
|
correct: 'String',
|
|
191
195
|
wrong: options.cancelColor
|
|
@@ -194,9 +198,8 @@ function showModal (options = {}) {
|
|
|
194
198
|
}
|
|
195
199
|
|
|
196
200
|
if (typeof options.confirmColor !== 'string') {
|
|
197
|
-
return
|
|
201
|
+
return handle.fail({
|
|
198
202
|
errMsg: getParameterError({
|
|
199
|
-
name: 'showModal',
|
|
200
203
|
para: 'confirmColor',
|
|
201
204
|
correct: 'String',
|
|
202
205
|
wrong: options.confirmColor
|
|
@@ -206,8 +209,13 @@ function showModal (options = {}) {
|
|
|
206
209
|
|
|
207
210
|
options.showCancel = !!options.showCancel
|
|
208
211
|
|
|
209
|
-
|
|
210
|
-
|
|
212
|
+
let errMsg = ''
|
|
213
|
+
if (!modal.el) {
|
|
214
|
+
errMsg = await modal.create(options)
|
|
215
|
+
} else {
|
|
216
|
+
errMsg = await modal.show(options)
|
|
217
|
+
}
|
|
218
|
+
return handle.success({ errMsg })
|
|
211
219
|
}
|
|
212
220
|
|
|
213
221
|
function hideModal () {
|
|
@@ -215,22 +223,19 @@ function hideModal () {
|
|
|
215
223
|
modal.hide()
|
|
216
224
|
}
|
|
217
225
|
|
|
218
|
-
|
|
226
|
+
const showActionSheet: typeof Taro.showActionSheet = async (options = { itemList: [] }) => {
|
|
219
227
|
init(document)
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
}
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
// verify options
|
|
227
|
-
const handler = errorHandler(options.fail, options.complete)
|
|
228
|
+
options = Object.assign({
|
|
229
|
+
itemColor: '#000000',
|
|
230
|
+
itemList: []
|
|
231
|
+
}, options)
|
|
232
|
+
const { success, fail, complete } = options
|
|
233
|
+
const handle = new MethodHandler<Taro.showActionSheet.SuccessCallbackResult>({ name: 'showActionSheet', success, fail, complete })
|
|
228
234
|
|
|
229
235
|
// list item String
|
|
230
236
|
if (!Array.isArray(options.itemList)) {
|
|
231
|
-
return
|
|
237
|
+
return handle.fail({
|
|
232
238
|
errMsg: getParameterError({
|
|
233
|
-
name: 'showActionSheet',
|
|
234
239
|
para: 'itemList',
|
|
235
240
|
correct: 'Array',
|
|
236
241
|
wrong: options.itemList
|
|
@@ -239,18 +244,17 @@ function showActionSheet (options = {}) {
|
|
|
239
244
|
}
|
|
240
245
|
|
|
241
246
|
if (options.itemList.length < 1) {
|
|
242
|
-
return
|
|
247
|
+
return handle.fail({ errMsg: 'showActionSheet:fail parameter error: parameter.itemList should have at least 1 item' })
|
|
243
248
|
}
|
|
244
249
|
|
|
245
250
|
if (options.itemList.length > 6) {
|
|
246
|
-
return
|
|
251
|
+
return handle.fail({ errMsg: 'showActionSheet:fail parameter error: parameter.itemList should not be large than 6' })
|
|
247
252
|
}
|
|
248
253
|
|
|
249
254
|
for (let i = 0; i < options.itemList.length; i++) {
|
|
250
255
|
if (typeof options.itemList[i] !== 'string') {
|
|
251
|
-
return
|
|
256
|
+
return handle.fail({
|
|
252
257
|
errMsg: getParameterError({
|
|
253
|
-
name: 'showActionSheet',
|
|
254
258
|
para: `itemList[${i}]`,
|
|
255
259
|
correct: 'String',
|
|
256
260
|
wrong: options.itemList[i]
|
|
@@ -260,9 +264,8 @@ function showActionSheet (options = {}) {
|
|
|
260
264
|
}
|
|
261
265
|
|
|
262
266
|
if (typeof options.itemColor !== 'string') {
|
|
263
|
-
return
|
|
267
|
+
return handle.fail({
|
|
264
268
|
errMsg: getParameterError({
|
|
265
|
-
name: 'showActionSheet',
|
|
266
269
|
para: 'itemColor',
|
|
267
270
|
correct: 'String',
|
|
268
271
|
wrong: options.itemColor
|
|
@@ -270,8 +273,18 @@ function showActionSheet (options = {}) {
|
|
|
270
273
|
})
|
|
271
274
|
}
|
|
272
275
|
|
|
273
|
-
|
|
274
|
-
|
|
276
|
+
let result: number | string = ''
|
|
277
|
+
if (!actionSheet.el) {
|
|
278
|
+
result = await actionSheet.create(options)
|
|
279
|
+
} else {
|
|
280
|
+
result = await actionSheet.show(options)
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
if (typeof result === 'string') {
|
|
284
|
+
return handle.fail(({ errMsg: result }))
|
|
285
|
+
} else {
|
|
286
|
+
return handle.success(({ tapIndex: result }))
|
|
287
|
+
}
|
|
275
288
|
}
|
|
276
289
|
|
|
277
290
|
Taro.eventCenter.on('__taroRouterChange', () => {
|
|
@@ -280,4 +293,7 @@ Taro.eventCenter.on('__taroRouterChange', () => {
|
|
|
280
293
|
hideModal()
|
|
281
294
|
})
|
|
282
295
|
|
|
283
|
-
|
|
296
|
+
const enableAlertBeforeUnload = temporarilyNotSupport('enableAlertBeforeUnload')
|
|
297
|
+
const disableAlertBeforeUnload = temporarilyNotSupport('disableAlertBeforeUnload')
|
|
298
|
+
|
|
299
|
+
export { showToast, showModal, showLoading, showActionSheet, hideToast, hideLoading, enableAlertBeforeUnload, disableAlertBeforeUnload }
|
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
import { inlineStyle } from '../../utils'
|
|
2
|
+
|
|
3
|
+
export default class Modal {
|
|
4
|
+
options = {
|
|
5
|
+
title: '',
|
|
6
|
+
content: '',
|
|
7
|
+
showCancel: true,
|
|
8
|
+
cancelText: '取消',
|
|
9
|
+
cancelColor: '#000000',
|
|
10
|
+
confirmText: '确定',
|
|
11
|
+
confirmColor: '#3CC51F'
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
style = {
|
|
15
|
+
maskStyle: {
|
|
16
|
+
position: 'fixed',
|
|
17
|
+
'z-index': '1000',
|
|
18
|
+
top: '0',
|
|
19
|
+
right: '0',
|
|
20
|
+
left: '0',
|
|
21
|
+
bottom: '0',
|
|
22
|
+
background: 'rgba(0,0,0,0.6)'
|
|
23
|
+
},
|
|
24
|
+
modalStyle: {
|
|
25
|
+
'z-index': '4999',
|
|
26
|
+
position: 'fixed',
|
|
27
|
+
top: '50%',
|
|
28
|
+
left: '50%',
|
|
29
|
+
transform: 'translate(-50%, -50%)',
|
|
30
|
+
width: '80%',
|
|
31
|
+
'max-width': '300px',
|
|
32
|
+
'border-radius': '3px',
|
|
33
|
+
'text-align': 'center',
|
|
34
|
+
'line-height': '1.6',
|
|
35
|
+
overflow: 'hidden',
|
|
36
|
+
background: '#FFFFFF'
|
|
37
|
+
},
|
|
38
|
+
titleStyle: {
|
|
39
|
+
padding: '20px 24px 9px',
|
|
40
|
+
'font-size': '18px'
|
|
41
|
+
},
|
|
42
|
+
textStyle: {
|
|
43
|
+
padding: '0 24px 12px',
|
|
44
|
+
'min-height': '40px',
|
|
45
|
+
'font-size': '15px',
|
|
46
|
+
'line-height': '1.3',
|
|
47
|
+
color: '#808080'
|
|
48
|
+
},
|
|
49
|
+
footStyle: {
|
|
50
|
+
position: 'relative',
|
|
51
|
+
'line-height': '48px',
|
|
52
|
+
'font-size': '18px',
|
|
53
|
+
display: 'flex'
|
|
54
|
+
},
|
|
55
|
+
btnStyle: {
|
|
56
|
+
position: 'relative',
|
|
57
|
+
'-webkit-box-flex': '1',
|
|
58
|
+
'-webkit-flex': '1',
|
|
59
|
+
flex: '1'
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
el: HTMLDivElement
|
|
64
|
+
title: HTMLDivElement
|
|
65
|
+
text: HTMLDivElement
|
|
66
|
+
cancel: HTMLDivElement
|
|
67
|
+
confirm: HTMLDivElement
|
|
68
|
+
hideOpacityTimer: any
|
|
69
|
+
hideDisplayTimer: any
|
|
70
|
+
|
|
71
|
+
create (options = {}) {
|
|
72
|
+
return new Promise<string>((resolve) => {
|
|
73
|
+
// style
|
|
74
|
+
const { maskStyle, modalStyle, titleStyle, textStyle, footStyle, btnStyle } = this.style
|
|
75
|
+
|
|
76
|
+
// configuration
|
|
77
|
+
const config = {
|
|
78
|
+
...this.options,
|
|
79
|
+
...options
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// wrapper
|
|
83
|
+
this.el = document.createElement('div')
|
|
84
|
+
this.el.className = 'taro__modal'
|
|
85
|
+
this.el.style.opacity = '0'
|
|
86
|
+
this.el.style.transition = 'opacity 0.2s linear'
|
|
87
|
+
|
|
88
|
+
// mask
|
|
89
|
+
const mask = document.createElement('div')
|
|
90
|
+
mask.className = 'taro-modal__mask'
|
|
91
|
+
mask.setAttribute('style', inlineStyle(maskStyle))
|
|
92
|
+
|
|
93
|
+
// modal
|
|
94
|
+
const modal = document.createElement('div')
|
|
95
|
+
modal.className = 'taro-modal__content'
|
|
96
|
+
modal.setAttribute('style', inlineStyle(modalStyle))
|
|
97
|
+
|
|
98
|
+
// title
|
|
99
|
+
const titleCSS = config.title ? titleStyle : {
|
|
100
|
+
...titleStyle,
|
|
101
|
+
display: 'none'
|
|
102
|
+
}
|
|
103
|
+
this.title = document.createElement('div')
|
|
104
|
+
|
|
105
|
+
this.title.className = 'taro-modal__title'
|
|
106
|
+
this.title.setAttribute('style', inlineStyle(titleCSS))
|
|
107
|
+
this.title.textContent = config.title
|
|
108
|
+
|
|
109
|
+
// text
|
|
110
|
+
const textCSS = config.title ? textStyle : {
|
|
111
|
+
...textStyle,
|
|
112
|
+
padding: '40px 20px 26px',
|
|
113
|
+
color: '#353535'
|
|
114
|
+
}
|
|
115
|
+
this.text = document.createElement('div')
|
|
116
|
+
this.text.className = 'taro-modal__text'
|
|
117
|
+
this.text.setAttribute('style', inlineStyle(textCSS))
|
|
118
|
+
this.text.textContent = config.content
|
|
119
|
+
|
|
120
|
+
// foot
|
|
121
|
+
const foot = document.createElement('div')
|
|
122
|
+
foot.className = 'taro-modal__foot'
|
|
123
|
+
foot.setAttribute('style', inlineStyle(footStyle))
|
|
124
|
+
|
|
125
|
+
// cancel button
|
|
126
|
+
const cancelCSS = {
|
|
127
|
+
...btnStyle,
|
|
128
|
+
color: config.cancelColor,
|
|
129
|
+
display: config.showCancel ? 'block' : 'none'
|
|
130
|
+
}
|
|
131
|
+
this.cancel = document.createElement('div')
|
|
132
|
+
this.cancel.className = 'taro-model__btn taro-model__cancel'
|
|
133
|
+
this.cancel.setAttribute('style', inlineStyle(cancelCSS))
|
|
134
|
+
this.cancel.textContent = config.cancelText
|
|
135
|
+
this.cancel.onclick = () => {
|
|
136
|
+
this.hide()
|
|
137
|
+
resolve('cancel')
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
// confirm button
|
|
141
|
+
this.confirm = document.createElement('div')
|
|
142
|
+
this.confirm.className = 'taro-model__btn taro-model__confirm'
|
|
143
|
+
this.confirm.setAttribute('style', inlineStyle(btnStyle))
|
|
144
|
+
this.confirm.style.color = config.confirmColor
|
|
145
|
+
this.confirm.textContent = config.confirmText
|
|
146
|
+
this.confirm.onclick = () => {
|
|
147
|
+
this.hide()
|
|
148
|
+
resolve('confirm')
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
// result
|
|
152
|
+
foot.appendChild(this.cancel)
|
|
153
|
+
foot.appendChild(this.confirm)
|
|
154
|
+
modal.appendChild(this.title)
|
|
155
|
+
modal.appendChild(this.text)
|
|
156
|
+
modal.appendChild(foot)
|
|
157
|
+
this.el.appendChild(mask)
|
|
158
|
+
this.el.appendChild(modal)
|
|
159
|
+
|
|
160
|
+
// show immediately
|
|
161
|
+
document.body.appendChild(this.el)
|
|
162
|
+
setTimeout(() => { this.el.style.opacity = '1' }, 0)
|
|
163
|
+
})
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
show (options = {}) {
|
|
167
|
+
return new Promise<string>((resolve) => {
|
|
168
|
+
const config = {
|
|
169
|
+
...this.options,
|
|
170
|
+
...options
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
if (this.hideOpacityTimer) clearTimeout(this.hideOpacityTimer)
|
|
174
|
+
if (this.hideDisplayTimer) clearTimeout(this.hideDisplayTimer)
|
|
175
|
+
|
|
176
|
+
// title & text
|
|
177
|
+
const { textStyle } = this.style
|
|
178
|
+
|
|
179
|
+
if (config.title) {
|
|
180
|
+
this.title.textContent = config.title
|
|
181
|
+
// none => block
|
|
182
|
+
this.title.style.display = 'block'
|
|
183
|
+
this.text.setAttribute('style', inlineStyle(textStyle))
|
|
184
|
+
} else {
|
|
185
|
+
// block => none
|
|
186
|
+
this.title.style.display = 'none'
|
|
187
|
+
const textCSS = {
|
|
188
|
+
...textStyle,
|
|
189
|
+
padding: '40px 20px 26px',
|
|
190
|
+
color: '#353535'
|
|
191
|
+
}
|
|
192
|
+
this.text.setAttribute('style', inlineStyle(textCSS))
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
this.text.textContent = config.content || ''
|
|
196
|
+
|
|
197
|
+
// showCancel
|
|
198
|
+
this.cancel.style.display = config.showCancel ? 'block' : 'none'
|
|
199
|
+
|
|
200
|
+
// cancelText
|
|
201
|
+
this.cancel.textContent = config.cancelText || ''
|
|
202
|
+
|
|
203
|
+
// cancelColor
|
|
204
|
+
this.cancel.style.color = config.cancelColor || ''
|
|
205
|
+
|
|
206
|
+
// confirmText
|
|
207
|
+
this.confirm.textContent = config.confirmText || ''
|
|
208
|
+
|
|
209
|
+
// confirmColor
|
|
210
|
+
this.confirm.style.color = config.confirmColor || ''
|
|
211
|
+
|
|
212
|
+
// cbs
|
|
213
|
+
this.cancel.onclick = () => {
|
|
214
|
+
this.hide()
|
|
215
|
+
resolve('cancel')
|
|
216
|
+
}
|
|
217
|
+
this.confirm.onclick = () => {
|
|
218
|
+
this.hide()
|
|
219
|
+
resolve('confirm')
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
// show
|
|
223
|
+
this.el.style.display = 'block'
|
|
224
|
+
setTimeout(() => { this.el.style.opacity = '1' }, 0)
|
|
225
|
+
})
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
hide () {
|
|
229
|
+
if (this.hideOpacityTimer) clearTimeout(this.hideOpacityTimer)
|
|
230
|
+
if (this.hideDisplayTimer) clearTimeout(this.hideDisplayTimer)
|
|
231
|
+
|
|
232
|
+
this.hideOpacityTimer = setTimeout(() => {
|
|
233
|
+
this.el.style.opacity = '0'
|
|
234
|
+
this.hideDisplayTimer = setTimeout(() => { this.el.style.display = 'none' }, 200)
|
|
235
|
+
}, 0)
|
|
236
|
+
}
|
|
237
|
+
}
|