下拉选择类组件doAction修改&链式下拉框抽离逻辑

This commit is contained in:
xujiahao01 2022-02-23 13:17:06 +08:00
parent d0e9c3af70
commit 41cb86a187
8 changed files with 43 additions and 17 deletions

View File

@ -84,11 +84,25 @@ export default class ChainedSelectControl extends React.Component<
doAction(action: Action, data: object, throwErrors: boolean) {
const {resetValue, onChange} = this.props;
if (action.actionType === 'clear') {
const actionType = action?.actionType as string;
if (!!~['clear', 'reset'].indexOf(actionType)) {
onChange(resetValue ?? '');
}
}
array2value(arr: Array<any>, isExtracted: boolean = false) {
const {delimiter, joinValues, extractValue} = this.props;
// 判断arr的项是否已抽取
return isExtracted
? (joinValues ? arr.join(delimiter || ',') : arr)
: (joinValues
? arr.join(delimiter || ',')
: extractValue
? arr.map(item => item.value || item)
: arr)
}
loadMore() {
const {
value,
@ -157,10 +171,12 @@ export default class ChainedSelectControl extends React.Component<
arr.splice(idx + 1, value.length - idx - 1);
arr.push(remoteValue);
const valueRes = this.array2value(arr, true);
const rendererEvent = await dispatchEvent(
'change',
createObject(data, {
value: joinValues ? arr.join(delimiter || ',') : arr
value: valueRes
})
);
@ -168,7 +184,7 @@ export default class ChainedSelectControl extends React.Component<
return;
}
onChange(joinValues ? arr.join(delimiter || ',') : arr);
onChange(valueRes);
}
stack.push({
@ -203,11 +219,7 @@ export default class ChainedSelectControl extends React.Component<
arr.splice(index, arr.length - index);
arr.push(joinValues ? currentValue.value : currentValue);
const valueRes = joinValues
? arr.join(delimiter || ',')
: extractValue
? arr.map(item => item.value || item)
: arr;
const valueRes = this.array2value(arr);
const rendererEvent = await dispatchEvent(
'change',

View File

@ -55,8 +55,10 @@ export default class CheckboxControl extends React.Component<
doAction(action: Action, data: object, throwErrors: boolean) {
const {resetValue, onChange} = this.props;
if (action.actionType === 'clear') {
onChange(resetValue ?? false);
const actionType = action?.actionType as string;
if (!!~['clear', 'reset'].indexOf(actionType)) {
onChange(resetValue ?? '');
}
}

View File

@ -83,7 +83,9 @@ export default class TagControl extends React.PureComponent<
doAction(action: Action, data: object, throwErrors: boolean) {
const {resetValue, onChange} = this.props;
if (action.actionType === 'clear') {
const actionType = action?.actionType as string;
if (!!~['clear', 'reset'].indexOf(actionType)) {
onChange(resetValue ?? '');
}
}

View File

@ -149,7 +149,9 @@ export default class MatrixCheckbox extends React.Component<
doAction(action: Action, data: object, throwErrors: boolean) {
const {resetValue, onChange} = this.props;
if (action.actionType === 'clear') {
const actionType = action?.actionType as string;
if (!!~['clear', 'reset'].indexOf(actionType)) {
onChange(resetValue ?? '');
}
}

View File

@ -121,7 +121,9 @@ export default class NestedSelectControl extends React.Component<
doAction(action: Action, data: object, throwErrors: boolean) {
const {resetValue, onChange} = this.props;
if (action.actionType === 'clear') {
const actionType = action?.actionType as string;
if (!!~['clear', 'reset'].indexOf(actionType)) {
onChange(resetValue ?? '');
}
}

View File

@ -469,7 +469,9 @@ export function registerOptionsControl(config: OptionsConfig) {
doAction(action: Action, data: object, throwErrors: boolean) {
const {resetValue, onChange} = this.props;
if (action.actionType === 'clear') {
const actionType = action?.actionType as string;
if (!!~['clear', 'reset'].indexOf(actionType)) {
onChange(resetValue ?? '');
}
}

View File

@ -39,7 +39,9 @@ export default class RadiosControl extends React.Component<RadiosProps, any> {
doAction(action: Action, data: object, throwErrors: boolean) {
const {resetValue, onChange} = this.props;
if (action.actionType === 'clear') {
const actionType = action?.actionType as string;
if (!!~['clear', 'reset'].indexOf(actionType)) {
onChange(resetValue ?? '');
}
}

View File

@ -336,8 +336,10 @@ export default class SelectControl extends React.Component<SelectProps, any> {
}
doAction(action: Action, data: object, throwErrors: boolean): any {
const {simpleValue, resetValue} = this.props;
if (action.actionType === 'clear') {
const {resetValue} = this.props;
const actionType = action?.actionType as string;
if (!!~['clear', 'reset'].indexOf(actionType)) {
this.changeValue(resetValue ?? '');
}
}