uview-pro 0.6.18 → 0.6.19

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 (278) hide show
  1. package/changelog.md +1778 -1768
  2. package/components/u-action-sheet/types.ts +52 -52
  3. package/components/u-action-sheet/u-action-sheet.vue +196 -196
  4. package/components/u-action-sheet-item/types.ts +35 -35
  5. package/components/u-action-sheet-item/u-action-sheet-item.vue +85 -85
  6. package/components/u-alert-tips/types.ts +49 -49
  7. package/components/u-alert-tips/u-alert-tips.vue +239 -239
  8. package/components/u-avatar/types.ts +44 -44
  9. package/components/u-avatar/u-avatar.vue +218 -218
  10. package/components/u-avatar-cropper/types.ts +23 -23
  11. package/components/u-avatar-cropper/u-avatar-cropper.vue +299 -299
  12. package/components/u-avatar-cropper/weCropper.d.ts +62 -62
  13. package/components/u-avatar-cropper/weCropper.js +1281 -1281
  14. package/components/u-avatar-cropper/weCropper.ts +1276 -1276
  15. package/components/u-back-top/types.ts +44 -44
  16. package/components/u-back-top/u-back-top.vue +141 -141
  17. package/components/u-badge/types.ts +46 -46
  18. package/components/u-badge/u-badge.vue +153 -153
  19. package/components/u-button/types.ts +76 -76
  20. package/components/u-button/u-button.vue +608 -608
  21. package/components/u-calendar/types.ts +126 -126
  22. package/components/u-calendar/u-calendar.vue +1243 -1243
  23. package/components/u-car-keyboard/types.ts +22 -22
  24. package/components/u-car-keyboard/u-car-keyboard.vue +263 -263
  25. package/components/u-card/types.ts +69 -69
  26. package/components/u-card/u-card.vue +210 -210
  27. package/components/u-cell-group/types.ts +27 -27
  28. package/components/u-cell-group/u-cell-group.vue +60 -60
  29. package/components/u-cell-item/types.ts +64 -64
  30. package/components/u-cell-item/u-cell-item.vue +221 -221
  31. package/components/u-checkbox/types.ts +45 -45
  32. package/components/u-checkbox/u-checkbox.vue +363 -363
  33. package/components/u-checkbox-group/types.ts +45 -45
  34. package/components/u-checkbox-group/u-checkbox-group.vue +172 -172
  35. package/components/u-circle-progress/types.ts +63 -63
  36. package/components/u-circle-progress/u-circle-progress.vue +299 -299
  37. package/components/u-city-select/types.ts +30 -30
  38. package/components/u-city-select/u-city-select.vue +281 -281
  39. package/components/u-col/types.ts +40 -40
  40. package/components/u-col/u-col.vue +142 -142
  41. package/components/u-collapse/types.ts +41 -41
  42. package/components/u-collapse/u-collapse.vue +190 -190
  43. package/components/u-collapse-item/types.ts +35 -35
  44. package/components/u-collapse-item/u-collapse-item.vue +291 -291
  45. package/components/u-column-notice/types.ts +58 -58
  46. package/components/u-column-notice/u-column-notice.vue +223 -223
  47. package/components/u-config-provider/types.ts +53 -53
  48. package/components/u-config-provider/u-config-provider.vue +185 -185
  49. package/components/u-count-down/types.ts +52 -52
  50. package/components/u-count-down/u-count-down.vue +288 -288
  51. package/components/u-count-to/types.ts +42 -42
  52. package/components/u-count-to/u-count-to.vue +266 -266
  53. package/components/u-divider/types.ts +41 -41
  54. package/components/u-divider/u-divider.vue +146 -146
  55. package/components/u-dropdown/types.ts +67 -67
  56. package/components/u-dropdown/u-dropdown.vue +436 -436
  57. package/components/u-dropdown-item/types.ts +40 -40
  58. package/components/u-dropdown-item/u-dropdown-item.vue +124 -124
  59. package/components/u-empty/types.ts +46 -46
  60. package/components/u-empty/u-empty.vue +109 -109
  61. package/components/u-fab/types.ts +83 -83
  62. package/components/u-fab/u-fab.vue +330 -330
  63. package/components/u-field/types.ts +81 -81
  64. package/components/u-field/u-field.vue +398 -398
  65. package/components/u-form/types.ts +39 -39
  66. package/components/u-form/u-form.vue +175 -135
  67. package/components/u-form-item/types.ts +95 -95
  68. package/components/u-form-item/u-form-item.vue +563 -563
  69. package/components/u-full-screen/types.ts +26 -26
  70. package/components/u-full-screen/u-full-screen.vue +100 -100
  71. package/components/u-gap/types.ts +28 -28
  72. package/components/u-gap/u-gap.vue +50 -50
  73. package/components/u-grid/types.ts +29 -29
  74. package/components/u-grid/u-grid.vue +91 -91
  75. package/components/u-grid-item/types.ts +24 -24
  76. package/components/u-grid-item/u-grid-item.vue +130 -130
  77. package/components/u-icon/types.ts +69 -69
  78. package/components/u-icon/u-icon.vue +301 -301
  79. package/components/u-image/types.ts +61 -61
  80. package/components/u-image/u-image.vue +245 -245
  81. package/components/u-index-anchor/types.ts +24 -24
  82. package/components/u-index-anchor/u-index-anchor.vue +120 -120
  83. package/components/u-index-list/types.ts +44 -44
  84. package/components/u-index-list/u-index-list.vue +346 -346
  85. package/components/u-input/types.ts +165 -165
  86. package/components/u-input/u-input.vue +453 -453
  87. package/components/u-keyboard/types.ts +40 -40
  88. package/components/u-keyboard/u-keyboard.vue +201 -201
  89. package/components/u-lazy-load/types.ts +37 -37
  90. package/components/u-lazy-load/u-lazy-load.vue +246 -246
  91. package/components/u-line/types.ts +44 -44
  92. package/components/u-line/u-line.vue +68 -68
  93. package/components/u-line-progress/types.ts +58 -58
  94. package/components/u-line-progress/u-line-progress.vue +131 -131
  95. package/components/u-link/types.ts +54 -54
  96. package/components/u-link/u-link.vue +100 -100
  97. package/components/u-loading/types.ts +45 -45
  98. package/components/u-loading/u-loading.vue +106 -106
  99. package/components/u-loading-popup/types.ts +26 -26
  100. package/components/u-loading-popup/u-loading-popup.vue +254 -254
  101. package/components/u-loadmore/types.ts +88 -88
  102. package/components/u-loadmore/u-loadmore.vue +170 -170
  103. package/components/u-mask/types.ts +48 -48
  104. package/components/u-mask/u-mask.vue +113 -113
  105. package/components/u-message-input/types.ts +90 -90
  106. package/components/u-message-input/u-message-input.vue +283 -283
  107. package/components/u-modal/service.ts +48 -48
  108. package/components/u-modal/types.ts +139 -139
  109. package/components/u-modal/u-modal.vue +465 -465
  110. package/components/u-navbar/types.ts +104 -104
  111. package/components/u-navbar/u-navbar.vue +268 -268
  112. package/components/u-no-network/image.ts +2 -2
  113. package/components/u-no-network/types.ts +29 -29
  114. package/components/u-no-network/u-no-network.vue +313 -313
  115. package/components/u-notice-bar/types.ts +111 -111
  116. package/components/u-notice-bar/u-notice-bar.vue +191 -191
  117. package/components/u-number-box/types.ts +42 -42
  118. package/components/u-number-box/u-number-box.vue +322 -322
  119. package/components/u-number-keyboard/types.ts +26 -26
  120. package/components/u-number-keyboard/u-number-keyboard.vue +189 -189
  121. package/components/u-pagination/types.ts +38 -38
  122. package/components/u-pagination/u-pagination.vue +102 -102
  123. package/components/u-picker/types.ts +140 -140
  124. package/components/u-picker/u-picker.vue +854 -854
  125. package/components/u-popup/types.ts +64 -64
  126. package/components/u-popup/u-popup.vue +427 -427
  127. package/components/u-radio/types.ts +39 -39
  128. package/components/u-radio/u-radio.vue +349 -349
  129. package/components/u-radio-group/types.ts +40 -40
  130. package/components/u-radio-group/u-radio-group.vue +96 -96
  131. package/components/u-rate/types.ts +50 -50
  132. package/components/u-rate/u-rate.vue +250 -250
  133. package/components/u-read-more/types.ts +46 -46
  134. package/components/u-read-more/u-read-more.vue +182 -182
  135. package/components/u-root-portal/u-root-portal.vue +55 -55
  136. package/components/u-row/types.ts +30 -30
  137. package/components/u-row/u-row.vue +105 -105
  138. package/components/u-row-notice/types.ts +49 -49
  139. package/components/u-row-notice/u-row-notice.vue +257 -257
  140. package/components/u-safe-bottom/types.ts +19 -19
  141. package/components/u-safe-bottom/u-safe-bottom.vue +55 -55
  142. package/components/u-search/u-search.vue +297 -297
  143. package/components/u-section/types.ts +42 -42
  144. package/components/u-section/u-section.vue +156 -156
  145. package/components/u-select/types.ts +56 -56
  146. package/components/u-select/u-select.vue +447 -447
  147. package/components/u-skeleton/types.ts +89 -89
  148. package/components/u-skeleton/u-skeleton.vue +253 -253
  149. package/components/u-slider/types.ts +55 -55
  150. package/components/u-slider/u-slider.vue +422 -422
  151. package/components/u-status-bar/types.ts +21 -21
  152. package/components/u-status-bar/u-status-bar.vue +64 -64
  153. package/components/u-step/types.ts +37 -37
  154. package/components/u-step/u-step.vue +292 -292
  155. package/components/u-steps/types.ts +39 -39
  156. package/components/u-steps/u-steps.vue +105 -105
  157. package/components/u-sticky/types.ts +33 -33
  158. package/components/u-sticky/u-sticky.vue +177 -177
  159. package/components/u-subsection/types.ts +46 -46
  160. package/components/u-subsection/u-subsection.vue +358 -358
  161. package/components/u-swipe-action/types.ts +60 -60
  162. package/components/u-swipe-action/u-swipe-action.vue +276 -276
  163. package/components/u-swiper/types.ts +57 -57
  164. package/components/u-swiper/u-swiper.vue +308 -308
  165. package/components/u-switch/types.ts +39 -39
  166. package/components/u-switch/u-switch.vue +212 -212
  167. package/components/u-tabbar/types.ts +57 -57
  168. package/components/u-tabbar/u-tabbar.vue +480 -480
  169. package/components/u-table/types.ts +35 -35
  170. package/components/u-table/u-table.vue +67 -67
  171. package/components/u-tabs/types.ts +64 -64
  172. package/components/u-tabs/u-tabs.vue +328 -328
  173. package/components/u-tabs-swiper/types.ts +64 -64
  174. package/components/u-tabs-swiper/u-tabs-swiper.vue +407 -407
  175. package/components/u-tag/types.ts +47 -47
  176. package/components/u-tag/u-tag.vue +276 -276
  177. package/components/u-td/types.ts +22 -22
  178. package/components/u-td/u-td.vue +65 -65
  179. package/components/u-text/types.ts +80 -80
  180. package/components/u-text/u-text.vue +355 -355
  181. package/components/u-textarea/types.ts +105 -105
  182. package/components/u-textarea/u-textarea.vue +450 -450
  183. package/components/u-th/types.ts +22 -22
  184. package/components/u-th/u-th.vue +63 -63
  185. package/components/u-time-line/u-time-line.vue +64 -64
  186. package/components/u-time-line-item/types.ts +24 -24
  187. package/components/u-time-line-item/u-time-line-item.vue +89 -89
  188. package/components/u-toast/service.ts +40 -40
  189. package/components/u-toast/types.ts +54 -54
  190. package/components/u-toast/u-toast.vue +385 -385
  191. package/components/u-top-tips/types.ts +25 -25
  192. package/components/u-top-tips/u-top-tips.vue +130 -130
  193. package/components/u-tr/types.ts +19 -19
  194. package/components/u-tr/u-tr.vue +39 -39
  195. package/components/u-transition/types.ts +43 -43
  196. package/components/u-transition/u-transition.vue +437 -437
  197. package/components/u-upload/types.ts +171 -171
  198. package/components/u-upload/u-upload.vue +1605 -1605
  199. package/components/u-verification-code/types.ts +32 -32
  200. package/components/u-verification-code/u-verification-code.vue +183 -183
  201. package/components/u-waterfall/types.ts +26 -26
  202. package/components/u-waterfall/u-waterfall.vue +188 -188
  203. package/iconfont.css +913 -913
  204. package/index.scss +26 -26
  205. package/libs/config/color.ts +9 -9
  206. package/libs/config/config.ts +59 -59
  207. package/libs/config/theme-tokens.ts +102 -102
  208. package/libs/config/zIndex.ts +32 -32
  209. package/libs/css/color.scss +155 -155
  210. package/libs/css/common.scss +183 -183
  211. package/libs/css/style.components.scss +16 -16
  212. package/libs/css/style.h5.scss +8 -8
  213. package/libs/css/style.mp.scss +68 -68
  214. package/libs/css/style.nvue.scss +15 -15
  215. package/libs/css/style.theme.scss +56 -56
  216. package/libs/css/style.vue.scss +188 -188
  217. package/libs/function/$parent.ts +24 -24
  218. package/libs/function/addUnit.ts +50 -50
  219. package/libs/function/clipboard.ts +73 -73
  220. package/libs/function/color.ts +28 -28
  221. package/libs/function/colorGradient.ts +139 -139
  222. package/libs/function/debounce.ts +28 -28
  223. package/libs/function/deepClone.ts +39 -39
  224. package/libs/function/deepMerge.ts +35 -35
  225. package/libs/function/getParent.ts +63 -63
  226. package/libs/function/getRect.ts +26 -26
  227. package/libs/function/guid.ts +42 -42
  228. package/libs/function/md5.ts +403 -403
  229. package/libs/function/parent.ts +21 -21
  230. package/libs/function/queryParams.ts +64 -64
  231. package/libs/function/random.ts +16 -16
  232. package/libs/function/randomArray.ts +11 -11
  233. package/libs/function/route.ts +118 -118
  234. package/libs/function/styleUtils.ts +83 -83
  235. package/libs/function/sys.ts +15 -15
  236. package/libs/function/test.ts +289 -289
  237. package/libs/function/throttle.ts +31 -31
  238. package/libs/function/timeFormat.ts +55 -55
  239. package/libs/function/timeFrom.ts +48 -48
  240. package/libs/function/toast.ts +14 -14
  241. package/libs/function/trim.ts +21 -21
  242. package/libs/function/type2icon.ts +38 -38
  243. package/libs/hooks/index.ts +10 -10
  244. package/libs/hooks/useColor.ts +61 -61
  245. package/libs/hooks/useCompRelation.ts +424 -424
  246. package/libs/hooks/useDebounce.ts +15 -15
  247. package/libs/hooks/useEmitter.ts +79 -79
  248. package/libs/hooks/useLocale.ts +34 -34
  249. package/libs/hooks/useModal.ts +131 -131
  250. package/libs/hooks/useRect.ts +40 -40
  251. package/libs/hooks/useRouter.ts +173 -173
  252. package/libs/hooks/useTheme.ts +173 -173
  253. package/libs/hooks/useThrottle.ts +16 -16
  254. package/libs/hooks/useToast.ts +115 -115
  255. package/libs/index.ts +349 -349
  256. package/libs/request/auto-http.ts +76 -76
  257. package/libs/request/index.ts +301 -301
  258. package/libs/store/index.ts +88 -88
  259. package/libs/util/async-validator.d.ts +75 -75
  260. package/libs/util/async-validator.js +1 -1
  261. package/libs/util/calendar.d.ts +57 -57
  262. package/libs/util/canvas-2d.ts +182 -182
  263. package/libs/util/config-provider.ts +804 -804
  264. package/libs/util/emitter.ts +112 -112
  265. package/libs/util/mitt.ts +118 -118
  266. package/libs/util/system-theme.ts +25 -25
  267. package/locale/index.ts +2 -2
  268. package/locale/lang/en-US.ts +136 -136
  269. package/locale/lang/zh-CN.ts +136 -136
  270. package/package.json +1 -1
  271. package/plugins/root/page.ts +77 -77
  272. package/plugins/root/root.ts +53 -53
  273. package/theme.scss +149 -149
  274. package/types/components.d.ts +105 -105
  275. package/types/global.d.ts +470 -470
  276. package/types/ignore-errors.d.ts +30 -30
  277. package/types/index.d.ts +15 -15
  278. package/types/uni-app.d.ts +63 -63
