forked from fanruan/fineui
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
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); |
|
} |
|
|
|
} |
|
|
|
|