问题描述
我的问题与“旧” Vaadin 论坛中的 this post 相关。我想将 Vaadin TextArea 的初始行号设置为 1,所以它看起来像一个 TextField。
提到的帖子有解决方案:
这需要一些 JavaScript 来修复。您需要将 rows=1 设置为内部元素
<textarea part="value"></textarea>
不幸的是,我不知道如何应用此解决方案,因为我仍然是 JS 和 CSS 初学者。我们已经有一些调整 TextAreas(和其他组件)的 JS 代码,也许在这部分我需要添加一些代码?
const $_documentContainer = document.createElement('template');
$_documentContainer.innerHTML = `<dom-module id="our-project-text-area" theme-for="vaadin-text-area">
<template>
<style> {
:host [part="input-field"] {
font-weight: lighter;
}
:host [part="input-field"]::after {
background-color: var(--mainColor);
}
:host([focused]:not([invalid])) [part="label"] {
color: var(--mainColor);
}
}
</style>
</template>
</dom-module>`;
document.head.appendChild($_documentContainer.content);
您能帮我如何为 TextAreas Shadow DOM 中的特定元素添加属性吗?
解决方法
var textArea = new TextArea();
textArea.getElement().executeJs("this.shadowRoot.querySelector('textarea').rows = $0;",rows);
this
指的是您使用 getElement()
选择的元素,因此它将是 <vaadin-text-area>
HTML 元素。
querySelector
方法基本上基于 CSS 选择器查找元素,在这种情况下,我们要选择阴影根中的 <textarea>
。您可以使用更具体的 CSS 或 {{1}} 来选择它,但由于 [part='value']
属性是 textarea 标签固有的,我认为可以选择它。