Commit a68c11a56566bcfdc5fd669997f640aa644a74c0
1 parent
825ed580
support Nuxt.js
Showing
4 changed files
with
16 additions
and
4 deletions
Show diff stats
src/components/base/popper.js
1 | 1 | /** |
2 | 2 | * https://github.com/freeze-component/vue-popper |
3 | 3 | * */ |
4 | -import Popper from 'popper.js'; | |
4 | +import Vue from 'vue'; | |
5 | +const isServer = Vue.prototype.$isServer; | |
6 | +const Popper = isServer ? function() {} : require('popper.js'); // eslint-disable-line | |
5 | 7 | |
6 | 8 | export default { |
7 | 9 | props: { |
... | ... | @@ -62,6 +64,7 @@ export default { |
62 | 64 | }, |
63 | 65 | methods: { |
64 | 66 | createPopper() { |
67 | + if (isServer) return; | |
65 | 68 | if (!/^(top|bottom|left|right)(-start|-end)?$/g.test(this.placement)) { |
66 | 69 | return; |
67 | 70 | } |
... | ... | @@ -87,19 +90,23 @@ export default { |
87 | 90 | }); |
88 | 91 | }, |
89 | 92 | updatePopper() { |
93 | + if (isServer) return; | |
90 | 94 | this.popperJS ? this.popperJS.update() : this.createPopper(); |
91 | 95 | }, |
92 | 96 | doDestroy() { |
97 | + if (isServer) return; | |
93 | 98 | if (this.visible) return; |
94 | 99 | this.popperJS.destroy(); |
95 | 100 | this.popperJS = null; |
96 | 101 | }, |
97 | 102 | destroyPopper() { |
103 | + if (isServer) return; | |
98 | 104 | if (this.popperJS) { |
99 | 105 | this.resetTransformOrigin(this.popperJS); |
100 | 106 | } |
101 | 107 | }, |
102 | 108 | resetTransformOrigin(popper) { |
109 | + if (isServer) return; | |
103 | 110 | let placementMap = {top: 'bottom', bottom: 'top', left: 'right', right: 'left'}; |
104 | 111 | let placement = popper._popper.getAttribute('x-placement').split('-')[0]; |
105 | 112 | let origin = placementMap[placement]; |
... | ... | @@ -107,6 +114,7 @@ export default { |
107 | 114 | } |
108 | 115 | }, |
109 | 116 | beforeDestroy() { |
117 | + if (isServer) return; | |
110 | 118 | if (this.popperJS) { |
111 | 119 | this.popperJS.destroy(); |
112 | 120 | } | ... | ... |
src/components/select/dropdown.vue
... | ... | @@ -2,8 +2,10 @@ |
2 | 2 | <div class="ivu-select-dropdown" :style="styles"><slot></slot></div> |
3 | 3 | </template> |
4 | 4 | <script> |
5 | + import Vue from 'vue'; | |
6 | + const isServer = Vue.prototype.$isServer; | |
5 | 7 | import { getStyle } from '../../utils/assist'; |
6 | - import Popper from 'popper.js'; | |
8 | + const Popper = isServer ? function() {} : require('popper.js'); // eslint-disable-line | |
7 | 9 | |
8 | 10 | export default { |
9 | 11 | name: 'Drop', |
... | ... | @@ -28,6 +30,7 @@ |
28 | 30 | }, |
29 | 31 | methods: { |
30 | 32 | update () { |
33 | + if (isServer) return; | |
31 | 34 | if (this.popper) { |
32 | 35 | this.$nextTick(() => { |
33 | 36 | this.popper.update(); | ... | ... |
src/utils/assist.js
1 | +import Vue from 'vue'; | |
2 | +const isServer = Vue.prototype.$isServer; | |
1 | 3 | // 判断参数是否是其中之一 |
2 | 4 | export function oneOf (value, validList) { |
3 | 5 | for (let i = 0; i < validList.length; i++) { |
... | ... | @@ -52,7 +54,7 @@ export function getScrollBarSize (fresh) { |
52 | 54 | } |
53 | 55 | |
54 | 56 | // watch DOM change |
55 | -export const MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver || false; | |
57 | +export const MutationObserver = isServer ? false : window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver || false; | |
56 | 58 | |
57 | 59 | const SPECIAL_CHARS_REGEXP = /([\:\-\_]+(.))/g; |
58 | 60 | const MOZ_HACK_REGEXP = /^moz([A-Z])/; | ... | ... |