pxd 0.0.61 → 0.0.62

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/LICENSE +21 -0
  2. package/dist/components/_internal/dismiss-container.d.vue.ts +28 -0
  3. package/dist/components/_internal/dismiss-container.vue +162 -0
  4. package/dist/components/_internal/popover-arrow.d.vue.ts +9 -0
  5. package/dist/components/_internal/popover-arrow.vue +38 -0
  6. package/dist/components/active-graph/index.vue +4 -4
  7. package/dist/components/avatar/index.vue +5 -7
  8. package/dist/components/avatar-group/index.d.vue.ts +0 -1
  9. package/dist/components/avatar-group/index.vue +1 -1
  10. package/dist/components/backtop/index.vue +1 -1
  11. package/dist/components/badge/index.d.vue.ts +6 -2
  12. package/dist/components/badge/index.vue +18 -4
  13. package/dist/components/badge/types.d.ts +5 -0
  14. package/dist/components/book/index.vue +1 -1
  15. package/dist/components/browser/index.vue +1 -1
  16. package/dist/components/bubble/index.d.vue.ts +22 -0
  17. package/dist/components/bubble/index.vue +59 -0
  18. package/dist/components/bubble/types.d.ts +6 -0
  19. package/dist/components/button/index.d.vue.ts +0 -2
  20. package/dist/components/button/index.vue +30 -21
  21. package/dist/components/button/types.d.ts +3 -2
  22. package/dist/components/button-group/index.d.vue.ts +14 -0
  23. package/dist/components/button-group/index.vue +26 -0
  24. package/dist/components/button-group/types.d.ts +9 -0
  25. package/dist/components/carousel/index.d.vue.ts +3 -3
  26. package/dist/components/carousel/index.vue +146 -113
  27. package/dist/components/carousel/types.d.ts +1 -1
  28. package/dist/components/carousel-item/index.vue +22 -17
  29. package/dist/components/checkbox/index.vue +6 -6
  30. package/dist/components/checkbox-group/index.d.vue.ts +1 -1
  31. package/dist/components/chip/index.d.vue.ts +1 -5
  32. package/dist/components/chip/index.vue +4 -4
  33. package/dist/components/color-selector/index.d.vue.ts +12 -0
  34. package/dist/components/color-selector/index.vue +64 -0
  35. package/dist/components/color-selector/types.d.ts +12 -0
  36. package/dist/components/command-menu/index.d.vue.ts +6 -6
  37. package/dist/components/command-menu/index.vue +23 -32
  38. package/dist/components/command-menu/types.d.ts +1 -1
  39. package/dist/components/command-menu-group/index.vue +15 -6
  40. package/dist/components/command-menu-group/types.d.ts +1 -1
  41. package/dist/components/countdown/index.d.vue.ts +11 -11
  42. package/dist/components/drawer/index.d.vue.ts +8 -8
  43. package/dist/components/drawer/index.vue +13 -10
  44. package/dist/components/drawer/types.d.ts +4 -3
  45. package/dist/components/ellipsis-text/index.d.vue.ts +4 -1
  46. package/dist/components/ellipsis-text/index.vue +84 -107
  47. package/dist/components/ellipsis-text/types.d.ts +2 -1
  48. package/dist/components/error/index.vue +1 -1
  49. package/dist/components/fader/index.vue +5 -9
  50. package/dist/components/gauge/index.vue +34 -29
  51. package/dist/components/grid/index.vue +1 -1
  52. package/dist/components/grid-item/index.vue +1 -1
  53. package/dist/components/hold-button/index.d.vue.ts +8 -10
  54. package/dist/components/hold-button/index.vue +20 -29
  55. package/dist/components/hold-button/types.d.ts +5 -6
  56. package/dist/components/index.d.ts +7 -0
  57. package/dist/components/index.js +7 -0
  58. package/dist/components/input/index.d.vue.ts +8 -8
  59. package/dist/components/input/index.vue +5 -4
  60. package/dist/components/intersection-observer/index.vue +4 -4
  61. package/dist/components/kbd/index.vue +1 -1
  62. package/dist/components/link-button/index.d.vue.ts +4 -4
  63. package/dist/components/link-button/index.vue +9 -8
  64. package/dist/components/link-button/types.d.ts +0 -3
  65. package/dist/components/list/index.d.vue.ts +10 -15
  66. package/dist/components/list/index.vue +58 -131
  67. package/dist/components/list/types.d.ts +4 -4
  68. package/dist/components/list-item/index.d.vue.ts +2 -2
  69. package/dist/components/list-item/index.vue +44 -39
  70. package/dist/components/loading-bar/index.vue +8 -7
  71. package/dist/components/material/index.vue +24 -46
  72. package/dist/components/menu/index.d.vue.ts +6 -8
  73. package/dist/components/menu/index.vue +18 -24
  74. package/dist/components/menu/types.d.ts +1 -2
  75. package/dist/components/message/composables/use-group-expand.d.ts +13 -0
  76. package/dist/components/message/composables/use-group-expand.js +50 -0
  77. package/dist/components/message/composables/use-message-timer.d.ts +9 -0
  78. package/dist/components/message/composables/use-message-timer.js +61 -0
  79. package/dist/components/message/composables/use-promise-message.d.ts +4 -0
  80. package/dist/components/message/composables/use-promise-message.js +49 -0
  81. package/dist/components/message/index.d.vue.ts +6 -33
  82. package/dist/components/message/index.vue +33 -185
  83. package/dist/components/message/types.d.ts +2 -2
  84. package/dist/components/message-item/index.vue +26 -2
  85. package/dist/components/modal/index.d.vue.ts +7 -7
  86. package/dist/components/modal/index.vue +7 -3
  87. package/dist/components/modal/types.d.ts +7 -3
  88. package/dist/components/note/index.vue +2 -2
  89. package/dist/components/number-input/index.d.vue.ts +5 -4
  90. package/dist/components/number-input/index.vue +3 -0
  91. package/dist/components/number-input/types.d.ts +1 -0
  92. package/dist/components/overlay/index.d.vue.ts +6 -3
  93. package/dist/components/overlay/index.vue +63 -68
  94. package/dist/components/overlay/types.d.ts +5 -4
  95. package/dist/components/pagination/index.vue +2 -2
  96. package/dist/components/pin-input/index.d.vue.ts +1 -1
  97. package/dist/components/pin-input/index.vue +7 -6
  98. package/dist/components/placeholder/index.vue +1 -1
  99. package/dist/components/popover/index.d.vue.ts +7 -8
  100. package/dist/components/popover/index.vue +149 -239
  101. package/dist/components/popover/types.d.ts +5 -5
  102. package/dist/components/progress/index.vue +1 -1
  103. package/dist/components/radio/index.vue +2 -2
  104. package/dist/components/resizable/index.vue +43 -51
  105. package/dist/components/resizable/types.d.ts +1 -1
  106. package/dist/components/resizable-handle/index.d.vue.ts +4 -1
  107. package/dist/components/resizable-handle/index.vue +29 -3
  108. package/dist/components/resizable-panel/index.vue +3 -7
  109. package/dist/components/scalable-text/index.d.vue.ts +9 -0
  110. package/dist/components/scalable-text/index.vue +147 -0
  111. package/dist/components/scalable-text/types.d.ts +12 -0
  112. package/dist/components/scrollable/index.d.vue.ts +2 -2
  113. package/dist/components/scrollable/index.vue +4 -3
  114. package/dist/components/separator/index.d.vue.ts +6 -0
  115. package/dist/components/separator/index.vue +18 -0
  116. package/dist/components/separator/types.d.ts +5 -0
  117. package/dist/components/skeleton/index.d.vue.ts +1 -1
  118. package/dist/components/slider/index.d.vue.ts +1 -1
  119. package/dist/components/slider/index.vue +39 -7
  120. package/dist/components/snippet/index.vue +16 -13
  121. package/dist/components/spinner/index.vue +3 -1
  122. package/dist/components/stack/index.d.vue.ts +1 -1
  123. package/dist/components/stack/index.vue +1 -1
  124. package/dist/components/switch/index.d.vue.ts +1 -1
  125. package/dist/components/switch/index.vue +4 -3
  126. package/dist/components/switch-item/index.vue +1 -1
  127. package/dist/components/tabs/index.d.vue.ts +12 -0
  128. package/dist/components/tabs/index.vue +270 -0
  129. package/dist/components/tabs/types.d.ts +12 -0
  130. package/dist/components/tabs-item/index.d.vue.ts +4 -0
  131. package/dist/components/tabs-item/index.vue +16 -0
  132. package/dist/components/tabs-item/types.d.ts +10 -0
  133. package/dist/components/text/index.vue +1 -1
  134. package/dist/components/textarea/index.d.vue.ts +2 -2
  135. package/dist/components/textarea/index.vue +1 -1
  136. package/dist/components/time-picker/index.d.vue.ts +3 -5
  137. package/dist/components/time-picker/index.vue +53 -45
  138. package/dist/components/time-picker/types.d.ts +1 -2
  139. package/dist/components/toggle/index.d.vue.ts +0 -2
  140. package/dist/components/toggle/index.vue +6 -6
  141. package/dist/components/toggle-button/index.vue +8 -6
  142. package/dist/components/tooltip/index.d.vue.ts +1 -1
  143. package/dist/components/tooltip/index.vue +19 -11
  144. package/dist/components/tooltip/types.d.ts +2 -2
  145. package/dist/components/virtual-list/index.d.vue.ts +8 -8
  146. package/dist/components/virtual-list/index.vue +27 -5
  147. package/dist/components/virtual-list/types.d.ts +3 -0
  148. package/dist/composables/index.d.ts +4 -1
  149. package/dist/composables/index.js +4 -1
  150. package/dist/composables/use-browser-observer.js +2 -2
  151. package/dist/composables/use-client-online.js +2 -2
  152. package/dist/composables/use-color-scheme.js +2 -2
  153. package/dist/composables/use-countdown.js +3 -2
  154. package/dist/composables/use-deferred-value.js +2 -2
  155. package/dist/composables/use-delay-destroy.js +11 -6
  156. package/dist/composables/use-document-hidden.js +2 -2
  157. package/dist/composables/use-focus-trap.js +2 -2
  158. package/dist/composables/use-list-filter.d.ts +11 -0
  159. package/dist/composables/use-list-filter.js +56 -0
  160. package/dist/composables/use-list-navigation.d.ts +27 -0
  161. package/dist/composables/use-list-navigation.js +159 -0
  162. package/dist/composables/use-lock-scroll.js +12 -12
  163. package/dist/composables/use-media-query.js +2 -2
  164. package/dist/composables/use-outside-click.d.ts +1 -1
  165. package/dist/composables/use-outside-click.js +8 -11
  166. package/dist/composables/use-overlay-manager.d.ts +18 -0
  167. package/dist/composables/use-overlay-manager.js +80 -0
  168. package/dist/composables/use-popover-responsive.d.ts +6 -8
  169. package/dist/composables/use-popover-responsive.js +9 -12
  170. package/dist/composables/use-repeat-action.js +2 -2
  171. package/dist/composables/use-swipe-gesture.d.ts +65 -0
  172. package/dist/composables/use-swipe-gesture.js +99 -0
  173. package/dist/composables/use-virtual-list.d.ts +5 -3
  174. package/dist/composables/use-virtual-list.js +25 -14
  175. package/dist/composables/use-window-size.js +2 -2
  176. package/dist/constants/size.d.ts +12 -0
  177. package/dist/constants/size.js +12 -0
  178. package/dist/contexts/button.d.ts +5 -0
  179. package/dist/contexts/button.js +5 -0
  180. package/dist/contexts/carousel.d.ts +2 -1
  181. package/dist/contexts/list.d.ts +23 -3
  182. package/dist/contexts/list.js +6 -2
  183. package/dist/contexts/resizable.d.ts +3 -11
  184. package/dist/contexts/tabs.d.ts +15 -0
  185. package/dist/contexts/tabs.js +2 -0
  186. package/dist/locales/en-us.d.ts +4 -4
  187. package/dist/locales/en-us.js +4 -4
  188. package/dist/locales/zh-cn.d.ts +4 -4
  189. package/dist/locales/zh-cn.js +4 -4
  190. package/dist/plugins/dayjs-millisecond-token.js +1 -1
  191. package/dist/styles/source.css +133 -128
  192. package/dist/styles/styles.css +2 -2
  193. package/dist/styles/tw.css +133 -128
  194. package/dist/types/shared/props.d.ts +1 -0
  195. package/dist/types/shared/utils.d.ts +1 -4
  196. package/dist/utils/date.d.ts +3 -3
  197. package/dist/utils/dom.d.ts +1 -0
  198. package/dist/utils/dom.js +4 -0
  199. package/dist/utils/event.d.ts +2 -1
  200. package/dist/utils/event.js +7 -1
  201. package/dist/utils/format.d.ts +3 -3
  202. package/dist/utils/format.js +5 -4
  203. package/dist/utils/fuzzy-search.d.ts +7 -0
  204. package/dist/utils/fuzzy-search.js +61 -0
  205. package/dist/utils/get.d.ts +2 -0
  206. package/dist/utils/get.js +15 -1
  207. package/dist/utils/index.d.ts +10 -11
  208. package/dist/utils/index.js +2 -3
  209. package/dist/utils/ref.d.ts +2 -2
  210. package/dist/utils/{throttle.d.ts → timing.d.ts} +1 -0
  211. package/dist/utils/{throttle.js → timing.js} +4 -2
  212. package/package.json +67 -63
  213. package/volar.d.ts +7 -0
  214. package/dist/components/overlay/overlay-stack.d.ts +0 -3
  215. package/dist/components/overlay/overlay-stack.js +0 -17
  216. package/dist/composables/use-pointer-gesture.d.ts +0 -180
  217. package/dist/composables/use-pointer-gesture.js +0 -406
  218. package/dist/utils/debounce.d.ts +0 -1
  219. package/dist/utils/debounce.js +0 -1
  220. package/dist/utils/regexp.d.ts +0 -8
  221. package/dist/utils/regexp.js +0 -8
  222. package/dist/utils/responsive.d.ts +0 -3
  223. package/dist/utils/responsive.js +0 -14
