hy-app 0.2.13 → 0.2.15

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 (223) hide show
  1. package/components/hy-action-sheet/hy-action-sheet.vue +81 -13
  2. package/components/hy-action-sheet/typing.d.ts +1 -3
  3. package/components/hy-address-picker/hy-address-picker.vue +109 -8
  4. package/components/hy-address-picker/index.scss +2 -2
  5. package/components/hy-address-picker/typing.d.ts +39 -30
  6. package/components/hy-avatar/hy-avatar.vue +78 -4
  7. package/components/hy-avatar/typing.d.ts +21 -16
  8. package/components/hy-back-top/hy-back-top.vue +86 -28
  9. package/components/hy-back-top/typing.d.ts +17 -12
  10. package/components/hy-badge/hy-badge.vue +114 -43
  11. package/components/hy-badge/typing.d.ts +20 -15
  12. package/components/hy-button/HyButton.docgen.js +6 -0
  13. package/components/hy-button/hy-button.vue +70 -77
  14. package/components/hy-button/props.ts +40 -41
  15. package/components/hy-calendar/hy-calendar.vue +290 -143
  16. package/components/hy-calendar/typing.d.ts +38 -31
  17. package/components/hy-card/hy-card.vue +139 -36
  18. package/components/hy-card/typing.d.ts +39 -28
  19. package/components/hy-cell/hy-cell.vue +131 -67
  20. package/components/hy-cell/typing.d.ts +6 -1
  21. package/components/hy-check-button/hy-check-button.vue +101 -32
  22. package/components/hy-check-button/typing.d.ts +26 -19
  23. package/components/hy-checkbox/hy-checkbox.vue +167 -78
  24. package/components/hy-checkbox/typing.d.ts +26 -19
  25. package/components/hy-code-input/hy-code-input.vue +101 -5
  26. package/components/hy-code-input/typing.d.ts +9 -0
  27. package/components/hy-config-provider/hy-config-provider.vue +44 -24
  28. package/components/hy-config-provider/typing.d.ts +0 -4
  29. package/components/hy-count-down/hy-count-down.vue +99 -62
  30. package/components/hy-count-down/typing.d.ts +18 -5
  31. package/components/hy-count-to/hy-count-to.vue +165 -113
  32. package/components/hy-count-to/typing.d.ts +15 -11
  33. package/components/hy-datetime-picker/hy-datetime-picker.vue +338 -232
  34. package/components/hy-datetime-picker/typing.d.ts +49 -39
  35. package/components/hy-divider/hy-divider.vue +128 -64
  36. package/components/hy-divider/typing.d.ts +16 -16
  37. package/components/hy-dropdown/hy-dropdown.vue +57 -19
  38. package/components/hy-dropdown/typing.d.ts +14 -14
  39. package/components/hy-dropdown-item/hy-dropdown-item.vue +34 -5
  40. package/components/hy-dropdown-item/typing.d.ts +13 -6
  41. package/components/hy-empty/hy-empty.vue +64 -6
  42. package/components/hy-empty/typing.d.ts +5 -0
  43. package/components/hy-float-button/hy-float-button.vue +117 -5
  44. package/components/hy-float-button/typing.d.ts +7 -0
  45. package/components/hy-folding-panel/hy-folding-panel.vue +87 -25
  46. package/components/hy-folding-panel/typing.d.ts +24 -15
  47. package/components/hy-grid/hy-grid.vue +95 -35
  48. package/components/hy-grid/typing.d.ts +24 -19
  49. package/components/hy-icon/hy-icon.vue +84 -6
  50. package/components/hy-icon/typing.d.ts +5 -0
  51. package/components/hy-image/hy-image.vue +105 -6
  52. package/components/hy-image/typing.d.ts +9 -0
  53. package/components/hy-input/hy-input.vue +277 -130
  54. package/components/hy-input/props.ts +13 -14
  55. package/components/hy-input/typing.d.ts +59 -38
  56. package/components/hy-line/hy-line.vue +65 -25
  57. package/components/hy-line-progress/hy-line-progress.vue +68 -35
  58. package/components/hy-list/hy-list.vue +127 -61
  59. package/components/hy-list/typing.d.ts +19 -12
  60. package/components/hy-loading/hy-loading.vue +79 -25
  61. package/components/hy-menu/hy-menu.vue +69 -45
  62. package/components/hy-menu/typing.d.ts +22 -15
  63. package/components/hy-modal/hy-modal.vue +91 -4
  64. package/components/hy-modal/typing.d.ts +11 -0
  65. package/components/hy-navbar/hy-navbar.vue +105 -25
  66. package/components/hy-navbar/typing.d.ts +25 -20
  67. package/components/hy-notice-bar/hy-notice-bar.vue +97 -19
  68. package/components/hy-notice-bar/typing.d.ts +22 -17
  69. package/components/hy-notify/hy-notify.vue +106 -54
  70. package/components/hy-number-step/hy-number-step.vue +211 -120
  71. package/components/hy-number-step/typing.d.ts +45 -28
  72. package/components/hy-overlay/hy-overlay.vue +60 -16
  73. package/components/hy-overlay/typing.d.ts +11 -6
  74. package/components/hy-pagination/hy-pagination.vue +94 -37
  75. package/components/hy-pagination/typing.d.ts +20 -11
  76. package/components/hy-picker/hy-picker.vue +225 -160
  77. package/components/hy-picker/typing.d.ts +51 -28
  78. package/components/hy-popover/hy-popover.vue +55 -7
  79. package/components/hy-popover/typing.d.ts +21 -1
  80. package/components/hy-popup/hy-popup.vue +164 -99
  81. package/components/hy-popup/typing.d.ts +11 -0
  82. package/components/hy-price/hy-price.vue +77 -30
  83. package/components/hy-price/typing.d.ts +10 -10
  84. package/components/hy-qrcode/hy-qrcode.vue +75 -5
  85. package/components/hy-qrcode/typing.d.ts +25 -16
  86. package/components/hy-radio/hy-radio.vue +169 -88
  87. package/components/hy-radio/typing.d.ts +29 -22
  88. package/components/hy-rate/hy-rate.vue +155 -104
  89. package/components/hy-rate/typing.d.ts +23 -16
  90. package/components/hy-read-more/hy-read-more.vue +83 -56
  91. package/components/hy-read-more/typing.d.ts +18 -11
  92. package/components/hy-scroll-list/hy-scroll-list.vue +69 -58
  93. package/components/hy-scroll-list/typing.d.ts +14 -7
  94. package/components/hy-search/hy-search.vue +168 -62
  95. package/components/hy-search/typing.d.ts +47 -26
  96. package/components/hy-signature/hy-signature.vue +354 -272
  97. package/components/hy-signature/typing.d.ts +65 -52
  98. package/components/hy-slider/hy-slider.vue +208 -160
  99. package/components/hy-slider/typing.d.ts +28 -17
  100. package/components/hy-steps/hy-steps.vue +125 -99
  101. package/components/hy-steps/typing.d.ts +21 -14
  102. package/components/hy-submit-bar/hy-submit-bar.vue +129 -48
  103. package/components/hy-submit-bar/typing.d.ts +30 -23
  104. package/components/hy-subsection/hy-subsection.vue +139 -96
  105. package/components/hy-subsection/typing.d.ts +23 -16
  106. package/components/hy-swipe-action/hy-swipe-action.vue +161 -135
  107. package/components/hy-swipe-action/typing.d.ts +26 -17
  108. package/components/hy-swiper/hy-swiper.vue +178 -73
  109. package/components/hy-swiper/typing.d.ts +37 -28
  110. package/components/hy-switch/hy-switch.vue +107 -60
  111. package/components/hy-switch/typing.d.ts +25 -18
  112. package/components/hy-tabs/hy-tabs.vue +170 -160
  113. package/components/hy-tabs/typing.d.ts +36 -22
  114. package/components/hy-tag/hy-tag.vue +133 -58
  115. package/components/hy-tag/typing.d.ts +26 -18
  116. package/components/hy-text/hy-text.vue +106 -6
  117. package/components/hy-text/typing.d.ts +31 -26
  118. package/components/hy-textarea/hy-textarea.vue +183 -89
  119. package/components/hy-textarea/typing.d.ts +41 -24
  120. package/components/hy-tooltip/hy-tooltip.vue +145 -101
  121. package/components/hy-tooltip/typing.d.ts +18 -13
  122. package/components/hy-transition/hy-transition.vue +48 -13
  123. package/components/hy-transition/typing.d.ts +17 -0
  124. package/components/hy-upload/hy-upload.vue +113 -148
  125. package/components/hy-upload/typing.d.ts +71 -71
  126. package/components/hy-warn/hy-warn.vue +79 -36
  127. package/components/hy-warn/typing.d.ts +18 -11
  128. package/components/hy-waterfall/hy-waterfall.vue +90 -77
  129. package/components/hy-watermark/hy-watermark.vue +82 -5
  130. package/components/hy-watermark/typing.d.ts +20 -20
  131. package/global.d.ts +39 -59
  132. package/package.json +5 -13
  133. package/utils/inspect.ts +3 -1
  134. package/web-types.json +1 -1
  135. package/component-helper.ts +0 -177
  136. package/components.json +0 -3287
  137. package/dist/attributes.json +0 -1
  138. package/dist/docs/components/hy-action-sheet/hy-action-sheet.md +0 -41
  139. package/dist/docs/components/hy-address-picker/hy-address-picker.md +0 -25
  140. package/dist/docs/components/hy-avatar/hy-avatar.md +0 -19
  141. package/dist/docs/components/hy-back-top/hy-back-top.md +0 -19
  142. package/dist/docs/components/hy-badge/hy-badge.md +0 -13
  143. package/dist/docs/components/hy-button/hy-button.md +0 -61
  144. package/dist/docs/components/hy-calendar/header.md +0 -17
  145. package/dist/docs/components/hy-calendar/hy-calendar.md +0 -27
  146. package/dist/docs/components/hy-calendar/month.md +0 -38
  147. package/dist/docs/components/hy-card/hy-card.md +0 -24
  148. package/dist/docs/components/hy-cell/hy-cell.md +0 -26
  149. package/dist/docs/components/hy-check-button/hy-check-button.md +0 -14
  150. package/dist/docs/components/hy-checkbox/hy-checkbox.md +0 -21
  151. package/dist/docs/components/hy-code-input/hy-code-input.md +0 -15
  152. package/dist/docs/components/hy-config-provider/hy-config-provider.md +0 -13
  153. package/dist/docs/components/hy-count-down/hy-count-down.md +0 -34
  154. package/dist/docs/components/hy-count-to/hy-count-to.md +0 -31
  155. package/dist/docs/components/hy-datetime-picker/hy-datetime-picker.md +0 -25
  156. package/dist/docs/components/hy-divider/hy-divider.md +0 -13
  157. package/dist/docs/components/hy-dropdown/hy-dropdown.md +0 -13
  158. package/dist/docs/components/hy-dropdown-item/hy-dropdown-item.md +0 -20
  159. package/dist/docs/components/hy-empty/hy-empty.md +0 -20
  160. package/dist/docs/components/hy-float-button/hy-float-button.md +0 -20
  161. package/dist/docs/components/hy-folding-panel/hy-folding-panel.md +0 -24
  162. package/dist/docs/components/hy-form/hy-form.md +0 -29
  163. package/dist/docs/components/hy-grid/hy-grid.md +0 -19
  164. package/dist/docs/components/hy-icon/hy-icon.md +0 -13
  165. package/dist/docs/components/hy-image/hy-image.md +0 -22
  166. package/dist/docs/components/hy-input/hy-input.md +0 -29
  167. package/dist/docs/components/hy-line/hy-line.md +0 -7
  168. package/dist/docs/components/hy-line-progress/hy-line-progress.md +0 -13
  169. package/dist/docs/components/hy-list/hy-list.md +0 -25
  170. package/dist/docs/components/hy-loading/hy-loading.md +0 -14
  171. package/dist/docs/components/hy-login/ThePhoneLogin.md +0 -20
  172. package/dist/docs/components/hy-login/TheUserLogin.md +0 -44
  173. package/dist/docs/components/hy-login/hy-login.md +0 -14
  174. package/dist/docs/components/hy-menu/hy-menu.md +0 -21
  175. package/dist/docs/components/hy-modal/hy-modal.md +0 -23
  176. package/dist/docs/components/hy-navbar/hy-navbar.md +0 -22
  177. package/dist/docs/components/hy-notice-bar/hy-column-notice.md +0 -20
  178. package/dist/docs/components/hy-notice-bar/hy-notice-bar.md +0 -14
  179. package/dist/docs/components/hy-notice-bar/hy-row-notice.md +0 -20
  180. package/dist/docs/components/hy-notify/hy-notify.md +0 -23
  181. package/dist/docs/components/hy-number-step/hy-number-step.md +0 -27
  182. package/dist/docs/components/hy-overlay/hy-overlay.md +0 -19
  183. package/dist/docs/components/hy-pagination/hy-pagination.md +0 -14
  184. package/dist/docs/components/hy-parse/hy-parse.md +0 -46
  185. package/dist/docs/components/hy-parse/node/node.md +0 -7
  186. package/dist/docs/components/hy-picker/hy-picker.md +0 -32
  187. package/dist/docs/components/hy-popover/hy-popover.md +0 -34
  188. package/dist/docs/components/hy-popup/hy-popup.md +0 -22
  189. package/dist/docs/components/hy-price/hy-price.md +0 -13
  190. package/dist/docs/components/hy-qrcode/hy-qrcode.md +0 -15
  191. package/dist/docs/components/hy-radio/hy-radio.md +0 -21
  192. package/dist/docs/components/hy-rate/hy-rate.md +0 -14
  193. package/dist/docs/components/hy-read-more/hy-read-more.md +0 -21
  194. package/dist/docs/components/hy-scroll-list/hy-scroll-list.md +0 -21
  195. package/dist/docs/components/hy-search/hy-search.md +0 -27
  196. package/dist/docs/components/hy-signature/hy-signature.md +0 -45
  197. package/dist/docs/components/hy-slider/hy-slider.md +0 -24
  198. package/dist/docs/components/hy-status-bar/hy-status-bar.md +0 -13
  199. package/dist/docs/components/hy-steps/hy-steps.md +0 -23
  200. package/dist/docs/components/hy-submit-bar/hy-submit-bar.md +0 -21
  201. package/dist/docs/components/hy-subsection/hy-subsection.md +0 -14
  202. package/dist/docs/components/hy-swipe-action/hy-swipe-action.md +0 -29
  203. package/dist/docs/components/hy-swiper/hy-swiper-indicator.md +0 -23
  204. package/dist/docs/components/hy-swiper/hy-swiper.md +0 -22
  205. package/dist/docs/components/hy-switch/hy-switch.md +0 -20
  206. package/dist/docs/components/hy-tabBar/hy-tabBar.md +0 -13
  207. package/dist/docs/components/hy-tabs/hy-tabs.md +0 -27
  208. package/dist/docs/components/hy-tag/hy-tag.md +0 -21
  209. package/dist/docs/components/hy-text/hy-text.md +0 -13
  210. package/dist/docs/components/hy-textarea/hy-textarea.md +0 -19
  211. package/dist/docs/components/hy-toast/hy-toast.md +0 -17
  212. package/dist/docs/components/hy-tooltip/hy-tooltip.md +0 -13
  213. package/dist/docs/components/hy-transition/hy-transition.md +0 -25
  214. package/dist/docs/components/hy-upload/hy-upload.md +0 -25
  215. package/dist/docs/components/hy-warn/hy-warn.md +0 -14
  216. package/dist/docs/components/hy-waterfall/hy-waterfall.md +0 -30
  217. package/dist/docs/components/hy-watermark/hy-watermark.md +0 -7
  218. package/dist/docs/components/message/TheMessage.md +0 -17
  219. package/dist/docs/components/yk-dialog/yk-dialog.md +0 -7
  220. package/dist/tags.json +0 -1
  221. package/dist/web-types.json +0 -1
  222. package/docgen.config.js +0 -14
  223. package/web-types.config.js +0 -7
