@sdata/web-vue 3.0.2 → 3.2.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.
Files changed (40) hide show
  1. package/dist/sd.css +840 -0
  2. package/dist/sd.min.css +12 -1
  3. package/es/components.d.ts +1 -0
  4. package/es/dropdown/dropdown-panel.vue_vue_type_script_setup_true_lang.js +1 -0
  5. package/es/file-previewer/file-previewer.js +5 -0
  6. package/es/file-previewer/file-previewer.vue.d.ts +126 -0
  7. package/es/file-previewer/file-previewer.vue_vue_type_script_setup_true_lang.js +356 -0
  8. package/es/file-previewer/index.d.ts +220 -0
  9. package/es/file-previewer/index.js +10 -0
  10. package/es/file-previewer/style/css.js +2 -0
  11. package/es/file-previewer/style/index.css +164 -0
  12. package/es/file-previewer/style/index.d.ts +2 -0
  13. package/es/file-previewer/style/index.js +2 -0
  14. package/es/file-previewer/style/index.scss +186 -0
  15. package/es/file-previewer/style/token.scss +31 -0
  16. package/es/file-previewer/types.d.ts +29 -0
  17. package/es/image/preview.vue_vue_type_script_setup_true_lang.js +1 -1
  18. package/es/index.css +840 -0
  19. package/es/index.d.ts +3 -1
  20. package/es/index.js +2 -1
  21. package/es/index.scss +1 -0
  22. package/es/menu/style/css.js +0 -1
  23. package/es/menu/style/index.js +0 -1
  24. package/es/scrollbar/style/index.css +670 -0
  25. package/es/sd-vue.js +2 -0
  26. package/es/select/select-dropdown.vue_vue_type_script_setup_true_lang.js +4 -1
  27. package/es/tree/base-node.vue.d.ts +8 -4
  28. package/es/tree/base-node.vue_vue_type_script_setup_true_lang.js +74 -6
  29. package/es/tree/context.d.ts +4 -1
  30. package/es/tree/index.d.ts +4 -1
  31. package/es/tree/interface.d.ts +39 -0
  32. package/es/tree/style/index.css +22 -0
  33. package/es/tree/style/index.d.ts +1 -0
  34. package/es/tree/style/index.scss +25 -0
  35. package/es/tree/tree.vue.d.ts +68 -1
  36. package/es/tree/tree.vue_vue_type_script_setup_true_lang.js +135 -1
  37. package/json/vetur-attributes.json +60 -0
  38. package/json/vetur-tags.json +21 -0
  39. package/json/web-types.json +125 -1
  40. package/package.json +2 -1
@@ -1,14 +1,16 @@
1
1
  import { _objectSpread2 } from "../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/objectSpread2.js";
2
2
  import { getPrefixCls } from "../_utils/global-config.js";
3
3
  import { isFunction } from "../_utils/is.js";
4
+ import Ellipsis, { PerformantEllipsis } from "../ellipsis/index.js";
4
5
  import Checkbox from "../checkbox/index.js";
5
6
  import { toArray } from "../_utils/to-array.js";
6
7
  import IconDragDotVertical from "../icon/icon-drag-dot-vertical/index.js";
7
8
  import useTreeContext from "./hooks/use-tree-context.js";
8
- import useDraggable from "./hooks/use-draggable.js";
9
+ import useDraggable$1 from "./hooks/use-draggable.js";
9
10
  import useNodeKey from "./hooks/use-node-key.js";
10
11
  import node_switcher_default from "./node-switcher.js";
11
12
  import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createSlots, createTextVNode, createVNode, defineComponent, mergeProps, normalizeClass, normalizeProps, openBlock, reactive, ref, renderList, renderSlot, resolveDynamicComponent, toDisplayString, toRefs, unref, withCtx } from "vue";
13
+ import { onLongPress, useSwipe } from "@vueuse/core";
12
14
  //#region components/tree/base-node.vue?vue&type=script&setup=true&lang.ts
13
15
  var _hoisted_1 = ["data-level", "data-key"];
14
16
  var _hoisted_2 = ["draggable"];
@@ -74,7 +76,25 @@ var base_node_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ define
74
76
  }];
75
77
  });
76
78
  const refTitle = ref();
77
- const { isDragOver, isDragging, isAllowDrop, dropPosition, setDragStatus } = useDraggable(reactive({
79
+ const swipeState = useSwipe(refTitle, {
80
+ onSwipeStart(event) {
81
+ var _treeContext$onNodeSw;
82
+ (_treeContext$onNodeSw = treeContext.onNodeSwipe) === null || _treeContext$onNodeSw === void 0 || _treeContext$onNodeSw.call(treeContext, "swipeStart", key.value, event, { direction: "none" });
83
+ },
84
+ onSwipe(event) {
85
+ var _treeContext$onNodeSw2;
86
+ (_treeContext$onNodeSw2 = treeContext.onNodeSwipe) === null || _treeContext$onNodeSw2 === void 0 || _treeContext$onNodeSw2.call(treeContext, "swipe", key.value, event, { direction: swipeState.direction.value });
87
+ },
88
+ onSwipeEnd(event, direction) {
89
+ var _treeContext$onNodeSw3;
90
+ (_treeContext$onNodeSw3 = treeContext.onNodeSwipe) === null || _treeContext$onNodeSw3 === void 0 || _treeContext$onNodeSw3.call(treeContext, "swipeEnd", key.value, event, { direction });
91
+ }
92
+ });
93
+ onLongPress(refTitle, (event) => {
94
+ var _treeContext$onNodeLo;
95
+ (_treeContext$onNodeLo = treeContext.onNodeLongPress) === null || _treeContext$onNodeLo === void 0 || _treeContext$onNodeLo.call(treeContext, key.value, event);
96
+ });
97
+ const { isDragOver, isDragging, isAllowDrop, dropPosition, setDragStatus } = useDraggable$1(reactive({
78
98
  key,
79
99
  refTitle
80
100
  }));
@@ -84,7 +104,8 @@ var base_node_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ define
84
104
  [`${prefixCls}-title-gap-bottom`]: isDragOver.value && isAllowDrop.value && dropPosition.value > 0,
85
105
  [`${prefixCls}-title-highlight`]: !isDragging.value && isDragOver.value && isAllowDrop.value && dropPosition.value === 0,
86
106
  [`${prefixCls}-title-dragging`]: isDragging.value,
87
- [`${prefixCls}-title-block`]: node.value.blockNode
107
+ [`${prefixCls}-title-block`]: node.value.blockNode,
108
+ [`${prefixCls}-title-with-ellipsis`]: shouldRenderEllipsis.value
88
109
  }]);
