116 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			116 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| import _extends from "@babel/runtime/helpers/esm/extends";
 | |
| // Utils
 | |
| import { createNamespace } from '../utils';
 | |
| import { isAndroid } from '../utils/validate/system'; // Components
 | |
| 
 | |
| import Cell from '../cell';
 | |
| import Field from '../field';
 | |
| 
 | |
| var _createNamespace = createNamespace('address-edit-detail'),
 | |
|     createComponent = _createNamespace[0],
 | |
|     bem = _createNamespace[1],
 | |
|     t = _createNamespace[2];
 | |
| 
 | |
| var android = isAndroid();
 | |
| export default createComponent({
 | |
|   props: {
 | |
|     value: String,
 | |
|     errorMessage: String,
 | |
|     focused: Boolean,
 | |
|     detailRows: [Number, String],
 | |
|     searchResult: Array,
 | |
|     detailMaxlength: [Number, String],
 | |
|     showSearchResult: Boolean
 | |
|   },
 | |
|   computed: {
 | |
|     shouldShowSearchResult: function shouldShowSearchResult() {
 | |
|       return this.focused && this.searchResult && this.showSearchResult;
 | |
|     }
 | |
|   },
 | |
|   methods: {
 | |
|     onSelect: function onSelect(express) {
 | |
|       this.$emit('select-search', express);
 | |
|       this.$emit('input', ((express.address || '') + " " + (express.name || '')).trim());
 | |
|     },
 | |
|     onFinish: function onFinish() {
 | |
|       this.$refs.field.blur();
 | |
|     },
 | |
|     genFinish: function genFinish() {
 | |
|       var h = this.$createElement;
 | |
|       var show = this.value && this.focused && android;
 | |
| 
 | |
|       if (show) {
 | |
|         return h("div", {
 | |
|           "class": bem('finish'),
 | |
|           "on": {
 | |
|             "click": this.onFinish
 | |
|           }
 | |
|         }, [t('complete')]);
 | |
|       }
 | |
|     },
 | |
|     genSearchResult: function genSearchResult() {
 | |
|       var _this = this;
 | |
| 
 | |
|       var h = this.$createElement;
 | |
|       var value = this.value,
 | |
|           shouldShowSearchResult = this.shouldShowSearchResult,
 | |
|           searchResult = this.searchResult;
 | |
| 
 | |
|       if (shouldShowSearchResult) {
 | |
|         return searchResult.map(function (express) {
 | |
|           return h(Cell, {
 | |
|             "key": express.name + express.address,
 | |
|             "attrs": {
 | |
|               "clickable": true,
 | |
|               "border": false,
 | |
|               "icon": "location-o",
 | |
|               "label": express.address
 | |
|             },
 | |
|             "class": bem('search-item'),
 | |
|             "on": {
 | |
|               "click": function click() {
 | |
|                 _this.onSelect(express);
 | |
|               }
 | |
|             },
 | |
|             "scopedSlots": {
 | |
|               title: function title() {
 | |
|                 if (express.name) {
 | |
|                   var text = express.name.replace(value, "<span class=" + bem('keyword') + ">" + value + "</span>");
 | |
|                   return h("div", {
 | |
|                     "domProps": {
 | |
|                       "innerHTML": text
 | |
|                     }
 | |
|                   });
 | |
|                 }
 | |
|               }
 | |
|             }
 | |
|           });
 | |
|         });
 | |
|       }
 | |
|     }
 | |
|   },
 | |
|   render: function render() {
 | |
|     var h = arguments[0];
 | |
|     return h(Cell, {
 | |
|       "class": bem()
 | |
|     }, [h(Field, {
 | |
|       "attrs": {
 | |
|         "autosize": true,
 | |
|         "rows": this.detailRows,
 | |
|         "clearable": !android,
 | |
|         "type": "textarea",
 | |
|         "value": this.value,
 | |
|         "errorMessage": this.errorMessage,
 | |
|         "border": !this.shouldShowSearchResult,
 | |
|         "label": t('label'),
 | |
|         "maxlength": this.detailMaxlength,
 | |
|         "placeholder": t('placeholder')
 | |
|       },
 | |
|       "ref": "field",
 | |
|       "scopedSlots": {
 | |
|         icon: this.genFinish
 | |
|       },
 | |
|       "on": _extends({}, this.$listeners)
 | |
|     }), this.genSearchResult()]);
 | |
|   }
 | |
| }); | 