@@ -1,53 +1,73 @@
1
1
  <template>
2
2
  <view :class="themeClass" :style="themeStyle">
3
+ <!-- @slot 默认插槽 -->
3
4
  <slot />
4
5
  </view>
5
6
  </template>
6
7
 
7
8
  <script lang="ts">
9
+ /**
10
+ * 将 ConfigProvider 组件的 theme 属性设置为 dark,可以开启深色模式。 深色模式会全局生效,使页面上的所有 Wot 组件变为深色风格。
11
+ * @displayName hy-config-provider
12
+ */
13
+ defineOptions({})
8
14
  export default {
9
- name: "hy-config-provider",
15
+ name: 'hy-config-provider',
10
16
  options: {
11
17
  addGlobalClass: true,
12
18
  virtualHost: true,
13
- styleIsolation: "shared",
19
+ styleIsolation: 'shared',
14
20
  },
15
- };
21
+ }
16
22
  </script>
17
23
 
18
24
  <script setup lang="ts">
19
- import { computed, toRefs } from "vue";
20
- import type IProps from "./typing";
21
- import defaultProps from "./props";
22
- import { addUnit } from "@/package";
23
- import { colorGradient } from "@/package/utils";
25
+ import { computed, type CSSProperties, type PropType, toRefs } from 'vue'
26
+ import { addUnit, colorGradient } from '../../utils'
27
+ import { ColorConfig } from '../../config'
24
28
 
