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
@@ -15,7 +15,9 @@ export default {
15
15
  },
16
16
  options: {
17
17
  addGlobalClass: true,
18
+ // #ifndef MP-TOUTIAO
18
19
  virtualHost: true,
20
+ // #endif
19
21
  styleIsolation: 'shared'
20
22
  },
21
23
  data() {
@@ -47,6 +49,11 @@ export default {
47
49
  })
48
50
  .join('\n')
49
51
  },
52
+ /**
53
+ * 从输入流中提取完整的 JSON 对象。使用深度计数器和字符串状态机,
54
+ * 支持字符串内转义和嵌套 JSON,处理流式传输中 JSON 对象可能跨 chunk 的情况。
55
+ * @returns {{ texts: string[], rest: string }} texts 为完整 JSON 字符串数组,rest 为未完成的部分
56
+ */
50
57
  extractJsonObjects(input) {
51
58
  const texts = []
52
59
  let start = -1
@@ -90,6 +97,10 @@ export default {
90
97
  const rest = start !== -1 ? input.slice(start) : ''
91
98
  return { texts, rest }
92
99
  },
100
+ /**
101
+ * 解析流数据并向外 emit。累积 pendingText,strip SSE 前缀,提取完整 JSON 对象逐个 emit。
102
+ * finished 为 true 时,清空缓冲区并 emit finished 事件。
103
+ */
93
104
  emitParsedStreamData({ chunk, finished }) {
94
105
  if (finished) {
95
106
  if (this.pendingText) {
@@ -121,6 +132,10 @@ export default {
121
132
  merged.set(b, a.length)
122
133
  return merged
123
134
  },
135
+ /**
136
+ * 分割可能不完整的 UTF-8 字节序列。从末尾向前扫描 continuation bytes,
137
+ * 通过首字节判断期望的字节数,期望数 > 实际数时截断为 pending 供下次拼接。
138
+ */
124
139
  splitIncompleteUtf8(bytes) {
125
140
  const len = bytes.length
126
141
  if (len === 0) {
@@ -157,6 +172,10 @@ export default {
157
172
 
158
173
  return { complete: bytes, pending: null }
159
174
  },
175
+ /**
176
+ * 手写 UTF-8 解码器(用于小程序等不支持 TextDecoder 的环境)。
177
+ * 支持 1-4 字节编码,包括 BMP 内字符和代理对(surrogate pair)。
178
+ */
160
179
  utf8Decode(bytes) {
161
180
  let out = ''
162
181
  for (let i = 0; i < bytes.length; i++) {
@@ -219,6 +238,10 @@ export default {
219
238
  }
220
239
  return out
221
240
  },
241
+ /**
242
+ * 小程序端 chunk 解码。将 Uint8Array chunk 合并到 pending buffer,
243
+ * 分割 UTF-8 边界后解码文本。finished 时清空 pending。
244
+ */
222
245
  decodeMpChunk(data, finished) {
223
246
  if (finished) {
224
247
  let tail = null
@@ -258,6 +281,12 @@ export default {
258
281
  this.$emit('stream-error', { message, type })
259
282
  },
260
283
  // #ifndef H5 || APP-PLUS
284
+ /**
285
+ * 小程序端流式请求处理。
286
+ * - cancel 模式:abort 请求并 finished
287
+ * - 正常请求:创建 uni.request(enableChunked),通过 onChunkReceived 逐块解码,
288
+ * success/fail 后清理缓冲区并 finish/error
289
+ */
261
290
  handleStreamRequest(newVal) {
262
291
  if (newVal && newVal.cancel) {
263
292
  if (this.requestTask) {
@@ -29,7 +29,9 @@ export default {
29
29
  name: 'oxy-swipe-action',
30
30
  options: {
31
31
  addGlobalClass: true,
32
+ // #ifndef MP-TOUTIAO
32
33
  virtualHost: true,
34
+ // #endif
33
35
  styleIsolation: 'shared'
34
36
  }
35
37
  }
@@ -102,6 +104,12 @@ onBeforeUnmount(() => {
102
104
  }
103
105
  })
104
106
 
107
+ /**
108
+ * 根据 modelValue 控制滑动状态
109
+ * 获取按钮宽度后,switch 到对应状态(close/left/right)
110
+ * @param value - 目标状态
111
+ * @param old - 旧状态(用于关闭时避免重复动画)
112
+ */
105
113
  function changeState(value: SwipeActionStatus, old?: SwipeActionStatus) {
106
114
  if (props.disabled) {
107
115
  return
@@ -80,7 +80,9 @@ export default {
80
80
  name: 'oxy-swiper',
81
81
  options: {
82
82
  addGlobalClass: true,
83
+ // #ifndef MP-TOUTIAO
83
84
  virtualHost: true,
85
+ // #endif
84
86
  styleIsolation: 'shared'
85
87
  }
86
88
  }
@@ -151,6 +153,10 @@ const swiperIndicator = computed(() => {
151
153
  return swiperIndicator
152
154
  })
153
155
 
156
+ /**
157
+ * 判断元素是否为视频/图片类型
158
+ * 支持字符串 URL 和对象格式(通过 type 属性或 URL 后缀判断)
159
+ */
154
160
  const getMediaType = (item: string | SwiperList, type: 'video' | 'image') => {
155
161
  const checkType = (url: string) => (type === 'video' ? isVideoUrl(url) : isImageUrl(url))
156
162
 
@@ -30,7 +30,7 @@
30
30
  left: 30rpx;
31
31
 
32
32
  &::after {
33
- margin-left: 4rpx;
33
+ margin-left: $-spacing-4;
34
34
  border-width: 2rpx 0 0 2rpx;
35
35
  transform: translate(-50%, -50%) rotateZ(-45deg);
36
36
  }
@@ -53,7 +53,7 @@
53
53
  }
54
54
 
55
55
  @include m(fraction) {
56
- padding: 0 16rpx;
56
+ padding: 0 $-spacing-16;
57
57
  height: $-swiper-nav-fraction-height;
58
58
  line-height: $-swiper-nav-fraction-height;
59
59
  border-radius: calc($-swiper-nav-fraction-height / 2);
@@ -69,11 +69,11 @@
69
69
  height: $-swiper-nav-dot-size;
70
70
  background: $-swiper-nav-dot-color;
71
71
  border-radius: $-radius-circle;
72
- margin: 0 12rpx;
72
+ margin: 0 $-spacing-12;
73
73
  transition: all 0.4s ease-in;
74
74
 
75
75
  @include when(vertical) {
76
- margin: 12rpx 0;
76
+ margin: $-spacing-12 0;
77
77
  }
78
78
 
79
79
  @include when(active) {
@@ -6,10 +6,13 @@
6
6
  position: relative;
7
7
  width: $-switch-width;
8
8
  height: $-switch-height;
9
+ vertical-align: middle;
10
+ line-height: 1;
11
+ box-sizing: border-box;
9
12
  border-radius: $-switch-circle-size;
10
13
  background: $-switch-inactive-color;
11
14
  font-size: $-switch-size;
12
- transition: all .3s;
15
+ transition: all $-transition-duration-slow;
13
16
 
14
17
  @include e(checkbox) {
15
18
  position: absolute;
@@ -28,7 +31,7 @@
28
31
  left: 4rpx;
29
32
  background: $-switch-circle-bg;
30
33
  border-radius: $-radius-circle;
31
- transition: left .3s ease-out;
34
+ transition: left $-transition-duration-slow ease-out;
32
35
  box-shadow: 0 4rpx 8rpx 0 $-switch-inactive-shadow-color;
33
36
 
34
37
  &::after {
@@ -53,6 +56,6 @@
53
56
  }
54
57
  }
55
58
  @include when(disabled) {
56
- opacity: $-opacity-muted;
59
+ opacity: $-opacity-disabled;
57
60
  }
58
61
  }
@@ -8,7 +8,9 @@ export default {
8
8
  name: 'oxy-switch',
9
9
  options: {
10
10
  addGlobalClass: true,
11
+ // #ifndef MP-TOUTIAO
11
12
  virtualHost: true,
13
+ // #endif
12
14
  styleIsolation: 'shared'
13
15
  }
14
16
  }
@@ -45,6 +47,10 @@ const circleStyle = computed(() => {
45
47
  return circleStyle
46
48
  })
47
49
 
50
+ /**
51
+ * 切换开关状态。
52
+ * 支持 beforeChange 异步校验,通过 resolve(true/false) 决定是否执行切换。
53
+ */
48
54
  function switchValue() {
49
55
  if (props.disabled) return
50
56
  const newVal = props.modelValue === props.activeValue ? props.inactiveValue : props.activeValue
@@ -69,6 +75,10 @@ function switchValue() {
69
75
  }
70
76
  }
71
77
 
78
+ /**
79
+ * 初始化时校验 modelValue 是否在 activeValue/inactiveValue 范围内,
80
+ * 不在范围内则重置为 inactiveValue。
81
+ */
72
82
  onBeforeMount(() => {
73
83
  if ([props.activeValue, props.inactiveValue].indexOf(props.modelValue) === -1) {
74
84
  emit('update:modelValue', props.inactiveValue)
@@ -17,16 +17,10 @@
17
17
 
18
18
  .is-fullscreen {
19
19
  .oxy-tab {
20
- height: auto;
20
+ height: 100%;
21
21
  overflow: hidden;
22
22
  .oxy-tab__body {
23
23
  height: 100%;
24
24
  }
25
25
  }
26
-
27
- .oxy-tabs__body.is-animated {
28
- .oxy-tab {
29
- height: 100%;
30
- }
31
- }
32
26
  }
@@ -1,6 +1,6 @@
1
1
  <template>
2
- <view :class="`oxy-tab ${customClass}`" :style="customStyle">
3
- <view :class="['oxy-tab__body', { 'oxy-tab__body--inactive': !active }]" v-if="shouldBeRender" :style="tabBodyStyle">
2
+ <view :class="`oxy-tab ${customClass}`" :style="tabStyle">
3
+ <view :class="['oxy-tab__body', { 'oxy-tab__body--inactive': !active }]" v-if="shouldBeRender" :style="tabStyle">
4
4
  <slot />
5
5
  </view>
6
6
  </view>
@@ -10,7 +10,9 @@ export default {
10
10
  name: 'oxy-tab',
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
  }
@@ -30,17 +32,17 @@ const { parent: tabs, index } = useParent(TABS_KEY)
30
32
 
31
33
  // 激活项下标
32
34
  const active = computed(() => {
33
- return isDef(tabs) ? tabs.state.activeIndex === index.value : false
35
+ return isDef(tabs.value) ? tabs.value.state.activeIndex === index.value : false
34
36
  })
35
37
 
36
- const painted = ref<boolean>(active.value) // 初始状态tab不会渲染,必须通过tabs来设置painted使tab渲染
38
+ const painted = ref<boolean>(active.value) // 初始状态tab不会渲染,必须通过tabs.value来设置painted使tab渲染
37
39
 
38
- const tabBodyStyle = computed(() => {
40
+ const tabStyle = computed(() => {
39
41
  const style: CSSProperties = {}
40
- if (!active.value && (!isDef(tabs) || !tabs.props.animated)) {
42
+ if (!active.value && (!isDef(tabs.value) || !tabs.value.props.animated)) {
41
43
  style.display = 'none'
42
44
  }
43
- return objToStyle(style)
45
+ return `${objToStyle(style)}${props.customStyle}`
44
46
  })
45
47
 
46
48
  const shouldBeRender = computed(() => !props.lazy || painted.value || active.value)
@@ -56,7 +58,7 @@ watch(
56
58
  console.error('[Oxy ui] error(oxy-tab): the type of name should be number or string')
57
59
  return
58
60
  }
59
- if (tabs) {
61
+ if (tabs.value) {
60
62
  checkName(proxy)
61
63
  }
62
64
  },
@@ -75,8 +77,8 @@ function checkName(self: any) {
75
77
  if (myName === undefined || myName === null || myName === '') {
76
78
  return
77
79
  }
78
- tabs &&
79
- tabs.children.forEach((child: any) => {
80
+ tabs.value &&
81
+ tabs.value.children.forEach((child: any) => {
80
82
  if (child.$.uid !== self.$.uid && child.name === myName) {
81
83
  console.error(`The tab's bound value: ${myName} has been used`)
82
84
  }
@@ -15,7 +15,9 @@ export default {
15
15
  name: 'oxy-tabbar',
16
16
  options: {
17
17
  addGlobalClass: true,
18
+ // #ifndef MP-TOUTIAO
18
19
  virtualHost: true,
20
+ // #endif
19
21
  styleIsolation: 'shared'
20
22
  }
21
23
  }
@@ -92,6 +94,9 @@ function handleWindowResize() {
92
94
 
93
95
  useWindowResize(handleWindowResize)
94
96
 
97
+ /**
98
+ * 计算占位高度。fixed 模式下查询 tabbar 的 rect,计算底部占用高度并转换为 rpx,用于占位撑开内容。
99
+ */
95
100
  function setPlaceholderHeight() {
96
101
  if (!props.fixed || !props.placeholder) {
97
102
  placeholderHeight.value = ''
@@ -22,7 +22,9 @@ export default {
22
22
  name: 'oxy-tabbar-item',
23
23
  options: {
24
24
  addGlobalClass: true,
25
+ // #ifndef MP-TOUTIAO
25
26
  virtualHost: true,
27
+ // #endif
26
28
  styleIsolation: 'shared'
27
29
  }
28
30
  }
@@ -61,12 +63,12 @@ const customBadgeProps = computed(() => {
61
63
 
62
64
  const textStyle = computed(() => {
63
65
  const style: CSSProperties = {}
64
- if (tabbar) {
65
- if (active.value && tabbar.props.activeColor) {
66
- style['color'] = tabbar.props.activeColor
66
+ if (tabbar.value) {
67
+ if (active.value && tabbar.value.props.activeColor) {
68
+ style['color'] = tabbar.value.props.activeColor
67
69
  }
68
- if (!active.value && tabbar.props.inactiveColor) {
69
- style['color'] = tabbar.props.inactiveColor
70
+ if (!active.value && tabbar.value.props.inactiveColor) {
71
+ style['color'] = tabbar.value.props.inactiveColor
70
72
  }
71
73
  }
72
74
 
@@ -75,8 +77,8 @@ const textStyle = computed(() => {
75
77
 
76
78
  const active = computed(() => {
77
79
  const name = isDef(props.name) ? props.name : index.value
78
- if (tabbar) {
79
- if (tabbar.props.modelValue === name) {
80
+ if (tabbar.value) {
81
+ if (tabbar.value.props.modelValue === name) {
80
82
  return true
81
83
  } else {
82
84
  return false
@@ -87,11 +89,11 @@ const active = computed(() => {
87
89
  })
88
90
 
89
91
  /**
90
- * 点击tabbar选项
92
+ * 点击 tabbar 选项
91
93
  */
92
94
  function handleClick() {
93
95
  const name: string | number = isDef(props.name) ? props.name : index.value
94
- tabbar && tabbar.setChange({ name })
96
+ tabbar.value && tabbar.value.setChange({ name })
95
97
  }
96
98
  </script>
97
99
  <style lang="scss" scoped>
@@ -86,7 +86,7 @@
86
86
  background: $-table-bg;
87
87
  width: 200rpx;
88
88
  min-height: 100rpx;
89
- padding: 20rpx 24rpx;
89
+ padding: $-spacing-20 $-spacing-24;
90
90
  font-size: $-table-font-size;
91
91
  color: $-table-color;
92
92
  --oxy-sort-button-height: 64rpx;
@@ -112,7 +112,9 @@ export default {
112
112
  name: 'oxy-table',
113
113
  options: {
114
114
  addGlobalClass: true,
115
+ // #ifndef MP-TOUTIAO
115
116
  virtualHost: true,
117
+ // #endif
116
118
  styleIsolation: 'shared'
117
119
  }
118
120
  }
@@ -165,6 +167,9 @@ const tableStyle = computed(() => {
165
167
  return `${objToStyle(style)}${props.customStyle}`
166
168
  })
167
169
 
170
+ /**
171
+ * 表格实际宽度样式:根据所有列宽计算总宽度
172
+ */
168
173
  const realWidthStyle = computed(() => {
169
174
  const style: CSSProperties = {
170
175
  display: 'flex'
@@ -177,6 +182,9 @@ const realWidthStyle = computed(() => {
177
182
  return objToStyle(style)
178
183
  })
179
184
 
185
+ /**
186
+ * 表体高度样式:根据 rowHeight 和数据量计算
187
+ */
180
188
  const bodyStyle = computed(() => {
181
189
  const style: CSSProperties = {}
182
190
  if (isDef(props.height)) {
@@ -40,6 +40,9 @@ export const tableProps = {
40
40
  type: [Object, Boolean] as PropType<boolean | Omit<Partial<TableColumnProps>, 'prop'>>,
41
41
  default: false
42
42
  },
43
+ /**
44
+ * 是否固定表头
45
+ */
43
46
  fixedHeader: makeBooleanProp(true)
44
47
  }
45
48
 
@@ -21,7 +21,9 @@ export default {
21
21
  name: 'oxy-table-col',
22
22
  options: {
23
23
  addGlobalClass: true,
24
+ // #ifndef MP-TOUTIAO
24
25
  virtualHost: true,
26
+ // #endif
25
27
  styleIsolation: 'shared'
26
28
  }
27
29
  }
@@ -41,8 +43,8 @@ const sortDirection = ref<SortDirection>(0) // 排序方向
41
43
 
42
44
  // 是否开启斑马纹
43
45
  const stripe = computed(() => {
44
- if (isDef(table)) {
45
- return table.props.stripe
46
+ if (isDef(table.value)) {
47
+ return table.value.props.stripe
46
48
  } else {
47
49
  return false
48
50
  }
@@ -52,8 +54,8 @@ const stripe = computed(() => {
52
54
  * 是否有边框
53
55
  */
54
56
  const border = computed(() => {
55
- if (isDef(table)) {
56
- return table.props.border
57
+ if (isDef(table.value)) {
58
+ return table.value.props.border
57
59
  } else {
58
60
  return false
59
61
  }
@@ -63,8 +65,8 @@ const border = computed(() => {
63
65
  * 是否超出省略
64
66
  */
65
67
  const ellipsis = computed(() => {
66
- if (isDef(table)) {
67
- return table.props.ellipsis
68
+ if (isDef(table.value)) {
69
+ return table.value.props.ellipsis
68
70
  } else {
69
71
  return false
70
72
  }
@@ -75,8 +77,8 @@ const ellipsis = computed(() => {
75
77
  */
76
78
  const isLastFixed = computed(() => {
77
79
  let isLastFixed: boolean = false
78
- if (props.fixed && isDef(table)) {
79
- isLastFixed = table.getIsLastFixed(props)
80
+ if (props.fixed && isDef(table.value)) {
81
+ isLastFixed = table.value.getIsLastFixed(props)
80
82
  }
81
83
  return isLastFixed
82
84
  })
@@ -89,8 +91,8 @@ const columnStyle = computed(() => {
89
91
  if (isDef(props.width)) {
90
92
  style['width'] = withDefaultUnit(props.width)
91
93
  }
92
- if (props.fixed && isDef(table) && isFunction(table.getFixedStyle)) {
93
- style = table.getFixedStyle(columnIndex.value, style)
94
+ if (props.fixed && isDef(table.value) && isFunction(table.value.getFixedStyle)) {
95
+ style = table.value.getFixedStyle(columnIndex.value, style)
94
96
  }
95
97
  return style
96
98
  })
@@ -100,23 +102,23 @@ const columnStyle = computed(() => {
100
102
  */
101
103
  const cellStyle = computed(() => {
102
104
  let style: CSSProperties = {}
103
- const rowHeight: string | number = isDef(table) && isDef(table.props) ? table.props.rowHeight : 50 // 自定义行高
105
+ const rowHeight: string | number = isDef(table.value) && isDef(table.value.props) ? table.value.props.rowHeight : 50 // 自定义行高
104
106
  if (isDef(rowHeight)) {
105
107
  style['height'] = withDefaultUnit(rowHeight)
106
108
  }
107
- if (props.fixed && isDef(table) && isFunction(table.getFixedStyle)) {
108
- style = table.getFixedStyle(columnIndex.value, style)
109
+ if (props.fixed && isDef(table.value) && isFunction(table.value.getFixedStyle)) {
110
+ style = table.value.getFixedStyle(columnIndex.value, style)
109
111
  }
110
112
  return objToStyle(style)
111
113
  })
112
114
 
113
115
  // 列数据
114
116
  const column = computed(() => {
115
- if (!isDef(table) || !isDef(table.props) || !isDef(table.props.data) || !Array.isArray(table.props.data)) {
117
+ if (!isDef(table.value) || !isDef(table.value.props) || !isDef(table.value.props.data) || !Array.isArray(table.value.props.data)) {
116
118
  return []
117
119
  }
118
120
 
119
- const column: any[] = table.props.data.map((item) => {
121
+ const column: any[] = table.value.props.data.map((item) => {
120
122
  return item[props.prop]
121
123
  })
122
124
  return column
@@ -127,18 +129,18 @@ const column = computed(() => {
127
129
  * @param index 行下标
128
130
  */
129
131
  function handleRowClick(index: number) {
130
- if (!isDef(table)) {
132
+ if (!isDef(table.value)) {
131
133
  return
132
134
  }
133
- isFunction(table.rowClick) && table.rowClick(index)
135
+ isFunction(table.value.rowClick) && table.value.rowClick(index)
134
136
  }
135
137
 
136
138
  // 行数据
137
139
  function getScope(index: number) {
138
- if (!isDef(table) || !isDef(table.props) || !isDef(table.props.data) || !Array.isArray(table.props.data)) {
140
+ if (!isDef(table.value) || !isDef(table.value.props) || !isDef(table.value.props.data) || !Array.isArray(table.value.props.data)) {
139
141
  return {}
140
142
  }
141
- return table.props.data[index] || {}
143
+ return table.value.props.data[index] || {}
142
144
  }
143
145
 
144
146
  defineExpose({ sortDirection: sortDirection })
@@ -100,7 +100,7 @@
100
100
  height: $-tabs-nav-height;
101
101
  font-size: $-tabs-nav-fs;
102
102
  color: $-tabs-nav-color;
103
- transition: color .3s;
103
+ transition: color $-transition-duration-slow;
104
104
 
105
105
  @include when(active) {
106
106
  font-weight: $-fw-semibold;
@@ -127,7 +127,7 @@
127
127
  position: absolute;
128
128
  bottom: 8rpx;
129
129
  left: 0;
130
- z-index: 1;
130
+ z-index: $-z-index-sticky;
131
131
  height: $-tabs-nav-line-height;
132
132
  width: $-tabs-nav-line-width;
133
133
  background: $-tabs-nav-line-bg-color;
@@ -178,7 +178,7 @@
178
178
  top: 0;
179
179
  left: 0;
180
180
  right: 0;
181
- z-index: 1;
181
+ z-index: $-z-index-sticky;
182
182
  }
183
183
 
184
184
  @include e(map-btn) {
@@ -190,7 +190,7 @@
190
190
  line-height: $-tabs-nav-height;
191
191
  text-align: center;
192
192
  color: $-tabs-nav-map-arrow-color;
193
- z-index: 1;
193
+ z-index: $-z-index-sticky;
194
194
  background: $-tabs-nav-bg;
195
195
  -webkit-tap-highlight-color: transparent;
196
196
 
@@ -207,7 +207,7 @@
207
207
 
208
208
  @include e(map-arrow) {
209
209
  display: block;
210
- transition: transform .3s;
210
+ transition: transform $-transition-duration-slow;
211
211
 
212
212
  @include when(open) {
213
213
  transform: rotate(180deg);
@@ -221,23 +221,23 @@
221
221
  line-height: $-tabs-nav-height;
222
222
  font-size: $-tabs-nav-map-fs;
223
223
  color: $-tabs-nav-map-color;
224
- transition: opacity .3s;
224
+ transition: opacity $-transition-duration-slow;
225
225
  background: $-tabs-nav-bg;
226
226
  opacity: 0;
227
227
 
228
228
  @include halfPixelBorder;
229
229
 
230
230
  &::after {
231
- z-index: 3;
231
+ z-index: $-z-index-sticky;
232
232
  }
233
233
  }
234
234
 
235
235
  @include e(map-body) {
236
236
  display: flex;
237
237
  flex-wrap: wrap;
238
- padding: 40rpx 32rpx 24rpx;
238
+ padding: $-spacing-40 $-spacing-32 $-spacing-24;
239
239
  background: $-tabs-nav-bg;
240
- transition: transform .3s;
240
+ transition: transform $-transition-duration-slow;
241
241
  transform: scaleY(0);
242
242
  transform-origin: center top;
243
243
 
@@ -274,7 +274,7 @@
274
274
  color: $-tabs-nav-map-color;
275
275
  font-size: $-tabs-nav-map-fs;
276
276
  text-align: center;
277
- transition: color .3s, border-color .3s;
277
+ transition: color $-transition-duration-slow, border-color $-transition-duration-slow;
278
278
 
279
279
  @include when(active) {
280
280
  color: $-tabs-nav-active-color;
@@ -296,7 +296,7 @@
296
296
  bottom: 0;
297
297
  background: $-tabs-nav-map-modal-bg;
298
298
  opacity: 0;
299
- transition: opacity .3s;
299
+ transition: opacity $-transition-duration-slow;
300
300
  }
301
301
 
302
302
  @include when(slide) {
@@ -169,7 +169,9 @@ export default {
169
169
  name: 'oxy-tabs',
170
170
  options: {
171
171
  addGlobalClass: true,
172
+ // #ifndef MP-TOUTIAO
172
173
  virtualHost: true,
174
+ // #endif
173
175
  styleIsolation: 'shared'
174
176
  }
175
177
  }
@@ -326,6 +328,9 @@ onMounted(() => {
326
328
  })
327
329
  })
328
330
 
331
+ /**
332
+ * 切换 Tab Map(全部标签面板)的显隐,带淡入淡出动画
333
+ */
329
334
  function toggleMap() {
330
335
  if (state.mapShow) {
331
336
  state.animating = false
@@ -390,6 +395,10 @@ function setActiveTab() {
390
395
  }
391
396
  }
392
397
 
398
+ /**
399
+ * scroll-view 滚动到 active tab 居中位置。
400
+ * 若计算位置与当前相同,加微小随机偏移强制触发 scroll-view 重滚动。
401
+ */
393
402
  function scrollIntoView() {
394
403
  if (!state.inited) return
395
404
  Promise.all([getRect($item, true, proxy), getRect($container, false, proxy)]).then(([navItemsRects, navRect]) => {
@@ -438,6 +447,9 @@ function onTouchMove(event: any) {
438
447
  if (!props.swipeable) return
439
448
  touch.touchMove(event)
440
449
  }
450
+ /**
451
+ * 触摸滑动结束:检测水平滑动方向和距离,满足阈值则切换 tab
452
+ */
441
453
  function onTouchEnd() {
442
454
  if (!props.swipeable) return
443
455
  const { direction, deltaX, offsetX } = touch
@@ -450,6 +462,11 @@ function onTouchEnd() {
450
462
  }
451
463
  }
452
464
  }
465
+ /**
466
+ * 根据 modelValue 查找对应的 tabs 索引
467
+ * number 类型:直接使用(超出范围则回退到 0)
468
+ * string 类型:通过 children.name 匹配(匹配不到回退到 0)
469
+ */
453
470
  function getActiveIndex(value: number | string) {
454
471
  // name代表的索引超过了children长度的边界,自动用0兜底
455
472
  if (isNumber(value) && value >= children.length) {