feat(V0.2): 快速添加输入框三行/失焦收起; ⋯菜单点选即收; 项目图标可设图片
Docker Build and Push / build-image (push) Successful in 1m22s
Docker Build and Push / build-image (push) Successful in 1m22s
- 快速添加改 3 行 textarea, Enter 创建/Shift+Enter 换行/Esc 关闭, 焦点离开且无内容时自动收起 - 任务 ⋯ ActionSheet 点选动作后 handler.close() 收回菜单 - Project.icon (TEXT data URL, 迁移 20261025130000): 项目管理可选图片, 客户端裁为 96x96 cover JPEG (~15KB); 项目列表/最近项目/管理页图标位 显示图片, 保持原尺寸与圆角; 可恢复默认首字色块
This commit is contained in:
@@ -164,9 +164,9 @@ export default function ProjectView({ projectId, onProjectChanged, onProjectExit
|
||||
}
|
||||
}
|
||||
|
||||
/** 任务 ⋯ 菜单: 编辑 / 拷贝到其他项目 / 删除 */
|
||||
/** 任务 ⋯ 菜单: 编辑 / 拷贝到其他项目 / 删除 (点选后菜单收回) */
|
||||
function openTaskMenu(task) {
|
||||
ActionSheet.show({
|
||||
const handler = ActionSheet.show({
|
||||
actions: [
|
||||
{ text: '编辑', key: 'edit' },
|
||||
{ text: '拷贝到其他项目', key: 'copy' },
|
||||
@@ -174,6 +174,7 @@ export default function ProjectView({ projectId, onProjectChanged, onProjectExit
|
||||
],
|
||||
cancelText: '取消',
|
||||
onAction: async (item) => {
|
||||
handler.close?.()
|
||||
if (item.key === 'edit') setOpenTask(task)
|
||||
else if (item.key === 'copy') setCopyTask(task)
|
||||
else if (item.key === 'delete') {
|
||||
@@ -239,13 +240,15 @@ export default function ProjectView({ projectId, onProjectChanged, onProjectExit
|
||||
|
||||
{adding && (
|
||||
<div className="quick-add">
|
||||
<input
|
||||
<textarea
|
||||
className="inp"
|
||||
autoFocus
|
||||
rows={3}
|
||||
maxLength={200}
|
||||
placeholder="输入任务标题,回车创建;开头可用 今天/明天/本周/本月 等时间词"
|
||||
placeholder={'输入任务标题,回车创建;开头可用 今天/明天/本周/本月 等时间词\n超过 30 字自动截断为标题,全文进描述'}
|
||||
onBlur={(e) => { if (!e.currentTarget.value.trim()) setAdding(false) }}
|
||||
onKeyDown={(e) => {
|
||||
if (e.key === 'Enter') createTask(e.currentTarget.value)
|
||||
if (e.key === 'Enter' && !e.shiftKey) { e.preventDefault(); createTask(e.currentTarget.value) }
|
||||
if (e.key === 'Escape') setAdding(false)
|
||||
}}
|
||||
/>
|
||||
|
||||
Reference in New Issue
Block a user