25
- const props = withDefaults(defineProps<IProps>(), defaultProps);
26
- const {
27
- theme,
28
- themeColor,
29
- themeLightColor,
30
- customClass,
31
- customStyle,
32
- padding,
33
- } = toRefs(props);
29
+ // const props = withDefaults(defineProps<IProps>(), defaultProps);
30
+ const props = defineProps({
31
+ /**
32
+ * 主题色,暗色或者默认白色
33
+ * @values dark,light
34
+ * */
35
+ theme: {
36
+ type: String,
37
+ default: 'light',
38
+ },
39
+ /** 主题色 */
40
+ themeColor: {
41
+ type: String,
42
+ default: ColorConfig.primary,
43
+ },
44
+ /** 内边距 */
45
+ padding: [String, Number],
46
+ /** 定义需要用到的主题类名 */
47
+ customClass: String,
48
+ /** 定义需要用到的外部样式 */
49
+ customStyle: {
50
+ type: Object as PropType<CSSProperties>,
51
+ },
52
+ })
53
+ const { theme, themeColor, customClass, customStyle, padding } = toRefs(props)
34
54
 
35
55
  const themeClass = computed(() => {
36
- return [customClass.value, "hy-config-provider", `hy-theme--${theme.value}`];
37
- });
56
+ return [customClass.value, 'hy-config-provider', `hy-theme--${theme.value}`]
57
+ })
38
58
 
