oxy-uni-ui 2.1.1 → 2.1.3

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 (434) hide show
  1. package/attributes.json +1 -1
  2. package/components/common/AbortablePromise.ts +4 -0
  3. package/components/common/abstracts/variable.scss +185 -68
  4. package/components/common/base64.ts +6 -0
  5. package/components/common/clickoutside.ts +5 -0
  6. package/components/common/interceptor.ts +9 -0
  7. package/components/common/path.ts +4 -0
  8. package/components/common/props.ts +23 -0
  9. package/components/common/util.ts +18 -1
  10. package/components/composables/index.ts +2 -0
  11. package/components/composables/useCell.ts +8 -1
  12. package/components/composables/useChildren.ts +27 -1
  13. package/components/composables/useCountDown.ts +10 -1
  14. package/components/composables/useDynamicVirtualScroll.ts +9 -0
  15. package/components/composables/useGlobalLoading.ts +6 -0
  16. package/components/composables/useGlobalMessage.ts +6 -0
  17. package/components/composables/useGlobalToast.ts +6 -0
  18. package/components/composables/useLockScroll.ts +9 -0
  19. package/components/composables/useParent.ts +65 -14
  20. package/components/composables/usePopover.ts +9 -0
  21. package/components/composables/useQueue.ts +8 -0
  22. package/components/composables/useRaf.ts +10 -0
  23. package/components/composables/useSharedState.ts +284 -0
  24. package/components/composables/useTouch.ts +8 -0
  25. package/components/composables/useTranslate.ts +9 -0
  26. package/components/composables/useUpload.ts +83 -11
  27. package/components/composables/useVirtualScroll.ts +7 -0
  28. package/components/composables/useWindowResize.ts +9 -0
  29. package/components/oxy-action-sheet/index.scss +5 -5
  30. package/components/oxy-action-sheet/oxy-action-sheet.vue +11 -0
  31. package/components/oxy-backtop/index.scss +2 -2
  32. package/components/oxy-backtop/oxy-backtop.vue +2 -0
  33. package/components/oxy-badge/oxy-badge.vue +2 -0
  34. package/components/oxy-badge/types.ts +3 -0
  35. package/components/oxy-button/index.scss +13 -13
  36. package/components/oxy-button/oxy-button.vue +11 -0
  37. package/components/oxy-button/types.ts +3 -3
  38. package/components/oxy-calendar/index.scss +17 -17
  39. package/components/oxy-calendar/oxy-calendar.vue +31 -0
  40. package/components/oxy-calendar/types.ts +3 -0
  41. package/components/oxy-calendar-view/month/month.vue +2 -0
  42. package/components/oxy-calendar-view/monthPanel/month-panel.vue +3 -1
  43. package/components/oxy-calendar-view/monthPanel/types.ts +10 -7
  44. package/components/oxy-calendar-view/oxy-calendar-view.vue +2 -0
  45. package/components/oxy-calendar-view/types.ts +3 -1
  46. package/components/oxy-calendar-view/year/types.ts +33 -1
  47. package/components/oxy-calendar-view/year/year.vue +2 -0
  48. package/components/oxy-calendar-view/yearPanel/year-panel.vue +2 -0
  49. package/components/oxy-card/index.scss +1 -1
  50. package/components/oxy-card/oxy-card.vue +2 -0
  51. package/components/oxy-cell/index.scss +3 -1
  52. package/components/oxy-cell/oxy-cell.vue +6 -4
  53. package/components/oxy-cell-group/oxy-cell-group.vue +2 -0
  54. package/components/oxy-checkbox/index.scss +41 -6
  55. package/components/oxy-checkbox/oxy-checkbox.vue +22 -16
  56. package/components/oxy-checkbox/types.ts +9 -0
  57. package/components/oxy-checkbox-group/index.scss +1 -1
  58. package/components/oxy-checkbox-group/oxy-checkbox-group.vue +2 -0
  59. package/components/oxy-circle/oxy-circle.vue +2 -0
  60. package/components/oxy-col/oxy-col.vue +3 -1
  61. package/components/oxy-col-picker/index.scss +3 -3
  62. package/components/oxy-col-picker/oxy-col-picker.vue +17 -1
  63. package/components/oxy-col-picker/types.ts +3 -0
  64. package/components/oxy-collapse/index.scss +2 -2
  65. package/components/oxy-collapse/oxy-collapse.vue +9 -0
  66. package/components/oxy-collapse-item/oxy-collapse-item.vue +4 -2
  67. package/components/oxy-config-provider/oxy-config-provider.vue +18 -0
  68. package/components/oxy-config-provider/types.ts +18 -0
  69. package/components/oxy-corner/index.scss +50 -32
  70. package/components/oxy-corner/oxy-corner.vue +2 -0
  71. package/components/oxy-count-down/oxy-count-down.vue +2 -0
  72. package/components/oxy-count-to/oxy-count-to.vue +12 -1
  73. package/components/oxy-count-to/types.ts +14 -4
  74. package/components/oxy-curtain/index.scss +10 -9
  75. package/components/oxy-curtain/oxy-curtain.vue +2 -0
  76. package/components/oxy-date-strip/oxy-date-strip.vue +22 -1
  77. package/components/oxy-date-strip-item/index.scss +4 -4
  78. package/components/oxy-date-strip-item/oxy-date-strip-item.vue +2 -0
  79. package/components/oxy-datetime-picker/index.scss +3 -3
  80. package/components/oxy-datetime-picker/oxy-datetime-picker.vue +11 -1
  81. package/components/oxy-datetime-picker-view/oxy-datetime-picker-view.vue +2 -0
  82. package/components/oxy-divider/oxy-divider.vue +2 -0
  83. package/components/oxy-drop-menu/index.scss +2 -2
  84. package/components/oxy-drop-menu/oxy-drop-menu.vue +3 -0
  85. package/components/oxy-drop-menu-item/index.scss +1 -1
  86. package/components/oxy-drop-menu-item/oxy-drop-menu-item.vue +17 -9
  87. package/components/oxy-echarts/oxy-echarts.vue +2 -0
  88. package/components/oxy-fab/index.scss +1 -1
  89. package/components/oxy-fab/oxy-fab.vue +27 -0
  90. package/components/oxy-file-list/index.scss +9 -9
  91. package/components/oxy-file-list/oxy-file-list.vue +29 -17
  92. package/components/oxy-floating-panel/oxy-floating-panel.vue +34 -10
  93. package/components/oxy-footer/index.scss +7 -0
  94. package/components/oxy-footer/oxy-footer.vue +4 -2
  95. package/components/oxy-footer/types.ts +9 -6
  96. package/components/oxy-form/oxy-form.vue +13 -1
  97. package/components/oxy-form-item/oxy-form-item.vue +5 -3
  98. package/components/oxy-gap/oxy-gap.vue +2 -0
  99. package/components/oxy-global-loading/oxy-global-loading.vue +18 -5
  100. package/components/oxy-global-message/oxy-global-message.vue +30 -17
  101. package/components/oxy-global-toast/oxy-global-toast.vue +18 -5
  102. package/components/oxy-grid/oxy-grid.vue +6 -0
  103. package/components/oxy-grid-item/index.scss +1 -1
  104. package/components/oxy-grid-item/oxy-grid-item.vue +22 -20
  105. package/components/oxy-guidance/index.scss +9 -9
  106. package/components/oxy-guidance/oxy-guidance.vue +22 -16
  107. package/components/oxy-icon/oxy-icon.vue +2 -0
  108. package/components/oxy-icon/types.ts +3 -0
  109. package/components/oxy-image-preview/index.scss +75 -0
  110. package/components/oxy-image-preview/index.ts +56 -0
  111. package/components/oxy-image-preview/oxy-image-preview.vue +221 -0
  112. package/components/oxy-image-preview/types.ts +164 -0
  113. package/components/oxy-img/oxy-img.vue +2 -0
  114. package/components/oxy-img-cropper/index.scss +2 -2
  115. package/components/oxy-img-cropper/oxy-img-cropper.vue +6 -0
  116. package/components/oxy-img-lazy/oxy-img-lazy.vue +9 -0
  117. package/components/oxy-index-anchor/index.scss +1 -1
  118. package/components/oxy-index-anchor/oxy-index-anchor.vue +2 -2
  119. package/components/oxy-index-bar/index.scss +1 -1
  120. package/components/oxy-index-bar/oxy-index-bar.vue +18 -0
  121. package/components/oxy-input/index.scss +2 -1
  122. package/components/oxy-input/oxy-input.vue +18 -4
  123. package/components/oxy-input/types.ts +6 -0
  124. package/components/oxy-input-number/index.scss +3 -1
  125. package/components/oxy-input-number/oxy-input-number.vue +2 -0
  126. package/components/oxy-keyboard/index.scss +3 -3
  127. package/components/oxy-keyboard/key/index.vue +2 -0
  128. package/components/oxy-keyboard/oxy-keyboard.vue +11 -2
  129. package/components/oxy-link/index.scss +8 -4
  130. package/components/oxy-link/oxy-link.vue +9 -3
  131. package/components/oxy-link/types.ts +2 -2
  132. package/components/oxy-list/oxy-list.vue +2 -0
  133. package/components/oxy-list/types.ts +7 -0
  134. package/components/oxy-loading/oxy-loading.vue +6 -0
  135. package/components/oxy-loadmore/index.scss +1 -1
  136. package/components/oxy-loadmore/oxy-loadmore.vue +2 -0
  137. package/components/oxy-long-press-menu/index.scss +1 -1
  138. package/components/oxy-long-press-menu/oxy-long-press-menu.vue +42 -13
  139. package/components/oxy-message-box/index.scss +223 -36
  140. package/components/oxy-message-box/index.ts +49 -23
  141. package/components/oxy-message-box/oxy-message-box.vue +181 -56
  142. package/components/oxy-message-box/types.ts +60 -2
  143. package/components/oxy-navbar/index.scss +1 -1
  144. package/components/oxy-navbar/oxy-navbar.vue +9 -6
  145. package/components/oxy-navbar-capsule/oxy-navbar-capsule.vue +2 -0
  146. package/components/oxy-notice-bar/index.scss +1 -1
  147. package/components/oxy-notice-bar/oxy-notice-bar.vue +29 -0
  148. package/components/oxy-notify/index.ts +16 -12
  149. package/components/oxy-notify/oxy-notify.vue +11 -4
  150. package/components/oxy-overlay/oxy-overlay.vue +34 -2
  151. package/components/oxy-pagination/oxy-pagination.vue +2 -0
  152. package/components/oxy-password-input/oxy-password-input.vue +2 -0
  153. package/components/oxy-picker/index.scss +7 -7
  154. package/components/oxy-picker/oxy-picker.vue +11 -0
  155. package/components/oxy-picker-view/index.scss +1 -1
  156. package/components/oxy-picker-view/oxy-picker-view.vue +2 -0
  157. package/components/oxy-popover/index.scss +2 -2
  158. package/components/oxy-popover/oxy-popover.vue +4 -1
  159. package/components/oxy-popup/oxy-popup.vue +8 -0
  160. package/components/oxy-progress/index.scss +2 -2
  161. package/components/oxy-progress/oxy-progress.vue +7 -0
  162. package/components/oxy-qrcode/draw.ts +15 -1
  163. package/components/oxy-qrcode/oxy-qrcode.vue +10 -3
  164. package/components/oxy-radio/index.scss +8 -8
  165. package/components/oxy-radio/oxy-radio.vue +13 -11
  166. package/components/oxy-radio-group/index.scss +1 -1
  167. package/components/oxy-radio-group/oxy-radio-group.vue +2 -0
  168. package/components/oxy-rate/oxy-rate.vue +5 -0
  169. package/components/oxy-rate/types.ts +2 -2
  170. package/components/oxy-resize/oxy-resize.vue +12 -0
  171. package/components/oxy-rich-text/index.scss +9 -9
  172. package/components/oxy-rich-text/oxy-rich-text.vue +6 -0
  173. package/components/oxy-rich-text/types.ts +15 -0
  174. package/components/oxy-root-portal/oxy-root-portal.vue +23 -15
  175. package/components/oxy-row/oxy-row.vue +2 -0
  176. package/components/oxy-search/index.scss +3 -3
  177. package/components/oxy-search/oxy-search.vue +19 -0
  178. package/components/oxy-segmented/index.scss +4 -4
  179. package/components/oxy-segmented/oxy-segmented.vue +2 -0
  180. package/components/oxy-select/index.scss +25 -25
  181. package/components/oxy-select/oxy-select.vue +27 -0
  182. package/components/oxy-select/types.ts +3 -0
  183. package/components/oxy-select-picker/index.scss +5 -5
  184. package/components/oxy-select-picker/oxy-select-picker.vue +7 -0
  185. package/components/oxy-sidebar/oxy-sidebar.vue +2 -0
  186. package/components/oxy-sidebar-item/index.scss +3 -3
  187. package/components/oxy-sidebar-item/oxy-sidebar-item.vue +17 -31
  188. package/components/oxy-signature/oxy-signature.vue +17 -0
  189. package/components/oxy-skeleton/oxy-skeleton.vue +7 -1
  190. package/components/oxy-slide-verify/index.scss +95 -0
  191. package/components/oxy-slide-verify/oxy-slide-verify.vue +244 -0
  192. package/components/oxy-slide-verify/types.ts +98 -0
  193. package/components/oxy-slider/oxy-slider.vue +3 -0
  194. package/components/oxy-sort-button/index.scss +6 -5
  195. package/components/oxy-sort-button/oxy-sort-button.vue +6 -0
  196. package/components/oxy-splitter/index.scss +9 -0
  197. package/components/oxy-splitter/oxy-splitter.vue +23 -2
  198. package/components/oxy-splitter-panel/index.scss +7 -5
  199. package/components/oxy-splitter-panel/oxy-splitter-panel.vue +93 -89
  200. package/components/oxy-status-tip/index.scss +3 -3
  201. package/components/oxy-status-tip/oxy-status-tip.vue +2 -0
  202. package/components/oxy-step/index.scss +4 -4
  203. package/components/oxy-step/oxy-step.vue +15 -13
  204. package/components/oxy-steps/oxy-steps.vue +2 -0
  205. package/components/oxy-sticky/oxy-sticky.vue +5 -3
  206. package/components/oxy-stream-render/oxy-stream-render.vue +29 -0
  207. package/components/oxy-swipe-action/oxy-swipe-action.vue +8 -0
  208. package/components/oxy-swiper/oxy-swiper.vue +6 -0
  209. package/components/oxy-swiper-nav/index.scss +4 -4
  210. package/components/oxy-switch/index.scss +6 -3
  211. package/components/oxy-switch/oxy-switch.vue +10 -0
  212. package/components/oxy-tab/index.scss +1 -7
  213. package/components/oxy-tab/oxy-tab.vue +12 -10
  214. package/components/oxy-tabbar/oxy-tabbar.vue +5 -0
  215. package/components/oxy-tabbar-item/oxy-tabbar-item.vue +11 -9
  216. package/components/oxy-table/index.scss +1 -1
  217. package/components/oxy-table/oxy-table.vue +8 -0
  218. package/components/oxy-table/types.ts +3 -0
  219. package/components/oxy-table-col/oxy-table-col.vue +21 -19
  220. package/components/oxy-tabs/index.scss +11 -11
  221. package/components/oxy-tabs/oxy-tabs.vue +17 -0
  222. package/components/oxy-tag/index.scss +176 -17
  223. package/components/oxy-tag/oxy-tag.vue +29 -2
  224. package/components/oxy-tag/types.ts +16 -0
  225. package/components/oxy-text/oxy-text.vue +12 -1
  226. package/components/oxy-textarea/index.scss +3 -2
  227. package/components/oxy-textarea/oxy-textarea.vue +10 -4
  228. package/components/oxy-toast/index.ts +21 -20
  229. package/components/oxy-toast/oxy-toast.vue +30 -5
  230. package/components/oxy-toast/types.ts +20 -9
  231. package/components/oxy-tooltip/index.scss +1 -1
  232. package/components/oxy-tooltip/oxy-tooltip.vue +2 -0
  233. package/components/oxy-transition/index.scss +3 -1
  234. package/components/oxy-transition/oxy-transition.vue +14 -0
  235. package/components/oxy-tree/index.scss +3 -3
  236. package/components/oxy-tree/oxy-tree.vue +28 -5
  237. package/components/oxy-tree/types.ts +57 -1
  238. package/components/oxy-upload/index.scss +9 -9
  239. package/components/oxy-upload/oxy-upload.vue +5 -3
  240. package/components/oxy-verification-code/oxy-verification-code.vue +24 -0
  241. package/components/oxy-video-preview/index.scss +12 -7
  242. package/components/oxy-video-preview/index.ts +64 -0
  243. package/components/oxy-video-preview/oxy-video-preview.vue +102 -31
  244. package/components/oxy-video-preview/types.ts +54 -8
  245. package/components/oxy-virtual-scroll/index.scss +1 -1
  246. package/components/oxy-virtual-scroll/oxy-virtual-scroll.vue +2 -0
  247. package/components/oxy-voice-player/index.scss +64 -64
  248. package/components/oxy-voice-player/oxy-voice-player.vue +38 -10
  249. package/components/oxy-waterfall/oxy-waterfall.vue +13 -0
  250. package/components/oxy-waterfall/types.ts +7 -0
  251. package/components/oxy-waterfall-item/oxy-waterfall-item.vue +9 -0
  252. package/components/oxy-watermark/oxy-watermark.vue +2 -0
  253. package/dev-tools.ts +2 -0
  254. package/devTools/components/DevToolsOverlay.vue +56 -0
  255. package/devTools/components/DevToolsUiHost.vue +589 -0
  256. package/devTools/config.js +55 -0
  257. package/devTools/core/components/mpDevBubble.vue +174 -0
  258. package/devTools/core/libs/createH5Bubble.js +156 -0
  259. package/devTools/core/libs/devCache.js +151 -0
  260. package/devTools/core/libs/devOptions.js +163 -0
  261. package/devTools/core/libs/devUi.js +219 -0
  262. package/devTools/core/libs/drawView.js +140 -0
  263. package/devTools/core/libs/errorReport.js +64 -0
  264. package/devTools/core/libs/jsonCompress.js +334 -0
  265. package/devTools/core/libs/logReport.js +59 -0
  266. package/devTools/core/libs/pageLinkList.js +125 -0
  267. package/devTools/core/libs/timeFormat.js +94 -0
  268. package/devTools/core/proxy/console.js +430 -0
  269. package/devTools/core/proxy/index.js +36 -0
  270. package/devTools/core/proxy/request.js +495 -0
  271. package/devTools/core/proxy/storage.js +113 -0
  272. package/devTools/core/proxy/uniBus.js +153 -0
  273. package/devTools/core/proxy/uniListen.js +192 -0
  274. package/devTools/core/proxy/vueMixin.js +120 -0
  275. package/devTools/index.js +168 -0
  276. package/devTools/page/components/bottomTools.vue +1046 -0
  277. package/devTools/page/components/dialog/addStorage.vue +204 -0
  278. package/devTools/page/components/dialog/createDir.vue +366 -0
  279. package/devTools/page/components/dialog/editDialog.vue +192 -0
  280. package/devTools/page/components/dialog/routeDialog.vue +184 -0
  281. package/devTools/page/components/dialog/sendRequest.vue +603 -0
  282. package/devTools/page/components/dialog/textFileEditDialog.vue +391 -0
  283. package/devTools/page/components/libs/appDelDir.js +86 -0
  284. package/devTools/page/components/libs/dirReader.js +248 -0
  285. package/devTools/page/components/libs/fileSize.js +15 -0
  286. package/devTools/page/components/libs/getRuntimeInfo.js +134 -0
  287. package/devTools/page/components/listItem/consoleItem.vue +314 -0
  288. package/devTools/page/components/listItem/errorItem.vue +292 -0
  289. package/devTools/page/components/listItem/fileSysItem.vue +533 -0
  290. package/devTools/page/components/listItem/infoList.vue +100 -0
  291. package/devTools/page/components/listItem/jsRunnerItem.vue +255 -0
  292. package/devTools/page/components/listItem/logItem.vue +193 -0
  293. package/devTools/page/components/listItem/networkItem.vue +398 -0
  294. package/devTools/page/components/listItem/objectAnalysis.vue +651 -0
  295. package/devTools/page/components/listItem/pages.vue +319 -0
  296. package/devTools/page/components/listItem/routeItem.vue +153 -0
  297. package/devTools/page/components/listItem/setting.vue +734 -0
  298. package/devTools/page/components/listItem/storageList.vue +681 -0
  299. package/devTools/page/components/listItem/tools.vue +315 -0
  300. package/devTools/page/components/listItem/vuexList.vue +599 -0
  301. package/devTools/page/components/main.vue +1867 -0
  302. package/devTools/page/components/mixins/animationControl.js +91 -0
  303. package/devTools/page/components/mixins/mp.js +83 -0
  304. package/devTools/page/components/ui/btnTabs.vue +90 -0
  305. package/devTools/page/components/ui/codeHisPicker.vue +172 -0
  306. package/devTools/page/components/ui/h5Cell.vue +13 -0
  307. package/devTools/page/components/ui/menuBtn.vue +94 -0
  308. package/devTools/page/components/ui/mobileSwiperScroll.vue +74 -0
  309. package/devTools/page/components/ui/requestSpeedLimit.vue +52 -0
  310. package/devTools/page/components/ui/requestTimeoutMock.vue +55 -0
  311. package/devTools/page/components/ui/subTitleBar.vue +101 -0
  312. package/devTools/page/static/copy.png +0 -0
  313. package/devTools/page/static/delete.png +0 -0
  314. package/devTools/page/static/fileSys/AI.png +0 -0
  315. package/devTools/page/static/fileSys/DWG.png +0 -0
  316. package/devTools/page/static/fileSys/EXE.png +0 -0
  317. package/devTools/page/static/fileSys/GIF.png +0 -0
  318. package/devTools/page/static/fileSys/HTML.png +0 -0
  319. package/devTools/page/static/fileSys/PSD.png +0 -0
  320. package/devTools/page/static/fileSys/RVT.png +0 -0
  321. package/devTools/page/static/fileSys/SKP.png +0 -0
  322. package/devTools/page/static/fileSys/SVG.png +0 -0
  323. package/devTools/page/static/fileSys/excel.png +0 -0
  324. package/devTools/page/static/fileSys/pdf.png +0 -0
  325. package/devTools/page/static/fileSys/pptl.png +0 -0
  326. package/devTools/page/static/fileSys/shipin.png +0 -0
  327. package/devTools/page/static/fileSys/tupian.png +0 -0
  328. package/devTools/page/static/fileSys/txt.png +0 -0
  329. package/devTools/page/static/fileSys/weizhiwenjian.png +0 -0
  330. package/devTools/page/static/fileSys/wenjianjia.png +0 -0
  331. package/devTools/page/static/fileSys/word.png +0 -0
  332. package/devTools/page/static/fileSys/yasuo.png +0 -0
  333. package/devTools/page/static/fileSys/yinpin.png +0 -0
  334. package/devTools/page/static/fold.png +0 -0
  335. package/devTools/page/static/menu.png +0 -0
  336. package/devTools/page/static/refresh.png +0 -0
  337. package/devTools/page/static/unfold.png +0 -0
  338. package/devTools/tools.vue +25 -0
  339. package/devTools/type/devTools.d.ts +406 -0
  340. package/global.d.ts +2 -0
  341. package/index.ts +2 -0
  342. package/locale/lang/en-US.ts +51 -2
  343. package/locale/lang/zh-CN.ts +51 -2
  344. package/oxy-dev-tools/components/DevToolsUiHost.vue +555 -0
  345. package/oxy-dev-tools/config.js +61 -0
  346. package/oxy-dev-tools/core/components/mpDevBubble.vue +176 -0
  347. package/oxy-dev-tools/core/libs/createH5Bubble.js +156 -0
  348. package/oxy-dev-tools/core/libs/devCache.js +149 -0
  349. package/oxy-dev-tools/core/libs/devOptions.js +160 -0
  350. package/oxy-dev-tools/core/libs/devUi.js +219 -0
  351. package/oxy-dev-tools/core/libs/drawView.js +144 -0
  352. package/oxy-dev-tools/core/libs/errorReport.js +60 -0
  353. package/oxy-dev-tools/core/libs/jsonCompress.js +328 -0
  354. package/oxy-dev-tools/core/libs/logReport.js +55 -0
  355. package/oxy-dev-tools/core/libs/pageLinkList.js +121 -0
  356. package/oxy-dev-tools/core/libs/timeFormat.js +93 -0
  357. package/oxy-dev-tools/core/proxy/console.js +398 -0
  358. package/oxy-dev-tools/core/proxy/index.js +33 -0
  359. package/oxy-dev-tools/core/proxy/request.js +473 -0
  360. package/oxy-dev-tools/core/proxy/storage.js +96 -0
  361. package/oxy-dev-tools/core/proxy/uniBus.js +148 -0
  362. package/oxy-dev-tools/core/proxy/uniListen.js +190 -0
  363. package/oxy-dev-tools/core/proxy/vueMixin.js +115 -0
  364. package/oxy-dev-tools/index.ts +183 -0
  365. package/oxy-dev-tools/oxy-dev-tools.vue +62 -0
  366. package/oxy-dev-tools/page/components/bottomTools.vue +933 -0
  367. package/oxy-dev-tools/page/components/dialog/addStorage.vue +184 -0
  368. package/oxy-dev-tools/page/components/dialog/createDir.vue +352 -0
  369. package/oxy-dev-tools/page/components/dialog/editDialog.vue +178 -0
  370. package/oxy-dev-tools/page/components/dialog/routeDialog.vue +170 -0
  371. package/oxy-dev-tools/page/components/dialog/sendRequest.vue +530 -0
  372. package/oxy-dev-tools/page/components/dialog/textFileEditDialog.vue +379 -0
  373. package/oxy-dev-tools/page/components/libs/appDelDir.js +77 -0
  374. package/oxy-dev-tools/page/components/libs/dirReader.js +239 -0
  375. package/oxy-dev-tools/page/components/libs/fileSize.js +15 -0
  376. package/oxy-dev-tools/page/components/libs/getRuntimeInfo.js +132 -0
  377. package/oxy-dev-tools/page/components/listItem/consoleItem.vue +292 -0
  378. package/oxy-dev-tools/page/components/listItem/errorItem.vue +268 -0
  379. package/oxy-dev-tools/page/components/listItem/fileSysItem.vue +511 -0
  380. package/oxy-dev-tools/page/components/listItem/infoList.vue +89 -0
  381. package/oxy-dev-tools/page/components/listItem/jsRunnerItem.vue +236 -0
  382. package/oxy-dev-tools/page/components/listItem/logItem.vue +185 -0
  383. package/oxy-dev-tools/page/components/listItem/networkItem.vue +362 -0
  384. package/oxy-dev-tools/page/components/listItem/objectAnalysis.vue +642 -0
  385. package/oxy-dev-tools/page/components/listItem/pages.vue +285 -0
  386. package/oxy-dev-tools/page/components/listItem/routeItem.vue +140 -0
  387. package/oxy-dev-tools/page/components/listItem/setting.vue +687 -0
  388. package/oxy-dev-tools/page/components/listItem/storageList.vue +623 -0
  389. package/oxy-dev-tools/page/components/listItem/tools.vue +273 -0
  390. package/oxy-dev-tools/page/components/listItem/vuexList.vue +559 -0
  391. package/oxy-dev-tools/page/components/main.vue +1824 -0
  392. package/oxy-dev-tools/page/components/mixins/animationControl.js +80 -0
  393. package/oxy-dev-tools/page/components/mixins/mp.js +76 -0
  394. package/oxy-dev-tools/page/components/ui/btnTabs.vue +77 -0
  395. package/oxy-dev-tools/page/components/ui/codeHisPicker.vue +161 -0
  396. package/oxy-dev-tools/page/components/ui/h5Cell.vue +13 -0
  397. package/oxy-dev-tools/page/components/ui/menuBtn.vue +87 -0
  398. package/oxy-dev-tools/page/components/ui/mobileSwiperScroll.vue +71 -0
  399. package/oxy-dev-tools/page/components/ui/requestSpeedLimit.vue +47 -0
  400. package/oxy-dev-tools/page/components/ui/requestTimeoutMock.vue +50 -0
  401. package/oxy-dev-tools/page/components/ui/subTitleBar.vue +87 -0
  402. package/oxy-dev-tools/page/static/copy.png +0 -0
  403. package/oxy-dev-tools/page/static/delete.png +0 -0
  404. package/oxy-dev-tools/page/static/fileSys/AI.png +0 -0
  405. package/oxy-dev-tools/page/static/fileSys/DWG.png +0 -0
  406. package/oxy-dev-tools/page/static/fileSys/EXE.png +0 -0
  407. package/oxy-dev-tools/page/static/fileSys/GIF.png +0 -0
  408. package/oxy-dev-tools/page/static/fileSys/HTML.png +0 -0
  409. package/oxy-dev-tools/page/static/fileSys/PSD.png +0 -0
  410. package/oxy-dev-tools/page/static/fileSys/RVT.png +0 -0
  411. package/oxy-dev-tools/page/static/fileSys/SKP.png +0 -0
  412. package/oxy-dev-tools/page/static/fileSys/SVG.png +0 -0
  413. package/oxy-dev-tools/page/static/fileSys/excel.png +0 -0
  414. package/oxy-dev-tools/page/static/fileSys/pdf.png +0 -0
  415. package/oxy-dev-tools/page/static/fileSys/pptl.png +0 -0
  416. package/oxy-dev-tools/page/static/fileSys/shipin.png +0 -0
  417. package/oxy-dev-tools/page/static/fileSys/tupian.png +0 -0
  418. package/oxy-dev-tools/page/static/fileSys/txt.png +0 -0
  419. package/oxy-dev-tools/page/static/fileSys/weizhiwenjian.png +0 -0
  420. package/oxy-dev-tools/page/static/fileSys/wenjianjia.png +0 -0
  421. package/oxy-dev-tools/page/static/fileSys/word.png +0 -0
  422. package/oxy-dev-tools/page/static/fileSys/yasuo.png +0 -0
  423. package/oxy-dev-tools/page/static/fileSys/yinpin.png +0 -0
  424. package/oxy-dev-tools/page/static/fold.png +0 -0
  425. package/oxy-dev-tools/page/static/menu.png +0 -0
  426. package/oxy-dev-tools/page/static/refresh.png +0 -0
  427. package/oxy-dev-tools/page/static/unfold.png +0 -0
  428. package/oxy-dev-tools/tools.vue +22 -0
  429. package/oxy-dev-tools/type/devTools.d.ts +406 -0
  430. package/package.json +2 -2
  431. package/styles/all.scss +125 -0
  432. package/tags.json +1 -1
  433. package/vite-plugins/vite-plugin-host-class.ts +166 -0
  434. package/web-types.json +1 -1
