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,93 +1,55 @@
1
1
  <template>
2
- <view :class="['hy-line', customClass]" :style="lineStyle"></view>
2
+ <view :class="['hy-line', customClass]" :style="lineStyle"></view>
3
3
  </template>
4
4
 
5
5
  <script lang="ts">
6
6
  export default {
7
- name: "hy-line",
8
- options: {
9
- addGlobalClass: true,
10
- virtualHost: true,
11
- styleIsolation: "shared",
12
- },
13
- };
7
+ name: 'hy-line',
8
+ options: {
9
+ addGlobalClass: true,
10
+ virtualHost: true,
11
+ styleIsolation: 'shared'
12
+ }
13
+ }
14
14
  </script>
15
15
 
16
16
  <script setup lang="ts">
17
- import { computed } from "vue";
18
- import type { CSSProperties, PropType } from "vue";
19
- import { addUnit } from "../../libs";
17
+ import { computed } from 'vue'
18
+ import type { CSSProperties } from 'vue'
19
+ import { addUnit } from '../../libs'
20
+ import lineProps from './props'
20
21
 
21
22
  /**
22
23
  * 一般用于显示一根线条,用于分隔内容块,有横向和竖向两种模式,且能设置0.5px线条,使用也很简单。
23
24
  * @displayName hy-line
24
25
  */
25
- defineOptions({});
26
+ defineOptions({})
26
27
 
27
- // const props = withDefaults(defineProps<IProps>(), defaultProps);
28
- const props = defineProps({
29
- /** 线条的颜色 */
30
- color: String,
31
- /** 长度,竖向时表现为高度,横向时表现为长度,可以为百分比,带px单位的值等 */
32
- length: {
33
- type: String,
34
- default: "100%",
35
- },
36
- /**
37
- * 线条的方向
38
- * @values row,column
39
- * */
40
- direction: {
41
- type: String,
42
- default: "row",
43
- },
44
- /** 是否显示细线条 */
45
- hairline: {
46
- type: Boolean,
47
- default: true,
48
- },
49
- /** 线条与上下左右 元素的间距,字符串形式,如"30px" */
50
- margin: {
51
- type: [String, Number],
52
- default: 0,
53
- },
54
- /** 是否虚线 */
55
- dashed: {
56
- type: Boolean,
57
- default: false,
58
- },
59
- /** 定义需要用到的外部样式 */
60
- customStyle: {
61
- type: Object as PropType<CSSProperties>,
62
- default: () => {},
63
- },
64
- /** 自定义外部类名 */
65
- customClass: String,
66
- });
28
+ const props = defineProps(lineProps)
67
29
 
68
30
  const lineStyle = computed<CSSProperties>(() => {
69
- const style: CSSProperties = {};
70
- style.margin = props.margin;
71
- // 如果是水平线条,边框高度为1px,再通过transform缩小一半,就是0.5px了
72
- if (props.direction === "row") {
73
- // 此处采用兼容分开写,兼容nvue的写法
74
- style.borderBottomWidth = "1px";
75
- style.borderBottomStyle = props.dashed ? "dashed" : "solid";
76
- style.width = addUnit(props.length);
77
- if (!props.hairline) style.borderBottomWidth = "1.5px";
78
- } else {
79
- // 如果是竖向线条,边框宽度为1px,再通过transform缩小一半,就是0.5px了
80
- style.borderLeftWidth = "1px";
81
- style.borderLeftStyle = props.dashed ? "dashed" : "solid";
82
- style.height = addUnit(props.length);
83
- if (props.hairline) style.transform = "scaleX(0.5)";
84
- }
31
+ const style: CSSProperties = {}
32
+ style.margin = props.margin
33
+ // 如果是水平线条,边框高度为1px,再通过transform缩小一半,就是0.5px了
34
+ if (props.direction === 'row') {
35
+ // 此处采用兼容分开写,兼容nvue的写法
36
+ style.borderBottomWidth = '1px'
37
+ style.borderBottomStyle = props.dashed ? 'dashed' : 'solid'
38
+ style.width = addUnit(props.length)
39
+ if (!props.hairline) style.borderBottomWidth = '1.5px'
40
+ } else {
41
+ // 如果是竖向线条,边框宽度为1px,再通过transform缩小一半,就是0.5px了
42
+ style.borderLeftWidth = '1px'
43
+ style.borderLeftStyle = props.dashed ? 'dashed' : 'solid'
44
+ style.height = addUnit(props.length)
45
+ if (props.hairline) style.transform = 'scaleX(0.5)'
46
+ }
85
47
 
86
- style.borderColor = props.color;
87
- return Object.assign(style, props.customStyle);
88
- });
48
+ style.borderColor = props.color
49
+ return Object.assign(style, props.customStyle)
50
+ })
89
51
  </script>
