diff --git a/packages/element-plus/index.ts b/packages/element-plus/index.ts
index 90645818c9..99e5675706 100644
--- a/packages/element-plus/index.ts
+++ b/packages/element-plus/index.ts
@@ -10,6 +10,7 @@ import ElTimeLine from '@element-plus/time-line'
import ElProgress from '@element-plus/progress'
import ElBreadcrumb from '@element-plus/breadcrumb'
import ElIcon from '@element-plus/icon'
+import ElLink from '@element-plus/link'
export {
ElAvatar,
@@ -23,6 +24,7 @@ export {
ElProgress,
ElBreadcrumb,
ElIcon,
+ ElLink,
}
export default function install(app: App): void {
@@ -37,4 +39,5 @@ export default function install(app: App): void {
ElProgress(app)
ElBreadcrumb(app)
ElIcon(app)
+ ElLink(app)
}
diff --git a/packages/element-plus/package.json b/packages/element-plus/package.json
index 94d61ac221..f303977a2f 100644
--- a/packages/element-plus/package.json
+++ b/packages/element-plus/package.json
@@ -17,13 +17,14 @@
"@element-plus/avatar": "^0.0.0",
"@element-plus/badge": "^0.0.0",
"@element-plus/button": "^0.0.0",
- "@element-plus/layout": "^0.0.0",
- "@element-plus/card": "^0.0.0",
- "@element-plus/tag": "^0.0.0",
- "@element-plus/time-line": "^0.0.0",
- "@element-plus/divider": "^0.0.0",
- "@element-plus/progress": "^0.0.0",
"@element-plus/breadcrumb": "^0.0.0",
- "@element-plus/icon": "^0.0.0"
+ "@element-plus/card": "^0.0.0",
+ "@element-plus/divider": "^0.0.0",
+ "@element-plus/icon": "^0.0.0",
+ "@element-plus/layout": "^0.0.0",
+ "@element-plus/link": "^0.0.0",
+ "@element-plus/progress": "^0.0.0",
+ "@element-plus/tag": "^0.0.0",
+ "@element-plus/time-line": "^0.0.0"
}
}
diff --git a/packages/link/__tests__/link.spec.ts b/packages/link/__tests__/link.spec.ts
new file mode 100644
index 0000000000..5117b413d2
--- /dev/null
+++ b/packages/link/__tests__/link.spec.ts
@@ -0,0 +1,49 @@
+import { mount } from '@vue/test-utils'
+import Link from '../src/index.vue'
+
+const AXIOM = 'Rem is the best girl'
+
+describe('Link.vue', () => {
+ test('render test', () => {
+ const wrapper = mount(Link, {
+ slots: {
+ default: AXIOM,
+ },
+ })
+ expect(wrapper.text()).toEqual(AXIOM)
+ })
+
+ test('it should handle click event when href were given and is not disabled', async () => {
+ const href = 'https://target.com'
+ const wrapper = mount(Link, {
+ slots: {
+ default: AXIOM,
+ },
+ props: {
+ href,
+ },
+ })
+
+ await wrapper.find('.el-link').trigger('click')
+ expect(wrapper.emitted('click')).toHaveLength(1)
+ })
+
+ test('it should disable click when it\'s disabled', async () => {
+ const href = 'https://target.com'
+ const wrapper = mount(Link, {
+ slots: {
+ default: AXIOM,
+ },
+ props: {
+ href,
+ disabled: true,
+ },
+ })
+
+ await wrapper.find('.el-link').trigger('click')
+ expect(wrapper.emitted('click')).toBeUndefined()
+ })
+
+
+
+})
diff --git a/packages/link/doc/index.stories.ts b/packages/link/doc/index.stories.ts
new file mode 100644
index 0000000000..157a7a66cb
--- /dev/null
+++ b/packages/link/doc/index.stories.ts
@@ -0,0 +1,20 @@
+import ElLink from '../index'
+
+export default {
+ title: 'Link',
+}
+
+const commonProps = 'href="https://vuejs.org" target="_blank" rel="noreferrer noopener" style="margin-right: 10px;"'
+
+export const BasicLinks = () => `
+normal link
+primary link
+success link
+info link
+warning link
+error link
+`
+
+export const DisabledLinks = () => `
+disabled link
+`
diff --git a/packages/link/index.ts b/packages/link/index.ts
new file mode 100644
index 0000000000..31896ba8e7
--- /dev/null
+++ b/packages/link/index.ts
@@ -0,0 +1,9 @@
+import { App } from 'vue'
+import Link from './src/index.vue'
+export default (app: App): void => {
+ app.component(Link.name, Link)
+}
+
+export {
+ Link,
+}
diff --git a/packages/link/package.json b/packages/link/package.json
new file mode 100644
index 0000000000..35d102a65e
--- /dev/null
+++ b/packages/link/package.json
@@ -0,0 +1,12 @@
+{
+ "name": "@element-plus/link",
+ "version": "0.0.0",
+ "main": "dist/index.js",
+ "license": "MIT",
+ "peerDependencies": {
+ "vue": "^3.0.0-rc.1"
+ },
+ "devDependencies": {
+ "@vue/test-utils": "^2.0.0-beta.0"
+ }
+}
diff --git a/packages/link/src/index.vue b/packages/link/src/index.vue
new file mode 100644
index 0000000000..bd4a572fcc
--- /dev/null
+++ b/packages/link/src/index.vue
@@ -0,0 +1,61 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+