UNPKG

choerodon-ui

Version:

An enterprise-class UI design language and React-based implementation

114 lines (113 loc) 3.88 kB
import { CSSProperties, ReactNode } from 'react'; import Trigger from '../../../es/trigger/Trigger'; import { Action } from '../../../es/trigger/enum'; import { TextField, TextFieldProps } from '../text-field/TextField'; import TaskRunner from '../_util/TaskRunner'; import { TriggerViewMode } from './enum'; export interface TriggerFieldPopupContentProps { setValue: (value: any) => void; setPopup: (hidden: boolean) => void; content: ReactNode; } export { TriggerViewMode, }; export interface TriggerFieldProps<P extends TriggerFieldPopupContentProps = TriggerFieldPopupContentProps> extends TextFieldProps { /** * 下拉框的自定义内容 */ popupContent?: ReactNode | ((props: P) => ReactNode); /** * 下拉框的自定义样式名 */ popupCls?: string; /** * 下拉框的内链样式 */ popupStyle?: CSSProperties; /** * 下拉框对齐方式 */ popupPlacement?: string; /** * 触发下拉框的方式组 * 可选值:click | focus | hover | contextMenu */ trigger?: Action[]; /** * 下拉框显示延迟 * @defualt 150 */ triggerShowDelay?: number; /** * 下拉框隐藏延迟 * @defualt 50 */ triggerHiddenDelay?: number; /** * 下拉框变化钩子 */ onPopupHiddenChange?: (hidden: boolean) => void; /** * 定义浮层的容器,默认为 body * @param triggerNode */ getPopupContainer?: (triggerNode: HTMLElement) => HTMLElement | undefined | null; /** * 定义浮层对齐的目标,默认为组件最外层元素 */ getPopupAlignTarget?: () => HTMLElement; /** * 当popup中有可获取焦点对象时,是否按tab键时获取焦点 */ tabIntoPopupContent?: boolean; viewMode?: TriggerViewMode; } export default abstract class TriggerField<T extends TriggerFieldProps = TriggerFieldProps> extends TextField<T> { static displayName: string; static defaultProps: { suffixCls: string; clearButton: boolean; popupPlacement: string; triggerShowDelay: number; triggerHiddenDelay: number; viewMode: TriggerViewMode; multiple: boolean; border: boolean; valueChangeAction: import("../text-field/enum").ValueChangeAction; waitType: import("../core/enum").WaitType; readOnly: boolean; disabled: boolean; noValidate: boolean; trim: import("../data-set/enum").FieldTrim; }; popupTask?: TaskRunner; trigger: Trigger | null; statePopup: boolean; get popup(): boolean; constructor(props: any, context: any); saveTrigger(node: any): void; isValidationMessageHidden(message?: ReactNode): boolean; setPopup(statePopup: boolean): void; abstract getTriggerIconFont(): string; abstract handlePopupAnimateAppear(key: any): void; abstract handlePopupAnimateEnd(key: any, exists: any): void; abstract getPopupStyleFromAlign(target: any): CSSProperties | undefined; abstract getPopupContent(): ReactNode; getRootDomNode(): Element | Text | null; getOmitPropsKeys(): string[]; getObservableProps(props: any, context: any): any; getPopupProps(): TriggerFieldPopupContentProps; getPopupClassName(defaultClassName: string | undefined): string | undefined; getPopupWrapper(): HTMLDivElement | undefined; renderPopupContent(): T["popupContent"]; getDefaultAction(): Action[]; getWrappedEditor(renderedValue?: ReactNode): JSX.Element; getWrapperClassNames(...args: any[]): string; getDefaultSuffix(): ReactNode; handleTagAnimateEnd(): void; handlePopupMouseDown(e: any): void; handlePopupHiddenChange(hidden: boolean): void; forcePositionChanged(): void; forcePopupAlign(): void; expand(): void; collapse(): void; }