任务标题改用单行输入框 (#77)

用户 2026-11-05:「现在这个任务标题是好几行的那种输入框,不要用这种输入框,
用一行的输入框就行了。标题没有那么长,现在太高了。」

TextArea(多行,height 84)→ TextInput(单行,height 40)。

① 高度 84 → 40,与「截止」「负责人」那些控件行同高
   标题是一句话,本来不需要多行;84 的高度等于多占两行位置,
   把下面所有内容(状态/看板/截止…)整体往下推。

② 顺带补 onSubmit:单行框里回车是"提交"而不是换行,
   用户打完直接按回车就保存,不用先点别处。
   多行框里回车是换行,所以以前不能加这一条。

⚠️ TextInput 只有一行,高度超了也只是上下留白 ⇒ 直接给 40,
   不是像 TextArea 那样"给多少显示多少"。
⚠️ 单行框超长时不换行、横向滚动 —— 标题本来就没那么长,可接受。

编译通过,已装真机。
This commit is contained in:
2026-11-05 19:52:23 +08:00
parent 10cd10e9ff
commit cbeeb55a82
+23 -12
View File
@@ -1231,7 +1231,9 @@ export struct FbTaskPanel {
* 任务标题这四个字用主题色,但是输入框里面的文字用黑色。」 * 任务标题这四个字用主题色,但是输入框里面的文字用黑色。」
* *
* 所以: * 所以:
* · 不设 `titleEdit` 双态,直接把 TextArea 常驻;文字从 `titleOf()` 灌进去。 * · 不设 `titleEdit` 双态,直接把输入框常驻;文字从 `titleOf()` 灌进去。
* · #77p:用**单行 `TextInput`**(不是 TextArea)—— 标题就是一句话,
* 多行框把面板下半部分全推下去了。
* · **标签**(「任务标题」四个字)= 主题色粗体(走 fieldLb); * · **标签**(「任务标题」四个字)= 主题色粗体(走 fieldLb);
* **框里的内容** = `FbColors.ink`(墨黑)。上一版我把内容也染成 accent, * **框里的内容** = `FbColors.ink`(墨黑)。上一版我把内容也染成 accent,
* 变成"整段标题都是红的",读起来像报错,也不符合"内容用墨色"。 * 变成"整段标题都是红的",读起来像报错,也不符合"内容用墨色"。
@@ -1246,16 +1248,20 @@ export struct FbTaskPanel {
titleRow() { titleRow() {
Column({ space: 6 }) { Column({ space: 6 }) {
this.fieldLb('任务标题') this.fieldLb('任务标题')
/* 🔴🔴 #77o(用户 2026-11-05):「台式机采购计划这个任务标题的输入框 /* 🔴🔴 #77p(用户 2026-11-05):「现在这个任务标题是好几行的那种输入框,
和其他的都不一样。我感觉没必要,字体什么的大小,和下面的备注还有 不要用这种输入框,用一行的输入框就行了。标题没有那么长,现在太高了。」
什么的保持一致就行了,没必要特别特殊。」
⇒ 去掉 `fontSize(fontTitle=17)` + `Bold` + `height(64)`, ⇒ `TextArea`(多行,84 高)换成 **`TextInput`(单行,40 高)**,
改为与备注(以及截止/负责人那些控件行)**完全同一套**: 高度与「截止」「负责人」那些控件行对齐(它们是 height 40)。
fontSize(fontSmall=13) / 不加粗 / height(84) 与备注一致 标题是一句话,本来就不需要多行;多行框还占掉两倍高度,
标题的"重要性"已经由它排在最前 + 标签主题色表达了, 把下面所有内容都往下推。
输入区不必再靠字号放大来强调。 */
TextArea({ text: this.titleDraft, placeholder: '要做的事…' }) ⚠️ `TextInput` 不支持 `.height(84)` 那种"给多少显示多少" ——
它只有一行,高度超了也只是上下留白。所以这里直接给 40。
⚠️ 单行框**不会换行**,超长文字横向滚动。标题超过一行宽时
用户能看到正在打的部分,打完失焦后由 maxLines 之外的
省略处理在别处(列表卡片)表现,这里不需要额外处理。 */
TextInput({ text: this.titleDraft, placeholder: '要做的事…' })
.placeholderColor(FbColors.faint) .placeholderColor(FbColors.faint)
.placeholderFont({ size: FbMetric.fontSmall }) .placeholderFont({ size: FbMetric.fontSmall })
.fontSize(FbMetric.fontSmall) .fontSize(FbMetric.fontSmall)
@@ -1264,8 +1270,8 @@ export struct FbTaskPanel {
.backgroundColor(FbColors.inputBg) .backgroundColor(FbColors.inputBg)
.borderRadius(FbMetric.radiusS) .borderRadius(FbMetric.radiusS)
.width('100%') .width('100%')
.height(84) .height(40)
.padding({ left: 12, right: 12, top: 10, bottom: 10 }) .padding({ left: 12, right: 12 })
.onChange((v: string): void => { .onChange((v: string): void => {
this.titleDraft = v; this.titleDraft = v;
}) })
@@ -1278,6 +1284,11 @@ export struct FbTaskPanel {
this.titleFocus = false; this.titleFocus = false;
this.saveTitle(); this.saveTitle();
}) })
/* 单行框支持"回车提交":用户打完直接按回车就走 saveTitle,
不用先点别处。多行框里回车是换行,所以以前没这一条。 */
.onSubmit((): void => {
this.saveTitle();
})
} }
.width('100%') .width('100%')
.alignItems(HorizontalAlign.Start) .alignItems(HorizontalAlign.Start)