Skip to content

fix(textarea): align input style and length behavior - #6888

Open
zhangpaopao0609 wants to merge 2 commits into
developfrom
codex/fix-textarea-135
Open

fix(textarea): align input style and length behavior#6888
zhangpaopao0609 wants to merge 2 commits into
developfrom
codex/fix-textarea-135

Conversation

@zhangpaopao0609

@zhangpaopao0609 zhangpaopao0609 commented Aug 8, 2026

Copy link
Copy Markdown
Collaborator

🤔 这个 PR 的性质是?

  • 日常 bug 修复
  • 新特性提交
  • 文档改进
  • 演示代码改进
  • 组件样式/交互改进
  • CI/CD 改进
  • 重构
  • 代码风格优化
  • 测试用例
  • 分支合并
  • 其他

🔗 相关 Issue

Refs #6846

本 PR 仅处理 issue 中已经确认的第 1、3、5 点;第 2、4 点继续在原 issue 中讨论 API 语义和高度优先级,因此这里不使用 Fixes,避免提前关闭 issue。

💡 需求背景和解决方案

  1. 受控 value 配合 maxcharacter 截断时,状态仍统一通过 setInnerValue 发出更新;DOM 对账只修正原生值,不再直接写 prop-backed readonly ref,避免 Vue readonly 警告和重复状态写入。
  2. 用 Vue 的 normalizeStyle 统一解析字符串、对象和数组形式的 style,再以命令式方式合并到原生 <textarea>;内部 autosize/rows 样式保持更高优先级,并清理已经移除的样式属性。这里刻意不把 autosize 样式放入 render 依赖,避免高度重算触发重渲染并覆盖输入法 composition 期间尚未提交的 DOM 值。
  3. maxlength 计数器改用 Unicode 字符长度,与 useLengthLimit 的限制判断和 onValidate 保持一致,emoji 不再按两个 UTF-16 code unit 计数。

新增回归测试覆盖:受控截断无 readonly 警告、字符串/对象 style、autosize 高度重算时保留 composition 输入,以及 emoji maxlength 计数一致性。

验证结果:

  • Textarea 单测:22 passed
  • 完整本地测试命令:passed
    • unit:154 files passed;3555 passed、2 skipped、3 todo
    • snapshot:154 files passed;3537 passed、20 skipped、3 todo
  • ESLint:passed
  • Prettier:passed
  • TypeScript:passed

📝 更新日志

  • 本条 PR 不需要纳入 Changelog

tdesign-vue-next

  • fix(Textarea): 修复受控限长写入警告的问题
  • fix(Textarea): 修复字符串样式丢失的问题
  • fix(Textarea): 修复 emoji maxlength 计数不一致的问题

@tdesign-vue-next/chat

@tdesign-vue-next/nuxt

@tdesign-vue-next/auto-import-resolver

☑️ 请求合并前的自查清单

  • 文档已补充或无须补充
  • 代码演示已提供或无须提供
  • TypeScript 定义已补充或无须补充
  • Changelog 已提供或无须提供

@github-actions

github-actions Bot commented Aug 8, 2026

Copy link
Copy Markdown
Contributor

Size Change: 0 B

Total Size: 21.4 kB

ℹ️ View Unchanged
Filename Size
packages/auto-import-resolver/dist/index.cjs 10.7 kB
packages/auto-import-resolver/dist/index.js 10.7 kB

compressed-size-action::auto-import-resolver

@github-actions

github-actions Bot commented Aug 8, 2026

Copy link
Copy Markdown
Contributor

Size Change: 0 B

Total Size: 3.55 kB

ℹ️ View Unchanged
Filename Size
packages/tdesign-vue-next-nuxt/dist/module.d.mts 551 B
packages/tdesign-vue-next-nuxt/dist/module.mjs 2.84 kB
packages/tdesign-vue-next-nuxt/dist/types.d.mts 164 B

compressed-size-action::tdesign-vue-next-nuxt

@github-actions

github-actions Bot commented Aug 8, 2026

Copy link
Copy Markdown
Contributor

Size Change: 0 B

Total Size: 74.9 kB