90
52
 
91
53
  <style lang="scss" scoped>
92
- @import "./index.scss";
54
+ @import './index.scss';
93
55
  </style>
@@ -1,12 +1,43 @@
1
- import type IProps from "./typing";
1
+ import type { CSSProperties, PropType } from 'vue'
2
2
 
3
- const defaultProps: IProps = {
4
- color: "",
5
- length: "100%",
6
- direction: "row",
7
- hairline: true,
8
- margin: "0",
9
- dashed: false,
10
- };
3
+ const lineProps = {
4
+ /** 线条的颜色 */
5
+ color: String,
6
+ /** 长度,竖向时表现为高度,横向时表现为长度,可以为百分比,带px单位的值等 */
7
+ length: {
8
+ type: String,
9
+ default: '100%'
10
+ },
11
+ /**
12
+ * 线条的方向
13
+ * @values row,column
14
+ * */
15
+ direction: {
16
+ type: String,
17
+ default: 'row'
18
+ },
19
+ /** 是否显示细线条 */
20
+ hairline: {
21
+ type: Boolean,
22
+ default: true
23
+ },
24
+ /** 线条与上下左右 元素的间距,字符串形式,如"30px" */
25
+ margin: {
26
+ type: [String, Number],
27
+ default: 0
28
+ },
29
+ /** 是否虚线 */
30
+ dashed: {
31
+ type: Boolean,
32
+ default: false
33
+ },
34
+ /** 定义需要用到的外部样式 */
35
+ customStyle: {
36
+ type: Object as PropType<CSSProperties>,
37
+ default: () => {}
38
+ },
39
+ /** 自定义外部类名 */
40
+ customClass: String
41
+ }
11
42
 
12
- export default defaultProps;
43
+ export default lineProps
@@ -1,32 +1,32 @@
1
- import type { CSSProperties } from "vue";
1
+ import type { CSSProperties } from 'vue'
2
2
 
3
3
  export default interface HyLineProps {
4
- /**
5
- * @description 线条的颜色 ( 默认 '#d6d7d9' )
6
- * */
7
- color?: string;
8
- /**
9
- * @description 长度,竖向时表现为高度,横向时表现为长度,可以为百分比,带px单位的值等 ( 默认 '100%' )
10
- * */
11
- length?: string | number;
12
- /**
13
- * @description 线条的方向,row-横向,column-竖向 (默认 'row' )
14
- * */
15
- direction?: HyApp.DirectionType;
16
- /**
17
- * @description 是否显示细线条 (默认 true )
18
- * */
19
- hairline?: boolean;
20
- /**
21
- * @description 线条与上下左右 元素的间距,字符串形式,如"30px" (默认 0 )
22
- * */
23
- margin?: string;
24
- /**
25
- * @description 是否虚线,true-虚线,false-实线 (默认 false )
26
- * */
27
- dashed?: boolean;
28
- /**
29
- * @description 定义需要用到的外部样式
30
- * */
31
- customStyle?: CSSProperties;
4
+ /**
5
+ * @description 线条的颜色 ( 默认 '#d6d7d9' )
6
+ * */
7
+ color?: string
8
+ /**
9
+ * @description 长度,竖向时表现为高度,横向时表现为长度,可以为百分比,带px单位的值等 ( 默认 '100%' )
10
+ * */
11
+ length?: string | number
12
+ /**
13
+ * @description 线条的方向,row-横向,column-竖向 (默认 'row' )
14
+ * */
15
+ direction?: HyApp.DirectionType
16
+ /**
17
+ * @description 是否显示细线条 (默认 true )
18
+ * */
19
+ hairline?: boolean
20
+ /**
21
+ * @description 线条与上下左右 元素的间距,字符串形式,如"30px" (默认 0 )
22
+ * */
23
+ margin?: string
24
+ /**
25
+ * @description 是否虚线,true-虚线,false-实线 (默认 false )
26
+ * */
27
+ dashed?: boolean
28
+ /**
29
+ * @description 定义需要用到的外部样式
30
+ * */
31
+ customStyle?: CSSProperties
32
32
  }
@@ -1,137 +1,102 @@
1
1
  <template>
