From 6cb7013dd7fcfe302ade9e4ea0579b96e9a69740 Mon Sep 17 00:00:00 2001 From: zzyangh <799463087@qq.com> Date: Tue, 14 Jan 2025 15:38:08 +0800 Subject: [PATCH] [fix](BasicInputNumber): Add integer parameter to restrict numerical input --- .../AccessToken/GenerateTokenModal.tsx | 8 +- .../page/DataSource/components/Form/index.tsx | 1 + .../WebhookSetting/components/ConfigField.tsx | 4 +- .../BasicInputNumber.test.tsx | 21 +++++ .../BasicInputNumber/BasicInputNumber.tsx | 22 +++++- .../BasicInputNumber.types.ts | 4 +- .../BasicInputNumber.test.tsx.snap | 78 +++++++++++++++++++ .../components/SqlBackupSwitcher.tsx | 6 +- 8 files changed, 131 insertions(+), 13 deletions(-) diff --git a/packages/base/src/page/Account/components/AccessToken/GenerateTokenModal.tsx b/packages/base/src/page/Account/components/AccessToken/GenerateTokenModal.tsx index 77f9d0d20..53c67fcf5 100644 --- a/packages/base/src/page/Account/components/AccessToken/GenerateTokenModal.tsx +++ b/packages/base/src/page/Account/components/AccessToken/GenerateTokenModal.tsx @@ -88,13 +88,7 @@ const GenerateTokenModal: React.FC = ({ ]} > { - if (!value) { - return ''; - } - - return `${Math.floor(value as number)}`; - }} + integer min={1} placeholder={t('common.form.placeholder.input', { name: t( diff --git a/packages/base/src/page/DataSource/components/Form/index.tsx b/packages/base/src/page/DataSource/components/Form/index.tsx index 5f057a60e..f6f172c03 100644 --- a/packages/base/src/page/DataSource/components/Form/index.tsx +++ b/packages/base/src/page/DataSource/components/Form/index.tsx @@ -571,6 +571,7 @@ const DataSourceForm: React.FC = (props) => { placeholder={t('common.form.placeholder.input', { name: t('dmsDataSource.dataSourceForm.lineNumberLimit') })} + integer /> diff --git a/packages/base/src/page/System/PushNotification/WebhookSetting/components/ConfigField.tsx b/packages/base/src/page/System/PushNotification/WebhookSetting/components/ConfigField.tsx index 845838d34..6764b323f 100644 --- a/packages/base/src/page/System/PushNotification/WebhookSetting/components/ConfigField.tsx +++ b/packages/base/src/page/System/PushNotification/WebhookSetting/components/ConfigField.tsx @@ -31,7 +31,7 @@ const ConfigField = () => { } ]} > - + { } ]} > - + { const customRender = (params: BasicInputNumberProps) => { @@ -28,4 +30,23 @@ describe('lib/BasicInputNumber', () => { }); expect(container3).toMatchSnapshot(); }); + + it('render integer input', async () => { + const { container } = customRender({ + integer: true + }); + expect(container).toMatchSnapshot(); + + const inputElement = getBySelector('input'); + + fireEvent.change(inputElement, { + target: { value: 1.1111 } + }); + + await act(async () => { + fireEvent.blur(inputElement); + }); + + expect(inputElement).toHaveValue('1'); + }); }); diff --git a/packages/shared/lib/components/BasicInputNumber/BasicInputNumber.tsx b/packages/shared/lib/components/BasicInputNumber/BasicInputNumber.tsx index 05ff3c917..4ec819efa 100644 --- a/packages/shared/lib/components/BasicInputNumber/BasicInputNumber.tsx +++ b/packages/shared/lib/components/BasicInputNumber/BasicInputNumber.tsx @@ -3,9 +3,27 @@ import { BasicInputNumberStyleWrapper } from './style'; import { ComponentControlHeight } from '../../data/common'; import { BasicInputNumberProps } from './BasicInputNumber.types'; import { ConfigProvider } from 'antd'; +import { useMemo } from 'react'; +import { InputNumberProps } from 'antd'; const BasicInputNumber: React.FC = (props) => { - const { className, ...params } = props; + const { className, integer, ...params } = props; + + const inputNumberProps: InputNumberProps = useMemo(() => { + if (integer) { + return { + formatter: (value) => { + if (!value) { + return ''; + } + + return `${Math.floor(value as number)}`; + }, + ...params + }; + } + return params; + }, [integer, params]); return ( = (props) => { ); diff --git a/packages/shared/lib/components/BasicInputNumber/BasicInputNumber.types.ts b/packages/shared/lib/components/BasicInputNumber/BasicInputNumber.types.ts index 9461f95ab..08a4764e5 100644 --- a/packages/shared/lib/components/BasicInputNumber/BasicInputNumber.types.ts +++ b/packages/shared/lib/components/BasicInputNumber/BasicInputNumber.types.ts @@ -1,3 +1,5 @@ import { InputNumberProps } from 'antd'; -export interface BasicInputNumberProps extends InputNumberProps {} +export interface BasicInputNumberProps extends InputNumberProps { + integer?: boolean; +} diff --git a/packages/shared/lib/components/BasicInputNumber/__snapshots__/BasicInputNumber.test.tsx.snap b/packages/shared/lib/components/BasicInputNumber/__snapshots__/BasicInputNumber.test.tsx.snap index f733ab13f..c037b1a65 100644 --- a/packages/shared/lib/components/BasicInputNumber/__snapshots__/BasicInputNumber.test.tsx.snap +++ b/packages/shared/lib/components/BasicInputNumber/__snapshots__/BasicInputNumber.test.tsx.snap @@ -311,3 +311,81 @@ exports[`lib/BasicInputNumber render diff size input number 4`] = ` `; + +exports[`lib/BasicInputNumber render integer input 1`] = ` +
+
+
+ + + + + + + + + + +
+
+ +
+
+
+`; diff --git a/packages/sqle/src/page/SqlExecWorkflow/Common/SqlStatementFormController/SqlStatementFormItem/components/SqlBackupSwitcher.tsx b/packages/sqle/src/page/SqlExecWorkflow/Common/SqlStatementFormController/SqlStatementFormItem/components/SqlBackupSwitcher.tsx index 301e7c35a..59ddea231 100644 --- a/packages/sqle/src/page/SqlExecWorkflow/Common/SqlStatementFormController/SqlStatementFormItem/components/SqlBackupSwitcher.tsx +++ b/packages/sqle/src/page/SqlExecWorkflow/Common/SqlStatementFormController/SqlStatementFormItem/components/SqlBackupSwitcher.tsx @@ -154,7 +154,11 @@ const SqlBackupSwitcher: React.FC = ({ name={[fieldPrefixPath, 'backupMaxRows']} initialValue={1000} > - +