39
59
  const themeStyle = computed(() => {
40
60
  return [
41
61
  {
42
- "--hy-theme-color": themeColor.value,
43
- "--hy-theme--light": colorGradient(themeColor.value)[90],
62
+ '--hy-theme-color': themeColor.value,
63
+ '--hy-theme--light': colorGradient(themeColor.value)[90],
44
64
  padding: addUnit(padding.value),
45
65
  },
46
66
  customStyle.value,
47
- ];
48
- });
67
+ ]
68
+ })
49
69
  </script>
50
70
 
51
71
  <style scoped lang="scss">
52
- @import "./index.scss";
72
+ @import './index.scss';
53
73
  </style>
@@ -9,10 +9,6 @@ export default interface HyConfigProviderProps {
9
9
  * @description 主题色(默认 #3c9cff )
10
10
  * */
11
11
  themeColor?: string
12
- /**
13
- * @description 主题色(默认 #ecf5ff )
14
- * */
15
- themeLightColor?: string
16
12
  /**
17
13
  * @description 内边距(默认 10px )
18
14
  * */
@@ -1,5 +1,9 @@
1
1
  <template>
2
- <view class="hy-count-down">
2
+ <view :class="['hy-count-down', customClass]" :style="customStyle">
3
+ <!--
4
+ @slot 默认插槽
5
+ @param {String | Number} record
6
+ -->
3
7
  <slot :record="timeData">
4
8
  <text class="hy-count-down__text">{{ formattedTime }}</text>
5
9
  </slot>
@@ -7,155 +11,188 @@
7
11
  </template>
8
12
 
9
13
  <script lang="ts">
14
+ /**
15
+ * 一般使用于某个活动的截止时间上,通过数字的变化,给用户明确的时间感受,提示用户进行某一个行为操作。
16
+ * @displayName hy-count-down
17
+ */
18
+ defineOptions({})
10
19
  export default {
11
20
  name: 'hy-count-down',
12
21
  options: {
13
22
  addGlobalClass: true,
14
23
  virtualHost: true,
15
- styleIsolation: 'shared'
16
- }
24
+ styleIsolation: 'shared',
25
+ },
17
26
  }
18
27
  </script>
19
28
 
20
29
  <script setup lang="ts">
21
- import type IProps from "./typing";
22
- import defaultProps from "./props";
23
- import { onMounted, onUnmounted, ref, toRefs, watch } from "vue";
24
- import { isSameSecond, parseFormat, parseTimeData } from "./index";
30
+ import { onMounted, onUnmounted, ref, toRefs, watch } from 'vue'
31
+ import type { CSSProperties, PropType } from 'vue'
32
+ import { isSameSecond, parseFormat, parseTimeData } from './index'
33
+ import { ICountDownEmits } from './typing'
25
34
 
26
- const props = withDefaults(defineProps<IProps>(), defaultProps);
27
- const { time, autoStart, millisecond, format } = toRefs(props);
28
- const emit = defineEmits(["change", "finish"]);
35
+ // const props = withDefaults(defineProps<IProps>(), defaultProps)
36
+ const props = defineProps({
37
+ /** 倒计时时长,单位ms */
38
+ time: {
39
+ type: Number,
40
+ default: 0,
41
+ },
42
+ /** 时间格式,DD-日,HH-时,mm-分,ss-秒,SSS-毫秒 */
43
+ format: {
44
+ type: String,
45
+ default: 'HH:mm:ss',
46
+ },
47
+ /** 是否自动开始倒计时 */
48
+ autoStart: {
49
+ type: Boolean,
50
+ default: true,
51
+ },
52
+ /** 是否展示毫秒倒计时 */
53
+ millisecond: {
54
+ type: Boolean,
55
+ default: false,
56
+ },
57
+ /** 定义需要用到的外部样式 */
58
+ customStyle: {
59
+ type: Object as PropType<CSSProperties>,
60
+ },
61
+ /** 自定义外部类名 */
62
+ customClass: String,
63
+ })
64
+ const { time, autoStart, millisecond, format } = toRefs(props)
65
+ const emit = defineEmits<ICountDownEmits>()
29
66
 
30
- let timer: any;
67
+ let timer: any
31
68
  // 各单位(天,时,分等)剩余时间
32
- const timeData = ref(parseTimeData(time.value));
69
+ const timeData = ref(parseTimeData(time.value))
33
70
  // 格式化后的时间,如"03:23:21"
34
- const formattedTime = ref("");
71
+ const formattedTime = ref('')
35
72
  // 倒计时是否正在进行中
36
- const runing = ref(false);
73
+ const runing = ref(false)
37
74
  // 结束的毫秒时间戳
38
- const endTime = ref(0);
75
+ const endTime = ref(0)
39
76
  // 剩余的毫秒时间
40
- const remainTime = ref(0);
77
+ const remainTime = ref(0)
41
78
 
42
79
  watch(
43
80
  () => time.value,
44
81
  () => reset(),
45
- );
82
+ )
46
83
 