89
110
  const checked = computed(() => {
90
111
  var _treeContext$checkedK, _treeContext$checkedK2;
@@ -108,6 +129,15 @@ var base_node_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ define
108
129
  });
109
130
  const treeDragIcon = computed(() => treeContext.dragIcon);
110
131
  const treeNodeIcon = computed(() => treeContext.nodeIcon);
132
+ const shouldRenderEllipsis = computed(() => {
133
+ var _treeContext$treeProp3, _treeContext$treeProp4;
134
+ return ((_treeContext$treeProp3 = treeContext.treeProps) === null || _treeContext$treeProp3 === void 0 ? void 0 : _treeContext$treeProp3.ellipsis) === true || ((_treeContext$treeProp4 = treeContext.treeProps) === null || _treeContext$treeProp4 === void 0 ? void 0 : _treeContext$treeProp4.ellipsis) === "performant-ellipsis";
135
+ });
136
+ const ellipsisComponent = computed(() => {
137
+ var _treeContext$treeProp5;
138
+ return ((_treeContext$treeProp5 = treeContext.treeProps) === null || _treeContext$treeProp5 === void 0 ? void 0 : _treeContext$treeProp5.ellipsis) === "performant-ellipsis" ? PerformantEllipsis : Ellipsis;
139
+ });
140
+ const titleTextClassNames = computed(() => [`${prefixCls}-title-text`, { [`${prefixCls}-title-text-ellipsis`]: shouldRenderEllipsis.value }]);
111
141
  function onSwitcherClick(e) {
112
142
  var _children$value;
113
143
  if (isLeaf.value) return;
@@ -148,10 +178,15 @@ var base_node_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ define
148
178
  }
149
179
  function onTitleClick(e) {
150
180
  var _treeContext$onSelect;
181
+ onNodeDomEvent("click", e);
151
182
  if (actionOnNodeClick.value.includes("expand")) onSwitcherClick(e);
152
183
  if (!selectable.value || disabled.value) return;
153
184
  (_treeContext$onSelect = treeContext.onSelect) === null || _treeContext$onSelect === void 0 || _treeContext$onSelect.call(treeContext, key.value, e);
154
185
  }
