Browse Source

fix: fixed InputNumber formatter bug related to #1772 (#1870)

Co-authored-by: shijia.me <[email protected]>
Shi Jia 2 years ago
parent
commit
c57882d5b3
2 changed files with 16 additions and 3 deletions
  1. 14 0
      cypress/e2e/inputNumber.spec.js
  2. 2 3
      packages/semi-ui/inputNumber/index.tsx

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

@@ -58,4 +58,18 @@ describe('inputNumber', () => {
         cy.get('.semi-input-number .semi-input-number-button-down').click();
         cy.get('.semi-input-number .semi-input-number-button-down').click();
         cy.get('.semi-input-number .semi-input').should('have.value', '60000');
         cy.get('.semi-input-number .semi-input').should('have.value', '60000');
     });
     });
+
+    it('fixed formatter error in controlled mode + focus and click add button', () => {
+        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').click();
+        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');
+    });
 });
 });

+ 2 - 3
packages/semi-ui/inputNumber/index.tsx

@@ -303,7 +303,7 @@ class InputNumber extends BaseComponent<InputNumberProps, InputNumberState> {
                          * We need to set the status to false after trigger focus event
                          * We need to set the status to false after trigger focus event
                          */
                          */
                         if (this.clickUpOrDown) {
                         if (this.clickUpOrDown) {
-                            obj.value = this.foundation.doFormat(valueStr, true);
+                            obj.value = this.foundation.doFormat(obj.number, true);
                             newValue = obj.value;
                             newValue = obj.value;
                         }
                         }
                         this.foundation.updateStates(obj, () => this.adapter.restoreCursor());
                         this.foundation.updateStates(obj, () => this.adapter.restoreCursor());
@@ -313,8 +313,7 @@ class InputNumber extends BaseComponent<InputNumberProps, InputNumberState> {
                         this.foundation.updateStates({ value: newValue });
                         this.foundation.updateStates({ value: newValue });
                     } else {
                     } else {
                         // Update input content when controlled input NaN
                         // Update input content when controlled input NaN
-                        newValue = this.foundation.doFormat(valueStr, false);
-                        this.foundation.updateStates({ value: newValue });
+                        this.foundation.updateStates({ value: valueStr });
                     }
                     }
                 } else if (this.foundation.isValidNumber(parsedNum)) {
                 } else if (this.foundation.isValidNumber(parsedNum)) {
                     newValue = this.foundation.doFormat(parsedNum);
                     newValue = this.foundation.doFormat(parsedNum);