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,170 +1,170 @@
1
- <template>
2
- <view
3
- class="u-load-more-wrap"
4
- :class="props.customClass"
5
- :style="
6
- $u.toStyle(props.customStyle, {
7
- backgroundColor: props.bgColor,
8
- marginBottom: props.marginBottom + 'rpx',
9
- marginTop: props.marginTop + 'rpx',
10
- height: $u.addUnit(props.height)
11
- })
12
- "
13
- >
14
- <u-line color="var(--u-divider-color)" length="50"></u-line>
15
- <!-- 加载中和没有更多的状态才显示两边的横线 -->
16
- <view :class="props.status == 'loadmore' || props.status == 'nomore' ? 'u-more' : ''" class="u-load-more-inner">
17
- <view class="u-loadmore-icon-wrap">
18
- <u-loading
19
- class="u-loadmore-icon"
20
- :color="props.iconColor"
21
- :mode="props.iconType == 'circle' ? 'circle' : 'flower'"
22
- :show="props.status == 'loading' && props.icon"
23
- ></u-loading>
24
- </view>
25
- <!-- 如果没有更多的状态下,显示内容为dot(粗点),加载特定样式 -->
26
- <view
27
- class="u-line-1"
28
- :style="$u.toStyle(loadTextStyle)"
29
- :class="[props.status == 'nomore' && props.isDot == true ? 'u-dot-text' : 'u-more-text']"
30
- @tap="loadMore"
31
- >
32
- {{ showText }}
33
- </view>
34
- </view>
35
- <u-line color="var(--u-divider-color)" length="50"></u-line>
36
- </view>
37
- </template>
38
-
39
- <script lang="ts">
40
- export default {
41
- name: 'u-loadmore',
42
- options: {
43
- addGlobalClass: true,
44
- // #ifndef MP-TOUTIAO
45
- virtualHost: true,
46
- // #endif
47
- styleIsolation: 'shared'
48
- }
49
- };
50
- </script>
51
-
52
- <script setup lang="ts">
53
- import { ref, computed } from 'vue';
54
- import { $u, useLocale } from '../..';
55
- import { LoadmoreProps } from './types';
56
- import uLine from '../u-line/u-line.vue';
57
- import uLoading from '../u-loading/u-loading.vue';
58
-
59
- /**
60
- * loadmore 加载更多
61
- * @description 此组件一般用于标识页面底部加载数据时的状态。
62
- * @tutorial https://uviewpro.cn/zh/components/loadMore.html
63
- * @property {String} status 组件状态(默认loadmore)
64
- * @property {String} bg-color 组件背景颜色,在页面是非白色时会用到(默认var(--u-bg-white))
65
- * @property {Boolean} icon 加载中时是否显示图标(默认true)
66
- * @property {String} icon-type 加载中时的图标类型(默认circle)
67
- * @property {String} icon-color icon-type为circle时有效,加载中的动画图标的颜色(默认var(--u-light-color))
68
- * @property {Boolean} is-dot status为nomore时,内容显示为一个"●"(默认false)
69
- * @property {String} color 字体颜色(默认var(--u-content-color))
70
- * @property {String|Number} margin-top 到上一个相邻元素的距离
71
- * @property {String|Number} margin-bottom 到下一个相邻元素的距离
72
- * @property {Object} load-text 自定义显示的文字,见上方说明示例
73
- * @event {Function} loadmore status为loadmore时,点击组件会发出此事件
74
- * @example <u-loadmore :status="status" icon-type="iconType" load-text="loadText" />
75
- */
76
- const props = defineProps(LoadmoreProps);
77
- const emits = defineEmits(['loadmore']);
78
- const { t } = useLocale();
79
-
80
- // 粗点
81
- const dotText = ref('●');
82
-
83
- // 加载的文字显示的样式
84
- const loadTextStyle = computed(() => {
85
- return {
86
- color: props.color,
87
- fontSize: props.fontSize + 'rpx',
88
- position: 'relative' as const,
89
- zIndex: 1,
90
- backgroundColor: props.bgColor
91
- // 如果是加载中状态,动画和文字需要距离近一点
92
- };
93
- });
94
-
95
- // 加载中圆圈动画的样式
96
- const cricleStyle = computed(() => {
97
- return {
98
- borderColor: `var(--u-divider-color) var(--u-divider-color) var(--u-divider-color) ${props.iconColor}`
99
- };
100
- });
101
-
102
- // 加载中花朵动画形式
103
- // 动画由base64图片生成,暂不支持修改
104
- const flowerStyle = computed(() => {
105
- return {};
106
- });
107
-
108
- // 显示的提示文字
109
- const showText = computed(() => {
110
- let text = '';
111
- // 获取国际化默认值
112
- const defaultLoadText = {
113
- loadmore: t('uLoadmore.loadmore'),
114
- loading: t('uLoadmore.loading'),
115
- nomore: t('uLoadmore.nomore')
116
- };
117
- // 合并用户传入的值和默认值
118
- const loadText = { ...defaultLoadText, ...props.loadText };
119
- if (props.status === 'loadmore') text = loadText.loadmore;
120
- else if (props.status === 'loading') text = loadText.loading;
121
- else if (props.status === 'nomore' && props.isDot) text = dotText.value;
122
- else text = loadText.nomore;
123
- return text;
124
- });
125
-
126
- /**
127
- * 只有在“加载更多”的状态下才发送点击事件,内容不满一屏时无法触发底部上拉事件,所以需要点击来触发
128
- */
129
- function loadMore() {
130
- if (props.status === 'loadmore') emits('loadmore');
131
- }
132
- </script>
133
-
134
- <style scoped lang="scss">
135
- @import '../../libs/css/style.components.scss';
136
- /* #ifdef MP */
137
- // 在mp.scss中,赋予了u-line为flex: 1,这里需要一个明确的长度,所以重置掉它
138
- // 在组件内部,把组件名(u-line)当做选择器,在微信开发工具会提示不合法,但不影响使用
139
- u-line {
140
- flex: none;
141
- }
142
- /* #endif */
143
- .u-load-more-wrap {
144
- @include vue-flex;
145
- justify-content: center;
146
- align-items: center;
147
- }
148
- .u-load-more-inner {
149
- @include vue-flex;
150
- justify-content: center;
151
- align-items: center;
152
- padding: 0 12rpx;
153
- }
154
- .u-more {
155
- position: relative;
156
- @include vue-flex;
157
- justify-content: center;
158
- }
159
- .u-dot-text {
160
- font-size: 28rpx;
161
- }
162
- .u-loadmore-icon-wrap {
163
- margin-right: 8rpx;
164
- }
165
- .u-loadmore-icon {
166
- @include vue-flex;
167
- align-items: center;
168
- justify-content: center;
169
- }
170
- </style>
1
+ <template>
2
+ <view
3
+ class="u-load-more-wrap"
4
+ :class="props.customClass"
5
+ :style="
6
+ $u.toStyle(props.customStyle, {
7
+ backgroundColor: props.bgColor,
8
+ marginBottom: props.marginBottom + 'rpx',
9
+ marginTop: props.marginTop + 'rpx',
10
+ height: $u.addUnit(props.height)
11
+ })
12
+ "
13
+ >
14
+ <u-line color="var(--u-divider-color)" length="50"></u-line>
15
+ <!-- 加载中和没有更多的状态才显示两边的横线 -->
16
+ <view :class="props.status == 'loadmore' || props.status == 'nomore' ? 'u-more' : ''" class="u-load-more-inner">
17
+ <view class="u-loadmore-icon-wrap">
18
+ <u-loading
19
+ class="u-loadmore-icon"
20
+ :color="props.iconColor"
21
+ :mode="props.iconType == 'circle' ? 'circle' : 'flower'"
22
+ :show="props.status == 'loading' && props.icon"
23
+ ></u-loading>
24
+ </view>
25
+ <!-- 如果没有更多的状态下,显示内容为dot(粗点),加载特定样式 -->
26
+ <view
27
+ class="u-line-1"
28
+ :style="$u.toStyle(loadTextStyle)"
29
+ :class="[props.status == 'nomore' && props.isDot == true ? 'u-dot-text' : 'u-more-text']"
30
+ @tap="loadMore"
31
+ >
32
+ {{ showText }}
33
+ </view>
34
+ </view>
35
+ <u-line color="var(--u-divider-color)" length="50"></u-line>
36
+ </view>
37
+ </template>
38
+
39
+ <script lang="ts">
40
+ export default {
41
+ name: 'u-loadmore',
42
+ options: {
43
+ addGlobalClass: true,
44
+ // #ifndef MP-TOUTIAO
45
+ virtualHost: true,
46
+ // #endif
47
+ styleIsolation: 'shared'
48
+ }
49
+ };
50
+ </script>
51
+
52
+ <script setup lang="ts">
53
+ import { ref, computed } from 'vue';
54
+ import { $u, useLocale } from '../..';
55
+ import { LoadmoreProps } from './types';
56
+ import uLine from '../u-line/u-line.vue';
57
+ import uLoading from '../u-loading/u-loading.vue';
58
+
59
+ /**
60
+ * loadmore 加载更多
61
+ * @description 此组件一般用于标识页面底部加载数据时的状态。
62
+ * @tutorial https://uviewpro.cn/zh/components/loadMore.html
63
+ * @property {String} status 组件状态(默认loadmore)
64
+ * @property {String} bg-color 组件背景颜色,在页面是非白色时会用到(默认var(--u-bg-white))
65
+ * @property {Boolean} icon 加载中时是否显示图标(默认true)
66
+ * @property {String} icon-type 加载中时的图标类型(默认circle)
67
+ * @property {String} icon-color icon-type为circle时有效,加载中的动画图标的颜色(默认var(--u-light-color))
68
+ * @property {Boolean} is-dot status为nomore时,内容显示为一个"●"(默认false)
69
+ * @property {String} color 字体颜色(默认var(--u-content-color))
70
+ * @property {String|Number} margin-top 到上一个相邻元素的距离
71
+ * @property {String|Number} margin-bottom 到下一个相邻元素的距离
72
+ * @property {Object} load-text 自定义显示的文字,见上方说明示例
73
+ * @event {Function} loadmore status为loadmore时,点击组件会发出此事件
74
+ * @example <u-loadmore :status="status" icon-type="iconType" load-text="loadText" />
75
+ */
76
+ const props = defineProps(LoadmoreProps);
77
+ const emits = defineEmits(['loadmore']);
78
+ const { t } = useLocale();
79
+
80
+ // 粗点
81
+ const dotText = ref('●');
82
+
83
+ // 加载的文字显示的样式
84
+ const loadTextStyle = computed(() => {
85
+ return {
86
+ color: props.color,
87
+ fontSize: props.fontSize + 'rpx',
88
+ position: 'relative' as const,
89
+ zIndex: 1,
90
+ backgroundColor: props.bgColor
91
+ // 如果是加载中状态,动画和文字需要距离近一点
92
+ };
93
+ });
94
+
95
+ // 加载中圆圈动画的样式
96
+ const cricleStyle = computed(() => {
97
+ return {
98
+ borderColor: `var(--u-divider-color) var(--u-divider-color) var(--u-divider-color) ${props.iconColor}`
99
+ };
100
+ });
101
+
102
+ // 加载中花朵动画形式
103
+ // 动画由base64图片生成,暂不支持修改
104
+ const flowerStyle = computed(() => {
105
+ return {};
106
+ });
107
+
108
+ // 显示的提示文字
109
+ const showText = computed(() => {
110
+ let text = '';
111
+ // 获取国际化默认值
112
+ const defaultLoadText = {
113
+ loadmore: t('uLoadmore.loadmore'),
114
+ loading: t('uLoadmore.loading'),
115
+ nomore: t('uLoadmore.nomore')
116
+ };
117
+ // 合并用户传入的值和默认值
118
+ const loadText = { ...defaultLoadText, ...props.loadText };
119
+ if (props.status === 'loadmore') text = loadText.loadmore;
120
+ else if (props.status === 'loading') text = loadText.loading;
121
+ else if (props.status === 'nomore' && props.isDot) text = dotText.value;
122
+ else text = loadText.nomore;
123
+ return text;
124
+ });
125
+
126
+ /**
127
+ * 只有在“加载更多”的状态下才发送点击事件,内容不满一屏时无法触发底部上拉事件,所以需要点击来触发
128
+ */
129
+ function loadMore() {
130
+ if (props.status === 'loadmore') emits('loadmore');
131
+ }
132
+ </script>
133
+
134
+ <style scoped lang="scss">
135
+ @import '../../libs/css/style.components.scss';
136
+ /* #ifdef MP */
137
+ // 在mp.scss中,赋予了u-line为flex: 1,这里需要一个明确的长度,所以重置掉它
138
+ // 在组件内部,把组件名(u-line)当做选择器,在微信开发工具会提示不合法,但不影响使用
139
+ u-line {
140
+ flex: none;
141
+ }
142
+ /* #endif */
143
+ .u-load-more-wrap {
144
+ @include vue-flex;
145
+ justify-content: center;
146
+ align-items: center;
147
+ }
148
+ .u-load-more-inner {
149
+ @include vue-flex;
150
+ justify-content: center;
151
+ align-items: center;
152
+ padding: 0 12rpx;
153
+ }
154
+ .u-more {
155
+ position: relative;
156
+ @include vue-flex;
157
+ justify-content: center;
158
+ }
159
+ .u-dot-text {
160
+ font-size: 28rpx;
161
+ }
162
+ .u-loadmore-icon-wrap {
163
+ margin-right: 8rpx;
164
+ }
165
+ .u-loadmore-icon {
166
+ @include vue-flex;
167
+ align-items: center;
168
+ justify-content: center;
169
+ }
170
+ </style>
@@ -1,48 +1,48 @@
1
- import type { ExtractPropTypes, PropType } from 'vue';
2
-
3
- /**
4
- * u-mask 组件 props 类型定义
5
- * @description 遮罩层,支持自定义样式、缩放、动画等
6
- */
7
- export const MaskProps = {
8
- /** 自定义根节点样式 */
9
- customStyle: {
10
- type: [String, Object] as PropType<string | Record<string, any>>,
11
- default: () => ({})
12
- },
13
- /** 自定义根节点样式类 */
14
- customClass: {
15
- type: String as unknown as PropType<string>,
16
- default: ''
17
- },
18
- /** 是否显示遮罩 */
19
- show: {
20
- type: Boolean,
21
- default: false
22
- },
23
- /** 层级z-index */
24
- zIndex: {
25
- type: [Number, String] as PropType<number | string>,
26
- default: ''
27
- },
28
- /** 遮罩的动画样式,是否使用zoom进行scale进行缩放 */
29
- zoom: {
30
- type: Boolean,
31
- default: true
32
- },
33
- /** 遮罩的过渡时间,单位为ms */
34
- duration: {
35
- type: [Number, String] as PropType<number | string>,
36
- default: 300
37
- },
38
- /** 是否可以通过点击遮罩进行关闭 */
39
- maskClickAble: {
40
- type: Boolean,
41
- default: true
42
- }
43
- };
44
-
45
- /**
46
- * u-mask 组件 props 类型
47
- */
48
- export type MaskProps = ExtractPropTypes<typeof MaskProps>;
1
+ import type { ExtractPropTypes, PropType } from 'vue';
2
+
3
+ /**
4
+ * u-mask 组件 props 类型定义
5
+ * @description 遮罩层,支持自定义样式、缩放、动画等
6
+ */
7
+ export const MaskProps = {
8
+ /** 自定义根节点样式 */
9
+ customStyle: {
10
+ type: [String, Object] as PropType<string | Record<string, any>>,
11
+ default: () => ({})
12
+ },
13
+ /** 自定义根节点样式类 */
14
+ customClass: {
15
+ type: String as unknown as PropType<string>,
16
+ default: ''
17
+ },
18
+ /** 是否显示遮罩 */
19
+ show: {
20
+ type: Boolean,
21
+ default: false
22
+ },
23
+ /** 层级z-index */
24
+ zIndex: {
25
+ type: [Number, String] as PropType<number | string>,
26
+ default: ''
27
+ },
28
+ /** 遮罩的动画样式,是否使用zoom进行scale进行缩放 */
29
+ zoom: {
30
+ type: Boolean,
31
+ default: true
32
+ },
33
+ /** 遮罩的过渡时间,单位为ms */
34
+ duration: {
35
+ type: [Number, String] as PropType<number | string>,
36
+ default: 300
37
+ },
38
+ /** 是否可以通过点击遮罩进行关闭 */
39
+ maskClickAble: {
40
+ type: Boolean,
41
+ default: true
42
+ }
43
+ };
44
+
45
+ /**
46
+ * u-mask 组件 props 类型
47
+ */
48
+ export type MaskProps = ExtractPropTypes<typeof MaskProps>;
@@ -1,113 +1,113 @@
1
- <template>
2
- <view
3
- class="u-mask"
4
- hover-stop-propagation
5
- :style="$u.toStyle(maskStyle, zoomStyle, customStyle)"
6
- @tap="click"
7
- @touchmove.stop.prevent="() => {}"
8
- :class="[
9
- {
10
- 'u-mask-zoom': props.zoom,
11
- 'u-mask-show': props.show
12
- },
13
- customClass
14
- ]"
15
- >
16
- <slot />
17
- </view>
18
- </template>
19
-
20
- <script lang="ts">
21
- export default {
22
- name: 'u-mask',
23
- options: {
24
- addGlobalClass: true,
25
- // #ifndef MP-TOUTIAO
26
- virtualHost: true,
27
- // #endif
28
- styleIsolation: 'shared'
29
- }
30
- };
31
- </script>
32
-
33
- <script setup lang="ts">
34
- import { ref, computed, watch } from 'vue';
35
- import { $u } from '../..';
36
- import { MaskProps } from './types';
37
-
38
- /**
39
- * mask 遮罩
40
- * @description 创建一个遮罩层,用于强调特定的页面元素,并阻止用户对遮罩下层的内容进行操作,一般用于弹窗场景
41
- * @tutorial https://uviewpro.cn/zh/components/mask.html
42
- * @property {Boolean} show 是否显示遮罩(默认false)
43
- * @property {String|Number} z-index z-index 层级(默认1070)
44
- * @property {Object} custom-style 自定义样式对象,见上方说明
45
- * @property {String|Number} duration 动画时长,单位毫秒(默认300)
46
- * @property {Boolean} zoom 是否使用scale对遮罩进行缩放(默认true)
47
- * @property {Boolean} mask-click-able 遮罩是否可点击,为false时点击不会发送click事件(默认true)
48
- * @event {Function} click mask-click-able为true时,点击遮罩发送此事件
49
- * @example <u-mask :show="show" @click="show = false"></u-mask>
50
- */
51
- const props = defineProps(MaskProps);
52
- const emit = defineEmits(['click']);
53
-
54
- // 缩放动画样式
55
- const zoomStyle = ref<{ transform: string }>({ transform: '' });
56
- // scale值
57
- const scale = 'scale(1.2, 1.2)';
58
-
59
- // 监听遮罩显示状态,动态设置缩放动画
60
- watch(
61
- () => props.show,
62
- n => {
63
- if (n && props.zoom) {
64
- // 当展示遮罩的时候,设置scale为1,达到缩小(原来为1.2)的效果
65
- zoomStyle.value.transform = 'scale(1, 1)';
66
- } else if (!n && props.zoom) {
67
- // 当隐藏遮罩的时候,设置scale为1.2,达到放大(因为显示遮罩时已重置为1)的效果
68
- zoomStyle.value.transform = scale;
69
- }
70
- }
71
- );
72
-
73
- // 遮罩样式
74
- const maskStyle = computed(() => {
75
- let style: Record<string, any> = {};
76
- style.backgroundColor = 'rgba(0, 0, 0, 0.6)';
77
- if (props.show) style.zIndex = props.zIndex ? props.zIndex : $u.zIndex.mask;
78
- else style.zIndex = -1;
79
- style.transition = `all ${Number(props.duration) / 1000}s ease-in-out`;
80
- return style;
81
- });
82
-
83
- /**
84
- * 遮罩点击事件
85
- * maskClickAble为true时,点击遮罩发送click事件
86
- */
87
- function click() {
88
- if (!props.maskClickAble) return;
89
- emit('click');
90
- }
91
- </script>
92
-
93
- <style lang="scss" scoped>
94
- @import '../../libs/css/style.components.scss';
95
-
96
- .u-mask {
97
- position: fixed;
98
- top: 0;
99
- left: 0;
100
- right: 0;
101
- bottom: 0;
102
- opacity: 0;
103
- transition: transform 0.3s;
104
- }
105
-
106
- .u-mask-show {
107
- opacity: 1;
108
- }
109
-
110
- .u-mask-zoom {
111
- transform: scale(1.2, 1.2);
112
- }
113
- </style>
1
+ <template>
2
+ <view
3
+ class="u-mask"
4
+ hover-stop-propagation
5
+ :style="$u.toStyle(maskStyle, zoomStyle, customStyle)"
6
+ @tap="click"
7
+ @touchmove.stop.prevent="() => {}"
8
+ :class="[
9
+ {
10
+ 'u-mask-zoom': props.zoom,
11
+ 'u-mask-show': props.show
12
+ },
13
+ customClass
14
+ ]"
15
+ >
16
+ <slot />
17
+ </view>
18
+ </template>
19
+
20
+ <script lang="ts">
21
+ export default {
22
+ name: 'u-mask',
23
+ options: {
24
+ addGlobalClass: true,
25
+ // #ifndef MP-TOUTIAO
26
+ virtualHost: true,
27
+ // #endif
28
+ styleIsolation: 'shared'
29
+ }
30
+ };
31
+ </script>
32
+
33
+ <script setup lang="ts">
34
+ import { ref, computed, watch } from 'vue';
35
+ import { $u } from '../..';
36
+ import { MaskProps } from './types';
37
+
38
+ /**
39
+ * mask 遮罩
40
+ * @description 创建一个遮罩层,用于强调特定的页面元素,并阻止用户对遮罩下层的内容进行操作,一般用于弹窗场景
41
+ * @tutorial https://uviewpro.cn/zh/components/mask.html
42
+ * @property {Boolean} show 是否显示遮罩(默认false)
43
+ * @property {String|Number} z-index z-index 层级(默认1070)
44
+ * @property {Object} custom-style 自定义样式对象,见上方说明
45
+ * @property {String|Number} duration 动画时长,单位毫秒(默认300)
46
+ * @property {Boolean} zoom 是否使用scale对遮罩进行缩放(默认true)
47
+ * @property {Boolean} mask-click-able 遮罩是否可点击,为false时点击不会发送click事件(默认true)
48
+ * @event {Function} click mask-click-able为true时,点击遮罩发送此事件
49
+ * @example <u-mask :show="show" @click="show = false"></u-mask>
50
+ */
51
+ const props = defineProps(MaskProps);
52
+ const emit = defineEmits(['click']);
53
+
54
+ // 缩放动画样式
55
+ const zoomStyle = ref<{ transform: string }>({ transform: '' });
56
+ // scale值
57
+ const scale = 'scale(1.2, 1.2)';
58
+
59
+ // 监听遮罩显示状态,动态设置缩放动画
60
+ watch(
61
+ () => props.show,
62
+ n => {
63
+ if (n && props.zoom) {
64
+ // 当展示遮罩的时候,设置scale为1,达到缩小(原来为1.2)的效果
65
+ zoomStyle.value.transform = 'scale(1, 1)';
66
+ } else if (!n && props.zoom) {
67
+ // 当隐藏遮罩的时候,设置scale为1.2,达到放大(因为显示遮罩时已重置为1)的效果
68
+ zoomStyle.value.transform = scale;
69
+ }
70
+ }
71
+ );
72
+
73
+ // 遮罩样式
74
+ const maskStyle = computed(() => {
75
+ let style: Record<string, any> = {};
76
+ style.backgroundColor = 'rgba(0, 0, 0, 0.6)';
77
+ if (props.show) style.zIndex = props.zIndex ? props.zIndex : $u.zIndex.mask;
78
+ else style.zIndex = -1;
79
+ style.transition = `all ${Number(props.duration) / 1000}s ease-in-out`;
80
+ return style;
81
+ });
82
+
83
+ /**
84
+ * 遮罩点击事件
85
+ * maskClickAble为true时,点击遮罩发送click事件
86
+ */
87
+ function click() {
88
+ if (!props.maskClickAble) return;
89
+ emit('click');
90
+ }
91
+ </script>
92
+
93
+ <style lang="scss" scoped>
94
+ @import '../../libs/css/style.components.scss';
95
+
96
+ .u-mask {
97
+ position: fixed;
98
+ top: 0;
99
+ left: 0;
100
+ right: 0;
101
+ bottom: 0;
102
+ opacity: 0;
103
+ transition: transform 0.3s;
104
+ }
105
+
106
+ .u-mask-show {
107
+ opacity: 1;
108
+ }
109
+
110
+ .u-mask-zoom {
111
+ transform: scale(1.2, 1.2);
112
+ }
113
+ </style>