hy-app 0.4.13 → 0.5.0

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 (211) hide show
  1. package/components/hy-action-sheet/hy-action-sheet.vue +155 -238
  2. package/components/hy-action-sheet/props.ts +68 -15
  3. package/components/hy-action-sheet/typing.d.ts +115 -115
  4. package/components/hy-address-picker/hy-address-picker.vue +185 -289
  5. package/components/hy-address-picker/props.ts +97 -21
  6. package/components/hy-address-picker/typing.d.ts +90 -89
  7. package/components/hy-avatar/hy-avatar.vue +121 -204
  8. package/components/hy-avatar/props.ts +76 -18
  9. package/components/hy-avatar/typing.d.ts +63 -62
  10. package/components/hy-back-top/hy-back-top.vue +65 -120
  11. package/components/hy-back-top/props.ts +57 -16
  12. package/components/hy-back-top/typing.d.ts +43 -42
  13. package/components/hy-badge/hy-badge.vue +66 -138
  14. package/components/hy-badge/props.ts +73 -17
  15. package/components/hy-badge/typing.d.ts +59 -58
  16. package/components/hy-button/hy-button.vue +226 -375
  17. package/components/hy-button/props.ts +129 -158
  18. package/components/hy-calendar/header.vue +48 -64
  19. package/components/hy-calendar/hy-calendar.vue +274 -438
  20. package/components/hy-calendar/month.vue +508 -516
  21. package/components/hy-calendar/props.ts +157 -35
  22. package/components/hy-calendar/typing.d.ts +129 -128
  23. package/components/hy-card/hy-card.vue +118 -240
  24. package/components/hy-card/index.scss +1 -2
  25. package/components/hy-card/props.ts +122 -27
  26. package/components/hy-card/typing.d.ts +119 -118
  27. package/components/hy-cell/hy-cell.vue +176 -258
  28. package/components/hy-cell/props.ts +71 -17
  29. package/components/hy-cell/typing.d.ts +87 -86
  30. package/components/hy-check-button/hy-check-button.vue +69 -139
  31. package/components/hy-check-button/props.ts +72 -18
  32. package/components/hy-check-button/typing.d.ts +74 -73
  33. package/components/hy-checkbox/hy-checkbox.vue +170 -263
  34. package/components/hy-checkbox/props.ts +94 -24
  35. package/components/hy-checkbox/typing.d.ts +72 -72
  36. package/components/hy-checkbox-group/hy-checkbox-group.vue +25 -100
  37. package/components/hy-checkbox-group/props.ts +80 -0
  38. package/components/hy-checkbox-group/typing.d.ts +65 -65
  39. package/components/hy-checkbox-item/hy-checkbox-item.vue +140 -177
  40. package/components/hy-checkbox-item/props.ts +24 -0
  41. package/components/hy-checkbox-item/typing.d.ts +4 -3
  42. package/components/hy-code-input/hy-code-input.vue +179 -262
  43. package/components/hy-code-input/props.ts +84 -18
  44. package/components/hy-code-input/typing.d.ts +71 -71
  45. package/components/hy-config-provider/hy-config-provider.vue +28 -50
  46. package/components/hy-config-provider/props.ts +26 -11
  47. package/components/hy-config-provider/typing.d.ts +20 -20
  48. package/components/hy-count-down/hy-count-down.vue +103 -131
  49. package/components/hy-count-down/props.ts +30 -8
  50. package/components/hy-count-down/typing.d.ts +25 -25
  51. package/components/hy-count-to/hy-count-to.vue +148 -213
  52. package/components/hy-count-to/props.ts +60 -15
  53. package/components/hy-count-to/typing.d.ts +46 -46
  54. package/components/hy-coupon/README.md +133 -0
  55. package/components/hy-coupon/hy-coupon.vue +180 -0
  56. package/components/hy-coupon/index.scss +553 -0
  57. package/components/hy-coupon/props.ts +129 -0
  58. package/components/hy-coupon/typing.d.ts +146 -0
  59. package/components/hy-datetime-picker/hy-datetime-picker.vue +415 -580
  60. package/components/hy-datetime-picker/props.ts +142 -32
  61. package/components/hy-datetime-picker/typing.d.ts +132 -132
  62. package/components/hy-divider/hy-divider.vue +90 -169
  63. package/components/hy-divider/props.ts +78 -19
  64. package/components/hy-divider/typing.d.ts +60 -60
  65. package/components/hy-dropdown/hy-dropdown.vue +37 -71
  66. package/components/hy-dropdown/props.ts +38 -15
  67. package/components/hy-dropdown/typing.d.ts +44 -44
  68. package/components/hy-dropdown-item/hy-dropdown-item.vue +141 -173
  69. package/components/hy-dropdown-item/props.ts +19 -8
  70. package/components/hy-empty/hy-empty.vue +75 -129
  71. package/components/hy-empty/props.ts +57 -15
  72. package/components/hy-empty/typing.d.ts +84 -84
  73. package/components/hy-flex/hy-flex.vue +33 -88
  74. package/components/hy-flex/props.ts +58 -0
  75. package/components/hy-flex/typing.d.ts +14 -16
  76. package/components/hy-float-button/hy-float-button.vue +289 -406
  77. package/components/hy-float-button/props.ts +109 -25
  78. package/components/hy-folding-panel/hy-folding-panel.vue +86 -374
  79. package/components/hy-folding-panel/props.ts +40 -15
  80. package/components/hy-folding-panel/typing.d.ts +52 -63
  81. package/components/hy-folding-panel-item/hy-folding-panel-item.vue +186 -228
  82. package/components/hy-folding-panel-item/index.scss +87 -0
  83. package/components/hy-folding-panel-item/props.ts +81 -0
  84. package/components/hy-folding-panel-item/typing.d.ts +23 -0
  85. package/components/hy-form/hy-form.vue +172 -212
  86. package/components/hy-form/props.ts +37 -0
  87. package/components/hy-form/typing.d.ts +68 -61
  88. package/components/hy-form-group/typing.d.ts +74 -74
  89. package/components/hy-form-item/hy-form-item.vue +100 -129
  90. package/components/hy-form-item/props.ts +25 -0
  91. package/components/hy-form-item/typing.d.ts +40 -37
  92. package/components/hy-grid/hy-grid.vue +76 -132
  93. package/components/hy-grid/props.ts +58 -16
  94. package/components/hy-grid/typing.d.ts +66 -66
  95. package/components/hy-icon/hy-icon.vue +84 -161
  96. package/components/hy-icon/props.ts +76 -22
  97. package/components/hy-icon/typing.d.ts +83 -82
  98. package/components/hy-image/hy-image.vue +142 -272
  99. package/components/hy-image/props.ts +105 -23
  100. package/components/hy-image/typing.d.ts +84 -87
  101. package/components/hy-input/hy-input.vue +230 -421
  102. package/components/hy-input/props.ts +183 -35
  103. package/components/hy-input/typing.d.ts +169 -169
  104. package/components/hy-line/hy-line.vue +34 -72
  105. package/components/hy-line/props.ts +41 -10
  106. package/components/hy-line/typing.d.ts +29 -29
  107. package/components/hy-line-progress/hy-line-progress.vue +66 -101
  108. package/components/hy-line-progress/props.ts +31 -10
  109. package/components/hy-line-progress/typing.d.ts +29 -29
  110. package/components/hy-list/hy-list.vue +151 -220
  111. package/components/hy-list/props.ts +67 -16
  112. package/components/hy-list/typing.d.ts +52 -52
  113. package/components/hy-loading/hy-loading.vue +63 -119
  114. package/components/hy-loading/props.ts +63 -15
  115. package/components/hy-loading/typing.d.ts +49 -49
  116. package/components/hy-menu/hy-menu.vue +124 -166
  117. package/components/hy-menu/props.ts +42 -10
  118. package/components/hy-menu/typing.d.ts +60 -60
  119. package/components/hy-modal/hy-modal.vue +127 -218
  120. package/components/hy-modal/props.ts +89 -24
  121. package/components/hy-navbar/hy-navbar.vue +104 -177
  122. package/components/hy-navbar/props.ts +76 -22
  123. package/components/hy-navbar/typing.d.ts +81 -81
  124. package/components/hy-notice-bar/hy-notice-bar.vue +67 -144
  125. package/components/hy-notice-bar/props.ts +80 -19
  126. package/components/hy-notice-bar/typing.d.ts +62 -62
  127. package/components/hy-notify/hy-notify.vue +128 -177
  128. package/components/hy-notify/props.ts +49 -12
  129. package/components/hy-notify/typing.d.ts +45 -41
  130. package/components/hy-number-step/hy-number-step.vue +281 -394
  131. package/components/hy-number-step/props.ts +110 -27
  132. package/components/hy-number-step/typing.d.ts +120 -120
  133. package/components/hy-overlay/hy-overlay.vue +39 -66
  134. package/components/hy-overlay/props.ts +31 -8
  135. package/components/hy-pagination/hy-pagination.vue +100 -155
  136. package/components/hy-pagination/props.ts +53 -13
  137. package/components/hy-picker/hy-picker.vue +309 -430
  138. package/components/hy-picker/index.scss +8 -12
  139. package/components/hy-picker/props.ts +110 -26
  140. package/components/hy-popover/hy-popover.vue +190 -252
  141. package/components/hy-popover/props.ts +48 -10
  142. package/components/hy-popup/hy-popup.vue +162 -248
  143. package/components/hy-popup/props.ts +82 -18
  144. package/components/hy-price/hy-price.vue +45 -104
  145. package/components/hy-price/props.ts +52 -12
  146. package/components/hy-price/typing.d.ts +41 -36
  147. package/components/hy-qrcode/hy-qrcode.vue +115 -185
  148. package/components/hy-qrcode/props.ts +68 -18
  149. package/components/hy-qrcode/typing.d.ts +67 -66
  150. package/components/hy-radio/hy-radio.vue +161 -259
  151. package/components/hy-radio/props.ts +95 -25
  152. package/components/hy-radio/typing.d.ts +85 -84
  153. package/components/hy-rate/hy-rate.vue +185 -270
  154. package/components/hy-rate/props.ts +76 -18
  155. package/components/hy-rate/typing.d.ts +61 -60
  156. package/components/hy-read-more/hy-read-more.vue +93 -136
  157. package/components/hy-read-more/props.ts +43 -13
  158. package/components/hy-scroll-list/hy-scroll-list.vue +81 -102
  159. package/components/hy-scroll-list/props.ts +22 -11
  160. package/components/hy-search/hy-search.vue +155 -284
  161. package/components/hy-search/props.ts +130 -25
  162. package/components/hy-signature/hy-signature.vue +491 -635
  163. package/components/hy-signature/props.ts +115 -26
  164. package/components/hy-signature/typing.d.ts +138 -138
  165. package/components/hy-slider/hy-slider.vue +388 -477
  166. package/components/hy-slider/props.ts +75 -19
  167. package/components/hy-steps/hy-steps.vue +212 -279
  168. package/components/hy-steps/props.ts +47 -13
  169. package/components/hy-submit-bar/hy-submit-bar.vue +137 -222
  170. package/components/hy-submit-bar/props.ts +89 -20
  171. package/components/hy-submit-bar/typing.d.ts +86 -85
  172. package/components/hy-subsection/hy-subsection.vue +132 -185
  173. package/components/hy-subsection/props.ts +50 -17
  174. package/components/hy-subsection/typing.d.ts +52 -52
  175. package/components/hy-swipe-action/hy-swipe-action.vue +228 -283
  176. package/components/hy-swipe-action/props.ts +43 -18
  177. package/components/hy-swipe-action/typing.d.ts +46 -46
  178. package/components/hy-swiper/hy-swiper.vue +159 -286
  179. package/components/hy-swiper/props.ts +126 -28
  180. package/components/hy-swiper/typing.d.ts +115 -115
  181. package/components/hy-switch/hy-switch.vue +112 -176
  182. package/components/hy-switch/props.ts +60 -15
  183. package/components/hy-switch/typing.d.ts +63 -63
  184. package/components/hy-tabBar/hy-tabBar.vue +64 -60
  185. package/components/hy-tabs/hy-tabs.vue +277 -380
  186. package/components/hy-tabs/props.ts +75 -18
  187. package/components/hy-tag/hy-tag.vue +111 -204
  188. package/components/hy-tag/props.ts +81 -19
  189. package/components/hy-text/hy-text.vue +200 -322
  190. package/components/hy-text/props.ts +107 -28
  191. package/components/hy-textarea/hy-textarea.vue +147 -256
  192. package/components/hy-textarea/props.ts +112 -25
  193. package/components/hy-textarea/typing.d.ts +42 -42
  194. package/components/hy-toast/hy-toast.vue +135 -143
  195. package/components/hy-tooltip/hy-tooltip.vue +220 -306
  196. package/components/hy-tooltip/props.ts +79 -15
  197. package/components/hy-transition/hy-transition.vue +111 -138
  198. package/components/hy-transition/props.ts +30 -8
  199. package/components/hy-upload/hy-upload.vue +320 -469
  200. package/components/hy-upload/props.ts +130 -27
  201. package/components/hy-warn/hy-warn.vue +80 -129
  202. package/components/hy-warn/props.ts +47 -12
  203. package/components/hy-waterfall/hy-waterfall.vue +139 -163
  204. package/components/hy-waterfall/props.ts +19 -7
  205. package/components/hy-watermark/hy-watermark.vue +762 -870
  206. package/components/hy-watermark/props.ts +103 -22
  207. package/global.d.ts +2 -0
  208. package/libs/css/theme.scss +3 -3
  209. package/package.json +2 -2
  210. package/web-types.json +1 -1
  211. package/components/hy-folding-panel/index.scss +0 -9
