pxd 0.0.61 → 0.0.63
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.
- package/LICENSE +21 -0
- package/dist/components/_internal/dismiss-container.d.vue.ts +28 -0
- package/dist/components/_internal/dismiss-container.vue +162 -0
- package/dist/components/_internal/popover-arrow.d.vue.ts +9 -0
- package/dist/components/_internal/popover-arrow.vue +38 -0
- package/dist/components/active-graph/index.vue +4 -4
- package/dist/components/avatar/index.vue +5 -7
- package/dist/components/avatar-group/index.d.vue.ts +0 -1
- package/dist/components/avatar-group/index.vue +1 -1
- package/dist/components/backtop/index.vue +1 -1
- package/dist/components/badge/index.d.vue.ts +5 -1
- package/dist/components/badge/index.vue +18 -4
- package/dist/components/badge/types.d.ts +5 -0
- package/dist/components/book/index.vue +1 -1
- package/dist/components/browser/index.vue +1 -1
- package/dist/components/bubble/index.d.vue.ts +22 -0
- package/dist/components/bubble/index.vue +59 -0
- package/dist/components/bubble/types.d.ts +6 -0
- package/dist/components/button/index.d.vue.ts +0 -2
- package/dist/components/button/index.vue +30 -21
- package/dist/components/button/types.d.ts +3 -2
- package/dist/components/button-group/index.d.vue.ts +14 -0
- package/dist/components/button-group/index.vue +26 -0
- package/dist/components/button-group/types.d.ts +9 -0
- package/dist/components/carousel/index.d.vue.ts +3 -3
- package/dist/components/carousel/index.vue +146 -113
- package/dist/components/carousel/types.d.ts +1 -1
- package/dist/components/carousel-item/index.vue +22 -17
- package/dist/components/checkbox/index.vue +6 -6
- package/dist/components/checkbox-group/index.d.vue.ts +1 -1
- package/dist/components/chip/index.d.vue.ts +1 -5
- package/dist/components/chip/index.vue +4 -4
- package/dist/components/color-selector/index.d.vue.ts +12 -0
- package/dist/components/color-selector/index.vue +64 -0
- package/dist/components/color-selector/types.d.ts +12 -0
- package/dist/components/command-menu/index.d.vue.ts +6 -6
- package/dist/components/command-menu/index.vue +23 -32
- package/dist/components/command-menu/types.d.ts +1 -1
- package/dist/components/command-menu-group/index.vue +15 -6
- package/dist/components/command-menu-group/types.d.ts +1 -1
- package/dist/components/countdown/index.d.vue.ts +11 -11
- package/dist/components/drawer/index.d.vue.ts +8 -8
- package/dist/components/drawer/index.vue +13 -10
- package/dist/components/drawer/types.d.ts +4 -3
- package/dist/components/ellipsis-text/index.d.vue.ts +4 -1
- package/dist/components/ellipsis-text/index.vue +84 -107
- package/dist/components/ellipsis-text/types.d.ts +2 -1
- package/dist/components/error/index.vue +1 -1
- package/dist/components/fader/index.vue +5 -9
- package/dist/components/gauge/index.vue +34 -29
- package/dist/components/grid/index.vue +1 -1
- package/dist/components/grid-item/index.vue +1 -1
- package/dist/components/hold-button/index.d.vue.ts +8 -10
- package/dist/components/hold-button/index.vue +20 -29
- package/dist/components/hold-button/types.d.ts +5 -6
- package/dist/components/index.d.ts +7 -0
- package/dist/components/index.js +7 -0
- package/dist/components/input/index.d.vue.ts +8 -8
- package/dist/components/input/index.vue +5 -4
- package/dist/components/intersection-observer/index.vue +4 -4
- package/dist/components/kbd/index.vue +1 -1
- package/dist/components/link-button/index.d.vue.ts +4 -4
- package/dist/components/link-button/index.vue +9 -8
- package/dist/components/link-button/types.d.ts +0 -3
- package/dist/components/list/index.d.vue.ts +10 -15
- package/dist/components/list/index.vue +58 -131
- package/dist/components/list/types.d.ts +4 -4
- package/dist/components/list-item/index.d.vue.ts +2 -2
- package/dist/components/list-item/index.vue +44 -39
- package/dist/components/loading-bar/index.vue +8 -7
- package/dist/components/material/index.vue +24 -46
- package/dist/components/menu/index.d.vue.ts +6 -8
- package/dist/components/menu/index.vue +18 -24
- package/dist/components/menu/types.d.ts +1 -2
- package/dist/components/message/composables/use-group-expand.d.ts +13 -0
- package/dist/components/message/composables/use-group-expand.js +50 -0
- package/dist/components/message/composables/use-message-timer.d.ts +9 -0
- package/dist/components/message/composables/use-message-timer.js +61 -0
- package/dist/components/message/composables/use-promise-message.d.ts +4 -0
- package/dist/components/message/composables/use-promise-message.js +49 -0
- package/dist/components/message/index.d.vue.ts +6 -33
- package/dist/components/message/index.vue +33 -185
- package/dist/components/message/types.d.ts +2 -2
- package/dist/components/message-item/index.vue +26 -2
- package/dist/components/modal/index.d.vue.ts +7 -7
- package/dist/components/modal/index.vue +7 -3
- package/dist/components/modal/types.d.ts +7 -3
- package/dist/components/note/index.vue +2 -2
- package/dist/components/number-input/index.d.vue.ts +5 -4
- package/dist/components/number-input/index.vue +3 -0
- package/dist/components/number-input/types.d.ts +1 -0
- package/dist/components/overlay/index.d.vue.ts +6 -3
- package/dist/components/overlay/index.vue +63 -68
- package/dist/components/overlay/types.d.ts +5 -4
- package/dist/components/pagination/index.vue +2 -2
- package/dist/components/pin-input/index.d.vue.ts +1 -1
- package/dist/components/pin-input/index.vue +7 -6
- package/dist/components/placeholder/index.vue +1 -1
- package/dist/components/popover/index.d.vue.ts +7 -8
- package/dist/components/popover/index.vue +149 -239
- package/dist/components/popover/types.d.ts +5 -5
- package/dist/components/progress/index.vue +1 -1
- package/dist/components/radio/index.vue +2 -2
- package/dist/components/resizable/index.vue +43 -51
- package/dist/components/resizable/types.d.ts +1 -1
- package/dist/components/resizable-handle/index.d.vue.ts +4 -1
- package/dist/components/resizable-handle/index.vue +29 -3
- package/dist/components/resizable-panel/index.vue +3 -7
- package/dist/components/scalable-text/index.d.vue.ts +9 -0
- package/dist/components/scalable-text/index.vue +147 -0
- package/dist/components/scalable-text/types.d.ts +12 -0
- package/dist/components/scrollable/index.d.vue.ts +2 -2
- package/dist/components/scrollable/index.vue +4 -3
- package/dist/components/separator/index.d.vue.ts +6 -0
- package/dist/components/separator/index.vue +18 -0
- package/dist/components/separator/types.d.ts +5 -0
- package/dist/components/skeleton/index.d.vue.ts +1 -1
- package/dist/components/slider/index.d.vue.ts +1 -1
- package/dist/components/slider/index.vue +39 -7
- package/dist/components/snippet/index.vue +16 -13
- package/dist/components/spinner/index.vue +3 -1
- package/dist/components/stack/index.d.vue.ts +1 -1
- package/dist/components/stack/index.vue +1 -1
- package/dist/components/switch/index.d.vue.ts +1 -1
- package/dist/components/switch/index.vue +4 -3
- package/dist/components/switch-item/index.vue +1 -1
- package/dist/components/tabs/index.d.vue.ts +12 -0
- package/dist/components/tabs/index.vue +270 -0
- package/dist/components/tabs/types.d.ts +12 -0
- package/dist/components/tabs-item/index.d.vue.ts +4 -0
- package/dist/components/tabs-item/index.vue +16 -0
- package/dist/components/tabs-item/types.d.ts +10 -0
- package/dist/components/text/index.vue +1 -1
- package/dist/components/textarea/index.d.vue.ts +2 -2
- package/dist/components/textarea/index.vue +1 -1
- package/dist/components/time-picker/index.d.vue.ts +3 -5
- package/dist/components/time-picker/index.vue +53 -45
- package/dist/components/time-picker/types.d.ts +1 -2
- package/dist/components/toggle/index.d.vue.ts +0 -2
- package/dist/components/toggle/index.vue +6 -6
- package/dist/components/toggle-button/index.vue +8 -6
- package/dist/components/tooltip/index.d.vue.ts +1 -1
- package/dist/components/tooltip/index.vue +19 -11
- package/dist/components/tooltip/types.d.ts +2 -2
- package/dist/components/virtual-list/index.d.vue.ts +8 -8
- package/dist/components/virtual-list/index.vue +27 -5
- package/dist/components/virtual-list/types.d.ts +3 -0
- package/dist/composables/index.d.ts +4 -1
- package/dist/composables/index.js +4 -1
- package/dist/composables/use-browser-observer.js +2 -2
- package/dist/composables/use-client-online.js +2 -2
- package/dist/composables/use-color-scheme.js +2 -2
- package/dist/composables/use-countdown.js +3 -2
- package/dist/composables/use-deferred-value.js +2 -2
- package/dist/composables/use-delay-destroy.js +11 -6
- package/dist/composables/use-document-hidden.js +2 -2
- package/dist/composables/use-focus-trap.js +2 -2
- package/dist/composables/use-list-filter.d.ts +11 -0
- package/dist/composables/use-list-filter.js +56 -0
- package/dist/composables/use-list-navigation.d.ts +27 -0
- package/dist/composables/use-list-navigation.js +159 -0
- package/dist/composables/use-lock-scroll.js +12 -12
- package/dist/composables/use-media-query.js +2 -2
- package/dist/composables/use-outside-click.d.ts +1 -1
- package/dist/composables/use-outside-click.js +8 -11
- package/dist/composables/use-overlay-manager.d.ts +18 -0
- package/dist/composables/use-overlay-manager.js +80 -0
- package/dist/composables/use-popover-responsive.d.ts +6 -8
- package/dist/composables/use-popover-responsive.js +9 -12
- package/dist/composables/use-repeat-action.js +2 -2
- package/dist/composables/use-swipe-gesture.d.ts +65 -0
- package/dist/composables/use-swipe-gesture.js +99 -0
- package/dist/composables/use-virtual-list.d.ts +5 -3
- package/dist/composables/use-virtual-list.js +25 -14
- package/dist/composables/use-window-size.js +2 -2
- package/dist/constants/size.d.ts +12 -0
- package/dist/constants/size.js +12 -0
- package/dist/contexts/button.d.ts +5 -0
- package/dist/contexts/button.js +5 -0
- package/dist/contexts/carousel.d.ts +2 -1
- package/dist/contexts/list.d.ts +23 -3
- package/dist/contexts/list.js +6 -2
- package/dist/contexts/resizable.d.ts +3 -11
- package/dist/contexts/tabs.d.ts +15 -0
- package/dist/contexts/tabs.js +2 -0
- package/dist/locales/en-us.d.ts +4 -4
- package/dist/locales/en-us.js +4 -4
- package/dist/locales/zh-cn.d.ts +4 -4
- package/dist/locales/zh-cn.js +4 -4
- package/dist/plugins/dayjs-millisecond-token.js +1 -1
- package/dist/styles/source.css +133 -128
- package/dist/styles/styles.css +2 -2
- package/dist/styles/tw.css +133 -128
- package/dist/types/shared/props.d.ts +1 -0
- package/dist/types/shared/utils.d.ts +1 -4
- package/dist/utils/date.d.ts +3 -3
- package/dist/utils/dom.d.ts +1 -0
- package/dist/utils/dom.js +4 -0
- package/dist/utils/event.d.ts +2 -1
- package/dist/utils/event.js +7 -1
- package/dist/utils/format.d.ts +3 -3
- package/dist/utils/format.js +5 -4
- package/dist/utils/fuzzy-search.d.ts +7 -0
- package/dist/utils/fuzzy-search.js +61 -0
- package/dist/utils/get.d.ts +2 -0
- package/dist/utils/get.js +15 -1
- package/dist/utils/index.d.ts +10 -11
- package/dist/utils/index.js +2 -3
- package/dist/utils/ref.d.ts +2 -2
- package/dist/utils/{throttle.d.ts → timing.d.ts} +1 -0
- package/dist/utils/{throttle.js → timing.js} +4 -2
- package/package.json +40 -37
- package/volar.d.ts +7 -0
- package/dist/components/overlay/overlay-stack.d.ts +0 -3
- package/dist/components/overlay/overlay-stack.js +0 -17
- package/dist/composables/use-pointer-gesture.d.ts +0 -180
- package/dist/composables/use-pointer-gesture.js +0 -406
- package/dist/utils/debounce.d.ts +0 -1
- package/dist/utils/debounce.js +0 -1
- package/dist/utils/regexp.d.ts +0 -8
- package/dist/utils/regexp.js +0 -8
- package/dist/utils/responsive.d.ts +0 -3
- 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:
|
|
22
|
-
scrollToOffset:
|
|
23
|
-
scrollBy:
|
|
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,
|
|
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(
|
|
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
|
-
|
|
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 {
|
|
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
|
-
|
|
19
|
+
onScopeDispose(() => {
|
|
20
20
|
cachedOff(window, "resize", updateSize);
|
|
21
21
|
cachedOff(window, "orientationchange", updateSize);
|
|
22
22
|
});
|
|
@@ -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;
|
|
@@ -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
|
-
|
|
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
|
}
|
package/dist/contexts/list.d.ts
CHANGED
|
@@ -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
|
-
|
|
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
|
|
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;
|
package/dist/contexts/list.js
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import { createContext } from "../utils/context.js";
|
|
2
2
|
export const [provideListContext, useListContext] = createContext("List");
|
|
3
|
-
export const [
|
|
4
|
-
"
|
|
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 {
|
|
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
|
-
|
|
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);
|
package/dist/locales/en-us.d.ts
CHANGED
|
@@ -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;
|
package/dist/locales/en-us.js
CHANGED
|
@@ -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
|
};
|
package/dist/locales/zh-cn.d.ts
CHANGED
|
@@ -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;
|
package/dist/locales/zh-cn.js
CHANGED
|
@@ -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
|
|
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;
|