legacyUtil.js 6.4 KB

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