InputNumber add prop controls-outside

This commit is contained in:
梁灏 2021-01-15 15:42:38 +08:00
parent b8f4f2a4a3
commit 27adf364c0
3 changed files with 105 additions and 7 deletions

View file

@ -72,6 +72,11 @@
:formatter="value => `${value}%`" :formatter="value => `${value}%`"
:parser="value => value.replace('%', '')"></InputNumber> :parser="value => value.replace('%', '')"></InputNumber>
</div> </div>
<Divider></Divider>
<InputNumber disabled size="large" controls-outside :max="1000" :min="1" v-model="value20"></InputNumber>
<InputNumber size="default" controls-outside :max="1000" :min="1" v-model="value20"></InputNumber>
<InputNumber size="small" controls-outside :max="1000" :min="1" v-model="value20"></InputNumber>
</div> </div>
</template> </template>
<script> <script>
@ -87,7 +92,8 @@
formatter2: (value) => `${value}%`, formatter2: (value) => `${value}%`,
parser2: (value) => value.replace('%', ''), parser2: (value) => value.replace('%', ''),
value9: 1000, value9: 1000,
value10: 100 value10: 100,
value20: 2
}; };
}, },
methods: { methods: {

View file

@ -1,6 +1,6 @@
<template> <template>
<div :class="wrapClasses"> <div :class="wrapClasses">
<div :class="handlerClasses"> <div :class="handlerClasses" v-if="!controlsOutside">
<a <a
@click="up" @click="up"
:class="upClasses"> :class="upClasses">
@ -12,6 +12,20 @@
<span :class="innerDownClasses" @click="preventDefault"></span> <span :class="innerDownClasses" @click="preventDefault"></span>
</a> </a>
</div> </div>
<div
class="ivu-input-number-controls-outside-btn ivu-input-number-controls-outside-down"
:class="{ 'ivu-input-number-controls-outside-btn-disabled': downDisabled }"
v-if="controlsOutside"
@click="down">
<i class="ivu-icon ivu-icon-ios-remove"></i>
</div>
<div
class="ivu-input-number-controls-outside-btn ivu-input-number-controls-outside-up"
:class="{ 'ivu-input-number-controls-outside-btn-disabled': upDisabled }"
v-if="controlsOutside"
@click="up">
<i class="ivu-icon ivu-icon-ios-add"></i>
</div>
<div :class="inputWrapClasses"> <div :class="inputWrapClasses">
<input <input
:id="elementId" :id="elementId"
@ -132,6 +146,11 @@
type: String, type: String,
default: '' default: ''
}, },
// 4.5.0
controlsOutside: {
type: Boolean,
default: false
}
}, },
data () { data () {
return { return {
@ -148,7 +167,8 @@
{ {
[`${prefixCls}-${this.size}`]: !!this.size, [`${prefixCls}-${this.size}`]: !!this.size,
[`${prefixCls}-disabled`]: this.itemDisabled, [`${prefixCls}-disabled`]: this.itemDisabled,
[`${prefixCls}-focused`]: this.focused [`${prefixCls}-focused`]: this.focused,
[`${prefixCls}-controls-outside`]: this.controlsOutside
} }
]; ];
}, },

View file

@ -188,6 +188,78 @@
.handler-disabled(); .handler-disabled();
} }
} }
&-controls-outside{
width: 80px + 32px * 2;
padding: 0 32px;
.@{input-number-prefix-cls}-input{
border-radius: 0;
}
&-btn{
display: inline-block;
width: 32px;
height: 32px;
line-height: 30px;
position: absolute;
top: 0;
text-align: center;
background-color: @input-group-bg;
color: @input-color;
cursor: pointer;
i{
font-size: 16px;
}
&:hover i{
color: @primary-color;
}
&-disabled, &-disabled:hover{
cursor: @cursor-disabled;
i{
color: #ccc;
}
}
}
&-up{
right: 0;
border-left: 1px solid @input-border-color;
}
&-down{
left: 0;
border-right: 1px solid @input-border-color;
}
}
&-disabled&-controls-outside{
.@{input-number-prefix-cls}-controls-outside-btn{
cursor: @cursor-disabled;
i{
color: #ccc;
}
}
}
&-large&-controls-outside{
width: 80px + 40px *2;
padding: 0 40px;
.@{input-number-prefix-cls}-controls-outside-btn{
width: 40px;
height: 40px;
line-height: 38px;
i{
font-size: 20px;
}
}
}
&-small&-controls-outside{
width: 80px + 24px *2;
padding: 0 24px;
.@{input-number-prefix-cls}-controls-outside-btn{
width: 24px;
height: 24px;
line-height: 22px;
i{
font-size: 14px;
}
}
}
} }
.@{form-item-prefix-cls}-error { .@{form-item-prefix-cls}-error {