diff --git a/packages/core/client/src/flow/models/fields/ReadPrettyField/AssociationFieldModel/AssociationReadPrettyFieldModel.tsx b/packages/core/client/src/flow/models/fields/ReadPrettyField/AssociationFieldModel/AssociationReadPrettyFieldModel.tsx index 8a089ade71..e80d4264d6 100644 --- a/packages/core/client/src/flow/models/fields/ReadPrettyField/AssociationFieldModel/AssociationReadPrettyFieldModel.tsx +++ b/packages/core/client/src/flow/models/fields/ReadPrettyField/AssociationFieldModel/AssociationReadPrettyFieldModel.tsx @@ -11,6 +11,22 @@ import React from 'react'; import { ReadPrettyFieldModel } from '../ReadPrettyFieldModel'; export class AssociationReadPrettyFieldModel extends ReadPrettyFieldModel { - resource; targetCollection; } + +AssociationReadPrettyFieldModel.registerFlow({ + key: 'AssociationReadPrettyFieldDefault', + auto: true, + sort: 150, + steps: { + step1: { + handler(ctx, params) { + const { collectionField } = ctx.model; + const { target } = collectionField?.options || {}; + const collectionManager = collectionField.collection.collectionManager; + const targetCollection = collectionManager.getCollection(target); + ctx.model.targetCollection = targetCollection; + }, + }, + }, +}); diff --git a/packages/core/client/src/flow/models/fields/ReadPrettyField/AssociationFieldModel/AssociationSelectReadPrettyFieldModel.tsx b/packages/core/client/src/flow/models/fields/ReadPrettyField/AssociationFieldModel/AssociationSelectReadPrettyFieldModel.tsx index 54480cea0c..f8ed9b6b9c 100644 --- a/packages/core/client/src/flow/models/fields/ReadPrettyField/AssociationFieldModel/AssociationSelectReadPrettyFieldModel.tsx +++ b/packages/core/client/src/flow/models/fields/ReadPrettyField/AssociationFieldModel/AssociationSelectReadPrettyFieldModel.tsx @@ -8,10 +8,28 @@ */ import React from 'react'; +import { Button } from 'antd'; +import { tval } from '@nocobase/utils/client'; import { AssociationReadPrettyFieldModel } from './AssociationReadPrettyFieldModel'; import { FlowEngineProvider, reactive } from '@nocobase/flow-engine'; import { getUniqueKeyFromCollection } from '../../../../../collection-manager/interfaces/utils'; -import { tval } from '@nocobase/utils/client'; + +const LinkToggleWrapper = ({ enableLink, children, currentRecord, ...props }) => { + return enableLink ? ( + + ) : ( + children + ); +}; export class AssociationSelectReadPrettyFieldModel extends AssociationReadPrettyFieldModel { public static readonly supportedFieldInterfaces = [ @@ -24,9 +42,13 @@ export class AssociationSelectReadPrettyFieldModel extends AssociationReadPretty 'updatedBy', 'createdBy', ]; + + set onClick(fn) { + this.setProps({ ...this.props, onClick: fn }); + } @reactive public render() { - const { fieldNames } = this.props; + const { fieldNames, enableLink = true } = this.props; const value = this.getValue(); if (!this.collectionField || !value) { return; @@ -58,27 +80,37 @@ export class AssociationSelectReadPrettyFieldModel extends AssociationReadPretty ...targetLabelField.getComponentProps(), }, }); - model.setSharedContext({ ...this.ctx.shared, value: value?.[fieldNames.label] }); + model.setSharedContext({ + ...this.ctx.shared, + value: value?.[fieldNames.label], + currentRecord: value, + }); model.setParent(this.parent); if (Array.isArray(value)) { return (