@@ -1,15 +1,49 @@
1
- import type IProps from "./typing";
1
+ import type { StepListVo } from './typing'
2
+ import type { PropType } from 'vue'
2
3
 
3
- const defaultProps: IProps = {
4
- list: [],
5
- direction: "row",
6
- current: 0,
7
- activeColor: "",
8
- inactiveColor: "",
9
- activeIcon: "",
10
- inactiveIcon: "",
11
- dot: false,
12
- iconSize: 17,
13
- };
4
+ const stepsProps = {
5
+ /** 设置当前处于第几步 */
6
+ current: {
7
+ type: Number,
8
+ default: 0
9
+ },
10
+ /** 步骤条的数据集 */
11
+ list: {
12
+ type: Array as PropType<StepListVo[]>,
13
+ default: []
14
+ },
15
+ /**
16
+ * 方向
17
+ * @values row,column
18
+ * */
19
+ direction: {
20
+ type: String,
21
+ default: 'row'
22
+ },
23
+ /** 激活状态颜色 */
24
+ activeColor: {
25
+ type: String,
26
+ default: ''
27
+ },
28
+ /** 未激活状态颜色 */
29
+ inactiveColor: {
30
+ type: String,
31
+ default: ''
32
+ },
33
+ /** 激活状态的图标 */
34
+ activeIcon: String,
35
+ /** 未激活状态图标 */
36
+ inactiveIcon: String,
37
+ /** 是否显示点类型 */
38
+ dot: {
39
+ type: Boolean,
40
+ default: false
41
+ },
42
+ /** 图标大小 */
43
+ iconSize: {
44
+ type: [String, Number],
45
+ default: 17
46
+ }
47
+ }
14
48
 
