diff --git a/packages/element-plus/index.ts b/packages/element-plus/index.ts
index 2cd9fb24ec..7784395ea6 100644
--- a/packages/element-plus/index.ts
+++ b/packages/element-plus/index.ts
@@ -1,12 +1,14 @@
import type { App } from 'vue'
import ElButton from '@element-plus/button'
import ElBadge from '@element-plus/badge'
+import ElTag from '@element-plus/tag'
export {
- ElButton, ElBadge,
+ ElButton, ElBadge, ElTag
}
export default function install(app: App) {
ElButton(app)
ElBadge(app)
+ ElTag(app)
}
diff --git a/packages/tag/__tests__/tag.spec.ts b/packages/tag/__tests__/tag.spec.ts
new file mode 100644
index 0000000000..1bf64b4220
--- /dev/null
+++ b/packages/tag/__tests__/tag.spec.ts
@@ -0,0 +1,85 @@
+import {mount} from '@vue/test-utils'
+import Tag from '../src/index.vue'
+
+const AXIOM = 'Rem is the best girl'
+
+describe('Tag.vue', () => {
+ test('render text & class', () => {
+ const instance = mount(Tag, {
+ slots: {
+ default: AXIOM
+ },
+ })
+ expect(instance.text()).toEqual(AXIOM)
+
+ const vm = instance.vm;
+
+ expect(vm.$el.classList.contains('el-tag')).toEqual(true);
+ expect(vm.$el.classList.contains('el-tag__close')).toEqual(false);
+ expect(vm.$el.classList.contains('is-hit')).toEqual(false);
+ expect(vm.$el.classList.contains('md-fade-center')).toEqual(false);
+ })
+
+ test('type', () => {
+ const instance = mount(Tag, {
+ props: {
+ type: 'primary'
+ },
+ })
+ const vm = instance.vm;
+ expect(vm.$el.classList.contains('el-tag--primary')).toEqual(true);
+ })
+
+ test('hit', () => {
+ const instance = mount(Tag, {
+ props: {
+ hit: true
+ },
+ })
+ const vm = instance.vm;
+ expect(vm.$el.classList.contains('is-hit')).toEqual(true);
+ })
+
+ test('closeable', () => {
+ const instance = mount(Tag, {
+ props: {
+ closable: true,
+ },
+ })
+ const closeBtn = instance.find('.el-tag .el-tag__close');
+ expect(closeBtn.exists()).toBe(true);
+ })
+
+ test('closeTransition', () => {
+ const instance = mount(Tag, {
+ props: {
+ closeTransition: true,
+ },
+ })
+ const vm = instance.vm;
+ expect(vm.$el.classList.contains('md-fade-center')).toEqual(false);
+ })
+
+ test('color', () => {
+ const instance = mount(Tag, {
+ props: {
+ color: 'rgb(0, 0, 0)',
+ },
+ })
+ const vm = instance.vm;
+ expect(vm.$el.style.backgroundColor).toEqual('rgb(0, 0, 0)');
+ })
+
+ test('theme', () => {
+ const instance = mount(Tag, {
+ props: {
+ effect: 'dark',
+ },
+ })
+ const vm = instance.vm;
+ const el = vm.$el;
+ expect(el.className.indexOf('el-tag--dark') > -1).toEqual(true);
+ expect(el.className.indexOf('el-tag--light') > -1).toEqual(false);
+ expect(el.className.indexOf('el-tag--plain') > -1).toEqual(false);
+ })
+})
\ No newline at end of file
diff --git a/packages/tag/doc/basic.vue b/packages/tag/doc/basic.vue
new file mode 100644
index 0000000000..b5007afe0c
--- /dev/null
+++ b/packages/tag/doc/basic.vue
@@ -0,0 +1,48 @@
+
+