first
This commit is contained in:
8
packages/alert/index.js
Normal file
8
packages/alert/index.js
Normal file
@@ -0,0 +1,8 @@
|
||||
import Alert from './src/main';
|
||||
|
||||
/* istanbul ignore next */
|
||||
Alert.install = function(Vue) {
|
||||
Vue.component(Alert.name, Alert);
|
||||
};
|
||||
|
||||
export default Alert;
|
94
packages/alert/src/main.vue
Normal file
94
packages/alert/src/main.vue
Normal file
@@ -0,0 +1,94 @@
|
||||
<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>
|
Reference in New Issue
Block a user