import React from "react"; import styles from "./index.less"; import { Tag, Input, Tooltip, Icon } from "antd"; class EditableTagGroup extends React.Component { state = { tags: ["Unremovable", "Tag 2", "Tag 3"], inputVisible: false, inputValue: "" }; handleClose = removedTag => { const tags = this.state.tags.filter(tag => tag !== removedTag); console.log(tags); this.setState({ tags }); }; showInput = () => { this.setState({ inputVisible: true }, () => this.input.focus()); }; handleInputChange = e => { this.setState({ inputValue: e.target.value }); }; handleInputConfirm = () => { const { inputValue } = this.state; let { tags } = this.state; if (inputValue && tags.indexOf(inputValue) === -1) { tags = [...tags, inputValue]; } console.log(tags); this.setState({ tags, inputVisible: false, inputValue: "" }); }; saveInputRef = input => (this.input = input); render() { const { tags, inputVisible, inputValue } = this.state; return (
{tags.map((tag, index) => { const isLongTag = tag.length > 20; const tagElem = ( this.handleClose(tag)} > {isLongTag ? `${tag.slice(0, 20)}...` : tag} ); return isLongTag ? ( {tagElem} ) : ( tagElem ); })} {inputVisible && ( )} {!inputVisible && ( New Tag )}
); } } export default () => (
);