fix(Stepper): incorrect value when format minus value (#6238)

This commit is contained in:
neverland
2020-05-07 22:15:46 +08:00
committed by GitHub
parent 3e231f1ab5
commit e61aa29118
5 changed files with 45 additions and 18 deletions
+24
View File
@@ -1,3 +1,27 @@
export function range(num: number, min: number, max: number): number {
return Math.min(Math.max(num, min), max);
}
function trimExtraChar(value: string, char: string, regExp: RegExp) {
const index = value.indexOf(char);
if (index > -1) {
return value.slice(0, index + 1) + value.slice(index).replace(regExp, '');
}
return value;
}
export function formatNumber(value: string, allowDot?: boolean) {
if (allowDot) {
value = trimExtraChar(value, '.', /\./g);
} else {
value = value.split('.')[0];
}
value = trimExtraChar(value, '-', /-/g);
const regExp = allowDot ? /[^-0-9.]/g : /[^-0-9]/g;
return value.replace(regExp, '');
}
+19
View File
@@ -8,6 +8,7 @@ import { isMobile } from '../validate/mobile';
import { isNumeric } from '../validate/number';
import { isAndroid } from '../validate/system';
import { camelize } from '../format/string';
import { formatNumber } from '../format/number';
test('deepClone', () => {
const a = { foo: 0 };
@@ -95,3 +96,21 @@ test('isNumeric', () => {
expect(isNumeric('abc')).toBeFalsy();
expect(isNumeric('1b2')).toBeFalsy();
});
test('formatNumber', () => {
expect(formatNumber('abc')).toEqual('');
expect(formatNumber('1.2')).toEqual('1');
expect(formatNumber('abc1.2')).toEqual('1');
expect(formatNumber('123.4.')).toEqual('123');
// with dot
expect(formatNumber('abc', true)).toEqual('');
expect(formatNumber('1.2', true)).toEqual('1.2');
expect(formatNumber('abc1.2', true)).toEqual('1.2');
expect(formatNumber('123.4.', true)).toEqual('123.4');
// minus
expect(formatNumber('-1.2')).toEqual('-1');
expect(formatNumber('-1.2', true)).toEqual('-1.2');
expect(formatNumber('-1.2-', true)).toEqual('-1.2');
});