15
- export default defaultProps;
49
+ export default stepsProps
@@ -1,274 +1,189 @@
1
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(i)"
14
- >
15
- <HyIcon
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
- ></HyIcon>
24
- <HyBadge
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
- ></HyBadge>
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
- <HyLoading
47
- :show="leftLoading"
48
- size="13"
49
- mode="circle"
50
- :custom-style="{ marginRight: '10rpx' }"
51
- ></HyLoading>
52
- {{ leftBtnText }}
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>
53
36
  </view>
54
- <view
55
- class="hy-submit-bar__right--button"
56
- v-if="showRightBtn"
57
- :style="rightBtnStyle"
58
- @tap.stop="confirmClickFn(1)"
59
- >
60
- <HyLoading
61
- :show="rightLoading"
62
- size="13"
63
- mode="circle"
64
- :custom-style="{ marginRight: '10rpx' }"
65
- ></HyLoading>
66
- {{ rightBtnText }}
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>
67
69
  </view>
68
- </template>
69
70
  </view>
70
- </view>
71
71
  </template>
72
72
 
73
73
  <script lang="ts">
74
74
  export default {
75
- name: "hy-submit-bar",
76
- options: {
77
- addGlobalClass: true,
78
- virtualHost: true,
79
- styleIsolation: "shared",
80
- },
81
- };
75
+ name: 'hy-submit-bar',
76
+ options: {
77
+ addGlobalClass: true,
78
+ virtualHost: true,
79
+ styleIsolation: 'shared'
80
+ }
81
+ }
82
82
  </script>
