diff --git a/src/address-edit/Detail.js b/src/address-edit/Detail.js index 364f5b4e4..ffe3e8b4d 100644 --- a/src/address-edit/Detail.js +++ b/src/address-edit/Detail.js @@ -1,3 +1,5 @@ +import { ref } from 'vue'; + // Utils import { createNamespace } from '../utils'; import { isAndroid } from '../utils/validate/system'; @@ -22,102 +24,100 @@ export default createComponent({ emits: ['blur', 'focus', 'input', 'select-search'], - computed: { - shouldShowSearchResult() { - return this.focused && this.searchResult && this.showSearchResult; - }, - }, + setup(props, { emit }) { + const field = ref(); - methods: { - onSelect(express) { - this.$emit('select-search', express); - this.$emit( - 'input', - `${express.address || ''} ${express.name || ''}`.trim() - ); - }, + const showSearchResult = () => + props.focused && props.searchResult && props.showSearchResult; - onFinish() { - this.$refs.field.blur(); - }, + const onSelect = (express) => { + emit('select-search', express); + emit('input', `${express.address || ''} ${express.name || ''}`.trim()); + }; - onFocus(event) { - this.$emit('focus', event); - }, + const onFinish = () => { + field.value.blur(); + }; - onBlur(event) { - this.$emit('blur', event); - }, - - genFinish() { - const show = this.value && this.focused && android; - if (show) { + const renderFinish = () => { + if (props.value && props.focused && android) { return ( -
+
{t('complete')}
); } - }, + }; - genSearchResult() { - const { value, shouldShowSearchResult, searchResult } = this; - if (shouldShowSearchResult) { - return searchResult.map((express) => ( - { - if (express.name) { - const text = express.name.replace( - value, - `${value}` - ); + const renderSearchTitle = (express) => { + if (express.name) { + const text = express.name.replace( + props.value, + `${props.value}` + ); - return
; - } - }, - }} - key={express.name + express.address} - clickable - border={false} - icon="location-o" - label={express.address} - class={bem('search-item')} - onClick={() => { - this.onSelect(express); - }} - /> - )); + return
; } - }, - }, + }; - render() { - return ( - - { - this.$emit('input', val); - }, + const renderSearchResult = () => { + if (!showSearchResult()) { + return; + } + + const { searchResult } = props; + return searchResult.map((express) => ( + renderSearchTitle(express), + }} + clickable + key={express.name + express.address} + icon="location-o" + label={express.address} + class={bem('search-item')} + border={false} + onClick={() => { + onSelect(express); }} /> - {this.genSearchResult()} - + )); + }; + + const onFocus = (event) => { + emit('focus', event); + }; + + const onBlur = (event) => { + emit('blur', event); + }; + + const onInput = (value) => { + emit('input', value); + }; + + return () => ( + <> + + {renderSearchResult()} + ); }, }); diff --git a/src/address-edit/index.js b/src/address-edit/index.js index 16e3b8386..faa73b57b 100644 --- a/src/address-edit/index.js +++ b/src/address-edit/index.js @@ -40,6 +40,7 @@ export default createComponent({ validator: Function, showDelete: Boolean, showPostal: Boolean, + disableArea: Boolean, searchResult: Array, telMaxlength: [Number, String], showSetDefault: Boolean, @@ -55,7 +56,6 @@ export default createComponent({ type: Boolean, default: true, }, - disableArea: Boolean, detailRows: { type: [Number, String], default: 1, diff --git a/src/address-edit/index.less b/src/address-edit/index.less index 80f26f9fe..4f8810af6 100644 --- a/src/address-edit/index.less +++ b/src/address-edit/index.less @@ -27,8 +27,6 @@ } &-detail { - padding: 0; - &__search-item { background-color: @gray-2; }