@bitrix24/b24ui-nuxt 0.5.11 → 0.6.1

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 (252) hide show
  1. package/.nuxt/b24ui/advice.ts +10 -2
  2. package/.nuxt/b24ui/alert.ts +10 -2
  3. package/.nuxt/b24ui/avatar-group.ts +10 -2
  4. package/.nuxt/b24ui/avatar.ts +10 -2
  5. package/.nuxt/b24ui/badge.ts +10 -2
  6. package/.nuxt/b24ui/button-group.ts +10 -2
  7. package/.nuxt/b24ui/button.ts +16 -6
  8. package/.nuxt/b24ui/calendar.ts +10 -2
  9. package/.nuxt/b24ui/checkbox.ts +10 -2
  10. package/.nuxt/b24ui/chip.ts +10 -2
  11. package/.nuxt/b24ui/collapsible.ts +10 -2
  12. package/.nuxt/b24ui/container.ts +10 -2
  13. package/.nuxt/b24ui/countdown.ts +10 -2
  14. package/.nuxt/b24ui/description-list.ts +10 -2
  15. package/.nuxt/b24ui/dropdown-menu.ts +10 -2
  16. package/.nuxt/b24ui/form-field.ts +10 -2
  17. package/.nuxt/b24ui/form.ts +10 -2
  18. package/.nuxt/b24ui/input-menu.ts +12 -4
  19. package/.nuxt/b24ui/input-number.ts +10 -2
  20. package/.nuxt/b24ui/input.ts +10 -2
  21. package/.nuxt/b24ui/kbd.ts +10 -2
  22. package/.nuxt/b24ui/link.ts +10 -2
  23. package/.nuxt/b24ui/modal.ts +10 -2
  24. package/.nuxt/b24ui/navbar-divider.ts +10 -2
  25. package/.nuxt/b24ui/navbar-section.ts +10 -2
  26. package/.nuxt/b24ui/navbar-spacer.ts +10 -2
  27. package/.nuxt/b24ui/navbar.ts +10 -2
  28. package/.nuxt/b24ui/navigation-menu.ts +10 -2
  29. package/.nuxt/b24ui/popover.ts +10 -2
  30. package/.nuxt/b24ui/progress.ts +10 -2
  31. package/.nuxt/b24ui/radio-group.ts +10 -2
  32. package/.nuxt/b24ui/range.ts +10 -2
  33. package/.nuxt/b24ui/select-menu.ts +14 -6
  34. package/.nuxt/b24ui/select.ts +12 -4
  35. package/.nuxt/b24ui/separator.ts +10 -2
  36. package/.nuxt/b24ui/sidebar-body.ts +10 -2
  37. package/.nuxt/b24ui/sidebar-footer.ts +10 -2
  38. package/.nuxt/b24ui/sidebar-header.ts +10 -2
  39. package/.nuxt/b24ui/sidebar-heading.ts +10 -2
  40. package/.nuxt/b24ui/sidebar-layout.ts +10 -2
  41. package/.nuxt/b24ui/sidebar-section.ts +10 -2
  42. package/.nuxt/b24ui/sidebar-spacer.ts +10 -2
  43. package/.nuxt/b24ui/sidebar.ts +10 -2
  44. package/.nuxt/b24ui/skeleton.ts +10 -2
  45. package/.nuxt/b24ui/slideover.ts +10 -2
  46. package/.nuxt/b24ui/stacked-layout.ts +10 -2
  47. package/.nuxt/b24ui/switch.ts +10 -2
  48. package/.nuxt/b24ui/tabs.ts +10 -2
  49. package/.nuxt/b24ui/textarea.ts +10 -2
  50. package/.nuxt/b24ui/toast.ts +10 -2
  51. package/.nuxt/b24ui/toaster.ts +10 -2
  52. package/.nuxt/b24ui/tooltip.ts +10 -2
  53. package/cli/templates.mjs +19 -15
  54. package/dist/meta.d.mts +5675 -7513
  55. package/dist/meta.mjs +5675 -7513
  56. package/dist/module.json +3 -3
  57. package/dist/module.mjs +2 -2
  58. package/dist/runtime/components/Advice.vue +27 -55
  59. package/dist/runtime/components/Advice.vue.d.ts +56 -0
  60. package/dist/runtime/components/Alert.vue +35 -97
  61. package/dist/runtime/components/Alert.vue.d.ts +97 -0
  62. package/dist/runtime/components/App.vue +24 -34
  63. package/dist/runtime/components/App.vue.d.ts +23 -0
  64. package/dist/runtime/components/Avatar.vue +43 -82
  65. package/dist/runtime/components/Avatar.vue.d.ts +62 -0
  66. package/dist/runtime/components/AvatarGroup.vue +40 -77
  67. package/dist/runtime/components/AvatarGroup.vue.d.ts +40 -0
  68. package/dist/runtime/components/Badge.vue +40 -84
  69. package/dist/runtime/components/Badge.vue.d.ts +78 -0
  70. package/dist/runtime/components/Button.vue +107 -164
  71. package/dist/runtime/components/Button.vue.d.ts +115 -0
  72. package/dist/runtime/components/ButtonGroup.vue +25 -52
  73. package/dist/runtime/components/ButtonGroup.vue.d.ts +63 -0
  74. package/dist/runtime/components/Calendar.vue +73 -153
  75. package/dist/runtime/components/Calendar.vue.d.ts +107 -0
  76. package/dist/runtime/components/Checkbox.vue +42 -74
  77. package/dist/runtime/components/Checkbox.vue.d.ts +55 -0
  78. package/dist/runtime/components/Chip.vue +26 -75
  79. package/dist/runtime/components/Chip.vue.d.ts +77 -0
  80. package/dist/runtime/components/Collapsible.vue +22 -41
  81. package/dist/runtime/components/Collapsible.vue.d.ts +50 -0
  82. package/dist/runtime/components/Container.vue +15 -28
  83. package/dist/runtime/components/Container.vue.d.ts +27 -0
  84. package/dist/runtime/components/Countdown.vue +153 -379
  85. package/dist/runtime/components/Countdown.vue.d.ts +122 -0
  86. package/dist/runtime/components/DescriptionList.vue +78 -150
  87. package/dist/runtime/components/DescriptionList.vue.d.ts +109 -0
  88. package/dist/runtime/components/DropdownMenu.vue +38 -140
  89. package/dist/runtime/components/DropdownMenu.vue.d.ts +133 -0
  90. package/dist/runtime/components/DropdownMenuContent.vue +65 -79
  91. package/dist/runtime/components/DropdownMenuContent.vue.d.ts +51 -0
  92. package/dist/runtime/components/Form.vue +132 -218
  93. package/dist/runtime/components/Form.vue.d.ts +55 -0
  94. package/dist/runtime/components/FormField.vue +36 -81
  95. package/dist/runtime/components/FormField.vue.d.ts +73 -0
  96. package/dist/runtime/components/Input.vue +79 -180
  97. package/dist/runtime/components/Input.vue.d.ts +135 -0
  98. package/dist/runtime/components/InputMenu.vue +185 -382
  99. package/dist/runtime/components/InputMenu.vue.d.ts +357 -0
  100. package/dist/runtime/components/InputNumber.vue +77 -176
  101. package/dist/runtime/components/InputNumber.vue.d.ts +238 -0
  102. package/dist/runtime/components/Kbd.vue +20 -46
  103. package/dist/runtime/components/Kbd.vue.d.ts +55 -0
  104. package/dist/runtime/components/Link.vue +99 -179
  105. package/dist/runtime/components/Link.vue.d.ts +129 -0
  106. package/dist/runtime/components/LinkBase.vue +33 -42
  107. package/dist/runtime/components/LinkBase.vue.d.ts +48 -0
  108. package/dist/runtime/components/Modal.vue +48 -128
  109. package/dist/runtime/components/Modal.vue.d.ts +124 -0
  110. package/dist/runtime/components/ModalDialogClose.vue +5 -8
  111. package/dist/runtime/components/ModalDialogClose.vue.d.ts +10 -0
  112. package/dist/runtime/components/Navbar.vue +15 -33
  113. package/dist/runtime/components/Navbar.vue.d.ts +46 -0
  114. package/dist/runtime/components/NavbarDivider.vue +15 -33
  115. package/dist/runtime/components/NavbarDivider.vue.d.ts +46 -0
  116. package/dist/runtime/components/NavbarSection.vue +15 -33
  117. package/dist/runtime/components/NavbarSection.vue.d.ts +46 -0
  118. package/dist/runtime/components/NavbarSpacer.vue +15 -33
  119. package/dist/runtime/components/NavbarSpacer.vue.d.ts +46 -0
  120. package/dist/runtime/components/NavigationMenu.vue +74 -209
  121. package/dist/runtime/components/NavigationMenu.vue.d.ts +159 -0
  122. package/dist/runtime/components/OverlayProvider.vue +14 -18
  123. package/dist/runtime/components/OverlayProvider.vue.d.ts +2 -0
  124. package/dist/runtime/components/Popover.vue +40 -82
  125. package/dist/runtime/components/Popover.vue.d.ts +79 -0
  126. package/dist/runtime/components/Progress.vue +70 -137
  127. package/dist/runtime/components/Progress.vue.d.ts +103 -0
  128. package/dist/runtime/components/RadioGroup.vue +59 -135
  129. package/dist/runtime/components/RadioGroup.vue.d.ts +88 -0
  130. package/dist/runtime/components/Range.vue +46 -86
  131. package/dist/runtime/components/Range.vue.d.ts +73 -0
  132. package/dist/runtime/components/Select.vue +110 -261
  133. package/dist/runtime/components/Select.vue.d.ts +170 -0
  134. package/dist/runtime/components/SelectMenu.vue +161 -348
  135. package/dist/runtime/components/SelectMenu.vue.d.ts +217 -0
  136. package/dist/runtime/components/Separator.vue +28 -72
  137. package/dist/runtime/components/Separator.vue.d.ts +77 -0
  138. package/dist/runtime/components/Sidebar.vue +15 -33
  139. package/dist/runtime/components/Sidebar.vue.d.ts +46 -0
  140. package/dist/runtime/components/SidebarBody.vue +17 -39
  141. package/dist/runtime/components/SidebarBody.vue.d.ts +53 -0
  142. package/dist/runtime/components/SidebarFooter.vue +15 -33
  143. package/dist/runtime/components/SidebarFooter.vue.d.ts +46 -0
  144. package/dist/runtime/components/SidebarHeader.vue +15 -33
  145. package/dist/runtime/components/SidebarHeader.vue.d.ts +46 -0
  146. package/dist/runtime/components/SidebarHeading.vue +15 -33
  147. package/dist/runtime/components/SidebarHeading.vue.d.ts +46 -0
  148. package/dist/runtime/components/SidebarLayout.vue +34 -71
  149. package/dist/runtime/components/SidebarLayout.vue.d.ts +65 -0
  150. package/dist/runtime/components/SidebarSection.vue +15 -33
  151. package/dist/runtime/components/SidebarSection.vue.d.ts +46 -0
  152. package/dist/runtime/components/SidebarSpacer.vue +15 -33
  153. package/dist/runtime/components/SidebarSpacer.vue.d.ts +46 -0
  154. package/dist/runtime/components/Skeleton.vue +14 -23
  155. package/dist/runtime/components/Skeleton.vue.d.ts +26 -0
  156. package/dist/runtime/components/Slideover.vue +50 -132
  157. package/dist/runtime/components/Slideover.vue.d.ts +127 -0
  158. package/dist/runtime/components/StackedLayout.vue +34 -74
  159. package/dist/runtime/components/StackedLayout.vue.d.ts +65 -0
  160. package/dist/runtime/components/Switch.vue +46 -96
  161. package/dist/runtime/components/Switch.vue.d.ts +77 -0
  162. package/dist/runtime/components/Tabs.vue +41 -106
  163. package/dist/runtime/components/Tabs.vue.d.ts +104 -0
  164. package/dist/runtime/components/Textarea.vue +92 -202
  165. package/dist/runtime/components/Textarea.vue.d.ts +141 -0
  166. package/dist/runtime/components/Toast.vue +47 -106
  167. package/dist/runtime/components/Toast.vue.d.ts +95 -0
  168. package/dist/runtime/components/Toaster.vue +70 -116
  169. package/dist/runtime/components/Toaster.vue.d.ts +70 -0
  170. package/dist/runtime/components/Tooltip.vue +36 -65
  171. package/dist/runtime/components/Tooltip.vue.d.ts +65 -0
  172. package/dist/runtime/components/content/TableWrapper.vue +24 -71
  173. package/dist/runtime/components/content/TableWrapper.vue.d.ts +83 -0
  174. package/dist/runtime/composables/useAvatarGroup.d.ts +1 -1
  175. package/dist/runtime/composables/useButtonGroup.d.ts +2 -2
  176. package/dist/runtime/composables/useComponentIcons.d.ts +3 -3
  177. package/dist/runtime/composables/useFormField.d.ts +2 -2
  178. package/dist/runtime/composables/useOverlay.d.ts +14 -7
  179. package/dist/runtime/composables/useOverlay.js +14 -6
  180. package/dist/runtime/prose/A.vue +16 -26
  181. package/dist/runtime/prose/A.vue.d.ts +27 -0
  182. package/dist/runtime/prose/Blockquote.vue +14 -26
  183. package/dist/runtime/prose/Blockquote.vue.d.ts +27 -0
  184. package/dist/runtime/prose/Code.vue +15 -32
  185. package/dist/runtime/prose/Code.vue.d.ts +31 -0
  186. package/dist/runtime/prose/Em.vue +16 -26
  187. package/dist/runtime/prose/Em.vue.d.ts +27 -0
  188. package/dist/runtime/prose/H1.vue +14 -26
  189. package/dist/runtime/prose/H1.vue.d.ts +27 -0
  190. package/dist/runtime/prose/H2.vue +14 -26
  191. package/dist/runtime/prose/H2.vue.d.ts +27 -0
  192. package/dist/runtime/prose/H3.vue +14 -26
  193. package/dist/runtime/prose/H3.vue.d.ts +27 -0
  194. package/dist/runtime/prose/H4.vue +14 -26
  195. package/dist/runtime/prose/H4.vue.d.ts +27 -0
  196. package/dist/runtime/prose/H5.vue +14 -26
  197. package/dist/runtime/prose/H5.vue.d.ts +27 -0
  198. package/dist/runtime/prose/H6.vue +14 -26
  199. package/dist/runtime/prose/H6.vue.d.ts +27 -0
  200. package/dist/runtime/prose/Hr.vue +13 -22
  201. package/dist/runtime/prose/Hr.vue.d.ts +19 -0
  202. package/dist/runtime/prose/Img.vue +13 -26
  203. package/dist/runtime/prose/Img.vue.d.ts +19 -0
  204. package/dist/runtime/prose/Li.vue +14 -26
  205. package/dist/runtime/prose/Li.vue.d.ts +27 -0
  206. package/dist/runtime/prose/Ol.vue +14 -26
  207. package/dist/runtime/prose/Ol.vue.d.ts +27 -0
  208. package/dist/runtime/prose/P.vue +14 -26
  209. package/dist/runtime/prose/P.vue.d.ts +27 -0
  210. package/dist/runtime/prose/Pre.vue +17 -33
  211. package/dist/runtime/prose/Pre.vue.d.ts +47 -0
  212. package/dist/runtime/prose/Strong.vue +14 -26
  213. package/dist/runtime/prose/Strong.vue.d.ts +27 -0
  214. package/dist/runtime/prose/Table.vue +21 -57
  215. package/dist/runtime/prose/Table.vue.d.ts +74 -0
  216. package/dist/runtime/prose/Tbody.vue +14 -26
  217. package/dist/runtime/prose/Tbody.vue.d.ts +27 -0
  218. package/dist/runtime/prose/Td.vue +14 -26
  219. package/dist/runtime/prose/Td.vue.d.ts +27 -0
  220. package/dist/runtime/prose/Th.vue +14 -26
  221. package/dist/runtime/prose/Th.vue.d.ts +27 -0
  222. package/dist/runtime/prose/Thead.vue +14 -26
  223. package/dist/runtime/prose/Thead.vue.d.ts +27 -0
  224. package/dist/runtime/prose/Tr.vue +14 -26
  225. package/dist/runtime/prose/Tr.vue.d.ts +27 -0
  226. package/dist/runtime/prose/Ul.vue +14 -26
  227. package/dist/runtime/prose/Ul.vue.d.ts +27 -0
  228. package/dist/runtime/types/form.d.ts +1 -0
  229. package/dist/runtime/types/utils.d.ts +42 -3
  230. package/dist/runtime/utils/link.d.ts +3 -3
  231. package/dist/runtime/utils/tv.js +2 -2
  232. package/dist/runtime/vue/components/Link.vue +122 -208
  233. package/dist/runtime/vue/components/Link.vue.d.ts +129 -0
  234. package/dist/shared/{b24ui-nuxt.CS9Lf0os.mjs → b24ui-nuxt.wBs9vEU5.mjs} +33 -8
  235. package/dist/types.d.mts +3 -5
  236. package/dist/unplugin.mjs +1 -1
  237. package/dist/vite.mjs +1 -1
  238. package/package.json +19 -27
  239. package/dist/meta.cjs +0 -72112
  240. package/dist/meta.d.cts +0 -72110
  241. package/dist/meta.d.ts +0 -72110
  242. package/dist/module.cjs +0 -63
  243. package/dist/module.d.cts +0 -15
  244. package/dist/module.d.ts +0 -15
  245. package/dist/shared/b24ui-nuxt.DrKwIWoc.cjs +0 -7721
  246. package/dist/types.d.ts +0 -7
  247. package/dist/unplugin.cjs +0 -236
  248. package/dist/unplugin.d.cts +0 -33
  249. package/dist/unplugin.d.ts +0 -33
  250. package/dist/vite.cjs +0 -21
  251. package/dist/vite.d.cts +0 -14
  252. package/dist/vite.d.ts +0 -14