83
83
 
84
84
  <script setup lang="ts">
85
- import { computed } from "vue";
86
- import type { CSSProperties, PropType } from "vue";
87
- import type { IconMenus, ISubmitBarEmits } from "./typing";
85
+ import { computed } from 'vue'
86
+ import type { CSSProperties } from 'vue'
87
+ import type { SubmitBarIconMenus, ISubmitBarEmits } from './typing'
88
+ import submitBarProps from './props'
88
89
  // 组件
89
- import HyIcon from "../hy-icon/hy-icon.vue";
90
- import HyLoading from "../hy-loading/hy-loading.vue";
91
- import HyBadge from "../hy-badge/hy-badge.vue";
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'
92
93
 
93
94
  /**
94
95
  * 该布局一般用于商品详情页底部引导用户快速购买商品的场景,开发者可以根据自己的需求修改布局结构和样式。
95
96
  * @displayName hy-submit-bar
96
97
  */
97
- defineOptions({});
98
+ defineOptions({})
98
99
 
99
- // const props = withDefaults(defineProps<IProps>(), defaultProps)
100
- const props = defineProps({
101
- /** 左边菜单栏 */
102
- menus: {
103
- type: Array as unknown as PropType<IconMenus[]>,
104
- default: [],
105
- },
106
- /** 绝对定位 */
107
- fixed: {
108
- type: Boolean,
109
- default: true,
110
- },
111
- /** 是否显示边框 */
112
- border: {
113
- type: Boolean,
114
- default: true,
115
- },
116
- /** 加载左边按钮loading */
117
- leftLoading: {
118
- type: Boolean,
119
- default: false,
120
- },
121
- /** 加载右边按钮loading */
122
- rightLoading: {
123
- type: Boolean,
124
- default: false,
125
- },
126
- /** 左边icon的颜色 */
127
- iconColor: String,
128
- /** 左边文字的颜色 */
129
- iconLabelColor: {
130
- type: String,
131
- default: "#909193FF",
132
- },
133
- /** 右边按钮文字颜色 */
134
- textColor: String,
135
- /** 显示左边按钮 */
136
- showLeftBtn: {
137
- type: Boolean,
138
- default: true,
139
- },
140
- /** 显示右边按钮 */
141
- showRightBtn: {
142
- type: Boolean,
143
- default: true,
144
- },
145
- /** 左边按钮文字 */
146
- leftBtnText: {
147
- type: String,
148
- default: "加入购物车",
149
- },
150
- /** 右边按钮文字 */
151
- rightBtnText: {
152
- type: String,
153
- default: "立即购买",
154
- },
155
- /** 左边按钮颜色,支持渐变色 */
156
- leftBtnColor: {
157
- type: String,
158
- default: "#ed3f14",
159
- },
160
- /** 有边按钮颜色,支持渐变色 */
161
- rightBtnColor: {
162
- type: String,
163
- default: "#ff7900",
164
- },
165
- /**
166
- * 按钮的形状
167
- * @values circle,square
168
- * */
169
- shape: {
170
- type: String,
171
- default: "circle",
172
- },
173
- /** 层级 */
174
- zIndex: {
175
- type: [Number, String],
176
- default: 999,
177
- },
178
- /** 定义需要用到的外部样式 */
179
- customStyle: {
180
- type: Object as PropType<CSSProperties>,
181
- default: () => {},
182
- },
183
- /** 自定义外部类名 */
184
- customClass: String,
185
- });
186
- const emit = defineEmits<ISubmitBarEmits>();
100
+ const props = defineProps(submitBarProps)
101
+ const emit = defineEmits<ISubmitBarEmits>()
187
102
 
