动态调整Lightning-Input-Rich-Text的文本区域

发布于 2025-01-17 08:13:14 字数 645 浏览 0 评论 0原文

用户在文本区域内创建多个换行符后,我尝试增加文本区域框的高度。我在寻找一种方法来定位文本区域高度的值以增加每个换行符的值时遇到问题。我将不胜感激任何帮助。谢谢。

import { LightningElement } from 'lwc';

export default class TextBoxSizing extends LightningElement {
    handleTextBoxChange(event){
        let eventArr = [];
        let lineBreaks = 0;
    
        eventArr.push(...event.target.value); 
        eventArr.forEach(e =>{
          if(e == '/'){
          lineBreaks++;
          if(lineBreaks > 5) {

          let lirt = this.template.querySelector('lightning-input-rich-text').height; //undefined 
          console.log(lirt); 
 
          } 
         }
       });
    }
}

Im trying to increase the height of the textarea box after a user creates several line breaks within the textarea. I'm having issues finding a way to target the value of the textarea height in order to increase it per line break. I would appreciate any help. Thank you.

import { LightningElement } from 'lwc';

export default class TextBoxSizing extends LightningElement {
    handleTextBoxChange(event){
        let eventArr = [];
        let lineBreaks = 0;
    
        eventArr.push(...event.target.value); 
        eventArr.forEach(e =>{
          if(e == '/'){
          lineBreaks++;
          if(lineBreaks > 5) {

          let lirt = this.template.querySelector('lightning-input-rich-text').height; //undefined 
          console.log(lirt); 
 
          } 
         }
       });
    }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

情深如许 2025-01-24 08:13:14

您见过样式挂钩吗?阅读文章,阅读 textarea 的文档,检查是否添加TextBoxSizing.css 与类似的东西

:host {
    --sds-c-textarea-sizing-min-height: 10em;
}

可以正常工作。

如果确实如此,下一步就是向 CSS 添加一个 JavaScript 控制的变量。我不久前也有类似的问题:https://salesforce.stackexchange.com/q/341324/799

像这样?

输入图片此处描述

<template>
    <lightning-card>
        <lightning-input-rich-text value={text}></lightning-input-rich-text>

        <lightning-input type="number" label="Wheee :)" value={lines} onchange={handleLines} min="1" max="99"
            variant="label-inline">
        </lightning-input>
    </lightning-card>
</template>
import { LightningElement } from 'lwc';

export default class StackTextarea extends LightningElement {

    text = '<b>Hello!</b>';
    lines = 1;

    connectedCallback() {
        this.resize();
    }

    handleLines(event) {
        this.lines = event.target.value;
        this.resize();
    }

    resize() {
        document.documentElement.style.setProperty('--rtf-size', (this.lines * 2) + 'em');
    }
}
:host{
    --sds-c-textarea-sizing-min-height: var(--rtf-size);
}

Have you seen styling hooks? Read the article, read the documentation for textarea, check if adding TextBoxSizing.css with something like

:host {
    --sds-c-textarea-sizing-min-height: 10em;
}

works OK.

If it does - next step would be to add a JavaScript-controlled variable to CSS. I had similar question a while ago: https://salesforce.stackexchange.com/q/341324/799

Something like this?

enter image description here

<template>
    <lightning-card>
        <lightning-input-rich-text value={text}></lightning-input-rich-text>

        <lightning-input type="number" label="Wheee :)" value={lines} onchange={handleLines} min="1" max="99"
            variant="label-inline">
        </lightning-input>
    </lightning-card>
</template>
import { LightningElement } from 'lwc';

export default class StackTextarea extends LightningElement {

    text = '<b>Hello!</b>';
    lines = 1;

    connectedCallback() {
        this.resize();
    }

    handleLines(event) {
        this.lines = event.target.value;
        this.resize();
    }

    resize() {
        document.documentElement.style.setProperty('--rtf-size', (this.lines * 2) + 'em');
    }
}
:host{
    --sds-c-textarea-sizing-min-height: var(--rtf-size);
}
○愚か者の日 2025-01-24 08:13:14

如果有人需要它,我选择了以下

100% 富文本区域

import { LightningElement, api, track } from 'lwc';

export default class inputRichTextFSC_LWC extends LightningElement {
    
    //Handle updates to Rich Text field with enhanced features
    handleTextChange(event) {

    }

}
:host {
    --slds-c-textarea-sizing-min-height: 100%;
    --slds-c-textarea-sizing-max-height: 100%;
}
<template>
  <div>
    <lightning-input-rich-text onchange={handleTextChange}>
    </lightning-input-rich-text>
  </div>
</template>

In case someone needs it, I went for the following

100% Rich Text Area

import { LightningElement, api, track } from 'lwc';

export default class inputRichTextFSC_LWC extends LightningElement {
    
    //Handle updates to Rich Text field with enhanced features
    handleTextChange(event) {

    }

}
:host {
    --slds-c-textarea-sizing-min-height: 100%;
    --slds-c-textarea-sizing-max-height: 100%;
}
<template>
  <div>
    <lightning-input-rich-text onchange={handleTextChange}>
    </lightning-input-rich-text>
  </div>
</template>

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文