support Nuxt.js

This commit is contained in:
梁灏 2017-07-10 15:36:09 +08:00
parent 825ed58099
commit a68c11a565
4 changed files with 16 additions and 4 deletions

View file

@ -1,7 +1,9 @@
/**
* https://github.com/freeze-component/vue-popper
* */
import Popper from 'popper.js';
import Vue from 'vue';
const isServer = Vue.prototype.$isServer;
const Popper = isServer ? function() {} : require('popper.js'); // eslint-disable-line
export default {
props: {
@ -62,6 +64,7 @@ export default {
},
methods: {
createPopper() {
if (isServer) return;
if (!/^(top|bottom|left|right)(-start|-end)?$/g.test(this.placement)) {
return;
}
@ -87,19 +90,23 @@ export default {
});
},
updatePopper() {
if (isServer) return;
this.popperJS ? this.popperJS.update() : this.createPopper();
},
doDestroy() {
if (isServer) return;
if (this.visible) return;
this.popperJS.destroy();
this.popperJS = null;
},
destroyPopper() {
if (isServer) return;
if (this.popperJS) {
this.resetTransformOrigin(this.popperJS);
}
},
resetTransformOrigin(popper) {
if (isServer) return;
let placementMap = {top: 'bottom', bottom: 'top', left: 'right', right: 'left'};
let placement = popper._popper.getAttribute('x-placement').split('-')[0];
let origin = placementMap[placement];
@ -107,6 +114,7 @@ export default {
}
},
beforeDestroy() {
if (isServer) return;
if (this.popperJS) {
this.popperJS.destroy();
}

View file

@ -2,8 +2,10 @@
<div class="ivu-select-dropdown" :style="styles"><slot></slot></div>
</template>
<script>
import Vue from 'vue';
const isServer = Vue.prototype.$isServer;
import { getStyle } from '../../utils/assist';
import Popper from 'popper.js';
const Popper = isServer ? function() {} : require('popper.js'); // eslint-disable-line
export default {
name: 'Drop',
@ -28,6 +30,7 @@
},
methods: {
update () {
if (isServer) return;
if (this.popper) {
this.$nextTick(() => {
this.popper.update();

View file

@ -1,3 +1,5 @@
import Vue from 'vue';
const isServer = Vue.prototype.$isServer;
// 判断参数是否是其中之一
export function oneOf (value, validList) {
for (let i = 0; i < validList.length; i++) {
@ -52,7 +54,7 @@ export function getScrollBarSize (fresh) {
}
// watch DOM change
export const MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver || false;
export const MutationObserver = isServer ? false : window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver || false;
const SPECIAL_CHARS_REGEXP = /([\:\-\_]+(.))/g;
const MOZ_HACK_REGEXP = /^moz([A-Z])/;

View file

@ -1,5 +1,4 @@
import Vue from 'vue';
const isServer = Vue.prototype.$isServer;
/* istanbul ignore next */