mirror of
https://github.com/alibaba/lowcode-engine.git
synced 2026-03-05 01:37:17 +00:00
fix: expandable state not changed when node added/removed
This commit is contained in:
parent
c0e946b522
commit
ba3adcfb89
@ -5,7 +5,7 @@ sidebar_position: 3
|
||||
## 模块简介
|
||||
|
||||
引擎编排模块中包含多种模型,包括:
|
||||
- [文档模型 DocumentModel)](./model/document-model)
|
||||
- [文档模型 DocumentModel](./model/document-model)
|
||||
- [节点模型 Node](./model/node)
|
||||
- [节点孩子模型 NodeChildren](./model/node-children)
|
||||
- [属性模型 Prop](./model/prop)
|
||||
@ -18,7 +18,7 @@ sidebar_position: 3
|
||||
- [历史操作 History)](./model/history)
|
||||
- [画布节点选中 Selection)](./model/selection)
|
||||
- [画布节点悬停 Detecting)](./model/detecting)
|
||||
- [模态节点管理器 ModalNodesManager](./model/modal_nodes_manager)
|
||||
- [模态节点管理器 ModalNodesManager](./model/modal-nodes-manager)
|
||||
|
||||
整个模型系统,以 project API 为入口,所有模型实例均需要通过 project 来获得,比如 project.currentDocument 来获取当前的文档模型,project.currentDocument.nodesMap 来获取当前文档模型里所有的节点列表。
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@alilc/lowcode-engine-docs",
|
||||
"version": "1.0.10",
|
||||
"version": "1.0.11",
|
||||
"description": "低代码引擎版本化文档",
|
||||
"license": "MIT",
|
||||
"files": [
|
||||
|
||||
@ -4,7 +4,6 @@ const package = require('../package.json');
|
||||
const { version, name } = package;
|
||||
const options = {
|
||||
method: 'PUT',
|
||||
// 暂时使用 日常环境的 uipaas-node,上线后可切换成线上环境 https://uipaas-node.alibaba-inc.com
|
||||
hostname: 'uipaas-node.alibaba-inc.com',
|
||||
path: '/staticAssets/cdn/packages',
|
||||
headers: {
|
||||
|
||||
@ -28,6 +28,7 @@ export default class TreeNode {
|
||||
onHiddenChanged: (hidden: boolean) => void;
|
||||
onLockedChanged: (locked: boolean) => void;
|
||||
onTitleLabelChanged: (treeNode: TreeNode) => void;
|
||||
onExpandableChanged: (expandable: boolean) => void;
|
||||
|
||||
get id(): string {
|
||||
return this.node.id;
|
||||
@ -41,6 +42,13 @@ export default class TreeNode {
|
||||
return this.hasChildren() || this.hasSlots() || this.dropDetail?.index != null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 触发 onExpandableChanged 回调
|
||||
*/
|
||||
notifyExpandableChanged(): void {
|
||||
this.onExpandableChanged && this.onExpandableChanged(this.expandable);
|
||||
}
|
||||
|
||||
/**
|
||||
* 插入"线"位置信息
|
||||
*/
|
||||
@ -96,7 +104,7 @@ export default class TreeNode {
|
||||
|
||||
get detecting() {
|
||||
const doc = this.pluginContext.project.currentDocument;
|
||||
return doc?.isDetectingNode(this.node);
|
||||
return !!(doc?.isDetectingNode(this.node));
|
||||
}
|
||||
|
||||
get hidden(): boolean {
|
||||
|
||||
@ -17,7 +17,27 @@ export class Tree {
|
||||
|
||||
constructor(pluginContext: IPublicModelPluginContext) {
|
||||
this.pluginContext = pluginContext;
|
||||
this.id = this.pluginContext.project.currentDocument?.id;
|
||||
const doc = this.pluginContext.project.currentDocument;
|
||||
this.id = doc?.id;
|
||||
|
||||
doc?.onMountNode((payload: {node: IPublicModelNode }) => {
|
||||
const { node } = payload;
|
||||
const parentNode = node.parent;
|
||||
if (!parentNode) {
|
||||
return;
|
||||
}
|
||||
const parentTreeNode = this.getTreeNodeById(parentNode.id);
|
||||
parentTreeNode?.notifyExpandableChanged();
|
||||
});
|
||||
|
||||
doc?.onRemoveNode((node: IPublicModelNode) => {
|
||||
const parentNode = node.parent;
|
||||
if (!parentNode) {
|
||||
return;
|
||||
}
|
||||
const parentTreeNode = this.getTreeNodeById(parentNode.id);
|
||||
parentTreeNode?.notifyExpandableChanged();
|
||||
});
|
||||
}
|
||||
|
||||
setNodeSelected(nodeId: string): void {
|
||||
|
||||
@ -32,7 +32,7 @@ class ModalTreeNodeView extends Component<{
|
||||
const { project } = this.pluginContext;
|
||||
const rootNode = project.currentDocument?.root;
|
||||
const rootTreeNode = treeNode.tree.getTreeNode(rootNode!);
|
||||
const expanded = rootTreeNode.expanded;
|
||||
const { expanded } = rootTreeNode;
|
||||
|
||||
const hasVisibleModalNode = !!this.modalNodesManager?.getVisibleModalNode();
|
||||
return (
|
||||
@ -100,7 +100,7 @@ export default class TreeNodeView extends Component<{
|
||||
|
||||
componentDidMount() {
|
||||
const { treeNode, pluginContext } = this.props;
|
||||
const { event, project } = pluginContext;
|
||||
const { project } = pluginContext;
|
||||
|
||||
const doc = project.currentDocument;
|
||||
|
||||
@ -113,6 +113,9 @@ export default class TreeNodeView extends Component<{
|
||||
treeNode.onLockedChanged = (locked: boolean) => {
|
||||
this.setState({ locked });
|
||||
};
|
||||
treeNode.onExpandableChanged = (expandable: boolean) => {
|
||||
this.setState({ expandable });
|
||||
};
|
||||
|
||||
this.eventOffCallbacks.push(
|
||||
doc?.onDropLocationChanged((document: IPublicModelDocumentModel) => {
|
||||
|
||||
@ -4,7 +4,6 @@ const package = require('../packages/engine/package.json');
|
||||
const { version, name } = package;
|
||||
const options = {
|
||||
method: 'PUT',
|
||||
// 暂时使用 日常环境的 uipaas-node,上线后可切换成线上环境 https://uipaas-node.alibaba-inc.com
|
||||
hostname: 'uipaas-node.alibaba-inc.com',
|
||||
path: '/staticAssets/cdn/packages',
|
||||
headers: {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user