jamis
Version:
一种支持通过JSON配置方式生成页面的组件库
80 lines (79 loc) • 3.22 kB
TypeScript
import type { CSSProperties } from 'react';
import React from 'react';
import type { ActionObject, ListenerAction, ScopedComponentType } from 'jamis-core';
import Sortable from 'sortablejs';
import type { ComboCondition, ComboProps, ComboSubControl, FormProps } from '../types';
interface ComboState {
/** 重复的索引项, 在要校验整个项的场景下有空 */
duplicateIndex: number;
}
export default class ComboControl extends React.Component<ComboProps, ComboState> {
static defaultProps: Partial<ComboProps>;
static propsList: (keyof ComboProps)[];
subForms: Array<ScopedComponentType<FormProps>>;
subFormDefaultValues: Array<{
index: number;
values: any;
setted: boolean;
}>;
keys: Array<string>;
dragTip?: HTMLElement;
sortable?: Sortable;
defaultValue?: any;
toDispose: Array<Function>;
id: string;
constructor(props: ComboProps);
componentDidUpdate(prevProps: ComboProps): void;
componentWillUnmount(): void;
doAction(action: ListenerAction, args: any): void;
addItemValue: (itemValue: any) => void;
getValueAsArray: (props?: Readonly<ComboProps>) => any[];
addItemWith: (condition: ComboCondition) => void;
addItem: () => Promise<void>;
deleteItem: (key: number) => Promise<void>;
handleChange: (values: any, diff: any, { index }: {
index: number;
}) => void;
handleRadioChange: (ctx: any, { index, name, trueValue, falseValue }: any) => false | undefined;
handleSingleFormChange: (values: Record<string, any>) => void;
handleSubFormValid: (valid: boolean, { index }: any) => void;
handleFormInit: (values: any, { index }: any) => void;
handleSingleFormInit(values: any): void;
handleAction(e: React.UIEvent<any> | undefined, action: ActionObject, ...rest: any[]): any;
validate(): Promise<string | void>;
flush: () => Promise<void>;
dragTipRef(ref: any): void;
initDragging(): void;
destroyDragging(): void;
refsMap: {
[propName: number]: any;
};
makeFormRef: any;
formRef(ref: any, index?: number): void;
memoizedFormatValue: any;
formatValue(value: any, index?: number): any;
pickCondition(value: any): ComboCondition | null;
handleComboTypeChange(index: number, selection: any): void;
handleTabSelect: (key: number) => Promise<void>;
setNull(e: React.MouseEvent): void;
renderPlaceholder(): JSX.Element;
renderTabsMode(): JSX.Element;
renderDelBtn(value: any, index: number): JSX.Element | null;
renderAddBtn(): JSX.Element | null;
renderMultiValue: ({ index, style }: {
index: number;
style?: CSSProperties;
}) => JSX.Element | null;
renderMultipe(): JSX.Element;
renderSingle(): JSX.Element;
renderItems(finnalControls: ComboSubControl[], data: object, index?: number): JSX.Element;
render(): JSX.Element | null;
}
export declare class ComboControlRenderer extends ComboControl {
setData(value: any, replace?: boolean, index?: number | string, condition?: any): Promise<void>;
}
export declare class KVControlRenderer extends ComboControl {
}
export declare class KVSControlRenderer extends ComboControl {
}
export {};