@tarojs/taro-h5 3.4.0-beta.0 → 3.4.0

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 (306) hide show
  1. package/dist/api/ad/index.js +4 -0
  2. package/dist/api/ai/facial.js +5 -0
  3. package/dist/api/ai/index.js +2 -0
  4. package/dist/api/ai/visual.js +3 -0
  5. package/dist/api/alipay/index.js +3 -0
  6. package/dist/api/base/crypto.js +3 -0
  7. package/dist/api/base/debug.js +4 -0
  8. package/dist/api/base/index.js +17 -0
  9. package/dist/api/base/performance.js +4 -0
  10. package/dist/api/base/system/index.js +2 -0
  11. package/dist/api/base/system/info.js +57 -0
  12. package/dist/api/base/system/network.js +63 -0
  13. package/dist/api/base/update.js +4 -0
  14. package/dist/api/base/weapp/app-event.js +18 -0
  15. package/dist/api/base/weapp/life-cycle.js +4 -0
  16. package/dist/api/canvas/CanvasContext.js +191 -0
  17. package/dist/api/canvas/canvasGetImageData.js +25 -0
  18. package/dist/api/canvas/canvasPutImageData.js +22 -0
  19. package/dist/api/canvas/canvasToTempFilePath.js +22 -0
  20. package/dist/api/canvas/createCanvasContext.js +16 -0
  21. package/dist/api/canvas/index.js +8 -0
  22. package/dist/api/cloud/index.js +17 -0
  23. package/dist/api/data-analysis/index.js +5 -0
  24. package/dist/api/device/accelerometer.js +83 -0
  25. package/dist/api/device/accessibility.js +3 -0
  26. package/dist/api/device/battery.js +4 -0
  27. package/dist/api/device/bluetooth-ble.js +18 -0
  28. package/dist/api/device/bluetooth-peripheral.js +5 -0
  29. package/dist/api/device/bluetooth.js +15 -0
  30. package/dist/api/device/calendar.js +4 -0
  31. package/dist/api/device/clipboard.js +65 -0
  32. package/dist/api/device/compass.js +64 -0
  33. package/dist/api/device/contact.js +4 -0
  34. package/dist/api/device/crypto.js +3 -0
  35. package/dist/api/device/gyroscope.js +6 -0
  36. package/dist/api/device/iBeacon.js +9 -0
  37. package/dist/api/device/index.js +22 -0
  38. package/dist/api/device/keyboard.js +6 -0
  39. package/dist/api/device/memory.js +4 -0
  40. package/dist/api/device/motion.js +81 -0
  41. package/dist/api/device/nfc.js +9 -0
  42. package/dist/api/device/phone.js +24 -0
  43. package/dist/api/device/scan.js +6 -0
  44. package/dist/api/device/screen.js +8 -0
  45. package/dist/api/device/vibrate.js +35 -0
  46. package/dist/api/device/wifi.js +12 -0
  47. package/dist/api/ext/index.js +4 -0
  48. package/dist/api/files/index.js +10 -0
  49. package/dist/api/framework/index.js +7 -0
  50. package/dist/api/index.js +24 -0
  51. package/dist/api/location/chooseLocation.js +93 -0
  52. package/dist/api/location/index.js +13 -0
  53. package/dist/api/location/style.css +79 -0
  54. package/dist/api/media/audio/index.js +88 -0
  55. package/dist/api/media/background-audio.js +11 -0
  56. package/dist/api/media/camera.js +3 -0
  57. package/dist/api/media/editor.js +18 -0
  58. package/dist/api/media/image/chooseImage.js +74 -0
  59. package/dist/api/media/image/getImageInfo.js +31 -0
  60. package/dist/api/media/image/index.js +9 -0
  61. package/dist/api/media/image/previewImage.js +67 -0
  62. package/dist/api/media/index.js +13 -0
  63. package/dist/api/media/live.js +4 -0
  64. package/dist/api/media/map.js +3 -0
  65. package/dist/api/media/media-recorder.js +3 -0
  66. package/dist/api/media/recorder.js +5 -0
  67. package/dist/api/media/video/index.js +74 -0
  68. package/dist/api/media/video-decoder.js +3 -0
  69. package/dist/api/media/video-processing.js +3 -0
  70. package/dist/api/media/voip.js +16 -0
  71. package/dist/api/navigate/index.js +6 -0
  72. package/dist/api/network/download.js +124 -0
  73. package/dist/api/network/index.js +7 -0
  74. package/dist/api/network/mdns.js +12 -0
  75. package/dist/api/network/request/index.js +125 -0
  76. package/dist/api/network/tcp.js +3 -0
  77. package/dist/api/network/udp.js +3 -0
  78. package/dist/api/network/upload.js +151 -0
  79. package/dist/api/network/utils.js +65 -0
  80. package/dist/api/network/websocket/index.js +70 -0
  81. package/dist/api/network/websocket/socketTask.js +63 -0
  82. package/dist/api/open-api/account.js +3 -0
  83. package/dist/api/open-api/address.js +3 -0
  84. package/dist/api/open-api/authorize.js +4 -0
  85. package/dist/api/open-api/card.js +4 -0
  86. package/dist/api/open-api/channels-live.js +8 -0
  87. package/dist/api/open-api/customer-service.js +3 -0
  88. package/dist/api/open-api/facial.js +6 -0
  89. package/dist/api/open-api/favorites.js +4 -0
  90. package/dist/api/open-api/group.js +3 -0
  91. package/dist/api/open-api/index.js +18 -0
  92. package/dist/api/open-api/invoice.js +4 -0
  93. package/dist/api/open-api/license-plate.js +3 -0
  94. package/dist/api/open-api/login.js +5 -0
  95. package/dist/api/open-api/red-package.js +3 -0
  96. package/dist/api/open-api/settings.js +4 -0
  97. package/dist/api/open-api/soter.js +5 -0
  98. package/dist/api/open-api/subscribe-message.js +3 -0
  99. package/dist/api/open-api/user-info.js +4 -0
  100. package/dist/api/open-api/werun.js +4 -0
  101. package/dist/api/payment/index.js +4 -0
  102. package/dist/api/route/index.js +3 -0
  103. package/dist/api/share/index.js +12 -0
  104. package/dist/api/storage/background-fetch.js +6 -0
  105. package/dist/api/storage/index.js +157 -0
  106. package/dist/api/swan/index.js +26 -0
  107. package/dist/api/taro.js +47 -0
  108. package/dist/api/ui/animation/index.js +284 -0
  109. package/dist/api/ui/background.js +4 -0
  110. package/dist/api/ui/custom-component.js +3 -0
  111. package/dist/api/ui/fonts.js +3 -0
  112. package/dist/api/ui/index.js +12 -0
  113. package/dist/api/ui/interaction/actionSheet.js +188 -0
  114. package/dist/api/ui/interaction/index.js +268 -0
  115. package/dist/api/ui/interaction/modal.js +207 -0
  116. package/dist/api/ui/interaction/toast.js +195 -0
  117. package/dist/api/ui/menu.js +3 -0
  118. package/dist/api/ui/navigation-bar/index.js +42 -0
  119. package/dist/api/ui/pull-down-refresh.js +26 -0
  120. package/dist/api/ui/scroll/index.js +83 -0
  121. package/dist/api/ui/sticky.js +3 -0
  122. package/dist/api/ui/tab-bar.js +282 -0
  123. package/dist/api/ui/window.js +31 -0
  124. package/dist/api/utils/handler.js +80 -0
  125. package/dist/api/utils/index.js +148 -0
  126. package/dist/api/worker/index.js +3 -0
  127. package/dist/api/wxml/index.js +6 -0
  128. package/dist/api/wxml/nodesRef.js +42 -0
  129. package/dist/api/wxml/selectorQuery.js +201 -0
  130. package/dist/index.cjs.js +7852 -11638
  131. package/dist/index.js +4 -0
  132. package/dist/taroApis.js +1 -1
  133. package/dist/types/type.js +2 -0
  134. package/package.json +14 -16
  135. package/src/api/ad/index.ts +5 -0
  136. package/src/api/ai/facial.ts +6 -0
  137. package/src/api/ai/index.ts +2 -0
  138. package/src/api/ai/visual.ts +4 -0
  139. package/src/api/alipay/index.ts +4 -0
  140. package/src/api/base/crypto.ts +4 -0
  141. package/src/api/base/debug.ts +5 -0
  142. package/src/api/base/index.ts +23 -0
  143. package/src/api/base/performance.ts +5 -0
  144. package/src/api/base/system/index.ts +2 -0
  145. package/src/api/base/system/info.ts +64 -0
  146. package/src/api/base/system/network.ts +70 -0
  147. package/src/api/base/update.ts +5 -0
  148. package/src/api/base/weapp/app-event.ts +19 -0
  149. package/src/api/base/weapp/life-cycle.ts +5 -0
  150. package/src/api/canvas/CanvasContext.ts +233 -0
  151. package/src/api/canvas/canvasGetImageData.ts +27 -0
  152. package/src/api/canvas/canvasPutImageData.ts +24 -0
  153. package/src/api/canvas/canvasToTempFilePath.ts +24 -0
  154. package/src/api/canvas/createCanvasContext.ts +18 -0
  155. package/src/api/canvas/index.ts +10 -0
  156. package/src/api/cloud/index.ts +27 -0
  157. package/src/api/data-analysis/index.ts +6 -0
  158. package/src/api/device/accelerometer.ts +87 -0
  159. package/src/api/device/accessibility.ts +4 -0
  160. package/src/api/device/battery.ts +5 -0
  161. package/src/api/device/bluetooth-ble.ts +19 -0
  162. package/src/api/device/bluetooth-peripheral.ts +6 -0
  163. package/src/api/device/bluetooth.ts +16 -0
  164. package/src/api/device/calendar.ts +5 -0
  165. package/src/api/device/clipboard.ts +67 -0
  166. package/src/api/device/compass.ts +67 -0
  167. package/src/api/device/contact.ts +5 -0
  168. package/src/api/device/crypto.ts +4 -0
  169. package/src/api/device/gyroscope.ts +7 -0
  170. package/src/api/device/iBeacon.ts +10 -0
  171. package/src/api/device/index.ts +22 -0
  172. package/src/api/device/keyboard.ts +7 -0
  173. package/src/api/device/memory.ts +5 -0
  174. package/src/api/device/motion.ts +85 -0
  175. package/src/api/device/nfc.ts +10 -0
  176. package/src/api/device/phone.ts +30 -0
  177. package/src/api/device/scan.ts +7 -0
  178. package/src/api/device/screen.ts +9 -0
  179. package/src/api/device/vibrate.ts +36 -0
  180. package/src/api/device/wifi.ts +13 -0
  181. package/src/api/ext/index.ts +5 -0
  182. package/src/api/files/index.ts +11 -0
  183. package/src/api/framework/index.ts +10 -0
  184. package/src/api/index.ts +25 -0
  185. package/src/api/location/chooseLocation.ts +106 -0
  186. package/src/api/location/index.ts +19 -0
  187. package/src/api/location/style.css +8 -8
  188. package/src/api/media/audio/index.ts +105 -0
  189. package/src/api/media/background-audio.ts +12 -0
  190. package/src/api/media/camera.ts +4 -0
  191. package/src/api/media/editor.ts +29 -0
  192. package/src/api/media/image/chooseImage.ts +78 -0
  193. package/src/api/media/image/getImageInfo.ts +35 -0
  194. package/src/api/media/image/index.ts +13 -0
  195. package/src/api/media/image/previewImage.ts +80 -0
  196. package/src/api/media/index.ts +13 -0
  197. package/src/api/media/live.ts +5 -0
  198. package/src/api/media/map.ts +4 -0
  199. package/src/api/media/media-recorder.ts +4 -0
  200. package/src/api/media/recorder.ts +6 -0
  201. package/src/api/media/video/index.ts +82 -0
  202. package/src/api/media/video-decoder.ts +4 -0
  203. package/src/api/media/video-processing.ts +4 -0
  204. package/src/api/media/voip.ts +17 -0
  205. package/src/api/navigate/index.ts +7 -0
  206. package/src/api/{fileTransfer/downloadFile.js → network/download.ts} +16 -27
  207. package/src/api/network/index.ts +7 -0
  208. package/src/api/network/mdns.ts +13 -0
  209. package/src/api/{request/index.js → network/request/index.ts} +9 -6
  210. package/src/api/network/tcp.ts +4 -0
  211. package/src/api/network/udp.ts +4 -0
  212. package/src/api/{fileTransfer/uploadFile.js → network/upload.ts} +28 -32
  213. package/src/api/{fileTransfer/utils.js → network/utils.ts} +0 -0
  214. package/src/api/network/websocket/index.ts +88 -0
  215. package/src/api/{webSocket/socketTask.js → network/websocket/socketTask.ts} +17 -7
  216. package/src/api/open-api/account.ts +4 -0
  217. package/src/api/open-api/address.ts +4 -0
  218. package/src/api/open-api/authorize.ts +5 -0
  219. package/src/api/open-api/card.ts +5 -0
  220. package/src/api/open-api/channels-live.ts +9 -0
  221. package/src/api/open-api/customer-service.ts +4 -0
  222. package/src/api/open-api/facial.ts +7 -0
  223. package/src/api/open-api/favorites.ts +5 -0
  224. package/src/api/open-api/group.ts +4 -0
  225. package/src/api/open-api/index.ts +18 -0
  226. package/src/api/open-api/invoice.ts +5 -0
  227. package/src/api/open-api/license-plate.ts +4 -0
  228. package/src/api/open-api/login.ts +6 -0
  229. package/src/api/open-api/red-package.ts +4 -0
  230. package/src/api/open-api/settings.ts +5 -0
  231. package/src/api/open-api/soter.ts +6 -0
  232. package/src/api/open-api/subscribe-message.ts +4 -0
  233. package/src/api/open-api/user-info.ts +5 -0
  234. package/src/api/open-api/werun.ts +5 -0
  235. package/src/api/payment/index.ts +5 -0
  236. package/src/api/route/index.ts +10 -0
  237. package/src/api/share/index.ts +13 -0
  238. package/src/api/storage/background-fetch.ts +7 -0
  239. package/src/api/storage/index.ts +181 -0
  240. package/src/api/swan/index.ts +31 -0
  241. package/src/{taro/index.js → api/taro.ts} +89 -104
  242. package/src/api/{createAnimation/index.js → ui/animation/index.ts} +52 -41
  243. package/src/api/ui/background.ts +5 -0
  244. package/src/api/ui/custom-component.ts +4 -0
  245. package/src/api/ui/fonts.ts +4 -0
  246. package/src/api/ui/index.ts +12 -0
  247. package/src/api/ui/interaction/actionSheet.ts +212 -0
  248. package/src/api/{interactive/index.js → ui/interaction/index.ts} +95 -77
  249. package/src/api/ui/interaction/modal.ts +237 -0
  250. package/src/api/{interactive/toast.js → ui/interaction/toast.ts} +35 -33
  251. package/src/api/ui/menu.ts +4 -0
  252. package/src/api/ui/navigation-bar/index.ts +52 -0
  253. package/src/api/ui/pull-down-refresh.ts +27 -0
  254. package/src/api/ui/scroll/index.ts +85 -0
  255. package/src/api/ui/sticky.ts +4 -0
  256. package/src/api/ui/tab-bar.ts +326 -0
  257. package/src/api/ui/window.ts +37 -0
  258. package/src/api/utils/handler.ts +105 -0
  259. package/src/api/utils/{index.js → index.ts} +36 -115
  260. package/src/api/worker/index.ts +4 -0
  261. package/src/api/wxml/index.ts +9 -0
  262. package/src/api/wxml/nodesRef.ts +56 -0
  263. package/src/api/wxml/selectorQuery.ts +219 -0
  264. package/src/index.ts +6 -0
  265. package/src/types/api.d.ts +4 -0
  266. package/src/types/define.d.ts +2 -0
  267. package/{types → src/types}/index.d.ts +0 -0
  268. package/{types → src/types}/type.ts +1 -1
  269. package/src/api/accelerometer/index.js +0 -105
  270. package/src/api/audio/index.js +0 -137
  271. package/src/api/canvas/canvasGetImageData.js +0 -44
  272. package/src/api/canvas/canvasPutImageData.js +0 -45
  273. package/src/api/canvas/canvasToTempFilePath.js +0 -49
  274. package/src/api/canvas/createCanvasContext.js +0 -340
  275. package/src/api/canvas/index.js +0 -4
  276. package/src/api/clipboard/index.js +0 -113
  277. package/src/api/compass/index.js +0 -99
  278. package/src/api/createSelectorQuery/index.js +0 -193
  279. package/src/api/deviceMotion/index.js +0 -105
  280. package/src/api/fileTransfer/index.js +0 -2
  281. package/src/api/image/chooseImage.js +0 -87
  282. package/src/api/image/getImageInfo.js +0 -74
  283. package/src/api/image/index.js +0 -7
  284. package/src/api/image/previewImage.js +0 -94
  285. package/src/api/index.js +0 -29
  286. package/src/api/interactive/actionSheet.js +0 -214
  287. package/src/api/interactive/modal.js +0 -256
  288. package/src/api/location/chooseLocation.js +0 -143
  289. package/src/api/location/index.js +0 -5
  290. package/src/api/navigationBar/index.js +0 -57
  291. package/src/api/open/index.js +0 -5
  292. package/src/api/others/index.js +0 -43
  293. package/src/api/pullDownRefresh/index.js +0 -51
  294. package/src/api/scroll/index.js +0 -99
  295. package/src/api/storage/index.js +0 -211
  296. package/src/api/system/index.js +0 -9
  297. package/src/api/system/info.js +0 -36
  298. package/src/api/system/network.js +0 -68
  299. package/src/api/tabBar/index.js +0 -402
  300. package/src/api/unsupportedApi/index.js +0 -278
  301. package/src/api/vibrate/index.js +0 -49
  302. package/src/api/video/index.js +0 -87
  303. package/src/api/webSocket/index.js +0 -103
  304. package/src/api/window/index.js +0 -38
  305. package/src/index.cjs.js +0 -11
  306. package/src/index.js +0 -6
