ant-design-vue
Version:
An enterprise-class UI design language and Vue-based implementation
132 lines (130 loc) • 5.5 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _vue = require("vue");
var _objectDestructuringEmpty2 = _interopRequireDefault(require("@babel/runtime/helpers/objectDestructuringEmpty"));
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
var _TreeNode = _interopRequireDefault(require("./TreeNode"));
var _contextTypes = require("./contextTypes");
var _props = require("./props");
var _collapseMotion = _interopRequireDefault(require("../_util/collapseMotion"));
var _excluded = ["motion", "motionNodes", "motionType", "active", "eventKey"];
var _default2 = (0, _vue.defineComponent)({
compatConfig: {
MODE: 3
},
name: 'MotionTreeNode',
inheritAttrs: false,
props: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, _props.treeNodeProps), {}, {
active: Boolean,
motion: Object,
motionNodes: {
type: Array
},
onMotionStart: Function,
onMotionEnd: Function,
motionType: String
// treeNodeRequiredProps: { type: Object as PropType<TreeNodeRequiredProps> },
}),
slots: ['title', 'icon', 'switcherIcon', 'checkable'],
setup: function setup(props, _ref) {
var attrs = _ref.attrs,
slots = _ref.slots;
var visible = (0, _vue.ref)(true);
var context = (0, _contextTypes.useInjectTreeContext)();
var motionedRef = (0, _vue.ref)(false);
var transitionProps = (0, _vue.computed)(function () {
if (props.motion) {
return props.motion;
} else {
return (0, _collapseMotion.default)();
}
});
var onMotionEnd = function onMotionEnd(node, type) {
if (type === 'appear') {
var _transitionProps$valu, _transitionProps$valu2;
(_transitionProps$valu = transitionProps.value) === null || _transitionProps$valu === void 0 ? void 0 : (_transitionProps$valu2 = _transitionProps$valu.onAfterEnter) === null || _transitionProps$valu2 === void 0 ? void 0 : _transitionProps$valu2.call(_transitionProps$valu, node);
} else if (type === 'leave') {
var _transitionProps$valu3, _transitionProps$valu4;
(_transitionProps$valu3 = transitionProps.value) === null || _transitionProps$valu3 === void 0 ? void 0 : (_transitionProps$valu4 = _transitionProps$valu3.onAfterLeave) === null || _transitionProps$valu4 === void 0 ? void 0 : _transitionProps$valu4.call(_transitionProps$valu3, node);
}
if (!motionedRef.value) {
props.onMotionEnd();
}
motionedRef.value = true;
};
(0, _vue.watch)(function () {
return props.motionNodes;
}, function () {
if (props.motionNodes && props.motionType === 'hide' && visible.value) {
(0, _vue.nextTick)(function () {
visible.value = false;
});
}
}, {
immediate: true,
flush: 'post'
});
(0, _vue.onMounted)(function () {
props.motionNodes && props.onMotionStart();
});
(0, _vue.onBeforeUnmount)(function () {
props.motionNodes && onMotionEnd();
});
return function () {
var motion = props.motion,
motionNodes = props.motionNodes,
motionType = props.motionType,
active = props.active,
eventKey = props.eventKey,
otherProps = (0, _objectWithoutProperties2.default)(props, _excluded);
if (motionNodes) {
return (0, _vue.createVNode)(_vue.Transition, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, transitionProps.value), {}, {
"appear": motionType === 'show',
"onAfterAppear": function onAfterAppear(node) {
return onMotionEnd(node, 'appear');
},
"onAfterLeave": function onAfterLeave(node) {
return onMotionEnd(node, 'leave');
}
}), {
default: function _default() {
return [(0, _vue.withDirectives)((0, _vue.createVNode)("div", {
"class": "".concat(context.value.prefixCls, "-treenode-motion")
}, [motionNodes.map(function (treeNode) {
var restProps = (0, _extends2.default)({}, ((0, _objectDestructuringEmpty2.default)(treeNode.data), treeNode.data)),
title = treeNode.title,
key = treeNode.key,
isStart = treeNode.isStart,
isEnd = treeNode.isEnd;
delete restProps.children;
return (0, _vue.createVNode)(_TreeNode.default, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, restProps), {}, {
"title": title,
"active": active,
"data": treeNode.data,
"key": key,
"eventKey": key,
"isStart": isStart,
"isEnd": isEnd
}), slots);
})]), [[_vue.vShow, visible.value]])];
}
});
}
return (0, _vue.createVNode)(_TreeNode.default, (0, _objectSpread2.default)((0, _objectSpread2.default)({
"domRef": _vue.ref,
"class": attrs.class,
"style": attrs.style
}, otherProps), {}, {
"active": active,
"eventKey": eventKey
}), slots);
};
}
});
exports.default = _default2;
;