uview-pro 0.2.4 → 0.3.1

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 (249) hide show
  1. package/changelog.md +584 -545
  2. package/components/common/props.ts +22 -22
  3. package/components/u-action-sheet/types.ts +37 -35
  4. package/components/u-action-sheet/u-action-sheet.vue +178 -167
  5. package/components/u-alert-tips/types.ts +41 -39
  6. package/components/u-alert-tips/u-alert-tips.vue +238 -223
  7. package/components/u-avatar/types.ts +36 -34
  8. package/components/u-avatar/u-avatar.vue +217 -207
  9. package/components/u-avatar-cropper/types.ts +23 -23
  10. package/components/u-avatar-cropper/u-avatar-cropper.vue +297 -286
  11. package/components/u-avatar-cropper/weCropper.d.ts +62 -62
  12. package/components/u-avatar-cropper/weCropper.js +1281 -1281
  13. package/components/u-avatar-cropper/weCropper.ts +1276 -1276
  14. package/components/u-back-top/types.ts +36 -39
  15. package/components/u-back-top/u-back-top.vue +140 -128
  16. package/components/u-badge/types.ts +38 -36
  17. package/components/u-badge/u-badge.vue +183 -165
  18. package/components/u-button/types.ts +66 -66
  19. package/components/u-button/u-button.vue +579 -566
  20. package/components/u-calendar/types.ts +75 -75
  21. package/components/u-calendar/u-calendar.vue +793 -793
  22. package/components/u-car-keyboard/types.ts +14 -12
  23. package/components/u-car-keyboard/u-car-keyboard.vue +262 -253
  24. package/components/u-card/types.ts +61 -59
  25. package/components/u-card/u-card.vue +209 -194
  26. package/components/u-cell-group/types.ts +19 -17
  27. package/components/u-cell-group/u-cell-group.vue +60 -50
  28. package/components/u-cell-item/types.ts +56 -54
  29. package/components/u-cell-item/u-cell-item.vue +226 -213
  30. package/components/u-checkbox/types.ts +33 -31
  31. package/components/u-checkbox/u-checkbox.vue +282 -283
  32. package/components/u-checkbox-group/types.ts +34 -32
  33. package/components/u-checkbox-group/u-checkbox-group.vue +130 -130
  34. package/components/u-circle-progress/types.ts +54 -52
  35. package/components/u-circle-progress/u-circle-progress.vue +206 -191
  36. package/components/u-city-select/types.ts +22 -20
  37. package/components/u-city-select/u-city-select.vue +276 -264
  38. package/components/u-col/types.ts +32 -30
  39. package/components/u-col/u-col.vue +142 -123
  40. package/components/u-collapse/types.ts +33 -33
  41. package/components/u-collapse/u-collapse.vue +190 -186
  42. package/components/u-collapse-item/types.ts +27 -27
  43. package/components/u-collapse-item/u-collapse-item.vue +290 -285
  44. package/components/u-column-notice/types.ts +50 -48
  45. package/components/u-column-notice/u-column-notice.vue +222 -210
  46. package/components/u-count-down/types.ts +44 -42
  47. package/components/u-count-down/u-count-down.vue +286 -274
  48. package/components/u-count-to/types.ts +34 -32
  49. package/components/u-count-to/u-count-to.vue +266 -248
  50. package/components/u-divider/types.ts +33 -31
  51. package/components/u-divider/u-divider.vue +145 -129
  52. package/components/u-dropdown/types.ts +34 -32
  53. package/components/u-dropdown/u-dropdown.vue +330 -302
  54. package/components/u-dropdown-item/types.ts +29 -27
  55. package/components/u-dropdown-item/u-dropdown-item.vue +120 -128
  56. package/components/u-empty/types.ts +38 -36
  57. package/components/u-empty/u-empty.vue +103 -88
  58. package/components/u-field/types.ts +71 -69
  59. package/components/u-field/u-field.vue +388 -373
  60. package/components/u-form/types.ts +29 -27
  61. package/components/u-form/u-form.vue +130 -136
  62. package/components/u-form-item/types.ts +72 -70
  63. package/components/u-form-item/u-form-item.vue +447 -447
  64. package/components/u-full-screen/types.ts +16 -14
  65. package/components/u-full-screen/u-full-screen.vue +103 -89
  66. package/components/u-gap/types.ts +20 -18
  67. package/components/u-gap/u-gap.vue +50 -40
  68. package/components/u-grid/types.ts +21 -19
  69. package/components/u-grid/u-grid.vue +91 -93
  70. package/components/u-grid-item/types.ts +16 -16
  71. package/components/u-grid-item/u-grid-item.vue +130 -134
  72. package/components/u-icon/types.ts +61 -62
  73. package/components/u-icon/u-icon.vue +296 -294
  74. package/components/u-image/types.ts +51 -51
  75. package/components/u-image/u-image.vue +239 -230
  76. package/components/u-index-anchor/types.ts +16 -16
  77. package/components/u-index-anchor/u-index-anchor.vue +94 -86
  78. package/components/u-index-list/types.ts +43 -43
  79. package/components/u-index-list/u-index-list.vue +352 -355
  80. package/components/u-input/types.ts +137 -140
  81. package/components/u-input/u-input.vue +288 -279
  82. package/components/u-keyboard/types.ts +40 -40
  83. package/components/u-keyboard/u-keyboard.vue +178 -169
  84. package/components/u-lazy-load/types.ts +37 -37
  85. package/components/u-lazy-load/u-lazy-load.vue +246 -235
  86. package/components/u-line/types.ts +44 -44
  87. package/components/u-line/u-line.vue +68 -59
  88. package/components/u-line-progress/types.ts +58 -58
  89. package/components/u-line-progress/u-line-progress.vue +126 -117
  90. package/components/u-link/types.ts +43 -43
  91. package/components/u-link/u-link.vue +84 -75
  92. package/components/u-loading/types.ts +35 -35
  93. package/components/u-loading/u-loading.vue +105 -96
  94. package/components/u-loading-popup/types.ts +26 -26
  95. package/components/u-loading-popup/u-loading-popup.vue +253 -239
  96. package/components/u-loadmore/types.ts +79 -79
  97. package/components/u-loadmore/u-loadmore.vue +156 -145
  98. package/components/u-mask/types.ts +40 -43
  99. package/components/u-mask/u-mask.vue +113 -106
  100. package/components/u-message-input/types.ts +74 -74
  101. package/components/u-message-input/u-message-input.vue +281 -270
  102. package/components/u-modal/types.ts +118 -118
  103. package/components/u-modal/u-modal.vue +220 -211
  104. package/components/u-navbar/types.ts +103 -103
  105. package/components/u-navbar/u-navbar.vue +251 -240
  106. package/components/u-no-network/image.ts +2 -2
  107. package/components/u-no-network/types.ts +28 -28
  108. package/components/u-no-network/u-no-network.vue +303 -292
  109. package/components/u-notice-bar/types.ts +111 -111
  110. package/components/u-notice-bar/u-notice-bar.vue +189 -179
  111. package/components/u-number-box/types.ts +42 -42
  112. package/components/u-number-box/u-number-box.vue +321 -312
  113. package/components/u-number-keyboard/types.ts +26 -26
  114. package/components/u-number-keyboard/u-number-keyboard.vue +188 -179
  115. package/components/u-picker/types.ts +123 -123
  116. package/components/u-picker/u-picker.vue +685 -676
  117. package/components/u-popup/types.ts +59 -59
  118. package/components/u-popup/u-popup.vue +385 -375
  119. package/components/u-radio/types.ts +27 -25
  120. package/components/u-radio/u-radio.vue +279 -272
  121. package/components/u-radio-group/types.ts +31 -29
  122. package/components/u-radio-group/u-radio-group.vue +96 -108
  123. package/components/u-rate/types.ts +42 -40
  124. package/components/u-rate/u-rate.vue +249 -234
  125. package/components/u-read-more/types.ts +37 -35
  126. package/components/u-read-more/u-read-more.vue +172 -156
  127. package/components/u-root-portal/u-root-portal.vue +56 -54
  128. package/components/u-row/types.ts +22 -20
  129. package/components/u-row/u-row.vue +105 -87
  130. package/components/u-row-notice/types.ts +41 -39
  131. package/components/u-row-notice/u-row-notice.vue +256 -244
  132. package/components/u-safe-bottom/u-safe-bottom.vue +57 -46
  133. package/components/u-search/types.ts +55 -53
  134. package/components/u-search/u-search.vue +279 -268
  135. package/components/u-section/types.ts +34 -32
  136. package/components/u-section/u-section.vue +150 -131
  137. package/components/u-select/types.ts +45 -43
  138. package/components/u-select/u-select.vue +388 -378
  139. package/components/u-skeleton/types.ts +22 -20
  140. package/components/u-skeleton/u-skeleton.vue +231 -220
  141. package/components/u-slider/types.ts +34 -32
  142. package/components/u-slider/u-slider.vue +255 -247
  143. package/components/u-status-bar/u-status-bar.vue +74 -65
  144. package/components/u-steps/types.ts +30 -28
  145. package/components/u-steps/u-steps.vue +181 -169
  146. package/components/u-sticky/types.ts +24 -22
  147. package/components/u-sticky/u-sticky.vue +178 -162
  148. package/components/u-subsection/types.ts +38 -36
  149. package/components/u-subsection/u-subsection.vue +339 -328
  150. package/components/u-swipe-action/types.ts +52 -50
  151. package/components/u-swipe-action/u-swipe-action.vue +276 -260
  152. package/components/u-swiper/types.ts +49 -47
  153. package/components/u-swiper/u-swiper.vue +308 -291
  154. package/components/u-switch/types.ts +30 -28
  155. package/components/u-switch/u-switch.vue +150 -141
  156. package/components/u-tabbar/types.ts +38 -36
  157. package/components/u-tabbar/u-tabbar.vue +315 -298
  158. package/components/u-table/types.ts +27 -25
  159. package/components/u-table/u-table.vue +67 -55
  160. package/components/u-tabs/types.ts +53 -51
  161. package/components/u-tabs/u-tabs.vue +302 -291
  162. package/components/u-tabs-swiper/types.ts +55 -53
  163. package/components/u-tabs-swiper/u-tabs-swiper.vue +409 -397
  164. package/components/u-tag/types.ts +39 -37
  165. package/components/u-tag/u-tag.vue +268 -252
  166. package/components/u-td/types.ts +14 -12
  167. package/components/u-td/u-td.vue +98 -87
  168. package/components/u-text/types.ts +72 -72
  169. package/components/u-text/u-text.vue +343 -341
  170. package/components/u-th/types.ts +14 -12
  171. package/components/u-th/u-th.vue +92 -81
  172. package/components/u-time-line/u-time-line.vue +53 -39
  173. package/components/u-time-line-item/types.ts +16 -14
  174. package/components/u-time-line-item/u-time-line-item.vue +90 -78
  175. package/components/u-toast/types.ts +38 -36
  176. package/components/u-toast/u-toast.vue +240 -233
  177. package/components/u-top-tips/types.ts +16 -14
  178. package/components/u-top-tips/u-top-tips.vue +130 -113
  179. package/components/u-tr/types.ts +11 -8
  180. package/components/u-tr/u-tr.vue +39 -24
  181. package/components/u-upload/types.ts +82 -80
  182. package/components/u-upload/u-upload.vue +568 -559
  183. package/components/u-verification-code/types.ts +24 -22
  184. package/components/u-verification-code/u-verification-code.vue +176 -164
  185. package/components/u-waterfall/types.ts +18 -16
  186. package/components/u-waterfall/u-waterfall.vue +187 -175
  187. package/iconfont.css +913 -913
  188. package/index.scss +25 -25
  189. package/index.ts +38 -38
  190. package/libs/config/config.ts +26 -26
  191. package/libs/config/zIndex.ts +37 -37
  192. package/libs/css/color.scss +155 -155
  193. package/libs/css/common.scss +178 -178
  194. package/libs/css/style.components.scss +16 -16
  195. package/libs/css/style.h5.scss +8 -8
  196. package/libs/css/style.mp.scss +72 -72
  197. package/libs/css/style.nvue.scss +15 -15
  198. package/libs/css/style.vue.scss +188 -188
  199. package/libs/function/$parent.ts +24 -24
  200. package/libs/function/addUnit.ts +13 -13
  201. package/libs/function/color.ts +37 -37
  202. package/libs/function/colorGradient.ts +139 -139
  203. package/libs/function/debounce.ts +28 -28
  204. package/libs/function/deepClone.ts +39 -39
  205. package/libs/function/deepMerge.ts +35 -35
  206. package/libs/function/getParent.ts +63 -63
  207. package/libs/function/getRect.ts +26 -26
  208. package/libs/function/guid.ts +42 -42
  209. package/libs/function/md5.ts +403 -403
  210. package/libs/function/parent.ts +21 -21
  211. package/libs/function/queryParams.ts +64 -64
  212. package/libs/function/random.ts +16 -16
  213. package/libs/function/randomArray.ts +11 -11
  214. package/libs/function/route.ts +118 -118
  215. package/libs/function/styleUtils.ts +83 -83
  216. package/libs/function/sys.ts +15 -15
  217. package/libs/function/test.ts +289 -289
  218. package/libs/function/throttle.ts +31 -31
  219. package/libs/function/timeFormat.ts +55 -55
  220. package/libs/function/timeFrom.ts +48 -48
  221. package/libs/function/toast.ts +14 -14
  222. package/libs/function/trim.ts +21 -21
  223. package/libs/function/type2icon.ts +39 -39
  224. package/libs/hooks/index.ts +4 -3
  225. package/libs/hooks/useCompRelation.ts +364 -0
  226. package/libs/hooks/useComponent.ts +759 -759
  227. package/libs/hooks/useEmitter.ts +79 -79
  228. package/libs/hooks/useParent.ts +33 -33
  229. package/libs/hooks/useRect.ts +33 -33
  230. package/libs/index.ts +337 -320
  231. package/libs/request/auto-http.ts +76 -76
  232. package/libs/request/index.ts +242 -242
  233. package/libs/store/index.ts +88 -88
  234. package/libs/util/async-validator.d.ts +75 -75
  235. package/libs/util/async-validator.js +1 -1
  236. package/libs/util/calendar.d.ts +57 -57
  237. package/libs/util/emitter.ts +112 -112
  238. package/libs/util/eventBus.ts +86 -86
  239. package/libs/util/logger.ts +364 -364
  240. package/libs/util/mitt.ts +118 -118
  241. package/libs/util/parent.ts +20 -20
  242. package/package.json +4 -4
  243. package/readme.md +241 -241
  244. package/theme.scss +38 -38
  245. package/types/components.d.ts +97 -97
  246. package/types/global.d.ts +331 -331
  247. package/types/ignore-errors.d.ts +30 -30
  248. package/types/index.d.ts +19 -19
  249. package/types/uni-app.d.ts +63 -63
