Merge branch 'dev' into next
This commit is contained in:
@@ -1,3 +1,31 @@
|
||||
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;
|
||||
}
|
||||
|
||||
if (char === '-' && index !== 0) {
|
||||
return value.slice(0, index);
|
||||
}
|
||||
|
||||
return value.slice(0, index + 1) + value.slice(index).replace(regExp, '');
|
||||
}
|
||||
|
||||
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, '');
|
||||
}
|
||||
|
||||
+2
-2
@@ -8,7 +8,7 @@ export const isServer: boolean = Vue.prototype.$isServer;
|
||||
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
||||
export function noop() {}
|
||||
|
||||
export function isDef(val: any): boolean {
|
||||
export function isDef(val: unknown): boolean {
|
||||
return val !== undefined && val !== null;
|
||||
}
|
||||
|
||||
@@ -16,7 +16,7 @@ export function isFunction(val: unknown): val is Function {
|
||||
return typeof val === 'function';
|
||||
}
|
||||
|
||||
export function isObject(val: any): val is Record<any, any> {
|
||||
export function isObject(val: unknown): val is Record<any, any> {
|
||||
return val !== null && typeof val === 'object';
|
||||
}
|
||||
|
||||
|
||||
@@ -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,22 @@ 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');
|
||||
expect(formatNumber('123-')).toEqual('123');
|
||||
});
|
||||
|
||||
+8
-9
@@ -7,6 +7,10 @@ function flattenVNodes(vnodes: VNode[]) {
|
||||
vnodes.forEach((vnode) => {
|
||||
result.push(vnode);
|
||||
|
||||
if (vnode.componentInstance) {
|
||||
traverse(vnode.componentInstance.$children.map((item) => item.$vnode));
|
||||
}
|
||||
|
||||
if (vnode.children) {
|
||||
traverse(vnode.children);
|
||||
}
|
||||
@@ -17,18 +21,13 @@ function flattenVNodes(vnodes: VNode[]) {
|
||||
return result;
|
||||
}
|
||||
|
||||
type VueInstance = {
|
||||
_vnode: VNode;
|
||||
$vnode: VNode;
|
||||
};
|
||||
|
||||
// sort children instances by vnodes order
|
||||
export function sortChildren(children: VueInstance[], parent: VueInstance) {
|
||||
// null on SSR
|
||||
if (!parent._vnode) {
|
||||
export function sortChildren(children: Vue[], parent: Vue) {
|
||||
const { componentOptions } = parent.$vnode;
|
||||
if (!componentOptions || !componentOptions.children) {
|
||||
return;
|
||||
}
|
||||
|
||||
const vnodes = flattenVNodes(parent._vnode.children!);
|
||||
const vnodes = flattenVNodes(componentOptions.children);
|
||||
children.sort((a, b) => vnodes.indexOf(a.$vnode) - vnodes.indexOf(b.$vnode));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user