hy-app 0.5.10 → 0.5.12

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 (293) 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 +17 -3
  17. package/components/hy-button/index.scss +24 -1
  18. package/components/hy-button/props.ts +9 -1
  19. package/components/hy-button/typing.d.ts +5 -0
  20. package/components/hy-calendar/header.vue +60 -60
  21. package/components/hy-calendar/hy-calendar.vue +362 -362
  22. package/components/hy-calendar/month.vue +537 -537
  23. package/components/hy-calendar/props.ts +159 -159
  24. package/components/hy-calendar/typing.d.ts +6 -6
  25. package/components/hy-card/hy-card.vue +161 -161
  26. package/components/hy-card/props.ts +122 -122
  27. package/components/hy-card/typing.d.ts +12 -12
  28. package/components/hy-cell/hy-cell.vue +33 -33
  29. package/components/hy-cell/props.ts +54 -54
  30. package/components/hy-cell/typing.d.ts +4 -4
  31. package/components/hy-cell-item/hy-cell-item.vue +161 -161
  32. package/components/hy-cell-item/props.ts +66 -66
  33. package/components/hy-cell-item/typing.d.ts +7 -7
  34. package/components/hy-check-button/hy-check-button.vue +96 -96
  35. package/components/hy-check-button/props.ts +74 -74
  36. package/components/hy-check-button/typing.d.ts +44 -44
  37. package/components/hy-checkbox/hy-checkbox.vue +227 -227
  38. package/components/hy-checkbox/props.ts +96 -96
  39. package/components/hy-checkbox/typing.d.ts +8 -8
  40. package/components/hy-checkbox-group/hy-checkbox-group.vue +45 -45
  41. package/components/hy-checkbox-group/props.ts +80 -80
  42. package/components/hy-checkbox-group/typing.d.ts +6 -6
  43. package/components/hy-checkbox-item/hy-checkbox-item.vue +199 -199
  44. package/components/hy-checkbox-item/props.ts +24 -24
  45. package/components/hy-checkbox-item/typing.d.ts +7 -7
  46. package/components/hy-code-input/hy-code-input.vue +231 -231
  47. package/components/hy-code-input/props.ts +88 -88
  48. package/components/hy-code-input/typing.d.ts +8 -8
  49. package/components/hy-config-provider/hy-config-provider.vue +53 -53
  50. package/components/hy-config-provider/props.ts +28 -28
  51. package/components/hy-count-down/hy-count-down.vue +170 -170
  52. package/components/hy-count-down/index.ts +52 -52
  53. package/components/hy-count-down/props.ts +32 -32
  54. package/components/hy-count-down/typing.d.ts +14 -14
  55. package/components/hy-count-to/hy-count-to.vue +218 -218
  56. package/components/hy-count-to/props.ts +62 -62
  57. package/components/hy-count-to/typing.d.ts +4 -4
  58. package/components/hy-coupon/hy-coupon.vue +12 -1
  59. package/components/hy-coupon/index.scss +167 -171
  60. package/components/hy-coupon/props.ts +6 -1
  61. package/components/hy-coupon/typing.d.ts +14 -14
  62. package/components/hy-datetime-picker/hy-datetime-picker.vue +521 -521
  63. package/components/hy-datetime-picker/props.ts +142 -142
  64. package/components/hy-datetime-picker/typing.d.ts +20 -20
  65. package/components/hy-divider/hy-divider.vue +132 -132
  66. package/components/hy-divider/props.ts +80 -80
  67. package/components/hy-dropdown/hy-dropdown.vue +60 -60
  68. package/components/hy-dropdown/props.ts +40 -40
  69. package/components/hy-dropdown-item/hy-dropdown-item.vue +206 -206
  70. package/components/hy-dropdown-item/props.ts +21 -21
  71. package/components/hy-dropdown-item/typing.d.ts +17 -17
  72. package/components/hy-empty/hy-empty.vue +116 -116
  73. package/components/hy-empty/icon.ts +72 -72
  74. package/components/hy-empty/props.ts +60 -60
  75. package/components/hy-empty/typing.d.ts +38 -38
  76. package/components/hy-flex/hy-flex.vue +53 -53
  77. package/components/hy-flex/index.scss +8 -8
  78. package/components/hy-flex/props.ts +58 -58
  79. package/components/hy-flex/typing.d.ts +21 -21
  80. package/components/hy-float-button/hy-float-button.vue +378 -378
  81. package/components/hy-float-button/props.ts +111 -111
  82. package/components/hy-float-button/typing.d.ts +35 -35
  83. package/components/hy-folding-panel/hy-folding-panel.vue +109 -109
  84. package/components/hy-folding-panel/props.ts +42 -42
  85. package/components/hy-folding-panel/typing.d.ts +19 -19
  86. package/components/hy-folding-panel-item/hy-folding-panel-item.vue +183 -183
  87. package/components/hy-folding-panel-item/props.ts +81 -81
  88. package/components/hy-folding-panel-item/typing.d.ts +37 -37
  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 +1 -1
  108. package/components/hy-input/index.scss +1 -2
  109. package/components/hy-input/props.ts +3 -3
  110. package/components/hy-input/typing.d.ts +31 -31
  111. package/components/hy-line/hy-line.vue +55 -55
  112. package/components/hy-line/props.ts +43 -43
  113. package/components/hy-line-progress/hy-line-progress.vue +102 -102
  114. package/components/hy-line-progress/props.ts +33 -33
  115. package/components/hy-list/hy-list.vue +226 -226
  116. package/components/hy-list/props.ts +69 -69
  117. package/components/hy-list/typing.d.ts +6 -6
  118. package/components/hy-loading/hy-loading.vue +107 -107
  119. package/components/hy-loading/props.ts +65 -65
  120. package/components/hy-menu/hy-menu.vue +159 -159
  121. package/components/hy-menu/props.ts +44 -44
  122. package/components/hy-menu/typing.d.ts +34 -34
  123. package/components/hy-modal/hy-modal.vue +173 -173
  124. package/components/hy-modal/props.ts +90 -90
  125. package/components/hy-modal/typing.d.ts +11 -11
  126. package/components/hy-navbar/hy-navbar.vue +144 -144
  127. package/components/hy-navbar/props.ts +78 -78
  128. package/components/hy-navbar/typing.d.ts +6 -6
  129. package/components/hy-notice-bar/hy-column-notice.vue +94 -94
  130. package/components/hy-notice-bar/hy-notice-bar.vue +96 -96
  131. package/components/hy-notice-bar/hy-row-notice.vue +1 -1
  132. package/components/hy-notice-bar/props.ts +85 -85
  133. package/components/hy-notice-bar/typing.d.ts +8 -8
  134. package/components/hy-notify/hy-notify.vue +174 -174
  135. package/components/hy-notify/props.ts +51 -51
  136. package/components/hy-number-step/hy-number-step.vue +367 -367
  137. package/components/hy-number-step/props.ts +112 -112
  138. package/components/hy-number-step/typing.d.ts +16 -16
  139. package/components/hy-overlay/hy-overlay.vue +60 -60
  140. package/components/hy-overlay/props.ts +33 -33
  141. package/components/hy-overlay/typing.d.ts +4 -4
  142. package/components/hy-pagination/hy-pagination.vue +135 -135
  143. package/components/hy-pagination/props.ts +55 -55
  144. package/components/hy-pagination/typing.d.ts +10 -10
  145. package/components/hy-parse/node/node.vue +619 -422
  146. package/components/hy-parse/parser.js +1253 -1060
  147. package/components/hy-picker/hy-picker.vue +7 -5
  148. package/components/hy-picker/props.ts +7 -2
  149. package/components/hy-picker/typing.d.ts +9 -5
  150. package/components/hy-popover/hy-popover.vue +251 -251
  151. package/components/hy-popover/props.ts +51 -51
  152. package/components/hy-popover/typing.d.ts +39 -39
  153. package/components/hy-popup/hy-popup.vue +197 -197
  154. package/components/hy-popup/props.ts +85 -85
  155. package/components/hy-popup/typing.d.ts +10 -10
  156. package/components/hy-price/hy-price.vue +79 -79
  157. package/components/hy-price/props.ts +54 -54
  158. package/components/hy-price/typing.d.ts +4 -4
  159. package/components/hy-qrcode/hy-qrcode.vue +216 -216
  160. package/components/hy-qrcode/props.ts +70 -70
  161. package/components/hy-qrcode/qrcode.js +1304 -1304
  162. package/components/hy-qrcode/typing.d.ts +8 -8
  163. package/components/hy-radio/hy-radio.vue +226 -226
  164. package/components/hy-radio/props.ts +1 -1
  165. package/components/hy-radio/typing.d.ts +8 -8
  166. package/components/hy-rate/hy-rate.vue +239 -239
  167. package/components/hy-rate/props.ts +77 -77
  168. package/components/hy-rate/typing.d.ts +6 -6
  169. package/components/hy-read-more/hy-read-more.vue +130 -130
  170. package/components/hy-read-more/props.ts +45 -45
  171. package/components/hy-read-more/typing.d.ts +6 -6
  172. package/components/hy-rolling-num/hy-rolling-num.vue +188 -188
  173. package/components/hy-rolling-num/props.ts +68 -68
  174. package/components/hy-scroll-list/hy-scroll-list.vue +123 -123
  175. package/components/hy-scroll-list/props.ts +22 -22
  176. package/components/hy-scroll-list/typing.d.ts +6 -6
  177. package/components/hy-search/hy-search.vue +221 -221
  178. package/components/hy-search/props.ts +131 -131
  179. package/components/hy-search/typing.d.ts +22 -22
  180. package/components/hy-signature/hy-signature.vue +640 -640
  181. package/components/hy-signature/props.ts +118 -118
  182. package/components/hy-signature/typing.d.ts +93 -93
  183. package/components/hy-slider/hy-slider.vue +444 -444
  184. package/components/hy-slider/props.ts +77 -77
  185. package/components/hy-slider/typing.d.ts +10 -10
  186. package/components/hy-status-bar/hy-status-bar.vue +41 -41
  187. package/components/hy-status-bar/props.ts +8 -8
  188. package/components/hy-status-bar/typing.d.ts +12 -12
  189. package/components/hy-steps/hy-steps.vue +267 -267
  190. package/components/hy-steps/props.ts +49 -49
  191. package/components/hy-steps/typing.d.ts +21 -21
  192. package/components/hy-sticky/hy-sticky.vue +226 -226
  193. package/components/hy-sticky/props.ts +24 -24
  194. package/components/hy-sticky/typing.d.ts +4 -4
  195. package/components/hy-submit-bar/hy-submit-bar.vue +189 -189
  196. package/components/hy-submit-bar/props.ts +91 -91
  197. package/components/hy-submit-bar/typing.d.ts +24 -24
  198. package/components/hy-subsection/hy-subsection.vue +207 -207
  199. package/components/hy-subsection/props.ts +52 -52
  200. package/components/hy-subsection/typing.d.ts +13 -13
  201. package/components/hy-swipe-action/hy-swipe-action.vue +323 -323
  202. package/components/hy-swipe-action/index.ts +25 -25
  203. package/components/hy-swipe-action/props.ts +47 -47
  204. package/components/hy-swipe-action/typing.d.ts +25 -25
  205. package/components/hy-swiper/hy-swiper-indicator.vue +75 -75
  206. package/components/hy-swiper/hy-swiper.vue +224 -224
  207. package/components/hy-swiper/props.ts +128 -128
  208. package/components/hy-swiper/typing.d.ts +26 -26
  209. package/components/hy-switch/hy-switch.vue +173 -173
  210. package/components/hy-switch/props.ts +61 -61
  211. package/components/hy-switch/typing.d.ts +8 -8
  212. package/components/hy-tabbar/hy-tabbar.vue +136 -136
  213. package/components/hy-tabbar/props.ts +59 -59
  214. package/components/hy-tabbar/typing.d.ts +21 -21
  215. package/components/hy-tabbar-group/hy-tabbar-group.vue +87 -87
  216. package/components/hy-tabbar-group/props.ts +78 -78
  217. package/components/hy-tabbar-group/typing.d.ts +16 -16
  218. package/components/hy-tabbar-item/hy-tabbar-item.vue +103 -103
  219. package/components/hy-tabbar-item/typing.d.ts +10 -10
  220. package/components/hy-table/hy-table.vue +492 -271
  221. package/components/hy-table/index.scss +134 -159
  222. package/components/hy-table/props.ts +22 -7
  223. package/components/hy-table/typing.d.ts +6 -11
  224. package/components/hy-tabs/hy-tabs.vue +1 -1
  225. package/components/hy-tabs/props.ts +77 -77
  226. package/components/hy-tabs/typing.d.ts +33 -33
  227. package/components/hy-tag/hy-tag.vue +174 -174
  228. package/components/hy-tag/props.ts +89 -89
  229. package/components/hy-tag/typing.d.ts +13 -13
  230. package/components/hy-text/hy-text.vue +3 -3
  231. package/components/hy-text/props.ts +1 -1
  232. package/components/hy-text/typing.d.ts +6 -6
  233. package/components/hy-textarea/hy-textarea.vue +3 -2
  234. package/components/hy-textarea/index.scss +2 -3
  235. package/components/hy-textarea/props.ts +116 -116
  236. package/components/hy-textarea/typing.d.ts +22 -22
  237. package/components/hy-toast/hy-toast.vue +1 -1
  238. package/components/hy-toast/typing.d.ts +38 -38
  239. package/components/hy-tooltip/hy-tooltip.vue +277 -277
  240. package/components/hy-tooltip/props.ts +78 -78
  241. package/components/hy-tooltip/typing.d.ts +4 -4
  242. package/components/hy-transition/hy-transition.vue +157 -157
  243. package/components/hy-transition/props.ts +32 -32
  244. package/components/hy-transition/typing.d.ts +16 -16
  245. package/components/hy-upload/hy-upload.vue +385 -385
  246. package/components/hy-upload/props.ts +132 -132
  247. package/components/hy-upload/typing.d.ts +65 -65
  248. package/components/hy-warn/hy-warn.vue +115 -115
  249. package/components/hy-warn/props.ts +49 -49
  250. package/components/hy-warn/typing.d.ts +6 -6
  251. package/components/hy-waterfall/hy-waterfall.vue +191 -191
  252. package/components/hy-waterfall/props.ts +21 -21
  253. package/components/hy-watermark/hy-watermark.vue +978 -978
  254. package/components/hy-watermark/props.ts +104 -104
  255. package/components/index.ts +183 -183
  256. package/global.d.ts +91 -91
  257. package/index.ts +1 -1
  258. package/libs/api/http.ts +140 -140
  259. package/libs/api/index.ts +1 -1
  260. package/libs/common/index.ts +2 -2
  261. package/libs/common/queue.ts +28 -28
  262. package/libs/composables/index.ts +6 -6
  263. package/libs/composables/usePopover.ts +241 -241
  264. package/libs/composables/useQueue.ts +53 -53
  265. package/libs/composables/useShakeService.ts +64 -64
  266. package/libs/composables/useShare.ts +42 -42
  267. package/libs/composables/useToast.ts +45 -45
  268. package/libs/composables/useTouch.ts +51 -51
  269. package/libs/config/color.ts +7 -7
  270. package/libs/config/icon.ts +430 -430
  271. package/libs/config/index.ts +2 -2
  272. package/libs/css/iconfont.css +443 -443
  273. package/libs/css/theme.scss +1 -0
  274. package/libs/css/vars.scss +2 -2
  275. package/libs/global/index.ts +6 -6
  276. package/libs/global/register-properties.ts +37 -37
  277. package/libs/index.ts +7 -7
  278. package/libs/typing/index.ts +4 -4
  279. package/libs/typing/modules/common.d.ts +136 -136
  280. package/libs/typing/modules/enum.ts +67 -67
  281. package/libs/typing/modules/form.ts +5 -1
  282. package/libs/typing/modules/http.ts +17 -17
  283. package/libs/typing/modules/icon.d.ts +366 -366
  284. package/libs/typing/modules/rect.ts +10 -10
  285. package/libs/utils/base64.ts +119 -119
  286. package/libs/utils/calendar.js +1021 -1021
  287. package/libs/utils/colorGradient.ts +112 -112
  288. package/libs/utils/index.ts +5 -5
  289. package/libs/utils/inside.ts +11 -25
  290. package/libs/utils/inspect.ts +171 -171
  291. package/libs/utils/utils.ts +521 -521
  292. package/package.json +18 -18
  293. package/web-types.json +1 -1
