mirror of
https://gitee.com/vant-contrib/vant.git
synced 2025-04-06 03:57:59 +08:00
[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:
parent
99f739bfee
commit
0d686313e0
@ -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() {
|
||||
|
@ -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 {
|
||||
|
@ -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';
|
||||
|
||||
|
@ -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;
|
||||
// header高度82px, sku actions高度50px,如果改动了样式自己传下bodyOffsetTop调整下
|
||||
const maxHeight = windowHeight - this.bodyOffsetTop;
|
||||
|
@ -1,4 +0,0 @@
|
||||
const camelizeRE = /-(\w)/g;
|
||||
export default function(str) {
|
||||
return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : '');
|
||||
}
|
@ -6,9 +6,8 @@
|
||||
* ```
|
||||
*/
|
||||
|
||||
import Vue from 'vue';
|
||||
import { isServer } from './index';
|
||||
|
||||
const isServer = Vue.prototype.$isServer;
|
||||
const context = '@@clickoutsideContext';
|
||||
|
||||
export default {
|
||||
|
3
packages/utils/env/is-android.js
vendored
3
packages/utils/env/is-android.js
vendored
@ -1,3 +0,0 @@
|
||||
export default function() {
|
||||
return /android/.test(navigator.userAgent.toLowerCase());
|
||||
}
|
@ -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
27
packages/utils/index.js
Normal 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());
|
||||
}
|
@ -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)
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user