legacyUtil.js 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
  2. import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
  3. import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
  4. var _excluded = ["title", "switcherIcon"];
  5. import { createVNode as _createVNode } from "vue";
  6. import { filterEmpty } from '../../_util/props-util';
  7. import { camelize } from 'vue';
  8. import { warning } from '../../vc-util/warning';
  9. import TreeNode from '../TreeNode';
  10. function isTreeSelectNode(node) {
  11. return node && node.type && node.type.isTreeSelectNode;
  12. }
  13. export function convertChildrenToData(rootNodes) {
  14. function dig() {
  15. var treeNodes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
  16. return filterEmpty(treeNodes).map(function (treeNode) {
  17. var _slots$title, _slots$switcherIcon, _slots$default;
  18. // Filter invalidate node
  19. if (!isTreeSelectNode(treeNode)) {
  20. warning(!treeNode, 'TreeSelect/TreeSelectNode can only accept TreeSelectNode as children.');
  21. return null;
  22. }
  23. var slots = treeNode.children || {};
  24. var key = treeNode.key;
  25. var props = {};
  26. for (var _i = 0, _Object$entries = Object.entries(treeNode.props); _i < _Object$entries.length; _i++) {
  27. var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2),
  28. k = _Object$entries$_i[0],
  29. v = _Object$entries$_i[1];
  30. props[camelize(k)] = v;
  31. }
  32. var isLeaf = props.isLeaf,
  33. checkable = props.checkable,
  34. selectable = props.selectable,
  35. disabled = props.disabled,
  36. disableCheckbox = props.disableCheckbox;
  37. // 默认值为 undefined
  38. var newProps = {
  39. isLeaf: isLeaf || isLeaf === '' || undefined,
  40. checkable: checkable || checkable === '' || undefined,
  41. selectable: selectable || selectable === '' || undefined,
  42. disabled: disabled || disabled === '' || undefined,
  43. disableCheckbox: disableCheckbox || disableCheckbox === '' || undefined
  44. };
  45. var slotsProps = _objectSpread(_objectSpread({}, props), newProps);
  46. var _props$title = props.title,
  47. title = _props$title === void 0 ? (_slots$title = slots.title) === null || _slots$title === void 0 ? void 0 : _slots$title.call(slots, slotsProps) : _props$title,
  48. _props$switcherIcon = props.switcherIcon,
  49. switcherIcon = _props$switcherIcon === void 0 ? (_slots$switcherIcon = slots.switcherIcon) === null || _slots$switcherIcon === void 0 ? void 0 : _slots$switcherIcon.call(slots, slotsProps) : _props$switcherIcon,
  50. rest = _objectWithoutProperties(props, _excluded);
  51. var children = (_slots$default = slots.default) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots);
  52. var dataNode = _objectSpread(_objectSpread({}, rest), {}, {
  53. title: title,
  54. switcherIcon: switcherIcon,
  55. key: key,
  56. isLeaf: isLeaf
  57. }, newProps);
  58. var parsedChildren = dig(children);
  59. if (parsedChildren.length) {
  60. dataNode.children = parsedChildren;
  61. }
  62. return dataNode;
  63. });
  64. }
  65. return dig(rootNodes);
  66. }
  67. export function fillLegacyProps(dataNode) {
  68. // Skip if not dataNode exist
  69. if (!dataNode) {
  70. return dataNode;
  71. }
  72. var cloneNode = _objectSpread({}, dataNode);
  73. if (!('props' in cloneNode)) {
  74. Object.defineProperty(cloneNode, 'props', {
  75. get: function get() {
  76. warning(false, 'New `vc-tree-select` not support return node instance as argument anymore. Please consider to remove `props` access.');
  77. return cloneNode;
  78. }
  79. });
  80. }
  81. return cloneNode;
  82. }
  83. export function fillAdditionalInfo(extra, triggerValue, checkedValues, treeData, showPosition, fieldNames) {
  84. var triggerNode = null;
  85. var nodeList = null;
  86. function generateMap() {
  87. function dig(list) {
  88. var level = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '0';
  89. var parentIncluded = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
  90. return list.map(function (option, index) {
  91. var pos = "".concat(level, "-").concat(index);
  92. var value = option[fieldNames.value];
  93. var included = checkedValues.includes(value);
  94. var children = dig(option[fieldNames.children] || [], pos, included);
  95. var node = _createVNode(TreeNode, option, {
  96. default: function _default() {
  97. return [children.map(function (child) {
  98. return child.node;
  99. })];
  100. }
  101. });
  102. // Link with trigger node
  103. if (triggerValue === value) {
  104. triggerNode = node;
  105. }
  106. if (included) {
  107. var checkedNode = {
  108. pos: pos,
  109. node: node,
  110. children: children
  111. };
  112. if (!parentIncluded) {
  113. nodeList.push(checkedNode);
  114. }
  115. return checkedNode;
  116. }
  117. return null;
  118. }).filter(function (node) {
  119. return node;
  120. });
  121. }
  122. if (!nodeList) {
  123. nodeList = [];
  124. dig(treeData);
  125. // Sort to keep the checked node length
  126. nodeList.sort(function (_ref, _ref2) {
  127. var val1 = _ref.node.props.value;
  128. var val2 = _ref2.node.props.value;
  129. var index1 = checkedValues.indexOf(val1);
  130. var index2 = checkedValues.indexOf(val2);
  131. return index1 - index2;
  132. });
  133. }
  134. }
  135. Object.defineProperty(extra, 'triggerNode', {
  136. get: function get() {
  137. warning(false, '`triggerNode` is deprecated. Please consider decoupling data with node.');
  138. generateMap();
  139. return triggerNode;
  140. }
  141. });
  142. Object.defineProperty(extra, 'allCheckedNodes', {
  143. get: function get() {
  144. warning(false, '`allCheckedNodes` is deprecated. Please consider decoupling data with node.');
  145. generateMap();
  146. if (showPosition) {
  147. return nodeList;
  148. }
  149. return nodeList.map(function (_ref3) {
  150. var node = _ref3.node;
  151. return node;
  152. });
  153. }
  154. });
  155. }