@@ -1,214 +0,0 @@
1
- import { inlineStyle, setTransform } from '../utils'
2
-
3
- const noop = function () {}
4
- export default class ActionSheet {
5
- options = {
6
- itemList: [],
7
- itemColor: '#000000',
8
- success: noop,
9
- fail: noop,
10
- complete: noop
11
- }
12
-
13
- style = {
14
- maskStyle: {
15
- position: 'fixed',
16
- 'z-index': '1000',
17
- top: '0',
18
- right: '0',
19
- left: '0',
20
- bottom: '0',
21
- background: 'rgba(0,0,0,0.6)'
22
- },
23
- actionSheetStyle: {
24
- 'z-index': '4999',
25
- position: 'fixed',
26
- left: '0',
27
- bottom: '0',
28
- '-webkit-transform': 'translate(0, 100%)',
29
- transform: 'translate(0, 100%)',
30
- width: '100%',
31
- 'line-height': '1.6',
32
- background: '#EFEFF4',
33
- '-webkit-transition': '-webkit-transform .3s',
34
- transition: 'transform .3s'
35
- },
36
- menuStyle: {
37
- 'background-color': '#FCFCFD'
38
- },
39
- cellStyle: {
40
- position: 'relative',
41
- padding: '10px 0',
42
- 'text-align': 'center',
43
- 'font-size': '18px'
44
- },
45
- cancelStyle: {
46
- 'margin-top': '6px',
47
- padding: '10px 0',
48
- 'text-align': 'center',
49
- 'font-size': '18px',
50
- color: '#000000',
51
- 'background-color': '#FCFCFD'
52
- }
53
- }
54
-
55
- lastConfig = {}
56
-
57
- create (options = {}) {
58
- // style
59
- const { maskStyle, actionSheetStyle, menuStyle, cellStyle, cancelStyle } = this.style
60
-
61
- // configuration
62
- const config = {
63
- ...this.options,
64
- ...options
65
- }
66
-
67
- this.lastConfig = config
68
-
69
- // wrapper
70
- this.el = document.createElement('div')
71
- this.el.className = 'taro__actionSheet'
72
- this.el.style.opacity = '0'
73
- this.el.style.transition = 'opacity 0.2s linear'
74
-
75
- // mask
76
- const mask = document.createElement('div')
77
- mask.setAttribute('style', inlineStyle(maskStyle))
78
-
79
- // actionSheet
80
- this.actionSheet = document.createElement('div')
81
- this.actionSheet.setAttribute('style', inlineStyle(actionSheetStyle))
82
-
83
- // menu
84
- this.menu = document.createElement('div')
85
- this.menu.setAttribute('style', inlineStyle({
86
- ...menuStyle,
87
- color: config.itemColor
88
- }))
89
-
90
- // cells
91
- this.cells = config.itemList.map((item, index) => {
92
- const cell = document.createElement('div')
93
- cell.className = 'taro-actionsheet__cell'
94
- cell.setAttribute('style', inlineStyle(cellStyle))
95
- cell.textContent = item
96
- cell.dataset.tapIndex = index
97
- cell.onclick = e => this.onCellClick(e)
98
- return cell
99
- })
100
-
101
- // cancel
102
- this.cancel = document.createElement('div')
103
- this.cancel.setAttribute('style', inlineStyle(cancelStyle))
104
- this.cancel.textContent = '取消'
105
-
106
- // result
107
- this.cells.forEach(item => this.menu.appendChild(item))
108
- this.actionSheet.appendChild(this.menu)
109
- this.actionSheet.appendChild(this.cancel)
110
- this.el.appendChild(mask)
111
- this.el.appendChild(this.actionSheet)
112
-
113
- // callbacks
114
- const cb = () => {
115
- this.hide()
116
- const res = { errMsg: 'showActionSheet:fail cancel' }
117
- config.fail(res)
118
- config.complete(res)
119
- this.rejectHandler(res)
120
- }
121
- mask.onclick = cb
122
- this.cancel.onclick = cb
123
-
124
- // show immediately
125
- document.body.appendChild(this.el)
126
- setTimeout(() => {
127
- this.el.style.opacity = '1'
128
- setTransform(this.actionSheet, 'translate(0, 0)')
129
- }, 0)
130
-
131
- return new Promise((resolve, reject) => {
132
- this.resolveHandler = resolve
133
- this.rejectHandler = reject
134
- })
135
- }
136
-
137
- show (options = {}) {
138
- const config = {
139
- ...this.options,
140
- ...options
141
- }
142
-
143
- this.lastConfig = config
144
-
145
- if (this.hideOpacityTimer) clearTimeout(this.hideOpacityTimer)
146
- if (this.hideDisplayTimer) clearTimeout(this.hideDisplayTimer)
147
-
148
- // itemColor
149
- if (config.itemColor) this.menu.style.color = config.itemColor
150
-
151
- // cells
152
- const { cellStyle } = this.style
153
-
154
- config.itemList.forEach((item, index) => {
155
- let cell
156
- if (this.cells[index]) {
157
- // assign new content
158
- cell = this.cells[index]
159
- } else {
160
- // create new cell
161
- cell = document.createElement('div')
162
- cell.className = 'taro-actionsheet__cell'
163
- cell.setAttribute('style', inlineStyle(cellStyle))
164
- cell.dataset.tapIndex = index
165
- this.cells.push(cell)
166
- this.menu.appendChild(cell)
167
- }
168
- cell.textContent = item
169
- cell.onclick = e => this.onCellClick(e)
170
- })
171
- const cellsLen = this.cells.length
172
- const itemListLen = config.itemList.length
173
- if (cellsLen > itemListLen) {
174
- for (let i = itemListLen; i < cellsLen; i++) {
175
- this.menu.removeChild(this.cells[i])
176
- }
177
- this.cells.splice(itemListLen)
178
- }
179
-
180
- // show
181
- this.el.style.display = 'block'
182
- setTimeout(() => {
183
- this.el.style.opacity = '1'
184
- setTransform(this.actionSheet, 'translate(0, 0)')
185
- }, 0)
186
-
187
- return new Promise((resolve, reject) => {
188
- this.resolveHandler = resolve
189
- this.rejectHandler = reject
190
- })
191
- }
192
-
193
- onCellClick (e) {
194
- this.hide()
195
- const res = {
196
- errMsg: 'showActionSheet:ok',
197
- tapIndex: +e.currentTarget.dataset.tapIndex
198
- }
199
- this.lastConfig.success && this.lastConfig.success(res)
200
- this.lastConfig.complete && this.lastConfig.complete(res)
201
- this.resolveHandler(res)
202
- }
203
-
204
- hide () {
205
- if (this.hideOpacityTimer) clearTimeout(this.hideOpacityTimer)
206
- if (this.hideDisplayTimer) clearTimeout(this.hideDisplayTimer)
207
-
208
- this.hideOpacityTimer = setTimeout(() => {
209
- this.el.style.opacity = '0'
210
- setTransform(this.actionSheet, 'translate(0, 100%)')
211
- this.hideDisplayTimer = setTimeout(() => { this.el.style.display = 'none' }, 200)
212
- }, 0)
213
- }
214
- }
@@ -1,256 +0,0 @@
1
- import { inlineStyle } from '../utils'
2
-
3
- const noop = function () {}
4
-
5
- export default class Modal {
6
- options = {
7
- title: '',
8
- content: '',
9
- showCancel: true,
10
- cancelText: '取消',
11
- cancelColor: '#000000',
12
- confirmText: '确定',
13
- confirmColor: '#3CC51F',
14
- success: noop,
15
- fail: noop,
16
- complete: noop
17
- }
18
-
19
- style = {
20
- maskStyle: {
21
- position: 'fixed',
22
- 'z-index': '1000',
23
- top: '0',
24
- right: '0',
25
- left: '0',
26
- bottom: '0',
27
- background: 'rgba(0,0,0,0.6)'
28
- },
29
- modalStyle: {
30
- 'z-index': '4999',
31
- position: 'fixed',
32
- top: '50%',
33
- left: '50%',
34
- transform: 'translate(-50%, -50%)',
35
- width: '80%',
36
- 'max-width': '300px',
37
- 'border-radius': '3px',
38
- 'text-align': 'center',
39
- 'line-height': '1.6',
40
- overflow: 'hidden',
41
- background: '#FFFFFF'
42
- },
43
- titleStyle: {
44
- padding: '20px 24px 9px',
45
- 'font-size': '18px'
46
- },
47
- textStyle: {
48
- padding: '0 24px 12px',
49
- 'min-height': '40px',
50
- 'font-size': '15px',
51
- 'line-height': '1.3',
52
- color: '#808080'
53
- },
54
- footStyle: {
55
- position: 'relative',
56
- 'line-height': '48px',
57
- 'font-size': '18px',
58
- display: 'flex'
59
- },
60
- btnStyle: {
61
- position: 'relative',
62
- '-webkit-box-flex': '1',
63
- '-webkit-flex': '1',
64
- flex: '1'
65
- }
66
- }
67
-
68
- create (options = {}) {
69
- // style
70
- const { maskStyle, modalStyle, titleStyle, textStyle, footStyle, btnStyle } = this.style
71
-
72
- // configuration
73
- const config = {
74
- ...this.options,
75
- ...options
76
- }
77
-
78
- // wrapper
79
- this.el = document.createElement('div')
80
- this.el.className = 'taro__modal'
81
- this.el.style.opacity = '0'
82
- this.el.style.transition = 'opacity 0.2s linear'
83
-
84
- // mask
85
- const mask = document.createElement('div')
86
- mask.className = 'taro-modal__mask'
87
- mask.setAttribute('style', inlineStyle(maskStyle))
88
-
89
- // modal
90
- const modal = document.createElement('div')
91
- modal.className = 'taro-modal__content'
92
- modal.setAttribute('style', inlineStyle(modalStyle))
93
-
94
- // title
95
- const titleCSS = config.title ? titleStyle : {
96
- ...titleStyle,
97
- display: 'none'
98
- }
99
- this.title = document.createElement('div')
100
-
101
- this.title.className = 'taro-modal__title'
102
- this.title.setAttribute('style', inlineStyle(titleCSS))
103
- this.title.textContent = config.title
104
-
105
- // text
106
- const textCSS = config.title ? textStyle : {
107
- ...textStyle,
108
- padding: '40px 20px 26px',
109
- color: '#353535'
110
- }
111
- this.text = document.createElement('div')
112
- this.text.className = 'taro-modal__text'
113
- this.text.setAttribute('style', inlineStyle(textCSS))
114
- this.text.textContent = config.content
115
-
116
- // foot
117
- const foot = document.createElement('div')
118
- foot.className = 'taro-modal__foot'
119
- foot.setAttribute('style', inlineStyle(footStyle))
120
-
121
- // cancel button
122
- const cancelCSS = {
123
- ...btnStyle,
124
- color: config.cancelColor,
125
- display: config.showCancel ? 'block' : 'none'
126
- }
127
- this.cancel = document.createElement('div')
128
- this.cancel.className = 'taro-model__btn taro-model__cancel'
129
- this.cancel.setAttribute('style', inlineStyle(cancelCSS))
130
- this.cancel.textContent = config.cancelText
131
- this.cancel.onclick = () => {
132
- this.hide()
133
- const res = this.getRes('cancel')
134
- config.success(res)
135
- config.complete(res)
136
- this.resolveHandler(res)
137
- }
138
-
139
- // confirm button
140
- this.confirm = document.createElement('div')
141
- this.confirm.className = 'taro-model__btn taro-model__confirm'
142
- this.confirm.setAttribute('style', inlineStyle(btnStyle))
143
- this.confirm.style.color = config.confirmColor
144
- this.confirm.textContent = config.confirmText
145
- this.confirm.onclick = () => {
146
- this.hide()
147
- const res = this.getRes('confirm')
148
- config.success(res)
149
- config.complete(res)
150
- this.resolveHandler(res)
151
- }
152
-
153
- // result
154
- foot.appendChild(this.cancel)
155
- foot.appendChild(this.confirm)
156
- modal.appendChild(this.title)
157
- modal.appendChild(this.text)
158
- modal.appendChild(foot)
159
- this.el.appendChild(mask)
160
- this.el.appendChild(modal)
161
-
162
- // show immediately
163
- document.body.appendChild(this.el)
164
- setTimeout(() => { this.el.style.opacity = '1' }, 0)
165
-
166
- return new Promise(resolve => (this.resolveHandler = resolve))
167
- }
168
-
169
- getRes (type) {
170
- const res = {
171
- errMsg: 'showModal:ok',
172
- cancel: false,
173
- confirm: false
174
- }
175
- res[type] = true
176
- return res
177
- }
178
-
179
- show (options = {}) {
180
- const config = {
181
- ...this.options,
182
- ...options
183
- }
184
-
185
- if (this.hideOpacityTimer) clearTimeout(this.hideOpacityTimer)
186
- if (this.hideDisplayTimer) clearTimeout(this.hideDisplayTimer)
187
-
188
- // title & text
189
- const { textStyle } = this.style
190
-
191
- if (config.title) {
192
- this.title.textContent = config.title
193
- // none => block
194
- this.title.style.display = 'block'
195
- this.text.setAttribute('style', inlineStyle(textStyle))
196
- } else {
197
- // block => none
198
- this.title.style.display = 'none'
199
- const textCSS = {
200
- ...textStyle,
201
- padding: '40px 20px 26px',
202
- color: '#353535'
203
- }
204
- this.text.setAttribute('style', inlineStyle(textCSS))
205
- }
206
-
207
- this.text.textContent = config.content || ''
208
-
209
- // showCancel
210
- this.cancel.style.display = config.showCancel ? 'block' : 'none'
211
-
212
- // cancelText
213
- this.cancel.textContent = config.cancelText || ''
214
-
215
- // cancelColor
216
- this.cancel.style.color = config.cancelColor || undefined
217
-
218
- // confirmText
219
- this.confirm.textContent = config.confirmText || ''
220
-
221
- // confirmColor
222
- this.confirm.style.color = config.confirmColor || undefined
223
-
224
- // cbs
225
- this.cancel.onclick = () => {
226
- this.hide()
227
- const res = this.getRes('cancel')
228
- config.success(res)
229
- config.complete(res)
230
- this.resolveHandler(res)
231
- }
232
- this.confirm.onclick = () => {
233
- this.hide()
234
- const res = this.getRes('confirm')
235
- config.success(res)
236
- config.complete(res)
237
- this.resolveHandler(res)
238
- }
239
-
240
- // show
241
- this.el.style.display = 'block'
242
- setTimeout(() => { this.el.style.opacity = '1' }, 0)
243
-
244
- return new Promise(resolve => (this.resolveHandler = resolve))
245
- }
246
-
247
- hide () {
248
- if (this.hideOpacityTimer) clearTimeout(this.hideOpacityTimer)
249
- if (this.hideDisplayTimer) clearTimeout(this.hideDisplayTimer)
250
-
251
- this.hideOpacityTimer = setTimeout(() => {
252
- this.el.style.opacity = '0'
253
- this.hideDisplayTimer = setTimeout(() => { this.el.style.display = 'none' }, 200)
254
- }, 0)
255
- }
256
- }
@@ -1,143 +0,0 @@
1
- import './style.css'
2
-
3
- function createLocaltionChooser (handler) {
4
- const html = `
5
- <div class='taro_chooselocation'>
6
- <div class='taro_chooselocation_bar'>
7
- <div class='taro_chooselocation_back'></div>
8
- <p class='taro_chooselocation_title'>位置</p>
9
- <button class='taro_chooselocation_submit'>完成</button>
10
- </div>
11
- <iframe class='taro_chooselocation_frame' frameborder='0' src='https://apis.map.qq.com/tools/locpicker?search=1&type=1&key=${LOCATION_APIKEY}&referer=myapp'></iframe>
12
- </div>
13
- `
14
- const container = document.createElement('div')
15
- container.innerHTML = html
16
- const main = container.querySelector('.taro_chooselocation')
17
-
18
- function show () {
19
- setTimeout(() => {
20
- main.style.top = '0'
21
- })
22
- }
23
-
24
- function hide () {
25
- main.style.top = '100%'
26
- }
27
-
28
- function back () {
29
- handler({ errMsg: 'chooseLOcation:fail cancel' })
30
- hide()
31
- }
32
-
33
- function submit () {
34
- handler()
35
- hide()
36
- }
37
-
38
- function remove () {
39
- container.remove()
40
- window.removeEventListener('popstate', back)
41
- }
42
-
43
- container.querySelector('.taro_chooselocation_back').addEventListener('click', back)
44
- container.querySelector('.taro_chooselocation_submit').addEventListener('click', submit)
45
-
46
- window.addEventListener('popstate', back)
47
-
48
- return {
49
- show,
50
- remove,
51
- container
52
- }
53
- }
54
-
55
- /**
56
- * @typedef {Object} OriginalLocationObject
57
- * @property {string} module
58
- * @property {{ lat: number, lng: number }} latlng
59
- * @property {string} poiaddress
60
- * @property {string} poiname
61
- * @property {string} cityname
62
- */
63
-
64
- /**
65
- * @typedef {Object} LocationObject
66
- * @property {string} errMsg 信息
67
- * @property {string} name 位置名称
68
- * @property {string} address 详细地址
69
- * @property {string} latitude 纬度,浮点数,范围为-90~90,负数表示南纬。使用 gcj02 国测局坐标系
70
- * @property {string} longitude 经度,浮点数,范围为-180~180,负数表示西经。使用 gcj02 国测局坐标系
71
- */
72
-
73
- /**
74
- * 打开地图选择位置。
75
- * @param {Object} object 参数
76
- * @param {(obj: LocationObject) => void} [object.success] 接口调用成功的回调函数
77
- * @param {Function} [object.fail] 接口调用失败的回调函数
78
- * @param {Function} [object.complete] 接口调用结束的回调函数(调用成功、失败都会执行)
79
- */
80
- const chooseLocation = ({ success, fail, complete } = {}) => {
81
- return new Promise((resolve, reject) => {
82
- const choosenLocation = {}
83
- const onSuccess = res => {
84
- success && success(res)
85
- complete && complete(res)
86
- resolve(res)
87
- }
88
- const onError = res => {
89
- fail && fail(res)
90
- complete && complete(res)
91
- reject(res)
92
- }
93
-
94
- // eslint-disable-next-line
95
- if (!LOCATION_APIKEY) {
96
- const errMsg = 'chooseLocation:fail LOCATION_APIKEY needed'
97
- console.warn('chooseLocation api 依赖腾讯地图定位api,需要在defineConstants中配置LOCATION_APIKEY')
98
- return onError({ errMsg })
99
- }
100
-
101
- const onMessage = event => {
102
- // 接收位置信息,用户选择确认位置点后选点组件会触发该事件,回传用户的位置信息
103
- /** @type {OriginalLocationObject} */
104
- const loc = event.data
105
-
106
- // 防止其他应用也会向该页面post信息,需判断module是否为'locationPicker'
107
- if (!loc || loc.module !== 'locationPicker') return
108
-
109
- choosenLocation.name = loc.poiname
110
- choosenLocation.address = loc.poiaddress
111
- choosenLocation.latitude = loc.latlng.lat
112
- choosenLocation.longitude = loc.latlng.lng
113
- }
114
-
115
- const chooser = createLocaltionChooser(res => {
116
- if (res) {
117
- onError(res)
118
- } else {
119
- if (choosenLocation.latitude && choosenLocation.longitude) {
120
- onSuccess({
121
- errMsg: 'chooseLocation:ok',
122
- ...choosenLocation
123
- })
124
- } else {
125
- onError({
126
- errMsg: 'chooseLocation:fail'
127
- })
128
- }
129
- }
130
- window.removeEventListener('message', onMessage, false)
131
- setTimeout(() => {
132
- chooser.remove()
133
- }, 300)
134
- })
135
-
136
- document.body.appendChild(chooser.container)
137
-
138
- window.addEventListener('message', onMessage, false)
139
- chooser.show()
140
- })
141
- }
142
-
143
- export default chooseLocation
@@ -1,5 +0,0 @@
1
- import { processOpenapi } from '../utils/index'
2
-
3
- export { default as chooseLocation } from './chooseLocation'
4
- export const getLocation = processOpenapi('getLocation')
5
- export const openLocation = processOpenapi('openLocation', { scale: 18 })
@@ -1,57 +0,0 @@
1
- import { shouldBeObject, getParameterError } from '../utils'
2
-
3
- export function setNavigationBarTitle (options) {
4
- // options must be an Object
5
- const isObject = shouldBeObject(options)
6
- if (!isObject.res) {
7
- const res = { errMsg: `setNavigationBarTitle${isObject.msg}` }
8
- console.error(res.errMsg)
9
- return Promise.reject(res)
10
- }
11
-
12
- const { title, success, fail, complete } = options
13
- const res = { errMsg: 'setNavigationBarTitle:ok' }
14
-
15
- if (!title || typeof title !== 'string') {
16
- res.errMsg = getParameterError({
17
- name: 'setNavigationBarTitle',
18
- para: 'title',
19
- correct: 'String',
20
- wrong: title
21
- })
22
- console.error(res.errMsg)
23
- typeof fail === 'function' && fail(res)
24
- typeof complete === 'function' && complete(res)
25
- return Promise.reject(res)
26
- }
27
-
28
- if (document.title !== title) {
29
- document.title = title
30
- }
31
-
32
- typeof success === 'function' && success(res)
33
- typeof complete === 'function' && complete(res)
34
-
35
- return Promise.resolve(res)
36
- }
37
-
38
- /**
39
- * @typedef {Object} NavigationBarColorParam
40
- * @property {string} frontColor 前景颜色值,包括按钮、标题、状态栏的颜色,仅支持 #ffffff 和 #000000
41
- * @property {string} backgroundColor 背景颜色值,有效值为十六进制颜色
42
- * @property {{duration: number, timingFunc: string}} animation 动画效果
43
- * @property {function} [success] 接口调用成功的回调函数
44
- * @property {function} [fail] 接口调用失败的回调函数
45
- * @property {function} [complete] 接口调用结束的回调函数(调用成功、失败都会执行)
46
- */
47
-
48
- /**
49
- * 设置页面导航条颜色
50
- * @param {NavigationBarColorParam} options
51
- */
52
- export function setNavigationBarColor (options) {
53
- const meta = document.createElement('meta')
54
- meta.setAttribute('name', 'theme-color')
55
- meta.setAttribute('content', options.backgroundColor)
56
- document.head.appendChild(meta)
57
- }
@@ -1,5 +0,0 @@
1
- import { processOpenapi } from '../utils'
2
-
3
- export const requestPayment = processOpenapi('chooseWXPay', undefined, undefined, options => {
4
- return Object.assign(options, { timestamp: Number.parseInt(options.timeStamp, 10) })
5
- })