188
103
  /**
189
104
  * @description 整体样式
190
105
  * */
191
106
  const submitBarStyle = computed(() => {
192
- const style: CSSProperties = {
193
- bottom: 0,
194
- left: 0,
195
- zIndex: props.zIndex,
196
- };
197
- if (props.fixed) style.position = "fixed";
198
- return Object.assign(style, props.customStyle);
199
- });
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
+ })
200
115
 
201
116
  /**
202
117
  * @description 左边按钮样式
203
118
  * */
204
119
  const leftBtnStyle = computed(() => {
205
- const style: CSSProperties = {
206
- background: props.leftBtnColor,
207
- color: props.textColor,
208
- };
209
- if (!props.showRightBtn) {
210
- style.flex = 1;
211
- if (props.shape === "circle") {
212
- style.borderRadius = "100px";
213
- } else {
214
- style.borderRadius = "2px";
120
+ const style: CSSProperties = {
121
+ background: props.leftBtnColor,
122
+ color: props.textColor
215
123
  }
216
- } else {
217
- if (props.shape === "circle") {
218
- style.borderRadius = "100px 0 0 100px";
124
+ if (!props.showRightBtn) {
125
+ style.flex = 1
126
+ if (props.shape === 'circle') {
127
+ style.borderRadius = '100px'
128
+ } else {
129
+ style.borderRadius = '2px'
130
+ }
219
131
  } else {
220
- style.borderRadius = "2px 0 0 2px";
132
+ if (props.shape === 'circle') {
133
+ style.borderRadius = '100px 0 0 100px'
134
+ } else {
135
+ style.borderRadius = '2px 0 0 2px'
136
+ }
221
137
  }
222
- }
223
- return style;
224
- });
138
+ return style
139
+ })
225
140
 
