pxd 0.1.2 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/_internal/calendar-day.vue +19 -19
- package/dist/components/_internal/dismiss-container.d.vue.ts +1 -1
- package/dist/components/_internal/dismiss-container.vue +19 -19
- package/dist/components/_internal/loading-mask.vue +9 -1
- package/dist/components/_internal/mention-editor.d.vue.ts +1 -1
- package/dist/components/_internal/mention-editor.vue +1 -1
- package/dist/components/_internal/popover-arrow.d.vue.ts +1 -1
- package/dist/components/_internal/popover-arrow.vue +1 -1
- package/dist/components/{steps → _internal}/step-item.d.vue.ts +1 -1
- package/dist/components/{steps → _internal}/step-item.vue +1 -1
- package/dist/components/_internal/tree-node.d.vue.ts +20 -20
- package/dist/components/_internal/tree-node.vue +53 -45
- package/dist/components/active-graph/index.d.vue.ts +2 -2
- package/dist/components/approval-card/index.d.vue.ts +1 -1
- package/dist/components/approval-card/index.vue +34 -17
- package/dist/components/approval-card/types.d.ts +1 -1
- package/dist/components/avatar/index.d.vue.ts +2 -2
- package/dist/components/avatar/index.vue +1 -1
- package/dist/components/backtop/index.d.vue.ts +3 -3
- package/dist/components/backtop/index.vue +17 -17
- package/dist/components/backtop/types.d.ts +1 -1
- package/dist/components/badge/index.d.vue.ts +3 -3
- package/dist/components/badge/index.vue +43 -43
- package/dist/components/badge/types.d.ts +1 -1
- package/dist/components/book/types.d.ts +1 -1
- package/dist/components/border-beam/index.vue +1 -1
- package/dist/components/border-beam/types.d.ts +1 -1
- package/dist/components/bubble/index.vue +1 -1
- package/dist/components/bubble-group/index.d.vue.ts +4 -4
- package/dist/components/button/index.d.vue.ts +5 -5
- package/dist/components/button/index.vue +13 -13
- package/dist/components/button/types.d.ts +1 -1
- package/dist/components/button-group/types.d.ts +1 -1
- package/dist/components/calendar/index.d.vue.ts +2 -2
- package/dist/components/calendar/index.vue +5 -5
- package/dist/components/calendar/types.d.ts +1 -1
- package/dist/components/card/types.d.ts +1 -1
- package/dist/components/carousel/index.d.vue.ts +7 -7
- package/dist/components/carousel/index.vue +1 -1
- package/dist/components/carousel/types.d.ts +1 -1
- package/dist/components/checkbox/index.vue +1 -1
- package/dist/components/checkbox/types.d.ts +1 -1
- package/dist/components/checkbox-group/index.d.vue.ts +2 -2
- package/dist/components/checkbox-group/types.d.ts +1 -1
- package/dist/components/chip/index.d.vue.ts +1 -1
- package/dist/components/chip/types.d.ts +1 -1
- package/dist/components/choicebox/index.d.vue.ts +3 -3
- package/dist/components/choicebox/types.d.ts +1 -1
- package/dist/components/choicebox-item/index.vue +8 -8
- package/dist/components/choicebox-item/types.d.ts +1 -1
- package/dist/components/collapse/index.vue +2 -2
- package/dist/components/collapse-group/index.vue +1 -1
- package/dist/components/collapse-group/types.d.ts +1 -1
- package/dist/components/command-menu/index.d.vue.ts +5 -5
- package/dist/components/command-menu/index.vue +10 -3
- package/dist/components/config-provider/index.d.vue.ts +40 -5
- package/dist/components/config-provider/types.d.ts +2 -1
- package/dist/components/confirm-popover/index.d.vue.ts +39 -0
- package/dist/components/confirm-popover/index.vue +177 -0
- package/dist/components/confirm-popover/types.d.ts +23 -0
- package/dist/components/copy-button/index.d.vue.ts +2 -6
- package/dist/components/copy-button/index.vue +4 -6
- package/dist/components/dash-line/index.d.vue.ts +1 -1
- package/dist/components/dash-line/index.vue +8 -8
- package/dist/components/dash-line/types.d.ts +1 -1
- package/dist/components/date-picker/index.d.vue.ts +1 -1
- package/dist/components/date-picker/index.vue +3 -3
- package/dist/components/date-picker/types.d.ts +1 -1
- package/dist/components/drawer/index.d.vue.ts +7 -7
- package/dist/components/drawer/index.vue +30 -15
- package/dist/components/drawer/types.d.ts +2 -2
- package/dist/components/effort-slider/index.vue +12 -18
- package/dist/components/effort-slider/types.d.ts +1 -1
- package/dist/components/ellipsis-text/index.d.vue.ts +2 -2
- package/dist/components/ellipsis-text/index.vue +75 -75
- package/dist/components/error/types.d.ts +1 -1
- package/dist/components/fader/index.vue +2 -2
- package/dist/components/fader/types.d.ts +1 -1
- package/dist/components/gauge/index.vue +2 -2
- package/dist/components/gauge/types.d.ts +1 -1
- package/dist/components/grid/types.d.ts +1 -1
- package/dist/components/grid-item/types.d.ts +1 -1
- package/dist/components/hint/index.d.vue.ts +32 -0
- package/dist/components/hint/index.vue +239 -0
- package/dist/components/hint/types.d.ts +17 -0
- package/dist/components/hold-button/index.d.vue.ts +4 -4
- package/dist/components/hold-button/index.vue +10 -10
- package/dist/components/index.d.ts +4 -0
- package/dist/components/index.js +4 -0
- package/dist/components/input/index.d.vue.ts +1 -1
- package/dist/components/input/index.vue +14 -7
- package/dist/components/input/types.d.ts +1 -1
- package/dist/components/intersection-observer/index.vue +3 -3
- package/dist/components/kbd/index.vue +2 -2
- package/dist/components/kbd/types.d.ts +1 -1
- package/dist/components/link-button/index.d.vue.ts +5 -5
- package/dist/components/list/index.d.vue.ts +4 -4
- package/dist/components/list/index.vue +126 -47
- package/dist/components/list/types.d.ts +1 -1
- package/dist/components/list-group/types.d.ts +1 -1
- package/dist/components/list-item/index.d.vue.ts +2 -2
- package/dist/components/list-item/index.vue +26 -8
- package/dist/components/loading-bar/index.vue +5 -5
- package/dist/components/marching-ants/index.d.vue.ts +2 -2
- package/dist/components/marching-ants/index.vue +56 -56
- package/dist/components/marching-ants/types.d.ts +1 -1
- package/dist/components/marquee/index.d.vue.ts +6 -6
- package/dist/components/marquee/index.vue +16 -16
- package/dist/components/marquee/types.d.ts +1 -1
- package/dist/components/material/index.d.vue.ts +3 -3
- package/dist/components/mention/index.d.vue.ts +5 -5
- package/dist/components/mention/index.vue +68 -68
- package/dist/components/menu/index.d.vue.ts +4 -4
- package/dist/components/menu/index.vue +10 -10
- package/dist/components/menu/types.d.ts +1 -1
- package/dist/components/message/index.d.vue.ts +1 -1
- package/dist/components/message/index.vue +19 -25
- package/dist/components/message/types.d.ts +1 -1
- package/dist/components/message-item/index.vue +2 -6
- package/dist/components/modal/index.d.vue.ts +7 -7
- package/dist/components/modal/index.vue +26 -11
- package/dist/components/modal/types.d.ts +2 -2
- package/dist/components/noise-background/types.d.ts +1 -1
- package/dist/components/note/index.vue +6 -2
- package/dist/components/note/types.d.ts +2 -1
- package/dist/components/number-input/index.d.vue.ts +11 -6
- package/dist/components/number-input/index.vue +57 -16
- package/dist/components/number-input/types.d.ts +2 -1
- package/dist/components/overlay/index.d.vue.ts +2 -3
- package/dist/components/overlay/index.vue +10 -62
- package/dist/components/overlay/types.d.ts +0 -2
- package/dist/components/page-number/index.vue +30 -29
- package/dist/components/page-number/types.d.ts +1 -1
- package/dist/components/pin-input/index.d.vue.ts +1 -1
- package/dist/components/pin-input/index.vue +6 -6
- package/dist/components/pin-input/types.d.ts +1 -1
- package/dist/components/popover/index.vue +49 -21
- package/dist/components/popover/types.d.ts +3 -1
- package/dist/components/progress/index.d.vue.ts +2 -2
- package/dist/components/progress/index.vue +12 -12
- package/dist/components/progress/types.d.ts +1 -1
- package/dist/components/project-banner/types.d.ts +1 -1
- package/dist/components/questionnaire/index.vue +14 -14
- package/dist/components/radio/index.vue +1 -1
- package/dist/components/radio/types.d.ts +1 -1
- package/dist/components/radio-group/index.d.vue.ts +2 -2
- package/dist/components/radio-group/types.d.ts +1 -1
- package/dist/components/rating/index.vue +28 -28
- package/dist/components/rating/types.d.ts +1 -1
- package/dist/components/resizable/index.d.vue.ts +1 -0
- package/dist/components/resizable/index.vue +130 -195
- package/dist/components/resizable/types.d.ts +2 -10
- package/dist/components/reveal/index.d.vue.ts +3 -3
- package/dist/components/reveal/index.vue +4 -4
- package/dist/components/reveal/types.d.ts +1 -1
- package/dist/components/rolling-number/index.d.vue.ts +2 -2
- package/dist/components/rolling-number/index.vue +15 -15
- package/dist/components/scalable-text/index.vue +9 -9
- package/dist/components/scroll-text/index.d.vue.ts +3 -3
- package/dist/components/scroll-text/index.vue +6 -6
- package/dist/components/scroll-text/types.d.ts +1 -1
- package/dist/components/scrollable/types.d.ts +2 -1
- package/dist/components/search-input/index.d.vue.ts +5 -5
- package/dist/components/search-input/index.vue +2 -1
- package/dist/components/select/index.d.vue.ts +12 -9
- package/dist/components/select/index.vue +165 -42
- package/dist/components/select/types.d.ts +3 -1
- package/dist/components/separator/index.d.vue.ts +1 -1
- package/dist/components/separator/types.d.ts +1 -1
- package/dist/components/skeleton/index.d.vue.ts +1 -1
- package/dist/components/skeleton/index.vue +11 -11
- package/dist/components/skeleton/types.d.ts +1 -1
- package/dist/components/slider/index.d.vue.ts +1 -1
- package/dist/components/slider/index.vue +1 -1
- package/dist/components/slider/types.d.ts +1 -1
- package/dist/components/snippet/index.d.vue.ts +3 -3
- package/dist/components/snippet/index.vue +7 -5
- package/dist/components/snippet/types.d.ts +1 -1
- package/dist/components/spinner/index.vue +5 -1
- package/dist/components/spinner-dots/index.d.vue.ts +1 -1
- package/dist/components/split-button/index.d.vue.ts +5 -5
- package/dist/components/split-button/types.d.ts +1 -1
- package/dist/components/stack/index.d.vue.ts +3 -3
- package/dist/components/stack/index.vue +28 -29
- package/dist/components/stack/types.d.ts +1 -1
- package/dist/components/status-dot/types.d.ts +1 -1
- package/dist/components/steps/index.d.vue.ts +2 -2
- package/dist/components/steps/index.vue +6 -6
- package/dist/components/steps/types.d.ts +1 -1
- package/dist/components/stick-to-bottom/types.d.ts +1 -1
- package/dist/components/swipe-cell/index.d.vue.ts +6 -6
- package/dist/components/swipe-cell/index.vue +64 -64
- package/dist/components/swipe-cell/types.d.ts +2 -1
- package/dist/components/switch/index.vue +1 -1
- package/dist/components/switch/types.d.ts +1 -1
- package/dist/components/switch-item/index.vue +1 -1
- package/dist/components/switch-item/types.d.ts +1 -1
- package/dist/components/tabs/index.d.vue.ts +1 -1
- package/dist/components/tabs/index.vue +48 -51
- package/dist/components/tabs/types.d.ts +1 -1
- package/dist/components/teleport/index.vue +2 -2
- package/dist/components/text/index.d.vue.ts +3 -3
- package/dist/components/text/index.vue +11 -11
- package/dist/components/text/types.d.ts +1 -1
- package/dist/components/textarea/index.vue +1 -1
- package/dist/components/textarea/types.d.ts +1 -1
- package/dist/components/theme-switcher/index.d.vue.ts +3 -2
- package/dist/components/theme-switcher/index.vue +15 -7
- package/dist/components/theme-switcher/types.d.ts +2 -2
- package/dist/components/time-ago/index.d.vue.ts +6 -0
- package/dist/components/time-ago/index.vue +143 -0
- package/dist/components/time-ago/types.d.ts +4 -0
- package/dist/components/time-picker/index.d.vue.ts +1 -1
- package/dist/components/time-picker/index.vue +7 -7
- package/dist/components/time-picker/types.d.ts +1 -1
- package/dist/components/toc/index.d.vue.ts +2 -2
- package/dist/components/toc/index.vue +1 -1
- package/dist/components/todo-list/index.d.vue.ts +4 -4
- package/dist/components/todo-list/index.vue +15 -15
- package/dist/components/todo-list/types.d.ts +1 -1
- package/dist/components/toggle/index.vue +3 -3
- package/dist/components/toggle/types.d.ts +1 -1
- package/dist/components/toggle-button/index.vue +14 -11
- package/dist/components/toggle-button/types.d.ts +2 -2
- package/dist/components/toggle-button-group/index.d.vue.ts +3 -3
- package/dist/components/toggle-button-group/index.vue +2 -2
- package/dist/components/toggle-button-group/types.d.ts +2 -2
- package/dist/components/tool-call/index.vue +5 -5
- package/dist/components/tooltip/index.d.vue.ts +4 -5
- package/dist/components/tooltip/index.vue +4 -49
- package/dist/components/tooltip/types.d.ts +3 -7
- package/dist/components/tour/index.d.vue.ts +33 -0
- package/dist/components/tour/index.vue +302 -0
- package/dist/components/tour/types.d.ts +29 -0
- package/dist/components/tree/index.d.vue.ts +24 -28
- package/dist/components/tree/index.vue +290 -223
- package/dist/components/tree/types.d.ts +38 -13
- package/dist/components/virtual-list/index.d.vue.ts +4 -4
- package/dist/composables/_internal/use-list-keyboard-controller.js +9 -10
- package/dist/composables/_internal/use-list-rows.d.ts +4 -0
- package/dist/composables/_internal/use-list-rows.js +12 -4
- package/dist/composables/_internal/use-list-selection.d.ts +1 -1
- package/dist/composables/_internal/use-lock-scroll.d.ts +8 -1
- package/dist/composables/_internal/use-lock-scroll.js +57 -36
- package/dist/composables/_internal/use-mention-editor.js +1 -1
- package/dist/composables/_internal/use-message-group.d.ts +22 -0
- package/dist/composables/_internal/use-message-group.js +143 -0
- package/dist/composables/_internal/use-overlay-dialog.js +1 -3
- package/dist/composables/_internal/use-overlay-manager.d.ts +4 -1
- package/dist/composables/_internal/use-overlay-manager.js +67 -8
- package/dist/composables/_internal/use-swipe-gesture.d.ts +1 -1
- package/dist/composables/_internal/use-tour-target.d.ts +29 -0
- package/dist/composables/_internal/use-tour-target.js +201 -0
- package/dist/composables/_internal/use-tree.d.ts +103 -0
- package/dist/composables/_internal/use-tree.js +676 -0
- package/dist/composables/_internal/use-word-limit.d.ts +1 -1
- package/dist/composables/index.d.ts +1 -0
- package/dist/composables/index.js +1 -0
- package/dist/composables/use-color-scheme.d.ts +1 -1
- package/dist/composables/use-color-scheme.js +7 -6
- package/dist/composables/use-delay-destroy.d.ts +1 -1
- package/dist/composables/use-document-hidden.d.ts +1 -1
- package/dist/composables/use-intersection-observer.d.ts +1 -1
- package/dist/composables/use-intersection-observer.js +1 -1
- package/dist/composables/{_internal/use-motion-reduce.js → use-motion-reduce.js} +2 -2
- package/dist/composables/use-mutation-observer.d.ts +1 -1
- package/dist/composables/use-mutation-observer.js +1 -1
- package/dist/composables/use-resize-observer.d.ts +1 -1
- package/dist/composables/use-resize-observer.js +1 -1
- package/dist/composables/use-view-transition.js +1 -0
- package/dist/composables/use-virtual-list.d.ts +1 -1
- package/dist/constants/tooltip-variants.d.ts +28 -0
- package/dist/constants/tooltip-variants.js +27 -0
- package/dist/contexts/avatar.js +1 -1
- package/dist/contexts/breadcrumb.js +1 -1
- package/dist/contexts/button.js +1 -1
- package/dist/contexts/checkbox.js +1 -1
- package/dist/contexts/choicebox.js +1 -1
- package/dist/contexts/collapse.js +1 -1
- package/dist/contexts/config-provider.js +1 -1
- package/dist/contexts/list.js +1 -1
- package/dist/contexts/radio.js +1 -1
- package/dist/contexts/switch.js +1 -1
- package/dist/contexts/toggle-button.js +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/locales/en-us.d.ts +35 -0
- package/dist/locales/en-us.js +20 -0
- package/dist/locales/zh-cn.d.ts +35 -0
- package/dist/locales/zh-cn.js +20 -0
- package/dist/styles/styles.css +1 -1
- package/dist/styles/tw.css +43 -30
- package/dist/utils/{context.js → _internal/context.js} +1 -1
- package/dist/utils/{observer.d.ts → _internal/observer.d.ts} +1 -1
- package/dist/utils/{observer.js → _internal/observer.js} +4 -4
- package/dist/{components/swipe-cell/instances.d.ts → utils/_internal/swipe-cell-instances.d.ts} +1 -1
- package/dist/utils/event.d.ts +2 -1
- package/dist/utils/event.js +3 -0
- package/package.json +26 -50
- package/volar.d.ts +4 -0
- package/dist/components/message/composables/use-group-expand.d.ts +0 -13
- package/dist/components/message/composables/use-group-expand.js +0 -50
- package/dist/components/message/composables/use-message-timer.d.ts +0 -9
- package/dist/components/message/composables/use-message-timer.js +0 -62
- package/dist/components/message/composables/use-promise-message.d.ts +0 -4
- package/dist/components/message/composables/use-promise-message.js +0 -49
- package/dist/components/resizable/utils.d.ts +0 -4
- package/dist/components/resizable/utils.js +0 -10
- package/dist/composables/_internal/use-tree-drag.d.ts +0 -23
- package/dist/composables/_internal/use-tree-drag.js +0 -196
- package/dist/composables/_internal/use-tree-move.d.ts +0 -20
- package/dist/composables/_internal/use-tree-move.js +0 -96
- package/dist/composables/_internal/use-tree-rows.d.ts +0 -46
- package/dist/composables/_internal/use-tree-rows.js +0 -101
- package/dist/composables/_internal/use-tree-selection.d.ts +0 -22
- package/dist/composables/_internal/use-tree-selection.js +0 -87
- package/dist/styles/source.css +0 -675
- package/dist/types/shared/index.d.ts +0 -2
- /package/dist/composables/{_internal/use-motion-reduce.d.ts → use-motion-reduce.d.ts} +0 -0
- /package/dist/utils/{context.d.ts → _internal/context.d.ts} +0 -0
- /package/dist/utils/{mention-html.d.ts → _internal/mention-html.d.ts} +0 -0
- /package/dist/utils/{mention-html.js → _internal/mention-html.js} +0 -0
- /package/dist/{components/swipe-cell/instances.js → utils/_internal/swipe-cell-instances.js} +0 -0
|
@@ -1,5 +1,24 @@
|
|
|
1
1
|
<script setup>
|
|
2
2
|
import { createTailwindVariant } from "../../composables/_internal/use-tailwind-variant.js";
|
|
3
|
+
defineOptions({
|
|
4
|
+
name: "PCalendarDay",
|
|
5
|
+
inheritAttrs: false
|
|
6
|
+
});
|
|
7
|
+
const props = defineProps({
|
|
8
|
+
day: {
|
|
9
|
+
type: Object,
|
|
10
|
+
required: true
|
|
11
|
+
},
|
|
12
|
+
selected: {
|
|
13
|
+
type: Boolean,
|
|
14
|
+
required: true
|
|
15
|
+
},
|
|
16
|
+
compact: {
|
|
17
|
+
type: Boolean,
|
|
18
|
+
required: true
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
const emits = defineEmits(["change"]);
|
|
3
22
|
const cellClasses = createTailwindVariant({
|
|
4
23
|
base: "pxd-calendar--grid-cell shrink-0 self-focus-ring outline-none motion-safe:transition-colors",
|
|
5
24
|
variants: {
|
|
@@ -25,25 +44,6 @@ const dateClasses = createTailwindVariant({
|
|
|
25
44
|
disabled: { true: "opacity-35" }
|
|
26
45
|
}
|
|
27
46
|
});
|
|
28
|
-
defineOptions({
|
|
29
|
-
name: "PCalendarDay",
|
|
30
|
-
inheritAttrs: false
|
|
31
|
-
});
|
|
32
|
-
const props = defineProps({
|
|
33
|
-
day: {
|
|
34
|
-
type: Object,
|
|
35
|
-
required: true
|
|
36
|
-
},
|
|
37
|
-
selected: {
|
|
38
|
-
type: Boolean,
|
|
39
|
-
required: true
|
|
40
|
-
},
|
|
41
|
-
compact: {
|
|
42
|
-
type: Boolean,
|
|
43
|
-
required: true
|
|
44
|
-
}
|
|
45
|
-
});
|
|
46
|
-
const emits = defineEmits(["change"]);
|
|
47
47
|
function selectDate() {
|
|
48
48
|
if (props.day.isDisabled) {
|
|
49
49
|
return;
|
|
@@ -24,7 +24,10 @@ const props = defineProps({
|
|
|
24
24
|
}
|
|
25
25
|
});
|
|
26
26
|
const emits = defineEmits(["change", "update:modelValue"]);
|
|
27
|
-
const
|
|
27
|
+
const dampingFactor = 9;
|
|
28
|
+
let maxSwipedDamped = 0;
|
|
29
|
+
let hasDraggedInDismissDirection = false;
|
|
30
|
+
let releaseAnimationId = 0;
|
|
28
31
|
const containerRef = shallowRef();
|
|
29
32
|
const gestureMoveOffset = shallowRef(0);
|
|
30
33
|
const isHorizontal = computed(() => ["left", "right"].find((d) => props.position.startsWith(d)));
|
|
@@ -32,24 +35,7 @@ const gestureAxis = computed(() => isHorizontal.value ? "horizontal" : "vertical
|
|
|
32
35
|
const computedStyle = computed(() => {
|
|
33
36
|
return { transform: gestureMoveOffset.value ? `translate${isHorizontal.value ? "X" : "Y"}(${gestureMoveOffset.value}px) !important` : "" };
|
|
34
37
|
});
|
|
35
|
-
const
|
|
36
|
-
let maxSwipedDamped = 0;
|
|
37
|
-
let hasDraggedInDismissDirection = false;
|
|
38
|
-
let releaseAnimationId = 0;
|
|
39
|
-
function animateRelease(from, decayRate = .88) {
|
|
40
|
-
caf(releaseAnimationId);
|
|
41
|
-
const step = () => {
|
|
42
|
-
const next = from * decayRate;
|
|
43
|
-
if (Math.abs(next) < .5) {
|
|
44
|
-
gestureMoveOffset.value = 0;
|
|
45
|
-
return;
|
|
46
|
-
}
|
|
47
|
-
from = next;
|
|
48
|
-
gestureMoveOffset.value = from;
|
|
49
|
-
releaseAnimationId = raf(step);
|
|
50
|
-
};
|
|
51
|
-
releaseAnimationId = raf(step);
|
|
52
|
-
}
|
|
38
|
+
const modelValue = useModelValue(props, emits);
|
|
53
39
|
useSwipeGesture(containerRef, {
|
|
54
40
|
handleSelector: ".pxd-dismiss-container--handle",
|
|
55
41
|
swipeThreshold: 0,
|
|
@@ -83,6 +69,20 @@ useSwipeGesture(containerRef, {
|
|
|
83
69
|
animateRelease(gestureMoveOffset.value);
|
|
84
70
|
}
|
|
85
71
|
});
|
|
72
|
+
function animateRelease(from, decayRate = .88) {
|
|
73
|
+
caf(releaseAnimationId);
|
|
74
|
+
const step = () => {
|
|
75
|
+
const next = from * decayRate;
|
|
76
|
+
if (Math.abs(next) < .5) {
|
|
77
|
+
gestureMoveOffset.value = 0;
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
from = next;
|
|
81
|
+
gestureMoveOffset.value = from;
|
|
82
|
+
releaseAnimationId = raf(step);
|
|
83
|
+
};
|
|
84
|
+
releaseAnimationId = raf(step);
|
|
85
|
+
}
|
|
86
86
|
</script>
|
|
87
87
|
|
|
88
88
|
<template>
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
<script setup>
|
|
2
|
+
import { onBeforeUnmount, onMounted, shallowRef } from "vue";
|
|
3
|
+
import { useLockScroll } from "../../composables/_internal/use-lock-scroll.js";
|
|
2
4
|
import PSpinner from "../spinner/index.vue";
|
|
3
5
|
defineOptions({
|
|
4
6
|
name: "PLoadingMask",
|
|
@@ -9,13 +11,19 @@ const props = defineProps({ text: {
|
|
|
9
11
|
required: false,
|
|
10
12
|
default: "Loading..."
|
|
11
13
|
} });
|
|
14
|
+
const maskRef = shallowRef();
|
|
15
|
+
const { lockScroll, unlockScroll } = useLockScroll(() => maskRef.value?.parentElement);
|
|
16
|
+
onMounted(lockScroll);
|
|
17
|
+
onBeforeUnmount(unlockScroll);
|
|
12
18
|
</script>
|
|
13
19
|
|
|
14
20
|
<template>
|
|
15
21
|
<Transition name="pxd-transition--fade" mode="out-in" appear>
|
|
16
22
|
<div
|
|
23
|
+
ref="maskRef"
|
|
24
|
+
aria-hidden="true"
|
|
17
25
|
data-loading-mask
|
|
18
|
-
class="pxd-loading-mask inset-0 gap-2 backdrop-blur-
|
|
26
|
+
class="pxd-loading-mask inset-0 gap-2 backdrop-blur-md absolute flex items-center justify-center text-foreground-secondary"
|
|
19
27
|
v-bind="$attrs"
|
|
20
28
|
>
|
|
21
29
|
<PSpinner class="text-base" />
|
|
@@ -33,9 +33,9 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {
|
|
|
33
33
|
}) => any) | undefined;
|
|
34
34
|
}>, {
|
|
35
35
|
size: ComponentSize;
|
|
36
|
-
placeholder: string;
|
|
37
36
|
disabled: boolean;
|
|
38
37
|
modelValue: string;
|
|
38
|
+
placeholder: string;
|
|
39
39
|
triggers: string[];
|
|
40
40
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
41
41
|
declare const _default: typeof __VLS_export;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { computed, onMounted, shallowRef } from "vue";
|
|
3
3
|
import { useMentionEditor } from "../../composables/_internal/use-mention-editor.js";
|
|
4
4
|
import { BASIC_MIN_HEIGHTS } from "../../constants/size.js";
|
|
5
|
-
import { DEFAULT_TRIGGER } from "../../utils/mention-html.js";
|
|
5
|
+
import { DEFAULT_TRIGGER } from "../../utils/_internal/mention-html.js";
|
|
6
6
|
defineOptions({
|
|
7
7
|
name: "PMentionEditor",
|
|
8
8
|
inheritAttrs: false
|
|
@@ -82,5 +82,5 @@ function onClick() {
|
|
|
82
82
|
</template>
|
|
83
83
|
|
|
84
84
|
<style>
|
|
85
|
-
.pxd-steps[data-direction=horizontal] .pxd-steps-item:not(:last-child):after{
|
|
85
|
+
.pxd-steps[data-direction=horizontal] .pxd-steps-item:not(:last-child):after{border-bottom:1px solid var(--color-border);content:"";left:calc(50% + var(--steps-indicator-size)/2 + var(--steps-gap));position:absolute;right:calc(-50% + var(--steps-indicator-size)/2 + var(--steps-gap));top:calc(var(--steps-indicator-size)/2)}.pxd-steps[data-direction=horizontal] .pxd-steps-item[data-status=finish]:after{background-color:var(--color-primary)}.pxd-steps[data-direction=vertical] .pxd-steps-item:not(:last-child){padding-bottom:var(--steps-gap)}.pxd-steps[data-direction=vertical] .pxd-steps-item:not(:last-child):after{border-left:1px solid var(--color-border);bottom:calc(var(--steps-gap)/2);content:"";left:calc(var(--steps-indicator-size)/2 + var(--spacing));position:absolute;top:calc(var(--steps-indicator-size) + var(--steps-gap)/2)}.pxd-steps[data-direction=vertical] .pxd-steps-item[data-status=finish]:after{background-color:var(--color-primary)}
|
|
86
86
|
</style>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { ComponentClass, ComponentValue } from '../../types/shared';
|
|
2
|
-
import type { TreeDropPosition, TreeOption } from '../tree/types';
|
|
1
|
+
import type { ComponentClass, ComponentValue } from '../../types/shared/props';
|
|
2
|
+
import type { TreeDropPosition, TreeHighlightPart, TreeOption } from '../tree/types';
|
|
3
3
|
type __VLS_Props = {
|
|
4
4
|
node: TreeOption;
|
|
5
5
|
value: ComponentValue;
|
|
@@ -7,18 +7,18 @@ type __VLS_Props = {
|
|
|
7
7
|
index: number;
|
|
8
8
|
hasChildren: boolean;
|
|
9
9
|
expanded: boolean;
|
|
10
|
+
loading: boolean;
|
|
10
11
|
checked: boolean;
|
|
11
12
|
indeterminate: boolean;
|
|
12
13
|
active: boolean;
|
|
13
14
|
multiple: boolean;
|
|
14
15
|
disabled: boolean;
|
|
16
|
+
selectable: boolean;
|
|
15
17
|
setSize: number;
|
|
16
18
|
indent: number;
|
|
17
19
|
id: string;
|
|
18
20
|
highlightQuery: string;
|
|
19
|
-
showIcon: boolean;
|
|
20
21
|
draggable: boolean;
|
|
21
|
-
dragHandle: boolean;
|
|
22
22
|
dragging: boolean;
|
|
23
23
|
dropPosition?: TreeDropPosition;
|
|
24
24
|
itemClass?: ComponentClass;
|
|
@@ -26,40 +26,40 @@ type __VLS_Props = {
|
|
|
26
26
|
declare var __VLS_1: {
|
|
27
27
|
node: TreeOption;
|
|
28
28
|
depth: number;
|
|
29
|
-
|
|
30
|
-
node: TreeOption;
|
|
31
|
-
depth: number;
|
|
29
|
+
loading: boolean;
|
|
32
30
|
expanded: boolean;
|
|
33
|
-
},
|
|
31
|
+
}, __VLS_23: {
|
|
34
32
|
node: TreeOption;
|
|
35
33
|
depth: number;
|
|
36
34
|
expanded: boolean;
|
|
37
|
-
|
|
35
|
+
hasChildren: boolean;
|
|
36
|
+
}, __VLS_25: {
|
|
38
37
|
node: TreeOption;
|
|
39
38
|
depth: number;
|
|
40
|
-
|
|
39
|
+
parts: TreeHighlightPart[] | undefined;
|
|
40
|
+
hasChildren: boolean;
|
|
41
|
+
}, __VLS_28: {
|
|
41
42
|
node: TreeOption;
|
|
43
|
+
hasChildren: boolean;
|
|
42
44
|
};
|
|
43
45
|
type __VLS_Slots = {} & {
|
|
44
|
-
'node-
|
|
45
|
-
} & {
|
|
46
|
-
'node-switcher'?: (props: typeof __VLS_8) => any;
|
|
46
|
+
'node-switcher'?: (props: typeof __VLS_1) => any;
|
|
47
47
|
} & {
|
|
48
|
-
'node-icon'?: (props: typeof
|
|
48
|
+
'node-icon'?: (props: typeof __VLS_23) => any;
|
|
49
49
|
} & {
|
|
50
|
-
'node-content'?: (props: typeof
|
|
50
|
+
'node-content'?: (props: typeof __VLS_25) => any;
|
|
51
51
|
} & {
|
|
52
|
-
'node-suffix'?: (props: typeof
|
|
52
|
+
'node-suffix'?: (props: typeof __VLS_28) => any;
|
|
53
53
|
};
|
|
54
54
|
declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
55
55
|
toggle: (value: ComponentValue) => any;
|
|
56
|
-
|
|
57
|
-
|
|
56
|
+
check: (value: ComponentValue, event: MouseEvent) => any;
|
|
57
|
+
"row-click": (value: ComponentValue, event: MouseEvent) => any;
|
|
58
58
|
"drag-pointerdown": (value: ComponentValue, event: PointerEvent) => any;
|
|
59
59
|
}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
60
60
|
onToggle?: ((value: ComponentValue) => any) | undefined;
|
|
61
|
-
|
|
62
|
-
|
|
61
|
+
onCheck?: ((value: ComponentValue, event: MouseEvent) => any) | undefined;
|
|
62
|
+
"onRow-click"?: ((value: ComponentValue, event: MouseEvent) => any) | undefined;
|
|
63
63
|
"onDrag-pointerdown"?: ((value: ComponentValue, event: PointerEvent) => any) | undefined;
|
|
64
64
|
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
65
65
|
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
<script setup>
|
|
2
2
|
import CheckIcon from "@gdsicon/vue/check";
|
|
3
3
|
import ChevronRightIcon from "@gdsicon/vue/chevron-right";
|
|
4
|
-
import
|
|
5
|
-
import FolderOpenIcon from "@gdsicon/vue/folder-open";
|
|
4
|
+
import LoaderCircleIcon from "@gdsicon/vue/loader-circle";
|
|
6
5
|
import MinusIcon from "@gdsicon/vue/minus";
|
|
7
|
-
import MoreVerticalIcon from "@gdsicon/vue/more-vertical";
|
|
8
6
|
import { computed } from "vue";
|
|
9
7
|
defineOptions({
|
|
10
8
|
name: "PTreeNode",
|
|
@@ -35,6 +33,10 @@ const props = defineProps({
|
|
|
35
33
|
type: Boolean,
|
|
36
34
|
required: true
|
|
37
35
|
},
|
|
36
|
+
loading: {
|
|
37
|
+
type: Boolean,
|
|
38
|
+
required: true
|
|
39
|
+
},
|
|
38
40
|
checked: {
|
|
39
41
|
type: Boolean,
|
|
40
42
|
required: true
|
|
@@ -55,6 +57,10 @@ const props = defineProps({
|
|
|
55
57
|
type: Boolean,
|
|
56
58
|
required: true
|
|
57
59
|
},
|
|
60
|
+
selectable: {
|
|
61
|
+
type: Boolean,
|
|
62
|
+
required: true
|
|
63
|
+
},
|
|
58
64
|
setSize: {
|
|
59
65
|
type: Number,
|
|
60
66
|
required: true
|
|
@@ -71,18 +77,10 @@ const props = defineProps({
|
|
|
71
77
|
type: String,
|
|
72
78
|
required: true
|
|
73
79
|
},
|
|
74
|
-
showIcon: {
|
|
75
|
-
type: Boolean,
|
|
76
|
-
required: true
|
|
77
|
-
},
|
|
78
80
|
draggable: {
|
|
79
81
|
type: Boolean,
|
|
80
82
|
required: true
|
|
81
83
|
},
|
|
82
|
-
dragHandle: {
|
|
83
|
-
type: Boolean,
|
|
84
|
-
required: true
|
|
85
|
-
},
|
|
86
84
|
dragging: {
|
|
87
85
|
type: Boolean,
|
|
88
86
|
required: true
|
|
@@ -101,25 +99,20 @@ const props = defineProps({
|
|
|
101
99
|
}
|
|
102
100
|
});
|
|
103
101
|
const emits = defineEmits([
|
|
104
|
-
"row-click",
|
|
105
102
|
"check",
|
|
106
103
|
"toggle",
|
|
104
|
+
"row-click",
|
|
107
105
|
"drag-pointerdown"
|
|
108
106
|
]);
|
|
109
|
-
function onPointerdown(event) {
|
|
110
|
-
// A handle owns the gesture on touch, where a vertical drag is indistinguishable from a scroll.
|
|
111
|
-
if (!props.draggable || props.dragHandle) {
|
|
112
|
-
return;
|
|
113
|
-
}
|
|
114
|
-
emits("drag-pointerdown", props.value, event);
|
|
115
|
-
}
|
|
116
107
|
const disabled = computed(() => props.disabled || props.node.disabled === true);
|
|
108
|
+
const unavailable = computed(() => disabled.value || !props.selectable);
|
|
117
109
|
const checkboxClass = computed(() => {
|
|
118
110
|
if (props.checked) {
|
|
119
|
-
return
|
|
111
|
+
return unavailable.value ? "border-gray-500 bg-gray-500" : "border-primary bg-primary";
|
|
120
112
|
}
|
|
121
|
-
return
|
|
113
|
+
return unavailable.value ? "border-gray-500 bg-gray-100 cursor-not-allowed" : "border-gray-alpha-400 bg-background-100";
|
|
122
114
|
});
|
|
115
|
+
const indentSize = computed(() => props.depth * props.indent + 8);
|
|
123
116
|
const parts = computed(() => {
|
|
124
117
|
const query = props.highlightQuery;
|
|
125
118
|
if (!query) {
|
|
@@ -145,6 +138,12 @@ const parts = computed(() => {
|
|
|
145
138
|
}
|
|
146
139
|
].filter((part) => part.text);
|
|
147
140
|
});
|
|
141
|
+
function onPointerdown(event) {
|
|
142
|
+
if (!props.draggable) {
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
emits("drag-pointerdown", props.value, event);
|
|
146
|
+
}
|
|
148
147
|
</script>
|
|
149
148
|
|
|
150
149
|
<template>
|
|
@@ -163,12 +162,13 @@ const parts = computed(() => {
|
|
|
163
162
|
:data-drop="dropPosition"
|
|
164
163
|
:aria-level="depth + 1"
|
|
165
164
|
:aria-expanded="hasChildren ? expanded : void 0"
|
|
165
|
+
:aria-busy="loading || void 0"
|
|
166
166
|
:aria-selected="multiple ? void 0 : checked"
|
|
167
167
|
:aria-checked="multiple ? indeterminate ? 'mixed' : checked : void 0"
|
|
168
168
|
:aria-setsize="setSize"
|
|
169
169
|
:aria-posinset="index + 1"
|
|
170
170
|
:aria-disabled="disabled || void 0"
|
|
171
|
-
:style="{ paddingInlineStart:
|
|
171
|
+
:style="{ paddingInlineStart: indentSize + 'px', '--node-indent': indentSize + 'px' }"
|
|
172
172
|
class="pxd-tree--node group/row min-h-8 py-1 pe-2 gap-1.5 text-sm relative flex w-full max-w-full cursor-pointer items-center rounded-md text-foreground outline-none select-none pointer-fine:hover:bg-gray-100"
|
|
173
173
|
:class="[
|
|
174
174
|
itemClass,
|
|
@@ -177,35 +177,33 @@ const parts = computed(() => {
|
|
|
177
177
|
'z-1 ring-primary data-[active=true]:ring-1': active,
|
|
178
178
|
'data-[disabled=true]:cursor-not-allowed data-[disabled=true]:text-gray-500': disabled,
|
|
179
179
|
'opacity-40': dragging,
|
|
180
|
-
'
|
|
180
|
+
'bg-gray-300 ring-1 ring-primary': dropPosition === 'inside',
|
|
181
|
+
'before:end-0 before:absolute before:start-(--node-indent) before:border-t-2 before:bg-primary': dropPosition === 'before' || dropPosition === 'after',
|
|
181
182
|
'before:-top-px': dropPosition === 'before',
|
|
182
|
-
'before:bottom-
|
|
183
|
+
'before:bottom-0': dropPosition === 'after'
|
|
183
184
|
}
|
|
184
185
|
]"
|
|
185
186
|
v-bind="$attrs"
|
|
186
|
-
@click="emits('row-click', value)"
|
|
187
|
+
@click="emits('row-click', value, $event)"
|
|
187
188
|
@pointerdown="onPointerdown"
|
|
188
189
|
@dragstart.prevent
|
|
189
190
|
>
|
|
190
|
-
<span
|
|
191
|
-
v-if="dragHandle"
|
|
192
|
-
data-tree-drag-handle
|
|
193
|
-
class="pxd-tree--drag-handle size-4 me-0.5 inline-flex shrink-0 cursor-grab items-center justify-center opacity-0 group-hover/row:opacity-60 group-data-[dragging=true]/row:opacity-60 motion-safe:transition-opacity"
|
|
194
|
-
@pointerdown.stop="emits('drag-pointerdown', value, $event)"
|
|
195
|
-
>
|
|
196
|
-
<slot name="node-drag-handle" :node="node" :depth="depth">
|
|
197
|
-
<MoreVerticalIcon class="size-3" />
|
|
198
|
-
</slot>
|
|
199
|
-
</span>
|
|
200
|
-
|
|
201
191
|
<span
|
|
202
192
|
v-if="hasChildren"
|
|
203
193
|
data-tree-switcher
|
|
204
194
|
class="pxd-tree--switcher size-4 relative inline-flex shrink-0 items-center justify-center rounded-sm motion-safe:after:transition-colors"
|
|
205
195
|
@click.stop="emits('toggle', value)"
|
|
206
196
|
>
|
|
207
|
-
<slot
|
|
197
|
+
<slot
|
|
198
|
+
name="node-switcher"
|
|
199
|
+
:node="node"
|
|
200
|
+
:depth="depth"
|
|
201
|
+
:loading="loading"
|
|
202
|
+
:expanded="expanded"
|
|
203
|
+
>
|
|
204
|
+
<LoaderCircleIcon v-if="loading" class="size-3 motion-safe:animate-spin" />
|
|
208
205
|
<ChevronRightIcon
|
|
206
|
+
v-else
|
|
209
207
|
class="size-3 motion-safe:transition-transform"
|
|
210
208
|
:class="{ 'rotate-90': expanded }"
|
|
211
209
|
/>
|
|
@@ -216,9 +214,10 @@ const parts = computed(() => {
|
|
|
216
214
|
<span
|
|
217
215
|
v-if="multiple"
|
|
218
216
|
aria-hidden="true"
|
|
217
|
+
:data-selectable="selectable"
|
|
219
218
|
class="pxd-tree--checkbox size-4 p-0.5 inline-flex shrink-0 items-center justify-center overflow-hidden rounded-sm border text-primary-foreground"
|
|
220
219
|
:class="checkboxClass"
|
|
221
|
-
@click.stop="emits('check', value)"
|
|
220
|
+
@click.stop="emits('check', value, $event)"
|
|
222
221
|
>
|
|
223
222
|
<CheckIcon v-if="checked" class="size-3" />
|
|
224
223
|
<MinusIcon v-else-if="indeterminate" class="size-3" />
|
|
@@ -226,18 +225,27 @@ const parts = computed(() => {
|
|
|
226
225
|
</span>
|
|
227
226
|
|
|
228
227
|
<span
|
|
229
|
-
v-if="
|
|
228
|
+
v-if="$slots['node-icon']"
|
|
230
229
|
aria-hidden="true"
|
|
231
230
|
class="pxd-tree--icon size-4 inline-flex shrink-0 items-center justify-center"
|
|
232
231
|
>
|
|
233
|
-
<slot
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
232
|
+
<slot
|
|
233
|
+
name="node-icon"
|
|
234
|
+
:node="node"
|
|
235
|
+
:depth="depth"
|
|
236
|
+
:expanded="expanded"
|
|
237
|
+
:has-children="hasChildren"
|
|
238
|
+
/>
|
|
237
239
|
</span>
|
|
238
240
|
|
|
239
241
|
<span class="pxd-tree--content min-w-0 flex-1 truncate">
|
|
240
|
-
<slot
|
|
242
|
+
<slot
|
|
243
|
+
name="node-content"
|
|
244
|
+
:node="node"
|
|
245
|
+
:depth="depth"
|
|
246
|
+
:parts="parts"
|
|
247
|
+
:has-children="hasChildren"
|
|
248
|
+
>
|
|
241
249
|
<template v-if="parts">
|
|
242
250
|
<mark
|
|
243
251
|
v-for="(part, partIndex) in parts"
|
|
@@ -251,7 +259,7 @@ const parts = computed(() => {
|
|
|
251
259
|
</slot>
|
|
252
260
|
</span>
|
|
253
261
|
|
|
254
|
-
<slot name="node-suffix" :node="node" />
|
|
262
|
+
<slot name="node-suffix" :node="node" :has-children="hasChildren" />
|
|
255
263
|
</div>
|
|
256
264
|
</template>
|
|
257
265
|
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import type { ActiveGraphProps, ActiveGraphTooltipInfo } from './types';
|
|
2
|
-
declare var
|
|
2
|
+
declare var __VLS_11: {
|
|
3
3
|
data: ActiveGraphTooltipInfo;
|
|
4
4
|
};
|
|
5
5
|
type __VLS_Slots = {} & {
|
|
6
|
-
tooltip?: (props: typeof
|
|
6
|
+
tooltip?: (props: typeof __VLS_11) => any;
|
|
7
7
|
};
|
|
8
8
|
declare const __VLS_base: import("vue").DefineComponent<ActiveGraphProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
9
9
|
change: (args_0: string, args_1: MouseEvent) => any;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ComponentVariant } from '../../types/shared';
|
|
1
|
+
import type { ComponentVariant } from '../../types/shared/props';
|
|
2
2
|
import type { ApprovalCardProps, ApprovalCause, ApprovalResult, ApprovalStatus } from './types';
|
|
3
3
|
declare function approve(reason?: string): void;
|
|
4
4
|
declare function reject(reason?: string): void;
|
|
@@ -5,6 +5,7 @@ import CrossCircleFillIcon from "@gdsicon/vue/cross-circle-fill";
|
|
|
5
5
|
import TerminalIcon from "@gdsicon/vue/terminal";
|
|
6
6
|
import { computed, onBeforeUnmount, shallowRef, watch } from "vue";
|
|
7
7
|
import { useConfigProvider } from "../../contexts/config-provider.js";
|
|
8
|
+
import { isCompositionKeydown } from "../../utils/event.js";
|
|
8
9
|
import { isTruthyProp, toArray } from "../../utils/format.js";
|
|
9
10
|
import PBadge from "../badge/index.vue";
|
|
10
11
|
import PButton from "../button/index.vue";
|
|
@@ -64,16 +65,7 @@ const emits = defineEmits([
|
|
|
64
65
|
"approve",
|
|
65
66
|
"reject"
|
|
66
67
|
]);
|
|
67
|
-
const configProvider = useConfigProvider();
|
|
68
|
-
const internalStatus = shallowRef("pending");
|
|
69
|
-
const remembered = shallowRef(false);
|
|
70
68
|
let timerId;
|
|
71
|
-
const status = computed(() => props.modelValue ?? internalStatus.value);
|
|
72
|
-
const isPending = computed(() => status.value === "pending");
|
|
73
|
-
const isDisabled = computed(() => isTruthyProp(props.disabled) || isTruthyProp(props.loading));
|
|
74
|
-
const computedTitle = computed(() => props.title || configProvider.locale.approval.title);
|
|
75
|
-
const computedStatusLabel = computed(() => configProvider.locale.approval[status.value]);
|
|
76
|
-
const commandList = computed(() => toArray(props.command).filter(Boolean));
|
|
77
69
|
const STATUS_ICON = {
|
|
78
70
|
pending: TerminalIcon,
|
|
79
71
|
approved: CheckCircleFillIcon,
|
|
@@ -98,9 +90,19 @@ const VARIANT_CLASS = {
|
|
|
98
90
|
warning: "border-amber-400 bg-amber-200 text-amber-900",
|
|
99
91
|
success: "border-green-400 bg-green-200 text-green-900"
|
|
100
92
|
};
|
|
93
|
+
const internalStatus = shallowRef("pending");
|
|
94
|
+
const remembered = shallowRef(false);
|
|
95
|
+
const timerKey = shallowRef(0);
|
|
96
|
+
const status = computed(() => props.modelValue ?? internalStatus.value);
|
|
97
|
+
const isPending = computed(() => status.value === "pending");
|
|
98
|
+
const isDisabled = computed(() => isTruthyProp(props.disabled) || isTruthyProp(props.loading));
|
|
99
|
+
const commandList = computed(() => toArray(props.command).filter(Boolean));
|
|
101
100
|
const statusIcon = computed(() => STATUS_ICON[status.value]);
|
|
102
101
|
const statusBadge = computed(() => STATUS_BADGE[status.value]);
|
|
103
102
|
const iconClass = computed(() => isPending.value ? VARIANT_CLASS[props.variant] : STATUS_CLASS[status.value]);
|
|
103
|
+
const configProvider = useConfigProvider();
|
|
104
|
+
const computedTitle = computed(() => props.title || configProvider.locale.approval.title);
|
|
105
|
+
const computedStatusLabel = computed(() => configProvider.locale.approval[status.value]);
|
|
104
106
|
function clearTimer() {
|
|
105
107
|
if (timerId !== undefined) {
|
|
106
108
|
clearTimeout(timerId);
|
|
@@ -113,6 +115,7 @@ function startTimer() {
|
|
|
113
115
|
if (!isPending.value || !timeout) {
|
|
114
116
|
return;
|
|
115
117
|
}
|
|
118
|
+
timerKey.value++;
|
|
116
119
|
timerId = setTimeout(() => {
|
|
117
120
|
dismiss("timeout");
|
|
118
121
|
}, timeout);
|
|
@@ -154,10 +157,11 @@ function reset() {
|
|
|
154
157
|
emits("update:modelValue", "pending");
|
|
155
158
|
startTimer();
|
|
156
159
|
}
|
|
157
|
-
function onEscape() {
|
|
158
|
-
if (!props.closeOnPressEscape) {
|
|
160
|
+
function onEscape(ev) {
|
|
161
|
+
if (!props.closeOnPressEscape || !isPending.value || isCompositionKeydown(ev)) {
|
|
159
162
|
return;
|
|
160
163
|
}
|
|
164
|
+
ev.preventDefault();
|
|
161
165
|
dismiss("escape");
|
|
162
166
|
}
|
|
163
167
|
watch(() => [status.value, props.timeout], startTimer, { immediate: true });
|
|
@@ -174,25 +178,38 @@ defineExpose({
|
|
|
174
178
|
<template>
|
|
175
179
|
<div
|
|
176
180
|
data-approval-card
|
|
177
|
-
class="pxd-approval-card bg-background p-3 gap-2 flex w-full max-w-full flex-col rounded-xl border"
|
|
181
|
+
class="pxd-approval-card bg-background p-3 gap-2 relative flex w-full max-w-full flex-col overflow-hidden rounded-xl border"
|
|
178
182
|
:data-status="status"
|
|
179
183
|
:data-variant="variant"
|
|
180
184
|
v-bind="$attrs"
|
|
181
185
|
@keydown.esc="onEscape"
|
|
182
186
|
>
|
|
187
|
+
<div
|
|
188
|
+
v-if="isPending && timeout"
|
|
189
|
+
:key="timerKey"
|
|
190
|
+
aria-hidden="true"
|
|
191
|
+
class="pxd-approval-card--progress pxd-countdown-progress inset-x-0 top-0 h-0.5 absolute rounded-full bg-current"
|
|
192
|
+
:style="{ animationDuration: `${timeout}ms` }"
|
|
193
|
+
/>
|
|
194
|
+
|
|
183
195
|
<div class="pxd-approval-card--header gap-2 flex items-center">
|
|
184
|
-
<div
|
|
196
|
+
<div
|
|
197
|
+
class="pxd-approval-card--icon size-8 flex shrink-0 items-center justify-center rounded-md border"
|
|
198
|
+
:class="iconClass"
|
|
199
|
+
>
|
|
185
200
|
<Component :is="statusIcon" class="size-4" />
|
|
186
201
|
</div>
|
|
187
202
|
|
|
188
203
|
<div class="min-w-0 flex-1">
|
|
189
|
-
<div
|
|
204
|
+
<div
|
|
205
|
+
class="pxd-approval-card--title font-medium text-sm leading-tight truncate text-foreground"
|
|
206
|
+
>
|
|
190
207
|
{{ computedTitle }}
|
|
191
208
|
</div>
|
|
192
209
|
|
|
193
210
|
<div
|
|
194
211
|
v-if="description"
|
|
195
|
-
class="pxd-approval-card--description text-sm truncate text-foreground-secondary"
|
|
212
|
+
class="pxd-approval-card--description text-sm truncate leading-none text-foreground-secondary"
|
|
196
213
|
>
|
|
197
214
|
{{ description }}
|
|
198
215
|
</div>
|
|
@@ -222,11 +239,11 @@ defineExpose({
|
|
|
222
239
|
</div>
|
|
223
240
|
|
|
224
241
|
<div class="gap-2 ms-auto flex items-center">
|
|
225
|
-
<PButton :disabled="isDisabled" @click="reject()">
|
|
242
|
+
<PButton size="sm" :disabled="isDisabled" @click="reject()">
|
|
226
243
|
{{ configProvider.locale.approval.reject }}
|
|
227
244
|
</PButton>
|
|
228
245
|
|
|
229
|
-
<PButton variant="primary" :loading="loading" @click="approve()">
|
|
246
|
+
<PButton size="sm" variant="primary" :loading="loading" @click="approve()">
|
|
230
247
|
{{ configProvider.locale.approval.approve }}
|
|
231
248
|
</PButton>
|
|
232
249
|
</div>
|
|
@@ -9,12 +9,12 @@ type __VLS_Slots = {} & {
|
|
|
9
9
|
declare const __VLS_base: import("vue").DefineComponent<AvatarProps, {
|
|
10
10
|
getLoadingStatus: typeof getLoadingStatus;
|
|
11
11
|
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
12
|
-
load: (args_0: Event) => any;
|
|
13
12
|
error: (args_0: Event) => any;
|
|
13
|
+
load: (args_0: Event) => any;
|
|
14
14
|
loadstart: (args_0: Event) => any;
|
|
15
15
|
}, string, import("vue").PublicProps, Readonly<AvatarProps> & Readonly<{
|
|
16
|
-
onLoad?: ((args_0: Event) => any) | undefined;
|
|
17
16
|
onError?: ((args_0: Event) => any) | undefined;
|
|
17
|
+
onLoad?: ((args_0: Event) => any) | undefined;
|
|
18
18
|
onLoadstart?: ((args_0: Event) => any) | undefined;
|
|
19
19
|
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
20
20
|
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|