pxd 0.0.60 → 0.0.62
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/dist/components/_internal/dismiss-container.d.vue.ts +28 -0
- package/dist/components/_internal/dismiss-container.vue +162 -0
- package/dist/components/_internal/popover-arrow.d.vue.ts +9 -0
- package/dist/components/_internal/popover-arrow.vue +38 -0
- package/dist/components/active-graph/index.vue +5 -5
- package/dist/components/avatar/index.vue +5 -7
- package/dist/components/avatar-group/index.d.vue.ts +0 -1
- package/dist/components/avatar-group/index.vue +1 -1
- package/dist/components/backtop/index.vue +1 -1
- package/dist/components/badge/index.d.vue.ts +6 -2
- package/dist/components/badge/index.vue +19 -5
- package/dist/components/badge/types.d.ts +5 -0
- package/dist/components/book/index.vue +1 -1
- package/dist/components/browser/index.vue +1 -1
- package/dist/components/bubble/index.d.vue.ts +22 -0
- package/dist/components/bubble/index.vue +59 -0
- package/dist/components/bubble/types.d.ts +6 -0
- package/dist/components/button/index.d.vue.ts +0 -2
- package/dist/components/button/index.vue +31 -22
- package/dist/components/button/types.d.ts +3 -2
- package/dist/components/button-group/index.d.vue.ts +14 -0
- package/dist/components/button-group/index.vue +26 -0
- package/dist/components/button-group/types.d.ts +9 -0
- package/dist/components/carousel/index.d.vue.ts +3 -3
- package/dist/components/carousel/index.vue +146 -113
- package/dist/components/carousel/types.d.ts +1 -1
- package/dist/components/carousel-item/index.vue +22 -17
- package/dist/components/checkbox/index.vue +7 -7
- package/dist/components/checkbox-group/index.d.vue.ts +1 -1
- package/dist/components/chip/index.d.vue.ts +1 -5
- package/dist/components/chip/index.vue +5 -5
- package/dist/components/choicebox/index.vue +1 -1
- package/dist/components/collapse-group/index.vue +1 -1
- package/dist/components/color-selector/index.d.vue.ts +12 -0
- package/dist/components/color-selector/index.vue +64 -0
- package/dist/components/color-selector/types.d.ts +12 -0
- package/dist/components/command-menu/index.d.vue.ts +6 -6
- package/dist/components/command-menu/index.vue +24 -33
- package/dist/components/command-menu/types.d.ts +1 -1
- package/dist/components/command-menu-group/index.vue +15 -6
- package/dist/components/command-menu-group/types.d.ts +1 -1
- package/dist/components/config-provider/index.d.vue.ts +1 -1
- package/dist/components/countdown/index.d.vue.ts +11 -11
- package/dist/components/drawer/index.d.vue.ts +8 -8
- package/dist/components/drawer/index.vue +13 -10
- package/dist/components/drawer/types.d.ts +4 -3
- package/dist/components/ellipsis-text/index.d.vue.ts +4 -1
- package/dist/components/ellipsis-text/index.vue +86 -109
- package/dist/components/ellipsis-text/types.d.ts +2 -1
- package/dist/components/error/index.vue +2 -2
- package/dist/components/fader/index.vue +5 -9
- package/dist/components/gauge/index.vue +34 -29
- package/dist/components/grid/index.vue +1 -1
- package/dist/components/grid-item/index.vue +1 -1
- package/dist/components/hold-button/index.d.vue.ts +8 -10
- package/dist/components/hold-button/index.vue +15 -27
- package/dist/components/hold-button/types.d.ts +5 -6
- package/dist/components/index.d.ts +7 -0
- package/dist/components/index.js +7 -0
- package/dist/components/input/index.d.vue.ts +8 -8
- package/dist/components/input/index.vue +7 -6
- package/dist/components/intersection-observer/index.vue +4 -4
- package/dist/components/kbd/index.vue +2 -2
- package/dist/components/link-button/index.d.vue.ts +4 -4
- package/dist/components/link-button/index.vue +5 -7
- package/dist/components/link-button/types.d.ts +0 -3
- package/dist/components/list/index.d.vue.ts +10 -15
- package/dist/components/list/index.vue +58 -131
- package/dist/components/list/types.d.ts +4 -4
- package/dist/components/list-item/index.d.vue.ts +2 -2
- package/dist/components/list-item/index.vue +45 -40
- package/dist/components/loading-bar/index.vue +9 -8
- package/dist/components/material/index.vue +24 -46
- package/dist/components/menu/index.d.vue.ts +6 -8
- package/dist/components/menu/index.vue +18 -24
- package/dist/components/menu/types.d.ts +1 -2
- package/dist/components/message/composables/use-group-expand.d.ts +13 -0
- package/dist/components/message/composables/use-group-expand.js +50 -0
- package/dist/components/message/composables/use-message-timer.d.ts +9 -0
- package/dist/components/message/composables/use-message-timer.js +61 -0
- package/dist/components/message/composables/use-promise-message.d.ts +4 -0
- package/dist/components/message/composables/use-promise-message.js +49 -0
- package/dist/components/message/index.d.vue.ts +6 -33
- package/dist/components/message/index.vue +33 -185
- package/dist/components/message/types.d.ts +2 -2
- package/dist/components/message-item/index.vue +26 -2
- package/dist/components/modal/index.d.vue.ts +7 -7
- package/dist/components/modal/index.vue +7 -3
- package/dist/components/modal/types.d.ts +7 -3
- package/dist/components/note/index.vue +3 -3
- package/dist/components/number-input/index.d.vue.ts +5 -4
- package/dist/components/number-input/index.vue +3 -0
- package/dist/components/number-input/types.d.ts +1 -0
- package/dist/components/overlay/index.d.vue.ts +6 -3
- package/dist/components/overlay/index.vue +63 -68
- package/dist/components/overlay/types.d.ts +5 -4
- package/dist/components/pagination/index.vue +2 -2
- package/dist/components/pin-input/index.d.vue.ts +2 -2
- package/dist/components/pin-input/index.vue +9 -8
- package/dist/components/placeholder/index.vue +14 -12
- package/dist/components/popover/index.d.vue.ts +8 -9
- package/dist/components/popover/index.vue +150 -240
- package/dist/components/popover/types.d.ts +6 -7
- package/dist/components/progress/index.vue +3 -3
- package/dist/components/project-banner/index.vue +1 -1
- package/dist/components/radio/index.vue +3 -3
- package/dist/components/radio-group/index.vue +1 -1
- package/dist/components/resizable/index.vue +43 -51
- package/dist/components/resizable/types.d.ts +1 -1
- package/dist/components/resizable-handle/index.d.vue.ts +4 -1
- package/dist/components/resizable-handle/index.vue +29 -3
- package/dist/components/resizable-panel/index.vue +3 -7
- package/dist/components/scalable-text/index.d.vue.ts +9 -0
- package/dist/components/scalable-text/index.vue +147 -0
- package/dist/components/scalable-text/types.d.ts +12 -0
- package/dist/components/scrollable/index.d.vue.ts +2 -2
- package/dist/components/scrollable/index.vue +4 -3
- package/dist/components/scrollable/types.d.ts +1 -2
- package/dist/components/separator/index.d.vue.ts +6 -0
- package/dist/components/separator/index.vue +18 -0
- package/dist/components/separator/types.d.ts +5 -0
- package/dist/components/skeleton/index.d.vue.ts +1 -1
- package/dist/components/skeleton/index.vue +1 -1
- package/dist/components/slider/index.d.vue.ts +1 -1
- package/dist/components/slider/index.vue +41 -9
- package/dist/components/snippet/index.vue +18 -15
- package/dist/components/spinner/index.vue +3 -1
- package/dist/components/stack/index.d.vue.ts +1 -1
- package/dist/components/stack/index.vue +2 -2
- package/dist/components/switch/index.d.vue.ts +1 -1
- package/dist/components/switch/index.vue +5 -4
- package/dist/components/switch-item/index.vue +3 -3
- package/dist/components/tabs/index.d.vue.ts +12 -0
- package/dist/components/tabs/index.vue +270 -0
- package/dist/components/tabs/types.d.ts +12 -0
- package/dist/components/tabs-item/index.d.vue.ts +4 -0
- package/dist/components/tabs-item/index.vue +16 -0
- package/dist/components/tabs-item/types.d.ts +10 -0
- package/dist/components/text/index.vue +2 -2
- package/dist/components/textarea/index.d.vue.ts +2 -2
- package/dist/components/textarea/index.vue +3 -3
- package/dist/components/time-picker/index.d.vue.ts +3 -5
- package/dist/components/time-picker/index.vue +54 -46
- package/dist/components/time-picker/types.d.ts +1 -2
- package/dist/components/toggle/index.d.vue.ts +0 -2
- package/dist/components/toggle/index.vue +7 -7
- package/dist/components/toggle-button/index.vue +11 -9
- package/dist/components/toggle-button-group/index.vue +3 -3
- package/dist/components/tooltip/index.d.vue.ts +1 -1
- package/dist/components/tooltip/index.vue +19 -11
- package/dist/components/tooltip/types.d.ts +2 -3
- package/dist/components/virtual-list/index.d.vue.ts +8 -8
- package/dist/components/virtual-list/index.vue +29 -7
- package/dist/components/virtual-list/types.d.ts +3 -0
- package/dist/composables/index.d.ts +4 -1
- package/dist/composables/index.js +4 -1
- package/dist/composables/use-browser-observer.d.ts +1 -1
- package/dist/composables/use-browser-observer.js +2 -2
- package/dist/composables/use-client-online.js +2 -2
- package/dist/composables/use-color-scheme.js +2 -2
- package/dist/composables/use-countdown.js +3 -2
- package/dist/composables/use-deferred-value.js +2 -2
- package/dist/composables/use-delay-destroy.d.ts +1 -1
- package/dist/composables/use-delay-destroy.js +11 -6
- package/dist/composables/use-document-hidden.js +2 -2
- package/dist/composables/use-focus-trap.d.ts +1 -1
- package/dist/composables/use-focus-trap.js +2 -2
- package/dist/composables/use-list-filter.d.ts +11 -0
- package/dist/composables/use-list-filter.js +56 -0
- package/dist/composables/use-list-navigation.d.ts +27 -0
- package/dist/composables/use-list-navigation.js +159 -0
- package/dist/composables/use-lock-scroll.js +12 -12
- package/dist/composables/use-media-query.js +2 -2
- package/dist/composables/use-message.d.ts +1 -1
- package/dist/composables/use-outside-click.d.ts +1 -1
- package/dist/composables/use-outside-click.js +8 -11
- package/dist/composables/use-overlay-manager.d.ts +18 -0
- package/dist/composables/use-overlay-manager.js +80 -0
- package/dist/composables/use-popover-responsive.d.ts +6 -8
- package/dist/composables/use-popover-responsive.js +9 -12
- package/dist/composables/use-repeat-action.d.ts +1 -1
- package/dist/composables/use-repeat-action.js +2 -2
- package/dist/composables/use-swipe-gesture.d.ts +65 -0
- package/dist/composables/use-swipe-gesture.js +99 -0
- package/dist/composables/use-virtual-list.d.ts +6 -4
- package/dist/composables/use-virtual-list.js +25 -14
- package/dist/composables/use-window-size.js +2 -2
- package/dist/constants/size.d.ts +12 -0
- package/dist/constants/size.js +12 -0
- package/dist/contexts/button.d.ts +5 -0
- package/dist/contexts/button.js +5 -0
- package/dist/contexts/carousel.d.ts +3 -2
- package/dist/contexts/checkbox.d.ts +1 -1
- package/dist/contexts/choicebox.d.ts +1 -1
- package/dist/contexts/collapse.d.ts +1 -1
- package/dist/contexts/list.d.ts +23 -3
- package/dist/contexts/list.js +6 -2
- package/dist/contexts/radio.d.ts +1 -1
- package/dist/contexts/resizable.d.ts +3 -11
- package/dist/contexts/switch.d.ts +1 -1
- package/dist/contexts/tabs.d.ts +15 -0
- package/dist/contexts/tabs.js +2 -0
- package/dist/contexts/toggle-button.d.ts +1 -1
- package/dist/locales/en-us.d.ts +4 -4
- package/dist/locales/en-us.js +4 -4
- package/dist/locales/zh-cn.d.ts +4 -4
- package/dist/locales/zh-cn.js +4 -4
- package/dist/plugins/dayjs-millisecond-token.js +1 -1
- package/dist/styles/source.css +133 -128
- package/dist/styles/styles.css +2 -2
- package/dist/styles/tw.css +133 -128
- package/dist/types/shared/props.d.ts +1 -0
- package/dist/types/shared/utils.d.ts +1 -4
- package/dist/utils/date.d.ts +3 -3
- package/dist/utils/dom.d.ts +1 -0
- package/dist/utils/dom.js +4 -0
- package/dist/utils/event.d.ts +2 -1
- package/dist/utils/event.js +7 -1
- package/dist/utils/format.d.ts +3 -3
- package/dist/utils/format.js +5 -4
- package/dist/utils/fuzzy-search.d.ts +7 -0
- package/dist/utils/fuzzy-search.js +61 -0
- package/dist/utils/get.d.ts +2 -0
- package/dist/utils/get.js +15 -1
- package/dist/utils/index.d.ts +10 -11
- package/dist/utils/index.js +2 -3
- package/dist/utils/ref.d.ts +2 -2
- package/dist/utils/{throttle.d.ts → timing.d.ts} +1 -0
- package/dist/utils/{throttle.js → timing.js} +4 -2
- package/package.json +67 -63
- package/volar.d.ts +7 -0
- package/dist/components/overlay/overlay-stack.d.ts +0 -3
- package/dist/components/overlay/overlay-stack.js +0 -17
- package/dist/composables/use-pointer-gesture.d.ts +0 -180
- package/dist/composables/use-pointer-gesture.js +0 -406
- package/dist/utils/debounce.d.ts +0 -1
- package/dist/utils/debounce.js +0 -1
- package/dist/utils/regexp.d.ts +0 -8
- package/dist/utils/regexp.js +0 -8
- package/dist/utils/responsive.d.ts +0 -3
- package/dist/utils/responsive.js +0 -14
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
<script setup>
|
|
2
2
|
import { computed, onBeforeUnmount, shallowRef } from "vue";
|
|
3
|
-
import { useConfigProvider } from "../../contexts/config-provider";
|
|
4
3
|
import { useModelValue } from "../../composables/use-model-value";
|
|
4
|
+
import { useConfigProvider } from "../../contexts/config-provider";
|
|
5
5
|
import { cachedOff, cachedOn, once } from "../../utils/event";
|
|
6
|
-
import { getFallbackValue } from "../../utils/get";
|
|
7
6
|
import { NOOP } from "../../utils/event";
|
|
8
|
-
import {
|
|
7
|
+
import { getFallbackValue } from "../../utils/get";
|
|
8
|
+
import { throttleByRaf } from "../../utils/timing";
|
|
9
9
|
defineOptions({
|
|
10
10
|
name: "PSlider",
|
|
11
11
|
inheritAttrs: false,
|
|
@@ -239,7 +239,7 @@ onBeforeUnmount(() => {
|
|
|
239
239
|
tabindex="0"
|
|
240
240
|
:data-dragging="isDragging && activeThumb === 'start'"
|
|
241
241
|
:data-range-start="true"
|
|
242
|
-
class="pxd-slider--thumb group rounded-xs absolute -translate-x-1/2 touch-none appearance-none bg-none self-focus-ring outline-none hover:z-1 active:[--slider-thumb-scale:1.3] motion-safe:before:transition-
|
|
242
|
+
class="pxd-slider--thumb group rounded-xs absolute -translate-x-1/2 transform-gpu touch-none appearance-none bg-none self-focus-ring outline-none hover:z-1 active:[--slider-thumb-scale:1.3] motion-safe:before:transition-appearance pointer-fine:hover:[--slider-thumb-scale:1.3]"
|
|
243
243
|
:class="[{ 'pointer-events-none': disabled }, computedSize.thumb]"
|
|
244
244
|
:style="{ left: `${startPercentage}%` }"
|
|
245
245
|
@keydown="onThumbKeydown"
|
|
@@ -247,7 +247,7 @@ onBeforeUnmount(() => {
|
|
|
247
247
|
@pointerdown.prevent.stop="startDragging($event, 'start')"
|
|
248
248
|
>
|
|
249
249
|
<span
|
|
250
|
-
class="py-1 px-1.5 text-xs -top-8
|
|
250
|
+
class="py-1 px-1.5 text-xs -top-8 pointer-events-none absolute left-1/2 -translate-x-1/2 rounded-md bg-gray-1000 whitespace-nowrap text-gray-100 opacity-0 shadow-border-base shadow-border-tooltip select-none group-hover:opacity-100 group-data-[dragging=true]:opacity-100 motion-safe:transition-opacity"
|
|
251
251
|
>
|
|
252
252
|
{{ valueRange[0] }}
|
|
253
253
|
</span>
|
|
@@ -257,7 +257,7 @@ onBeforeUnmount(() => {
|
|
|
257
257
|
tabindex="0"
|
|
258
258
|
:data-range-start="range ? false : true"
|
|
259
259
|
:data-dragging="isDragging && activeThumb === 'end'"
|
|
260
|
-
class="pxd-slider--thumb group rounded-xs absolute -translate-x-1/2 touch-none appearance-auto bg-none self-focus-ring outline-none hover:z-1 active:[--slider-thumb-scale:1.3] motion-safe:before:transition-
|
|
260
|
+
class="pxd-slider--thumb group rounded-xs absolute -translate-x-1/2 transform-gpu touch-none appearance-auto bg-none self-focus-ring outline-none hover:z-1 active:[--slider-thumb-scale:1.3] motion-safe:before:transition-appearance pointer-fine:hover:[--slider-thumb-scale:1.3]"
|
|
261
261
|
:class="[{ 'pointer-events-none': disabled }, computedSize.thumb]"
|
|
262
262
|
:style="{ left: `${endPercentage}%` }"
|
|
263
263
|
@keydown="onThumbKeydown"
|
|
@@ -265,7 +265,7 @@ onBeforeUnmount(() => {
|
|
|
265
265
|
@pointerdown.prevent.stop="startDragging($event, 'end')"
|
|
266
266
|
>
|
|
267
267
|
<span
|
|
268
|
-
class="py-1 px-1.5 text-xs -top-8
|
|
268
|
+
class="py-1 px-1.5 text-xs -top-8 pointer-events-none absolute left-1/2 -translate-x-1/2 rounded-md bg-gray-1000 whitespace-nowrap text-gray-100 opacity-0 shadow-border-base shadow-border-tooltip select-none group-hover:opacity-100 group-data-[dragging=true]:opacity-100 motion-safe:transition-opacity"
|
|
269
269
|
>
|
|
270
270
|
{{ valueRange[1] }}
|
|
271
271
|
</span>
|
|
@@ -273,6 +273,38 @@ onBeforeUnmount(() => {
|
|
|
273
273
|
</div>
|
|
274
274
|
</template>
|
|
275
275
|
|
|
276
|
-
<style>
|
|
277
|
-
.pxd-slider--thumb
|
|
276
|
+
<style lang="postcss">
|
|
277
|
+
.pxd-slider--thumb {
|
|
278
|
+
&[data-dragging='true'] {
|
|
279
|
+
--slider-thumb-scale: 1.3;
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
&::before,
|
|
283
|
+
&::after {
|
|
284
|
+
content: '';
|
|
285
|
+
position: absolute;
|
|
286
|
+
top: 50%;
|
|
287
|
+
left: 50%;
|
|
288
|
+
border-radius: inherit;
|
|
289
|
+
transform: translate3d(-50%, -50%, 0) scale(var(--slider-thumb-scale, 1));
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
&::before {
|
|
293
|
+
width: 100%;
|
|
294
|
+
height: 100%;
|
|
295
|
+
background-color: #fff;
|
|
296
|
+
box-shadow:
|
|
297
|
+
0 0 0 1px var(--color-gray-alpha-500),
|
|
298
|
+
0 1px 2px var(--color-gray-alpha-100);
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
&::after {
|
|
302
|
+
width: 200%;
|
|
303
|
+
height: 200%;
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
.dark .pxd-slider--thumb::before {
|
|
308
|
+
box-shadow: 0 0 0 1px var(--color-background-200);
|
|
309
|
+
}
|
|
278
310
|
</style>
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
<script setup>
|
|
2
2
|
import CheckIcon from "@gdsicon/vue/check";
|
|
3
3
|
import CopyIcon from "@gdsicon/vue/copy";
|
|
4
|
+
import { tv } from "tailwind-variants";
|
|
4
5
|
import { computed } from "vue";
|
|
5
|
-
import { useConfigProvider } from "../../contexts/config-provider";
|
|
6
6
|
import { useCopyClick } from "../../composables/use-copy-click";
|
|
7
|
+
import { BASIC_MIN_HEIGHTS } from "../../constants/size";
|
|
8
|
+
import { useConfigProvider } from "../../contexts/config-provider";
|
|
7
9
|
import { getCssUnitValue, isTruthyProp, toArray } from "../../utils/format";
|
|
8
|
-
import { tv } from "tailwind-variants";
|
|
9
10
|
defineOptions({
|
|
10
11
|
name: "PSnippet",
|
|
11
12
|
inheritAttrs: false
|
|
@@ -19,12 +20,12 @@ const props = defineProps({
|
|
|
19
20
|
});
|
|
20
21
|
const emits = defineEmits(["copy"]);
|
|
21
22
|
const snippetVariant = tv({
|
|
22
|
-
base: "pxd-snippet pr-
|
|
23
|
+
base: "pxd-snippet pl-3 pr-1.5 gap-4 relative flex items-center rounded-lg border tabular-nums motion-safe:transition-appearance",
|
|
23
24
|
variants: {
|
|
24
25
|
size: {
|
|
25
|
-
sm:
|
|
26
|
-
md:
|
|
27
|
-
lg:
|
|
26
|
+
sm: `${BASIC_MIN_HEIGHTS.sm} py-2 text-sm`,
|
|
27
|
+
md: `${BASIC_MIN_HEIGHTS.md} py-2.5 text-sm`,
|
|
28
|
+
lg: `${BASIC_MIN_HEIGHTS.lg} py-3 text-base`
|
|
28
29
|
},
|
|
29
30
|
variant: {
|
|
30
31
|
default: "border-gray-alpha-300 bg-background-100",
|
|
@@ -64,7 +65,7 @@ async function onCopyButtonClick() {
|
|
|
64
65
|
|
|
65
66
|
<template>
|
|
66
67
|
<div :class="computedClasses" :style="{ width: getCssUnitValue(props.width) }" v-bind="$attrs">
|
|
67
|
-
<div class="pxd-snippet--container">
|
|
68
|
+
<div class="pxd-snippet--container flex-1">
|
|
68
69
|
<pre
|
|
69
70
|
v-for="(t, i) of computedTextArray"
|
|
70
71
|
:key="i"
|
|
@@ -75,14 +76,16 @@ async function onCopyButtonClick() {
|
|
|
75
76
|
>
|
|
76
77
|
</div>
|
|
77
78
|
|
|
78
|
-
<div
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
<
|
|
85
|
-
|
|
79
|
+
<div class="min-w-5 relative shrink-0">
|
|
80
|
+
<button
|
|
81
|
+
class="right-0 p-1.5 absolute top-1/2 -translate-y-1/2 cursor-pointer appearance-none rounded-sm self-focus-ring outline-none select-none hover:bg-background-hover hover:shadow-border-base active:bg-background-active motion-safe:transition-appearance"
|
|
82
|
+
:class="{ copied: isCopied }"
|
|
83
|
+
@click="onCopyButtonClick"
|
|
84
|
+
>
|
|
85
|
+
<Transition name="pxd-transition--fade-scale" mode="out-in">
|
|
86
|
+
<Component :is="renderIcon" class="text-sm pointer-events-none" />
|
|
87
|
+
</Transition>
|
|
88
|
+
</button>
|
|
86
89
|
</div>
|
|
87
90
|
</div>
|
|
88
91
|
</template>
|
|
@@ -10,7 +10,9 @@ const OPACITY_STEP = 1 / ITEMS_COUNT;
|
|
|
10
10
|
|
|
11
11
|
<template>
|
|
12
12
|
<div
|
|
13
|
-
|
|
13
|
+
aria-hidden="true"
|
|
14
|
+
aria-label="Loading"
|
|
15
|
+
class="pxd-spinner leading-0 transform-origin-center motion-safe:animate-spin pointer-events-none relative inline-block size-em overflow-hidden text-gray-700 content-visibility-auto intrinsic-size-auto"
|
|
14
16
|
v-bind="$attrs"
|
|
15
17
|
>
|
|
16
18
|
<div class="pxd-spinner-container top-0 left-0 absolute size-full">
|
|
@@ -4,10 +4,10 @@ type __VLS_Slots = {} & {
|
|
|
4
4
|
default?: (props: typeof __VLS_8) => any;
|
|
5
5
|
};
|
|
6
6
|
declare const __VLS_base: import("vue").DefineComponent<StackProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<StackProps> & Readonly<{}>, {
|
|
7
|
+
scale: number;
|
|
7
8
|
as: import("../../types/shared").ComponentAs;
|
|
8
9
|
align: import("./types").Align;
|
|
9
10
|
wrap: boolean;
|
|
10
|
-
scale: number;
|
|
11
11
|
justify: import("./types").Align;
|
|
12
12
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
13
13
|
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<script setup>
|
|
2
|
-
import { computed } from "vue";
|
|
3
|
-
import { getResponsiveValue } from "../../utils/responsive";
|
|
4
2
|
import { tv } from "tailwind-variants";
|
|
3
|
+
import { computed } from "vue";
|
|
4
|
+
import { getResponsiveValue } from "../../utils/get";
|
|
5
5
|
defineOptions({
|
|
6
6
|
name: "PStack",
|
|
7
7
|
inheritAttrs: false
|
|
@@ -10,8 +10,8 @@ declare const __VLS_base: import("vue").DefineComponent<SwitchProps, {}, {}, {},
|
|
|
10
10
|
onChange?: ((args_0: NonNullable<string | number | undefined>) => any) | undefined;
|
|
11
11
|
"onUpdate:modelValue"?: ((args_0: NonNullable<string | number | undefined>) => any) | undefined;
|
|
12
12
|
}>, {
|
|
13
|
-
options: import("../../types/shared").ComponentOption[];
|
|
14
13
|
modelValue: string | number;
|
|
14
|
+
options: import("../../types/shared").ComponentOption[];
|
|
15
15
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
16
16
|
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
17
17
|
declare const _default: typeof __VLS_export;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
<script setup>
|
|
2
2
|
import { computed } from "vue";
|
|
3
|
-
import { useConfigProvider } from "../../contexts/config-provider";
|
|
4
3
|
import { useModelValue } from "../../composables/use-model-value";
|
|
4
|
+
import { BASIC_HEIGHTS } from "../../constants/size";
|
|
5
|
+
import { useConfigProvider } from "../../contexts/config-provider";
|
|
5
6
|
import { provideSwitchContext } from "../../contexts/switch";
|
|
6
7
|
import { getFallbackValue } from "../../utils/get";
|
|
7
8
|
import { getUniqueId } from "../../utils/uid";
|
|
@@ -23,9 +24,9 @@ const props = defineProps({
|
|
|
23
24
|
});
|
|
24
25
|
const emits = defineEmits(["change", "update:modelValue"]);
|
|
25
26
|
const SIZES = {
|
|
26
|
-
sm:
|
|
27
|
-
md:
|
|
28
|
-
lg:
|
|
27
|
+
sm: `${BASIC_HEIGHTS.sm} text-13`,
|
|
28
|
+
md: `${BASIC_HEIGHTS.md} text-sm`,
|
|
29
|
+
lg: `${BASIC_HEIGHTS.lg} text-base`
|
|
29
30
|
};
|
|
30
31
|
const configProvider = useConfigProvider();
|
|
31
32
|
const modelValue = useModelValue(props, emits);
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
<script setup>
|
|
2
|
+
import { tv } from "tailwind-variants";
|
|
2
3
|
import { computed } from "vue";
|
|
3
|
-
import { useSwitchContext } from "../../contexts/switch";
|
|
4
4
|
import { useModelValue } from "../../composables/use-model-value";
|
|
5
|
+
import { useSwitchContext } from "../../contexts/switch";
|
|
5
6
|
import { getUniqueId } from "../../utils/uid";
|
|
6
|
-
import { tv } from "tailwind-variants";
|
|
7
7
|
defineOptions({
|
|
8
8
|
name: "PSwitchItem",
|
|
9
9
|
inheritAttrs: false,
|
|
@@ -19,7 +19,7 @@ const props = defineProps({
|
|
|
19
19
|
});
|
|
20
20
|
const emits = defineEmits([]);
|
|
21
21
|
const switchVariant = tv({
|
|
22
|
-
base: "pxd-switch-item--label px-2.5
|
|
22
|
+
base: "pxd-switch-item--label px-2.5 font-medium flex size-full items-center justify-center truncate rounded-sm text-foreground-secondary peer-focus-ring outline-none select-none peer-checked:bg-gray-100 peer-disabled:cursor-not-allowed peer-disabled:text-gray-800 empty:hidden hover:text-foreground motion-safe:transition-appearance",
|
|
23
23
|
variants: {
|
|
24
24
|
disabled: {
|
|
25
25
|
true: "",
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { TabsProps } from './types';
|
|
2
|
+
declare const __VLS_export: import("vue").DefineComponent<TabsProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
3
|
+
change: (args_0: import("./types").TabsValue) => any;
|
|
4
|
+
"update:modelValue": (args_0: import("./types").TabsValue) => any;
|
|
5
|
+
}, string, import("vue").PublicProps, Readonly<TabsProps> & Readonly<{
|
|
6
|
+
onChange?: ((args_0: import("./types").TabsValue) => any) | undefined;
|
|
7
|
+
"onUpdate:modelValue"?: ((args_0: import("./types").TabsValue) => any) | undefined;
|
|
8
|
+
}>, {
|
|
9
|
+
variant: "default" | "secondary";
|
|
10
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
11
|
+
declare const _default: typeof __VLS_export;
|
|
12
|
+
export default _default;
|
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
<script setup>
|
|
2
|
+
import ChevronRightIcon from "@gdsicon/vue/chevron-right";
|
|
3
|
+
import { computed, nextTick, onBeforeUnmount, onMounted, shallowRef, useSlots, watch } from "vue";
|
|
4
|
+
import { useModelValue } from "../../composables/use-model-value";
|
|
5
|
+
import { toArray } from "../../utils/format";
|
|
6
|
+
defineOptions({
|
|
7
|
+
name: "PTabs",
|
|
8
|
+
inheritAttrs: false,
|
|
9
|
+
model: {
|
|
10
|
+
prop: "modelValue",
|
|
11
|
+
event: "update:modelValue"
|
|
12
|
+
}
|
|
13
|
+
});
|
|
14
|
+
const props = defineProps({
|
|
15
|
+
variant: { type: String, required: false, default: "default" },
|
|
16
|
+
keepAlive: { type: Boolean, required: false },
|
|
17
|
+
modelValue: { type: [String, Number], required: false }
|
|
18
|
+
});
|
|
19
|
+
const emits = defineEmits(["change", "update:modelValue"]);
|
|
20
|
+
const slots = useSlots();
|
|
21
|
+
const modelValue = useModelValue(props, emits);
|
|
22
|
+
const scrollRef = shallowRef();
|
|
23
|
+
const innerNavRef = shallowRef();
|
|
24
|
+
const overflowing = shallowRef(false);
|
|
25
|
+
const canScrollLeft = shallowRef(false);
|
|
26
|
+
const canScrollRight = shallowRef(false);
|
|
27
|
+
let resizeObserver = null;
|
|
28
|
+
const renderSlots = computed(() => {
|
|
29
|
+
const renders = slots.default?.();
|
|
30
|
+
return toArray(renders);
|
|
31
|
+
});
|
|
32
|
+
function isActiveTab(value) {
|
|
33
|
+
return modelValue.value === value;
|
|
34
|
+
}
|
|
35
|
+
function updateScrollState() {
|
|
36
|
+
const el = scrollRef.value;
|
|
37
|
+
if (!el) {
|
|
38
|
+
overflowing.value = false;
|
|
39
|
+
canScrollLeft.value = false;
|
|
40
|
+
canScrollRight.value = false;
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
const { scrollLeft, scrollWidth, clientWidth } = el;
|
|
44
|
+
const edge = 2;
|
|
45
|
+
overflowing.value = scrollWidth > clientWidth + edge;
|
|
46
|
+
canScrollLeft.value = scrollLeft > edge;
|
|
47
|
+
canScrollRight.value = scrollLeft + clientWidth < scrollWidth - edge;
|
|
48
|
+
}
|
|
49
|
+
function scrollTabs(direction) {
|
|
50
|
+
const el = scrollRef.value;
|
|
51
|
+
if (!el) {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
const delta = Math.max(Math.floor(el.clientWidth * 0.65), 96);
|
|
55
|
+
el.scrollBy({
|
|
56
|
+
left: direction === "next" ? delta : -delta,
|
|
57
|
+
behavior: "smooth"
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
function scrollActiveTabIntoView() {
|
|
61
|
+
const wrap = scrollRef.value;
|
|
62
|
+
const nav = innerNavRef.value;
|
|
63
|
+
if (!wrap || !nav || !overflowing.value) {
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
const active = nav.querySelector('[role="tab"][aria-selected="true"]');
|
|
67
|
+
if (!active) {
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
const tabLeft = active.offsetLeft;
|
|
71
|
+
const tabRight = tabLeft + active.offsetWidth;
|
|
72
|
+
const viewLeft = wrap.scrollLeft;
|
|
73
|
+
const viewRight = viewLeft + wrap.clientWidth;
|
|
74
|
+
if (tabLeft < viewLeft) {
|
|
75
|
+
wrap.scrollTo({ left: tabLeft, behavior: "smooth" });
|
|
76
|
+
} else if (tabRight > viewRight) {
|
|
77
|
+
wrap.scrollTo({ left: tabRight - wrap.clientWidth, behavior: "smooth" });
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
function teardownScrollObservers() {
|
|
81
|
+
resizeObserver?.disconnect();
|
|
82
|
+
resizeObserver = null;
|
|
83
|
+
}
|
|
84
|
+
function setupScrollObservers() {
|
|
85
|
+
teardownScrollObservers();
|
|
86
|
+
const scrollEl = scrollRef.value;
|
|
87
|
+
const navEl = innerNavRef.value;
|
|
88
|
+
if (typeof ResizeObserver === "undefined" || !scrollEl) {
|
|
89
|
+
updateScrollState();
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
resizeObserver = new ResizeObserver(() => {
|
|
93
|
+
updateScrollState();
|
|
94
|
+
});
|
|
95
|
+
resizeObserver.observe(scrollEl);
|
|
96
|
+
if (navEl) {
|
|
97
|
+
resizeObserver.observe(navEl);
|
|
98
|
+
}
|
|
99
|
+
updateScrollState();
|
|
100
|
+
}
|
|
101
|
+
function onTabClick(ev) {
|
|
102
|
+
const target = ev.currentTarget;
|
|
103
|
+
if (target.disabled) {
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
modelValue.value = target.value;
|
|
107
|
+
}
|
|
108
|
+
onMounted(() => {
|
|
109
|
+
nextTick(setupScrollObservers);
|
|
110
|
+
});
|
|
111
|
+
onBeforeUnmount(() => {
|
|
112
|
+
teardownScrollObservers();
|
|
113
|
+
});
|
|
114
|
+
watch(
|
|
115
|
+
renderSlots,
|
|
116
|
+
() => {
|
|
117
|
+
nextTick(() => {
|
|
118
|
+
setupScrollObservers();
|
|
119
|
+
});
|
|
120
|
+
},
|
|
121
|
+
{ flush: "post" }
|
|
122
|
+
);
|
|
123
|
+
watch(
|
|
124
|
+
modelValue,
|
|
125
|
+
() => {
|
|
126
|
+
nextTick(() => {
|
|
127
|
+
updateScrollState();
|
|
128
|
+
scrollActiveTabIntoView();
|
|
129
|
+
});
|
|
130
|
+
},
|
|
131
|
+
{ flush: "post" }
|
|
132
|
+
);
|
|
133
|
+
</script>
|
|
134
|
+
|
|
135
|
+
<template>
|
|
136
|
+
<div class="pxd-tabs" v-bind="$attrs">
|
|
137
|
+
<div
|
|
138
|
+
class="pxd-tabs--header min-w-0 text-sm relative flex items-stretch"
|
|
139
|
+
:data-variant="variant"
|
|
140
|
+
>
|
|
141
|
+
<button
|
|
142
|
+
v-if="overflowing"
|
|
143
|
+
type="button"
|
|
144
|
+
class="pxd-tabs--arrow px-1.5 inline-flex shrink-0 items-center justify-center self-stretch border-r border-border text-foreground-secondary self-focus-ring outline-none hover:text-foreground enabled:cursor-pointer disabled:pointer-events-none disabled:border-transparent disabled:opacity-35 motion-safe:transition-colors"
|
|
145
|
+
:disabled="!canScrollLeft"
|
|
146
|
+
aria-label="Scroll tabs left"
|
|
147
|
+
@click="scrollTabs('prev')"
|
|
148
|
+
>
|
|
149
|
+
<ChevronRightIcon class="size-4 rotate-180" aria-hidden="true" />
|
|
150
|
+
</button>
|
|
151
|
+
|
|
152
|
+
<div
|
|
153
|
+
ref="scrollRef"
|
|
154
|
+
class="pxd-tabs--scroll min-h-0 min-w-0 scrollbar-none flex-1 overflow-x-auto overscroll-x-contain has-focus-visible:overflow-x-visible"
|
|
155
|
+
@scroll.passive="updateScrollState"
|
|
156
|
+
>
|
|
157
|
+
<div ref="innerNavRef" role="tablist" class="pxd-tabs--nav inline-flex flex-nowrap">
|
|
158
|
+
<template v-for="(slot, index) in renderSlots" :key="slot.props.value ?? index">
|
|
159
|
+
<button
|
|
160
|
+
role="tab"
|
|
161
|
+
:id="`tab-${slot.props.value}`"
|
|
162
|
+
:value="slot.props.value"
|
|
163
|
+
:disabled="slot.props.disabled"
|
|
164
|
+
:tabindex="isActiveTab(slot.props.value) ? 0 : -1"
|
|
165
|
+
:aria-controls="`tab-panel-${slot.props.value}`"
|
|
166
|
+
:aria-selected="isActiveTab(slot.props.value)"
|
|
167
|
+
class="pxd-tabs--nav-item flex cursor-pointer items-center justify-center self-focus-ring outline-none enabled:hover:text-foreground disabled:cursor-not-allowed disabled:text-foreground-secondary motion-safe:transition-colors"
|
|
168
|
+
@click="onTabClick"
|
|
169
|
+
>
|
|
170
|
+
<template v-if="slot.children?.label">
|
|
171
|
+
<Component :is="slot.children.label" />
|
|
172
|
+
</template>
|
|
173
|
+
<template v-else>
|
|
174
|
+
{{ slot.props.label }}
|
|
175
|
+
</template>
|
|
176
|
+
</button>
|
|
177
|
+
</template>
|
|
178
|
+
</div>
|
|
179
|
+
</div>
|
|
180
|
+
|
|
181
|
+
<button
|
|
182
|
+
v-if="overflowing"
|
|
183
|
+
type="button"
|
|
184
|
+
class="pxd-tabs--arrow px-1.5 inline-flex shrink-0 items-center justify-center self-stretch border-l border-border text-foreground-secondary self-focus-ring outline-none hover:text-foreground enabled:cursor-pointer disabled:pointer-events-none disabled:border-transparent disabled:opacity-35 motion-safe:transition-colors"
|
|
185
|
+
:disabled="!canScrollRight"
|
|
186
|
+
aria-label="Scroll tabs right"
|
|
187
|
+
@click="scrollTabs('next')"
|
|
188
|
+
>
|
|
189
|
+
<ChevronRightIcon class="size-4" aria-hidden="true" />
|
|
190
|
+
</button>
|
|
191
|
+
</div>
|
|
192
|
+
|
|
193
|
+
<div role="tabpanel" class="pxd-tabs--content">
|
|
194
|
+
<template v-for="(slot, index) in renderSlots" :key="slot.props.value ?? index">
|
|
195
|
+
<div
|
|
196
|
+
class="pxd-tabs--panel"
|
|
197
|
+
:id="`tab-panel-${slot.props.value}`"
|
|
198
|
+
:aria-labelledby="`tab-${slot.props.value}`"
|
|
199
|
+
>
|
|
200
|
+
<KeepAlive v-if="keepAlive">
|
|
201
|
+
<Component v-if="isActiveTab(slot.props.value)" :is="slot.children?.default" />
|
|
202
|
+
</KeepAlive>
|
|
203
|
+
<Component :is="slot.children?.default" v-else-if="isActiveTab(slot.props.value)" />
|
|
204
|
+
</div>
|
|
205
|
+
</template>
|
|
206
|
+
</div>
|
|
207
|
+
</div>
|
|
208
|
+
</template>
|
|
209
|
+
|
|
210
|
+
<style lang="postcss">
|
|
211
|
+
.pxd-tabs--header {
|
|
212
|
+
&[data-variant='default'] {
|
|
213
|
+
padding-bottom: 1px;
|
|
214
|
+
box-shadow: 0 -1px 0 0 var(--color-border) inset;
|
|
215
|
+
|
|
216
|
+
& + .pxd-tabs--content {
|
|
217
|
+
padding-top: 0.75rem;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
.pxd-tabs--scroll {
|
|
221
|
+
margin-bottom: -1px;
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
.pxd-tabs--nav {
|
|
225
|
+
gap: 1.5rem;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
.pxd-tabs--nav-item {
|
|
229
|
+
border-bottom: 2px solid transparent;
|
|
230
|
+
padding: 0.875rem 0.375rem;
|
|
231
|
+
|
|
232
|
+
&:not(:disabled) {
|
|
233
|
+
color: var(--color-gray-900);
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
&[aria-selected='true'] {
|
|
237
|
+
border-color: currentColor;
|
|
238
|
+
color: var(--color-primary);
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
&[data-variant='secondary'] {
|
|
244
|
+
& + .pxd-tabs--content {
|
|
245
|
+
padding-top: 0.5rem;
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
.pxd-tabs--nav {
|
|
249
|
+
gap: 0.5rem;
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
.pxd-tabs--nav-item {
|
|
253
|
+
height: 1.5rem;
|
|
254
|
+
padding: 0 0.375rem;
|
|
255
|
+
border-radius: var(--radius-md);
|
|
256
|
+
font-size: var(--text-13);
|
|
257
|
+
background-color: var(--color-gray-alpha-200);
|
|
258
|
+
|
|
259
|
+
&:disabled {
|
|
260
|
+
background-color: var(--color-gray-100);
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
&[aria-selected='true'] {
|
|
264
|
+
background-color: var(--color-primary);
|
|
265
|
+
color: var(--color-gray-100);
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
</style>
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { TabsItemProps } from './types';
|
|
2
|
+
declare const __VLS_export: import("vue").DefineComponent<TabsItemProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<TabsItemProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
3
|
+
declare const _default: typeof __VLS_export;
|
|
4
|
+
export default _default;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<script setup>
|
|
2
|
+
defineOptions({
|
|
3
|
+
name: "PTabsItem",
|
|
4
|
+
inheritAttrs: false
|
|
5
|
+
});
|
|
6
|
+
const props = defineProps({
|
|
7
|
+
label: { type: [String, Number, Array, null], required: false },
|
|
8
|
+
value: { type: [String, Number], required: true },
|
|
9
|
+
disabled: { type: Boolean, required: false }
|
|
10
|
+
});
|
|
11
|
+
defineEmits([]);
|
|
12
|
+
</script>
|
|
13
|
+
|
|
14
|
+
<template>
|
|
15
|
+
|
|
16
|
+
</template>
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
<script setup>
|
|
2
|
+
import { tv } from "tailwind-variants";
|
|
2
3
|
import { computed } from "vue";
|
|
3
4
|
import { getCssUnitValue } from "../../utils/format";
|
|
4
|
-
import { getResponsiveValue } from "../../utils/
|
|
5
|
-
import { tv } from "tailwind-variants";
|
|
5
|
+
import { getResponsiveValue } from "../../utils/get";
|
|
6
6
|
defineOptions({
|
|
7
7
|
name: "PText",
|
|
8
8
|
inheritAttrs: false
|
|
@@ -2,13 +2,13 @@ import type { TextareaProps } from './types';
|
|
|
2
2
|
declare const __VLS_export: import("vue").DefineComponent<TextareaProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
3
3
|
change: (args_0: NonNullable<import("../../types/shared").ComponentLabel | undefined>) => any;
|
|
4
4
|
"update:modelValue": (args_0: NonNullable<import("../../types/shared").ComponentLabel | undefined>) => any;
|
|
5
|
-
blur: (args_0: FocusEvent) => any;
|
|
6
5
|
focus: (args_0: FocusEvent) => any;
|
|
6
|
+
blur: (args_0: FocusEvent) => any;
|
|
7
7
|
}, string, import("vue").PublicProps, Readonly<TextareaProps> & Readonly<{
|
|
8
8
|
onChange?: ((args_0: NonNullable<import("../../types/shared").ComponentLabel | undefined>) => any) | undefined;
|
|
9
9
|
"onUpdate:modelValue"?: ((args_0: NonNullable<import("../../types/shared").ComponentLabel | undefined>) => any) | undefined;
|
|
10
|
-
onBlur?: ((args_0: FocusEvent) => any) | undefined;
|
|
11
10
|
onFocus?: ((args_0: FocusEvent) => any) | undefined;
|
|
11
|
+
onBlur?: ((args_0: FocusEvent) => any) | undefined;
|
|
12
12
|
}>, {
|
|
13
13
|
modelValue: import("../../types/shared").ComponentLabel;
|
|
14
14
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
<script setup>
|
|
2
|
+
import { tv } from "tailwind-variants";
|
|
2
3
|
import { computed } from "vue";
|
|
3
|
-
import { useConfigProvider } from "../../contexts/config-provider";
|
|
4
4
|
import { useModelValue } from "../../composables/use-model-value";
|
|
5
|
+
import { useConfigProvider } from "../../contexts/config-provider";
|
|
5
6
|
import { isTruthyProp } from "../../utils/format";
|
|
6
7
|
import { getUniqueId } from "../../utils/uid";
|
|
7
|
-
import { tv } from "tailwind-variants";
|
|
8
8
|
defineOptions({
|
|
9
9
|
name: "PTextarea",
|
|
10
10
|
inheritAttrs: false,
|
|
@@ -81,7 +81,7 @@ function onInputChange(event) {
|
|
|
81
81
|
<template>
|
|
82
82
|
<label
|
|
83
83
|
:for="uniqueId"
|
|
84
|
-
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-
|
|
84
|
+
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-appearance"
|
|
85
85
|
:class="computedClasses"
|
|
86
86
|
v-bind="$attrs"
|
|
87
87
|
>
|
|
@@ -1,15 +1,13 @@
|
|
|
1
1
|
import type { TimePickerProps } from './types';
|
|
2
2
|
declare const __VLS_export: import("vue").DefineComponent<TimePickerProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
3
|
-
|
|
4
|
-
change: (args_0: boolean) => any;
|
|
3
|
+
change: (args_0: string) => any;
|
|
5
4
|
"update:modelValue": (args_0: string) => any;
|
|
6
5
|
}, string, import("vue").PublicProps, Readonly<TimePickerProps> & Readonly<{
|
|
7
|
-
|
|
8
|
-
onChange?: ((args_0: boolean) => any) | undefined;
|
|
6
|
+
onChange?: ((args_0: string) => any) | undefined;
|
|
9
7
|
"onUpdate:modelValue"?: ((args_0: string) => any) | undefined;
|
|
10
8
|
}>, {
|
|
11
|
-
format: string;
|
|
12
9
|
modelValue: Date | string | number | null;
|
|
10
|
+
format: string;
|
|
13
11
|
closeOnPressEscape: boolean;
|
|
14
12
|
presets: import("./types").DateTimePreset[];
|
|
15
13
|
prefixIcon: boolean;
|