分类下拉:修「永远未分类」+ 菜单同宽 + 主题色 (#84)
用户 2026-11-05 三点:
1.「分类那个地方没带进来。明明是有分类的,但是它却显示的是未分类。」
2.「分类弹出来的框太窄了,应该和输入框一样宽。」
3.「颜色也不对…文字颜色是主题色,背景色是比主题色浅一点的那个主题色。」
① tskCats 永远是空数组
`FbHomePage.loadTaskMeta()` 开头:
if (this.tskBoards.length > 0) { return; }
**只看看板有没有值**。这个方法跑过一次、看板填上之后,
以后再进来直接返回 ⇒ `tskCats` 永远停在上一次的赋值上;
如果第一次调用时 cats 恰好是空(或 #83 之前的版本压根没赋过),
就再也补不上 ⇒ 下拉里只有「未分类」。
⇒ 改成 `if (boards.length > 0 && cats.length > 0) return;`
"两样都有值才跳过"。
⚠️ 不能只判 cats:新家庭可能真的一条分类都没建,那样每次都重拉。
⚠️ 任务页的 `loadMeta()` 没有这个提前返回,不用改。
② 下拉菜单太窄
`width(100%)` 管的是**控件本身**;弹出的选项菜单有独立宽度
(`optionWidth`),不给就按选项文字撑开 ⇒ 很窄。
⇒ `.optionWidth(OptionWidthMode.FIT_TRIGGER)` 让它跟触发器同宽。
⚠️ 顺手试过 `.optionHeight(auto)` —— SDK 里 `optionHeight` 只收
`Dimension`,传 auto 直接编译报 "No overload matches this call"。
③ 颜色改主题色
文字 `this.accent` + `weight: Medium`;
底色 `fbAlpha(this.accent, 0.10)`(浅一档的主题色)。
与面板里「+ 添加附件」那颗胶囊同一套 —— 整面板"可操作控件"观感一致。
选项列表里:选中项用主题色、其余用墨色(全主题色会失去对比)。
编译通过,已装真机。
This commit is contained in:
@@ -1472,16 +1472,31 @@ export struct FbTaskPanel {
|
||||
.backgroundColor(FbColors.inputBg)
|
||||
.borderRadius(FbMetric.radiusS)
|
||||
} else {
|
||||
/* 🔴 #84(用户 2026-11-05):
|
||||
「分类弹出来的框太窄了,应该和输入框一样宽。」
|
||||
「颜色也不对。它的颜色应该是主题色:里面的文字颜色是主题色,
|
||||
背景色是比主题色浅一点的那个主题色。」
|
||||
|
||||
· `width('100%')` 管的是**控件本身**;弹出来的下拉菜单
|
||||
还有自己的宽度(`optionWidth`),不给就按内容撑 ⇒ 很窄。
|
||||
用 `optionWidth(OptionWidthMode.FIT_TRIGGER)` 让它跟触发器同宽。
|
||||
· 文字 `this.accent`、底色 `fbAlpha(this.accent, 0.10)`
|
||||
—— 与面板里「+ 添加附件」那颗胶囊同一套(主题色 + 淡底),
|
||||
这样"可操作"的控件在全面板观感一致。 */
|
||||
Select(this.catOptions())
|
||||
.selected(this.catIndex())
|
||||
.value(this.categoryOf() !== '' ? this.categoryOf() : '未分类')
|
||||
.font({ size: FbMetric.fontSmall })
|
||||
.fontColor(FbColors.ink)
|
||||
.selectedOptionFont({ size: FbMetric.fontSmall })
|
||||
.font({ size: FbMetric.fontSmall, weight: FontWeight.Medium })
|
||||
.fontColor(this.accent)
|
||||
.selectedOptionFont({ size: FbMetric.fontSmall, weight: FontWeight.Medium })
|
||||
.selectedOptionFontColor(this.accent)
|
||||
.optionFont({ size: FbMetric.fontSmall })
|
||||
.optionFontColor(FbColors.ink)
|
||||
.optionWidth(OptionWidthMode.FIT_TRIGGER)
|
||||
.width('100%')
|
||||
.height(40)
|
||||
.backgroundColor(FbColors.inputBg)
|
||||
.padding({ left: 4, right: 4 })
|
||||
.backgroundColor(fbAlpha(this.accent, 0.10))
|
||||
.borderRadius(FbMetric.radiusS)
|
||||
.onSelect((idx: number): void => {
|
||||
/* index 0 = 「未分类」→ category_id 传 0 */
|
||||
@@ -1507,16 +1522,21 @@ export struct FbTaskPanel {
|
||||
.backgroundColor(FbColors.inputBg)
|
||||
.borderRadius(FbMetric.radiusS)
|
||||
} else {
|
||||
/* #84:与分类同一套(主题色文字 + 淡主题底色 + 菜单同宽) */
|
||||
Select(this.repeatOptions())
|
||||
.selected(this.repeatIndex())
|
||||
.value(this.repeatOf() !== '' ? this.repeatWordOf(this.repeatOf()) : '不循环')
|
||||
.font({ size: FbMetric.fontSmall })
|
||||
.fontColor(FbColors.ink)
|
||||
.selectedOptionFont({ size: FbMetric.fontSmall })
|
||||
.font({ size: FbMetric.fontSmall, weight: FontWeight.Medium })
|
||||
.fontColor(this.accent)
|
||||
.selectedOptionFont({ size: FbMetric.fontSmall, weight: FontWeight.Medium })
|
||||
.selectedOptionFontColor(this.accent)
|
||||
.optionFont({ size: FbMetric.fontSmall })
|
||||
.optionFontColor(FbColors.ink)
|
||||
.optionWidth(OptionWidthMode.FIT_TRIGGER)
|
||||
.width('100%')
|
||||
.height(40)
|
||||
.backgroundColor(FbColors.inputBg)
|
||||
.padding({ left: 4, right: 4 })
|
||||
.backgroundColor(fbAlpha(this.accent, 0.10))
|
||||
.borderRadius(FbMetric.radiusS)
|
||||
.onSelect((idx: number): void => {
|
||||
const rk: string = idx === 0 ? '' : FbTaskPanel.REPEAT_KEYS[idx - 1];
|
||||
|
||||
@@ -835,7 +835,19 @@ export struct FbHomePage {
|
||||
|
||||
/** 拉全部看板 + 分类(面板的"挪分组"、表单的"分类"都要用) */
|
||||
private async loadTaskMeta(): Promise<void> {
|
||||
if (this.tskBoards.length > 0) {
|
||||
/* 🔴 #84(用户 2026-11-05):「鸿蒙端的分类那个地方没带进来。
|
||||
明明是有分类的,但是它却显示的是未分类。」
|
||||
|
||||
**就是这个提前返回**:只看 `tskBoards` 有没有值。
|
||||
而这个方法一旦先跑过一次、看板填上了,以后再进来就直接返回 ——
|
||||
`tskCats`(分类)**永远停在上一次的赋值上**;如果第一次调用时
|
||||
`m.cats` 恰好是空(或被 #83 之前的版本错过了),就永远补不上。
|
||||
|
||||
⇒ 改成"两样都有值才跳过"。任何一个为空就再拉一次
|
||||
(接口很轻:`?view=boards` 不带任务列表)。
|
||||
⚠️ 不能只判 `tskCats.length`:新家庭可能真的一条分类都没建,
|
||||
那样每次都重拉。两条一起判才是"数据齐了"。 */
|
||||
if (this.tskBoards.length > 0 && this.tskCats.length > 0) {
|
||||
return;
|
||||
}
|
||||
await loadPath<FbTaskMeta>('tasks_meta', '/api/v1/tasks?view=boards', parseTaskMeta,
|
||||
|
||||
Reference in New Issue
Block a user