2
- <view :class="['hy-line-progress', customClass]" :style="customStyle">
3
- <view
4
- class="hy-line-progress__background"
5
- ref="hy-line-progress__background"
6
- :style="{
7
- backgroundColor: inactiveColor,
8
- height: addUnit(height),
9
- }"
10
- ></view>
11
- <view class="hy-line-progress__line" :style="[progressStyle]">
12
- <slot>
13
- <text
14
- v-if="showText && percentage >= 10"
15
- class="hy-line-progress__text"
16
- :style="{
17
- fontSize: fontSize ? addUnit(fontSize) : addUnit(getPx(height)),
18
- }"
19
- >
20
- {{ innserPercentage + "%" }}
21
- </text>
22
- </slot>
2
+ <view :class="['hy-line-progress', customClass]" :style="customStyle">
3
+ <view
4
+ class="hy-line-progress__background"
5
+ ref="hy-line-progress__background"
6
+ :style="{
7
+ backgroundColor: inactiveColor,
8
+ height: addUnit(height)
9
+ }"
10
+ ></view>
11
+ <view class="hy-line-progress__line" :style="[progressStyle]">
12
+ <slot>
13
+ <text
14
+ v-if="showText && percentage >= 10"
15
+ class="hy-line-progress__text"
16
+ :style="{
17
+ fontSize: fontSize ? addUnit(fontSize) : addUnit(getPx(height))
18
+ }"
19
+ >
20
+ {{ innserPercentage + '%' }}
21
+ </text>
22
+ </slot>
23
+ </view>
23
24
  </view>
24
- </view>
25
25
  </template>
26
26
 
27
27
  <script lang="ts">
28
28
  export default {
29
- name: "hy-line-progress",
30
- options: {
31
- addGlobalClass: true,
32
- virtualHost: true,
33
- styleIsolation: "shared",
34
- },
35
- };
29
+ name: 'hy-line-progress',
30
+ options: {
31
+ addGlobalClass: true,
32
+ virtualHost: true,
33
+ styleIsolation: 'shared'
34
+ }
35
+ }
36
36
  </script>
37
37
 
38
38
  <script setup lang="ts">
39
- import { computed, getCurrentInstance, onMounted, ref, watch } from "vue";
40
- import type { CSSProperties, PropType } from "vue";
41
- import {
42
- addUnit,
43
- getRect,
44
- range,
45
- type RectResultType,
46
- sleep,
47
- getPx,
48
- } from "../../libs";
39
+ import { computed, getCurrentInstance, onMounted, ref, watch } from 'vue'
40
+ import type { CSSProperties } from 'vue'
41
+ import { addUnit, getRect, range, type RectResultType, sleep, getPx } from '../../libs'
42
+ import lineProgressProps from './props'
49
43
 
50
44
  /**
51
45
  * 展示操作或任务的当前进度,比如上传文件,是一个线形的进度条。
52
46
  * @displayName hy-line-progress
53
47
  */
54
- defineOptions({});
48
+ defineOptions({})
55
49
 
56
- // const props = withDefaults(defineProps<IProps>(), defaultProps);
57
- const props = defineProps({
58
- /** 激活部分的颜色 */
59
- activeColor: String,
60
- /** 背景色 */
61
- inactiveColor: String,
62
- /** 进度百分比,数值 */
63
- percentage: {
64
- type: Number,
65
- default: 0,
66
- },
67
- /** 是否在进度条内部显示百分比的值 */
68
- showText: {
69
- type: Boolean,
70
- default: true,
71
- },
72
- /** 进度条的高度,单位px */
73
- height: {
74
- type: [String, Number],
75
- default: 8,
76
- },
77
- /** 字体大小,单位px */
78
- fontSize: [String, Number],
79
- /** 定义需要用到的外部样式 */
80
- customStyle: {
81
- type: Object as PropType<CSSProperties>,
82
- },
83
- /** 自定义外部类名 */
84
- customClass: String,
85
- });
50
+ const props = defineProps(lineProgressProps)
86
51
 
87
- const instance = getCurrentInstance();
88
- const lineWidth = ref<string | number>(0);
52
+ const instance = getCurrentInstance()
53
+ const lineWidth = ref<string | number>(0)
89
54
 
90
55
  watch(
91
- () => props.percentage,
92
- () => resizeProgressWidth(),
93
- );
56
+ () => props.percentage,
57
+ () => resizeProgressWidth()
58
+ )
94
59
 
95
60
  const progressStyle = computed<CSSProperties>(() => {
96
- const style: CSSProperties = {};
97
- style.width = lineWidth.value;
98
- style.backgroundColor = props.activeColor;
99
- style.height = addUnit(props.height);
100
- return style;
101
- });
61
+ const style: CSSProperties = {}
62
+ style.width = lineWidth.value
63
+ style.backgroundColor = props.activeColor
64
+ style.height = addUnit(props.height)
65
+ return style
66
+ })
102
67
 
103
68
  const innserPercentage = computed(() => {
104
- // 控制范围在0-100之间
105
- return range(0, 100, props.percentage);
106
- });
69
+ // 控制范围在0-100之间
70
+ return range(0, 100, props.percentage)
71
+ })
107
72
 
108
73
  onMounted(() => {
109
- init();
110
- });
74
+ init()
75
+ })
111
76
 