@@ -1,75 +1,84 @@
1
- <template>
2
- <text
3
- class="u-link"
4
- @tap.stop="openLink"
5
- :style="{
6
- color: color,
7
- fontSize: fontSize + 'rpx',
8
- borderBottom: underLine ? `1px solid ${lineColor ? lineColor : color}` : 'none',
9
- paddingBottom: underLine ? '0rpx' : '0'
10
- }"
11
- >
12
- <slot></slot>
13
- </text>
14
- </template>
15
-
16
- <script setup lang="ts">
17
- import { $u } from '../..';
18
- import { LinkProps } from './types';
19
-
20
- defineOptions({
21
- name: 'u-link'
22
- });
23
-
24
- /**
25
- * link 超链接
26
- * @description 该组件为超链接组件,在不同平台有不同表现形式:在APP平台会通过plus环境打开内置浏览器,在小程序中把链接复制到粘贴板,同时提示信息,在H5中通过window.open打开链接。
27
- * @tutorial https://uviewpro.cn/zh/components/link.html
28
- * @property {String} color 文字颜色(默认#606266)
29
- * @property {String Number} font-size 字体大小,单位rpx(默认28)
30
- * @property {Boolean} under-line 是否显示下划线(默认false)
31
- * @property {String} href 跳转的链接,要带上http(s)
32
- * @property {String} line-color 下划线颜色,默认同color参数颜色
33
- * @property {String} mp-tips 各个小程序平台把链接复制到粘贴板后的提示语(默认“链接已复制,请在浏览器打开”)
34
- * @example <u-link href="https://uviewpro.cn">蜀道难,难于上青天</u-link>
35
- */
36
- const props = defineProps(LinkProps);
37
-
38
- /**
39
- * 打开链接方法
40
- * 不同平台有不同表现形式
41
- */
42
- function openLink() {
43
- // #ifdef APP-PLUS
44
- if (typeof plus !== 'undefined' && plus.runtime) {
45
- plus.runtime.openURL(props.href);
46
- }
47
- // #endif
48
- // #ifdef H5
49
- if (typeof window !== 'undefined') {
50
- window.open(props.href);
51
- }
52
- // #endif
53
- // #ifdef MP
54
- if (typeof uni !== 'undefined' && uni.setClipboardData) {
55
- uni.setClipboardData({
56
- data: props.href,
57
- success: () => {
58
- uni.hideToast();
59
- if (typeof $u !== 'undefined' && $u.toast && props.mpTips) {
60
- $u.toast(props.mpTips);
61
- }
62
- }
63
- });
64
- }
65
- // #endif
66
- }
67
- </script>
68
-
69
- <style lang="scss" scoped>
70
- @import '../../libs/css/style.components.scss';
71
-
72
- .u-link {
73
- line-height: 1;
74
- }
75
- </style>
1
+ <template>
2
+ <text
3
+ class="u-link"
4
+ @tap.stop="openLink"
5
+ :style="{
6
+ color: color,
7
+ fontSize: fontSize + 'rpx',
8
+ borderBottom: underLine ? `1px solid ${lineColor ? lineColor : color}` : 'none',
9
+ paddingBottom: underLine ? '0rpx' : '0'
10
+ }"
11
+ >
12
+ <slot></slot>
13
+ </text>
14
+ </template>
15
+
16
+ <script lang="ts">
17
+ export default {
18
+ name: 'u-link',
19
+ options: {
20
+ addGlobalClass: true,
21
+ // #ifndef MP-TOUTIAO
22
+ virtualHost: true,
23
+ // #endif
24
+ styleIsolation: 'shared'
25
+ }
26
+ };
27
+ </script>
28
+
29
+ <script setup lang="ts">
30
+ import { $u } from '../..';
31
+ import { LinkProps } from './types';
32
+
33
+ /**
34
+ * link 超链接
35
+ * @description 该组件为超链接组件,在不同平台有不同表现形式:在APP平台会通过plus环境打开内置浏览器,在小程序中把链接复制到粘贴板,同时提示信息,在H5中通过window.open打开链接。
36
+ * @tutorial https://uviewpro.cn/zh/components/link.html
37
+ * @property {String} color 文字颜色(默认#606266)
38
+ * @property {String Number} font-size 字体大小,单位rpx(默认28)
39
+ * @property {Boolean} under-line 是否显示下划线(默认false)
40
+ * @property {String} href 跳转的链接,要带上http(s)
41
+ * @property {String} line-color 下划线颜色,默认同color参数颜色
42
+ * @property {String} mp-tips 各个小程序平台把链接复制到粘贴板后的提示语(默认“链接已复制,请在浏览器打开”)
43
+ * @example <u-link href="https://uviewpro.cn">蜀道难,难于上青天</u-link>
44
+ */
45
+ const props = defineProps(LinkProps);
46
+
47
+ /**
48
+ * 打开链接方法
49
+ * 不同平台有不同表现形式
50
+ */
51
+ function openLink() {
52
+ // #ifdef APP-PLUS
53
+ if (typeof plus !== 'undefined' && plus.runtime) {
54
+ plus.runtime.openURL(props.href);
55
+ }
56
+ // #endif
57
+ // #ifdef H5
58
+ if (typeof window !== 'undefined') {
59
+ window.open(props.href);
60
+ }
61
+ // #endif
62
+ // #ifdef MP
63
+ if (typeof uni !== 'undefined' && uni.setClipboardData) {
64
+ uni.setClipboardData({
65
+ data: props.href,
66
+ success: () => {
67
+ uni.hideToast();
68
+ if (typeof $u !== 'undefined' && $u.toast && props.mpTips) {
69
+ $u.toast(props.mpTips);
70
+ }
71
+ }
72
+ });
73
+ }
74
+ // #endif
75
+ }
76
+ </script>
77
+
78
+ <style lang="scss" scoped>
79
+ @import '../../libs/css/style.components.scss';
80
+
81
+ .u-link {
82
+ line-height: 1;
83
+ }
84
+ </style>
@@ -1,35 +1,35 @@
1
- import type { ExtractPropTypes, PropType } from 'vue';
2
-
3
- type LoadingMode = 'circle' | 'flower';
4
-
5
- /**
6
- * u-loading 组件 props 类型定义
7
- * @description 加载动画,支持多种模式
8
- */
9
- export const LoadingProps = {
10
- /** 动画的类型 */
11
- mode: {
12
- type: String as PropType<LoadingMode>,
13
- default: 'circle'
14
- },
15
- /** 动画的颜色 */
16
- color: {
17
- type: String,
18
- default: '#c7c7c7'
19
- },
20
- /** 加载图标的大小,单位rpx */
21
- size: {
22
- type: [String, Number] as PropType<string | number>,
23
- default: '34'
24
- },
25
- /** 是否显示动画 */
26
- show: {
27
- type: Boolean,
28
- default: true
29
- }
30
- };
31
-
32
- /**
33
- * u-loading 组件 props 类型
34
- */
35
- export type LoadingProps = ExtractPropTypes<typeof LoadingProps>;
1
+ import type { ExtractPropTypes, PropType } from 'vue';
2
+
3
+ type LoadingMode = 'circle' | 'flower';
4
+
5
+ /**
6
+ * u-loading 组件 props 类型定义
7
+ * @description 加载动画,支持多种模式
8
+ */
9
+ export const LoadingProps = {
10
+ /** 动画的类型 */
11
+ mode: {
12
+ type: String as PropType<LoadingMode>,
13
+ default: 'circle'
14
+ },
15
+ /** 动画的颜色 */
16
+ color: {
17
+ type: String,
18
+ default: '#c7c7c7'
19
+ },
20
+ /** 加载图标的大小,单位rpx */
21
+ size: {
22
+ type: [String, Number] as PropType<string | number>,
23
+ default: '34'
24
+ },
25
+ /** 是否显示动画 */
26
+ show: {
27
+ type: Boolean,
28
+ default: true
29
+ }
30
+ };
31
+
32
+ /**
33
+ * u-loading 组件 props 类型
34
+ */
35
+ export type LoadingProps = ExtractPropTypes<typeof LoadingProps>;
@@ -1,96 +1,105 @@
1
- <template>
2
- <view
3
- v-if="show"
4
- class="u-loading"
5
- :class="mode === 'circle' ? 'u-loading-circle' : 'u-loading-flower'"
6
- :style="[cricleStyle]"
7
- >
8
- </view>
9
- </template>
10
-
11
- <script setup lang="ts">
12
- import { computed } from 'vue';
13
- import { LoadingProps } from './types';
14
-
15
- defineOptions({
16
- name: 'u-loading'
17
- });
18
-
19
- /**
20
- * loading 加载动画
21
- * @description 此组件为一个小动画,目前用在uView的loadmore加载更多和switch开关等组件的正在加载状态场景。
22
- * @tutorial https://uviewpro.cn/zh/components/loading.html
23
- * @property {String} mode 模式选择,见官网说明(默认circle)
24
- * @property {String} color 动画活动区域的颜色,只对 mode = flower 模式有效(默认#c7c7c7)
25
- * @property {String|Number} size 加载图标的大小,单位rpx(默认34)
26
- * @property {Boolean} show 是否显示动画(默认true)
27
- * @example <u-loading mode="circle"></u-loading>
28
- */
29
- const props = defineProps(LoadingProps);
30
-
31
- /**
32
- * 加载中圆圈动画的样式
33
- * @returns {Record<string, any>}
34
- */
35
- const cricleStyle = computed(() => {
36
- let style: Record<string, any> = {};
37
- style.width = props.size + 'rpx';
38
- style.height = props.size + 'rpx';
39
- // 只对圆圈模式生效
40
- if (props.mode === 'circle') {
41
- style.borderColor = `#e4e4e4 #e4e4e4 #e4e4e4 ${props.color ? props.color : '#c7c7c7'}`;
42
- }
43
- return style;
44
- });
45
- </script>
46
-
47
- <style lang="scss" scoped>
48
- @import '../../libs/css/style.components.scss';
49
-
50
- .u-loading-circle {
51
- /* #ifndef APP-NVUE */
52
- display: inline-flex;
53
- /* #endif */
54
- vertical-align: middle;
55
- width: 28rpx;
56
- height: 28rpx;
57
- background: 0 0;
58
- border-radius: 50%;
59
- border: 2px solid;
60
- border-color: #e5e5e5 #e5e5e5 #e5e5e5 #8f8d8e;
61
- animation: u-circle 1s linear infinite;
62
- }
63
-
64
- .u-loading-flower {
65
- width: 20px;
66
- height: 20px;
67
- display: inline-block;
68
- vertical-align: middle;
69
- -webkit-animation: u-flower 1s steps(12) infinite;
70
- animation: u-flower 1s steps(12) infinite;
71
- background: transparent
72
- url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMjAiIGhlaWdodD0iMTIwIiB2aWV3Qm94PSIwIDAgMTAwIDEwMCI+PHBhdGggZmlsbD0ibm9uZSIgZD0iTTAgMGgxMDB2MTAwSDB6Ii8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjRTlFOUU5IiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgLTMwKSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iIzk4OTY5NyIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSgzMCAxMDUuOTggNjUpIi8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjOUI5OTlBIiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0icm90YXRlKDYwIDc1Ljk4IDY1KSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iI0EzQTFBMiIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSg5MCA2NSA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNBQkE5QUEiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoMTIwIDU4LjY2IDY1KSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iI0IyQjJCMiIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSgxNTAgNTQuMDIgNjUpIi8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjQkFCOEI5IiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0icm90YXRlKDE4MCA1MCA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNDMkMwQzEiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoLTE1MCA0NS45OCA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNDQkNCQ0IiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoLTEyMCA0MS4zNCA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNEMkQyRDIiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoLTkwIDM1IDY1KSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iI0RBREFEQSIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSgtNjAgMjQuMDIgNjUpIi8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjRTJFMkUyIiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0icm90YXRlKC0zMCAtNS45OCA2NSkiLz48L3N2Zz4=)
73
- no-repeat;
74
- background-size: 100%;
75
- }
76
-
77
- @keyframes u-flower {
78
- 0% {
79
- -webkit-transform: rotate(0deg);
80
- transform: rotate(0deg);
81
- }
82
- to {
83
- -webkit-transform: rotate(1turn);
84
- transform: rotate(1turn);
85
- }
86
- }
87
-
88
- @keyframes u-circle {
89
- 0% {
90
- transform: rotate(0);
91
- }
92
- 100% {
93
- transform: rotate(360deg);
94
- }
95
- }
96
- </style>
1
+ <template>
2
+ <view
3
+ v-if="show"
4
+ class="u-loading"
5
+ :class="mode === 'circle' ? 'u-loading-circle' : 'u-loading-flower'"
6
+ :style="[cricleStyle]"
7
+ >
8
+ </view>
9
+ </template>
10
+
11
+ <script lang="ts">
12
+ export default {
13
+ name: 'u-loading',
14
+ options: {
15
+ addGlobalClass: true,
16
+ // #ifndef MP-TOUTIAO
17
+ virtualHost: true,
18
+ // #endif
19
+ styleIsolation: 'shared'
20
+ }
21
+ };
22
+ </script>
23
+
24
+ <script setup lang="ts">
25
+ import { computed } from 'vue';
26
+ import { LoadingProps } from './types';
27
+
28
+ /**
29
+ * loading 加载动画
30
+ * @description 此组件为一个小动画,目前用在uView的loadmore加载更多和switch开关等组件的正在加载状态场景。
31
+ * @tutorial https://uviewpro.cn/zh/components/loading.html
32
+ * @property {String} mode 模式选择,见官网说明(默认circle)
33
+ * @property {String} color 动画活动区域的颜色,只对 mode = flower 模式有效(默认#c7c7c7)
34
+ * @property {String|Number} size 加载图标的大小,单位rpx(默认34)
35
+ * @property {Boolean} show 是否显示动画(默认true)
36
+ * @example <u-loading mode="circle"></u-loading>
37
+ */
38
+ const props = defineProps(LoadingProps);
39
+
40
+ /**
41
+ * 加载中圆圈动画的样式
42
+ * @returns {Record<string, any>}
43
+ */
44
+ const cricleStyle = computed(() => {
45
+ let style: Record<string, any> = {};
46
+ style.width = props.size + 'rpx';
47
+ style.height = props.size + 'rpx';
48
+ // 只对圆圈模式生效
49
+ if (props.mode === 'circle') {
50
+ style.borderColor = `#e4e4e4 #e4e4e4 #e4e4e4 ${props.color ? props.color : '#c7c7c7'}`;
51
+ }
52
+ return style;
53
+ });
54
+ </script>
55
+
56
+ <style lang="scss" scoped>
57
+ @import '../../libs/css/style.components.scss';
58
+
59
+ .u-loading-circle {
60
+ /* #ifndef APP-NVUE */
61
+ display: inline-flex;
62
+ /* #endif */
63
+ vertical-align: middle;
64
+ width: 28rpx;
65
+ height: 28rpx;
66
+ background: 0 0;
67
+ border-radius: 50%;
68
+ border: 2px solid;
69
+ border-color: #e5e5e5 #e5e5e5 #e5e5e5 #8f8d8e;
70
+ animation: u-circle 1s linear infinite;
71
+ }
72
+
73
+ .u-loading-flower {
74
+ width: 20px;
75
+ height: 20px;
76
+ display: inline-block;
77
+ vertical-align: middle;
78
+ -webkit-animation: u-flower 1s steps(12) infinite;
79
+ animation: u-flower 1s steps(12) infinite;
80
+ background: transparent
81
+ url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMjAiIGhlaWdodD0iMTIwIiB2aWV3Qm94PSIwIDAgMTAwIDEwMCI+PHBhdGggZmlsbD0ibm9uZSIgZD0iTTAgMGgxMDB2MTAwSDB6Ii8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjRTlFOUU5IiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgLTMwKSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iIzk4OTY5NyIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSgzMCAxMDUuOTggNjUpIi8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjOUI5OTlBIiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0icm90YXRlKDYwIDc1Ljk4IDY1KSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iI0EzQTFBMiIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSg5MCA2NSA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNBQkE5QUEiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoMTIwIDU4LjY2IDY1KSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iI0IyQjJCMiIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSgxNTAgNTQuMDIgNjUpIi8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjQkFCOEI5IiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0icm90YXRlKDE4MCA1MCA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNDMkMwQzEiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoLTE1MCA0NS45OCA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNDQkNCQ0IiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoLTEyMCA0MS4zNCA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNEMkQyRDIiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoLTkwIDM1IDY1KSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iI0RBREFEQSIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSgtNjAgMjQuMDIgNjUpIi8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjRTJFMkUyIiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0icm90YXRlKC0zMCAtNS45OCA2NSkiLz48L3N2Zz4=)
82
+ no-repeat;
83
+ background-size: 100%;
84
+ }
85
+
86
+ @keyframes u-flower {
87
+ 0% {
88
+ -webkit-transform: rotate(0deg);
89
+ transform: rotate(0deg);
90
+ }
91
+ to {
92
+ -webkit-transform: rotate(1turn);
93
+ transform: rotate(1turn);
94
+ }
95
+ }
96
+
97
+ @keyframes u-circle {
98
+ 0% {
99
+ transform: rotate(0);
100
+ }
101
+ 100% {
102
+ transform: rotate(360deg);
103
+ }
104
+ }
105
+ </style>
@@ -1,26 +1,26 @@
1
- import type { ExtractPropTypes, PropType } from 'vue';
2
- type LoadingMode = 'circle' | 'flower';
3
-
4
- /**
5
- * u-loading-popup 组件 props 类型定义
6
- */
7
- export const LoadingPopupProps = {
8
- /** 是否显示加载弹窗 */
9
- modelValue: { type: Boolean, default: false },
10
- /** 加载提示文本 */
11
- text: { type: String, default: '' },
12
- /** 方向,可选 'vertical' | 'horizontal' */
13
- direction: { type: String as PropType<'vertical' | 'horizontal'>, default: 'vertical' },
14
- /** 自动关闭的持续时间(ms),0为不自动关闭 */
15
- duration: { type: Number, default: 0 },
16
- /** 允许点击遮罩关闭的最短时间(ms) */
17
- cancelTime: { type: Number, default: 10000 },
18
- /** 动画的类型 */
19
- mode: { type: String as PropType<LoadingMode>, default: 'circle' },
20
- /** 动画的颜色 */
21
- color: { type: String, default: '#c7c7c7' },
22
- /** 加载图标的大小,单位rpx */
23
- size: { type: [String, Number] as PropType<string | number>, default: '48' }
24
- };
25
-
26
- export type LoadingPopupProps = ExtractPropTypes<typeof LoadingPopupProps>;
1
+ import type { ExtractPropTypes, PropType } from 'vue';
2
+ type LoadingMode = 'circle' | 'flower';
3
+
4
+ /**
5
+ * u-loading-popup 组件 props 类型定义
6
+ */
7
+ export const LoadingPopupProps = {
8
+ /** 是否显示加载弹窗 */
9
+ modelValue: { type: Boolean, default: false },
10
+ /** 加载提示文本 */
11
+ text: { type: String, default: '' },
12
+ /** 方向,可选 'vertical' | 'horizontal' */
13
+ direction: { type: String as PropType<'vertical' | 'horizontal'>, default: 'vertical' },
14
+ /** 自动关闭的持续时间(ms),0为不自动关闭 */
15
+ duration: { type: Number, default: 0 },
16
+ /** 允许点击遮罩关闭的最短时间(ms) */
17
+ cancelTime: { type: Number, default: 10000 },
18
+ /** 动画的类型 */
19
+ mode: { type: String as PropType<LoadingMode>, default: 'circle' },
20
+ /** 动画的颜色 */
21
+ color: { type: String, default: '#c7c7c7' },
22
+ /** 加载图标的大小,单位rpx */
23
+ size: { type: [String, Number] as PropType<string | number>, default: '48' }
24
+ };
25
+
26
+ export type LoadingPopupProps = ExtractPropTypes<typeof LoadingPopupProps>;