gxd-uni-library-editx 1.0.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 (215) hide show
  1. package/.editorconfig +14 -0
  2. package/README.md +447 -0
  3. package/index.js +3 -0
  4. package/package.json +104 -0
  5. package/postcss.config.js +22 -0
  6. package/settings.js.tpl +68 -0
  7. package/src/XdAppClass.1.0.js +257 -0
  8. package/src/XdAppClass.js +150 -0
  9. package/src/components/XdAddress/XdAddress.vue +579 -0
  10. package/src/components/XdAddressSelect/XdAddressSelect.vue +243 -0
  11. package/src/components/XdBaiduMap/XdBaiduMap.vue +204 -0
  12. package/src/components/XdBaiduOverlay/XdBaiduOverlay.vue +345 -0
  13. package/src/components/XdBaiduSearch/XdBaiduSearch.vue +354 -0
  14. package/src/components/XdBar/XdBar.vue +339 -0
  15. package/src/components/XdButton/XdButton.vue +288 -0
  16. package/src/components/XdCartList/XdCartList.vue +791 -0
  17. package/src/components/XdCartNoStoreList/XdCartNoStoreList.vue +747 -0
  18. package/src/components/XdCity/XdCity.vue +620 -0
  19. package/src/components/XdCity/city.js +93 -0
  20. package/src/components/XdCity/testData.js +124 -0
  21. package/src/components/XdCityLocation/XdCityLocation.vue +314 -0
  22. package/src/components/XdCityLocation/jweixin.js +72 -0
  23. package/src/components/XdCityShow/XdCityShow.vue +354 -0
  24. package/src/components/XdClipImage/XdClipImage.vue +879 -0
  25. package/src/components/XdCoins/XdCoins.vue +66 -0
  26. package/src/components/XdConfirm/XdConfirm.vue +240 -0
  27. package/src/components/XdContentXss/XdContentXss.vue +71 -0
  28. package/src/components/XdDailog/XdDailog.vue +258 -0
  29. package/src/components/XdDate/XdDataItemOne.vue +236 -0
  30. package/src/components/XdDate/XdDate.vue +1081 -0
  31. package/src/components/XdDate/XdDateItem.vue +316 -0
  32. package/src/components/XdDate/XdDateTime.vue +929 -0
  33. package/src/components/XdDate/i18n/en.json +19 -0
  34. package/src/components/XdDate/i18n/index.js +8 -0
  35. package/src/components/XdDate/i18n/zh-Hans.json +19 -0
  36. package/src/components/XdDate/i18n/zh-Hant.json +19 -0
  37. package/src/components/XdDate/keypress.js +45 -0
  38. package/src/components/XdDate/util.js +418 -0
  39. package/src/components/XdDownDrawer/XdDownDrawer.vue +176 -0
  40. package/src/components/XdEditPwd/XdEditPwd.vue +305 -0
  41. package/src/components/XdEnterOrderList/XdEnterOrderList.vue +413 -0
  42. package/src/components/XdExpressTimeLine/XdExpressTimeLine.vue +280 -0
  43. package/src/components/XdFilter/XdFilter.vue +541 -0
  44. package/src/components/XdFontIcon/XdFontIcon.vue +165 -0
  45. package/src/components/XdFontIcon/css/icon.less +498 -0
  46. package/src/components/XdFooterBar/XdFooterBar.vue +291 -0
  47. package/src/components/XdFooterTabbar/XdFooterTabbar.vue +284 -0
  48. package/src/components/XdForm/XdForm.vue +481 -0
  49. package/src/components/XdForm/validate.js +486 -0
  50. package/src/components/XdFormCheckbox/XdFormCheckbox.vue +858 -0
  51. package/src/components/XdFormDate.vue +187 -0
  52. package/src/components/XdFormInput/XdFormInput.vue +535 -0
  53. package/src/components/XdFormInput/common.js +56 -0
  54. package/src/components/XdFormItem/XdFormItem.vue +583 -0
  55. package/src/components/XdFormSelect/XdFormSelect.vue +119 -0
  56. package/src/components/XdImage/XdImage.vue +113 -0
  57. package/src/components/XdItemCardUser/XdItemCardUser.vue +232 -0
  58. package/src/components/XdItemFilmImage/XdItemFilmImage.vue +146 -0
  59. package/src/components/XdItemFilmText/XdItemFilmText.vue +83 -0
  60. package/src/components/XdItemPhysical/XdItemPhysical.vue +410 -0
  61. package/src/components/XdItemPhysicalPack/XdItemPhysicalPack.vue +240 -0
  62. package/src/components/XdItemStore/XdItemStore.vue +236 -0
  63. package/src/components/XdItemUserInfo/XdItemUserInfo.vue +175 -0
  64. package/src/components/XdJson/XdJson.vue +398 -0
  65. package/src/components/XdKeyValue/XdKeyValue.vue +150 -0
  66. package/src/components/XdLabelNew/XdLabelNew.vue +193 -0
  67. package/src/components/XdLayout/XdLayout.vue +634 -0
  68. package/src/components/XdLoading/XdLoading.vue +165 -0
  69. package/src/components/XdMore/XdMore.vue +66 -0
  70. package/src/components/XdMpHtml/XdMpHtml.vue +458 -0
  71. package/src/components/XdMpHtml/node/node.vue +536 -0
  72. package/src/components/XdMpHtml/parser.js +1260 -0
  73. package/src/components/XdMpHtml/static/js/handler.js +1 -0
  74. package/src/components/XdMpHtml/static/js/uni.webview.min.js +1 -0
  75. package/src/components/XdMpHtml/static/local.html +1 -0
  76. package/src/components/XdMy/XdMy.vue +294 -0
  77. package/src/components/XdMySuccess/XdMySuccess.vue +603 -0
  78. package/src/components/XdNavTab/XdNavTab.vue +147 -0
  79. package/src/components/XdNoData/XdNoData.vue +87 -0
  80. package/src/components/XdNoticeBar/XdNoticeBar.vue +501 -0
  81. package/src/components/XdNumber/XdNumber.vue +210 -0
  82. package/src/components/XdNumberUni/XdNumberUni.vue +270 -0
  83. package/src/components/XdNumberUni/readme.md +42 -0
  84. package/src/components/XdOnlineConfirm/XdOnlineConfirm.vue +385 -0
  85. package/src/components/XdOnlineDetail/XdOnlineDetail.vue +332 -0
  86. package/src/components/XdOnlinePay/XdOnlinePay.vue +349 -0
  87. package/src/components/XdOnlineSchedule/XdOnlineSchedule.vue +453 -0
  88. package/src/components/XdOnlineSeat/XdOnlineSeat.vue +796 -0
  89. package/src/components/XdOnlineSeatMove/XdOnlineSeatMove.vue +1012 -0
  90. package/src/components/XdPayCombo/XdPayCombo.vue +118 -0
  91. package/src/components/XdPreviewImage/XdPreviewImage.vue +372 -0
  92. package/src/components/XdPwPay/XdPwPay.vue +214 -0
  93. package/src/components/XdRadio/XdRadio.vue +151 -0
  94. package/src/components/XdRangeSlider/XdRangeSlider.vue +355 -0
  95. package/src/components/XdRedName/XdRedName.vue +35 -0
  96. package/src/components/XdSearchBar/XdSearchBar.vue +286 -0
  97. package/src/components/XdSelect/XdSelect.vue +382 -0
  98. package/src/components/XdSelectCity/XdSelectCity.vue +270 -0
  99. package/src/components/XdSelectTime/XdSelectTime.vue +342 -0
  100. package/src/components/XdStar/XdStar.vue +261 -0
  101. package/src/components/XdStoreCashier/XdStoreCashier.vue +526 -0
  102. package/src/components/XdStoreItem/XdStoreItem.vue +400 -0
  103. package/src/components/XdStoreOrderDetail/XdStoreOrderDetail.vue +1571 -0
  104. package/src/components/XdStoreOrderList/XdStoreOrderList.vue +450 -0
  105. package/src/components/XdStoreProductInfo/XdStoreProductInfo.vue +940 -0
  106. package/src/components/XdStoreProductType/XdStoreProductType.vue +307 -0
  107. package/src/components/XdSuccess/XdSuccess.vue +527 -0
  108. package/src/components/XdSwipeSelect/XdSwipeSelect.vue +99 -0
  109. package/src/components/XdSwiper/XdSwiper.vue +124 -0
  110. package/src/components/XdSwitch/XdSwitch.vue +204 -0
  111. package/src/components/XdTab/XdTab.vue +220 -0
  112. package/src/components/XdTabScroll/XdTabScroll.vue +212 -0
  113. package/src/components/XdTag/XdTag.vue +423 -0
  114. package/src/components/XdTimeLine/XdTimeLine.vue +121 -0
  115. package/src/components/XdTips/XdTips.vue +212 -0
  116. package/src/components/XdTipsBlock/XdTipsBlock.vue +141 -0
  117. package/src/components/XdTitleSection/XdTitleSection.vue +152 -0
  118. package/src/components/XdTitleTab/XdTitleTab.vue +227 -0
  119. package/src/components/XdUnit/XdUnit.vue +206 -0
  120. package/src/components/XdUpload/XdUpload.vue +197 -0
  121. package/src/components/XdUploadImage/XdUploadImage.vue +145 -0
  122. package/src/components/Xdlogs/XdLogs.vue +144 -0
  123. package/src/components/autoload.js +211 -0
  124. package/src/components/swipeAction/UniSwipeAction.vue +43 -0
  125. package/src/components/swipeActionItem/UniSwipeActionItem.vue +386 -0
  126. package/src/components/swipeActionItem/bindingx.js +298 -0
  127. package/src/components/swipeActionItem/index.wxs +321 -0
  128. package/src/components/swipeActionItem/isPC.js +18 -0
  129. package/src/components/swipeActionItem/mpalipay.js +210 -0
  130. package/src/components/swipeActionItem/mpother.js +252 -0
  131. package/src/components/swipeActionItem/mpwxs.js +140 -0
  132. package/src/dome/dome/address.vue +415 -0
  133. package/src/dome/dome/auth/login.vue +166 -0
  134. package/src/dome/dome/baidu_show.vue +20 -0
  135. package/src/dome/dome/cake.vue +186 -0
  136. package/src/dome/dome/cart.vue +205 -0
  137. package/src/dome/dome/cart_store.vue +149 -0
  138. package/src/dome/dome/cashier/cashier.vue +73 -0
  139. package/src/dome/dome/cashier/check_cashier.vue +469 -0
  140. package/src/dome/dome/cashier/success.vue +127 -0
  141. package/src/dome/dome/city.vue +148 -0
  142. package/src/dome/dome/cityData.js +9 -0
  143. package/src/dome/dome/clip.vue +82 -0
  144. package/src/dome/dome/date/date.vue +273 -0
  145. package/src/dome/dome/date/selected.js +315 -0
  146. package/src/dome/dome/dcom/app1.vue +13 -0
  147. package/src/dome/dome/dcom/app2.vue +13 -0
  148. package/src/dome/dome/dcom/app3.vue +13 -0
  149. package/src/dome/dome/dcom/app4.vue +13 -0
  150. package/src/dome/dome/dcom/app5.vue +13 -0
  151. package/src/dome/dome/dcom/index.vue +1 -0
  152. package/src/dome/dome/debug/debug.vue +95 -0
  153. package/src/dome/dome/docache/docache.vue +88 -0
  154. package/src/dome/dome/express.vue +269 -0
  155. package/src/dome/dome/form.vue +312 -0
  156. package/src/dome/dome/icon.js +125 -0
  157. package/src/dome/dome/icon.vue +93 -0
  158. package/src/dome/dome/index.vue +725 -0
  159. package/src/dome/dome/item.vue +236 -0
  160. package/src/dome/dome/json/json.vue +88 -0
  161. package/src/dome/dome/layout.vue +105 -0
  162. package/src/dome/dome/line.vue +113 -0
  163. package/src/dome/dome/map/search.vue +70 -0
  164. package/src/dome/dome/my.vue +171 -0
  165. package/src/dome/dome/notice.vue +93 -0
  166. package/src/dome/dome/online/confirm.vue +92 -0
  167. package/src/dome/dome/online/detail.vue +80 -0
  168. package/src/dome/dome/online/pay.vue +78 -0
  169. package/src/dome/dome/online/schedule.vue +73 -0
  170. package/src/dome/dome/online/seat.vue +98 -0
  171. package/src/dome/dome/order/detail.vue +166 -0
  172. package/src/dome/dome/order/enter_order.vue +294 -0
  173. package/src/dome/dome/order/list.vue +219 -0
  174. package/src/dome/dome/order/order.js +18 -0
  175. package/src/dome/dome/order/success.vue +68 -0
  176. package/src/dome/dome/product.vue +179 -0
  177. package/src/dome/dome/store_cashier.vue +67 -0
  178. package/src/dome/dome/swiper.vue +32 -0
  179. package/src/dome/dome/webview.vue +61 -0
  180. package/src/install.js +183 -0
  181. package/src/main/address/address.vue +251 -0
  182. package/src/main/cart/cart.vue +149 -0
  183. package/src/main/cashier/cashier.vue +72 -0
  184. package/src/main/cashier/check_cashier.vue +483 -0
  185. package/src/main/city/city.vue +149 -0
  186. package/src/main/date/date.vue +260 -0
  187. package/src/main/order/order.js +19 -0
  188. package/src/main/order/order.vue +222 -0
  189. package/src/main/product/detail.vue +121 -0
  190. package/src/main/product/type.vue +108 -0
  191. package/src/main/search/search.vue +501 -0
  192. package/src/pages.json +337 -0
  193. package/src/plugins/CreatedComponentsPlugin.js +19 -0
  194. package/src/plugins/JsonRename.js +72 -0
  195. package/src/plugins/SetAppParams.js +171 -0
  196. package/src/project.js +18 -0
  197. package/src/utils/Cookie.js +68 -0
  198. package/src/utils/Runtime.js +105 -0
  199. package/src/utils/Storage.js +104 -0
  200. package/src/utils/XdNetwork.js +133 -0
  201. package/src/utils/helper.js +1321 -0
  202. package/src/utils/nourl.js +95 -0
  203. package/src/utils/project.js +17 -0
  204. package/src/utils/xd.auth.js +61 -0
  205. package/src/utils/xd.base.js +474 -0
  206. package/src/utils/xd.common.js +240 -0
  207. package/src/utils/xd.event.js +99 -0
  208. package/src/utils/xd.frame.js +96 -0
  209. package/src/utils/xd.path.js +96 -0
  210. package/src/utils/xdAppLog.js +170 -0
  211. package/src/utils/xdWxLog.js +302 -0
  212. package/src/utils/xdh5log.js +307 -0
  213. package/src/websetting.js +64 -0
  214. package/tsconfig.json +9 -0
  215. package/xd.less +180 -0
