From 2ee313ab617dc1f47c0e178fac0f08d90ae77cbf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=99=93=E6=9E=AB?= <45890549+xiaofeng-bm@users.noreply.github.com> Date: Fri, 16 Oct 2020 10:37:35 +0800 Subject: [PATCH] feat(input-number): add input-number component (#368) --- packages/element-plus/index.ts | 3 + .../__tests__/input-number.spec.ts | 32 ++ packages/input-number/index.ts | 5 + packages/input-number/package.json | 12 + packages/input-number/src/index.vue | 304 ++++++++++++++++++ 5 files changed, 356 insertions(+) create mode 100644 packages/input-number/__tests__/input-number.spec.ts create mode 100644 packages/input-number/index.ts create mode 100644 packages/input-number/package.json create mode 100644 packages/input-number/src/index.vue diff --git a/packages/element-plus/index.ts b/packages/element-plus/index.ts index 3653b55980..31454a03a7 100644 --- a/packages/element-plus/index.ts +++ b/packages/element-plus/index.ts @@ -47,6 +47,7 @@ import ElColorPicker from '@element-plus/color-picker' import ElSelect from '@element-plus/select' import ElTimeSelect from '@element-plus/time-select' import ElPagination from '@element-plus/pagination' +import ElInputNumber from '@element-plus/input-number' export { ElAlert, @@ -96,6 +97,7 @@ export { ElSelect, ElTimeSelect, ElPagination, + ElInputNumber, } const install = (app: App): void => { @@ -147,6 +149,7 @@ const install = (app: App): void => { ElSelect(app) ElTimeSelect(app) ElPagination(app) + ElInputNumber(app) } const elementUI = { diff --git a/packages/input-number/__tests__/input-number.spec.ts b/packages/input-number/__tests__/input-number.spec.ts new file mode 100644 index 0000000000..09c81cfd4b --- /dev/null +++ b/packages/input-number/__tests__/input-number.spec.ts @@ -0,0 +1,32 @@ +import { mount } from '@vue/test-utils' +import InputNumber from '../src/index.vue' +import { ref } from 'vue' + +const _mount = options => mount({ + components: { + 'el-input-number': InputNumber, + }, + ...options, +}) +describe('InputNumber.vue', () => { + test('create', async () => { + const wrapper = _mount({ + template: ` + + + `, + setup() { + const num = ref(1) + + return { + num, + } + }, + }) + + const InputNumberElm = wrapper.find('input') + expect(InputNumberElm.exists()).toBe(true) + }) +}) diff --git a/packages/input-number/index.ts b/packages/input-number/index.ts new file mode 100644 index 0000000000..305fdf50a5 --- /dev/null +++ b/packages/input-number/index.ts @@ -0,0 +1,5 @@ +import { App } from 'vue' +import InputNumber from './src/index.vue' +export default (app: App): void => { + app.component(InputNumber.name, InputNumber) +} diff --git a/packages/input-number/package.json b/packages/input-number/package.json new file mode 100644 index 0000000000..72b1029e42 --- /dev/null +++ b/packages/input-number/package.json @@ -0,0 +1,12 @@ +{ + "name": "@element-plus/input-number", + "version": "0.0.0", + "main": "dist/index.js", + "license": "MIT", + "peerDependencies": { + "vue": "^3.0.0" + }, + "devDependencies": { + "@vue/test-utils": "^2.0.0-beta.3" + } +} diff --git a/packages/input-number/src/index.vue b/packages/input-number/src/index.vue new file mode 100644 index 0000000000..77a0111be3 --- /dev/null +++ b/packages/input-number/src/index.vue @@ -0,0 +1,304 @@ + + + + + + + + + $emit('blur', event)" + @focus="event => $emit('focus', event)" + @input="handleInput" + @change="handleInputChange" + /> + + +