@@ -0,0 +1,65 @@
1
+ import type { MaybeElementRef } from '../types/shared';
2
+ import type { MaybeRefOrGetter } from 'vue';
3
+ export type SwipeDirection = 'left' | 'right' | 'top' | 'bottom';
4
+ export interface SwipePressState {
5
+ size: number;
6
+ }
7
+ export interface SwipeFollowState {
8
+ /** Movement since the previous event along the active axis (px). */
9
+ delta: number;
10
+ /** Velocity (px / ms) since the previous event along the active axis. */
11
+ velocity: number;
12
+ /** `displacement / containerSize` — signed ratio, typically in the range of -1 to 1. */
13
+ offset: number;
14
+ /** Signed displacement from the start point along the active axis (px). */
15
+ displacement: number;
16
+ }
17
+ export interface SwipeReleaseState {
18
+ /** Whether the gesture qualified as a successful swipe (by velocity or distance). */
19
+ swiped: boolean;
20
+ /** Physical swipe direction. `undefined` when `swiped` is `false`. */
21
+ direction?: SwipeDirection;
22
+ }
23
+ export interface SwipeGestureOptions {
24
+ disabled?: MaybeRefOrGetter<boolean>;
25
+ /**
26
+ * CSS selector for the drag handle element within the container.
27
+ * When set, gesture events bind to this element instead of the container,
28
+ * preventing interference with scrollable content inside the container.
29
+ */
30
+ handleSelector?: string;
31
+ /**
32
+ * Swipe axis. Reactive — accepts a ref or getter.
33
+ * @default 'horizontal'
34
+ */
35
+ direction?: MaybeRefOrGetter<'horizontal' | 'vertical'>;
36
+ /**
37
+ * Minimum swipe distance (px) for a successful swipe.
38
+ * @default 10
39
+ */
40
+ swipeThreshold?: number;
41
+ /**
42
+ * Fraction of the container size (0–1) the finger must travel
43
+ * for a slow-drag to count as a successful swipe.
44
+ * @default 0.35
45
+ */
46
+ distanceThreshold?: number;
47
+ /**
48
+ * Minimum velocity (px / ms) for a quick-flick to count as a swipe,
49
+ * regardless of distance traveled.
50
+ * @default 0.3
51
+ */
52
+ velocityThreshold?: number;
53
+ /** Fires when the pointer touches down and the gesture begins. */
54
+ onPress?: (state: SwipePressState) => void;
55
+ /** Fires continuously while the pointer moves. */
56
+ onFollow?: (state: SwipeFollowState) => void;
57
+ /**
58
+ * Fires on pointer-up or pointer-cancel.
59
+ * Check `state.swiped` to decide whether to commit the transition or snap back.
60
+ */
61
+ onRelease?: (state: SwipeReleaseState) => void;
62
+ }
63
+ export declare function useSwipeGesture(containerRef: MaybeElementRef<HTMLElement>, options?: SwipeGestureOptions): {
64
+ stop: () => void;
65
+ };
@@ -0,0 +1,99 @@
1
+ import Core from "@any-touch/core";
2
+ import Pan from "@any-touch/pan";
3
+ import { onScopeDispose, watch } from "vue";
4
+ import { toValue, unrefElement } from "../utils/ref.js";
5
+ export function useSwipeGesture(containerRef, options = {}) {
6
+ const {
7
+ handleSelector,
8
+ distanceThreshold = 0.35,
9
+ velocityThreshold = 0.3,
10
+ swipeThreshold = 10,
11
+ onPress,
12
+ onFollow,
13
+ onRelease
14
+ } = options;
15
+ let at = null;
16
+ function isHorizontal() {
17
+ return (toValue(options.direction) ?? "horizontal") === "horizontal";
18
+ }
19
+ function resolveDirection(displacement, horizontal) {
20
+ return horizontal ? displacement > 0 ? "right" : "left" : displacement > 0 ? "bottom" : "top";
21
+ }
22
+ function bind() {
23
+ const container = unrefElement(containerRef);
24
+ if (!container) {
25
+ return;
26
+ }
27
+ const handle = handleSelector ? container.querySelector(handleSelector) : container;
28
+ if (!handle) {
29
+ return;
30
+ }
31
+ at = new Core(handle);
32
+ at.use(Pan, { threshold: swipeThreshold });
33
+ let containerSize = 0;
34
+ at.on("panstart", () => {
35
+ const h = isHorizontal();
36
+ containerSize = h ? container.offsetWidth : container.offsetHeight;
37
+ onPress?.({ size: containerSize });
38
+ });
39
+ at.on("panmove", (e) => {
40
+ const h = isHorizontal();
41
+ const displacement = h ? e.displacementX : e.displacementY;
42
+ const delta = h ? e.deltaX : e.deltaY;
43
+ const velocity = h ? e.velocityX : e.velocityY;
44
+ onFollow?.({
45
+ delta,
46
+ velocity,
47
+ displacement,
48
+ offset: containerSize > 0 ? displacement / containerSize : 0
49
+ });
50
+ });
51
+ at.on("panend", (e) => {
52
+ const h = isHorizontal();
53
+ const displacement = h ? e.displacementX : e.displacementY;
54
+ const velocity = h ? e.velocityX : e.velocityY;
55
+ if (containerSize === 0 || displacement === 0) {
56
+ onRelease?.({ swiped: false });
57
+ return;
58
+ }
59
+ const meetsVelocity = velocity >= velocityThreshold;
60
+ const meetsDistance = Math.abs(displacement) / containerSize >= distanceThreshold;
61
+ if (meetsVelocity || meetsDistance) {
62
+ onRelease?.({ swiped: true, direction: resolveDirection(displacement, h) });
63
+ } else {
64
+ onRelease?.({ swiped: false });
65
+ }
66
+ });
67
+ at.on("pancancel", () => {
68
+ onRelease?.({ swiped: false });
69
+ });
70
+ }
71
+ function unbind() {
72
+ if (!at) {
73
+ return;
74
+ }
75
+ at.destroy();
76
+ at = null;
77
+ }
78
+ function stop() {
79
+ unwatch();
80
+ unbind();
81
+ }
82
+ const unwatch = watch(
83
+ () => [unrefElement(containerRef), toValue(options.disabled)],
84
+ ([el, disabled]) => {
85
+ if (!el || disabled) {
86
+ unbind();
87
+ return;
88
+ }
89
+ bind();
90
+ },
91
+ { immediate: true }
92
+ );
93
+ onScopeDispose(() => {
94
+ stop();
95
+ });
96
+ return {
97
+ stop
98
+ };
99
+ }
@@ -11,6 +11,8 @@ export interface VirtualListOptions {
11
11
  listData?: any[];
12
12
  itemSize?: number;
13
13
  overScan?: number;
14
+ columnGap?: number;
15
+ columnCount?: number;
14
16
  onBottom?: () => void | Promise<void>;
15
17
  bottomThreshold?: number;
16
18
  }
