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
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); |
|
} |
|
}
|
|
|