UNPKG

@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
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']; }