diff --git a/packages/element-plus/index.ts b/packages/element-plus/index.ts index ae3ca78d6d..03d121a419 100644 --- a/packages/element-plus/index.ts +++ b/packages/element-plus/index.ts @@ -16,6 +16,7 @@ import ElRate from '@element-plus/rate' import ElSwitch from '@element-plus/switch' import ElContainer from '@element-plus/container' import ElNotification from '@element-plus/notification' +import ElPageHeader from '@element-plus/page-header' export { ElAvatar, @@ -35,6 +36,7 @@ export { ElSwitch, ElContainer, ElNotification, + ElPageHeader, } export default function install(app: App): void { @@ -55,4 +57,5 @@ export default function install(app: App): void { ElSwitch(app) ElContainer(app) ElNotification(app) + ElPageHeader(app) } diff --git a/packages/page-header/__tests__/page-header.spec.ts b/packages/page-header/__tests__/page-header.spec.ts new file mode 100644 index 0000000000..e33872d80b --- /dev/null +++ b/packages/page-header/__tests__/page-header.spec.ts @@ -0,0 +1,43 @@ +import { mount } from '@vue/test-utils' +import PageHeader from '../src/index.vue' + +const AXIOM = 'Rem is the best girl' + +describe('PageHeader.vue', () => { + test('render test', () => { + const wrapper = mount(PageHeader, { + props: { content: AXIOM }, + }) + expect(wrapper.find('.el-page-header__content').text()).toEqual(AXIOM) + }) + + test('slot content', () => { + const wrapper = mount(PageHeader, { + slots: { content: AXIOM }, + }) + expect(wrapper.find('.el-page-header__content').text()).toEqual(AXIOM) + }) + + test('prop title', () => { + const wrapper = mount(PageHeader, { + props: { title: AXIOM }, + }) + expect(wrapper.find('.el-page-header__title').text()).toEqual(AXIOM) + }) + + test('slot prop', () => { + const wrapper = mount(PageHeader, { + slots: { title: AXIOM }, + }) + expect(wrapper.find('.el-page-header__title').text()).toEqual(AXIOM) + }) + + test('event back', async () => { + const wrapper = mount(PageHeader, { + props: { content: AXIOM }, + }) + + await wrapper.find('.el-icon-back').trigger('click') + expect(wrapper.emitted('back')).toBeDefined() + }) +}) diff --git a/packages/page-header/doc/basic.vue b/packages/page-header/doc/basic.vue new file mode 100644 index 0000000000..ea5678480f --- /dev/null +++ b/packages/page-header/doc/basic.vue @@ -0,0 +1,13 @@ + + + diff --git a/packages/page-header/doc/index.stories.ts b/packages/page-header/doc/index.stories.ts new file mode 100644 index 0000000000..8d1326d9db --- /dev/null +++ b/packages/page-header/doc/index.stories.ts @@ -0,0 +1,6 @@ +export default { + title: 'PageHeader', +} + +export { default as BasicUsage } from './basic.vue' + diff --git a/packages/page-header/index.ts b/packages/page-header/index.ts new file mode 100644 index 0000000000..4534516143 --- /dev/null +++ b/packages/page-header/index.ts @@ -0,0 +1,5 @@ +import { App } from 'vue' +import PageHeader from './src/index.vue' +export default (app: App): void => { + app.component(PageHeader.name, PageHeader) +} diff --git a/packages/page-header/package.json b/packages/page-header/package.json new file mode 100644 index 0000000000..77725262e4 --- /dev/null +++ b/packages/page-header/package.json @@ -0,0 +1,12 @@ +{ + "name": "@element-plus/page-header", + "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/page-header/src/index.vue b/packages/page-header/src/index.vue new file mode 100644 index 0000000000..f5b5cdc2da --- /dev/null +++ b/packages/page-header/src/index.vue @@ -0,0 +1,41 @@ + + +