From 753e911ac41c04628b213ca7be7b2226c09506ac Mon Sep 17 00:00:00 2001 From: YANG QIA <2013xile@gmail.com> Date: Thu, 12 Dec 2024 22:56:06 +0800 Subject: [PATCH 1/2] fix(users): the form should be reset after adding or editing a user in the user management (#5875) --- packages/core/client/src/schema-component/antd/action/hooks.ts | 2 ++ .../@nocobase/plugin-users/src/client/UsersManagement.tsx | 3 +++ 2 files changed, 5 insertions(+) diff --git a/packages/core/client/src/schema-component/antd/action/hooks.ts b/packages/core/client/src/schema-component/antd/action/hooks.ts index e337b38f20..e51583522e 100644 --- a/packages/core/client/src/schema-component/antd/action/hooks.ts +++ b/packages/core/client/src/schema-component/antd/action/hooks.ts @@ -18,6 +18,7 @@ export const useActionContext = () => { const ctx = useContext(ActionContext); const { t } = useTranslation(); const { modal } = App.useApp(); + const form = useForm(); return { ...ctx, @@ -30,6 +31,7 @@ export const useActionContext = () => { async onOk() { ctx.setFormValueChanged(false); ctx.setVisible?.(false); + form?.reset?.(); }, }); } else { diff --git a/packages/plugins/@nocobase/plugin-users/src/client/UsersManagement.tsx b/packages/plugins/@nocobase/plugin-users/src/client/UsersManagement.tsx index 70909498f2..0380ce31cf 100644 --- a/packages/plugins/@nocobase/plugin-users/src/client/UsersManagement.tsx +++ b/packages/plugins/@nocobase/plugin-users/src/client/UsersManagement.tsx @@ -30,10 +30,12 @@ import { PasswordField } from './PasswordField'; const useCancelActionProps = () => { const { setVisible } = useActionContext(); + const form = useForm(); return { type: 'default', onClick() { setVisible(false); + form.reset(); }, }; }; @@ -63,6 +65,7 @@ const useSubmitActionProps = () => { await runAsync(); message.success(t('Saved successfully')); setVisible(false); + form.reset(); }, }; }; From e94eab7680b0abcb4d2b1f3a436f343d74a612fe Mon Sep 17 00:00:00 2001 From: Zeke Zhang <958414905@qq.com> Date: Fri, 13 Dec 2024 09:00:57 +0800 Subject: [PATCH 2/2] fix(RemoteSelect): fix 'N/A' issue (#5878) --- .../antd/remote-select/RemoteSelect.tsx | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/packages/core/client/src/schema-component/antd/remote-select/RemoteSelect.tsx b/packages/core/client/src/schema-component/antd/remote-select/RemoteSelect.tsx index fa47bb9559..4e8bdda78c 100644 --- a/packages/core/client/src/schema-component/antd/remote-select/RemoteSelect.tsx +++ b/packages/core/client/src/schema-component/antd/remote-select/RemoteSelect.tsx @@ -15,13 +15,13 @@ import { uniqBy } from 'lodash'; import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'; import { ResourceActionOptions, useRequest } from '../../../api-client'; import { useCollection_deprecated, useCollectionManager_deprecated } from '../../../collection-manager'; -import { mergeFilter } from '../../../filter-provider/utils'; -import { useCompile } from '../../hooks'; -import { FieldNames, Select, SelectProps, defaultFieldNames } from '../select'; -import { ReadPretty } from './ReadPretty'; -import { useDataSourceHeaders } from '../../../data-source/utils'; import { useDataSourceKey } from '../../../data-source/data-source/DataSourceProvider'; +import { useDataSourceHeaders } from '../../../data-source/utils'; +import { mergeFilter } from '../../../filter-provider/utils'; import { withDynamicSchemaProps } from '../../../hoc/withDynamicSchemaProps'; +import { useCompile } from '../../hooks'; +import { defaultFieldNames, FieldNames, Select, SelectProps } from '../select'; +import { ReadPretty } from './ReadPretty'; const EMPTY = 'N/A'; export type RemoteSelectProps
= SelectProps
& { @@ -234,10 +234,15 @@ const InternalRemoteSelect = withDynamicSchemaProps( return v != null ? (Array.isArray(v) ? v : [v]) : []; } const valueOptions = - (v != null && (Array.isArray(v) ? v : [{ ...v, [fieldNames.value]: v[fieldNames.value] || v }])) || []; + (v != null && + (Array.isArray(v) + ? v.map((item) => ({ ...item, [fieldNames.value]: item[fieldNames.value] || item })) + : [{ ...v, [fieldNames.value]: v[fieldNames.value] || v }])) || + []; const filtered = typeof optionFilter === 'function' ? data.data.filter(optionFilter) : data.data; return uniqBy(filtered.concat(valueOptions ?? []), fieldNames.value); }, [value, defaultValue, data?.data, fieldNames.value, optionFilter]); + const onDropdownVisibleChange = (visible) => { setOpen(visible); searchData.current = null; @@ -246,6 +251,7 @@ const InternalRemoteSelect = withDynamicSchemaProps( } firstRun.current = true; }; + return (