"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
exports.default = OakComponent({
entity: 'user',
projection: {
id: 1,
name: 1,
nickname: 1,
mobile$user: {
$entity: 'mobile',
data: {
id: 1,
userId: 1,
mobile: 1,
},
},
},
filters: [
{
filter: {
id: {
$in: {
entity: 'mobile',
data: {
userId: 1,
},
filter: {
mobile: {
$eq: '11111111112',
}
}
}
}
},
'#name': 'userSearch'
}
],
isList: true,
formData: function (_a) {
var _b;
var users = _a.data, features = _a.features;
var _c = this.state, searchValue = _c.searchValue, go = _c.go;
go && this.goPage(users);
var isRoot = features.token.isRoot();
var nodeStr = '';
var userIds = [];
if (users.length) {
for (var i = 0; i < users.length; i++) {
userIds.push(users[i].id);
var _d = users[i] || {}, mobile$user = _d.mobile$user, name_1 = _d.name;
var itemStr = name_1 || '';
var mobile = mobile$user && ((_b = mobile$user[0]) === null || _b === void 0 ? void 0 : _b.mobile);
if (!mobile && !name_1) {
continue;
}
if (mobile) {
itemStr += " " + mobile;
}
var itemStr2 = itemStr.replace(searchValue, "".concat(searchValue, ""));
nodeStr += "
".concat(itemStr2, "");
}
}
return {
users: users,
userIds: userIds,
nodeStr: nodeStr,
isRoot: isRoot,
};
},
properties: {
toUrl: String,
},
data: {
go: false,
showList: false,
searchValue: '',
searchArr: [],
},
lifetimes: {
ready: function () {
var searchStr = this.load('user_searchList');
if (searchStr.length) {
this.setState({
searchArr: JSON.parse(searchStr),
});
}
}
},
methods: {
closeList: function () {
this.setState({
showList: false,
});
},
setFilter: function (value) {
this.addNamedFilter({
filter: {
$or: [
{
name: {
$includes: value,
},
},
{
id: {
$in: {
entity: 'mobile',
data: {
userId: 1,
},
filter: {
mobile: {
$includes: value,
}
}
}
}
}
],
},
'#name': 'userSearch',
});
},
goPage: function (data) {
var toUrl = this.props.toUrl;
var userIds = data === null || data === void 0 ? void 0 : data.map(function (ele) { return ele.id; });
this.navigateTo({
url: toUrl,
userIds: userIds,
});
this.setState({
showList: false,
go: false,
});
},
tagClick: function (event) {
var value = event.currentTarget.dataset.value;
this.setFilter(value);
this.setState({
go: true,
});
this.refresh();
},
//搜索框聚焦时,如果有输入值且搜索有值,也应该显示搜索结果list
onFocus: function (event) {
var _a = this.state, searchValue = _a.searchValue, userIds = _a.userIds;
if (searchValue && userIds.length) {
this.setState({
showList: true,
});
}
},
itemClick: function (event) {
//由于rich-text屏蔽了所有子节点的事件,所以这里根据触摸点进行判断
//搜索栏高度40px 每个可点击项38px
var toUrl = this.props.toUrl;
var _a = this.state, searchValue = _a.searchValue, userIds = _a.userIds;
var pageY = event.touches[0].pageY;
var index = Math.floor((pageY - 40) / 38);
if (index + 1 > userIds.length) {
this.setState({
showList: false,
});
return;
}
var searchStr = this.load('user_searchList');
var searchArr = [];
if (!searchStr) {
searchArr.push(searchValue);
}
else {
searchArr = JSON.parse(searchStr);
if (!searchArr.includes(searchValue)) {
searchArr.push(searchValue);
}
}
this.save('user_searchList', JSON.stringify(searchArr));
this.setState({ showList: false });
this.navigateTo({
url: toUrl,
userIds: [userIds[index]],
});
},
clearSearchHistory: function () {
this.setState({
searchArr: [],
});
this.save('user_searchList', '');
},
searchChange: function (input) {
return tslib_1.__awaiter(this, void 0, void 0, function () {
var value, users;
return tslib_1.__generator(this, function (_a) {
value = this.resolveInput(input).value;
users = this.state.users;
if (!value) {
this.setState({
searchValue: value,
showList: false,
});
return [2 /*return*/];
}
if (users.length) {
this.setState({
showList: true,
});
}
this.setFilter(value);
this.setState({
searchValue: value,
});
this.refresh();
return [2 /*return*/];
});
});
},
searchCancel: function () {
return tslib_1.__awaiter(this, void 0, void 0, function () {
return tslib_1.__generator(this, function (_a) {
this.setState({
searchValue: '',
showList: false,
});
return [2 /*return*/];
});
});
},
searchConfirm: function (input) {
return tslib_1.__awaiter(this, void 0, void 0, function () {
var value, searchStr, searchArr;
return tslib_1.__generator(this, function (_a) {
value = this.resolveInput(input).value;
searchStr = this.load('user_searchList');
searchArr = [];
if (!searchStr) {
searchArr.push(value);
this.setState({
searchArr: searchArr,
go: true,
});
}
else {
searchArr = JSON.parse(searchStr);
if (!searchArr.includes(value)) {
searchArr.push(value);
}
this.setState({
searchArr: searchArr,
go: true,
});
}
this.save('user_searchList', JSON.stringify(searchArr));
this.setFilter(value);
this.refresh();
return [2 /*return*/];
});
});
},
},
});