@sdata/web-vue 3.0.2 → 3.1.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.
@@ -5,10 +5,11 @@ import Checkbox from "../checkbox/index.js";
5
5
  import { toArray } from "../_utils/to-array.js";
6
6
  import IconDragDotVertical from "../icon/icon-drag-dot-vertical/index.js";
7
7
  import useTreeContext from "./hooks/use-tree-context.js";
8
- import useDraggable from "./hooks/use-draggable.js";
8
+ import useDraggable$1 from "./hooks/use-draggable.js";
9
9
  import useNodeKey from "./hooks/use-node-key.js";
10
10
  import node_switcher_default from "./node-switcher.js";
11
11
  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";
12
+ import { onLongPress, useSwipe } from "@vueuse/core";
12
13
  //#region components/tree/base-node.vue?vue&type=script&setup=true&lang.ts
13
14
  var _hoisted_1 = ["data-level", "data-key"];
14
15
  var _hoisted_2 = ["draggable"];
@@ -74,7 +75,25 @@ var base_node_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ define
74
75
  }];
75
76
  });
76
77
  const refTitle = ref();
77
- const { isDragOver, isDragging, isAllowDrop, dropPosition, setDragStatus } = useDraggable(reactive({
78
+ const swipeState = useSwipe(refTitle, {
79
+ onSwipeStart(event) {
80
+ var _treeContext$onNodeSw;
81
+ (_treeContext$onNodeSw = treeContext.onNodeSwipe) === null || _treeContext$onNodeSw === void 0 || _treeContext$onNodeSw.call(treeContext, "swipeStart", key.value, event, { direction: "none" });
82
+ },
83
+ onSwipe(event) {
84
+ var _treeContext$onNodeSw2;
85
+ (_treeContext$onNodeSw2 = treeContext.onNodeSwipe) === null || _treeContext$onNodeSw2 === void 0 || _treeContext$onNodeSw2.call(treeContext, "swipe", key.value, event, { direction: swipeState.direction.value });
86
+ },
87
+ onSwipeEnd(event, direction) {
88
+ var _treeContext$onNodeSw3;
89
+ (_treeContext$onNodeSw3 = treeContext.onNodeSwipe) === null || _treeContext$onNodeSw3 === void 0 || _treeContext$onNodeSw3.call(treeContext, "swipeEnd", key.value, event, { direction });
90
+ }
91
+ });
92
+ onLongPress(refTitle, (event) => {
93
+ var _treeContext$onNodeLo;
94
+ (_treeContext$onNodeLo = treeContext.onNodeLongPress) === null || _treeContext$onNodeLo === void 0 || _treeContext$onNodeLo.call(treeContext, key.value, event);
95
+ });
96
+ const { isDragOver, isDragging, isAllowDrop, dropPosition, setDragStatus } = useDraggable$1(reactive({
78
97
  key,
79
98
  refTitle
80
99
  }));
@@ -148,10 +167,15 @@ var base_node_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ define
148
167
  }
149
168
  function onTitleClick(e) {
150
169
  var _treeContext$onSelect;
170
+ onNodeDomEvent("click", e);
151
171
  if (actionOnNodeClick.value.includes("expand")) onSwitcherClick(e);
152
172
  if (!selectable.value || disabled.value) return;
153
173
  (_treeContext$onSelect = treeContext.onSelect) === null || _treeContext$onSelect === void 0 || _treeContext$onSelect.call(treeContext, key.value, e);
154
174
  }
175
+ function onNodeDomEvent(eventName, e) {
176
+ var _treeContext$onNodeEv;
177
+ (_treeContext$onNodeEv = treeContext.onNodeEvent) === null || _treeContext$onNodeEv === void 0 || _treeContext$onNodeEv.call(treeContext, eventName, key.value, e);
178
+ }
155
179
  function onDragStart(e) {
156
180
  if (!draggable.value) return;
157
181
  e.stopPropagation();
@@ -246,7 +270,31 @@ var base_node_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ define
246
270
  onDragover: onDragOver,
247
271
  onDragleave: onDragLeave,
248
272
  onDrop,
249
- onClick: onTitleClick
273
+ onClick: onTitleClick,
274
+ onDblclick: _cache[0] || (_cache[0] = ($event) => onNodeDomEvent("dblclick", $event)),
275
+ onContextmenu: _cache[1] || (_cache[1] = ($event) => onNodeDomEvent("contextmenu", $event)),
276
+ onMouseover: _cache[2] || (_cache[2] = ($event) => onNodeDomEvent("mouseover", $event)),
277
+ onMouseenter: _cache[3] || (_cache[3] = ($event) => onNodeDomEvent("mouseenter", $event)),
278
+ onMouseleave: _cache[4] || (_cache[4] = ($event) => onNodeDomEvent("mouseleave", $event)),
279
+ onMousemove: _cache[5] || (_cache[5] = ($event) => onNodeDomEvent("mousemove", $event)),
280
+ onMouseout: _cache[6] || (_cache[6] = ($event) => onNodeDomEvent("mouseout", $event)),
281
+ onMousedown: _cache[7] || (_cache[7] = ($event) => onNodeDomEvent("mousedown", $event)),
282
+ onMouseup: _cache[8] || (_cache[8] = ($event) => onNodeDomEvent("mouseup", $event)),
283
+ onPointerdown: _cache[9] || (_cache[9] = ($event) => onNodeDomEvent("pointerdown", $event)),
284
+ onPointermove: _cache[10] || (_cache[10] = ($event) => onNodeDomEvent("pointermove", $event)),
285
+ onPointerup: _cache[11] || (_cache[11] = ($event) => onNodeDomEvent("pointerup", $event)),
286
+ onPointerenter: _cache[12] || (_cache[12] = ($event) => onNodeDomEvent("pointerenter", $event)),
287
+ onPointerleave: _cache[13] || (_cache[13] = ($event) => onNodeDomEvent("pointerleave", $event)),
288
+ onPointerover: _cache[14] || (_cache[14] = ($event) => onNodeDomEvent("pointerover", $event)),
289
+ onPointerout: _cache[15] || (_cache[15] = ($event) => onNodeDomEvent("pointerout", $event)),
290
+ onPointercancel: _cache[16] || (_cache[16] = ($event) => onNodeDomEvent("pointercancel", $event)),
291
+ onTouchstart: _cache[17] || (_cache[17] = ($event) => onNodeDomEvent("touchstart", $event)),
292
+ onTouchmove: _cache[18] || (_cache[18] = ($event) => onNodeDomEvent("touchmove", $event)),
293
+ onTouchend: _cache[19] || (_cache[19] = ($event) => onNodeDomEvent("touchend", $event)),
294
+ onTouchcancel: _cache[20] || (_cache[20] = ($event) => onNodeDomEvent("touchcancel", $event)),
295
+ onKeydown: _cache[21] || (_cache[21] = ($event) => onNodeDomEvent("keydown", $event)),
296
+ onKeyup: _cache[22] || (_cache[22] = ($event) => onNodeDomEvent("keyup", $event)),
297
+ onKeypress: _cache[23] || (_cache[23] = ($event) => onNodeDomEvent("keypress", $event))
250
298
  }, [_ctx.$slots.icon || __props.icon || treeNodeIcon.value ? (openBlock(), createElementBlock("span", {
251
299
  key: 0,
252
300
  class: normalizeClass([`${unref(prefixCls)}-icon`, `${unref(prefixCls)}-custom-icon`])
@@ -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,14 @@ 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 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';
6
+ export type TreeNodeSwipeEventName = 'swipeStart' | 'swipe' | 'swipeEnd';
7
+ export type TreeNodeSwipeDirection = 'up' | 'down' | 'left' | 'right' | 'none';
8
+ export interface TreeNodeSwipeEventData {
9
+ direction: TreeNodeSwipeDirection;
10
+ }
11
+ export type TreeNodeEventHandler<T extends Event = Event> = (node: TreeNodeData, event: T) => void;
12
+ export type TreeNodeSwipeEventHandler = (node: TreeNodeData, event: TouchEvent, data: TreeNodeSwipeEventData) => void;
5
13
  export interface TreeNodeData {
6
14
  key?: string | number;
7
15
  title?: string;
@@ -128,6 +136,35 @@ export interface TreeProps {
128
136
  dropNode: TreeNodeData;
129
137
  dropPosition: number;
130
138
  }) => void;
139
+ onNodeClick?: TreeNodeEventHandler;
140
+ onNodeDblclick?: TreeNodeEventHandler;
141
+ onNodeContextmenu?: TreeNodeEventHandler;
142
+ onNodeMouseover?: TreeNodeEventHandler;
143
+ onNodeMouseenter?: TreeNodeEventHandler;
144
+ onNodeMouseleave?: TreeNodeEventHandler;
145
+ onNodeMousemove?: TreeNodeEventHandler;
146
+ onNodeMouseout?: TreeNodeEventHandler;
147
+ onNodeMousedown?: TreeNodeEventHandler;
148
+ onNodeMouseup?: TreeNodeEventHandler;
149
+ onNodePointerdown?: TreeNodeEventHandler;
150
+ onNodePointermove?: TreeNodeEventHandler;
151
+ onNodePointerup?: TreeNodeEventHandler;
152
+ onNodePointerenter?: TreeNodeEventHandler;
153
+ onNodePointerleave?: TreeNodeEventHandler;
154
+ onNodePointerover?: TreeNodeEventHandler;
155
+ onNodePointerout?: TreeNodeEventHandler;
156
+ onNodePointercancel?: TreeNodeEventHandler;
157
+ onNodeTouchstart?: TreeNodeEventHandler;
158
+ onNodeTouchmove?: TreeNodeEventHandler;
159
+ onNodeTouchend?: TreeNodeEventHandler;
160
+ onNodeTouchcancel?: TreeNodeEventHandler;
161
+ onNodeKeydown?: TreeNodeEventHandler;
162
+ onNodeKeyup?: TreeNodeEventHandler;
163
+ onNodeKeypress?: TreeNodeEventHandler;
164
+ onNodeLongPress?: TreeNodeEventHandler<PointerEvent>;
165
+ onNodeSwipeStart?: TreeNodeSwipeEventHandler;
166
+ onNodeSwipe?: TreeNodeSwipeEventHandler;
167
+ onNodeSwipeEnd?: TreeNodeSwipeEventHandler;
131
168
  filterTreeNode?: (node: TreeNodeData) => boolean;
132
169
  }
133
170
  export type Key2TreeNode = Map<TreeNodeKey, Node>;
@@ -140,6 +140,10 @@
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
+ }
143
147
  .sd-tree-node-indent {
144
148
  position: relative;
145
149
  flex-shrink: 0;
@@ -183,6 +183,10 @@ $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
+ }
186
190
  }
187
191
 
188
192
  &-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 } 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)[];
@@ -178,6 +178,35 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
178
178
  "update:checkedKeys": (_checkedKeys: (string | number)[]) => any;
179
179
  "update:halfCheckedKeys": (_halfCheckedKeys: (string | number)[]) => any;
180
180
  "update:expandedKeys": (_expandKeys: (string | number)[]) => any;
181
+ nodeClick: (_node: TreeNodeData, _event: Event) => any;
182
+ nodeDblclick: (_node: TreeNodeData, _event: Event) => any;
183
+ nodeContextmenu: (_node: TreeNodeData, _event: Event) => any;
184
+ nodeMouseover: (_node: TreeNodeData, _event: Event) => any;
185
+ nodeMouseenter: (_node: TreeNodeData, _event: Event) => any;
186
+ nodeMouseleave: (_node: TreeNodeData, _event: Event) => any;
187
+ nodeMousemove: (_node: TreeNodeData, _event: Event) => any;
188
+ nodeMouseout: (_node: TreeNodeData, _event: Event) => any;
189
+ nodeMousedown: (_node: TreeNodeData, _event: Event) => any;
190
+ nodeMouseup: (_node: TreeNodeData, _event: Event) => any;
191
+ nodePointerdown: (_node: TreeNodeData, _event: Event) => any;
192
+ nodePointermove: (_node: TreeNodeData, _event: Event) => any;
193
+ nodePointerup: (_node: TreeNodeData, _event: Event) => any;
194
+ nodePointerenter: (_node: TreeNodeData, _event: Event) => any;
195
+ nodePointerleave: (_node: TreeNodeData, _event: Event) => any;
196
+ nodePointerover: (_node: TreeNodeData, _event: Event) => any;
197
+ nodePointerout: (_node: TreeNodeData, _event: Event) => any;
198
+ nodePointercancel: (_node: TreeNodeData, _event: Event) => any;
199
+ nodeTouchstart: (_node: TreeNodeData, _event: Event) => any;
200
+ nodeTouchmove: (_node: TreeNodeData, _event: Event) => any;
201
+ nodeTouchend: (_node: TreeNodeData, _event: Event) => any;
202
+ nodeTouchcancel: (_node: TreeNodeData, _event: Event) => any;
203
+ nodeKeydown: (_node: TreeNodeData, _event: Event) => any;
204
+ nodeKeyup: (_node: TreeNodeData, _event: Event) => any;
205
+ nodeKeypress: (_node: TreeNodeData, _event: Event) => any;
206
+ nodeLongPress: (_node: TreeNodeData, _event: PointerEvent) => any;
207
+ nodeSwipeStart: (_node: TreeNodeData, _event: TouchEvent, _data: TreeNodeSwipeEventData) => any;
208
+ nodeSwipe: (_node: TreeNodeData, _event: TouchEvent, _data: TreeNodeSwipeEventData) => any;
209
+ nodeSwipeEnd: (_node: TreeNodeData, _event: TouchEvent, _data: TreeNodeSwipeEventData) => any;
181
210
  }, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