47
84
  onMounted(() => {
48
- reset();
49
- });
85
+ reset()
86
+ })
50
87
 
51
88
  onUnmounted(() => {
52
- clearTimeoutFn();
53
- });
89
+ clearTimeoutFn()
90
+ })
54
91
 
55
92
  /**
56
93
  * @description 开始倒计时
57
94
  */
58
95
  const start = () => {
59
- if (runing.value) return;
96
+ if (runing.value) return
60
97
  // 标识为进行中
61
- runing.value = true;
98
+ runing.value = true
62
99
  // 结束时间戳 = 此刻时间戳 + 剩余的时间
63
- endTime.value = Date.now() + remainTime.value;
64
- toTick();
65
- };
100
+ endTime.value = Date.now() + remainTime.value
101
+ toTick()
102
+ }
66
103
 
67
104
  /**
68
105
  * @description 根据是否展示毫秒,执行不同操作函数
69
106
  */
70
107
  const toTick = () => {
71
108
  if (millisecond.value) {
72
- microTick();
109
+ microTick()
73
110
  } else {
74
- macroTick();
111
+ macroTick()
75
112
  }
76
- };
113
+ }
77
114
  const macroTick = () => {
78
- clearTimeoutFn();
115
+ clearTimeoutFn()
79
116
  // 每隔一定时间,更新一遍定时器的值
80
117
  // 同时此定时器的作用也能带来毫秒级的更新
81
118
  timer = setTimeout(() => {
82
119
  // 获取剩余时间
83
- const remain = getRemainTime();
120
+ const remain = getRemainTime()
84
121
  // 重设剩余时间
85
122
  if (!isSameSecond(remain, remainTime.value) || remain === 0) {
86
- setRemainTime(remain);
123
+ setRemainTime(remain)
87
124
  }
88
125
  // 如果剩余时间不为0,则继续检查更新倒计时
89
126
  if (remainTime.value !== 0) {
90
- macroTick();
127
+ macroTick()
91
128
  }
92
- }, 30);
93
- };
129
+ }, 30)
130
+ }
94
131
 
