index.vue 1.23 KB
<template>
  <view class="zui-icon" :class="classRender" :style="styleRender">
    <view v-if="info || dot" class="zui-info" :class="dot ? 'dot' : ''">{{ dot ? '' : info }}</view>
  </view>
</template>

<script>
export default {
  name: 'zui-icon',
  props: {
    name: {
      type: String,
      default: '',
    },
    fontFamily: {
      type: String,
      default: 'iconfont',
    },
    classPrefix: {
      type: String,
      default: 'icon-'
    },
    size: String,
    color: String,
    info: [Number, String],
    dot: Boolean,
  },
  computed: {
    classRender: function() {
      var fontFamily = this.fontFamily || '';
      var iconClass = this.classPrefix + this.name;
      var parentClass = '';
      if (this.$options && this.$options.propsData && this.$options.propsData.className) {
        parentClass = this.$options.propsData.className;
      }
      return [fontFamily, iconClass, parentClass].join(' ');
    },
    styleRender: function() {
      return `
        ${this.size ? `font-size: ${this.size};` : ''}
        ${this.size ? `height: ${this.size}; width: ${this.size};` : ''}
        ${this.color ? `color: ${this.color};` : ''}
      `.trim();
    },
  },
}
</script>

<style lang="scss">
@import "./index.scss";
</style>