import { ReactNode, TextareaHTMLAttributes, ChangeEvent } from 'react'; import { EventListenerHandler } from '@befe/brick-utils'; import { BaseSize, ConfiguredComponent } from '@befe/brick-core'; import { ResizeObserver } from '@juggle/resize-observer'; export declare const TEXTAREA_SIZES: readonly ["sm", "md"]; type TextareaSize = BaseSize; type NativeTextareaProps = Omit, 'style' | 'defaultValue'>; interface NodeStyleType { boxSizing: string; paddingSize: number; borderSize: number; sizingStyle: string; } export declare function getNodeStyle(node?: Element): NodeStyleType; export interface TextareaProps extends NativeTextareaProps { /** * 自定义 class */ className?: string; /** * 输入值 */ value?: string; /** * 默认值 */ defaultValue?: string; /** * 尺寸 * use config context `baseSize` as default */ size?: TextareaSize; /** * 是否禁用 */ disabled?: boolean; /** * 是否只读 */ readOnly?: boolean; /** * 文本框状态 */ status?: 'normal' | 'error'; /** * @todo * 提示内容,基本样式会跟随 status */ hint?: ReactNode; /** * 行数 */ rows?: number; /** * 不提供列数 */ /** * 最小行数 * * **注意** 设置了最小行数,即启用了高度自适应 */ minRows?: number; /** * 最大行数 */ maxRows?: number; /** * 最大输入长度, * * **注意** 仅做字数提示 */ maxLength?: number; /** * 字数计数函数 */ textCounter?: (value: string) => number; /** * @private 无提供必要性 * 是否允许溢出输入 */ /** * 值变化时的回调 */ onChange?: (e: ChangeEvent) => void; } export declare class Textarea extends ConfiguredComponent { static displayName: string; static defaultProps: { className: string; defaultValue: string; status: string; rows: number; }; elemTextarea: HTMLTextAreaElement; shadowTextarea: HTMLTextAreaElement; windowResizeHandler: EventListenerHandler | null; textareaWrap: import("react").RefObject; state: { value: string | undefined; singleRowHeight: number; paddingSize: number; borderSize: number; minHeight: number; maxHeight: number; height: string; overflowY: string; }; resizeObserver: ResizeObserver; static getDerivedStateFromProps(nextProps: TextareaProps): Partial | null; get className(): string; get size(): BaseSize; get textCounter(): TextareaProps['textCounter']; get currentCount(): number; get remainingContent(): string; componentDidMount(): void; componentDidUpdate(prevProps: Readonly): void; componentWillUnmount(): void; refTextarea: (node: HTMLTextAreaElement) => void; refShadowTextarea: (node: HTMLTextAreaElement) => void; calculateNodeHeight: () => void; resize(): void; handleChange: (e: ChangeEvent, callback?: () => void) => void; /** * focus textarea element * @public */ focus(): void; /** * blur textarea element * @public */ blur(): void; /** * select textarea element * @public */ select(): void; renderTextarea(): import("react/jsx-runtime").JSX.Element; renderShadowTextarea(): import("react/jsx-runtime").JSX.Element | null; renderTextareaWrap(): import("react/jsx-runtime").JSX.Element; renderWordCount(): import("react/jsx-runtime").JSX.Element | null; renderHint(): import("react/jsx-runtime").JSX.Element; render(): import("react/jsx-runtime").JSX.Element; } export {};