fineui是帆软报表和BI产品线所使用的前端框架。
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.
 
 
 

86 lines
2.1 KiB

import { shortcut, extend, emptyFn, createWidget, contains, isArray, some } from "@/core";
import { Trigger } from "@/base";
import { SelectTextTrigger } from "@/case";
@shortcut()
export class SingleTreeTrigger extends Trigger {
static xtype = "bi.single_tree_trigger";
static EVENT_CLEAR = "EVENT_CLEAR";
_defaultConfig() {
return extend(super._defaultConfig(...arguments), {
baseCls: "bi-single-tree-trigger",
height: 24,
text: "",
items: [],
value: "",
allowClear: false,
valueFormatter: emptyFn,
});
}
_init() {
super._init(...arguments);
const self = this,
o = this.options;
this.trigger = createWidget({
type: SelectTextTrigger.xtype,
element: this,
text: o.text,
defaultText: o.defaultText,
items: o.items,
height: o.height,
warningTitle: o.warningTitle,
tipType: o.tipType,
value: o.value,
allowClear: o.allowClear,
valueFormatter: o.valueFormatter,
listeners: [
{
eventName: SelectTextTrigger.EVENT_CLEAR,
action() {
self.fireEvent(SingleTreeTrigger.EVENT_CLEAR);
},
}
],
});
}
_checkTitle() {
const val = this.getValue();
some(this.options.items, (i, item) => {
if (contains(val, item.value)) {
this.trigger.setTitle(item.text || item.value);
return true;
}
});
}
setValue(v) {
v = isArray(v) ? v : [v];
this.options.value = v;
this.trigger.setValue(v);
this._checkTitle();
}
setTipType(v) {
this.options.tipType = v;
this.trigger.setTipType(v);
}
getValue() {
return this.options.value || [];
}
getTextor() {
return this.trigger.getTextor();
}
populate(items) {
this.trigger.populate(items);
}
}