fineui是帆软报表和BI产品线所使用的前端框架。
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.
 
 
 

144 lines
4.4 KiB

/**
* 文字trigger
*
* Created by GUY on 2015/9/15.
* @class BI.TextTrigger
* @extends BI.Trigger
*/
BI.TextTrigger = BI.inherit(BI.Trigger, {
props: function () {
var self = this;
return {
baseCls: "bi-text-trigger",
height: 24,
textHgap: 6,
textCls: "",
allowClear: false,
title: function () {
return self.text.getText();
},
defaultText: "",
text: "",
};
},
render: function () {
var self = this, o = this.options, c = this._const;
var text = this.getText();
var defaultText = this.getDefaultText();
var label = {
type: "bi.label",
ref: function (_ref) {
self.text = _ref;
},
cls: `select-text-label ${o.textCls} ${!BI.isNotEmptyString(text) && BI.isNotEmptyString(defaultText) ? "bi-tips" : ""}`,
textAlign: "left",
height: o.height,
text: text || o.defaultText,
tipType: o.tipType,
warningTitle: o.warningTitle,
hgap: o.textHgap,
vgap: o.textVgap,
lgap: o.textLgap,
rgap: o.textRgap,
tgap: o.textTgap,
bgap: o.textBgap,
readonly: o.readonly
};
var triggerButton = {
type: "bi.trigger_icon_button",
ref: function (_ref) {
self.triggerButton = _ref;
},
width: o.triggerWidth || o.height
};
return ({
type: "bi.horizontal_fill",
columnSize: ["fill", ""],
items: [
{
el: label,
width: "fill"
}, {
el: o.allowClear ? {
type: "bi.vertical_adapt",
width: o.triggerWidth || o.height,
height: o.height,
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,
width: o.triggerWidth || o.height,
invisible: !BI.isNotEmptyString(o.text),
handler: function () {
self.fireEvent(BI.TextTrigger.EVENT_CLEAR);
},
},
}, {
el: triggerButton,
}
]
} : triggerButton,
}
]
});
},
getText: function () {
var o = this.options;
return BI.isFunction(o.text) ? o.text() : o.text;
},
getDefaultText: function () {
var o = this.options;
return BI.isFunction(o.defaultText) ? o.defaultText() : o.defaultText;
},
getTextor: function () {
return this.text;
},
setTextCls: function (cls) {
var o = this.options;
var oldCls = o.textCls;
o.textCls = cls;
this.text.element.removeClass(oldCls).addClass(cls);
},
setText: function (text) {
if (this.options.allowClear) {
this.clearBtn.setVisible(BI.isNotEmptyString(text));
}
if (BI.isKey(text)) {
this.text.setText(text);
this.text.element.removeClass("bi-tips");
} else if (BI.isKey(this.options.defaultText)) {
this.text.setText(this.options.defaultText);
this.text.element.addClass("bi-tips");
} else {
this.text.setText("");
this.text.element.removeClass("bi-tips");
}
},
setTipType: function (v) {
this.text.options.tipType = v;
this.options.tipType = v;
}
});
BI.TextTrigger.EVENT_CLEAR = "EVENT_CLEAR";
BI.shortcut("bi.text_trigger", BI.TextTrigger);