Textarea.js 1.35 KB
/**
 * 多行文本框
 */
import template from "./Textarea.html";
import style from "antd/lib/input/style/index.css";

class Textarea {
    props = {
        context: Object,
        showCount: Boolean,
        maxLength: Number,
        placeholder: String,
        onChange: Function,
        value: String,
    };

    state = {
        value: this.props.value,
        count: 0,
        maxLength: this.props.maxLength || "off",
    };

    template = template;

    handleKeyup(event) {
        if (!this.event) {
            this.event = event;
        }
        if (this.state.maxLength === "off") {
            return;
        }
        let target = event.target;
        this.state.count = target.value.length;
    }

    handleClick(event) {
        if (!this.event) {
            this.event = event;
        }
    }

    handleChange() {
        // this.props.onChange(this.state.value, this.props.context);
        this.props.onChange({
            event: this.event
        })
    }

    constructor() {
        if (!document.querySelector("#ant-input")) {
            let styleElement = document.createElement("style");
            styleElement.setAttribute("id", "ant-input");
            styleElement.setAttribute("type", "text/css");
            styleElement.innerHTML = style.toString();
            document.head.appendChild(styleElement);
        }
    }
}