bkui-vue 2.1.0-dev-beta.12 → 2.1.0-dev-beta.13

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/lib/index.js CHANGED
@@ -3,5 +3,5 @@ export * from './hooks';
3
3
  export { default } from './preset';
4
4
  export * from './config-provider';
5
5
  export * from './directives';
6
- export const version = "2.1.0-dev-beta.12";
6
+ export const version = "2.1.0-dev-beta.13";
7
7
  window.__bkui_vue_version__ = version;
@@ -80,6 +80,9 @@ declare const BkTree: {
80
80
  dragSortMode: import("vue-types").VueTypeDef<string> & {
81
81
  default: string;
82
82
  };
83
+ dragTargetOpenState: import("vue-types").VueTypeDef<string> & {
84
+ default: string;
85
+ };
83
86
  selectable: import("vue-types").VueTypeDef<any> & {
84
87
  default: any;
85
88
  };
@@ -191,6 +194,7 @@ declare const BkTree: {
191
194
  dragThreshold: number;
192
195
  dragSort: boolean;
193
196
  dragSortMode: string;
197
+ dragTargetOpenState: string;
194
198
  selectable: any;
195
199
  disabledFolderSelectable: boolean;
196
200
  showCheckbox: any;
@@ -291,6 +295,9 @@ declare const BkTree: {
291
295
  dragSortMode: import("vue-types").VueTypeDef<string> & {
292
296
  default: string;
293
297
  };
298
+ dragTargetOpenState: import("vue-types").VueTypeDef<string> & {
299
+ default: string;
300
+ };
294
301
  selectable: import("vue-types").VueTypeDef<any> & {
295
302
  default: any;
296
303
  };
@@ -387,6 +394,7 @@ declare const BkTree: {
387
394
  dragThreshold: number;
388
395
  dragSort: boolean;
389
396
  dragSortMode: string;
397
+ dragTargetOpenState: string;
390
398
  selectable: any;
391
399
  disabledFolderSelectable: boolean;
392
400
  showCheckbox: any;
@@ -484,6 +492,9 @@ declare const BkTree: {
484
492
  dragSortMode: import("vue-types").VueTypeDef<string> & {
485
493
  default: string;
486
494
  };
495
+ dragTargetOpenState: import("vue-types").VueTypeDef<string> & {
496
+ default: string;
497
+ };
487
498
  selectable: import("vue-types").VueTypeDef<any> & {
488
499
  default: any;
489
500
  };
@@ -595,6 +606,7 @@ declare const BkTree: {
595
606
  dragThreshold: number;
596
607
  dragSort: boolean;
597
608
  dragSortMode: string;
609
+ dragTargetOpenState: string;
598
610
  selectable: any;
599
611
  disabledFolderSelectable: boolean;
600
612
  showCheckbox: any;
package/lib/tree/index.js CHANGED
@@ -17717,6 +17717,13 @@ var treeProps = {
17717
17717
  * 默认 any
17718
17718
  */
17719
17719
  dragSortMode: shared_namespaceObject.PropTypes.oneOf(['any', 'next']).def('any'),
17720
+ /**
17721
+ * 拖拽添加为子节点后,目标节点的展开状态
17722
+ * - expand: 展开目标节点
17723
+ * - collapse: 收起目标节点
17724
+ * - inherit: 保持目标节点当前展开收起状态
17725
+ */
17726
+ dragTargetOpenState: shared_namespaceObject.PropTypes.oneOf(['expand', 'collapse', 'inherit']).def('inherit'),
17720
17727
  /**
17721
17728
  * 节点是否可以选中
17722
17729
  */
@@ -19563,9 +19570,24 @@ var use_node_action_this = undefined;
19563
19570
  }
19564
19571
  return 'after';
19565
19572
  };
19566
- var getDropInfo = function getDropInfo(dropPosition) {
19573
+ var getDropInfo = function getDropInfo(draggedId, relatedId, dropPosition) {
19574
+ var draggedData = getSourceNodeByUID(draggedId);
19575
+ var relatedData = getSourceNodeByUID(relatedId);
19576
+ var isSameParent = !!draggedData && !!relatedData && getParentNode(draggedData) === getParentNode(relatedData);
19577
+ if (props.dragSort && isSameParent && dropPosition !== 'inside') {
19578
+ return {
19579
+ dropType: 'sort',
19580
+ willInsertAfter: dropPosition === 'after'
19581
+ };
19582
+ }
19583
+ if (dropPosition === 'inside') {
19584
+ return {
19585
+ dropType: 'child',
19586
+ willInsertAfter: false
19587
+ };
19588
+ }
19567
19589
  return {
19568
- dropType: dropPosition === 'inside' ? 'child' : props.dragSort ? 'sort' : 'move',
19590
+ dropType: 'move',
19569
19591
  willInsertAfter: dropPosition === 'after'
19570
19592
  };
19571
19593
  };
@@ -19646,7 +19668,11 @@ var use_node_action_this = undefined;
19646
19668
  if (!draggedData || !relatedData || draggedId === relatedId || isDescendantTarget(draggedData, relatedData)) {
19647
19669
  return false;
19648
19670
  }
19649
- if (dropType === 'sort' && props.dragSortMode === 'next' && getParentNode(draggedData) !== getParentNode(relatedData)) {
19671
+ var isSameParent = getParentNode(draggedData) === getParentNode(relatedData);
19672
+ if (dropType === 'sort' && (!props.dragSort || !isSameParent)) {
19673
+ return false;
19674
+ }
19675
+ if (props.dragSort && props.dragSortMode === 'next' && (dropType !== 'sort' || !isSameParent)) {
19650
19676
  return false;
19651
19677
  }
19652
19678
  return !isDropDisabled(draggedId, relatedId, dropType);
@@ -19682,7 +19708,7 @@ var use_node_action_this = undefined;
19682
19708
  var relatedId = getNodeIdByEl(relatedEl);
19683
19709
  if (!relatedEl || !relatedId) return;
19684
19710
  var dropPosition = getDropPosition(event, relatedEl);
19685
- var _getDropInfo = getDropInfo(dropPosition),
19711
+ var _getDropInfo = getDropInfo(dragNodeId, relatedId, dropPosition),
19686
19712
  dropType = _getDropInfo.dropType,
19687
19713
  willInsertAfter = _getDropInfo.willInsertAfter;
19688
19714
  var droppable = canDrop(dragNodeId, relatedId, dropType);
@@ -19715,7 +19741,7 @@ var use_node_action_this = undefined;
19715
19741
  event.stopPropagation();
19716
19742
  event.preventDefault();
19717
19743
  var dropPosition = targetEl ? getDropPosition(event, targetEl) : 'inside';
19718
- var _getDropInfo2 = getDropInfo(dropPosition),
19744
+ var _getDropInfo2 = getDropInfo(dragNodeId, targetId, dropPosition),
19719
19745
  dropType = _getDropInfo2.dropType,
19720
19746
  willInsertAfter = _getDropInfo2.willInsertAfter;
19721
19747
  var sourceNodeData = getSourceNodeByUID(dragNodeId);
@@ -20512,7 +20538,7 @@ var use_tree_init_this = undefined;
20512
20538
  var _useIntersectionObser = use_intersection_observer(props),
20513
20539
  getLastVisibleElement = _useIntersectionObser.getLastVisibleElement,
20514
20540
  intersectionObserver = _useIntersectionObser.intersectionObserver;
20515
- var collectOpenNodeIds = function collectOpenNodeIds(_payload) {
20541
+ var collectOpenNodeIds = function collectOpenNodeIds() {
20516
20542
  var openNodeIds = new Set();
20517
20543
  flatData.data.forEach(function (node) {
20518
20544
  if (isNodeOpened(node)) {
@@ -20521,17 +20547,57 @@ var use_tree_init_this = undefined;
20521
20547
  });
20522
20548
  return openNodeIds;
20523
20549
  };
20524
- var restoreOpenNodes = function restoreOpenNodes(openNodeIds) {
20525
- flatData.data.forEach(function (node) {
20526
- setNodeAttribute(node, NODE_ATTRIBUTES.IS_OPEN, openNodeIds.has("".concat(getNodeId(node))));
20550
+ var getSourceNodeId = function getSourceNodeId(node) {
20551
+ return "".concat(node === null || node === void 0 ? void 0 : node[props.nodeKey || NODE_ATTRIBUTES.UUID]);
20552
+ };
20553
+ var getSourceChildren = function getSourceChildren(node) {
20554
+ return (node === null || node === void 0 ? void 0 : node[props.children]) || [];
20555
+ };
20556
+ var sourceOpenAttr = NODE_SOURCE_ATTRS[NODE_ATTRIBUTES.IS_OPEN];
20557
+ var _removeOpenState = function removeOpenState(node, openNodeIds) {
20558
+ openNodeIds["delete"](getSourceNodeId(node));
20559
+ getSourceChildren(node).forEach(function (child) {
20560
+ _removeOpenState(child, openNodeIds);
20527
20561
  });
20528
20562
  };
20563
+ var syncDragTargetOpenState = function syncDragTargetOpenState(openNodeIds, payload) {
20564
+ if (payload.trigger !== 'drag' || payload.dropType !== 'child' || !payload.targetNode) {
20565
+ return;
20566
+ }
20567
+ var targetOpenState = props.dragTargetOpenState || 'inherit';
20568
+ if (targetOpenState === 'inherit') {
20569
+ return;
20570
+ }
20571
+ var targetNodeId = getSourceNodeId(payload.targetNode);
20572
+ if (targetOpenState === 'expand') {
20573
+ openNodeIds.add(targetNodeId);
20574
+ }
20575
+ if (targetOpenState === 'collapse') {
20576
+ _removeOpenState(payload.targetNode, openNodeIds);
20577
+ }
20578
+ };
20579
+ var _syncSourceOpenState = function syncSourceOpenState(treeData, openNodeIds) {
20580
+ var parentOpened = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
20581
+ treeData.forEach(function (node) {
20582
+ var isOpen = parentOpened && openNodeIds.has(getSourceNodeId(node));
20583
+ if (isOpen || !parentOpened || Object.prototype.hasOwnProperty.call(node, sourceOpenAttr)) {
20584
+ node[sourceOpenAttr] = isOpen;
20585
+ }
20586
+ _syncSourceOpenState(getSourceChildren(node), openNodeIds, isOpen);
20587
+ });
20588
+ };
20589
+ var normalizeDragOpenState = function normalizeDragOpenState(payload) {
20590
+ var openNodeIds = collectOpenNodeIds();
20591
+ syncDragTargetOpenState(openNodeIds, payload);
20592
+ _syncSourceOpenState(payload.data, openNodeIds);
20593
+ };
20529
20594
  var onTreeDataChange = function onTreeDataChange(payload) {
20530
20595
  var _payload$data, _props$onDataChange;
20531
- var openNodeIds = collectOpenNodeIds(payload);
20596
+ if (payload.trigger === 'drag') {
20597
+ normalizeDragOpenState(payload);
20598
+ }
20532
20599
  treeDataRef.value = (_payload$data = payload.data) !== null && _payload$data !== void 0 ? _payload$data : [];
20533
20600
  rebuildData(treeDataRef.value);
20534
- restoreOpenNodes(openNodeIds);
20535
20601
  ctx.emit(EVENTS.NODE_DATA_CHANGE, payload);
20536
20602
  (_props$onDataChange = props.onDataChange) === null || _props$onDataChange === void 0 || _props$onDataChange.call(props, payload);
20537
20603
  };
@@ -13,11 +13,19 @@ export type TreeNode = {
13
13
  };
14
14
  /**
15
15
  * 拖拽放置类型
16
- * - child: 作为目标节点的子节点
17
- * - move: 作为目标节点的同级节点(非排序模式)
18
- * - sort: 同父节点下排序(排序模式)
16
+ * - 同父级节点,落在目标节点前/后:dropType = 'sort'
17
+ * - 同父级节点,落在目标节点中间作为直接子节点:dropType = 'child'
18
+ * - 非同父级等其他情况:dropType = 'move'
19
+ * 非同父级等其他情况:dropType = 'move'
19
20
  */
20
21
  export type DropType = 'child' | 'move' | 'sort';
22
+ /**
23
+ * 拖拽添加为子节点后,目标节点的展开状态
24
+ * - expand: 展开目标节点
25
+ * - collapse: 收起目标节点
26
+ * - inherit: 保持目标节点当前展开收起状态
27
+ */
28
+ export type DragTargetOpenState = 'collapse' | 'expand' | 'inherit';
21
29
  export type DisableDropHandler = (data: TreeNode, type: DropType, target: TreeNode) => boolean;
22
30
  export type TreeDataChangeTrigger = 'async' | 'drag';
23
31
  export type TreeDataChangePayload = {
@@ -217,6 +225,15 @@ export declare const treeProps: {
217
225
  dragSortMode: import("vue-types").VueTypeDef<string> & {
218
226
  default: string;
219
227
  };
228
+ /**
229
+ * 拖拽添加为子节点后,目标节点的展开状态
230
+ * - expand: 展开目标节点
231
+ * - collapse: 收起目标节点
232
+ * - inherit: 保持目标节点当前展开收起状态
233
+ */
234
+ dragTargetOpenState: import("vue-types").VueTypeDef<string> & {
235
+ default: string;
236
+ };
220
237
  /**
221
238
  * 节点是否可以选中
222
239
  */
@@ -85,6 +85,9 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
85
85
  dragSortMode: import("vue-types").VueTypeDef<string> & {
86
86
  default: string;
87
87
  };
88
+ dragTargetOpenState: import("vue-types").VueTypeDef<string> & {
89
+ default: string;
90
+ };
88
91
  selectable: import("vue-types").VueTypeDef<any> & {
89
92
  default: any;
90
93
  };
@@ -242,6 +245,9 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
242
245
  dragSortMode: import("vue-types").VueTypeDef<string> & {
243
246
  default: string;
244
247
  };
248
+ dragTargetOpenState: import("vue-types").VueTypeDef<string> & {
249
+ default: string;
250
+ };
245
251
  selectable: import("vue-types").VueTypeDef<any> & {
246
252
  default: any;
247
253
  };
@@ -338,6 +344,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
338
344
  dragThreshold: number;
339
345
  dragSort: boolean;
340
346
  dragSortMode: string;
347
+ dragTargetOpenState: string;
341
348
  selectable: any;
342
349
  disabledFolderSelectable: boolean;
343
350
  showCheckbox: any;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bkui-vue",
3
- "version": "2.1.0-dev-beta.12",
3
+ "version": "2.1.0-dev-beta.13",
4
4
  "workspaces": [
5
5
  "packages/**",
6
6
  "scripts/cli",