choerodon-ui
Version:
An enterprise-class UI design language and React-based implementation
407 lines (406 loc) • 14.8 kB
TypeScript
import React, { Component, MouseEvent, ReactElement, ReactNode } from 'react';
import ConfigContext, { ConfigContextValue } from '../../../../lib/config-provider/ConfigContext';
import { TableFilterAdapterProps } from '../../../../lib/configure';
import Popover from '../../../../lib/popover';
import Field, { DynamicProps, FieldProps, Fields } from '../../data-set/Field';
import DataSet, { DataSetProps } from '../../data-set/DataSet';
import Record from '../../data-set/Record';
import { FieldIgnore, FieldType } from '../../data-set/enum';
import TextField from '../../text-field';
import { ElementProps } from '../../core/ViewComponent';
import { ButtonProps } from '../../button/Button';
import { DynamicFilterBarConfig } from '../Table';
import { TransportProps } from '../../data-set/Transport';
import TableStore from '../TableStore';
/**
* 当前数据是否有值并需要选中
* @param data
*/
export declare function isSelect(data: any): boolean;
export declare function isEqualDynamicProps(originalValue: any, newValue: any, dataSet?: DataSet, record?: Record, name?: string): boolean;
/**
* 提交副本数据
* @param data
*/
export declare function omitData(data: any): Pick<any, string | number | symbol>;
/**
* obj 值使用 JSON 保存、获取赋值转化
* @param value
*/
export declare function parseValue(value: any): any;
export declare function stringifyValue(value: any): any;
/**
* 处理查询过滤条件
* @params
*/
export declare function processFilterParam(dataSet: any): void;
/**
* 查询字段是否禁用
* @param field 查询字段
* @param queryDataSet 查询dataSet
* @returns
*/
export declare function fieldIsDisabled(field: Field, queryDataSet: DataSet): boolean;
/**
* 高级搜索字段配置类型声明
*/
export interface AdvancedSearchField {
name: string;
/**
* 字段关联表
*/
tableName?: string;
/**
* 字段别名
*/
alias?: string;
/**
* 字段配置来源
*/
source?: 'fields' | 'queryFields' | 'other';
/**
* 其他字段 & 配置覆盖
*/
fieldProps?: FieldProps;
}
export interface TableDynamicFilterBarProps extends ElementProps {
dataSet: DataSet;
queryDataSet?: DataSet;
queryFields: ReactElement<any>[];
queryFieldsLimit?: number;
buttons?: ReactElement<ButtonProps>[];
summaryBar?: ReactElement<any>;
dynamicFilterBar?: DynamicFilterBarConfig;
onQuery?: () => void;
onReset?: () => void;
onFieldEnterDown?: ({ e, name }: {
e: any;
name: any;
}) => void;
autoQueryAfterReset?: boolean;
fuzzyQuery?: boolean;
fuzzyQueryOnly?: boolean;
fuzzyQueryPlaceholder?: string;
searchCode?: string;
autoQuery?: boolean;
refreshBtn?: boolean;
onRefresh?: () => Promise<boolean | undefined> | boolean | undefined | void;
sortableFieldNames?: string[];
advancedSearchFields?: AdvancedSearchField[];
defaultActiveKey?: string;
tableStore?: TableStore;
}
export declare const CONDITIONSTATUS = "__CONDITIONSTATUS__";
export declare const SELECTFIELDS = "__SELECTFIELDS__";
export declare const MENUDATASET = "__MENUDATASET__";
export declare const CONDITIONDATASET = "__CONDITIONDATASET__";
export declare const OPTIONDATASET = "__OPTIONDATASET__";
export declare const FILTERMENUDATASET = "__FILTERMENUDATASET__";
export declare const MENURESULT = "__MENURESULT__";
export declare const SEARCHTEXT = "__SEARCHTEXT__";
export declare const SELECTCHANGE = "__SELECTCHANGE__";
export declare const EXPTYPE = "__EXPTYPE__";
export declare const SEARCHEXP = "__SEARCHEXP__";
export declare const NEWFILTERDATASET = "__NEWFILTERDATASET__";
export declare const ORIGINALVALUEOBJ = "__ORIGINALVALUEOBJ__";
export default class TableDynamicFilterBar extends Component<TableDynamicFilterBarProps> {
static get contextType(): typeof ConfigContext;
static defaultProps: {
queryFieldsLimit: number;
autoQueryAfterReset: boolean;
fuzzyQuery: boolean;
fuzzyQueryOnly: boolean;
autoQuery: boolean;
refreshBtn: boolean;
buttons: never[];
};
context: ConfigContextValue;
get prefixCls(): string;
get queryFields(): React.ReactElement<any>[];
moreFields: Field[];
/**
* 控制添加筛选下拉显隐
*/
fieldSelectHidden: boolean;
/**
* 收起/展开
*/
expand: boolean;
/**
* 弹窗显隐
*/
visible: boolean;
shouldLocateData: boolean;
showExpandIcon: boolean;
refAdvancedFilterContainer: Popover | null;
refDropdown: HTMLDivElement | null;
refSingleWrapper: HTMLDivElement | null;
refEditors: Map<string, any>;
refFilterItems: Map<string, any>;
refCustomizeExpTypeEditor: TextField | null;
originalConditionFields: string[];
tempFields: Fields;
isTooltipShown?: boolean;
constructor(props: any, context: any);
componentDidMount(): void;
componentWillUnmount(): void;
componentWillReceiveProps(nextProps: Readonly<TableDynamicFilterBarProps>): void;
processDataSetListener(flag: boolean, nextProps?: TableDynamicFilterBarProps): void;
handleMouseDownOut: (e: any) => void;
handleDataSetQuery({ dataSet }: {
dataSet: any;
}): Promise<false | undefined>;
/**
* queryDataSet 查询前校验事件 触发展开动态字段
* @param dataSet 查询DS
* @param result
*/
handleDataSetValidate({ dataSet, result }: {
dataSet: any;
result: any;
}): Promise<void>;
setConditionStatus(value: any, orglValue?: object): void;
setOriginalConditionFields: (code: any) => void;
/**
* 筛选条件更新 触发表格查询
*/
handleDataSetUpdate({ record, name, oldValue, value }: {
record: any;
name: any;
oldValue: any;
value: any;
}): Promise<void>;
/**
* queryDS 新建,初始勾选值
*/
handleDataSetCreate(): void;
/**
* queryDS reset,初始记录
*/
handleDataSetReset(): void;
/**
* queryDS load,兼容项目loadData([])的处理,初始化记录
*/
handleDataSetLoad({ dataSet }: {
dataSet: any;
}): void;
/**
* 初始化勾选值、条件字段
* @param props
*/
initConditionFields(props: any): void;
/**
* 高级搜索字段集
*/
get advancedSearchFieldProps(): {
help: string | undefined;
name: string;
type?: FieldType | undefined;
order?: import("../../data-set/enum").SortOrder | undefined;
label?: React.ReactNode;
labelWidth?: string | undefined;
format?: string | undefined;
pattern?: string | RegExp | undefined;
minLength?: number | undefined;
maxLength?: number | undefined;
step?: string | number | import("../../date-picker/DatePicker").TimeStep | undefined;
nonStrictStep?: boolean | undefined;
max?: import("moment").MomentInput;
min?: import("moment").MomentInput;
precision?: number | undefined;
numberGrouping?: boolean | undefined;
formatterOptions?: import("../../number-field/NumberField").FormatNumberFuncOptions | undefined;
validator?: import("../../validator/Validator").CustomValidator | undefined;
required?: boolean | undefined;
readOnly?: boolean | undefined;
disabled?: boolean | undefined;
textField?: string | undefined;
valueField?: string | undefined;
idField?: string | undefined;
parentField?: string | undefined;
trueValue?: string | number | boolean | undefined;
falseValue?: string | number | boolean | undefined;
options?: string | DataSet | undefined;
optionsProps?: DataSetProps | ((p: DataSetProps) => DataSetProps) | undefined;
group?: number | boolean | undefined;
defaultValue?: any;
multiple?: string | boolean | undefined;
multiLine?: boolean | undefined;
range?: boolean | [string, string] | undefined;
unique?: string | boolean | undefined;
lovCode?: string | undefined;
lovPara?: object | undefined;
lookupCode?: string | undefined;
lookupUrl?: string | ((code: string) => string) | undefined;
lovDefineUrl?: string | ((code: string) => string) | undefined;
lovQueryUrl?: string | ((code: string, config: import("../../../components-dataset/interface").LovConfig | undefined, props: import("../../data-set/Transport").TransportHookProps) => string) | undefined;
lookupAxiosConfig?: import("axios").AxiosRequestConfig | ((props: {
params?: any;
dataSet?: DataSet | undefined;
record?: Record | undefined;
lookupCode?: string | undefined;
}) => import("axios").AxiosRequestConfig) | undefined;
lovDefineAxiosConfig?: import("axios").AxiosRequestConfig | ((code: string, field?: Field | undefined) => import("axios").AxiosRequestConfig) | undefined;
lovDefineBatchAxiosConfig?: ((codes: string[]) => import("axios").AxiosRequestConfig) | undefined;
lovQueryAxiosConfig?: import("axios").AxiosRequestConfig | ((code: string, lovConfig?: import("../../../components-dataset/interface").LovConfig | undefined) => import("axios").AxiosRequestConfig) | undefined;
lookupBatchAxiosConfig?: ((codes: string[]) => import("axios").AxiosRequestConfig) | undefined;
bind?: string | undefined;
dynamicProps?: DynamicProps | ((props: import("../../data-set/Field").DynamicPropsArguments) => FieldProps | undefined) | undefined;
computedProps?: DynamicProps | undefined;
cascadeMap?: object | undefined;
currency?: string | undefined;
ignore?: FieldIgnore | undefined;
transformRequest?: ((value: any, record: Record) => any) | undefined;
transformResponse?: ((value: any, object: any) => any) | undefined;
trim?: import("../../data-set/enum").FieldTrim | undefined;
defaultValidationMessages?: import("../../validator/Validator").ValidationMessages | undefined;
highlight?: string | number | boolean | {} | React.ReactElement<any, string | ((props: any) => React.ReactElement<any, any> | null) | (new (props: any) => React.Component<any, any, any>)> | React.ReactNodeArray | React.ReactPortal | import("../../data-set/Field").HighlightProps | null | undefined;
showCheckedStrategy?: import("../../data-set/enum").CheckedStrategy | undefined;
bucketName?: string | undefined;
bucketDirectory?: string | undefined;
storageCode?: string | undefined;
attachmentCount?: number | undefined;
template?: import("../../../components-dataset/configure").AttachmentValue | undefined;
fileKey?: string | undefined;
fileSize?: number | undefined;
useChunk?: boolean | undefined;
chunkSize?: number | undefined;
chunkThreads?: number | undefined;
processValue?: ((value: any, range?: 0 | 1 | undefined) => any) | undefined;
dateMode?: import("../../date-picker/enum").ViewMode | undefined;
accept?: string[] | undefined;
placeholder?: string | string[] | undefined;
}[];
/**
* 加载动态筛选条相关初始数据 & 存储初始值
* 1.筛选条
* 2.高级搜索
* 3.模糊搜索
* @param param
*/
loadConditionData({ conditionDataSet, newFilterDataSet, menuRecord, dataSet, searchText }: {
conditionDataSet: any;
newFilterDataSet: any;
menuRecord: any;
dataSet: any;
searchText: any;
}): void;
/**
* 初始筛选条数据源状态
*/
initMenuDataSet(): Promise<boolean>;
/**
* tableFilterSuffix 预留自定义区域
*/
renderSuffix(): (JSX.Element | null)[];
getPrefix(): ReactNode;
/**
* 注入 refEditors
* @param element
* @param name
*/
createFields(element: any, name: any): ReactElement;
/**
* 判断查询值是否为空
* @param value
*/
isEmpty(value: any): boolean;
get tableFilterAdapter(): TransportProps | TableFilterAdapterProps | null | undefined;
/**
* 是否单行操作
*/
isSingleLineOpt(): boolean;
/**
* 勾选
* @param code
* @param record
*/
handleSelect: (code: any, record?: Record | undefined) => void;
/**
* 取消勾选
* @param code
*/
handleUnSelect: (code: any) => void;
/**
* 查询前修改提示及校验定位
*/
modifiedCheckQuery(fuzzyValue?: string, fuzzyOldValue?: string, refresh?: boolean): Promise<void>;
renderRefreshBtn(): ReactNode;
/**
* 渲染展开逻辑
* @param hidden 是否隐藏全部
*/
getExpandNode(hidden: any): ReactNode;
/**
* 过滤比较符
* @param record
* @param optionRecord
* @returns
*/
optionsFilter(record: any, optionRecord: any): boolean;
/**
* 高级筛选弹窗确认
*/
handleFilterOk(): Promise<void>;
/**
* 高级筛选弹窗取消
*/
handleFilterCancel(): void;
setFilterVisiable(): void;
isPopupChildren(element: HTMLElement | null): boolean;
handleEmitFilterCancel(e: Event | KeyboardEvent): void;
saveCustomizeExpTypeEditorRef(node: TextField | null): void;
saveAdvancedFilterContainerRef(node: Popover | null): void;
/**
* 渲染高级筛选面板
*/
getAdvancedFilter(): ReactNode;
getCombineSort(): ReactNode;
/**
* 渲染模糊搜索
*/
getFuzzyQuery(): ReactNode;
/**
* 渲染重置按钮
*/
getResetButton(): JSX.Element;
/**
* 筛选头
* fuzzyQuery + quickFilterMenu + resetButton + buttons
*/
getFilterMenu(): ReactNode;
/**
* 查询字段初始顺序
* 排除动态属性影响
*/
get originOrderQueryFields(): Field[];
/**
* 获取模糊搜索字段参数名
*/
get searchText(): string;
handleHelpMouseEnter(e: MouseEvent, help: string): void;
handleHelpMouseLeave(): void;
renderTooltipHelp(help: any): JSX.Element | undefined;
/**
* 渲染查询项 label
* @param param
* @returns
*/
getLabel({ field, value, record, placeholder }: {
field: any;
value: any;
record: any;
placeholder: any;
}): any;
/**
* 渲染查询条
*/
getQueryBar(): ReactNode;
/**
*
* @param collapse
* @param value 模糊查询参数
*/
handleQuery(collapse?: boolean, value?: string, oldValue?: string): Promise<void>;
render(): JSX.Element | ({} | undefined)[];
}