Browse Source

Pull request #2686: DESIGN-4103 feat: "bi.search_text_value_combo" 也支持清空

Merge in VISUAL/fineui from ~DAILER/fineui:master to master

* commit '97dffab756ef5ae0681db5be9f55322ed57b1670':
  DESIGN-4103 feat: "bi.search_text_value_combo" 也支持清空
es6
Dailer 3 years ago
parent
commit
ecd2365ffc
  1. 175
      src/case/combo/searchtextvaluecombo/combo.searchtextvalue.js
  2. 56
      src/case/combo/searchtextvaluecombo/trigger.searchtextvalue.js
  3. 2
      src/case/trigger/trigger.text.js

175
src/case/combo/searchtextvaluecombo/combo.searchtextvalue.js

@ -22,113 +22,87 @@ BI.SearchTextValueCombo = BI.inherit(BI.Widget, {
o.items = BI.isFunction(o.items) ? this.__watch(o.items, function (context, newValue) { o.items = BI.isFunction(o.items) ? this.__watch(o.items, function (context, newValue) {
self.populate(newValue); self.populate(newValue);
}) : o.items; }) : o.items;
return { return {
type: "bi.absolute", type: "bi.combo",
items: [{ cls: (o.simple ? "bi-border-bottom" : "bi-border") + " bi-focus-shadow",
container: o.container,
adjustLength: 2,
toggle: false,
ref: function () {
self.combo = this;
},
el: {
type: "bi.search_text_value_trigger",
cls: "search-text-value-trigger",
watermark: o.watermark,
ref: function () {
self.trigger = this;
},
items: o.items,
height: o.height - (o.simple ? 1 : 2),
text: o.text,
defaultText: o.defaultText,
value: o.value,
tipType: o.tipType,
warningTitle: o.warningTitle,
title: o.title,
allowClear: o.allowClear,
listeners: [{
eventName: BI.SearchTextValueTrigger.EVENT_CHANGE,
action: function () {
self.setValue(this.getValue());
self.combo.hideView();
self.fireEvent(BI.SearchTextValueCombo.EVENT_CHANGE);
}
}, {
eventName: BI.SearchTextValueTrigger.EVENT_CLEAR,
action: function () {
self.setValue();
self.combo.hideView();
self.fireEvent(BI.SearchTextValueCombo.EVENT_CHANGE);
}
}, {
eventName: BI.SearchTextValueTrigger.EVENT_CLEAR,
action: function () {
self._clear();
}
}]
},
popup: {
el: { el: {
type: "bi.combo", type: "bi.text_value_combo_popup",
cls: (o.simple ? "bi-border-bottom" : "bi-border") + " bi-focus-shadow", chooseType: BI.ButtonGroup.CHOOSE_TYPE_SINGLE,
container: o.container, value: o.value,
adjustLength: 2, items: o.items,
toggle: false,
ref: function () { ref: function () {
self.combo = this; self.popup = this;
}, self.trigger.getSearcher().setAdapter(self.popup);
el: {
type: "bi.search_text_value_trigger",
cls: "search-text-value-trigger",
watermark: o.watermark,
ref: function () {
self.trigger = this;
},
items: o.items,
height: o.height - (o.simple ? 1 : 2),
text: o.text,
defaultText: o.defaultText,
value: o.value,
tipType: o.tipType,
warningTitle: o.warningTitle,
title: o.title,
allowClear: o.allowClear,
listeners: [{
eventName: BI.SearchTextValueTrigger.EVENT_CHANGE,
action: function () {
self.setValue(this.getValue());
self.combo.hideView();
self.fireEvent(BI.SearchTextValueCombo.EVENT_CHANGE);
}
}, {
eventName: BI.SearchTextValueTrigger.EVENT_CLEAR,
action: function () {
self.setValue();
self.combo.hideView();
self.fireEvent(BI.SearchTextValueCombo.EVENT_CHANGE);
}
}]
},
popup: {
el: {
type: "bi.text_value_combo_popup",
chooseType: BI.ButtonGroup.CHOOSE_TYPE_SINGLE,
value: o.value,
items: o.items,
ref: function () {
self.popup = this;
self.trigger.getSearcher().setAdapter(self.popup);
},
listeners: [{
eventName: BI.TextValueComboPopup.EVENT_CHANGE,
action: function () {
self.setValue(this.getValue());
self.combo.hideView();
self.fireEvent(BI.SearchTextValueCombo.EVENT_CHANGE);
}
}]
},
value: o.value,
maxHeight: 252,
minHeight: 25
}, },
listeners: [{ listeners: [{
eventName: BI.Combo.EVENT_AFTER_HIDEVIEW, eventName: BI.TextValueComboPopup.EVENT_CHANGE,
action: function () { action: function () {
self.trigger.stopEditing(); self.setValue(this.getValue());
}
}, {
eventName: BI.Combo.EVENT_BEFORE_POPUPVIEW,
action: function () {
self.fireEvent(BI.SearchTextValueCombo.EVENT_BEFORE_POPUPVIEW);
}
}],
hideChecker: function (e) {
return self.triggerBtn.element.find(e.target).length === 0;
}
},
left: 0,
right: 0,
bottom: 0,
top: 0
}, {
el: {
type: "bi.trigger_icon_button",
cls: "trigger-icon-button",
ref: function () {
self.triggerBtn = this;
},
width: o.height,
height: o.height,
handler: function () {
if (self.combo.isViewVisible()) {
self.combo.hideView(); self.combo.hideView();
} else { self.fireEvent(BI.SearchTextValueCombo.EVENT_CHANGE);
self.combo.showView();
} }
} }]
}, },
right: 0, value: o.value,
bottom: 0, maxHeight: 252,
top: 0 minHeight: 25
}] },
listeners: [{
eventName: BI.Combo.EVENT_AFTER_HIDEVIEW,
action: function () {
self.trigger.stopEditing();
}
}, {
eventName: BI.Combo.EVENT_BEFORE_POPUPVIEW,
action: function () {
self.fireEvent(BI.SearchTextValueCombo.EVENT_BEFORE_POPUPVIEW);
}
}],
}; };
}, },
@ -139,6 +113,11 @@ BI.SearchTextValueCombo = BI.inherit(BI.Widget, {
} }
}, },
_clear: function () {
this.trigger.attr("text", "");
this.setValue([]);
},
_checkError: function (v) { _checkError: function (v) {
if (BI.isNull(v) || BI.isEmptyArray(v) || BI.isEmptyString(v)) { if (BI.isNull(v) || BI.isEmptyArray(v) || BI.isEmptyString(v)) {
this.trigger.options.tipType = "success"; this.trigger.options.tipType = "success";

56
src/case/combo/searchtextvaluecombo/trigger.searchtextvalue.js

@ -5,16 +5,32 @@ BI.SearchTextValueTrigger = BI.inherit(BI.Trigger, {
props: function () { props: function () {
return { return {
extraCls: "bi-search-text-value-trigger", baseCls: "bi-search-text-value-trigger",
height: 24, height: 24,
watermark: BI.i18nText("BI-Basic_Search") watermark: BI.i18nText("BI-Basic_Search"),
allowClear: false,
}; };
}, },
render: function () { render: function () {
var self = this, o = this.options; var self = this, o = this.options;
var triggerButton = {
type: "bi.trigger_icon_button",
cls: "trigger-icon-button",
ref: function () {
self.triggerBtn = this;
},
width: o.height,
height: o.height,
width: 24,
};
var stateText = this._digest(o.value, o.items);
return { return {
type: "bi.htape", type: "bi.horizontal_fill",
columnSize: ["fill", 24],
items: [ items: [
{ {
el: { el: {
@ -30,7 +46,7 @@ BI.SearchTextValueTrigger = BI.inherit(BI.Trigger, {
}, },
watermark: o.watermark, watermark: o.watermark,
defaultText: o.defaultText, defaultText: o.defaultText,
text: this._digest(o.value, o.items), text: stateText,
value: o.value, value: o.value,
height: o.height, height: o.height,
tipText: "" tipText: ""
@ -55,10 +71,30 @@ BI.SearchTextValueTrigger = BI.inherit(BI.Trigger, {
}] }]
} }
}, { }, {
el: { el: o.allowClear ? {
type: "bi.layout", type: "bi.vertical_adapt",
width: 24 horizontalAlign: "left",
}, scrollable: false,
items: [
{
el: {
type: "bi.icon_button",
ref: function (_ref) {
self.clearBtn = _ref;
},
cls: "close-h-font " + (o.allowClear ? "clear-button" : ""),
stopPropagation: true,
invisible: !BI.isNotEmptyString(stateText),
width: o.height,
handler: function () {
self.fireEvent(BI.SearchTextValueTrigger.EVENT_CLEAR);
},
},
}, {
el: triggerButton,
}
]
} : triggerButton,
width: 24 width: 24
} }
] ]
@ -100,7 +136,9 @@ BI.SearchTextValueTrigger = BI.inherit(BI.Trigger, {
}, },
setValue: function (vals) { setValue: function (vals) {
this._setState(this._digest(vals, this.options.items)); var stateText = this._digest(vals, this.options.items);
this._setState(stateText);
this.options.allowClear && this.clearBtn.setVisible(BI.isNotEmptyString(stateText));
}, },
getValue: function () { getValue: function () {

2
src/case/trigger/trigger.text.js

@ -72,6 +72,8 @@ BI.TextTrigger = BI.inherit(BI.Trigger, {
}, },
cls: "close-h-font " + (o.allowClear ? "clear-button" : ""), cls: "close-h-font " + (o.allowClear ? "clear-button" : ""),
stopPropagation: true, stopPropagation: true,
width: o.triggerWidth || o.height,
invisible: !BI.isNotEmptyString(o.text),
handler: function () { handler: function () {
self.fireEvent(BI.TextTrigger.EVENT_CLEAR); self.fireEvent(BI.TextTrigger.EVENT_CLEAR);
}, },

Loading…
Cancel
Save