182
211
  size: {
183
212
  type: PropType<"mini" | "small" | "medium" | "large">;
@@ -327,6 +356,35 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
327
356
  "onUpdate:checkedKeys"?: ((_checkedKeys: (string | number)[]) => any) | undefined;
328
357
  "onUpdate:halfCheckedKeys"?: ((_halfCheckedKeys: (string | number)[]) => any) | undefined;
329
358
  "onUpdate:expandedKeys"?: ((_expandKeys: (string | number)[]) => any) | undefined;
359
+ onNodeClick?: ((_node: TreeNodeData, _event: Event) => any) | undefined;
360
+ onNodeDblclick?: ((_node: TreeNodeData, _event: Event) => any) | undefined;
361
+ onNodeContextmenu?: ((_node: TreeNodeData, _event: Event) => any) | undefined;
362
+ onNodeMouseover?: ((_node: TreeNodeData, _event: Event) => any) | undefined;
363
+ onNodeMouseenter?: ((_node: TreeNodeData, _event: Event) => any) | undefined;
364
+ onNodeMouseleave?: ((_node: TreeNodeData, _event: Event) => any) | undefined;
365
+ onNodeMousemove?: ((_node: TreeNodeData, _event: Event) => any) | undefined;
366
+ onNodeMouseout?: ((_node: TreeNodeData, _event: Event) => any) | undefined;
367
+ onNodeMousedown?: ((_node: TreeNodeData, _event: Event) => any) | undefined;
368
+ onNodeMouseup?: ((_node: TreeNodeData, _event: Event) => any) | undefined;
369
+ onNodePointerdown?: ((_node: TreeNodeData, _event: Event) => any) | undefined;
370
+ onNodePointermove?: ((_node: TreeNodeData, _event: Event) => any) | undefined;
371
+ onNodePointerup?: ((_node: TreeNodeData, _event: Event) => any) | undefined;
372
+ onNodePointerenter?: ((_node: TreeNodeData, _event: Event) => any) | undefined;
373
+ onNodePointerleave?: ((_node: TreeNodeData, _event: Event) => any) | undefined;
374
+ onNodePointerover?: ((_node: TreeNodeData, _event: Event) => any) | undefined;
375
+ onNodePointerout?: ((_node: TreeNodeData, _event: Event) => any) | undefined;
376
+ onNodePointercancel?: ((_node: TreeNodeData, _event: Event) => any) | undefined;
377
+ onNodeTouchstart?: ((_node: TreeNodeData, _event: Event) => any) | undefined;
378
+ onNodeTouchmove?: ((_node: TreeNodeData, _event: Event) => any) | undefined;
379
+ onNodeTouchend?: ((_node: TreeNodeData, _event: Event) => any) | undefined;
380
+ onNodeTouchcancel?: ((_node: TreeNodeData, _event: Event) => any) | undefined;
381
+ onNodeKeydown?: ((_node: TreeNodeData, _event: Event) => any) | undefined;
382
+ onNodeKeyup?: ((_node: TreeNodeData, _event: Event) => any) | undefined;
383
+ onNodeKeypress?: ((_node: TreeNodeData, _event: Event) => any) | undefined;
384
+ onNodeLongPress?: ((_node: TreeNodeData, _event: PointerEvent) => any) | undefined;
385
+ onNodeSwipeStart?: ((_node: TreeNodeData, _event: TouchEvent, _data: TreeNodeSwipeEventData) => any) | undefined;
386
+ onNodeSwipe?: ((_node: TreeNodeData, _event: TouchEvent, _data: TreeNodeSwipeEventData) => any) | undefined;
387
+ onNodeSwipeEnd?: ((_node: TreeNodeData, _event: TouchEvent, _data: TreeNodeSwipeEventData) => any) | undefined;
330
388
  }>, {
331
389
  size: "small" | "mini" | "medium" | "large";
332
390
  data: TreeNodeData[];
@@ -220,7 +220,36 @@ var tree_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCompo
220
220
  "dragEnd",
221
221
  "dragOver",
222
222
  "dragLeave",
223
- "drop"
223
+ "drop",
224
+ "nodeClick",
225
+ "nodeDblclick",
226
+ "nodeContextmenu",
227
+ "nodeMouseover",
228
+ "nodeMouseenter",
229
+ "nodeMouseleave",
230
+ "nodeMousemove",
231
+ "nodeMouseout",
232
+ "nodeMousedown",
233
+ "nodeMouseup",
234
+ "nodePointerdown",
235
+ "nodePointermove",
236
+ "nodePointerup",
237
+ "nodePointerenter",
238
+ "nodePointerleave",
239
+ "nodePointerover",
240
+ "nodePointerout",
241
+ "nodePointercancel",
242
+ "nodeTouchstart",
243
+ "nodeTouchmove",
244
+ "nodeTouchend",
245
+ "nodeTouchcancel",
246
+ "nodeKeydown",
247
+ "nodeKeyup",
248
+ "nodeKeypress",
249
+ "nodeLongPress",
250
+ "nodeSwipeStart",
251
+ "nodeSwipe",
252
+ "nodeSwipeEnd"
224
253
  ],
