|
|
|
@ -5,115 +5,123 @@
|
|
|
|
|
* @class BI.Toast |
|
|
|
|
* @extends BI.Tip |
|
|
|
|
*/ |
|
|
|
|
BI.Toast = BI.inherit(BI.Tip, { |
|
|
|
|
_const: { |
|
|
|
|
closableMinWidth: 146, |
|
|
|
|
minWidth: 100, |
|
|
|
|
closableMaxWidth: 410, |
|
|
|
|
maxWidth: 400, |
|
|
|
|
}, |
|
|
|
|
|
|
|
|
|
_defaultConfig: function () { |
|
|
|
|
return BI.extend(BI.Toast.superclass._defaultConfig.apply(this, arguments), { |
|
|
|
|
extraCls: "bi-toast", |
|
|
|
|
text: "", |
|
|
|
|
level: "success", // success或warning
|
|
|
|
|
autoClose: true, |
|
|
|
|
closable: null, |
|
|
|
|
textHeight: 20, |
|
|
|
|
vgap: 10, |
|
|
|
|
innerHgap: 4, |
|
|
|
|
hgap: 8, |
|
|
|
|
}); |
|
|
|
|
}, |
|
|
|
|
import { shortcut } from "../../../core/decorator"; |
|
|
|
|
@shortcut() |
|
|
|
|
export class Toast extends BI.Tip { |
|
|
|
|
_const= { |
|
|
|
|
closableMinWidth: 146, |
|
|
|
|
minWidth: 100, |
|
|
|
|
closableMaxWidth: 410, |
|
|
|
|
maxWidth: 400, |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
render: function () { |
|
|
|
|
var self = this, o = this.options, c = this._const; |
|
|
|
|
this.element.css({ |
|
|
|
|
minWidth: BI.pixFormat(o.closable ? c.closableMinWidth : c.minWidth), |
|
|
|
|
maxWidth: BI.pixFormat(o.closable ? c.closableMaxWidth : c.maxWidth), |
|
|
|
|
}); |
|
|
|
|
this.element.addClass("toast-" + o.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, |
|
|
|
|
}); |
|
|
|
|
var cls; |
|
|
|
|
switch (o.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; |
|
|
|
|
} |
|
|
|
|
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, |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
function hasCloseIcon() { |
|
|
|
|
return o.closable === true || (o.closable === null && o.autoClose === false); |
|
|
|
|
} |
|
|
|
|
var items = [{ |
|
|
|
|
type: "bi.icon_label", |
|
|
|
|
cls: cls + " toast-icon", |
|
|
|
|
height: o.textHeight, |
|
|
|
|
}, { |
|
|
|
|
el: BI.isPlainObject(o.text) ? o.text : { |
|
|
|
|
type: "bi.label", |
|
|
|
|
whiteSpace: "normal", |
|
|
|
|
text: o.text, |
|
|
|
|
textHeight: o.textHeight, |
|
|
|
|
textAlign: "left", |
|
|
|
|
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(""); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
var columnSize = ["", "fill"]; |
|
|
|
|
return { |
|
|
|
|
type: "bi.horizontal", |
|
|
|
|
horizontalAlign: BI.HorizontalAlign.Stretch, |
|
|
|
|
items: items, |
|
|
|
|
hgap: hgap, |
|
|
|
|
vgap: vgap, |
|
|
|
|
innerHgap: innerHgap, |
|
|
|
|
columnSize: columnSize, |
|
|
|
|
}; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (hasCloseIcon()) { |
|
|
|
|
items.push({ |
|
|
|
|
type: "bi.icon_button", |
|
|
|
|
cls: "close-font toast-icon", |
|
|
|
|
handler: function () { |
|
|
|
|
self.destroy(); |
|
|
|
|
}, |
|
|
|
|
height: o.textHeight, |
|
|
|
|
}); |
|
|
|
|
columnSize.push(""); |
|
|
|
|
} |
|
|
|
|
beforeDestroy() { |
|
|
|
|
this.fireEvent(Toast.EVENT_DESTORY); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return { |
|
|
|
|
type: "bi.horizontal", |
|
|
|
|
horizontalAlign: BI.HorizontalAlign.Stretch, |
|
|
|
|
items: items, |
|
|
|
|
hgap: o.hgap, |
|
|
|
|
vgap: o.vgap, |
|
|
|
|
innerHgap: o.innerHgap, |
|
|
|
|
columnSize: columnSize, |
|
|
|
|
}; |
|
|
|
|
}, |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
beforeDestroy: function () { |
|
|
|
|
this.fireEvent(BI.Toast.EVENT_DESTORY); |
|
|
|
|
}, |
|
|
|
|
}); |
|
|
|
|
BI.Toast.EVENT_DESTORY = "EVENT_DESTORY"; |
|
|
|
|
BI.shortcut("bi.toast", BI.Toast); |
|
|
|
|
BI.extend(BI, { Toast }); |
|
|
|
|