pxd 0.1.2 → 0.1.3
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/dist/components/_internal/calendar-day.vue +19 -19
- package/dist/components/_internal/dismiss-container.d.vue.ts +1 -1
- package/dist/components/_internal/dismiss-container.vue +19 -19
- package/dist/components/_internal/loading-mask.vue +9 -1
- package/dist/components/_internal/mention-editor.d.vue.ts +1 -1
- package/dist/components/_internal/mention-editor.vue +1 -1
- package/dist/components/_internal/popover-arrow.d.vue.ts +1 -1
- package/dist/components/_internal/popover-arrow.vue +1 -1
- package/dist/components/{steps → _internal}/step-item.d.vue.ts +1 -1
- package/dist/components/{steps → _internal}/step-item.vue +1 -1
- package/dist/components/_internal/tree-node.d.vue.ts +20 -20
- package/dist/components/_internal/tree-node.vue +53 -45
- package/dist/components/active-graph/index.d.vue.ts +2 -2
- package/dist/components/approval-card/index.d.vue.ts +1 -1
- package/dist/components/approval-card/index.vue +34 -17
- package/dist/components/approval-card/types.d.ts +1 -1
- package/dist/components/avatar/index.d.vue.ts +2 -2
- package/dist/components/avatar/index.vue +1 -1
- package/dist/components/backtop/index.d.vue.ts +3 -3
- package/dist/components/backtop/index.vue +17 -17
- package/dist/components/backtop/types.d.ts +1 -1
- package/dist/components/badge/index.d.vue.ts +3 -3
- package/dist/components/badge/index.vue +43 -43
- package/dist/components/badge/types.d.ts +1 -1
- package/dist/components/book/types.d.ts +1 -1
- package/dist/components/border-beam/index.vue +1 -1
- package/dist/components/border-beam/types.d.ts +1 -1
- package/dist/components/bubble/index.vue +1 -1
- package/dist/components/bubble-group/index.d.vue.ts +4 -4
- package/dist/components/button/index.d.vue.ts +5 -5
- package/dist/components/button/index.vue +13 -13
- package/dist/components/button/types.d.ts +1 -1
- package/dist/components/button-group/types.d.ts +1 -1
- package/dist/components/calendar/index.d.vue.ts +2 -2
- package/dist/components/calendar/index.vue +5 -5
- package/dist/components/calendar/types.d.ts +1 -1
- package/dist/components/card/types.d.ts +1 -1
- package/dist/components/carousel/index.d.vue.ts +7 -7
- package/dist/components/carousel/index.vue +1 -1
- package/dist/components/carousel/types.d.ts +1 -1
- package/dist/components/checkbox/index.vue +1 -1
- package/dist/components/checkbox/types.d.ts +1 -1
- package/dist/components/checkbox-group/index.d.vue.ts +2 -2
- package/dist/components/checkbox-group/types.d.ts +1 -1
- package/dist/components/chip/index.d.vue.ts +1 -1
- package/dist/components/chip/types.d.ts +1 -1
- package/dist/components/choicebox/index.d.vue.ts +3 -3
- package/dist/components/choicebox/types.d.ts +1 -1
- package/dist/components/choicebox-item/index.vue +8 -8
- package/dist/components/choicebox-item/types.d.ts +1 -1
- package/dist/components/collapse/index.vue +2 -2
- package/dist/components/collapse-group/index.vue +1 -1
- package/dist/components/collapse-group/types.d.ts +1 -1
- package/dist/components/command-menu/index.d.vue.ts +5 -5
- package/dist/components/command-menu/index.vue +10 -3
- package/dist/components/config-provider/index.d.vue.ts +40 -5
- package/dist/components/config-provider/types.d.ts +2 -1
- package/dist/components/confirm-popover/index.d.vue.ts +39 -0
- package/dist/components/confirm-popover/index.vue +177 -0
- package/dist/components/confirm-popover/types.d.ts +23 -0
- package/dist/components/copy-button/index.d.vue.ts +2 -6
- package/dist/components/copy-button/index.vue +4 -6
- package/dist/components/dash-line/index.d.vue.ts +1 -1
- package/dist/components/dash-line/index.vue +8 -8
- package/dist/components/dash-line/types.d.ts +1 -1
- package/dist/components/date-picker/index.d.vue.ts +1 -1
- package/dist/components/date-picker/index.vue +3 -3
- package/dist/components/date-picker/types.d.ts +1 -1
- package/dist/components/drawer/index.d.vue.ts +7 -7
- package/dist/components/drawer/index.vue +30 -15
- package/dist/components/drawer/types.d.ts +2 -2
- package/dist/components/effort-slider/index.vue +12 -18
- package/dist/components/effort-slider/types.d.ts +1 -1
- package/dist/components/ellipsis-text/index.d.vue.ts +2 -2
- package/dist/components/ellipsis-text/index.vue +75 -75
- package/dist/components/error/types.d.ts +1 -1
- package/dist/components/fader/index.vue +2 -2
- package/dist/components/fader/types.d.ts +1 -1
- package/dist/components/gauge/index.vue +2 -2
- package/dist/components/gauge/types.d.ts +1 -1
- package/dist/components/grid/types.d.ts +1 -1
- package/dist/components/grid-item/types.d.ts +1 -1
- package/dist/components/hint/index.d.vue.ts +32 -0
- package/dist/components/hint/index.vue +239 -0
- package/dist/components/hint/types.d.ts +17 -0
- package/dist/components/hold-button/index.d.vue.ts +4 -4
- package/dist/components/hold-button/index.vue +10 -10
- package/dist/components/index.d.ts +4 -0
- package/dist/components/index.js +4 -0
- package/dist/components/input/index.d.vue.ts +1 -1
- package/dist/components/input/index.vue +14 -7
- package/dist/components/input/types.d.ts +1 -1
- package/dist/components/intersection-observer/index.vue +3 -3
- package/dist/components/kbd/index.vue +2 -2
- package/dist/components/kbd/types.d.ts +1 -1
- package/dist/components/link-button/index.d.vue.ts +5 -5
- package/dist/components/list/index.d.vue.ts +4 -4
- package/dist/components/list/index.vue +126 -47
- package/dist/components/list/types.d.ts +1 -1
- package/dist/components/list-group/types.d.ts +1 -1
- package/dist/components/list-item/index.d.vue.ts +2 -2
- package/dist/components/list-item/index.vue +26 -8
- package/dist/components/loading-bar/index.vue +5 -5
- package/dist/components/marching-ants/index.d.vue.ts +2 -2
- package/dist/components/marching-ants/index.vue +56 -56
- package/dist/components/marching-ants/types.d.ts +1 -1
- package/dist/components/marquee/index.d.vue.ts +6 -6
- package/dist/components/marquee/index.vue +16 -16
- package/dist/components/marquee/types.d.ts +1 -1
- package/dist/components/material/index.d.vue.ts +3 -3
- package/dist/components/mention/index.d.vue.ts +5 -5
- package/dist/components/mention/index.vue +68 -68
- package/dist/components/menu/index.d.vue.ts +4 -4
- package/dist/components/menu/index.vue +10 -10
- package/dist/components/menu/types.d.ts +1 -1
- package/dist/components/message/index.d.vue.ts +1 -1
- package/dist/components/message/index.vue +19 -25
- package/dist/components/message/types.d.ts +1 -1
- package/dist/components/message-item/index.vue +2 -6
- package/dist/components/modal/index.d.vue.ts +7 -7
- package/dist/components/modal/index.vue +26 -11
- package/dist/components/modal/types.d.ts +2 -2
- package/dist/components/noise-background/types.d.ts +1 -1
- package/dist/components/note/index.vue +6 -2
- package/dist/components/note/types.d.ts +2 -1
- package/dist/components/number-input/index.d.vue.ts +11 -6
- package/dist/components/number-input/index.vue +57 -16
- package/dist/components/number-input/types.d.ts +2 -1
- package/dist/components/overlay/index.d.vue.ts +2 -3
- package/dist/components/overlay/index.vue +10 -62
- package/dist/components/overlay/types.d.ts +0 -2
- package/dist/components/page-number/index.vue +30 -29
- package/dist/components/page-number/types.d.ts +1 -1
- package/dist/components/pin-input/index.d.vue.ts +1 -1
- package/dist/components/pin-input/index.vue +6 -6
- package/dist/components/pin-input/types.d.ts +1 -1
- package/dist/components/popover/index.vue +49 -21
- package/dist/components/popover/types.d.ts +3 -1
- package/dist/components/progress/index.d.vue.ts +2 -2
- package/dist/components/progress/index.vue +12 -12
- package/dist/components/progress/types.d.ts +1 -1
- package/dist/components/project-banner/types.d.ts +1 -1
- package/dist/components/questionnaire/index.vue +14 -14
- package/dist/components/radio/index.vue +1 -1
- package/dist/components/radio/types.d.ts +1 -1
- package/dist/components/radio-group/index.d.vue.ts +2 -2
- package/dist/components/radio-group/types.d.ts +1 -1
- package/dist/components/rating/index.vue +28 -28
- package/dist/components/rating/types.d.ts +1 -1
- package/dist/components/resizable/index.d.vue.ts +1 -0
- package/dist/components/resizable/index.vue +130 -195
- package/dist/components/resizable/types.d.ts +2 -10
- package/dist/components/reveal/index.d.vue.ts +3 -3
- package/dist/components/reveal/index.vue +4 -4
- package/dist/components/reveal/types.d.ts +1 -1
- package/dist/components/rolling-number/index.d.vue.ts +2 -2
- package/dist/components/rolling-number/index.vue +15 -15
- package/dist/components/scalable-text/index.vue +9 -9
- package/dist/components/scroll-text/index.d.vue.ts +3 -3
- package/dist/components/scroll-text/index.vue +6 -6
- package/dist/components/scroll-text/types.d.ts +1 -1
- package/dist/components/scrollable/types.d.ts +2 -1
- package/dist/components/search-input/index.d.vue.ts +5 -5
- package/dist/components/search-input/index.vue +2 -1
- package/dist/components/select/index.d.vue.ts +12 -9
- package/dist/components/select/index.vue +165 -42
- package/dist/components/select/types.d.ts +3 -1
- package/dist/components/separator/index.d.vue.ts +1 -1
- package/dist/components/separator/types.d.ts +1 -1
- package/dist/components/skeleton/index.d.vue.ts +1 -1
- package/dist/components/skeleton/index.vue +11 -11
- package/dist/components/skeleton/types.d.ts +1 -1
- package/dist/components/slider/index.d.vue.ts +1 -1
- package/dist/components/slider/index.vue +1 -1
- package/dist/components/slider/types.d.ts +1 -1
- package/dist/components/snippet/index.d.vue.ts +3 -3
- package/dist/components/snippet/index.vue +7 -5
- package/dist/components/snippet/types.d.ts +1 -1
- package/dist/components/spinner/index.vue +5 -1
- package/dist/components/spinner-dots/index.d.vue.ts +1 -1
- package/dist/components/split-button/index.d.vue.ts +5 -5
- package/dist/components/split-button/types.d.ts +1 -1
- package/dist/components/stack/index.d.vue.ts +3 -3
- package/dist/components/stack/index.vue +28 -29
- package/dist/components/stack/types.d.ts +1 -1
- package/dist/components/status-dot/types.d.ts +1 -1
- package/dist/components/steps/index.d.vue.ts +2 -2
- package/dist/components/steps/index.vue +6 -6
- package/dist/components/steps/types.d.ts +1 -1
- package/dist/components/stick-to-bottom/types.d.ts +1 -1
- package/dist/components/swipe-cell/index.d.vue.ts +6 -6
- package/dist/components/swipe-cell/index.vue +64 -64
- package/dist/components/swipe-cell/types.d.ts +2 -1
- package/dist/components/switch/index.vue +1 -1
- package/dist/components/switch/types.d.ts +1 -1
- package/dist/components/switch-item/index.vue +1 -1
- package/dist/components/switch-item/types.d.ts +1 -1
- package/dist/components/tabs/index.d.vue.ts +1 -1
- package/dist/components/tabs/index.vue +48 -51
- package/dist/components/tabs/types.d.ts +1 -1
- package/dist/components/teleport/index.vue +2 -2
- package/dist/components/text/index.d.vue.ts +3 -3
- package/dist/components/text/index.vue +11 -11
- package/dist/components/text/types.d.ts +1 -1
- package/dist/components/textarea/index.vue +1 -1
- package/dist/components/textarea/types.d.ts +1 -1
- package/dist/components/theme-switcher/index.d.vue.ts +3 -2
- package/dist/components/theme-switcher/index.vue +15 -7
- package/dist/components/theme-switcher/types.d.ts +2 -2
- package/dist/components/time-ago/index.d.vue.ts +6 -0
- package/dist/components/time-ago/index.vue +143 -0
- package/dist/components/time-ago/types.d.ts +4 -0
- package/dist/components/time-picker/index.d.vue.ts +1 -1
- package/dist/components/time-picker/index.vue +7 -7
- package/dist/components/time-picker/types.d.ts +1 -1
- package/dist/components/toc/index.d.vue.ts +2 -2
- package/dist/components/toc/index.vue +1 -1
- package/dist/components/todo-list/index.d.vue.ts +4 -4
- package/dist/components/todo-list/index.vue +15 -15
- package/dist/components/todo-list/types.d.ts +1 -1
- package/dist/components/toggle/index.vue +3 -3
- package/dist/components/toggle/types.d.ts +1 -1
- package/dist/components/toggle-button/index.vue +14 -11
- package/dist/components/toggle-button/types.d.ts +2 -2
- package/dist/components/toggle-button-group/index.d.vue.ts +3 -3
- package/dist/components/toggle-button-group/index.vue +2 -2
- package/dist/components/toggle-button-group/types.d.ts +2 -2
- package/dist/components/tool-call/index.vue +5 -5
- package/dist/components/tooltip/index.d.vue.ts +4 -5
- package/dist/components/tooltip/index.vue +4 -49
- package/dist/components/tooltip/types.d.ts +3 -7
- package/dist/components/tour/index.d.vue.ts +33 -0
- package/dist/components/tour/index.vue +302 -0
- package/dist/components/tour/types.d.ts +29 -0
- package/dist/components/tree/index.d.vue.ts +24 -28
- package/dist/components/tree/index.vue +290 -223
- package/dist/components/tree/types.d.ts +38 -13
- package/dist/components/virtual-list/index.d.vue.ts +4 -4
- package/dist/composables/_internal/use-list-keyboard-controller.js +9 -10
- package/dist/composables/_internal/use-list-rows.d.ts +4 -0
- package/dist/composables/_internal/use-list-rows.js +12 -4
- package/dist/composables/_internal/use-list-selection.d.ts +1 -1
- package/dist/composables/_internal/use-lock-scroll.d.ts +8 -1
- package/dist/composables/_internal/use-lock-scroll.js +57 -36
- package/dist/composables/_internal/use-mention-editor.js +1 -1
- package/dist/composables/_internal/use-message-group.d.ts +22 -0
- package/dist/composables/_internal/use-message-group.js +143 -0
- package/dist/composables/_internal/use-overlay-dialog.js +1 -3
- package/dist/composables/_internal/use-overlay-manager.d.ts +4 -1
- package/dist/composables/_internal/use-overlay-manager.js +67 -8
- package/dist/composables/_internal/use-swipe-gesture.d.ts +1 -1
- package/dist/composables/_internal/use-tour-target.d.ts +29 -0
- package/dist/composables/_internal/use-tour-target.js +201 -0
- package/dist/composables/_internal/use-tree.d.ts +103 -0
- package/dist/composables/_internal/use-tree.js +676 -0
- package/dist/composables/_internal/use-word-limit.d.ts +1 -1
- package/dist/composables/index.d.ts +1 -0
- package/dist/composables/index.js +1 -0
- package/dist/composables/use-color-scheme.d.ts +1 -1
- package/dist/composables/use-color-scheme.js +7 -6
- package/dist/composables/use-delay-destroy.d.ts +1 -1
- package/dist/composables/use-document-hidden.d.ts +1 -1
- package/dist/composables/use-intersection-observer.d.ts +1 -1
- package/dist/composables/use-intersection-observer.js +1 -1
- package/dist/composables/{_internal/use-motion-reduce.js → use-motion-reduce.js} +2 -2
- package/dist/composables/use-mutation-observer.d.ts +1 -1
- package/dist/composables/use-mutation-observer.js +1 -1
- package/dist/composables/use-resize-observer.d.ts +1 -1
- package/dist/composables/use-resize-observer.js +1 -1
- package/dist/composables/use-view-transition.js +1 -0
- package/dist/composables/use-virtual-list.d.ts +1 -1
- package/dist/constants/tooltip-variants.d.ts +28 -0
- package/dist/constants/tooltip-variants.js +27 -0
- package/dist/contexts/avatar.js +1 -1
- package/dist/contexts/breadcrumb.js +1 -1
- package/dist/contexts/button.js +1 -1
- package/dist/contexts/checkbox.js +1 -1
- package/dist/contexts/choicebox.js +1 -1
- package/dist/contexts/collapse.js +1 -1
- package/dist/contexts/config-provider.js +1 -1
- package/dist/contexts/list.js +1 -1
- package/dist/contexts/radio.js +1 -1
- package/dist/contexts/switch.js +1 -1
- package/dist/contexts/toggle-button.js +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/locales/en-us.d.ts +35 -0
- package/dist/locales/en-us.js +20 -0
- package/dist/locales/zh-cn.d.ts +35 -0
- package/dist/locales/zh-cn.js +20 -0
- package/dist/styles/styles.css +1 -1
- package/dist/styles/tw.css +43 -30
- package/dist/utils/{context.js → _internal/context.js} +1 -1
- package/dist/utils/{observer.d.ts → _internal/observer.d.ts} +1 -1
- package/dist/utils/{observer.js → _internal/observer.js} +4 -4
- package/dist/{components/swipe-cell/instances.d.ts → utils/_internal/swipe-cell-instances.d.ts} +1 -1
- package/dist/utils/event.d.ts +2 -1
- package/dist/utils/event.js +3 -0
- package/package.json +26 -50
- package/volar.d.ts +4 -0
- package/dist/components/message/composables/use-group-expand.d.ts +0 -13
- package/dist/components/message/composables/use-group-expand.js +0 -50
- package/dist/components/message/composables/use-message-timer.d.ts +0 -9
- package/dist/components/message/composables/use-message-timer.js +0 -62
- package/dist/components/message/composables/use-promise-message.d.ts +0 -4
- package/dist/components/message/composables/use-promise-message.js +0 -49
- package/dist/components/resizable/utils.d.ts +0 -4
- package/dist/components/resizable/utils.js +0 -10
- package/dist/composables/_internal/use-tree-drag.d.ts +0 -23
- package/dist/composables/_internal/use-tree-drag.js +0 -196
- package/dist/composables/_internal/use-tree-move.d.ts +0 -20
- package/dist/composables/_internal/use-tree-move.js +0 -96
- package/dist/composables/_internal/use-tree-rows.d.ts +0 -46
- package/dist/composables/_internal/use-tree-rows.js +0 -101
- package/dist/composables/_internal/use-tree-selection.d.ts +0 -22
- package/dist/composables/_internal/use-tree-selection.js +0 -87
- package/dist/styles/source.css +0 -675
- package/dist/types/shared/index.d.ts +0 -2
- /package/dist/composables/{_internal/use-motion-reduce.d.ts → use-motion-reduce.d.ts} +0 -0
- /package/dist/utils/{context.d.ts → _internal/context.d.ts} +0 -0
- /package/dist/utils/{mention-html.d.ts → _internal/mention-html.d.ts} +0 -0
- /package/dist/utils/{mention-html.js → _internal/mention-html.js} +0 -0
- /package/dist/{components/swipe-cell/instances.js → utils/_internal/swipe-cell-instances.js} +0 -0
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
<script setup>
|
|
2
|
+
import CrossIcon from "@gdsicon/vue/cross";
|
|
3
|
+
import { computed, onBeforeUnmount, shallowRef, watch, watchEffect } from "vue";
|
|
4
|
+
import { TOOLTIP_CONTENT_CLASS, TOOLTIP_VARIANTS } from "../../constants/tooltip-variants.js";
|
|
5
|
+
import { useConfigProvider } from "../../contexts/config-provider.js";
|
|
6
|
+
import PPopover from "../popover/index.vue";
|
|
7
|
+
defineOptions({
|
|
8
|
+
name: "PHint",
|
|
9
|
+
inheritAttrs: false
|
|
10
|
+
});
|
|
11
|
+
const props = defineProps({
|
|
12
|
+
content: {
|
|
13
|
+
type: String,
|
|
14
|
+
required: false
|
|
15
|
+
},
|
|
16
|
+
promise: {
|
|
17
|
+
type: Promise,
|
|
18
|
+
required: false
|
|
19
|
+
},
|
|
20
|
+
position: {
|
|
21
|
+
type: null,
|
|
22
|
+
required: false,
|
|
23
|
+
default: "top"
|
|
24
|
+
},
|
|
25
|
+
duration: {
|
|
26
|
+
type: Number,
|
|
27
|
+
required: false,
|
|
28
|
+
default: 1e3
|
|
29
|
+
},
|
|
30
|
+
closeable: {
|
|
31
|
+
type: Boolean,
|
|
32
|
+
required: false
|
|
33
|
+
},
|
|
34
|
+
pauseOnHover: {
|
|
35
|
+
type: Boolean,
|
|
36
|
+
required: false,
|
|
37
|
+
default: true
|
|
38
|
+
},
|
|
39
|
+
contentClass: {
|
|
40
|
+
type: [
|
|
41
|
+
String,
|
|
42
|
+
Array,
|
|
43
|
+
Object
|
|
44
|
+
],
|
|
45
|
+
required: false
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
const emits = defineEmits(["close"]);
|
|
49
|
+
let closeTimer = null;
|
|
50
|
+
let closeDeadline = 0;
|
|
51
|
+
let closeRemaining = 0;
|
|
52
|
+
let isHovering = false;
|
|
53
|
+
let promiseToken = 0;
|
|
54
|
+
const visible = shallowRef(false);
|
|
55
|
+
const progressDuration = shallowRef(0);
|
|
56
|
+
const progressKey = shallowRef(0);
|
|
57
|
+
const status = shallowRef("idle");
|
|
58
|
+
const statusValue = shallowRef();
|
|
59
|
+
const statusError = shallowRef();
|
|
60
|
+
const progressVisible = computed(() => visible.value && progressDuration.value > 0 && status.value !== "pending");
|
|
61
|
+
const statusVariant = computed(() => status.value === "success" || status.value === "error" ? status.value : "default");
|
|
62
|
+
const computedVariant = computed(() => TOOLTIP_VARIANTS[statusVariant.value]);
|
|
63
|
+
const contentClassComputed = computed(() => [
|
|
64
|
+
"relative",
|
|
65
|
+
TOOLTIP_CONTENT_CLASS,
|
|
66
|
+
computedVariant.value.base,
|
|
67
|
+
props.contentClass
|
|
68
|
+
]);
|
|
69
|
+
const configProvider = useConfigProvider();
|
|
70
|
+
function restartProgress(duration) {
|
|
71
|
+
progressDuration.value = duration;
|
|
72
|
+
progressKey.value++;
|
|
73
|
+
}
|
|
74
|
+
function clearCloseTimer() {
|
|
75
|
+
if (closeTimer) {
|
|
76
|
+
clearTimeout(closeTimer);
|
|
77
|
+
closeTimer = null;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
function scheduleClose(delay) {
|
|
81
|
+
clearCloseTimer();
|
|
82
|
+
closeRemaining = delay;
|
|
83
|
+
if (!props.duration || delay <= 0 || isHovering || status.value === "pending") {
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
closeDeadline = Date.now() + delay;
|
|
87
|
+
closeTimer = setTimeout(() => {
|
|
88
|
+
closeTimer = null;
|
|
89
|
+
visible.value = false;
|
|
90
|
+
}, delay);
|
|
91
|
+
}
|
|
92
|
+
function startCloseTimer() {
|
|
93
|
+
if (visible.value) {
|
|
94
|
+
restartProgress(props.duration);
|
|
95
|
+
scheduleClose(props.duration);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
function pauseCloseTimer() {
|
|
99
|
+
if (!props.pauseOnHover) {
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
isHovering = true;
|
|
103
|
+
if (closeTimer) {
|
|
104
|
+
clearCloseTimer();
|
|
105
|
+
closeRemaining = Math.max(0, closeDeadline - Date.now());
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
function resumeCloseTimer() {
|
|
109
|
+
if (!props.pauseOnHover) {
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
isHovering = false;
|
|
113
|
+
if (!visible.value || closeTimer) {
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
scheduleClose(closeRemaining);
|
|
117
|
+
}
|
|
118
|
+
function handleClose() {
|
|
119
|
+
visible.value = false;
|
|
120
|
+
}
|
|
121
|
+
function subscribePromise(promise) {
|
|
122
|
+
const token = ++promiseToken;
|
|
123
|
+
statusValue.value = undefined;
|
|
124
|
+
statusError.value = undefined;
|
|
125
|
+
if (!promise) {
|
|
126
|
+
status.value = "idle";
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
status.value = "pending";
|
|
130
|
+
promise.then((value) => {
|
|
131
|
+
if (token !== promiseToken) {
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
statusValue.value = value;
|
|
135
|
+
status.value = "success";
|
|
136
|
+
startCloseTimer();
|
|
137
|
+
}, (error) => {
|
|
138
|
+
if (token !== promiseToken) {
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
statusError.value = error;
|
|
142
|
+
status.value = "error";
|
|
143
|
+
startCloseTimer();
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
watch(visible, (isVisible) => {
|
|
147
|
+
if (isVisible) {
|
|
148
|
+
startCloseTimer();
|
|
149
|
+
} else {
|
|
150
|
+
clearCloseTimer();
|
|
151
|
+
isHovering = false;
|
|
152
|
+
emits("close");
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
// Don't use watch(() => props.promise): Vue will attach a catch to the promise returned by the watcher getter,
|
|
156
|
+
// and an error will be reported in the component when it rejects.
|
|
157
|
+
watchEffect(() => {
|
|
158
|
+
subscribePromise(props.promise);
|
|
159
|
+
});
|
|
160
|
+
watch(() => props.content, () => {
|
|
161
|
+
if (isHovering) {
|
|
162
|
+
closeRemaining = props.duration;
|
|
163
|
+
restartProgress(props.duration);
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
startCloseTimer();
|
|
167
|
+
});
|
|
168
|
+
onBeforeUnmount(() => {
|
|
169
|
+
clearCloseTimer();
|
|
170
|
+
promiseToken++;
|
|
171
|
+
});
|
|
172
|
+
</script>
|
|
173
|
+
|
|
174
|
+
<template>
|
|
175
|
+
<PPopover
|
|
176
|
+
data-hint
|
|
177
|
+
role="tooltip"
|
|
178
|
+
class="pxd-hint"
|
|
179
|
+
show-arrow
|
|
180
|
+
:data-variant="statusVariant"
|
|
181
|
+
:model-value="visible"
|
|
182
|
+
:position="position"
|
|
183
|
+
:toggle-on-trigger="false"
|
|
184
|
+
:fill-trigger-width="false"
|
|
185
|
+
wrapper-class="max-sm:data-[position^=top]:px-1 max-sm:data-[position^=bottom]:px-1 max-sm:data-[position^=left]:ps-1 max-sm:data-[position^=right]:pe-1"
|
|
186
|
+
:arrow-color="computedVariant.bg"
|
|
187
|
+
:content-class="contentClassComputed"
|
|
188
|
+
v-bind="$attrs"
|
|
189
|
+
trigger="click"
|
|
190
|
+
:close-on-press-escape="false"
|
|
191
|
+
:close-on-outside-click="false"
|
|
192
|
+
@trigger-click="startCloseTimer"
|
|
193
|
+
@update:model-value="visible = $event"
|
|
194
|
+
>
|
|
195
|
+
<slot :status="status" />
|
|
196
|
+
|
|
197
|
+
<template #content="{ activeTrigger, activeTriggerIndex }">
|
|
198
|
+
<div
|
|
199
|
+
class="pxd-hint--content gap-1.5 flex items-center"
|
|
200
|
+
:data-pause-on-hover="pauseOnHover ? 'true' : 'false'"
|
|
201
|
+
@pointerenter="pauseCloseTimer"
|
|
202
|
+
@pointerleave="resumeCloseTimer"
|
|
203
|
+
>
|
|
204
|
+
<slot
|
|
205
|
+
name="content"
|
|
206
|
+
:status="status"
|
|
207
|
+
:value="statusValue"
|
|
208
|
+
:error="statusError"
|
|
209
|
+
:active-trigger="activeTrigger"
|
|
210
|
+
:active-trigger-index="activeTriggerIndex"
|
|
211
|
+
>
|
|
212
|
+
{{ content }}
|
|
213
|
+
</slot>
|
|
214
|
+
|
|
215
|
+
<button
|
|
216
|
+
v-if="closeable"
|
|
217
|
+
type="button"
|
|
218
|
+
class="pxd-hint--close p-0.5 shrink-0 cursor-pointer appearance-none rounded-sm border-0 bg-transparent font-inherit text-inherit opacity-70 self-focus-ring outline-none hover:opacity-100 motion-safe:transition-opacity"
|
|
219
|
+
:aria-label="configProvider.locale.feedback.close"
|
|
220
|
+
@click="handleClose"
|
|
221
|
+
>
|
|
222
|
+
<CrossIcon class="size-3" />
|
|
223
|
+
</button>
|
|
224
|
+
|
|
225
|
+
<div
|
|
226
|
+
v-if="progressVisible"
|
|
227
|
+
:key="progressKey"
|
|
228
|
+
aria-hidden="true"
|
|
229
|
+
class="pxd-hint--progress-bar pxd-countdown-progress inset-x-0 top-0 h-0.5 absolute bg-current"
|
|
230
|
+
:style="{ animationDuration: `${progressDuration}ms` }"
|
|
231
|
+
/>
|
|
232
|
+
</div>
|
|
233
|
+
</template>
|
|
234
|
+
</PPopover>
|
|
235
|
+
</template>
|
|
236
|
+
|
|
237
|
+
<style>
|
|
238
|
+
.pxd-hint--content[data-pause-on-hover=true]:hover .pxd-hint--progress-bar{animation-play-state:paused}
|
|
239
|
+
</style>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { ComponentClass, ComponentPosition } from '../../types/shared/props'
|
|
2
|
+
|
|
3
|
+
export type HintStatus = 'idle' | 'pending' | 'success' | 'error'
|
|
4
|
+
|
|
5
|
+
export interface HintProps {
|
|
6
|
+
content?: string
|
|
7
|
+
promise?: Promise<unknown>
|
|
8
|
+
position?: ComponentPosition
|
|
9
|
+
duration?: number
|
|
10
|
+
closeable?: boolean
|
|
11
|
+
pauseOnHover?: boolean
|
|
12
|
+
contentClass?: ComponentClass
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export interface HintEmits {
|
|
16
|
+
close: []
|
|
17
|
+
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import type { HoldButtonProps } from './types';
|
|
2
|
-
declare var
|
|
2
|
+
declare var __VLS_12: {}, __VLS_14: {}, __VLS_17: {};
|
|
3
3
|
type __VLS_Slots = {} & {
|
|
4
|
-
prefix?: (props: typeof
|
|
4
|
+
prefix?: (props: typeof __VLS_12) => any;
|
|
5
5
|
} & {
|
|
6
|
-
default?: (props: typeof
|
|
6
|
+
default?: (props: typeof __VLS_14) => any;
|
|
7
7
|
} & {
|
|
8
|
-
suffix?: (props: typeof
|
|
8
|
+
suffix?: (props: typeof __VLS_17) => any;
|
|
9
9
|
};
|
|
10
10
|
declare const __VLS_base: import("vue").DefineComponent<HoldButtonProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
11
11
|
cancel: () => any;
|
|
@@ -42,17 +42,7 @@ const emits = defineEmits([
|
|
|
42
42
|
"pointerup",
|
|
43
43
|
"pointerdown"
|
|
44
44
|
]);
|
|
45
|
-
const attrs = useAttrs();
|
|
46
45
|
const status = shallowRef("idle");
|
|
47
|
-
const computedAttrs = computed(() => {
|
|
48
|
-
return {
|
|
49
|
-
class: ["pxd-hold-button relative motion-safe:transition-appearance", {
|
|
50
|
-
scalable: props.scalable,
|
|
51
|
-
effective: status.value !== "canceled"
|
|
52
|
-
}],
|
|
53
|
-
...attrs
|
|
54
|
-
};
|
|
55
|
-
});
|
|
56
46
|
const computedStyle = computed(() => {
|
|
57
47
|
const { durations, progressColor } = props;
|
|
58
48
|
let _durations = Number(durations);
|
|
@@ -64,6 +54,16 @@ const computedStyle = computed(() => {
|
|
|
64
54
|
"--hold-button-progress-color": progressColor
|
|
65
55
|
};
|
|
66
56
|
});
|
|
57
|
+
const attrs = useAttrs();
|
|
58
|
+
const computedAttrs = computed(() => {
|
|
59
|
+
return {
|
|
60
|
+
class: ["pxd-hold-button relative motion-safe:transition-appearance", {
|
|
61
|
+
scalable: props.scalable,
|
|
62
|
+
effective: status.value !== "canceled"
|
|
63
|
+
}],
|
|
64
|
+
...attrs
|
|
65
|
+
};
|
|
66
|
+
});
|
|
67
67
|
function onTriggerVibrate() {
|
|
68
68
|
if (!props.vibrate) {
|
|
69
69
|
return;
|
|
@@ -27,6 +27,7 @@ export { default as CollapseGroup } from './collapse-group/index.vue';
|
|
|
27
27
|
export { default as ColorSelector } from './color-selector/index.vue';
|
|
28
28
|
export { default as CommandMenu } from './command-menu/index.vue';
|
|
29
29
|
export { default as ConfigProvider } from './config-provider/index.vue';
|
|
30
|
+
export { default as ConfirmPopover } from './confirm-popover/index.vue';
|
|
30
31
|
export { default as CopyButton } from './copy-button/index.vue';
|
|
31
32
|
export { default as Countdown } from './countdown/index.vue';
|
|
32
33
|
export { default as DashLine } from './dash-line/index.vue';
|
|
@@ -42,6 +43,7 @@ export { default as FeedbackBar } from './feedback-bar/index.vue';
|
|
|
42
43
|
export { default as Gauge } from './gauge/index.vue';
|
|
43
44
|
export { default as Grid } from './grid/index.vue';
|
|
44
45
|
export { default as GridItem } from './grid-item/index.vue';
|
|
46
|
+
export { default as Hint } from './hint/index.vue';
|
|
45
47
|
export { default as HoldButton } from './hold-button/index.vue';
|
|
46
48
|
export { default as HueText } from './hue-text/index.vue';
|
|
47
49
|
export { default as Input } from './input/index.vue';
|
|
@@ -109,6 +111,7 @@ export { default as Teleport } from './teleport/index.vue';
|
|
|
109
111
|
export { default as Text } from './text/index.vue';
|
|
110
112
|
export { default as Textarea } from './textarea/index.vue';
|
|
111
113
|
export { default as ThemeSwitcher } from './theme-switcher/index.vue';
|
|
114
|
+
export { default as TimeAgo } from './time-ago/index.vue';
|
|
112
115
|
export { default as TimePicker } from './time-picker/index.vue';
|
|
113
116
|
export { default as Timeline } from './timeline/index.vue';
|
|
114
117
|
export { default as TimelineItem } from './timeline-item/index.vue';
|
|
@@ -119,5 +122,6 @@ export { default as ToggleButton } from './toggle-button/index.vue';
|
|
|
119
122
|
export { default as ToggleButtonGroup } from './toggle-button-group/index.vue';
|
|
120
123
|
export { default as ToolCall } from './tool-call/index.vue';
|
|
121
124
|
export { default as Tooltip } from './tooltip/index.vue';
|
|
125
|
+
export { default as Tour } from './tour/index.vue';
|
|
122
126
|
export { default as Tree } from './tree/index.vue';
|
|
123
127
|
export { default as VirtualList } from './virtual-list/index.vue';
|
package/dist/components/index.js
CHANGED
|
@@ -27,6 +27,7 @@ export { default as CollapseGroup } from "./collapse-group/index.vue";
|
|
|
27
27
|
export { default as ColorSelector } from "./color-selector/index.vue";
|
|
28
28
|
export { default as CommandMenu } from "./command-menu/index.vue";
|
|
29
29
|
export { default as ConfigProvider } from "./config-provider/index.vue";
|
|
30
|
+
export { default as ConfirmPopover } from "./confirm-popover/index.vue";
|
|
30
31
|
export { default as CopyButton } from "./copy-button/index.vue";
|
|
31
32
|
export { default as Countdown } from "./countdown/index.vue";
|
|
32
33
|
export { default as DashLine } from "./dash-line/index.vue";
|
|
@@ -42,6 +43,7 @@ export { default as FeedbackBar } from "./feedback-bar/index.vue";
|
|
|
42
43
|
export { default as Gauge } from "./gauge/index.vue";
|
|
43
44
|
export { default as Grid } from "./grid/index.vue";
|
|
44
45
|
export { default as GridItem } from "./grid-item/index.vue";
|
|
46
|
+
export { default as Hint } from "./hint/index.vue";
|
|
45
47
|
export { default as HoldButton } from "./hold-button/index.vue";
|
|
46
48
|
export { default as HueText } from "./hue-text/index.vue";
|
|
47
49
|
export { default as Input } from "./input/index.vue";
|
|
@@ -109,6 +111,7 @@ export { default as Teleport } from "./teleport/index.vue";
|
|
|
109
111
|
export { default as Text } from "./text/index.vue";
|
|
110
112
|
export { default as Textarea } from "./textarea/index.vue";
|
|
111
113
|
export { default as ThemeSwitcher } from "./theme-switcher/index.vue";
|
|
114
|
+
export { default as TimeAgo } from "./time-ago/index.vue";
|
|
112
115
|
export { default as TimePicker } from "./time-picker/index.vue";
|
|
113
116
|
export { default as Timeline } from "./timeline/index.vue";
|
|
114
117
|
export { default as TimelineItem } from "./timeline-item/index.vue";
|
|
@@ -119,5 +122,6 @@ export { default as ToggleButton } from "./toggle-button/index.vue";
|
|
|
119
122
|
export { default as ToggleButtonGroup } from "./toggle-button-group/index.vue";
|
|
120
123
|
export { default as ToolCall } from "./tool-call/index.vue";
|
|
121
124
|
export { default as Tooltip } from "./tooltip/index.vue";
|
|
125
|
+
export { default as Tour } from "./tour/index.vue";
|
|
122
126
|
export { default as Tree } from "./tree/index.vue";
|
|
123
127
|
export { default as VirtualList } from "./virtual-list/index.vue";
|
|
@@ -35,7 +35,7 @@ declare const __VLS_base: import("vue").DefineComponent<InputProps, {
|
|
|
35
35
|
onFocus?: ((args_0: FocusEvent) => any) | undefined;
|
|
36
36
|
onKeydown?: ((args_0: KeyboardEvent) => any) | undefined;
|
|
37
37
|
}>, {
|
|
38
|
-
align: "
|
|
38
|
+
align: "center" | "left" | "right";
|
|
39
39
|
trimOverflow: boolean;
|
|
40
40
|
wordLimitPosition: "inside" | "outside";
|
|
41
41
|
clearOnPressEscape: boolean;
|
|
@@ -8,9 +8,10 @@ import { useTailwindVariant } from "../../composables/_internal/use-tailwind-var
|
|
|
8
8
|
import { useWordLimit } from "../../composables/_internal/use-word-limit.js";
|
|
9
9
|
import { BASIC_HEIGHTS } from "../../constants/size.js";
|
|
10
10
|
import { useConfigProvider } from "../../contexts/config-provider.js";
|
|
11
|
-
import { NOOP } from "../../utils/event.js";
|
|
11
|
+
import { NOOP, isCompositionKeydown } from "../../utils/event.js";
|
|
12
12
|
import { isTruthyProp } from "../../utils/format.js";
|
|
13
13
|
import { getUniqueId } from "../../utils/helper.js";
|
|
14
|
+
import { isNil } from "../../utils/is.js";
|
|
14
15
|
defineOptions({
|
|
15
16
|
name: "PInput",
|
|
16
17
|
inheritAttrs: false,
|
|
@@ -152,11 +153,11 @@ const emits = defineEmits([
|
|
|
152
153
|
]);
|
|
153
154
|
const uniqueId = getUniqueId();
|
|
154
155
|
const inputRef = shallowRef();
|
|
155
|
-
const configProvider = useConfigProvider();
|
|
156
|
-
const modelValue = useModelValue(props, emits, { withChange: false });
|
|
157
156
|
const isComposing = shallowRef(false);
|
|
158
157
|
const isPasswordVisible = shallowRef(!props.password);
|
|
159
158
|
const inputType = computed(() => props.inputType || isPasswordVisible.value ? "text" : "password");
|
|
159
|
+
const configProvider = useConfigProvider();
|
|
160
|
+
const modelValue = useModelValue(props, emits, { withChange: false });
|
|
160
161
|
const { isWordLimitShown, hasMaxLength, isWordLimitOutside, nativeMaxLength, wordLimitText, isWordLimitExceeded } = useWordLimit({
|
|
161
162
|
modelValue,
|
|
162
163
|
showWordLimit: () => props.showWordLimit,
|
|
@@ -226,10 +227,16 @@ function onKeydown(event) {
|
|
|
226
227
|
if (props.readonly || props.disabled) {
|
|
227
228
|
return;
|
|
228
229
|
}
|
|
229
|
-
if (event
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
230
|
+
if (!isCompositionKeydown(event)) {
|
|
231
|
+
if (event.key === "Enter") {
|
|
232
|
+
onChange(event);
|
|
233
|
+
} else if (event.key === "Escape" && props.clearOnPressEscape) {
|
|
234
|
+
const hasValue = !isNil(modelValue.value) && modelValue.value !== "";
|
|
235
|
+
clear(event);
|
|
236
|
+
if (hasValue) {
|
|
237
|
+
event.preventDefault();
|
|
238
|
+
}
|
|
239
|
+
}
|
|
233
240
|
}
|
|
234
241
|
emits("keydown", event);
|
|
235
242
|
}
|
|
@@ -49,6 +49,9 @@ const containerSize = shallowRef({
|
|
|
49
49
|
"--slot-estimated-width": getCssUnitValue(props.width),
|
|
50
50
|
"--slot-estimated-height": getCssUnitValue(props.height)
|
|
51
51
|
});
|
|
52
|
+
useIntersectionObserver(containerRef, ([{ entry }]) => {
|
|
53
|
+
onVisibleChange(entry.isIntersecting);
|
|
54
|
+
}, props);
|
|
52
55
|
function getRenderedSlotSize() {
|
|
53
56
|
const { offsetWidth, offsetHeight } = containerRef.value;
|
|
54
57
|
containerSize.value = {
|
|
@@ -74,9 +77,6 @@ function onVisibleChange(isIntersecting) {
|
|
|
74
77
|
}
|
|
75
78
|
emits("visible-change", isIntersecting);
|
|
76
79
|
}
|
|
77
|
-
useIntersectionObserver(containerRef, ([{ entry }]) => {
|
|
78
|
-
onVisibleChange(entry.isIntersecting);
|
|
79
|
-
}, props);
|
|
80
80
|
</script>
|
|
81
81
|
|
|
82
82
|
<template>
|
|
@@ -48,13 +48,13 @@ const INTERNAL_KEYS = {
|
|
|
48
48
|
ctrl: "Ctrl",
|
|
49
49
|
enter: "↵"
|
|
50
50
|
};
|
|
51
|
-
const configProvider = useConfigProvider();
|
|
52
|
-
const computedSize = computed(() => getFallbackValue(props.size, SIZES, configProvider.size));
|
|
53
51
|
const internalKey = computed(() => {
|
|
54
52
|
return Object.entries(INTERNAL_KEYS).filter(([k]) => {
|
|
55
53
|
return props[k];
|
|
56
54
|
}).map(([, v]) => v).join("");
|
|
57
55
|
});
|
|
56
|
+
const configProvider = useConfigProvider();
|
|
57
|
+
const computedSize = computed(() => getFallbackValue(props.size, SIZES, configProvider.size));
|
|
58
58
|
</script>
|
|
59
59
|
|
|
60
60
|
<template>
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import type { LinkButtonProps } from './types';
|
|
2
|
-
declare var
|
|
2
|
+
declare var __VLS_10: {}, __VLS_12: {}, __VLS_15: {};
|
|
3
3
|
type __VLS_Slots = {} & {
|
|
4
|
-
prefix?: (props: typeof
|
|
4
|
+
prefix?: (props: typeof __VLS_10) => any;
|
|
5
5
|
} & {
|
|
6
|
-
default?: (props: typeof
|
|
6
|
+
default?: (props: typeof __VLS_12) => any;
|
|
7
7
|
} & {
|
|
8
|
-
suffix?: (props: typeof
|
|
8
|
+
suffix?: (props: typeof __VLS_15) => any;
|
|
9
9
|
};
|
|
10
10
|
declare const __VLS_base: import("vue").DefineComponent<LinkButtonProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
11
11
|
click: (args_0: MouseEvent) => any;
|
|
@@ -13,7 +13,7 @@ declare const __VLS_base: import("vue").DefineComponent<LinkButtonProps, {}, {},
|
|
|
13
13
|
onClick?: ((args_0: MouseEvent) => any) | undefined;
|
|
14
14
|
}>, {
|
|
15
15
|
target: "_blank" | "_self" | "_parent" | "_top";
|
|
16
|
-
align: "
|
|
16
|
+
align: "center" | "left" | "right";
|
|
17
17
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
18
18
|
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
19
19
|
declare const _default: typeof __VLS_export;
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import type { ListNavigationCommand } from '../../composables/_internal/use-list-navigation.js';
|
|
2
2
|
import type { ListProps, ListOption, ListOptionSelected } from './types';
|
|
3
3
|
declare function dispatchCommand(command: ListNavigationCommand): boolean;
|
|
4
|
-
declare var
|
|
4
|
+
declare var __VLS_13: {
|
|
5
5
|
item: ListOption;
|
|
6
6
|
index: number;
|
|
7
7
|
group: import("./types").ListOptionGroup | undefined;
|
|
8
8
|
groupIndex: number | undefined;
|
|
9
|
-
},
|
|
9
|
+
}, __VLS_20: {};
|
|
10
10
|
type __VLS_Slots = {} & {
|
|
11
|
-
item?: (props: typeof
|
|
11
|
+
item?: (props: typeof __VLS_13) => any;
|
|
12
12
|
} & {
|
|
13
|
-
empty?: (props: typeof
|
|
13
|
+
empty?: (props: typeof __VLS_20) => any;
|
|
14
14
|
};
|
|
15
15
|
declare const __VLS_base: import("vue").DefineComponent<ListProps, {
|
|
16
16
|
focus: () => void | undefined;
|