index.vue 3.9KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. <template>
  2. <uni-shadow-root class="vant-cell-index"><view :class="'custom-class '+(utils.bem('cell', [size, { center, required, borderless: !border, clickable: isLink || clickable }]))" hover-class="van-cell--hover hover-class" hover-stay-time="70" :style="customStyle" @click="onClick">
  3. <van-icon v-if="icon" :name="icon" class="van-cell__left-icon-wrap" custom-class="van-cell__left-icon"></van-icon>
  4. <slot v-else name="icon"></slot>
  5. <view :style="titleWidth ? 'max-width:' + titleWidth + ';min-width:' + titleWidth : ''" class="van-cell__title title-class">
  6. <block v-if="title">{{ title }}</block>
  7. <slot v-else name="title"></slot>
  8. <view v-if="label || useLabelSlot" class="van-cell__label label-class">
  9. <slot v-if="useLabelSlot" name="label"></slot>
  10. <block v-else-if="label">{{ label }}</block>
  11. </view>
  12. </view>
  13. <view class="van-cell__value value-class">
  14. <block v-if="value || value === 0">{{ value }}</block>
  15. <slot v-else></slot>
  16. </view>
  17. <van-icon v-if="isLink" :name="arrowDirection ? 'arrow' + '-' + arrowDirection : 'arrow'" class="van-cell__right-icon-wrap right-icon-class" custom-class="van-cell__right-icon"></van-icon>
  18. <slot v-else name="right-icon"></slot>
  19. <slot name="extra"></slot>
  20. </view></uni-shadow-root>
  21. </template>
  22. <wxs src="../wxs/utils.wxs" module="utils"></wxs>
  23. <script>
  24. import VanIcon from '../icon/index.vue'
  25. global['__wxVueOptions'] = {components:{'van-icon': VanIcon}}
  26. global['__wxRoute'] = 'vant/cell/index'
  27. import { link } from '../mixins/link';
  28. import { VantComponent } from '../common/component';
  29. VantComponent({
  30. classes: [
  31. 'title-class',
  32. 'label-class',
  33. 'value-class',
  34. 'right-icon-class',
  35. 'hover-class'
  36. ],
  37. mixins: [link],
  38. props: {
  39. title: null,
  40. value: null,
  41. icon: String,
  42. size: String,
  43. label: String,
  44. center: Boolean,
  45. isLink: Boolean,
  46. required: Boolean,
  47. clickable: Boolean,
  48. titleWidth: String,
  49. customStyle: String,
  50. arrowDirection: String,
  51. useLabelSlot: Boolean,
  52. border: {
  53. type: Boolean,
  54. value: true
  55. }
  56. },
  57. methods: {
  58. onClick(event) {
  59. this.$emit('click', event.detail);
  60. this.jumpLink();
  61. }
  62. }
  63. });
  64. export default global['__wxComponents']['vant/cell/index']
  65. </script>
  66. <style platform="mp-weixin">
  67. @import '../common/index.css';.van-cell{position:relative;display:-webkit-flex;display:flex;width:100%;padding:10px 15px;font-size:14px;line-height:24px;color:#333;background-color:#fff;box-sizing:border-box}.van-cell:after{content:" ";position:absolute;pointer-events:none;box-sizing:border-box;-webkit-transform-origin:center;transform-origin:center;top:auto;left:15px;right:0;bottom:0;-webkit-transform:scaleY(.5);transform:scaleY(.5);border-bottom:1px solid #eee}.van-cell--borderless:after{display:none}.van-cell-group{background-color:#fff}.van-cell__label{margin-top:3px;font-size:12px;line-height:18px;color:#999}.van-cell__value{overflow:hidden;color:#999;text-align:right;vertical-align:middle}.van-cell__title,.van-cell__value{-webkit-flex:1;flex:1}.van-cell__title:empty,.van-cell__value:empty{display:none}.van-cell__left-icon-wrap,.van-cell__right-icon-wrap{display:-webkit-flex;display:flex;height:24px;font-size:16px;-webkit-align-items:center;align-items:center}.van-cell__left-icon-wrap{margin-right:5px}.van-cell__right-icon-wrap{margin-left:5px;color:#999}.van-cell__left-icon{line-height:24px;vertical-align:middle}.van-cell__right-icon{line-height:24px}.van-cell--clickable.van-cell--hover{background-color:#f2f3f5}.van-cell--required{overflow:visible}.van-cell--required:before{position:absolute;left:7px;font-size:14px;color:#f44;content:"*"}.van-cell--center{-webkit-align-items:center;align-items:center}.van-cell--large{padding-top:12px;padding-bottom:12px}.van-cell--large .van-cell__title{font-size:16px}.van-cell--large .van-cell__label{font-size:14px}
  68. </style>