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.
 
 
 

127 lines
2.9 KiB

/**
* toast提示
*
* Created by GUY on 2015/9/7.
* @class BI.Toast
* @extends BI.Tip
*/
import { shortcut } from "../../../core";
import { Tip } from "./0.tip";
@shortcut()
export class Toast extends Tip {
_const= {
closableMinWidth: 146,
minWidth: 100,
closableMaxWidth: 410,
maxWidth: 400,
}
static EVENT_DESTORY = "EVENT_DESTORY";
static xtype = "bi.toast";
_defaultConfig() {
return BI.extend(super._defaultConfig(arguments), {
extraCls: "bi-toast",
text: "",
level: "success", // success或warning
autoClose: true,
closable: null,
textHeight: 20,
vgap: 10,
innerHgap: 4,
hgap: 8,
});
}
render() {
const { closable, level, autoClose, textHeight, text, hgap, vgap, innerHgap } = this.options;
const { closableMinWidth, minWidth, maxWidth, closableMaxWidth } = this._const;
this.element.css({
minWidth: BI.pixFormat(closable ? closableMinWidth : minWidth),
maxWidth: BI.pixFormat(closable ? closableMaxWidth : maxWidth),
});
this.element.addClass("toast-" + level);
function fn(e) {
e.stopPropagation();
e.stopEvent();
return false;
}
this.element.bind({
click: fn,
mousedown: fn,
mouseup: fn,
mouseover: fn,
mouseenter: fn,
mouseleave: fn,
mousemove: fn,
});
let cls;
switch (level) {
case "success":
cls = "toast-success-font";
break;
case "error":
cls = "toast-error-font";
break;
case "warning":
cls = "toast-warning-font";
break;
case "loading":
cls = "toast-loading-font anim-rotate";
break;
case "normal":
default:
cls = "toast-message-font";
break;
}
function hasCloseIcon() {
return closable === true || (closable === null && autoClose === false);
}
const items = [{
type: "bi.icon_label",
cls: cls + " toast-icon",
height: textHeight,
}, {
el: BI.isPlainObject(text) ? text : {
type: "bi.label",
whiteSpace: "normal",
text: text,
textHeight: textHeight,
textAlign: "left",
},
}];
const columnSize = ["", "fill"];
if (hasCloseIcon()) {
items.push({
type: "bi.icon_button",
cls: "close-font toast-icon",
handler: () => {
this.destroy();
},
height: textHeight,
});
columnSize.push("");
}
return {
type: "bi.horizontal",
horizontalAlign: BI.HorizontalAlign.Stretch,
items: items,
hgap: hgap,
vgap: vgap,
innerHgap: innerHgap,
columnSize: columnSize,
};
}
beforeDestroy() {
this.fireEvent(Toast.EVENT_DESTORY);
}
}