@alifd/next
Version:
A configurable component library for web built on React.
94 lines (93 loc) • 4.89 kB
TypeScript
import React, { Component, type ReactNode } from 'react';
import PropTypes from 'prop-types';
import type { ItemContext, ItemProps } from './types';
export default class Item extends Component<ItemProps> {
static displayName: string;
static propTypes: {
prefix: PropTypes.Requireable<string>;
rtl: PropTypes.Requireable<boolean>;
label: PropTypes.Requireable<PropTypes.ReactNodeLike>;
labelCol: PropTypes.Requireable<object>;
wrapperCol: PropTypes.Requireable<object>;
help: PropTypes.Requireable<PropTypes.ReactNodeLike>;
name: PropTypes.Requireable<string>;
extra: PropTypes.Requireable<PropTypes.ReactNodeLike>;
validateState: PropTypes.Requireable<string>;
hasFeedback: PropTypes.Requireable<boolean>;
style: PropTypes.Requireable<object>;
id: PropTypes.Requireable<string>;
children: PropTypes.Requireable<NonNullable<((...args: any[]) => any) | PropTypes.ReactNodeLike>>;
size: PropTypes.Requireable<string>;
fullWidth: PropTypes.Requireable<boolean>;
labelAlign: PropTypes.Requireable<string>;
labelTextAlign: PropTypes.Requireable<string>;
className: PropTypes.Requireable<string>;
required: PropTypes.Requireable<boolean>;
asterisk: PropTypes.Requireable<boolean>;
requiredMessage: PropTypes.Requireable<string>;
requiredTrigger: PropTypes.Requireable<NonNullable<string | any[] | null | undefined>>;
min: PropTypes.Requireable<number>;
max: PropTypes.Requireable<number>;
minmaxMessage: PropTypes.Requireable<string>;
minmaxTrigger: PropTypes.Requireable<NonNullable<string | any[] | null | undefined>>;
minLength: PropTypes.Requireable<number>;
maxLength: PropTypes.Requireable<number>;
minmaxLengthMessage: PropTypes.Requireable<string>;
minmaxLengthTrigger: PropTypes.Requireable<NonNullable<string | any[] | null | undefined>>;
length: PropTypes.Requireable<number>;
lengthMessage: PropTypes.Requireable<string>;
lengthTrigger: PropTypes.Requireable<NonNullable<string | any[] | null | undefined>>;
pattern: PropTypes.Requireable<any>;
patternMessage: PropTypes.Requireable<string>;
patternTrigger: PropTypes.Requireable<NonNullable<string | any[] | null | undefined>>;
format: PropTypes.Requireable<string>;
formatMessage: PropTypes.Requireable<string>;
formatTrigger: PropTypes.Requireable<NonNullable<string | any[] | null | undefined>>;
validator: PropTypes.Requireable<(...args: any[]) => any>;
validatorTrigger: PropTypes.Requireable<NonNullable<string | any[] | null | undefined>>;
autoValidate: PropTypes.Requireable<boolean>;
device: PropTypes.Requireable<string>;
responsive: PropTypes.Requireable<boolean>;
colSpan: PropTypes.Requireable<number>;
labelWidth: PropTypes.Requireable<NonNullable<string | number | null | undefined>>;
isPreview: PropTypes.Requireable<boolean>;
renderPreview: PropTypes.Requireable<(...args: any[]) => any>;
errorMessageName: PropTypes.Requireable<string>;
useLabelForErrorMessage: PropTypes.Requireable<boolean>;
preferMarginToDisplayHelp: PropTypes.Requireable<boolean>;
colon: PropTypes.Requireable<boolean>;
disabled: PropTypes.Requireable<boolean>;
valueName: PropTypes.Requireable<string>;
};
static defaultProps: {
prefix: string;
hasFeedback: boolean;
labelWidth: number;
};
static contextTypes: {
_formField: PropTypes.Requireable<object>;
_formSize: PropTypes.Requireable<string>;
_formDisabled: PropTypes.Requireable<boolean>;
_formPreview: PropTypes.Requireable<boolean>;
_formFullWidth: PropTypes.Requireable<boolean>;
_formLabelForErrorMessage: PropTypes.Requireable<boolean>;
_formMarginToDisplayHelp: PropTypes.Requireable<boolean>;
};
static _typeMark: string;
readonly context: ItemContext;
/**
* 从子元素里面提取表单组件。TODO: 2.x 中改为只获取一个元素
*/
getNames(children: ReactNode): any[];
getHelper(children: ReactNode): React.JSX.Element;
getState(children: ReactNode): "warning" | import("@alifd/field").FieldState | undefined;
getSize(): "small" | "medium" | "large";
getDisabled(): boolean | undefined;
getIsPreview(): boolean | undefined;
getFullWidth(): boolean;
getLabelForErrorMessage(): string | null;
getItemLabel(children: ReactNode): React.JSX.Element | null;
getItemWrapper(children: ReactNode): React.JSX.Element;
getLabelAlign(labelAlign: ItemProps['labelAlign'], device: ItemProps['device']): "left" | "top" | "inset" | undefined;
render(): React.JSX.Element;
}