@@ -1,345 +1,159 @@
1
- <script lang="ts">
2
- import type { VariantProps } from 'tailwind-variants'
3
- import type { AppConfig } from '@nuxt/schema'
4
- import _appConfig from '#build/app.config'
5
- import theme from '#build/b24ui/countdown'
6
- import type { UseComponentIconsProps } from '../composables/useComponentIcons'
7
- import { tv } from '../utils/tv'
8
- import type { AvatarProps } from '../types'
9
-
10
- const appConfigCountdown = _appConfig as AppConfig & { b24ui: { countdown: Partial<typeof theme> } }
11
-
12
- const countdown = tv({ extend: tv(theme), ...(appConfigCountdown.b24ui?.countdown || {}) })
13
-
14
- type CountdownVariants = VariantProps<typeof countdown>
15
-
16
- export interface CountdownData {
17
- days: number
18
- hours: number
19
- minutes: number
20
- seconds: number
21
- milliseconds: number
22
- totalDays: number
23
- totalHours: number
24
- totalMinutes: number
25
- totalSeconds: number
26
- totalMilliseconds: number
27
- }
28
-
29
- export interface CountdownProps extends Omit<UseComponentIconsProps, 'loading' | 'trailing' | 'trailingIcon'> {
30
- /**
31
- * The element or component this component should render as
32
- * @defaultValue 'span'
33
- */
34
- as?: any
35
- /**
36
- * @defaultValue 'md'
37
- */
38
- size?: CountdownVariants['size']
39
- /**
40
- * Emits the countdown events
41
- * @defaultValue true
42
- */
43
- emitEvents?: boolean
44
- /**
45
- * Number of seconds to countdown
46
- * @defaultValue 0
47
- */
48
- seconds?: number | string
49
- /**
50
- * Should seconds be divided into minutes?
51
- * @defaultValue true
52
- */
53
- showMinutes?: boolean
54
- /**
55
- * Shows a `Circle` around the countdown
56
- * @defaultValue false
57
- */
58
- useCircle?: boolean
59
- /**
60
- * The interval time (in milliseconds) of the countdown progress
61
- * @defaultValue 1000
62
- */
63
- interval?: number
64
- /**
65
- * Starts the countdown automatically when initialized
66
- * @defaultValue true
67
- */
68
- needStartImmediately?: boolean
69
- /**
70
- * Generate the current time of a specific time zone
71
- * @defaultValue Date.now()
72
- */
73
- now?: () => number
74
- class?: any
75
- b24ui?: Partial<typeof countdown.slots>
76
- }
77
-
78
- export interface CountdownEmits {
79
- (e: 'start' | 'end' | 'abort'): void
80
- (e: 'progress', payload: CountdownData): void
81
- }
82
-
83
- export interface CountdownSlots {
84
- leading(props?: {}): any
85
- default(props: CountdownData & { formatTime: string }): any
86
- }
1
+ <script>
2
+ import theme from "#build/b24ui/countdown";
87
3
  </script>
