Browse Source

KERNEL-12250 feat:简化一下combolist的api

es6
Treecat 2 years ago
parent
commit
ecbfd56508
  1. 18
      demo/js/widget/downlist/demo.downlist.js
  2. 223
      src/widget/downlist/combo.downlist.js

18
demo/js/widget/downlist/demo.downlist.js

@ -47,11 +47,9 @@ Demo.Downlist = BI.inherit(BI.Widget, {
width: 100, width: 100,
items: [ items: [
[{ [{
el: { text: "column 1111",
text: "column 1111", iconCls1: "dot-e-font",
iconCls1: "dot-e-font", value: 12,
value: 12
},
children: [{ children: [{
text: "column 1.1", text: "column 1.1",
value: 21, value: 21,
@ -166,12 +164,10 @@ Demo.Downlist = BI.inherit(BI.Widget, {
}], }],
items: [ items: [
[{ [{
el: { text: "选项一",
text: "选项一", value: 1,
value: 1, icon: {
icon: { type: "demo.downlist.icon",
type: "demo.downlist.icon",
},
}, },
children: [{ children: [{
text: "选项一", text: "选项一",

223
src/widget/downlist/combo.downlist.js

@ -1,110 +1,139 @@
/** (function() {
* Created by roy on 15/8/14. function transformItems(items) {
*/ if (!items) return items;
BI.DownListCombo = BI.inherit(BI.Widget, { var result = BI.cloneDeep(items);
_defaultConfig: function () { var isComplexItmes = BI.some(items, function (_, item) {
return BI.extend(BI.DownListCombo.superclass._defaultConfig.apply(this, arguments), { return BI.isArray(item);
baseCls: "bi-down-list-combo",
height: 24,
items: [],
adjustLength: 0,
direction: "bottom",
trigger: "click",
container: null,
stopPropagation: false,
el: {},
minWidth: 140,
maxHeight: 1000,
destroyWhenHide: false
}); });
}, // 传一维数组,帮转二维
if (!isComplexItmes) {
result = [result];
}
// 帮转 el
BI.each(result, function (_, arr) {
BI.each(arr, function (_, item) {
if (item.children && !item.el) {
item.el = {
text: item.text,
icon: item.icon,
cls: item.cls,
iconCls1: item.iconCls1,
value: item.value
};
}
});
});
return result;
}
_init: function () { /**
BI.DownListCombo.superclass._init.apply(this, arguments); * Created by roy on 15/8/14.
var self = this, o = this.options; */
BI.DownListCombo = BI.inherit(BI.Widget, {
_defaultConfig: function () {
return BI.extend(BI.DownListCombo.superclass._defaultConfig.apply(this, arguments), {
baseCls: "bi-down-list-combo",
height: 24,
items: [],
adjustLength: 0,
direction: "bottom",
trigger: "click",
container: null,
stopPropagation: false,
el: {},
minWidth: 140,
maxHeight: 1000,
destroyWhenHide: false
});
},
this.downlistcombo = BI.createWidget({ _init: function () {
element: this, BI.DownListCombo.superclass._init.apply(this, arguments);
type: "bi.combo", var self = this, o = this.options;
trigger: o.trigger,
isNeedAdjustWidth: false, this.downlistcombo = BI.createWidget({
isDefaultInit: true, element: this,
container: o.container, type: "bi.combo",
adjustLength: o.adjustLength, trigger: o.trigger,
direction: o.direction, isNeedAdjustWidth: false,
belowMouse: o.belowMouse, isDefaultInit: true,
stopPropagation: o.stopPropagation, container: o.container,
destroyWhenHide: o.destroyWhenHide, adjustLength: o.adjustLength,
el: BI.createWidget(o.el, { direction: o.direction,
type: "bi.icon_trigger", belowMouse: o.belowMouse,
extraCls: o.iconCls,
width: o.width,
height: o.height
}),
popup: {
el: {
type: "bi.down_list_popup",
ref: function (ref) {
self.popupView = ref;
},
items: o.items,
chooseType: o.chooseType,
value: o.value,
listeners: [{
eventName: BI.DownListPopup.EVENT_CHANGE,
action: function (value) {
self.fireEvent(BI.DownListCombo.EVENT_CHANGE, value);
self.downlistcombo.hideView();
}
}, {
eventName: BI.DownListPopup.EVENT_SON_VALUE_CHANGE,
action: function (value, fatherValue) {
self.fireEvent(BI.DownListCombo.EVENT_SON_VALUE_CHANGE, value, fatherValue);
self.downlistcombo.hideView();
}
}]
},
stopPropagation: o.stopPropagation, stopPropagation: o.stopPropagation,
maxHeight: o.maxHeight, destroyWhenHide: o.destroyWhenHide,
minWidth: o.minWidth el: BI.createWidget(o.el, {
} type: "bi.icon_trigger",
}); extraCls: o.iconCls,
width: o.width,
height: o.height
}),
popup: {
el: {
type: "bi.down_list_popup",
ref: function (ref) {
self.popupView = ref;
},
items: transformItems(o.items),
chooseType: o.chooseType,
value: o.value,
listeners: [{
eventName: BI.DownListPopup.EVENT_CHANGE,
action: function (value) {
self.fireEvent(BI.DownListCombo.EVENT_CHANGE, value);
self.downlistcombo.hideView();
}
}, {
eventName: BI.DownListPopup.EVENT_SON_VALUE_CHANGE,
action: function (value, fatherValue) {
self.fireEvent(BI.DownListCombo.EVENT_SON_VALUE_CHANGE, value, fatherValue);
self.downlistcombo.hideView();
}
}]
},
stopPropagation: o.stopPropagation,
maxHeight: o.maxHeight,
minWidth: o.minWidth
}
});
this.downlistcombo.on(BI.Combo.EVENT_BEFORE_POPUPVIEW, function () { this.downlistcombo.on(BI.Combo.EVENT_BEFORE_POPUPVIEW, function () {
self.fireEvent(BI.DownListCombo.EVENT_BEFORE_POPUPVIEW); self.fireEvent(BI.DownListCombo.EVENT_BEFORE_POPUPVIEW);
}); });
}, },
hideView: function () { hideView: function () {
this.downlistcombo.hideView(); this.downlistcombo.hideView();
}, },
showView: function (e) { showView: function (e) {
this.downlistcombo.showView(e); this.downlistcombo.showView(e);
}, },
populate: function (items) { populate: function (items) {
this.popupView.populate(items); this.popupView.populate(items);
}, },
setValue: function (v) { setValue: function (v) {
this.popupView.setValue(v); this.popupView.setValue(v);
}, },
getValue: function () { getValue: function () {
return this.popupView.getValue(); return this.popupView.getValue();
}, },
adjustWidth: function () { adjustWidth: function () {
this.downlistcombo.adjustWidth(); this.downlistcombo.adjustWidth();
}, },
adjustHeight: function () { adjustHeight: function () {
this.downlistcombo.adjustHeight(); this.downlistcombo.adjustHeight();
} }
}); });
BI.DownListCombo.EVENT_CHANGE = "EVENT_CHANGE"; BI.DownListCombo.EVENT_CHANGE = "EVENT_CHANGE";
BI.DownListCombo.EVENT_SON_VALUE_CHANGE = "EVENT_SON_VALUE_CHANGE"; BI.DownListCombo.EVENT_SON_VALUE_CHANGE = "EVENT_SON_VALUE_CHANGE";
BI.DownListCombo.EVENT_BEFORE_POPUPVIEW = "EVENT_BEFORE_POPUPVIEW"; BI.DownListCombo.EVENT_BEFORE_POPUPVIEW = "EVENT_BEFORE_POPUPVIEW";
BI.shortcut("bi.down_list_combo", BI.DownListCombo); BI.shortcut("bi.down_list_combo", BI.DownListCombo);
}());

Loading…
Cancel
Save