@mpxjs/api-proxy 2.8.23-alpha → 2.9.0-beta.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 (39) hide show
  1. package/package.json +2 -2
  2. package/src/common/js/utils.js +6 -2
  3. package/src/index.web.js +0 -3
  4. package/src/web/api/action-sheet/index.js +5 -0
  5. package/src/web/api/animation/animation.js +8 -2
  6. package/src/web/api/app/index.js +10 -3
  7. package/src/web/api/audio/index.js +5 -0
  8. package/src/web/api/create-intersection-observer/index.js +5 -0
  9. package/src/web/api/create-selector-query/index.js +5 -0
  10. package/src/web/api/device/network/getNetworkType.js +6 -2
  11. package/src/web/api/device/network/onNetworkStatusChange.js +9 -1
  12. package/src/web/api/modal/index.js +5 -0
  13. package/src/web/api/page-scroll-to/index.js +5 -1
  14. package/src/web/api/pull-down/index.js +9 -1
  15. package/src/web/api/route/index.js +21 -2
  16. package/src/web/api/set-navigation-bar/index.js +9 -1
  17. package/src/web/api/socket/index.js +5 -1
  18. package/src/web/api/storage/index.js +41 -1
  19. package/src/web/api/system/index.js +9 -1
  20. package/src/web/api/toast/index.js +9 -0
  21. package/src/web/api/video/index.js +6 -0
  22. package/src/common/stylus/Modal.tenon.styl +0 -42
  23. package/src/common/stylus/Toast.tenon.styl +0 -56
  24. package/src/index.tenon.js +0 -27
  25. package/src/tenon/api/animation/animation.js +0 -225
  26. package/src/tenon/api/animation/index.js +0 -89
  27. package/src/tenon/api/event-channel/index.js +0 -61
  28. package/src/tenon/api/index.js +0 -29
  29. package/src/tenon/api/modal/Modal.js +0 -154
  30. package/src/tenon/api/modal/index.js +0 -12
  31. package/src/tenon/api/next-tick/index.js +0 -11
  32. package/src/tenon/api/request/index.js +0 -71
  33. package/src/tenon/api/route/index.js +0 -102
  34. package/src/tenon/api/socket/SocketTask.js +0 -105
  35. package/src/tenon/api/socket/index.js +0 -48
  36. package/src/tenon/api/storage/index.js +0 -143
  37. package/src/tenon/api/system/index.js +0 -52
  38. package/src/tenon/api/toast/Toast.js +0 -101
  39. package/src/tenon/api/toast/index.js +0 -36
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mpxjs/api-proxy",
3
- "version": "2.8.23-alpha",
3
+ "version": "2.9.0-beta.0",
4
4
  "description": "convert miniprogram API at each end",
5
5
  "module": "src/index.js",
6
6
  "types": "@types/index.d.ts",
@@ -39,5 +39,5 @@
39
39
  "dependencies": {
40
40
  "axios": "^0.21.1"
41
41
  },
42
- "gitHead": "3a6dff432fd46bab36a9866f92cffb6501e69909"
42
+ "gitHead": "67b611aeae99f916d46ca8d5d9ed784ddf53f05c"
43
43
  }
