oxy-uni-ui 2.1.0 → 2.1.2

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 (269) hide show
  1. package/attributes.json +1 -1
  2. package/components/common/abstracts/variable.scss +145 -100
  3. package/components/common/util.ts +25 -0
  4. package/components/composables/useDynamicVirtualScroll.ts +80 -0
  5. package/components/oxy-action-sheet/index.scss +6 -6
  6. package/components/oxy-backtop/index.scss +1 -1
  7. package/components/oxy-badge/index.scss +2 -2
  8. package/components/oxy-button/index.scss +3 -6
  9. package/components/oxy-calendar/index.scss +2 -2
  10. package/components/oxy-calendar/oxy-calendar.vue +3 -3
  11. package/components/oxy-calendar-view/monthPanel/month-panel.vue +72 -37
  12. package/components/oxy-calendar-view/monthPanel/types.ts +43 -1
  13. package/components/oxy-calendar-view/types.ts +1 -1
  14. package/components/oxy-calendar-view/utils.ts +12 -1
  15. package/components/oxy-calendar-view/yearPanel/types.ts +36 -2
  16. package/components/oxy-calendar-view/yearPanel/year-panel.vue +64 -45
  17. package/components/oxy-card/index.scss +4 -4
  18. package/components/oxy-cell/index.scss +1 -1
  19. package/components/oxy-cell-group/index.scss +2 -2
  20. package/components/oxy-checkbox/index.scss +87 -197
  21. package/components/oxy-collapse/index.scss +1 -1
  22. package/components/oxy-collapse-item/index.scss +2 -2
  23. package/components/oxy-corner/index.scss +3 -3
  24. package/components/oxy-count-to/oxy-count-to.vue +3 -3
  25. package/components/oxy-count-to/types.ts +1 -1
  26. package/components/oxy-date-strip-item/index.scss +4 -4
  27. package/components/oxy-datetime-picker/types.ts +1 -1
  28. package/components/oxy-datetime-picker-view/types.ts +2 -2
  29. package/components/oxy-fab/index.scss +1 -5
  30. package/components/oxy-file-list/index.scss +2 -2
  31. package/components/oxy-footer/index.scss +2 -2
  32. package/components/oxy-footer/oxy-footer.vue +2 -3
  33. package/components/oxy-form-item/index.scss +0 -5
  34. package/components/oxy-grid/oxy-grid.vue +1 -1
  35. package/components/oxy-grid-item/index.scss +1 -1
  36. package/components/oxy-guidance/index.scss +2 -2
  37. package/components/oxy-img/index.scss +2 -2
  38. package/components/oxy-img-cropper/index.scss +0 -2
  39. package/components/oxy-img-lazy/index.scss +0 -1
  40. package/components/oxy-index-anchor/index.scss +3 -3
  41. package/components/oxy-input/index.scss +2 -2
  42. package/components/oxy-input-number/index.scss +21 -3
  43. package/components/oxy-input-number/oxy-input-number.vue +9 -1
  44. package/components/oxy-keyboard/index.scss +1 -1
  45. package/components/oxy-link/index.scss +11 -10
  46. package/components/oxy-loading/index.scss +1 -1
  47. package/components/oxy-loadmore/index.scss +1 -1
  48. package/components/oxy-message-box/index.scss +7 -7
  49. package/components/oxy-navbar/index.scss +1 -1
  50. package/components/oxy-navbar/oxy-navbar.vue +2 -3
  51. package/components/oxy-password-input/index.scss +4 -4
  52. package/components/oxy-picker/types.ts +1 -1
  53. package/components/oxy-picker-view/oxy-picker-view.vue +8 -5
  54. package/components/oxy-picker-view/types.ts +2 -2
  55. package/components/oxy-progress/index.scss +2 -2
  56. package/components/oxy-radio/index.scss +8 -4
  57. package/components/oxy-radio-group/index.scss +0 -1
  58. package/components/oxy-rich-text/index.scss +2 -6
  59. package/components/oxy-rich-text/mp-html/mp-html.d.ts +2 -0
  60. package/components/oxy-rich-text/mp-html/mp-html.vue +2 -1
  61. package/components/oxy-rich-text/mp-html/node/node.vue +23 -0
  62. package/components/oxy-rich-text/mp-html/parser.js +6 -6
  63. package/components/oxy-rich-text/oxy-rich-text.vue +23 -0
  64. package/components/oxy-search/index.scss +1 -1
  65. package/components/oxy-segmented/index.scss +4 -8
  66. package/components/oxy-select/index.scss +6 -6
  67. package/components/oxy-sidebar-item/index.scss +20 -11
  68. package/components/oxy-slider/index.scss +4 -5
  69. package/components/oxy-sort-button/index.scss +6 -9
  70. package/components/oxy-splitter-panel/index.scss +8 -8
  71. package/components/oxy-step/index.scss +9 -9
  72. package/components/oxy-swiper-nav/index.scss +2 -2
  73. package/components/oxy-switch/index.scss +3 -3
  74. package/components/oxy-tab/index.scss +8 -2
  75. package/components/oxy-tabbar/index.scss +3 -3
  76. package/components/oxy-tabbar/oxy-tabbar.vue +3 -3
  77. package/components/oxy-table/index.scss +0 -1
  78. package/components/oxy-table-col/index.scss +1 -2
  79. package/components/oxy-tabs/index.scss +3 -3
  80. package/components/oxy-tag/index.scss +160 -20
  81. package/components/oxy-tag/oxy-tag.vue +14 -2
  82. package/components/oxy-tag/types.ts +9 -0
  83. package/components/oxy-text/index.scss +1 -1
  84. package/components/oxy-textarea/index.scss +2 -6
  85. package/components/oxy-toast/index.scss +1 -1
  86. package/components/oxy-tree/index.scss +31 -11
  87. package/components/oxy-tree/oxy-tree.vue +113 -2
  88. package/components/oxy-tree/types.ts +1 -0
  89. package/components/oxy-upload/index.scss +3 -3
  90. package/components/oxy-video-preview/index.scss +3 -3
  91. package/components/oxy-virtual-scroll/index.scss +1 -1
  92. package/components/oxy-voice-player/index.scss +36 -36
  93. package/components/oxy-watermark/index.scss +1 -1
  94. package/dev-tools.ts +2 -0
  95. package/devTools/components/DevToolsOverlay.vue +56 -0
  96. package/devTools/components/DevToolsUiHost.vue +589 -0
  97. package/devTools/config.js +55 -0
  98. package/devTools/core/components/mpDevBubble.vue +174 -0
  99. package/devTools/core/libs/createH5Bubble.js +156 -0
  100. package/devTools/core/libs/devCache.js +151 -0
  101. package/devTools/core/libs/devOptions.js +163 -0
  102. package/devTools/core/libs/devUi.js +219 -0
  103. package/devTools/core/libs/drawView.js +140 -0
  104. package/devTools/core/libs/errorReport.js +64 -0
  105. package/devTools/core/libs/jsonCompress.js +334 -0
  106. package/devTools/core/libs/logReport.js +59 -0
  107. package/devTools/core/libs/pageLinkList.js +125 -0
  108. package/devTools/core/libs/timeFormat.js +94 -0
  109. package/devTools/core/proxy/console.js +430 -0
  110. package/devTools/core/proxy/index.js +36 -0
  111. package/devTools/core/proxy/request.js +495 -0
  112. package/devTools/core/proxy/storage.js +113 -0
  113. package/devTools/core/proxy/uniBus.js +153 -0
  114. package/devTools/core/proxy/uniListen.js +192 -0
  115. package/devTools/core/proxy/vueMixin.js +120 -0
  116. package/devTools/index.js +168 -0
  117. package/devTools/page/components/bottomTools.vue +1046 -0
  118. package/devTools/page/components/dialog/addStorage.vue +204 -0
  119. package/devTools/page/components/dialog/createDir.vue +366 -0
  120. package/devTools/page/components/dialog/editDialog.vue +192 -0
  121. package/devTools/page/components/dialog/routeDialog.vue +184 -0
  122. package/devTools/page/components/dialog/sendRequest.vue +603 -0
  123. package/devTools/page/components/dialog/textFileEditDialog.vue +391 -0
  124. package/devTools/page/components/libs/appDelDir.js +86 -0
  125. package/devTools/page/components/libs/dirReader.js +248 -0
  126. package/devTools/page/components/libs/fileSize.js +15 -0
  127. package/devTools/page/components/libs/getRuntimeInfo.js +134 -0
  128. package/devTools/page/components/listItem/consoleItem.vue +314 -0
  129. package/devTools/page/components/listItem/errorItem.vue +292 -0
  130. package/devTools/page/components/listItem/fileSysItem.vue +533 -0
  131. package/devTools/page/components/listItem/infoList.vue +100 -0
  132. package/devTools/page/components/listItem/jsRunnerItem.vue +255 -0
  133. package/devTools/page/components/listItem/logItem.vue +193 -0
  134. package/devTools/page/components/listItem/networkItem.vue +398 -0
  135. package/devTools/page/components/listItem/objectAnalysis.vue +651 -0
  136. package/devTools/page/components/listItem/pages.vue +319 -0
  137. package/devTools/page/components/listItem/routeItem.vue +153 -0
  138. package/devTools/page/components/listItem/setting.vue +734 -0
  139. package/devTools/page/components/listItem/storageList.vue +681 -0
  140. package/devTools/page/components/listItem/tools.vue +315 -0
  141. package/devTools/page/components/listItem/vuexList.vue +599 -0
  142. package/devTools/page/components/main.vue +1867 -0
  143. package/devTools/page/components/mixins/animationControl.js +91 -0
  144. package/devTools/page/components/mixins/mp.js +83 -0
  145. package/devTools/page/components/ui/btnTabs.vue +90 -0
  146. package/devTools/page/components/ui/codeHisPicker.vue +172 -0
  147. package/devTools/page/components/ui/h5Cell.vue +13 -0
  148. package/devTools/page/components/ui/menuBtn.vue +94 -0
  149. package/devTools/page/components/ui/mobileSwiperScroll.vue +74 -0
  150. package/devTools/page/components/ui/requestSpeedLimit.vue +52 -0
  151. package/devTools/page/components/ui/requestTimeoutMock.vue +55 -0
  152. package/devTools/page/components/ui/subTitleBar.vue +101 -0
  153. package/devTools/page/static/copy.png +0 -0
  154. package/devTools/page/static/delete.png +0 -0
  155. package/devTools/page/static/fileSys/AI.png +0 -0
  156. package/devTools/page/static/fileSys/DWG.png +0 -0
  157. package/devTools/page/static/fileSys/EXE.png +0 -0
  158. package/devTools/page/static/fileSys/GIF.png +0 -0
  159. package/devTools/page/static/fileSys/HTML.png +0 -0
  160. package/devTools/page/static/fileSys/PSD.png +0 -0
  161. package/devTools/page/static/fileSys/RVT.png +0 -0
  162. package/devTools/page/static/fileSys/SKP.png +0 -0
  163. package/devTools/page/static/fileSys/SVG.png +0 -0
  164. package/devTools/page/static/fileSys/excel.png +0 -0
  165. package/devTools/page/static/fileSys/pdf.png +0 -0
  166. package/devTools/page/static/fileSys/pptl.png +0 -0
  167. package/devTools/page/static/fileSys/shipin.png +0 -0
  168. package/devTools/page/static/fileSys/tupian.png +0 -0
  169. package/devTools/page/static/fileSys/txt.png +0 -0
  170. package/devTools/page/static/fileSys/weizhiwenjian.png +0 -0
  171. package/devTools/page/static/fileSys/wenjianjia.png +0 -0
  172. package/devTools/page/static/fileSys/word.png +0 -0
  173. package/devTools/page/static/fileSys/yasuo.png +0 -0
  174. package/devTools/page/static/fileSys/yinpin.png +0 -0
  175. package/devTools/page/static/fold.png +0 -0
  176. package/devTools/page/static/menu.png +0 -0
  177. package/devTools/page/static/refresh.png +0 -0
  178. package/devTools/page/static/unfold.png +0 -0
  179. package/devTools/tools.vue +25 -0
  180. package/devTools/type/devTools.d.ts +406 -0
  181. package/oxy-dev-tools/components/DevToolsUiHost.vue +555 -0
  182. package/oxy-dev-tools/config.js +61 -0
  183. package/oxy-dev-tools/core/components/mpDevBubble.vue +176 -0
  184. package/oxy-dev-tools/core/libs/createH5Bubble.js +156 -0
  185. package/oxy-dev-tools/core/libs/devCache.js +149 -0
  186. package/oxy-dev-tools/core/libs/devOptions.js +160 -0
  187. package/oxy-dev-tools/core/libs/devUi.js +219 -0
  188. package/oxy-dev-tools/core/libs/drawView.js +144 -0
  189. package/oxy-dev-tools/core/libs/errorReport.js +60 -0
  190. package/oxy-dev-tools/core/libs/jsonCompress.js +328 -0
  191. package/oxy-dev-tools/core/libs/logReport.js +55 -0
  192. package/oxy-dev-tools/core/libs/pageLinkList.js +121 -0
  193. package/oxy-dev-tools/core/libs/timeFormat.js +93 -0
  194. package/oxy-dev-tools/core/proxy/console.js +398 -0
  195. package/oxy-dev-tools/core/proxy/index.js +33 -0
  196. package/oxy-dev-tools/core/proxy/request.js +473 -0
  197. package/oxy-dev-tools/core/proxy/storage.js +96 -0
  198. package/oxy-dev-tools/core/proxy/uniBus.js +148 -0
  199. package/oxy-dev-tools/core/proxy/uniListen.js +190 -0
  200. package/oxy-dev-tools/core/proxy/vueMixin.js +115 -0
  201. package/oxy-dev-tools/index.ts +183 -0
  202. package/oxy-dev-tools/oxy-dev-tools.vue +62 -0
  203. package/oxy-dev-tools/page/components/bottomTools.vue +933 -0
  204. package/oxy-dev-tools/page/components/dialog/addStorage.vue +184 -0
  205. package/oxy-dev-tools/page/components/dialog/createDir.vue +352 -0
  206. package/oxy-dev-tools/page/components/dialog/editDialog.vue +178 -0
  207. package/oxy-dev-tools/page/components/dialog/routeDialog.vue +170 -0
  208. package/oxy-dev-tools/page/components/dialog/sendRequest.vue +530 -0
  209. package/oxy-dev-tools/page/components/dialog/textFileEditDialog.vue +379 -0
  210. package/oxy-dev-tools/page/components/libs/appDelDir.js +77 -0
  211. package/oxy-dev-tools/page/components/libs/dirReader.js +239 -0
  212. package/oxy-dev-tools/page/components/libs/fileSize.js +15 -0
  213. package/oxy-dev-tools/page/components/libs/getRuntimeInfo.js +132 -0
  214. package/oxy-dev-tools/page/components/listItem/consoleItem.vue +292 -0
  215. package/oxy-dev-tools/page/components/listItem/errorItem.vue +268 -0
  216. package/oxy-dev-tools/page/components/listItem/fileSysItem.vue +511 -0
  217. package/oxy-dev-tools/page/components/listItem/infoList.vue +89 -0
  218. package/oxy-dev-tools/page/components/listItem/jsRunnerItem.vue +236 -0
  219. package/oxy-dev-tools/page/components/listItem/logItem.vue +185 -0
  220. package/oxy-dev-tools/page/components/listItem/networkItem.vue +362 -0
  221. package/oxy-dev-tools/page/components/listItem/objectAnalysis.vue +642 -0
  222. package/oxy-dev-tools/page/components/listItem/pages.vue +285 -0
  223. package/oxy-dev-tools/page/components/listItem/routeItem.vue +140 -0
  224. package/oxy-dev-tools/page/components/listItem/setting.vue +687 -0
  225. package/oxy-dev-tools/page/components/listItem/storageList.vue +623 -0
  226. package/oxy-dev-tools/page/components/listItem/tools.vue +273 -0
  227. package/oxy-dev-tools/page/components/listItem/vuexList.vue +559 -0
  228. package/oxy-dev-tools/page/components/main.vue +1824 -0
  229. package/oxy-dev-tools/page/components/mixins/animationControl.js +80 -0
  230. package/oxy-dev-tools/page/components/mixins/mp.js +76 -0
  231. package/oxy-dev-tools/page/components/ui/btnTabs.vue +77 -0
  232. package/oxy-dev-tools/page/components/ui/codeHisPicker.vue +161 -0
  233. package/oxy-dev-tools/page/components/ui/h5Cell.vue +13 -0
  234. package/oxy-dev-tools/page/components/ui/menuBtn.vue +87 -0
  235. package/oxy-dev-tools/page/components/ui/mobileSwiperScroll.vue +71 -0
  236. package/oxy-dev-tools/page/components/ui/requestSpeedLimit.vue +47 -0
  237. package/oxy-dev-tools/page/components/ui/requestTimeoutMock.vue +50 -0
  238. package/oxy-dev-tools/page/components/ui/subTitleBar.vue +87 -0
  239. package/oxy-dev-tools/page/static/copy.png +0 -0
  240. package/oxy-dev-tools/page/static/delete.png +0 -0
  241. package/oxy-dev-tools/page/static/fileSys/AI.png +0 -0
  242. package/oxy-dev-tools/page/static/fileSys/DWG.png +0 -0
  243. package/oxy-dev-tools/page/static/fileSys/EXE.png +0 -0
  244. package/oxy-dev-tools/page/static/fileSys/GIF.png +0 -0
  245. package/oxy-dev-tools/page/static/fileSys/HTML.png +0 -0
  246. package/oxy-dev-tools/page/static/fileSys/PSD.png +0 -0
  247. package/oxy-dev-tools/page/static/fileSys/RVT.png +0 -0
  248. package/oxy-dev-tools/page/static/fileSys/SKP.png +0 -0
  249. package/oxy-dev-tools/page/static/fileSys/SVG.png +0 -0
  250. package/oxy-dev-tools/page/static/fileSys/excel.png +0 -0
  251. package/oxy-dev-tools/page/static/fileSys/pdf.png +0 -0
  252. package/oxy-dev-tools/page/static/fileSys/pptl.png +0 -0
  253. package/oxy-dev-tools/page/static/fileSys/shipin.png +0 -0
  254. package/oxy-dev-tools/page/static/fileSys/tupian.png +0 -0
  255. package/oxy-dev-tools/page/static/fileSys/txt.png +0 -0
  256. package/oxy-dev-tools/page/static/fileSys/weizhiwenjian.png +0 -0
  257. package/oxy-dev-tools/page/static/fileSys/wenjianjia.png +0 -0
  258. package/oxy-dev-tools/page/static/fileSys/word.png +0 -0
  259. package/oxy-dev-tools/page/static/fileSys/yasuo.png +0 -0
  260. package/oxy-dev-tools/page/static/fileSys/yinpin.png +0 -0
  261. package/oxy-dev-tools/page/static/fold.png +0 -0
  262. package/oxy-dev-tools/page/static/menu.png +0 -0
  263. package/oxy-dev-tools/page/static/refresh.png +0 -0
  264. package/oxy-dev-tools/page/static/unfold.png +0 -0
  265. package/oxy-dev-tools/tools.vue +22 -0
  266. package/oxy-dev-tools/type/devTools.d.ts +406 -0
  267. package/package.json +1 -1
  268. package/tags.json +1 -1
  269. package/web-types.json +1 -1
