feat: support getFieldSupportedHelpers

This commit is contained in:
Sheldon Guo 2025-04-02 07:30:15 +08:00
parent 400e4240fa
commit 9a0cfa9971
6 changed files with 30 additions and 6 deletions

View File

@ -262,7 +262,7 @@ function _Input(props: VariableInputProps) {
[value],
);
const selectedScopeOption = useMemo(() => findScopeOption(scope, variableSegments), [scope, variableSegments]);
const selectedScopeOption = useMemo(() => findScopeOption(options, variableSegments), [options, variableSegments]);
const parsed = useMemo(() => parseValue(variableSegments, parseOptions), [parseOptions, variableSegments]);
const isConstant = typeof parsed === 'string';
@ -356,7 +356,7 @@ function _Input(props: VariableInputProps) {
}
}
await option.loadChildren(option, activeKey, variable);
setOptions((prev) => [...prev]);
setOptions([...options]);
}
};
@ -381,7 +381,7 @@ function _Input(props: VariableInputProps) {
// setPrevType(next[1]);
const newVariable = ConstantTypes[next[1]]?.default?.() ?? null;
onChange(
composeTemplate({ fullVariable: newVariable, helpers: optionPath[optionPath.length - 1]?.helpers ?? [] }),
composeTemplate({ fullVariable: newVariable, helpers: helperObservables.helpersObs.value ?? [] }),
optionPath,
);
}
@ -394,7 +394,10 @@ function _Input(props: VariableInputProps) {
}
const variableName = next.join('.');
const option = optionPath[optionPath.length - 1];
onChange(composeTemplate({ fullVariable: variableName, helpers: option?.helpers ?? [] }), optionPath);
onChange(
composeTemplate({ fullVariable: variableName, helpers: helperObservables.helpersObs.value ?? [] }),
optionPath,
);
},
[type, variable, onChange],
);

View File

@ -192,3 +192,12 @@ export function useVariable() {
isHelperAllowed,
};
}
export function getFieldSupportedHelpers(fieldSchema: any): string[] {
if (!fieldSchema) {
return [];
}
if (['datetimeNoTz', 'date'].includes(fieldSchema?.type)) {
return ['date.*'];
}
}

View File

@ -7,5 +7,6 @@
* For more information, please refer to: https://www.nocobase.com/agreement.
*/
export * from './Variable';
export { TextAreaWithGlobalScope } from './TextAreaWithGlobalScope';
export * from './Variable';
export { getFieldSupportedHelpers } from './VariableProvider';

@ -0,0 +1 @@
Subproject commit 683602770b9fdad9a8fecc71735e8e5b46b76ceb

@ -0,0 +1 @@
Subproject commit d6a1f327a10cbe56ddec3d5adbb6e4adaf7a48d3

View File

@ -10,7 +10,15 @@
import { uniqBy } from 'lodash';
import React, { createContext, useCallback, useContext } from 'react';
import { Variable, parseCollectionName, useApp, useCompile, useGlobalVariable, usePlugin } from '@nocobase/client';
import {
Variable,
getFieldSupportedHelpers,
parseCollectionName,
useApp,
useCompile,
useGlobalVariable,
usePlugin,
} from '@nocobase/client';
import WorkflowPlugin from '.';
import { useFlowContext } from './FlowContext';
@ -366,6 +374,7 @@ export function getCollectionFieldOptions(options): VariableOption[] {
[fieldNames.label]: label,
key: field.name,
[fieldNames.value]: field.name,
helpers: getFieldSupportedHelpers(field),
isLeaf,
loadChildren: isLeaf ? null : boundLoadChildren,
field,