import type { CSSProperties, KeyboardEvent } from 'react'; import type { BaseTextInputProps } from '@pisell/utils'; /** * PisellLongText 组件 Props 类型定义 * * 继承 BaseTextInputProps,添加长文本特有的配置 */ export interface PisellLongTextProps extends BaseTextInputProps { /** * 状态模式 * @default 'edit' */ mode?: 'read' | 'edit'; /** * 是否禁用 * @default false */ disabled?: boolean; /** * 编辑态默认显示行数 * @default 3 */ rows?: number; /** * 编辑态最小行数 */ minRows?: number; /** * 编辑态最大行数 */ maxRows?: number; /** * 自动高度调整 * @default false * @example * autoSize={true} // 自动调整 * autoSize={{ minRows: 3, maxRows: 10 }} // 指定范围 */ autoSize?: boolean | { minRows?: number; maxRows?: number; }; /** * 只读态最大显示行数(超出显示展开按钮) * @default 3 */ maxLines?: number; /** * 是否启用展开功能(只读态) * @default true */ enableExpand?: boolean; /** * 展开按钮文案 * @default '展开' */ expandText?: string; /** * 收起按钮文案 * @default '收起' */ collapseText?: string; /** * 展开按钮位置 * @default 'bottom' */ expandButtonPosition?: 'bottom' | 'inline'; /** * 只读态是否显示字数统计 * @default false */ showWordCount?: boolean; /** * 字号 * @example '14px' 或 14 * @default 16 */ fontSize?: string | number; /** * 字重 * @example 'bold' 或 600 * @default 500 */ fontWeight?: string | number; /** * 文本颜色 * @example '#000000' * @default '#101828' */ color?: string; /** * 行高 * @example '1.5' 或 1.5 * @default 1.5 */ lineHeight?: string | number; /** * 占位文本 */ placeholder?: string; /** * 最大长度(字符数) */ maxLength?: number; /** * 是否显示字数统计(编辑态) * @default false */ showCount?: boolean; /** * 是否显示清空按钮 * @default false */ allowClear?: boolean; /** * 是否自动聚焦 * @default false */ autoFocus?: boolean; /** * 回车键回调(传递事件对象,支持判断 Ctrl+Enter) * @param e 键盘事件对象 */ onPressEnter?: (e: KeyboardEvent) => void; /** * 展开/收起回调 * @param expanded 是否已展开 */ onExpand?: (expanded: boolean) => void; /** * 自定义类名 */ className?: string; /** * 自定义样式 */ style?: CSSProperties; /** * ARIA 标签 */ 'aria-label'?: string; /** * ARIA 描述 */ 'aria-describedby'?: string; } export type { DisplayState, ValidationResult, TextInputState } from '@pisell/utils';