@@ -1,44 +1,44 @@
1
- import type { ExtractPropTypes, PropType } from 'vue';
2
- import type { Shape } from '../../types/global';
3
-
4
- // u-back-top 组件 props
5
- export const BackTopProps = {
6
- /** 自定义根节点样式 */
7
- customStyle: {
8
- type: [String, Object] as PropType<string | Record<string, any>>,
9
- default: () => ({})
10
- },
11
- /** 自定义根节点样式类 */
12
- customClass: {
13
- type: String as unknown as PropType<string>,
14
- default: ''
15
- },
16
- /** 返回顶部的形状,circle-圆形,square-方形 */
17
- mode: { type: String as PropType<Shape>, default: 'circle' },
18
- /** 自定义图标 */
19
- icon: { type: String, default: 'arrow-upward' },
20
- /** 提示文字 */
21
- tips: { type: String, default: '' },
22
- /** 返回顶部滚动时间 */
23
- duration: { type: [Number, String], default: 100 },
24
- /** 滚动距离 */
25
- scrollTop: { type: [Number, String], default: 0 },
26
- /** 距离顶部多少距离显示,单位rpx */
27
- top: { type: [Number, String], default: 400 },
28
- /** 返回顶部按钮到底部的距离,单位rpx */
29
- bottom: { type: [Number, String], default: 200 },
30
- /** 返回顶部按钮到右边的距离,单位rpx */
31
- right: { type: [Number, String], default: 40 },
32
- /** 层级 */
33
- zIndex: { type: [Number, String], default: '9' },
34
- /** 图标的样式,对象形式 */
35
- iconStyle: {
36
- type: Object as PropType<Record<string, any>>,
37
- default: () => ({
38
- color: 'var(--u-tips-color)',
39
- fontSize: '38rpx'
40
- })
41
- }
42
- };
43
-
44
- export type BackTopProps = ExtractPropTypes<typeof BackTopProps>;
1
+ import type { ExtractPropTypes, PropType } from 'vue';
2
+ import type { Shape } from '../../types/global';
3
+
4
+ // u-back-top 组件 props
5
+ export const BackTopProps = {
6
+ /** 自定义根节点样式 */
7
+ customStyle: {
8
+ type: [String, Object] as PropType<string | Record<string, any>>,
9
+ default: () => ({})
10
+ },
11
+ /** 自定义根节点样式类 */
12
+ customClass: {
13
+ type: String as unknown as PropType<string>,
14
+ default: ''
15
+ },
16
+ /** 返回顶部的形状,circle-圆形,square-方形 */
17
+ mode: { type: String as PropType<Shape>, default: 'circle' },
18
+ /** 自定义图标 */
19
+ icon: { type: String, default: 'arrow-upward' },
20
+ /** 提示文字 */
21
+ tips: { type: String, default: '' },
22
+ /** 返回顶部滚动时间 */
23
+ duration: { type: [Number, String], default: 100 },
24
+ /** 滚动距离 */
25
+ scrollTop: { type: [Number, String], default: 0 },
26
+ /** 距离顶部多少距离显示,单位rpx */
27
+ top: { type: [Number, String], default: 400 },
28
+ /** 返回顶部按钮到底部的距离,单位rpx */
29
+ bottom: { type: [Number, String], default: 200 },
30
+ /** 返回顶部按钮到右边的距离,单位rpx */
31
+ right: { type: [Number, String], default: 40 },
32
+ /** 层级 */
33
+ zIndex: { type: [Number, String], default: '9' },
34
+ /** 图标的样式,对象形式 */
35
+ iconStyle: {
36
+ type: Object as PropType<Record<string, any>>,
37
+ default: () => ({
38
+ color: 'var(--u-tips-color)',
39
+ fontSize: '38rpx'
40
+ })
41
+ }
42
+ };
43
+
44
+ export type BackTopProps = ExtractPropTypes<typeof BackTopProps>;
@@ -1,141 +1,141 @@
1
- <template>
2
- <view
3
- @tap="backToTop"
4
- class="u-back-top"
5
- :class="['u-back-top--mode--' + mode, customClass]"
6
- :style="
7
- $u.toStyle(
8
- {
9
- bottom: bottom + 'rpx',
10
- right: right + 'rpx',
11
- borderRadius: mode == 'circle' ? '10000rpx' : '8rpx',
12
- zIndex: uZIndex,
13
- opacity: opacity
14
- },
15
- customStyle
16
- )
17
- "
18
- >
19
- <view class="u-back-top__content" v-if="!slots.default">
20
- <u-icon @click="backToTop" :name="icon" :custom-style="iconStyle"></u-icon>
21
- <view class="u-back-top__content__tips">
22
- {{ tips }}
23
- </view>
24
- </view>
25
- <slot v-else />
26
- </view>
27
- </template>
28
-
29
- <script lang="ts">
30
- export default {
31
- name: 'u-back-top',
32
- options: {
33
- addGlobalClass: true,
34
- // #ifndef MP-TOUTIAO
35
- virtualHost: true,
36
- // #endif
37
- styleIsolation: 'shared'
38
- }
39
- };
40
- </script>
41
-
42
- <script setup lang="ts">
43
- import { ref, computed, watch, useSlots } from 'vue';
44
- import { BackTopProps } from './types';
45
- import { $u } from '../../';
46
- import uIcon from '../u-icon/u-icon.vue';
47
-
48
- /**
49
- * back-top 返回顶部按钮
50
- * @description 页面滚动时显示的返回顶部按钮
51
- * @property {String} mode 返回顶部的形状,circle-圆形,square-方形
52
- * @property {String} icon 自定义图标
53
- * @property {String} tips 提示文字
54
- * @property {Number|String} duration 返回顶部滚动时间
55
- * @property {Number|String} scrollTop 滚动距离
56
- * @property {Number|String} top 距离顶部多少距离显示,单位rpx
57
- * @property {Number|String} bottom 返回顶部按钮到底部的距离,单位rpx
58
- * @property {Number|String} right 返回顶部按钮到右边的距离,单位rpx
59
- * @property {Number|String} zIndex 层级
60
- * @property {Object} iconStyle 图标的样式,对象形式
61
- * @property {Object} customStyle 整个组件的样式
62
- */
63
- const props = defineProps(BackTopProps);
64
-
65
- const slots = useSlots();
66
-
67
- // 不透明度,为了让组件有一个显示和隐藏的过渡动画
68
- const opacity = ref(0);
69
- // 组件的z-index值,隐藏时设置为-1,就会看不到
70
- const uZIndex = ref(-1);
71
-
72
- /**
73
- * 计算是否显示返回顶部按钮
74
- * 由于scrollTop为页面的滚动距离,默认为px单位,这里将用于传入的top(rpx)值
75
- * 转为px用于比较,如果滚动条到顶的距离大于设定的距离,就显示返回顶部的按钮
76
- */
77
- const showBackTop = computed(() => {
78
- // uni.upx2px 用于将 rpx 转为 px
79
- return (
80
- Number(props.scrollTop) >
81
- (typeof uni !== 'undefined' && uni.upx2px ? uni.upx2px(Number(props.top)) : Number(props.top))
82
- );
83
- // #else
84
- // return Number(props.scrollTop) > Number(props.top)
85
- });
86
-
87
- // 监听组件的显示与隐藏状态,修改组件的层级和不透明度
88
- // 让组件有显示和消失的动画效果,如果用v-if控制组件状态,将无设置动画效果
89
- watch(showBackTop, nVal => {
90
- if (nVal) {
91
- uZIndex.value = Number(props.zIndex);
92
- opacity.value = 1;
93
- } else {
94
- uZIndex.value = -1;
95
- opacity.value = 0;
96
- }
97
- });
98
-
99
- /**
100
- * 返回顶部方法
101
- */
102
- function backToTop() {
103
- // uni.pageScrollTo 用于页面滚动到顶部
104
- if (typeof uni !== 'undefined' && uni.pageScrollTo) {
105
- uni.pageScrollTo({
106
- scrollTop: 0,
107
- duration: Number(props.duration)
108
- });
109
- }
110
- }
111
- </script>
112
-
113
- <style lang="scss" scoped>
114
- @import '../../libs/css/style.components.scss';
115
-
116
- .u-back-top {
117
- width: 80rpx;
118
- height: 80rpx;
119
- position: fixed;
120
- z-index: 9;
121
- @include vue-flex;
122
- flex-direction: column;
123
- justify-content: center;
124
- background-color: var(--u-divider-color);
125
- color: $u-content-color;
126
- align-items: center;
127
- transition: opacity 0.4s;
128
-
129
- &__content {
130
- @include vue-flex;
131
- flex-direction: column;
132
- align-items: center;
133
-
134
- &__tips {
135
- font-size: 24rpx;
136
- transform: scale(0.8);
137
- line-height: 1;
138
- }
139
- }
140
- }
141
- </style>
1
+ <template>
2
+ <view
3
+ @tap="backToTop"
4
+ class="u-back-top"
5
+ :class="['u-back-top--mode--' + mode, customClass]"
6
+ :style="
7
+ $u.toStyle(
8
+ {
9
+ bottom: bottom + 'rpx',
10
+ right: right + 'rpx',
11
+ borderRadius: mode == 'circle' ? '10000rpx' : '8rpx',
12
+ zIndex: uZIndex,
13
+ opacity: opacity
14
+ },
15
+ customStyle
16
+ )
17
+ "
18
+ >
19
+ <view class="u-back-top__content" v-if="!slots.default">
20
+ <u-icon @click="backToTop" :name="icon" :custom-style="iconStyle"></u-icon>
21
+ <view class="u-back-top__content__tips">
22
+ {{ tips }}
23
+ </view>
24
+ </view>
25
+ <slot v-else />
26
+ </view>
27
+ </template>
28
+
29
+ <script lang="ts">
30
+ export default {
31
+ name: 'u-back-top',
32
+ options: {
33
+ addGlobalClass: true,
34
+ // #ifndef MP-TOUTIAO
35
+ virtualHost: true,
36
+ // #endif
37
+ styleIsolation: 'shared'
38
+ }
39
+ };
40
+ </script>
41
+
42
+ <script setup lang="ts">
43
+ import { ref, computed, watch, useSlots } from 'vue';
44
+ import { BackTopProps } from './types';
45
+ import { $u } from '../../';
46
+ import uIcon from '../u-icon/u-icon.vue';
47
+
48
+ /**
49
+ * back-top 返回顶部按钮
50
+ * @description 页面滚动时显示的返回顶部按钮
51
+ * @property {String} mode 返回顶部的形状,circle-圆形,square-方形
52
+ * @property {String} icon 自定义图标
53
+ * @property {String} tips 提示文字
54
+ * @property {Number|String} duration 返回顶部滚动时间
55
+ * @property {Number|String} scrollTop 滚动距离
56
+ * @property {Number|String} top 距离顶部多少距离显示,单位rpx
57
+ * @property {Number|String} bottom 返回顶部按钮到底部的距离,单位rpx
58
+ * @property {Number|String} right 返回顶部按钮到右边的距离,单位rpx
59
+ * @property {Number|String} zIndex 层级
60
+ * @property {Object} iconStyle 图标的样式,对象形式
61
+ * @property {Object} customStyle 整个组件的样式
62
+ */
63
+ const props = defineProps(BackTopProps);
64
+
65
+ const slots = useSlots();
66
+
67
+ // 不透明度,为了让组件有一个显示和隐藏的过渡动画
68
+ const opacity = ref(0);
69
+ // 组件的z-index值,隐藏时设置为-1,就会看不到
70
+ const uZIndex = ref(-1);
71
+
72
+ /**
73
+ * 计算是否显示返回顶部按钮
74
+ * 由于scrollTop为页面的滚动距离,默认为px单位,这里将用于传入的top(rpx)值
75
+ * 转为px用于比较,如果滚动条到顶的距离大于设定的距离,就显示返回顶部的按钮
76
+ */
77
+ const showBackTop = computed(() => {
78
+ // uni.upx2px 用于将 rpx 转为 px
79
+ return (
80
+ Number(props.scrollTop) >
81
+ (typeof uni !== 'undefined' && uni.upx2px ? uni.upx2px(Number(props.top)) : Number(props.top))
82
+ );
83
+ // #else
84
+ // return Number(props.scrollTop) > Number(props.top)
85
+ });
86
+
87
+ // 监听组件的显示与隐藏状态,修改组件的层级和不透明度
88
+ // 让组件有显示和消失的动画效果,如果用v-if控制组件状态,将无设置动画效果
89
+ watch(showBackTop, nVal => {
90
+ if (nVal) {
91
+ uZIndex.value = Number(props.zIndex);
92
+ opacity.value = 1;
93
+ } else {
94
+ uZIndex.value = -1;
95
+ opacity.value = 0;
96
+ }
97
+ });
98
+
99
+ /**
100
+ * 返回顶部方法
101
+ */
102
+ function backToTop() {
103
+ // uni.pageScrollTo 用于页面滚动到顶部
104
+ if (typeof uni !== 'undefined' && uni.pageScrollTo) {
105
+ uni.pageScrollTo({
106
+ scrollTop: 0,
107
+ duration: Number(props.duration)
108
+ });
109
+ }
110
+ }
111
+ </script>
112
+
113
+ <style lang="scss" scoped>
114
+ @import '../../libs/css/style.components.scss';
115
+
116
+ .u-back-top {
117
+ width: 80rpx;
118
+ height: 80rpx;
119
+ position: fixed;
120
+ z-index: 9;
121
+ @include vue-flex;
122
+ flex-direction: column;
123
+ justify-content: center;
124
+ background-color: var(--u-divider-color);
125
+ color: $u-content-color;
126
+ align-items: center;
127
+ transition: opacity 0.4s;
128
+
129
+ &__content {
130
+ @include vue-flex;
131
+ flex-direction: column;
132
+ align-items: center;
133
+
134
+ &__tips {
135
+ font-size: 24rpx;
136
+ transform: scale(0.8);
137
+ line-height: 1;
138
+ }
139
+ }
140
+ }
141
+ </style>
@@ -1,46 +1,46 @@
1
- import type { ExtractPropTypes, PropType } from 'vue';
2
- import type { BadgeSize, ThemeType } from '../../types/global';
3
-
4
- /**
5
- * badge 角标类型定义
6
- * @description 供 u-badge 组件 props 使用
7
- */
8
-
9
- export const BadgeProps = {
10
- /** 自定义根节点样式 */
11
- customStyle: {
12
- type: [String, Object] as PropType<string | Record<string, any>>,
13
- default: () => ({})
14
- },
15
- /** 自定义根节点样式类 */
16
- customClass: {
17
- type: String as unknown as PropType<string>,
18
- default: ''
19
- },
20
- /** 使用预设的背景颜色 primary,warning,success,error,info */
21
- type: { type: String as PropType<ThemeType>, default: 'error' },
22
- /** Badge的尺寸,default, mini */
23
- size: { type: String as PropType<BadgeSize>, default: 'default' },
24
- /** 是否是圆点 */
25
- isDot: { type: Boolean, default: false },
26
- /** 显示的数值内容 */
27
- count: { type: [Number, String], default: undefined },
28
- /** 展示封顶的数字值 */
29
- overflowCount: { type: Number, default: 99 },
30
- /** 当数值为 0 时,是否展示 Badge */
31
- showZero: { type: Boolean, default: false },
32
- /** 位置偏移 [number, number] */
33
- offset: { type: Array as unknown as PropType<[number, number]>, default: () => [20, 20] },
34
- /** 是否开启绝对定位,开启了offset才会起作用 */
35
- absolute: { type: Boolean, default: true },
36
- /** 字体大小 */
37
- fontSize: { type: [String, Number], default: '24' },
38
- /** 字体颜色 */
39
- color: { type: String, default: 'var(--u-white-color)' },
40
- /** badge的背景颜色 */
41
- bgColor: { type: String, default: '' },
42
- /** 是否让badge组件的中心点和父组件右上角重合,配置的话,offset将会失效 */
43
- isCenter: { type: Boolean, default: false }
44
- };
45
-
46
- export type BadgeProps = ExtractPropTypes<typeof BadgeProps>;
1
+ import type { ExtractPropTypes, PropType } from 'vue';
2
+ import type { BadgeSize, ThemeType } from '../../types/global';
3
+
4
+ /**
5
+ * badge 角标类型定义
6
+ * @description 供 u-badge 组件 props 使用
7
+ */
8
+
9
+ export const BadgeProps = {
10
+ /** 自定义根节点样式 */
11
+ customStyle: {
12
+ type: [String, Object] as PropType<string | Record<string, any>>,
13
+ default: () => ({})
14
+ },
15
+ /** 自定义根节点样式类 */
16
+ customClass: {
17
+ type: String as unknown as PropType<string>,
18
+ default: ''
19
+ },
20
+ /** 使用预设的背景颜色 primary,warning,success,error,info */
21
+ type: { type: String as PropType<ThemeType>, default: 'error' },
22
+ /** Badge的尺寸,default, mini */
23
+ size: { type: String as PropType<BadgeSize>, default: 'default' },
24
+ /** 是否是圆点 */
25
+ isDot: { type: Boolean, default: false },
26
+ /** 显示的数值内容 */
27
+ count: { type: [Number, String], default: undefined },
28
+ /** 展示封顶的数字值 */
29
+ overflowCount: { type: Number, default: 99 },
30
+ /** 当数值为 0 时,是否展示 Badge */
31
+ showZero: { type: Boolean, default: false },
32
+ /** 位置偏移 [number, number] */
33
+ offset: { type: Array as unknown as PropType<[number, number]>, default: () => [20, 20] },
34
+ /** 是否开启绝对定位,开启了offset才会起作用 */
35
+ absolute: { type: Boolean, default: true },
36
+ /** 字体大小 */
37
+ fontSize: { type: [String, Number], default: '24' },
38
+ /** 字体颜色 */
39
+ color: { type: String, default: 'var(--u-white-color)' },
40
+ /** badge的背景颜色 */
41
+ bgColor: { type: String, default: '' },
42
+ /** 是否让badge组件的中心点和父组件右上角重合,配置的话,offset将会失效 */
43
+ isCenter: { type: Boolean, default: false }
44
+ };
45
+
46
+ export type BadgeProps = ExtractPropTypes<typeof BadgeProps>;