225
254
  setup(__props, { expose: __expose, emit: __emit }) {
226
255
  const TREE_VIRTUAL_ITEM_SIZE = {
@@ -561,6 +590,100 @@ var tree_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCompo
561
590
  const index = currentExpandKeys.value.indexOf(key);
562
591
  if (index > -1) currentExpandKeys.value.splice(index, 1);
563
592
  }
593
+ function onNodeEvent(eventName, key, event) {
594
+ const node = key2TreeNode.value.get(key);
595
+ if (!node) return;
596
+ const nodeData = node.treeNodeData;
597
+ switch (eventName) {
598
+ case "click":
599
+ emit("nodeClick", nodeData, event);
600
+ break;
601
+ case "dblclick":
602
+ emit("nodeDblclick", nodeData, event);
603
+ break;
604
+ case "contextmenu":
605
+ emit("nodeContextmenu", nodeData, event);
606
+ break;
607
+ case "mouseover":
608
+ emit("nodeMouseover", nodeData, event);
609
+ break;
610
+ case "mouseenter":
611
+ emit("nodeMouseenter", nodeData, event);
612
+ break;
613
+ case "mouseleave":
614
+ emit("nodeMouseleave", nodeData, event);
615
+ break;
616
+ case "mousemove":
617
+ emit("nodeMousemove", nodeData, event);
618
+ break;
619
+ case "mouseout":
620
+ emit("nodeMouseout", nodeData, event);
621
+ break;
622
+ case "mousedown":
623
+ emit("nodeMousedown", nodeData, event);
624
+ break;
625
+ case "mouseup":
626
+ emit("nodeMouseup", nodeData, event);
627
+ break;
628
+ case "pointerdown":
629
+ emit("nodePointerdown", nodeData, event);
630
+ break;
631
+ case "pointermove":
632
+ emit("nodePointermove", nodeData, event);
633
+ break;
634
+ case "pointerup":
635
+ emit("nodePointerup", nodeData, event);
636
+ break;
637
+ case "pointerenter":
638
+ emit("nodePointerenter", nodeData, event);
639
+ break;
640
+ case "pointerleave":
641
+ emit("nodePointerleave", nodeData, event);
642
+ break;
643
+ case "pointerover":
644
+ emit("nodePointerover", nodeData, event);
645
+ break;
646
+ case "pointerout":
647
+ emit("nodePointerout", nodeData, event);
648
+ break;
649
+ case "pointercancel":
650
+ emit("nodePointercancel", nodeData, event);
651
+ break;
652
+ case "touchstart":
653
+ emit("nodeTouchstart", nodeData, event);
654
+ break;
655
+ case "touchmove":
656
+ emit("nodeTouchmove", nodeData, event);
657
+ break;
658
+ case "touchend":
659
+ emit("nodeTouchend", nodeData, event);
660
+ break;
661
+ case "touchcancel":
662
+ emit("nodeTouchcancel", nodeData, event);
663
+ break;
664
+ case "keydown":
665
+ emit("nodeKeydown", nodeData, event);
666
+ break;
667
+ case "keyup":
668
+ emit("nodeKeyup", nodeData, event);
669
+ break;
670
+ case "keypress":
671
+ emit("nodeKeypress", nodeData, event);
672
+ break;
673
+ }
674
+ }
675
+ function onNodeLongPress(key, event) {
676
+ const node = key2TreeNode.value.get(key);
677
+ if (!node) return;
678
+ emit("nodeLongPress", node.treeNodeData, event);
679
+ }
680
+ function onNodeSwipe(eventName, key, event, swipeData) {
681
+ const node = key2TreeNode.value.get(key);
682
+ if (!node) return;
683
+ if (eventName === "swipeStart") emit("nodeSwipeStart", node.treeNodeData, event, swipeData);
684
+ else if (eventName === "swipe") emit("nodeSwipe", node.treeNodeData, event, swipeData);
685
+ else emit("nodeSwipeEnd", node.treeNodeData, event, swipeData);
686
+ }
564
687
  const treeContext = reactive({
565
688
  treeProps: props,
566
689
  switcherIcon,
@@ -604,6 +727,9 @@ var tree_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCompo
604
727
  onSelect,
605
728
  onExpand,
606
729
  onExpandEnd,
730
+ onNodeEvent,
731
+ onNodeLongPress,
732
+ onNodeSwipe,
607
733
  allowDrop(key, dropPosition) {
608
734
  const node = key2TreeNode.value.get(key);
609
735
  if (node && isFunction(allowDrop.value)) return !!allowDrop.value({
@@ -3962,6 +3962,15 @@
3962
3962
  "sd-tree/drop": {
3963
3963
  "description": "The node is released on a releasable target"
3964
3964
  },
3965
+ "sd-tree/node-click": {
3966
+ "description": "Triggered when basic DOM events are fired on the node title area"
3967
+ },
3968
+ "sd-tree/node-long-press": {
3969
+ "description": "Triggered when the node title area is long pressed"
3970
+ },
3971
+ "sd-tree/node-swipe-start": {
3972
+ "description": "Triggered when the node title area is swiped"
3973
+ },
3965
3974
  "sd-tree/size": {
3966
3975
  "description": "Size",
3967
3976
  "type": "string"
@@ -1598,6 +1598,9 @@
1598
1598
  "drag-over",
1599
1599
  "drag-leave",
1600
1600
  "drop",
1601
+ "node-click",
1602
+ "node-long-press",
1603
+ "node-swipe-start",
1601
1604
  "size",
1602
1605
  "block-node",
1603
1606
  "default-expand-all",
@@ -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.0.1",
5
+ "version": "3.0.2",
6
6
  "contributions": {
7
7
  "html": {
8
8
  "types-syntax": "typescript",
@@ -9807,6 +9807,18 @@
9807
9807
  {
9808
9808
  "name": "drop",
9809
9809
  "description": "The node is released on a releasable target"
9810
+ },
9811
+ {
9812
+ "name": "node-click",
9813
+ "description": "Triggered when basic DOM events are fired on the node title area"
9814
+ },
9815
+ {
9816
+ "name": "node-long-press",
9817
+ "description": "Triggered when the node title area is long pressed"
9818
+ },
9819
+ {
9820
+ "name": "node-swipe-start",
9821
+ "description": "Triggered when the node title area is swiped"
9810
9822
  }
9811
9823
  ],
9812
9824
  "slots": []
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sdata/web-vue",
3
- "version": "3.0.2",
3
+ "version": "3.1.0",
4
4
  "description": "SD Design Vue: A Vue.js 3 UI Library",
5
5
  "keywords": [
6
6
  "sd",