hy-app 0.5.10 → 0.5.11

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 (286) hide show
  1. package/components/hy-action-sheet/hy-action-sheet.vue +200 -200
  2. package/components/hy-action-sheet/props.ts +71 -71
  3. package/components/hy-action-sheet/typing.d.ts +64 -64
  4. package/components/hy-address-picker/hy-address-picker.vue +1 -1
  5. package/components/hy-address-picker/props.ts +100 -100
  6. package/components/hy-address-picker/typing.d.ts +16 -16
  7. package/components/hy-avatar/hy-avatar.vue +163 -163
  8. package/components/hy-avatar/props.ts +78 -78
  9. package/components/hy-avatar/typing.d.ts +4 -4
  10. package/components/hy-back-top/hy-back-top.vue +90 -90
  11. package/components/hy-back-top/props.ts +60 -60
  12. package/components/hy-back-top/typing.d.ts +4 -4
  13. package/components/hy-badge/hy-badge.vue +97 -97
  14. package/components/hy-badge/props.ts +82 -82
  15. package/components/hy-badge/typing.d.ts +9 -9
  16. package/components/hy-button/hy-button.vue +275 -275
  17. package/components/hy-button/props.ts +135 -135
  18. package/components/hy-button/typing.d.ts +30 -30
  19. package/components/hy-calendar/header.vue +60 -60
  20. package/components/hy-calendar/hy-calendar.vue +362 -362
  21. package/components/hy-calendar/month.vue +537 -537
  22. package/components/hy-calendar/props.ts +159 -159
  23. package/components/hy-calendar/typing.d.ts +6 -6
  24. package/components/hy-card/hy-card.vue +161 -161
  25. package/components/hy-card/props.ts +122 -122
  26. package/components/hy-card/typing.d.ts +12 -12
  27. package/components/hy-cell/hy-cell.vue +33 -33
  28. package/components/hy-cell/props.ts +54 -54
  29. package/components/hy-cell/typing.d.ts +4 -4
  30. package/components/hy-cell-item/hy-cell-item.vue +161 -161
  31. package/components/hy-cell-item/props.ts +66 -66
  32. package/components/hy-cell-item/typing.d.ts +7 -7
  33. package/components/hy-check-button/hy-check-button.vue +96 -96
  34. package/components/hy-check-button/props.ts +74 -74
  35. package/components/hy-check-button/typing.d.ts +44 -44
  36. package/components/hy-checkbox/hy-checkbox.vue +227 -227
  37. package/components/hy-checkbox/props.ts +96 -96
  38. package/components/hy-checkbox/typing.d.ts +8 -8
  39. package/components/hy-checkbox-group/hy-checkbox-group.vue +45 -45
  40. package/components/hy-checkbox-group/props.ts +80 -80
  41. package/components/hy-checkbox-group/typing.d.ts +6 -6
  42. package/components/hy-checkbox-item/hy-checkbox-item.vue +199 -199
  43. package/components/hy-checkbox-item/props.ts +24 -24
  44. package/components/hy-checkbox-item/typing.d.ts +7 -7
  45. package/components/hy-code-input/hy-code-input.vue +231 -231
  46. package/components/hy-code-input/props.ts +88 -88
  47. package/components/hy-code-input/typing.d.ts +8 -8
  48. package/components/hy-config-provider/hy-config-provider.vue +53 -53
  49. package/components/hy-config-provider/props.ts +28 -28
  50. package/components/hy-count-down/hy-count-down.vue +170 -170
  51. package/components/hy-count-down/index.ts +52 -52
  52. package/components/hy-count-down/props.ts +32 -32
  53. package/components/hy-count-down/typing.d.ts +14 -14
  54. package/components/hy-count-to/hy-count-to.vue +218 -218
  55. package/components/hy-count-to/props.ts +62 -62
  56. package/components/hy-count-to/typing.d.ts +4 -4
  57. package/components/hy-coupon/hy-coupon.vue +172 -172
  58. package/components/hy-coupon/index.scss +171 -171
  59. package/components/hy-coupon/props.ts +103 -103
  60. package/components/hy-coupon/typing.d.ts +14 -14
  61. package/components/hy-datetime-picker/hy-datetime-picker.vue +521 -521
  62. package/components/hy-datetime-picker/props.ts +142 -142
  63. package/components/hy-datetime-picker/typing.d.ts +20 -20
  64. package/components/hy-divider/hy-divider.vue +132 -132
  65. package/components/hy-divider/props.ts +80 -80
  66. package/components/hy-dropdown/hy-dropdown.vue +60 -60
  67. package/components/hy-dropdown/props.ts +40 -40
  68. package/components/hy-dropdown-item/hy-dropdown-item.vue +206 -206
  69. package/components/hy-dropdown-item/props.ts +21 -21
  70. package/components/hy-dropdown-item/typing.d.ts +17 -17
  71. package/components/hy-empty/hy-empty.vue +116 -116
  72. package/components/hy-empty/icon.ts +72 -72
  73. package/components/hy-empty/props.ts +60 -60
  74. package/components/hy-empty/typing.d.ts +38 -38
  75. package/components/hy-flex/hy-flex.vue +53 -53
  76. package/components/hy-flex/index.scss +8 -8
  77. package/components/hy-flex/props.ts +58 -58
  78. package/components/hy-flex/typing.d.ts +21 -21
  79. package/components/hy-float-button/hy-float-button.vue +378 -378
  80. package/components/hy-float-button/props.ts +111 -111
  81. package/components/hy-float-button/typing.d.ts +35 -35
  82. package/components/hy-folding-panel/hy-folding-panel.vue +109 -109
  83. package/components/hy-folding-panel/props.ts +42 -42
  84. package/components/hy-folding-panel/typing.d.ts +19 -19
  85. package/components/hy-folding-panel-item/hy-folding-panel-item.vue +183 -183
  86. package/components/hy-folding-panel-item/props.ts +81 -81
  87. package/components/hy-folding-panel-item/typing.d.ts +37 -37
  88. package/components/hy-form/hy-form.vue +220 -220
  89. package/components/hy-form/props.ts +37 -37
  90. package/components/hy-form/typing.d.ts +41 -41
  91. package/components/hy-form-group/hy-form-group.vue +333 -333
  92. package/components/hy-form-group/props.ts +105 -105
  93. package/components/hy-form-item/hy-form-item.vue +176 -176
  94. package/components/hy-form-item/index.scss +0 -1
  95. package/components/hy-form-item/props.ts +25 -25
  96. package/components/hy-form-item/typing.d.ts +30 -30
  97. package/components/hy-grid/hy-grid.vue +109 -109
  98. package/components/hy-grid/props.ts +60 -60
  99. package/components/hy-grid/typing.d.ts +35 -35
  100. package/components/hy-icon/hy-icon.vue +112 -112
  101. package/components/hy-icon/index.scss +0 -3
  102. package/components/hy-icon/props.ts +79 -79
  103. package/components/hy-icon/typing.d.ts +9 -9
  104. package/components/hy-image/hy-image.vue +192 -192
  105. package/components/hy-image/props.ts +107 -107
  106. package/components/hy-image/typing.d.ts +10 -10
  107. package/components/hy-input/hy-input.vue +333 -333
  108. package/components/hy-input/props.ts +186 -186
  109. package/components/hy-input/typing.d.ts +31 -31
  110. package/components/hy-line/hy-line.vue +55 -55
  111. package/components/hy-line/props.ts +43 -43
  112. package/components/hy-line-progress/hy-line-progress.vue +102 -102
  113. package/components/hy-line-progress/props.ts +33 -33
  114. package/components/hy-list/hy-list.vue +226 -226
  115. package/components/hy-list/props.ts +69 -69
  116. package/components/hy-list/typing.d.ts +6 -6
  117. package/components/hy-loading/hy-loading.vue +107 -107
  118. package/components/hy-loading/props.ts +65 -65
  119. package/components/hy-menu/hy-menu.vue +159 -159
  120. package/components/hy-menu/props.ts +44 -44
  121. package/components/hy-menu/typing.d.ts +34 -34
  122. package/components/hy-modal/hy-modal.vue +173 -173
  123. package/components/hy-modal/props.ts +90 -90
  124. package/components/hy-modal/typing.d.ts +11 -11
  125. package/components/hy-navbar/hy-navbar.vue +144 -144
  126. package/components/hy-navbar/props.ts +78 -78
  127. package/components/hy-navbar/typing.d.ts +6 -6
  128. package/components/hy-notice-bar/hy-column-notice.vue +94 -94
  129. package/components/hy-notice-bar/hy-notice-bar.vue +96 -96
  130. package/components/hy-notice-bar/hy-row-notice.vue +121 -121
  131. package/components/hy-notice-bar/props.ts +85 -85
  132. package/components/hy-notice-bar/typing.d.ts +8 -8
  133. package/components/hy-notify/hy-notify.vue +174 -174
  134. package/components/hy-notify/props.ts +51 -51
  135. package/components/hy-number-step/hy-number-step.vue +367 -367
  136. package/components/hy-number-step/props.ts +112 -112
  137. package/components/hy-number-step/typing.d.ts +16 -16
  138. package/components/hy-overlay/hy-overlay.vue +60 -60
  139. package/components/hy-overlay/props.ts +33 -33
  140. package/components/hy-overlay/typing.d.ts +4 -4
  141. package/components/hy-pagination/hy-pagination.vue +135 -135
  142. package/components/hy-pagination/props.ts +55 -55
  143. package/components/hy-pagination/typing.d.ts +10 -10
  144. package/components/hy-picker/hy-picker.vue +7 -5
  145. package/components/hy-picker/props.ts +7 -2
  146. package/components/hy-picker/typing.d.ts +9 -5
  147. package/components/hy-popover/hy-popover.vue +251 -251
  148. package/components/hy-popover/props.ts +51 -51
  149. package/components/hy-popover/typing.d.ts +39 -39
  150. package/components/hy-popup/hy-popup.vue +197 -197
  151. package/components/hy-popup/props.ts +85 -85
  152. package/components/hy-popup/typing.d.ts +10 -10
  153. package/components/hy-price/hy-price.vue +79 -79
  154. package/components/hy-price/props.ts +54 -54
  155. package/components/hy-price/typing.d.ts +4 -4
  156. package/components/hy-qrcode/hy-qrcode.vue +216 -216
  157. package/components/hy-qrcode/props.ts +70 -70
  158. package/components/hy-qrcode/qrcode.js +1304 -1304
  159. package/components/hy-qrcode/typing.d.ts +8 -8
  160. package/components/hy-radio/hy-radio.vue +226 -226
  161. package/components/hy-radio/props.ts +1 -1
  162. package/components/hy-radio/typing.d.ts +8 -8
  163. package/components/hy-rate/hy-rate.vue +239 -239
  164. package/components/hy-rate/props.ts +77 -77
  165. package/components/hy-rate/typing.d.ts +6 -6
  166. package/components/hy-read-more/hy-read-more.vue +130 -130
  167. package/components/hy-read-more/props.ts +45 -45
  168. package/components/hy-read-more/typing.d.ts +6 -6
  169. package/components/hy-rolling-num/hy-rolling-num.vue +188 -188
  170. package/components/hy-rolling-num/props.ts +68 -68
  171. package/components/hy-scroll-list/hy-scroll-list.vue +123 -123
  172. package/components/hy-scroll-list/props.ts +22 -22
  173. package/components/hy-scroll-list/typing.d.ts +6 -6
  174. package/components/hy-search/hy-search.vue +221 -221
  175. package/components/hy-search/props.ts +131 -131
  176. package/components/hy-search/typing.d.ts +22 -22
  177. package/components/hy-signature/hy-signature.vue +640 -640
  178. package/components/hy-signature/props.ts +118 -118
  179. package/components/hy-signature/typing.d.ts +93 -93
  180. package/components/hy-slider/hy-slider.vue +444 -444
  181. package/components/hy-slider/props.ts +77 -77
  182. package/components/hy-slider/typing.d.ts +10 -10
  183. package/components/hy-status-bar/hy-status-bar.vue +41 -41
  184. package/components/hy-status-bar/props.ts +8 -8
  185. package/components/hy-status-bar/typing.d.ts +12 -12
  186. package/components/hy-steps/hy-steps.vue +267 -267
  187. package/components/hy-steps/props.ts +49 -49
  188. package/components/hy-steps/typing.d.ts +21 -21
  189. package/components/hy-sticky/hy-sticky.vue +226 -226
  190. package/components/hy-sticky/props.ts +24 -24
  191. package/components/hy-sticky/typing.d.ts +4 -4
  192. package/components/hy-submit-bar/hy-submit-bar.vue +189 -189
  193. package/components/hy-submit-bar/props.ts +91 -91
  194. package/components/hy-submit-bar/typing.d.ts +24 -24
  195. package/components/hy-subsection/hy-subsection.vue +207 -207
  196. package/components/hy-subsection/props.ts +52 -52
  197. package/components/hy-subsection/typing.d.ts +13 -13
  198. package/components/hy-swipe-action/hy-swipe-action.vue +323 -323
  199. package/components/hy-swipe-action/index.ts +25 -25
  200. package/components/hy-swipe-action/props.ts +47 -47
  201. package/components/hy-swipe-action/typing.d.ts +25 -25
  202. package/components/hy-swiper/hy-swiper-indicator.vue +75 -75
  203. package/components/hy-swiper/hy-swiper.vue +224 -224
  204. package/components/hy-swiper/props.ts +128 -128
  205. package/components/hy-swiper/typing.d.ts +26 -26
  206. package/components/hy-switch/hy-switch.vue +173 -173
  207. package/components/hy-switch/props.ts +61 -61
  208. package/components/hy-switch/typing.d.ts +8 -8
  209. package/components/hy-tabbar/hy-tabbar.vue +136 -136
  210. package/components/hy-tabbar/props.ts +59 -59
  211. package/components/hy-tabbar/typing.d.ts +21 -21
  212. package/components/hy-tabbar-group/hy-tabbar-group.vue +87 -87
  213. package/components/hy-tabbar-group/props.ts +78 -78
  214. package/components/hy-tabbar-group/typing.d.ts +16 -16
  215. package/components/hy-tabbar-item/hy-tabbar-item.vue +103 -103
  216. package/components/hy-tabbar-item/typing.d.ts +10 -10
  217. package/components/hy-table/hy-table.vue +358 -358
  218. package/components/hy-table/props.ts +47 -47
  219. package/components/hy-table/typing.d.ts +34 -34
  220. package/components/hy-tabs/hy-tabs.vue +335 -335
  221. package/components/hy-tabs/props.ts +77 -77
  222. package/components/hy-tabs/typing.d.ts +33 -33
  223. package/components/hy-tag/hy-tag.vue +174 -174
  224. package/components/hy-tag/props.ts +89 -89
  225. package/components/hy-tag/typing.d.ts +13 -13
  226. package/components/hy-text/hy-text.vue +237 -237
  227. package/components/hy-text/props.ts +115 -115
  228. package/components/hy-text/typing.d.ts +6 -6
  229. package/components/hy-textarea/hy-textarea.vue +197 -197
  230. package/components/hy-textarea/props.ts +116 -116
  231. package/components/hy-textarea/typing.d.ts +22 -22
  232. package/components/hy-toast/hy-toast.vue +190 -190
  233. package/components/hy-toast/typing.d.ts +38 -38
  234. package/components/hy-tooltip/hy-tooltip.vue +277 -277
  235. package/components/hy-tooltip/props.ts +78 -78
  236. package/components/hy-tooltip/typing.d.ts +4 -4
  237. package/components/hy-transition/hy-transition.vue +157 -157
  238. package/components/hy-transition/props.ts +32 -32
  239. package/components/hy-transition/typing.d.ts +16 -16
  240. package/components/hy-upload/hy-upload.vue +385 -385
  241. package/components/hy-upload/props.ts +132 -132
  242. package/components/hy-upload/typing.d.ts +65 -65
  243. package/components/hy-warn/hy-warn.vue +115 -115
  244. package/components/hy-warn/props.ts +49 -49
  245. package/components/hy-warn/typing.d.ts +6 -6
  246. package/components/hy-waterfall/hy-waterfall.vue +191 -191
  247. package/components/hy-waterfall/props.ts +21 -21
  248. package/components/hy-watermark/hy-watermark.vue +978 -978
  249. package/components/hy-watermark/props.ts +104 -104
  250. package/components/index.ts +183 -183
  251. package/global.d.ts +91 -91
  252. package/index.ts +1 -1
  253. package/libs/api/http.ts +140 -140
  254. package/libs/api/index.ts +1 -1
  255. package/libs/common/index.ts +2 -2
  256. package/libs/common/queue.ts +28 -28
  257. package/libs/composables/index.ts +6 -6
  258. package/libs/composables/usePopover.ts +241 -241
  259. package/libs/composables/useQueue.ts +53 -53
  260. package/libs/composables/useShakeService.ts +64 -64
  261. package/libs/composables/useShare.ts +42 -42
  262. package/libs/composables/useToast.ts +45 -45
  263. package/libs/composables/useTouch.ts +51 -51
  264. package/libs/config/color.ts +7 -7
  265. package/libs/config/icon.ts +430 -430
  266. package/libs/config/index.ts +2 -2
  267. package/libs/css/iconfont.css +443 -443
  268. package/libs/global/index.ts +6 -6
  269. package/libs/global/register-properties.ts +37 -37
  270. package/libs/index.ts +7 -7
  271. package/libs/typing/index.ts +4 -4
  272. package/libs/typing/modules/common.d.ts +139 -139
  273. package/libs/typing/modules/enum.ts +67 -67
  274. package/libs/typing/modules/form.ts +5 -1
  275. package/libs/typing/modules/http.ts +17 -17
  276. package/libs/typing/modules/icon.d.ts +366 -366
  277. package/libs/typing/modules/rect.ts +10 -10
  278. package/libs/utils/base64.ts +119 -119
  279. package/libs/utils/calendar.js +1021 -1021
  280. package/libs/utils/colorGradient.ts +112 -112
  281. package/libs/utils/index.ts +5 -5
  282. package/libs/utils/inside.ts +350 -350
  283. package/libs/utils/inspect.ts +171 -171
  284. package/libs/utils/utils.ts +521 -521
  285. package/package.json +18 -18
  286. package/web-types.json +1 -1