@@ -18,8 +20,8 @@ export declare function useVirtualList<Options extends VirtualListOptions>(conta
18
20
  virtualItems: import("vue").ComputedRef<VirtualListItem[]>;
19
21
  totalSize: import("vue").ComputedRef<number>;
20
22
  measureElement: (el: Element | ComponentPublicInstance | null) => void;
21
- scrollToIndex: any;
22
- scrollToOffset: any;
23
- scrollBy: any;
23
+ scrollToIndex: (index: number, { align: initialAlign, behavior, }?: import("@tanstack/virtual-core").ScrollToOptions) => void;
24
+ scrollToOffset: (toOffset: number, { align, behavior }?: import("@tanstack/virtual-core").ScrollToOptions) => void;
25
+ scrollBy: (delta: number, { behavior }?: import("@tanstack/virtual-core").ScrollToOptions) => void;
24
26
  getVirtualizer: () => Virtualizer<HTMLElement, HTMLElement>;
25
27
  };
@@ -4,12 +4,14 @@ import {
4
4
  observeElementRect,
5
5
  Virtualizer
6
6
  } from "@tanstack/virtual-core";
7
- import { computed, onMounted, onUnmounted, shallowRef, watch } from "vue";
7
+ import { computed, onMounted, onScopeDispose, watch, shallowRef } from "vue";
8
8
  import { toValue } from "../utils/ref.js";
