import classNames from 'classnames' import React, {Component} from 'react'; import {Text, Textarea, View} from '@tarojs/components' import {CommonEvent} from '@tarojs/components/types/common' import Taro from '@tarojs/taro' import {AtTextareaProps} from "taro-ui/types/textarea"; import './index.scss'; type ExtendEvent = { target: { value: string } } function getMaxLength( maxLength: number, textOverflowForbidden: boolean ): number { if (!textOverflowForbidden) { return maxLength + 500 } return maxLength } interface IProps extends AtTextareaProps { name?: string; adjustPosition?: boolean; /** * 只显示view,点击弹窗输入文字 */ viewOnly?: boolean; onClick?: ()=>void; } const ENV = Taro.getEnv() export default class YZTextarea extends Component { public static defaultProps: IProps public static propTypes: any private handleInput = (event: CommonEvent & ExtendEvent): void => { this.props.onChange(event.target.value, event) } private handleFocus = (event: CommonEvent): void => { this.props.onFocus && this.props.onFocus(event) } private handleBlur = (event: CommonEvent): void => { this.props.onBlur && this.props.onBlur(event) } private handleConfirm = (event: CommonEvent): void => { this.props.onConfirm && this.props.onConfirm(event) } private handleLinechange = (event: CommonEvent) => { this.props.onLinechange && this.props.onLinechange(event) } public render(): JSX.Element { const { name, customStyle, className, value, cursorSpacing, placeholder, placeholderStyle, placeholderClass, maxLength, count, disabled, autoFocus, focus, showConfirmBar, selectionStart, selectionEnd, fixed, adjustPosition, textOverflowForbidden, height, viewOnly, onClick } = this.props const _maxLength = parseInt(maxLength!.toString()) const actualMaxLength = getMaxLength(_maxLength, textOverflowForbidden!) const textareaStyle = height ? `height:${Taro.pxTransform(Number(height))}` : '' const rootCls = classNames( 'at-textarea', 'yz-textarea-container', `at-textarea--${ENV}`, { 'at-textarea--error': _maxLength < value.length }, className ) const placeholderCls = classNames('placeholder', placeholderClass) return ( {disabled || viewOnly? {value || placeholder} :