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