9
9
  const DEFAULTS = {
10
10
  status: "",
11
11
  itemSize: 50,
12
- overScan: 2
12
+ overScan: 2,
13
+ columnGap: 0,
14
+ columnCount: 1
13
15
  };
14
16
  export function useVirtualList(containerRef, options) {
15
17
  let reachBottomFired = false;
@@ -31,6 +33,9 @@ export function useVirtualList(containerRef, options) {
31
33
  estimateSize: () => options.itemSize ?? DEFAULTS.itemSize,
32
34
  getItemKey,
33
35
  overscan: options.overScan ?? DEFAULTS.overScan,
36
+ lanes: options.columnCount ?? DEFAULTS.columnCount,
37
+ gap: options.columnGap ?? DEFAULTS.columnGap,
38
+ laneAssignmentMode: "measured",
34
39
  observeElementRect,
35
40
  observeElementOffset,
36
41
  scrollToFn: elementScroll,
@@ -54,7 +59,7 @@ export function useVirtualList(containerRef, options) {
54
59
  if (scrollBottom >= totalSize2 - threshold) {
55
60
  if (!reachBottomFired) {
56
61
  reachBottomFired = true;
57
- onBottom();
62
+ void onBottom();
58
63
  }
59
64
  } else {
60
65
  reachBottomFired = false;
@@ -69,33 +74,39 @@ export function useVirtualList(containerRef, options) {
69
74
  void triggerVersion.value;
70
75
  return virtualizer.getTotalSize();
71
76
  });
77
+ function measureElement(el) {
78
+ if (!el) {
79
+ virtualizer.measureElement(null);
80
+ return;
81
+ }
82
+ const htmlEl = el instanceof HTMLElement ? el : el.$el;
83
+ virtualizer.measureElement(htmlEl);
84
+ }
72
85
  function updateVirtualizer() {
73
86
  virtualizer.setOptions({
74
87
  ...virtualizer.options,
75
88
  count: options.listData?.length ?? 0,
76
89
  estimateSize: () => options.itemSize ?? DEFAULTS.itemSize,
77
- getItemKey
90
+ getItemKey,
91
+ lanes: options.columnCount ?? DEFAULTS.columnCount,
92
+ gap: options.columnGap ?? DEFAULTS.columnGap
78
93
  });
79
94
  virtualizer._willUpdate();
80
95
  triggerVersion.value++;
81
96
  }
82
- watch(() => [options.itemSize, options.dataKey], updateVirtualizer);
97
+ watch(
98
+ () => [options.itemSize, options.dataKey, options.columnCount, options.columnGap],
99
+ updateVirtualizer
100
+ );
83
101
  watch(() => [options.listData, options.listData?.length], updateVirtualizer);
84
102
  onMounted(() => {
85
103
  virtualizer._willUpdate();
86
104
  cleanup = virtualizer._didMount();
87
105
  });
88
- onUnmounted(() => {
106
+ onScopeDispose(() => {
89
107
  cleanup?.();
108
+ cleanup = void 0;
90
109
  });
91
- function measureElement(el) {
92
- if (!el) {
93
- virtualizer.measureElement(null);
94
- return;
95
- }
96
- const htmlEl = el instanceof HTMLElement ? el : el.$el;
97
- virtualizer.measureElement(htmlEl);
98
- }
99
110
  return {
100
111
  virtualItems,
101
112
  totalSize,
@@ -1,4 +1,4 @@
1
- import { onBeforeUnmount, onMounted, shallowRef } from "vue";
1
+ import { onScopeDispose, onMounted, shallowRef } from "vue";
2
2
  import { cachedOn, cachedOff } from "../utils/event.js";
3
3
  import { isServer } from "../utils/is.js";
4
4
  export function useWindowSize() {
@@ -16,7 +16,7 @@ export function useWindowSize() {
16
16
  cachedOn(window, "resize", updateSize);
17
17
  cachedOn(window, "orientationchange", updateSize);
18
18
  });
19
- onBeforeUnmount(() => {
19
+ onScopeDispose(() => {
20
20
  cachedOff(window, "resize", updateSize);
21
21
  cachedOff(window, "orientationchange", updateSize);
22
22
  });
@@ -0,0 +1,12 @@
1
+ export declare const BASIC_HEIGHTS: {
2
+ xs: string;
3
+ sm: string;
4
+ md: string;
5
+ lg: string;
6
+ };
7
+ export declare const BASIC_MIN_HEIGHTS: {
8
+ xs: string;
9
+ sm: string;
10
+ md: string;
11
+ lg: string;
12
+ };
@@ -0,0 +1,12 @@
1
+ export const BASIC_HEIGHTS = {
2
+ xs: "h-6",
3
+ sm: "h-7.5",
4
+ md: "h-9",
5
+ lg: "h-11"
6
+ };
7
+ export const BASIC_MIN_HEIGHTS = {
8
+ xs: "min-h-6",
9
+ sm: "min-h-7.5",
10
+ md: "min-h-9",
11
+ lg: "min-h-11"
12
+ };
@@ -0,0 +1,5 @@
1
+ import type { ButtonGroupProps } from '../components/button-group/types';
2
+ export interface ButtonGroupContext {
3
+ props: ButtonGroupProps;
4
+ }
5
+ export declare const provideButtonGroupContext: (contextValue: ButtonGroupContext) => ButtonGroupContext, useButtonGroupContext: (fallback?: ButtonGroupContext | null | undefined) => ButtonGroupContext | null;
@@ -0,0 +1,5 @@
1
+ import { createContext } from "../utils/context.js";
2
+ export const [provideButtonGroupContext, useButtonGroupContext] = createContext(
3
+ "ButtonGroup",
4
+ null
5
+ );
@@ -2,11 +2,12 @@ import type { CarouselProps } from '../components/carousel/types';
2
2
  import type { Ref } from 'vue';
3
3
  export interface CarouselState {
4
4
  uid: string;
5
- translateItem: (index: number, activeIndex: number) => void;
5
+ updateItemIndex: (index: number) => void;
6
6
  }
7
7
  export interface CarouselContext {
8
8
  props: CarouselProps;
9
9
  carousels: Ref<CarouselState[]>;
10
+ virtualIndex: Ref<number>;
10
11
  registerCarousel: (state: CarouselState) => void;
11
12
  unregisterCarousel: (id: string) => void;
12
13
  }
@@ -1,8 +1,28 @@
1
1
  import type { ListOption } from '../components/list/types';
2
- import type { Ref } from 'vue';
2
+ import type { ComputedRef, Ref } from 'vue';
3
3
  export interface ListContext {
4
- activeValue: Ref<string>;
4
+ activeIndex: Ref<number>;
5
+ registerItem: (el: HTMLElement, indexRef: Ref<number>) => void;
6
+ unregisterItem: (el: HTMLElement) => void;
5
7
  onOptionClick: ListOption['onClick'];
6
8
  }
7
9
  export declare const provideListContext: (contextValue: ListContext) => ListContext, useListContext: ((fallback?: ListContext | undefined) => ListContext) & ((fallback: null) => ListContext | null);
8
- export declare const provideListFilterValue: (contextValue: Ref<string, string>) => Ref<string, string>, useListFilterValue: (fallback?: Ref<string, string> | null | undefined) => Ref<string, string> | null;
10
+ export interface ListFilterItemPayload {
11
+ groupId: string | null;
12
+ getValue: () => string;
13
+ getKeywords: () => string[];
14
+ }
15
+ export interface ListFilterContext {
16
+ searchValue: Ref<string>;
17
+ visibleCount: ComputedRef<number>;
18
+ isItemVisible: (id: string) => boolean;
19
+ isGroupVisible: (id: string) => boolean;
20
+ registerItem: (id: string, payload: ListFilterItemPayload) => void;
21
+ unregisterItem: (id: string) => void;
22
+ }
23
+ export declare const provideListFilterContext: (contextValue: ListFilterContext) => ListFilterContext, useListFilterContext: (fallback?: ListFilterContext | null | undefined) => ListFilterContext | null;
24
+ /**
25
+ * Provided by group containers so nested list items know which group to
26
+ * register into.
27
+ */
28
+ export declare const provideListFilterGroupId: (contextValue: string) => string, useListFilterGroupId: (fallback?: string | null | undefined) => string | null;
@@ -1,6 +1,10 @@
1
1
  import { createContext } from "../utils/context.js";
2
2
  export const [provideListContext, useListContext] = createContext("List");
3
- export const [provideListFilterValue, useListFilterValue] = createContext(
4
- "ListFilterValue",
3
+ export const [provideListFilterContext, useListFilterContext] = createContext(
4
+ "ListFilter",
5
+ null
6
+ );
7
+ export const [provideListFilterGroupId, useListFilterGroupId] = createContext(
8
+ "ListFilterGroupId",
5
9
  null
6
10
  );
@@ -1,15 +1,8 @@
1
- import type { ComponentDirection } from '../types/shared/props';
1
+ import type { ResizableProps } from '../components/resizable/types';
2
2
  import type { Ref } from 'vue';
3
- interface PanelConfig {
4
- id: string;
5
- order: number;
6
- size?: number | null;
7
- minSize?: number;
8
- }
9
3
  export interface ResizableContext {
10
- direction: Ref<ComponentDirection>;
11
- panelSizes: Ref<number[]>;
12
- panelConfigs: Ref<PanelConfig[]>;
4
+ props: ResizableProps;
5
+ panelSizes: Ref<Record<string, number>>;
13
6
  getPanelSize: (id: string) => number;
14
7
  onHandleDrag: (id: string, delta: {
15
8
  deltaX: number;
@@ -32,4 +25,3 @@ export interface ResizableContext {
32
25
  unregisterHandle: (id: string) => void;
33
26
  }
34
27
  export declare const provideResizableContext: (contextValue: ResizableContext) => ResizableContext, useResizableContext: ((fallback?: ResizableContext | undefined) => ResizableContext) & ((fallback: null) => ResizableContext | null);
35
- export {};
@@ -0,0 +1,15 @@
1
+ import type { TabsEmits, TabsProps, TabsValue } from '../components/tabs/types';
2
+ import type { ComponentLabel } from '../types/shared';
3
+ import type { EmitFn, Slots } from 'vue';
4
+ export interface TabsItemState {
5
+ id: string;
6
+ value: TabsValue;
7
+ label?: ComponentLabel;
8
+ disabled?: boolean;
9
+ slots: Slots;
10
+ }
11
+ export interface TabsContext {
12
+ props: TabsProps;
13
+ emits: EmitFn<TabsEmits>;
14
+ }
15
+ export declare const provideTabsContext: (contextValue: TabsContext) => TabsContext, useTabsContext: ((fallback?: TabsContext | undefined) => TabsContext) & ((fallback: null) => TabsContext | null);
@@ -0,0 +1,2 @@
1
+ import { createContext } from "../utils/context.js";
2
+ export const [provideTabsContext, useTabsContext] = createContext("Tabs");
@@ -31,14 +31,14 @@ declare const _default: {
31
31
  next: string;
32
32
  prev: string;
33
33
  };
34
- empty: {
35
- search: string;
36
- noData: string;
37
- };
38
34
  confirm: {
39
35
  ok: string;
40
36
  conform: string;
41
37
  cancel: string;
42
38
  };
39
+ results: {
40
+ searchText: string;
41
+ noData: string;
42
+ };
43
43
  };
44
44
  export default _default;
@@ -31,13 +31,13 @@ export default {
31
31
  next: "Next",
32
32
  prev: "Previous"
33
33
  },
34
- empty: {
35
- search: "No results found for",
36
- noData: "No data available"
37
- },
38
34
  confirm: {
39
35
  ok: "OK",
40
36
  conform: "Confirm",
41
37
  cancel: "Cancel"
38
+ },
39
+ results: {
40
+ searchText: "No results found for",
41
+ noData: "No data available"
42
42
  }
43
43
  };
@@ -31,14 +31,14 @@ declare const _default: {
31
31
  next: string;
32
32
  prev: string;
33
33
  };
34
- empty: {
35
- search: string;
36
- noData: string;
37
- };
38
34
  confirm: {
39
35
  ok: string;
40
36
  conform: string;
41
37
  cancel: string;
42
38
  };
39
+ results: {
40
+ searchText: string;
41
+ noData: string;
42
+ };
43
43
  };
44
44
  export default _default;
@@ -31,13 +31,13 @@ export default {
31
31
  next: "\u4E4B\u540E",
32
32
  prev: "\u4E4B\u524D"
33
33
  },
34
- empty: {
35
- search: "\u672A\u627E\u5230\u7ED3\u679C",
36
- noData: "\u6682\u65E0\u6570\u636E"
37
- },
38
34
  confirm: {
39
35
  ok: "\u786E\u5B9A",
40
36
  conform: "\u786E\u8BA4",
41
37
  cancel: "\u53D6\u6D88"
38
+ },
39
+ results: {
40
+ searchText: "\u672A\u627E\u5230\u7ED3\u679C\uFF1A",
41
+ noData: "\u6682\u65E0\u6570\u636E"
42
42
  }
43
43
  };
@@ -16,7 +16,7 @@ function processFormat(ms, formatStr, maxDigits) {
16
16
  const msValue = normalizeMilliseconds(ms);
17
17
  return replaceToken(formatStr, msValue, maxDigits);
18
18
  }
19
- const millisecondTokenPlugin = (options = {}, DayjsClass, dayjsFactory) => {
19
+ const millisecondTokenPlugin = (options, DayjsClass, dayjsFactory) => {
20
20
  const maxDigits = Math.max(1, Math.min(3, options?.maxDigits ?? 3));
21
21
  const originalFormat = DayjsClass.prototype.format;
22
22
  const originalDurationFormat = dayjsFactory.duration?.(0)?.format;