@@ -32,7 +32,7 @@
32
32
  :columns="columns"
33
33
  :defaultIndex="defaultIndex"
34
34
  :title="title"
35
- keyName="name"
35
+ label-key="name"
36
36
  :itemHeight="itemHeight"
37
37
  :loading="loading"
38
38
  :showToolbar="showToolbar"
@@ -1,100 +1,100 @@
1
- import type { CSSProperties, PropType } from "vue";
2
- import type HyInputProps from "../hy-input/typing";
3
-
4
- const addressPickerProps = {
5
- /** 用于控制选择器的弹出和收起 */
6
- show: {
7
- type: Boolean,
8
- default: false,
9
- },
10
- /**
11
- * 弹出层弹出方向
12
- * @values top,bottom
13
- * */
14
- popupMode: {
15
- type: String,
16
- default: "bottom",
17
- },
18
- /** 是否显示顶部的操作栏 */
19
- showToolbar: {
20
- type: Boolean,
21
- default: true,
22
- },
23
- /** 绑定值 */
24
- modelValue: {
25
- type: String,
26
- default: "",
27
- required: true,
28
- },
29
- /** 顶部标题 */
30
- title: String,
31
- /** 字符串截取数组条件 */
32
- separator: {
33
- type: String,
34
- default: " ",
35
- },
36
- /** 是否显示加载中状态 */
37
- loading: {
38
- type: Boolean,
39
- default: false,
40
- },
41
- /** 各列中,单个选项的高度 */
42
- itemHeight: {
43
- type: Number,
44
- default: 44,
45
- },
46
- /** 取消按钮的文字 */
47
- cancelText: {
48
- type: String,
49
- default: "取消",
50
- },
51
- /** 确认按钮的文字 */
52
- confirmText: {
53
- type: String,
54
- default: "确认",
55
- },
56
- /** 取消按钮的颜色 */
57
- cancelColor: {
58
- type: String,
59
- default: "#909193",
60
- },
61
- /** 确认按钮的颜色 */
62
- confirmColor: {
63
- type: String,
64
- default: "#3c9cff",
65
- },
66
- /** 每列中可见选项的数量 */
67
- visibleItemCount: {
68
- type: Number,
69
- default: 5,
70
- },
71
- /** 是否允许点击遮罩关闭选择器 */
72
- closeOnClickOverlay: {
73
- type: Boolean,
74
- default: false,
75
- },
76
- /** 各列的默认索引 */
77
- defaultIndex: {
78
- type: Array as PropType<Array<any>>,
79
- },
80
- /** 是否显示输入框 */
81
- hasInput: {
82
- type: Boolean,
83
- default: false,
84
- },
85
- /** 输入框集合属性 */
86
- input: {
87
- type: Object as PropType<HyInputProps>,
88
- },
89
- /** 右边插槽 */
90
- toolbarRightSlot: {
91
- type: Boolean,
92
- default: false,
93
- },
94
- /** 自定义输入框外部样式 */
95
- customStyle: {
96
- type: Object as PropType<CSSProperties>,
97
- },
98
- };
99
-
100
- export default addressPickerProps;
1
+ import type { CSSProperties, PropType } from "vue";
2
+ import type HyInputProps from "../hy-input/typing";
3
+
4
+ const addressPickerProps = {
5
+ /** 用于控制选择器的弹出和收起 */
6
+ show: {
7
+ type: Boolean,
8
+ default: false,
9
+ },
10
+ /**
11
+ * 弹出层弹出方向
12
+ * @values top,bottom
13
+ * */
14
+ popupMode: {
15
+ type: String,
16
+ default: "bottom",
17
+ },
18
+ /** 是否显示顶部的操作栏 */
19
+ showToolbar: {
20
+ type: Boolean,
21
+ default: true,
22
+ },
23
+ /** 绑定值 */
24
+ modelValue: {
25
+ type: String,
26
+ default: "",
27
+ required: true,
28
+ },
29
+ /** 顶部标题 */
30
+ title: String,
31
+ /** 字符串截取数组条件 */
32
+ separator: {
33
+ type: String,
34
+ default: " ",
35
+ },
36
+ /** 是否显示加载中状态 */
37
+ loading: {
38
+ type: Boolean,
39
+ default: false,
40
+ },
41
+ /** 各列中,单个选项的高度 */
42
+ itemHeight: {
43
+ type: Number,
44
+ default: 44,
45
+ },
46
+ /** 取消按钮的文字 */
47
+ cancelText: {
48
+ type: String,
49
+ default: "取消",
50
+ },
51
+ /** 确认按钮的文字 */
52
+ confirmText: {
53
+ type: String,
54
+ default: "确认",
55
+ },
56
+ /** 取消按钮的颜色 */
57
+ cancelColor: {
58
+ type: String,
59
+ default: "#909193",
60
+ },
61
+ /** 确认按钮的颜色 */
62
+ confirmColor: {
63
+ type: String,
64
+ default: "#3c9cff",
65
+ },
66
+ /** 每列中可见选项的数量 */
67
+ visibleItemCount: {
68
+ type: Number,
69
+ default: 5,
70
+ },
71
+ /** 是否允许点击遮罩关闭选择器 */
72
+ closeOnClickOverlay: {
73
+ type: Boolean,
74
+ default: false,
75
+ },
76
+ /** 各列的默认索引 */
77
+ defaultIndex: {
78
+ type: Array as PropType<Array<any>>,
79
+ },
80
+ /** 是否显示输入框 */
81
+ hasInput: {
82
+ type: Boolean,
83
+ default: false,
84
+ },
85
+ /** 输入框集合属性 */
86
+ input: {
87
+ type: Object as PropType<HyInputProps>,
88
+ },
89
+ /** 右边插槽 */
90
+ toolbarRightSlot: {
91
+ type: Boolean,
92
+ default: false,
93
+ },
94
+ /** 自定义输入框外部样式 */
95
+ customStyle: {
96
+ type: Object as PropType<CSSProperties>,
97
+ },
98
+ };
99
+
100
+ export default addressPickerProps;
@@ -1,16 +1,16 @@
1
- export type ConfirmParams = {
2
- /** 选中值 */
3
- value: string
4
- }
5
- export interface IAddressPickerEmits {
6
- /** 关闭选择器时触发 */
7
- (e: 'close'): void
8
- /** 点击取消按钮触发 */
9
- (e: 'cancel'): void
10
- /** 点击确认按钮触发 */
11
- (e: 'confirm', params: ConfirmParams): void
12
- /** 当选择值变化时触发 */
13
- (e: 'change', args: any): void
14
- /** 当选择值变化时触发 */
15
- (e: 'update:modelValue', value: ConfirmParams['value']): void
16
- }
1
+ export type ConfirmParams = {
2
+ /** 选中值 */
3
+ value: string
4
+ }
5
+ export interface IAddressPickerEmits {
6
+ /** 关闭选择器时触发 */
7
+ (e: 'close'): void
8
+ /** 点击取消按钮触发 */
9
+ (e: 'cancel'): void
10
+ /** 点击确认按钮触发 */
11
+ (e: 'confirm', params: ConfirmParams): void
12
+ /** 当选择值变化时触发 */
13
+ (e: 'change', args: any): void
14
+ /** 当选择值变化时触发 */
15
+ (e: 'update:modelValue', value: ConfirmParams['value']): void
16
+ }
@@ -1,163 +1,163 @@
1
- <template>
2
- <view class="hy-avatar" :class="avatarClass" :style="avatarStyle" @tap="clickHandler">
3
- <slot v-if="$slots.default"></slot>
4
- <template v-else>
5
- <!-- #ifdef MP-WEIXIN || MP-QQ || MP-BAIDU -->
6
- <open-data
7
- v-if="mpAvatar && allowMp"
8
- type="userAvatarUrl"
9
- :style="[
10
- {
11
- width: addUnit(size),
12
- height: addUnit(size)
13
- }
14
- ]"
15
- />
16
- <!-- #endif -->
17
- <!-- #ifndef MP-WEIXIN && MP-QQ && MP-BAIDU -->
18
- <template v-if="mpAvatar && allowMp"></template>
19
- <!-- #endif -->
20
- <hy-icon v-else-if="icon" :name="icon" :size="fontSize" :color="color"></hy-icon>
21
- <text
22
- v-else-if="text"
23
- :style="{
24
- justifyContent: 'center',
25
- textAlign: 'center',
26
- color: color,
27
- fontSize: fontSize
28
- }"
29
- >
30
- {{ text }}
31
- </text>
32
- <image
33
- class="hy-avatar__image"
34
- v-else
35
- :class="[`hy-avatar__image--${shape}`]"
36
- :src="avatarUrl || defaultUrl"
37
- :mode="mode"
38
- @error="errorHandler"
39
- ></image>
40
- </template>
41
- </view>
42
- </template>
43
-
44
- <script lang="ts">
45
- export default {
46
- name: 'hy-avatar',
47
- options: {
48
- addGlobalClass: true,
49
- virtualHost: true,
50
- styleIsolation: 'shared'
51
- }
52
- }
53
- </script>
54
-
55
- <script setup lang="ts">
56
- import { computed, ref, watch } from 'vue'
57
- import type { CSSProperties } from 'vue'
58
- import type { IAvatarEmit } from './typing'
59
- import { addUnit, isNumber, random } from '../../libs'
60
- import avatarProps from './props'
61
- // 组件
62
- import HyIcon from '../hy-icon/hy-icon.vue'
63
-
64
- /**
65
- * 本组件一般用于展示头像的地方,如个人中心,或者评论列表页的用户头像展示等场所
66
- * @displayName hy-avatar
67
- */
68
- defineOptions({})
69
-
70
- const props = defineProps(avatarProps)
71
- const emit = defineEmits<IAvatarEmit>()
72
-
73
- const base64Avatar =
74
- 'data:image/jpg;base64,/9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/sABFEdWNreQABAAQAAAA8AAD/4QMraHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjMtYzAxMSA2Ni4xNDU2NjEsIDIwMTIvMDIvMDYtMTQ6NTY6MjcgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjREMEQwRkY0RjgwNDExRUE5OTY2RDgxODY3NkJFODMxIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjREMEQwRkY1RjgwNDExRUE5OTY2RDgxODY3NkJFODMxIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NEQwRDBGRjJGODA0MTFFQTk5NjZEODE4Njc2QkU4MzEiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NEQwRDBGRjNGODA0MTFFQTk5NjZEODE4Njc2QkU4MzEiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7/7gAOQWRvYmUAZMAAAAAB/9sAhAAGBAQEBQQGBQUGCQYFBgkLCAYG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'
75
- // 如果配置randomBgColor参数为true,在图标或者文字的模式下,会随机从中取出一个颜色值当做背景色
76
- const colors = ref<string[]>([
77
- '#ffb34b',
78
- '#f2bba9',
79
- '#f7a196',
80
- '#f18080',
81
- '#88a867',
82
- '#bfbf39',
83
- '#89c152',
84
- '#94d554',
85
- '#f19ec2',
86
- '#afaae4',
87
- '#e1b0df',
88
- '#c38cc1',
89
- '#72dcdc',
90
- '#9acdcb',
91
- '#77b1cc',
92
- '#448aca',
93
- '#86cefa',
94
- '#98d1ee',
95
- '#73d1f1',
96
- '#80a7dc'
97
- ])
98
- const avatarUrl = ref(props.src)
99
- const allowMp = ref<boolean>(false)
100
-
101
- watch(
102
- () => props.src,
103
- (newVal) => {
104
- avatarUrl.value = newVal
105
- // 如果没有传src,则主动触发error事件,用于显示默认的头像,否则src为''空字符等的时候,会无内容展示
106
- if (!newVal) {
107
- errorHandler()
108
- }
109
- },
110
- { immediate: true }
111
- )
112
-
113
- const avatarStyle = computed<CSSProperties>(() => {
114
- const style: CSSProperties = {
115
- backgroundColor:
116
- props.text || props.icon
117
- ? props.randomBgColor
118
- ? colors.value[props.colorIndex ? props.colorIndex : random(0, 19)]
119
- : props.bgColor
120
- : 'transparent'
121
- }
122
- if (isNumber(props.size)) {
123
- style.width = addUnit(props.size)
124
- style.height = addUnit(props.size)
125
- }
126
-
127
- return Object.assign(style, props.customStyle)
128
- })
129
- const avatarClass = computed<string[]>(() => {
130
- const classes: string[] = [`hy-avatar--${props.shape}`]
131
- if (typeof props.size === 'string') {
132
- classes.push(`hy-avatar--${props.size}`)
133
- }
134
-
135
- return classes
136
- })
137
-
138
- const init = () => {
139
- // 目前只有这几个小程序平台具有open-data标签
140
- // 其他平台可以通过uni.getUserInfo类似接口获取信息,但是需要弹窗授权(首次),不合符组件逻辑
141
- // 故目前自动获取小程序头像只支持这几个平台
142
- // #ifdef MP-WEIXIN || MP-QQ || MP-BAIDU
143
- allowMp.value = true
144
- // #endif
145
- }
146
- init()
147
-
148
- // 图片加载时失败时触发
149
- function errorHandler() {
150
- avatarUrl.value = props.defaultUrl || base64Avatar
151
- }
152
-
153
- /**
154
- * @description 点击头像
155
- * */
156
- const clickHandler = (e: Event) => {
157
- emit('click', props.name, e)
158
- }
159
- </script>
160
-
161
- <style lang="scss" scoped>
162
- @import './index.scss';
163
- </style>
1
+ <template>
2
+ <view class="hy-avatar" :class="avatarClass" :style="avatarStyle" @tap="clickHandler">
3
+ <slot v-if="$slots.default"></slot>
4
+ <template v-else>
5
+ <!-- #ifdef MP-WEIXIN || MP-QQ || MP-BAIDU -->
6
+ <open-data
7
+ v-if="mpAvatar && allowMp"
8
+ type="userAvatarUrl"
9
+ :style="[
10
+ {
11
+ width: addUnit(size),
12
+ height: addUnit(size)
13
+ }
14
+ ]"
15
+ />
16
+ <!-- #endif -->
17
+ <!-- #ifndef MP-WEIXIN && MP-QQ && MP-BAIDU -->
18
+ <template v-if="mpAvatar && allowMp"></template>
19
+ <!-- #endif -->
20
+ <hy-icon v-else-if="icon" :name="icon" :size="fontSize" :color="color"></hy-icon>
21
+ <text
22
+ v-else-if="text"
23
+ :style="{
24
+ justifyContent: 'center',
25
+ textAlign: 'center',
26
+ color: color,
27
+ fontSize: fontSize
28
+ }"
29
+ >
30
+ {{ text }}
31
+ </text>
32
+ <image
33
+ class="hy-avatar__image"
34
+ v-else
35
+ :class="[`hy-avatar__image--${shape}`]"
36
+ :src="avatarUrl || defaultUrl"
37
+ :mode="mode"
38
+ @error="errorHandler"
39
+ ></image>
40
+ </template>
41
+ </view>
42
+ </template>
43
+
44
+ <script lang="ts">
45
+ export default {
46
+ name: 'hy-avatar',
47
+ options: {
48
+ addGlobalClass: true,
49
+ virtualHost: true,
50
+ styleIsolation: 'shared'
51
+ }
52
+ }
53
+ </script>
54
+
55
+ <script setup lang="ts">
56
+ import { computed, ref, watch } from 'vue'
57
+ import type { CSSProperties } from 'vue'
58
+ import type { IAvatarEmit } from './typing'
59
+ import { addUnit, isNumber, random } from '../../libs'
60
+ import avatarProps from './props'
61
+ // 组件
62
+ import HyIcon from '../hy-icon/hy-icon.vue'
63
+
64
+ /**
65
+ * 本组件一般用于展示头像的地方,如个人中心,或者评论列表页的用户头像展示等场所
66
+ * @displayName hy-avatar
67
+ */
68
+ defineOptions({})
69
+
70
+ const props = defineProps(avatarProps)
71
+ const emit = defineEmits<IAvatarEmit>()
72
+
73
+ const base64Avatar =
74
+ 'data:image/jpg;base64,/9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/sABFEdWNreQABAAQAAAA8AAD/4QMraHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjMtYzAxMSA2Ni4xNDU2NjEsIDIwMTIvMDIvMDYtMTQ6NTY6MjcgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjREMEQwRkY0RjgwNDExRUE5OTY2RDgxODY3NkJFODMxIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjREMEQwRkY1RjgwNDExRUE5OTY2RDgxODY3NkJFODMxIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NEQwRDBGRjJGODA0MTFFQTk5NjZEODE4Njc2QkU4MzEiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NEQwRDBGRjNGODA0MTFFQTk5NjZEODE4Njc2QkU4MzEiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7/7gAOQWRvYmUAZMAAAAAB/9sAhAAGBAQEBQQGBQUGCQYFBgkLCAYG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'
75
+ // 如果配置randomBgColor参数为true,在图标或者文字的模式下,会随机从中取出一个颜色值当做背景色
76
+ const colors = ref<string[]>([
77
+ '#ffb34b',
78
+ '#f2bba9',
79
+ '#f7a196',
80
+ '#f18080',
81
+ '#88a867',
82
+ '#bfbf39',
83
+ '#89c152',
84
+ '#94d554',
85
+ '#f19ec2',
86
+ '#afaae4',
87
+ '#e1b0df',
88
+ '#c38cc1',
89
+ '#72dcdc',
90
+ '#9acdcb',
91
+ '#77b1cc',
92
+ '#448aca',
93
+ '#86cefa',
94
+ '#98d1ee',
95
+ '#73d1f1',
96
+ '#80a7dc'
97
+ ])
98
+ const avatarUrl = ref(props.src)
99
+ const allowMp = ref<boolean>(false)
100
+
101
+ watch(
102
+ () => props.src,
103
+ (newVal) => {
104
+ avatarUrl.value = newVal
105
+ // 如果没有传src,则主动触发error事件,用于显示默认的头像,否则src为''空字符等的时候,会无内容展示
106
+ if (!newVal) {
107
+ errorHandler()
108
+ }
109
+ },
110
+ { immediate: true }
111
+ )
112
+
113
+ const avatarStyle = computed<CSSProperties>(() => {
114
+ const style: CSSProperties = {
115
+ backgroundColor:
116
+ props.text || props.icon
117
+ ? props.randomBgColor
118
+ ? colors.value[props.colorIndex ? props.colorIndex : random(0, 19)]
119
+ : props.bgColor
120
+ : 'transparent'
121
+ }
122
+ if (isNumber(props.size)) {
123
+ style.width = addUnit(props.size)
124
+ style.height = addUnit(props.size)
125
+ }
126
+
127
+ return Object.assign(style, props.customStyle)
128
+ })
129
+ const avatarClass = computed<string[]>(() => {
130
+ const classes: string[] = [`hy-avatar--${props.shape}`]
131
+ if (typeof props.size === 'string') {
132
+ classes.push(`hy-avatar--${props.size}`)
133
+ }
134
+
135
+ return classes
136
+ })
137
+
138
+ const init = () => {
139
+ // 目前只有这几个小程序平台具有open-data标签
140
+ // 其他平台可以通过uni.getUserInfo类似接口获取信息,但是需要弹窗授权(首次),不合符组件逻辑
141
+ // 故目前自动获取小程序头像只支持这几个平台
142
+ // #ifdef MP-WEIXIN || MP-QQ || MP-BAIDU
143
+ allowMp.value = true
144
+ // #endif
145
+ }
146
+ init()
147
+
148
+ // 图片加载时失败时触发
149
+ function errorHandler() {
150
+ avatarUrl.value = props.defaultUrl || base64Avatar
151
+ }
152
+
153
+ /**
154
+ * @description 点击头像
155
+ * */
156
+ const clickHandler = (e: Event) => {
157
+ emit('click', props.name, e)
158
+ }
159
+ </script>
160
+
161
+ <style lang="scss" scoped>
162
+ @import './index.scss';
163
+ </style>