@@ -1,189 +1,189 @@
1
- <template>
2
- <view
3
- :class="['hy-submit-bar', border && 'hy-border__top', customClass]"
4
- :style="submitBarStyle"
5
- >
6
- <view class="hy-submit-bar__left">
7
- <slot v-if="$slots.left" name="left"></slot>
8
- <view
9
- v-else-if="menus.length"
10
- class="hy-submit-bar__left--item"
11
- v-for="(item, i) in menus"
12
- :key="i"
13
- @tap="clickMenuFn(item, i)"
14
- >
15
- <hy-icon
16
- :name="item.icon"
17
- :label="item.text"
18
- :color="iconColor"
19
- :label-color="iconLabelColor"
20
- labelPos="bottom"
21
- space="7"
22
- :size="20"
23
- ></hy-icon>
24
- <hy-badge
25
- :value="item?.badge?.value"
26
- :absolute="true"
27
- :offset="item?.badge?.offset || [-5, 20]"
28
- :isDot="item?.badge?.isDot"
29
- :type="item?.badge?.type"
30
- :color="item?.badge?.color"
31
- :shape="item?.badge?.shape"
32
- :numberType="item?.badge?.numberType"
33
- :inverted="item?.badge?.inverted"
34
- ></hy-badge>
35
- </view>
36
- </view>
37
- <view class="hy-submit-bar__right">
38
- <slot v-if="$slots.right" name="right"></slot>
39
- <template v-else>
40
- <view
41
- class="hy-submit-bar__right--button"
42
- v-if="showLeftBtn"
43
- :style="leftBtnStyle"
44
- @tap.stop="confirmClickFn(0)"
45
- >
46
- <hy-loading
47
- :show="leftLoading"
48
- size="13"
49
- mode="circle"
50
- :custom-style="{ marginRight: '10rpx' }"
51
- ></hy-loading>
52
- {{ leftBtnText }}
53
- </view>
54
- <view
55
- class="hy-submit-bar__right--button"
56
- v-if="showRightBtn"
57
- :style="rightBtnStyle"
58
- @tap.stop="confirmClickFn(1)"
59
- >
60
- <hy-loading
61
- :show="rightLoading"
62
- size="13"
63
- mode="circle"
64
- :custom-style="{ marginRight: '10rpx' }"
65
- ></hy-loading>
66
- {{ rightBtnText }}
67
- </view>
68
- </template>
69
- </view>
70
- </view>
71
- </template>
72
-
73
- <script lang="ts">
74
- export default {
75
- name: 'hy-submit-bar',
76
- options: {
77
- addGlobalClass: true,
78
- virtualHost: true,
79
- styleIsolation: 'shared'
80
- }
81
- }
82
- </script>
83
-
84
- <script setup lang="ts">
85
- import { computed } from 'vue'
86
- import type { CSSProperties } from 'vue'
87
- import type { SubmitBarIconMenus, ISubmitBarEmits } from './typing'
88
- import submitBarProps from './props'
89
- // 组件
90
- import HyIcon from '../hy-icon/hy-icon.vue'
91
- import HyLoading from '../hy-loading/hy-loading.vue'
92
- import HyBadge from '../hy-badge/hy-badge.vue'
93
-
94
- /**
95
- * 该布局一般用于商品详情页底部引导用户快速购买商品的场景,开发者可以根据自己的需求修改布局结构和样式。
96
- * @displayName hy-submit-bar
97
- */
98
- defineOptions({})
99
-
100
- const props = defineProps(submitBarProps)
101
- const emit = defineEmits<ISubmitBarEmits>()
102
-
103
- /**
104
- * @description 整体样式
105
- * */
106
- const submitBarStyle = computed(() => {
107
- const style: CSSProperties = {
108
- bottom: 0,
109
- left: 0,
110
- zIndex: props.zIndex
111
- }
112
- if (props.fixed) style.position = 'fixed'
113
- return Object.assign(style, props.customStyle)
114
- })
115
-
116
- /**
117
- * @description 左边按钮样式
118
- * */
119
- const leftBtnStyle = computed(() => {
120
- const style: CSSProperties = {
121
- background: props.leftBtnColor,
122
- color: props.textColor
123
- }
124
- if (!props.showRightBtn) {
125
- style.flex = 1
126
- if (props.shape === 'circle') {
127
- style.borderRadius = '100px'
128
- } else {
129
- style.borderRadius = '2px'
130
- }
131
- } else {
132
- if (props.shape === 'circle') {
133
- style.borderRadius = '100px 0 0 100px'
134
- } else {
135
- style.borderRadius = '2px 0 0 2px'
136
- }
137
- }
138
- return style
139
- })
140
-
141
- /**
142
- * @description 右边按钮样式
143
- * */
144
- const rightBtnStyle = computed(() => {
145
- const style: CSSProperties = {
146
- background: props.rightBtnColor,
147
- color: props.textColor
148
- }
149
- if (!props.showLeftBtn) {
150
- style.flex = 1
151
- if (props.shape === 'circle') {
152
- style.borderRadius = '100px'
153
- } else {
154
- style.borderRadius = '2px'
155
- }
156
- } else {
157
- if (props.shape === 'circle') {
158
- style.borderRadius = '0 100px 100px 0'
159
- } else {
160
- style.borderRadius = '0 2px 2px 0'
161
- }
162
- }
163
- return style
164
- })
165
-
166
- /**
167
- * @description 点击左边图标
168
- * */
169
- const clickMenuFn = (temp: SubmitBarIconMenus, index: number) => {
170
- emit('menuClick', temp, index)
171
- }
172
-
173
- /**
174
- * @description 点击按钮
175
- * */
176
- const confirmClickFn = (i: number) => {
177
- if (
178
- (!props.leftLoading && !props.rightLoading) ||
179
- (props.leftLoading && i !== 0) ||
180
- (props.rightLoading && i !== 1)
181
- ) {
182
- emit('click', i)
183
- }
184
- }
185
- </script>
186
-
187
- <style lang="scss" scoped>
188
- @import './index.scss';
189
- </style>
1
+ <template>
2
+ <view
3
+ :class="['hy-submit-bar', border && 'hy-border__top', customClass]"
4
+ :style="submitBarStyle"
5
+ >
6
+ <view class="hy-submit-bar__left">
7
+ <slot v-if="$slots.left" name="left"></slot>
8
+ <view
9
+ v-else-if="menus.length"
10
+ class="hy-submit-bar__left--item"
11
+ v-for="(item, i) in menus"
12
+ :key="i"
13
+ @tap="clickMenuFn(item, i)"
14
+ >
15
+ <hy-icon
16
+ :name="item.icon"
17
+ :label="item.text"
18
+ :color="iconColor"
19
+ :label-color="iconLabelColor"
20
+ labelPos="bottom"
21
+ space="7"
22
+ :size="20"
23
+ ></hy-icon>
24
+ <hy-badge
25
+ :value="item?.badge?.value"
26
+ :absolute="true"
27
+ :offset="item?.badge?.offset || [-5, 20]"
28
+ :isDot="item?.badge?.isDot"
29
+ :type="item?.badge?.type"
30
+ :color="item?.badge?.color"
31
+ :shape="item?.badge?.shape"
32
+ :numberType="item?.badge?.numberType"
33
+ :inverted="item?.badge?.inverted"
34
+ ></hy-badge>
35
+ </view>
36
+ </view>
37
+ <view class="hy-submit-bar__right">
38
+ <slot v-if="$slots.right" name="right"></slot>
39
+ <template v-else>
40
+ <view
41
+ class="hy-submit-bar__right--button"
42
+ v-if="showLeftBtn"
43
+ :style="leftBtnStyle"
44
+ @tap.stop="confirmClickFn(0)"
45
+ >
46
+ <hy-loading
47
+ :show="leftLoading"
48
+ size="13"
49
+ mode="circle"
50
+ :custom-style="{ marginRight: '10rpx' }"
51
+ ></hy-loading>
52
+ {{ leftBtnText }}
53
+ </view>
54
+ <view
55
+ class="hy-submit-bar__right--button"
56
+ v-if="showRightBtn"
57
+ :style="rightBtnStyle"
58
+ @tap.stop="confirmClickFn(1)"
59
+ >
60
+ <hy-loading
61
+ :show="rightLoading"
62
+ size="13"
63
+ mode="circle"
64
+ :custom-style="{ marginRight: '10rpx' }"
65
+ ></hy-loading>
66
+ {{ rightBtnText }}
67
+ </view>
68
+ </template>
69
+ </view>
70
+ </view>
71
+ </template>
72
+
73
+ <script lang="ts">
74
+ export default {
75
+ name: 'hy-submit-bar',
76
+ options: {
77
+ addGlobalClass: true,
78
+ virtualHost: true,
79
+ styleIsolation: 'shared'
80
+ }
81
+ }
82
+ </script>
83
+
84
+ <script setup lang="ts">
85
+ import { computed } from 'vue'
86
+ import type { CSSProperties } from 'vue'
87
+ import type { SubmitBarIconMenus, ISubmitBarEmits } from './typing'
88
+ import submitBarProps from './props'
89
+ // 组件
90
+ import HyIcon from '../hy-icon/hy-icon.vue'
91
+ import HyLoading from '../hy-loading/hy-loading.vue'
92
+ import HyBadge from '../hy-badge/hy-badge.vue'
93
+
94
+ /**
95
+ * 该布局一般用于商品详情页底部引导用户快速购买商品的场景,开发者可以根据自己的需求修改布局结构和样式。
96
+ * @displayName hy-submit-bar
97
+ */
98
+ defineOptions({})
99
+
100
+ const props = defineProps(submitBarProps)
101
+ const emit = defineEmits<ISubmitBarEmits>()
102
+
103
+ /**
104
+ * @description 整体样式
105
+ * */
106
+ const submitBarStyle = computed(() => {
107
+ const style: CSSProperties = {
108
+ bottom: 0,
109
+ left: 0,
110
+ zIndex: props.zIndex
111
+ }
112
+ if (props.fixed) style.position = 'fixed'
113
+ return Object.assign(style, props.customStyle)
114
+ })
115
+
116
+ /**
117
+ * @description 左边按钮样式
118
+ * */
119
+ const leftBtnStyle = computed(() => {
120
+ const style: CSSProperties = {
121
+ background: props.leftBtnColor,
122
+ color: props.textColor
123
+ }
124
+ if (!props.showRightBtn) {
125
+ style.flex = 1
126
+ if (props.shape === 'circle') {
127
+ style.borderRadius = '100px'
128
+ } else {
129
+ style.borderRadius = '2px'
130
+ }
131
+ } else {
132
+ if (props.shape === 'circle') {
133
+ style.borderRadius = '100px 0 0 100px'
134
+ } else {
135
+ style.borderRadius = '2px 0 0 2px'
136
+ }
137
+ }
138
+ return style
139
+ })
140
+
141
+ /**
142
+ * @description 右边按钮样式
143
+ * */
144
+ const rightBtnStyle = computed(() => {
145
+ const style: CSSProperties = {
146
+ background: props.rightBtnColor,
147
+ color: props.textColor
148
+ }
149
+ if (!props.showLeftBtn) {
150
+ style.flex = 1
151
+ if (props.shape === 'circle') {
152
+ style.borderRadius = '100px'
153
+ } else {
154
+ style.borderRadius = '2px'
155
+ }
156
+ } else {
157
+ if (props.shape === 'circle') {
158
+ style.borderRadius = '0 100px 100px 0'
159
+ } else {
160
+ style.borderRadius = '0 2px 2px 0'
161
+ }
162
+ }
163
+ return style
164
+ })
165
+
166
+ /**
167
+ * @description 点击左边图标
168
+ * */
169
+ const clickMenuFn = (temp: SubmitBarIconMenus, index: number) => {
170
+ emit('menuClick', temp, index)
171
+ }
172
+
173
+ /**
174
+ * @description 点击按钮
175
+ * */
176
+ const confirmClickFn = (i: number) => {
177
+ if (
178
+ (!props.leftLoading && !props.rightLoading) ||
179
+ (props.leftLoading && i !== 0) ||
180
+ (props.rightLoading && i !== 1)
181
+ ) {
182
+ emit('click', i)
183
+ }
184
+ }
185
+ </script>
186
+
187
+ <style lang="scss" scoped>
188
+ @import './index.scss';
189
+ </style>
@@ -1,91 +1,91 @@
1
- import type { SubmitBarIconMenus } from './typing'
2
- import type { CSSProperties, PropType } from 'vue'
3
-
4
- const submitBarProps = {
5
- /** 左边菜单栏 */
6
- menus: {
7
- type: Array as unknown as PropType<SubmitBarIconMenus[]>,
8
- default: []
9
- },
10
- /** 绝对定位 */
11
- fixed: {
12
- type: Boolean,
13
- default: true
14
- },
15
- /** 是否显示边框 */
16
- border: {
17
- type: Boolean,
18
- default: true
19
- },
20
- /** 加载左边按钮loading */
21
- leftLoading: {
22
- type: Boolean,
23
- default: false
24
- },
25
- /** 加载右边按钮loading */
26
- rightLoading: {
27
- type: Boolean,
28
- default: false
29
- },
30
- /** 左边icon的颜色 */
31
- iconColor: String,
32
- /** 左边文字的颜色 */
33
- iconLabelColor: {
34
- type: String,
35
- default: '#909193FF'
36
- },
37
- /** 右边按钮文字颜色 */
38
- textColor: String,
39
- /** 显示左边按钮 */
40
- showLeftBtn: {
41
- type: Boolean,
42
- default: true
43
- },
44
- /** 显示右边按钮 */
45
- showRightBtn: {
46
- type: Boolean,
47
- default: true
48
- },
49
- /** 左边按钮文字 */
50
- leftBtnText: {
51
- type: String,
52
- default: '加入购物车'
53
- },
54
- /** 右边按钮文字 */
55
- rightBtnText: {
56
- type: String,
57
- default: '立即购买'
58
- },
59
- /** 左边按钮颜色,支持渐变色 */
60
- leftBtnColor: {
61
- type: String,
62
- default: '#ed3f14'
63
- },
64
- /** 有边按钮颜色,支持渐变色 */
65
- rightBtnColor: {
66
- type: String,
67
- default: '#ff7900'
68
- },
69
- /**
70
- * 按钮的形状
71
- * @values circle,square
72
- * */
73
- shape: {
74
- type: String,
75
- default: 'circle'
76
- },
77
- /** 层级 */
78
- zIndex: {
79
- type: [Number, String],
80
- default: 999
81
- },
82
- /** 定义需要用到的外部样式 */
83
- customStyle: {
84
- type: Object as PropType<CSSProperties>,
85
- default: () => {}
86
- },
87
- /** 自定义外部类名 */
88
- customClass: String
89
- }
90
-
91
- export default submitBarProps
1
+ import type { SubmitBarIconMenus } from './typing'
2
+ import type { CSSProperties, PropType } from 'vue'
3
+
4
+ const submitBarProps = {
5
+ /** 左边菜单栏 */
6
+ menus: {
7
+ type: Array as unknown as PropType<SubmitBarIconMenus[]>,
8
+ default: []
9
+ },
10
+ /** 绝对定位 */
11
+ fixed: {
12
+ type: Boolean,
13
+ default: true
14
+ },
15
+ /** 是否显示边框 */
16
+ border: {
17
+ type: Boolean,
18
+ default: true
19
+ },
20
+ /** 加载左边按钮loading */
21
+ leftLoading: {
22
+ type: Boolean,
23
+ default: false
24
+ },
25
+ /** 加载右边按钮loading */
26
+ rightLoading: {
27
+ type: Boolean,
28
+ default: false
29
+ },
30
+ /** 左边icon的颜色 */
31
+ iconColor: String,
32
+ /** 左边文字的颜色 */
33
+ iconLabelColor: {
34
+ type: String,
35
+ default: '#909193FF'
36
+ },
37
+ /** 右边按钮文字颜色 */
38
+ textColor: String,
39
+ /** 显示左边按钮 */
40
+ showLeftBtn: {
41
+ type: Boolean,
42
+ default: true
43
+ },
44
+ /** 显示右边按钮 */
45
+ showRightBtn: {
46
+ type: Boolean,
47
+ default: true
48
+ },
49
+ /** 左边按钮文字 */
50
+ leftBtnText: {
51
+ type: String,
52
+ default: '加入购物车'
53
+ },
54
+ /** 右边按钮文字 */
55
+ rightBtnText: {
56
+ type: String,
57
+ default: '立即购买'
58
+ },
59
+ /** 左边按钮颜色,支持渐变色 */
60
+ leftBtnColor: {
61
+ type: String,
62
+ default: '#ed3f14'
63
+ },
64
+ /** 有边按钮颜色,支持渐变色 */
65
+ rightBtnColor: {
66
+ type: String,
67
+ default: '#ff7900'
68
+ },
69
+ /**
70
+ * 按钮的形状
71
+ * @values circle,square
72
+ * */
73
+ shape: {
74
+ type: String,
75
+ default: 'circle'
76
+ },
77
+ /** 层级 */
78
+ zIndex: {
79
+ type: [Number, String],
80
+ default: 999
81
+ },
82
+ /** 定义需要用到的外部样式 */
83
+ customStyle: {
84
+ type: Object as PropType<CSSProperties>,
85
+ default: () => {}
86
+ },
87
+ /** 自定义外部类名 */
88
+ customClass: String
89
+ }
90
+
91
+ export default submitBarProps
@@ -1,24 +1,24 @@
1
- import type BadgeProps from '../hy-badge/props'
2
-
3
- export interface SubmitBarIconMenus {
4
- /**
5
- * @description icon图标
6
- * */
7
- icon: string
8
- /**
9
- * @description 文本
10
- * */
11
- text: string
12
- /**
13
- * @description 徽标值
14
- * */
15
- badge?: BadgeProps['badge']
16
- [key: string]: any
17
- }
18
-
19
- export interface ISubmitBarEmits {
20
- /** 点击按钮触发 */
21
- (e: 'click', index: number): void
22
- /** 点击左侧小菜单图标触发 */
23
- (e: 'menuClick', temp: SubmitBarIconMenus, index: number): void
24
- }
1
+ import type BadgeProps from '../hy-badge/props'
2
+
3
+ export interface SubmitBarIconMenus {
4
+ /**
5
+ * @description icon图标
6
+ * */
7
+ icon: string
8
+ /**
9
+ * @description 文本
10
+ * */
11
+ text: string
12
+ /**
13
+ * @description 徽标值
14
+ * */
15
+ badge?: BadgeProps['badge']
16
+ [key: string]: any
17
+ }
18
+
19
+ export interface ISubmitBarEmits {
20
+ /** 点击按钮触发 */
21
+ (e: 'click', index: number): void
22
+ /** 点击左侧小菜单图标触发 */
23
+ (e: 'menuClick', temp: SubmitBarIconMenus, index: number): void
24
+ }