pxd 0.0.52 → 0.0.53
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 +6 -3
- package/dist/components/active-graph/index.d.vue.ts +0 -2
- package/dist/components/active-graph/index.vue +35 -37
- package/dist/components/avatar/index.d.vue.ts +2 -2
- package/dist/components/avatar/index.vue +17 -16
- package/dist/components/avatar-group/index.d.vue.ts +1 -1
- package/dist/components/avatar-group/index.vue +4 -1
- package/dist/components/badge/cn.d.ts +90 -0
- package/dist/components/badge/cn.js +44 -0
- package/dist/components/badge/index.d.vue.ts +5 -33
- package/dist/components/badge/index.vue +10 -56
- package/dist/components/book/index.vue +90 -17
- package/dist/components/browser/index.vue +21 -6
- package/dist/components/button/cn.d.ts +121 -0
- package/dist/components/button/cn.js +55 -0
- package/dist/components/button/index.d.vue.ts +8 -14
- package/dist/components/button/index.vue +22 -74
- package/dist/components/carousel-group/index.d.vue.ts +1 -1
- package/dist/components/carousel-group/index.vue +32 -28
- package/dist/components/checkbox/cn.d.ts +67 -0
- package/dist/components/checkbox/cn.js +31 -0
- package/dist/components/checkbox/index.vue +9 -19
- package/dist/components/chip/cn.d.ts +49 -0
- package/dist/components/chip/cn.js +26 -0
- package/dist/components/chip/index.vue +13 -21
- package/dist/components/choicebox/index.vue +1 -1
- package/dist/components/choicebox-group/index.vue +6 -3
- package/dist/components/collapse/index.vue +7 -1
- package/dist/components/collapse-group/index.vue +7 -7
- package/dist/components/command-menu/index.vue +9 -8
- package/dist/components/command-menu-group/index.vue +4 -1
- package/dist/components/config-provider/index.d.vue.ts +1 -0
- package/dist/components/config-provider/index.vue +2 -1
- package/dist/components/countdown/index.vue +2 -10
- package/dist/components/dash-line/index.vue +22 -16
- package/dist/components/description/index.vue +4 -2
- package/dist/components/drawer/index.vue +19 -11
- package/dist/components/empty-state/index.vue +3 -1
- package/dist/components/error/cn.d.ts +22 -0
- package/dist/components/error/cn.js +15 -0
- package/dist/components/error/index.vue +13 -14
- package/dist/components/fader/index.vue +30 -14
- package/dist/components/gauge/index.vue +6 -6
- package/dist/components/grid/index.vue +16 -12
- package/dist/components/grid-item/index.vue +4 -4
- package/dist/components/hold-button/index.vue +19 -13
- package/dist/components/input/cn.d.ts +73 -0
- package/dist/components/input/cn.js +36 -0
- package/dist/components/input/index.d.vue.ts +14 -16
- package/dist/components/input/index.vue +74 -101
- package/dist/components/intersection-observer/index.vue +7 -3
- package/dist/components/kbd/index.vue +2 -2
- package/dist/components/link-button/index.d.vue.ts +8 -8
- package/dist/components/link-button/index.vue +17 -25
- package/dist/components/list/index.d.vue.ts +0 -1
- package/dist/components/list/index.vue +58 -57
- package/dist/components/list-item/cn.d.ts +22 -0
- package/dist/components/list-item/cn.js +15 -0
- package/dist/components/list-item/index.d.vue.ts +3 -3
- package/dist/components/list-item/index.vue +14 -25
- package/dist/components/loading-bar/cn.d.ts +70 -0
- package/dist/components/loading-bar/cn.js +32 -0
- package/dist/components/loading-bar/index.d.vue.ts +2 -0
- package/dist/components/loading-bar/index.vue +68 -61
- package/dist/components/loading-dots/index.vue +12 -4
- package/dist/components/menu/index.d.vue.ts +2 -2
- package/dist/components/menu/index.vue +4 -4
- package/dist/components/message/index.vue +82 -48
- package/dist/components/message-item/index.vue +7 -2
- package/dist/components/modal/index.vue +20 -12
- package/dist/components/more-button/index.d.vue.ts +1 -3
- package/dist/components/more-button/index.vue +7 -17
- package/dist/components/note/cn.d.ts +121 -0
- package/dist/components/note/cn.js +66 -0
- package/dist/components/note/index.d.vue.ts +3 -39
- package/dist/components/note/index.vue +18 -37
- package/dist/components/number-input/index.d.vue.ts +19 -10
- package/dist/components/number-input/index.vue +121 -75
- package/dist/components/overlay/index.vue +4 -20
- package/dist/components/pagination/index.vue +25 -8
- package/dist/components/pin-input/cn.d.ts +46 -0
- package/dist/components/pin-input/cn.js +25 -0
- package/dist/components/pin-input/index.vue +11 -20
- package/dist/components/placeholder/index.vue +11 -4
- package/dist/components/popover/index.d.vue.ts +4 -3
- package/dist/components/popover/index.vue +107 -54
- package/dist/components/progress/cn.d.ts +19 -0
- package/dist/components/progress/cn.js +14 -0
- package/dist/components/progress/index.d.vue.ts +1 -1
- package/dist/components/progress/index.vue +21 -14
- package/dist/components/radio/cn.d.ts +46 -0
- package/dist/components/radio/cn.js +42 -0
- package/dist/components/radio/index.vue +11 -18
- package/dist/components/resizable/index.vue +8 -2
- package/dist/components/resizable-handle/index.vue +1 -0
- package/dist/components/resizable-panel/index.vue +12 -11
- package/dist/components/skeleton/cn.d.ts +43 -0
- package/dist/components/skeleton/cn.js +24 -0
- package/dist/components/skeleton/index.d.vue.ts +4 -3
- package/dist/components/skeleton/index.vue +11 -20
- package/dist/components/slider/index.d.vue.ts +1 -1
- package/dist/components/slider/index.vue +14 -12
- package/dist/components/snippet/cn.d.ts +52 -0
- package/dist/components/snippet/cn.js +27 -0
- package/dist/components/snippet/index.vue +21 -29
- package/dist/components/spinner/index.vue +3 -1
- package/dist/components/stack/cn.d.ts +70 -0
- package/dist/components/stack/cn.js +33 -0
- package/dist/components/stack/index.d.vue.ts +2 -2
- package/dist/components/stack/index.vue +16 -31
- package/dist/components/status-dot/index.vue +5 -1
- package/dist/components/switch/cn.d.ts +16 -0
- package/dist/components/switch/cn.js +13 -0
- package/dist/components/switch/index.vue +5 -11
- package/dist/components/switch-group/index.vue +7 -4
- package/dist/components/text/cn.d.ts +67 -0
- package/dist/components/text/cn.js +34 -0
- package/dist/components/text/index.d.vue.ts +1 -1
- package/dist/components/text/index.vue +16 -25
- package/dist/components/textarea/cn.d.ts +58 -0
- package/dist/components/textarea/cn.js +30 -0
- package/dist/components/textarea/index.d.vue.ts +2 -0
- package/dist/components/textarea/index.vue +17 -24
- package/dist/components/theme-switcher/index.vue +6 -3
- package/dist/components/time-picker/index.d.vue.ts +2 -2
- package/dist/components/time-picker/index.vue +45 -25
- package/dist/components/toggle/index.vue +10 -6
- package/dist/components/tooltip/index.vue +3 -3
- package/dist/components/virtual-list/index.vue +1 -7
- package/dist/composables/use-browser-observer.d.ts +1 -1
- package/dist/composables/use-browser-observer.js +19 -15
- package/dist/composables/use-config-provider-context.d.ts +1 -0
- package/dist/composables/use-config-provider-context.js +5 -10
- package/dist/composables/use-countdown.js +1 -3
- package/dist/composables/use-deferred-value.js +1 -5
- package/dist/composables/use-delay-change.js +1 -4
- package/dist/composables/use-delay-destroy.js +1 -5
- package/dist/composables/use-loading-bar.d.ts +6 -14
- package/dist/composables/use-loading-bar.js +3 -14
- package/dist/composables/use-message.d.ts +9 -3
- package/dist/composables/use-message.js +9 -9
- package/dist/composables/use-model-value.d.ts +1 -0
- package/dist/composables/use-model-value.js +4 -2
- package/dist/composables/use-outside-click.js +12 -8
- package/dist/composables/use-pointer-gesture.js +5 -1
- package/dist/composables/use-toggle-value.js +1 -4
- package/dist/composables/use-virtual-list.js +14 -7
- package/dist/contexts/avatar.js +4 -4
- package/dist/contexts/carousel.js +1 -4
- package/dist/contexts/checkbox.js +1 -4
- package/dist/contexts/choicebox.js +2 -8
- package/dist/contexts/collapse.js +1 -4
- package/dist/contexts/list.js +5 -8
- package/dist/contexts/radio.js +4 -4
- package/dist/contexts/resizable.js +1 -4
- package/dist/contexts/switch.js +2 -8
- package/dist/index.d.ts +1 -0
- package/dist/styles/source.css +106 -59
- package/dist/styles/styles.css +1 -1
- package/dist/styles/tw.css +106 -59
- package/dist/types/components/avatar.d.ts +2 -2
- package/dist/types/components/button.d.ts +11 -4
- package/dist/types/components/index.d.ts +12 -0
- package/dist/types/components/input.d.ts +4 -5
- package/dist/types/components/list.d.ts +1 -1
- package/dist/types/components/switch.d.ts +1 -1
- package/dist/types/shared/props.d.ts +6 -4
- package/dist/types/shared/utils.d.ts +3 -1
- package/dist/utils/context.d.ts +2 -8
- package/dist/utils/date.d.ts +1 -1
- package/dist/utils/date.js +1 -5
- package/dist/utils/event.js +6 -18
- package/dist/utils/format.d.ts +1 -1
- package/dist/utils/format.js +1 -1
- package/dist/utils/is.d.ts +0 -1
- package/dist/utils/is.js +3 -2
- package/dist/utils/responsive.js +7 -4
- package/dist/utils/throttle.js +4 -2
- package/package.json +45 -43
- package/dist/components/_internal/fragment-container.vue.d.ts +0 -13
- package/dist/components/active-graph/index.vue.d.ts +0 -51
- package/dist/components/avatar/index.vue.d.ts +0 -34
- package/dist/components/avatar-group/index.vue.d.ts +0 -8
- package/dist/components/backtop/index.vue.d.ts +0 -21
- package/dist/components/badge/index.vue.d.ts +0 -52
- package/dist/components/book/index.vue.d.ts +0 -28
- package/dist/components/browser/index.vue.d.ts +0 -16
- package/dist/components/button/index.vue.d.ts +0 -29
- package/dist/components/carousel/index.vue.d.ts +0 -13
- package/dist/components/carousel-group/index.vue.d.ts +0 -35
- package/dist/components/checkbox/index.vue.d.ts +0 -26
- package/dist/components/checkbox-group/index.vue.d.ts +0 -28
- package/dist/components/chip/index.vue.d.ts +0 -24
- package/dist/components/choicebox/index.vue.d.ts +0 -16
- package/dist/components/choicebox-group/index.vue.d.ts +0 -24
- package/dist/components/collapse/index.vue.d.ts +0 -22
- package/dist/components/collapse-group/index.vue.d.ts +0 -20
- package/dist/components/command-menu/index.vue.d.ts +0 -42
- package/dist/components/command-menu-group/index.vue.d.ts +0 -17
- package/dist/components/command-menu-item/index.vue.d.ts +0 -13
- package/dist/components/config-provider/index.vue.d.ts +0 -22
- package/dist/components/countdown/index.vue.d.ts +0 -51
- package/dist/components/dash-line/index.vue.d.ts +0 -13
- package/dist/components/description/index.vue.d.ts +0 -20
- package/dist/components/drawer/index.vue.d.ts +0 -60
- package/dist/components/empty-state/index.vue.d.ts +0 -23
- package/dist/components/error/index.vue.d.ts +0 -22
- package/dist/components/fader/index.vue.d.ts +0 -12
- package/dist/components/gauge/index.vue.d.ts +0 -14
- package/dist/components/grid/index.vue.d.ts +0 -19
- package/dist/components/grid-item/index.vue.d.ts +0 -18
- package/dist/components/hold-button/index.vue.d.ts +0 -42
- package/dist/components/input/index.vue.d.ts +0 -55
- package/dist/components/intersection-observer/index.vue.d.ts +0 -39
- package/dist/components/kbd/index.vue.d.ts +0 -24
- package/dist/components/label/index.vue.d.ts +0 -13
- package/dist/components/link-button/index.vue.d.ts +0 -33
- package/dist/components/list/index.vue.d.ts +0 -44
- package/dist/components/list-item/index.vue.d.ts +0 -29
- package/dist/components/loading-bar/index.vue.d.ts +0 -15
- package/dist/components/loading-dots/index.vue.d.ts +0 -15
- package/dist/components/material/index.vue.d.ts +0 -18
- package/dist/components/menu/index.vue.d.ts +0 -33
- package/dist/components/message/index.vue.d.ts +0 -176
- package/dist/components/message-item/index.vue.d.ts +0 -15
- package/dist/components/modal/index.vue.d.ts +0 -58
- package/dist/components/more-button/index.vue.d.ts +0 -20
- package/dist/components/noise-background/index.vue.d.ts +0 -19
- package/dist/components/note/index.vue.d.ts +0 -64
- package/dist/components/number-input/index.vue.d.ts +0 -39
- package/dist/components/overlay/index.vue.d.ts +0 -35
- package/dist/components/pagination/index.vue.d.ts +0 -21
- package/dist/components/pin-input/index.vue.d.ts +0 -28
- package/dist/components/placeholder/index.vue.d.ts +0 -18
- package/dist/components/popover/index.vue.d.ts +0 -73
- package/dist/components/progress/index.vue.d.ts +0 -34
- package/dist/components/radio/index.vue.d.ts +0 -20
- package/dist/components/radio-group/index.vue.d.ts +0 -22
- package/dist/components/resizable/index.vue.d.ts +0 -19
- package/dist/components/resizable-handle/index.vue.d.ts +0 -3
- package/dist/components/resizable-panel/index.vue.d.ts +0 -20
- package/dist/components/scrollable/index.vue.d.ts +0 -0
- package/dist/components/skeleton/index.vue.d.ts +0 -26
- package/dist/components/slider/index.vue.d.ts +0 -26
- package/dist/components/snippet/index.vue.d.ts +0 -18
- package/dist/components/spinner/index.vue.d.ts +0 -3
- package/dist/components/stack/index.vue.d.ts +0 -30
- package/dist/components/status-dot/index.vue.d.ts +0 -11
- package/dist/components/switch/index.vue.d.ts +0 -20
- package/dist/components/switch-group/index.vue.d.ts +0 -23
- package/dist/components/teleport/index.vue.d.ts +0 -21
- package/dist/components/text/index.vue.d.ts +0 -26
- package/dist/components/textarea/index.vue.d.ts +0 -28
- package/dist/components/theme-switcher/index.vue.d.ts +0 -8
- package/dist/components/time-picker/index.vue.d.ts +0 -35
- package/dist/components/toggle/index.vue.d.ts +0 -41
- package/dist/components/tooltip/index.vue.d.ts +0 -32
- package/dist/components/virtual-list/index.vue.d.ts +0 -24
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { tv } from "tailwind-variants";
|
|
2
|
+
export const switchVariant = tv({
|
|
3
|
+
base: "pxd-switch--label px-3 text-sm font-medium flex size-full items-center justify-center truncate rounded-sm text-foreground-secondary peer-focus-ring select-none peer-checked:bg-gray-100 peer-disabled:cursor-not-allowed peer-disabled:text-gray-800 empty:hidden motion-safe:transition-all",
|
|
4
|
+
variants: {
|
|
5
|
+
disabled: {
|
|
6
|
+
true: "",
|
|
7
|
+
false: "peer-checked:text-foreground"
|
|
8
|
+
}
|
|
9
|
+
},
|
|
10
|
+
defaultVariants: {
|
|
11
|
+
disabled: false
|
|
12
|
+
}
|
|
13
|
+
});
|
|
@@ -3,6 +3,7 @@ import { computed } from "vue";
|
|
|
3
3
|
import { useUniqueId } from "../../composables/use-unique-id-context";
|
|
4
4
|
import { useSwitchGroupContext, useSwitchGroupModelValue } from "../../contexts/switch";
|
|
5
5
|
import { getUniqueId } from "../../utils/uid";
|
|
6
|
+
import { switchVariant } from "./cn";
|
|
6
7
|
defineOptions({
|
|
7
8
|
name: "PSwitch",
|
|
8
9
|
model: {
|
|
@@ -23,15 +24,8 @@ const switchGroupModelValue = useSwitchGroupModelValue();
|
|
|
23
24
|
const isChecked = computed(() => switchGroupModelValue.value === props.value);
|
|
24
25
|
const computedDisabled = computed(() => props.disabled || switchGroupContext.disabled);
|
|
25
26
|
const computedRequired = computed(() => props.required || switchGroupContext.required);
|
|
26
|
-
const
|
|
27
|
-
|
|
28
|
-
"pxd-switch--label px-3 text-sm flex size-full items-center justify-center truncate rounded-sm text-foreground-secondary peer-focus-ring",
|
|
29
|
-
"font-medium select-none peer-checked:bg-gray-100 peer-disabled:cursor-not-allowed peer-disabled:text-gray-800 empty:hidden motion-safe:transition-all"
|
|
30
|
-
];
|
|
31
|
-
if (!computedDisabled.value) {
|
|
32
|
-
classes.push("peer-checked:text-foreground");
|
|
33
|
-
}
|
|
34
|
-
return classes.join(" ");
|
|
27
|
+
const computedClasses = computed(() => {
|
|
28
|
+
return switchVariant({ disabled: computedDisabled.value });
|
|
35
29
|
});
|
|
36
30
|
function onSwitchFocusIn() {
|
|
37
31
|
if (computedDisabled.value) {
|
|
@@ -57,9 +51,9 @@ function onSwitchFocusIn() {
|
|
|
57
51
|
:name="switchGroupName"
|
|
58
52
|
:disabled="computedDisabled"
|
|
59
53
|
:required="computedRequired"
|
|
60
|
-
|
|
54
|
+
/>
|
|
61
55
|
|
|
62
|
-
<div :class="
|
|
56
|
+
<div :class="computedClasses" @focusin="onSwitchFocusIn">
|
|
63
57
|
<slot>
|
|
64
58
|
{{ label }}
|
|
65
59
|
</slot>
|
|
@@ -14,9 +14,9 @@ defineOptions({
|
|
|
14
14
|
}
|
|
15
15
|
});
|
|
16
16
|
const props = defineProps({
|
|
17
|
-
block: { type: Boolean, required: false },
|
|
18
17
|
disabled: { type: Boolean, required: false },
|
|
19
18
|
required: { type: Boolean, required: false },
|
|
19
|
+
fullWidth: { type: Boolean, required: false },
|
|
20
20
|
size: { type: String, required: false },
|
|
21
21
|
options: { type: Array, required: false, default: () => [] },
|
|
22
22
|
modelValue: { type: [String, Number], required: false, default: "" }
|
|
@@ -27,16 +27,19 @@ const SIZES = {
|
|
|
27
27
|
md: "h-9",
|
|
28
28
|
lg: "h-10"
|
|
29
29
|
};
|
|
30
|
-
const
|
|
30
|
+
const configProvider = useConfigProvider();
|
|
31
31
|
const modelValue = useModelValue(props, emits);
|
|
32
|
-
const computedSize = computed(() => getFallbackValue(props.size, SIZES,
|
|
32
|
+
const computedSize = computed(() => getFallbackValue(props.size, SIZES, configProvider.size));
|
|
33
33
|
provideUniqueId("SwitchGroupName");
|
|
34
34
|
provideSwitchGroupContext(props);
|
|
35
35
|
provideSwitchGroupModelValue(modelValue);
|
|
36
36
|
</script>
|
|
37
37
|
|
|
38
38
|
<template>
|
|
39
|
-
<div
|
|
39
|
+
<div
|
|
40
|
+
class="pxd-switch-group p-1 flex touch-manipulation rounded-md border"
|
|
41
|
+
:class="[fullWidth ? 'w-full' : 'w-max', computedSize]"
|
|
42
|
+
>
|
|
40
43
|
<slot>
|
|
41
44
|
<PSwitch
|
|
42
45
|
v-for="option in options"
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
export declare const textVariant: import("tailwind-variants").TVReturnType<{
|
|
2
|
+
align: {
|
|
3
|
+
left: string;
|
|
4
|
+
center: string;
|
|
5
|
+
right: string;
|
|
6
|
+
};
|
|
7
|
+
monospace: {
|
|
8
|
+
true: string;
|
|
9
|
+
false: string;
|
|
10
|
+
};
|
|
11
|
+
secondary: {
|
|
12
|
+
true: string;
|
|
13
|
+
false: string;
|
|
14
|
+
};
|
|
15
|
+
truncate: {
|
|
16
|
+
true: string;
|
|
17
|
+
false: string;
|
|
18
|
+
};
|
|
19
|
+
lineClamp: {
|
|
20
|
+
true: string;
|
|
21
|
+
false: string;
|
|
22
|
+
};
|
|
23
|
+
}, undefined, "pxd-text m-0", {
|
|
24
|
+
align: {
|
|
25
|
+
left: string;
|
|
26
|
+
center: string;
|
|
27
|
+
right: string;
|
|
28
|
+
};
|
|
29
|
+
monospace: {
|
|
30
|
+
true: string;
|
|
31
|
+
false: string;
|
|
32
|
+
};
|
|
33
|
+
secondary: {
|
|
34
|
+
true: string;
|
|
35
|
+
false: string;
|
|
36
|
+
};
|
|
37
|
+
truncate: {
|
|
38
|
+
true: string;
|
|
39
|
+
false: string;
|
|
40
|
+
};
|
|
41
|
+
lineClamp: {
|
|
42
|
+
true: string;
|
|
43
|
+
false: string;
|
|
44
|
+
};
|
|
45
|
+
}, undefined, import("tailwind-variants").TVReturnType<{
|
|
46
|
+
align: {
|
|
47
|
+
left: string;
|
|
48
|
+
center: string;
|
|
49
|
+
right: string;
|
|
50
|
+
};
|
|
51
|
+
monospace: {
|
|
52
|
+
true: string;
|
|
53
|
+
false: string;
|
|
54
|
+
};
|
|
55
|
+
secondary: {
|
|
56
|
+
true: string;
|
|
57
|
+
false: string;
|
|
58
|
+
};
|
|
59
|
+
truncate: {
|
|
60
|
+
true: string;
|
|
61
|
+
false: string;
|
|
62
|
+
};
|
|
63
|
+
lineClamp: {
|
|
64
|
+
true: string;
|
|
65
|
+
false: string;
|
|
66
|
+
};
|
|
67
|
+
}, undefined, "pxd-text m-0", unknown, unknown, undefined>>;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { tv } from "tailwind-variants";
|
|
2
|
+
export const textVariant = tv({
|
|
3
|
+
base: "pxd-text m-0",
|
|
4
|
+
variants: {
|
|
5
|
+
align: {
|
|
6
|
+
left: "text-left",
|
|
7
|
+
center: "text-center",
|
|
8
|
+
right: "text-right"
|
|
9
|
+
},
|
|
10
|
+
monospace: {
|
|
11
|
+
true: "font-mono",
|
|
12
|
+
false: ""
|
|
13
|
+
},
|
|
14
|
+
secondary: {
|
|
15
|
+
true: "text-foreground-secondary",
|
|
16
|
+
false: ""
|
|
17
|
+
},
|
|
18
|
+
truncate: {
|
|
19
|
+
true: "truncate",
|
|
20
|
+
false: ""
|
|
21
|
+
},
|
|
22
|
+
lineClamp: {
|
|
23
|
+
true: "line-clamp",
|
|
24
|
+
false: ""
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
defaultVariants: {
|
|
28
|
+
align: "left",
|
|
29
|
+
monospace: false,
|
|
30
|
+
secondary: false,
|
|
31
|
+
truncate: false,
|
|
32
|
+
lineClamp: false
|
|
33
|
+
}
|
|
34
|
+
});
|
|
@@ -12,8 +12,8 @@ type __VLS_Slots = {} & {
|
|
|
12
12
|
default?: (props: typeof __VLS_8) => any;
|
|
13
13
|
};
|
|
14
14
|
declare const __VLS_base: import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<Props> & Readonly<{}>, {
|
|
15
|
-
as: ComponentAs;
|
|
16
15
|
align: "left" | "center" | "right";
|
|
16
|
+
as: ComponentAs;
|
|
17
17
|
truncate: boolean | number | string;
|
|
18
18
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
19
19
|
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
<script setup>
|
|
2
2
|
import { computed } from "vue";
|
|
3
|
-
import { getCssUnitValue
|
|
3
|
+
import { getCssUnitValue } from "../../utils/format";
|
|
4
4
|
import { getResponsiveValue } from "../../utils/responsive";
|
|
5
|
+
import { textVariant } from "./cn";
|
|
5
6
|
defineOptions({
|
|
6
7
|
name: "PText"
|
|
7
8
|
});
|
|
@@ -13,12 +14,7 @@ const props = defineProps({
|
|
|
13
14
|
monospace: { type: Boolean, required: false },
|
|
14
15
|
secondary: { type: Boolean, required: false }
|
|
15
16
|
});
|
|
16
|
-
const
|
|
17
|
-
left: "text-left",
|
|
18
|
-
center: "text-center",
|
|
19
|
-
right: "text-right"
|
|
20
|
-
};
|
|
21
|
-
const presetSizeClasses = {
|
|
17
|
+
const presetSize = {
|
|
22
18
|
"--text-xs": "text-xs",
|
|
23
19
|
"--text-sm": "sm:text-sm",
|
|
24
20
|
"--text-md": "md:text-md",
|
|
@@ -43,30 +39,25 @@ const computedStyle = computed(() => {
|
|
|
43
39
|
}
|
|
44
40
|
return styles;
|
|
45
41
|
});
|
|
46
|
-
const
|
|
42
|
+
const computedClasses = computed(() => {
|
|
47
43
|
const { truncate, monospace, secondary } = props;
|
|
44
|
+
const baseClass = textVariant({
|
|
45
|
+
align: props.align,
|
|
46
|
+
monospace,
|
|
47
|
+
secondary,
|
|
48
|
+
truncate: truncate === true,
|
|
49
|
+
lineClamp: typeof truncate === "number"
|
|
50
|
+
});
|
|
48
51
|
const classes = [
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
if (monospace) {
|
|
54
|
-
classes.push("font-mono");
|
|
55
|
-
}
|
|
56
|
-
if (secondary) {
|
|
57
|
-
classes.push("text-foreground-secondary");
|
|
58
|
-
}
|
|
59
|
-
if (isTruthyProp(truncate)) {
|
|
60
|
-
classes.push("truncate");
|
|
61
|
-
} else if (truncate) {
|
|
62
|
-
classes.push(`line-clamp`);
|
|
63
|
-
}
|
|
64
|
-
return classes.join(" ");
|
|
52
|
+
baseClass,
|
|
53
|
+
...Object.keys(formattedSize.value).map((bp) => presetSize[bp])
|
|
54
|
+
].filter(Boolean).join(" ");
|
|
55
|
+
return classes;
|
|
65
56
|
});
|
|
66
57
|
</script>
|
|
67
58
|
|
|
68
59
|
<template>
|
|
69
|
-
<Component :is="as" :class="
|
|
60
|
+
<Component :is="as" :class="computedClasses" :style="computedStyle">
|
|
70
61
|
<slot />
|
|
71
62
|
</Component>
|
|
72
63
|
</template>
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
export declare const textareaVariant: import("tailwind-variants").TVReturnType<{
|
|
2
|
+
size: {
|
|
3
|
+
xs: string;
|
|
4
|
+
sm: string;
|
|
5
|
+
md: string;
|
|
6
|
+
lg: string;
|
|
7
|
+
};
|
|
8
|
+
disabled: {
|
|
9
|
+
true: string;
|
|
10
|
+
false: string;
|
|
11
|
+
};
|
|
12
|
+
readonly: {
|
|
13
|
+
true: string;
|
|
14
|
+
false: string;
|
|
15
|
+
};
|
|
16
|
+
error: {
|
|
17
|
+
true: string;
|
|
18
|
+
false: string;
|
|
19
|
+
};
|
|
20
|
+
}, undefined, "", {
|
|
21
|
+
size: {
|
|
22
|
+
xs: string;
|
|
23
|
+
sm: string;
|
|
24
|
+
md: string;
|
|
25
|
+
lg: string;
|
|
26
|
+
};
|
|
27
|
+
disabled: {
|
|
28
|
+
true: string;
|
|
29
|
+
false: string;
|
|
30
|
+
};
|
|
31
|
+
readonly: {
|
|
32
|
+
true: string;
|
|
33
|
+
false: string;
|
|
34
|
+
};
|
|
35
|
+
error: {
|
|
36
|
+
true: string;
|
|
37
|
+
false: string;
|
|
38
|
+
};
|
|
39
|
+
}, undefined, import("tailwind-variants").TVReturnType<{
|
|
40
|
+
size: {
|
|
41
|
+
xs: string;
|
|
42
|
+
sm: string;
|
|
43
|
+
md: string;
|
|
44
|
+
lg: string;
|
|
45
|
+
};
|
|
46
|
+
disabled: {
|
|
47
|
+
true: string;
|
|
48
|
+
false: string;
|
|
49
|
+
};
|
|
50
|
+
readonly: {
|
|
51
|
+
true: string;
|
|
52
|
+
false: string;
|
|
53
|
+
};
|
|
54
|
+
error: {
|
|
55
|
+
true: string;
|
|
56
|
+
false: string;
|
|
57
|
+
};
|
|
58
|
+
}, undefined, "", unknown, unknown, undefined>>;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { tv } from "tailwind-variants";
|
|
2
|
+
export const textareaVariant = tv({
|
|
3
|
+
base: "",
|
|
4
|
+
variants: {
|
|
5
|
+
size: {
|
|
6
|
+
xs: "text-xs",
|
|
7
|
+
sm: "text-sm",
|
|
8
|
+
md: "text-sm",
|
|
9
|
+
lg: "text-base"
|
|
10
|
+
},
|
|
11
|
+
disabled: {
|
|
12
|
+
true: "is-disabled",
|
|
13
|
+
false: ""
|
|
14
|
+
},
|
|
15
|
+
readonly: {
|
|
16
|
+
true: "is-readonly",
|
|
17
|
+
false: ""
|
|
18
|
+
},
|
|
19
|
+
error: {
|
|
20
|
+
true: "is-error",
|
|
21
|
+
false: ""
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
defaultVariants: {
|
|
25
|
+
size: "md",
|
|
26
|
+
disabled: false,
|
|
27
|
+
readonly: false,
|
|
28
|
+
error: false
|
|
29
|
+
}
|
|
30
|
+
});
|
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
import { computed } from "vue";
|
|
3
3
|
import { useConfigProvider } from "../../composables/use-config-provider-context";
|
|
4
4
|
import { useModelValue } from "../../composables/use-model-value";
|
|
5
|
-
import {
|
|
5
|
+
import { isTruthyProp } from "../../utils/format";
|
|
6
6
|
import { getUniqueId } from "../../utils/uid";
|
|
7
|
+
import { textareaVariant } from "./cn";
|
|
7
8
|
defineOptions({
|
|
8
9
|
name: "PTextarea",
|
|
9
10
|
model: {
|
|
@@ -12,6 +13,8 @@ defineOptions({
|
|
|
12
13
|
}
|
|
13
14
|
});
|
|
14
15
|
const props = defineProps({
|
|
16
|
+
rows: { type: [String, Number], required: false },
|
|
17
|
+
cols: { type: [String, Number], required: false },
|
|
15
18
|
size: { type: String, required: false },
|
|
16
19
|
error: { type: [Boolean, String], required: false },
|
|
17
20
|
readonly: { type: Boolean, required: false },
|
|
@@ -25,27 +28,15 @@ const props = defineProps({
|
|
|
25
28
|
});
|
|
26
29
|
const emits = defineEmits(["update:modelValue", "change", "focus", "blur"]);
|
|
27
30
|
const uniqueId = getUniqueId();
|
|
28
|
-
const SIZES = {
|
|
29
|
-
xs: "text-xs",
|
|
30
|
-
sm: "text-sm",
|
|
31
|
-
md: "text-sm",
|
|
32
|
-
lg: "text-base"
|
|
33
|
-
};
|
|
34
31
|
const modelValue = useModelValue(props, emits);
|
|
35
|
-
const
|
|
36
|
-
const
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
classes.push("is-readonly");
|
|
44
|
-
}
|
|
45
|
-
if (props.error) {
|
|
46
|
-
classes.push("is-error");
|
|
47
|
-
}
|
|
48
|
-
return classes.join(" ");
|
|
32
|
+
const configProvider = useConfigProvider();
|
|
33
|
+
const computedClasses = computed(() => {
|
|
34
|
+
return textareaVariant({
|
|
35
|
+
size: props.size || configProvider.size,
|
|
36
|
+
error: isTruthyProp(props.error),
|
|
37
|
+
disabled: isTruthyProp(props.disabled),
|
|
38
|
+
readonly: isTruthyProp(props.readonly)
|
|
39
|
+
});
|
|
49
40
|
});
|
|
50
41
|
function onInputFocus(event) {
|
|
51
42
|
emits("focus", event);
|
|
@@ -61,16 +52,18 @@ function onInputChange(event) {
|
|
|
61
52
|
<template>
|
|
62
53
|
<label
|
|
63
54
|
:for="uniqueId"
|
|
64
|
-
class="pxd-textarea pxd-input--border flex size-full min-h-
|
|
65
|
-
:class="
|
|
55
|
+
class="pxd-textarea pxd-input--border flex size-full min-h-inherit max-w-full items-center justify-center overflow-hidden rounded-md bg-background-100 motion-safe:transition-all"
|
|
56
|
+
:class="computedClasses"
|
|
66
57
|
>
|
|
67
58
|
<textarea
|
|
68
59
|
:id="uniqueId"
|
|
69
60
|
v-model="modelValue"
|
|
70
|
-
class="py-2.5 px-3 size-full min-h-
|
|
61
|
+
class="py-2.5 px-3 size-full min-h-inherit resize-none appearance-none rounded-inherit border-none bg-transparent font-inherit outline-none placeholder:text-gray-600 placeholder:select-none disabled:cursor-not-allowed disabled:bg-gray-100 disabled:text-gray-700 disabled:placeholder:text-gray-400"
|
|
71
62
|
autocorrect="off"
|
|
72
63
|
autocomplete="off"
|
|
73
64
|
autocapitalize="off"
|
|
65
|
+
:rows="rows"
|
|
66
|
+
:cols="cols"
|
|
74
67
|
:readonly="readonly"
|
|
75
68
|
:disabled="disabled"
|
|
76
69
|
:required="required"
|
|
@@ -13,9 +13,12 @@ const { isDark, toggleDarkMode } = useColorScheme({
|
|
|
13
13
|
syncStatus: true
|
|
14
14
|
});
|
|
15
15
|
const renderIcon = computed(() => isDark.value ? MoonIcon : SunIcon);
|
|
16
|
-
watch(
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
watch(
|
|
17
|
+
() => isDark.value,
|
|
18
|
+
(newVal) => {
|
|
19
|
+
emits("toggle", newVal ? "dark" : "light");
|
|
20
|
+
}
|
|
21
|
+
);
|
|
19
22
|
</script>
|
|
20
23
|
|
|
21
24
|
<template>
|
|
@@ -6,7 +6,7 @@ interface Props {
|
|
|
6
6
|
presets?: DateTimePreset[];
|
|
7
7
|
disabled?: boolean;
|
|
8
8
|
clearable?: boolean;
|
|
9
|
-
modelValue?: Date | string | number;
|
|
9
|
+
modelValue?: Date | string | number | null;
|
|
10
10
|
prefixIcon?: boolean;
|
|
11
11
|
placeholder?: string;
|
|
12
12
|
showSeconds?: boolean;
|
|
@@ -24,7 +24,7 @@ declare const __VLS_export: import("vue").DefineComponent<Props, {}, {}, {}, {},
|
|
|
24
24
|
"onUpdate:modelValue"?: ((args_0: string) => any) | undefined;
|
|
25
25
|
}>, {
|
|
26
26
|
format: string;
|
|
27
|
-
modelValue: Date | string | number;
|
|
27
|
+
modelValue: Date | string | number | null;
|
|
28
28
|
closeOnPressEscape: boolean;
|
|
29
29
|
presets: DateTimePreset[];
|
|
30
30
|
prefixIcon: boolean;
|
|
@@ -22,7 +22,7 @@ const props = defineProps({
|
|
|
22
22
|
presets: { type: Array, required: false, default: () => [] },
|
|
23
23
|
disabled: { type: Boolean, required: false },
|
|
24
24
|
clearable: { type: Boolean, required: false },
|
|
25
|
-
modelValue: { type: [Date, String, Number], required: false, default: "" },
|
|
25
|
+
modelValue: { type: [Date, String, Number, null], required: false, default: "" },
|
|
26
26
|
prefixIcon: { type: Boolean, required: false, default: true },
|
|
27
27
|
placeholder: { type: String, required: false },
|
|
28
28
|
showSeconds: { type: Boolean, required: false, default: true },
|
|
@@ -38,7 +38,7 @@ const VALUE_POSITION_MAP = {
|
|
|
38
38
|
second: 2
|
|
39
39
|
};
|
|
40
40
|
const popoverTrigger = ["click"];
|
|
41
|
-
const
|
|
41
|
+
const configProvider = useConfigProvider();
|
|
42
42
|
const { isXs, attrs } = usePopoverResponsive();
|
|
43
43
|
const timeHoursRef = shallowRef();
|
|
44
44
|
const timeMinutesRef = shallowRef();
|
|
@@ -106,7 +106,11 @@ async function setTimesScrollTop() {
|
|
|
106
106
|
dayjsDateTime.value = dayjs();
|
|
107
107
|
}
|
|
108
108
|
const elList = [timeHoursRef.value, timeMinutesRef.value, timeSecondsRef.value];
|
|
109
|
-
const modelValueList = [
|
|
109
|
+
const modelValueList = [
|
|
110
|
+
dayjsDateTime.value.hour(),
|
|
111
|
+
dayjsDateTime.value.minute(),
|
|
112
|
+
dayjsDateTime.value.second()
|
|
113
|
+
];
|
|
110
114
|
elList.forEach((el, i) => {
|
|
111
115
|
const scrollTop = modelValueList[i] * HEIGHT;
|
|
112
116
|
el?.scrollTo({ top: scrollTop });
|
|
@@ -138,9 +142,6 @@ function updateModelValue() {
|
|
|
138
142
|
function onInputValueChange(value) {
|
|
139
143
|
updateDayjsDateTime(value);
|
|
140
144
|
updateModelValue();
|
|
141
|
-
}
|
|
142
|
-
function onInputBlurChange() {
|
|
143
|
-
updateModelValue();
|
|
144
145
|
hidePopover();
|
|
145
146
|
}
|
|
146
147
|
function onPresetClick(ev) {
|
|
@@ -156,7 +157,8 @@ function onPresetClick(ev) {
|
|
|
156
157
|
if (!presetValue) {
|
|
157
158
|
return;
|
|
158
159
|
}
|
|
159
|
-
|
|
160
|
+
updateDayjsDateTime(presetValue);
|
|
161
|
+
updateModelValue();
|
|
160
162
|
hidePopover();
|
|
161
163
|
}
|
|
162
164
|
function onConfirmClick() {
|
|
@@ -173,14 +175,11 @@ watch(() => props.modelValue, updateDayjsDateTime, { immediate: true });
|
|
|
173
175
|
|
|
174
176
|
<template>
|
|
175
177
|
<PPopover
|
|
176
|
-
enterable
|
|
177
178
|
:trigger="popoverTrigger"
|
|
178
|
-
:show-delay="0"
|
|
179
|
-
:hide-delay="0"
|
|
180
179
|
:disabled="disabled"
|
|
181
180
|
:class="$attrs.class"
|
|
182
181
|
:style="$attrs.style"
|
|
183
|
-
:toggle-
|
|
182
|
+
:toggle-on-trigger="false"
|
|
184
183
|
:visible="popoverVisible"
|
|
185
184
|
:unset-position="isXs"
|
|
186
185
|
:wrapper-class="attrs.wrapperClass"
|
|
@@ -208,55 +207,76 @@ watch(() => props.modelValue, updateDayjsDateTime, { immediate: true });
|
|
|
208
207
|
v-bind="$attrs"
|
|
209
208
|
@clear="onInputValueChange"
|
|
210
209
|
@change="onInputValueChange"
|
|
211
|
-
@keydown.enter="onInputBlurChange"
|
|
212
210
|
>
|
|
213
211
|
<template v-if="prefixIcon" #prefix>
|
|
214
|
-
<CalendarIcon />
|
|
212
|
+
<CalendarIcon class="ml-3" />
|
|
215
213
|
</template>
|
|
216
214
|
</PInput>
|
|
217
215
|
|
|
218
216
|
<template #content>
|
|
219
217
|
<div class="max-sm:p-2 p-1 gap-1 flex items-center justify-between border-b" @click.stop>
|
|
220
218
|
<PButton size="xs" variant="ghost" class="sm:px-0! text-13px" @click="onCancelClick">
|
|
221
|
-
{{
|
|
219
|
+
{{ configProvider.locale.confirm.cancel }}
|
|
222
220
|
</PButton>
|
|
223
221
|
|
|
224
222
|
<PButton size="xs" variant="ghost" class="sm:px-0! text-13px" @click="onConfirmClick">
|
|
225
|
-
{{
|
|
223
|
+
{{ configProvider.locale.date.now }}
|
|
226
224
|
</PButton>
|
|
227
225
|
</div>
|
|
228
226
|
|
|
229
|
-
<div
|
|
227
|
+
<div
|
|
228
|
+
class="sm:text-sm max-sm:text-15px flex max-w-full transform-gpu items-stretch tabular-nums outline-none select-none"
|
|
229
|
+
@click.stop="onTimeListClick"
|
|
230
|
+
>
|
|
230
231
|
<div class="p-2 gap-1 relative mx-auto flex items-center">
|
|
231
232
|
<div class="pxd-time-picker--list relative">
|
|
232
|
-
<ul
|
|
233
|
-
|
|
233
|
+
<ul
|
|
234
|
+
ref="timeHoursRef"
|
|
235
|
+
data-type="hour"
|
|
236
|
+
class="w-8 h-40 px-0 m-0 py-16 scrollbar-hidden list-none overflow-x-hidden overflow-y-scroll overscroll-contain text-center outline-none [-webkit-overflow-scrolling:auto]"
|
|
237
|
+
@scroll.stop="onTimeListScroll"
|
|
238
|
+
>
|
|
239
|
+
<li v-for="(_, i) of 24" :key="i" class="h-8 leading-8 cursor-pointer">
|
|
234
240
|
{{ padStringZero(i) }}
|
|
235
241
|
</li>
|
|
236
242
|
</ul>
|
|
237
243
|
</div>
|
|
238
244
|
<div class="pxd-time-picker--list relative">
|
|
239
|
-
<ul
|
|
240
|
-
|
|
245
|
+
<ul
|
|
246
|
+
ref="timeMinutesRef"
|
|
247
|
+
data-type="minute"
|
|
248
|
+
class="w-8 h-40 px-0 m-0 py-16 scrollbar-hidden list-none overflow-x-hidden overflow-y-scroll overscroll-contain text-center outline-none [-webkit-overflow-scrolling:auto]"
|
|
249
|
+
@scroll.stop="onTimeListScroll"
|
|
250
|
+
>
|
|
251
|
+
<li v-for="(_, i) of 60" :key="i" class="h-8 leading-8 cursor-pointer">
|
|
241
252
|
{{ padStringZero(i) }}
|
|
242
253
|
</li>
|
|
243
254
|
</ul>
|
|
244
255
|
</div>
|
|
245
256
|
<div v-if="showSeconds" class="pxd-time-picker--list relative">
|
|
246
|
-
<ul
|
|
247
|
-
|
|
257
|
+
<ul
|
|
258
|
+
ref="timeSecondsRef"
|
|
259
|
+
data-type="second"
|
|
260
|
+
class="w-8 h-40 px-0 m-0 py-16 scrollbar-hidden list-none overflow-x-hidden overflow-y-scroll overscroll-contain text-center outline-none [-webkit-overflow-scrolling:auto]"
|
|
261
|
+
@scroll.stop="onTimeListScroll"
|
|
262
|
+
>
|
|
263
|
+
<li v-for="(_, i) of 60" :key="i" class="h-8 leading-8 cursor-pointer">
|
|
248
264
|
{{ padStringZero(i) }}
|
|
249
265
|
</li>
|
|
250
266
|
</ul>
|
|
251
267
|
</div>
|
|
252
268
|
</div>
|
|
253
269
|
|
|
254
|
-
<div
|
|
270
|
+
<div
|
|
271
|
+
v-if="presets?.length"
|
|
272
|
+
class="max-sm:w-36 sm:w-25 p-2 gap-1 scrollbar-hidden flex flex-wrap content-start self-stretch overflow-auto border-l outline-none"
|
|
273
|
+
@click="onPresetClick"
|
|
274
|
+
>
|
|
255
275
|
<button
|
|
256
|
-
v-for="preset, i in presets"
|
|
276
|
+
v-for="(preset, i) in presets"
|
|
257
277
|
:key="preset.label"
|
|
258
278
|
:data-index="i"
|
|
259
|
-
class="px-1.5 py-0.5 sm:text-13px sm:leading-4 cursor-pointer appearance-none rounded-sm border-none bg-gray-300 font-inherit whitespace-nowrap text-foreground self-focus-ring outline-none
|
|
279
|
+
class="px-1.5 py-0.5 sm:text-13px sm:leading-4 max-sm:leading-5 max-sm:text-sm cursor-pointer appearance-none rounded-sm border-none bg-gray-300 font-inherit whitespace-nowrap text-foreground self-focus-ring outline-none hover:bg-gray-400 active:bg-gray-500 motion-safe:transition-all"
|
|
260
280
|
>
|
|
261
281
|
{{ preset.label }}
|
|
262
282
|
</button>
|