Skip to content

Commit

Permalink
fix(Transition): fix validate duration (#1188)
Browse files Browse the repository at this point in the history
  • Loading branch information
underfin committed May 18, 2020
1 parent 8e30d0c commit d73a508
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 11 deletions.
10 changes: 5 additions & 5 deletions packages/runtime-dom/src/components/Transition.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import {
getCurrentInstance,
callWithAsyncErrorHandling
} from '@vue/runtime-core'
import { isObject } from '@vue/shared'
import { isObject, toNumber } from '@vue/shared'
import { ErrorCodes } from 'packages/runtime-core/src/errorHandling'

const TRANSITION = 'transition'
Expand Down Expand Up @@ -165,15 +165,15 @@ function normalizeDuration(
if (duration == null) {
return null
} else if (isObject(duration)) {
return [toNumber(duration.enter), toNumber(duration.leave)]
return [NumberOf(duration.enter), NumberOf(duration.leave)]
} else {
const n = toNumber(duration)
const n = NumberOf(duration)
return [n, n]
}
}

function toNumber(val: unknown): number {
const res = Number(val || 0)
function NumberOf(val: unknown): number {
const res = toNumber(val)
if (__DEV__) validateDuration(res)
return res
}
Expand Down
13 changes: 7 additions & 6 deletions packages/runtime-dom/src/directives/vModel.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,13 @@ import {
warn
} from '@vue/runtime-core'
import { addEventListener } from '../modules/events'
import { isArray, looseEqual, looseIndexOf, invokeArrayFns } from '@vue/shared'
import {
isArray,
looseEqual,
looseIndexOf,
invokeArrayFns,
toNumber
} from '@vue/shared'

type AssignerFn = (value: any) => void

Expand All @@ -33,11 +39,6 @@ function trigger(el: HTMLElement, type: string) {
el.dispatchEvent(e)
}

function toNumber(val: string): number | string {
const n = parseFloat(val)
return isNaN(n) ? val : n
}

type ModelDirective<T> = ObjectDirective<T & { _assign: AssignerFn }>

// We are exporting the v-model runtime directly as vnode hooks so that it can
Expand Down
5 changes: 5 additions & 0 deletions packages/shared/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -125,3 +125,8 @@ export const def = (obj: object, key: string | symbol, value: any) => {
value
})
}

export const toNumber = (val: any): any => {
const n = parseFloat(val)
return isNaN(n) ? val : n
}

0 comments on commit d73a508

Please sign in to comment.