186
+ function onNodeDomEvent(eventName, e) {
187
+ var _treeContext$onNodeEv;
188
+ (_treeContext$onNodeEv = treeContext.onNodeEvent) === null || _treeContext$onNodeEv === void 0 || _treeContext$onNodeEv.call(treeContext, eventName, key.value, e);
189
+ }
155
190
  function onDragStart(e) {
156
191
  if (!draggable.value) return;
157
192
  e.stopPropagation();
@@ -246,17 +281,50 @@ var base_node_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ define
246
281
  onDragover: onDragOver,
247
282
  onDragleave: onDragLeave,
248
283
  onDrop,
249
- onClick: onTitleClick
284
+ onClick: onTitleClick,
285
+ onDblclick: _cache[0] || (_cache[0] = ($event) => onNodeDomEvent("dblclick", $event)),
286
+ onContextmenu: _cache[1] || (_cache[1] = ($event) => onNodeDomEvent("contextmenu", $event)),
287
+ onMouseover: _cache[2] || (_cache[2] = ($event) => onNodeDomEvent("mouseover", $event)),
288
+ onMouseenter: _cache[3] || (_cache[3] = ($event) => onNodeDomEvent("mouseenter", $event)),
289
+ onMouseleave: _cache[4] || (_cache[4] = ($event) => onNodeDomEvent("mouseleave", $event)),
290
+ onMousemove: _cache[5] || (_cache[5] = ($event) => onNodeDomEvent("mousemove", $event)),
291
+ onMouseout: _cache[6] || (_cache[6] = ($event) => onNodeDomEvent("mouseout", $event)),
292
+ onMousedown: _cache[7] || (_cache[7] = ($event) => onNodeDomEvent("mousedown", $event)),
293
+ onMouseup: _cache[8] || (_cache[8] = ($event) => onNodeDomEvent("mouseup", $event)),
294
+ onPointerdown: _cache[9] || (_cache[9] = ($event) => onNodeDomEvent("pointerdown", $event)),
295
+ onPointermove: _cache[10] || (_cache[10] = ($event) => onNodeDomEvent("pointermove", $event)),
296
+ onPointerup: _cache[11] || (_cache[11] = ($event) => onNodeDomEvent("pointerup", $event)),
297
+ onPointerenter: _cache[12] || (_cache[12] = ($event) => onNodeDomEvent("pointerenter", $event)),
298
+ onPointerleave: _cache[13] || (_cache[13] = ($event) => onNodeDomEvent("pointerleave", $event)),
299
+ onPointerover: _cache[14] || (_cache[14] = ($event) => onNodeDomEvent("pointerover", $event)),
300
+ onPointerout: _cache[15] || (_cache[15] = ($event) => onNodeDomEvent("pointerout", $event)),
301
+ onPointercancel: _cache[16] || (_cache[16] = ($event) => onNodeDomEvent("pointercancel", $event)),
302
+ onTouchstart: _cache[17] || (_cache[17] = ($event) => onNodeDomEvent("touchstart", $event)),
303
+ onTouchmove: _cache[18] || (_cache[18] = ($event) => onNodeDomEvent("touchmove", $event)),
304
+ onTouchend: _cache[19] || (_cache[19] = ($event) => onNodeDomEvent("touchend", $event)),
305
+ onTouchcancel: _cache[20] || (_cache[20] = ($event) => onNodeDomEvent("touchcancel", $event)),
306
+ onKeydown: _cache[21] || (_cache[21] = ($event) => onNodeDomEvent("keydown", $event)),
307
+ onKeyup: _cache[22] || (_cache[22] = ($event) => onNodeDomEvent("keyup", $event)),
308
+ onKeypress: _cache[23] || (_cache[23] = ($event) => onNodeDomEvent("keypress", $event))
250
309
  }, [_ctx.$slots.icon || __props.icon || treeNodeIcon.value ? (openBlock(), createElementBlock("span", {
251
310
  key: 0,
252
311
  class: normalizeClass([`${unref(prefixCls)}-icon`, `${unref(prefixCls)}-custom-icon`])
253
312
  }, [_ctx.$slots.icon ? renderSlot(_ctx.$slots, "icon", normalizeProps(mergeProps({ key: 0 }, nodeStatus))) : __props.icon ? (openBlock(), createBlock(resolveDynamicComponent(__props.icon), normalizeProps(mergeProps({ key: 1 }, nodeStatus)), null, 16)) : treeNodeIcon.value ? (openBlock(), createBlock(resolveDynamicComponent(treeNodeIcon.value), mergeProps({
254
313
  key: 2,
255
314
  node: treeNodeData.value
256
- }, nodeStatus), null, 16, ["node"])) : createCommentVNode("", true)], 2)) : createCommentVNode("", true), createElementVNode("span", { class: normalizeClass(`${unref(prefixCls)}-title-text`) }, [treeTitle.value ? (openBlock(), createBlock(resolveDynamicComponent(treeTitle.value), { key: 0 })) : renderSlot(_ctx.$slots, "title", {
315
+ }, nodeStatus), null, 16, ["node"])) : createCommentVNode("", true)], 2)) : createCommentVNode("", true), createElementVNode("span", { class: normalizeClass(titleTextClassNames.value) }, [shouldRenderEllipsis.value ? (openBlock(), createBlock(resolveDynamicComponent(ellipsisComponent.value), {
316
+ key: 0,
317
+ class: normalizeClass(`${unref(prefixCls)}-title-ellipsis`)
318
+ }, {
319
+ default: withCtx(() => [treeTitle.value ? (openBlock(), createBlock(resolveDynamicComponent(treeTitle.value), { key: 0 })) : renderSlot(_ctx.$slots, "title", {
320
+ key: 1,
321
+ title: __props.title
322
+ }, () => [createTextVNode(toDisplayString(__props.title), 1)])]),
323
+ _: 3
324
+ }, 8, ["class"])) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [treeTitle.value ? (openBlock(), createBlock(resolveDynamicComponent(treeTitle.value), { key: 0 })) : renderSlot(_ctx.$slots, "title", {
257
325
  key: 1,
258
326
  title: __props.title
259
- }, () => [createTextVNode(toDisplayString(__props.title), 1)]), unref(draggable) ? (openBlock(), createElementBlock("span", {
327
+ }, () => [createTextVNode(toDisplayString(__props.title), 1)])], 64)), unref(draggable) ? (openBlock(), createElementBlock("span", {
260
328
  key: 2,
261
329
  class: normalizeClass([`${unref(prefixCls)}-icon`, `${unref(prefixCls)}-drag-icon`])
262
330
  }, [_ctx.$slots["drag-icon"] ? renderSlot(_ctx.$slots, "drag-icon", normalizeProps(mergeProps({ key: 0 }, nodeStatus))) : __props.dragIcon ? (openBlock(), createBlock(resolveDynamicComponent(__props.dragIcon), normalizeProps(mergeProps({ key: 1 }, nodeStatus)), null, 16)) : treeDragIcon.value ? (openBlock(), createBlock(resolveDynamicComponent(treeDragIcon.value), mergeProps({
@@ -1,5 +1,5 @@
1
1
  import { InjectionKey, Slot } from 'vue';
2
- import type { Node, DropPosition, TreeNodeKey, TreeProps, Key2TreeNode, FilterTreeNode } from './interface';
2
+ import type { Node, DropPosition, TreeNodeKey, TreeProps, Key2TreeNode, FilterTreeNode, TreeNodeDomEventName, TreeNodeSwipeEventData, TreeNodeSwipeEventName } from './interface';
3
3
  export declare const TreeInjectionKey: InjectionKey<TreeContext>;
4
4
  export type TreeContext = Readonly<{
5
5
  treeProps: TreeProps;
@@ -30,4 +30,7 @@ export type TreeContext = Readonly<{
30
30
  onDragLeave?: (key: TreeNodeKey, e: DragEvent) => void;
31
31
  onDrop?: (key: TreeNodeKey, dropPosition: DropPosition, e: DragEvent) => void;
32
32
  allowDrop?: (key: TreeNodeKey, dropPosition: DropPosition) => boolean;
33
+ onNodeEvent?: (eventName: TreeNodeDomEventName, key: TreeNodeKey, e: Event) => void;
34
+ onNodeLongPress?: (key: TreeNodeKey, e: PointerEvent) => void;
35
+ onNodeSwipe?: (eventName: TreeNodeSwipeEventName, key: TreeNodeKey, e: TouchEvent, data: TreeNodeSwipeEventData) => void;
33
36
  }>;
@@ -1,11 +1,14 @@
1
1
  import type { SFCWithInstall } from '../_utils/types';
2
2
  import type { TreeProps } from './interface';
3
3
  import _Tree from './tree.vue';
4
- export type { CheckedStrategy, CheckableType, DropPosition, FilterTreeNode, Key2TreeNode, LoadMore, TreeFieldNames, TreeNodeData, TreeNodeKey, TreeProps, } from './interface';
4
+ export type { CheckedStrategy, CheckableType, DropPosition, FilterTreeNode, Key2TreeNode, LoadMore, TreeFieldNames, TreeNodeDomEventName, TreeNodeData, TreeNodeEventHandler, TreeNodeKey, TreeNodeSwipeDirection, TreeNodeSwipeEventData, TreeNodeSwipeEventHandler, TreeNodeSwipeEventName, TreeProps, } from './interface';
5
5
  declare const Tree: SFCWithInstall<typeof _Tree>;
6
6
  export type TreeInstance = InstanceType<typeof _Tree>;
7
7
  export type TreeSelectHandler = NonNullable<TreeProps['onSelect']>;
8
8
  export type TreeCheckHandler = NonNullable<TreeProps['onCheck']>;
9
9
  export type TreeExpandHandler = NonNullable<TreeProps['onExpand']>;
10
10
  export type TreeDropHandler = NonNullable<TreeProps['onDrop']>;
11
+ export type TreeNodeClickHandler = NonNullable<TreeProps['onNodeClick']>;
12
+ export type TreeNodeLongPressHandler = NonNullable<TreeProps['onNodeLongPress']>;
13
+ export type TreeNodeSwipeHandler = NonNullable<TreeProps['onNodeSwipe']>;
11
14
  export default Tree;
@@ -2,6 +2,15 @@ import { Slot, VNode } from 'vue';
2
2
  import { VirtualListProps } from '../_components/virtual-list/interface';
3
3
  import { Size } from '../_utils/constant';
4
4
  export type TreeNodeKey = number | string;
5
+ export type TreeEllipsis = boolean | 'performant-ellipsis';
6
+ export type TreeNodeDomEventName = 'click' | 'dblclick' | 'contextmenu' | 'mouseover' | 'mouseenter' | 'mouseleave' | 'mousemove' | 'mouseout' | 'mousedown' | 'mouseup' | 'pointerdown' | 'pointermove' | 'pointerup' | 'pointerenter' | 'pointerleave' | 'pointerover' | 'pointerout' | 'pointercancel' | 'touchstart' | 'touchmove' | 'touchend' | 'touchcancel' | 'keydown' | 'keyup' | 'keypress';
7
+ export type TreeNodeSwipeEventName = 'swipeStart' | 'swipe' | 'swipeEnd';
8
+ export type TreeNodeSwipeDirection = 'up' | 'down' | 'left' | 'right' | 'none';
9
+ export interface TreeNodeSwipeEventData {
10
+ direction: TreeNodeSwipeDirection;
11
+ }
12
+ export type TreeNodeEventHandler<T extends Event = Event> = (node: TreeNodeData, event: T) => void;
13
+ export type TreeNodeSwipeEventHandler = (node: TreeNodeData, event: TouchEvent, data: TreeNodeSwipeEventData) => void;
5
14
  export interface TreeNodeData {
6
15
  key?: string | number;
7
16
  title?: string;
@@ -91,6 +100,7 @@ export interface TreeProps {
91
100
  autoExpandParent?: boolean;
92
101
  onlyCheckLeaf: boolean;
93
102
  animation: boolean;
103
+ ellipsis: TreeEllipsis;
94
104
  actionOnNodeClick?: 'expand';
95
105
  disableSelectActionOnly: boolean;
96
106
  dragIcon?: Slot;
@@ -128,6 +138,35 @@ export interface TreeProps {
128
138
  dropNode: TreeNodeData;
129
139
  dropPosition: number;
130
140
  }) => void;
141
+ onNodeClick?: TreeNodeEventHandler;
142
+ onNodeDblclick?: TreeNodeEventHandler;
143
+ onNodeContextmenu?: TreeNodeEventHandler;
144
+ onNodeMouseover?: TreeNodeEventHandler;
145
+ onNodeMouseenter?: TreeNodeEventHandler;
146
+ onNodeMouseleave?: TreeNodeEventHandler;
147
+ onNodeMousemove?: TreeNodeEventHandler;
148
+ onNodeMouseout?: TreeNodeEventHandler;
149
+ onNodeMousedown?: TreeNodeEventHandler;
150
+ onNodeMouseup?: TreeNodeEventHandler;
151
+ onNodePointerdown?: TreeNodeEventHandler;
152
+ onNodePointermove?: TreeNodeEventHandler;
153
+ onNodePointerup?: TreeNodeEventHandler;
154
+ onNodePointerenter?: TreeNodeEventHandler;
155
+ onNodePointerleave?: TreeNodeEventHandler;
156
+ onNodePointerover?: TreeNodeEventHandler;
157
+ onNodePointerout?: TreeNodeEventHandler;
158
+ onNodePointercancel?: TreeNodeEventHandler;
159
+ onNodeTouchstart?: TreeNodeEventHandler;
160
+ onNodeTouchmove?: TreeNodeEventHandler;
161
+ onNodeTouchend?: TreeNodeEventHandler;
162
+ onNodeTouchcancel?: TreeNodeEventHandler;
163
+ onNodeKeydown?: TreeNodeEventHandler;
164
+ onNodeKeyup?: TreeNodeEventHandler;
165
+ onNodeKeypress?: TreeNodeEventHandler;
166
+ onNodeLongPress?: TreeNodeEventHandler<PointerEvent>;
167
+ onNodeSwipeStart?: TreeNodeSwipeEventHandler;
168
+ onNodeSwipe?: TreeNodeSwipeEventHandler;
169
+ onNodeSwipeEnd?: TreeNodeSwipeEventHandler;
131
170
  filterTreeNode?: (node: TreeNodeData) => boolean;
132
171
  }
133
172
  export type Key2TreeNode = Map<TreeNodeKey, Node>;
@@ -140,6 +140,28 @@
140
140
  position: absolute;
141
141
  right: 12px;
142
142
  }
143
+ .sd-tree-node-title-block .sd-tree-node-title-text {
144
+ display: block;
145
+ width: 100%;
146
+ }
147
+ .sd-tree-node-title-with-ellipsis {
148
+ flex: 1 1 0;
149
+ min-width: 0;
150
+ max-width: 100%;
151
+ overflow: hidden;
152
+ }
153
+ .sd-tree-node-title-text-ellipsis {
154
+ display: block;
155
+ flex: 1 1 0;
156
+ min-width: 0;
157
+ max-width: 100%;
158
+ overflow: hidden;
159
+ }
160
+ .sd-tree-node-title-ellipsis {
161
+ display: block;
162
+ width: 100%;
163
+ max-width: 100%;
164
+ }
143
165
  .sd-tree-node-indent {
144
166
  position: relative;
145
167
  flex-shrink: 0;
@@ -1,3 +1,4 @@
1
1
  import '../../style/index.scss';
2
2
  import '../../checkbox/style';
3
+ import '../../ellipsis/style';
3
4
  import './index.scss';
@@ -183,6 +183,31 @@ $tree-node-prefix-cls: string.unquote('#{theme.$prefix}-tree-node');
183
183
  position: absolute;
184
184
  right: $tree-spacing-drag-icon-right;
185
185
  }
186
+ .#{$tree-node-prefix-cls}-title-text {
187
+ display: block;
188
+ width: 100%;
189
+ }
190
+ }
191
+
192
+ &-node-title-with-ellipsis {
193
+ flex: 1 1 0;
194
+ min-width: 0;
195
+ max-width: 100%;
196
+ overflow: hidden;
197
+ }
198
+
199
+ &-node-title-text-ellipsis {
200
+ display: block;
201
+ flex: 1 1 0;
202
+ min-width: 0;
203
+ max-width: 100%;
204
+ overflow: hidden;
205
+ }
206
+
207
+ &-node-title-ellipsis {
208
+ display: block;
209
+ width: 100%;
210
+ max-width: 100%;
186
211
  }
187
212
 
188
213
  &-node-indent {
@@ -1,6 +1,6 @@
1
1
  import { PropType } from 'vue';
2
2
  import type { VirtualListProps, ScrollIntoViewOptions } from '../_components/virtual-list/interface';
3
- import type { TreeFieldNames, TreeNodeData, FilterTreeNode, TreeNodeKey, CheckedStrategy } from './interface';
3
+ import type { TreeFieldNames, TreeNodeData, FilterTreeNode, TreeNodeKey, CheckedStrategy, TreeNodeSwipeEventData, TreeEllipsis } from './interface';
4
4
  declare function toggleCheck(key: TreeNodeKey, e: Event): void;
5
5
  declare function scrollIntoView(options: ScrollIntoViewOptions): void;
6
6
  declare function getSelectedNodes(): (TreeNodeData | undefined)[];
@@ -123,6 +123,10 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
123
123
  type: BooleanConstructor;
124
124
  default: boolean;
125
125
  };
126
+ ellipsis: {
127
+ type: PropType<TreeEllipsis>;
128
+ default: boolean;
129
+ };
126
130
  actionOnNodeClick: {
127
131
  type: PropType<"expand">;
128
132
  };
@@ -178,6 +182,35 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
178
182
  "update:checkedKeys": (_checkedKeys: (string | number)[]) => any;
179
183
  "update:halfCheckedKeys": (_halfCheckedKeys: (string | number)[]) => any;
180
184
  "update:expandedKeys": (_expandKeys: (string | number)[]) => any;
185
+ nodeClick: (_node: TreeNodeData, _event: Event) => any;
186
+ nodeDblclick: (_node: TreeNodeData, _event: Event) => any;
187
+ nodeContextmenu: (_node: TreeNodeData, _event: Event) => any;
188
+ nodeMouseover: (_node: TreeNodeData, _event: Event) => any;
189
+ nodeMouseenter: (_node: TreeNodeData, _event: Event) => any;
190
+ nodeMouseleave: (_node: TreeNodeData, _event: Event) => any;
191
+ nodeMousemove: (_node: TreeNodeData, _event: Event) => any;
192
+ nodeMouseout: (_node: TreeNodeData, _event: Event) => any;
193
+ nodeMousedown: (_node: TreeNodeData, _event: Event) => any;
194
+ nodeMouseup: (_node: TreeNodeData, _event: Event) => any;
195
+ nodePointerdown: (_node: TreeNodeData, _event: Event) => any;
196
+ nodePointermove: (_node: TreeNodeData, _event: Event) => any;
197
+ nodePointerup: (_node: TreeNodeData, _event: Event) => any;
198
+ nodePointerenter: (_node: TreeNodeData, _event: Event) => any;
199
+ nodePointerleave: (_node: TreeNodeData, _event: Event) => any;
200
+ nodePointerover: (_node: TreeNodeData, _event: Event) => any;
201
+ nodePointerout: (_node: TreeNodeData, _event: Event) => any;
202
+ nodePointercancel: (_node: TreeNodeData, _event: Event) => any;
203
+ nodeTouchstart: (_node: TreeNodeData, _event: Event) => any;
204
+ nodeTouchmove: (_node: TreeNodeData, _event: Event) => any;
205
+ nodeTouchend: (_node: TreeNodeData, _event: Event) => any;
206
+ nodeTouchcancel: (_node: TreeNodeData, _event: Event) => any;
207
+ nodeKeydown: (_node: TreeNodeData, _event: Event) => any;
208
+ nodeKeyup: (_node: TreeNodeData, _event: Event) => any;
209
+ nodeKeypress: (_node: TreeNodeData, _event: Event) => any;
210
+ nodeLongPress: (_node: TreeNodeData, _event: PointerEvent) => any;
211
+ nodeSwipeStart: (_node: TreeNodeData, _event: TouchEvent, _data: TreeNodeSwipeEventData) => any;
212
+ nodeSwipe: (_node: TreeNodeData, _event: TouchEvent, _data: TreeNodeSwipeEventData) => any;
213
+ nodeSwipeEnd: (_node: TreeNodeData, _event: TouchEvent, _data: TreeNodeSwipeEventData) => any;
181
214
  }, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
182
215
  size: {
183
216
  type: PropType<"mini" | "small" | "medium" | "large">;
@@ -285,6 +318,10 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
285
318
  type: BooleanConstructor;
286
319
  default: boolean;
287
320
  };
321
+ ellipsis: {
322
+ type: PropType<TreeEllipsis>;
323
+ default: boolean;
324
+ };
288
325
  actionOnNodeClick: {
289
326
  type: PropType<"expand">;
290
327
  };
@@ -327,9 +364,39 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
327
364
  "onUpdate:checkedKeys"?: ((_checkedKeys: (string | number)[]) => any) | undefined;
328
365
  "onUpdate:halfCheckedKeys"?: ((_halfCheckedKeys: (string | number)[]) => any) | undefined;
329
366
  "onUpdate:expandedKeys"?: ((_expandKeys: (string | number)[]) => any) | undefined;
367
+ onNodeClick?: ((_node: TreeNodeData, _event: Event) => any) | undefined;
368
+ onNodeDblclick?: ((_node: TreeNodeData, _event: Event) => any) | undefined;
369
+ onNodeContextmenu?: ((_node: TreeNodeData, _event: Event) => any) | undefined;
370
+ onNodeMouseover?: ((_node: TreeNodeData, _event: Event) => any) | undefined;
371
+ onNodeMouseenter?: ((_node: TreeNodeData, _event: Event) => any) | undefined;
372
+ onNodeMouseleave?: ((_node: TreeNodeData, _event: Event) => any) | undefined;
373
+ onNodeMousemove?: ((_node: TreeNodeData, _event: Event) => any) | undefined;
374
+ onNodeMouseout?: ((_node: TreeNodeData, _event: Event) => any) | undefined;
375
+ onNodeMousedown?: ((_node: TreeNodeData, _event: Event) => any) | undefined;
376
+ onNodeMouseup?: ((_node: TreeNodeData, _event: Event) => any) | undefined;
377
+ onNodePointerdown?: ((_node: TreeNodeData, _event: Event) => any) | undefined;
378
+ onNodePointermove?: ((_node: TreeNodeData, _event: Event) => any) | undefined;
379
+ onNodePointerup?: ((_node: TreeNodeData, _event: Event) => any) | undefined;
380
+ onNodePointerenter?: ((_node: TreeNodeData, _event: Event) => any) | undefined;
381
+ onNodePointerleave?: ((_node: TreeNodeData, _event: Event) => any) | undefined;
382
+ onNodePointerover?: ((_node: TreeNodeData, _event: Event) => any) | undefined;
383
+ onNodePointerout?: ((_node: TreeNodeData, _event: Event) => any) | undefined;
384
+ onNodePointercancel?: ((_node: TreeNodeData, _event: Event) => any) | undefined;
385
+ onNodeTouchstart?: ((_node: TreeNodeData, _event: Event) => any) | undefined;
386
+ onNodeTouchmove?: ((_node: TreeNodeData, _event: Event) => any) | undefined;
387
+ onNodeTouchend?: ((_node: TreeNodeData, _event: Event) => any) | undefined;
388
+ onNodeTouchcancel?: ((_node: TreeNodeData, _event: Event) => any) | undefined;
389
+ onNodeKeydown?: ((_node: TreeNodeData, _event: Event) => any) | undefined;
390
+ onNodeKeyup?: ((_node: TreeNodeData, _event: Event) => any) | undefined;
391
+ onNodeKeypress?: ((_node: TreeNodeData, _event: Event) => any) | undefined;
392
+ onNodeLongPress?: ((_node: TreeNodeData, _event: PointerEvent) => any) | undefined;
393
+ onNodeSwipeStart?: ((_node: TreeNodeData, _event: TouchEvent, _data: TreeNodeSwipeEventData) => any) | undefined;
394
+ onNodeSwipe?: ((_node: TreeNodeData, _event: TouchEvent, _data: TreeNodeSwipeEventData) => any) | undefined;
395
+ onNodeSwipeEnd?: ((_node: TreeNodeData, _event: TouchEvent, _data: TreeNodeSwipeEventData) => any) | undefined;
330
396
  }>, {
331
397
  size: "small" | "mini" | "medium" | "large";
332
398
  data: TreeNodeData[];
399
+ ellipsis: TreeEllipsis;
333
400
  multiple: boolean;
334
401
  checkable: boolean | ((node: TreeNodeData, info: {
335
402
  level: number;
@@ -198,6 +198,14 @@ var tree_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCompo
198
198
  default: true
199
199
  },
200
200
  /**
201
+ * @zh 是否使用 Ellipsis 组件渲染节点标题。传入 `performant-ellipsis` 时使用高性能省略实现。
202
+ * @en Whether to render node titles with the Ellipsis component. Use `performant-ellipsis` for the performant implementation.
203
+ */
204
+ ellipsis: {
205
+ type: [Boolean, String],
206
+ default: false
207
+ },
208
+ /**
201
209
  * @zh 点击节点的时候触发的动作
202
210
  * @en The action triggered when the node is clicked
203
211
  * @version 2.27.0
@@ -220,7 +228,36 @@ var tree_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCompo
220
228
  "dragEnd",
221
229
  "dragOver",
222
230
  "dragLeave",
223
- "drop"
231
+ "drop",
232
+ "nodeClick",
233
+ "nodeDblclick",
234
+ "nodeContextmenu",
235
+ "nodeMouseover",
236
+ "nodeMouseenter",
237
+ "nodeMouseleave",
238
+ "nodeMousemove",
239
+ "nodeMouseout",
240
+ "nodeMousedown",
241
+ "nodeMouseup",
242
+ "nodePointerdown",
243
+ "nodePointermove",
244
+ "nodePointerup",
245
+ "nodePointerenter",
246
+ "nodePointerleave",
247
+ "nodePointerover",
248
+ "nodePointerout",
249
+ "nodePointercancel",
250
+ "nodeTouchstart",
251
+ "nodeTouchmove",
252
+ "nodeTouchend",
253
+ "nodeTouchcancel",
254
+ "nodeKeydown",
255
+ "nodeKeyup",
256
+ "nodeKeypress",
257
+ "nodeLongPress",
258
+ "nodeSwipeStart",
259
+ "nodeSwipe",
260
+ "nodeSwipeEnd"
224
261
  ],
225
262
  setup(__props, { expose: __expose, emit: __emit }) {
226
263
  const TREE_VIRTUAL_ITEM_SIZE = {
@@ -561,6 +598,100 @@ var tree_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCompo
561
598
  const index = currentExpandKeys.value.indexOf(key);
562
599
  if (index > -1) currentExpandKeys.value.splice(index, 1);
563
600
  }
601
+ function onNodeEvent(eventName, key, event) {
602
+ const node = key2TreeNode.value.get(key);
603
+ if (!node) return;
604
+ const nodeData = node.treeNodeData;
605
+ switch (eventName) {
606
+ case "click":
607
+ emit("nodeClick", nodeData, event);
608
+ break;
609
+ case "dblclick":
610
+ emit("nodeDblclick", nodeData, event);
611
+ break;
612
+ case "contextmenu":
613
+ emit("nodeContextmenu", nodeData, event);
614
+ break;
615
+ case "mouseover":
616
+ emit("nodeMouseover", nodeData, event);
617
+ break;
618
+ case "mouseenter":
619
+ emit("nodeMouseenter", nodeData, event);
620
+ break;
621
+ case "mouseleave":
622
+ emit("nodeMouseleave", nodeData, event);
623
+ break;
624
+ case "mousemove":
625
+ emit("nodeMousemove", nodeData, event);
626
+ break;
627
+ case "mouseout":
628
+ emit("nodeMouseout", nodeData, event);
629
+ break;
630
+ case "mousedown":
631
+ emit("nodeMousedown", nodeData, event);
632
+ break;
633
+ case "mouseup":
634
+ emit("nodeMouseup", nodeData, event);
635
+ break;
636
+ case "pointerdown":
637
+ emit("nodePointerdown", nodeData, event);
638
+ break;
639
+ case "pointermove":
640
+ emit("nodePointermove", nodeData, event);
641
+ break;
642
+ case "pointerup":
643
+ emit("nodePointerup", nodeData, event);
644
+ break;
645
+ case "pointerenter":
646
+ emit("nodePointerenter", nodeData, event);
647
+ break;
648
+ case "pointerleave":
649
+ emit("nodePointerleave", nodeData, event);
650
+ break;
651
+ case "pointerover":
652
+ emit("nodePointerover", nodeData, event);
653
+ break;
654
+ case "pointerout":
655
+ emit("nodePointerout", nodeData, event);
656
+ break;
657
+ case "pointercancel":
658
+ emit("nodePointercancel", nodeData, event);
659
+ break;
660
+ case "touchstart":
661
+ emit("nodeTouchstart", nodeData, event);
662
+ break;
663
+ case "touchmove":
664
+ emit("nodeTouchmove", nodeData, event);
665
+ break;
666
+ case "touchend":
667
+ emit("nodeTouchend", nodeData, event);
668
+ break;
669
+ case "touchcancel":
670
+ emit("nodeTouchcancel", nodeData, event);
671
+ break;
672
+ case "keydown":
673
+ emit("nodeKeydown", nodeData, event);
674
+ break;
675
+ case "keyup":
676
+ emit("nodeKeyup", nodeData, event);
677
+ break;
678
+ case "keypress":
679
+ emit("nodeKeypress", nodeData, event);
680
+ break;
681
+ }
682
+ }
683
+ function onNodeLongPress(key, event) {
684
+ const node = key2TreeNode.value.get(key);
685
+ if (!node) return;
686
+ emit("nodeLongPress", node.treeNodeData, event);
687
+ }
688
+ function onNodeSwipe(eventName, key, event, swipeData) {
689
+ const node = key2TreeNode.value.get(key);
690
+ if (!node) return;
691
+ if (eventName === "swipeStart") emit("nodeSwipeStart", node.treeNodeData, event, swipeData);
692
+ else if (eventName === "swipe") emit("nodeSwipe", node.treeNodeData, event, swipeData);
693
+ else emit("nodeSwipeEnd", node.treeNodeData, event, swipeData);
694
+ }
564
695
  const treeContext = reactive({
565
696
  treeProps: props,
566
697
  switcherIcon,
@@ -604,6 +735,9 @@ var tree_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCompo
604
735
  onSelect,
605
736
  onExpand,
606
737
  onExpandEnd,
738
+ onNodeEvent,
739
+ onNodeLongPress,
740
+ onNodeSwipe,
607
741
  allowDrop(key, dropPosition) {
608
742
  const node = key2TreeNode.value.get(key);
609
743
  if (node && isFunction(allowDrop.value)) return !!allowDrop.value({
@@ -1167,6 +1167,54 @@
1167
1167
  "description": "Whether to use in ConfigProvider",
1168
1168
  "type": "boolean"
1169
1169
  },
1170
+ "sd-file-previewer/close": {
1171
+ "description": "Close event"
1172
+ },
1173
+ "sd-file-previewer/visible-change": {
1174
+ "description": "Visible state change"
1175
+ },
1176
+ "sd-file-previewer/src": {
1177
+ "description": "File source url",
1178
+ "type": "string"
1179
+ },
1180
+ "sd-file-previewer/type": {
1181
+ "description": "Preview type, decides which previewer to use"
1182
+ },
1183
+ "sd-file-previewer/visible": {
1184
+ "description": "Whether the previewer is visible",
1185
+ "type": "boolean"
1186
+ },
1187
+ "sd-file-previewer/default-visible": {
1188
+ "description": "Default visibility",
1189
+ "type": "boolean"
1190
+ },
1191
+ "sd-file-previewer/fullscreen": {
1192
+ "description": "Whether to show the previewer in fullscreen overlay",
1193
+ "type": "boolean"
1194
+ },
1195
+ "sd-file-previewer/title": {
1196
+ "description": "Title",
1197
+ "type": "string"
1198
+ },
1199
+ "sd-file-previewer/mask-closable": {
1200
+ "description": "Whether to close when mask is clicked",
1201
+ "type": "boolean"
1202
+ },
1203
+ "sd-file-previewer/closable": {
1204
+ "description": "Whether to show close button",
1205
+ "type": "boolean"
1206
+ },
1207
+ "sd-file-previewer/esc-to-close": {
1208
+ "description": "Whether to support closing with ESC",
1209
+ "type": "boolean"
1210
+ },
1211
+ "sd-file-previewer/popup-container": {
1212
+ "description": "Set the mount point, same as teleport to"
1213
+ },
1214
+ "sd-file-previewer/render-to-body": {
1215
+ "description": "Whether to render to body",
1216
+ "type": "boolean"
1217
+ },
1170
1218
  "sd-form-item/field": {
1171
1219
  "description": "The path of the form element in the data object (required for the data item)",
1172
1220
  "type": "string"
@@ -3962,6 +4010,15 @@
3962
4010
  "sd-tree/drop": {
3963
4011
  "description": "The node is released on a releasable target"
3964
4012
  },
4013
+ "sd-tree/node-click": {
4014
+ "description": "Triggered when basic DOM events are fired on the node title area"
4015
+ },
4016
+ "sd-tree/node-long-press": {
4017
+ "description": "Triggered when the node title area is long pressed"
4018
+ },
4019
+ "sd-tree/node-swipe-start": {
4020
+ "description": "Triggered when the node title area is swiped"
4021
+ },
3965
4022
  "sd-tree/size": {
3966
4023
  "description": "Size",
3967
4024
  "type": "string"
@@ -4056,6 +4113,9 @@
4056
4113
  "description": "Whether to enable expand transition animation",
4057
4114
  "type": "boolean"
4058
4115
  },
4116
+ "sd-tree/ellipsis": {
4117
+ "description": "Whether to render node titles with the Ellipsis component. Use `performant-ellipsis` for the performant implementation."
4118
+ },
4059
4119
  "sd-tree/action-on-node-click": {
4060
4120
  "description": "The action triggered when the node is clicked"
4061
4121
  },