import React from 'react'; import omit from 'lodash/omit'; import { FilterInterface } from '../../filters'; import { ApolloColumnType } from '../interfaces'; import Input from '../../input'; import Checkbox from '../../checkbox'; import Radio from '../../radio'; import DatePicker from '../../date-picker'; import Select from '../../select'; import { RangeInput } from '../components/RangeInput'; const { RangePicker } = DatePicker; export const renderSearch = ( columns: ApolloColumnType[], value: any, onChange: React.Dispatch>, getPrefixCls: (suffixCls?: string | undefined, customizePrefixCls?: string | undefined) => string, ): FilterInterface[] => columns .filter(item => item.filterType) .map(item => { let key: string; if (item.key) { key = String(item.key); } else { key = String( Array.isArray(item.dataIndex) ? item.dataIndex[item.dataIndex.length - 1] : item.dataIndex, ); } if (item.filterType === 'checkbox') { return { key, label: item.title, shortcut: item.search?.shortcut, disabled: item.search?.disabled, allowClear: item.search?.allowClear, filter: ( { if (val.length > 0) { onChange({ ...value, [key]: val }); } else { onChange({ ...omit(value, [key]) }); } if (item.fieldProps?.onChange) { item.fieldProps.onChange(val); } }} /> ), }; } if (item.filterType === 'radio') { return { key, label: item.title, shortcut: item.search?.shortcut, disabled: item.search?.disabled, allowClear: item.search?.allowClear, filter: ( { onChange({ ...value, [key]: e.target.value }); if (item.fieldProps?.onChange) { item.fieldProps.onChange(e); } }} /> ), }; } if (item.filterType === 'select') { return { key, label: item.title, shortcut: item.search?.shortcut, disabled: item.search?.disabled, allowClear: item.search?.allowClear, filter: ( { if (e.target.value) { onChange({ ...value, [key]: e.target.value }); } else { onChange({ ...omit(value, [key]) }); } if (item.fieldProps?.onChange) { item.fieldProps.onChange(e); } }} /> ), }; });