bkui-vue 2.0.2-beta.3 → 2.0.2-beta.30

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 (61) hide show
  1. package/dist/{style.css → cli.css} +1 -1
  2. package/dist/index.cjs.js +132 -132
  3. package/dist/index.esm.js +15752 -14466
  4. package/dist/index.umd.js +132 -132
  5. package/dist/style.variable.css +1 -1
  6. package/lib/cascader/cascader.d.ts +1 -0
  7. package/lib/cascader/index.d.ts +3 -0
  8. package/lib/cascader/index.js +97 -54
  9. package/lib/checkbox/index.js +1 -1
  10. package/lib/color-picker/index.js +20 -16
  11. package/lib/components.d.ts +1 -2
  12. package/lib/components.js +1 -2
  13. package/lib/date-picker/date-picker.css +220 -4
  14. package/lib/date-picker/date-picker.less +5 -5
  15. package/lib/date-picker/date-picker.variable.css +237 -21
  16. package/lib/date-picker/index.js +53 -58
  17. package/lib/date-picker/panel/time.d.ts +1 -1
  18. package/lib/date-picker/utils.d.ts +5 -17
  19. package/lib/directives/index.js +17 -13
  20. package/lib/form/form-item.d.ts +16 -0
  21. package/lib/form/index.d.ts +11 -0
  22. package/lib/form/index.js +26 -18
  23. package/lib/image/index.js +7 -10
  24. package/lib/index.d.ts +0 -1
  25. package/lib/index.js +1 -2
  26. package/lib/input/index.d.ts +39 -20
  27. package/lib/input/index.js +24 -21
  28. package/lib/input/input.d.ts +30 -16
  29. package/lib/message/index.js +1 -1
  30. package/lib/modal/index.js +2 -1
  31. package/lib/pop-confirm/index.d.ts +600 -2
  32. package/lib/pop-confirm/index.js +20 -8
  33. package/lib/pop-confirm/pop-confirm.d.ts +297 -1
  34. package/lib/pop-confirm/props.d.ts +146 -0
  35. package/lib/popover/index.js +7 -10
  36. package/lib/search-select/index.d.ts +3 -3
  37. package/lib/search-select/index.js +13 -20
  38. package/lib/search-select/search-select.d.ts +1 -1
  39. package/lib/select/index.d.ts +19 -0
  40. package/lib/select/index.js +15 -16
  41. package/lib/select/select.d.ts +10 -0
  42. package/lib/sideslider/index.js +3 -1
  43. package/lib/slider/index.js +2 -1
  44. package/lib/tab/index.js +7 -10
  45. package/lib/table/index.js +7 -15
  46. package/lib/tag-input/index.d.ts +3 -0
  47. package/lib/tag-input/index.js +35 -24
  48. package/lib/tag-input/tag-input.d.ts +1 -0
  49. package/lib/tree/index.d.ts +4 -0
  50. package/lib/tree/index.js +135 -55
  51. package/lib/tree/props.d.ts +1 -0
  52. package/lib/tree/tree.css +46 -0
  53. package/lib/tree/tree.d.ts +2 -0
  54. package/lib/tree/tree.less +57 -2
  55. package/lib/tree/tree.variable.css +46 -0
  56. package/lib/tree/use-node-action.d.ts +2 -2
  57. package/package.json +1 -1
  58. package/lib/plugin-popover/index.d.ts +0 -27
  59. package/lib/plugin-popover/index.js +0 -65
  60. package/lib/plugins/index.d.ts +0 -1
  61. package/lib/plugins/index.js +0 -64
package/lib/tree/index.js CHANGED
@@ -12,6 +12,7 @@ import * as __WEBPACK_EXTERNAL_MODULE_lodash_isElement_e6b2a6ce__ from "lodash/i
12
12
  import * as __WEBPACK_EXTERNAL_MODULE_bkui_vue_lib_checkbox_13b1cb4a__ from "../checkbox";
13
13
  import "../checkbox/checkbox.less";
14
14
  import * as __WEBPACK_EXTERNAL_MODULE_bkui_vue_lib_icon_a97c79c3__ from "../icon";
15
+ import * as __WEBPACK_EXTERNAL_MODULE_lodash_throttle_a7b7506a__ from "lodash/throttle";
15
16
  /******/ // The require scope
16
17
  /******/ var __webpack_require__ = {};
17
18
  /******/
