// Utils import { createNamespace } from '../utils'; import { isAndroid } from '../utils/validate/system'; // Components import Cell from '../cell'; import Field from '../field'; const [createComponent, bem, t] = createNamespace('address-edit-detail'); const android = isAndroid(); export default createComponent({ props: { value: String, errorMessage: String, focused: Boolean, detailRows: [Number, String], searchResult: Array, detailMaxlength: [Number, String], showSearchResult: Boolean, }, emits: ['blur', 'focus', 'input', 'select-search'], computed: { shouldShowSearchResult() { return this.focused && this.searchResult && this.showSearchResult; }, }, methods: { onSelect(express) { this.$emit('select-search', express); this.$emit( 'input', `${express.address || ''} ${express.name || ''}`.trim() ); }, onFinish() { this.$refs.field.blur(); }, onFocus(event) { this.$emit('focus', event); }, onBlur(event) { this.$emit('blur', event); }, genFinish() { const show = this.value && this.focused && android; if (show) { 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}` ); return
; } }, }} key={express.name + express.address} clickable border={false} icon="location-o" label={express.address} class={bem('search-item')} onClick={() => { this.onSelect(express); }} /> )); } }, }, render() { return ( { this.$emit('input', val); }, }} /> {this.genSearchResult()} ); }, });