legacyUtil.js 5.5 KB

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