diff --git a/.storybook/preview.js b/.storybook/preview.js index f0278a3744..8a08259bf8 100644 --- a/.storybook/preview.js +++ b/.storybook/preview.js @@ -22,10 +22,18 @@ const Wrapper = (template) => { * @param {Story} content * @return {HTMLElement} */ -function CustomDecorator(content) { - const { template, installer } = content(); - const app = createApp(Wrapper(template)); - installer(app); +function CustomDecorator(content, context) { + const templateOrComponent = content(); + const app = typeof templateOrComponent === 'string' + ? createApp(Wrapper(templateOrComponent)) + : createApp(templateOrComponent) + + const installers = context?.parameters?.component + if (Array.isArray(installers)) { + installers.forEach(installer => installer(app)) + } else { + installers?.(app) + } const entry = document.createElement('div'); entry.className = 'element-plus-previewer'; app.mount(entry); diff --git a/packages/badge/__tests__/badge.spec.ts b/packages/badge/__tests__/badge.spec.ts new file mode 100644 index 0000000000..9795d6c7f6 --- /dev/null +++ b/packages/badge/__tests__/badge.spec.ts @@ -0,0 +1,15 @@ +import {mount} from '@vue/test-utils' +import Badge from '../src/index.vue' + +const AXIOM = 'Rem is the best girl' + +describe('Badge.vue', () => { + test('render test', () => { + const instance = mount(Badge, { + slots: { + default: AXIOM + }, + }) + expect(instance.text()).toEqual(AXIOM) + }) +}) diff --git a/packages/badge/doc/basic.vue b/packages/badge/doc/basic.vue new file mode 100644 index 0000000000..7ee68db537 --- /dev/null +++ b/packages/badge/doc/basic.vue @@ -0,0 +1,21 @@ + + + diff --git a/packages/badge/doc/index.stories.ts b/packages/badge/doc/index.stories.ts new file mode 100644 index 0000000000..bc9d758ebe --- /dev/null +++ b/packages/badge/doc/index.stories.ts @@ -0,0 +1,10 @@ +import Basic from './basic.vue' +import ElBadge from '../index' +import ElButton from '@element-plus/button' + +export default { + title: "Badge", + component: [ElButton, ElBadge] +} + +export const BasicUsage = () => Basic diff --git a/packages/badge/index.ts b/packages/badge/index.ts new file mode 100644 index 0000000000..53a4a6ef3a --- /dev/null +++ b/packages/badge/index.ts @@ -0,0 +1,5 @@ +import { App } from 'vue' +import Badge from './src/index.vue' +export default (app: App) => { + app.component(Badge.name, Badge) +} diff --git a/packages/badge/package.json b/packages/badge/package.json new file mode 100644 index 0000000000..6bcb5dde23 --- /dev/null +++ b/packages/badge/package.json @@ -0,0 +1,13 @@ +{ + "name": "@element-plus/badge", + "version": "0.0.0", + "main": "dist/index.js", + "license": "MIT", + "peerDependencies": { + "vue": "^3.0.0-rc.1" + }, + "devDependencies": { + "@element-plus/button": "^0.0.0", + "@vue/test-utils": "^2.0.0-beta.0" + } +} diff --git a/packages/badge/src/index.vue b/packages/badge/src/index.vue new file mode 100644 index 0000000000..c83e1401cb --- /dev/null +++ b/packages/badge/src/index.vue @@ -0,0 +1,54 @@ + + + diff --git a/packages/button/doc/index.stories.ts b/packages/button/doc/index.stories.ts index e0389e5aa8..92d9ecbc71 100644 --- a/packages/button/doc/index.stories.ts +++ b/packages/button/doc/index.stories.ts @@ -2,11 +2,8 @@ import ElButton from '../index'; export default { title: 'Button', + component: ElButton, }; -export const NormalButton = () => { - return { template: 'With Text', installer: ElButton }; -}; -export const ButtonTwo = () => { - return { template: 'button two', installer: ElButton }; -}; +export const NormalButton = () => 'With Text' +export const ButtonTwo = () => 'button two'