• element alert源码


    <template>
      <transition name="el-alert-fade">
        <div
          class="el-alert"
          :class="[typeClass, center ? 'is-center' : '', 'is-' + effect]"
          v-show="visible"
          role="alert"
        >
          <i class="el-alert__icon" :class="[ iconClass, isBigIcon ]" v-if="showIcon"></i>
          <div class="el-alert__content">
            <span class="el-alert__title" :class="[ isBoldTitle ]" v-if="title || $slots.title">
              <slot name="title">{{ title }}</slot>
            </span>
            <p class="el-alert__description" v-if="$slots.default && !description"><slot></slot></p>
            <p class="el-alert__description" v-if="description && !$slots.default">{{ description }}</p>
            <i class="el-alert__closebtn" :class="{ 'is-customed': closeText !== '', 'el-icon-close': closeText === '' }" v-show="closable" @click="close()">{{closeText}}</i>
          </div>
        </div>
      </transition>
    </template>
    
    <script type="text/babel">
      const TYPE_CLASSES_MAP = {
        'success': 'el-icon-success',
        'warning': 'el-icon-warning',
        'error': 'el-icon-error'
      };
      export default {
        name: 'ElAlert',
    
        props: {
          title: {
            type: String,
            default: ''
          },
          description: {
            type: String,
            default: ''
          },
          type: {
            type: String,
            default: 'info'
          },
          closable: {
            type: Boolean,
            default: true
          },
          closeText: {
            type: String,
            default: ''
          },
          showIcon: Boolean,
          center: Boolean,
          effect: {
            type: String,
            default: 'light',
            validator: function(value) {
              return ['light', 'dark'].indexOf(value) !== -1;
            }
          }
        },
    
        data() {
          return {
            visible: true
          };
        },
    
        methods: {
          close() {
            this.visible = false;
            this.$emit('close');
          }
        },
    
        computed: {
          typeClass() {
            return `el-alert--${ this.type }`;
          },
    
          iconClass() {
            return TYPE_CLASSES_MAP[this.type] || 'el-icon-info';
          },
    
          isBigIcon() {
            return this.description || this.$slots.default ? 'is-big' : '';
          },
    
          isBoldTitle() {
            return this.description || this.$slots.default ? 'is-bold' : '';
          }
        }
      };
    </script>
  • 相关阅读:
    一周总结
    [z]OpenGL Wiki
    [Z]OpenCL Data Parallel Primitives Library
    [z]苹果用OpenCL实现的Parallel Prefix Sum
    指定VC中std::sort的比较函数时发生"invalid operator<"错误原因
    [z]FNV哈希算法
    [z]NViDIA用OpenCL实现的很多基础并行算法
    [z]一个基于CUDA的基础并行算法库
    [z]一个讲解很多OpenGL中基本概念的网站
    [Z]Marching Cubes的实现
  • 原文地址:https://www.cnblogs.com/wsk1576025821/p/10912899.html
Copyright © 2020-2023  润新知