You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
116 lines
3.2 KiB
116 lines
3.2 KiB
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()]);
|
|
}
|
|
}); |