/*modal 类*/
UM.ui.define('modal', {
tpl: '
' +
'' +
'
' +
'
' +
'<% if: ${cancellabel} || ${oklabel} %>' +
'' +
'<%/if%>
',
defaultOpt: {
title: "",
cancellabel: "",
oklabel: "",
width: '',
height: '',
backdrop: true,
keyboard: true
},
init: function (options) {
var me = this;
me.root($(UM.utils.render(me.tpl, options || {})));
me.data("options", options);
if (options.okFn) {
me.on('ok', $.proxy(options.okFn, me))
}
if (options.cancelFn) {
me.on('beforehide', $.proxy(options.cancelFn, me))
}
me.root().delegate('[data-hide="modal"]', 'click', $.proxy(me.hide, me))
.delegate('[data-ok="modal"]', 'click', $.proxy(me.ok, me));
$('[data-hide="modal"],[data-ok="modal"]',me.root()).hover(function(){
$(this).toggleClass('edui-hover')
});
},
toggle: function () {
var me = this;
return me[!me.data("isShown") ? 'show' : 'hide']();
},
show: function () {
var me = this;
me.trigger("beforeshow");
if (me.data("isShown")) return;
me.data("isShown", true);
me.escape();
me.backdrop(function () {
me.autoCenter();
me.root()
.show()
.focus()
.trigger('aftershow');
})
},
showTip: function ( text ) {
$( '.edui-modal-tip', this.root() ).html( text ).fadeIn();
},
hideTip: function ( text ) {
$( '.edui-modal-tip', this.root() ).fadeOut( function (){
$(this).html('');
} );
},
autoCenter: function () {
//ie6下不用处理了
!$.IE6 && this.root().css("margin-left", -(this.root().width() / 2));
},
hide: function () {
var me = this;
me.trigger("beforehide");
if (!me.data("isShown")) return;
me.data("isShown", false);
me.escape();
me.hideModal();
},
escape: function () {
var me = this;
if (me.data("isShown") && me.data("options").keyboard) {
me.root().on('keyup', function (e) {
e.which == 27 && me.hide();
})
}
else if (!me.data("isShown")) {
me.root().off('keyup');
}
},
hideModal: function () {
var me = this;
me.root().hide();
me.backdrop(function () {
me.removeBackdrop();
me.trigger('afterhide');
})
},
removeBackdrop: function () {
this.$backdrop && this.$backdrop.remove();
this.$backdrop = null;
},
backdrop: function (callback) {
var me = this;
if (me.data("isShown") && me.data("options").backdrop) {
me.$backdrop = $('').click(
me.data("options").backdrop == 'static' ?
$.proxy(me.root()[0].focus, me.root()[0])
: $.proxy(me.hide, me)
)
}
me.trigger('afterbackdrop');
callback && callback();
},
attachTo: function ($obj) {
var me = this
if (!$obj.data('$mergeObj')) {
$obj.data('$mergeObj', me.root());
$obj.on('click', function () {
me.toggle($obj)
});
me.data('$mergeObj', $obj)
}
},
ok: function () {
var me = this;
me.trigger('beforeok');
if (me.trigger("ok", me) === false) {
return;
}
me.hide();
},
getBodyContainer: function () {
return this.root().find('.edui-modal-body')
}
});