@@ -46,7 +46,9 @@ export default {
46
46
  name: 'oxy-file-list',
47
47
  options: {
48
48
  addGlobalClass: true,
49
+ // #ifndef MP-TOUTIAO
49
50
  virtualHost: true,
51
+ // #endif
50
52
  styleIsolation: 'shared'
51
53
  }
52
54
  }
@@ -69,6 +71,7 @@ import { ref, nextTick } from 'vue'
69
71
  import { isImageUrl, isVideoUrl, isAudioUrl, isPdfUrl, isDocUrl } from '../common/util'
70
72
  import { type FileListItem, fileListProps } from './types'
71
73
  import type { VideoPreviewInstance } from '../oxy-video-preview/types'
74
+ import { useTranslate } from '../composables/useTranslate'
72
75
 
73
76
  const imgs: AnyObject = {
74
77
  pdf: ImgPdf,
@@ -81,6 +84,7 @@ const imgs: AnyObject = {
81
84
 
82
85
  const props = defineProps(fileListProps)
83
86
  const emit = defineEmits(['delete', 'click'])
87
+ const { translate } = useTranslate('fileList')
84
88
 
85
89
  const videoPreview = ref<VideoPreviewInstance>()
86
90
  const toast = useToast('oxy-file-list')
@@ -96,7 +100,7 @@ function isDownloading(file: FileListItem) {
96
100
  */
97
101
  function handlePreviewImage(file: FileListItem) {
98
102
  const { onPreviewFail } = props
99
- toast.loading({ msg: '正在打开预览...', direction: 'vertical', position: 'middle' })
103
+ toast.loading({ msg: translate('openingPreview'), direction: 'vertical', position: 'middle' })
100
104
  uni.previewImage({
101
105
  urls: [file.url],
102
106
  current: 0,
@@ -109,7 +113,7 @@ function handlePreviewImage(file: FileListItem) {
109
113
  file
110
114
  })
111
115
  } else {
112
- toast.error({ msg: '预览图片失败', direction: 'vertical', position: 'middle' })
116
+ toast.error({ msg: translate('previewImageFail'), direction: 'vertical', position: 'middle' })
113
117
  }
114
118
  toast.close()
115
119
  },
@@ -125,7 +129,7 @@ function handlePreviewImage(file: FileListItem) {
125
129
  */
126
130
  function handlePreviewVideo(file: FileListItem) {
127
131
  const { onPreviewFail } = props
128
- toast.loading({ msg: '正在打开预览...', direction: 'vertical', position: 'middle' })
132
+ toast.loading({ msg: translate('openingPreview'), direction: 'vertical', position: 'middle' })
129
133
  // #ifdef MP-WEIXIN
130
134
  uni.previewMedia({
131
135
  current: 0,
@@ -145,7 +149,7 @@ function handlePreviewVideo(file: FileListItem) {
145
149
  file
146
150
  })
147
151
  } else {
148
- toast.error({ msg: '预览视频失败', direction: 'vertical', position: 'middle' })
152
+ toast.error({ msg: translate('previewVideoFail'), direction: 'vertical', position: 'middle' })
149
153
  }
150
154
  toast.close()
151
155
  },
@@ -168,7 +172,7 @@ function handlePreviewVideo(file: FileListItem) {
168
172
  */
169
173
  function handlePreviewFile(file: FileListItem) {
170
174
  const { onPreviewFail } = props
171
- toast.loading({ msg: '正在打开预览...', direction: 'vertical', position: 'middle' })
175
+ toast.loading({ msg: translate('openingPreview'), direction: 'vertical', position: 'middle' })
172
176
  uni.openDocument({
173
177
  filePath: file.url,
174
178
  showMenu: true,
@@ -181,7 +185,7 @@ function handlePreviewFile(file: FileListItem) {
181
185
  file
182
186
  })
183
187
  } else {
184
- toast.error({ msg: '预览文件失败', direction: 'vertical', position: 'middle' })
188
+ toast.error({ msg: translate('previewFileFail'), direction: 'vertical', position: 'middle' })
185
189
  }
186
190
  toast.close()
187
191
  },
@@ -217,6 +221,14 @@ function handleClick(file: FileListItem, index: number) {
217
221
  }
218
222
  }
219
223
 
224
+ /**
225
+ * 下载文件。跨平台实现:
226
+ * - 微信小程序:uni.downloadFile → uni.saveFile
227
+ * - H5:创建隐藏 <a> 标签触发下载
228
+ * - App:uni.downloadFile → uni.saveFile
229
+ * 支持 beforeDownload 拦截,通过 resolve(true) 继续下载。
230
+ * @param file - 文件项
231
+ */
220
232
  function onDownload(file: FileListItem) {
221
233
  const { beforeDownload, onDownloadSuccess, onDownloadFail } = props
222
234
 
@@ -234,7 +246,7 @@ function onDownload(file: FileListItem) {
234
246
  if (onDownloadSuccess) {
235
247
  onDownloadSuccess({ file, tempFilePath })
236
248
  } else {
237
- toast.success({ msg: `下载成功:${filename}`, direction: 'vertical', position: 'middle' })
249
+ toast.success({ msg: translate('downloadSuccess') + filename, direction: 'vertical', position: 'middle' })
238
250
  }
239
251
  downloading.value[file.url] = false
240
252
  },
@@ -242,7 +254,7 @@ function onDownload(file: FileListItem) {
242
254
  if (onDownloadFail) {
243
255
  onDownloadFail({ file })
244
256
  } else {
245
- toast.error({ msg: `下载失败:${filename}`, direction: 'vertical', position: 'middle' })
257
+ toast.error({ msg: translate('downloadFail') + filename, direction: 'vertical', position: 'middle' })
246
258
  }
247
259
  downloading.value[file.url] = false
248
260
  }
@@ -252,7 +264,7 @@ function onDownload(file: FileListItem) {
252
264
  if (onDownloadFail) {
253
265
  onDownloadFail({ file })
254
266
  } else {
255
- toast.error({ msg: `下载失败:${filename}`, direction: 'vertical', position: 'middle' })
267
+ toast.error({ msg: translate('downloadFail') + filename, direction: 'vertical', position: 'middle' })
256
268
  }
257
269
  downloading.value[file.url] = false
258
270
  }
@@ -270,14 +282,14 @@ function onDownload(file: FileListItem) {
270
282
  if (onDownloadSuccess) {
271
283
  onDownloadSuccess({ file })
272
284
  } else {
273
- toast.success({ msg: `下载成功:${filename}`, direction: 'vertical', position: 'middle' })
285
+ toast.success({ msg: translate('downloadSuccess') + filename, direction: 'vertical', position: 'middle' })
274
286
  }
275
287
  downloading.value[file.url] = false
276
288
  } catch (e) {
277
289
  if (onDownloadFail) {
278
290
  onDownloadFail({ file })
279
291
  } else {
280
- toast.error({ msg: `下载失败:${filename}`, direction: 'vertical', position: 'middle' })
292
+ toast.error({ msg: translate('downloadFail') + filename, direction: 'vertical', position: 'middle' })
281
293
  }
282
294
  downloading.value[file.url] = false
283
295
  }
@@ -293,7 +305,7 @@ function onDownload(file: FileListItem) {
293
305
  if (onDownloadSuccess) {
294
306
  onDownloadSuccess({ file, tempFilePath })
295
307
  } else {
296
- toast.success({ msg: `下载成功:${filename}`, direction: 'vertical', position: 'middle' })
308
+ toast.success({ msg: translate('downloadSuccess') + filename, direction: 'vertical', position: 'middle' })
297
309
  }
298
310
  downloading.value[file.url] = false
299
311
  },
@@ -301,7 +313,7 @@ function onDownload(file: FileListItem) {
301
313
  if (onDownloadFail) {
302
314
  onDownloadFail({ file })
303
315
  } else {
304
- toast.error({ msg: `下载失败:${filename}`, direction: 'vertical', position: 'middle' })
316
+ toast.error({ msg: translate('downloadFail') + filename, direction: 'vertical', position: 'middle' })
305
317
  }
306
318
  downloading.value[file.url] = false
307
319
  }
@@ -311,7 +323,7 @@ function onDownload(file: FileListItem) {
311
323
  if (onDownloadFail) {
312
324
  onDownloadFail({ file })
313
325
  } else {
314
- toast.error({ msg: `下载失败:${filename}`, direction: 'vertical', position: 'middle' })
326
+ toast.error({ msg: translate('downloadFail') + filename, direction: 'vertical', position: 'middle' })
315
327
  }
316
328
  downloading.value[file.url] = false
317
329
  }
@@ -333,10 +345,10 @@ function onDownload(file: FileListItem) {
333
345
 
334
346
  function onDelete(file: FileListItem, index: number) {
335
347
  const execDelete = () => {
336
- const title = '确认删除文件'
337
- const msg = file.name || '确认删除该文件?'
348
+ const title = translate('confirmDeleteTitle')
349
+ const msg = file.name || translate('confirmDeleteMsg')
338
350
  message
339
- .confirm({ title, msg, confirmButtonText: '删除', cancelButtonText: '取消' })
351
+ .confirm({ title, msg, confirmButtonText: translate('delete'), cancelButtonText: translate('cancel') })
340
352
  .then(() => {
341
353
  emit('delete', { file, index })
342
354
  })
@@ -1,13 +1,12 @@
1
1
  <template>
2
- <view
3
- :class="`oxy-floating-panel ${customClass} ${safeAreaInsetBottom ? 'is-safe' : ''}`"
4
- :style="rootStyle"
5
- @touchstart.passive="handleTouchStart"
6
- @touchmove.passive="handleTouchMove"
7
- @touchend="handleTouchEnd"
8
- @touchcancel="handleTouchEnd"
9
- >
10
- <view :class="`oxy-floating-panel__header`">
2
+ <view :class="`oxy-floating-panel ${customClass} ${safeAreaInsetBottom ? 'is-safe' : ''}`" :style="rootStyle">
3
+ <view
4
+ :class="`oxy-floating-panel__header`"
5
+ @touchstart.passive="handleTouchStart"
6
+ @touchmove.stop.prevent="handleTouchMove"
7
+ @touchend="handleTouchEnd"
8
+ @touchcancel="handleTouchEnd"
9
+ >
11
10
  <view :class="`oxy-floating-panel__header-bar`"></view>
12
11
  </view>
13
12
 
@@ -16,7 +15,10 @@
16
15
  data-id="content"
17
16
  :show-scrollbar="showScrollbar"
18
17
  scroll-y
18
+ @touchstart.stop.passive="handleTouchStart"
19
19
  @touchmove.stop.prevent="handleTouchMove"
20
+ @touchend.stop="handleTouchEnd"
21
+ @touchcancel.stop="handleTouchEnd"
20
22
  >
21
23
  <slot />
22
24
  </scroll-view>
@@ -27,7 +29,9 @@
27
29
  export default {
28
30
  name: 'oxy-floating-panel',
29
31
  options: {
32
+ // #ifndef MP-TOUTIAO
30
33
  virtualHost: true,
34
+ // #endif
31
35
  addGlobalClass: true,
32
36
  styleIsolation: 'shared'
33
37
  }
@@ -49,7 +53,7 @@ const emit = defineEmits(['update:height', 'height-change'])
49
53
  const heightValue = ref<number>(props.height)
50
54
 
51
55
  const DAMP = 0.2 // 阻尼系数
52
- let startY: number // 起始位置
56
+ let startY = 0 // 起始位置
53
57
  const windowHeight = ref<number>(0)
54
58
  const dragging = ref<boolean>(false) // 是否正在拖拽
55
59
 
@@ -76,6 +80,9 @@ const updateHeight = (value: number) => {
76
80
  }
77
81
 
78
82
  const handleTouchStart = (event: TouchEvent) => {
83
+ const target = event.currentTarget as any
84
+ if (target.dataset.id == 'content' && !props.contentDraggable) return
85
+
79
86
  touch.touchStart(event)
80
87
  dragging.value = true
81
88
  startY = -heightValue.value
@@ -86,12 +93,23 @@ const handleTouchMove = (event: TouchEvent) => {
86
93
  if (target.dataset.id == 'content') {
87
94
  if (!props.contentDraggable) return
88
95
  }
96
+
97
+ if (!dragging.value) {
98
+ handleTouchStart(event)
99
+ }
100
+
89
101
  touch.touchMove(event)
90
102
  const moveY = touch.deltaY.value + startY
91
103
  updateHeight(-ease(moveY))
92
104
  }
93
105
 
106
+ /**
107
+ * 触摸结束,将面板吸附到最近的锚点。
108
+ * 使用 closest 工具函数找到最近的 anchors 值,emit height-change 事件。
109
+ */
94
110
  const handleTouchEnd = () => {
111
+ if (!dragging.value) return
112
+
95
113
  dragging.value = false
96
114
  updateHeight(closest(anchors.value, heightValue.value))
97
115
 
@@ -100,6 +118,12 @@ const handleTouchEnd = () => {
100
118
  }
101
119
  }
102
120
 
121
+ /**
122
+ * 弹性阻尼函数,限制拖拽范围。
123
+ * 超出边界 max 或低于边界 min 时应用阻尼系数 DAMP,产生越界回弹效果。
124
+ * @param y - 当前拖拽偏移量
125
+ * @returns 阻尼处理后的偏移量
126
+ */
103
127
  const ease = (y: number) => {
104
128
  const absDistance = Math.abs(y)
105
129
  const { min, max } = boundary.value
@@ -12,6 +12,13 @@
12
12
  overflow: visible;
13
13
  padding: 0;
14
14
  background-color: $-footer-bg;
15
+
16
+ @include when(safe) {
17
+ box-sizing: content-box;
18
+ padding-bottom: constant(safe-area-inset-bottom);
19
+ padding-bottom: env(safe-area-inset-bottom);
20
+ }
21
+
15
22
  @include e(content) {
16
23
  overflow: visible;
17
24
  padding: $-footer-padding;
@@ -1,7 +1,7 @@
1
1
  <template>
2
2
  <view class="oxy-footer-placeholder" :style="{ height: placeholderHeight }"></view>
3
3
  <view class="oxy-footer-wrapper">
4
- <view :class="`oxy-footer ${customClass}`" :style="`background-color: ${backgroundColor};${customStyle}`">
4
+ <view :class="`oxy-footer ${customClass} ${safeAreaInsetBottom ? 'is-safe' : ''}`" :style="`background-color: ${backgroundColor};${customStyle}`">
5
5
  <view class="oxy-footer__content" :style="contentStyle">
6
6
  <slot></slot>
7
7
  </view>
@@ -13,7 +13,9 @@ export default {
13
13
  name: 'oxy-footer',
14
14
  options: {
15
15
  addGlobalClass: true,
16
+ // #ifndef MP-TOUTIAO
16
17
  virtualHost: true,
18
+ // #endif
17
19
  styleIsolation: 'shared'
18
20
  }
19
21
  }
@@ -67,7 +69,7 @@ onMounted(() => {
67
69
  getHeight()
68
70
  })
69
71
 
70
- watch([() => props.height, () => props.customStyle, () => props.customClass, () => props.backgroundColor], () => {
72
+ watch([() => props.height, () => props.customStyle, () => props.customClass, () => props.backgroundColor, () => props.safeAreaInsetBottom], () => {
71
73
  getHeight()
72
74
  })
73
75
  </script>
@@ -1,17 +1,20 @@
1
- import { baseProps, makeStringProp, makeNumberProp } from '../common/props'
1
+ import { baseProps, makeBooleanProp, makeStringProp, makeNumberProp } from '../common/props'
2
2
 
3
3
  export const footerProps = {
4
4
  ...baseProps,
5
5
  /**
6
6
  * 固定的内容高度
7
- * 类型:number
8
- * 默认值:'id'
7
+ * 默认行为:0 表示由内容自适应
9
8
  */
10
9
  height: makeNumberProp(0),
11
10
  /**
12
11
  * 背景色
13
- * 类型:string
14
- * 默认值:''
12
+ * 默认行为:空字符串,使用组件默认背景色
15
13
  */
16
- backgroundColor: makeStringProp('')
14
+ backgroundColor: makeStringProp(''),
15
+ /**
16
+ * 是否设置底部安全距离(iPhone X 等机型)
17
+ * 默认行为:true,自动补齐底部安全区
18
+ */
19
+ safeAreaInsetBottom: makeBooleanProp(true)
17
20
  }
@@ -10,7 +10,9 @@ export default {
10
10
  name: 'oxy-form',
11
11
  options: {
12
12
  addGlobalClass: true,
13
+ // #ifndef MP-TOUTIAO
13
14
  virtualHost: true,
15
+ // #endif
14
16
  styleIsolation: 'shared'
15
17
  }
16
18
  }
@@ -143,7 +145,11 @@ async function validate(prop?: string | string[]): Promise<{ valid: boolean; err
143
145
  }
144
146
  }
145
147
 
146
- // 合并子组件的rules到父组件的rules
148
+ /**
149
+ * 合并父组件 rules 与子组件 rules。
150
+ * 过滤掉在 children 中不存在对应子组件的父级规则,再将子组件 rules 合并到同名 prop 下。
151
+ * @returns 合并后的完整校验规则
152
+ */
147
153
  function getMergeRules() {
148
154
  const mergedRules: FormRules = deepClone(props.rules)
149
155
  const childrenProps = children.map((child) => child.prop)
@@ -167,6 +173,12 @@ function getMergeRules() {
167
173
  return mergedRules
168
174
  }
169
175
 
176
+ /**
177
+ * 根据 errorType 展示错误提示。
178
+ * toast 模式:显示排序后的第一条错误。
179
+ * message 模式:将所有错误写入 errorMessages,由各子组件自行展示。
180
+ * @param errors - 校验错误列表
181
+ */
170
182
  function showMessage(errors: ErrorMessage[]) {
171
183
  const childrenProps = children.map((e) => e.prop).filter(Boolean)
172
184
  const messages = errors.filter((error) => error.message && childrenProps.includes(error.prop))
@@ -17,7 +17,9 @@ export default {
17
17
  name: 'oxy-form-item',
18
18
  options: {
19
19
  addGlobalClass: true,
20
+ // #ifndef MP-TOUTIAO
20
21
  virtualHost: true,
22
+ // #endif
21
23
  styleIsolation: 'shared'
22
24
  }
23
25
  }
@@ -35,15 +37,15 @@ const props = defineProps(formItemProps)
35
37
  const { parent: form, index } = useParent(FORM_KEY)
36
38
 
37
39
  const errorMessage = computed(() => {
38
- if (form && props.prop && form.errorMessages && form.errorMessages[props.prop]) {
39
- return form.errorMessages[props.prop]
40
+ if (form.value && props.prop && form.value.errorMessages && form.value.errorMessages[props.prop]) {
41
+ return form.value.errorMessages[props.prop]
40
42
  } else {
41
43
  return ''
42
44
  }
43
45
  })
44
46
 
45
47
  const border = computed(() => {
46
- if (index.value > 0 && form && form.props.border) {
48
+ if (index.value > 0 && form.value && form.value.props.border) {
47
49
  return true
48
50
  } else {
49
51
  return false
@@ -7,7 +7,9 @@ export default {
7
7
  name: 'oxy-gap',
8
8
  options: {
9
9
  addGlobalClass: true,
10
+ // #ifndef MP-TOUTIAO
10
11
  virtualHost: true,
12
+ // #endif
11
13
  styleIsolation: 'shared'
12
14
  }
13
15
  }
@@ -3,13 +3,20 @@ import { ref, nextTick, watch } from 'vue'
3
3
  import { useToast } from '../oxy-toast'
4
4
  import { storeToRefs } from 'pinia'
5
5
  import { useGlobalLoading } from '../composables/useGlobalLoading'
6
- import { getCurrentPath } from '../common/path'
6
+ import { getCurrentPageStackDepth, getCurrentPath } from '../common/path'
7
7
 
8
8
  const { loadingOptions, currentPage } = storeToRefs(useGlobalLoading())
9
9
 
10
10
  const { close: closeGlobalLoading } = useGlobalLoading()
11
11
 
12
12
  const loading = useToast('globalLoading')
13
+ const ownerPage = getCurrentPath()
14
+ const ownerPageDepth = getCurrentPageStackDepth()
15
+
16
+ function isCurrentPage() {
17
+ if (!ownerPage) return currentPage.value === getCurrentPath()
18
+ return currentPage.value === ownerPage && getCurrentPageStackDepth() === ownerPageDepth
19
+ }
13
20
 
14
21
  // #ifdef MP-ALIPAY
15
22
  const hackAlipayVisible = ref(false)
@@ -23,12 +30,16 @@ watch(
23
30
  () => loadingOptions.value,
24
31
  (newVal) => {
25
32
  if (newVal && newVal.show) {
26
- if (currentPage.value === getCurrentPath()) {
27
- loading.loading(loadingOptions.value)
33
+ if (!isCurrentPage()) {
34
+ loading.close()
35
+ return
28
36
  }
29
- } else {
30
- loading.close()
37
+
38
+ loading.loading(loadingOptions.value)
39
+ return
31
40
  }
41
+
42
+ loading.close()
32
43
  }
33
44
  )
34
45
  </script>
@@ -36,7 +47,9 @@ watch(
36
47
  <script lang="ts">
37
48
  export default {
38
49
  options: {
50
+ // #ifndef MP-TOUTIAO
39
51
  virtualHost: true,
52
+ // #endif
40
53
  addGlobalClass: true,
41
54
  styleIsolation: 'shared'
42
55
  }
@@ -4,11 +4,18 @@ import { useMessage } from '../oxy-message-box'
4
4
  import { deepClone, isFunction } from '../common/util'
5
5
  import { storeToRefs } from 'pinia'
6
6
  import { useGlobalMessage } from '../composables/useGlobalMessage'
7
- import { getCurrentPath } from '../common/path'
7
+ import { getCurrentPageStackDepth, getCurrentPath } from '../common/path'
8
8
 
9
9
  const { messageOptions, currentPage } = storeToRefs(useGlobalMessage())
10
10
 
11
11
  const messageBox = useMessage('globalMessage')
12
+ const ownerPage = getCurrentPath()
13
+ const ownerPageDepth = getCurrentPageStackDepth()
14
+
15
+ function isCurrentPage() {
16
+ if (!ownerPage) return currentPage.value === getCurrentPath()
17
+ return currentPage.value === ownerPage && getCurrentPageStackDepth() === ownerPageDepth
18
+ }
12
19
 
13
20
  // #ifdef MP-ALIPAY
14
21
  const hackAlipayVisible = ref(false)
@@ -22,24 +29,28 @@ watch(
22
29
  () => messageOptions.value,
23
30
  (newVal) => {
24
31
  if (newVal) {
25
- if (currentPage.value === getCurrentPath()) {
26
- const option = deepClone(newVal)
27
- messageBox
28
- .show(option)
29
- .then((res) => {
30
- if (isFunction(option.success)) {
31
- option.success(res)
32
- }
33
- })
34
- .catch((err) => {
35
- if (isFunction(option.fail)) {
36
- option.fail(err)
37
- }
38
- })
32
+ if (!isCurrentPage()) {
33
+ messageBox.close()
34
+ return
39
35
  }
40
- } else {
41
- messageBox.close()
36
+
37
+ const option = deepClone(newVal)
38
+ messageBox
39
+ .show(option)
40
+ .then((res) => {
41
+ if (isFunction(option.success)) {
42
+ option.success(res)
43
+ }
44
+ })
45
+ .catch((err) => {
46
+ if (isFunction(option.fail)) {
47
+ option.fail(err)
48
+ }
49
+ })
50
+ return
42
51
  }
52
+
53
+ messageBox.close()
43
54
  }
44
55
  )
45
56
  </script>
@@ -47,7 +58,9 @@ watch(
47
58
  <script lang="ts">
48
59
  export default {
49
60
  options: {
61
+ // #ifndef MP-TOUTIAO
50
62
  virtualHost: true,
63
+ // #endif
51
64
  addGlobalClass: true,
52
65
  styleIsolation: 'shared'
53
66
  }
@@ -3,13 +3,20 @@ import { ref, nextTick, watch } from 'vue'
3
3
  import { useToast } from '../oxy-toast'
4
4
  import { storeToRefs } from 'pinia'
5
5
  import { useGlobalToast } from '../composables/useGlobalToast'
6
- import { getCurrentPath } from '../common/path'
6
+ import { getCurrentPageStackDepth, getCurrentPath } from '../common/path'
7
7
 
8
8
  const { toastOptions, currentPage } = storeToRefs(useGlobalToast())
9
9
 
10
10
  const { close: closeGlobalToast } = useGlobalToast()
11
11
 
12
12
  const toast = useToast('globalToast')
13
+ const ownerPage = getCurrentPath()
14
+ const ownerPageDepth = getCurrentPageStackDepth()
15
+
16
+ function isCurrentPage() {
17
+ if (!ownerPage) return currentPage.value === getCurrentPath()
18
+ return currentPage.value === ownerPage && getCurrentPageStackDepth() === ownerPageDepth
19
+ }
13
20
 
14
21
  // #ifdef MP-ALIPAY
15
22
  const hackAlipayVisible = ref(false)
@@ -23,12 +30,16 @@ watch(
23
30
  () => toastOptions.value,
24
31
  (newVal) => {
25
32
  if (newVal && newVal.show) {
26
- if (currentPage.value === getCurrentPath()) {
27
- toast.show(toastOptions.value)
33
+ if (!isCurrentPage()) {
34
+ toast.close()
35
+ return
28
36
  }
29
- } else {
30
- toast.close()
37
+
38
+ toast.show(toastOptions.value)
39
+ return
31
40
  }
41
+
42
+ toast.close()
32
43
  }
33
44
  )
34
45
  </script>
@@ -36,7 +47,9 @@ watch(
36
47
  <script lang="ts">
37
48
  export default {
38
49
  options: {
50
+ // #ifndef MP-TOUTIAO
39
51
  virtualHost: true,
52
+ // #endif
40
53
  addGlobalClass: true,
41
54
  styleIsolation: 'shared'
42
55
  }
@@ -9,7 +9,9 @@
9
9
  export default {
10
10
  name: 'oxy-grid',
11
11
  options: {
12
+ // #ifndef MP-TOUTIAO
12
13
  virtualHost: true,
14
+ // #endif
13
15
  addGlobalClass: true,
14
16
  styleIsolation: 'shared'
15
17
  }
@@ -80,6 +82,10 @@ const handleChildrenChange = debounce(() => {
80
82
  init()
81
83
  }, 50)
82
84
 
85
+ /**
86
+ * 初始化子项样式类。
87
+ * border 模式下根据 column 列数标记首行(is-first)、末行(is-last)、右边界(is-right)项,非 border 模式仅标记首行。
88
+ */
83
89
  function init() {
84
90
  if (!children) return
85
91
  children.forEach((item, index) => {
@@ -55,7 +55,7 @@
55
55
  background-color: $-grid-item-border-color;
56
56
  top: 0;
57
57
  left: 0;
58
- z-index: 1;
58
+ z-index: $-z-index-sticky;
59
59
  }
60
60
  &::after {
61
61
  content: "";