@@ -21,7 +21,7 @@
21
21
 
22
22
  @include m(fixed) {
23
23
  position: sticky;
24
- z-index: 1;
24
+ z-index: $-z-index-sticky;
25
25
  left: 0;
26
26
  }
27
27
 
@@ -33,7 +33,6 @@
33
33
  right: -30rpx;
34
34
  top: 0;
35
35
  width: 30rpx;
36
- height: 100%;
37
36
  background: $-table-fixed-shadow-light;
38
37
  }
39
38
  }
@@ -14,7 +14,7 @@
14
14
  color: $-dark-color3;
15
15
 
16
16
  @include when(active) {
17
- font-weight: 600;
17
+ font-weight: $-fw-semibold;
18
18
  color: $-dark-color;
19
19
  }
20
20
 
@@ -103,7 +103,7 @@
103
103
  transition: color .3s;
104
104
 
105
105
  @include when(active) {
106
- font-weight: 600;
106
+ font-weight: $-fw-semibold;
107
107
  }
108
108
 
109
109
  @include when(disabled) {
@@ -269,7 +269,7 @@
269
269
  line-height: 1.2;
270
270
  background-color: $-tabs-nav-map-button-back-color;
271
271
  border-color: transparent;
272
- margin-bottom: 24rpx;
272
+ margin-bottom: $-spacing-24;
273
273
  border-radius: $-tabs-nav-map-button-radius;
274
274
  color: $-tabs-nav-map-color;
275
275
  font-size: $-tabs-nav-map-fs;
@@ -31,11 +31,9 @@
31
31
  background: transparent;
32
32
  color: $normalColor;
33
33
  border-color: $normalColor;
34
- padding: 12rpx 20rpx;
35
34
  }
