Tree.js 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271
  1. "use strict";
  2. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
  3. Object.defineProperty(exports, "__esModule", {
  4. value: true
  5. });
  6. exports.treeProps = exports.default = void 0;
  7. var _vue = require("vue");
  8. var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
  9. var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
  10. var _classNames2 = _interopRequireDefault(require("../_util/classNames"));
  11. var _vcTree = _interopRequireDefault(require("../vc-tree"));
  12. var _vueTypes = _interopRequireDefault(require("../_util/vue-types"));
  13. var _propsUtil = require("../_util/props-util");
  14. var _initDefaultProps = _interopRequireDefault(require("../_util/props-util/initDefaultProps"));
  15. var _props = require("../vc-tree/props");
  16. var _useConfigInject2 = _interopRequireDefault(require("../_util/hooks/useConfigInject"));
  17. var _iconUtil = _interopRequireDefault(require("./utils/iconUtil"));
  18. var _dropIndicator = _interopRequireDefault(require("./utils/dropIndicator"));
  19. var _devWarning = _interopRequireDefault(require("../vc-util/devWarning"));
  20. var _warning = require("../vc-util/warning");
  21. var _omit = _interopRequireDefault(require("../_util/omit"));
  22. var treeProps = function treeProps() {
  23. var baseTreeProps = (0, _props.treeProps)();
  24. return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, baseTreeProps), {}, {
  25. showLine: {
  26. type: [Boolean, Object],
  27. default: undefined
  28. },
  29. /** 是否支持多选 */
  30. multiple: {
  31. type: Boolean,
  32. default: undefined
  33. },
  34. /** 是否自动展开父节点 */
  35. autoExpandParent: {
  36. type: Boolean,
  37. default: undefined
  38. },
  39. /** checkable状态下节点选择完全受控(父子节点选中状态不再关联)*/
  40. checkStrictly: {
  41. type: Boolean,
  42. default: undefined
  43. },
  44. /** 是否支持选中 */
  45. checkable: {
  46. type: Boolean,
  47. default: undefined
  48. },
  49. /** 是否禁用树 */
  50. disabled: {
  51. type: Boolean,
  52. default: undefined
  53. },
  54. /** 默认展开所有树节点 */
  55. defaultExpandAll: {
  56. type: Boolean,
  57. default: undefined
  58. },
  59. /** 默认展开对应树节点 */
  60. defaultExpandParent: {
  61. type: Boolean,
  62. default: undefined
  63. },
  64. /** 默认展开指定的树节点 */
  65. defaultExpandedKeys: {
  66. type: Array
  67. },
  68. /** (受控)展开指定的树节点 */
  69. expandedKeys: {
  70. type: Array
  71. },
  72. /** (受控)选中复选框的树节点 */
  73. checkedKeys: {
  74. type: [Array, Object]
  75. },
  76. /** 默认选中复选框的树节点 */
  77. defaultCheckedKeys: {
  78. type: Array
  79. },
  80. /** (受控)设置选中的树节点 */
  81. selectedKeys: {
  82. type: Array
  83. },
  84. /** 默认选中的树节点 */
  85. defaultSelectedKeys: {
  86. type: Array
  87. },
  88. selectable: {
  89. type: Boolean,
  90. default: undefined
  91. },
  92. loadedKeys: {
  93. type: Array
  94. },
  95. draggable: {
  96. type: Boolean,
  97. default: undefined
  98. },
  99. showIcon: {
  100. type: Boolean,
  101. default: undefined
  102. },
  103. icon: {
  104. type: Function
  105. },
  106. switcherIcon: _vueTypes.default.any,
  107. prefixCls: String,
  108. /**
  109. * @default{title,key,children}
  110. * deprecated, please use `fieldNames` instead
  111. * 替换treeNode中 title,key,children字段为treeData中对应的字段
  112. */
  113. replaceFields: {
  114. type: Object
  115. },
  116. blockNode: {
  117. type: Boolean,
  118. default: undefined
  119. },
  120. openAnimation: _vueTypes.default.any,
  121. onDoubleclick: baseTreeProps.onDblclick,
  122. 'onUpdate:selectedKeys': Function,
  123. 'onUpdate:checkedKeys': Function,
  124. 'onUpdate:expandedKeys': Function
  125. });
  126. };
  127. exports.treeProps = treeProps;
  128. var _default = (0, _vue.defineComponent)({
  129. compatConfig: {
  130. MODE: 3
  131. },
  132. name: 'ATree',
  133. inheritAttrs: false,
  134. props: (0, _initDefaultProps.default)(treeProps(), {
  135. checkable: false,
  136. selectable: true,
  137. showIcon: false,
  138. blockNode: false
  139. }),
  140. slots: ['icon', 'title', 'switcherIcon', 'titleRender'],
  141. // emits: [
  142. // 'update:selectedKeys',
  143. // 'update:checkedKeys',
  144. // 'update:expandedKeys',
  145. // 'expand',
  146. // 'select',
  147. // 'check',
  148. // 'doubleclick',
  149. // 'dblclick',
  150. // ],
  151. setup: function setup(props, _ref) {
  152. var attrs = _ref.attrs,
  153. expose = _ref.expose,
  154. emit = _ref.emit,
  155. slots = _ref.slots;
  156. (0, _warning.warning)(!(props.treeData === undefined && slots.default), '`children` of Tree is deprecated. Please use `treeData` instead.');
  157. var _useConfigInject = (0, _useConfigInject2.default)('tree', props),
  158. prefixCls = _useConfigInject.prefixCls,
  159. direction = _useConfigInject.direction,
  160. virtual = _useConfigInject.virtual;
  161. var treeRef = (0, _vue.ref)();
  162. var scrollTo = function scrollTo(scroll) {
  163. var _treeRef$value;
  164. (_treeRef$value = treeRef.value) === null || _treeRef$value === void 0 ? void 0 : _treeRef$value.scrollTo(scroll);
  165. };
  166. expose({
  167. treeRef: treeRef,
  168. onNodeExpand: function onNodeExpand() {
  169. var _treeRef$value2;
  170. for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
  171. args[_key] = arguments[_key];
  172. }
  173. (_treeRef$value2 = treeRef.value) === null || _treeRef$value2 === void 0 ? void 0 : _treeRef$value2.onNodeExpand.apply(_treeRef$value2, args);
  174. },
  175. scrollTo: scrollTo,
  176. selectedKeys: (0, _vue.computed)(function () {
  177. var _treeRef$value3;
  178. return (_treeRef$value3 = treeRef.value) === null || _treeRef$value3 === void 0 ? void 0 : _treeRef$value3.selectedKeys;
  179. }),
  180. checkedKeys: (0, _vue.computed)(function () {
  181. var _treeRef$value4;
  182. return (_treeRef$value4 = treeRef.value) === null || _treeRef$value4 === void 0 ? void 0 : _treeRef$value4.checkedKeys;
  183. }),
  184. halfCheckedKeys: (0, _vue.computed)(function () {
  185. var _treeRef$value5;
  186. return (_treeRef$value5 = treeRef.value) === null || _treeRef$value5 === void 0 ? void 0 : _treeRef$value5.halfCheckedKeys;
  187. }),
  188. loadedKeys: (0, _vue.computed)(function () {
  189. var _treeRef$value6;
  190. return (_treeRef$value6 = treeRef.value) === null || _treeRef$value6 === void 0 ? void 0 : _treeRef$value6.loadedKeys;
  191. }),
  192. loadingKeys: (0, _vue.computed)(function () {
  193. var _treeRef$value7;
  194. return (_treeRef$value7 = treeRef.value) === null || _treeRef$value7 === void 0 ? void 0 : _treeRef$value7.loadingKeys;
  195. }),
  196. expandedKeys: (0, _vue.computed)(function () {
  197. var _treeRef$value8;
  198. return (_treeRef$value8 = treeRef.value) === null || _treeRef$value8 === void 0 ? void 0 : _treeRef$value8.expandedKeys;
  199. })
  200. });
  201. (0, _vue.watchEffect)(function () {
  202. (0, _devWarning.default)(props.replaceFields === undefined, 'Tree', '`replaceFields` is deprecated, please use fieldNames instead');
  203. });
  204. var handleCheck = function handleCheck(checkedObjOrKeys, eventObj) {
  205. emit('update:checkedKeys', checkedObjOrKeys);
  206. emit('check', checkedObjOrKeys, eventObj);
  207. };
  208. var handleExpand = function handleExpand(expandedKeys, eventObj) {
  209. emit('update:expandedKeys', expandedKeys);
  210. emit('expand', expandedKeys, eventObj);
  211. };
  212. var handleSelect = function handleSelect(selectedKeys, eventObj) {
  213. emit('update:selectedKeys', selectedKeys);
  214. emit('select', selectedKeys, eventObj);
  215. };
  216. return function () {
  217. var _classNames;
  218. var showIcon = props.showIcon,
  219. showLine = props.showLine,
  220. _props$switcherIcon = props.switcherIcon,
  221. _switcherIcon = _props$switcherIcon === void 0 ? slots.switcherIcon : _props$switcherIcon,
  222. _props$icon = props.icon,
  223. icon = _props$icon === void 0 ? slots.icon : _props$icon,
  224. blockNode = props.blockNode,
  225. checkable = props.checkable,
  226. selectable = props.selectable,
  227. _props$fieldNames = props.fieldNames,
  228. fieldNames = _props$fieldNames === void 0 ? props.replaceFields : _props$fieldNames,
  229. _props$motion = props.motion,
  230. motion = _props$motion === void 0 ? props.openAnimation : _props$motion,
  231. _props$itemHeight = props.itemHeight,
  232. itemHeight = _props$itemHeight === void 0 ? 28 : _props$itemHeight,
  233. onDoubleclick = props.onDoubleclick,
  234. onDblclick = props.onDblclick;
  235. var newProps = (0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, attrs), (0, _omit.default)(props, ['onUpdate:checkedKeys', 'onUpdate:expandedKeys', 'onUpdate:selectedKeys', 'onDoubleclick'])), {}, {
  236. showLine: Boolean(showLine),
  237. dropIndicatorRender: _dropIndicator.default,
  238. fieldNames: fieldNames,
  239. icon: icon,
  240. itemHeight: itemHeight
  241. });
  242. var children = slots.default ? (0, _propsUtil.filterEmpty)(slots.default()) : undefined;
  243. return (0, _vue.createVNode)(_vcTree.default, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, newProps), {}, {
  244. "virtual": virtual.value,
  245. "motion": motion,
  246. "ref": treeRef,
  247. "prefixCls": prefixCls.value,
  248. "class": (0, _classNames2.default)((_classNames = {}, (0, _defineProperty2.default)(_classNames, "".concat(prefixCls.value, "-icon-hide"), !showIcon), (0, _defineProperty2.default)(_classNames, "".concat(prefixCls.value, "-block-node"), blockNode), (0, _defineProperty2.default)(_classNames, "".concat(prefixCls.value, "-unselectable"), !selectable), (0, _defineProperty2.default)(_classNames, "".concat(prefixCls.value, "-rtl"), direction.value === 'rtl'), _classNames), attrs.class),
  249. "direction": direction.value,
  250. "checkable": checkable,
  251. "selectable": selectable,
  252. "switcherIcon": function switcherIcon(nodeProps) {
  253. return (0, _iconUtil.default)(prefixCls.value, _switcherIcon, showLine, nodeProps);
  254. },
  255. "onCheck": handleCheck,
  256. "onExpand": handleExpand,
  257. "onSelect": handleSelect,
  258. "onDblclick": onDblclick || onDoubleclick,
  259. "children": children
  260. }), (0, _objectSpread2.default)((0, _objectSpread2.default)({}, slots), {}, {
  261. checkable: function checkable() {
  262. return (0, _vue.createVNode)("span", {
  263. "class": "".concat(prefixCls.value, "-checkbox-inner")
  264. }, null);
  265. }
  266. }));
  267. };
  268. }
  269. });
  270. exports.default = _default;