jamis
Version:
一种支持通过JSON配置方式生成页面的组件库
77 lines (76 loc) • 3.3 kB
TypeScript
import React from 'react';
import type { GetItemPropsOptions, StateChangeOptions } from 'downshift';
import type { ListenerAction, Option } from 'jamis-core';
import type { InputTextProps } from '../types';
interface TextState {
isOpen?: boolean;
inputValue?: string;
isFocused?: boolean;
revealPassword?: boolean;
}
export default class TextControl extends React.PureComponent<InputTextProps, TextState> {
static defaultProps: Partial<InputTextProps>;
input?: HTMLInputElement;
highlightedIndex?: any;
unHook: Function;
/**
* 发出了change事件的value值, 用于避免重复发出
*/
valueEmitedChangeEvent: any;
handleNormalInputChange: (e: React.ChangeEvent<HTMLInputElement>) => void;
constructor(props: InputTextProps);
componentDidMount(): void;
componentDidUpdate(prevProps: InputTextProps): void;
componentWillUnmount(): void;
dispatchChangeEvent: (moreData: Record<string, any>) => Promise<void | import("jamis-core").RendererEvent<any, any>>;
inputRef(ref: any): void;
doAction(action: ListenerAction, args: any): void;
focus: () => void;
clearValue: () => Promise<void>;
removeItem(index: number): void;
handleClick: () => Promise<void>;
handleFocus: (e: any) => Promise<void>;
handleBlur: (e: any) => Promise<void>;
handleInputChange: (evt: React.ChangeEvent<HTMLInputElement>) => Promise<void>;
/**
* 创建新的option
*/
createNewOption: () => Promise<void>;
handleKeyDown: (evt: React.KeyboardEvent<HTMLInputElement>) => Promise<void>;
handleChange: (value: any) => Promise<void>;
handleStateChange: (changes: StateChangeOptions<any>) => void;
/** 同时支持防抖和不防抖设置的change事件通知函数 */
handleNormalInputChangeWrap: (emitChangeDelay: InputTextProps["emitChangeDelay"]) => ((e: React.ChangeEvent<HTMLInputElement>) => Promise<void>) | import("lodash").DebouncedFunc<(e: React.ChangeEvent<HTMLInputElement>) => Promise<void>>;
normalizeValue(value: Option[] | Option | undefined | null): any;
transformValue(value: string): string;
loadAutoComplete(): void;
reload(): void;
valueToString(value: any): string;
toggleRevealPassword: () => void;
makeTextInputClass: () => import("jamis-core").ClassValue[];
renderSugItem: (option: Option, { getItemProps, indices, highlightedIndex }: {
getItemProps: (options: GetItemPropsOptions<any>) => any;
indices: any;
highlightedIndex: number | null;
}) => JSX.Element;
renderSugestMode: () => JSX.Element;
renderNormal: () => JSX.Element;
renderAddOn: () => JSX.Element | null;
render(): JSX.Element;
}
export declare function mapItemIndex(items: Array<any>, values: Array<any>, valueField?: string): any;
export declare class TextControlRenderer extends TextControl {
}
export declare class PasswordControlRenderer extends TextControl {
}
export declare class EmailControlRenderer extends TextControl {
}
export declare class UrlControlRenderer extends TextControl {
}
export declare class NativeDateControlRenderer extends TextControl {
}
export declare class NativeTimeControlRenderer extends TextControl {
}
export declare class NativeNumberControlRenderer extends TextControl {
}
export {};