@@ -52,7 +52,7 @@ const handleSuccess = (opts, getOptions = noop, thisObj) => {
52
52
 
53
53
  function genFromMap () {
54
54
  const result = {}
55
- const platforms = ['wx', 'ali', 'swan', 'qq', 'tt', 'web', 'tenon', 'qa', 'jd', 'dd']
55
+ const platforms = ['wx', 'ali', 'swan', 'qq', 'tt', 'web', 'qa', 'jd', 'dd']
56
56
  platforms.forEach((platform) => {
57
57
  result[`__mpx_src_mode_${platform}__`] = platform
58
58
  })
@@ -100,6 +100,9 @@ function makeMap (arr) {
100
100
 
101
101
  const isBrowser = typeof window !== 'undefined'
102
102
 
103
+ function throwSSRWarning (info) {
104
+ console.error(`[Mpx runtime error]: Dangerous API! ${info}, It may cause some problems, please use this method with caution`)
105
+ }
103
106
  export {
104
107
  changeOpts,
105
108
  handleSuccess,
@@ -110,5 +113,6 @@ export {
110
113
  noop,
111
114
  makeMap,
112
115
  isBrowser,
113
- hasOwn
116
+ hasOwn,
117
+ throwSSRWarning
114
118
  }
package/src/index.web.js CHANGED
@@ -1,12 +1,9 @@
1
1
  import * as allApi from './web/api'
2
- import { EventChannel } from './web/api/event-channel'
3
2
  import { genFromMap } from './common/js'
4
3
 
5
4
  export default function install (target) {
6
5
  const fromMap = genFromMap()
7
6
 
8
- global.EventChannel = new EventChannel()
9
-
10
7
  Object.keys(allApi).forEach(api => {
11
8
  target[api] = function (...args) {
12
9
  if (args.length > 0) {
@@ -1,8 +1,13 @@
1
1
  import ActionSheet from './ActionSheet'
2
+ import { isBrowser, throwSSRWarning } from '../../../common/js'
2
3
 
3
4
  let actionSheet = null
4
5
 
5
6
  function showActionSheet (options = { itemList: [] }) {
7
+ if (!isBrowser) {
8
+ throwSSRWarning('showActionSheet API is running in non browser environments')
9
+ return
10
+ }
6
11
  if (!actionSheet) { actionSheet = new ActionSheet() }
7
12
  return actionSheet.show(options)
8
13
  }
@@ -1,3 +1,5 @@
1
+ import { isBrowser, throwSSRWarning } from '../../../common/js'
2
+
1
3
  class Animation {
2
4
  constructor (options) {
3
5
  this._actions = []
@@ -5,11 +7,15 @@ class Animation {
5
7
  this._options = options
6
8
  }
7
9
 
8
- _processSize (size) {
10
+ _processSize (size, type) {
9
11
  if (typeof size === 'number') {
10
12
  return `${size}px`
11
13
  } else {
12
14
  if (size.indexOf('rpx') !== -1) {
15
+ if (!isBrowser) {
16
+ throwSSRWarning(`Animation's ${type} API cannot use rpx in non browser environments`)
17
+ return
18
+ }
13
19
  // 计算rpx折算回px
14
20
  const rs = parseInt(size, 10)
15
21
  const width = window.screen.width
@@ -29,7 +35,7 @@ class Animation {
29
35
  case 'bottom':
30
36
  case 'width':
31
37
  case 'height':
32
- value = this._processSize(value)
38
+ value = this._processSize(value, type)
33
39
  this._propMaps[type] = {
34
40
  args: [type, value],
35
41
  type: 'style'
@@ -1,3 +1,4 @@
1
+ import { isBrowser } from '../../../common/js'
1
2
  global.__mpxAppCbs = global.__mpxAppCbs || {
2
3
  show: [],
3
4
  hide: [],
@@ -6,7 +7,9 @@ global.__mpxAppCbs = global.__mpxAppCbs || {
6
7
  }
7
8
 
8
9
  function onError (callback) {
9
- global.__mpxAppCbs.error.push(callback)
10
+ if (isBrowser) {
11
+ global.__mpxAppCbs.error.push(callback)
12
+ }
10
13
  }
11
14
 
12
15
  function offError (callback) {
@@ -16,7 +19,9 @@ function offError (callback) {
16
19
  }
17
20
 
18
21
  function onAppShow (callback) {
19
- global.__mpxAppCbs.show.push(callback)
22
+ if (isBrowser) {
23
+ global.__mpxAppCbs.show.push(callback)
24
+ }
20
25
  }
21
26
 
22
27
  function offAppShow (callback) {
@@ -26,7 +31,9 @@ function offAppShow (callback) {
26
31
  }
27
32
 
28
33
  function onAppHide (callback) {
29
- global.__mpxAppCbs.hide.push(callback)
34
+ if (isBrowser) {
35
+ global.__mpxAppCbs.hide.push(callback)
36
+ }
30
37
  }
31
38
 
32
39
  function offAppHide (callback) {
@@ -1,4 +1,9 @@
1
+ import { isBrowser, throwSSRWarning } from '../../../common/js'
1
2
  export const createInnerAudioContext = () => {
3
+ if (!isBrowser) {
4
+ throwSSRWarning('createInnerAudioContext API is running in non browser environments')
5
+ return
6
+ }
2
7
  // eslint-disable-next-line no-undef
3
8
  const audio = new Audio()
4
9
  const __audio = {}
@@ -1,6 +1,11 @@
1
1
  import WebIntersectionObserver from './IntersectionObserver'
2
+ import { isBrowser, throwSSRWarning } from '../../../common/js'
2
3
 
3
4
  function createIntersectionObserver (component, options) {
5
+ if (!isBrowser) {
6
+ throwSSRWarning('createIntersectionObserver API is running in non browser environments')
7
+ return
8
+ }
4
9
  return new WebIntersectionObserver(component, options)
5
10
  }
6
11
 
@@ -1,6 +1,11 @@
1
1
  import SelectQuery from './SelectQuery'
2
+ import { isBrowser, throwSSRWarning } from '../../../common/js'
2
3
 
3
4
  function createSelectorQuery () {
5
+ if (!isBrowser) {
6
+ throwSSRWarning('createSelectorQuery API is running in non browser environments')
7
+ return
8
+ }
4
9
  return new SelectQuery()
5
10
  }
6
11
 
@@ -1,11 +1,15 @@
1
- import { webHandleSuccess, webHandleFail } from '../../../../common/js'
1
+ import { webHandleSuccess, webHandleFail, isBrowser, throwSSRWarning } from '../../../../common/js'
2
2
 
3
3
  export function getNetworkType ({ success, fail = () => {}, complete = () => {} }) {
4
+ if (!isBrowser) {
5
+ throwSSRWarning('getNetworkType API is running in non browser environments')
6
+ return
7
+ }
4
8
  try {
5
9
  if (navigator.connection) {
6
10
  webHandleSuccess({ networkType: navigator.connection.effectiveType }, success, complete)
7
11
  } else {
8
- webHandleSuccess({ networkType: 'unknow' }, success, complete)
12
+ webHandleSuccess({ networkType: 'unknown' }, success, complete)
9
13
  }
10
14
  } catch (err) {
11
15
  webHandleFail(err, fail, complete)
@@ -1,4 +1,4 @@
1
- import { isBrowser } from '../../../../common/js/utils'
1
+ import { isBrowser, throwSSRWarning } from '../../../../common/js/utils'
2
2
  const fnMap = new Map()
3
3
 
4
4
  const oldObserveList = new Set()
@@ -13,6 +13,10 @@ if (isBrowser) {
13
13
  }
14
14
 
15
15
  export function onNetworkStatusChange (callbackFn) {
16
+ if (!isBrowser) {
17
+ throwSSRWarning('onNetworkStatusChange API is running in non browser environments')
18
+ return
19
+ }
16
20
  if (navigator.connection) {
17
21
  const proxyCallback = evt => {
18
22
  const isConnected = navigator.onLine
@@ -29,6 +33,10 @@ export function onNetworkStatusChange (callbackFn) {
29
33
  }
30
34
 
31
35
  export function offNetworkStatusChange (callbackFn) {
36
+ if (!isBrowser) {
37
+ throwSSRWarning('offNetworkStatusChange API is running in non browser environments')
38
+ return
39
+ }
32
40
  if (navigator.connection) {
33
41
  navigator.connection.removeEventListener('change', fnMap.get(callbackFn))
34
42
  } else {
@@ -1,8 +1,13 @@
1
1
  import Modal from './Modal'
2
+ import { isBrowser, throwSSRWarning } from '../../../common/js'
2
3
 
3
4
  let modal = null
4
5
 
5
6
  function showModal (options = {}) {
7
+ if (!isBrowser) {
8
+ throwSSRWarning('showModal API is running in non browser environments')
9
+ return
10
+ }
6
11
  if (!modal) { modal = new Modal() }
7
12
  return modal.show(options)
8
13
  }
@@ -1,7 +1,11 @@
1
- import { webHandleSuccess, webHandleFail } from '../../../common/js'
1
+ import { webHandleSuccess, webHandleFail, isBrowser, throwSSRWarning } from '../../../common/js'
2
2
  import { nextTick } from '../next-tick'
3
3
 
4
4
  export function pageScrollTo (options) {
5
+ if (!isBrowser) {
6
+ throwSSRWarning('pageScrollTo API is running in non browser environments')
7
+ return
8
+ }
5
9
  nextTick(() => {
6
10
  const ms = global.__ms
7
11
  const { success, fail, complete } = options
@@ -1,6 +1,10 @@
1
- import { webHandleSuccess, webHandleFail } from '../../../common/js'
1
+ import { webHandleSuccess, webHandleFail, throwSSRWarning, isBrowser } from '../../../common/js'
2
2
 
3
3
  function stopPullDownRefresh (options = {}) {
4
+ if (!isBrowser) {
5
+ throwSSRWarning('stopPullDownRefresh API is running in non browser environments')
6
+ return
7
+ }
4
8
  const router = global.__mpxRouter
5
9
  if (router) {
6
10
  let err
@@ -31,6 +35,10 @@ function stopPullDownRefresh (options = {}) {
31
35
  }
32
36
 
33
37
  function startPullDownRefresh (options = {}) {
38
+ if (!isBrowser) {
39
+ throwSSRWarning('startPullDownRefresh API is running in non browser environments')
40
+ return
41
+ }
34
42
  const router = global.__mpxRouter
35
43
  if (router) {
36
44
  let err
@@ -1,7 +1,10 @@
1
- import { webHandleSuccess, webHandleFail, isTabBarPage } from '../../../common/js'
1
+ import { webHandleSuccess, webHandleFail, isTabBarPage, throwSSRWarning, isBrowser } from '../../../common/js'
2
2
  import { EventChannel } from '../event-channel'
3
-
4
3
  function redirectTo (options = {}) {
4
+ if (!isBrowser) {
5
+ throwSSRWarning('redirectTo API is running in non browser environments')
6
+ return
7
+ }
5
8
  const router = global.__mpxRouter
6
9
  if (router) {
7
10
  if (isTabBarPage(options.url, router)) {
@@ -31,6 +34,10 @@ function redirectTo (options = {}) {
31
34
  }
32
35
 
33
36
  function navigateTo (options = {}) {
37
+ if (!isBrowser) {
38
+ throwSSRWarning('navigateTo API is running in non browser environments')
39
+ return
40
+ }
34
41
  const router = global.__mpxRouter
35
42
  if (router) {
36
43
  if (isTabBarPage(options.url, router)) {
@@ -67,6 +74,10 @@ function navigateTo (options = {}) {
67
74
  }
68
75
 
69
76
  function navigateBack (options = {}) {
77
+ if (!isBrowser) {
78
+ throwSSRWarning('navigateBack API is running in non browser environments')
79
+ return
80
+ }
70
81
  const router = global.__mpxRouter
71
82
  if (router) {
72
83
  const delta = options.delta || 1
@@ -84,6 +95,10 @@ function navigateBack (options = {}) {
84
95
  let reLaunchCount = 0
85
96
 
86
97
  function reLaunch (options = {}) {
98
+ if (!isBrowser) {
99
+ throwSSRWarning('reLaunch API is running in non browser environments')
100
+ return
101
+ }
87
102
  const router = global.__mpxRouter
88
103
  if (router) {
89
104
  if (reLaunchCount === 0 && router.currentRoute.query.reLaunchCount) reLaunchCount = router.currentRoute.query.reLaunchCount
@@ -127,6 +142,10 @@ function reLaunch (options = {}) {
127
142
  }
128
143
 
129
144
  function switchTab (options = {}) {
145
+ if (!isBrowser) {
146
+ throwSSRWarning('switchTab API is running in non browser environments')
147
+ return
148
+ }
130
149
  const router = global.__mpxRouter
131
150
  if (router) {
132
151
  const toRoute = router.match(options.url, router.history.current)
@@ -1,6 +1,10 @@
1
- import { webHandleSuccess } from '../../../common/js'
1
+ import { isBrowser, throwSSRWarning, webHandleSuccess } from '../../../common/js'
2
2
 
3
3
  function setNavigationBarTitle (options = {}) {
4
+ if (!isBrowser) {
5
+ throwSSRWarning('setNavigationBarTitle API is running in non browser environments')
6
+ return
7
+ }
4
8
  const { title, success, complete } = options
5
9
 
6
10
  if (document.title !== title) {
@@ -11,6 +15,10 @@ function setNavigationBarTitle (options = {}) {
11
15
  }
12
16
 
13
17
  function setNavigationBarColor (options = {}) {
18
+ if (!isBrowser) {
19
+ throwSSRWarning('setNavigationBarColor API is running in non browser environments')
20
+ return
21
+ }
14
22
  const { backgroundColor, success, complete } = options
15
23
  const meta = document.createElement('meta')
16
24
  meta.setAttribute('name', 'theme-color')
@@ -1,7 +1,11 @@
1
- import { warn, webHandleSuccess, webHandleFail } from '../../../common/js'
1
+ import { warn, webHandleSuccess, webHandleFail, isBrowser, throwSSRWarning } from '../../../common/js'
2
2
  import SocketTask from './SocketTask'
3
3
 
4
4
  function connectSocket (options = { url: '' }) {
5
+ if (!isBrowser) {
6
+ throwSSRWarning('connectSocket API is running in non browser environments')
7
+ return
8
+ }
5
9
  const { url, protocols, success, fail, complete } = options
6
10
 
7
11
  try {
@@ -1,6 +1,10 @@
1
- import { webHandleSuccess, webHandleFail, hasOwn } from '../../../common/js'
1
+ import { webHandleSuccess, webHandleFail, hasOwn, isBrowser, throwSSRWarning } from '../../../common/js'
2
2
 
3
3
  function setStorage (options = {}) {
4
+ if (!isBrowser) {
5
+ throwSSRWarning('setStorage API is running in non browser environments')
6
+ return
7
+ }
4
8
  const { key, data, success, fail, complete } = options
5
9
 
6
10
  try {
@@ -17,6 +21,10 @@ function setStorage (options = {}) {
17
21
  }
18
22
 
19
23
  function setStorageSync (key = '', data) {
24
+ if (!isBrowser) {
25
+ throwSSRWarning('setStorageSync API is running in non browser environments')
26
+ return
27
+ }
20
28
  let obj = {}
21
29
 
22
30
  if (typeof data === 'symbol') {
@@ -28,6 +36,10 @@ function setStorageSync (key = '', data) {
28
36
  }
29
37
 
30
38
  function getStorage (options = {}) {
39
+ if (!isBrowser) {
40
+ throwSSRWarning('getStorage API is running in non browser environments')
41
+ return
42
+ }
31
43
  const { key, success, fail, complete } = options
32
44
  const { result, data } = getItem(key)
33
45
 
@@ -43,6 +55,10 @@ function getStorage (options = {}) {
43
55
  }
44
56
 
45
57
  function getStorageSync (key) {
58
+ if (!isBrowser) {
59
+ throwSSRWarning('getStorageSync API is running in non browser environments')
60
+ return
61
+ }
46
62
  const res = getItem(key)
47
63
  if (res.result) return res.data
48
64
 
@@ -64,6 +80,10 @@ function getItem (key) {
64
80
  }
65
81
 
66
82
  function getStorageInfo (options = {}) {
83
+ if (!isBrowser) {
84
+ throwSSRWarning('getStorageInfo API is running in non browser environments')
85
+ return
86
+ }
67
87
  const { success, fail, complete } = options
68
88
 
69
89
  try {
@@ -80,6 +100,10 @@ function getStorageInfo (options = {}) {
80
100
  }
81
101
 
82
102
  function getStorageInfoSync () {
103
+ if (!isBrowser) {
104
+ throwSSRWarning('getStorageInfoSync API is running in non browser environments')
105
+ return
106
+ }
83
107
  return {
84
108
  keys: Object.keys(window.localStorage),
85
109
  limitSize: null,
@@ -88,6 +112,10 @@ function getStorageInfoSync () {
88
112
  }
89
113
 
90
114
  function removeStorage (options = { key: '' }) {
115
+ if (!isBrowser) {
116
+ throwSSRWarning('removeStorage API is running in non browser environments')
117
+ return
118
+ }
91
119
  const { key, success, fail, complete } = options
92
120
 
93
121
  try {
@@ -104,10 +132,18 @@ function removeStorage (options = { key: '' }) {
104
132
  }
105
133
 
106
134
  function removeStorageSync (key) {
135
+ if (!isBrowser) {
136
+ throwSSRWarning('getStorageInfoSync API is running in non browser environments')
137
+ return
138
+ }
107
139
  window.localStorage.removeItem(key)
108
140
  }
109
141
 
110
142
  function clearStorage (options = {}) {
143
+ if (!isBrowser) {
144
+ throwSSRWarning('clearStorage API is running in non browser environments')
145
+ return
146
+ }
111
147
  const { success, fail, complete } = options
112
148
 
113
149
  try {
@@ -124,6 +160,10 @@ function clearStorage (options = {}) {
124
160
  }
125
161
 
126
162
  function clearStorageSync () {
163
+ if (!isBrowser) {
164
+ throwSSRWarning('clearStorageSync API is running in non browser environments')
165
+ return
166
+ }
127
167
  window.localStorage.clear()
128
168
  }
129
169
 
@@ -1,6 +1,10 @@
1
- import { webHandleSuccess } from '../../../common/js'
1
+ import { isBrowser, throwSSRWarning, webHandleSuccess } from '../../../common/js'
2
2
 
3
3
  function getSystemInfoSync () {
4
+ if (!isBrowser) {
5
+ throwSSRWarning('getSystemInfoSync API is running in non browser environments')
6
+ return
7
+ }
4
8
  const ua = navigator.userAgent.split('(')[1].split(')')[0]
5
9
  const phones = new Map([
6
10
  ['iPhone', /iPhone|iPad|iPod|iOS/i],
@@ -66,6 +70,10 @@ function getSystemInfoSync () {
66
70
  }
67
71
 
68
72
  function getSystemInfo (options = {}) {
73
+ if (!isBrowser) {
74
+ throwSSRWarning('getSystemInfo API is running in non browser environments')
75
+ return
76
+ }
69
77
  const info = getSystemInfoSync()
70
78
  const res = Object.assign({ errMsg: 'getSystemInfo:ok' }, info)
71
79
  webHandleSuccess(res, options.success, options.complete)
@@ -1,8 +1,13 @@
1
1
  import Toast from './Toast'
2
+ import { isBrowser, throwSSRWarning } from '../../../common/js'
2
3
 
3
4
  let toast = null
4
5
 
5
6
  function showToast (options = { title: '' }) {
7
+ if (!isBrowser) {
8
+ throwSSRWarning('showToast API is running in non browser environments')
9
+ return
10
+ }
6
11
  if (!toast) { toast = new Toast() }
7
12
  return toast.show(options, 'toast')
8
13
  }
@@ -13,6 +18,10 @@ function hideToast (options = {}) {
13
18
  }
14
19
 
15
20
  function showLoading (options = { title: '' }) {
21
+ if (!isBrowser) {
22
+ throwSSRWarning('showLoading API is running in non browser environments')
23
+ return
24
+ }
16
25
  if (!toast) { toast = new Toast() }
17
26
  return toast.show(Object.assign({
18
27
  icon: 'loading',
@@ -1,5 +1,11 @@
1
+ import { isBrowser, throwSSRWarning } from '../../../common/js'
2
+
1
3
  const allowPlaybackRate = [0.5, 0.8, 1.0, 1.25, 1.5, 2.0]
2
4
  export const createVideoContext = (id, context) => {
5
+ if (!isBrowser) {
6
+ throwSSRWarning('createVideoContext API is running in non browser environments')
7
+ return
8
+ }
3
9
  if (!id) {
4
10
  throw new Error('id为必传参数')
5
11
  }
@@ -1,42 +0,0 @@
1
- .__mpx_modal_box__
2
- width 80%
3
- max-width 600hm
4
- background #FFFFFF
5
- overflow hidden
6
- text-align center
7
- padding-top 30hm
8
- border-radius 15px
9
- .__mpx_modal_title_view__
10
- padding-left 20hm
11
- padding-right 20hm
12
- .__mpx_modal_title__
13
- font-size 26hm
14
- text-align center
15
- color #000000
16
- .__mpx_modal_content_view__
17
- padding-top 10hm
18
- padding-left 20hm
19
- padding-right 20hm
20
- .__mpx_modal_content__
21
- font-size 24hm
22
- color #808080
23
- text-line-clamp 3
24
- text-align center
25
- line-spacing-multi 1.2
26
- .__mpx_modal_btns__
27
- display flex
28
- height: 80hm
29
- margin-top 25hm
30
- border-top 1px solid rgba(0,0,0,0.2)
31
- .__mpx_modal_cancel__
32
- flex 1
33
- font-size 26hm
34
- text-align center
35
- font-weight bold
36
- .__mpx_modal_confirm__
37
- flex 1
38
- font-size 26hm
39
- text-align center
40
- font-weight bold
41
- .__mpx_modal_hide__
42
- display none
@@ -1,56 +0,0 @@
1
-
2
- .__mpx_toast__
3
- .__mpx_mask__
4
- z-index 1000
5
- top 0
6
- right 0
7
- left 0
8
- bottom 0
9
- display none
10
- &.show
11
- display block
12
- .__mpx_toast_box__
13
- // position: absolute
14
- // top 50%
15
- // left 50%
16
- z-index 2000
17
- box-sizing border-box
18
- display flex
19
- flex-direction column
20
- justify-content center
21
- width 200hm
22
- overflow hidden
23
- word-break normal
24
- padding 30hm 12hm
25
- border-radius 10hm
26
- background rgba(20, 20, 20, 0.7)
27
- .__mpx_toast_icon__
28
- width 80hm
29
- height 80hm
30
- background-size 100%
31
- background-color rgba(0,0,0,0)
32
- background-repeat no-repeat
33
- background-position-y center
34
- margin 12hm auto
35
-
36
- .__mpx_toast_title__
37
- text-align center
38
- line-height 1.6
39
- font-size 24hm
40
- color #fff
41
- margin 0
42
- overflow hidden
43
- max-width 100%
44
- text-overflow ellipsis
45
- display -webkit-box
46
- -webkit-line-clamp 2
47
- -webkit-box-orient vertical
48
-
49
- .__hide_icon
50
- display none
51
- height 0
52
- margin 0
53
- .__success_icon
54
- background-image url("data:image/png;base64,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")
55
- .__error_icon
56
- background-image url("data:image/png;base64,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")