@@ -338,7 +339,12 @@ var treeProps = {
338
339
  * 可选值:once 只在初始化是执行一次
339
340
  * every 每次数据更新都执行
340
341
  */
341
- deepAutoOpen: (0,external_vue_types_namespaceObject.toType)('columnType', {}).def(ColumnTypeEnum.ONCE)
342
+ deepAutoOpen: (0,external_vue_types_namespaceObject.toType)('columnType', {}).def(ColumnTypeEnum.ONCE),
343
+ /**
344
+ * 触发异步加载的时机
345
+ * 可选值:'expand', 'click', 'checked'
346
+ */
347
+ trigger: shared_namespaceObject.PropTypes.arrayOf(shared_namespaceObject.PropTypes.oneOf(['expand', 'click', 'checked'])).def(null)
342
348
  }),
343
349
  /**
344
350
  * 每个节点偏移左侧距离
@@ -835,10 +841,14 @@ const icon_namespaceObject = icon_x({ ["DownShape"]: () => __WEBPACK_EXTERNAL_MO
835
841
  });
836
842
  };
837
843
  var getParentNodeData = function getParentNodeData(node) {
838
- if (isRootNode(node)) {
844
+ var target = node;
845
+ if (typeof target === 'string') {
846
+ target = getSourceNodeByUID(target);
847
+ }
848
+ if (isRootNode(target)) {
839
849
  return _defineProperty({}, props.children, props.data);
840
850
  }
841
- return getParentNode(node);
851
+ return getParentNode(target);
842
852
  };
843
853
  /**
844
854
  * 处理scoped slot 透传数据
@@ -1460,6 +1470,14 @@ var use_node_action_this = undefined;
1460
1470
  deepUpdateChildNode(chid, attr, value);
1461
1471
  });
1462
1472
  };
1473
+ var isRemoteFnExec = function isRemoteFnExec(event) {
1474
+ var _props$async;
1475
+ if ((_props$async = props.async) !== null && _props$async !== void 0 && (_props$async = _props$async.trigger) !== null && _props$async !== void 0 && _props$async.length) {
1476
+ var _props$async2;
1477
+ return (_props$async2 = props.async) === null || _props$async2 === void 0 ? void 0 : _props$async2.trigger.includes(event);
1478
+ }
1479
+ return true;
1480
+ };
1463
1481
  var handleNodeItemCheckboxChange = function handleNodeItemCheckboxChange(item, value, event) {
1464
1482
  event === null || event === void 0 || event.preventDefault();
1465
1483
  event === null || event === void 0 || event.stopImmediatePropagation();
@@ -1477,7 +1495,7 @@ var use_node_action_this = undefined;
1477
1495
  }), flatData.data.filter(function (t) {
1478
1496
  return isIndeterminate(t);
1479
1497
  }));
1480
- handleNodeContentClick(item, event);
1498
+ handleNodeContentClick(item, event, 'checked');
1481
1499
  };
1482
1500
  var isIndeterminate = function isIndeterminate(item) {
1483
1501
  return isNodeChecked(item) && getNodeAttr(item, NODE_ATTRIBUTES.IS_INDETERMINATE);
@@ -1487,6 +1505,7 @@ var use_node_action_this = undefined;
1487
1505
  return null;
1488
1506
  }
1489
1507
  return (0,external_vue_namespaceObject.createVNode)("span", {
1508
+ "class": "node-check-box",
1490
1509
  "onClick": handleNodeCheckboxClick
1491
1510
  }, [(0,external_vue_namespaceObject.createVNode)(checkbox_namespaceObject["default"], {
1492
1511
  "indeterminate": isIndeterminate(item),
@@ -1586,25 +1605,27 @@ var use_node_action_this = undefined;
1586
1605
  * 节点点击
1587
1606
  * @param item
1588
1607
  */