@@ -0,0 +1,321 @@
1
+ var MIN_DISTANCE = 10;
2
+
3
+ /**
4
+ * 监听页面内值的变化,主要用于动态开关swipe-action
5
+ * @param {Object} newValue
6
+ * @param {Object} oldValue
7
+ * @param {Object} ownerInstance
8
+ * @param {Object} instance
9
+ */
10
+ function sizeReady(newValue, oldValue, ownerInstance, instance) {
11
+ var state = instance.getState()
12
+ var buttonPositions = JSON.parse(newValue)
13
+ if (!buttonPositions || !buttonPositions.data || buttonPositions.data.length === 0) return
14
+ state.leftWidth = buttonPositions.data[0].width
15
+ state.rightWidth = buttonPositions.data[1].width
16
+ state.threshold = instance.getDataset().threshold
17
+
18
+ if (buttonPositions.show && buttonPositions.show !== 'none') {
19
+ openState(buttonPositions.show, instance, ownerInstance)
20
+ return
21
+ }
22
+
23
+ if (state.left) {
24
+ openState('none', instance, ownerInstance)
25
+ }
26
+ resetTouchStatus(instance)
27
+ }
28
+
29
+ /**
30
+ * 开始触摸操作
31
+ * @param {Object} e
32
+ * @param {Object} ins
33
+ */
34
+ function touchstart(e, ins) {
35
+ var instance = e.instance;
36
+ var disabled = instance.getDataset().disabled
37
+ var state = instance.getState();
38
+ // fix by mehaotian, TODO 兼容 app-vue 获取dataset为字符串 , h5 获取 为 undefined 的问题,待框架修复
39
+ disabled = (typeof(disabled) === 'string' ? JSON.parse(disabled) : disabled) || false;
40
+ if (disabled) return
41
+ // 开始触摸时移除动画类
42
+ instance.requestAnimationFrame(function() {
43
+ instance.removeClass('ani');
44
+ ins.callMethod('closeSwipe');
45
+ })
46
+
47
+ // 记录上次的位置
48
+ state.x = state.left || 0
49
+ // 计算滑动开始位置
50
+ stopTouchStart(e, ins)
51
+ }
52
+
53
+ /**
54
+ * 开始滑动操作
55
+ * @param {Object} e
56
+ * @param {Object} ownerInstance
57
+ */
58
+ function touchmove(e, ownerInstance) {
59
+ var instance = e.instance;
60
+ var disabled = instance.getDataset().disabled
61
+ var state = instance.getState()
62
+ // fix by mehaotian, TODO 兼容 app-vue 获取dataset为字符串 , h5 获取 为 undefined 的问题,待框架修复
63
+ disabled = (typeof(disabled) === 'string' ? JSON.parse(disabled) : disabled) || false;
64
+ if (disabled) return
65
+ // 是否可以滑动页面
66
+ stopTouchMove(e);
67
+ if (state.direction !== 'horizontal') {
68
+ return;
69
+ }
70
+
71
+ if (e.preventDefault) {
72
+ // 阻止页面滚动
73
+ e.preventDefault()
74
+ }
75
+
76
+ move(state.x + state.deltaX, instance, ownerInstance)
77
+ }
78
+
79
+ /**
80
+ * 结束触摸操作
81
+ * @param {Object} e
82
+ * @param {Object} ownerInstance
83
+ */
84
+ function touchend(e, ownerInstance) {
85
+ var instance = e.instance;
86
+ var disabled = instance.getDataset().disabled
87
+ var state = instance.getState()
88
+ // fix by mehaotian, TODO 兼容 app-vue 获取dataset为字符串 , h5 获取 为 undefined 的问题,待框架修复
89
+ disabled = (typeof(disabled) === 'string' ? JSON.parse(disabled) : disabled) || false;
90
+
91
+ if (disabled) return
92
+ // 滑动过程中触摸结束,通过阙值判断是开启还是关闭
93
+ // fixed by mehaotian 定时器解决点击按钮,touchend 触发比 click 事件时机早的问题 ,主要是 ios13
94
+ moveDirection(state.left, instance, ownerInstance)
95
+
96
+ }
97
+
98
+ /**
99
+ * 设置移动距离
100
+ * @param {Object} value
101
+ * @param {Object} instance
102
+ * @param {Object} ownerInstance
103
+ */
104
+ function move(value, instance, ownerInstance) {
105
+ value = value || 0
106
+ var state = instance.getState()
107
+ var leftWidth = state.leftWidth
108
+ var rightWidth = state.rightWidth
109
+ // 获取可滑动范围
110
+ state.left = range(value, -rightWidth, leftWidth);
111
+ instance.requestAnimationFrame(function() {
112
+ instance.setStyle({
113
+ transform: 'translateX(' + state.left + 'px)',
114
+ '-webkit-transform': 'translateX(' + state.left + 'px)'
115
+ })
116
+ })
117
+
118
+ }
119
+
120
+ /**
121
+ * 获取范围
122
+ * @param {Object} num
123
+ * @param {Object} min
124
+ * @param {Object} max
125
+ */
126
+ function range(num, min, max) {
127
+ return Math.min(Math.max(num, min), max);
128
+ }
129
+
130
+
131
+ /**
132
+ * 移动方向判断
133
+ * @param {Object} left
134
+ * @param {Object} value
135
+ * @param {Object} ownerInstance
136
+ * @param {Object} ins
137
+ */
138
+ function moveDirection(left, ins, ownerInstance) {
139
+ var state = ins.getState()
140
+ var threshold = state.threshold
141
+ var position = state.position
142
+ var isopen = state.isopen || 'none'
143
+ var leftWidth = state.leftWidth
144
+ var rightWidth = state.rightWidth
145
+ if (state.deltaX === 0) {
146
+ openState('none', ins, ownerInstance)
147
+ return
148
+ }
149
+ if ((isopen === 'none' && rightWidth > 0 && -left > threshold) || (isopen !== 'none' && rightWidth > 0 && rightWidth +
150
+ left < threshold)) {
151
+ // right
152
+ openState('right', ins, ownerInstance)
153
+ } else if ((isopen === 'none' && leftWidth > 0 && left > threshold) || (isopen !== 'none' && leftWidth > 0 &&
154
+ leftWidth - left < threshold)) {
155
+ // left
156
+ openState('left', ins, ownerInstance)
157
+ } else {
158
+ // default
159
+ openState('none', ins, ownerInstance)
160
+ }
161
+ }
162
+
163
+
164
+ /**
165
+ * 开启状态
166
+ * @param {Boolean} type
167
+ * @param {Object} ins
168
+ * @param {Object} ownerInstance
169
+ */
170
+ function openState(type, ins, ownerInstance) {
171
+ var state = ins.getState()
172
+ var position = state.position
173
+ var leftWidth = state.leftWidth
174
+ var rightWidth = state.rightWidth
175
+ var left = ''
176
+ state.isopen = state.isopen ? state.isopen : 'none'
177
+ switch (type) {
178
+ case "left":
179
+ left = leftWidth
180
+ break
181
+ case "right":
182
+ left = -rightWidth
183
+ break
184
+ default:
185
+ left = 0
186
+ }
187
+
188
+ // && !state.throttle
189
+
190
+ if (state.isopen !== type) {
191
+ state.throttle = true
192
+ ownerInstance.callMethod('change', {
193
+ open: type
194
+ })
195
+
196
+ }
197
+
198
+ state.isopen = type
199
+ // 添加动画类
200
+ ins.requestAnimationFrame(function() {
201
+ ins.addClass('ani');
202
+ move(left, ins, ownerInstance)
203
+ })
204
+ // 设置最终移动位置,理论上只要进入到这个函数,肯定是要打开的
205
+ }
206
+
207
+
208
+ function getDirection(x, y) {
209
+ if (x > y && x > MIN_DISTANCE) {
210
+ return 'horizontal';
211
+ }
212
+ if (y > x && y > MIN_DISTANCE) {
213
+ return 'vertical';
214
+ }
215
+ return '';
216
+ }
217
+
218
+ /**
219
+ * 重置滑动状态
220
+ * @param {Object} event
221
+ */
222
+ function resetTouchStatus(instance) {
223
+ var state = instance.getState();
224
+ state.direction = '';
225
+ state.deltaX = 0;
226
+ state.deltaY = 0;
227
+ state.offsetX = 0;
228
+ state.offsetY = 0;
229
+ }
230
+
231
+ /**
232
+ * 设置滑动开始位置
233
+ * @param {Object} event
234
+ */
235
+ function stopTouchStart(event) {
236
+ var instance = event.instance;
237
+ var state = instance.getState();
238
+ resetTouchStatus(instance);
239
+ var touch = event.touches[0];
240
+ // #ifdef H5
241
+ if (isPC()) {
242
+ touch = event;
243
+ }
244
+ // #endif
245
+ state.startX = touch.clientX;
246
+ state.startY = touch.clientY;
247
+ }
248
+
249
+ /**
250
+ * 滑动中,是否禁止打开
251
+ * @param {Object} event
252
+ */
253
+ function stopTouchMove(event) {
254
+ var instance = event.instance;
255
+ var state = instance.getState();
256
+ var touch = event.touches[0];
257
+ // #ifdef H5
258
+ if (isPC()) {
259
+ touch = event;
260
+ }
261
+ // #endif
262
+ state.deltaX = touch.clientX - state.startX;
263
+ state.deltaY = touch.clientY - state.startY;
264
+ state.offsetY = Math.abs(state.deltaY);
265
+ state.offsetX = Math.abs(state.deltaX);
266
+ state.direction = state.direction || getDirection(state.offsetX, state.offsetY);
267
+ }
268
+
269
+ // #ifdef H5
270
+ function isPC() {
271
+ if(typeof navigator === 'undefined') {
272
+ return false;
273
+ }
274
+ var userAgentInfo = navigator.userAgent;
275
+ var Agents = ["Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod"];
276
+ var flag = true;
277
+ for (var v = 0; v < Agents.length - 1; v++) {
278
+ if (userAgentInfo.indexOf(Agents[v]) > 0) {
279
+ flag = false;
280
+ break;
281
+ }
282
+ }
283
+ return flag;
284
+ }
285
+
286
+ var movable = false
287
+
288
+ function mousedown(e, ins) {
289
+ if (!isPC()) return
290
+ touchstart(e, ins)
291
+ movable = true
292
+ }
293
+
294
+ function mousemove(e, ins) {
295
+ if (!isPC()) return
296
+ if (!movable) return
297
+ touchmove(e, ins)
298
+ }
299
+
300
+ function mouseup(e, ins) {
301
+ if (!isPC()) return
302
+ touchend(e, ins)
303
+ movable = false
304
+ }
305
+
306
+ function mouseleave(e, ins) {
307
+ if (!isPC()) return
308
+ movable = false
309
+ }
310
+ // #endif
311
+
312
+ module.exports = {
313
+ sizeReady: sizeReady,
314
+ touchstart: touchstart,
315
+ touchmove: touchmove,
316
+ touchend: touchend,
317
+ mousedown: mousedown,
318
+ mousemove: mousemove,
319
+ mouseup: mouseup,
320
+ mouseleave: mouseleave
321
+ }
@@ -0,0 +1,18 @@
1
+ export function isPC() {
2
+ // #ifdef H5
3
+ var userAgentInfo = navigator.userAgent;
4
+ var Agents = ["Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod"];
5
+ var flag = true;
6
+ for (let v = 0; v < Agents.length - 1; v++) {
7
+ if (userAgentInfo.indexOf(Agents[v]) > 0) {
8
+ flag = false;
9
+ break;
10
+ }
11
+ }
12
+ return flag;
13
+ // #endif
14
+
15
+ // #ifndef H5
16
+ return false
17
+ // #endif
18
+ }
@@ -0,0 +1,210 @@
1
+ export default {
2
+ data() {
3
+ return {
4
+ x: 0,
5
+ transition: false,
6
+ width: 0,
7
+ viewWidth: 0,
8
+ swipeShow: 0
9
+ }
10
+ },
11
+ watch: {
12
+ show(newVal) {
13
+ if (this.autoClose) return
14
+ if (newVal && newVal !== 'none' ) {
15
+ this.transition = true
16
+ this.open(newVal)
17
+ } else {
18
+ this.close()
19
+ }
20
+ }
21
+ },
22
+ created() {
23
+ if (this.swipeaction.children !== undefined) {
24
+ this.swipeaction.children.push(this)
25
+ }
26
+ },
27
+
28
+ beforeDestroy() {
29
+ this.swipeaction.children.forEach((item, index) => {
30
+ if (item === this) {
31
+ this.swipeaction.children.splice(index, 1)
32
+ }
33
+ })
34
+ },
35
+ mounted() {
36
+ this.isopen = false;
37
+ this.$nextTick(()=>{
38
+ setTimeout(() => {
39
+ this.getQuerySelect()
40
+ }, 50)
41
+ })
42
+
43
+ },
44
+ methods: {
45
+ appTouchStart(e) {
46
+ const {
47
+ clientX
48
+ } = e.changedTouches[0]
49
+ this.clientX = clientX
50
+ this.timestamp = new Date().getTime()
51
+ },
52
+ appTouchEnd(e, index, item, position) {
53
+ const {
54
+ clientX
55
+ } = e.changedTouches[0]
56
+ // fixed by xxxx 模拟点击事件,解决 ios 13 点击区域错位的问题
57
+ let diff = Math.abs(this.clientX - clientX)
58
+ let time = (new Date().getTime()) - this.timestamp
59
+ if (diff < 40 && time < 300) {
60
+ this.$emit('click', {
61
+ content: item,
62
+ index,
63
+ position
64
+ })
65
+ }
66
+ },
67
+ // onClick(index, item, position) {
68
+ // this.$emit('click', {
69
+ // content: item,
70
+ // index,
71
+ // position
72
+ // })
73
+ // },
74
+ /**
75
+ * 移动触发
76
+ * @param {Object} e
77
+ */
78
+ onChange(e) {
79
+ this.moveX = e.detail.x
80
+ this.isclose = false
81
+ },
82
+ touchstart(e) {
83
+ this.transition = false
84
+ this.isclose = true
85
+ this.autoClose && this.swipeaction.closeOther(this)
86
+ },
87
+ touchmove(e) {},
88
+ touchend(e) {
89
+ // 0的位置什么都不执行
90
+ if (this.isclose && this.isopen === 'none') return
91
+ if (this.isclose && this.isopen !== 'none') {
92
+ this.transition = true
93
+ this.close()
94
+ } else {
95
+ this.move(this.moveX + this.leftWidth)
96
+ }
97
+ },
98
+
99
+ /**
100
+ * 移动
101
+ * @param {Object} moveX
102
+ */
103
+ move(moveX) {
104
+ // 打开关闭的处理逻辑不太一样
105
+ this.transition = true
106
+ // 未打开状态
107
+ if (!this.isopen || this.isopen === 'none') {
108
+ if (moveX > this.threshold) {
109
+ this.open('left')
110
+ } else if (moveX < -this.threshold) {
111
+ this.open('right')
112
+ } else {
113
+ this.close()
114
+ }
115
+ } else {
116
+ if (moveX < 0 && moveX < this.rightWidth) {
117
+ const rightX = this.rightWidth + moveX
118
+ if (rightX < this.threshold) {
119
+ this.open('right')
120
+ } else {
121
+ this.close()
122
+ }
123
+ } else if (moveX > 0 && moveX < this.leftWidth) {
124
+ const leftX = this.leftWidth - moveX
125
+ if (leftX < this.threshold) {
126
+ this.open('left')
127
+ } else {
128
+ this.close()
129
+ }
130
+ }
131
+
132
+ }
133
+
134
+ },
135
+
136
+ /**
137
+ * 打开
138
+ */
139
+ open(type) {
140
+ this.x = this.moveX
141
+ this.animation(type)
142
+ },
143
+
144
+ /**
145
+ * 关闭
146
+ */
147
+ close() {
148
+ this.x = this.moveX
149
+ // TODO 解决 x 值不更新的问题,所以会多触发一次 nextTick ,待优化
150
+ this.$nextTick(() => {
151
+ this.x = -this.leftWidth
152
+ if(this.isopen!=='none'){
153
+ this.$emit('change', 'none')
154
+ }
155
+ this.isopen = 'none'
156
+ })
157
+ },
158
+
159
+ /**
160
+ * 执行结束动画
161
+ * @param {Object} type
162
+ */
163
+ animation(type) {
164
+ this.$nextTick(() => {
165
+ if (type === 'left') {
166
+ this.x = 0
167
+ } else {
168
+ this.x = -this.rightWidth - this.leftWidth
169
+ }
170
+
171
+ if(this.isopen!==type){
172
+ this.$emit('change', type)
173
+ }
174
+ this.isopen = type
175
+ })
176
+
177
+ },
178
+ getSlide(x) {},
179
+ getQuerySelect() {
180
+ const query = uni.createSelectorQuery().in(this);
181
+ query.selectAll('.movable-view--hock').boundingClientRect(data => {
182
+ this.leftWidth = data[1].width
183
+ this.rightWidth = data[2].width
184
+ this.width = data[0].width
185
+ this.viewWidth = this.width + this.rightWidth + this.leftWidth
186
+ if (this.leftWidth === 0) {
187
+ // TODO 疑似bug ,初始化的时候如果x 是0,会导致移动位置错误,所以让元素超出一点
188
+ this.x = -0.1
189
+ } else {
190
+ this.x = -this.leftWidth
191
+ }
192
+ this.moveX = this.x
193
+ this.$nextTick(() => {
194
+ this.swipeShow = 1
195
+ })
196
+
197
+ if (!this.buttonWidth) {
198
+ this.disabledView = true
199
+ }
200
+
201
+ if (this.autoClose) return
202
+ if (this.show !== 'none') {
203
+ this.transition = true
204
+ this.open(this.shows)
205
+ }
206
+ }).exec();
207
+
208
+ }
209
+ }
210
+ }