36
35
 
37
36
  @include when(round) {
38
- padding: 12rpx 24rpx;
39
37
  background: transparent;
40
38
  color: if($normalColor != $-tag-info-color, $normalColor, $-tag-round-color);
41
39
  border-color: if($normalColor != $-tag-info-color, $normalColor, $-tag-round-border-color);
@@ -43,12 +41,7 @@
43
41
  }
44
42
 
45
43
  @include when(mark) {
46
- padding: 12rpx 20rpx;
47
44
  border-radius: $-tag-mark-radius;
48
-
49
- @include when(plain) {
50
- padding: 8rpx 20rpx;
51
- }
52
45
  }
53
46
  @include when(active) {
54
47
  color: $-tag-primary-color;
@@ -56,6 +49,144 @@
56
49
  }
57
50
  }
58
51
 
52
+ @mixin tag-size-style(
53
+ $sizeConfig
54
+ ) {
55
+ $fontSize: map-get($sizeConfig, fontSize);
56
+ $paddingY: map-get($sizeConfig, paddingY);
57
+ $paddingX: map-get($sizeConfig, paddingX);
58
+ $roundPaddingX: map-get($sizeConfig, roundPaddingX);
59
+ $plainPaddingY: map-get($sizeConfig, plainPaddingY);
60
+ $markPlainPaddingY: map-get($sizeConfig, markPlainPaddingY);
61
+ $minHeight: map-get($sizeConfig, minHeight);
62
+ $inputHeight: map-get($sizeConfig, inputHeight);
63
+ $iconGap: map-get($sizeConfig, iconGap);
64
+ $closeGap: map-get($sizeConfig, closeGap);
65
+ $dynamicMinWidth: map-get($sizeConfig, dynamicMinWidth);
66
+ $closeSize: map-get($sizeConfig, closeSize);
67
+ $radius: map-get($sizeConfig, radius);
68
+ $roundRadius: map-get($sizeConfig, roundRadius);
69
+ $markRadius: map-get($sizeConfig, markRadius);
70
+
71
+ font-size: $fontSize;
72
+ padding: $paddingY $paddingX;
73
+ min-height: $minHeight;
74
+ border-radius: $radius;
75
+
76
+ &.is-round {
77
+ padding: $paddingY $roundPaddingX;
78
+ border-radius: $roundRadius;
79
+ }
80
+
81
+ &.is-plain {
82
+ padding: $plainPaddingY $paddingX;
83
+ }
84
+
85
+ &.is-mark {
86
+ padding: $paddingY $paddingX;
87
+ border-radius: $markRadius;
88
+
89
+ &.is-plain {
90
+ padding: $markPlainPaddingY $paddingX;
91
+ }
92
+ }
93
+
94
+ &.is-dynamic {
95
+ min-width: $dynamicMinWidth;
96
+ }
97
+
98
+ .oxy-tag__icon {
99
+ margin-right: $iconGap;
100
+ font-size: $fontSize;
101
+ }
102
+
103
+ .oxy-tag__add-text {
104
+ height: $inputHeight;
105
+ min-height: $inputHeight;
106
+ font-size: $fontSize;
107
+ line-height: $inputHeight;
108
+ }
109
+
110
+ .oxy-tag__close {
111
+ margin-left: $closeGap;
112
+ font-size: $closeSize;
113
+ width: $closeSize;
114
+ height: $closeSize;
115
+ }
116
+ }
117
+
118
+ $-tag-size-default-config: (
119
+ fontSize: $-tag-fs,
120
+ paddingY: 6rpx,
121
+ paddingX: 18rpx,
122
+ roundPaddingX: 22rpx,
123
+ plainPaddingY: 6rpx,
124
+ markPlainPaddingY: 4rpx,
125
+ minHeight: 46rpx,
126
+ inputHeight: 40rpx,
127
+ iconGap: 10rpx,
128
+ closeGap: 12rpx,
129
+ dynamicMinWidth: 148rpx,
130
+ closeSize: $-tag-close-size,
131
+ radius: $-tag-radius,
132
+ roundRadius: $-tag-round-radius,
133
+ markRadius: $-tag-mark-radius
134
+ );
135
+
136
+ $-tag-size-mini-config: (
137
+ fontSize: $-tag-mini-fs,
138
+ paddingY: 2rpx,
139
+ paddingX: 10rpx,
140
+ roundPaddingX: 12rpx,
141
+ plainPaddingY: 2rpx,
142
+ markPlainPaddingY: 2rpx,
143
+ minHeight: 28rpx,
144
+ inputHeight: 26rpx,
145
+ iconGap: 6rpx,
146
+ closeGap: 8rpx,
147
+ dynamicMinWidth: 116rpx,
148
+ closeSize: $-tag-mini-fs,
149
+ radius: $-tag-mini-radius,
150
+ roundRadius: $-tag-round-mini-radius,
151
+ markRadius: $-tag-mark-mini-radius
152
+ );
153
+
154
+ $-tag-size-small-config: (
155
+ fontSize: $-tag-small-fs,
156
+ paddingY: 4rpx,
157
+ paddingX: 14rpx,
158
+ roundPaddingX: 16rpx,
159
+ plainPaddingY: 4rpx,
160
+ markPlainPaddingY: 2rpx,
161
+ minHeight: 34rpx,
162
+ inputHeight: 30rpx,
163
+ iconGap: 8rpx,
164
+ closeGap: 10rpx,
165
+ dynamicMinWidth: 128rpx,
166
+ closeSize: $-tag-small-fs,
167
+ radius: $-tag-small-radius,
168
+ roundRadius: $-tag-round-small-radius,
169
+ markRadius: $-tag-mark-small-radius
170
+ );
171
+
172
+ $-tag-size-large-config: (
173
+ fontSize: $-tag-large-fs,
174
+ paddingY: 8rpx,
175
+ paddingX: 22rpx,
176
+ roundPaddingX: 26rpx,
177
+ plainPaddingY: 8rpx,
178
+ markPlainPaddingY: 6rpx,
179
+ minHeight: 54rpx,
180
+ inputHeight: 48rpx,
181
+ iconGap: 12rpx,
182
+ closeGap: 14rpx,
183
+ dynamicMinWidth: 164rpx,
184
+ closeSize: $-tag-small-fs,
185
+ radius: $-tag-large-radius,
186
+ roundRadius: $-tag-round-large-radius,
187
+ markRadius: $-tag-mark-large-radius
188
+ );
189
+
59
190
  @include b(tag) {
60
191
  position: relative;
61
192
  font-size: $-tag-fs;
@@ -65,11 +196,11 @@
65
196
  max-width: 100%;
66
197
  box-sizing: border-box;
67
198
  color: $-tag-color;
68
- padding: 12rpx 20rpx;
69
- min-height: 64rpx;
70
- border: 1px solid transparent;
199
+ padding: 6rpx 18rpx;
200
+ min-height: 46rpx;
201
+ border: #{$-border-width-base} solid transparent;
71
202
  border-radius: $-tag-radius;
72
- transition: opacity .2s, color .2s, border-color .2s, background-color .2s;
203
+ transition: opacity $-transition-duration-base, color $-transition-duration-base, border-color $-transition-duration-base, background-color $-transition-duration-base;
73
204
  vertical-align: middle;
74
205
  line-height: 1.4;
75
206
  white-space: nowrap;
@@ -89,14 +220,23 @@
89
220
  @include when(success) {
90
221
  @include tag-type-style($-tag-success-color, $-tag-success-bg);
91
222
  }
92
- @include when(icon) {
93
- padding: 12rpx 20rpx;
223
+ @include tag-size-style($-tag-size-default-config);
224
+ @include when(mini) {
225
+ @include tag-size-style($-tag-size-mini-config);
226
+ }
227
+
228
+ @include when(small) {
229
+ @include tag-size-style($-tag-size-small-config);
230
+ }
231
+
232
+ @include when(large) {
233
+ @include tag-size-style($-tag-size-large-config);
94
234
  }
95
235
 
96
236
  @include when(dynamic) {
97
237
  box-sizing: border-box;
98
238
  width: auto;
99
- min-width: 176rpx;
239
+ min-width: 148rpx;
100
240
  justify-content: center;
101
241
  transition: color .3s, border-color .3s, background-color .3s;
102
242
 
@@ -127,7 +267,7 @@
127
267
  display: inline-flex;
128
268
  align-items: center;
129
269
  justify-content: center;
130
- margin-right: 12rpx;
270
+ margin-right: 10rpx;
131
271
  font-size: $-tag-fs;
132
272
  line-height: 1;
133
273
  vertical-align: middle;
@@ -145,11 +285,11 @@
145
285
  @include e(add-text) {
146
286
  width: 100%;
147
287
  min-width: 0;
148
- height: 56rpx;
149
- min-height: 56rpx;
288
+ height: 40rpx;
289
+ min-height: 40rpx;
150
290
  display: inline-block;
151
291
  font-size: $-tag-fs;
152
- line-height: 56rpx;
292
+ line-height: 40rpx;
153
293
  vertical-align: middle;
154
294
  color: inherit;
155
295
  padding: 0;
@@ -166,7 +306,7 @@
166
306
  display: inline-flex;
167
307
  align-items: center;
168
308
  justify-content: center;
169
- margin-left: 16rpx;
309
+ margin-left: 12rpx;
170
310
  margin-right: 0;
171
311
  font-size: $-tag-close-size;
172
312
  width: $-tag-close-size;
@@ -175,7 +315,7 @@
175
315
  vertical-align: middle;
176
316
  color: $-tag-close-color;
177
317
  opacity: 0.7;
178
- transition: opacity .2s, color .2s;
318
+ transition: opacity $-transition-duration-base, color $-transition-duration-base;
179
319
 
180
320
  &:active {
181
321
  opacity: 1;
@@ -57,7 +57,7 @@ const dynamicValue = ref<string>('')
57
57
  const dynamicInput = ref<boolean>(false)
58
58
 
59
59
  watch(
60
- [() => props.useIconSlot, () => props.icon, () => props.plain, () => props.dynamic, () => props.round, () => props.mark],
60
+ [() => props.useIconSlot, () => props.icon, () => props.plain, () => props.dynamic, () => props.round, () => props.mark, () => props.size],
61
61
  () => {
62
62
  computeTagClass()
63
63
  },
@@ -76,6 +76,17 @@ watch(
76
76
  { immediate: true }
77
77
  )
78
78
 
79
+ watch(
80
+ () => props.size,
81
+ (newValue) => {
82
+ if (!newValue) return
83
+ const size = ['mini', 'small', 'default', 'large']
84
+ if (size.indexOf(newValue) === -1) console.error(`size must be one of ${size.toString()}`)
85
+ computeTagClass()
86
+ },
87
+ { immediate: true }
88
+ )
89
+
79
90
  watch(
80
91
  () => dynamicInput.value,
81
92
  () => {
@@ -108,9 +119,10 @@ const textStyle = computed(() => {
108
119
  })
109
120
 
110
121
  function computeTagClass() {
111
- const { type, plain, round, mark, dynamic, icon, useIconSlot } = props
122
+ const { type, size, plain, round, mark, dynamic, icon, useIconSlot } = props
112
123
  let tagClassList: string[] = []
113
124
  type && tagClassList.push(`is-${type}`)
125
+ size && tagClassList.push(`is-${size}`)
114
126
  plain && tagClassList.push('is-plain')
115
127
  round && tagClassList.push('is-round')
116
128
  mark && tagClassList.push('is-mark')
@@ -2,6 +2,7 @@ import type { ExtractPropTypes } from 'vue'
2
2
  import { baseProps, makeBooleanProp, makeStringProp } from '../common/props'
3
3
 
4
4
  export type TagType = 'default' | 'primary' | 'success' | 'warning' | 'danger'
5
+ export type TagSize = 'mini' | 'small' | 'default' | 'large'
5
6
 
6
7
  export const tagProps = {
7
8
  ...baseProps,
@@ -21,6 +22,14 @@ export const tagProps = {
21
22
  */
22
23
  type: makeStringProp<TagType>('default'),
23
24
 
25
+ /**
26
+ * 标签尺寸
27
+ * 类型:string
28
+ * 可选值:'mini' / 'small' / 'default' / 'large'
29
+ * 默认值:'default'
30
+ */
31
+ size: makeStringProp<TagSize>('default'),
32
+
24
33
  /**
25
34
  * 左侧图标
26
35
  * 类型:string
@@ -6,7 +6,7 @@
6
6
  @include b(text) {
7
7
 
8
8
  @include when(bold) {
9
- font-weight: bold;
9
+ font-weight: $-fw-bold;
10
10
  }
11
11
 
12
12
  @for $i from 1 through 5 {
@@ -84,7 +84,7 @@
84
84
  height: 1px;
85
85
  background: $-textarea-border-color;
86
86
  transform: scaleY(0.5);
87
- transition: background-color 0.2s ease-in-out;
87
+ transition: background-color $-transition-duration-base ease-in-out;
88
88
  }
89
89
 
90
90
 
@@ -203,7 +203,7 @@
203
203
  font-size: $-textarea-count-fs;
204
204
  color: $-textarea-count-color;
205
205
  background: $-textarea-bg;
206
- line-height: 48rpx;
206
+ line-height: $-lh-base;
207
207
  display: inline-flex;
208
208
  }
209
209
 
@@ -257,10 +257,6 @@
257
257
  }
258
258
 
259
259
  @include when(auto-height) {
260
- &:not(.is-cell) {
261
- padding: 16rpx 0;
262
- }
263
-
264
260
  &::after {
265
261
  display: block;
266
262
  }
@@ -8,7 +8,7 @@
8
8
  background-color: $-toast-bg;
9
9
  border-radius: $-toast-radius;
10
10
  color: $-toast-color;
11
- transition: all 0.2s;
11
+ transition: all $-transition-duration-base;
12
12
  font-size: $-toast-fs;
13
13
  box-sizing: border-box;
14
14
  box-shadow: $-toast-box-shadow;
@@ -2,49 +2,53 @@
2
2
  @import '../common/abstracts/mixin';
3
3
  @import '../oxy-virtual-scroll/index.scss';
4
4
 
5
- .oxy-tree {
5
+ @include b(tree) {
6
6
  position: relative;
7
- &__virtual-scroll {
7
+
8
+ @include e(virtual-scroll) {
8
9
  position: relative;
9
10
  overflow: hidden;
10
11
  }
11
12
 
12
- &__view {
13
+ @include e(view) {
13
14
  height: 100%;
14
15
  }
15
16
 
16
- &__container {
17
+ @include e(container) {
17
18
  position: relative;
18
19
  }
19
20
 
20
- &__items {
21
+ @include e(items) {
21
22
  position: absolute;
22
23
  top: 0;
23
24
  left: 0;
24
25
  right: 0;
25
26
  }
26
- .oxy-tree__search{
27
+
28
+ @include e(search) {
27
29
  display: flex;
28
- :deep(.oxy-button){
30
+
31
+ :deep(.oxy-button) {
29
32
  min-width: 120rpx;
30
33
  }
34
+
31
35
  :deep(.oxy-tree__search-input) {
32
36
  flex: 1;
33
37
  background-color: $-tree-search-input-color;
34
38
  padding: 16rpx 24rpx;
35
39
  border-radius: $-tree-search-input-radius;
36
40
  margin-bottom: 20rpx;
37
- margin-right: 24rpx;
38
- .oxy-input__icon{
41
+ margin-right: $-spacing-24;
42
+
43
+ .oxy-input__icon {
39
44
  background: transparent;
40
45
  }
41
46
  }
42
47
  }
43
-
44
-
45
48
  }
46
49
 
47
50
  .oxy-tree-node-content {
51
+ position: relative;
48
52
  display: flex;
49
53
  width: 100%;
50
54
  align-items: center;
@@ -132,4 +136,20 @@
132
136
  min-width: 0;
133
137
  @include lineEllipsis;
134
138
  }
139
+
140
+ .oxy-tree-line-vertical {
141
+ position: absolute;
142
+ width: 1px;
143
+ border-left: 1px dashed $-tree-node-icon-color;
144
+ pointer-events: none;
145
+ z-index: 0;
146
+ }
147
+ .oxy-tree-line-horizontal {
148
+ position: absolute;
149
+ top: 50%;
150
+ height: 1px;
151
+ border-top: 1px dashed $-tree-node-icon-color;
152
+ pointer-events: none;
153
+ z-index: 0;
154
+ }
135
155
  }
@@ -21,6 +21,22 @@
21
21
  <view class="oxy-tree__items" :style="{ transform: `translateY(${unitConvert(virtualOffsetY, 0, { output: 'px' })})` }">
22
22
  <view v-for="(item, index) in virtualData" :key="index">
23
23
  <view class="oxy-tree-node-content" :style="getNodeStyle(item)" :class="getNodeClass(item)" @click="handleNodeClick(item)">
24
+ <!-- 结构线 -->
25
+ <block v-if="showLine">
26
+ <view
27
+ v-for="l in item.level - 1"
28
+ :key="'line-' + l"
29
+ class="oxy-tree-line-vertical"
30
+ :style="getAncestorLineStyle(item, l)"
31
+ v-show="shouldShowAncestorLine(item, l)"
32
+ ></view>
33
+ <view v-if="hasHorizontalLine(item)" class="oxy-tree-line-horizontal" :style="getHorizontalLineStyle(item)"></view>
34
+
35
+ <view v-if="shouldShowRootVerticalLine(item)" class="oxy-tree-line-vertical" :style="getRootVerticalLineStyle(item)"></view>
36
+
37
+ <view v-if="shouldShowOwnChildrenLine(item)" class="oxy-tree-line-vertical" :style="getOwnChildrenLineStyle(item)"></view>
38
+ </block>
39
+
24
40
  <!-- 兼容支付宝、微信小程序 -->
25
41
  <view class="oxy-tree-node-toggle" @tap.stop="handleClickExpand(item)">
26
42
  <oxy-icon
@@ -69,8 +85,8 @@ export default {
69
85
  </script>
70
86
 
71
87
  <script lang="ts" setup>
72
- import { computed, nextTick, provide, type Ref, ref, toRefs, watch } from 'vue'
73
- import type { RawTreeNode, Tree, TreeInstance, TreeNode } from './types'
88
+ import { computed, nextTick, type CSSProperties, type Ref, ref, toRefs, watch } from 'vue'
89
+ import type { RawTreeNode, Tree, TreeNode } from './types'
74
90
  import { treeProps, type TreeExpose } from './types'
75
91
  import { isSetsEqual, useTreeMethods } from './utils'
76
92
  import { useVirtualScroll } from '../composables/useVirtualScroll'
@@ -85,6 +101,7 @@ const {
85
101
  expandAll,
86
102
  showCheckbox,
87
103
  checkStrictly,
104
+ showLine,
88
105
  selectionLeafOnly,
89
106
  height,
90
107
  itemHeight,
@@ -469,6 +486,100 @@ const handleFilter = () => {
469
486
  filter(searchValue.value)
470
487
  }
471
488
 
489
+ const isAncestorLast = (node: TreeNode, level: number) => {
490
+ let current: TreeNode | undefined = node
491
+ let steps = node.level - level
492
+ while (steps > 0 && current) {
493
+ current = current.parent
494
+ steps--
495
+ }
496
+ return current ? current.isLast : false
497
+ }
498
+
499
+ const TREE_LINE_ICON_BOX_SIZE = '56rpx'
500
+ const TREE_LINE_ICON_SIZE = '32rpx'
501
+ const TREE_LINE_GAP_OFFSET = '2px'
502
+ const ZERO_LENGTH = '0px'
503
+ const HALF_HEIGHT = '50%'
504
+
505
+ const toRpxLength = (value: number) => {
506
+ return value === 0 ? ZERO_LENGTH : `${value}rpx`
507
+ }
508
+
509
+ const getLineLeft = (l: number) => {
510
+ const indent = Number(props.indent || 32)
511
+ return `calc(${toRpxLength(indent * (l - 1))} + var(--oxy-tree-node-icon-box-size, ${TREE_LINE_ICON_BOX_SIZE}) / 2)`
512
+ }
513
+
514
+ const getLineGap = () => {
515
+ return `var(--oxy-tree-node-icon-size, ${TREE_LINE_ICON_SIZE}) / 2 + ${TREE_LINE_GAP_OFFSET}`
516
+ }
517
+
518
+ const getLineWidth = (isLeaf: boolean) => {
519
+ const indent = Number(props.indent || 32)
520
+ const indentStr = toRpxLength(indent)
521
+ if (isLeaf) {
522
+ return `calc(${indentStr} + var(--oxy-tree-node-icon-box-size, ${TREE_LINE_ICON_BOX_SIZE}) / 2)`
523
+ }
524
+ return `calc(${indentStr} - var(--oxy-tree-node-icon-size, ${TREE_LINE_ICON_SIZE}) / 2 - ${TREE_LINE_GAP_OFFSET})`
525
+ }
526
+
527
+ const hasHorizontalLine = (node: TreeNode) => {
528
+ return node.level > 1
529
+ }
530
+
531
+ const shouldShowAncestorLine = (node: TreeNode, level: number) => {
532
+ if (level === node.level - 1) {
533
+ return true
534
+ }
535
+ if (level === 1 && !isAncestorLast(node, 1)) {
536
+ return true
537
+ }
538
+ return !isAncestorLast(node, level + 1)
539
+ }
540
+
541
+ const getAncestorLineStyle = (node: TreeNode, level: number): CSSProperties => {
542
+ const shouldExtendToBottom = level === 1 && !isAncestorLast(node, 1)
543
+ const isLastBranch = level === node.level - 1 && node.isLast
544
+
545
+ return {
546
+ left: getLineLeft(level),
547
+ top: 0,
548
+ bottom: shouldExtendToBottom ? 0 : isLastBranch ? HALF_HEIGHT : 0
549
+ }
550
+ }
551
+
552
+ const getHorizontalLineStyle = (node: TreeNode): CSSProperties => {
553
+ return {
554
+ left: getLineLeft(node.level - 1),
555
+ width: getLineWidth(node.isLeaf)
556
+ }
557
+ }
558
+
559
+ const shouldShowRootVerticalLine = (node: TreeNode) => {
560
+ return node.level === 1 && node.index > 0
561
+ }
562
+
563
+ const getRootVerticalLineStyle = (node: TreeNode): CSSProperties => {
564
+ return {
565
+ left: getLineLeft(1),
566
+ top: 0,
567
+ bottom: node.isLeaf ? (node.isLast ? HALF_HEIGHT : 0) : `calc(${HALF_HEIGHT} + ${getLineGap()})`
568
+ }
569
+ }
570
+
571
+ const shouldShowOwnChildrenLine = (node: TreeNode) => {
572
+ return !node.isLeaf && (expandedKeySet.value.has(node.key) || (node.level === 1 && !node.isLast))
573
+ }
574
+
575
+ const getOwnChildrenLineStyle = (node: TreeNode): CSSProperties => {
576
+ return {
577
+ left: getLineLeft(node.level),
578
+ top: `calc(${HALF_HEIGHT} + ${getLineGap()})`,
579
+ bottom: 0
580
+ }
581
+ }
582
+
472
583
  defineExpose<TreeExpose>({
473
584
  toggleExpand,
474
585
  toggleChecked,
@@ -43,6 +43,7 @@ export const treeProps = {
43
43
  defaultExpandedKeys: makeArrayProp<string>(),
44
44
  expandAll: makeBooleanProp(false),
45
45
  checkStrictly: makeBooleanProp(false),
46
+ showLine: makeBooleanProp(false),
46
47
  modelValue: {
47
48
  type: [Array<string>, String],
48
49
  default: ''
@@ -122,7 +122,7 @@
122
122
 
123
123
  &::before {
124
124
  background-color: $-upload-video-play-bg;
125
- border-radius: 50%;
125
+ border-radius: $-radius-circle;
126
126
  }
127
127
  }
128
128
 
@@ -142,7 +142,7 @@
142
142
  content: "";
143
143
  width: 100%;
144
144
  height: 100%;
145
- border-radius: 50%;
145
+ border-radius: $-radius-circle;
146
146
  background-color: $-color-white;
147
147
  left: 0;
148
148
  z-index: -1;
@@ -219,7 +219,7 @@
219
219
 
220
220
  &.oxy-upload__position-right {
221
221
  .oxy-upload__evoke {
222
- margin-right: 24rpx;
222
+ margin-right: $-spacing-24;
223
223
  }
224
224
  }
225
225
  }
@@ -5,7 +5,7 @@
5
5
  position: fixed;
6
6
  top: 0;
7
7
  left: 0;
8
- z-index: 999;
8
+ z-index: $-z-index-overlay;
9
9
  width: 100%;
10
10
  height: 100%;
11
11
  display: flex;
@@ -17,7 +17,7 @@
17
17
  @include e(video) {
18
18
  width: 100%;
19
19
  height: 484rpx;
20
- transition: all 0.3s ease;
20
+ transition: all $-transition-duration-slow ease;
21
21
  }
22
22
 
23
23
  @include edeep(close) {
@@ -31,4 +31,4 @@
31
31
  font-size: $-video-preview-close-font-size;
32
32
  color: $-video-preview-close-color;
33
33
  }
34
- }
34
+ }
@@ -25,7 +25,7 @@
25
25
  width: 80rpx;
26
26
  height: 80rpx;
27
27
  background: $-virtual-scroll-back-top-bg;
28
- border-radius: 50%;
28
+ border-radius: $-radius-circle;
29
29
  display: flex;
30
30
  align-items: center;
31
31
  justify-content: center;