95
132
  const microTick = () => {
96
- clearTimeoutFn();
133
+ clearTimeoutFn()
97
134
  timer = setTimeout(() => {
98
- setRemainTime(getRemainTime());
135
+ setRemainTime(getRemainTime())
99
136
  if (remainTime.value !== 0) {
100
- microTick();
137
+ microTick()
101
138
  }
102
- }, 50);
103
- };
139
+ }, 50)
140
+ }
104
141
 
105
142
  /**
106
143
  * @description 获取剩余的时间
107
144
  */
108
145
  const getRemainTime = () => {
109
146
  // 取最大值,防止出现小于0的剩余时间值
110
- return Math.max(endTime.value - Date.now(), 0);
111
- };
147
+ return Math.max(endTime.value - Date.now(), 0)
148
+ }
112
149
  /**
113
150
  * @description 设置剩余的时间
114
151
  */
115
152
  const setRemainTime = (remain: number) => {
116
- remainTime.value = remain;
153
+ remainTime.value = remain
117
154
  // 根据剩余的毫秒时间,得出该有天,小时,分钟等的值,返回一个对象
118
- timeData.value = parseTimeData(remain);
119
- emit("change", timeData.value);
155
+ timeData.value = parseTimeData(remain)
156
+ emit('change', timeData.value)
120
157
  // 得出格式化后的时间
121
- formattedTime.value = parseFormat(format.value, timeData.value);
158
+ formattedTime.value = parseFormat(format.value, timeData.value)
122
159
  // 如果时间已到,停止倒计时
123
160
  if (remain <= 0) {
124
- pause();
125
- emit("finish");
161
+ pause()
162
+ emit('finish')
126
163
  }
127
- };
164
+ }
128
165
  // 重置倒计时
