feat(AddressEdit): refactor style (#5117)

This commit is contained in:
rex 2019-11-26 20:44:15 +08:00 committed by neverland
parent 68fef3d72a
commit c58f8e54ba
6 changed files with 329 additions and 248 deletions

View File

@ -17,6 +17,12 @@ export default createComponent({
showSearchResult: Boolean showSearchResult: Boolean
}, },
computed: {
shouldShowSearchResult() {
return this.focused && this.searchResult && this.showSearchResult;
}
},
methods: { methods: {
onSelect(express) { onSelect(express) {
this.$emit('select-search', express); this.$emit('select-search', express);
@ -42,19 +48,30 @@ export default createComponent({
}, },
genSearchResult() { genSearchResult() {
const { searchResult } = this; const { value, shouldShowSearchResult, searchResult } = this;
const show = this.focused && searchResult && this.showSearchResult; if (shouldShowSearchResult) {
if (show) {
return searchResult.map(express => ( return searchResult.map(express => (
<Cell <Cell
key={express.name + express.address} key={express.name + express.address}
title={express.name} class={bem('search-item')}
label={express.address} label={express.address}
border={false}
icon="location-o" icon="location-o"
clickable clickable
onClick={() => { onClick={() => {
this.onSelect(express); this.onSelect(express);
}} }}
scopedSlots={{
title: () =>
express.name && (
<div
domPropsInnerHTML={express.name.replace(
value,
`<span class=${bem('keyword')}>${value}</span>`
)}
/>
)
}}
/> />
)); ));
} }
@ -72,6 +89,7 @@ export default createComponent({
type="textarea" type="textarea"
value={this.value} value={this.value}
error={this.error} error={this.error}
border={!this.shouldShowSearchResult}
label={t('label')} label={t('label')}
maxlength={this.detailMaxlength} maxlength={this.detailMaxlength}
placeholder={t('placeholder')} placeholder={t('placeholder')}

View File

@ -251,6 +251,7 @@ export default createComponent({
return ( return (
<div class={bem()}> <div class={bem()}>
<div class={bem('fields')}>
<Field <Field
vModel={data.name} vModel={data.name}
clearable clearable
@ -273,6 +274,7 @@ export default createComponent({
readonly readonly
label={t('area')} label={t('area')}
placeholder={t('areaPlaceholder')} placeholder={t('areaPlaceholder')}
rightIcon="arrow"
value={this.areaText} value={this.areaText}
onClick={() => { onClick={() => {
this.showAreaPopup = true; this.showAreaPopup = true;
@ -307,8 +309,10 @@ export default createComponent({
/> />
)} )}
{this.slots()} {this.slots()}
</div>
{this.showSetDefault && ( {this.showSetDefault && (
<SwitchCell <SwitchCell
class={bem('default')}
vModel={data.isDefault} vModel={data.isDefault}
vShow={!hideBottomFields} vShow={!hideBottomFields}
title={t('defaultAddress')} title={t('defaultAddress')}
@ -320,6 +324,7 @@ export default createComponent({
<div vShow={!hideBottomFields} class={bem('buttons')}> <div vShow={!hideBottomFields} class={bem('buttons')}>
<Button <Button
block block
round
loading={this.isSaving} loading={this.isSaving}
type="danger" type="danger"
text={this.saveButtonText || t('save')} text={this.saveButtonText || t('save')}
@ -328,6 +333,7 @@ export default createComponent({
{this.showDelete && ( {this.showDelete && (
<Button <Button
block block
round
loading={this.isDeleting} loading={this.isDeleting}
text={this.deleteButtonText || t('delete')} text={this.deleteButtonText || t('delete')}
onClick={this.onDelete} onClick={this.onDelete}

View File

@ -1,6 +1,19 @@
@import '../style/var'; @import '../style/var';
.van-address-edit { .van-address-edit {
padding: @address-edit-padding;
&__fields {
overflow: hidden;
border-radius: @padding-xs;
}
&__default {
margin-top: @padding-sm;
overflow: hidden;
border-radius: @padding-xs;
}
&__buttons { &__buttons {
padding: @address-edit-buttons-padding; padding: @address-edit-buttons-padding;
@ -12,6 +25,14 @@
&-detail { &-detail {
padding: 0; padding: 0;
&__search-item {
background-color: #f2f3f5;
}
&__keyword {
color: @red;
}
&__finish { &__finish {
color: @address-edit-detail-finish-color; color: @address-edit-detail-finish-color;
font-size: @address-edit-detail-finish-font-size; font-size: @address-edit-detail-finish-font-size;

View File

@ -4,6 +4,7 @@ exports[`renders demo correctly 1`] = `
<div> <div>
<div> <div>
<div class="van-address-edit"> <div class="van-address-edit">
<div class="van-address-edit__fields">
<div class="van-cell van-field"> <div class="van-cell van-field">
<div class="van-cell__title van-field__label"><span>姓名</span></div> <div class="van-cell__title van-field__label"><span>姓名</span></div>
<div class="van-cell__value"> <div class="van-cell__value">
@ -19,7 +20,10 @@ exports[`renders demo correctly 1`] = `
<div class="van-cell van-field"> <div class="van-cell van-field">
<div class="van-cell__title van-field__label"><span>地区</span></div> <div class="van-cell__title van-field__label"><span>地区</span></div>
<div class="van-cell__value"> <div class="van-cell__value">
<div class="van-field__body"><input type="text" placeholder="选择省 / 市 / 区" readonly="readonly" class="van-field__control"></div> <div class="van-field__body"><input type="text" placeholder="选择省 / 市 / 区" readonly="readonly" class="van-field__control">
<div class="van-field__right-icon"><i class="van-icon van-icon-arrow">
<!----></i></div>
</div>
</div> </div>
</div> </div>
<div class="van-cell van-address-edit-detail"> <div class="van-cell van-address-edit-detail">
@ -38,7 +42,8 @@ exports[`renders demo correctly 1`] = `
<div class="van-field__body"><input type="tel" placeholder="邮政编码" class="van-field__control"></div> <div class="van-field__body"><input type="tel" placeholder="邮政编码" class="van-field__control"></div>
</div> </div>
</div> </div>
<div class="van-cell van-cell--center van-switch-cell"> </div>
<div class="van-cell van-cell--center van-switch-cell van-address-edit__default">
<div class="van-cell__title"><span>设为默认收货地址</span></div> <div class="van-cell__title"><span>设为默认收货地址</span></div>
<div class="van-cell__value"> <div class="van-cell__value">
<div role="switch" aria-checked="false" class="van-switch" style="font-size: 24px;"> <div role="switch" aria-checked="false" class="van-switch" style="font-size: 24px;">
@ -46,7 +51,7 @@ exports[`renders demo correctly 1`] = `
</div> </div>
</div> </div>
</div> </div>
<div class="van-address-edit__buttons"><button class="van-button van-button--danger van-button--normal van-button--block"><span class="van-button__text">保存</span></button><button class="van-button van-button--default van-button--normal van-button--block"><span class="van-button__text">删除</span></button></div> <div class="van-address-edit__buttons"><button class="van-button van-button--danger van-button--normal van-button--block van-button--round"><span class="van-button__text">保存</span></button><button class="van-button van-button--default van-button--normal van-button--block van-button--round"><span class="van-button__text">删除</span></button></div>
</div> </div>
</div> </div>
</div> </div>

View File

@ -2,6 +2,7 @@
exports[`create a AddressEdit 1`] = ` exports[`create a AddressEdit 1`] = `
<div class="van-address-edit"> <div class="van-address-edit">
<div class="van-address-edit__fields">
<div class="van-cell van-field"> <div class="van-cell van-field">
<div class="van-cell__title van-field__label"><span>姓名</span></div> <div class="van-cell__title van-field__label"><span>姓名</span></div>
<div class="van-cell__value"> <div class="van-cell__value">
@ -17,7 +18,10 @@ exports[`create a AddressEdit 1`] = `
<div class="van-cell van-field"> <div class="van-cell van-field">
<div class="van-cell__title van-field__label"><span>地区</span></div> <div class="van-cell__title van-field__label"><span>地区</span></div>
<div class="van-cell__value"> <div class="van-cell__value">
<div class="van-field__body"><input type="text" placeholder="选择省 / 市 / 区" readonly="readonly" class="van-field__control"></div> <div class="van-field__body"><input type="text" placeholder="选择省 / 市 / 区" readonly="readonly" class="van-field__control">
<div class="van-field__right-icon"><i class="van-icon van-icon-arrow">
<!----></i></div>
</div>
</div> </div>
</div> </div>
<div class="van-cell van-address-edit-detail"> <div class="van-cell van-address-edit-detail">
@ -30,12 +34,14 @@ exports[`create a AddressEdit 1`] = `
</div> </div>
</div> </div>
</div> </div>
<div class="van-address-edit__buttons"><button class="van-button van-button--danger van-button--normal van-button--block"><span class="van-button__text">保存</span></button></div> </div>
<div class="van-address-edit__buttons"><button class="van-button van-button--danger van-button--normal van-button--block van-button--round"><span class="van-button__text">保存</span></button></div>
</div> </div>
`; `;
exports[`create a AddressEdit with props 1`] = ` exports[`create a AddressEdit with props 1`] = `
<div class="van-address-edit"> <div class="van-address-edit">
<div class="van-address-edit__fields">
<div class="van-cell van-field"> <div class="van-cell van-field">
<div class="van-cell__title van-field__label"><span>姓名</span></div> <div class="van-cell__title van-field__label"><span>姓名</span></div>
<div class="van-cell__value"> <div class="van-cell__value">
@ -51,7 +57,10 @@ exports[`create a AddressEdit with props 1`] = `
<div class="van-cell van-field"> <div class="van-cell van-field">
<div class="van-cell__title van-field__label"><span>地区</span></div> <div class="van-cell__title van-field__label"><span>地区</span></div>
<div class="van-cell__value"> <div class="van-cell__value">
<div class="van-field__body"><input type="text" placeholder="选择省 / 市 / 区" readonly="readonly" class="van-field__control"></div> <div class="van-field__body"><input type="text" placeholder="选择省 / 市 / 区" readonly="readonly" class="van-field__control">
<div class="van-field__right-icon"><i class="van-icon van-icon-arrow">
<!----></i></div>
</div>
</div> </div>
</div> </div>
<div class="van-cell van-address-edit-detail"> <div class="van-cell van-address-edit-detail">
@ -70,7 +79,8 @@ exports[`create a AddressEdit with props 1`] = `
<div class="van-field__body"><input type="tel" placeholder="邮政编码" class="van-field__control"></div> <div class="van-field__body"><input type="tel" placeholder="邮政编码" class="van-field__control"></div>
</div> </div>
</div> </div>
<div class="van-cell van-cell--center van-switch-cell"> </div>
<div class="van-cell van-cell--center van-switch-cell van-address-edit__default">
<div class="van-cell__title"><span>设为默认收货地址</span></div> <div class="van-cell__title"><span>设为默认收货地址</span></div>
<div class="van-cell__value"> <div class="van-cell__value">
<div role="switch" aria-checked="true" class="van-switch van-switch--on" style="font-size: 24px;"> <div role="switch" aria-checked="true" class="van-switch van-switch--on" style="font-size: 24px;">
@ -78,12 +88,13 @@ exports[`create a AddressEdit with props 1`] = `
</div> </div>
</div> </div>
</div> </div>
<div class="van-address-edit__buttons"><button class="van-button van-button--danger van-button--normal van-button--block"><span class="van-button__text">保存</span></button></div> <div class="van-address-edit__buttons"><button class="van-button van-button--danger van-button--normal van-button--block van-button--round"><span class="van-button__text">保存</span></button></div>
</div> </div>
`; `;
exports[`set-default 1`] = ` exports[`set-default 1`] = `
<div class="van-address-edit"> <div class="van-address-edit">
<div class="van-address-edit__fields">
<div class="van-cell van-field"> <div class="van-cell van-field">
<div class="van-cell__title van-field__label"><span>姓名</span></div> <div class="van-cell__title van-field__label"><span>姓名</span></div>
<div class="van-cell__value"> <div class="van-cell__value">
@ -99,7 +110,10 @@ exports[`set-default 1`] = `
<div class="van-cell van-field"> <div class="van-cell van-field">
<div class="van-cell__title van-field__label"><span>地区</span></div> <div class="van-cell__title van-field__label"><span>地区</span></div>
<div class="van-cell__value"> <div class="van-cell__value">
<div class="van-field__body"><input type="text" placeholder="选择省 / 市 / 区" readonly="readonly" class="van-field__control"></div> <div class="van-field__body"><input type="text" placeholder="选择省 / 市 / 区" readonly="readonly" class="van-field__control">
<div class="van-field__right-icon"><i class="van-icon van-icon-arrow">
<!----></i></div>
</div>
</div> </div>
</div> </div>
<div class="van-cell van-address-edit-detail"> <div class="van-cell van-address-edit-detail">
@ -118,7 +132,8 @@ exports[`set-default 1`] = `
<div class="van-field__body"><input type="tel" placeholder="邮政编码" class="van-field__control"></div> <div class="van-field__body"><input type="tel" placeholder="邮政编码" class="van-field__control"></div>
</div> </div>
</div> </div>
<div class="van-cell van-cell--center van-switch-cell"> </div>
<div class="van-cell van-cell--center van-switch-cell van-address-edit__default">
<div class="van-cell__title"><span>设为默认收货地址</span></div> <div class="van-cell__title"><span>设为默认收货地址</span></div>
<div class="van-cell__value"> <div class="van-cell__value">
<div role="switch" aria-checked="false" class="van-switch" style="font-size: 24px;"> <div role="switch" aria-checked="false" class="van-switch" style="font-size: 24px;">
@ -126,12 +141,13 @@ exports[`set-default 1`] = `
</div> </div>
</div> </div>
</div> </div>
<div class="van-address-edit__buttons"><button class="van-button van-button--danger van-button--normal van-button--block"><span class="van-button__text">保存</span></button></div> <div class="van-address-edit__buttons"><button class="van-button van-button--danger van-button--normal van-button--block van-button--round"><span class="van-button__text">保存</span></button></div>
</div> </div>
`; `;
exports[`show area component 1`] = ` exports[`show area component 1`] = `
<div class="van-address-edit"> <div class="van-address-edit">
<div class="van-address-edit__fields">
<div class="van-cell van-field"> <div class="van-cell van-field">
<div class="van-cell__title van-field__label"><span>姓名</span></div> <div class="van-cell__title van-field__label"><span>姓名</span></div>
<div class="van-cell__value"> <div class="van-cell__value">
@ -147,7 +163,10 @@ exports[`show area component 1`] = `
<div class="van-cell van-field"> <div class="van-cell van-field">
<div class="van-cell__title van-field__label"><span>地区</span></div> <div class="van-cell__title van-field__label"><span>地区</span></div>
<div class="van-cell__value"> <div class="van-cell__value">
<div class="van-field__body"><input type="text" placeholder="选择省 / 市 / 区" readonly="readonly" class="van-field__control"></div> <div class="van-field__body"><input type="text" placeholder="选择省 / 市 / 区" readonly="readonly" class="van-field__control">
<div class="van-field__right-icon"><i class="van-icon van-icon-arrow">
<!----></i></div>
</div>
</div> </div>
</div> </div>
<div class="van-cell van-address-edit-detail"> <div class="van-cell van-address-edit-detail">
@ -166,7 +185,8 @@ exports[`show area component 1`] = `
<div class="van-field__body"><input type="tel" placeholder="邮政编码" class="van-field__control"></div> <div class="van-field__body"><input type="tel" placeholder="邮政编码" class="van-field__control"></div>
</div> </div>
</div> </div>
<div class="van-cell van-cell--center van-switch-cell"> </div>
<div class="van-cell van-cell--center van-switch-cell van-address-edit__default">
<div class="van-cell__title"><span>设为默认收货地址</span></div> <div class="van-cell__title"><span>设为默认收货地址</span></div>
<div class="van-cell__value"> <div class="van-cell__value">
<div role="switch" aria-checked="true" class="van-switch van-switch--on" style="font-size: 24px;"> <div role="switch" aria-checked="true" class="van-switch van-switch--on" style="font-size: 24px;">
@ -174,12 +194,13 @@ exports[`show area component 1`] = `
</div> </div>
</div> </div>
</div> </div>
<div class="van-address-edit__buttons"><button class="van-button van-button--danger van-button--normal van-button--block"><span class="van-button__text">保存</span></button></div> <div class="van-address-edit__buttons"><button class="van-button van-button--danger van-button--normal van-button--block van-button--round"><span class="van-button__text">保存</span></button></div>
</div> </div>
`; `;
exports[`show area component 2`] = ` exports[`show area component 2`] = `
<div class="van-address-edit"> <div class="van-address-edit">
<div class="van-address-edit__fields">
<div class="van-cell van-field"> <div class="van-cell van-field">
<div class="van-cell__title van-field__label"><span>姓名</span></div> <div class="van-cell__title van-field__label"><span>姓名</span></div>
<div class="van-cell__value"> <div class="van-cell__value">
@ -195,7 +216,10 @@ exports[`show area component 2`] = `
<div class="van-cell van-field"> <div class="van-cell van-field">
<div class="van-cell__title van-field__label"><span>地区</span></div> <div class="van-cell__title van-field__label"><span>地区</span></div>
<div class="van-cell__value"> <div class="van-cell__value">
<div class="van-field__body"><input type="text" placeholder="选择省 / 市 / 区" readonly="readonly" class="van-field__control"></div> <div class="van-field__body"><input type="text" placeholder="选择省 / 市 / 区" readonly="readonly" class="van-field__control">
<div class="van-field__right-icon"><i class="van-icon van-icon-arrow">
<!----></i></div>
</div>
</div> </div>
</div> </div>
<div class="van-cell van-address-edit-detail"> <div class="van-cell van-address-edit-detail">
@ -214,7 +238,8 @@ exports[`show area component 2`] = `
<div class="van-field__body"><input type="tel" placeholder="邮政编码" class="van-field__control"></div> <div class="van-field__body"><input type="tel" placeholder="邮政编码" class="van-field__control"></div>
</div> </div>
</div> </div>
<div class="van-cell van-cell--center van-switch-cell"> </div>
<div class="van-cell van-cell--center van-switch-cell van-address-edit__default">
<div class="van-cell__title"><span>设为默认收货地址</span></div> <div class="van-cell__title"><span>设为默认收货地址</span></div>
<div class="van-cell__value"> <div class="van-cell__value">
<div role="switch" aria-checked="true" class="van-switch van-switch--on" style="font-size: 24px;"> <div role="switch" aria-checked="true" class="van-switch van-switch--on" style="font-size: 24px;">
@ -222,12 +247,13 @@ exports[`show area component 2`] = `
</div> </div>
</div> </div>
</div> </div>
<div class="van-address-edit__buttons"><button class="van-button van-button--danger van-button--normal van-button--block"><span class="van-button__text">保存</span></button></div> <div class="van-address-edit__buttons"><button class="van-button van-button--danger van-button--normal van-button--block van-button--round"><span class="van-button__text">保存</span></button></div>
</div> </div>
`; `;
exports[`valid area placeholder confirm 1`] = ` exports[`valid area placeholder confirm 1`] = `
<div class="van-address-edit"> <div class="van-address-edit">
<div class="van-address-edit__fields">
<div class="van-cell van-field"> <div class="van-cell van-field">
<div class="van-cell__title van-field__label"><span>姓名</span></div> <div class="van-cell__title van-field__label"><span>姓名</span></div>
<div class="van-cell__value"> <div class="van-cell__value">
@ -243,7 +269,10 @@ exports[`valid area placeholder confirm 1`] = `
<div class="van-cell van-field"> <div class="van-cell van-field">
<div class="van-cell__title van-field__label"><span>地区</span></div> <div class="van-cell__title van-field__label"><span>地区</span></div>
<div class="van-cell__value"> <div class="van-cell__value">
<div class="van-field__body"><input type="text" placeholder="选择省 / 市 / 区" readonly="readonly" class="van-field__control"></div> <div class="van-field__body"><input type="text" placeholder="选择省 / 市 / 区" readonly="readonly" class="van-field__control">
<div class="van-field__right-icon"><i class="van-icon van-icon-arrow">
<!----></i></div>
</div>
</div> </div>
</div> </div>
<div class="van-cell van-address-edit-detail"> <div class="van-cell van-address-edit-detail">
@ -256,6 +285,7 @@ exports[`valid area placeholder confirm 1`] = `
</div> </div>
</div> </div>
</div> </div>
<div class="van-address-edit__buttons"><button class="van-button van-button--danger van-button--normal van-button--block"><span class="van-button__text">保存</span></button></div> </div>
<div class="van-address-edit__buttons"><button class="van-button van-button--danger van-button--normal van-button--block van-button--round"><span class="van-button__text">保存</span></button></div>
</div> </div>
`; `;

View File

@ -75,7 +75,8 @@
@action-sheet-cancel-padding-color: @background-color; @action-sheet-cancel-padding-color: @background-color;
// AddressEdit // AddressEdit
@address-edit-buttons-padding: @padding-xl @padding-md; @address-edit-padding: @padding-sm;
@address-edit-buttons-padding: @padding-xl @padding-base;
@address-edit-button-margin-bottom: @padding-sm; @address-edit-button-margin-bottom: @padding-sm;
@address-edit-detail-finish-color: @blue; @address-edit-detail-finish-color: @blue;
@address-edit-detail-finish-font-size: @font-size-sm; @address-edit-detail-finish-font-size: @font-size-sm;