diff --git a/.changeset/hot-nails-cough.md b/.changeset/hot-nails-cough.md new file mode 100644 index 00000000..b3b063c3 --- /dev/null +++ b/.changeset/hot-nails-cough.md @@ -0,0 +1,5 @@ +--- +"@vue-flow/core": patch +--- + +Deprecate template prop for nodes diff --git a/.changeset/rude-pets-build.md b/.changeset/rude-pets-build.md new file mode 100644 index 00000000..0af1421b --- /dev/null +++ b/.changeset/rude-pets-build.md @@ -0,0 +1,5 @@ +--- +"@vue-flow/core": minor +--- + +Resolve slot templates before falling back to default node/edge components diff --git a/packages/core/src/container/EdgeRenderer/EdgeRenderer.vue b/packages/core/src/container/EdgeRenderer/EdgeRenderer.vue index 05629129..84ae60e5 100644 --- a/packages/core/src/container/EdgeRenderer/EdgeRenderer.vue +++ b/packages/core/src/container/EdgeRenderer/EdgeRenderer.vue @@ -22,6 +22,8 @@ const { emits, } = useVueFlow() +const instance = getCurrentInstance() + function selectable(edgeSelectable?: boolean) { return typeof edgeSelectable === 'undefined' ? elementsSelectable.value : edgeSelectable } @@ -34,8 +36,13 @@ function focusable(edgeFocusable?: boolean) { function getType(type?: string, template?: GraphEdge['template']) { const name = type || 'default' + + const slot = slots?.[`edge-${name}`] + if (slot) { + return slot + } + let edgeType = template ?? getEdgeTypes.value[name] - const instance = getCurrentInstance() if (typeof edgeType === 'string') { if (instance) { @@ -45,17 +52,14 @@ function getType(type?: string, template?: GraphEdge['template']) { } } } + if (edgeType && typeof edgeType !== 'string') { return edgeType } - const slot = slots?.[`edge-${name}`] - if (!slot) { - emits.error(new VueFlowError(ErrorCode.EDGE_TYPE_MISSING, edgeType)) - return false - } + emits.error(new VueFlowError(ErrorCode.EDGE_TYPE_MISSING, edgeType)) - return slot + return false } diff --git a/packages/core/src/container/NodeRenderer/NodeRenderer.vue b/packages/core/src/container/NodeRenderer/NodeRenderer.vue index 425f4105..14595dd6 100644 --- a/packages/core/src/container/NodeRenderer/NodeRenderer.vue +++ b/packages/core/src/container/NodeRenderer/NodeRenderer.vue @@ -1,5 +1,5 @@ diff --git a/packages/core/src/types/node.ts b/packages/core/src/types/node.ts index 7673f7f8..047b480a 100644 --- a/packages/core/src/types/node.ts +++ b/packages/core/src/types/node.ts @@ -85,7 +85,10 @@ export interface Node> /** Is node hidden */ hidden?: boolean - /** overwrites current node type */ + /** + * @deprecated will be removed in the next major release + * overwrites current node type + */ template?: NodeComponent /** Additional data that is passed to your custom components */ data?: Data