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;
}
| |