1589
- var handleTreeNodeClick = function handleTreeNodeClick(item, e) {
1608
+ var handleTreeNodeClick = function handleTreeNodeClick(item, e, event) {
1590
1609
  var isOpen = isItemOpen(item);
1591
1610
  if (isOpen) {
1592
1611
  setNodeOpened(item, false, e, true);
1593
1612
  return;
1594
1613
  }
1595
- /** 如果是异步请求加载 */
1596
- asyncNodeClick(item)["finally"](function () {
1597
- if (getNodeAttr(item, NODE_ATTRIBUTES.IS_LOADING)) {
1598
- registerNextLoop('setNodeOpenedAfterLoading', {
1599
- type: 'once',
1600
- fn: function fn() {
1601
- return setNodeOpened(item, true, e, true);
1602
- }
1603
- });
1604
- } else {
1605
- setNodeOpened(item, true, e, true);
1606
- }
1607
- });
1614
+ if (isRemoteFnExec(event)) {
1615
+ /** 如果是异步请求加载 */
1616
+ asyncNodeClick(item)["finally"](function () {
1617
+ if (getNodeAttr(item, NODE_ATTRIBUTES.IS_LOADING)) {
1618
+ registerNextLoop('setNodeOpenedAfterLoading', {
1619
+ type: 'once',
1620
+ fn: function fn() {
1621
+ return setNodeOpened(item, true, e, true);
1622
+ }
1623
+ });
1624
+ } else {
1625
+ setNodeOpened(item, true, e, true);
1626
+ }
1627
+ });
1628
+ }
1608
1629
  };
1609
1630
  /**
1610
1631
  * 点击树形节点展开、收起图标处理事件
@@ -1615,7 +1636,7 @@ var use_node_action_this = undefined;
1615
1636
  e.stopImmediatePropagation();
1616
1637
  e.stopPropagation();
1617
1638
  e.preventDefault();
1618
- handleTreeNodeClick(node, e);
1639
+ handleTreeNodeClick(node, e, 'expand');
1619
1640
  };
1620
1641
  /**
1621
1642
  * 设置节点选中状态
@@ -1629,6 +1650,7 @@ var use_node_action_this = undefined;
1629
1650
  var selected = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
1630
1651
  var autoOpen = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
1631
1652
  var triggerEvent = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
1653
+ var event = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : '';
1632
1654
  var nodeList = Array.isArray(nodes) ? nodes : [nodes];
1633
1655
  if (!nodeList.length) {
1634
1656
  return;
@@ -1673,12 +1695,14 @@ var use_node_action_this = undefined;
1673
1695
  * 处理异步节点多层级展开选中
1674
1696
  */
1675
1697
  if (getNodeAttr(resolvedItem, NODE_ATTRIBUTES.IS_ASYNC)) {
1676
- asyncNodeClick(resolvedItem).then(function () {
1677
- (0,external_vue_namespaceObject.nextTick)(function () {
1678
- nodeList.shift();
1679
- setSelect(nodeList, selected, autoOpen);
1698
+ if (isRemoteFnExec(event)) {
1699
+ asyncNodeClick(resolvedItem).then(function () {
1700
+ (0,external_vue_namespaceObject.nextTick)(function () {
1701
+ nodeList.shift();
1702
+ setSelect(nodeList, selected, autoOpen, triggerEvent, event);
1703
+ });
1680
1704
  });
1681
- });
1705
+ }
1682
1706
  }
1683
1707
  };
1684
1708
  var resolveNodeAction = function resolveNodeAction(node) {
@@ -1699,19 +1723,19 @@ var use_node_action_this = undefined;
1699
1723
  * 点击节点事件
1700
1724
  * @param item
1701
1725
  */
1702
- var handleNodeContentClick = function handleNodeContentClick(item, e) {
1726
+ var handleNodeContentClick = function handleNodeContentClick(item, e, event) {
1703
1727
  var nodeActions = resolveNodeAction(item);
1704
1728
  if (nodeActions.includes('selected')) {
1705
- setSelect(item, true, true, true);
1729
+ setSelect(item, true, true, true, event);
1706
1730
  }
1707
1731
  if (nodeActions.includes('expand')) {
1708
1732
  if (!isNodeOpened(item)) {
1709
- handleTreeNodeClick(item, e);
1733
+ handleTreeNodeClick(item, e, event);
1710
1734
  }
1711
1735
  }
1712
1736
  if (nodeActions.includes('collapse')) {
1713
1737
  if (isNodeOpened(item)) {
1714
- handleTreeNodeClick(item, e);
1738
+ handleTreeNodeClick(item, e, event);
1715
1739
  }
1716
1740
  }
1717
1741
  if (nodeActions.includes('click')) {
@@ -1805,6 +1829,7 @@ var use_node_action_this = undefined;
1805
1829
  var renderTreeNode = function renderTreeNode(item) {
1806
1830
  var _ctx$slots$nodeAppend, _ctx$slots4;
1807
1831
  var showTree = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
1832
+ var child = getActionIcon(item);
1808
1833
  return (0,external_vue_namespaceObject.createVNode)("div", {
1809
1834
  "key": getNodeId(item),
1810
1835
  "class": getNodeRowClass(item, flatData.schema),
@@ -1813,14 +1838,14 @@ var use_node_action_this = undefined;
1813
1838
  "style": getNodeItemStyle(item, props, flatData, showTree),
1814
1839
  "class": getNodeItemClass(item, flatData.schema, props, showTree),
1815
1840
  "onClick": function onClick(e) {
1816
- return handleNodeContentClick(item, e);
1841
+ return handleNodeContentClick(item, e, 'click');
1817
1842
  }
1818
1843
  }, [(0,external_vue_namespaceObject.createVNode)("div", {
1819
- "class": [resolveClassName('node-action')],
1844
+ "class": [resolveClassName('node-action'), child ? '' : 'empty-child'],
1820
1845
  "onClick": function onClick(e) {
1821
1846
  return handleNodeActionClick(e, item);
1822
1847
  }
1823
- }, [getActionIcon(item)]), (0,external_vue_namespaceObject.createVNode)("div", {
1848
+ }, [child]), (0,external_vue_namespaceObject.createVNode)("div", {
1824
1849
  "class": resolveClassName('node-content')
1825
1850
  }, [[getCheckboxRender(item), getNodePrefixIcon(item)], (0,external_vue_namespaceObject.createVNode)("span", {
1826
1851
  "class": resolveClassName('node-text')
@@ -1839,6 +1864,10 @@ var use_node_action_this = undefined;
1839
1864
  isIndeterminate: isIndeterminate
1840
1865
  };
1841
1866
  });
1867
+ ;// CONCATENATED MODULE: external "lodash/throttle"
1868
+ var throttle_x = y => { var x = {}; __webpack_require__.d(x, y); return x; }
1869
+ var throttle_y = x => () => x
1870
+ const throttle_namespaceObject = throttle_x({ ["default"]: () => __WEBPACK_EXTERNAL_MODULE_lodash_throttle_a7b7506a__["default"] });
1842
1871
  ;// CONCATENATED MODULE: ../../packages/tree/src/use-node-drag.tsx
1843
1872
  var use_node_drag_this = undefined;
1844
1873
  /*
@@ -1870,6 +1899,7 @@ var use_node_drag_this = undefined;
1870
1899
 
1871
1900
 
1872
1901
 
1902
+
1873
1903
  /* harmony default export */ const use_node_drag = (function (props, ctx, root, flatData) {
1874
1904
  var _useNodeAttribute = use_node_attribute(flatData, props),
1875
1905
  getSourceNodeByUID = _useNodeAttribute.getSourceNodeByUID,
@@ -1877,7 +1907,6 @@ var use_node_drag_this = undefined;
1877
1907
  getNodeParentIdById = _useNodeAttribute.getNodeParentIdById,
1878
1908
  extendNodeAttr = _useNodeAttribute.extendNodeAttr,
1879
1909
  getNodeAttrById = _useNodeAttribute.getNodeAttrById,
1880
- getNodePathById = _useNodeAttribute.getNodePathById,
1881
1910
  isRootNode = _useNodeAttribute.isRootNode;
1882
1911
  var _usePrefix = (0,config_provider_namespaceObject.usePrefix)(),
1883
1912
  resolveClassName = _usePrefix.resolveClassName;
@@ -1888,6 +1917,8 @@ var use_node_drag_this = undefined;
1888
1917
  return typeof props.disableDrop === 'function';
1889
1918
  });
1890
1919
  var dragNodeId = '';
1920
+ var draggedItem = null;
1921
+ var nodeRectMap = new WeakMap();
1891
1922
  var getTargetTreeNode = function getTargetTreeNode(e) {
1892
1923
  var target = e.target;
1893
1924
  return target.closest('[data-tree-node]');
@@ -1911,10 +1942,45 @@ var use_node_drag_this = undefined;
1911
1942
  targetNode.setAttribute('draggable', 'true');
1912
1943
  targetNode.addEventListener('mouseup', handleTreeNodeMouseup);
1913
1944
  };
1914
- var handleTreeNodeDragover = function handleTreeNodeDragover(e) {
1945
+ var dropBefore = 'drop-before';
1946
+ var dropAfter = 'drop-after';
1947
+ var dropInner = 'drop-inner';
1948
+ var dragOverItem = null;
1949
+ var handleTreeNodeDragover = (0,throttle_namespaceObject["default"])(function (e) {
1915
1950
  e.preventDefault();
1951
+ if (!draggedItem) return;
1916
1952
  var targetNode = getTargetTreeNode(e);
1953
+ if (dragOverItem !== targetNode) {
1954
+ var _dragOverItem;
1955
+ (_dragOverItem = dragOverItem) === null || _dragOverItem === void 0 || _dragOverItem.classList.remove(dropBefore, dropAfter, dropInner);
1956
+ dragOverItem = targetNode;
1957
+ }
1917
1958
  var data = extendNodeAttr(getNodeByTargetTreeNode(targetNode));
1959
+ if (!nodeRectMap.has(targetNode)) {
1960
+ nodeRectMap.set(targetNode, targetNode.getBoundingClientRect());
1961
+ }
1962
+ var clientY = e.clientY;
1963
+ var _nodeRectMap$get = nodeRectMap.get(targetNode),
1964
+ top = _nodeRectMap$get.top,
1965
+ height = _nodeRectMap$get.height;
1966
+ var threshold = height * 0.2;
1967
+ var offsetY = clientY - top;
1968
+ if (offsetY < threshold) {
1969
+ if (!targetNode.classList.contains(dropBefore)) {
1970
+ targetNode.classList.add(dropBefore);
1971
+ targetNode.classList.remove(dropAfter, dropInner);
1972
+ }
1973
+ } else if (offsetY > height - threshold) {
1974
+ if (!targetNode.classList.contains(dropAfter)) {
1975
+ targetNode.classList.add(dropAfter);
1976
+ targetNode.classList.remove(dropBefore, dropInner);
1977
+ }
1978
+ } else {
1979
+ if (!targetNode.classList.contains(dropInner)) {
1980
+ targetNode.classList.add(dropInner);
1981
+ targetNode.classList.remove(dropBefore, dropAfter);
1982
+ }
1983
+ }
1918
1984
  ctx.emit(EVENTS.NODE_DRAG_OVER, e, targetNode, data);
1919
1985
  if (isNeedCheckDroppable.value && props !== null && props !== void 0 && props.disableDrop(data)) {
1920
1986
  e.dataTransfer.effectAllowed = 'move';
@@ -1929,7 +1995,7 @@ var use_node_drag_this = undefined;
1929
1995
  var transferEffect = isNodeSortable(sourceNodeId, targetNodeId) ? 'move' : 'none';
1930
1996
  e.dataTransfer.effectAllowed = transferEffect;
1931
1997
  e.dataTransfer.dropEffect = transferEffect;
1932
- };
1998
+ });
1933
1999
  var handleTreeNodeDragStart = function handleTreeNodeDragStart(e) {
1934
2000
  e.dataTransfer.effectAllowed = 'move';
1935
2001
  e.dataTransfer.dropEffect = 'move';
@@ -1937,10 +2003,12 @@ var use_node_drag_this = undefined;
1937
2003
  e.dataTransfer.setData('text/plain', '');
1938
2004
  var nodeId = targetNode.getAttribute('data-tree-node');
1939
2005
  dragNodeId = nodeId;
2006
+ draggedItem = targetNode;
1940
2007
  e.dataTransfer.setData('node-id', nodeId);
1941
2008
  ctx.emit(EVENTS.NODE_DRAG_START, e, targetNode);
1942
2009
  };
1943
2010
  var handleTreeNodeDrop = function handleTreeNodeDrop(e) {
2011
+ var _dragOverItem5;
1944
2012
  /** firefox的drop事件必须调用preventDefault()和stopPropagation(), 否则会自动重定向 */
1945
2013
  e.preventDefault();
1946
2014
  e.stopPropagation();
@@ -1952,34 +2020,38 @@ var use_node_drag_this = undefined;
1952
2020
  }
1953
2021
  var sourceNodeId = dragNodeId; // e.dataTransfer.getData('node-id');
1954
2022
  var targetNodeId = targetNode.getAttribute('data-tree-node');
1955
- Reflect.apply(props.dragSort ? dragSortData : dragAsChildNode, use_node_drag_this, [sourceNodeId, targetNodeId]);
1956
- ctx.emit(EVENTS.NODE_DROP, e, targetNode, data);
2023
+ if (sourceNodeId !== targetNodeId) {
2024
+ var _dragOverItem2, _dragOverItem3, _dragOverItem4;
2025
+ if ((_dragOverItem2 = dragOverItem) !== null && _dragOverItem2 !== void 0 && _dragOverItem2.classList.contains(dropInner)) {
2026
+ Reflect.apply(dragAsChildNode, use_node_drag_this, [sourceNodeId, targetNodeId]);
2027
+ }
2028
+ if ((_dragOverItem3 = dragOverItem) !== null && _dragOverItem3 !== void 0 && _dragOverItem3.classList.contains(dropAfter) || (_dragOverItem4 = dragOverItem) !== null && _dragOverItem4 !== void 0 && _dragOverItem4.classList.contains(dropBefore)) {
2029
+ Reflect.apply(dragSortData, use_node_drag_this, [sourceNodeId, targetNodeId]);
2030
+ }
2031
+ ctx.emit(EVENTS.NODE_DROP, e, targetNode, data);
2032
+ }
2033
+ nodeRectMap = new WeakMap();
2034
+ (_dragOverItem5 = dragOverItem) === null || _dragOverItem5 === void 0 || _dragOverItem5.classList.remove(dropAfter, dropBefore, dropInner);
2035
+ dragOverItem = null;
1957
2036
  };
1958
2037
  var isNodeSortable = function isNodeSortable(sourceId, targetId) {
1959
- var sourcePath = getNodePathById(sourceId);
1960
- var targetPath = getNodePathById(targetId);
1961
- // if (!sourcePath || targetPath) {
1962
- // return false;
1963
- // }
1964
- var sourceParentNodeId = getNodeParentIdById(sourceId);
1965
- var targetParentNode = getNodeParentIdById(targetId);
1966
- if (sourceParentNodeId === targetParentNode) {
1967
- return true;
1968
- }
1969
- return sourcePath.indexOf(targetPath) === -1 && targetPath.indexOf(sourcePath) === -1;
2038
+ return sourceId !== targetId;
1970
2039
  };
1971
2040
  var dragSortData = function dragSortData(sourceId, targetId) {
1972
- if (!isNodeSortable(sourceId, targetId)) {
2041
+ var _dragOverItem6;
2042
+ if (!props.dragSort || !isNodeSortable(sourceId, targetId)) {
1973
2043
  return;
1974
2044
  }
1975
- var sourceNodeData = JSON.parse(JSON.stringify(getSourceNodeByUID(sourceId)));
1976
- var targetNodeData = JSON.parse(JSON.stringify(getSourceNodeByUID(targetId)));
2045
+ var sourceNodeData = getSourceNodeByUID(sourceId);
1977
2046
  var sourceNodeParent = getParentNodeData(sourceId);
1978
- var targetNodeParent = getParentNodeData(targetId);
1979
2047
  var sourceNodeIndex = getNodeAttrById(sourceId, NODE_ATTRIBUTES.INDEX);
2048
+ sourceNodeParent === null || sourceNodeParent === void 0 || sourceNodeParent[props.children].splice(sourceNodeIndex, 1);
1980
2049
  var targetNodeIndex = getNodeAttrById(targetId, NODE_ATTRIBUTES.INDEX);
1981
- sourceNodeParent === null || sourceNodeParent === void 0 || sourceNodeParent[props.children].splice(sourceNodeIndex, 1, targetNodeData);
1982
- targetNodeParent === null || targetNodeParent === void 0 || targetNodeParent[props.children].splice(targetNodeIndex, 1, sourceNodeData);
2050
+ if ((_dragOverItem6 = dragOverItem) !== null && _dragOverItem6 !== void 0 && _dragOverItem6.classList.contains(dropAfter)) {
2051
+ targetNodeIndex = targetNodeIndex + 1;
2052
+ }
2053
+ var targetNodeParent = getParentNodeData(targetId);
2054
+ targetNodeParent === null || targetNodeParent === void 0 || targetNodeParent[props.children].splice(targetNodeIndex, 0, sourceNodeData);
1983
2055
  };
1984
2056
  var dragAsChildNode = function dragAsChildNode(sourceNodeId, targetNodeId) {
1985
2057
  var sourceNodeData = getSourceNodeByUID(sourceNodeId);
@@ -2005,10 +2077,11 @@ var use_node_drag_this = undefined;
2005
2077
  e.preventDefault();
2006
2078
  var targetNode = getTargetTreeNode(e);
2007
2079
  targetNode.classList.remove("".concat(resolveClassName('tree-drop-active')), "".concat(resolveClassName('tree-drop-disabled')));
2080
+ targetNode.classList.remove(dropAfter, dropBefore, dropInner);
2008
2081
  ctx.emit(EVENTS.NODE_DRAG_LEAVE, e, targetNode);
2009
2082
  };
2010
2083
  (0,external_vue_namespaceObject.onMounted)(function () {
2011
- if (props.draggable && root.value) {
2084
+ if ((props.draggable || props.dragSort) && root.value) {
2012
2085
  var rootTree = root.value.$el;
2013
2086
  rootTree.addEventListener('mousedown', handleTreeNodeMousedown);
2014
2087
  rootTree.addEventListener('dragstart', handleTreeNodeDragStart);
@@ -2018,7 +2091,7 @@ var use_node_drag_this = undefined;
2018
2091
  }
2019
2092
  });
2020
2093
  (0,external_vue_namespaceObject.onUnmounted)(function () {
2021
- if (props.draggable && root.value) {
2094
+ if ((props.draggable || props.dragSort) && root.value) {
2022
2095
  var rootTree = root.value.$el;
2023
2096
  rootTree.removeEventListener('mousedown', handleTreeNodeMousedown);
2024
2097
  rootTree.removeEventListener('dragstart', handleTreeNodeDragStart);
@@ -2650,6 +2723,7 @@ var use_tree_init_this = undefined;
2650
2723
  getNodePath = _useNodeAttribute.getNodePath,
2651
2724
  getNodeId = _useNodeAttribute.getNodeId,
2652
2725
  getNodeAttr = _useNodeAttribute.getNodeAttr,
2726
+ getNodeById = _useNodeAttribute.getNodeById,
2653
2727
  getParentNode = _useNodeAttribute.getParentNode,
2654
2728
  getIntersectionResponse = _useNodeAttribute.getIntersectionResponse;
2655
2729
  var _useSearch = use_search(props),
@@ -2795,6 +2869,11 @@ var use_tree_init_this = undefined;
2795
2869
  return;
2796
2870
  }
2797
2871
  };
2872
+ var setCheckedById = function setCheckedById(id) {
2873
+ var checked = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
2874
+ var triggerEvent = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
2875
+ setChecked(getNodeById(id), checked, triggerEvent);
2876
+ };
2798
2877
  ctx.expose({
2799
2878
  handleTreeNodeClick: handleTreeNodeClick,
2800
2879
  isNodeChecked: isNodeChecked,
@@ -2804,6 +2883,7 @@ var use_tree_init_this = undefined;
2804
2883
  hasChildNode: hasChildNode,
2805
2884
  setOpen: setOpen,
2806
2885
  setChecked: setChecked,
2886
+ setCheckedById: setCheckedById,
2807
2887
  setNodeAction: setNodeAction,
2808
2888
  setNodeOpened: setOpen,
2809
2889
  setSelect: setSelect,
@@ -240,6 +240,7 @@ type AsyncOption = {
240
240
  callback: (item: any, cb: any) => Promise<VNode | string>;
241
241
  cache: boolean;
242
242
  deepAutoOpen?: string;
243
+ trigger?: string[];
243
244
  };
244
245
  export type IIntersectionObserver = {
245
246
  enabled: boolean;
package/lib/tree/tree.css CHANGED
@@ -257,13 +257,33 @@
257
257
  }
258
258
  .bk-tree {
259
259
  font-size: 14px;
260
+ position: relative;
260
261
  }
261
262
  .bk-tree .bk-node-row {
262
263
  padding-left: calc(var(--offset-left));
264
+ position: relative;
263
265
  }
264
266
  .bk-tree .bk-node-row.is-selected {
265
267
  background-color: #ebf2ff;
266
268
  }
269
+ .bk-tree .bk-node-row.drop-before::before {
270
+ content: '';
271
+ position: absolute;
272
+ top: 0;
273
+ left: 0;
274
+ right: 0;
275
+ height: 1px;
276
+ background-color: #2196F3;
277
+ }
278
+ .bk-tree .bk-node-row.drop-after::before {
279
+ content: '';
280
+ position: absolute;
281
+ bottom: 0;
282
+ left: 0;
283
+ right: 0;
284
+ height: 1px;
285
+ background-color: #2196F3;
286
+ }
267
287
  .bk-tree-node {
268
288
  position: relative;
269
289
  display: flex;
@@ -276,6 +296,20 @@
276
296
  .bk-tree-node:not(.is-root) {
277
297
  margin-left: calc(var(--depth)*var(--indent));
278
298
  }
299
+ .bk-tree-node:not(.is-root).level-line .bk-node-action.empty-child {
300
+ position: relative;
301
+ }
302
+ .bk-tree-node:not(.is-root).level-line .bk-node-action.empty-child::before {
303
+ position: absolute;
304
+ top: calc(50% + 1px);
305
+ left: 0;
306
+ right: 0;
307
+ z-index: 1;
308
+ height: 0;
309
+ pointer-events: none;
310
+ border-bottom: var(--level-line);
311
+ content: '';
312
+ }
279
313
  .bk-tree-node:not(.is-root).level-line::before {
280
314
  position: absolute;
281
315
  top: calc(50% + 1px);
@@ -309,6 +343,7 @@
309
343
  .bk-tree-node .bk-node-action {
310
344
  margin-right: 6px;
311
345
  color: #979ba5;
346
+ min-width: 14px;
312
347
  }
313
348
  .bk-tree-node .bk-tree-icon {
314
349
  margin: 0 6px 0 4px;
@@ -319,6 +354,9 @@
319
354
  align-items: center;
320
355
  min-width: 0;
321
356
  }
357
+ .bk-tree-node .bk-node-content .node-check-box {
358
+ display: inline-flex;
359
+ }
322
360
  .bk-tree-node .bk-node-content .bk-checkbox {
323
361
  margin: 0;
324
362
  }
@@ -340,3 +378,11 @@
340
378
  .bk-tree-drop-disabled .bk-tree-node {
341
379
  cursor: no-drop;
342
380
  }
381
+ .bk-tree .insert-line {
382
+ position: absolute;
383
+ height: 2px;
384
+ background: #2196F3;
385
+ display: none;
386
+ pointer-events: none;
387
+ z-index: 999;
388
+ }
@@ -49,6 +49,7 @@ declare const _default: import("vue").DefineComponent<{
49
49
  }>>;
50
50
  cache: boolean;
51
51
  deepAutoOpen?: string;
52
+ trigger?: string[];
52
53
  }>;
53
54
  offsetLeft: import("vue-types").VueTypeValidableDef<number> & {
54
55
  default: number;
@@ -186,6 +187,7 @@ declare const _default: import("vue").DefineComponent<{
186
187
  }>>;
187
188
  cache: boolean;
188
189
  deepAutoOpen?: string;
190
+ trigger?: string[];
189
191
  }>;
190
192
  offsetLeft: import("vue-types").VueTypeValidableDef<number> & {
191
193
  default: number;
@@ -5,13 +5,38 @@
5
5
 
6
6
  .@{bk-prefix}-tree {
7
7
  font-size: 14px;
8
+ position: relative;
8
9
 
9
10
  .@{bk-prefix}-node-row {
10
11
  padding-left: calc(var(--offset-left));
12
+ position: relative;
11
13
 
12
14
  &.is-selected {
13
15
  background-color: #ebf2ff;
14
16
  }
17
+
18
+ &.drop-before {
19
+ &::before {
20
+ content: '';
21
+ position: absolute;
22
+ top: 0;
23
+ left: 0;
24
+ right: 0;
25
+ height: 1px;
26
+ background-color: #2196F3;
27
+ }
28
+ }
29
+ &.drop-after {
30
+ &::before {
31
+ content: '';
32
+ position: absolute;
33
+ bottom: 0;
34
+ left: 0;
35
+ right: 0;
36
+ height: 1px;
37
+ background-color: #2196F3;
38
+ }
39
+ }
15
40
  }
16
41
 
17
42
  &-node {
@@ -27,6 +52,25 @@
27
52
  margin-left: calc(var(--depth)*var(--indent));
28
53
 
29
54
  &.level-line {
55
+
56
+ .@{bk-prefix}-node-action {
57
+ &.empty-child {
58
+ position: relative;
59
+
60
+ &::before {
61
+ position: absolute;
62
+ top: calc(50% + 1px);
63
+ left: 0;
64
+ right: 0;
65
+ z-index: 1;
66
+ height: 0;
67
+ pointer-events: none;
68
+ border-bottom: var(--level-line);
69
+ content: '';
70
+ }
71
+ }
72
+ }
73
+
30
74
  &::before {
31
75
  position: absolute;
32
76
  top: calc(50% + 1px);
@@ -47,6 +91,7 @@
47
91
  }
48
92
  }
49
93
 
94
+
50
95
  .node-virtual-line {
51
96
  position: absolute;
52
97
  top: -12px;
@@ -68,6 +113,7 @@
68
113
  .@{bk-prefix}-node-action {
69
114
  margin-right: 6px;
70
115
  color: #979ba5;
116
+ min-width: 14px;
71
117
  }
72
118
 
73
119
  .@{bk-prefix}-tree-icon {
@@ -80,6 +126,10 @@
80
126
  align-items: center;
81
127
  min-width: 0;
82
128
 
129
+ .node-check-box {
130
+ display: inline-flex;
131
+ }
132
+
83
133
  .@{bk-prefix}-checkbox {
84
134
  margin: 0;
85
135
 
@@ -108,7 +158,12 @@
108
158
  }
109
159
  }
110
160
 
111
- &-drag-disabled {
112
-
161
+ .insert-line {
162
+ position: absolute;
163
+ height: 2px;
164
+ background: #2196F3;
165
+ display: none;
166
+ pointer-events: none;
167
+ z-index: 999;
113
168
  }
114
169
  }