[Improvement] Field: add button slot (#772)
This commit is contained in:
@@ -1,17 +1,14 @@
|
||||
<template>
|
||||
<cell
|
||||
:title="label"
|
||||
:center="center"
|
||||
:required="required"
|
||||
class="van-field"
|
||||
:class="{
|
||||
'van-field--has-textarea': type === 'textarea',
|
||||
'van-field--nolabel': !label,
|
||||
'van-field--disabled': $attrs.disabled,
|
||||
'van-field--error': error,
|
||||
'van-field--border': border,
|
||||
'van-field--autosize': autosize,
|
||||
'van-field--has-icon': hasIcon,
|
||||
'van-hairline--surround': border
|
||||
'van-field--min-height': type === 'textarea' && !autosize,
|
||||
'van-field--has-icon': hasIcon
|
||||
}"
|
||||
>
|
||||
<textarea
|
||||
@@ -45,6 +42,9 @@
|
||||
<icon :name="icon" />
|
||||
</slot>
|
||||
</div>
|
||||
<div class="van-field__button" v-if="$slots.button" slot="extra">
|
||||
<slot name="button" />
|
||||
</div>
|
||||
</cell>
|
||||
</template>
|
||||
|
||||
@@ -66,6 +66,7 @@ export default create({
|
||||
icon: String,
|
||||
label: String,
|
||||
error: Boolean,
|
||||
center: Boolean,
|
||||
border: Boolean,
|
||||
required: Boolean,
|
||||
autosize: [Boolean, Object],
|
||||
|
||||
@@ -75,6 +75,10 @@
|
||||
}
|
||||
}
|
||||
|
||||
&--center {
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
&__right-icon {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
|
||||
@@ -1,10 +1,43 @@
|
||||
@import './common/var.css';
|
||||
|
||||
.van-field {
|
||||
width: 100%;
|
||||
|
||||
.van-cell__title {
|
||||
width: 90px;
|
||||
min-width: 90px;
|
||||
}
|
||||
|
||||
.van-cell__value {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
&__control {
|
||||
border: 0;
|
||||
padding: 0;
|
||||
display: block;
|
||||
width: 100%;
|
||||
resize: none;
|
||||
box-sizing: border-box;
|
||||
|
||||
&:disabled {
|
||||
opacity: 1;
|
||||
color: $gray-darker;
|
||||
background-color: transparent;
|
||||
}
|
||||
}
|
||||
|
||||
&__icon {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 50%;
|
||||
padding: 10px 0 10px 10px;
|
||||
transform: translate3d(0, -50%, 0);
|
||||
|
||||
.van-icon {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
|
||||
&__button {
|
||||
padding-left: 10px;
|
||||
}
|
||||
|
||||
&__error-message {
|
||||
@@ -13,23 +46,6 @@
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
&--has-textarea {
|
||||
.van-field__control {
|
||||
min-height: 60px;
|
||||
}
|
||||
}
|
||||
|
||||
&--nolabel {
|
||||
.van-cell__title {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.van-cell__value {
|
||||
width: 100%;
|
||||
padding-left: 0;
|
||||
}
|
||||
}
|
||||
|
||||
&--disabled {
|
||||
.van-field__control {
|
||||
color: $gray-dark;
|
||||
@@ -45,54 +61,15 @@
|
||||
}
|
||||
}
|
||||
|
||||
&--border {
|
||||
&--min-height {
|
||||
.van-field__control {
|
||||
padding-left: 10px;
|
||||
}
|
||||
|
||||
&::after {
|
||||
border-radius: 2px;
|
||||
}
|
||||
}
|
||||
|
||||
&--autosize {
|
||||
.van-field__control {
|
||||
min-height: 0;
|
||||
min-height: 60px;
|
||||
}
|
||||
}
|
||||
|
||||
&--has-icon {
|
||||
.van-field__control {
|
||||
width: 90%;
|
||||
}
|
||||
}
|
||||
|
||||
&__control {
|
||||
border: 0;
|
||||
font-size: 14px;
|
||||
line-height: 24px;
|
||||
height: 24px;
|
||||
padding: 0;
|
||||
display: block;
|
||||
width: 100%;
|
||||
resize: none;
|
||||
|
||||
&:disabled {
|
||||
opacity: 1;
|
||||
color: $gray-darker;
|
||||
background-color: transparent;
|
||||
}
|
||||
}
|
||||
|
||||
&__icon {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 50%;
|
||||
transform: translate3d(0, -50%, 0);
|
||||
padding: 10px;
|
||||
|
||||
.van-icon {
|
||||
display: block;
|
||||
padding-right: 20px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user