112
77
  const init = async () => {
113
- await sleep(20);
114
- await resizeProgressWidth();
115
- };
78
+ await sleep(20)
79
+ await resizeProgressWidth()
80
+ }
116
81
  const getProgressWidth = (): Promise<RectResultType<false>> => {
117
- return new Promise((resolve) => {
118
- // #ifndef APP-NVUE
119
- resolve(getRect(".hy-line-progress__background", false, instance));
120
- // #endif
121
- });
122
- };
82
+ return new Promise((resolve) => {
83
+ // #ifndef APP-NVUE
84
+ resolve(getRect('.hy-line-progress__background', false, instance))
85
+ // #endif
86
+ })
87
+ }
123
88
 
124
89
  /**
125
90
  * @description 计算轨道长度
126
91
  * */
127
92
  const resizeProgressWidth = async () => {
128
- const { width } = await getProgressWidth();
129
- // 通过设置的percentage值,计算其所占总长度的百分比
130
- if (!width) return;
131
- lineWidth.value = addUnit((width * innserPercentage.value) / 100);
132
- };
93
+ const { width } = await getProgressWidth()
94
+ // 通过设置的percentage值,计算其所占总长度的百分比
95
+ if (!width) return
96
+ lineWidth.value = addUnit((width * innserPercentage.value) / 100)
97
+ }
133
98
  </script>
134
99
 
135
100
  <style lang="scss" scoped>
136
- @import "./index.scss";
101
+ @import './index.scss';
137
102
  </style>
@@ -1,12 +1,33 @@
1
- import type IProps from "./typing";
1
+ import type { CSSProperties, PropType } from 'vue'
2
2
 
3
- const defaultProps: IProps = {
4
- activeColor: "",
5
- inactiveColor: "",
6
- percentage: 0,
7
- showText: true,
8
- height: 8,
9
- fontSize: "",
10
- };
3
+ const lineProgressProps = {
4
+ /** 激活部分的颜色 */
5
+ activeColor: String,
6
+ /** 背景色 */
7
+ inactiveColor: String,
8
+ /** 进度百分比,数值 */
9
+ percentage: {
10
+ type: Number,
11
+ default: 0
12
+ },
13
+ /** 是否在进度条内部显示百分比的值 */
14
+ showText: {
15
+ type: Boolean,
16
+ default: true
17
+ },
18
+ /** 进度条的高度,单位px */
19
+ height: {
20
+ type: [String, Number],
21
+ default: 8
22
+ },
23
+ /** 字体大小,单位px */
24
+ fontSize: [String, Number],
25
+ /** 定义需要用到的外部样式 */
26
+ customStyle: {
27
+ type: Object as PropType<CSSProperties>
28
+ },
29
+ /** 自定义外部类名 */
30
+ customClass: String
31
+ }
11
32
 
12
- export default defaultProps;
33
+ export default lineProgressProps
@@ -1,32 +1,32 @@
1
- import type { CSSProperties } from "vue";
1
+ import type { CSSProperties } from 'vue'
2
2
 
3
3
  export default interface HyLineProgressProps {
4
- /**
5
- * @description 激活部分的颜色 ( 默认 '#19be6b' )
6
- * */
7
- activeColor?: string;
8
- /**
9
- * @description 背景色 ( 默认 '#ececec' )
10
- * */
11
- inactiveColor?: string;
12
- /**
13
- * @description 进度百分比,数值 ( 默认 0 )
14
- * */
15
- percentage: number;
16
- /**
17
- * @description 是否在进度条内部显示百分比的值 ( 默认 true )
18
- * */
19
- showText?: boolean;
20
- /**
21
- * @description 进度条的高度,单位px ( 默认 12 )
22
- * */
23
- height?: string | number;
24
- /**
25
- * @description 字体大小,单位px ( 默认 10 )
26
- * */
27
- fontSize?: string | number;
28
- /**
29
- * @description 自定义样式
30
- * */
31
- customStyle?: CSSProperties;
4
+ /**
5
+ * @description 激活部分的颜色 ( 默认 '#19be6b' )
6
+ * */
7
+ activeColor?: string
8
+ /**
9
+ * @description 背景色 ( 默认 '#ececec' )
10
+ * */
11
+ inactiveColor?: string
12
+ /**
13
+ * @description 进度百分比,数值 ( 默认 0 )
14
+ * */
15
+ percentage: number
16
+ /**
17
+ * @description 是否在进度条内部显示百分比的值 ( 默认 true )
18
+ * */
19
+ showText?: boolean
20
+ /**
21
+ * @description 进度条的高度,单位px ( 默认 12 )
22
+ * */
23
+ height?: string | number
24
+ /**
25
+ * @description 字体大小,单位px ( 默认 10 )
26
+ * */
27
+ fontSize?: string | number
28
+ /**
29
+ * @description 自定义样式
30
+ * */
31
+ customStyle?: CSSProperties
32
32
  }