129
166
  const reset = () => {
130
- pause();
131
- remainTime.value = time.value;
132
- setRemainTime(remainTime.value);
167
+ pause()
168
+ remainTime.value = time.value
169
+ setRemainTime(remainTime.value)
133
170
  if (autoStart.value) {
134
- start();
171
+ start()
135
172
  }
136
- };
173
+ }
137
174
  /**
138
175
  * @description 暂停倒计时
139
176
  * */
140
177
  const pause = () => {
141
- runing.value = false;
142
- clearTimeoutFn();
143
- };
178
+ runing.value = false
179
+ clearTimeoutFn()
180
+ }
144
181
  /**
145
182
  * @description 清空定时器
146
183
  * */
147
184
  const clearTimeoutFn = () => {
148
- clearTimeout(timer);
149
- timer = null;
150
- };
185
+ clearTimeout(timer)
186
+ timer = null
187
+ }
151
188
 
152
189
  defineExpose({
153
190
  reset,
154
191
  start,
155
192
  pause,
156
- });
193
+ })
157
194
  </script>
158
195
 
159
196
  <style scoped lang="scss">
160
- @import "./index.scss";
197
+ @import './index.scss';
161
198
  </style>
@@ -1,20 +1,33 @@
1
- import type { CSSProperties } from "vue";
1
+ import type { CSSProperties } from 'vue'
2
2
 
3
3
  export default interface HyCountDownProps {
4
4
  /**
5
5
  * @description 倒计时时长,单位ms (默认 0 )
6
6
  * */
7
- time: number;
7
+ time: number
8
8
  /**
9
9
  * @description 时间格式,DD-日,HH-时,mm-分,ss-秒,SSS-毫秒 (默认 'HH:mm:ss' )
10
10
  * */
11
- format?: string;
11
+ format?: string
12
12
  /**
13
13
  * @description 是否自动开始倒计时 (默认 true )
14
14
  * */
15
- autoStart?: boolean;
15
+ autoStart?: boolean
16
16
  /**
17
17
  * @description 是否展示毫秒倒计时 (默认 false )
18
18
  * */
19
- millisecond?: boolean;
19
+ millisecond?: boolean
20
+ }
21
+ type TimeDataVo = {
22
+ days: number
23
+ hours: number
24
+ minutes: number
25
+ seconds: number
26
+ milliseconds: number
27
+ }
28
+ export interface ICountDownEmits {
29
+ /** 过程中,倒计时变化时触发 */
30
+ (e: 'change', time: TimeDataVo): void
31
+ /** 倒计时结束触发 */
32
+ (e: 'finish'): void
20
33
  }