|
|
|
import { shortcut, Widget, extend, emptyFn, createWidget, i18nText, Controller, VerticalFillLayout, SIZE_CONSANTS } from "@/core";
|
|
|
|
import { Label } from "@/base";
|
|
|
|
import { MultiSelectSearchLoader } from "./multiselect.search.loader";
|
|
|
|
|
|
|
|
@shortcut()
|
|
|
|
export class MultiSelectSearchInsertPane extends Widget {
|
|
|
|
static xtype = "bi.multi_select_search_insert_pane";
|
|
|
|
|
|
|
|
constants = { height: 24, lgap: 10, tgap: 5 };
|
|
|
|
|
|
|
|
static EVENT_CHANGE = "EVENT_CHANGE";
|
|
|
|
|
|
|
|
_defaultConfig() {
|
|
|
|
return extend(super._defaultConfig(...arguments), {
|
|
|
|
baseCls: "bi-multi-select-search-pane bi-card",
|
|
|
|
itemsCreator: emptyFn,
|
|
|
|
valueFormatter: emptyFn,
|
|
|
|
keywordGetter: emptyFn,
|
|
|
|
allowSelectAll: true,
|
|
|
|
itemHeight: 24,
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
_init() {
|
|
|
|
super._init(...arguments);
|
|
|
|
const self = this,
|
|
|
|
o = this.options;
|
|
|
|
|
|
|
|
this.addNotMatchTip = createWidget({
|
|
|
|
type: Label.xtype,
|
|
|
|
text: i18nText("BI-Basic_Press_Enter_To_Add_Text", ""),
|
|
|
|
height: SIZE_CONSANTS.LIST_ITEM_HEIGHT,
|
|
|
|
cls: "bi-keyword-red-mark",
|
|
|
|
hgap: 5,
|
|
|
|
});
|
|
|
|
|
|
|
|
this.loader = createWidget({
|
|
|
|
type: MultiSelectSearchLoader.xtype,
|
|
|
|
keywordGetter: o.keywordGetter,
|
|
|
|
valueFormatter: o.valueFormatter,
|
|
|
|
itemFormatter: o.itemFormatter,
|
|
|
|
itemsCreator(op, callback) {
|
|
|
|
o.itemsCreator.apply(self, [
|
|
|
|
op,
|
|
|
|
function (res) {
|
|
|
|
callback(res);
|
|
|
|
self.setKeyword(o.keywordGetter());
|
|
|
|
}
|
|
|
|
]);
|
|
|
|
},
|
|
|
|
itemHeight: o.itemHeight,
|
|
|
|
value: o.value,
|
|
|
|
allowSelectAll: o.allowSelectAll,
|
|
|
|
});
|
|
|
|
this.loader.on(Controller.EVENT_CHANGE, function () {
|
|
|
|
self.fireEvent(Controller.EVENT_CHANGE, arguments);
|
|
|
|
});
|
|
|
|
|
|
|
|
this.resizer = createWidget({
|
|
|
|
type: VerticalFillLayout.xtype,
|
|
|
|
rowSize: ["", "fill"],
|
|
|
|
element: this,
|
|
|
|
items: [
|
|
|
|
{
|
|
|
|
el: this.addNotMatchTip,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
el: this.loader,
|
|
|
|
}
|
|
|
|
],
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
setKeyword(keyword) {
|
|
|
|
this.addNotMatchTip.setText(i18nText("BI-Basic_Press_Enter_To_Add_Text", keyword));
|
|
|
|
}
|
|
|
|
|
|
|
|
isAllSelected() {
|
|
|
|
return this.loader.isAllSelected();
|
|
|
|
}
|
|
|
|
|
|
|
|
hasMatched() {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
setValue(v) {
|
|
|
|
this.loader.setValue(v);
|
|
|
|
}
|
|
|
|
|
|
|
|
getValue() {
|
|
|
|
return this.loader.getValue();
|
|
|
|
}
|
|
|
|
|
|
|
|
empty() {
|
|
|
|
this.loader.empty();
|
|
|
|
}
|
|
|
|
|
|
|
|
populate(items) {
|
|
|
|
this.loader.populate(...arguments);
|
|
|
|
}
|
|
|
|
}
|