[bugfix] should not access window when ssr (#344)

* fix: Tabbar icon line-height

* [new feature] progress add showPivot prop

* [new feature] TabItem support vue-router

* [new feature] update document header style

* [Doc] add toast english ducoment

* [bugfix] Search box-sizing wrong

* [Doc] update vant-demo respo

* [Doc] translate theme & demo pages

* [Doc] add Internationalization document

* [bugfix] remove unnecessary props

* [fix] optimize clickoutside

* [new feature] optimize find-parent

* [new feature]: change document title accordinng to language

* [new feature] Pagination code review

* [improvement] adjust icon-font unicode

* [improvement] Icon spinner color inherit

* [improvement] icon default width

* [bugfix] DateTimePicker validate date props

* [bugfix] Tab item text ellipsis

* [improvement] optimize single line ellipsis

* [Improvement] optimzie staticClass

* [Improvement] Button: use sfc instread of jsx

* [Improvement] update actionsheet close icon style

* fix: yarn.lock

* fix: icon test cases

* [bugfix] errors during ssr
This commit is contained in:
neverland 2017-11-23 20:13:30 +08:00 committed by GitHub
parent 99f739bfee
commit 0d686313e0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 38 additions and 24 deletions

View File

@ -5,7 +5,7 @@
import Vue from 'vue';
import { Locale, Toast, Dialog } from 'packages';
import { DemoBlock, DemoSection } from 'vant-doc';
import camelize from 'packages/utils/camelize';
import { camelize } from 'packages/utils';
const demoBaseMixin = {
beforeCreate() {

View File

@ -41,7 +41,7 @@ import Icon from '../icon';
import Field from '../field';
import Cell from '../cell';
import CellGroup from '../cell-group';
import isAndroid from '../utils/env/is-android';
import { isAndroid } from '../utils';
import { i18n } from '../locale';
export default {

View File

@ -1,6 +1,5 @@
import Vue from 'vue';
import get from '../utils/get';
import camelize from '../utils/camelize';
import { get, camelize } from '../utils';
import deepAssign from '../utils/deep-assign';
import defaultMessages from './lang/zh-CN';

View File

@ -72,6 +72,7 @@
<script>
import Vue from 'vue';
import { isServer } from '../../utils';
import Popup from '../../popup';
import Toast from '../../toast';
import SkuHeader from '../components/SkuHeader';
@ -176,6 +177,10 @@ export default {
computed: {
bodyStyle() {
if (isServer) {
return;
}
const windowHeight = window.innerHeight;
// header82px, sku actions50pxbodyOffsetTop
const maxHeight = windowHeight - this.bodyOffsetTop;

View File

@ -1,4 +0,0 @@
const camelizeRE = /-(\w)/g;
export default function(str) {
return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : '');
}

View File

@ -6,9 +6,8 @@
* ```
*/
import Vue from 'vue';
import { isServer } from './index';
const isServer = Vue.prototype.$isServer;
const context = '@@clickoutsideContext';
export default {

View File

@ -1,3 +0,0 @@
export default function() {
return /android/.test(navigator.userAgent.toLowerCase());
}

View File

@ -1,9 +0,0 @@
export default function(object, path) {
const keys = path.split('.');
let result = object;
keys.forEach(key => {
result = result[key] || '';
});
return result;
}

27
packages/utils/index.js Normal file
View File

@ -0,0 +1,27 @@
import Vue from 'vue';
export const isServer = Vue.prototype.$isServer;
export function isDef(value) {
return value !== undefined && value !== null;
}
export function get(object, path) {
const keys = path.split('.');
let result = object;
keys.forEach(key => {
result = isDef(result[key]) ? result[key] : '';
});
return result;
}
const camelizeRE = /-(\w)/g;
export function camelize(str) {
return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : '');
}
export function isAndroid() {
return isServer ? false : /android/.test(navigator.userAgent.toLowerCase());
}

View File

@ -1,4 +1,4 @@
import Vue from 'vue';
import { isServer } from './index';
export default {
debounce(func, wait, immediate) {
@ -71,5 +71,5 @@ export default {
return element === window ? element.innerHeight : element.getBoundingClientRect().height;
},
getComputedStyle: !Vue.prototype.$isServer && document.defaultView.getComputedStyle.bind(document.defaultView)
getComputedStyle: !isServer && document.defaultView.getComputedStyle.bind(document.defaultView)
};