فهرست منبع

Merge branch 'main' into release

pointhalo 2 سال پیش
والد
کامیت
2f30012368

+ 1 - 1
content/show/table/index.md

@@ -1481,7 +1481,7 @@ render(App);
 
 **版本:>=0.27.0**
 
-默认情况,展开按钮会与第列文案渲染在同一个单元格内,你可以通过传入 `hideExpandedColumn={false}` 来渲染为单独一列:
+默认情况,展开按钮会与第列文案渲染在同一个单元格内,你可以通过传入 `hideExpandedColumn={false}` 来渲染为单独一列:
 
 ```jsx live=true noInline=true dir="column"
 import React from 'react';

+ 13 - 0
cypress/e2e/inputNumber.spec.js

@@ -45,4 +45,17 @@ describe('inputNumber', () => {
         cy.get('body').click();
         cy.get('.semi-input-wrapper').eq(0).children('input').should('not.be.focused');
     });
+
+    it('fixed formatter error in controlled mode', () => {
+        cy.visit('http://localhost:6006/iframe.html?id=inputnumber--fix-1772&viewMode=story');
+        cy.get('.semi-input-number .semi-input').should('have.value', '60000');
+        cy.get('.semi-input-number .semi-input-number-button-up').click();
+        cy.get('.semi-input-number .semi-input').should('have.value', '60001');
+        cy.get('.semi-input-number .semi-input-number-button-up').click();
+        cy.get('.semi-input-number .semi-input').should('have.value', '60002');
+        cy.get('.semi-input-number .semi-input-number-button-down').click();
+        cy.get('.semi-input-number .semi-input').should('have.value', '60001');
+        cy.get('.semi-input-number .semi-input-number-button-down').click();
+        cy.get('.semi-input-number .semi-input').should('have.value', '60000');
+    });
 });

+ 25 - 0
packages/semi-ui/inputNumber/_story/inputNumber.stories.jsx

@@ -770,4 +770,29 @@ export const PrefixSuffix = () => {
   return (
     <InputNumber prefix="年龄" suffix='岁' />
   );
+}
+
+export const Fix1772 = () => {
+  const [value, setValue] = useState(60000);
+  return (
+    <InputNumber
+      formatter={value => {
+        const formattedValue = String(Number(`${value}`.replace(/\D/g, '')) / 60000);
+        console.log('format value', value, formattedValue);
+        return formattedValue;
+      }}
+      parser={value => {
+        const parsedValue = String(Number(`${value}`.replace(/\D/g, '')) * 60000);
+        console.log('parser value', value, parsedValue);
+        return parsedValue;
+      }}
+      value={value}
+      onChange={value => {
+        console.log('onChange', value);
+        setValue(value)
+      }}
+      min={60000}
+      step={60000}
+    />
+  );
 }

+ 1 - 1
packages/semi-ui/inputNumber/index.tsx

@@ -258,7 +258,7 @@ class InputNumber extends BaseComponent<InputNumberProps, InputNumberState> {
             } else {
                 let valueStr = value;
                 if (typeof value === 'number') {
-                    valueStr = value.toString();
+                    valueStr = this.foundation.doFormat(value);
                 }
 
                 const parsedNum = this.foundation.doParse(valueStr, false, true, true);