88
4
 
89
- <script setup lang="ts">
90
- import { ref, computed, watch, onMounted, onBeforeUnmount } from 'vue'
91
- import { useComponentIcons } from '../composables/useComponentIcons'
92
- import { Primitive } from 'reka-ui'
93
- import B24Avatar from './Avatar.vue'
94
-
95
- const MILLISECONDS_SECOND = 1000
96
- const MILLISECONDS_MINUTE = 60 * MILLISECONDS_SECOND
97
- const MILLISECONDS_HOUR = 60 * MILLISECONDS_MINUTE
98
- const MILLISECONDS_DAY = 24 * MILLISECONDS_HOUR
99
-
100
- defineOptions({ inheritAttrs: false })
101
-
102
- // region data ////
103
-
104
- const props = withDefaults(defineProps<CountdownProps>(), {
105
- as: 'span',
106
- needStartImmediately: true,
107
- emitEvents: true,
108
- interval: 1000,
109
- now: () => Date.now(),
110
- seconds: 0,
111
- showMinutes: true,
112
- useCircle: false
113
- })
114
-
115
- const emits = defineEmits<CountdownEmits>()
116
- defineSlots<CountdownSlots>()
117
-
5
+ <script setup>
6
+ import { ref, computed, watch, onMounted, onBeforeUnmount } from "vue";
7
+ import { Primitive } from "reka-ui";
8
+ import { useAppConfig } from "#imports";
9
+ import { useComponentIcons } from "../composables/useComponentIcons";
10
+ import { tv } from "../utils/tv";
11
+ import B24Avatar from "./Avatar.vue";
12
+ const MILLISECONDS_SECOND = 1e3;
13
+ const MILLISECONDS_MINUTE = 60 * MILLISECONDS_SECOND;
14
+ const MILLISECONDS_HOUR = 60 * MILLISECONDS_MINUTE;
15
+ const MILLISECONDS_DAY = 24 * MILLISECONDS_HOUR;
16
+ defineOptions({ inheritAttrs: false });
17
+ const props = defineProps({
18
+ as: { type: null, required: false, default: "span" },
19
+ size: { type: null, required: false },
20
+ emitEvents: { type: Boolean, required: false, default: true },
21
+ seconds: { type: [Number, String], required: false, default: 0 },
22
+ showMinutes: { type: Boolean, required: false, default: true },
23
+ useCircle: { type: Boolean, required: false, default: false },
24
+ interval: { type: Number, required: false, default: 1e3 },
25
+ needStartImmediately: { type: Boolean, required: false, default: true },
26
+ now: { type: Function, required: false, default: () => Date.now() },
27
+ class: { type: null, required: false },
28
+ b24ui: { type: null, required: false },
29
+ icon: { type: [Function, Object], required: false },
30
+ avatar: { type: Object, required: false }
31
+ });
32
+ const emits = defineEmits(["start", "end", "abort", "progress"]);
33
+ defineSlots();
118
34
  const { isLeading, leadingIconName } = useComponentIcons(
119
35
  computed(() => ({ ...props, loading: false }))
120
- )
121
-
122
- const b24ui = computed(() => countdown({
36
+ );
37
+ const appConfig = useAppConfig();
38
+ const b24ui = computed(() => tv({ extend: tv(theme), ...appConfig.b24ui?.countdown || {} })({
123
39
  size: props.size,
124
40
  leading: Boolean(isLeading.value),
125
41
  useCircle: Boolean(props.useCircle)
126
- }))
127
-
128
- /**
129
- * It is counting down.
130
- */
131
- const counting = ref<boolean>(false)
132
- /**
133
- * The absolute end time.
134
- */
135
- const endTime = ref<number>(0)
136
- /**
137
- * The remaining milliseconds.
138
- */
139
- const totalMilliseconds = ref<number>(0)
140
- /**
141
- * The request ID of the requestAnimationFrame.
142
- */
143
- const requestId = ref<number>(0)
144
- // endregion ////
145
-
146
- // region events ////
42
+ }));
43
+ const counting = ref(false);
44
+ const endTime = ref(0);
45
+ const totalMilliseconds = ref(0);
46
+ const requestId = ref(0);
147
47
  onMounted(() => {
148
- document.addEventListener('visibilitychange', handleVisibilityChange.bind(this))
149
- })
150
-
48
+ document.addEventListener("visibilitychange", handleVisibilityChange.bind(this));
49
+ });
151
50
  onBeforeUnmount(() => {
152
- document.removeEventListener('visibilitychange', handleVisibilityChange.bind(this))
153
- pause()
154
- })
155
- // endregion ////
156
-
157
- // region watch ////
158
- /**
159
- * Update the countdown when props changed.
160
- */
51
+ document.removeEventListener("visibilitychange", handleVisibilityChange.bind(this));
52
+ pause();
53
+ });
161
54
  watch(
162
55
  () => props,
163
56
  () => {
164
- totalMilliseconds.value = Number(props.seconds) * 1000
165
- endTime.value = props.now() + Number(props.seconds) * 1000
166
-
57
+ totalMilliseconds.value = Number(props.seconds) * 1e3;
58
+ endTime.value = props.now() + Number(props.seconds) * 1e3;
167
59
  if (props.needStartImmediately) {
168
- start()
60
+ start();
169
61
  }
170
62
  },
171
63
  {
172
64
  deep: true,
173
65
  immediate: true
174
66
  }
175
- )
176
- // endregion ////
177
-
178
- // region computed ////
179
- /**
180
- * Remaining days.
181
- */
182
- const days = computed((): number => {
183
- return Math.floor(totalMilliseconds.value / MILLISECONDS_DAY)
184
- })
185
-
186
- /**
187
- * Remaining hours.
188
- */
189
- const hours = computed((): number => {
190
- return Math.floor((totalMilliseconds.value % MILLISECONDS_DAY) / MILLISECONDS_HOUR)
191
- })
192
-
193
- /**
194
- * Remaining minutes.
195
- */
196
- const minutes = computed((): number => {
197
- return Math.floor((totalMilliseconds.value % MILLISECONDS_HOUR) / MILLISECONDS_MINUTE)
198
- })
199
-
200
- /**
201
- * Remaining seconds.
202
- */
203
- const secondsValue = computed((): number => {
204
- return Math.floor((totalMilliseconds.value % MILLISECONDS_MINUTE) / MILLISECONDS_SECOND)
205
- })
206
-
207
- /**
208
- * Remaining milliseconds.
209
- */
210
- const milliseconds = computed((): number => {
211
- return Math.floor(totalMilliseconds.value % MILLISECONDS_SECOND)
212
- })
213
-
214
- /**
215
- * Total remaining days.
216
- */
217
- const totalDays = computed((): number => {
218
- return days.value
219
- })
220
-
221
- /**
222
- * Total remaining hours.
223
- */
224
- const totalHours = computed((): number => {
225
- return Math.floor(totalMilliseconds.value / MILLISECONDS_HOUR)
226
- })
227
-
228
- /**
229
- * Total remaining minutes.
230
- */
231
- const totalMinutes = computed((): number => {
232
- return Math.floor(totalMilliseconds.value / MILLISECONDS_MINUTE)
233
- })
234
-
235
- /**
236
- * Total remaining seconds.
237
- */
238
- const totalSeconds = computed((): number => {
239
- return Math.floor(totalMilliseconds.value / MILLISECONDS_SECOND)
240
- })
241
-
242
- const formatTime = computed((): string => {
67
+ );
68
+ const days = computed(() => {
69
+ return Math.floor(totalMilliseconds.value / MILLISECONDS_DAY);
70
+ });
71
+ const hours = computed(() => {
72
+ return Math.floor(totalMilliseconds.value % MILLISECONDS_DAY / MILLISECONDS_HOUR);
73
+ });
74
+ const minutes = computed(() => {
75
+ return Math.floor(totalMilliseconds.value % MILLISECONDS_HOUR / MILLISECONDS_MINUTE);
76
+ });
77
+ const secondsValue = computed(() => {
78
+ return Math.floor(totalMilliseconds.value % MILLISECONDS_MINUTE / MILLISECONDS_SECOND);
79
+ });
80
+ const milliseconds = computed(() => {
81
+ return Math.floor(totalMilliseconds.value % MILLISECONDS_SECOND);
82
+ });
83
+ const totalDays = computed(() => {
84
+ return days.value;
85
+ });
86
+ const totalHours = computed(() => {
87
+ return Math.floor(totalMilliseconds.value / MILLISECONDS_HOUR);
88
+ });
89
+ const totalMinutes = computed(() => {
90
+ return Math.floor(totalMilliseconds.value / MILLISECONDS_MINUTE);
91
+ });
92
+ const totalSeconds = computed(() => {
93
+ return Math.floor(totalMilliseconds.value / MILLISECONDS_SECOND);
94
+ });
95
+ const formatTime = computed(() => {
243
96
  if (props.showMinutes && !props.useCircle) {
244
- return `${totalMinutes.value < 10 ? '0' : ''}${totalMinutes.value}:${secondsValue.value < 10 ? '0' : ''}${secondsValue.value}`
97
+ return `${totalMinutes.value < 10 ? "0" : ""}${totalMinutes.value}:${secondsValue.value < 10 ? "0" : ""}${secondsValue.value}`;
245
98
  } else if (props.useCircle) {
246
- return `:${totalSeconds.value}`
99
+ return `:${totalSeconds.value}`;
247
100
  }
248
-
249
- return String(totalSeconds.value)
250
- })
251
- // endregion ////
252
-
253
- // region actions ////
254
- /**
255
- * Starts to countdown.
256
- */
257
- function start(): void {
101
+ return String(totalSeconds.value);
102
+ });
103
+ function start() {
258
104
  if (counting.value) {
259
- return
105
+ return;
260
106
  }
261
-
262
- counting.value = true
263
-
107
+ counting.value = true;
264
108
  if (!props.needStartImmediately) {
265
- totalMilliseconds.value = Number(props.seconds) * 1000
266
- endTime.value = props.now() + Number(props.seconds) * 1000
109
+ totalMilliseconds.value = Number(props.seconds) * 1e3;
110
+ endTime.value = props.now() + Number(props.seconds) * 1e3;
267
111
  }
268
-
269
112
  if (props.emitEvents) {
270
- emits('start')
113
+ emits("start");
271
114
  }
272
-
273
- if (document?.visibilityState === 'visible') {
274
- continueProcess()
115
+ if (document?.visibilityState === "visible") {
116
+ continueProcess();
275
117
  }
276
118
  }
277
-
278
- /**
279
- * Continues the countdown.
280
- */
281
- function continueProcess(): void {
119
+ function continueProcess() {
282
120
  if (!counting.value) {
283
- return
121
+ return;
284
122
  }
285
-
286
- const delay = Math.min(totalMilliseconds.value, props.interval)
287
-
123
+ const delay = Math.min(totalMilliseconds.value, props.interval);
288
124
  if (delay > 0) {
289
- let init: number
290
- let prev: number
291
- const step = (now: number) => {
125
+ let init;
126
+ let prev;
127
+ const step = (now) => {
292
128
  if (!init) {
293
- init = now
129
+ init = now;
294
130
  }
295
-
296
131
  if (!prev) {
297
- prev = now
132
+ prev = now;
298
133
  }
299
-
300
- const range = now - init
301
-
302
- if (
303
- range >= delay
304
- // Avoid losing time about one second per minute (now - prev ≈ 16ms)
305
- || range + ((now - prev) / 2) >= delay
306
- ) {
307
- progress()
134
+ const range = now - init;
135
+ if (range >= delay || range + (now - prev) / 2 >= delay) {
136
+ progress();
308
137
  } else {
309
- requestId.value = requestAnimationFrame(step)
138
+ requestId.value = requestAnimationFrame(step);
310
139
  }
311
-
312
- prev = now
313
- }
314
-
315
- requestId.value = requestAnimationFrame(step)
140
+ prev = now;
141
+ };
142
+ requestId.value = requestAnimationFrame(step);
316
143
  } else {
317
- stop()
144
+ stop();
318
145
  }
319
146
  }
320
-
321
- /**
322
- * Pauses the countdown.
323
- */
324
- function pause(): void {
325
- cancelAnimationFrame(requestId.value)
147
+ function pause() {
148
+ cancelAnimationFrame(requestId.value);
326
149
  }
327
-
328
- /**
329
- * Progresses to countdown.
330
- */
331
- function progress(): void {
150
+ function progress() {
332
151
  if (!counting.value) {
333
- return
152
+ return;
334
153
  }
335
-
336
- update()
337
-
154
+ update();
338
155
  if (props.emitEvents && totalMilliseconds.value > 0) {
339
- /**
340
- * Countdown progress event.
341
- */
342
- emits('progress', {
156
+ emits("progress", {
343
157
  days: days.value,
344
158
  hours: hours.value,
345
159
  minutes: minutes.value,
@@ -350,114 +164,74 @@ function progress(): void {
350
164
  totalMinutes: totalMinutes.value,
351
165
  totalSeconds: totalSeconds.value,
352
166
  totalMilliseconds: totalMilliseconds.value
353
- })
167
+ });
354
168
  }
355
-
356
- continueProcess()
169
+ continueProcess();
357
170
  }
358
-
359
- /**
360
- * Aborts the countdown.
361
- */
362
- function abort(): void {
171
+ function abort() {
363
172
  if (!counting.value) {
364
- return
173
+ return;
365
174
  }
366
-
367
- pause()
368
- counting.value = false
369
-
175
+ pause();
176
+ counting.value = false;
370
177
  if (props.emitEvents) {
371
- /**
372
- * Countdown abort event.
373
- */
374
- emits('abort')
178
+ emits("abort");
375
179
  }
376
180
  }
377
-
378
- /**
379
- * Stop the countdown.
380
- */
381
- function stop(): void {
181
+ function stop() {
382
182
  if (!counting.value) {
383
- return
183
+ return;
384
184
  }
385
-
386
- pause()
387
- totalMilliseconds.value = 0
388
- counting.value = false
389
-
185
+ pause();
186
+ totalMilliseconds.value = 0;
187
+ counting.value = false;
390
188
  if (props.emitEvents) {
391
- /**
392
- * Countdown end event.
393
- */
394
- emits('end')
189
+ emits("end");
395
190
  }
396
191
  }
397
-
398
- /**
399
- * Updates the count.
400
- */
401
- function update(): void {
192
+ function update() {
402
193
  if (counting.value) {
403
- totalMilliseconds.value = Math.max(0, endTime.value - props.now())
194
+ totalMilliseconds.value = Math.max(0, endTime.value - props.now());
404
195
  }
405
196
  }
406
-
407
- /**
408
- * Restarts the count.
409
- */
410
- function restart(): void {
411
- pause()
412
- totalMilliseconds.value = Number(props.seconds) * 1000
413
- endTime.value = props.now() + Number(props.seconds) * 1000
414
- counting.value = false
415
- start()
197
+ function restart() {
198
+ pause();
199
+ totalMilliseconds.value = Number(props.seconds) * 1e3;
200
+ endTime.value = props.now() + Number(props.seconds) * 1e3;
201
+ counting.value = false;
202
+ start();
416
203
  }
417
-
418
- /**
419
- * Visibility change event handler.
420
- */
421
- function handleVisibilityChange(): void {
204
+ function handleVisibilityChange() {
422
205
  switch (document?.visibilityState) {
423
- case 'visible':
424
- update()
425
- continueProcess()
426
- break
427
-
428
- case 'hidden':
429
- pause()
430
- break
206
+ case "visible":
207
+ update();
208
+ continueProcess();
209
+ break;
210
+ case "hidden":
211
+ pause();
212
+ break;
431
213
  }
432
214
  }
433
- // endregion ////
434
-
435
- // region Round ////
436
- const fullDashArray = computed((): string => {
437
- const fullDashArray = 283
438
-
439
- const calculateTimeFraction = (): number => {
215
+ const fullDashArray = computed(() => {
216
+ const fullDashArray2 = 283;
217
+ const calculateTimeFraction = () => {
440
218
  if (Number(props.seconds) < 0) {
441
- return 1
219
+ return 1;
442
220
  }
443
-
444
- const rawTimeFraction = totalSeconds.value / Number(props.seconds)
445
- return rawTimeFraction - (1 / Number(props.seconds)) * (1 - rawTimeFraction)
446
- }
447
-
221
+ const rawTimeFraction = totalSeconds.value / Number(props.seconds);
222
+ return rawTimeFraction - 1 / Number(props.seconds) * (1 - rawTimeFraction);
223
+ };
448
224
  return [
449
- (calculateTimeFraction() * fullDashArray).toFixed(0),
450
- fullDashArray
451
- ].join(' ')
452
- })
453
- // endregion ////
454
-
225
+ (calculateTimeFraction() * fullDashArray2).toFixed(0),
226
+ fullDashArray2
227
+ ].join(" ");
228
+ });
455
229
  defineExpose({
456
230
  start,
457
231
  abort,
458
232
  stop,
459
233
  restart
460
- })
234
+ });
461
235
  </script>
462
236
 
463
237
  <template>
@@ -491,12 +265,12 @@ defineExpose({
491
265
  <slot name="leading">
492
266
  <Component
493
267
  :is="leadingIconName"
494
- v-if="isLeading && (typeof leadingIconName !== 'undefined')"
268
+ v-if="isLeading && typeof leadingIconName !== 'undefined'"
495
269
  :class="b24ui.leadingIcon({ class: props.b24ui?.leadingIcon })"
496
270
  />
497
271
  <B24Avatar
498
272
  v-else-if="!!avatar"
499
- :size="((props.b24ui?.leadingAvatarSize || b24ui.leadingAvatarSize()) as AvatarProps['size'])"
273
+ :size="props.b24ui?.leadingAvatarSize || b24ui.leadingAvatarSize()"
500
274
  v-bind="avatar"
501
275
  :class="b24ui.leadingAvatar({ class: props.b24ui?.leadingAvatar })"
502
276
  />