From bc169e905a5213f0ce75bd9806e084621c4f369b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E5=98=89=E6=B6=B5?= Date: Tue, 22 Aug 2017 19:43:15 +0800 Subject: [PATCH] dalete merge && class operating methods --- packages/cell-swipe/index.vue | 2 +- packages/mixins/popup/index.js | 1 - packages/mixins/popup/popup-context.js | 6 +- packages/mixins/popup/popup-manager.js | 3 +- packages/toast/index.js | 22 +++--- packages/utils/dom.js | 96 +------------------------- packages/utils/merge.js | 15 ---- 7 files changed, 21 insertions(+), 124 deletions(-) delete mode 100644 packages/utils/merge.js diff --git a/packages/cell-swipe/index.vue b/packages/cell-swipe/index.vue index fd99f533d..6b9c024b8 100644 --- a/packages/cell-swipe/index.vue +++ b/packages/cell-swipe/index.vue @@ -80,7 +80,7 @@ export default { return; } else { this.swipeMove(0); - once(this.wrap, 'webkitTransitionEnd', _ => { + once(this.wrap, 'webkitTransitionEnd', () => { this.wrap.style.webkitTransform = ''; this.rightWrapElm.style.webkitTransform = this.rightDefaultTransform; this.leftWrapElm.style.webkitTransform = this.leftDefaultTransform; diff --git a/packages/mixins/popup/index.js b/packages/mixins/popup/index.js index 44700d419..b4b8fa227 100644 --- a/packages/mixins/popup/index.js +++ b/packages/mixins/popup/index.js @@ -1,4 +1,3 @@ -import merge from '../../utils/merge'; import PopupManager from './popup-manager'; import PopupContext from './popup-context'; diff --git a/packages/mixins/popup/popup-context.js b/packages/mixins/popup/popup-context.js index f0b2ff7ea..45cbae621 100644 --- a/packages/mixins/popup/popup-context.js +++ b/packages/mixins/popup/popup-context.js @@ -1,4 +1,3 @@ -import merge from '../../utils/merge'; import Vue from 'vue'; let context; @@ -16,7 +15,10 @@ const DEFAULT_CONTEXT = { modalStack: [] }; -context = _global.popupContext = merge({}, DEFAULT_CONTEXT, context); +context = _global.popupContext = { + ...DEFAULT_CONTEXT, + ...context +}; const PopupContext = { getContext(key) { diff --git a/packages/mixins/popup/popup-manager.js b/packages/mixins/popup/popup-manager.js index 3a98cc340..c422b537f 100644 --- a/packages/mixins/popup/popup-manager.js +++ b/packages/mixins/popup/popup-manager.js @@ -1,5 +1,4 @@ import Vue from 'vue'; -import { addClass } from '../../utils/dom'; import PopupContext from './popup-context'; const getModal = function() { @@ -79,7 +78,7 @@ const PopupManager = { const modalDom = getModal(); - addClass(modalDom, 'van-modal'); + modalDom.classList.add('van-modal'); let domParentNode; if (dom && dom.parentNode && dom.parentNode.nodeType !== 11) { diff --git a/packages/toast/index.js b/packages/toast/index.js index 5c6b20de3..8113da876 100644 --- a/packages/toast/index.js +++ b/packages/toast/index.js @@ -1,5 +1,4 @@ import Vue from 'vue'; -import merge from '../utils/merge'; import ToastComponent from './toast'; const ToastConstructor = Vue.extend(ToastComponent); @@ -50,25 +49,28 @@ var Toast = (options = {}) => { }; Toast.loading = (options) => { - return new Toast(merge({ - type: 'loading' - }, options)); + return new Toast({ + type: 'loading', + ...options + }); }; Toast.success = (options) => { const message = typeof options === 'string' ? options : options.message; - return new Toast(merge({ + return new Toast({ type: 'success', - message: message - }, options)); + message: message, + ...options + }); }; Toast.fail = (options) => { const message = typeof options === 'string' ? options : options.message; - return new Toast(merge({ + return new Toast({ type: 'fail', - message: message - }, options)); + message: message, + ...options + }); }; Toast.clear = () => { diff --git a/packages/utils/dom.js b/packages/utils/dom.js index 45f9e385b..bd9b6edb5 100644 --- a/packages/utils/dom.js +++ b/packages/utils/dom.js @@ -1,101 +1,11 @@ import Vue from 'vue'; -const isServer = Vue.prototype.$isServer; -const trim = function(string) { - return (string || '').replace(/^[\s\uFEFF]+|[\s\uFEFF]+$/g, ''); -}; - -export function hasClass(el, cls) { - if (!el || !cls) return false; - if (cls.indexOf(' ') !== -1) throw new Error('className should not contain space.'); - if (el.classList) { - return el.classList.contains(cls); - } else { - return (' ' + el.className + ' ').indexOf(' ' + cls + ' ') > -1; - } -}; - -export function addClass(el, cls) { - if (!el) return; - var curClass = el.className; - var classes = (cls || '').split(' '); - - for (var i = 0, j = classes.length; i < j; i++) { - var clsName = classes[i]; - if (!clsName) continue; - - if (el.classList) { - el.classList.add(clsName); - } else { - if (!hasClass(el, clsName)) { - curClass += ' ' + clsName; - } - } - } - if (!el.classList) { - el.className = curClass; - } -}; - -export function removeClass(el, cls) { - if (!el || !cls) return; - var classes = cls.split(' '); - var curClass = ' ' + el.className + ' '; - - for (var i = 0, j = classes.length; i < j; i++) { - var clsName = classes[i]; - if (!clsName) continue; - - if (el.classList) { - el.classList.remove(clsName); - } else { - if (hasClass(el, clsName)) { - curClass = curClass.replace(' ' + clsName + ' ', ' '); - } - } - } - if (!el.classList) { - el.className = trim(curClass); - } -}; export const once = function(el, event, fn) { - var listener = function() { + const listener = function() { if (fn) { fn.apply(this, arguments); } - off(el, event, listener); + el.removeEventListener(event, listener); }; - on(el, event, listener); + el.addEventListener(event, listener); }; - -export const on = (function() { - if (!isServer && document.addEventListener) { - return function(element, event, handler) { - if (element && event && handler) { - element.addEventListener(event, handler, false); - } - }; - } else { - return function(element, event, handler) { - if (element && event && handler) { - element.attachEvent('on' + event, handler); - } - }; - } -})(); - -export const off = (function() { - if (!isServer && document.removeEventListener) { - return function(element, event, handler) { - if (element && event) { - element.removeEventListener(event, handler, false); - } - }; - } else { - return function(element, event, handler) { - if (element && event) { - element.detachEvent('on' + event, handler); - } - }; - } -})(); diff --git a/packages/utils/merge.js b/packages/utils/merge.js deleted file mode 100644 index c73581621..000000000 --- a/packages/utils/merge.js +++ /dev/null @@ -1,15 +0,0 @@ -export default function(target, ...sources) { - for (let i = 0; i < sources.length; i++) { - const source = sources[i] || {}; - for (const prop in source) { - if (source.hasOwnProperty(prop)) { - const value = source[prop]; - if (value !== undefined) { - target[prop] = value; - } - } - } - } - - return target; -};