Simplify search term renderer matching
Summary: Each search term renderer handles its "editing" state internally now. As a result, we can simplify switch-case Reviewed By: antonk52 Differential Revision: D49454252 fbshipit-source-id: 297ce73f53772b0112ed338c6aac0583f3807ec8
This commit is contained in:
committed by
Facebook GitHub Bot
parent
e031032b93
commit
f3bff735cc
@@ -9,14 +9,9 @@
|
|||||||
|
|
||||||
import {CloseOutlined} from '@ant-design/icons';
|
import {CloseOutlined} from '@ant-design/icons';
|
||||||
import {Button, Space} from 'antd';
|
import {Button, Space} from 'antd';
|
||||||
import dayjs from 'dayjs';
|
|
||||||
import * as React from 'react';
|
import * as React from 'react';
|
||||||
import {
|
import {PowerSearchAbsoluteDateTerm} from './PowerSearchAbsoluteDateTerm';
|
||||||
DATE_ONLY_FORMAT,
|
import {OperatorConfig} from './PowerSearchConfig';
|
||||||
DATE_TIME_FORMAT,
|
|
||||||
PowerSearchAbsoluteDateTerm,
|
|
||||||
} from './PowerSearchAbsoluteDateTerm';
|
|
||||||
import {FieldConfig, OperatorConfig} from './PowerSearchConfig';
|
|
||||||
import {PowerSearchEnumSetTerm} from './PowerSearchEnumSetTerm';
|
import {PowerSearchEnumSetTerm} from './PowerSearchEnumSetTerm';
|
||||||
import {PowerSearchEnumTerm} from './PowerSearchEnumTerm';
|
import {PowerSearchEnumTerm} from './PowerSearchEnumTerm';
|
||||||
import {PowerSearchFloatTerm} from './PowerSearchFloatTerm';
|
import {PowerSearchFloatTerm} from './PowerSearchFloatTerm';
|
||||||
@@ -42,10 +37,7 @@ export const PowerSearchTerm: React.FC<PowerSearchTermProps> = ({
|
|||||||
onCancel,
|
onCancel,
|
||||||
onFinalize,
|
onFinalize,
|
||||||
}) => {
|
}) => {
|
||||||
const hasValue = searchTerm.searchValue != null;
|
|
||||||
|
|
||||||
let searchValueComponent: React.ReactNode = null;
|
let searchValueComponent: React.ReactNode = null;
|
||||||
if (!hasValue) {
|
|
||||||
switch (searchTerm.operator.valueType) {
|
switch (searchTerm.operator.valueType) {
|
||||||
case 'STRING': {
|
case 'STRING': {
|
||||||
searchValueComponent = (
|
searchValueComponent = (
|
||||||
@@ -72,6 +64,7 @@ export const PowerSearchTerm: React.FC<PowerSearchTermProps> = ({
|
|||||||
searchValue: newValue,
|
searchValue: newValue,
|
||||||
});
|
});
|
||||||
}}
|
}}
|
||||||
|
defaultValue={searchTerm.searchValue}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
break;
|
break;
|
||||||
@@ -138,6 +131,7 @@ export const PowerSearchTerm: React.FC<PowerSearchTermProps> = ({
|
|||||||
});
|
});
|
||||||
}}
|
}}
|
||||||
enumLabels={searchTerm.operator.enumLabels}
|
enumLabels={searchTerm.operator.enumLabels}
|
||||||
|
defaultValue={searchTerm.searchValue}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
break;
|
break;
|
||||||
@@ -161,133 +155,15 @@ export const PowerSearchTerm: React.FC<PowerSearchTermProps> = ({
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default: {
|
default: {
|
||||||
|
// Compilation is going to fail if switch-case is not exhaustive (i.e. we did not cover all possible cases)
|
||||||
|
const exhaustiveCheck: never = searchTerm.operator;
|
||||||
console.error(
|
console.error(
|
||||||
'PowerSearchTerm -> unknown operator.valueType',
|
'PowerSearchTerm -> unknown operator.valueType',
|
||||||
searchTerm,
|
searchTerm,
|
||||||
|
exhaustiveCheck,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
switch (searchTerm.operator.valueType) {
|
|
||||||
case 'STRING': {
|
|
||||||
searchValueComponent = (
|
|
||||||
<PowerSearchStringTerm
|
|
||||||
onCancel={onCancel}
|
|
||||||
onChange={(newValue) => {
|
|
||||||
onFinalize({
|
|
||||||
...searchTerm,
|
|
||||||
searchValue: newValue,
|
|
||||||
});
|
|
||||||
}}
|
|
||||||
defaultValue={searchTerm.searchValue}
|
|
||||||
/>
|
|
||||||
);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 'INTEGER': {
|
|
||||||
searchValueComponent = (
|
|
||||||
<PowerSearchIntegerTerm
|
|
||||||
onCancel={onCancel}
|
|
||||||
onChange={(newValue) => {
|
|
||||||
onFinalize({
|
|
||||||
...searchTerm,
|
|
||||||
searchValue: newValue,
|
|
||||||
});
|
|
||||||
}}
|
|
||||||
defaultValue={searchTerm.searchValue}
|
|
||||||
/>
|
|
||||||
);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 'FLOAT': {
|
|
||||||
searchValueComponent = (
|
|
||||||
<PowerSearchFloatTerm
|
|
||||||
onCancel={onCancel}
|
|
||||||
onChange={(newValue) => {
|
|
||||||
onFinalize({
|
|
||||||
...searchTerm,
|
|
||||||
searchValue: newValue,
|
|
||||||
});
|
|
||||||
}}
|
|
||||||
defaultValue={searchTerm.searchValue}
|
|
||||||
/>
|
|
||||||
);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 'ENUM': {
|
|
||||||
searchValueComponent = (
|
|
||||||
<PowerSearchEnumTerm
|
|
||||||
onCancel={onCancel}
|
|
||||||
onChange={(newValue) => {
|
|
||||||
onFinalize({
|
|
||||||
...searchTerm,
|
|
||||||
searchValue: newValue,
|
|
||||||
});
|
|
||||||
}}
|
|
||||||
enumLabels={searchTerm.operator.enumLabels}
|
|
||||||
defaultValue={searchTerm.searchValue}
|
|
||||||
/>
|
|
||||||
);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 'ENUM_SET': {
|
|
||||||
searchValueComponent = (
|
|
||||||
<PowerSearchEnumSetTerm
|
|
||||||
onCancel={onCancel}
|
|
||||||
onChange={(newValue) => {
|
|
||||||
onFinalize({
|
|
||||||
...searchTerm,
|
|
||||||
searchValue: newValue,
|
|
||||||
});
|
|
||||||
}}
|
|
||||||
enumLabels={searchTerm.operator.enumLabels}
|
|
||||||
defaultValue={searchTerm.searchValue}
|
|
||||||
/>
|
|
||||||
);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 'STRING_SET': {
|
|
||||||
searchValueComponent = (
|
|
||||||
<PowerSearchStringSetTerm
|
|
||||||
onCancel={onCancel}
|
|
||||||
onChange={(newValue) => {
|
|
||||||
onFinalize({
|
|
||||||
...searchTerm,
|
|
||||||
searchValue: newValue,
|
|
||||||
});
|
|
||||||
}}
|
|
||||||
defaultValue={searchTerm.searchValue}
|
|
||||||
/>
|
|
||||||
);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 'ABSOLUTE_DATE': {
|
|
||||||
searchValueComponent = (
|
|
||||||
<PowerSearchAbsoluteDateTerm
|
|
||||||
onCancel={onCancel}
|
|
||||||
onChange={(newValue) => {
|
|
||||||
onFinalize({
|
|
||||||
...searchTerm,
|
|
||||||
searchValue: newValue,
|
|
||||||
});
|
|
||||||
}}
|
|
||||||
minValue={searchTerm.operator.minValue}
|
|
||||||
maxValue={searchTerm.operator.maxValue}
|
|
||||||
dateOnly={searchTerm.operator.dateOnly}
|
|
||||||
defaultValue={searchTerm.searchValue}
|
|
||||||
/>
|
|
||||||
);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 'NO_VALUE': {
|
|
||||||
searchValueComponent = null;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
default: {
|
|
||||||
searchValueComponent = <Button>{searchTerm.searchValue}</Button>;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Space.Compact block size="small">
|
<Space.Compact block size="small">
|
||||||
|
|||||||
Reference in New Issue
Block a user