Skip to content

Commit 2a47de6

Browse files
committed
refactor: input-number
1 parent 384ea35 commit 2a47de6

23 files changed

+1810
-1075
lines changed

components/_util/isValidValue.ts

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
export default function (val: any) {
2+
return val !== undefined && val !== null;
3+
}

components/input-number/__tests__/__snapshots__/demo.test.js.snap

+136-19
Large diffs are not rendered by default.

components/input-number/__tests__/index.test.js

-2
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,6 @@ describe('InputNumber', () => {
2222
);
2323
wrapper.find('input').element.value = '';
2424
wrapper.find('input').trigger('input');
25-
expect(onChange).toHaveBeenLastCalledWith('');
26-
wrapper.find('input').trigger('blur');
2725
expect(onChange).toHaveBeenLastCalledWith(null);
2826
});
2927
});
+64
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
<docs>
2+
---
3+
order: 2
4+
title:
5+
zh-CN: 前置/后置标签
6+
en-US: Pre / Post tab
7+
---
8+
9+
## zh-CN
10+
11+
用于配置一些固定组合。
12+
13+
## en-US
14+
15+
Using pre & post tabs example.
16+
17+
</docs>
18+
19+
<template>
20+
<a-space direction="vertical">
21+
<a-input-number v-model:value="value1" addon-before="+" addon-after="$"></a-input-number>
22+
<a-input-number v-model:value="value2">
23+
<template #addonBefore>
24+
<a-select v-model:value="addonBeforeValue" style="width: 60px">
25+
<a-select-option value="add">+</a-select-option>
26+
<a-select-option value="minus">-</a-select-option>
27+
</a-select>
28+
</template>
29+
<template #addonAfter>
30+
<a-select v-model:value="addonAfterValue" style="width: 60px">
31+
<a-select-option value="USD">$</a-select-option>
32+
<a-select-option value="EUR">€</a-select-option>
33+
<a-select-option value="GBP">£</a-select-option>
34+
<a-select-option value="CNY">¥</a-select-option>
35+
</a-select>
36+
</template>
37+
</a-input-number>
38+
<a-input-number v-model:value="value3">
39+
<template #addonAfter><SettingOutlined /></template>
40+
</a-input-number>
41+
<a-input-number v-model:value="value4">
42+
<template #addonAfter>
43+
<a-cascader placeholder="cascader" style="width: 150px" />
44+
</template>
45+
</a-input-number>
46+
</a-space>
47+
</template>
48+
<script lang="ts">
49+
import { defineComponent, ref } from 'vue';
50+
import { SettingOutlined } from '@ant-design/icons-vue';
51+
export default defineComponent({
52+
components: { SettingOutlined },
53+
setup() {
54+
return {
55+
value1: ref(100),
56+
value2: ref(100),
57+
value3: ref(100),
58+
value4: ref(100),
59+
addonBeforeValue: ref('add'),
60+
addonAfterValue: ref('USD'),
61+
};
62+
},
63+
});
64+
</script>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
<docs>
2+
---
3+
order: 6
4+
title:
5+
zh-CN: 无边框
6+
en-US: Borderless
7+
---
8+
9+
## zh-CN
10+
11+
没有边框。
12+
13+
## en-US
14+
15+
No border.
16+
17+
</docs>
18+
19+
<template>
20+
<div>
21+
<a-input-number id="inputNumber" v-model:value="value" :bordered="false" :min="1" :max="10" />
22+
</div>
23+
</template>
24+
<script lang="ts">
25+
import { defineComponent, ref } from 'vue';
26+
export default defineComponent({
27+
setup() {
28+
const value = ref<number>(3);
29+
30+
return {
31+
value,
32+
};
33+
},
34+
});
35+
</script>

components/input-number/demo/digit.vue

+16-7
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,38 @@
11
<docs>
22
---
3-
order: 0
3+
order: 3
44
title:
5-
zh-CN: 小数
6-
en-US: Decimals
5+
zh-CN: 高精度小数
6+
en-US: High precision decimals
77
---
88

99
## zh-CN
1010