226
141
  /**
227
142
  * @description 右边按钮样式
228
143
  * */
229
144
  const rightBtnStyle = computed(() => {
230
- const style: CSSProperties = {
231
- background: props.rightBtnColor,
232
- color: props.textColor,
233
- };
234
- if (!props.showLeftBtn) {
235
- style.flex = 1;
236
- if (props.shape === "circle") {
237
- style.borderRadius = "100px";
238
- } else {
239
- style.borderRadius = "2px";
145
+ const style: CSSProperties = {
146
+ background: props.rightBtnColor,
147
+ color: props.textColor
240
148
  }
241
- } else {
242
- if (props.shape === "circle") {
243
- style.borderRadius = "0 100px 100px 0";
149
+ if (!props.showLeftBtn) {
150
+ style.flex = 1
151
+ if (props.shape === 'circle') {
152
+ style.borderRadius = '100px'
153
+ } else {
154
+ style.borderRadius = '2px'
155
+ }
244
156
  } else {
245
- style.borderRadius = "0 2px 2px 0";
157
+ if (props.shape === 'circle') {
158
+ style.borderRadius = '0 100px 100px 0'
159
+ } else {
160
+ style.borderRadius = '0 2px 2px 0'
161
+ }
246
162
  }
247
- }
248
- return style;
249
- });
163
+ return style
164
+ })
250
165
 
251
166
  /**
252
167
  * @description 点击左边图标
253
168
  * */
254
- const clickMenuFn = (i: number) => {
255
- emit("menuClick", i);
256
- };
169
+ const clickMenuFn = (temp: SubmitBarIconMenus, index: number) => {
170
+ emit('menuClick', temp, index)
171
+ }
257
172
 
258
173
  /**
259
174
  * @description 点击按钮
260
175
  * */
261
176
  const confirmClickFn = (i: number) => {
262
- if (
263
- (!props.leftLoading && !props.rightLoading) ||
264
- (props.leftLoading && i !== 0) ||
265
- (props.rightLoading && i !== 1)
266
- ) {
267
- emit("click", i);
268
- }
269
- };
177
+ if (
178
+ (!props.leftLoading && !props.rightLoading) ||
179
+ (props.leftLoading && i !== 0) ||
180
+ (props.rightLoading && i !== 1)
181
+ ) {
182
+ emit('click', i)
183
+ }
184
+ }
270
185
  </script>
271
186
 
272
187
  <style lang="scss" scoped>
273
- @import "./index.scss";
188
+ @import './index.scss';
274
189
  </style>
@@ -1,22 +1,91 @@
1
- import type IProps from "./typing";
1
+ import type { SubmitBarIconMenus } from './typing'
2
+ import type { CSSProperties, PropType } from 'vue'
2
3
 
3
- const defaultProps: IProps = {
4
- menus: [],
5
- fixed: true,
6
- border: true,
7
- leftLoading: false,
8
- rightLoading: false,
9
- iconColor: "",
10
- iconLabelColor: "#909193FF",
11
- textColor: "",
12
- showLeftBtn: true,
13
- showRightBtn: true,
14
- leftBtnText: "加入购物车",
15
- rightBtnText: "立即购买",
16
- leftBtnColor: "#ed3f14",
17
- rightBtnColor: "#ff7900",
18
- shape: "circle",
19
- warn: 300,
20
- };
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
+ }
21
90
 
22
- export default defaultProps;
91
+ export default submitBarProps