城阳工作端uniH5前端代码
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

179 lines
5.2 KiB

<template>
<view :class="'custom-class ' + utils.bem('grid-item', { square })" :style="computed.wrapperStyle({ square, gutter, columnNum, index })" @tap="onClick">
<view
:class="
'content-class ' +
utils.bem('grid-item__content', [direction, { center, square, reverse, clickable, surround: border && gutter }]) +
' ' +
(border ? 'van-hairline--surround' : '')
"
:style="computed.contentStyle({ square, gutter })"
>
<block v-if="useSlot">
<slot />
</block>
<block v-else>
<view class="van-grid-item__icon icon-class">
<van-icon v-if="icon" :name="icon" :color="iconColor" :class-prefix="iconPrefix" :dot="dot" :info="badge || info" :size="iconSize" />
<slot v-else name="icon"></slot>
</view>
<view class="van-grid-item__text text-class">
<text v-if="text">{{ text }}</text>
<slot v-else name="text"></slot>
</view>
</block>
</view>
</view>
</template>
<script module="utils" lang="wxs" src="@/miniprogram_npm/@vant/weapp/wxs/utils.wxs"></script>
<script module="computed" lang="wxs" src="@/miniprogram_npm/@vant/weapp/grid-item/index.wxs"></script>
<script>
'use strict';
Object.defineProperty(exports, '__esModule', {
value: true
});
var component_1 = require('../common/component');
var relation_1 = require('../common/relation');
var link_1 = require('../mixins/link');
export default {
data() {
return {
viewStyle: '',
center: '',
border: '',
square: '',
gutter: '',
clickable: '',
direction: '',
reverse: '',
iconSize: '',
columnNum: ''
};
},
relation: (0, relation_1.useParent)('grid'),
classes: ['content-class', 'icon-class', 'text-class'],
mixins: [link_1.link],
props: {
icon: String,
iconColor: String,
iconPrefix: {
type: String,
default: 'van-icon'
},
dot: Boolean,
info: null,
badge: null,
text: String,
useSlot: Boolean
},
mounted: function () {
this.updateStyle();
},
methods: {
updateStyle: function () {
if (!this.parent) {
return;
}
var _a = this.parent;
var data = _a.data;
var children = _a.children;
var columnNum = data.columnNum;
var border = data.border;
var square = data.square;
var gutter = data.gutter;
var clickable = data.clickable;
var center = data.center;
var direction = data.direction;
var reverse = data.reverse;
var iconSize = data.iconSize;
this.setData({
center: center,
border: border,
square: square,
gutter: gutter,
clickable: clickable,
direction: direction,
reverse: reverse,
iconSize: iconSize,
index: children.indexOf(this),
columnNum: columnNum
});
},
onClick: function () {
this.$emit('click');
this.jumpLink();
}
}
};
</script>
<style>
@import '../common/index.css';
.van-grid-item {
box-sizing: border-box;
float: left;
position: relative;
}
.van-grid-item--square {
height: 0;
}
.van-grid-item__content {
background-color: var(--grid-item-content-background-color, #fff);
box-sizing: border-box;
display: flex;
flex-direction: column;
height: 100%;
padding: var(--grid-item-content-padding, 16px 8px);
}
.van-grid-item__content:after {
border-width: 0 1px 1px 0;
z-index: 1;
}
.van-grid-item__content--surround:after {
border-width: 1px;
}
.van-grid-item__content--center {
align-items: center;
justify-content: center;
}
.van-grid-item__content--square {
left: 0;
position: absolute;
right: 0;
top: 0;
}
.van-grid-item__content--horizontal {
flex-direction: row;
}
.van-grid-item__content--horizontal .van-grid-item__text {
margin: 0 0 0 8px;
}
.van-grid-item__content--reverse {
flex-direction: column-reverse;
}
.van-grid-item__content--reverse .van-grid-item__text {
margin: 0 0 8px;
}
.van-grid-item__content--horizontal.van-grid-item__content--reverse {
flex-direction: row-reverse;
}
.van-grid-item__content--horizontal.van-grid-item__content--reverse .van-grid-item__text {
margin: 0 8px 0 0;
}
.van-grid-item__content--clickable:active {
background-color: var(--grid-item-content-active-color, #f2f3f5);
}
.van-grid-item__icon {
align-items: center;
display: flex;
font-size: var(--grid-item-icon-size, 26px);
height: var(--grid-item-icon-size, 26px);
}
.van-grid-item__text {
word-wrap: break-word;
color: var(--grid-item-text-color, #646566);
font-size: var(--grid-item-text-font-size, 12px);
}
.van-grid-item__icon + .van-grid-item__text {
margin-top: 8px;
}
</style>