From 4aaab331aea7ab23c6853a39864281c465d47012 Mon Sep 17 00:00:00 2001 From: Zeke Zhang <958414905@qq.com> Date: Fri, 16 Aug 2024 12:02:11 +0800 Subject: [PATCH] fix(mobile): fix 'Edit link' setting (#5068) --- .../utils/createModalSettingsItem.tsx | 8 +-- .../link/customizeLinkActionSettings.tsx | 7 +-- .../SchemaSettingsActionLinkItem.tsx | 57 +++++++++++++++++++ .../types/MobileTabBar.Link/settings.tsx | 11 +--- 4 files changed, 65 insertions(+), 18 deletions(-) create mode 100644 packages/plugins/@nocobase/plugin-mobile/src/client/mobile-layout/mobile-tab-bar/types/MobileTabBar.Link/SchemaSettingsActionLinkItem.tsx diff --git a/packages/core/client/src/application/schema-settings/utils/createModalSettingsItem.tsx b/packages/core/client/src/application/schema-settings/utils/createModalSettingsItem.tsx index d5feb6c0175..b2fe58eac53 100644 --- a/packages/core/client/src/application/schema-settings/utils/createModalSettingsItem.tsx +++ b/packages/core/client/src/application/schema-settings/utils/createModalSettingsItem.tsx @@ -7,15 +7,15 @@ * For more information, please refer to: https://www.nocobase.com/agreement. */ +import { ISchema } from '@formily/react'; import _ from 'lodash'; -import { ISchema, useFieldSchema } from '@formily/react'; import { TFunction, useTranslation } from 'react-i18next'; -import { SchemaSettingsItemType } from '../types'; -import { getNewSchema, useHookDefault, useSchemaByType } from './util'; +import { useColumnSchema } from '../../../schema-component'; import { useCompile } from '../../../schema-component/hooks/useCompile'; import { useDesignable } from '../../../schema-component/hooks/useDesignable'; -import { useColumnSchema } from '../../../schema-component'; +import { SchemaSettingsItemType } from '../types'; +import { getNewSchema, useHookDefault, useSchemaByType } from './util'; export interface CreateModalSchemaSettingsItemProps { name: string; diff --git a/packages/core/client/src/modules/actions/link/customizeLinkActionSettings.tsx b/packages/core/client/src/modules/actions/link/customizeLinkActionSettings.tsx index f6a3e1c72b0..e1b0e1bf5ca 100644 --- a/packages/core/client/src/modules/actions/link/customizeLinkActionSettings.tsx +++ b/packages/core/client/src/modules/actions/link/customizeLinkActionSettings.tsx @@ -19,11 +19,7 @@ import { ButtonEditor, RemoveButton } from '../../../schema-component/antd/actio import { SchemaSettingsLinkageRules, SchemaSettingsModalItem } from '../../../schema-settings'; import { useURLAndHTMLSchema } from './useURLAndHTMLSchema'; -interface SchemaSettingsActionLinkItemProps { - afterSubmit?: () => void; -} - -export const SchemaSettingsActionLinkItem: FC = ({ afterSubmit }) => { +export const SchemaSettingsActionLinkItem: FC = () => { const field = useField(); const fieldSchema = useFieldSchema(); const { dn } = useDesignable(); @@ -70,7 +66,6 @@ export const SchemaSettingsActionLinkItem: FC }, }); dn.refresh(); - afterSubmit?.(); }} initialValues={initialValues} /> diff --git a/packages/plugins/@nocobase/plugin-mobile/src/client/mobile-layout/mobile-tab-bar/types/MobileTabBar.Link/SchemaSettingsActionLinkItem.tsx b/packages/plugins/@nocobase/plugin-mobile/src/client/mobile-layout/mobile-tab-bar/types/MobileTabBar.Link/SchemaSettingsActionLinkItem.tsx new file mode 100644 index 00000000000..d2124b6c0d0 --- /dev/null +++ b/packages/plugins/@nocobase/plugin-mobile/src/client/mobile-layout/mobile-tab-bar/types/MobileTabBar.Link/SchemaSettingsActionLinkItem.tsx @@ -0,0 +1,57 @@ +/** + * This file is part of the NocoBase (R) project. + * Copyright (c) 2020-2024 NocoBase Co., Ltd. + * Authors: NocoBase Team. + * + * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License. + * For more information, please refer to: https://www.nocobase.com/agreement. + */ + +import { ArrayItems } from '@formily/antd-v5'; +import { useFieldSchema } from '@formily/react'; +import { SchemaSettingsModalItem, useURLAndHTMLSchema } from '@nocobase/client'; +import React, { FC } from 'react'; +import { useTranslation } from 'react-i18next'; +import { useMobileRoutes } from '../../../../mobile-providers/context/MobileRoutes'; + +export const SchemaSettingsActionLinkItem: FC = () => { + const fieldSchema = useFieldSchema(); + const { t } = useTranslation(); + const { urlSchema, paramsSchema, openInNewWindowSchema } = useURLAndHTMLSchema(); + const { resource, refresh } = useMobileRoutes(); + const componentProps = fieldSchema['x-component-props'] || {}; + const initialValues = { + url: componentProps.url, + params: componentProps.params || [{}], + openInNewWindow: componentProps.openInNewWindow, + }; + + return ( + { + const schema = fieldSchema.toJSON(); + const id = Number(schema.name); + await resource.update({ + filterByTk: id, + values: { options: { ...schema['x-component-props'], url, params, openInNewWindow } }, + }); + refresh(); + }} + initialValues={initialValues} + /> + ); +}; diff --git a/packages/plugins/@nocobase/plugin-mobile/src/client/mobile-layout/mobile-tab-bar/types/MobileTabBar.Link/settings.tsx b/packages/plugins/@nocobase/plugin-mobile/src/client/mobile-layout/mobile-tab-bar/types/MobileTabBar.Link/settings.tsx index 23f8202c58f..7c61672a6c9 100644 --- a/packages/plugins/@nocobase/plugin-mobile/src/client/mobile-layout/mobile-tab-bar/types/MobileTabBar.Link/settings.tsx +++ b/packages/plugins/@nocobase/plugin-mobile/src/client/mobile-layout/mobile-tab-bar/types/MobileTabBar.Link/settings.tsx @@ -7,8 +7,9 @@ * For more information, please refer to: https://www.nocobase.com/agreement. */ -import { SchemaSettings, SchemaSettingsActionLinkItem } from '@nocobase/client'; -import { editTabItemSettingsItem, removeTabItemSettingsItem, useUpdateTabBarItem } from '../../MobileTabBar.Item'; +import { SchemaSettings } from '@nocobase/client'; +import { editTabItemSettingsItem, removeTabItemSettingsItem } from '../../MobileTabBar.Item'; +import { SchemaSettingsActionLinkItem } from './SchemaSettingsActionLinkItem'; export const mobileTabBarLinkSettings = new SchemaSettings({ name: 'mobile:tab-bar:link', @@ -17,12 +18,6 @@ export const mobileTabBarLinkSettings = new SchemaSettings({ { name: 'editLink', Component: SchemaSettingsActionLinkItem, - useComponentProps() { - const afterSubmit = useUpdateTabBarItem(); - return { - afterSubmit, - }; - }, }, { name: 'divider',