ℹ️ View Unchanged
Filename Size
packages/tdesign-vue-next-chat/es/_chunks/dep-baff1c25.mjs 30.4 kB
packages/tdesign-vue-next-chat/es/_chunks/dep-f8739a7c.mjs 2.16 kB
packages/tdesign-vue-next-chat/es/attachments/index.mjs 240 B
packages/tdesign-vue-next-chat/es/chat-actionbar/chat-actionbar-props.mjs 364 B
packages/tdesign-vue-next-chat/es/chat-actionbar/chat-actionbar.mjs 1.57 kB
packages/tdesign-vue-next-chat/es/chat-actionbar/index.mjs 335 B
packages/tdesign-vue-next-chat/es/chat-content/chat-content-props.mjs 357 B
packages/tdesign-vue-next-chat/es/chat-content/chat-content.mjs 2.23 kB
packages/tdesign-vue-next-chat/es/chat-content/index.mjs 384 B
packages/tdesign-vue-next-chat/es/chat-engine/components/activity/index.mjs 321 B
packages/tdesign-vue-next-chat/es/chat-engine/components/activity/registry.mjs 406 B
packages/tdesign-vue-next-chat/es/chat-engine/components/activity/render.mjs 783 B
packages/tdesign-vue-next-chat/es/chat-engine/components/provider/agent-state.mjs 520 B
packages/tdesign-vue-next-chat/es/chat-engine/components/provider/index.mjs 219 B
packages/tdesign-vue-next-chat/es/chat-engine/components/shared/ComponentErrorBoundary.mjs 549 B
packages/tdesign-vue-next-chat/es/chat-engine/components/shared/createRegistry.mjs 978 B
packages/tdesign-vue-next-chat/es/chat-engine/components/shared/index.mjs 258 B
packages/tdesign-vue-next-chat/es/chat-engine/components/shared/useRegistrationListener.mjs 624 B
packages/tdesign-vue-next-chat/es/chat-engine/components/toolcall/hoc.mjs 754 B
packages/tdesign-vue-next-chat/es/chat-engine/components/toolcall/index.mjs 441 B
packages/tdesign-vue-next-chat/es/chat-engine/components/toolcall/registry.mjs 409 B
packages/tdesign-vue-next-chat/es/chat-engine/components/toolcall/render.mjs 339 B
packages/tdesign-vue-next-chat/es/chat-engine/hooks/index.mjs 345 B
packages/tdesign-vue-next-chat/es/chat-engine/hooks/useAgentActivity.mjs 954 B
packages/tdesign-vue-next-chat/es/chat-engine/hooks/useAgentState.mjs 1.22 kB
packages/tdesign-vue-next-chat/es/chat-engine/hooks/useAgentToolcall.mjs 920 B
packages/tdesign-vue-next-chat/es/chat-engine/hooks/useChat.mjs 685 B
packages/tdesign-vue-next-chat/es/chat-engine/index.mjs 561 B
packages/tdesign-vue-next-chat/es/chat-input/chat-input-props.mjs 352 B
packages/tdesign-vue-next-chat/es/chat-input/chat-input.mjs 1.53 kB
packages/tdesign-vue-next-chat/es/chat-input/index.mjs 320 B
packages/tdesign-vue-next-chat/es/chat-item/chat-item-props.mjs 432 B
packages/tdesign-vue-next-chat/es/chat-item/chat-item.mjs 1.98 kB
packages/tdesign-vue-next-chat/es/chat-item/index.mjs 431 B
packages/tdesign-vue-next-chat/es/chat-list/chat-list.mjs 2.78 kB
packages/tdesign-vue-next-chat/es/chat-list/index.mjs 365 B
packages/tdesign-vue-next-chat/es/chat-list/props.mjs 453 B
packages/tdesign-vue-next-chat/es/chat-loading/chat-loading-props.mjs 281 B
packages/tdesign-vue-next-chat/es/chat-loading/index.mjs 244 B
packages/tdesign-vue-next-chat/es/chat-markdown/index.mjs 260 B
packages/tdesign-vue-next-chat/es/chat-message/chat-message-props.mjs 435 B
packages/tdesign-vue-next-chat/es/chat-message/chat-message.mjs 1.25 kB
packages/tdesign-vue-next-chat/es/chat-message/index.mjs 318 B
packages/tdesign-vue-next-chat/es/chat-reasoning/chat-reasoning-props.mjs 421 B
packages/tdesign-vue-next-chat/es/chat-reasoning/chat-reasoning.mjs 1.19 kB
packages/tdesign-vue-next-chat/es/chat-reasoning/index.mjs 300 B
packages/tdesign-vue-next-chat/es/chat-sender/chat-sender-props.mjs 366 B
packages/tdesign-vue-next-chat/es/chat-sender/chat-sender.mjs 3.29 kB
packages/tdesign-vue-next-chat/es/chat-sender/index.mjs 356 B
packages/tdesign-vue-next-chat/es/chat-thinking/chat-thinking-props.mjs 383 B
packages/tdesign-vue-next-chat/es/chat-thinking/chat-thinking.mjs 941 B
packages/tdesign-vue-next-chat/es/chat-thinking/index.mjs 333 B
packages/tdesign-vue-next-chat/es/chatbot/index.mjs 397 B
packages/tdesign-vue-next-chat/es/config-provider.mjs 158 B
packages/tdesign-vue-next-chat/es/index.mjs 1.51 kB
packages/tdesign-vue-next-chat/es/style/css.mjs 42 B
packages/tdesign-vue-next-chat/es/style/index.css 3.97 kB
packages/tdesign-vue-next-chat/es/utils/index.mjs 493 B

compressed-size-action::tdesign-vue-next-chat

@tdesign-bot

tdesign-bot commented Aug 8, 2026

Copy link
Copy Markdown
Collaborator

TDesign Component Site Preview Open

Component Preview
tdesign-vue-next 完成
@tdesign-vue-next/chat 完成

@pkg-pr-new

pkg-pr-new Bot commented Aug 8, 2026

Copy link
Copy Markdown
  • tdesign-vue-next-demo

    npm i https://pkg.pr.new/@tdesign-vue-next/auto-import-resolver@6888
    
    npm i https://pkg.pr.new/tdesign-vue-next@6888
    
    npm i https://pkg.pr.new/@tdesign-vue-next/chat@6888
    
    npm i https://pkg.pr.new/@tdesign-vue-next/nuxt@6888
    

commit: 8333f09

@github-actions

github-actions Bot commented Aug 8, 2026

Copy link
Copy Markdown
Contributor

Size Change: +300 B (+0.03%)

Total Size: 960 kB

📦 View Changed
Filename Size Change
packages/tdesign-vue-next/dist/tdesign.js 533 kB +180 B (+0.03%)
packages/tdesign-vue-next/dist/tdesign.min.js 317 kB +120 B (+0.04%)
ℹ️ View Unchanged
Filename Size
packages/tdesign-vue-next/dist/plugin.css 3.02 kB
packages/tdesign-vue-next/dist/reset.css 1.91 kB
packages/tdesign-vue-next/dist/tdesign.css 55.4 kB
packages/tdesign-vue-next/dist/tdesign.min.css 50.4 kB

compressed-size-action::tdesign-vue-next

@uyarn

uyarn commented Aug 13, 2026

Copy link
Copy Markdown
Collaborator
image 校验输入限制没有同步更改 如这个场景输入了10个表情无法继续输入

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants