如果您没有完整的回复,我将很乐意接受指导/指针/想法。
我目前正在更新使用 React 和 Blueprint JS 元素构建的电子邮件系统。
在电子邮件对话框中,我尝试使用 BlueprintJS/labs 的 TagInput 将To
和CC
字段从文本输入移动到 TagInput 系统。
http://blueprintjs.com/docs/v1/#labs/tag-input
您将在上面链接中包含的示例中看到,他们的 TagInput 字段将允许您将新标签添加到输入字段。一旦这些标签的长度超过输入字段的宽度,它将在输入字段中添加一个新行并允许您继续添加标签。
据我所知,输入字段通常不允许多行。
如何做到这一点?在我目前的代码中,一旦标签超过输入字段的宽度,它将继续在输入下方的新行上添加新标签,但是,它不会增加输入字段的高度来补偿。(使标签看起来神奇地漂浮在输入之外,悬停在其他内容上并阻碍其他内容。)
下图显示了效果。(CC 字段是 TagInput - 如您所见,第一行下方的标签只是“悬停在空间中”并覆盖主题字段,并最终向下移动以覆盖电子邮件正文。)
TagInput 的定义很简单。
<TagInput
className='pt-fill pt-input-ghost'
onChange={(cc: string[]) => this.setState({cc})}
values={this.state.cc}
inputValue={this.state.cc_input}
placeholder='CC:'
leftIconName='document-share'
/>
另外,我有一点修改的 CSS
.pt-input{
overflow-wrap: break-word;
}
.pt-tag-input{
padding-bottom: 2px;
}
.pt-tag {
margin-bottom: 2px;
margin-left: 2px;
}
.pt-tag-input-icon{
margin-right: 2px;
}
.pt-input-ghost{
border:none;
outline-style:none;
outline:none;
box-shadow:none;
border-color:transparent;
margin: 2px 0px;
background-color:transparent;
}
.pt-input-ghost:focus{
border:none;
outline-style:none;
outline:none;
box-shadow:none;
border-color:transparent;
background-color:transparent;
width: auto;
}
感谢所有的帮助:)
同样,如果您没有完整的回复,我将很乐意接受指导/指针/想法。