wetrade-design
Version:
一款多语言支持Vue3的UI框架
351 lines • 16.6 kB
JavaScript
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
import { resolveDirective as _resolveDirective, createVNode as _createVNode, Fragment as _Fragment } from "vue";
import { defineComponent, reactive, toRefs, computed, withModifiers, getCurrentInstance } from 'vue';
import useConfigInject from '../_util/hooks/useConfigInject';
import classNames from '../_util/classNames';
import { OperationType, TreeNodeType } from './utils/types';
import Icon from '../icon';
import Dropdown from '../dropdown';
import Menu, { MenuItem } from '../menu';
export var nodeProps = function nodeProps() {
return {
nodeDelete: Function,
nodeShrink: Function,
nodeAppend: Function,
nodeInsert: Function,
nodeClick: Function,
menuClick: Function,
nodeMousedown: Function,
nodeMouseup: Function,
getMenuPopupContainer: {
type: Function
}
};
};
var StgyGraphNode = defineComponent({
compatConfig: {
MODE: 3
},
name: 'WdStgyGraphNode',
props: nodeProps(),
emits: [],
slots: ['header', 'content', 'tools'],
setup: function setup(props, _ref) {
var slots = _ref.slots;
var _useConfigInject = useConfigInject('stgy-graph-node', props),
prefixCls = _useConfigInject.prefixCls;
var _getCurrentInstance = getCurrentInstance(),
$props = _getCurrentInstance.appContext.config.globalProperties.$props;
var _toRefs = toRefs($props),
node = _toRefs.node,
readonly = _toRefs.readonly,
selectedNodeId = _toRefs.selectedNodeId,
miniStartNode = _toRefs.miniStartNode;
var state = reactive({
nodeRef: null
});
var _toRefs2 = toRefs(state),
nodeRef = _toRefs2.nodeRef;
var dragging = computed(function () {
var _node$value$meta, _node$value$meta$extP;
return (_node$value$meta = node.value.meta) === null || _node$value$meta === void 0 ? void 0 : (_node$value$meta$extP = _node$value$meta.extParam) === null || _node$value$meta$extP === void 0 ? void 0 : _node$value$meta$extP.isDragging;
});
// 是否为高亮节点
var isHighLight = computed(function () {
var _node$value$meta2, _node$value$meta2$ext;
return (_node$value$meta2 = node.value.meta) === null || _node$value$meta2 === void 0 ? void 0 : (_node$value$meta2$ext = _node$value$meta2.extParam) === null || _node$value$meta2$ext === void 0 ? void 0 : _node$value$meta2$ext.isHighLight;
});
// 是否为拖拽节点
var isDragElement = computed(function () {
var _node$value$meta3, _node$value$meta3$ext;
return (_node$value$meta3 = node.value.meta) === null || _node$value$meta3 === void 0 ? void 0 : (_node$value$meta3$ext = _node$value$meta3.extParam) === null || _node$value$meta3$ext === void 0 ? void 0 : _node$value$meta3$ext.isDragElement;
});
var isToolsNode = computed(function () {
var _node$value, _node$value$meta4;
return ((_node$value = node.value) === null || _node$value === void 0 ? void 0 : (_node$value$meta4 = _node$value.meta) === null || _node$value$meta4 === void 0 ? void 0 : _node$value$meta4.type) === TreeNodeType.TOOLS;
});
var nodeClassNames = computed(function () {
var _node$value2, _node$value2$meta, _node$value3, _node$value3$meta, _classNameObj;
var classNameObj = (_classNameObj = {}, _defineProperty(_classNameObj, "".concat(prefixCls.value), true), _defineProperty(_classNameObj, 'selected-node', selectedNodeId.value.includes(node.value.id)), _defineProperty(_classNameObj, 'lighten-node', isHighLight.value), _defineProperty(_classNameObj, 'dragging-node', dragging.value), _defineProperty(_classNameObj, 'start-node', ((_node$value2 = node.value) === null || _node$value2 === void 0 ? void 0 : (_node$value2$meta = _node$value2.meta) === null || _node$value2$meta === void 0 ? void 0 : _node$value2$meta.configKey) === 'start_node'), _defineProperty(_classNameObj, 'start-node-mini', ((_node$value3 = node.value) === null || _node$value3 === void 0 ? void 0 : (_node$value3$meta = _node$value3.meta) === null || _node$value3$meta === void 0 ? void 0 : _node$value3$meta.configKey) === 'start_node' && miniStartNode.value), _classNameObj);
return classNameObj;
});
var style = computed(function () {
var _node$value4 = node.value,
width = _node$value4.width,
height = _node$value4.height;
return {
width: width + 'px',
height: height + 'px'
};
});
var deleteNodeStyle = computed(function () {
var width = node.value.width;
return {
position: 'absolute',
top: "".concat(isToolsNode.value ? 7 : 8, "px"),
left: width - 18 - 12 + 'px'
};
});
var nodeDelete = function nodeDelete() {
props === null || props === void 0 ? void 0 : props.nodeDelete(node.value);
};
var nodeMousedown = function nodeMousedown(evt) {
props.nodeMousedown(evt, node.value);
};
var nodeMouseup = function nodeMouseup() {
props.nodeMouseup(node.value);
};
var nodeDeleteDown = function nodeDeleteDown() {
// 占位
};
return function () {
var _node$value5, _node$value5$meta, _node$value$meta5, _node$value6, _node$value6$meta;
// 删除按钮
var deleteNode = null;
if (((_node$value5 = node.value) === null || _node$value5 === void 0 ? void 0 : (_node$value5$meta = _node$value5.meta) === null || _node$value5$meta === void 0 ? void 0 : _node$value5$meta.type) !== TreeNodeType.TOOLS && ((_node$value$meta5 = node.value.meta) === null || _node$value$meta5 === void 0 ? void 0 : _node$value$meta5.configKey) !== 'start_node' && !readonly.value) {
deleteNode = _createVNode(_Fragment, null, [_createVNode("div", {
"onMousedown": withModifiers(nodeDeleteDown, ['left', 'prevent', 'stop']),
"onMouseup": withModifiers(nodeDelete, ['left', 'prevent', 'stop']),
"style": deleteNodeStyle.value,
"class": "node-delete"
}, [_createVNode(Icon, {
"class": "icon-delete ".concat(isToolsNode.value ? 'icon-tools-delete' : ''),
"icon-class": "wd-icon-tips_close_circle"
}, null)])]);
}
// 内容渲染
var renderNode = null;
if (((_node$value6 = node.value) === null || _node$value6 === void 0 ? void 0 : (_node$value6$meta = _node$value6.meta) === null || _node$value6$meta === void 0 ? void 0 : _node$value6$meta.type) === TreeNodeType.TOOLS) {
var renderToolsNode = slots === null || slots === void 0 ? void 0 : slots.tools;
if (renderToolsNode) {
renderNode = _createVNode(_Fragment, null, [_createVNode("div", {
"onMousedown": withModifiers(nodeMousedown, ['left']),
"onMouseup": withModifiers(nodeMouseup, ['left'])
}, [renderToolsNode()])]);
}
} else {
var _node$value7, _node$value8, _node$value8$meta, _node$value9, _node$value9$meta, _node$value10, _node$value10$meta, _node$value10$meta$ex, _classNames, _slots$header, _slots$content;
renderNode = _createVNode(_Fragment, null, [((_node$value7 = node.value) === null || _node$value7 === void 0 ? void 0 : _node$value7.width) > 0 && _createVNode("div", {
"class": classNames((_classNames = {}, _defineProperty(_classNames, "".concat(prefixCls.value, "-wrap"), true), _defineProperty(_classNames, "".concat(prefixCls.value, "-wrap-buy"), ((_node$value8 = node.value) === null || _node$value8 === void 0 ? void 0 : (_node$value8$meta = _node$value8.meta) === null || _node$value8$meta === void 0 ? void 0 : _node$value8$meta.configKey) === 'buy'), _defineProperty(_classNames, "".concat(prefixCls.value, "-wrap-sell"), ((_node$value9 = node.value) === null || _node$value9 === void 0 ? void 0 : (_node$value9$meta = _node$value9.meta) === null || _node$value9$meta === void 0 ? void 0 : _node$value9$meta.configKey) === 'sell'), _defineProperty(_classNames, "".concat(prefixCls.value, "-wrap-error"), (_node$value10 = node.value) === null || _node$value10 === void 0 ? void 0 : (_node$value10$meta = _node$value10.meta) === null || _node$value10$meta === void 0 ? void 0 : (_node$value10$meta$ex = _node$value10$meta.extParam) === null || _node$value10$meta$ex === void 0 ? void 0 : _node$value10$meta$ex.errorStatus), _classNames)),
"onMousedown": withModifiers(nodeMousedown, ['left']),
"onMouseup": withModifiers(nodeMouseup, ['left'])
}, [_createVNode("div", {
"class": "".concat(prefixCls.value, "-wrap-header")
}, [slots === null || slots === void 0 ? void 0 : (_slots$header = slots.header) === null || _slots$header === void 0 ? void 0 : _slots$header.call(slots)]), (slots === null || slots === void 0 ? void 0 : slots.content) && _createVNode("div", {
"class": "".concat(prefixCls.value, "-wrap-bottom")
}, [slots === null || slots === void 0 ? void 0 : (_slots$content = slots.content) === null || _slots$content === void 0 ? void 0 : _slots$content.call(slots)]), deleteNode])]);
}
if (isDragElement.value) {
var dragStyle = {
width: node.value.width + 'px',
height: node.value.height + 'px'
};
return _createVNode(_Fragment, null, [_createVNode("div", {
"data-id": node.value.id,
"style": dragStyle,
"class": "".concat(prefixCls.value, "-dragging")
}, null)]);
} else {
return _createVNode("div", {
"ref": nodeRef,
"tabindex": "-1",
"class": nodeClassNames.value,
"style": style.value,
"data-id": node.value.id
}, [renderNode]);
}
};
}
});
export default StgyGraphNode;
// 【添】
export var StgyGraphAppend = defineComponent({
compatConfig: {
MODE: 3
},
name: 'WdStgyGraphAppend',
props: nodeProps(),
setup: function setup(props) {
var _useConfigInject2 = useConfigInject('stgy-graph-node', props),
prefixCls = _useConfigInject2.prefixCls;
var _getCurrentInstance2 = getCurrentInstance(),
$props = _getCurrentInstance2.appContext.config.globalProperties.$props;
var _toRefs3 = toRefs($props),
node = _toRefs3.node,
menus = _toRefs3.menus;
var handleMenuClick = function handleMenuClick(key) {
props === null || props === void 0 ? void 0 : props.menuClick({
operationType: OperationType.APPEND,
nodeType: key,
node: node.value
});
};
var nodeAppend = function nodeAppend() {
props === null || props === void 0 ? void 0 : props.nodeAppend(node.value);
};
return function () {
// 添加按钮
var appendNode = null;
appendNode = _createVNode(_Fragment, null, [_createVNode(Dropdown, {
"trigger": 'click',
"getPopupContainer": props.getMenuPopupContainer,
"destroyPopupOnHide": true
}, {
overlay: function overlay() {
return _createVNode(Menu, {
"onClick": function onClick(_ref2) {
var key = _ref2.key;
handleMenuClick(key);
}
}, {
default: function _default() {
return [menus.value.map(function (menu) {
return _createVNode(MenuItem, {
"disabled": menu.disabled,
"key": menu.value
}, {
default: function _default() {
return [menu.name];
}
});
})];
}
});
},
default: function _default() {
return _createVNode("div", {
"onClick": nodeAppend,
"class": "".concat(prefixCls.value, "-append")
}, [_createVNode(Icon, {
"icon-class": "wd-icon-special_append"
}, null)]);
}
})]);
return _createVNode(_Fragment, null, [appendNode]);
};
}
});
// 【+】
export var StgyGraphInsert = defineComponent({
compatConfig: {
MODE: 3
},
name: 'WdStgyGraphInsert',
props: nodeProps(),
setup: function setup(props) {
var _useConfigInject3 = useConfigInject('stgy-graph-node', props),
prefixCls = _useConfigInject3.prefixCls;
var _getCurrentInstance3 = getCurrentInstance(),
$props = _getCurrentInstance3.appContext.config.globalProperties.$props;
var _toRefs4 = toRefs($props),
node = _toRefs4.node,
menus = _toRefs4.menus;
var handleMenuClick = function handleMenuClick(key) {
props === null || props === void 0 ? void 0 : props.menuClick({
operationType: OperationType.INSERT,
nodeType: key,
node: node.value
});
};
var nodeInsert = function nodeInsert() {
props === null || props === void 0 ? void 0 : props.nodeInsert(node.value);
};
return function () {
// 插入按钮
var insertNode = null;
insertNode = _createVNode(_Fragment, null, [_createVNode(Dropdown, {
"trigger": 'click',
"getPopupContainer": props.getMenuPopupContainer,
"destroyPopupOnHide": true
}, {
overlay: function overlay() {
return _createVNode(Menu, {
"onClick": function onClick(_ref3) {
var key = _ref3.key;
handleMenuClick(key);
}
}, {
default: function _default() {
return [menus.value.map(function (menu) {
return _createVNode(MenuItem, {
"disabled": menu.disabled,
"key": menu.value
}, {
default: function _default() {
return [menu.name];
}
});
})];
}
});
},
default: function _default() {
return _createVNode("div", {
"onClick": nodeInsert,
"class": classNames(_defineProperty({}, "".concat(prefixCls.value, "-insert"), true))
}, [_createVNode(Icon, {
"class": "icon-plus",
"icon-class": "wd-icon-tips_plus_circle"
}, null)]);
}
})]);
return _createVNode(_Fragment, null, [insertNode]);
};
}
});
// 【展开收起】
export var StgyGraphShrink = defineComponent({
compatConfig: {
MODE: 3
},
name: 'WdStgyGraphShrink',
props: nodeProps(),
setup: function setup(props) {
var _useConfigInject4 = useConfigInject('stgy-graph-node', props),
prefixCls = _useConfigInject4.prefixCls;
var _getCurrentInstance4 = getCurrentInstance(),
$props = _getCurrentInstance4.appContext.config.globalProperties.$props;
var _toRefs5 = toRefs($props),
node = _toRefs5.node;
// 收起节点的收起数量
var shrinkNum = computed(function () {
return node.value.meta.extParam.shrinkNum;
});
// 节点是否为展开收起
var isOpen = computed(function () {
return node.value.meta.extParam.isOpen;
});
// 是否为合并节点
var isMergeNode = computed(function () {
return node.value.meta.extParam.isMergeNode;
});
// 展开收起禁用
var shrinkDisabled = computed(function () {
return node.value.meta.extParam.shrinkDisabled;
});
var nodeShrink = function nodeShrink() {
if (shrinkDisabled.value) {
return;
}
props === null || props === void 0 ? void 0 : props.nodeShrink(node.value);
};
return function () {
var _classNames3;
// 展开收起按钮
var shrinkNode = null;
shrinkNode = _createVNode(_Fragment, null, [_createVNode("div", {
"class": classNames("".concat(prefixCls.value, "-shrink"), (_classNames3 = {}, _defineProperty(_classNames3, "".concat(prefixCls.value, "-shrink__disabled"), shrinkDisabled.value), _defineProperty(_classNames3, "".concat(prefixCls.value, "-shrink__collaspe"), !isOpen.value), _defineProperty(_classNames3, "".concat(prefixCls.value, "-shrink__merge-collaspe"), isMergeNode.value && isOpen.value === false), _classNames3)),
"onClick": withModifiers(nodeShrink, ['left', 'prevent', 'stop'])
}, [isOpen.value ? _createVNode(Icon, {
"icon-class": "wd-icon-tips_minus_circle",
"class": "".concat(prefixCls.value, "-shrink__icon")
}, null) : _createVNode("div", {
"class": "".concat(prefixCls.value, "-shrink__expand")
}, [shrinkNum.value > 99 ? _createVNode(Icon, {
"icon-class": "wd-icon-interactive_more",
"class": "".concat(prefixCls.value, "-shrink__icon")
}, null) : shrinkNum.value])])]);
return _createVNode(_Fragment, null, [shrinkNode]);
};
}
});