tree.js 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. 'use strict';
  2. Object.defineProperty(exports, '__esModule', { value: true });
  3. var vue = require('vue');
  4. var lodashUnified = require('lodash-unified');
  5. require('../../../constants/index.js');
  6. require('../../../utils/index.js');
  7. var index = require('../../tree/index.js');
  8. var treeSelectOption = require('./tree-select-option.js');
  9. var utils = require('./utils.js');
  10. var shared = require('@vue/shared');
  11. var event = require('../../../constants/event.js');
  12. const useTree = (props, { attrs, slots, emit }, {
  13. select,
  14. tree,
  15. key
  16. }) => {
  17. vue.watch(() => props.modelValue, () => {
  18. if (props.showCheckbox) {
  19. vue.nextTick(() => {
  20. const treeInstance = tree.value;
  21. if (treeInstance && !lodashUnified.isEqual(treeInstance.getCheckedKeys(), utils.toValidArray(props.modelValue))) {
  22. treeInstance.setCheckedKeys(utils.toValidArray(props.modelValue));
  23. }
  24. });
  25. }
  26. }, {
  27. immediate: true,
  28. deep: true
  29. });
  30. const propsMap = vue.computed(() => ({
  31. value: key.value,
  32. ...props.props
  33. }));
  34. const getNodeValByProp = (prop, data) => {
  35. var _a;
  36. const propVal = propsMap.value[prop];
  37. if (shared.isFunction(propVal)) {
  38. return propVal(data, (_a = tree.value) == null ? void 0 : _a.getNode(getNodeValByProp("value", data)));
  39. } else {
  40. return data[propVal];
  41. }
  42. };
  43. const defaultExpandedParentKeys = utils.toValidArray(props.modelValue).map((value) => {
  44. return utils.treeFind(props.data || [], (data) => getNodeValByProp("value", data) === value, (data) => getNodeValByProp("children", data), (data, index, array, parent) => parent && getNodeValByProp("value", parent));
  45. }).filter((item) => utils.isValidValue(item));
  46. return {
  47. ...lodashUnified.pick(vue.toRefs(props), Object.keys(index["default"].props)),
  48. ...attrs,
  49. nodeKey: key,
  50. expandOnClickNode: vue.computed(() => {
  51. return !props.checkStrictly && props.expandOnClickNode;
  52. }),
  53. defaultExpandedKeys: vue.computed(() => {
  54. return props.defaultExpandedKeys ? props.defaultExpandedKeys.concat(defaultExpandedParentKeys) : defaultExpandedParentKeys;
  55. }),
  56. renderContent: (h, { node, data, store }) => {
  57. return h(treeSelectOption["default"], {
  58. value: getNodeValByProp("value", data),
  59. label: getNodeValByProp("label", data),
  60. disabled: getNodeValByProp("disabled", data)
  61. }, props.renderContent ? () => props.renderContent(h, { node, data, store }) : slots.default ? () => slots.default({ node, data, store }) : void 0);
  62. },
  63. filterNodeMethod: (value, data, node) => {
  64. var _a;
  65. if (props.filterNodeMethod)
  66. return props.filterNodeMethod(value, data, node);
  67. if (!value)
  68. return true;
  69. return (_a = getNodeValByProp("label", data)) == null ? void 0 : _a.includes(value);
  70. },
  71. onNodeClick: (data, node, e) => {
  72. var _a, _b, _c;
  73. (_a = attrs.onNodeClick) == null ? void 0 : _a.call(attrs, data, node, e);
  74. if (props.showCheckbox && props.checkOnClickNode)
  75. return;
  76. if (!props.showCheckbox && (props.checkStrictly || node.isLeaf)) {
  77. if (!getNodeValByProp("disabled", data)) {
  78. const option = (_b = select.value) == null ? void 0 : _b.options.get(getNodeValByProp("value", data));
  79. (_c = select.value) == null ? void 0 : _c.handleOptionSelect(option, true);
  80. }
  81. } else if (props.expandOnClickNode) {
  82. e.proxy.handleExpandIconClick();
  83. }
  84. },
  85. onCheck: (data, params) => {
  86. var _a;
  87. (_a = attrs.onCheck) == null ? void 0 : _a.call(attrs, data, params);
  88. const dataValue = getNodeValByProp("value", data);
  89. if (props.checkStrictly) {
  90. emit(event.UPDATE_MODEL_EVENT, props.multiple ? params.checkedKeys : params.checkedKeys.includes(dataValue) ? dataValue : void 0);
  91. } else {
  92. if (props.multiple) {
  93. emit(event.UPDATE_MODEL_EVENT, tree.value.getCheckedKeys(true));
  94. } else {
  95. const firstLeaf = utils.treeFind([data], (data2) => !utils.isValidArray(getNodeValByProp("children", data2)) && !getNodeValByProp("disabled", data2), (data2) => getNodeValByProp("children", data2));
  96. const firstLeafKey = firstLeaf ? getNodeValByProp("value", firstLeaf) : void 0;
  97. const hasCheckedChild = utils.isValidValue(props.modelValue) && !!utils.treeFind([data], (data2) => getNodeValByProp("value", data2) === props.modelValue, (data2) => getNodeValByProp("children", data2));
  98. emit(event.UPDATE_MODEL_EVENT, firstLeafKey === props.modelValue || hasCheckedChild ? void 0 : firstLeafKey);
  99. }
  100. }
  101. }
  102. };
  103. };
  104. exports.useTree = useTree;
  105. //# sourceMappingURL=tree.js.map