@sdata/web-vue 3.5.0 → 3.6.0
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/sd.css +20 -9
- package/dist/sd.min.css +1 -1
- package/es/file-previewer/file-previewer.vue.d.ts +19 -1
- package/es/file-previewer/file-previewer.vue_vue_type_script_setup_true_lang.js +135 -52
- package/es/file-previewer/index.d.ts +86 -1
- package/es/file-previewer/style/index.css +20 -9
- package/es/file-previewer/style/index.scss +25 -7
- package/es/file-previewer/types.d.ts +17 -0
- package/es/index.css +20 -9
- package/es/index.d.ts +1 -1
- package/es/index.js +4 -4
- package/es/sd-vue.js +4 -4
- package/es/trigger/context.d.ts +1 -0
- package/es/trigger/trigger.js +37 -25
- package/json/vetur-attributes.json +9 -0
- package/json/vetur-tags.json +4 -1
- package/json/web-types.json +25 -1
- package/package.json +1 -1
package/es/index.js
CHANGED
|
@@ -66,6 +66,10 @@ import descriptions_item_default from "./descriptions/descriptions-item.js";
|
|
|
66
66
|
import Descriptions from "./descriptions/index.js";
|
|
67
67
|
import Divider from "./divider/index.js";
|
|
68
68
|
import Drawer from "./drawer/index.js";
|
|
69
|
+
import preview_action_default from "./image/preview-action.js";
|
|
70
|
+
import preview_default from "./image/preview.js";
|
|
71
|
+
import preview_group_default from "./image/preview-group.js";
|
|
72
|
+
import Image from "./image/index.js";
|
|
69
73
|
import FilePreviewer from "./file-previewer/index.js";
|
|
70
74
|
import grid_col_default from "./grid/grid-col.js";
|
|
71
75
|
import grid_item_default from "./grid/grid-item.js";
|
|
@@ -74,10 +78,6 @@ import Grid from "./grid/index.js";
|
|
|
74
78
|
import form_item_default from "./form/form-item.js";
|
|
75
79
|
import Form from "./form/index.js";
|
|
76
80
|
import Icon from "./icon-component/index.js";
|
|
77
|
-
import preview_action_default from "./image/preview-action.js";
|
|
78
|
-
import preview_default from "./image/preview.js";
|
|
79
|
-
import preview_group_default from "./image/preview-group.js";
|
|
80
|
-
import Image from "./image/index.js";
|
|
81
81
|
import { A2UI_0_8, defineJsonFormComponents, defineJsonFormSchemas } from "./json-form/types.js";
|
|
82
82
|
import Textarea from "./textarea/index.js";
|
|
83
83
|
import Mention from "./mention/index.js";
|
package/es/sd-vue.js
CHANGED
|
@@ -66,6 +66,10 @@ import descriptions_item_default from "./descriptions/descriptions-item.js";
|
|
|
66
66
|
import Descriptions from "./descriptions/index.js";
|
|
67
67
|
import Divider from "./divider/index.js";
|
|
68
68
|
import Drawer from "./drawer/index.js";
|
|
69
|
+
import preview_action_default from "./image/preview-action.js";
|
|
70
|
+
import preview_default from "./image/preview.js";
|
|
71
|
+
import preview_group_default from "./image/preview-group.js";
|
|
72
|
+
import Image from "./image/index.js";
|
|
69
73
|
import FilePreviewer from "./file-previewer/index.js";
|
|
70
74
|
import grid_col_default from "./grid/grid-col.js";
|
|
71
75
|
import grid_item_default from "./grid/grid-item.js";
|
|
@@ -74,10 +78,6 @@ import Grid from "./grid/index.js";
|
|
|
74
78
|
import form_item_default from "./form/form-item.js";
|
|
75
79
|
import Form from "./form/index.js";
|
|
76
80
|
import Icon from "./icon-component/index.js";
|
|
77
|
-
import preview_action_default from "./image/preview-action.js";
|
|
78
|
-
import preview_default from "./image/preview.js";
|
|
79
|
-
import preview_group_default from "./image/preview-group.js";
|
|
80
|
-
import Image from "./image/index.js";
|
|
81
81
|
import Textarea from "./textarea/index.js";
|
|
82
82
|
import Mention from "./mention/index.js";
|
|
83
83
|
import Rate from "./rate/index.js";
|
package/es/trigger/context.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import type { ComponentPublicInstance, InjectionKey } from 'vue';
|
|
|
2
2
|
export interface TriggerContext {
|
|
3
3
|
onMouseenter: (ev: MouseEvent) => void;
|
|
4
4
|
onMouseleave: (ev: MouseEvent) => void;
|
|
5
|
+
onContextmenu: (ev: MouseEvent) => void;
|
|
5
6
|
addChildRef: (ref: HTMLElement | ComponentPublicInstance) => void;
|
|
6
7
|
removeChildRef: (ref: HTMLElement | ComponentPublicInstance) => void;
|
|
7
8
|
}
|
package/es/trigger/trigger.js
CHANGED
|
@@ -10,11 +10,12 @@ import { useFirstElement } from "../_hooks/use-first-element.js";
|
|
|
10
10
|
import resize_observer_v2_default from "../_components/resize-observer-v2.js";
|
|
11
11
|
import usePickSlots from "../_hooks/use-pick-slots.js";
|
|
12
12
|
import usePopupManager from "../_hooks/use-popup-manager.js";
|
|
13
|
-
import { useResizeObserver } from "../_hooks/use-resize-observer.js";
|
|
13
|
+
import { useResizeObserver as useResizeObserver$1 } from "../_hooks/use-resize-observer.js";
|
|
14
14
|
import { useTeleportContainer } from "../_hooks/use-teleport-container.js";
|
|
15
15
|
import { triggerInjectionKey } from "./context.js";
|
|
16
16
|
import { getArrowStyle, getElementScrollRect, getPopupStyle, getScrollElements, getTransformOrigin } from "./utils.js";
|
|
17
17
|
import { Fragment, Teleport, Transition, computed, createVNode, defineComponent, inject, mergeProps, nextTick, onBeforeUnmount, onDeactivated, onMounted, onUpdated, provide, reactive, ref, vShow, watch, withDirectives } from "vue";
|
|
18
|
+
import { onClickOutside, useEventListener } from "@vueuse/core";
|
|
18
19
|
//#region components/trigger/trigger.tsx
|
|
19
20
|
var TRIGGER_EVENTS = [
|
|
20
21
|
"onClick",
|
|
@@ -375,7 +376,6 @@ var trigger_default = /* @__PURE__ */ defineComponent({
|
|
|
375
376
|
mergedPopupContainer
|
|
376
377
|
], syncThemePopupContainerZIndex, { immediate: true });
|
|
377
378
|
let delayTimer = 0;
|
|
378
|
-
let outsideListener = false;
|
|
379
379
|
let windowListener = false;
|
|
380
380
|
const cleanDelayTimer = () => {
|
|
381
381
|
if (delayTimer) {
|
|
@@ -494,6 +494,20 @@ var trigger_default = /* @__PURE__ */ defineComponent({
|
|
|
494
494
|
changeVisible(!computedVisible.value);
|
|
495
495
|
e.preventDefault();
|
|
496
496
|
};
|
|
497
|
+
const handleChildContextmenu = (e) => {
|
|
498
|
+
var _popupRef$value;
|
|
499
|
+
triggerCtx === null || triggerCtx === void 0 || triggerCtx.onContextmenu(e);
|
|
500
|
+
if (!props.clickOutsideToClose || !computedVisible.value) return;
|
|
501
|
+
if (!triggerMethods.value.includes("contextMenu")) return;
|
|
502
|
+
const target = e.target;
|
|
503
|
+
if ((_popupRef$value = popupRef.value) === null || _popupRef$value === void 0 ? void 0 : _popupRef$value.contains(target)) return;
|
|
504
|
+
if (getChildElements().some((element) => element.contains(target))) return;
|
|
505
|
+
changeVisible(false);
|
|
506
|
+
};
|
|
507
|
+
const handleContextmenuWithContext = (e) => {
|
|
508
|
+
triggerCtx === null || triggerCtx === void 0 || triggerCtx.onContextmenu(e);
|
|
509
|
+
handleContextmenu(e);
|
|
510
|
+
};
|
|
497
511
|
const addChildRef = (ref) => {
|
|
498
512
|
childrenRefs.add(ref);
|
|
499
513
|
triggerCtx === null || triggerCtx === void 0 || triggerCtx.addChildRef(ref);
|
|
@@ -505,29 +519,39 @@ var trigger_default = /* @__PURE__ */ defineComponent({
|
|
|
505
519
|
provide(triggerInjectionKey, reactive({
|
|
506
520
|
onMouseenter: handleMouseEnterWithContext,
|
|
507
521
|
onMouseleave: handleMouseLeaveWithContext,
|
|
522
|
+
onContextmenu: handleChildContextmenu,
|
|
508
523
|
addChildRef,
|
|
509
524
|
removeChildRef
|
|
510
525
|
}));
|
|
511
|
-
const removeOutsideListener = () => {
|
|
512
|
-
off(document.documentElement, "mousedown", handleOutsideClick);
|
|
513
|
-
outsideListener = false;
|
|
514
|
-
};
|
|
515
526
|
const contentSlot = usePickSlots(slots, "content");
|
|
516
527
|
const hidePopup = computed(() => {
|
|
517
528
|
var _contentSlot$value;
|
|
518
529
|
return props.hideEmpty && isEmptyChildren((_contentSlot$value = contentSlot.value) === null || _contentSlot$value === void 0 ? void 0 : _contentSlot$value.call(contentSlot));
|
|
519
530
|
});
|
|
520
|
-
const
|
|
521
|
-
|
|
522
|
-
if (((_firstElement$value = firstElement.value) === null || _firstElement$value === void 0 ? void 0 : _firstElement$value.contains(e.target)) || ((_popupRef$value = popupRef.value) === null || _popupRef$value === void 0 ? void 0 : _popupRef$value.contains(e.target))) return;
|
|
531
|
+
const getChildElements = () => {
|
|
532
|
+
const elements = [];
|
|
523
533
|
for (const item of childrenRefs) {
|
|
524
534
|
if (!item) continue;
|
|
525
535
|
const element = "value" in item ? item.value : item;
|
|
526
|
-
if (element
|
|
536
|
+
if (element) elements.push(element);
|
|
527
537
|
}
|
|
528
|
-
|
|
538
|
+
return elements;
|
|
539
|
+
};
|
|
540
|
+
const getOutsideIgnoreElements = () => [...triggerMethods.value.includes("contextMenu") || !firstElement.value ? [] : [firstElement.value], ...getChildElements()];
|
|
541
|
+
onClickOutside(popupRef, () => {
|
|
542
|
+
if (!props.clickOutsideToClose || !computedVisible.value) return;
|
|
543
|
+
changeVisible(false);
|
|
544
|
+
}, { ignore: getOutsideIgnoreElements });
|
|
545
|
+
const handleOutsideContextmenu = (e) => {
|
|
546
|
+
var _popupRef$value2;
|
|
547
|
+
if (!props.clickOutsideToClose || !computedVisible.value) return;
|
|
548
|
+
if (!triggerMethods.value.includes("contextMenu")) return;
|
|
549
|
+
const target = e.target;
|
|
550
|
+
if ((_popupRef$value2 = popupRef.value) === null || _popupRef$value2 === void 0 ? void 0 : _popupRef$value2.contains(target)) return;
|
|
551
|
+
if (getChildElements().some((element) => element.contains(target))) return;
|
|
529
552
|
changeVisible(false);
|
|
530
553
|
};
|
|
554
|
+
useEventListener(computed(() => typeof document === "undefined" ? void 0 : document), "contextmenu", handleOutsideContextmenu, { capture: true });
|
|
531
555
|
const isExceedThreshold = (oldPosition, element) => {
|
|
532
556
|
const [scrollTop, scrollLeft] = oldPosition;
|
|
533
557
|
const { scrollTop: newScrollTop, scrollLeft: newScrollLeft } = element;
|
|
@@ -573,13 +597,6 @@ var trigger_default = /* @__PURE__ */ defineComponent({
|
|
|
573
597
|
});
|
|
574
598
|
let scrollElements;
|
|
575
599
|
watch(computedVisible, (value) => {
|
|
576
|
-
if (props.clickOutsideToClose) {
|
|
577
|
-
if (!value && outsideListener) removeOutsideListener();
|
|
578
|
-
else if (value && !outsideListener) {
|
|
579
|
-
on(document.documentElement, "mousedown", handleOutsideClick);
|
|
580
|
-
outsideListener = true;
|
|
581
|
-
}
|
|
582
|
-
}
|
|
583
600
|
if (props.scrollToClose || (configCtx === null || configCtx === void 0 ? void 0 : configCtx.scrollToClose)) {
|
|
584
601
|
on(window, "scroll", onWindowScroll);
|
|
585
602
|
windowListener = true;
|
|
@@ -598,7 +615,7 @@ var trigger_default = /* @__PURE__ */ defineComponent({
|
|
|
598
615
|
watch(() => [props.autoFitPopupWidth, props.autoFitPopupMinWidth], () => {
|
|
599
616
|
if (computedVisible.value) updatePopupStyle();
|
|
600
617
|
});
|
|
601
|
-
const { createResizeObserver, destroyResizeObserver } = useResizeObserver({
|
|
618
|
+
const { createResizeObserver, destroyResizeObserver } = useResizeObserver$1({
|
|
602
619
|
elementRef: containerRef,
|
|
603
620
|
onResize: handleResize
|
|
604
621
|
});
|
|
@@ -606,10 +623,6 @@ var trigger_default = /* @__PURE__ */ defineComponent({
|
|
|
606
623
|
createResizeObserver();
|
|
607
624
|
if (computedVisible.value) {
|
|
608
625
|
updatePopupStyle();
|
|
609
|
-
if (props.clickOutsideToClose && !outsideListener) {
|
|
610
|
-
on(document.documentElement, "mousedown", handleOutsideClick);
|
|
611
|
-
outsideListener = true;
|
|
612
|
-
}
|
|
613
626
|
if (props.updateAtScroll || (configCtx === null || configCtx === void 0 ? void 0 : configCtx.updateAtScroll)) {
|
|
614
627
|
scrollElements = getScrollElements(firstElement.value);
|
|
615
628
|
for (const item of scrollElements) item.addEventListener("scroll", handleScroll);
|
|
@@ -625,7 +638,6 @@ var trigger_default = /* @__PURE__ */ defineComponent({
|
|
|
625
638
|
onBeforeUnmount(() => {
|
|
626
639
|
triggerCtx === null || triggerCtx === void 0 || triggerCtx.removeChildRef(popupRef.value);
|
|
627
640
|
destroyResizeObserver();
|
|
628
|
-
if (outsideListener) removeOutsideListener();
|
|
629
641
|
if (windowListener) removeWindowScroll();
|
|
630
642
|
if (scrollElements) {
|
|
631
643
|
for (const item of scrollElements) item.removeEventListener("scroll", handleScroll);
|
|
@@ -658,7 +670,7 @@ var trigger_default = /* @__PURE__ */ defineComponent({
|
|
|
658
670
|
onMouseleave: handleMouseLeave,
|
|
659
671
|
onFocusin: handleFocusin,
|
|
660
672
|
onFocusout: handleFocusout,
|
|
661
|
-
onContextmenu:
|
|
673
|
+
onContextmenu: handleContextmenuWithContext
|
|
662
674
|
});
|
|
663
675
|
return createVNode(Fragment, null, [props.autoFixPosition ? createVNode(resize_observer_v2_default, { "onResize": onTargetResize }, { default: () => [children.value] }) : children.value, createVNode(client_only_default, null, { default: () => [createVNode(Teleport, {
|
|
664
676
|
"to": teleportContainer.value,
|
|
@@ -1218,6 +1218,15 @@
|
|
|
1218
1218
|
"description": "Whether to render to body",
|
|
1219
1219
|
"type": "boolean"
|
|
1220
1220
|
},
|
|
1221
|
+
"sd-file-previewer/image-props": {
|
|
1222
|
+
"description": "Image previewer props"
|
|
1223
|
+
},
|
|
1224
|
+
"sd-file-previewer/media-props": {
|
|
1225
|
+
"description": "Video and audio previewer props"
|
|
1226
|
+
},
|
|
1227
|
+
"sd-file-previewer/pdf-props": {
|
|
1228
|
+
"description": "PDF previewer props"
|
|
1229
|
+
},
|
|
1221
1230
|
"sd-form-item/field": {
|
|
1222
1231
|
"description": "The path of the form element in the data object (required for the data item)",
|
|
1223
1232
|
"type": "string"
|
package/json/vetur-tags.json
CHANGED
package/json/web-types.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$schema": "https://raw.githubusercontent.com/JetBrains/web-types/master/schema/web-types.json",
|
|
3
3
|
"framework": "vue",
|
|
4
4
|
"name": "@sdata/web-vue",
|
|
5
|
-
"version": "3.
|
|
5
|
+
"version": "3.5.0",
|
|
6
6
|
"contributions": {
|
|
7
7
|
"html": {
|
|
8
8
|
"types-syntax": "typescript",
|
|
@@ -3013,6 +3013,30 @@
|
|
|
3013
3013
|
"type": "boolean",
|
|
3014
3014
|
"kind": "expression"
|
|
3015
3015
|
}
|
|
3016
|
+
},
|
|
3017
|
+
{
|
|
3018
|
+
"name": "image-props",
|
|
3019
|
+
"description": "Image previewer props",
|
|
3020
|
+
"value": {
|
|
3021
|
+
"type": "FilePreviewerImageProps",
|
|
3022
|
+
"kind": "expression"
|
|
3023
|
+
}
|
|
3024
|
+
},
|
|
3025
|
+
{
|
|
3026
|
+
"name": "media-props",
|
|
3027
|
+
"description": "Video and audio previewer props",
|
|
3028
|
+
"value": {
|
|
3029
|
+
"type": "FilePreviewerMediaProps",
|
|
3030
|
+
"kind": "expression"
|
|
3031
|
+
}
|
|
3032
|
+
},
|
|
3033
|
+
{
|
|
3034
|
+
"name": "pdf-props",
|
|
3035
|
+
"description": "PDF previewer props",
|
|
3036
|
+
"value": {
|
|
3037
|
+
"type": "FilePreviewerPdfProps",
|
|
3038
|
+
"kind": "expression"
|
|
3039
|
+
}
|
|
3016
3040
|
}
|
|
3017
3041
|
],
|
|
3018
3042
|
"events": [
|