nav tabs on admin dashboard
This commit is contained in:
6
node_modules/vue/src/platforms/web/runtime/class-util.js
generated
vendored
6
node_modules/vue/src/platforms/web/runtime/class-util.js
generated
vendored
@@ -1,5 +1,7 @@
|
||||
/* @flow */
|
||||
|
||||
const whitespaceRE = /\s+/
|
||||
|
||||
/**
|
||||
* Add class with compatibility for SVG since classList is not supported on
|
||||
* SVG elements in IE
|
||||
@@ -13,7 +15,7 @@ export function addClass (el: HTMLElement, cls: ?string) {
|
||||
/* istanbul ignore else */
|
||||
if (el.classList) {
|
||||
if (cls.indexOf(' ') > -1) {
|
||||
cls.split(/\s+/).forEach(c => el.classList.add(c))
|
||||
cls.split(whitespaceRE).forEach(c => el.classList.add(c))
|
||||
} else {
|
||||
el.classList.add(cls)
|
||||
}
|
||||
@@ -38,7 +40,7 @@ export function removeClass (el: HTMLElement, cls: ?string) {
|
||||
/* istanbul ignore else */
|
||||
if (el.classList) {
|
||||
if (cls.indexOf(' ') > -1) {
|
||||
cls.split(/\s+/).forEach(c => el.classList.remove(c))
|
||||
cls.split(whitespaceRE).forEach(c => el.classList.remove(c))
|
||||
} else {
|
||||
el.classList.remove(cls)
|
||||
}
|
||||
|
||||
36
node_modules/vue/src/platforms/web/runtime/components/transition-group.js
generated
vendored
36
node_modules/vue/src/platforms/web/runtime/components/transition-group.js
generated
vendored
@@ -14,6 +14,7 @@
|
||||
import { warn, extend } from 'core/util/index'
|
||||
import { addClass, removeClass } from '../class-util'
|
||||
import { transitionProps, extractTransitionData } from './transition'
|
||||
import { setActiveInstance } from 'core/instance/lifecycle'
|
||||
|
||||
import {
|
||||
hasTransition,
|
||||
@@ -33,6 +34,23 @@ delete props.mode
|
||||
export default {
|
||||
props,
|
||||
|
||||
beforeMount () {
|
||||
const update = this._update
|
||||
this._update = (vnode, hydrating) => {
|
||||
const restoreActiveInstance = setActiveInstance(this)
|
||||
// force removing pass
|
||||
this.__patch__(
|
||||
this._vnode,
|
||||
this.kept,
|
||||
false, // hydrating
|
||||
true // removeOnly (!important, avoids unnecessary moves)
|
||||
)
|
||||
this._vnode = this.kept
|
||||
restoreActiveInstance()
|
||||
update.call(this, vnode, hydrating)
|
||||
}
|
||||
},
|
||||
|
||||
render (h: Function) {
|
||||
const tag: string = this.tag || this.$vnode.data.tag || 'span'
|
||||
const map: Object = Object.create(null)
|
||||
@@ -76,17 +94,6 @@ export default {
|
||||
return h(tag, null, children)
|
||||
},
|
||||
|
||||
beforeUpdate () {
|
||||
// force removing pass
|
||||
this.__patch__(
|
||||
this._vnode,
|
||||
this.kept,
|
||||
false, // hydrating
|
||||
true // removeOnly (!important, avoids unnecessary moves)
|
||||
)
|
||||
this._vnode = this.kept
|
||||
},
|
||||
|
||||
updated () {
|
||||
const children: Array<VNode> = this.prevChildren
|
||||
const moveClass: string = this.moveClass || ((this.name || 'v') + '-move')
|
||||
@@ -107,11 +114,14 @@ export default {
|
||||
|
||||
children.forEach((c: VNode) => {
|
||||
if (c.data.moved) {
|
||||
var el: any = c.elm
|
||||
var s: any = el.style
|
||||
const el: any = c.elm
|
||||
const s: any = el.style
|
||||
addTransitionClass(el, moveClass)
|
||||
s.transform = s.WebkitTransform = s.transitionDuration = ''
|
||||
el.addEventListener(transitionEndEvent, el._moveCb = function cb (e) {
|
||||
if (e && e.target !== el) {
|
||||
return
|
||||
}
|
||||
if (!e || /transform$/.test(e.propertyName)) {
|
||||
el.removeEventListener(transitionEndEvent, cb)
|
||||
el._moveCb = null
|
||||
|
||||
8
node_modules/vue/src/platforms/web/runtime/components/transition.js
generated
vendored
8
node_modules/vue/src/platforms/web/runtime/components/transition.js
generated
vendored
@@ -76,6 +76,10 @@ function isSameChild (child: VNode, oldChild: VNode): boolean {
|
||||
return oldChild.key === child.key && oldChild.tag === child.tag
|
||||
}
|
||||
|
||||
const isNotTextNode = (c: VNode) => c.tag || isAsyncPlaceholder(c)
|
||||
|
||||
const isVShowDirective = d => d.name === 'show'
|
||||
|
||||
export default {
|
||||
name: 'transition',
|
||||
props: transitionProps,
|
||||
@@ -88,7 +92,7 @@ export default {
|
||||
}
|
||||
|
||||
// filter out text nodes (possible whitespaces)
|
||||
children = children.filter((c: VNode) => c.tag || isAsyncPlaceholder(c))
|
||||
children = children.filter(isNotTextNode)
|
||||
/* istanbul ignore if */
|
||||
if (!children.length) {
|
||||
return
|
||||
@@ -153,7 +157,7 @@ export default {
|
||||
|
||||
// mark v-show
|
||||
// so that the transition module can hand over the control to the directive
|
||||
if (child.data.directives && child.data.directives.some(d => d.name === 'show')) {
|
||||
if (child.data.directives && child.data.directives.some(isVShowDirective)) {
|
||||
child.data.show = true
|
||||
}
|
||||
|
||||
|
||||
5
node_modules/vue/src/platforms/web/runtime/index.js
generated
vendored
5
node_modules/vue/src/platforms/web/runtime/index.js
generated
vendored
@@ -4,7 +4,7 @@ import Vue from 'core/index'
|
||||
import config from 'core/config'
|
||||
import { extend, noop } from 'shared/util'
|
||||
import { mountComponent } from 'core/instance/lifecycle'
|
||||
import { devtools, inBrowser, isChrome } from 'core/util/index'
|
||||
import { devtools, inBrowser } from 'core/util/index'
|
||||
|
||||
import {
|
||||
query,
|
||||
@@ -51,8 +51,7 @@ if (inBrowser) {
|
||||
devtools.emit('init', Vue)
|
||||
} else if (
|
||||
process.env.NODE_ENV !== 'production' &&
|
||||
process.env.NODE_ENV !== 'test' &&
|
||||
isChrome
|
||||
process.env.NODE_ENV !== 'test'
|
||||
) {
|
||||
console[console.info ? 'info' : 'log'](
|
||||
'Download the Vue Devtools extension for a better development experience:\n' +
|
||||
|
||||
7
node_modules/vue/src/platforms/web/runtime/modules/attrs.js
generated
vendored
7
node_modules/vue/src/platforms/web/runtime/modules/attrs.js
generated
vendored
@@ -14,7 +14,8 @@ import {
|
||||
getXlinkProp,
|
||||
isBooleanAttr,
|
||||
isEnumeratedAttr,
|
||||
isFalsyAttrValue
|
||||
isFalsyAttrValue,
|
||||
convertEnumeratedValue
|
||||
} from 'web/util/index'
|
||||
|
||||
function updateAttrs (oldVnode: VNodeWithData, vnode: VNodeWithData) {
|
||||
@@ -75,7 +76,7 @@ function setAttr (el: Element, key: string, value: any) {
|
||||
el.setAttribute(key, value)
|
||||
}
|
||||
} else if (isEnumeratedAttr(key)) {
|
||||
el.setAttribute(key, isFalsyAttrValue(value) || value === 'false' ? 'false' : 'true')
|
||||
el.setAttribute(key, convertEnumeratedValue(key, value))
|
||||
} else if (isXlink(key)) {
|
||||
if (isFalsyAttrValue(value)) {
|
||||
el.removeAttributeNS(xlinkNS, getXlinkProp(key))
|
||||
@@ -98,7 +99,7 @@ function baseSetAttr (el, key, value) {
|
||||
if (
|
||||
isIE && !isIE9 &&
|
||||
el.tagName === 'TEXTAREA' &&
|
||||
key === 'placeholder' && !el.__ieph
|
||||
key === 'placeholder' && value !== '' && !el.__ieph
|
||||
) {
|
||||
const blocker = e => {
|
||||
e.stopImmediatePropagation()
|
||||
|
||||
34
node_modules/vue/src/platforms/web/runtime/modules/dom-props.js
generated
vendored
34
node_modules/vue/src/platforms/web/runtime/modules/dom-props.js
generated
vendored
@@ -1,6 +1,9 @@
|
||||
/* @flow */
|
||||
|
||||
import { isDef, isUndef, extend, toNumber } from 'shared/util'
|
||||
import { isSVG } from 'web/util/index'
|
||||
|
||||
let svgContainer
|
||||
|
||||
function updateDOMProps (oldVnode: VNodeWithData, vnode: VNodeWithData) {
|
||||
if (isUndef(oldVnode.data.domProps) && isUndef(vnode.data.domProps)) {
|
||||
@@ -35,7 +38,7 @@ function updateDOMProps (oldVnode: VNodeWithData, vnode: VNodeWithData) {
|
||||
}
|
||||
}
|
||||
|
||||
if (key === 'value') {
|
||||
if (key === 'value' && elm.tagName !== 'PROGRESS') {
|
||||
// store value as _value as well since
|
||||
// non-string values will be stringified
|
||||
elm._value = cur
|
||||
@@ -44,8 +47,29 @@ function updateDOMProps (oldVnode: VNodeWithData, vnode: VNodeWithData) {
|
||||
if (shouldUpdateValue(elm, strCur)) {
|
||||
elm.value = strCur
|
||||
}
|
||||
} else {
|
||||
elm[key] = cur
|
||||
} else if (key === 'innerHTML' && isSVG(elm.tagName) && isUndef(elm.innerHTML)) {
|
||||
// IE doesn't support innerHTML for SVG elements
|
||||
svgContainer = svgContainer || document.createElement('div')
|
||||
svgContainer.innerHTML = `<svg>${cur}</svg>`
|
||||
const svg = svgContainer.firstChild
|
||||
while (elm.firstChild) {
|
||||
elm.removeChild(elm.firstChild)
|
||||
}
|
||||
while (svg.firstChild) {
|
||||
elm.appendChild(svg.firstChild)
|
||||
}
|
||||
} else if (
|
||||
// skip the update if old and new VDOM state is the same.
|
||||
// `value` is handled separately because the DOM value may be temporarily
|
||||
// out of sync with VDOM state due to focus, composition and modifiers.
|
||||
// This #4521 by skipping the unnecesarry `checked` update.
|
||||
cur !== oldProps[key]
|
||||
) {
|
||||
// some property updates can throw
|
||||
// e.g. `value` on <progress> w/ non-finite value
|
||||
try {
|
||||
elm[key] = cur
|
||||
} catch (e) {}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -75,10 +99,6 @@ function isDirtyWithModifiers (elm: any, newVal: string): boolean {
|
||||
const value = elm.value
|
||||
const modifiers = elm._vModifiers // injected by v-model runtime
|
||||
if (isDef(modifiers)) {
|
||||
if (modifiers.lazy) {
|
||||
// inputs with lazy should only be updated when not in focus
|
||||
return false
|
||||
}
|
||||
if (modifiers.number) {
|
||||
return toNumber(value) !== toNumber(newVal)
|
||||
}
|
||||
|
||||
53
node_modules/vue/src/platforms/web/runtime/modules/events.js
generated
vendored
53
node_modules/vue/src/platforms/web/runtime/modules/events.js
generated
vendored
@@ -2,8 +2,9 @@
|
||||
|
||||
import { isDef, isUndef } from 'shared/util'
|
||||
import { updateListeners } from 'core/vdom/helpers/index'
|
||||
import { withMacroTask, isIE, supportsPassive } from 'core/util/index'
|
||||
import { isIE, isFF, supportsPassive, isUsingMicroTask } from 'core/util/index'
|
||||
import { RANGE_TOKEN, CHECKBOX_RADIO_TOKEN } from 'web/compiler/directives/model'
|
||||
import { currentFlushTimestamp } from 'core/observer/scheduler'
|
||||
|
||||
// normalize v-model event tokens that can only be determined at runtime.
|
||||
// it's important to place the event as the first in the array because
|
||||
@@ -28,7 +29,7 @@ function normalizeEvents (on) {
|
||||
|
||||
let target: any
|
||||
|
||||
function createOnceHandler (handler, event, capture) {
|
||||
function createOnceHandler (event, handler, capture) {
|
||||
const _target = target // save current target element in closure
|
||||
return function onceHandler () {
|
||||
const res = handler.apply(null, arguments)
|
||||
@@ -38,17 +39,47 @@ function createOnceHandler (handler, event, capture) {
|
||||
}
|
||||
}
|
||||
|
||||
// #9446: Firefox <= 53 (in particular, ESR 52) has incorrect Event.timeStamp
|
||||
// implementation and does not fire microtasks in between event propagation, so
|
||||
// safe to exclude.
|
||||
const useMicrotaskFix = isUsingMicroTask && !(isFF && Number(isFF[1]) <= 53)
|
||||
|
||||
function add (
|
||||
event: string,
|
||||
name: string,
|
||||
handler: Function,
|
||||
once: boolean,
|
||||
capture: boolean,
|
||||
passive: boolean
|
||||
) {
|
||||
handler = withMacroTask(handler)
|
||||
if (once) handler = createOnceHandler(handler, event, capture)
|
||||
// async edge case #6566: inner click event triggers patch, event handler
|
||||
// attached to outer element during patch, and triggered again. This
|
||||
// happens because browsers fire microtask ticks between event propagation.
|
||||
// the solution is simple: we save the timestamp when a handler is attached,
|
||||
// and the handler would only fire if the event passed to it was fired
|
||||
// AFTER it was attached.
|
||||
if (useMicrotaskFix) {
|
||||
const attachedTimestamp = currentFlushTimestamp
|
||||
const original = handler
|
||||
handler = original._wrapper = function (e) {
|
||||
if (
|
||||
// no bubbling, should always fire.
|
||||
// this is just a safety net in case event.timeStamp is unreliable in
|
||||
// certain weird environments...
|
||||
e.target === e.currentTarget ||
|
||||
// event is fired after handler attachment
|
||||
e.timeStamp >= attachedTimestamp ||
|
||||
// #9462 bail for iOS 9 bug: event.timeStamp is 0 after history.pushState
|
||||
e.timeStamp === 0 ||
|
||||
// #9448 bail if event is fired in another document in a multi-page
|
||||
// electron/nw.js app, since event.timeStamp will be using a different
|
||||
// starting reference
|
||||
e.target.ownerDocument !== document
|
||||
) {
|
||||
return original.apply(this, arguments)
|
||||
}
|
||||
}
|
||||
}
|
||||
target.addEventListener(
|
||||
event,
|
||||
name,
|
||||
handler,
|
||||
supportsPassive
|
||||
? { capture, passive }
|
||||
@@ -57,14 +88,14 @@ function add (
|
||||
}
|
||||
|
||||
function remove (
|
||||
event: string,
|
||||
name: string,
|
||||
handler: Function,
|
||||
capture: boolean,
|
||||
_target?: HTMLElement
|
||||
) {
|
||||
(_target || target).removeEventListener(
|
||||
event,
|
||||
handler._withTask || handler,
|
||||
name,
|
||||
handler._wrapper || handler,
|
||||
capture
|
||||
)
|
||||
}
|
||||
@@ -77,7 +108,7 @@ function updateDOMListeners (oldVnode: VNodeWithData, vnode: VNodeWithData) {
|
||||
const oldOn = oldVnode.data.on || {}
|
||||
target = vnode.elm
|
||||
normalizeEvents(on)
|
||||
updateListeners(on, oldOn, add, remove, vnode.context)
|
||||
updateListeners(on, oldOn, add, remove, createOnceHandler, vnode.context)
|
||||
target = undefined
|
||||
}
|
||||
|
||||
|
||||
4
node_modules/vue/src/platforms/web/runtime/modules/style.js
generated
vendored
4
node_modules/vue/src/platforms/web/runtime/modules/style.js
generated
vendored
@@ -1,7 +1,7 @@
|
||||
/* @flow */
|
||||
|
||||
import { getStyle, normalizeStyleBinding } from 'web/util/style'
|
||||
import { cached, camelize, extend, isDef, isUndef } from 'shared/util'
|
||||
import { cached, camelize, extend, isDef, isUndef, hyphenate } from 'shared/util'
|
||||
|
||||
const cssVarRE = /^--/
|
||||
const importantRE = /\s*!important$/
|
||||
@@ -10,7 +10,7 @@ const setProp = (el, name, val) => {
|
||||
if (cssVarRE.test(name)) {
|
||||
el.style.setProperty(name, val)
|
||||
} else if (importantRE.test(val)) {
|
||||
el.style.setProperty(name, val.replace(importantRE, ''), 'important')
|
||||
el.style.setProperty(hyphenate(name), val.replace(importantRE, ''), 'important')
|
||||
} else {
|
||||
const normalizedName = normalize(name)
|
||||
if (Array.isArray(val)) {
|
||||
|
||||
2
node_modules/vue/src/platforms/web/runtime/modules/transition.js
generated
vendored
2
node_modules/vue/src/platforms/web/runtime/modules/transition.js
generated
vendored
@@ -251,7 +251,7 @@ export function leave (vnode: VNodeWithData, rm: Function) {
|
||||
return
|
||||
}
|
||||
// record leaving element
|
||||
if (!vnode.data.show) {
|
||||
if (!vnode.data.show && el.parentNode) {
|
||||
(el.parentNode._pending || (el.parentNode._pending = {}))[(vnode.key: any)] = vnode
|
||||
}
|
||||
beforeLeave && beforeLeave(el)
|
||||
|
||||
15
node_modules/vue/src/platforms/web/runtime/transition-util.js
generated
vendored
15
node_modules/vue/src/platforms/web/runtime/transition-util.js
generated
vendored
@@ -122,11 +122,12 @@ export function getTransitionInfo (el: Element, expectedType?: ?string): {
|
||||
hasTransform: boolean;
|
||||
} {
|
||||
const styles: any = window.getComputedStyle(el)
|
||||
const transitionDelays: Array<string> = styles[transitionProp + 'Delay'].split(', ')
|
||||
const transitionDurations: Array<string> = styles[transitionProp + 'Duration'].split(', ')
|
||||
// JSDOM may return undefined for transition properties
|
||||
const transitionDelays: Array<string> = (styles[transitionProp + 'Delay'] || '').split(', ')
|
||||
const transitionDurations: Array<string> = (styles[transitionProp + 'Duration'] || '').split(', ')
|
||||
const transitionTimeout: number = getTimeout(transitionDelays, transitionDurations)
|
||||
const animationDelays: Array<string> = styles[animationProp + 'Delay'].split(', ')
|
||||
const animationDurations: Array<string> = styles[animationProp + 'Duration'].split(', ')
|
||||
const animationDelays: Array<string> = (styles[animationProp + 'Delay'] || '').split(', ')
|
||||
const animationDurations: Array<string> = (styles[animationProp + 'Duration'] || '').split(', ')
|
||||
const animationTimeout: number = getTimeout(animationDelays, animationDurations)
|
||||
|
||||
let type: ?string
|
||||
@@ -180,6 +181,10 @@ function getTimeout (delays: Array<string>, durations: Array<string>): number {
|
||||
}))
|
||||
}
|
||||
|
||||
// Old versions of Chromium (below 61.0.3163.100) formats floating pointer numbers
|
||||
// in a locale-dependent way, using a comma instead of a dot.
|
||||
// If comma is not replaced with a dot, the input will be rounded down (i.e. acting
|
||||
// as a floor function) causing unexpected behaviors
|
||||
function toMs (s: string): number {
|
||||
return Number(s.slice(0, -1)) * 1000
|
||||
return Number(s.slice(0, -1).replace(',', '.')) * 1000
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user