= (props: any) => {
+ const { step, formatStyle, value, addonBefore, addonAfter, unitConversion, unitConversionType, separator } = props;
+
+ const result = useMemo(() => {
+ return formatNumber({ step, formatStyle, value, unitConversion, unitConversionType, separator });
+ }, [step, formatStyle, value, unitConversion, unitConversionType, separator]);
+
+ if (!isValid(result)) {
return null;
}
+
return (
{addonBefore}
diff --git a/packages/core/client/src/schema-component/antd/input-number/__tests__/input-number.test.tsx b/packages/core/client/src/schema-component/antd/input-number/__tests__/input-number.test.tsx
index 01adf6902..8793b2232 100644
--- a/packages/core/client/src/schema-component/antd/input-number/__tests__/input-number.test.tsx
+++ b/packages/core/client/src/schema-component/antd/input-number/__tests__/input-number.test.tsx
@@ -1,9 +1,9 @@
import { fireEvent, render, screen } from '@nocobase/test/client';
import React from 'react';
+import { formatNumberWithSeparator, formatUnitConversion, scientificNotation } from '../ReadPretty';
import App2 from '../demos/addonBefore&addonAfter';
import App3 from '../demos/highPrecisionDecimals';
import App1 from '../demos/inputNumber';
-import { formatNumberWithSeparator, formatUnitConversion, scientificNotation } from '../ReadPretty';
describe('InputNumber', () => {
it('should display the title', () => {
@@ -81,13 +81,13 @@ describe('ReadPretty:formatNumberWithSeparator', () => {
// Test case 1: Format a number with default format '0,0.00'
test('Format number with default separator', () => {
const formatted = formatNumberWithSeparator(1234567.89);
- expect(formatted).toBe('1,234,567.9');
+ expect(formatted).toBe('1234567.9');
});
// Test case 2: Format a number with custom format '0.00'
test('Format number with custom separator', () => {
- const formatted = formatNumberWithSeparator(1234567.89, '0.00', 1);
- expect(formatted).toBe('1234567.9');
+ const formatted = formatNumberWithSeparator(1234567.89, '0,0.00', 1);
+ expect(formatted).toBe('1,234,567.9');
});
});
describe('ReadPretty:formatUnitConversion', () => {
@@ -101,18 +101,23 @@ describe('ReadPretty:formatUnitConversion', () => {
const result = formatUnitConversion(10, '/', 0);
expect(result).toBe(10);
});
+
+ test('0.1*0.2', () => {
+ const result = formatUnitConversion(0.1, '*', 0.2);
+ expect(result).toBe(0.02);
+ });
});
describe('ReadPretty:scientificNotation', () => {
// Test case 1: Format a number into scientific notation with 2 decimal places
test('Format number into scientific notation', () => {
const formatted = scientificNotation(1234567.89, 2);
- expect(formatted).toBe('1.23 × 106');
+ expect(formatted).toBe('1.23×106');
});
// Test case 2: Format a number into scientific notation with custom separator '.'
test('Format number into scientific notation with custom separator', () => {
const formatted = scientificNotation(1234567.89, 2, '.');
- expect(formatted).toBe('1.23 × 106');
+ expect(formatted).toBe('1.23×106');
});
});