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