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,42 +1,42 @@
1
- import type { ExtractPropTypes, PropType } from 'vue';
2
-
3
- /**
4
- * section 组件 props 类型定义
5
- * @description 供 u-section 组件 props 使用
6
- */
7
- export type FontSize = string | number;
8
-
9
- export const SectionProps = {
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
- /** 标题信息 */
21
- title: { type: String, default: '' },
22
- /** 右边副标题内容 */
23
- subTitle: { type: String, default: '' },
24
- /** 是否显示右边的内容 */
25
- right: { type: Boolean, default: true },
26
- /** 主标题的字体大小 */
27
- fontSize: { type: [Number, String] as PropType<FontSize>, default: 28 },
28
- /** 主标题是否加粗 */
29
- bold: { type: Boolean, default: true },
30
- /** 主标题的颜色 */
31
- color: { type: String, default: 'var(--u-main-color)' },
32
- /** 右边副标题的颜色 */
33
- subColor: { type: String, default: 'var(--u-tips-color)' },
34
- /** 是否显示左边的竖条 */
35
- showLine: { type: Boolean, default: true },
36
- /** 左边竖线的颜色 */
37
- lineColor: { type: String, default: '' },
38
- /** 是否显示右边箭头 */
39
- arrow: { type: Boolean, default: true }
40
- };
41
-
42
- export type SectionProps = ExtractPropTypes<typeof SectionProps>;
1
+ import type { ExtractPropTypes, PropType } from 'vue';
2
+
3
+ /**
4
+ * section 组件 props 类型定义
5
+ * @description 供 u-section 组件 props 使用
6
+ */
7
+ export type FontSize = string | number;
8
+
9
+ export const SectionProps = {
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
+ /** 标题信息 */
21
+ title: { type: String, default: '' },
22
+ /** 右边副标题内容 */
23
+ subTitle: { type: String, default: '' },
24
+ /** 是否显示右边的内容 */
25
+ right: { type: Boolean, default: true },
26
+ /** 主标题的字体大小 */
27
+ fontSize: { type: [Number, String] as PropType<FontSize>, default: 28 },
28
+ /** 主标题是否加粗 */
29
+ bold: { type: Boolean, default: true },
30
+ /** 主标题的颜色 */
31
+ color: { type: String, default: 'var(--u-main-color)' },
32
+ /** 右边副标题的颜色 */
33
+ subColor: { type: String, default: 'var(--u-tips-color)' },
34
+ /** 是否显示左边的竖条 */
35
+ showLine: { type: Boolean, default: true },
36
+ /** 左边竖线的颜色 */
37
+ lineColor: { type: String, default: '' },
38
+ /** 是否显示右边箭头 */
39
+ arrow: { type: Boolean, default: true }
40
+ };
41
+
42
+ export type SectionProps = ExtractPropTypes<typeof SectionProps>;
@@ -1,156 +1,156 @@
1
- <template>
2
- <view class="u-section">
3
- <view
4
- class="u-section__title"
5
- :style="
6
- $u.toStyle(
7
- {
8
- fontWeight: bold ? 'bold' : 'normal',
9
- color: color,
10
- fontSize: fontSize + 'rpx',
11
- paddingLeft: showLine ? Number(fontSize) * 0.7 + 'rpx' : 0
12
- },
13
- customStyle
14
- )
15
- "
16
- :class="[
17
- {
18
- 'u-section--line': showLine
19
- },
20
- customClass
21
- ]"
22
- >
23
- <view class="u-section__title__icon-wrap u-flex" :style="$u.toStyle(lineStyle)" v-if="showLine">
24
- <u-icon
25
- top="0"
26
- name="column-line"
27
- :size="Number(fontSize) * 1.25"
28
- bold
29
- :color="lineColor ? lineColor : color"
30
- ></u-icon>
31
- </view>
32
- <text class="u-flex u-section__title__text">{{ title }}</text>
33
- </view>
34
- <view
35
- class="u-section__right-info"
36
- v-if="right || $slots.right"
37
- :style="{
38
- color: subColor
39
- }"
40
- @tap="rightClick"
41
- >
42
- <slot name="right" v-if="$slots.right" />
43
- <template v-else>
44
- {{ getSubTitle }}
45
- <view class="u-section__right-info__icon-arrow u-flex" v-if="arrow">
46
- <u-icon name="arrow-right" size="24" :color="subColor"></u-icon>
47
- </view>
48
- </template>
49
- </view>
50
- </view>
51
- </template>
52
-
53
- <script lang="ts">
54
- export default {
55
- name: 'u-section',
56
- options: {
57
- addGlobalClass: true,
58
- // #ifndef MP-TOUTIAO
59
- virtualHost: true,
60
- // #endif
61
- styleIsolation: 'shared'
62
- }
63
- };
64
- </script>
65
-
66
- <script setup lang="ts">
67
- import { computed } from 'vue';
68
- import { SectionProps } from './types';
69
- import { $u, useLocale } from '../..';
70
- import uIcon from '../u-icon/u-icon.vue';
71
-
72
- /**
73
- * section 查看更多
74
- * @description 该组件一般用于分类信息有很多,但是限于篇幅只能列出一部分,让用户通过"查看更多"获得更多信息的场景,实际效果见演示。
75
- * @tutorial https://uviewpro.cn/zh/components/section.html
76
- * @property {String} title 左边主标题
77
- * @property {String} subTitle 右边副标题(默认更多)
78
- * @property {Boolean} right 是否显示右边的内容(默认true)
79
- * @property {Boolean} showLine 是否显示左边的竖条(默认true)
80
- * @property {Boolean} arrow 是否显示右边箭头(默认true)
81
- * @property {String|Number} fontSize 主标题的字体大小(默认28)
82
- * @property {Boolean} bold 主标题是否加粗(默认true)
83
- * @property {String} color 主标题颜色(默认var(--u-main-color))
84
- * @property {String} subColor 右边副标题颜色(默认var(--u-tips-color))
85
- * @property {String} lineColor 左边竖线的颜色
86
- * @event click 组件右侧的内容被点击时触发,用于跳转"更多"
87
- * @example <u-section title="今日热门" :right="false"></u-section>
88
- */
89
-
90
- const props = defineProps(SectionProps);
91
-
92
- const emit = defineEmits(['click']);
93
-
94
- const { t } = useLocale();
95
-
96
- // 国际化计算属性
97
- const getSubTitle = computed(() => props.subTitle || t('uSection.subTitle'));
98
-
99
- /**
100
- * 左边竖条的样式
101
- * @description 由于安卓和iOS的,需要稍微调整绝对定位的top值,才能让左边的竖线和右边的文字垂直居中
102
- */
103
- const lineStyle = computed(() => {
104
- let isIOS = $u.os && $u.os() === 'ios';
105
- return {
106
- // 由于竖线为字体图标,具有比实际线宽更宽的宽度,所以也需要根据字体打下动态调整
107
- left: -(Number(props.fontSize) * 0.9) + 'rpx',
108
- top: -(Number(props.fontSize) * (isIOS ? 0.14 : 0.15)) + 'rpx'
109
- };
110
- });
111
-
112
- /**
113
- * 组件右侧的内容被点击时触发,用于跳转"更多"
114
- */
115
- function rightClick() {
116
- emit('click');
117
- }
118
- </script>
119
-
120
- <style lang="scss" scoped>
121
- @import '../../libs/css/style.components.scss';
122
-
123
- .u-section {
124
- @include vue-flex;
125
- justify-content: space-between;
126
- align-items: center;
127
- width: 100%;
128
-
129
- &__title {
130
- position: relative;
131
- font-size: 28rpx;
132
- padding-left: 20rpx;
133
- @include vue-flex;
134
- align-items: center;
135
-
136
- &__icon-wrap {
137
- position: absolute;
138
- }
139
-
140
- &__text {
141
- line-height: 1;
142
- }
143
- }
144
-
145
- &__right-info {
146
- color: $u-tips-color;
147
- font-size: 26rpx;
148
- @include vue-flex;
149
- align-items: center;
150
-
151
- &__icon-arrow {
152
- margin-left: 6rpx;
153
- }
154
- }
155
- }
156
- </style>
1
+ <template>
2
+ <view class="u-section">
3
+ <view
4
+ class="u-section__title"
5
+ :style="
6
+ $u.toStyle(
7
+ {
8
+ fontWeight: bold ? 'bold' : 'normal',
9
+ color: color,
10
+ fontSize: fontSize + 'rpx',
11
+ paddingLeft: showLine ? Number(fontSize) * 0.7 + 'rpx' : 0
12
+ },
13
+ customStyle
14
+ )
15
+ "
16
+ :class="[
17
+ {
18
+ 'u-section--line': showLine
19
+ },
20
+ customClass
21
+ ]"
22
+ >
23
+ <view class="u-section__title__icon-wrap u-flex" :style="$u.toStyle(lineStyle)" v-if="showLine">
24
+ <u-icon
25
+ top="0"
26
+ name="column-line"
27
+ :size="Number(fontSize) * 1.25"
28
+ bold
29
+ :color="lineColor ? lineColor : color"
30
+ ></u-icon>
31
+ </view>
32
+ <text class="u-flex u-section__title__text">{{ title }}</text>
33
+ </view>
34
+ <view
35
+ class="u-section__right-info"
36
+ v-if="right || $slots.right"
37
+ :style="{
38
+ color: subColor
39
+ }"
40
+ @tap="rightClick"
41
+ >
42
+ <slot name="right" v-if="$slots.right" />
43
+ <template v-else>
44
+ {{ getSubTitle }}
45
+ <view class="u-section__right-info__icon-arrow u-flex" v-if="arrow">
46
+ <u-icon name="arrow-right" size="24" :color="subColor"></u-icon>
47
+ </view>
48
+ </template>
49
+ </view>
50
+ </view>
51
+ </template>
52
+
53
+ <script lang="ts">
54
+ export default {
55
+ name: 'u-section',
56
+ options: {
57
+ addGlobalClass: true,
58
+ // #ifndef MP-TOUTIAO
59
+ virtualHost: true,
60
+ // #endif
61
+ styleIsolation: 'shared'
62
+ }
63
+ };
64
+ </script>
65
+
66
+ <script setup lang="ts">
67
+ import { computed } from 'vue';
68
+ import { SectionProps } from './types';
69
+ import { $u, useLocale } from '../..';
70
+ import uIcon from '../u-icon/u-icon.vue';
71
+
72
+ /**
73
+ * section 查看更多
74
+ * @description 该组件一般用于分类信息有很多,但是限于篇幅只能列出一部分,让用户通过"查看更多"获得更多信息的场景,实际效果见演示。
75
+ * @tutorial https://uviewpro.cn/zh/components/section.html
76
+ * @property {String} title 左边主标题
77
+ * @property {String} subTitle 右边副标题(默认更多)
78
+ * @property {Boolean} right 是否显示右边的内容(默认true)
79
+ * @property {Boolean} showLine 是否显示左边的竖条(默认true)
80
+ * @property {Boolean} arrow 是否显示右边箭头(默认true)
81
+ * @property {String|Number} fontSize 主标题的字体大小(默认28)
82
+ * @property {Boolean} bold 主标题是否加粗(默认true)
83
+ * @property {String} color 主标题颜色(默认var(--u-main-color))
84
+ * @property {String} subColor 右边副标题颜色(默认var(--u-tips-color))
85
+ * @property {String} lineColor 左边竖线的颜色
86
+ * @event click 组件右侧的内容被点击时触发,用于跳转"更多"
87
+ * @example <u-section title="今日热门" :right="false"></u-section>
88
+ */
89
+
90
+ const props = defineProps(SectionProps);
91
+
92
+ const emit = defineEmits(['click']);
93
+
94
+ const { t } = useLocale();
95
+
96
+ // 国际化计算属性
97
+ const getSubTitle = computed(() => props.subTitle || t('uSection.subTitle'));
98
+
99
+ /**
100
+ * 左边竖条的样式
101
+ * @description 由于安卓和iOS的,需要稍微调整绝对定位的top值,才能让左边的竖线和右边的文字垂直居中
102
+ */
103
+ const lineStyle = computed(() => {
104
+ let isIOS = $u.os && $u.os() === 'ios';
105
+ return {
106
+ // 由于竖线为字体图标,具有比实际线宽更宽的宽度,所以也需要根据字体打下动态调整
107
+ left: -(Number(props.fontSize) * 0.9) + 'rpx',
108
+ top: -(Number(props.fontSize) * (isIOS ? 0.14 : 0.15)) + 'rpx'
109
+ };
110
+ });
111
+
112
+ /**
113
+ * 组件右侧的内容被点击时触发,用于跳转"更多"
114
+ */
115
+ function rightClick() {
116
+ emit('click');
117
+ }
118
+ </script>
119
+
120
+ <style lang="scss" scoped>
121
+ @import '../../libs/css/style.components.scss';
122
+
123
+ .u-section {
124
+ @include vue-flex;
125
+ justify-content: space-between;
126
+ align-items: center;
127
+ width: 100%;
128
+
129
+ &__title {
130
+ position: relative;
131
+ font-size: 28rpx;
132
+ padding-left: 20rpx;
133
+ @include vue-flex;
134
+ align-items: center;
135
+
136
+ &__icon-wrap {
137
+ position: absolute;
138
+ }
139
+
140
+ &__text {
141
+ line-height: 1;
142
+ }
143
+ }
144
+
145
+ &__right-info {
146
+ color: $u-tips-color;
147
+ font-size: 26rpx;
148
+ @include vue-flex;
149
+ align-items: center;
150
+
151
+ &__icon-arrow {
152
+ margin-left: 6rpx;
153
+ }
154
+ }
155
+ }
156
+ </style>
@@ -1,56 +1,56 @@
1
- import type { ExtractPropTypes, PropType } from 'vue';
2
- import type { SelectListItem, SelectMode } from '../../types/global';
3
- import { getColor } from '../../';
4
-
5
- /**
6
- * SelectProps 列选择器 props 类型定义
7
- * @description 用于单列、多列、多列联动的选择场景
8
- */
9
- export const SelectProps = {
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
- /** 列数据 */
21
- list: { type: Array as PropType<SelectListItem[] | SelectListItem[][]>, default: () => [] },
22
- /** 是否显示边框 */
23
- border: { type: Boolean, default: true },
24
- /** 通过双向绑定控制组件的弹出与收起 */
25
- modelValue: { type: Boolean, default: false },
26
- /** "取消"按钮的颜色 */
27
- cancelColor: { type: String, default: () => getColor('contentColor') },
28
- /** "确定"按钮的颜色 */
29
- confirmColor: { type: String, default: () => getColor('primary') },
30
- /** 弹出的z-index值 */
31
- zIndex: { type: [String, Number] as PropType<string | number>, default: 0 },
32
- /** 是否开启底部安全区适配 */
33
- safeAreaInsetBottom: { type: Boolean, default: false },
34
- /** 是否允许通过点击遮罩关闭Picker */
35
- maskCloseAble: { type: Boolean, default: true },
36
- /** 提供的默认选中的下标 */
37
- defaultValue: { type: Array as PropType<number[]>, default: () => [0] },
38
- /** 是否保留用户上次确认的选择(true:优先使用已保存的选择;false:优先使用外部传入的 defaultValue) */
39
- preserveSelection: { type: Boolean, default: true },
40
- /** 模式选择,single-column-单列,mutil-column-多列,mutil-column-auto-多列联动 */
41
- mode: { type: String as PropType<SelectMode>, default: 'single-column' },
42
- /** 自定义value属性名 */
43
- valueName: { type: String, default: 'value' },
44
- /** 自定义label属性名 */
45
- labelName: { type: String, default: 'label' },
46
- /** 自定义多列联动模式的children属性名 */
47
- childName: { type: String, default: 'children' },
48
- /** 顶部标题 */
49
- title: { type: String, default: '' },
50
- /** 取消按钮的文字 */
51
- cancelText: { type: String, default: '' },
52
- /** 确认按钮的文字 */
53
- confirmText: { type: String, default: '' }
54
- };
55
-
56
- export type SelectProps = ExtractPropTypes<typeof SelectProps>;
1
+ import type { ExtractPropTypes, PropType } from 'vue';
2
+ import type { SelectListItem, SelectMode } from '../../types/global';
3
+ import { getColor } from '../../';
4
+
5
+ /**
6
+ * SelectProps 列选择器 props 类型定义
7
+ * @description 用于单列、多列、多列联动的选择场景
8
+ */
9
+ export const SelectProps = {
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
+ /** 列数据 */
21
+ list: { type: Array as PropType<SelectListItem[] | SelectListItem[][]>, default: () => [] },
22
+ /** 是否显示边框 */
23
+ border: { type: Boolean, default: true },
24
+ /** 通过双向绑定控制组件的弹出与收起 */
25
+ modelValue: { type: Boolean, default: false },
26
+ /** "取消"按钮的颜色 */
27
+ cancelColor: { type: String, default: () => getColor('contentColor') },
28
+ /** "确定"按钮的颜色 */
29
+ confirmColor: { type: String, default: () => getColor('primary') },
30
+ /** 弹出的z-index值 */
31
+ zIndex: { type: [String, Number] as PropType<string | number>, default: 0 },
32
+ /** 是否开启底部安全区适配 */
33
+ safeAreaInsetBottom: { type: Boolean, default: false },
34
+ /** 是否允许通过点击遮罩关闭Picker */
35
+ maskCloseAble: { type: Boolean, default: true },
36
+ /** 提供的默认选中的下标 */
37
+ defaultValue: { type: Array as PropType<number[]>, default: () => [0] },
38
+ /** 是否保留用户上次确认的选择(true:优先使用已保存的选择;false:优先使用外部传入的 defaultValue) */
39
+ preserveSelection: { type: Boolean, default: true },
40
+ /** 模式选择,single-column-单列,mutil-column-多列,mutil-column-auto-多列联动 */
41
+ mode: { type: String as PropType<SelectMode>, default: 'single-column' },
42
+ /** 自定义value属性名 */
43
+ valueName: { type: String, default: 'value' },
44
+ /** 自定义label属性名 */
45
+ labelName: { type: String, default: 'label' },
46
+ /** 自定义多列联动模式的children属性名 */
47
+ childName: { type: String, default: 'children' },
48
+ /** 顶部标题 */
49
+ title: { type: String, default: '' },
50
+ /** 取消按钮的文字 */
51
+ cancelText: { type: String, default: '' },
52
+ /** 确认按钮的文字 */
53
+ confirmText: { type: String, default: '' }
54
+ };
55
+
56
+ export type SelectProps = ExtractPropTypes<typeof SelectProps>;