pxd 0.0.39 → 0.0.41
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 +9 -3
- package/dist/components/active-graph/index.vue +10 -5
- package/dist/components/backtop/index.vue +75 -0
- package/dist/components/badge/index.vue +9 -7
- package/dist/components/book/index.vue +3 -3
- package/dist/components/browser/index.vue +2 -2
- package/dist/components/checkbox/index.vue +4 -3
- package/dist/components/checkbox-group/index.vue +1 -1
- package/dist/components/choicebox-group/index.vue +1 -1
- package/dist/components/command-menu/index.vue +124 -0
- package/dist/components/command-menu-group/index.vue +18 -0
- package/dist/components/command-menu-item/index.vue +13 -0
- package/dist/components/countdown/index.vue +2 -1
- package/dist/components/drawer/index.vue +26 -26
- package/dist/components/error/index.vue +2 -2
- package/dist/components/fader/index.vue +31 -17
- package/dist/components/grid/index.vue +2 -2
- package/dist/components/grid-item/index.vue +2 -2
- package/dist/components/hold-button/index.vue +1 -1
- package/dist/components/index.d.ts +7 -0
- package/dist/components/index.js +7 -0
- package/dist/components/input/index.vue +18 -10
- package/dist/components/intersection-observer/index.vue +5 -5
- package/dist/components/kbd/index.vue +21 -8
- package/dist/components/{intersection-observer/content.vue → keep-alive-container/index.vue} +3 -1
- package/dist/components/list/index.vue +100 -92
- package/dist/components/list-item/index.vue +35 -33
- package/dist/components/loading-bar/index.vue +149 -0
- package/dist/components/material/index.vue +8 -8
- package/dist/components/menu/index.vue +26 -16
- package/dist/components/message/index.vue +28 -18
- package/dist/components/modal/index.vue +32 -36
- package/dist/components/note/index.vue +1 -1
- package/dist/components/overlay/index.vue +77 -24
- package/dist/components/pagination/index.vue +2 -2
- package/dist/components/placeholder/index.vue +13 -6
- package/dist/components/popover/index.vue +97 -87
- package/dist/components/progress/index.vue +1 -1
- package/dist/components/radio/index.vue +4 -3
- package/dist/components/radio-group/index.vue +1 -1
- package/dist/components/scrollable/index.vue +161 -94
- package/dist/components/slider/index.vue +7 -7
- package/dist/components/stack/index.vue +4 -4
- package/dist/components/switch/index.vue +1 -1
- package/dist/components/text/index.vue +1 -1
- package/dist/components/theme-switcher/index.vue +6 -2
- package/dist/components/time-picker/index.vue +281 -0
- package/dist/components/tooltip/index.vue +7 -7
- package/dist/composables/index.d.ts +1 -0
- package/dist/composables/index.js +1 -0
- package/dist/composables/use-browser-observer.d.ts +5 -5
- package/dist/composables/use-color-scheme.d.ts +5 -1
- package/dist/composables/use-color-scheme.js +20 -1
- package/dist/composables/use-config-provider-context.d.ts +1 -1
- package/dist/composables/use-countdown.d.ts +6 -0
- package/dist/composables/use-countdown.js +21 -7
- package/dist/composables/use-delay-destroy.d.ts +4 -4
- package/dist/composables/use-delay-destroy.js +15 -11
- package/dist/composables/use-focus-trap.d.ts +2 -2
- package/dist/composables/use-focus-trap.js +6 -6
- package/dist/composables/use-loading-bar.d.ts +25 -0
- package/dist/composables/use-loading-bar.js +27 -0
- package/dist/composables/use-media-query.js +1 -1
- package/dist/composables/use-message.d.ts +4 -1
- package/dist/composables/use-message.js +18 -0
- package/dist/composables/use-pointer-gesture.d.ts +2 -2
- package/dist/composables/use-pointer-gesture.js +3 -3
- package/dist/composables/use-repeat-action.d.ts +2 -2
- package/dist/composables/use-repeat-action.js +5 -5
- package/dist/composables/use-virtual-list.d.ts +1 -1
- package/dist/contexts/avatar.d.ts +1 -1
- package/dist/contexts/carousel.d.ts +1 -1
- package/dist/contexts/checkbox.d.ts +1 -1
- package/dist/contexts/choicebox.d.ts +2 -2
- package/dist/contexts/collapse.d.ts +1 -1
- package/dist/contexts/list.d.ts +5 -6
- package/dist/contexts/list.js +3 -3
- package/dist/contexts/radio.d.ts +1 -1
- package/dist/contexts/resizable.d.ts +1 -1
- package/dist/contexts/switch.d.ts +2 -2
- package/dist/{components/carousel → dist/components/keep-alive-container}/index.vue.d.ts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/locales/en-us.d.ts +15 -7
- package/dist/locales/en-us.js +17 -9
- package/dist/locales/zh-cn.d.ts +15 -7
- package/dist/locales/zh-cn.js +17 -9
- package/dist/{components → src/components}/active-graph/index.vue.d.ts +7 -5
- package/dist/{components → src/components}/avatar-group/index.vue.d.ts +1 -1
- package/dist/src/components/backtop/index.vue.d.ts +20 -0
- package/dist/{components → src/components}/badge/index.vue.d.ts +2 -1
- package/dist/{components → src/components}/book/index.vue.d.ts +1 -1
- package/dist/{components → src/components}/browser/index.vue.d.ts +1 -1
- package/dist/{components → src/components}/button/index.vue.d.ts +1 -1
- package/dist/{components/intersection-observer/content.vue.d.ts → src/components/carousel/index.vue.d.ts} +1 -1
- package/dist/{components → src/components}/carousel-group/index.vue.d.ts +1 -1
- package/dist/{components → src/components}/chip/index.vue.d.ts +1 -1
- package/dist/{components → src/components}/choicebox/index.vue.d.ts +1 -1
- package/dist/{components → src/components}/choicebox-group/index.vue.d.ts +1 -1
- package/dist/{components → src/components}/collapse/index.vue.d.ts +1 -1
- package/dist/{components → src/components}/collapse-group/index.vue.d.ts +1 -1
- package/dist/src/components/command-menu/index.vue.d.ts +39 -0
- package/dist/src/components/command-menu-group/index.vue.d.ts +16 -0
- package/dist/src/components/command-menu-item/index.vue.d.ts +12 -0
- package/dist/{components → src/components}/config-provider/index.vue.d.ts +1 -1
- package/dist/{components → src/components}/description/index.vue.d.ts +1 -1
- package/dist/{components → src/components}/drawer/index.vue.d.ts +19 -14
- package/dist/{components → src/components}/empty-state/index.vue.d.ts +1 -1
- package/dist/{components → src/components}/error/index.vue.d.ts +1 -1
- package/dist/src/components/fader/index.vue.d.ts +11 -0
- package/dist/{components → src/components}/gauge/index.vue.d.ts +1 -1
- package/dist/{components → src/components}/grid/index.vue.d.ts +1 -1
- package/dist/{components → src/components}/grid-item/index.vue.d.ts +1 -1
- package/dist/{components → src/components}/hold-button/index.vue.d.ts +1 -1
- package/dist/{components → src/components}/input/index.vue.d.ts +9 -4
- package/dist/{components → src/components}/intersection-observer/index.vue.d.ts +3 -3
- package/dist/{components → src/components}/kbd/index.vue.d.ts +8 -5
- package/dist/src/components/keep-alive-container/index.vue.d.ts +12 -0
- package/dist/{components → src/components}/link-button/index.vue.d.ts +1 -1
- package/dist/src/components/list/index.vue.d.ts +40 -0
- package/dist/{components → src/components}/list-item/index.vue.d.ts +4 -4
- package/dist/src/components/loading-bar/index.vue.d.ts +14 -0
- package/dist/{components → src/components}/loading-dots/index.vue.d.ts +1 -1
- package/dist/{components → src/components}/material/index.vue.d.ts +1 -1
- package/dist/{components → src/components}/menu/index.vue.d.ts +11 -7
- package/dist/{components → src/components}/message/index.vue.d.ts +13 -13
- package/dist/{components → src/components}/modal/index.vue.d.ts +19 -14
- package/dist/{components → src/components}/more-button/index.vue.d.ts +1 -1
- package/dist/{components → src/components}/note/index.vue.d.ts +1 -1
- package/dist/{components → src/components}/number-input/index.vue.d.ts +1 -1
- package/dist/{components → src/components}/overlay/index.vue.d.ts +3 -4
- package/dist/{components → src/components}/pagination/index.vue.d.ts +1 -1
- package/dist/{components → src/components}/pin-input/index.vue.d.ts +1 -1
- package/dist/src/components/placeholder/index.vue.d.ts +9 -0
- package/dist/{components → src/components}/popover/index.vue.d.ts +10 -8
- package/dist/{components → src/components}/progress/index.vue.d.ts +1 -1
- package/dist/{components → src/components}/radio/index.vue.d.ts +1 -1
- package/dist/{components → src/components}/radio-group/index.vue.d.ts +1 -1
- package/dist/{components → src/components}/resizable/index.vue.d.ts +1 -1
- package/dist/src/components/resizable-handle/index.vue.d.ts +2 -0
- package/dist/{components → src/components}/resizable-panel/index.vue.d.ts +1 -1
- package/dist/{components → src/components}/skeleton/index.vue.d.ts +1 -1
- package/dist/{components → src/components}/slider/index.vue.d.ts +1 -1
- package/dist/{components → src/components}/snippet/index.vue.d.ts +1 -1
- package/dist/src/components/spinner/index.vue.d.ts +2 -0
- package/dist/{components → src/components}/stack/index.vue.d.ts +1 -1
- package/dist/{components → src/components}/status-dot/index.vue.d.ts +1 -1
- package/dist/{components → src/components}/switch/index.vue.d.ts +1 -1
- package/dist/{components → src/components}/switch-group/index.vue.d.ts +1 -1
- package/dist/{components → src/components}/teleport/index.vue.d.ts +1 -1
- package/dist/{components → src/components}/text/index.vue.d.ts +1 -1
- package/dist/{components → src/components}/textarea/index.vue.d.ts +1 -1
- package/dist/{components → src/components}/theme-switcher/index.vue.d.ts +1 -1
- package/dist/src/components/time-picker/index.vue.d.ts +25 -0
- package/dist/{components → src/components}/toggle/index.vue.d.ts +1 -1
- package/dist/{components → src/components}/tooltip/index.vue.d.ts +3 -5
- package/dist/{components → src/components}/virtual-list/index.vue.d.ts +1 -1
- package/dist/src/composables/use-browser-observer.d.ts +12 -0
- package/dist/src/composables/use-color-scheme.d.ts +11 -0
- package/dist/src/composables/use-config-provider-context.d.ts +7 -0
- package/dist/src/composables/use-copy-click.d.ts +4 -0
- package/dist/src/composables/use-countdown.d.ts +60 -0
- package/dist/src/composables/use-delay-change.d.ts +7 -0
- package/dist/src/composables/use-delay-destroy.d.ts +13 -0
- package/dist/src/composables/use-focus-trap.d.ts +4 -0
- package/dist/src/composables/use-loading-bar.d.ts +25 -0
- package/dist/src/composables/use-media-query.d.ts +15 -0
- package/dist/src/composables/use-message.d.ts +33 -0
- package/dist/src/composables/use-model-value.d.ts +11 -0
- package/dist/src/composables/use-pointer-gesture.d.ts +180 -0
- package/dist/src/composables/use-repeat-action.d.ts +16 -0
- package/dist/src/composables/use-unique-id-context.d.ts +2 -0
- package/dist/src/composables/use-virtual-list.d.ts +16 -0
- package/dist/src/contexts/avatar.d.ts +2 -0
- package/dist/src/contexts/carousel.d.ts +13 -0
- package/dist/src/contexts/checkbox.d.ts +2 -0
- package/dist/src/contexts/choicebox.d.ts +4 -0
- package/dist/src/contexts/collapse.d.ts +8 -0
- package/dist/src/contexts/list.d.ts +8 -0
- package/dist/src/contexts/radio.d.ts +2 -0
- package/dist/src/contexts/resizable.d.ts +35 -0
- package/dist/src/contexts/switch.d.ts +4 -0
- package/dist/src/locales/en-us.d.ts +42 -0
- package/dist/src/plugins/dayjs-millisecond-token.d.ts +3 -0
- package/dist/src/types/components/time-picker.d.ts +4 -0
- package/dist/src/utils/context.d.ts +17 -0
- package/dist/src/utils/date.d.ts +26 -0
- package/dist/src/utils/debounce/index.d.ts +73 -0
- package/dist/src/utils/debounce.d.ts +1 -0
- package/dist/src/utils/dom.d.ts +40 -0
- package/dist/{utils/events.d.ts → src/utils/event.d.ts} +1 -0
- package/dist/src/utils/format.d.ts +25 -0
- package/dist/src/utils/get.d.ts +11 -0
- package/dist/src/utils/is.d.ts +4 -0
- package/dist/src/utils/ref.d.ts +5 -0
- package/dist/src/utils/regexp.d.ts +8 -0
- package/dist/src/utils/responsive.d.ts +3 -0
- package/dist/src/utils/throttle/index.d.ts +53 -0
- package/dist/src/utils/throttle.d.ts +1 -0
- package/dist/src/utils/uid.d.ts +1 -0
- package/dist/styles/styles.css +2 -2
- package/dist/styles/tw.css +18 -1
- package/dist/types/components/list.d.ts +4 -3
- package/dist/types/components/time-picker.d.ts +4 -0
- package/dist/types/components/time-picker.js +0 -0
- package/dist/types/shared/utils.d.ts +5 -2
- package/dist/utils/date.d.ts +3 -3
- package/dist/utils/debounce/compat.d.ts +143 -0
- package/dist/utils/debounce/compat.js +47 -0
- package/dist/utils/debounce/index.d.ts +73 -0
- package/dist/utils/debounce/index.js +60 -0
- package/dist/utils/debounce.d.ts +1 -73
- package/dist/utils/debounce.js +1 -60
- package/dist/utils/event.d.ts +9 -0
- package/dist/utils/{events.js → event.js} +3 -0
- package/dist/utils/format.d.ts +4 -1
- package/dist/utils/format.js +6 -0
- package/dist/utils/ref.d.ts +2 -5
- package/dist/utils/regexp.d.ts +4 -0
- package/dist/utils/regexp.js +4 -0
- package/dist/utils/responsive.d.ts +2 -1
- package/dist/utils/responsive.js +4 -1
- package/dist/utils/throttle/compat.d.ts +79 -0
- package/dist/utils/throttle/compat.js +9 -0
- package/dist/utils/throttle/index.d.ts +53 -0
- package/dist/utils/throttle/index.js +34 -0
- package/dist/utils/throttle.d.ts +1 -53
- package/dist/utils/throttle.js +1 -34
- package/dist/utils/uid.js +1 -1
- package/package.json +11 -11
- package/volar.d.ts +7 -0
- package/dist/components/fader/index.vue.d.ts +0 -11
- package/dist/components/list/index.vue.d.ts +0 -29
- package/dist/components/placeholder/index.vue.d.ts +0 -8
- package/dist/components/resizable-handle/index.vue.d.ts +0 -2
- package/dist/components/spinner/index.vue.d.ts +0 -2
- /package/dist/{components → src/components}/avatar/index.vue.d.ts +0 -0
- /package/dist/{components → src/components}/checkbox/index.vue.d.ts +0 -0
- /package/dist/{components → src/components}/checkbox-group/index.vue.d.ts +0 -0
- /package/dist/{components → src/components}/countdown/index.vue.d.ts +0 -0
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
getScrollElByContainer,
|
|
8
8
|
getScrollPositions
|
|
9
9
|
} from "../../utils/dom";
|
|
10
|
-
import {
|
|
10
|
+
import { optimizedOff, optimizedOn } from "../../utils/event";
|
|
11
11
|
import { toArray } from "../../utils/format";
|
|
12
12
|
import { isServer } from "../../utils/is";
|
|
13
13
|
import { throttleByRaf } from "../../utils/throttle";
|
|
@@ -18,7 +18,6 @@ defineOptions({
|
|
|
18
18
|
const props = defineProps({
|
|
19
19
|
zIndex: { type: Number, required: false, default: 5 },
|
|
20
20
|
offset: { type: Number, required: false, default: 10 },
|
|
21
|
-
content: { type: String, required: false },
|
|
22
21
|
visible: { type: Boolean, required: false },
|
|
23
22
|
trigger: { type: [String, Array], required: false, default: () => ["hover"] },
|
|
24
23
|
disabled: { type: Boolean, required: false },
|
|
@@ -33,18 +32,19 @@ const props = defineProps({
|
|
|
33
32
|
autoPosition: { type: Boolean, required: false, default: true },
|
|
34
33
|
scrollHidden: { type: Boolean, required: false, default: false },
|
|
35
34
|
triggerClass: { type: [String, Array, Object], required: false },
|
|
36
|
-
|
|
35
|
+
wrapperClass: { type: [String, Array, Object], required: false },
|
|
36
|
+
contentClass: { type: [String, Array, Object], required: false },
|
|
37
37
|
triggerStyle: { type: [Object, String], required: false },
|
|
38
|
-
|
|
38
|
+
contentStyle: { type: [Object, String], required: false },
|
|
39
39
|
transitionName: { type: String, required: false },
|
|
40
|
-
showTransition: { type: Boolean, required: false, default: true },
|
|
41
|
-
hideTransition: { type: Boolean, required: false, default: true },
|
|
42
40
|
minVisibleRatio: { type: Number, required: false, default: 0.88 },
|
|
43
41
|
closeOnPressEscape: { type: Boolean, required: false, default: false },
|
|
44
42
|
autoPositionThreshold: { type: Number, required: false, default: 30 },
|
|
45
|
-
scrollHiddenThreshold: { type: Number, required: false, default: 150 }
|
|
43
|
+
scrollHiddenThreshold: { type: Number, required: false, default: 150 },
|
|
44
|
+
disabledShowTransition: { type: Boolean, required: false },
|
|
45
|
+
disabledHideTransition: { type: Boolean, required: false }
|
|
46
46
|
});
|
|
47
|
-
const emits = defineEmits(["show", "hide", "trigger-click", "trigger-keydown"]);
|
|
47
|
+
const emits = defineEmits(["show", "hide", "visible-change", "outside-click", "trigger-click", "trigger-keydown"]);
|
|
48
48
|
const triggerRect = shallowRef();
|
|
49
49
|
let viewportRect = null;
|
|
50
50
|
let scrollContainer;
|
|
@@ -68,7 +68,7 @@ const {
|
|
|
68
68
|
});
|
|
69
69
|
const triggerMethods = computed(() => toArray(props.trigger));
|
|
70
70
|
const computedTransitionName = computed(
|
|
71
|
-
() => props.transitionName ??
|
|
71
|
+
() => props.transitionName ?? "pxd-transition--fade"
|
|
72
72
|
);
|
|
73
73
|
let savedScrollTop = 0;
|
|
74
74
|
const onContainerScroll = throttleByRaf(async (ev) => {
|
|
@@ -148,38 +148,58 @@ async function handleDirectionInvertIfNeed() {
|
|
|
148
148
|
}
|
|
149
149
|
}
|
|
150
150
|
async function handlePopoverShow(immediate = false) {
|
|
151
|
+
if (showPopoverTimer) {
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
getTriggerRect();
|
|
151
155
|
await new Promise((resolve) => {
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
156
|
+
if (hidePopoverTimer) {
|
|
157
|
+
clearTimeout(hidePopoverTimer);
|
|
158
|
+
hidePopoverTimer = null;
|
|
159
|
+
}
|
|
155
160
|
showPopoverTimer = setTimeout(() => {
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
openPopover();
|
|
159
|
-
resolve(true);
|
|
160
|
-
emits("show");
|
|
161
|
+
showPopoverTimer = null;
|
|
162
|
+
resolve();
|
|
161
163
|
}, immediate ? 0 : props.showDelay);
|
|
162
164
|
});
|
|
165
|
+
localPosition.value = props.position;
|
|
166
|
+
updateContentPosition();
|
|
167
|
+
await openPopover();
|
|
168
|
+
emits("show");
|
|
169
|
+
emits("visible-change", true);
|
|
163
170
|
savedScrollTop = getScrollElByContainer(scrollContainer).scrollTop;
|
|
164
|
-
|
|
171
|
+
optimizedOff(document, "click", onClickOutsideToHide);
|
|
172
|
+
optimizedOff(scrollContainer, "scroll", onContainerScroll, { passive: true });
|
|
173
|
+
optimizedOn(document, "click", onClickOutsideToHide);
|
|
174
|
+
optimizedOn(scrollContainer, "scroll", onContainerScroll, { passive: true });
|
|
165
175
|
if (!props.autoPosition) {
|
|
166
176
|
return;
|
|
167
177
|
}
|
|
168
178
|
handleDirectionInvertIfNeed();
|
|
169
179
|
}
|
|
170
180
|
async function handlePopoverHide(immediate = false) {
|
|
181
|
+
if (hidePopoverTimer) {
|
|
182
|
+
return;
|
|
183
|
+
}
|
|
184
|
+
if (!isRender.value) {
|
|
185
|
+
return;
|
|
186
|
+
}
|
|
171
187
|
await new Promise((resolve) => {
|
|
172
|
-
|
|
173
|
-
|
|
188
|
+
if (showPopoverTimer) {
|
|
189
|
+
clearTimeout(showPopoverTimer);
|
|
190
|
+
showPopoverTimer = null;
|
|
191
|
+
}
|
|
174
192
|
hidePopoverTimer = setTimeout(() => {
|
|
175
|
-
|
|
176
|
-
resolve(
|
|
177
|
-
emits("hide");
|
|
193
|
+
hidePopoverTimer = null;
|
|
194
|
+
resolve();
|
|
178
195
|
}, immediate ? 0 : props.hideDelay);
|
|
179
196
|
});
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
197
|
+
optimizedOff(document, "click", onClickOutsideToHide);
|
|
198
|
+
optimizedOff(document, "contextmenu", onTriggerContextmenu);
|
|
199
|
+
optimizedOff(scrollContainer, "scroll", onContainerScroll);
|
|
200
|
+
await closePopover();
|
|
201
|
+
emits("hide");
|
|
202
|
+
emits("visible-change", false);
|
|
183
203
|
}
|
|
184
204
|
async function onTriggerClick(ev) {
|
|
185
205
|
if (props.disabled) {
|
|
@@ -190,12 +210,11 @@ async function onTriggerClick(ev) {
|
|
|
190
210
|
return;
|
|
191
211
|
}
|
|
192
212
|
if (isVisible.value) {
|
|
193
|
-
|
|
213
|
+
optimizedOff(document, "click", onClickOutsideToHide);
|
|
194
214
|
await handlePopoverHide();
|
|
195
215
|
return;
|
|
196
216
|
}
|
|
197
|
-
|
|
198
|
-
await handlePopoverShow();
|
|
217
|
+
handlePopoverShow();
|
|
199
218
|
}
|
|
200
219
|
function onTriggerPointerEnter() {
|
|
201
220
|
if (props.disabled) {
|
|
@@ -228,17 +247,23 @@ async function onTriggerContextmenu(ev) {
|
|
|
228
247
|
ev.preventDefault();
|
|
229
248
|
if (isVisible.value) {
|
|
230
249
|
await handlePopoverHide();
|
|
231
|
-
|
|
232
|
-
|
|
250
|
+
optimizedOff(document, "click", onClickOutsideToHide);
|
|
251
|
+
optimizedOff(document, "contextmenu", onTriggerContextmenu);
|
|
233
252
|
return;
|
|
234
253
|
}
|
|
235
254
|
await handlePopoverShow();
|
|
236
|
-
|
|
237
|
-
|
|
255
|
+
optimizedOff(document, "click", onClickOutsideToHide);
|
|
256
|
+
optimizedOff(document, "contextmenu", onTriggerContextmenu);
|
|
257
|
+
optimizedOn(document, "click", onClickOutsideToHide);
|
|
258
|
+
optimizedOn(document, "contextmenu", onTriggerContextmenu);
|
|
238
259
|
}
|
|
239
260
|
function onClickOutsideToHide(ev) {
|
|
261
|
+
if (!triggerMethods.value.includes("click") && !triggerMethods.value.includes("manual") && !triggerMethods.value.includes("contextmenu")) {
|
|
262
|
+
return;
|
|
263
|
+
}
|
|
240
264
|
const target = ev.target;
|
|
241
265
|
if (!triggerRef.value?.contains(target) && !wrapperRef.value?.contains(target)) {
|
|
266
|
+
emits("outside-click", ev);
|
|
242
267
|
handlePopoverHide();
|
|
243
268
|
}
|
|
244
269
|
}
|
|
@@ -246,7 +271,7 @@ function onContentPointerEnter() {
|
|
|
246
271
|
if (props.disabled) {
|
|
247
272
|
return;
|
|
248
273
|
}
|
|
249
|
-
if (!props.enterable) {
|
|
274
|
+
if (!props.enterable || !isVisible.value) {
|
|
250
275
|
return;
|
|
251
276
|
}
|
|
252
277
|
handlePopoverShow();
|
|
@@ -255,7 +280,7 @@ function onContentPointerLeave() {
|
|
|
255
280
|
if (props.disabled) {
|
|
256
281
|
return;
|
|
257
282
|
}
|
|
258
|
-
if (!triggerMethods.value.includes("hover")) {
|
|
283
|
+
if (props.enterable && !triggerMethods.value.includes("hover")) {
|
|
259
284
|
return;
|
|
260
285
|
}
|
|
261
286
|
handlePopoverHide();
|
|
@@ -333,10 +358,10 @@ function updateContentPosition() {
|
|
|
333
358
|
top,
|
|
334
359
|
zIndex,
|
|
335
360
|
"transform": `translate3d(${translateX}, ${translateY}, 0)`,
|
|
336
|
-
"--
|
|
337
|
-
"--
|
|
338
|
-
"--
|
|
339
|
-
"--
|
|
361
|
+
"--popover-bg": arrowColor,
|
|
362
|
+
"--popover-offset": `${offset}px`,
|
|
363
|
+
"--popover-max-width": `${maxWidth}px`,
|
|
364
|
+
"--popover-arrow-offset": `${offset - 5}px`
|
|
340
365
|
};
|
|
341
366
|
}
|
|
342
367
|
function applyAutoPosition(overlapping) {
|
|
@@ -430,8 +455,8 @@ watch(
|
|
|
430
455
|
watch(
|
|
431
456
|
() => [triggerRef.value, triggerMethods.value],
|
|
432
457
|
([newDom, newMethods], [oldDom, oldMethods]) => {
|
|
433
|
-
updateTriggerEvents(oldMethods, oldDom,
|
|
434
|
-
updateTriggerEvents(newMethods, newDom,
|
|
458
|
+
updateTriggerEvents(oldMethods, oldDom, optimizedOff);
|
|
459
|
+
updateTriggerEvents(newMethods, newDom, optimizedOn);
|
|
435
460
|
}
|
|
436
461
|
);
|
|
437
462
|
onMounted(() => {
|
|
@@ -443,12 +468,10 @@ onMounted(() => {
|
|
|
443
468
|
});
|
|
444
469
|
onBeforeUnmount(() => {
|
|
445
470
|
viewportRect = null;
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
off(document, "click", onClickOutsideToHide);
|
|
449
|
-
off(document, "contextmenu", onTriggerContextmenu);
|
|
450
|
-
off(scrollContainer, "scroll", onContainerScroll);
|
|
471
|
+
optimizedOff(document, "click", onClickOutsideToHide);
|
|
472
|
+
optimizedOff(document, "contextmenu", onTriggerContextmenu);
|
|
451
473
|
optimizedOff(window, "resize", onResizeUpdatePosition);
|
|
474
|
+
optimizedOff(scrollContainer, "scroll", onContainerScroll);
|
|
452
475
|
});
|
|
453
476
|
defineExpose({
|
|
454
477
|
show: handlePopoverShow,
|
|
@@ -457,37 +480,41 @@ defineExpose({
|
|
|
457
480
|
</script>
|
|
458
481
|
|
|
459
482
|
<template>
|
|
460
|
-
<div class="pxd-popover relative inline-flex w-
|
|
483
|
+
<div class="pxd-popover relative inline-flex max-w-full">
|
|
461
484
|
<div
|
|
462
485
|
ref="triggerRef"
|
|
463
|
-
class="pxd-popover--trigger active:select-none"
|
|
486
|
+
class="pxd-popover--trigger max-w-full active:select-none"
|
|
464
487
|
:class="triggerClass"
|
|
465
488
|
:style="triggerStyle"
|
|
466
489
|
@contextmenu.prevent
|
|
467
|
-
@click="onTriggerClick"
|
|
468
490
|
@keydown="onTriggerKeydown"
|
|
491
|
+
@click="onTriggerClick"
|
|
469
492
|
>
|
|
470
493
|
<slot />
|
|
471
494
|
</div>
|
|
472
495
|
|
|
473
496
|
<PTeleport>
|
|
474
|
-
<Transition
|
|
497
|
+
<Transition
|
|
498
|
+
appear
|
|
499
|
+
mode="out-in"
|
|
500
|
+
:name="computedTransitionName"
|
|
501
|
+
:class="{ disabledShowTransition, disabledHideTransition }"
|
|
502
|
+
>
|
|
475
503
|
<div
|
|
476
504
|
v-if="isRender"
|
|
477
505
|
v-show="isVisible"
|
|
478
506
|
ref="wrapperRef"
|
|
507
|
+
:class="wrapperClass"
|
|
479
508
|
:style="wrapperStyle"
|
|
480
509
|
:data-enterable="enterable"
|
|
481
510
|
:data-position="localPosition"
|
|
482
|
-
class="pxd-popover--container sm:max-w-(--
|
|
511
|
+
class="pxd-popover--container sm:max-w-(--popover-max-width) absolute isolate max-w-full data-[enterable=false]:pointer-events-none"
|
|
483
512
|
@pointerenter="onContentPointerEnter"
|
|
484
513
|
@pointerleave="onContentPointerLeave"
|
|
485
514
|
>
|
|
486
515
|
<i v-if="showArrow" class="pxd-popover--arrow absolute z-1" />
|
|
487
|
-
<div class="pxd-popover--content" :class="
|
|
488
|
-
<slot name="content"
|
|
489
|
-
{{ content }}
|
|
490
|
-
</slot>
|
|
516
|
+
<div class="pxd-popover--content" :class="contentClass" :style="contentStyle">
|
|
517
|
+
<slot name="content" />
|
|
491
518
|
</div>
|
|
492
519
|
</div>
|
|
493
520
|
</Transition>
|
|
@@ -499,19 +526,19 @@ defineExpose({
|
|
|
499
526
|
.pxd-popover--container {
|
|
500
527
|
|
|
501
528
|
&[data-position^='top'] {
|
|
502
|
-
padding-bottom: var(--
|
|
529
|
+
padding-bottom: var(--popover-offset);
|
|
503
530
|
}
|
|
504
531
|
|
|
505
532
|
&[data-position^='bottom'] {
|
|
506
|
-
padding-top: var(--
|
|
533
|
+
padding-top: var(--popover-offset);
|
|
507
534
|
}
|
|
508
535
|
|
|
509
536
|
&[data-position^='left'] {
|
|
510
|
-
padding-right: var(--
|
|
537
|
+
padding-right: var(--popover-offset);
|
|
511
538
|
}
|
|
512
539
|
|
|
513
540
|
&[data-position^='right'] {
|
|
514
|
-
padding-left: var(--
|
|
541
|
+
padding-left: var(--popover-offset);
|
|
515
542
|
}
|
|
516
543
|
|
|
517
544
|
.pxd-popover--arrow {
|
|
@@ -521,33 +548,33 @@ defineExpose({
|
|
|
521
548
|
&[data-position="top"] .pxd-popover--arrow,
|
|
522
549
|
&[data-position="top-start"] .pxd-popover--arrow,
|
|
523
550
|
&[data-position="top-end"] .pxd-popover--arrow {
|
|
524
|
-
bottom: var(--
|
|
551
|
+
bottom: var(--popover-arrow-offset);
|
|
525
552
|
border-width: 6px 6px 0;
|
|
526
|
-
border-color: var(--
|
|
553
|
+
border-color: var(--popover-bg) transparent transparent;
|
|
527
554
|
}
|
|
528
555
|
|
|
529
556
|
&[data-position='bottom'] .pxd-popover--arrow,
|
|
530
557
|
&[data-position='bottom-start'] .pxd-popover--arrow,
|
|
531
558
|
&[data-position='bottom-end'] .pxd-popover--arrow {
|
|
532
|
-
top: var(--
|
|
559
|
+
top: var(--popover-arrow-offset);
|
|
533
560
|
border-width: 0 6px 6px;
|
|
534
|
-
border-color: transparent transparent var(--
|
|
561
|
+
border-color: transparent transparent var(--popover-bg);
|
|
535
562
|
}
|
|
536
563
|
|
|
537
564
|
&[data-position='left'] .pxd-popover--arrow,
|
|
538
565
|
&[data-position='left-start'] .pxd-popover--arrow,
|
|
539
566
|
&[data-position='left-end'] .pxd-popover--arrow {
|
|
540
|
-
right: var(--
|
|
567
|
+
right: var(--popover-arrow-offset);
|
|
541
568
|
border-width: 6px 0 6px 6px;
|
|
542
|
-
border-color: transparent transparent transparent var(--
|
|
569
|
+
border-color: transparent transparent transparent var(--popover-bg);
|
|
543
570
|
}
|
|
544
571
|
|
|
545
572
|
&[data-position='right'] .pxd-popover--arrow,
|
|
546
573
|
&[data-position='right-start'] .pxd-popover--arrow,
|
|
547
574
|
&[data-position='right-end'] .pxd-popover--arrow {
|
|
548
|
-
left: var(--
|
|
575
|
+
left: var(--popover-arrow-offset);
|
|
549
576
|
border-width: 6px 6px 6px 0;
|
|
550
|
-
border-color: transparent var(--
|
|
577
|
+
border-color: transparent var(--popover-bg) transparent transparent;
|
|
551
578
|
}
|
|
552
579
|
|
|
553
580
|
&[data-position='top'] .pxd-popover--arrow,
|
|
@@ -583,25 +610,8 @@ defineExpose({
|
|
|
583
610
|
}
|
|
584
611
|
}
|
|
585
612
|
|
|
586
|
-
.
|
|
587
|
-
.
|
|
588
|
-
|
|
589
|
-
.hideTransition.pxd-transition--popover-bottom-leave-active,
|
|
590
|
-
.showTransition.pxd-transition--popover-left-enter-active,
|
|
591
|
-
.hideTransition.pxd-transition--popover-left-leave-active,
|
|
592
|
-
.showTransition.pxd-transition--popover-right-enter-active,
|
|
593
|
-
.hideTransition.pxd-transition--popover-right-leave-active {
|
|
594
|
-
transition: opacity var(--default-transition-duration) var(--default-transition-timing-function);
|
|
595
|
-
}
|
|
596
|
-
|
|
597
|
-
.showTransition.pxd-transition--popover-top-enter-from,
|
|
598
|
-
.hideTransition.pxd-transition--popover-top-leave-to,
|
|
599
|
-
.showTransition.pxd-transition--popover-bottom-enter-from,
|
|
600
|
-
.hideTransition.pxd-transition--popover-bottom-leave-to,
|
|
601
|
-
.showTransition.pxd-transition--popover-left-enter-from,
|
|
602
|
-
.hideTransition.pxd-transition--popover-left-leave-to,
|
|
603
|
-
.showTransition.pxd-transition--popover-right-enter-from,
|
|
604
|
-
.hideTransition.pxd-transition--popover-right-leave-to {
|
|
605
|
-
opacity: 0;
|
|
613
|
+
.disabledShowTransition.pxd-transition--fade-enter-active,
|
|
614
|
+
.disabledHideTransition.pxd-transition--fade-leave-active {
|
|
615
|
+
--default-transition-duration: 0 !important
|
|
606
616
|
}
|
|
607
617
|
</style>
|
|
@@ -48,7 +48,7 @@ const computedLabel = computed(() => {
|
|
|
48
48
|
return false;
|
|
49
49
|
});
|
|
50
50
|
const computedClass = computed(() => {
|
|
51
|
-
const classes = ["pxd-progress-bar flex-1 overflow-hidden rounded-full bg-gray-200", getFallbackValue(props.size, SIZES, config.size)];
|
|
51
|
+
const classes = ["pxd-progress-bar flex-1 shrink-0 overflow-hidden rounded-full bg-gray-200", getFallbackValue(props.size, SIZES, config.size)];
|
|
52
52
|
return classes.join(" ");
|
|
53
53
|
});
|
|
54
54
|
const computedColors = computed(() => {
|
|
@@ -51,8 +51,9 @@ function onChangeValue() {
|
|
|
51
51
|
<label
|
|
52
52
|
role="radio"
|
|
53
53
|
:aria-checked="isChecked"
|
|
54
|
-
|
|
55
|
-
|
|
54
|
+
:data-disabled="computedDisabled"
|
|
55
|
+
class="pxd-radio group/radio gap-2 inline-flex max-w-full cursor-pointer touch-manipulation items-center data-[disabled=true]:cursor-not-allowed"
|
|
56
|
+
:class="{ 'is-disabled text-gray-500': computedDisabled }"
|
|
56
57
|
:for="uniqueId"
|
|
57
58
|
>
|
|
58
59
|
<input
|
|
@@ -69,7 +70,7 @@ function onChangeValue() {
|
|
|
69
70
|
|
|
70
71
|
<span aria-hidden="true" :class="computedInnerClasses" />
|
|
71
72
|
|
|
72
|
-
<span class="text-sm flex-1 empty:hidden">
|
|
73
|
+
<span class="text-sm flex-1 shrink-0 empty:hidden">
|
|
73
74
|
<slot>
|
|
74
75
|
{{ label }}
|
|
75
76
|
</slot>
|
|
@@ -25,7 +25,7 @@ provideRadioGroupContext(props);
|
|
|
25
25
|
</script>
|
|
26
26
|
|
|
27
27
|
<template>
|
|
28
|
-
<PStack class="pxd-radio-group
|
|
28
|
+
<PStack class="pxd-radio-group" role="radiogroup" aria-label="Radio Group" v-bind="$attrs">
|
|
29
29
|
<slot>
|
|
30
30
|
<PRadio
|
|
31
31
|
v-for="option in options"
|