From 65db454057bfba087d23d9cda2005c3de300abba Mon Sep 17 00:00:00 2001 From: linonetwo Date: Fri, 14 Jul 2023 23:34:29 +0800 Subject: [PATCH] feat: add new tag from text in text input, no enter needed. --- localization/locales/en/translation.json | 2 +- localization/locales/zh_CN/translation.json | 2 +- src/pages/Workflow/WorkflowManage/AddItemDialog.tsx | 8 ++++++++ src/pages/Workflow/WorkflowManage/index.tsx | 4 ++-- .../Workflow/WorkflowManage/useWorkflowDataSource.ts | 5 +++-- 5 files changed, 15 insertions(+), 6 deletions(-) diff --git a/localization/locales/en/translation.json b/localization/locales/en/translation.json index 769c0ae9..02655fa1 100644 --- a/localization/locales/en/translation.json +++ b/localization/locales/en/translation.json @@ -461,7 +461,7 @@ "AddNewWorkflowDescription": "Create a new automated workflow and save it to the selected workspace wiki to backup.", "BelongsToWorkspace": "Belongs to workspace", "AddNewWorkflowDoneMessage": "Add successfully", - "AddTagsDescription": "press Enter to input a tag" + "AddTagsDescription": "in-wiki tags, press Enter to add more" }, "Description": "Description", "Tags": "Tags", diff --git a/localization/locales/zh_CN/translation.json b/localization/locales/zh_CN/translation.json index b469ebef..5bec9783 100644 --- a/localization/locales/zh_CN/translation.json +++ b/localization/locales/zh_CN/translation.json @@ -464,6 +464,6 @@ "AddNewWorkflowDescription": "创建新的自动化工作流,并保存到所选的工作区Wiki里备份。", "AddNewWorkflowDoneMessage": "添加成功", "BelongsToWorkspace": "所属工作区", - "AddTagsDescription": "回车后变成标签的样子才算成功添加" + "AddTagsDescription": "Wiki内的标签,回车可以添加更多" } } diff --git a/src/pages/Workflow/WorkflowManage/AddItemDialog.tsx b/src/pages/Workflow/WorkflowManage/AddItemDialog.tsx index 6cd39b42..b0acd893 100644 --- a/src/pages/Workflow/WorkflowManage/AddItemDialog.tsx +++ b/src/pages/Workflow/WorkflowManage/AddItemDialog.tsx @@ -114,6 +114,13 @@ export const AddItemDialog: React.FC = ({ {...parameters} label={`${t('Tags')} (${t('Workflow.AddTagsDescription')})`} margin='dense' + onBlur={() => { + // add new tag from text in text input, no enter needed. + if (parameters.inputProps.value) { + const newValue = parameters.inputProps.value as string; + setTags(previousTags => [...previousTags.filter(tag => tag !== newValue), newValue]); + } + }} /> )} renderTags={(value, getTagProps) => @@ -124,6 +131,7 @@ export const AddItemDialog: React.FC = ({ key={option} /> ))} + clearOnBlur /> { }, []); const filteredWorkflows = workflows - .filter(workflow => workflow.title.includes(search)) - .filter(workflow => selectedTags.some(tag => workflow.tags.includes(tag))); + .filter(workflow => search.length > 0 ? workflow.title.includes(search) : workflow) + .filter(workflow => selectedTags.length > 0 ? selectedTags.some(tag => workflow.tags.includes(tag)) : workflow); return ( diff --git a/src/pages/Workflow/WorkflowManage/useWorkflowDataSource.ts b/src/pages/Workflow/WorkflowManage/useWorkflowDataSource.ts index c7f0aba9..a6b8b11e 100644 --- a/src/pages/Workflow/WorkflowManage/useWorkflowDataSource.ts +++ b/src/pages/Workflow/WorkflowManage/useWorkflowDataSource.ts @@ -119,7 +119,7 @@ export function useWorkflows(workspacesList: IWorkspaceWithMetadata[] | undefine '{}', { type: 'application/json', - tags: newItem.tags, + tags: [...newItem.tags, workflowTiddlerTagName], description: newItem.description ?? '', 'page-cover': newItem.image ?? '', } satisfies Omit, @@ -129,7 +129,8 @@ export function useWorkflows(workspacesList: IWorkspaceWithMetadata[] | undefine setWorkflows((workflows) => [...workflows.filter(item => item.title !== newItem.title), newItem]); // update tag list in the search region tags filter setTagsByWorkspace((previousTagsByWorkspace) => { - const newTags = newItem.tags.filter((tag) => !previousTagsByWorkspace[newItem.workspaceID]?.includes(tag)); + // add newly appeared tags to local state + const newTags = newItem.tags.filter((tag) => !previousTagsByWorkspace[newItem.workspaceID]?.includes(tag) && tag !== workflowTiddlerTagName); if (newTags.length === 0) return previousTagsByWorkspace; const previousTags = previousTagsByWorkspace[newItem.workspaceID] ?? []; return {