Skip to content

Commit

Permalink
fix: 修复condition-builder 中公式值默认不高亮的问题 (baidu#9525)
Browse files Browse the repository at this point in the history
  • Loading branch information
2betop committed Jan 25, 2024
1 parent 8398e58 commit adb70d6
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 13 deletions.
2 changes: 1 addition & 1 deletion packages/amis-ui/src/components/formula/Input.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -210,7 +210,7 @@ const FormulaInput: React.FC<FormulaInputProps> = props => {
<ResultBox
className={cx(`FormulaPicker-input-variable`)}
allowInput={allowInput}
value={resultValue}
// value={resultValue}
result={
resultValue == null
? void 0
Expand Down
44 changes: 32 additions & 12 deletions packages/amis-ui/src/components/formula/Picker.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import {
anyChanged,
isExpression,
resolveVariableAndFilterForAsync,
uncontrollable
Expand Down Expand Up @@ -191,7 +192,22 @@ export class FormulaPicker extends React.Component<
};
}

componentDidUpdate(prevProps: FormulaPickerProps) {
async componentDidMount() {
const {variables, data} = this.props;
if (typeof variables === 'function') {
const list = await variables(this.props);
this.setState({variables: list});
} else if (typeof variables === 'string' && isExpression(variables)) {
const result = await resolveVariableAndFilterForAsync(
variables,
data,
'|raw'
);
this.setState({variables: result});
}
}

async componentDidUpdate(prevProps: FormulaPickerProps) {
const {value} = this.props;

if (value !== prevProps.value) {
Expand All @@ -200,6 +216,21 @@ export class FormulaPicker extends React.Component<
editorValue: this.value2EditorValue(this.props)
});
}

if (anyChanged(['variables', 'data'], this.props, prevProps)) {
const {variables, data} = this.props;
if (typeof variables === 'function') {
const list = await variables(this.props);
this.setState({variables: list});
} else if (typeof variables === 'string' && isExpression(variables)) {
const result = await resolveVariableAndFilterForAsync(
variables,
data,
'|raw'
);
this.setState({variables: result});
}
}
}

value2EditorValue(props: FormulaPickerProps) {
Expand Down Expand Up @@ -337,17 +368,6 @@ export class FormulaPicker extends React.Component<
@autobind
async handleClick() {
const {variables, data} = this.props;
if (typeof variables === 'function') {
const list = await variables(this.props);
this.setState({variables: list});
} else if (typeof variables === 'string' && isExpression(variables)) {
const result = await resolveVariableAndFilterForAsync(
variables,
data,
'|raw'
);
this.setState({variables: result});
}

const state = {
...(await this.props.onPickerOpen?.(this.props)),
Expand Down

0 comments on commit adb70d6

Please sign in to comment.