pxd 0.0.55 → 0.0.61
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/README.md +18 -4
- package/dist/components/_internal/fragment-container.vue +3 -2
- package/dist/components/active-graph/index.d.vue.ts +2 -3
- package/dist/components/active-graph/index.vue +23 -16
- package/dist/components/active-graph/types.d.ts +4 -3
- package/dist/components/avatar/index.vue +19 -10
- package/dist/components/avatar/types.d.ts +0 -12
- package/dist/components/avatar-group/index.d.vue.ts +2 -2
- package/dist/components/avatar-group/index.vue +4 -3
- package/dist/components/avatar-group/types.d.ts +11 -0
- package/dist/components/badge/index.d.vue.ts +1 -1
- package/dist/components/badge/index.vue +47 -3
- package/dist/components/badge/types.d.ts +24 -1
- package/dist/components/book/index.vue +3 -2
- package/dist/components/browser/index.vue +6 -2
- package/dist/components/button/index.d.vue.ts +1 -1
- package/dist/components/button/index.vue +60 -12
- package/dist/components/carousel/index.d.vue.ts +24 -2
- package/dist/components/carousel/index.vue +341 -28
- package/dist/components/carousel/types.d.ts +2 -2
- package/dist/components/carousel-item/index.d.vue.ts +13 -0
- package/dist/components/carousel-item/index.vue +49 -0
- package/dist/components/checkbox/index.d.vue.ts +1 -5
- package/dist/components/checkbox/index.vue +66 -31
- package/dist/components/checkbox/types.d.ts +2 -14
- package/dist/components/checkbox-group/index.d.vue.ts +2 -7
- package/dist/components/checkbox-group/index.vue +11 -29
- package/dist/components/checkbox-group/types.d.ts +12 -0
- package/dist/components/chip/index.d.vue.ts +1 -1
- package/dist/components/chip/index.vue +31 -2
- package/dist/components/choicebox/index.d.vue.ts +11 -5
- package/dist/components/choicebox/index.vue +36 -54
- package/dist/components/choicebox/types.d.ts +11 -18
- package/dist/components/choicebox-item/index.d.vue.ts +16 -0
- package/dist/components/choicebox-item/index.vue +67 -0
- package/dist/components/choicebox-item/types.d.ts +12 -0
- package/dist/components/collapse/index.d.vue.ts +5 -4
- package/dist/components/collapse/index.vue +47 -30
- package/dist/components/collapse/types.d.ts +2 -5
- package/dist/components/collapse-group/index.d.vue.ts +2 -4
- package/dist/components/collapse-group/index.vue +8 -20
- package/dist/components/collapse-group/types.d.ts +6 -0
- package/dist/components/command-menu/index.vue +6 -7
- package/dist/components/command-menu/types.d.ts +0 -5
- package/dist/components/command-menu-group/index.d.vue.ts +1 -1
- package/dist/components/command-menu-group/index.vue +3 -2
- package/dist/components/command-menu-group/types.d.ts +5 -0
- package/dist/components/config-provider/index.d.vue.ts +3 -3
- package/dist/components/config-provider/index.vue +6 -4
- package/dist/components/countdown/index.vue +3 -2
- package/dist/components/countdown/types.d.ts +2 -2
- package/dist/components/dash-line/index.vue +3 -1
- package/dist/components/description/index.d.vue.ts +1 -1
- package/dist/components/description/index.vue +8 -7
- package/dist/components/description/types.d.ts +1 -1
- package/dist/components/drawer/index.d.vue.ts +3 -2
- package/dist/components/drawer/index.vue +20 -15
- package/dist/components/drawer/types.d.ts +3 -3
- package/dist/components/ellipsis-text/index.d.vue.ts +14 -0
- package/dist/components/ellipsis-text/index.vue +242 -0
- package/dist/components/ellipsis-text/types.d.ts +14 -0
- package/dist/components/empty-state/index.vue +6 -2
- package/dist/components/error/index.d.vue.ts +1 -3
- package/dist/components/error/index.vue +21 -6
- package/dist/components/error/types.d.ts +7 -1
- package/dist/components/fader/index.vue +30 -11
- package/dist/components/fader/types.d.ts +2 -2
- package/dist/components/gauge/index.vue +7 -2
- package/dist/components/grid/index.vue +9 -4
- package/dist/components/grid/types.d.ts +0 -5
- package/dist/components/grid-item/index.d.vue.ts +1 -1
- package/dist/components/grid-item/index.vue +16 -8
- package/dist/components/grid-item/types.d.ts +6 -0
- package/dist/components/hold-button/index.d.vue.ts +2 -2
- package/dist/components/hold-button/index.vue +1 -1
- package/dist/components/index.d.ts +7 -3
- package/dist/components/index.js +7 -3
- package/dist/components/input/index.d.vue.ts +8 -8
- package/dist/components/input/index.vue +54 -21
- package/dist/components/input/types.d.ts +7 -10
- package/dist/components/intersection-observer/index.d.vue.ts +0 -1
- package/dist/components/intersection-observer/index.vue +12 -3
- package/dist/components/kbd/index.vue +1 -1
- package/dist/components/link-button/index.d.vue.ts +1 -1
- package/dist/components/link-button/index.vue +4 -6
- package/dist/components/link-button/types.d.ts +1 -1
- package/dist/components/list/index.d.vue.ts +8 -5
- package/dist/components/list/index.vue +50 -54
- package/dist/components/list/types.d.ts +3 -20
- package/dist/components/list-item/index.d.vue.ts +3 -2
- package/dist/components/list-item/index.vue +44 -18
- package/dist/components/list-item/types.d.ts +15 -0
- package/dist/components/loading-bar/index.vue +33 -2
- package/dist/components/loading-bar/types.d.ts +1 -1
- package/dist/components/loading-dots/index.vue +3 -2
- package/dist/components/menu/index.d.vue.ts +5 -2
- package/dist/components/menu/index.vue +4 -1
- package/dist/components/menu/types.d.ts +5 -0
- package/dist/components/message/index.d.vue.ts +11 -8
- package/dist/components/message/index.vue +4 -12
- package/dist/components/message/types.d.ts +1 -12
- package/dist/components/message-item/index.d.vue.ts +1 -3
- package/dist/components/message-item/index.vue +13 -7
- package/dist/components/message-item/types.d.ts +11 -0
- package/dist/components/modal/index.d.vue.ts +3 -2
- package/dist/components/modal/index.vue +17 -13
- package/dist/components/modal/types.d.ts +3 -3
- package/dist/components/noise-background/index.vue +4 -3
- package/dist/components/note/index.d.vue.ts +1 -2
- package/dist/components/note/index.vue +81 -29
- package/dist/components/note/types.d.ts +10 -2
- package/dist/components/number-input/index.d.vue.ts +5 -4
- package/dist/components/number-input/index.vue +36 -6
- package/dist/components/number-input/types.d.ts +2 -0
- package/dist/components/overlay/index.vue +1 -1
- package/dist/components/overlay/types.d.ts +1 -1
- package/dist/components/pagination/index.vue +5 -3
- package/dist/components/pin-input/index.d.vue.ts +6 -1
- package/dist/components/pin-input/index.vue +60 -23
- package/dist/components/pin-input/types.d.ts +0 -4
- package/dist/components/placeholder/index.vue +14 -11
- package/dist/components/popover/index.vue +116 -78
- package/dist/components/popover/types.d.ts +1 -0
- package/dist/components/progress/index.d.vue.ts +1 -1
- package/dist/components/progress/index.vue +15 -2
- package/dist/components/project-banner/index.d.vue.ts +18 -0
- package/dist/components/project-banner/index.vue +59 -0
- package/dist/components/project-banner/types.d.ts +8 -0
- package/dist/components/radio/index.vue +62 -20
- package/dist/components/radio/types.d.ts +1 -14
- package/dist/components/radio-group/index.d.vue.ts +2 -4
- package/dist/components/radio-group/index.vue +11 -16
- package/dist/components/radio-group/types.d.ts +12 -0
- package/dist/components/resizable/types.d.ts +5 -10
- package/dist/components/resizable-handle/index.vue +1 -1
- package/dist/components/resizable-panel/index.d.vue.ts +1 -1
- package/dist/components/resizable-panel/index.vue +7 -2
- package/dist/components/resizable-panel/types.d.ts +4 -0
- package/dist/components/scrollable/index.d.vue.ts +29 -0
- package/dist/components/scrollable/index.vue +98 -83
- package/dist/components/scrollable/types.d.ts +19 -6
- package/dist/components/skeleton/index.vue +24 -1
- package/dist/components/slider/index.d.vue.ts +6 -6
- package/dist/components/slider/index.vue +86 -44
- package/dist/components/slider/types.d.ts +1 -1
- package/dist/components/snippet/index.vue +28 -2
- package/dist/components/spinner/index.vue +4 -2
- package/dist/components/stack/index.d.vue.ts +2 -2
- package/dist/components/stack/index.vue +35 -3
- package/dist/components/stack/types.d.ts +1 -1
- package/dist/components/status-dot/index.vue +5 -1
- package/dist/components/switch/index.d.vue.ts +10 -1
- package/dist/components/switch/index.vue +35 -44
- package/dist/components/switch/types.d.ts +4 -12
- package/dist/components/switch-item/index.d.vue.ts +14 -0
- package/dist/components/switch-item/index.vue +79 -0
- package/dist/components/switch-item/types.d.ts +9 -0
- package/dist/components/teleport/index.d.vue.ts +1 -1
- package/dist/components/teleport/index.vue +1 -1
- package/dist/components/teleport/types.d.ts +1 -1
- package/dist/components/text/index.d.vue.ts +1 -2
- package/dist/components/text/index.vue +36 -22
- package/dist/components/text/types.d.ts +1 -1
- package/dist/components/textarea/index.d.vue.ts +4 -4
- package/dist/components/textarea/index.vue +33 -4
- package/dist/components/textarea/types.d.ts +0 -1
- package/dist/components/time-picker/index.d.vue.ts +1 -2
- package/dist/components/time-picker/index.vue +43 -9
- package/dist/components/time-picker/types.d.ts +1 -2
- package/dist/components/toggle/index.vue +11 -10
- package/dist/components/toggle-button/index.d.vue.ts +22 -0
- package/dist/components/toggle-button/index.vue +110 -0
- package/dist/components/toggle-button/types.d.ts +16 -0
- package/dist/components/{choicebox-group → toggle-button-group}/index.d.vue.ts +5 -5
- package/dist/components/toggle-button-group/index.vue +68 -0
- package/dist/components/toggle-button-group/types.d.ts +22 -0
- package/dist/components/tooltip/index.d.vue.ts +2 -0
- package/dist/components/tooltip/index.vue +9 -3
- package/dist/components/tooltip/types.d.ts +3 -2
- package/dist/components/virtual-list/index.d.vue.ts +25 -4
- package/dist/components/virtual-list/index.vue +66 -10
- package/dist/components/virtual-list/types.d.ts +9 -4
- package/dist/composables/index.d.ts +2 -2
- package/dist/composables/index.js +2 -2
- package/dist/composables/use-browser-observer.d.ts +5 -5
- package/dist/composables/use-browser-observer.js +23 -20
- package/dist/composables/use-copy-click.js +4 -0
- package/dist/composables/use-countdown.d.ts +2 -2
- package/dist/composables/use-delay-destroy.d.ts +1 -1
- package/dist/composables/use-focus-trap.d.ts +7 -3
- package/dist/composables/use-focus-trap.js +19 -7
- package/dist/composables/use-forward-ref-expose.d.ts +2 -0
- package/dist/composables/use-forward-ref-expose.js +41 -0
- package/dist/composables/use-message.d.ts +4 -7
- package/dist/composables/use-model-value.d.ts +9 -8
- package/dist/composables/use-popover-responsive.d.ts +2 -2
- package/dist/composables/use-popover-responsive.js +3 -3
- package/dist/composables/use-repeat-action.d.ts +1 -1
- package/dist/composables/use-repeat-action.js +2 -2
- package/dist/composables/use-virtual-list.d.ts +21 -12
- package/dist/composables/use-virtual-list.js +90 -158
- package/dist/composables/use-window-size.d.ts +4 -0
- package/dist/composables/use-window-size.js +27 -0
- package/dist/contexts/avatar.d.ts +5 -2
- package/dist/contexts/carousel.d.ts +4 -4
- package/dist/contexts/carousel.js +1 -1
- package/dist/contexts/checkbox.d.ts +7 -2
- package/dist/contexts/choicebox.d.ts +8 -4
- package/dist/contexts/choicebox.js +1 -4
- package/dist/contexts/collapse.d.ts +5 -6
- package/dist/contexts/collapse.js +1 -1
- package/dist/contexts/config-provider.d.ts +5 -0
- package/dist/{composables/use-config-provider-context.js → contexts/config-provider.js} +8 -5
- package/dist/contexts/list.d.ts +1 -1
- package/dist/contexts/radio.d.ts +8 -2
- package/dist/contexts/resizable.d.ts +1 -1
- package/dist/contexts/switch.d.ts +8 -4
- package/dist/contexts/switch.js +1 -2
- package/dist/contexts/toggle-button.d.ts +7 -0
- package/dist/contexts/toggle-button.js +2 -0
- package/dist/styles/source.css +14 -2
- package/dist/styles/styles.css +2 -2
- package/dist/styles/tw.css +14 -2
- package/dist/types/shared/props.d.ts +1 -3
- package/dist/types/shared/utils.d.ts +0 -3
- package/dist/utils/context.d.ts +1 -0
- package/dist/utils/get.d.ts +1 -0
- package/dist/utils/get.js +14 -0
- package/dist/utils/ref.d.ts +1 -1
- package/dist/utils/responsive.js +2 -1
- package/dist/utils/throttle.js +9 -7
- package/dist/utils/uid.d.ts +1 -1
- package/dist/utils/uid.js +2 -2
- package/package.json +23 -21
- package/volar.d.ts +7 -3
- package/dist/components/badge/cn.d.ts +0 -90
- package/dist/components/badge/cn.js +0 -44
- package/dist/components/button/cn.d.ts +0 -121
- package/dist/components/button/cn.js +0 -55
- package/dist/components/carousel-group/index.d.vue.ts +0 -35
- package/dist/components/carousel-group/index.vue +0 -368
- package/dist/components/checkbox/cn.d.ts +0 -67
- package/dist/components/checkbox/cn.js +0 -31
- package/dist/components/chip/cn.d.ts +0 -49
- package/dist/components/chip/cn.js +0 -26
- package/dist/components/choicebox-group/index.vue +0 -65
- package/dist/components/error/cn.d.ts +0 -22
- package/dist/components/error/cn.js +0 -15
- package/dist/components/input/cn.d.ts +0 -73
- package/dist/components/input/cn.js +0 -36
- package/dist/components/list-item/cn.d.ts +0 -22
- package/dist/components/list-item/cn.js +0 -15
- package/dist/components/loading-bar/cn.d.ts +0 -70
- package/dist/components/loading-bar/cn.js +0 -32
- package/dist/components/note/cn.d.ts +0 -121
- package/dist/components/note/cn.js +0 -66
- package/dist/components/pin-input/cn.d.ts +0 -46
- package/dist/components/pin-input/cn.js +0 -25
- package/dist/components/progress/cn.d.ts +0 -19
- package/dist/components/progress/cn.js +0 -14
- package/dist/components/radio/cn.d.ts +0 -46
- package/dist/components/radio/cn.js +0 -42
- package/dist/components/skeleton/cn.d.ts +0 -43
- package/dist/components/skeleton/cn.js +0 -24
- package/dist/components/snippet/cn.d.ts +0 -52
- package/dist/components/snippet/cn.js +0 -27
- package/dist/components/stack/cn.d.ts +0 -70
- package/dist/components/stack/cn.js +0 -33
- package/dist/components/switch/cn.d.ts +0 -16
- package/dist/components/switch/cn.js +0 -13
- package/dist/components/switch-group/index.d.vue.ts +0 -23
- package/dist/components/switch-group/index.vue +0 -54
- package/dist/components/text/cn.d.ts +0 -67
- package/dist/components/text/cn.js +0 -34
- package/dist/components/textarea/cn.d.ts +0 -58
- package/dist/components/textarea/cn.js +0 -30
- package/dist/composables/use-config-provider-context.d.ts +0 -3
- package/dist/composables/use-unique-id-context.d.ts +0 -2
- package/dist/composables/use-unique-id-context.js +0 -11
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
|
|
3
|
-
import type { ComponentSizeWithXs } from '../shared/props'
|
|
1
|
+
import type { ComponentSizeWithXs, ComponentClass } from '../../types/shared'
|
|
4
2
|
|
|
5
3
|
export interface InputProps {
|
|
6
4
|
size?: ComponentSizeWithXs
|
|
@@ -11,21 +9,20 @@ export interface InputProps {
|
|
|
11
9
|
readonly?: boolean
|
|
12
10
|
disabled?: boolean
|
|
13
11
|
password?: boolean
|
|
14
|
-
required?: boolean
|
|
15
12
|
autofocus?: boolean
|
|
16
|
-
inputType?:
|
|
17
|
-
inputmode?:
|
|
13
|
+
inputType?: string
|
|
14
|
+
inputmode?: 'none' | 'text' | 'tel' | 'url' | 'email' | 'numeric' | 'decimal' | 'search'
|
|
18
15
|
minlength?: number | string
|
|
19
16
|
maxlength?: number | string
|
|
20
17
|
clearable?: boolean
|
|
21
|
-
clearValue?: string | number | null
|
|
22
|
-
modelValue?: string | number | null
|
|
18
|
+
clearValue?: string | number | null
|
|
19
|
+
modelValue?: string | number | null
|
|
23
20
|
placeholder?: string
|
|
24
|
-
prefixStyle?: boolean
|
|
25
|
-
suffixStyle?: boolean
|
|
26
21
|
prefixClass?: ComponentClass
|
|
27
22
|
suffixClass?: ComponentClass
|
|
28
23
|
selectOnFocus?: boolean
|
|
24
|
+
defaultPrefixStyle?: boolean
|
|
25
|
+
defaultSuffixStyle?: boolean
|
|
29
26
|
}
|
|
30
27
|
|
|
31
28
|
export interface InputEmits {
|
|
@@ -19,7 +19,6 @@ declare const __VLS_base: import("vue").DefineComponent<IntersectionObserverProp
|
|
|
19
19
|
"onBefore-hide"?: (() => any) | undefined;
|
|
20
20
|
}>, {
|
|
21
21
|
threshold: number | number[];
|
|
22
|
-
root: Element | Document | null;
|
|
23
22
|
rootMargin: string;
|
|
24
23
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
25
24
|
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
@@ -4,13 +4,14 @@ import { useIntersectionObserver } from "../../composables/use-browser-observer"
|
|
|
4
4
|
import { getCssUnitValue } from "../../utils/format";
|
|
5
5
|
import FragmentContainer from "../_internal/fragment-container.vue";
|
|
6
6
|
defineOptions({
|
|
7
|
-
name: "PIntersectionObserver"
|
|
7
|
+
name: "PIntersectionObserver",
|
|
8
|
+
inheritAttrs: false
|
|
8
9
|
});
|
|
9
10
|
const props = defineProps({
|
|
10
11
|
width: { type: [Number, String], required: false },
|
|
11
12
|
height: { type: [Number, String], required: false },
|
|
12
13
|
keepAlive: { type: Boolean, required: false },
|
|
13
|
-
root: { type: null, required: false
|
|
14
|
+
root: { type: null, required: false },
|
|
14
15
|
rootMargin: { type: String, required: false, default: "20%" },
|
|
15
16
|
threshold: { type: [Number, Array], required: false, default: 0 }
|
|
16
17
|
});
|
|
@@ -18,12 +19,14 @@ const emits = defineEmits(["visible-change", "before-show", "before-hide", "show
|
|
|
18
19
|
const isVisible = shallowRef(false);
|
|
19
20
|
const containerRef = shallowRef();
|
|
20
21
|
const containerSize = shallowRef({
|
|
22
|
+
"contain-intrinsic-size": `auto ${getCssUnitValue(props.height)}`,
|
|
21
23
|
"--slot-estimated-width": getCssUnitValue(props.width),
|
|
22
24
|
"--slot-estimated-height": getCssUnitValue(props.height)
|
|
23
25
|
});
|
|
24
26
|
function getRenderedSlotSize() {
|
|
25
27
|
const rect = containerRef.value.getBoundingClientRect();
|
|
26
28
|
containerSize.value = {
|
|
29
|
+
"contain-intrinsic-size": `auto ${rect.height}px`,
|
|
27
30
|
"--slot-estimated-width": `${rect.width}px`,
|
|
28
31
|
"--slot-estimated-height": `${rect.height}px`
|
|
29
32
|
};
|
|
@@ -55,12 +58,18 @@ useIntersectionObserver(
|
|
|
55
58
|
</script>
|
|
56
59
|
|
|
57
60
|
<template>
|
|
58
|
-
<div
|
|
61
|
+
<div
|
|
62
|
+
ref="containerRef"
|
|
63
|
+
class="pxd-intersection-observer content-visibility-auto"
|
|
64
|
+
:style="containerSize"
|
|
65
|
+
v-bind="$attrs"
|
|
66
|
+
>
|
|
59
67
|
<KeepAlive v-if="keepAlive">
|
|
60
68
|
<FragmentContainer v-if="isVisible">
|
|
61
69
|
<slot />
|
|
62
70
|
</FragmentContainer>
|
|
63
71
|
</KeepAlive>
|
|
72
|
+
|
|
64
73
|
<template v-else>
|
|
65
74
|
<slot v-if="isVisible" />
|
|
66
75
|
</template>
|
|
@@ -13,7 +13,7 @@ declare const __VLS_base: import("vue").DefineComponent<LinkButtonProps, {}, {},
|
|
|
13
13
|
onClick?: ((args_0: MouseEvent) => any) | undefined;
|
|
14
14
|
}>, {
|
|
15
15
|
align: "left" | "center" | "right";
|
|
16
|
-
target:
|
|
16
|
+
target: "_blank" | "_self" | "_parent" | "_top";
|
|
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,6 +1,6 @@
|
|
|
1
1
|
<script setup>
|
|
2
2
|
import ExternalIcon from "@gdsicon/vue/external";
|
|
3
|
-
import { computed
|
|
3
|
+
import { computed } from "vue";
|
|
4
4
|
import { isExternalLink } from "../../utils/format";
|
|
5
5
|
import PButton from "../button/index.vue";
|
|
6
6
|
defineOptions({
|
|
@@ -10,16 +10,14 @@ const props = defineProps({
|
|
|
10
10
|
href: { type: String, required: true },
|
|
11
11
|
text: { type: String, required: false },
|
|
12
12
|
align: { type: String, required: false, default: "left" },
|
|
13
|
-
target: { type:
|
|
13
|
+
target: { type: String, required: false, default: "_self" },
|
|
14
14
|
variant: { type: String, required: false },
|
|
15
15
|
externalIcon: { type: Boolean, required: false }
|
|
16
16
|
});
|
|
17
17
|
const emits = defineEmits(["click"]);
|
|
18
|
-
const
|
|
19
|
-
const linkButtonAttrs = computed(() => {
|
|
18
|
+
const computedAttrs = computed(() => {
|
|
20
19
|
const { externalIcon, text, href, ...restProps } = props;
|
|
21
20
|
const baseAttrs = {
|
|
22
|
-
...attrs,
|
|
23
21
|
...restProps,
|
|
24
22
|
class: "pxd-link-button",
|
|
25
23
|
rel: "noopener noreferrer",
|
|
@@ -47,7 +45,7 @@ function onLinkClick(ev) {
|
|
|
47
45
|
</script>
|
|
48
46
|
|
|
49
47
|
<template>
|
|
50
|
-
<PButton v-bind="
|
|
48
|
+
<PButton v-bind="computedAttrs">
|
|
51
49
|
<template #prefix>
|
|
52
50
|
<slot name="prefix" />
|
|
53
51
|
</template>
|
|
@@ -2,16 +2,20 @@ import type { ListProps, ListOptionSelected } from './types';
|
|
|
2
2
|
declare function updateListItem(): void;
|
|
3
3
|
declare function isNoVisibleItem(): boolean;
|
|
4
4
|
declare function setActiveValue(newValue?: string): void;
|
|
5
|
-
declare function
|
|
6
|
-
declare var __VLS_7: {}
|
|
5
|
+
declare function setFirstAsActive(): void;
|
|
6
|
+
declare var __VLS_7: {}, __VLS_15: {
|
|
7
|
+
item: import("./types").ListOption;
|
|
8
|
+
};
|
|
7
9
|
type __VLS_Slots = {} & {
|
|
8
10
|
default?: (props: typeof __VLS_7) => any;
|
|
11
|
+
} & {
|
|
12
|
+
item?: (props: typeof __VLS_15) => any;
|
|
9
13
|
};
|
|
10
14
|
declare const __VLS_base: import("vue").DefineComponent<ListProps, {
|
|
11
15
|
setActiveValue: typeof setActiveValue;
|
|
12
16
|
updateListItem: typeof updateListItem;
|
|
13
17
|
isNoVisibleItem: typeof isNoVisibleItem;
|
|
14
|
-
|
|
18
|
+
setFirstAsActive: typeof setFirstAsActive;
|
|
15
19
|
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
16
20
|
select: (args_0: MouseEvent, args_1: ListOptionSelected) => any;
|
|
17
21
|
toggle: () => any;
|
|
@@ -23,8 +27,7 @@ declare const __VLS_base: import("vue").DefineComponent<ListProps, {
|
|
|
23
27
|
}>, {
|
|
24
28
|
options: import("./types").ListOption[];
|
|
25
29
|
loop: boolean;
|
|
26
|
-
|
|
27
|
-
itemTransition: boolean;
|
|
30
|
+
toggleOnKeyPress: boolean;
|
|
28
31
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
29
32
|
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
30
33
|
declare const _default: typeof __VLS_export;
|
|
@@ -13,8 +13,7 @@ defineOptions({
|
|
|
13
13
|
const props = defineProps({
|
|
14
14
|
loop: { type: Boolean, required: false, default: true },
|
|
15
15
|
options: { type: Array, required: false, default: () => [] },
|
|
16
|
-
|
|
17
|
-
itemTransition: { type: Boolean, required: false, default: true },
|
|
16
|
+
toggleOnKeyPress: { type: Boolean, required: false, default: true },
|
|
18
17
|
closeOnPressEscape: { type: Boolean, required: false }
|
|
19
18
|
});
|
|
20
19
|
const emits = defineEmits(["toggle", "escape", "select"]);
|
|
@@ -28,15 +27,37 @@ const FUNCTION_KEYS = ["Enter", "Tab", "Home", "End"];
|
|
|
28
27
|
const PREVENT_DEFAULT_KEYS = [...FUNCTION_KEYS, ...PREV_KEYS, ...NEXT_KEYS];
|
|
29
28
|
const listItemKeys = [];
|
|
30
29
|
const listItemsMap = /* @__PURE__ */ new Map();
|
|
30
|
+
function resolveNavigationTarget(key) {
|
|
31
|
+
const len = listItemKeys.length;
|
|
32
|
+
if (key === "Home") {
|
|
33
|
+
return listItemKeys[0];
|
|
34
|
+
}
|
|
35
|
+
if (key === "End") {
|
|
36
|
+
return listItemKeys[len - 1];
|
|
37
|
+
}
|
|
38
|
+
const dir = PREV_KEYS.includes(key) ? -1 : NEXT_KEYS.includes(key) ? 1 : void 0;
|
|
39
|
+
if (dir === void 0) {
|
|
40
|
+
return void 0;
|
|
41
|
+
}
|
|
42
|
+
if (!activeValue.value) {
|
|
43
|
+
return dir === -1 ? listItemKeys[len - 1] : listItemKeys[0];
|
|
44
|
+
}
|
|
45
|
+
const index = listItemKeys.indexOf(activeValue.value);
|
|
46
|
+
if (index === -1) {
|
|
47
|
+
return dir === -1 ? listItemKeys[len - 1] : listItemKeys[0];
|
|
48
|
+
}
|
|
49
|
+
if (props.loop) {
|
|
50
|
+
return listItemKeys[(index + dir + len) % len];
|
|
51
|
+
}
|
|
52
|
+
const nextIndex = index + dir;
|
|
53
|
+
return nextIndex >= 0 && nextIndex < len ? listItemKeys[nextIndex] : void 0;
|
|
54
|
+
}
|
|
31
55
|
const containerKeydownThrottled = throttle(
|
|
32
56
|
(ev) => {
|
|
33
57
|
if (ev.ctrlKey || ev.metaKey || ev.altKey || ev.shiftKey) {
|
|
34
58
|
return;
|
|
35
59
|
}
|
|
36
60
|
const { key } = ev;
|
|
37
|
-
if (key === "Tab") {
|
|
38
|
-
return;
|
|
39
|
-
}
|
|
40
61
|
if (key === "Enter") {
|
|
41
62
|
listItemsMap.get(activeValue.value)?.click();
|
|
42
63
|
return;
|
|
@@ -45,38 +66,8 @@ const containerKeydownThrottled = throttle(
|
|
|
45
66
|
emits("escape", ev);
|
|
46
67
|
return;
|
|
47
68
|
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
if (PREV_KEYS.includes(key)) {
|
|
51
|
-
if (activeValue.value) {
|
|
52
|
-
const index = listItemKeys.indexOf(activeValue.value);
|
|
53
|
-
if (props.loop) {
|
|
54
|
-
const prevIndex = (index - 1 + listItemKeys.length) % listItemKeys.length;
|
|
55
|
-
newActiveValue = listItemKeys[prevIndex];
|
|
56
|
-
} else if (index > 0) {
|
|
57
|
-
newActiveValue = listItemKeys[index - 1];
|
|
58
|
-
}
|
|
59
|
-
} else {
|
|
60
|
-
newActiveValue = listItemKeys[listItemKeyLength - 1];
|
|
61
|
-
}
|
|
62
|
-
} else if (NEXT_KEYS.includes(key)) {
|
|
63
|
-
if (activeValue.value) {
|
|
64
|
-
const index = listItemKeys.indexOf(activeValue.value);
|
|
65
|
-
if (props.loop) {
|
|
66
|
-
const nextIndex = (index + 1) % listItemKeys.length;
|
|
67
|
-
newActiveValue = listItemKeys[nextIndex];
|
|
68
|
-
} else if (index < listItemKeys.length - 1) {
|
|
69
|
-
newActiveValue = listItemKeys[index + 1];
|
|
70
|
-
}
|
|
71
|
-
} else {
|
|
72
|
-
newActiveValue = listItemKeys[0];
|
|
73
|
-
}
|
|
74
|
-
} else if (key === "Home") {
|
|
75
|
-
newActiveValue = listItemKeys[0];
|
|
76
|
-
} else if (key === "End") {
|
|
77
|
-
newActiveValue = listItemKeys[listItemKeyLength - 1];
|
|
78
|
-
}
|
|
79
|
-
if (!newActiveValue) {
|
|
69
|
+
const newActiveValue = resolveNavigationTarget(key);
|
|
70
|
+
if (newActiveValue === void 0) {
|
|
80
71
|
return;
|
|
81
72
|
}
|
|
82
73
|
if (activeValue.value !== newActiveValue) {
|
|
@@ -89,7 +80,7 @@ const containerKeydownThrottled = throttle(
|
|
|
89
80
|
{ edges: ["leading"] }
|
|
90
81
|
);
|
|
91
82
|
function onContainerKeydown(ev) {
|
|
92
|
-
if (!props.
|
|
83
|
+
if (!props.toggleOnKeyPress || listItemKeys.length === 0) {
|
|
93
84
|
return;
|
|
94
85
|
}
|
|
95
86
|
if (PREVENT_DEFAULT_KEYS.includes(ev.key)) {
|
|
@@ -108,26 +99,31 @@ function onPointerOver(ev) {
|
|
|
108
99
|
activeValue.value = itemValue;
|
|
109
100
|
}
|
|
110
101
|
function onOptionClick(item, ev) {
|
|
111
|
-
const { as, onClick, ...option } = item;
|
|
112
102
|
activeValue.value = "";
|
|
113
|
-
emits("select", ev,
|
|
103
|
+
emits("select", ev, item);
|
|
114
104
|
}
|
|
115
105
|
function updateListItem() {
|
|
116
|
-
|
|
117
|
-
|
|
106
|
+
cleanupListItem();
|
|
107
|
+
if (!containerRef.value) {
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
118
110
|
Array.from(containerRef.value.querySelectorAll(itemSelector)).forEach((el) => {
|
|
119
111
|
const key = el.dataset.value;
|
|
120
112
|
listItemsMap.set(key, el);
|
|
121
113
|
listItemKeys.push(key);
|
|
122
114
|
});
|
|
123
115
|
}
|
|
116
|
+
function cleanupListItem() {
|
|
117
|
+
listItemsMap.clear();
|
|
118
|
+
listItemKeys.splice(0);
|
|
119
|
+
}
|
|
124
120
|
function isNoVisibleItem() {
|
|
125
121
|
return listItemsMap.size === 0;
|
|
126
122
|
}
|
|
127
123
|
function setActiveValue(newValue = "") {
|
|
128
124
|
activeValue.value = newValue;
|
|
129
125
|
}
|
|
130
|
-
function
|
|
126
|
+
function setFirstAsActive() {
|
|
131
127
|
setActiveValue(listItemKeys[0]);
|
|
132
128
|
}
|
|
133
129
|
provideListContext({
|
|
@@ -143,15 +139,14 @@ onMounted(async () => {
|
|
|
143
139
|
cachedOn(document, "keydown", onContainerKeydown);
|
|
144
140
|
});
|
|
145
141
|
onBeforeUnmount(() => {
|
|
146
|
-
|
|
147
|
-
listItemKeys.splice(0);
|
|
142
|
+
cleanupListItem();
|
|
148
143
|
cachedOff(document, "keydown", onContainerKeydown);
|
|
149
144
|
});
|
|
150
145
|
defineExpose({
|
|
151
146
|
setActiveValue,
|
|
152
147
|
updateListItem,
|
|
153
148
|
isNoVisibleItem,
|
|
154
|
-
|
|
149
|
+
setFirstAsActive
|
|
155
150
|
});
|
|
156
151
|
</script>
|
|
157
152
|
|
|
@@ -160,18 +155,19 @@ defineExpose({
|
|
|
160
155
|
ref="containerRef"
|
|
161
156
|
role="list"
|
|
162
157
|
tabindex="-1"
|
|
163
|
-
|
|
164
|
-
class="pxd-list group/list m-0 p-0 max-w-full list-none bg-background-100 outline-none"
|
|
158
|
+
class="pxd-list m-0 p-0 max-w-full list-none bg-background-100 outline-none"
|
|
165
159
|
v-bind="$attrs"
|
|
166
160
|
@pointerover="onPointerOver"
|
|
167
161
|
>
|
|
168
|
-
<PScrollable
|
|
162
|
+
<PScrollable
|
|
163
|
+
class="h-full max-h-inherit rounded-inherit"
|
|
164
|
+
content-class="p-2"
|
|
165
|
+
fader-direction="vertical"
|
|
166
|
+
>
|
|
169
167
|
<slot>
|
|
170
|
-
<PListItem
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
v-bind="option"
|
|
174
|
-
/>
|
|
168
|
+
<PListItem v-for="(option, index) in options" :key="option.value ?? index" v-bind="option">
|
|
169
|
+
<slot name="item" :item="option" />
|
|
170
|
+
</PListItem>
|
|
175
171
|
</slot>
|
|
176
172
|
</PScrollable>
|
|
177
173
|
</ul>
|
|
@@ -1,11 +1,8 @@
|
|
|
1
|
-
import type { ComponentAs, ComponentLabel } from '
|
|
1
|
+
import type { ComponentAs, ComponentLabel, ComponentOption } from '../../types/shared'
|
|
2
2
|
|
|
3
|
-
export interface ListOption extends
|
|
3
|
+
export interface ListOption extends Partial<ComponentOption> {
|
|
4
4
|
as?: ComponentAs
|
|
5
5
|
type?: 'default' | 'error' | 'warning' | 'separator'
|
|
6
|
-
label?: ComponentLabel
|
|
7
|
-
value?: any
|
|
8
|
-
disabled?: boolean
|
|
9
6
|
description?: ComponentLabel
|
|
10
7
|
onClick?: (item: ListOptionSelected, ev: MouseEvent) => void
|
|
11
8
|
}
|
|
@@ -15,8 +12,7 @@ export type ListOptionSelected = Omit<ListOption, 'as' | 'onClick'>
|
|
|
15
12
|
export interface ListProps {
|
|
16
13
|
loop?: boolean
|
|
17
14
|
options?: ListOption[]
|
|
18
|
-
|
|
19
|
-
itemTransition?: boolean
|
|
15
|
+
toggleOnKeyPress?: boolean
|
|
20
16
|
closeOnPressEscape?: boolean
|
|
21
17
|
}
|
|
22
18
|
|
|
@@ -25,16 +21,3 @@ export interface ListEmits {
|
|
|
25
21
|
escape: [KeyboardEvent]
|
|
26
22
|
select: [MouseEvent, ListOptionSelected]
|
|
27
23
|
}
|
|
28
|
-
|
|
29
|
-
export interface ListItemProps {
|
|
30
|
-
as?: ListOption['as']
|
|
31
|
-
type?: ListOption['type']
|
|
32
|
-
label?: ListOption['label']
|
|
33
|
-
value?: ListOption['value']
|
|
34
|
-
disabled?: ListOption['disabled']
|
|
35
|
-
description?: ListOption['description']
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
export interface ListItemEmits {
|
|
39
|
-
click: [ListOptionSelected, MouseEvent]
|
|
40
|
-
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ListItemProps } from '
|
|
1
|
+
import type { ListItemProps } from './types';
|
|
2
2
|
declare var __VLS_11: {};
|
|
3
3
|
type __VLS_Slots = {} & {
|
|
4
4
|
default?: (props: typeof __VLS_11) => any;
|
|
@@ -9,8 +9,9 @@ declare const __VLS_base: import("vue").DefineComponent<ListItemProps, {}, {}, {
|
|
|
9
9
|
onClick?: ((args_0: import("../list/types").ListOptionSelected, args_1: MouseEvent) => any) | undefined;
|
|
10
10
|
}>, {
|
|
11
11
|
type: "default" | "error" | "warning" | "separator";
|
|
12
|
+
as: import("../../types/shared").ComponentAs;
|
|
12
13
|
disabled: boolean;
|
|
13
|
-
|
|
14
|
+
keywords: string[];
|
|
14
15
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
15
16
|
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
16
17
|
declare const _default: typeof __VLS_export;
|
|
@@ -1,47 +1,73 @@
|
|
|
1
1
|
<script setup>
|
|
2
|
-
import {
|
|
2
|
+
import { tv } from "tailwind-variants";
|
|
3
|
+
import { computed, shallowRef } from "vue";
|
|
3
4
|
import { useListContext, useListFilterValue } from "../../contexts/list";
|
|
4
5
|
import { unrefElement } from "../../utils/ref";
|
|
5
6
|
import { getUniqueId } from "../../utils/uid";
|
|
6
|
-
import { listItemVariant } from "./cn";
|
|
7
7
|
defineOptions({
|
|
8
8
|
name: "PListItem",
|
|
9
9
|
inheritAttrs: false
|
|
10
10
|
});
|
|
11
11
|
const props = defineProps({
|
|
12
|
-
as: { type:
|
|
12
|
+
as: { type: [String, Object], required: false, default: "li" },
|
|
13
13
|
type: { type: String, required: false, default: "default" },
|
|
14
|
-
label: { type: null, required: false },
|
|
15
|
-
value: { type:
|
|
14
|
+
label: { type: [String, Number, Array, null], required: false },
|
|
15
|
+
value: { type: [String, Number], required: false },
|
|
16
16
|
disabled: { type: Boolean, required: false, default: false },
|
|
17
|
-
|
|
17
|
+
keywords: { type: Array, required: false, default: () => [] },
|
|
18
|
+
description: { type: [String, Number, Array, null], required: false }
|
|
18
19
|
});
|
|
19
20
|
const emits = defineEmits(["click"]);
|
|
21
|
+
const listItemVariant = tv({
|
|
22
|
+
base: "pxd-list-item h-10 gap-3 px-2 text-sm flex w-full cursor-pointer items-center rounded-md outline-none [contain-intrinsic-size:auto_2.5rem] content-visibility-auto data-[disabled=true]:pointer-events-none data-[disabled=true]:text-gray-700 motion-safe:transition-colors",
|
|
23
|
+
variants: {
|
|
24
|
+
type: {
|
|
25
|
+
error: "text-red-900 pointer-coarse:active:bg-red-100 pointer-fine:data-[selected=true]:bg-red-100",
|
|
26
|
+
warning: "text-amber-900 pointer-coarse:active:bg-amber-100 pointer-fine:data-[selected=true]:bg-amber-100",
|
|
27
|
+
default: "text-foreground pointer-coarse:active:bg-gray-alpha-100 pointer-fine:data-[selected=true]:bg-gray-alpha-100",
|
|
28
|
+
separator: "h-0! px-0 m-1.5 w-auto! border-b"
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
defaultVariants: {
|
|
32
|
+
type: "default"
|
|
33
|
+
}
|
|
34
|
+
});
|
|
20
35
|
const { activeValue, onOptionClick } = useListContext();
|
|
21
36
|
const uniqueId = getUniqueId();
|
|
22
37
|
const filterValue = useListFilterValue();
|
|
23
38
|
const itemRef = shallowRef();
|
|
24
|
-
const
|
|
39
|
+
const searchableText = computed(() => {
|
|
40
|
+
const keywordsText = props.keywords.length > 0 ? props.keywords.join("").toLowerCase().replace(/\s/g, "") : "";
|
|
41
|
+
if (props.label) {
|
|
42
|
+
const propsText = `${String(props.label || "")}${props.description || ""}`.toLowerCase().replace(/\s/g, "");
|
|
43
|
+
return propsText + keywordsText;
|
|
44
|
+
}
|
|
45
|
+
if (keywordsText) {
|
|
46
|
+
return keywordsText;
|
|
47
|
+
}
|
|
48
|
+
return getCachedTextContent();
|
|
49
|
+
});
|
|
25
50
|
const isVisible = computed(
|
|
26
|
-
() => filterValue?.value ?
|
|
51
|
+
() => filterValue?.value ? searchableText.value.includes(filterValue.value.toLowerCase()) : true
|
|
27
52
|
);
|
|
28
53
|
const isSelected = computed(() => activeValue.value === uniqueId);
|
|
29
54
|
const isDisabled = computed(() => props.disabled || props.type === "separator");
|
|
30
55
|
const computedClasses = computed(() => {
|
|
31
56
|
return listItemVariant({ type: props.type });
|
|
32
57
|
});
|
|
58
|
+
let cachedTextContent = "";
|
|
59
|
+
function getCachedTextContent() {
|
|
60
|
+
const text = unrefElement(itemRef.value)?.textContent || "";
|
|
61
|
+
if (text) {
|
|
62
|
+
cachedTextContent = text.toLowerCase().replace(/\s/g, "");
|
|
63
|
+
}
|
|
64
|
+
return cachedTextContent;
|
|
65
|
+
}
|
|
33
66
|
function onItemClick(ev) {
|
|
34
|
-
|
|
35
|
-
|
|
67
|
+
const { as, keywords, ...restProps } = props;
|
|
68
|
+
emits("click", restProps, ev);
|
|
69
|
+
onOptionClick?.(restProps, ev);
|
|
36
70
|
}
|
|
37
|
-
onMounted(async () => {
|
|
38
|
-
await nextTick();
|
|
39
|
-
if (props.label) {
|
|
40
|
-
currentValue.value = `${String(props.label || "")}${props.description || ""}`.toLowerCase().replace(/\s/g, "");
|
|
41
|
-
} else {
|
|
42
|
-
currentValue.value = (unrefElement(itemRef.value)?.textContent || "").toLowerCase().replace(/\s/g, "");
|
|
43
|
-
}
|
|
44
|
-
});
|
|
45
71
|
</script>
|
|
46
72
|
|
|
47
73
|
<template>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { ListOption, ListOptionSelected } from '../list/types'
|
|
2
|
+
|
|
3
|
+
export interface ListItemProps {
|
|
4
|
+
as?: ListOption['as']
|
|
5
|
+
type?: ListOption['type']
|
|
6
|
+
label?: ListOption['label']
|
|
7
|
+
value?: ListOption['value']
|
|
8
|
+
disabled?: ListOption['disabled']
|
|
9
|
+
keywords?: string[]
|
|
10
|
+
description?: ListOption['description']
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export interface ListItemEmits {
|
|
14
|
+
click: [ListOptionSelected, MouseEvent]
|
|
15
|
+
}
|
|
@@ -1,23 +1,54 @@
|
|
|
1
1
|
<script setup>
|
|
2
|
+
import { tv } from "tailwind-variants";
|
|
2
3
|
import { computed, onBeforeUnmount, onMounted, shallowRef } from "vue";
|
|
3
4
|
import { UPDATE_LOADING_BAR_EVENT_NAME } from "../../composables/use-loading-bar";
|
|
4
5
|
import { cachedOff, cachedOn } from "../../utils/event";
|
|
5
6
|
import { clampValue, isTruthyProp } from "../../utils/format";
|
|
6
7
|
import { isServer } from "../../utils/is";
|
|
7
8
|
import PTeleport from "../teleport/index.vue";
|
|
8
|
-
import { loadingBarVariant } from "./cn";
|
|
9
9
|
defineOptions({
|
|
10
10
|
name: "PLoadingBar",
|
|
11
11
|
inheritAttrs: false
|
|
12
12
|
});
|
|
13
13
|
const props = defineProps({
|
|
14
|
-
to: { type:
|
|
14
|
+
to: { type: [String, Object], required: false },
|
|
15
15
|
group: { type: String, required: false, default: "default" },
|
|
16
16
|
minimum: { type: Number, required: false, default: 0.08 },
|
|
17
17
|
trickle: { type: Boolean, required: false, default: true },
|
|
18
18
|
hideDelay: { type: Number, required: false, default: 500 },
|
|
19
19
|
trickleThreshold: { type: Number, required: false, default: 300 }
|
|
20
20
|
});
|
|
21
|
+
const loadingBarVariant = tv({
|
|
22
|
+
slots: {
|
|
23
|
+
wrapper: "pxd-loading-bar top-0 left-0 right-0 pointer-events-none z-10 max-w-full overflow-hidden",
|
|
24
|
+
inner: "pxd-loading-bar--inner h-0.5 data-[hidden=true]:h-0 origin-left data-[transition=false]:transition-none! motion-safe:transition-all"
|
|
25
|
+
},
|
|
26
|
+
variants: {
|
|
27
|
+
status: {
|
|
28
|
+
running: {
|
|
29
|
+
inner: "bg-gray-500"
|
|
30
|
+
},
|
|
31
|
+
finish: {
|
|
32
|
+
inner: "bg-primary"
|
|
33
|
+
},
|
|
34
|
+
error: {
|
|
35
|
+
inner: "bg-red-900"
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
absolute: {
|
|
39
|
+
true: {
|
|
40
|
+
wrapper: "absolute"
|
|
41
|
+
},
|
|
42
|
+
false: {
|
|
43
|
+
wrapper: "fixed"
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
defaultVariants: {
|
|
48
|
+
status: "finish",
|
|
49
|
+
absolute: false
|
|
50
|
+
}
|
|
51
|
+
});
|
|
21
52
|
let prevTimestamp = 0;
|
|
22
53
|
let prevAnimationKey = 0;
|
|
23
54
|
let hiddenBarTimeout;
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
<script setup>
|
|
2
2
|
defineOptions({
|
|
3
|
-
name: "PLoadingDots"
|
|
3
|
+
name: "PLoadingDots",
|
|
4
|
+
inheritAttrs: false
|
|
4
5
|
});
|
|
5
6
|
</script>
|
|
6
7
|
|
|
7
8
|
<template>
|
|
8
|
-
<span class="pxd-loading-dots inline-flex items-center">
|
|
9
|
+
<span class="pxd-loading-dots inline-flex items-center" v-bind="$attrs">
|
|
9
10
|
<div v-if="$slots.prefix" class="pxd-loading-dots--text mr-3">
|
|
10
11
|
<slot name="prefix" />
|
|
11
12
|
</div>
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { ListOptionSelected } from '../list/types';
|
|
1
2
|
import type { MenuProps } from './types';
|
|
2
3
|
declare var __VLS_12: {}, __VLS_23: {};
|
|
3
4
|
type __VLS_Slots = {} & {
|
|
@@ -12,9 +13,11 @@ declare const __VLS_base: import("vue").DefineComponent<MenuProps, {}, {}, {}, {
|
|
|
12
13
|
onSelect?: ((args_0: ListOptionSelected, args_1: MouseEvent) => any) | undefined;
|
|
13
14
|
onChange?: ((visible: boolean) => any) | undefined;
|
|
14
15
|
}>, {
|
|
15
|
-
options: ListOption[];
|
|
16
|
+
options: import("../list/types").ListOption[];
|
|
16
17
|
closeOnPressEscape: boolean;
|
|
17
|
-
position: ComponentPosition;
|
|
18
|
+
position: import("../../types/shared").ComponentPosition;
|
|
19
|
+
showDelay: number;
|
|
20
|
+
hideDelay: number;
|
|
18
21
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
19
22
|
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
20
23
|
declare const _default: typeof __VLS_export;
|
|
@@ -12,6 +12,8 @@ defineProps({
|
|
|
12
12
|
width: { type: [String, Number], required: false },
|
|
13
13
|
options: { type: Array, required: false, default: () => [] },
|
|
14
14
|
position: { type: null, required: false, default: "bottom-start" },
|
|
15
|
+
showDelay: { type: Number, required: false, default: 0 },
|
|
16
|
+
hideDelay: { type: Number, required: false, default: 100 },
|
|
15
17
|
closeOnPressEscape: { type: Boolean, required: false, default: true }
|
|
16
18
|
});
|
|
17
19
|
const emits = defineEmits(["change", "select"]);
|
|
@@ -33,7 +35,8 @@ function onOptionClick(ev, item) {
|
|
|
33
35
|
<PPopover
|
|
34
36
|
class="pxd-menu"
|
|
35
37
|
trigger="click"
|
|
36
|
-
:
|
|
38
|
+
:show-delay="isXs ? 0 : showDelay"
|
|
39
|
+
:hide-delay="isXs ? 0 : hideDelay"
|
|
37
40
|
:position="position"
|
|
38
41
|
:visible="popoverVisible"
|
|
39
42
|
:unset-position="isXs"
|