@douyinfe/semi-ui
Version:
A modern, comprehensive, flexible design system and UI library. Connect DesignOps & DevOps. Quickly build beautiful React apps. Maintained by Douyin-fe team.
51 lines (50 loc) • 2 kB
TypeScript
import React from 'react';
import { DropdownProps } from '../dropdown';
import { FilterIcon, Filter, OnFilterDropdownVisibleChange, RenderFilterDropdownItem } from './interface';
export default function ColumnFilter(props?: ColumnFilterProps): React.ReactElement;
export interface ColumnFilterProps extends Omit<RenderDropdownProps, keyof RenderFilterDropdownProps> {
prefixCls?: string;
filteredValue?: any[];
filterIcon?: FilterIcon;
filterDropdown?: React.ReactElement;
filterDropdownProps?: FilterDropdownProps;
filters?: Filter[];
}
export interface RenderDropdownProps extends FilterDropdownProps, RenderFilterDropdownProps {
filterMultiple?: boolean;
filters?: Filter[];
filteredValue?: any[];
filterDropdownVisible?: boolean;
onSelect?: (data: OnSelectData) => void;
onFilterDropdownVisibleChange?: OnFilterDropdownVisibleChange;
renderFilterDropdown?: (props: RenderFilterDropdownProps) => React.ReactNode;
renderFilterDropdownItem?: RenderFilterDropdownItem;
}
export interface FilterDropdownProps extends Omit<DropdownProps, 'render' | 'onVisibleChange'> {
}
export interface OnSelectData {
value?: any;
/** only this value is used now */
filteredValue: any;
included?: boolean;
domEvent?: React.MouseEvent<HTMLElement>;
}
export interface RenderFilterDropdownProps {
/** temporary filteredValue */
tempFilteredValue: any[];
/** set temporary filteredValue */
setTempFilteredValue: (tempFilteredValue: any[]) => void;
/** set tempFilteredValue to filteredValue. You can also pass filteredValue to directly set the filteredValue */
confirm: (props?: {
closeDropdown?: boolean;
filteredValue?: any[];
}) => void;
/** clear tempFilteredValue and filteredValue */
clear: (props?: {
closeDropdown?: boolean;
}) => void;
/** close dropdown */
close: () => void;
/** column filters */
filters?: RenderDropdownProps['filters'];
}