11-
和原生的数字输入框一样,value 的精度由 step 的小数位数决定。
11+
通过 `stringMode` 开启高精度小数支持,`change` 事件将返回 string 类型。
12+
对于旧版浏览器,你需要 BigInt polyfill。
1213

1314
## en-US
1415

15-
A numeric-only input box whose values can be increased or decreased using a decimal step. The number of decimals (also known as precision) is determined by the step prop.
16+
Use `stringMode` to support high precision decimals support.
17+
`change` will return string value instead. You need polyfill of BigInt if browser not support.
1618

1719
</docs>
1820

1921
<template>
20-
<a-input-number v-model:value="value" :min="0" :max="10" :step="0.1" />
22+
<a-input-number
23+
v-model:value="value"
24+
style="width: 200px"
25+
:min="0"
26+
:max="10"
27+
:step="0.00000000000001"
28+
string-mode
29+
/>
2130
</template>
2231
<script lang="ts">
2332
import { defineComponent, ref } from 'vue';
2433
export default defineComponent({
2534
setup() {
26-
const value = ref<number>();
35+
const value = ref<string>('1');
2736
2837
return {
2938
value,

components/input-number/demo/index.vue

+12-1
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,14 @@
11
<template>
22
<demo-sort>
33
<basic />
4+
<addonVue />
45
<size />
56
<disabled />
67
<digit />
78
<formatter />
9+
<keyboardVue />
10+
<outOfRangeVue />
11+
<borderlessVue />
812
</demo-sort>
913
</template>
1014
<script lang="ts">
@@ -13,7 +17,10 @@ import Disabled from './disabled.vue';
1317
import Digit from './digit.vue';
1418
import Formatter from './formatter.vue';
1519
import Size from './size.vue';
16-
20+
import addonVue from './addon.vue';
21+
import borderlessVue from './borderless.vue';
22+
import keyboardVue from './keyboard.vue';
23+
import outOfRangeVue from './out-of-range.vue';
1724
import CN from '../index.zh-CN.md';
1825
import US from '../index.en-US.md';
1926
import { defineComponent } from 'vue';
@@ -27,6 +34,10 @@ export default defineComponent({
2734
Digit,
2835
Formatter,
2936
Size,
37+
addonVue,
38+
borderlessVue,
39+
keyboardVue,
40+
outOfRangeVue,
3041
},
3142
});
3243
</script>
+36
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
<docs>
2+
---
3+
order: 5
4+
title:
5+
zh-CN: 键盘行为
6+
en-US: Keyboard
7+
---
8+
9+
## zh-CN
10+
11+
使用 `keyboard` 属性可以控制键盘行为。
12+
13+
## en-US
14+
15+
Control keyboard behavior by `keyboard`.
16+
</docs>
17+
18+
<template>
19+
<a-space>
20+
<a-input-number v-model:value="value" :keyboard="keyboard" :min="1" :max="10" />
21+
<a-checkbox v-model:checked="keyboard">Toggle keyboard</a-checkbox>
22+
</a-space>
23+
</template>
24+
<script lang="ts">
25+
import { defineComponent, ref } from 'vue';
26+
export default defineComponent({
27+
setup() {
28+
const value = ref<number>(3);
29+
30+
return {
31+
value,
32+
keyboard: ref(true),
33+
};
34+
},
35+
});
36+
</script>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
<docs>
2+
---
3+
order: 6
4+
title:
5+
zh-CN: 超出边界
6+
en-US: Out of range
7+
---
8+
9+
## zh-CN
10+
11+
当通过受控将 `value` 超出边界时,提供警告样式。
12+
13+
## en-US
14+
15+
Show warning style when `value` is out of range by control.
16+
17+
</docs>
18+
19+
<template>
20+
<a-space>
21+
<a-input-number v-model:value="value" :min="1" :max="10" />
22+
<a-button type="primary" @click="value = 99">Reset</a-button>
23+
</a-space>
24+
</template>
25+
<script lang="ts">
26+
import { defineComponent, ref } from 'vue';
27+
export default defineComponent({
28+
setup() {
29+
const value = ref<number>(99);
30+
31+
return {
32+
value,
33+
};
34+
},
35+
});
36+
</script>

0 commit comments

Comments
 (0)