Commit 7fa277db authored by zhangwenshuai's avatar zhangwenshuai

修改可输可选控件

parent 9465e76c
import React, { useState } from 'react';
import React, { useState, useRef } from 'react';
import InputSearch from '../../extra/dataEntry/textSelect';
import { ApolloInputSearchProps } from '../editInterface';
import { antiAssign } from '../../../../utils/utils';
......@@ -26,13 +26,14 @@ export const ApolloInputSearch = (props: ApolloInputSearchProps) => {
'getInstanceDetail',
]);
const [curValue, setCurValue] = useState(value);
const isOpen = useRef(null);
const changeValue = (value: any) => {
setCurValue(value);
if (typeof onChange === 'function') {
onChange(value, value);
}
// 表格中的单选,选择后直接触发更新
if (origin === 'table' && selfProps.mode !== 'multiple') {
// 弹框关闭时触发修改
if (origin === 'table' && selfProps.mode !== 'multiple' && !isOpen.current) {
onBlur(value);
}
};
......@@ -41,6 +42,12 @@ export const ApolloInputSearch = (props: ApolloInputSearchProps) => {
onEmitChange(value, value);
}
};
const onDropdownVisibleChange = (open: boolean) => {
isOpen.current = open;
};
if (origin === 'table') {
selfProps.onDropdownVisibleChange = onDropdownVisibleChange;
}
return (
<InputSearch
className={s.select}
......
......@@ -3,7 +3,6 @@ import { Menu, Empty, Spin, Input, Dropdown } from 'antd';
import { findDOMNode } from 'react-dom';
import lodash from 'lodash';
import styles from './styles.less';
import s from "@/submodule/components/apolloTable/component/base/edit/search/index.less";
/*
* 此空间用于数据选择及输入控制,若不选择只传入输入框数据
......@@ -109,6 +108,7 @@ class TextSelect extends React.Component<Props, State> {
};
onResetValue = (searchStr) => {
if (!searchStr) return undefined;
return { value: '', label: searchStr };
};
......@@ -142,23 +142,19 @@ class TextSelect extends React.Component<Props, State> {
}
};
onClear = () => {
const { tempVisible } = this.state;
const searchStr = '';
const selected = this.onResetValue(searchStr);
this.setState({ searchStr, selected }, () => {
if (tempVisible) {
this.fetch(searchStr);
}
this.onChange(selected);
});
};
onVisibleChange = (tempVisible) => {
const { onDropdownVisibleChange } = this.props;
const { selected } = this.state;
this.setState({ tempVisible });
if (onDropdownVisibleChange) {
onDropdownVisibleChange(tempVisible);
if (!tempVisible) {
// 清空或者为空对象时,强制置空
if (!selected || selected.length === 0 || (!selected.label || !selected.value || !selected.key)) {
return this.onChange(undefined);
}
this.onChange(selected);
}
}
};
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment