import { shortcut, Widget, extend, createWidget } from "@/core"; import { MultiLayerDownListPopup } from "./popup.downlist"; import { Combo } from "@/base"; import { IconTrigger } from "@/case"; @shortcut() export class MultiLayerDownListCombo extends Widget { static xtype = "bi.multi_layer_down_list_combo"; static EVENT_CHANGE = "EVENT_CHANGE"; static EVENT_SON_VALUE_CHANGE = "EVENT_SON_VALUE_CHANGE"; static EVENT_BEFORE_POPUPVIEW = "EVENT_BEFORE_POPUPVIEW"; _defaultConfig() { return extend(super._defaultConfig(...arguments), { baseCls: "bi-multilayer-down-list-combo", height: 24, items: [], adjustLength: 0, direction: "bottom", trigger: "click", container: null, stopPropagation: false, el: {}, }); } _init() { super._init(...arguments); const o = this.options; this.popupview = createWidget({ type: "bi.multi_layer_down_list_popup", items: o.items, chooseType: o.chooseType, value: o.value, }); this.popupview.on(MultiLayerDownListPopup.EVENT_CHANGE, value => { this.fireEvent(MultiLayerDownListCombo.EVENT_CHANGE, value); this.downlistcombo.hideView(); }); this.popupview.on(MultiLayerDownListPopup.EVENT_SON_VALUE_CHANGE, (value, fatherValue) => { this.fireEvent(MultiLayerDownListCombo.EVENT_SON_VALUE_CHANGE, value, fatherValue); this.downlistcombo.hideView(); }); this.downlistcombo = createWidget({ element: this, type: Combo.xtype, trigger: o.trigger, isNeedAdjustWidth: false, container: o.container, adjustLength: o.adjustLength, direction: o.direction, stopPropagation: o.stopPropagation, el: createWidget(o.el, { type: IconTrigger.xtype, extraCls: o.iconCls ? o.iconCls : "pull-down-font", width: o.width, height: o.height, }), popup: { el: this.popupview, stopPropagation: o.stopPropagation, maxHeight: 1000, }, }); this.downlistcombo.on(Combo.EVENT_BEFORE_POPUPVIEW, () => { this.fireEvent(MultiLayerDownListCombo.EVENT_BEFORE_POPUPVIEW); }); } hideView() { this.downlistcombo.hideView(); } showView(e) { this.downlistcombo.showView(e); } populate(items) { this.popupview.populate(items); } setValue(v) { this.popupview.setValue(v); } getValue() { return this.popupview.getValue(); } }